목적
Localization을 적용한 경험이 없고, Localization 문서 참조와 블로그를 참조하였으나 Localization 적용하는데 헷갈려서 적용하는 방법을 기록한다.
Localization 적용 방법
1. String table 참조
콘텐츠 브라우저에서 String 테이블 생성(String table은 대소문자를 구분하니 주의해서 참조해야한다.) 코드에서 FText의 Find에 StringTable의 NameSpace와 Key를 통해 Text를 찾아 참조해준다
UCLASS()
class TESTPROJECT_API UTestWindow : public UUserWidget
{
GENERATED_BODY()
public:
UPROPERTY(EditDefaultsOnly, meta = (BindWidget))
UTextBlock* TestTextBlock;
public:
virutal void NativeConstruct() override;
}
void UTestWindow::NativeConstruct()
{
FTextKey StringNameSpace;
FTextKey StringKey;
FText findText;
if (FText::FindText(inName, StringNameSpace, StringKey))
{
TestTextBlock->SetText(findText);
}
}
2. 프로젝트 셋팅에서 패키징시 포함할 문화 설정
패키지시 포함할 언어에 영어, 한국어 선택, 국제화 지원에 EFIGSCJK 선택
3. 현지화 대쉬 보드 사용
메뉴 - 창 - 현지화 대쉬보드를 연다. 현지화 대쉬 보드를 사용하여 스트링테이블에서 스트링을 수집하여 바이너리 파일로 만들어 주는 작업을 한다. 타깃을 설정하고 패키지에서 수집을 선택 후 Include Path Wildcards를 선택 후 바이너리 파일로 만들때 텍스트 수집, 텍스트 세기, 텍스트 컴파일 순으로 변환한다. 프로젝트에서 설정한 언어 대로 폴더가 생성된다. 예를 들어 한국와 영어를 설정했으면 Contents/Localization/ko, Contents/Localization/en 식으로 만들어 진다.
4. 번역할 다른나라의 PO 파일 번역 후 PO 파일 다시 임포트
현재 언어를 수집 컴파일 하면 다른 나라 언어 폴더도 만들어 진다. 예를 들어 한국어와 영어를 선택했다면 Contents/Localization/en 이런 식으로 만들어진다. en 폴더 밑에 타겟 이름과 po file 파일이 만들어지는데 이 파일을 poedit이란 프로그램으로 번역 후 저장한 뒤 다시 시 영어로 임포트해주면 된다. 임포트된 파일을 텍스트 컴파일을 눌러 바이너리 파일을 만들어 준다. (수집 후, 컴파일 뒤 텍스트가 보이지 않는다면 프로젝트 재실행하여 확인)
4. 문화 변경
런타임에서 언어를 바꿔줄때는 UKismetInternationalizationLibrary::SetCurrentCulture를 통해서 변경해준다. 참고로 한국어는 ko, en은 영어다.
void UTestUIUtil::SetCulture(const FString& inLanguage)
{
UKismetInternationalizationLibrary::SetCurrentCulture(inLanguage);
}
참고
https://benui.ca/unreal/stringtable-cpp/
Localized Strings Using StringTable and C++
Store localizable strings in a CSV file and use them in the editor and C++.
benui.ca
https://bornsoul.tistory.com/24
[UE4] 현지화 로컬라이징 해보기
본글은 Notion에서 작성 및 최적화 된 내용입니다. https://www.notion.so/bornsoul/UE4-ba962aca0de84136a5e09ee66fdaa75f UE4 로컬라이징 (현지화) 만들고 있는 게임이 지스타에 참가하게 되어서 현지화 작업을..
bornsoul.tistory.com
'UE4' 카테고리의 다른 글
UE4 Change Overall Scalability C++ (0) | 2021.10.27 |
---|---|
UE4 Android, iOS Battery, Wifi 정보 가져오기 (0) | 2021.10.27 |
UE4 Sound Volume Setting C++ (0) | 2021.10.07 |
UE4에서 에셋을 이동시 Freezing 이 나거나 깨지는 현상 해결 방법 (0) | 2021.09.23 |
UE4 Decal (0) | 2021.09.13 |