1

我制作了一个本地化为两种语言(英语和丹麦语,默认为英语)的 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”!

希望有人有想法?:)

提前致谢。

编辑:::
实际的丹麦-丹麦本地化出了点问题。我不知道苹果是否更新了它或他们做了什么,但它从被称为“丹麦-丹麦”变成了“丹麦”。在制作了全新的丹麦语本地化并删除了旧的本地化后,它起作用了!疯狂的事情。让你摸不着头脑!

4

3 回答 3

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];
于 2013-04-02T01:23:51.497 回答
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;
}

希望这会有所帮助,谢谢。快乐编码

于 2013-04-02T04:49:38.037 回答
0

实际的丹麦本地化有问题。
当我开始进行本地化时,它被称为“丹麦-丹麦”。更新 ios 和/或 xcode 后,现在只有“丹麦语”。
所以不得不进行全新的本地化。

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

于 2013-04-02T02:24:43.210 回答