web-dev-qa-db-ja.com

ローカライズされたストーリーボードの文字列を更新することは可能ですか?

Base.lprojストーリーボードと3つの文字列ファイルを作成して、アプリケーションの一部をローカライズしました。 1か月前であり、その後、アプリに新しいView Controllerを追加しましたが、このコントローラーのボタンとラベルは文字列ファイルに表示されません

この3つのストーリーボードに添付された文字列ファイルを更新することは可能ですか、NSLocalizableStringとLocalizable.stringsを使用してプログラムで新しい文字列翻訳を追加する必要がありますか?

206
GeLB

次の2つのオプションがあります。

オプション1

Xcodeは、ファイルを[Interface Builder Cocoa Touch Storyboard]ファイルタイプまたは[ローカライズ可能な文字列]ファイルタイプ。

  1. Project Navigatorからベースストーリーボードファイルを選択します
  2. ファイルインスペクターでLocalizationセクションを見つける
  3. ファイルが現在[Localizable Strings]である場合は、[Interface Builder Cocoa Touch Storyboard]に変更するか、その逆に変更します。
  4. Xcodeは、古いローカリゼーションの取り組みを維持しながら、ストーリーボードを現在のバージョンに変換する必要がありました。ここで、必要に応じてファイルを元のファイルタイプに戻すことができます。

オプション2

Ibtoolを使用して、ストーリーボードの文字列を抽出します。

  1. ターミナルアプリケーションを開きます
  2. Base.lprojディレクトリを見つけます
  3. この行を使用して、文字列を抽出します。

    ibtool MainStoryboard.storyboard --generate-strings-file file_name.strings

  4. Ibtoolが文字列をfile_name.stringsに抽出した後、元の.stringsファイルにコピーして貼り付けることができます

詳細情報をご覧ください: https://conyac.cc/business/columns/localization_guide_ios

257
Tha Leang

チェックアウト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ファイルが更新されたままであることを確認します重複キーまたは空の値の場合。

追加情報については、BartyCrouchを GitHub または この詳細な記事 で必ずチェックアウトしてください。

61
Dschee

ローカライズファイルにキーを手動で追加できます。ストーリーボードエディターでキーオブジェクトを選択すると、キーオブジェクトを見つけることができます。 IDインスペクターでObject-IDを見てみましょう。 "nwc-b2-19c"のように見えます

ローカリゼーションの更新または翻訳の追加。例えば ​​:

"nwc-b2-19c.title" = "Translated title";
52
iLandes

これは万人向けではありませんが、ターミナルに追加のツールを必要とせず、小さな手動変更が簡単です。 (プロセスを自動化する場合は、これを考慮しないでください。)

ステップ0:ストーリーボード言語のセットアップ

  • ベース(英語のテキスト付き)
  • 英語(ベースファイルが英語であるため、ローカライズ可能な文字列ファイルは存在しません)
  • 他の言語(ローカライズ可能な文字列ファイル)

base configuration

このステップは一度だけ実行されます。

ストーリーボードに何かを追加すると、次のようになります

ステップ1:英語のローカライズ可能な文字列ファイルを追加する

Add English

英語の項目をマークするだけです。

これにより、すべての行を含む完全に新しい英語のローカライズ可能な文字列ファイルが作成されます

ステップ2:新しい行項目を他の言語ファイルにコピーします

それらを翻訳します

ステップ3:英語のマークを外し、対応するローカライズ可能な文字列ファイルを削除します

ファイルは新しい広告申込情報を取得するためにのみ必要でした

これは簡単で高速なプロセスで、すべてがストーリーボードエディターで行われます

編集:

このプロセスは、小さなストーリーボードで非常にうまく機能します。たとえば、タブベースのプロジェクトがあり、各タブにストーリーボードがあります。

「ストーリーボードリファレンス」を検索して、チュートリアルを見つけます。

良い例: Xcodeのストーリーボードリファレンス、どこで使用すればよいですか?

そのため、小さなストーリーボードにはそれぞれローカライズする文字列がわずかしかありません。

24
Gerd Castan

最後に、私のソリューションは(初歩的だが効果的な)以前の翻訳をコピーし、[ローカライズ言語]ボックスのチェックを外して作成した新しいファイルに貼り付けました。

