- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
根据官方文档Internationalization Programming Topics :
if your Mac app had localizations for United States, Great Britain, and Australian users, the bundle routines would search the appropriate region directory (en_US.lproj, en_GB.lproj, or en_AU.lproj) first, followed by the en.lproj directory. The same application on the iPhone would look only in the en.lproj directory.
但我试图将我的 Localizable.strings 放在 en_US.lproj 目录中,不是 en.lproj,我仍然可以使用 NSLocalizedString()
找到英文字符串功能。
有什么问题?
最佳答案
我不确定,但这是我有根据的猜测。
首先要认识到 OS X 和 iOS 共享大量代码。实际上,您可以找到很多官方 OS X 的功能,它们实际上也适用于 iOS。
这是我在手机上观察到的:
如果我有
- en_US.lproj
- Localizable.strings
然后,它会从该文件中读取值,这与您找到的文档所说的内容相矛盾(正如您所指出的)。
但是,如果我有:
- en_US.lproj
- Localizable.strings
- en.lproj
- Localizable.strings
然后,它将从 en.lproj 中获取值,有点尊重文档的精神。
现在,当我以图形方式使用 Xcode 时,它只会让我为 en-US
选择本地化,这与 en_US不相同
(美国地区)。所以,我猜你(和我一样)离开了 Xcode,手动添加了 en_US.lproj
目录,然后将其添加到你的 Xcode 项目中。
也许 Apple 的想法是,尽管 iOS 仍然可以识别 en_US.lproj
,但由于他们已将 Xcode 配置为不允许您直接创建该本地化,因此应用程序不会在那里结束?所以,您已经(某种程度上)破解了该功能。
还有一点要注意:如果您像我一样,手动创建了 .lproj 文件夹,那么当您在 Xcode 之外更改它们时,您必须小心,当您认为它们消失时,它们真的消失了。此外,您可能必须卸载您的应用程序才能删除您以这种方式添加(和删除)的旧 .lproj 目录。所以,这是观察奇怪行为的另一种方式。
长话短说,有了文档,我不会向 App Store 提交具有此类本地化的应用程序。它可能会被拒绝,或者将来会中断(找不到字符串值),因为它在 iOS 上不受官方支持。也就是说,如果此功能继续无限期工作,我也不会感到惊讶。
关于ios - iOS 是否寻找特定于区域的 .lproj 目录(例如 en_US.lproj)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15848566/
今天我发现了一个关于使用 linux sort 命令对文件进行排序的问题。当我设置 env LANG=En_US 时,结果如我所料。但是当LANG=en_US时,结果就奇怪了。我运行的一些命令和输出如
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想改善这个问题吗?更新问题,以便将其作为on-topic
当尝试在我的 PHP 8.1 alpine docker 容器中格式化货币时,我总是获得默认语言环境 (en_US)。 $ docker run -it --rm php:8.1-fpm-alpine
我想获取当前选择的 iPhone 语言。如果使用“NSLocale”,它总是返回相同的语言。看来这不是您在 iPhone 设置中选择的。 NSLocale * locale = [NSLocale c
我想使用 hunspell 对我的 repo 进行拼写检查。但是,当我尝试运行它时,出现以下错误: Can't open affix or dictionary files for dictionar
我想根据不同的语言环境显示日期格式。理想情况下,我可以在查询远程服务器后做出决定。 (在同一查询中检索要放入日期字段的值)。 我正在尝试使用 this answer但出现错误:Invalid lang
我想知道是否每部 Android 手机都预装了 en_US 语言环境?我必须预先设置 Locale 以防止出现逗号分隔符问题。 目前,我正在使用下面的方法强制更改,但我担心在某些设备上可能会出现异常。
这是我在 spring-servlet.xml 中添加的内容 并且我的application.properties文件位于src/main/resources文件夹内,但
在 Android API 19+ 中,使用方法时: TextToSpeech.setLanguage(Locale locale) ...我们是否可以假设将语音区域设置设置为“en_US”在世界任何
在使用 MySQL 一段时间后,我第一次尝试使用 PostgreSQL 数据库。我的环境是与 cPanel 和 phpPgAdmin 共享主机。令我困惑的一件事是数据库整理。我的主机的 cPanel
我浏览了有关此问题的所有链接,但无法获得任何线索。我收到的异常报告来自 Google Developer Console。我在 Nexus 4 设备中尝试了代码,它工作正常。 下面是我的堆栈跟踪和代码
我正在尝试运行命令 d = enchant.Dict('en_US') 但收到错误消息 "enchant.errors.DictNotFoundError: Dictionary for langua
有没有办法在运行单元测试时强制使用特定语言环境? 例如。始终使用 en_US 或强制无语言环境,以便不加载任何 .lproj 文件。 我的单元测试对设置应用程序(在 iOS 模拟器中)中当前选择的语言
我执行以下代码: setlocale(LC_MONETARY, 'en_US') echo money_format('%(!n', 1000) 我希望得到 1,000.00,但我得到了 1000.
applicationContext-Service.xml messages 我在/src/messages_en_US.properties 下有 mess
我不确定这里是否适合寻求有关此错误的帮助。不知何故,我的 Debian Linux 系统似乎没有语言环境。基本上,当我尝试运行的 python 程序执行行 locale.setlocale(local
我已经阅读了 Failed to change locale for db '/data/data/my.easymedi.controller/databases/EasyMediInfo.db'
我正在编写一个支持多种语言的 PHP 应用程序。 在 PHP 中设置语言环境时,我需要提供一个我认为是 RFC 1766 中定义的值/ISO 639 , 根据 setlocale documentat
下面的代码 #!/usr/bin/perl use strict; use warnings; my $s1 = 'aaa2000@yahoo.com'; my $s2 = 'aaa_2000@yah
我备份了我在 android-studio-2.2.2 中开发的项目目录,并尝试通过选择 Open an existing Android Studio Project 来导入它安装 android-
我是一名优秀的程序员,十分优秀!