모드 현지화

새로운 플러그인 현지화 시스템은 완전히 준비되지 않았습니다. 번역 데이터가 저장되지 않는 문제를 겪을 수 있으며, 커뮤니티 번역 포털로의 번역 가져오기 및 내보내기 시스템이 아직 완성되지 않았습니다.

이 페이지는 진행 중입니다.

새티스팩토리는 영어 외에도 여러 언어로 번역되었습니다. 모드를 유사한 방식으로 번역할 수 있도록 설정할 수 있습니다.

번역을 작성하거나 사용자로부터 크라우드소싱하기 전에, 모드의 애셋이 언리얼 엔진의 현지화 시스템과 상호작용하도록 설정되어 있는지 확인해야 합니다.

올바른 문자열 유형 사용

모드를 현지화하려면 텍스트 콘텐츠가 올바른 형식으로 저장되어야 합니다.

이는 FStrings 및 Appends 대신 FText 및 Format Text 작업을 사용하는 것을 의미합니다. 블루프린트에서 FText로 작업하고 있을 때는 삼각형 드롭다운 화살표를 확인할 수 있습니다.

자세한 내용은 언리얼 문서를 참고하십시오.

언리얼의 텍스트 포맷팅 기능 사용 방법에 대해서는 언리얼 문서에서 이미 잘 다루고 있기 때문에 이 문서 페이지는 설명하지 않겠습니다.

입력란을 현지화 가능 또는 불가능으로 표시

언리얼이 텍스트를 현지화 가능하게 수집하려면, 현지화 키가 할당되어야 합니다. 블루프린트 애셋에서 언리얼은 '고급 설정' 드롭다운에서 그렇게 표시된 경우 자동으로 이를 처리합니다.

고급 설정

텍스트 필드가 현지화 가능으로 표시되지 않으면 이후 과정에서 번역을 위해 수집되지 않으며 내보내지 않습니다. 에디터에서 애셋을 볼 때 이러한 텍스트 입력란 옆에 작은 경고 아이콘이 표시됩니다.

몇 가지 새티스팩토리 애셋 유형에는 기본적으로 현지화를 위해 수집되지 않는 입력란이 있습니다:

  • 도면 표시 이름

  • 도면 설명

  • 아이템 표시 이름

  • 아이템 설명

  • 아이템 약어 표시 이름

  • 제작법 표시 이름(오버라이드)

  • 건물 표시 이름

  • 건물 설명

따라서 이러한 입력란에 대한 값을 추가할 때는 입력란을 현지화 가능으로 표시해야 합니다.

일부 입력란을 수집에서 의도적으로 제외할 수 있습니다. 예를 들어, 위젯에서 바인딩으로 대체되는 자리 표시자와 같은 경우, 이는 위젯의 에디터 미리보기에서만 표시됩니다.

텍스처나 이미지(예: UI에 사용되는)를 (쉽게) 현지화할 수 없음을 유의하십시오. 따라서 UI 그래픽에 텍스트를 포함하는 것을 피해야 합니다. 위젯에서는 캔버스 패널, 오버레이 및 렌더 변환을 사용하여 스타일화된 텍스트를 추가하면서도 현지화 가능하게 유지하는 것을 고려하십시오.

C‍+‍+ 현지화

C‍+‍+ 현지화에 대한 자세한 문서는 언리얼 문서에서 확인할 수 있습니다.

C‍+‍+에서 작업할 때는 NSLOCTEXTLOCTEXT 매크로를 사용하여 텍스트를 현지화 가능하게 표시할 수 있습니다.

