ios可本地化字符串不工作
我制作了一个ios应用程序,该应用程序本地化为两种语言(英语和丹麦语,默认为英语)。ios可本地化字符串不工作,ios,xcode,localization,localizable.strings,Ios,Xcode,Localization,Localizable.strings,我制作了一个ios应用程序,该应用程序本地化为两种语言(英语和丹麦语,默认为英语)。 我用两个子文件en和da制作了一个本地化的.strings。 一切都应该是正确的,我看到英文文本加载从字符串文件罚款。但丹麦人没有 我试图通过下面的代码检查首选语言,它是丹麦语 [[NSLocale preferredLanguages] objectAtIndex:0]; 我尝试过清理+删除和重建,但运气不佳 我知道Localizable.strings文件正在工作,因为它正在获取英文文本。我知道,通过上面
我用两个子文件en和da制作了一个本地化的.strings。
一切都应该是正确的,我看到英文文本加载从字符串文件罚款。但丹麦人没有 我试图通过下面的代码检查首选语言,它是丹麦语
[[NSLocale preferredLanguages] objectAtIndex:0];
我尝试过清理+删除和重建,但运气不佳
我知道Localizable.strings文件正在工作,因为它正在获取英文文本。我知道,通过上面的代码行,它看到了丹麦的本地化。
我错过了什么
只需添加几个示例:从英语:
"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”
希望有人有想法?:)
提前谢谢
编辑::实际的丹麦-丹麦本地化有问题。我不知道苹果是否更新了它或者他们做了什么,但它从被称为“丹麦”变成了“丹麦”。
在进行了全新的丹麦本地化并删除了旧的本地化之后,它成功了!疯狂的东西。让你抓挠你的头 我以前也经历过类似的事情。我所做的全部工作就是将字符串编码从:
encoding:NSASCIIStringEncoding
到
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
现在假设问题不是字符串编码。您还可以围绕它工作,并执行以下操作:
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";
//...
}
然后:
实际的丹麦本地化有问题。
当我开始本地化时,它被称为“丹麦”。ios和/或xcode更新后,现在仅为“丹麦语”。
因此,我们必须进行一次全新的本地化 谢谢你,苹果。。。。。。不是 试试这个
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;
}
希望这有帮助,谢谢。快乐编码您在英语和丹麦文文件中使用相同的密钥吗?是的,当然。。。关键是相同的,当然不同的文本。你确定你得到的是英文版本,而不仅仅是默认文本?是的,因为我没有在任何地方添加任何默认文本。唯一的文本源是Localizable.strings文件。例如:self.navigationItem.title=NSLocalizedString(@“CalendarVCTitle”,nil);给出“BLABLA”,bla bla就是我看到的。故事板上没有文本。在属性检查器中,它被设置为UTF16,我理解它应该设置为UTF16(也尝试使用8,但没有运气)。我直接在xcode中创建了字符串文件(没有从外部复制它)。但是谢谢你的建议。你试过在调试屏幕上打印那些字符串吗?只是试过了。preferredLang的nslog是丹麦语,文本来自英语本地化的.strings。真让我吃惊!如果您临时删除英文条目并只打印丹麦语条目,那么在调试日志上会看到什么?这一点很好。然后该键作为默认值出现。因此,它实际上并不是在读取丹麦语本地化的.strings。有没有办法将其设置为默认值,然后看看它是否会读取它?您好,谢谢您的回答。我弄明白了,并在下面回答了(还不能接受自己的回答)。但是谢谢你的方法,很好的诊断工具。实际的丹麦本地化有些问题。当我开始本地化时,它被称为“丹麦”。在ios和/或xcode更新后,它现在仅为“丹麦文”。因此,我们必须进行一次全新的本地化。谢谢你,苹果。。。。。。不无论如何,谢谢你的帮助:)
[yesButton setTitle:NSLocalizedString(yesButtonStr, nil) forState:UIControlStateNormal];
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;
}