컨텐츠로 건너뛰기

다국어 지원과 리소스

개발에 관심이 있으신가요?

Project EAUploader는 개발 멤버를 항상 모집하고 있습니다! 이야기만 들어 보셔도 괜찮습니다! 꼭 프로젝트의 Discord 서버에 와 주세요. 참여하기



이 페이지에서는 EAUploader의 다국어 지원 구조와 도움말 메시지·EA Library 기사 작성 방법을 설명합니다. 번역에 협력해 주실 분도 꼭 읽어 주세요.

이 문서는 EAUploader v1.6.2의 내용을 기준으로 합니다.

다국어 지원 구조


EAUploader에서는 영어 문자열을 키로 하여 각 언어의 문자열을 가져옵니다. 영어는 번역 파일이 없으며 키가 그대로 표시됩니다.

언어언어 코드번역 파일
Englishen없음(키를 그대로 표시)
日本語jaEditor/Resources/Localization/ja.json
한국어koEditor/Resources/Localization/ko.json

현재 언어는 Assets/EAUploader/settings.json의 language에 저장됩니다. 초기값은 ja입니다.

번역 파일 형식

번역 파일은 다음 형식의 JSON 파일입니다. name에는 언어 선택 드롭다운에 표시할 이름을 적습니다.

{
"name": "한국어",
"items": [
{
"key": "Import",
"value": "인포트"
},
{
"key": "Version: ",
"value": "버전:"
}
]
}
  • key가 중복되면 오류가 발생합니다.
  • value에는 string.Format 서식({0} 등)을 사용할 수 있습니다.

UXML 문자열 번역하기

UXML에는 영어 문자열을 그대로 작성합니다.

<ui:Label text="Import Avatars" class="text-lg pb-2 font-bold" />

메인 창은 100ms마다 LanguageUtility.Localization을 실행하여 창 안의 모든 TextElement(Label, Button 등)의 text가 번역 파일의 key와 완전히 일치하면 value로 바꿉니다. 메인 창 이외의 창에서는 CreateGUI 등에서 LanguageUtility.Localization(rootVisualElement)를 호출하세요.

다음 요소는 번역되지 않습니다.

  • USS 클래스 no-translate를 가진 요소. 아이템 이름이나 태그 등 사용자가 입력한 문자열에 붙이세요.
  • 텍스트 입력란의 내용(레이블 부분은 번역됩니다).

C# 문자열 번역하기

C#에서 문자열을 설정할 때는 T7e.Get을 사용합니다.

var label = new Label(T7e.Get("Ready to upload"));
// 서식을 사용하는 경우
T7e.Get("Avatar bundle size is too large. The maximum size is {0} MB, but the current size is {1} MB", limit, fileSize);

해당하는 번역이 없으면 키가 그대로 반환됩니다.

T7e는 번역을 캐시합니다. Resources/Localization/의 파일이 다시 가져와지면 캐시가 지워지므로, 번역 파일을 편집하면 도메인 리로드 없이 반영됩니다.

언어 추가하기


새 언어를 추가하려면 다음 파일을 모두 준비하세요. 언어 코드(예: zh-cn)를 파일 이름·폴더 이름으로 사용합니다.

추가할 것위치
UI 번역 파일Editor/Resources/Localization/{언어 코드}.json
도움말 메시지Editor/Resources/Message/{언어 코드}/{메시지 번호}.txt
EA Library 기사Editor/Resources/UI/TabContents/ImportSettings/Contents/EALibrary/Articles/EAUploader/{언어 코드}/
뷰포인트 위치 에디터 번역 파일Editor/Resources/UI/TabContents/Setup/Editor/ViewpointPositionEditor/Localization/{언어 코드}.json

도움말 메시지


화면 곳곳의 ‘도움말’ 버튼(HelpButton)을 누르면 도움말 메시지(EAUploaderMessageWindow)가 EAUploader 창 안의 모달로 표시됩니다. 메시지는 Editor/Resources/Message/{언어 코드}/{메시지 번호}.txt에서 현재 언어의 것을 불러옵니다.

UXML에서는 msg-id에 메시지 번호를 지정합니다.