파일 상단에서 현지화 네임스페이스를 정의해야 한다는 점에 유의하십시오. 매크로를 사용하기 전에 네임스페이스를 정의하십시오(예: #define LOCTEXT_NAMESPACE "SML"). 그런 다음 파일 끝에서 #undef LOCTEXT_NAMESPACE 를 사용하십시오.

현지화 대시보드 열기

현지화 대시보드를 열려면, 툴 > 현지화 대시보드 로 이동하십시오.

로컬라이징 대시보드의 편집기 스크린샷

현지화 대상 설정

현지화 대상 추가

다음으로, "Plugin Targets" 패널의 왼쪽에서 새 타깃 추가 버튼을 클릭하여 새로운 플러그인 현지화 대상을 추가하십시오.

플러그인 현지화 대상은 새티스팩토리 모딩 팀이 엔진에 추가한 맞춤 기능입니다.

게임 타깃 제목 아래의 "새 타깃 추가"를 클릭하지 않도록 주의하십시오. 이 대상 유형은 모드와 함께 패키징할 수 없습니다.

새 타깃 추가 버튼에 마우스를 올린 모습

현지화할 플러그인을 선택하라는 메시지가 표시됩니다. 모드를 선택하고 완료 를 누르십시오.

플러그인 선택 대화 상자 예시

현지화 대상 구성

대상을 보려면, 테이블 행에서 이름을 클릭하십시오.

타겟 행에 마우스를 올린 모습

대상의 이름이 이미 당신의 모드 참조가 아니라면 이름을 일치하도록 변경하십시오.

대상 이름 변경

현지화 대상 이름은 임의로 설정할 수 있으며, 하나의 플러그인에 여러 개의 현지화 대상을 가질 수 있습니다. 조직적인 목적을 위해서는 모드 참조와 일치하는 것이 좋습니다. 또한, 현지화 대상 이름은 전역적으로 고유해야 하므로(설치된 모드에서 고유해야 함) 다른 모드에서 사용되지 않을 이름을 사용하는 것이 중요합니다. 이는 모드 참조가 좋은 선택인 이유입니다.

기본 현지화 설정은 대부분의 모드에 대해 완벽하게 괜찮으며 변경할 필요가 없습니다. 그러나 현지화 대상을 만든 후에 다른 C++ 모듈을 추가하거나, 플러그인 이름을 변경하거나, 추가적인 구성 가능성이나 맞춤 설정을 원할 경우, 생성된 현지화 프로필을 직접 변경할 수 있습니다.

텍스트 수집

다음으로, 언리얼의 현지화 시스템은 번역이 필요한 모든 텍스트를 수집해 줍니다. 이를 시작하려면, 대상 패널에서 아래로 스크롤하여 텍스트 수집 을 누르십시오.

텍스트 수집 버튼

대화 상자에 수집 텍스트 작업 옆에 녹색 체크 표시가 나타날 때까지 기다린 후 대화 상자를 닫으십시오. 모드의 "단어 수"는 이제 0보다 커야 합니다.

새로운 문자열을 모드에 추가한 후에는 텍스트 수집 과정을 반복해야 합니다. 예를 들어, 새로운 아이템 디스크립터나 텍스트 필드가 있는 위젯을 추가하는 경우입니다. 모드를 출시하기 전마다 이 작업을 실행하고 결과를 검토하는 것이 좋습니다. 번역 데이터가 최신인지 확인하기 위해서입니다.

번역 편집

기본 네이티브 컬처인 영어는 현재 나열된 유일한 컬처입니다(언리얼 엔진을 한국어로 설정한 경우 한국어). 이 컬처에 대한 번역 편집 버튼을 클릭하여 수집된 텍스트를 볼 수 있습니다.

이 컬처에 대한 번역 편집 버튼

버튼을 클릭하면 수집된 텍스트를 실시간으로 보고 편집할 수 있는 에디터가 열립니다. 여기서 네이티브 컬처에서 변경한 내용은 텍스트가 수집된 애셋에 반영됩니다. 다른 컬처에서 변경한 내용은 해당 컬처 데이터 항목에 저장됩니다.

에디터에서 번역 편집

"미번역", "리뷰 필요", "완료됨" 탭에서는 다양한 번역 상태에서 수집된 텍스트 항목을 볼 수 있습니다. 네이티브 컬처의 경우 모든 텍스트는 기본적으로 "완료" 상태입니다.

수집된 네이티브 언어 데이터를 검토하면 현지화를 위해 수집되지 않아야 할 텍스트를 추적하는 데 도움이 됩니다. 제거해야 할 항목에 대한 지침은 여기를 확인하십시오.

새로운 언어 추가

추가 언어를 지원하려면 먼저 해당 데이터를 보관할 컬처 항목을 생성해야 합니다. 대상의 컬처 테이블에서 '새 컬처 추가’를 선택하여 수행하십시오.

새 컬처 추가 버튼

새로운 컬처를 생성한 후에는 새로운 컬처에 대한 에디터를 열기 전에 텍스트를 다시 수집해야 합니다.

번역 컴파일

모든 문화에 대한 현지화를 컴파일하려면 '텍스트 컴파일’을 사용할 수 있습니다.

TODO: 이것이 실제로 무엇을 하는지, 배포 전에 수행해야 하는지?

텍스트 컴파일 버튼

번역 패키징

TODO: 올바르게 구성되면 모드와 함께 정상적으로 패키징되어야 합니다.

게임 내 테스트

게임 내에서 번역을 테스트하는 빠른 방법은 기본 게임의 빠른 언어 전환 기능을 설정하는 것입니다. 이 기능은 기본 게임 번역가를 위해 추가된 기능으로, QuickSwitchLanguage 콘솔 명령을 사용하여 일반 언어와 설정에서 선택한 두 번째 언어 간에 전환할 수 있습니다.

사용자가 번역 기여 가능하게 하기

TODO: 편집기가 Crowdin/외부 도구와 통합되어 가져오기/내보내기가 가능하다고 생각했는데, 꺼졌는지?

한 명의 개발자가 커뮤니티가 원하는 모든 언어에 능통할 가능성은 낮습니다. 따라서 대부분의 모드는 사용자가 모드에 번역을 기여할 수 있는 시스템을 설정합니다.

모딩 커뮤니티는 모든 새티스팩토리 모드와 도구가 번역을 크라우드소싱할 수 있는 Tolgee라는 무료 사용 인스턴스를 호스팅합니다. 우리는 또한 모더에게 특히 유용한 몇 가지 추가 기능을 제공하도록 수정했습니다.

새티스팩토리는 Crowdin 플랫폼을 사용하여 번역을 수집합니다. 참여하고 싶다면, 새티스팩토리 공식 디스코드#welcome 채널에서 정보를 찾을 수 있습니다. 그러나 Crowdin은 대부분의 경우 비용이 많이 들고 번역할 수 있는 문자열 수에 대한 제한이 큽니다. Tolgee 플랫폼은 무료이고 오픈 소스이며, 자체 호스팅이 가능합니다.

모드를 번역하는 데 도움을 주고 싶거나, 사이트에서 자신의 모드 프로젝트를 시작하고 싶다면, 모딩 디스코드에 가입하고 #rules 채널에서 Translator 역할을 선택한 다음, #mod-translations 의 고정 스레드에서 지침을 따르십시오.

Tolgee 플러그인 구성

TODO: 문서가 완료되면 여기에 링크할 수 있습니다: https://github.com/tolgee/documentation/pull/420/files

  1. 플러그인의 저장소를 모드 폴더에 추가하고 다른 모드를 프로젝트에 가져오는 방법 페이지의 지침을 따르십시오. Tolgee 플러그인 소스는 여기에서 찾을 수 있습니다.

  2. 에디터의 편집 > 플러그인 메뉴에서 플러그인을 활성화하십시오. 이 작업은 에디터를 재시작해야 합니다.

  3. 에디터에서 사용할 API 키를 생성하십시오. API 키는 Tolgee의 모드 프로젝트에 대해 생성해야 합니다. 만료를 Never expires 로 설정할 수 있습니다. 가능한 모든 범위를 활성화하되, admin 범위는 비활성화하십시오. 키를 생성한 후 복사하십시오. 이 API 키는 각 모드에 대한 것입니다. 공개적으로 공유하지 마십시오. 키를 사용하여 수행된 작업은 귀하가 수행한 것으로 간주됩니다.

  4. 언리얼 에디터로 돌아가서 편집 > 프로젝트 세팅 메뉴를 열고 "tolgee"를 검색하십시오. 다음 데이터를 입력하십시오:

    • API 키: (방금 복사한 API 키)

    • API URL: https://translate.ficsit.app (끝에 슬래시가 없습니다!)

    • 프로젝트 ID: (방금 두 입력란을 채우면 자동으로 채워질 것입니다. INVALID 인 경우, 마지막 두 입력란에 올바르게 입력했는지 확인하십시오.)

    • 실시간 번역 업데이트: True

    • 업데이트 간격: 60

Tolgee에 문자열 업로드

TODO: 게임 대상으로 해당되긴 하지만 https://discord.com/channels/555424930502541343/1126271289640894605/1127757678626754650 를 사용하면 여전히 오류 코드 500을 발생시킵니다.

대상을 설정한 후 이 작업을 사용할 수 있습니다.

에디터에서 Tolgee 버튼 위치

"누락된 키 업로드"

Tolgee에 문자열 내보내기

TODO: 내보내기 PO 버튼을 클릭해야 하나?

이 섹션은 아마도 Tolgee에 문자열 업로드 섹션을 위해 삭제될 것입니다.

Tolgee에서 언리얼로 번역 가져오기

TODO: 가져오기 PO 버튼? (근데 Tolgee는 아직 내보내기를 제공하지 않음)

TODO: 보관된 노트: 현지화 데이터를 수동으로 변경하거나 제3자 도구를 사용하면 이는 %PluginName%/Content/Localization/%LocalizationTargetName%에 저장됩니다. csv 또는 po 파일을 변경한 후, 패키징 전에 현지화 대시보드를 사용하여 엔진과 동기화해야 합니다.

현지화 파일 컴파일

TODO: 엔진 변경 사항이 플러그인 디렉토리에 유지되도록 하여 스크립트를 통해 이동할 필요가 없도록 합니다.

언리얼에서 컴파일하십시오.

플러그인 설정

크로스 플러그인 현지화

현지화 대상은 특정 플러그인에 바인딩됩니다. 이것이 소스 문자열이 겹칠 수 없다는 뜻은 아닙니다. 의존 번역 및 현지화 의존성도 UE에서 기본적으로 지원되며, 다른 현지화 대상(다른 플러그인)에서 문자열을 재사용할 수 있습니다. 이를 위해서는 의존 현지화 대상의 구성에 의존 현지화 대상을 수동으로 추가해야 합니다. 이것은 현지화 대시보드의 설정입니다(TargetDependencies.png).