用日语开发应用程序,将本地化添加到英语

Posted

技术标签:

【中文标题】用日语开发应用程序,将本地化添加到英语【英文标题】:Develop app in Japanese, add localization into English 【发布时间】:2015-06-25 07:29:20 【问题描述】:

我正在开发一款几乎专门针对日本用户的 ios 应用,其中可能有一小部分说英语的用户。

所有故事板和 xib 都使用日文字符串设计,并且应该在稍后阶段本地化为英文。

从一开始,Xcode 中 Project 的 Info/Localizations 部分如下:

(这两个文件当然是“Main.storyboard”“LaunchScreen.xib”

因为已经添加了“English”(作为开发语言),所以我无法点击“+”按钮并将其添加为本地化。我可以添加“日语”,但我希望它成为开发语言,而不仅仅是一些(辅助)本地化。

此外,与上述明显矛盾的是,目标Info.plist文件内容如下:

当我在项目导航器中选择任一本地化文件(Main.storyboardLaunchScreen.xib)并检查文件检查器时,“本地化”部分显示为:

...这似乎表明现有的日语文件(.xib 和 .storyboard)是“基础”,检查“英语”也会增加对该语言的支持(下拉菜单似乎表明我可以选择使用字符串文件或故事板的专用副本。我倾向于相信字符串方法更好)。

...那么,我应该怎么做呢?

A.检查文件检查器/本地化部分中的“英语”框? 这将创建一个 en.lproj 文件夹并在其中添加一个字符串文件,我猜我应该稍后翻译。这似乎有效地将我现有的 Interface Builder 文件(填充有日语标签)视为“基础”,并通过创建的字符串文件(如果我理解正确的话)提供英语本地化。然而,英语作为项目设置中的开发语言仍然令人不安......

B.在 Project/Info/Localizations 窗格中删除英语并改为添加日语? 这将使日语成为开发语言,之后我可以将英语重新添加为本地化。但由于某种原因,如果我这样做,日语将 被视为“基本”语言,并且还会为日语添加(不必要的)字符串文件,而不仅仅是英语。

编辑:我找到了this question,它以某种方式为上述选项 B 提供了“修复”。

【问题讨论】:

【参考方案1】:

好的,这就是我所接受的(但我仍然会接受更好/更聪明的答案):

我按照the question I mentioned before的建议做了,并编辑了Xcode项目文件以强制将日语作为“开发语言”:

developmentRegion = English;
            hasScannedForEncodings = 0;
            knownRegions = (
                en,
                Base,
            );

变成:

developmentRegion = Japanese;
            hasScannedForEncodings = 0;
            knownRegions = (
                en,
                ja,
                Base,

接下来,对于我要本地化的故事板/xib,我将选中文件检查器/本地化中的“英语”复选框:

...这将为英语本地化创建我的字符串文件(注意“英语”下方的“日语”复选框。我宁愿它根本不存在,因为基本 xibs/storyboards 已经有日语文本标签默认情况下,但我可以不选中它)。

现在,项目的信息窗格中的“本地化”部分如下所示:

附录: 现在我想起来了,像这样设置,如果有人在(比如)设置为法语的 iPhone 上启动这个应用程序,应用程序将回退到日语(不是英语)。这可能并不理想,因为非日语使用者的默认语言应该是英语,而不是相反。

但是,我无法用英文设计我的 xib,然后再将它们翻译成日文。

【讨论】:

以上是关于用日语开发应用程序,将本地化添加到英语的主要内容,如果未能解决你的问题,请参考以下文章

iphone, 本地化, info.plist

按语言(英语、日语等)对 iPhone 应用程序进行分类

NSControl 对象内的日文字体渲染不正确

如何通过 Fastlane 脚本添加 Xcode 本地化语言

为啥我的 ja.lproj 不显示日语?

法语/英语和日语的 SQL 条目