그동안 많은 프로젝트에서 Localizable.string 을 봐왔다.
많은 사이트들에서 string파일을 편리하게 관리하고 안드로이드와 동일하게 관리할 수 있도록 지원한다.
새로운 앱 출시를 앞두고 로컬라이즈를 등록하려고 했다.
내가알던 Strings file은 이미 레거시가 되어버렸던것.. ㅠㅠ
새로 로컬라이즈를 생성한지 오래되서 언제부터 레거시가 되었는지도 모르겠다.
아무튼 catalog를 사용해보자!
파일을 추가해서 catalog 파일을 추가한다.
기본값은 영어로 되어있다.
이 부분은 프로젝트 설정이 기본 영어로 되어있기 때문인데
프로젝트 설정의 Info에서 Localizations 부분의 Default를 변경하면 변경된다.
키 벨류 형태로 되어있는데 +를 눌러서 키값을 추가할 수 있다.
다만 이미 프로젝트가 어느정도 진행되었다면 그냥 파일만 만든채로 빌드를 하면 알아서 키값을 생성해준다.
혼돈의 도가니 ㅋㅋㅋㅋㅋ
자동으로 생성된 키값은 키값자체를 수정할수 없고 프로젝트에서 해당 텍스트를 찾아서 쓸 키값으로 변경해주고 다시 빌드하면 자동으로 적용된다.
예를들면 사진의 마이페이지 의 Text를 찾아서
My Page로 변경해줬더니 키값이 My Page가 되었다.
별도로 키값을 생성하지 않아도 된다는 점에 귀찮음을 덜었다.
이름짓는게 생각보다 시간이 오래드니까...
기존처럼 String Class 생성해서 따로 스트링만 관리해줘도 되지만 catalog는 값을 알아서 찾아서 키로 등록해 주기때문에 값이 중복되지 않는다.
따라서 별도의 String파일로 관리할 필요가 없다.
물론 하드코딩마냥 "확인" 이런 텍스트가 보기 싫은 사람들은 여전히 String파일로 관리하겠지만,,
키값이 추가되면 번역이 되지않았다는 New로고가 뜨니까 해당부분을 번역해서 추가해주면된다.
물론 해당 스크린샷의 내 프로젝트는 아직 영문으로 변경하는 부분을 진행하지않아서 영문에 한글이써있으니 무시할것.
빌드를 했을 때, 자동으로 추가되는 키값들은 Text("") 의 내부에 포함되는 String들이다. 따라서 SwiftUI 프로젝트에서 대부분 텍스트들이 자동으로 추가 되겠지만 String값을 따로 쓸 때 로컬라이징이 안돼는 문제가 있다.
특히 UIViewRepresentable 을 사용할때 String 에 로컬라이즈가 적용되지 않는다는 것!
String을 따로 로컬라이징할때
String(localized: "로컬라이즈 텍스트 키")
이런식으로 사용해주면 빌드할 때 문제없이 자동으로 키가 추가됀다.
빌드할때 없는 값은 지워주고 키를 자동으로 생성해주므로 안드로이드 함께 관리되고있는 프로젝트에는 관리가 불가능할 수 있다.