如何在应用程序中执行I18 N,而不更改设备的语言设置?
我想有一个屏幕后,启动画面要求用户的语言,他想使用的应用程序。这应该独立于系统语言。
有没有一种简单的方法可以在应用程序上下文中设置语言设置?例如:
[[UIApplication sharedApplication] setLocale/setBundle/setLanguage]
谢谢你的任何建议。
编辑
好吧,我取得了一些进展。是否有方法覆盖NSLocalizedString()?问题是将NSUserial设置为另一种语言代码只有在重新启动应用程序后才能识别。我当然没有选择。
3条答案
按热度按时间bfrts1fy1#
我最终得到了这个解决方案。我首先定义一个静态类来设置我的In-App语言:
您可以轻松地使用:用途:
在你的整个项目中。
但是我发现覆盖NSLocalizedString宏并像我习惯的那样使用i18 n要容易得多。您必须将其包含到您的AppName-Prefix.pch中:
玩得开心点!
at0kjp5o2#
您可以使用
NSLocalizedStringFromTable
的任意字符串文件。例如,你可以把所有的字符串文件组织成这样:
然后,使用用户在应用首选项中选择的语言来获取任何语言的翻译:
本地化NIB文件只需要使用用户选择的语言以编程方式加载NIB来构建NIB名称。
pjngdqdw3#
使用最新的Xcode15,您可以使用String Catalogs添加和管理本地化的键值对,使用NSLocalizedString调用,或使用SwiftGen自动生成代码。如果您需要翻译成多种语言,可以使用I18n Studio