34

作成したデンマーク語アプリのローカライズで問題が発生しました。(ペストリーではなく言語)

info.plist で CFBundleDevelopmentRegion をデンマーク語の da_DK に設定しましたが、デンマーク語の OS を実行している電話でも、テキスト入力用に表示されるポップアップは英語のままです。

ここに画像の説明を入力

ジョブ名でこれを変更するにはどうすればよいですか?

テスト デバイスは、デンマーク語を iOS 設定として iOS 5.1 を実行し、デンマーク語の iTunes アカウントが関連付けられた非ジェイルブレイクされた iPhone 4S です。

デザインには .xibs を使用しません。すべてのインターフェースはビューコントローラーとしてプログラムされています。

4

6 に答える 6

40

Xcodeのファイルツリー(プロジェクトナビゲータ)で、プロジェクトを選択します。右側のペインで、プロジェクトを再度選択します。[情報]を選択して、言語を追加します。

i18nを構成する


サンプルプロジェクトを作成しました。結果は次のとおりです。

ここに画像の説明を入力してください

于 2012-07-01T13:02:18.203 に答える
2
于 2012-07-01T14:25:30.640 に答える
1

@vikingosegundo が提供する公式の方法で動作させることができない場合は、創造的なエンジニアリング (創造的なもの、ああ、危険です) を使用してこれを行うことができます。誤ってオーバーライドしたときにこのメソッドを発見しました[NSBundle localizedStringForKey:value:tableName:]

1) 次の方法でカテゴリを NSBundle に追加します。

#import <objc/runtime.h>

+ (void) load  {
    Method original, swizzled;

    original = class_getInstanceMethod(self, @selector(localizedStringForKey:value:table:));
    swizzled = class_getInstanceMethod(self, @selector(swizzled_localizedStringForKey:value:table:));
    method_exchangeImplementations(original, swizzled);
}

- (NSString*) swizzled_localizedStringForKey:(NSString *)key value:(NSString *)value table:(NSString *)tableName {

    NSLog(@"Key: %@. Value: %@", key, value);

    return [self swizzled_localizedStringForKey: key value:value table:tableName];
}

2) キー/値を単純にログに記録する場合は、if ([key isEqualToString: xxx] ) ブロックを配置します。そこでは、次のキー値 (少なくとも一部) をキャッチする必要があります: 切り取り、コピー [メニュー]、選択、すべて選択、貼り付け、削除 [メニュー]、置換...、定義、話す、一時停止。これらは、そこに表示されるデフォルト値です。

3) 値をキャッチしたら、カスタム テーブルを検索するか、ハードコードされた値を使用できます。カスタム テーブルを検索する場合は、カスタム テーブルでの無限ループを回避するために、swizzled メソッドにキャッチがあることを確認してください。

NB: なぜスウィズルが必要なのですか? これは、アプリのすべての Apple テキストを上書きするためです。他のすべての文字列のデフォルトが必要になるため、興味のない文字列のデフォルトを取得するには、スウィズルする必要があります。

幸運を。ポール

于 2012-07-02T08:28:49.090 に答える
-1

.xib がローカライズされているかどうかを検索します (右側のパネルのインスペクターに表示されます)。その場合は、プロジェクト/ターゲット設定に移動し、+-記号を押して、「英語をデンマーク語に複製」または同じ意味のものを選択します。 (現在正しい商品を確認できません)

ところで、それはiPhone 4Sと呼ばれています。

于 2012-06-27T12:13:54.527 に答える