<eau:HelpButton msg-id="100" class="pb-2" />

C#에서는 EAUploaderMessageWindow.ShowMsg(100)(공개 API에서는 HelpButtonAPI.ShowMessage(100))로 표시할 수 있습니다.

사용 중인 메시지 번호

번호표시 위치
100인포트 창: 아바타를 인포트
101인포트 창: VRM을 인포트
102인포트 창: 쉐이더를 인포트
103편집 화면: 편집 도구
104편집 화면: 확장 기능 가져오기(현재 숨김)
1083D 미리보기 조작 설명
109업로드: VRChat에서의 표시
113업로드: 아바타 성능
114업로드: 플랫폼
116아바타 목록
117업로드: Blueprint
200VRM 변환 창
201뷰포인트 위치 에디터
202업로드: 아바타 최적화
203AvatarOptimizer 설치 안내

105, 107, 111, 112, 115 파일도 남아 있지만 v1.6.2 화면에서는 사용하지 않습니다.

새 메시지를 추가할 때는 사용하지 않는 번호를 사용하고 모든 언어 폴더에 파일을 추가하세요.

기사 서식


도움말 메시지와 EA Library 기사는 ArticleRenderer로 그려집니다. 기사는 다음 태그로 작성합니다.

태그서식내용
<t><t>제목</t>제목을 표시합니다.
<txt><txt>본문</txt>본문을 표시합니다. Unity 리치 텍스트(<size=16>, <color=red>, <b>, <i>, <u> 등)를 사용할 수 있습니다.
<image><image>파일 이름, 너비</image>이미지를 표시합니다. 파일 이름은 기사 파일 기준 상대 경로입니다. 너비는 생략할 수 있습니다.
<button><button>레이블, 스타일, URL</button>누르면 URL을 여는 버튼을 표시합니다. 스타일에는 Main, Sub, Link 중 하나를 적습니다.(현재 구현에서는 스타일에 따른 표시 차이가 없습니다)
<hr><hr>색, 여백</hr>구분선을 표시합니다. 색에는 black이나 #RRGGBB를 지정할 수 있습니다.
<section><section>이미지, 너비, 본문</section>이미지와 본문을 나란히 표시합니다. 이미지 높이는 200px로 표시됩니다.(현재 구현에서는 너비 지정을 사용하지 않습니다)

작성 예:

<t>셰이더 오류</t>
<txt>
<size=14>적용된 셰이더가 프로젝트 안에 없습니다.
필요한 셰이더를 배포처에서 확인하고 프로젝트에 가져오세요.</size>
</txt>
<button>Discord에 참여하기, Main, https://discord.gg/yYFru7brra</button>

EA Library 기사


EA Library 기사는 언어별로 다음 폴더에 저장합니다. 기사 하나당 폴더를 하나 만듭니다.

Editor/Resources/UI/TabContents/ImportSettings/Contents/EALibrary/Articles/EAUploader/
└── ko/
├── 001_tutorial1/
│ ├── tutorial1.json 기사 정보
│ ├── Content.txt 기사 본문
│ ├── thumbnail.png 썸네일
│ └── image1.png 본문에서 사용하는 이미지
└── 002_tutorial2/
└── ...

기사 정보는 다음 형식의 JSON 파일로 작성합니다. 폴더 안의 .json 파일을 기사 정보로 읽으므로 한 폴더에 .json 파일을 여러 개 두지 마세요.

{
"title": "소개",
"date": "2023-12-07",
"tags": ["튜토리얼"],
"keywords": ["튜토리얼", "시작", "가이드", "소개", "사용법"],
"contentFile": "Content.txt",
"thumbnail": "thumbnail.png"
}
항목내용
title기사 제목. 목록에 표시됩니다. \n으로 줄을 바꿀 수 있습니다.
date기사 작성일
tags태그. EA Library의 태그 필터에 사용됩니다.
keywords검색에 사용하는 키워드
contentFile본문 파일 이름(JSON 파일 기준 상대 경로)
thumbnail썸네일 파일 이름(JSON 파일 기준 상대 경로)

본문은 ‘기사 서식’으로 작성합니다.