Mar*_*psz 10 xcode interface-builder internationalization ios xcode7
我有一个有3个目标的项目.每个目标只需要支持一种语言,但每种目标的语言都不相同.目前我有
我的大多数字符串都在Localizable.strings文件中,我只是为每个目标定位一个不同的文件.但是,我的故事板中有许多字符串.我的问题是,似乎不可能为每个目标创建不同的故事板本地化文件.如果我更改了葡萄牙文件的定位,则西班牙文件的定位会自动更改.
一种可能的解决方案是为每个目标复制每个故事板,但随着目标数量的增长,这将无法很好地扩展.我还可以在每个ViewController中使用NSLocalizedString修改所有文本,但这看起来很乏味且容易出错.
有更好的解决方案吗?
虽然此答案是首选方法,但您可以将不同的Storyboard 本地化分配给不同的目标,同时在所有目标之间共享相同的 Storyboard.
先决条件:
按照这个说明这个答案.
概念:
你想拥有Main.storyboard
每个目标,但每个目标都有不同 Main.strings
的目标.此外,您不希望每个目标中都有可用的所有本地化.
要实现这一点,您必须.lproj
直接操作,这是一个仅在使用文件检查器时隐藏的过程.
一步步:
Main.storyboard
.当然,选择Remove Reverence以保留故事板.Main.storyboard
回项目,然后选择每个目标.Localizable Strings
.
en.lproj
,es.lproj
,fr.lproj
,等发现,他们每一个都包含一个版本Main.strings
.将这些.lproj(整个目录)拖回到项目中.这个时候,就没有选择任何目标Main.strings
到所需的目标.每个重复一次.strings
.
结论
通过解耦.lproj
从.storyboard
在Project Navigator中,您可以自由结社的文件和目标.
演示:
在设置中将语言设置为Français的设备上使用法语目标查看它:
►在GitHub上找到此解决方案以及有关Swift Recipes的其他详细信息.
在文件检查器中,在" 本地化"下,添加英语.选择Localizable Strings,这是默认值.这将为Main.string
每种语言创建一个,并在所有语言中共享您的Storyboard.
只需单击步骤2中的该复选框即可添加Main.string (English)
该语言,特别是针对该语言Main.Storyboard
.特别注意新的层次结构,这些不是, Localizable.strings
而是Main.strings
源于Main.storyboard
:
例如,从世界语中的UILabel
哪条消息开始,当设备以英语运行时,它将以英语显示:
/* Class = "UILabel"; text = "Tiu mesa?o estas en Esperanto"; ObjectID = "acC-pA-eMt"; */
"acC-pA-eMt.text" = "This message is in English";
Run Code Online (Sandbox Code Playgroud)
从这里开始为项目添加多种语言:
如果您需要添加更多语言,请按照下列步骤操作:
在项目和目标列表中,再次选择项目
单击+,选择一种新语言.在显示给您的对话框中,选择要为其设置多个本地化的每个故事板.
如果您在步骤5中错过了故事板,则只需按照假设您已有多种语言中的步骤,即可为故事板添加新语言.
归档时间: |
|
查看次数: |
2419 次 |
最近记录: |