故事板中UITextView的本地化

rkh*_*rkh 3 localization interface-builder uitextview ios

所以我在故事板中有一个带有不同按钮,标签和一些文本视图的应用程序,我直接在故事板中输入文本.我启用了基本本地化并添加了几种语言.

这为Base(英语)和其他语言生成了故事板,其中包含项目对象ID列表.我翻译了所有内容,标签和按钮(ALL OF THEM)工作并以我设置的语言显示.

然而,无论我设置哪种语言,文本字段都会显示初始英文文本...文本视图是否还有其他步骤?

use*_*524 5

所以,我做了一些研究,似乎为了使其正常工作,需要以编程方式设置UITextView的文本.

资料来源:Devforums.apple

引用:

据我所知,必须使用NSLocalizedString在代码中设置诸如文本视图/字段的text属性之类的字符串.WWDC 2013视频会议的第一个半小时#219让你的应用程序世界准备就绪,如果你有时间观看它

因此,似乎解决方法(如果您不想以编程方式设置文本)是在发布应用程序之前将字符串文件转换为故事板.这似乎按预期工作,并显示UITextView正确本地化.

编辑:找到另一种允许保留.strings文件的解决方法.

- (void)viewDidLoad:

for(UIView* v in self.view.subviews)
{
    if([v isKindOfClass:[UITextView class]])
    {
        UITextView* txv = (UITextView*)v;
        NSString *loctxt = [txv.text stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
        txv.text = NSLocalizedString(loctxt, @"");
    }
}
Run Code Online (Sandbox Code Playgroud)

这会从故事板中的任何内容生成Percent Escapes编码的字符串,如下所示:

Hello%20World
Run Code Online (Sandbox Code Playgroud)

在您的Localizable.strings文件中,您使用上面的键作为键,这将在运行时为应用程序生成所选语言环境中的本地化文本,如下所示:

"Hello%20World" = "Hallo Welt";
Run Code Online (Sandbox Code Playgroud)

Percent转义会处理基本字符串中的所有转义字符.