使用Xcode 10实现基本国际化

3df52oht  于 2023-01-06  发布在  其他
关注(0)|答案(2)|浏览(162)

我的项目声明了两种语言:英语作为发展和法语作为附加。也有Use Base Internationalization打勾。
当我在Xcode 9中本地化一个字符串文件时,我通常会将内容移动到法语,然后在Localization列表中勾选Base。这会给新的字符串文件提供两个副本,一个在Base.lproj中(包含英语文本),另一个在fr.lproj中,所以英语将用于法语以外的语言。
在Xcode 10中,Localization没有列出Base,所以除了在Xcode 9中进行本地化,然后恢复到已经创建了Base文件的Xcode 10之外,我看不到使用Base.lproj的方法。
这是一个错误,还是这是怎么回事?
2018年9月20日更新。
现在XCode 10正式发布了,即使Use Base Internationalization标记仍然存在,这个问题仍然存在。如果这不是一个bug,有人能解释一下是怎么回事吗?应该有苹果文档来讨论这个问题。
顺便说一句,一个storyboardnib在本地化时仍然列出Base。只有Strings文件似乎有这个问题。

sbtkgmzw

sbtkgmzw1#

这是因为iOS不仅会查找当前系统语言,还会查找首选语言列表中第一个支持的语言。
但当您在系统偏好设置中选取语言时,iOS会自动将此语言添加到首选语言列表(设置--通用--语言与地区--“首选语言顺序”部分)。
因此,当您将语言更改为不支持的语言时,应用程序会在“首选语言顺序”列表中选择第二种语言。
因此,“Base.lproj”文件不起作用。
或许正是因为这个原因,苹果从Xcode 10中删除了“Base.lproj”。

pcrecxhr

pcrecxhr2#

当我尝试使用Xcode 14.2在iOS主屏幕上本地化Flutter应用程序的名称时,我自己也面临同样的问题。我需要将Bundle display name中的Info.plist本地化为各种语言,并将英语作为默认语言,以显示用户是否选择了不支持的语言。
最初,语言本地化工作正常,除了我不能有InfoPlist.stringsBase版本,因为该选项没有显示在Xcode中,而其他两个storyboard文件确实有Base版本。
我转向Main.storyboard,注意到Base文件名为Main.storyboard,而本地化文件名为Main.strings。这给人一种想法,不知何故Base文件与本地化文件不同。所以我最终认为原始Info.plist将作为Base版本,因此使用默认语言,在本例中为英语。

相关问题