2013-04-02 25 views
1

我做了一个本地化为两种语言(英语和丹麦语,英语为默认)的ios应用程序。
我用两个子文件en和da制作了Localizable.strings。
一切都应该正确,我看到英文文本加载罚款字符串文件。但丹麦人不。ios可本地化的字符串不工作

我试图通过下面的代码检查首选语言,它是丹麦语。

[[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(丹麦语),它也会返回“完成” !

希望有人有一个想法? :)

在此先感谢。

编辑:::
实际的丹麦 - 丹麦本地化出了问题。我不知道苹果是否更新了它或者它做了什么,但是它从被称为“丹麦 - 丹麦”变为“丹麦”。 做了一个全新的丹麦语本地化并删除了它的旧版本!疯狂的事情。让你挠头!

+0

您是否在英文和丹麦文件中使用相同的密钥? – sixthcent

+0

是的,当然......关键是当然是相同的,不同的文字。 –

+0

你确定你正在获得英文版本,而不是简单的默认文本? –

回答

0

有一些问题与实际丹麦的定位。
当我开始制作本地化时,它被称为“丹麦 - 丹麦”。更新ios和/或xcode后,现在只有“丹麦语”。
所以不得不做一个全新的本地化。

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

1

我曾经有过类似的事情发生在我身上。我所做的来解决这个问题是从改变编码字符串:。。。。。。。

encoding:NSASCIIStringEncoding 

encoding:NSUTF8StringEncoding 

〜〜〜〜〜〜〜〜〜〜。 〜。〜。〜。〜。〜。〜。〜。〜。〜。〜。〜。

现在假设问题不是字符串编码。您也可以解决它,这样做:

NSString * language = [[NSLocale preferredLanguages] objectAtIndex:0]; 

NSString [email protected]""; 
NSString [email protected]""; 
NSString [email protected]""; 

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]; 
+0

在属性检查器中它被设置为UTF16,我知道它应该是(也试过8没有运气)。我直接在xcode中创建了字符串文件(没有从外部复制它)。 但谢谢你的建议。 –

+0

您是否尝试在调试屏幕上打印出这些字符串? – 2013-04-02 01:40:59

+0

刚刚尝试过。 preferredLang的nslog是DANISH,文本来自英文Localizable.strings。博格我! –

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; 
} 

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

+0

你好,谢谢你的回答。我明白了,并在下面回答(不能接受自我回答)。但感谢你的方法,很好的对角工具。实际的丹麦语本地化存在问题。 当我开始进行本地化时,它被称为“丹麦 - 丹麦”。更新ios和/或xcode后,现在只有“丹麦语”。 所以不得不做一个全新的本地化。 谢谢苹果......不! 无论如何,感谢您的帮助:) –