2011-12-06 5 views
7

첫 번째 현지화 된 응용 프로그램을 빌드하려고합니다. NSLocalizedString (genstrings 도구와 함께 사용)을 사용하여 코드의 모든 문자열을 번역했습니다. 이제 ibtool에 부딪 혔습니다. 증분 로컬라이제이션은 어떻게 작동합니까? 매뉴얼 페이지에 대해서는 다음과 같이 작성해야합니다 :증분 로컬 리 제이션은 어떻게 작동합니까?

$ ibtool --previous-file path/to/prev.xib \ 
--incremental-file path/to/inc.xib --localize-incremental \ 
--write path/to/new.xib mod.xib 

어디서 증분 파일을 얻을 수 있습니까? 만약 내가 버전 제어 (git/svn)를 사용하고 있다면 나의 이해를 위해, "오래된"파일은 몇 커밋 전에, 증분 파일은 diff와 path/to/new.xib가 새로 생성 된 xib 파일이다. mod.nib은 나에게 수수께끼입니다. 아무도 내게 어떻게 작동하는지 설명 할 수 있습니까? 또한 이전 버전이 없으면 (예 : 증분이 아닌 초기 현지화) xib의 현지화를 시작하려면 어떻게해야합니까?

답변

12

특히 --incremental-file에 대한 용어 선택이 혼란을 야기한다고 생각합니다. 두 언어 (소스 및 대상)로 된 xib의 이전 버전을 가지고 있으므로 소스 언어로 변경 한 후 대상 언어 버전을 일치시키려는 것이 좋습니다.

예를 들어 보겠습니다. 이전에 영어로 home.xib (소스 언어)를 사용했고 프랑스어 (대상 언어)로 번역 할 사람이있었습니다. 이후 새로운 기능을 개발했고 UILabel과 UITextField를 추가하고 물건을 옮기는 홈.xib의 업데이트 된 버전이 영어로 제공됩니다. 당신이 보여준 명령은 새로운 UILabel과 UITextField를 가지며 프랑스어로 home.xib의 업데이트 된 버전을 얻을 수 있도록 도와줍니다. 새로운 UILabel 및 UITextField에서 설정 한 모든 텍스트 콘텐츠는 영어로 추가되므로 프랑스어 xib로 번역해야합니다 (단, --import-strings-file을 추가하고 하나 이상의 파일에 번역을 제공하여 자동화 할 수 있음).

그래서 우리는 당신이 예를 보여 주었다 명령 매핑하는 경우 :

  • --previous-file path/to/prev.xib는 고대 영어 XIB
  • --incremental-file path/to/inc.xib
  • --write path/to/new.xib이 작성 될 새 프랑스어 XIB를 지정하는 옛 프랑스어 XIB를 지정 지정을
  • mod.xib
XIB 새로운 영어를 지정합니다

프로세스 시작 방법에 관한 다른 질문은 실제로 xibs를 지역화하는 방법에 따라 다릅니다. 분명히 xib의 새로운 언어 버전을 만들 것입니다 (XCode에서는 언어를 xib의 언어 목록에 추가하기 만하면 현지화 된 xib가 자동으로 생성됩니다). 그런 다음 인터페이스 빌더에서 직접 현지화하면 현지화 된 xib에서 관련 변경 사항 (텍스트 번역 및 필요한 크기 조정) 만 수행하면됩니다. 또는 xibs의 텍스트를 .strings 개의 파일로 추출하여 번역 한 다음 해당 xib의 관련 언어 버전에 삽입 할 수 있습니다. 이를 위해 다시 ibtool을 사용하지만 추출 단계에는 --generate-strings-file을, 주입 단계에는 --import-strings-file을 사용합니다.

+0

"오래된 영어 XIB"내가 사용하는 경우 버전 제어를 생산에 모든 팁? – Eimantas

+0

모든 xibs가 버전 제어에 있다고 가정하면 (분명히!) 오래된 영어 xib가 버전 기록에서 사용할 수 있습니다. 우리는 영어가 기본 언어이고 번역 할 언어라는 가정하에 작업하고 있습니다. – Clafou

+0

그래, 그냥 오래된 영어 파일을 얻으려면 내가 마지막으로 업데이트 된 번역에서 버전 관리에서 확인해야합니다. 이것은 약간 지루한 것처럼 보입니다. 내가 할 수있는 일은 없어. 귀하의 답변 주셔서 감사합니다! – Eimantas

3

변경 사항을 다른 언어로 마이그레이션하는 데 필요한 단계를 자동화하는 git 프로젝트 용 스크립트를 작성했습니다 (위의 answer에 설명 된대로).

사용법 :

migrate_changes.sh <target_language> <xib file without ending> 

예 : 당신이 영어 XIB 파일에 변경 내용을 커밋 한 후에

, 자원 폴더의 루트에있는 스크립트를 실행합니다.

migrate_changes.sh de MyViewController 

출처 :

#!/bin/sh 

LANG_FROM='en' 
LANG_TO=$1 
XIB_FILE=$2 

FROM_FILE=${LANG_FROM}.lproj/${XIB_FILE}.xib 
PREV_FILE=${LANG_FROM}.lproj/${XIB_FILE}_old.xib 
TO_FILE=${LANG_TO}.lproj/${XIB_FILE}.xib 

# checkout old version of xib file 
git show `git log -2 --format="%H" $FROM_FILE | tail -n 1`:./$FROM_FILE > $PREV_FILE 

# merge changes 
ibtool --previous-file $PREV_FILE --incremental-file $TO_FILE --localize-incremental --write $TO_FILE $FROM_FILE 

# remove previous version 
rm $PREV_FILE