使用 Xcode 10 进行基本国际化



我的项目声明了两种语言:英语作为开发,法语作为附加语言。它也Use Base Internationalization滴答作响。

当我在 Xcode 9 中本地化字符串文件时,我通常会将内容移动到法语,然后在Localization列表中勾选Base。这提供了新字符串文件的两个副本,一个是Base.lproj(包含英语文本(,另一个是fr.lproj,因此英语将用于法语以外的语言。

使用 Xcode

10,Localization没有列出Base,因此除了在 Xcode 9 中进行本地化然后恢复到 Xcode 10 之外,我看不到使用Base.lproj的方法已经创建了基本文件。

这是一个错误,还是这就是它的本意?


更新 209 月 18 日。

现在有XCode 10的正式发布,即使标志仍然存在Use Base Internationalization问题仍然存在。 如果这不是一个错误,有人可以解释发生了什么吗?应该有一个Apple文档来讨论这个问题。

顺便说一句,storyboardnib在本地化时仍会列出 Base。只有Strings文件似乎有问题。

发生这种情况是因为iOS不仅查找当前的系统语言。 它在首选语言列表中查找第一个受支持的语言。

但是,当您在系统偏好设置中选择语言时,iOS 会自动将此语言添加到首选语言列表中(设置 - 通用 - 语言和地区 - "首选语言顺序"部分(。

因此,当您将语言更改为不支持的语言时,应用程序会在"首选语言顺序"列表中选择第二种语言。

因此,"Base.lproj"文件不起作用。

也许正是出于这个原因,苹果从Xcode 10中删除了"Base.lproj"。

尝试使用 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版本,因此是默认语言,在本例中为英语。

相关内容

  • 没有找到相关文章

最新更新