質問

私は最初のローカライズされたアプリケーションを構築しようとしています。 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です。 mod.nibは私にとって謎です。誰かがこれがどのように機能するかを説明できますか?また - 以前のバージョンが利用できない場合(つまり、インクリメンタルではなく初期ローカリゼーション)、XIBのローカリゼーションを開始するにはどうすればよいですか?

役に立ちましたか?

解決

特に、彼らの用語の選択だと思います --incremental-file, 、混乱を引き起こしています。アイデアは、2つの言語(ソースとターゲット)の古いバージョンのXIBを持ち、その後ソース言語でそれを変更し、ターゲット言語バージョンを一致させるように更新したいということです。

例を見てみましょう。以前は英語(ソース言語)でhome.xibを持っていて、誰かにフランス語(ターゲット言語)に翻訳してもらいました。それ以来、新機能を開発し、英語のhome.xibの更新バージョンを作成し、Uilabelとuitextfieldを追加して物事を移動します。あなたが示したコマンドは、新しいuilabelとuitextfieldを備え、物事が英語のように動き回るように、フランス語でhome.xibの更新バージョンを入手するのに役立ちます。新しいuilabelとuitextfieldに設定したテキストコンテンツは英語で追加され、フランスのxibで翻訳する必要があることに注意してください(ただし、追加することでこれを自動化できます。 --import-strings-file 翻訳をもう1つのファイルで提供します)。

したがって、この例に示したコマンドをマップすると:

  • --previous-file path/to/prev.xib 古い英語XIBを指定します
  • --incremental-file path/to/inc.xib 古いフランスのXibを指定します
  • --write path/to/new.xib 作成される新しいフレンチXIBを指定します
  • mod.xib 新しい英語XIBを指定します

プロセスをどのように開始するかに関する他の質問については、実際にXIBSをどのようにローカライズするかによって異なります。明らかにXibsの新しい言語バージョンを作成します(Xcodeでは、Xibの言語リストに言語を追加するだけで、ローカライズされたXibsが自動的に作成されます)。そして、インターフェイスビルダーに自分でローカライズすると、ローカライズされたXIBSで関連する変更(テキストの翻訳と必要なサイズ変更)を単純に作成できます。または、Xibsのテキストを抽出することができます .strings ファイル、それらを翻訳して、これらのXIBSの関連言語バージョンに注入します。このために、再びあなたはibtoolを使用しますが --generate-strings-file 抽出相とで --import-strings-file 注入段階の場合。

他のヒント

必要な手順を自動化するGITプロジェクトのスクリプトを書きました( 答え 上記)別の言語に変更を移行します。

使用法:

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

例:

English 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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top