サポートされているすべての言語をライブラリからテーブルビューに一覧表示する必要があるアプリケーションを作成しています。そのため、ユーザーが設定に移動して言語を変更する必要はありません。必要に応じて、アプリから直接変更できます。たくさん検索しましたが、可能かどうかわかりません。だから誰かがこれで私を助けることができますか?
前もって感謝します
サポートされているすべての言語をライブラリからテーブルビューに一覧表示する必要があるアプリケーションを作成しています。そのため、ユーザーが設定に移動して言語を変更する必要はありません。必要に応じて、アプリから直接変更できます。たくさん検索しましたが、可能かどうかわかりません。だから誰かがこれで私を助けることができますか?
前もって感謝します
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSArray *languages = [defaults objectForKey:@"AppleLanguages"];
これにより、Appleが好むu言語が提供されます。しかし、サポートされている言語についてはわかりません。これはあなたが探しているリストかもしれません
for (NSString *language in languages) {
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:language] ;
displayname = [locale displayNameForKey:NSLocaleIdentifier value:language];
}
Language.plist ファイルを作成し、言語の辞書を作成して、デフォルトのテキストをキーとして保持します
次に、Defines.h でこのマクロを定義します。
#define LocalizedString(key) [[[NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Language" ofType:@"plist"]] valueForKey:[NSString stringWithFormat:@"%d",LANGUAGE_ID]] valueForKey:key]
プログラムでグローバルな言語 ID を設定し、次のように LocalizedString(@"Hi") を使用します
lang Id に応じて、選択したキー hi の翻訳値が表示されます。
アプリケーション用にさまざまな言語の pList ファイルを生成できます。
ローカライズ言語のサンプルコードを説明しています。
NSDictionary *dictLang;
-(void)localization_language{
NSString *errorDesc = nil;
NSPropertyListFormat format;
NSString *rootPath;
if (lang == 1) {
rootPath = [[NSBundle mainBundle] pathForResource:@"FRA"
ofType:@"plist"];
}
else if(lang == 0){
rootPath = [[NSBundle mainBundle] pathForResource:@"ENG"
ofType:@"plist"];
}
NSData *plistXML = [[NSFileManager defaultManager] contentsAtPath:rootPath];
dictLang = (NSDictionary *)[NSPropertyListSerialization propertyListFromData:plistXML mutabilityOption:NSPropertyListMutableContainersAndLeaves format:&format errorDescription:&errorDesc];
NSLog(@"PLIST retrive:%@",plistXML);
if (!dictLang) {
NSLog(@"Error reading plist: %@, format: %d", errorDesc, format);
}
}
このコードは、lang 変数に従って pList ファイルを検索します。フランスは 0、英語は 1 です。
次に、辞書から値を設定します。
lbl1.text =[dictLang objectForKey:@"Key1"];
lbl2.text =[dictLang objectForKey:@"Key2"];
そして、pList ファイルに保存されている値を表示します。
うまくいけば、言語のグローバリゼーションでうまくいくでしょう。ありがとう。