Base.lprojストーリーボードと3つの文字列ファイルを作成して、アプリケーションの一部をローカライズしました。 1か月前であり、その後、アプリに新しいView Controllerを追加しましたが、このコントローラーのボタンとラベルは文字列ファイルに表示されません
この3つのストーリーボードに添付された文字列ファイルを更新することは可能ですか、NSLocalizableStringとLocalizable.stringsを使用してプログラムで新しい文字列翻訳を追加する必要がありますか?
次の2つのオプションがあります。
Xcodeは、ファイルを[Interface Builder Cocoa Touch Storyboard]ファイルタイプまたは[ローカライズ可能な文字列]ファイルタイプ。
Ibtoolを使用して、ストーリーボードの文字列を抽出します。
この行を使用して、文字列を抽出します。
ibtool MainStoryboard.storyboard --generate-strings-file file_name.strings
Ibtoolが文字列をfile_name.stringsに抽出した後、元の.stringsファイルにコピーして貼り付けることができます
詳細情報をご覧ください: https://conyac.cc/business/columns/localization_guide_ios
チェックアウトBartyCrouch、それはあなたの問題を完全に解決します。また、オープンソース、アクティブに維持され、プロジェクト内で簡単にインストールおよび統合。
インストールHomebrew 経由のBartyCrouch
brew install bartycrouch
または、 Mint でインストールします:
mint install Flinesoft/BartyCrouch
Storyboards/XIBs Stringsファイルを段階的に更新します:
$ bartycrouch update
これはまさにあなたが探していたものを実行します。
keepストーリーボード/ XIBs Stringsファイルが時間とともに更新されるためにIビルドスクリプトの追加を強くお勧めします(ビルドスクリプトの追加方法に関する指示 here ):
if which bartycrouch > /dev/null; then
bartycrouch update -x
bartycrouch lint -x
else
echo "warning: BartyCrouch not installed, download it from https://github.com/Flinesoft/BartyCrouch"
fi
Storyboards/XIBs Stringsファイルを増分更新することに加えて、これはNSLocalizedString
を使用してコードに新しく追加されたキーでLocalizable.strings
ファイルが更新されたままであることを確認します重複キーまたは空の値の場合。
ローカライズファイルにキーを手動で追加できます。ストーリーボードエディターでキーオブジェクトを選択すると、キーオブジェクトを見つけることができます。 IDインスペクターでObject-ID
を見てみましょう。 "nwc-b2-19c"
のように見えます
ローカリゼーションの更新または翻訳の追加。例えば :
"nwc-b2-19c.title" = "Translated title";
これは万人向けではありませんが、ターミナルに追加のツールを必要とせず、小さな手動変更が簡単です。 (プロセスを自動化する場合は、これを考慮しないでください。)
ステップ0:ストーリーボード言語のセットアップ
このステップは一度だけ実行されます。
ストーリーボードに何かを追加すると、次のようになります
ステップ1:英語のローカライズ可能な文字列ファイルを追加する
英語の項目をマークするだけです。
これにより、すべての行を含む完全に新しい英語のローカライズ可能な文字列ファイルが作成されます
ステップ2:新しい行項目を他の言語ファイルにコピーします
それらを翻訳します
ステップ3:英語のマークを外し、対応するローカライズ可能な文字列ファイルを削除します
ファイルは新しい広告申込情報を取得するためにのみ必要でした
これは簡単で高速なプロセスで、すべてがストーリーボードエディターで行われます
編集:
このプロセスは、小さなストーリーボードで非常にうまく機能します。たとえば、タブベースのプロジェクトがあり、各タブにストーリーボードがあります。
「ストーリーボードリファレンス」を検索して、チュートリアルを見つけます。
良い例: Xcodeのストーリーボードリファレンス、どこで使用すればよいですか?
そのため、小さなストーリーボードにはそれぞれローカライズする文字列がわずかしかありません。
最後に、私のソリューションは(初歩的だが効果的な)以前の翻訳をコピーし、[ローカライズ言語]ボックスのチェックを外して作成した新しいファイルに貼り付けました。
これは、1つまたは2つのテキストのみを変更する必要がある私のような場合に役立ちます。
最善の方法は、組み込みのエクスポート/インポートローカリゼーションを使用することだと思います。
追伸XLIFFエディターで編集したくない場合で、ステップ3をスキップした場合、XCodeは新しいストリングを保存できませんでした。この場合、XLIFFエディターで.xliffを開き、変更せずに再保存し、新しいファイルをインポートします。
スクリプト は、ストーリーボードとxibから文字列を抽出し、既存の翻訳とマージします。
プロジェクトをビルドするときにスクリプトを自動的に実行するには、スクリプトをプロジェクトのルートディレクトリに配置し、Run Scriptフェーズを次の行に追加しますプロジェクト設定のビルドフェーズをターゲットにします。
./mergegenstrings.py PathToSourceDir
または、必要なときにターミナルでスクリプトを手動で実行できます。
Tha Leangが答えたように、スクリプトはibtool
を実行します。また、genstrings
を実行して、ソースコードでNSLocalizedString
でマークされた文字列を抽出およびマージします。このスクリプトは、 この投稿のスクリプト に基づいています。これは、genstrings
の実行後に文字列をマージします。
私はそこにたくさんのひもがある巨大な絵コンテを得ました。 2つの言語は英語と別のアラビア語をベースにしています。タスクは、ストーリーボードにいくつかのフィールドとラベルを追加し、スクリプトとNSLocalizableStringなしでそれらのローカライズを追加することでした。
私のために次に助けました:
最初の:予期しない変更を防ぐためにgitがあることを確認してください。
Editor
-> Export For Localization...
を押します。 ar.xliffファイルをどこかに保存します。がある アプリ Appleという名前の AppleGlot からのコマンドラインツールは、増分ローカリゼーションをサポートします。まだ試していませんが、検索したツールとまったく同じように見えます(しばらく前)。
これは、新しいテキストをストーリーボードまたはxibからローカライズ文字列に更新する私の簡単な方法です
1-このスクリプトを使用 http://tredje.se/dev/trouble/?x=entry:entry150917-204052
2-更新するローカライズ文字列を選択し、言語文字列を「Localization string」から「interface builder storyboard」に切り替えます
3-それを元に戻す:)
完了