UE 현지화 대시보드에서 단어 세기 수가 잘못되었을 때
결론
네이티브 컬쳐의 번역 전 텍스트와 번역 후 텍스트가 달라서 그렇습니다. 동일한 값으로 유지하세요.
세부
먼저 현지화 데이터가 어떤 순서로 가공되는지에 대해 알아두는 게 좋습니다: 링크
텍스트를 수집한 직후의 단계를 좀 더 자세히 보겠습니다.
여기서, 네이티브 컬쳐의 번역 파일(.archive) 의 번역 후 텍스트([B]수집된 텍스트) 를 바꾸면 아래와 같이 됩니다.여기서 내가 혼동했던 부분이 있습니다.
네이티브 컬쳐가 아닌 번역 파일(.archive)의 번역전 텍스트에 들어오는 텍스트는 네이티브 컬쳐 번역 파일(.archive)의 번역 후 텍스트[B] 가 됩니다.
네이티브 컬쳐의 번역 전 텍스트[A]가 아닙니다.
네이티브 컬쳐 번역 파일(.archive)의 번역 후 텍스트[B] 는, 변경이 될 때 마다, 모든 네이티브가 아닌 컬쳐의 번역 파일의 번역 전 텍스트([C],[E])에 복사되는 방식으로 동기화됩니다. (참고로, 이 때 만약 번역 후 텍스트가 완료됨 상태였다면, 해당 항목은 리뷰 필요 상태로 돌아옵니다.)
가능성이 아주 낮기는 하겠지만, 만약 네이티브 컬쳐 번역 파일(.archive)의 번역 후 텍스트가 수정되어 번역 전 텍스트와 다른 값을 가지게 된다면, 다음의 과정을 거쳐 단어 세기 과정에서 제외됩니다.
FLocTextHelper::GetWordCountReport() GitHub 링크 에서, 실제로 단어를 세는 부분은 여기입니다: GitHub 링크 여기서 각 컬쳐 별로, manifest 의 항목들을 순회하면서 단어를 세게 되는데요.
여기서 사용되는 FLocTextHelper::GetExportText()
GitHub 링크
함수가 문제가 되는 부분입니다. 이 함수의 첫 부분에서 OutSource = InSource;
로 일단 manifest 에서 “수집된 단어"를 OutSource
에 복사합니다. 그리고 중간에 보면 아래와 같은 코드가 있습니다.
GitHub 링크
번역 파일(.archive) 의 번역 전 텍스트가 manifest 에 저장된 수집된 텍스트 와 일치하는지 체크를 하고 있습니다.
하지만, 앞서 말한대로, 만약 네이티브 컬쳐 번역 파일(.archive)의 번역 후 텍스트를 수정했다면, 여기서의 번역 파일(.archive) 의 번역 전 텍스트 는 네이티브 컬쳐 번역 파일(.archive)의 번역 후 텍스트가 됩니다. 즉, 이 체크는 항상 실패합니다.
예를 들어, 텍스트 수집 직후 상태가 다음과 같았다면
항목 | 값 예시 | 위치 |
---|---|---|
0. 수집된 텍스트 | 수집된 텍스트 | .manifest |
1. 네이티브 컬쳐의 번역 전 텍스트 | 수집된 텍스트 | .archive |
2. 네이티브 컬쳐의 번역 후 텍스트 | 수집된 텍스트 | .archive |
3. 작업할 컬쳐의 번역 전 텍스트 | 수집된 텍스트 | .archive |
네이티브 컬쳐의 번역 후 텍스트를 수정했을 경우 아래와 같이 됩니다.
항목 | 값 예시 | 위치 |
---|---|---|
0. 수집된 텍스트 | 수집된 텍스트 | .manifest |
1. 네이티브 컬쳐의 번역 전 텍스트 | 수집된 텍스트 | .archive |
2. 네이티브 컬쳐의 번역 후 텍스트 | 수정한 텍스트 | .archive |
3. 작업할 컬쳐의 번역 전 텍스트 | 수정한 텍스트 | .archive |
0 과 3 의 값이 다르면 카운트 대상에서 제외되는 것인데, 3의 값은 2에서 동기화됩니다. 그래서 2의 값을 바꾸면 카운트 대상에서 제외됩니다.
참고로, 이 부분은 컴파일에 영향을 주지 않습니다. 단어 세기의 결과는 틀리게 나오지만, 컴파일 시 컴파일 된 현지화 파일(.locres)에는 해당 단어들이 제대로 들어갑니다. 이 이유로 문제를 찾기가 쉽지 않았습니다.