我有一些问题本地化我所做的丹麦应用程序。 (语言,而不是糕点)
我已经在我的info.plist中将CFBundleDevelopmentRegion设置为da_DK for danish,但是显示文本输入的弹出窗口仍然是英文版,即使在运行丹麦操作系统的手机上也是如此。
如何在乔布斯名称中更改此内容?
测试设备是运行iOS 5.1的非越狱iPhone 4S,其中包括丹麦语作为其iOS设置,以及丹麦语itunes帐户。
我不使用.xibs进行设计。所有接口都被编程为视图控制器。
答案 0 :(得分:35)
答案 1 :(得分:5)
您可以直接在info.plist中执行此操作。像这样:
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleLocalizations</key>
<array>
<string>en</string>
<string>de</string>
<string>es</string>
<string>ja</string>
</array>
答案 2 :(得分:3)
尝试将Info.plist中的“Localized resources may mixed”标记添加/设置为YES。
答案 3 :(得分:2)
您必须使用丹麦语本地化您的应用,才能使标准UI元素以该语言显示。这是为了避免使用具有混合语言的UI。
如果您不使用xib,通常会通过向项目添加Localizable.strings
文件来执行此操作。在Xcode的“添加文件”对话框中,您可以使用“字符串文件”模板(在“资源”下)进行此操作。
要实际本地化字符串文件,请打开文件检查器(⌘
⌥
1
),然后单击“本地化”部分中的+
按钮。您最终会在项目导航器中将该文件显示为一个组,并为每种语言提供一个子条目。
字符串文件的格式为:
"Label_Text" = "Smørrebrød";
(别忘了分号)
要在代码中使用本地化字符串,您可以使用NSLocalizedString
宏,如下所示:
myLabel.text = NSLocalizedString(@"Label_Text", nil);
(第二个参数用于评论。如果您使用genstrings工具从代码中提取可本地化的字符串并将结果文件提供给专业翻译,这将非常有用。)
如果您使用英文字符串作为键,则可以将Localizable.strings
的英文版留空(但不要将其删除)。
使用用户所选语言的Localizable.strings
文件也会导致标准UI元素(如编辑菜单,照片选择器等)以该语言显示。
答案 4 :(得分:2)
如果你不能按照@vikingosegundo提供的官方方式使用它,你可以通过一些创造性工程来做到这一点(创造性,因为我的上帝,这是危险的)。当我意外地覆盖[NSBundle localizedStringForKey:value:tableName:]
时,我发现了这种方法。
1)使用以下方法向NSBundle添加类别:
#import <objc/runtime.h>
+ (void) load {
Method original, swizzled;
original = class_getInstanceMethod(self, @selector(localizedStringForKey:value:table:));
swizzled = class_getInstanceMethod(self, @selector(swizzled_localizedStringForKey:value:table:));
method_exchangeImplementations(original, swizzled);
}
- (NSString*) swizzled_localizedStringForKey:(NSString *)key value:(NSString *)value table:(NSString *)tableName {
NSLog(@"Key: %@. Value: %@", key, value);
return [self swizzled_localizedStringForKey: key value:value table:tableName];
}
2)我只需记录键/值,你想放一个if([key isEqualToString:xxx])块。在那里,您想要捕获(至少一些)以下键值:剪切,复制[菜单],选择,全选,粘贴,删除[菜单],替换...,定义,说出,暂停。这些是可以在那里出现的默认值。
3)当您捕获了值时,您可以在自定义表中查找或使用硬编码值。如果你在自定义表中查找,请确保你的混合方法中有一个catch,以避免在自定义表中无限循环。
NB:你为什么需要调酒?因为这会为你的应用程序覆盖所有Apple文本。您仍然需要所有其他字符串的默认值,因此您需要调整以获取您不感兴趣的字符串的默认值。 祝你好运。 保罗答案 5 :(得分:-1)
搜索您的.xib是否已本地化(您将在右侧面板上的检查器中找到它)如果是,请转到您的项目/目标设置按+ - 签名并选择&#34;复制英语到丹麦&#34;或者意思相同的东西(我现在无法检查正确的项目)
它被称为iPhone 4S。