-
[Unity][UI Toolkit] Localization 적용 방법앱 개발/Unity, C# 2024. 12. 31. 04:36
Unity 6부터는 binding을 본격적으로 지원하기 시작하면서 Localization을 쉽게 할 수 있다고 한다.
하지만 나는 지금 2022 버전을 쓰고 있어, Localization하는 방법을 따로 찾아야 했다.
UI Toolkit이 처음 도입되었을 때는 uxml을 검사하면서 text=""나 tooltip="" 등 localization이 필요한 부분을 변환하는 파이썬 코드를 짰었다. 스크립트를 돌리면 자동으로 지원하는 locale 별로 uxml 파일이 생성되도록 했는데, 유지 및 보수 측면에서 아주 BAAAAAD...
그래서 이번에 2022 버전에서 UI Toolkit을 다시 이용하게 되었을 때는 다른 방법을 찾아봤는데, 감사하게도 아래의 코드를 발견할 수 있었다.
https://gist.github.com/andrew-raphael-lukasik/72a4d3d14dd547a1d61ae9dc4c4513da
Text localization script for UIDocument (UI Toolkit @ Unity)
Text localization script for UIDocument (UI Toolkit @ Unity) - .UIDocumentLocalization.cs.md
gist.github.com
여기서 툴팁이나 동적으로 생성하는 툴팁 등의 컴포넌트를 위해 string table을 캐싱하는 코드를 추가했다.
또 위 코드는 dropdown의 내부 option까지 localization이 되고 있진 않아, 해당 코드도 추가했다. 이것과 관련한 코드는 같은 페이지의 코맨트로 달아뒀다.
간단하고 사용하기도 쉬워서 처음 테스트할 때 잘 썼다.
다만, 복잡한 앱을 구현하기에는 한계점이 보여서 localization 가능한 custom label을 작성하기는 할 것 같다.
간단한 프로젝트나 앱은 위 스크립트를 이용하면 충분해보임
다만 컴포넌트 추가 후 인스펙터에서 보이는 경고사항에서 확인할 수 있듯이, UI와 연결되는 Presenter 등의 컴포넌트를 Initialize하는 타이밍 설정하는 것에 주의가 필요하긴 하다.
끗~
'앱 개발 > Unity, C#' 카테고리의 다른 글
[Unity] Custom Control이 Library 창의 Project 탭에 안 뜰 때 [UI Toolkit] (0) 2025.01.08 [Unity][UI Toolkit] UI Toolkit 사용하면서 살짝 헤맨 부분들 (0) 2024.12.31 [Unity][Animancer] Layer pause / resume 하는 법 (1) 2024.12.13 [Unity][UI Toolkit] uss에서 gap 옵션(child 사이 spacing) 구현하기 [USS] (0) 2024.11.29 [Unity][UI Toolkit] uss에서 first-child, last-child 구현하기 [USS] (0) 2024.11.29