Xcode에서 복수형을 포함한 현지화 흐름 자동화

관련 링크



WWDC21 Streamline your localized strings

Localizing Strings That Contain Plurals

개요



위의 자료를 보고 실장해 보았는데, 꽤 빠져서 시간을 녹였기 때문에 감소를 메모.

전제



이러한 현지화 설정.


그래서 SwiftUI에서 이렇게 구현한다. 눈치채고 생각합니다만 이것이 키가 되기 때문에 타이포 엄금.
Text("\(n) day(s) ago")
Text("\(n) day(s) ago", comment: "Days since last change of this user's rating.") // iOS 15

"Streamline"



stringsdict 파일 만들기



우선 Development Language만 만든다.
Development Language의 stringsdict 파일이 기준이 되므로, 그것이 없으면 Export의 대상이 되지 않는다.Localizable.strings 파일은 스스로 만들지 않아도 된다.

형식



지정하는 값의 매핑은 이하와 같다.NSStringLocalizedFormatKey 는 이 plist내에서 사용되는 변수와 같았기 때문에, 톱 레벨의 키와 같을 필요는 없는 것 같았다. (이 근처에서 혼란했다.)
문자열로 익숙하지 않은 형태를 기술하고 있는 느낌으로 아마 여기가 제일 힘든 작업이라고 생각한다.



내보내기



Xcode 13부터 SwiftUI의 문자열 리터럴도 Export의 대상이 되었다. 너무 편리해서 코피가 나온다.

덧붙여 Xcode의 Product -> Export Localizations... 는 매회 디렉토리의 지정이 번거롭고 인적 미스의 원래이므로 전혀 가지고 있지 않는 것이 좋습니다. 커맨드 라인에서 바삭하게 두드리게 해 두면 좋다. Import도 마찬가지.
아래의 Makefile 를 참고로 하면 좋다.
XCODEBUILD=xcodebuild
OPTION_XCODEPROJ=-project GTRatingSport.xcodeproj
OPTION_EXPORT_LOCALIZATIONS=-exportLocalizations 
OPTION_IMPORT_LOCALIZATIONS=-importLocalizations 
OPTION_EXPORT_LANG_EN=-exportLanguage en
OPTION_EXPORT_LANG_JA=-exportLanguage ja
PATH_LOCALIZATION_FILES_DIR=-localizationPath tmp/LocalizationFiles/
PATH_XCLOC_JA=$(PATH_LOCALIZATION_FILES_DIR)/ja.xcloc
PATH_XCLOC_EN=$(PATH_LOCALIZATION_FILES_DIR)/en.xcloc

export:
    $(XCODEBUILD) $(OPTION_EXPORT_LOCALIZATIONS) $(OPTION_EXPORT_LANG_EN) $(OPTION_XCODEPROJ) $(PATH_LOCALIZATION_FILES_DIR)
    $(XCODEBUILD) $(OPTION_EXPORT_LOCALIZATIONS) $(OPTION_EXPORT_LANG_JA) $(OPTION_XCODEPROJ) $(PATH_LOCALIZATION_FILES_DIR)

import:
    $(XCODEBUILD) $(OPTION_IMPORT_LOCALIZATIONS) $(OPTION_XCODEPROJ) $(PATH_XCLOC_EN)
    $(XCODEBUILD) $(OPTION_IMPORT_LOCALIZATIONS) $(OPTION_XCODEPROJ) $(PATH_XCLOC_JA)

xcloc 파일을 열고 번역 넣기



Xcode 13부터 깨끗한 GUI를 할 수 있었으므로 꽤 즐거운 작업.
아마 큰 회사라면 이곳을 외주하는 형태가 된다고 생각한다.
하지만 Xcode 13을 설치할 수 있습니까? 아니면 xliff 직접 괴롭히는거야? (이 근처는 무지이므로 할애.)
사람에게 의뢰할 때는 SwiftUI.Text의 comment 파라미터도 활용하면 편리할 것 같기 때문에 꼭.


en.xcloc ja.xcloc 둘 다 갱신할 수 있는 경우에 Import.

가져오기


make import이제 Localizable.strings도 자동으로 생성됩니다.
스스로 치마치마 관리하지 않아도 좋을까~ 이것. 스바라시이.

소감



느낀 단점



Xcode Template라든지 그렇지만, plist로 매핑 쓰게 하는 것이 그만두었으면 했다.
인간이 읽고 쓰기에는 무리가 있다고 생각한다. 사양도 메타메타하고 복잡하고.

느낀 이점



SwiftUI의 문자열 리터럴을 자동으로 현지화 대상으로 Export 해주는 것은 매우 편리하다고 생각했다.
이러한 공식 순서에 따라 두는 것으로 스토어의 스크린 샷용의 화상 생성이라고도 할 수 있을 것 같고, 그러고 보면 이미지 에셋의 로컬라이즈라고도 있는 것 같고, 뭐 Xcode 편리한 것이 아닐까. 꽤.

plist 퍼즐의 조각이 잘 빠졌을 때는 수수께끼의 달성감이 있었다. 하지만 뭐, 이 근처도 더욱 좋아지면 기쁘구나.

추가 2021/11/14



Xcode beta의 버그로 다음과 같은 증상이 있었지만 Xcode 13 beta 2에서 시도한 결과 수정되었습니다.

좋은 웹페이지 즐겨찾기