我正在开发一款几乎专门针对日本观众的iOS应用,可能会有一小部分说英语的用户。
所有故事板和xib都采用日语字符串设计,并且应在稍后阶段进行英语本地化。
从一开始,Xcode中的项目的信息/本地化部分就是:
(这两个文件当然是" Main.storyboard" 和" LaunchScreen.xib" )
因为"英语"已添加(作为开发语言),我无法点击" +"按钮并将其添加为本地化。我可以添加日语'相反,但我希望它是开发语言,而不仅仅是一些(二级)本地化。
此外,与上述明显矛盾的是,目标的Info.plist
文件显示为:
当我在Project Navigator中选择任一本地化文件(Main.storyboard
和LaunchScreen.xib
),并检查文件检查器时,本地化'部分内容如下:
...这似乎表明现有的日文文件(.xib和.storyboard)是' Base'并检查英语'也将添加对该语言的支持(下拉菜单似乎表明我可以选择使用字符串文件或故事板的专用副本。我倾向于相信字符串方法更好)。
......那么,我该怎么办?
:一种。检查英语'文件检查器/本地化部分中的框?
这会创建一个en.lproj
文件夹,并在其中添加一个我应该稍后翻译的字符串文件,我猜。这实际上似乎将我现有的Interface Builder文件(填充日语标签)视为' Base',并通过创建的字符串文件(如果我理解正确)提供英语本地化。但是,英语作为项目设置中的开发语言仍然有些不安......
B中。删除英语,而是在项目/信息/本地化窗格中添加日语? 这将使日语成为开发语言,之后我可以重新添加英语作为本地化。但出于某种原因,如果我这样做,日语 不 将被视为' Base'还将为日语添加语言和(不必要的)字符串文件,而不仅仅是英语。
编辑:我找到了this question,它以某种方式提供了一个“修复”功能。对于上面的选项B.
答案 0 :(得分:1)
好的,这就是我的目标(但我仍会接受更好/更聪明的答案):
我按照the question I mentioned before的建议做了,并编辑了Xcode项目文件以强制日语作为“开发语言”:
developmentRegion = Japanese;
hasScannedForEncodings = 0;
knownRegions = (
en,
ja,
Base,
变为:
for( int k = 0; k < aL[i].size() ; k++ ) {
newArray[a++] = aL[i].remove(0);
}
接下来,对于我想要本地化的storyboards / xibs,我将检查文件检查器/本地化中的“英语”复选框:
...这将创建我的英文字典文件(请注意'英文'下方的'日语'复选框。我宁愿它根本不存在,因为Base xibs / storyboards已经有日文文本标签默认情况下,但我可以不加控制地保留它。)
现在,项目的信息窗格,“本地化”部分如下所示:
ADDENDUM:现在我想起来了,如果有人设置这样的东西,如果有人在(例如)设置为法语的iPhone上启动此应用程序,该应用程序将回归日语(不是英语)。这可能不太理想,因为非日语使用者的默认语言应该是英语,而不是相反。
但是,我不能用英文文本设计我的xib,然后将它们翻译成日文。