UiTextView使用xib字符串文件进行本地化

Jea*_*ent 23 internationalization ios

我在xCode中使用基础国际化来管理我的应用程序中的多种语言.

在xib文件中我有这个对象:

Xrj-9E-2VK it's an UITextView
Run Code Online (Sandbox Code Playgroud)

在相应的字符串文件中:

"Xrj-9E-2VK.text" = "text translated in french"
Run Code Online (Sandbox Code Playgroud)

但我的文字仍然是英文.

有什么建议吗?

Ron*_*ers 12

我找到了以下解决方法,直到Apple修复了iOS 7中仍然存在的这个(严重)错误:

你实际上需要'混合''基本本地化方法'(= Xcode 5和iOS 7的首选方法)与使用'Localizable.strings'文件的'旧'方法

1)创建文件'Localizable.strings'(文件 - >新建 - > iOS - >资源 - > .strings文件)

2)使用Xcode为您使用的每种语言创建此文件的本地化版本(选择文件'Localizable.strings',在'Localization'下的File Inspector中单击您使用的每种语言旁边的选择按钮).

3)在viewController中为UITextField创建一个IBOutlet @property:

@property (weak, nonatomic) IBOutlet UITextView *localizedTextView;
Run Code Online (Sandbox Code Playgroud)

4)在'viewDidLoad'下添加以下代码:

self.localizedTextView.text = NSLocalizedString(@"textFieldKey", @"comment for the translator");
Run Code Online (Sandbox Code Playgroud)

5)在每个'Localizable.strings'文件中添加:

"textFieldKey"="您希望将其放入textField中的翻译文本";

应该这样做!

请记住,Apple可能会在不久的将来某处修复此错误,在这种情况下,翻译将取自"基本本地化故事板"(具有对象引用的那个,如"a8N-K9-eJb.text") ="一些翻译文本".在这种情况下,您可以删除"Localization.strings"文件,并再次使用基本本地化为UITextField

  • 两年过去了,iOS 7,8和9以及bug仍然存在.Apple没有废话. (2认同)

Mac*_*dor 8

这仍然出现在Xcode 6和IOS 8下,之前的答案不满足我.

这是我简单快速的解决方法:

  1. 选择XIB,然后在文件检查器中
  2. 在"本地化"下,找到不起作用的语言
  3. 将"Localizable Strings"更改为"Interface Builder Cocoa Touch XIB"

XCODE XIB检查器文件截图

  1. 运行应用程序,翻译现在应该没问题!

如果您愿意,可以返回"Localizable Strings"...在这种情况下,请注意您必须至少运行一次带有"Interface Builder Cocoa Touch XIB"的应用程序.选择的选项.

  • 这不是一个真正的解决方案.它的工作原理是因为翻译的XIB在设备上部署的应用程序副本中占有一席之地,并且iOS在字符串文件中支持它.如果您从设备中删除该应用并清理您的工作区,它将再次被破坏(这是您为应用商店存档应用时会发生的情况). (2认同)

Ric*_*sen 5

您可以使用NSLocalizedStringFromTable在viewDidLoad中检索由xcode的IB生成的文本,如下所示:

self.intro_text.text = NSLocalizedStringFromTable(@"2Vy-59-WN8.text", @"Main", @"");
Run Code Online (Sandbox Code Playgroud)

其中2Vy-59-WN8.text是生成的密钥,您可以在UITextView的Main.strings中找到它.

BTW:这是一个xcode/IB错误,而不是iOS错误.