【问题标题】:iOS Localizations changing, native regioniOS 本地化更改,本地区域
【发布时间】:2016-05-17 09:36:16
【问题描述】:

我开发了一个应用程序,其中包含一些输入 plist 文件,以及该应用程序的输入数据。 这个输入数据现在是俄语。

在开发过程中,我打算仅在俄语 AppStore 为讲俄语的客户分发此应用程序。现在我的应用程序在 AppStore 中。但现在我也想为说英语的客户分发我的应用程序。 我知道我必须用英语输入数据准备翻译的输入列表。

我的问题涉及应用程序中的更多本地化..

在开发过程中我更改了 info.plist 文件,我将“本地化原生开发区域”设置为“ru”。

解决我的案件最正确的方法是什么? 我应该将“本地化本地开发区域”设置为“ru”并添加英语本地化吗? 或者我应该将“本地化本地开发区域”设置回“en”并添加俄语本地化? 或者也许我应该添加两个本地化 - 英语和俄语?在这种情况下,我应该将哪个选项设置为“本地化原生开发区域”?

顺便说一句,我如何根据当前本地化以编程方式选择读取哪个输入数据 plist 文件?

【问题讨论】:

    标签: ios objective-c swift


    【解决方案1】:

    我认为您应该将 Localization native development region 更改为 en region,从 documentation

    CFBundleDevelopmentRegion (String - iOS, OS X) 指定默认值 包的语言和区域,作为语言 ID。例如, 英国英语的语言 ID 为 en-UK。系统 如果无法找到用户的资源,则使用此值 首选语言

    世界上讲英语的人数比讲俄语的人数还要多。如果定位系统找不到所需的本地化,它将使用您的母语文件。 但是如果你使用 NSBundle 的method 来加载原生资源(例如 plist):

    - (NSURL *)URLForResource:(NSString *)name
                withExtension:(NSString *)extension
                 subdirectory:(NSString *)subpath
                 localization:(NSString *)localizationName
    //The file URL for the resource file or nil if the file could not be located.
    

    您应该添加非本地化的 plist 文件,以避免从该方法返回 nil URL 以获得不受支持的本地化(具有相同名称但不在 lang 目录中的文件)。

    Here 你可以阅读 NSBundle 如何在你请求资源时找到资源。

    【讨论】:

    • 谢谢你!对于localizationName - 如何正确调用英语或俄语本地化?
    • 关于我最初的问题的详细信息:我使用这个: NSString *path = [[NSBundle mainBundle] pathForResource:pathName ofType:@"plist"];获取输入 plist 文件的路径。然后我将文件的内容解析为 nsdictionary 和某个对象。因此,如果用户选择了英文本地化,我想获取此文件的英文版本的路径,如果选择了俄文本地化,我想获取俄文版本。我该怎么做?
    • 在您的应用程序中设置位置,或者您使用本地化系统的默认实现。如果使用默认实现,您应该只添加 en 和 ru 语言目录,并将本机语言更改为 en 并且所有应该从框中工作。如果您想使用内部语言子系统(在应用程序中更改语言),您应该使用本地化方法加载 plist(我之前已经展示过)并添加非本地化 plist 文件。
    猜你喜欢
    • 2013-05-16
    • 1970-01-01
    • 2014-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-20
    相关资源
    最近更新 更多