5

こんにちは、私は iOS でのローカリゼーションのプロセスに非常にこだわっています。

これが私が理解していることです:

  • プロジェクト エクスプローラーに移動して、さまざまな国のベース ローカリゼーションを設定する方法
  • 文字列ファイルを作成し、簡体字中国語など、ベース ローカリゼーション内で選択された特定の国のいずれかにローカライズされるように設定する方法
  • キーと値のペアと、単語 "HELLO WORLD" = " some other language" の対応方法。ローカライズされた文字列ファイルで

ただし、コンパイル時に「hello world」と書かれた単純なラベルを持つアプリは、中国語シミュレーターで中国語に変更されません。

ここが私が間違っていると思うところです:

画面上の文字列を、ローカライズされた文字列ファイルに含まれる文字列に接続する必要があると思います。

また、言語ごとに個別の文字列ファイルを作成する必要がありますか?

さまざまな言語に翻訳されたいくつかのラベルだけを含む非常に単純なアプリのスタブを作成しようとしています。これにより、接続して機能させる方法を学び、他の場所で使用できるようになります。

中国語の絵コンテがありますが、何か作業をしなければなりませんか、それとも空白のままですか?

ドキュメントを何時間も読んだ後、私は円を描いて回っているように見えますが、この問題に関する Apple のドキュメントには感心しませんでした。

4

2 に答える 2

6

ローカライズするには、次のことを行う必要があります。

  1. 言語ごとに異なる .strings ファイルを追加します
  2. 各言語ファイルのキー値を追加します
  3. 使用する:

NSLocalizedString(yourKey, nil);

また

[[NSBundle mainBundle] localizedStringForKey:(yourKey) value:@"" table:nil]

渡されたキーのローカライズされた文字列を取得します。

チュートリアル:

  1. iOS アプリのローカリゼーションが簡単に
  2. iPhone アプリ ローカリゼーション ガイド
  3. Xcode でのローカライズのために iOS アプリを準備する
于 2013-05-07T11:44:53.503 に答える
3

キレイにする

Swift の場合、ローカリゼーションを少し良くするより良い解決策があります。それほど面倒ではありません。次の拡張子を使用できます。

extension String {

    var localized: String {
        return NSLocalizedString(self, tableName: nil, bundle: NSBundle.mainBundle(), value: "", comment: "")
    }


    func localizedWithComment(comment:String) -> String {
        return NSLocalizedString(self, tableName: nil, bundle: NSBundle.mainBundle(), value: "", comment: comment)
    }
}

これで、何かをローカライズしたいときはいつでも、文字列プロパティとしてリクエストできます:

let text = "my-localization-key".localized

また、現在のシステム言語/ロケールに基づいてローカライズ文字列を取得します。

いくつかのヒント

より大きなプロジェクトがある場合は、ローカリゼーションのエクスポート/新しい言語の追加を処理するマネージャーを調べる価値があります。たとえば、私はCrowdinを使用していますが、いくつかのサービスがより魅力的であると感じるかもしれません. すばらしいことに、手動ですべてを行う必要はありません。キー/翻訳を挿入するだけで、使用しているすべての言語のエクスポートが自動的に行われます。

また、キーの適切な命名に従ってください。人々が行っていること/私の経験に基づいて、論理コンポーネント/モジュールごとにキーに名前を付けるのが賢明だと思います。たとえば、次のようになります。

"Profile.NavigationBar.Title" = "Profile";
"Profile.NavigationBar.Button.Edit" = "Edit;

このようにして、何がどこにあるのかをすぐに確認できます。

最後に、ローカリゼーションは一般的に非常に苦痛です。ローカリゼーションから実際のコードを作成できるジェネレーターがあるため、コンパイラーがチェックします。GitHub で入手できます

幸運を!

bundle-access 構文が変更された Swift 4+ の更新:

extension String
{
    var localized: String
    {
        return NSLocalizedString(self, tableName: nil, bundle: Bundle.main, value: "", comment: "")
    }


    func localizedWithComment(comment:String) -> String
    {
        return NSLocalizedString(self, tableName: nil, bundle: Bundle.main, value: "", comment: comment)
    }
}
于 2015-12-09T23:15:29.740 に答える