我制作了一个本地化为两种语言的ios应用程序(英语和丹麦语,默认为英语) 我创建了一个带有两个子文件en和da的Localizable.strings 一切都应该正确,我看到英文文本从字符串文件加载正常。但丹麦人没有。
我试图通过以下代码检查首选语言,这是丹麦语。
[[NSLocale preferredLanguages] objectAtIndex:0];
我试过干净+删除并重建没有运气。
我知道Localizable.strings文件正在运行,因为它正在获取英文文本。我知道它通过上面的代码行看到了丹麦语的本地化。 我错过了什么?
只是添加几个例子:
来自EN:
"YesButton" = "Done";
"NoButton" = "Not yet!";
"NextButton" = "Next";
"BackButton" = "Back";
"EditButton" = "Edit";
"DoneButton" = "Done";
和丹麦:
"YesButton" = "Færdig";
"NoButton" = "Ikke endnu!";
"NextButton" = "Næste";
"BackButton" = "Tilbage";
"EditButton" = "Redigér";
"DoneButton" = "Færdig";
获取文本的代码为:
[yesButton setTitle:NSLocalizedString(@"YesButton", nil) forState:UIControlStateNormal];
即使在PreferredLang为da(丹麦语)时也会返回“Done”!
希望有人有个主意吗? :)
提前致谢。
EDIT :::
实际的DANISH-DENMARK本地化出了点问题。我不知道苹果是否更新了它或它们做了什么,但它从被称为“丹麦 - 丹麦”变成了“丹麦”。
在完成全新的丹麦语本地化并删除旧的本地化后,它就有效了!疯狂的事情。让你挠头!
答案 0 :(得分:1)
encoding:NSASCIIStringEncoding
到
encoding:NSUTF8StringEncoding
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
现在假设问题不是字符串编码。您也可以解决它并执行以下操作:
NSString * language = [[NSLocale preferredLanguages] objectAtIndex:0];
NSString yesButtonStr=@"";
NSString noButtonStr=@"";
NSString nextButtonStr=@"";
if([@"en" caseInsensitiveCompare:language] == NSOrderedSame )
{
yesButtonStr = @"Done";
noButtonStr= @"Not yet!";
nextButtonStr = @"Next";
//...
}
else if if([@"da" caseInsensitiveCompare:language] == NSOrderedSame )
{
yesButtonStr = @"Færdig";
noButtonStr = @"Ikke endnu!";
nextButtonStr = @"Næste";
//...
}
然后:
[yesButton setTitle:NSLocalizedString(yesButtonStr, nil) forState:UIControlStateNormal];
答案 1 :(得分:1)
试试这个,
NSString *translatedString = [self languageSelectedStringForKey:@"YesButton"]; // Give your key here
-(NSString*) languageSelectedStringForKey:(NSString*) key
{
NSString *path;
path = [[NSBundle mainBundle] pathForResource:@"en" ofType:@"lproj"]; // give your language type in pathForResource, i.e. "en" for english, "da" for Danish
NSBundle* languageBundle = [NSBundle bundleWithPath:path];
NSString* str=[languageBundle localizedStringForKey:key value:@"" table:nil];
return str;
}
希望这有帮助,谢谢。快乐的编码
答案 2 :(得分:0)
实际的丹麦本地化存在问题 当我开始进行本地化时,它被称为“丹麦 - 丹麦”。更新ios和/或xcode后,它现在只是“丹麦语” 因此不得不进行全新的本地化。
谢谢苹果......不!