0

以下を使用して、テキストファイルからさまざまな言語のテキストリソースを読み込んでいます。

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"myfile" ofType:@"txt"];

if(filePath) {

    NSString *myText = [[NSString alloc] initWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];

}

英語、ドイツ語などの私の言語固有のリソースで非常にうまく機能します。

しかし、英国の英語のテキスト、米国の英語のテキスト、オーストリアのドイツ語のテキストなど、国固有のリソースもいくつかあります。

電話が特定の国(地域形式)に設定されている場合、これらのリソースが読み込まれることを期待しますが、そうではありません。ファイルパスは常に「純粋な」言語フォルダ内のファイルに設定されます。

たとえば、フォルダにmyfile.txtがあります。

en.lproj
en-GB.lproj
en-US.lproj

ただし、常にen.lprojにロードされます

フォルダーはXcodeのローカリゼーション機能を使用して作成されており、すべて同じフォルダーにあります。

少し奇妙なのは、Xcodeによって作成されたこれらのフォルダーは、言語と国をハイフンで区切っていることですが、ドキュメントによると、アンダースコアである必要があります。フォルダ(アンダースコア付き)をプロジェクトに手動でコピーしようとしましたが、それでも機能しません。

国固有のファイルをロードするにはどうすればよいですか?

ありがとう.....

4

3 に答える 3

3

Localisations.string の「オランダ語 - オランダ語」翻訳を作成し、iPhone 言語をオランダ語に設定しましたが、NSLocalizedString は常に英語の翻訳を返しました。解決策は、"dutch-netherlands" (nl-NL.lproj) の代わりに "dutch" 翻訳 (nl.lproj) を作成することでした。

iOS4 または iOS5 の設定画面では、オランダ語を選択できますが、XCode で使用できるにもかかわらず、オランダ語-オランダまたはオランダ語-ベルギーのサブ選択はありません。XCode は、iOS で実際にサポートされているよりも多くの翻訳オプションを提供しているように思えます。

つまり、アプリで「nl-NL」リソースを使用する方法はありません。同じ問題がドイツ語とオーストリア ("de-DE" と "de-AT") にも当てはまると思います。

于 2012-10-14T22:04:57.310 に答える
0

注:コード サンプルは、テキスト リソースを読み込む複雑な方法です。画像やメディア ファイルなどの文字列以外のリソースを読み込む場合は問題ありませんが、単純な文字列の場合は、言語ごとに 1 つのファイル (複数のローカライズされた文字列を含む) を使用し、特定の文字列の関連する言語バージョンを取得するために.strings呼び出す方がはるかに簡単です。NSLocalizedString

回答:「リージョン フォーマット」の iOS 設定は、リソースの読み込みには影響しません。代わりに、システムがロケール依存の機能 (日付/数値のフォーマットや解析など) を実行する方法を制御します。ローカライズされたリソースのどの言語バージョンが読み込まれるかを制御する iOS 設定は、言語設定 ([一般] > [国際] > [言語]) です。現在、「English」と「British English」の 2 つの英語版のみが含まれています。

于 2012-04-23T09:56:48.133 に答える
0

nl-NL.lproj (オランダ) と ca-ES.lproj (カタロニア語) でも同じ問題があります。私にとっての解決策は、Xcode を使用して言語を追加することです。Xcode プロジェクトに移動し、[情報] タブで言語を追加します。フォルダー nl-NL.lproj および ca-ES.lproj が自動的に作成されます。

次に、シミュレーター (Xcode バージョン 4.6) でこれを試すことができます。これらの言語は言葉ではなく、代わりに英語をロードします。

最初に、フォルダー nl-NL.lproj の名前を手動で nl.lproj に変更します。最後に、ファイル {MY_PROJECT}.xcodeproj/project.pbxproj に移動し、次の行の PATH を置き換えます。

    C3D2888817108DDA00CE8AC2 /* nl-NL */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "nl-NL"; path = "nl.lproj/Localizable.strings"; sourceTree = "<group>"; };
    C3D2888917108DE500CE8AC2 /* nl-NL */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "nl-NL"; path = "nl.lproj/InfoPlist.strings"; sourceTree = "<group>"; };

以上で、これらの言語設定を正しく取得できるようになりました。

于 2013-04-06T17:45:08.527 に答える