これは、1つまたは2つのテキストのみを変更する必要がある私のような場合に役立ちます。

15
jpl850

最善の方法は、組み込みのエクスポート/インポートローカリゼーションを使用することだと思います。

  1. Project Navigatorでプロジェクトフォルダーを選択します
  2. [エディター]> [ローカライズ用にエクスポート]を選択し、
  3. すべての翻訳はその場所に残され、XCodeは欠落した文字列を自動的に追加します。さらに、インポートする前に、XLIFFエディターで.xliffを編集できます(たとえば、オンライン- http://xliff.brightec.co.uk )。XCodeでこれを行う必要はありません。 。
  4. 次に、[エディタ]> [ローカライズのインポート]を選択し、保存された.xliffファイルを選択します。

追伸XLIFFエディターで編集したくない場合で、ステップ3をスキップした場合、XCodeは新しいストリングを保存できませんでした。この場合、XLIFFエディターで.xliffを開き、変更せずに再保存し、新しいファイルをインポートします。

13
Igor

ストーリーボード(Main.storyboardなど)をクリックすると、...右側にローカライズメニューが表示されます(添付画像を参照)。言語のチェックを外して再度チェックすると、ファイルが再び生成されます。そのため、通常はコンテンツをコピーし、ファイルを再度生成してから、コピーして既に翻訳済みのコンテンツを貼り付けます。

これが辞書の更新に使用する方法です。

enter image description here

5
J. Fdez

スクリプト は、ストーリーボードとxibから文字列を抽出し、既存の翻訳とマージします。

プロジェクトをビルドするときにスクリプトを自動的に実行するには、スクリプトをプロジェクトのルートディレクトリに配置し、Run Scriptフェーズを次の行に追加しますプロジェクト設定のビルドフェーズをターゲットにします。

./mergegenstrings.py PathToSourceDir

または、必要なときにターミナルでスクリプトを手動で実行できます。

Tha Leangが答えたように、スクリプトはibtoolを実行します。また、genstringsを実行して、ソースコードでNSLocalizedStringでマークされた文字列を抽出およびマージします。このスクリプトは、 この投稿のスクリプト に基づいています。これは、genstringsの実行後に文字列をマージします。

4
Yoichi Tagaya

私はそこにたくさんのひもがある巨大な絵コンテを得ました。 2つの言語は英語と別のアラビア語をベースにしています。タスクは、ストーリーボードにいくつかのフィールドとラベルを追加し、スクリプトとNSLocalizableStringなしでそれらのローカライズを追加することでした。

私のために次に助けました:

最初の:予期しない変更を防ぐためにgitがあることを確認してください。

  1. Xcodeでターゲット画面に移動し、Editor-> Export For Localization...を押します。 ar.xliffファイルをどこかに保存します。
  2. ダウンロード XLIFF Edtior
  3. Ar.xliffファイルを開き、変更を加えます。
  4. このファイルをxcodeでインポートします。できた!ストーリーボードの文字列ファイルを更新しました。
4
Nik Kov

がある アプリ Appleという名前の AppleGlot からのコマンドラインツールは、増分ローカリゼーションをサポートします。まだ試していませんが、検索したツールとまったく同じように見えます(しばらく前)。

4
tilo

最も簡単でリスクの少ないアプローチは、次の例のように、ストーリーボードからオブジェクトIDをコピーし、ローカライズされたファイルのキーに新しいキーを追加するだけです。

1:コンポーネントのストーリーボードからオブジェクトIDを以下のようにコピーします。

enter image description here

2:以下のようにローカライズされたファイルに新しいキーを追加します。

"DjF-dn-0ay.text" = "Borrar datos y restablecer";

注:少数のコンポーネントのみを更新する場合、これは非常にリスクの低いアプローチです。そうでない場合は、ストーリーボードのローカライズされたファイルを再作成できます。

2
Alok

これは、新しいテキストをストーリーボードまたはxibからローカライズ文字列に更新する私の簡単な方法です

1-このスクリプトを使用 http://tredje.se/dev/trouble/?x=entry:entry150917-204052

2-更新するローカライズ文字列を選択し、言語文字列を「Localization string」から「interface builder storyboard」に切り替えます

3-それを元に戻す:)

完了

enter image description here

0
Fadi Abuzant