ios可本地化的字符串不起作用

时间:2013-04-02 01:05:17

标签: ios xcode localization localizable.strings

我制作了一个本地化为两种语言的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本地化出了点问题。我不知道苹果是否更新了它或它们做了什么,但它从被称为“丹麦 - 丹麦”变成了“丹麦”。 在完成全新的丹麦语本地化并删除旧的本地化后,它就有效了!疯狂的事情。让你挠头!

3 个答案:

答案 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后,它现在只是“丹麦语” 因此不得不进行全新的本地化。

谢谢苹果......不!