我的项目声明了两种语言:英语为开发语言,法语为其他语言。另外,它还勾选了Use Base Internationalization
。
在Xcode 9中本地化Strings文件时,通常将内容移至法语,然后在Base
列表中勾选Localization
。这样就给出了新Strings文件的两个副本,一个在Base.lproj
中(包含英语文本),另一个在fr.lproj
中,因此英语将用于除法语之外的其他语言。
在Xcode 10中,Localization
不会列出Base
,因此除了在Xcode 9中进行本地化然后还原为Xcode之外,我看不到使用Base.lproj
的方法10,并且已经创建了基本文件。
是一个错误,还是它的本质?
更新20Sep18。
现在有XCode 10的正式版本,即使Use Base Internationalization
标志仍然存在,问题仍然存在。
如果这不是错误,那么有人可以解释发生了什么吗?应该有一个Apple文档对此进行讨论。
顺便说一句,storyboard
或nib
在本地化时仍列出Base。仅一个Strings
文件似乎有问题。
答案 0 :(得分:0)
发生这种情况是因为iOS不仅会查找当前的系统语言。 它会在首选语言列表中寻找第一种受支持的语言。
但是,当您在系统偏好设置中选择语言时,iOS会自动将此语言添加到首选语言列表中(设置-常规-语言和地区-“首选语言顺序”部分)。
因此,当您将语言更改为不受支持的语言时,应用程序会在“首选语言顺序”列表中选择第二种语言。
因此,“ Base.lproj”文件不起作用。
也许出于这个原因,Apple从Xcode 10中删除了“ Base.lproj”。