• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

iOS 应用程序 Localization.strings 文件名更改

[复制链接]
菜鸟教程小白 发表于 2022-12-12 10:16:57 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

IOS 应用程序通过 Localizable.strings 文件提供本地化支持。如果出于某些明显的原因我想更改文件名,我必须将该引用放在哪里。

谁能帮忙。



Best Answer-推荐答案


iOS 本地化的工作原理:

如您所知,iOS 提供了一个很好的 API 来获取本地化的字符串,如下所示。

NSString *stringValue = [[NSBundle mainBundle] localizedStringForKey:key
                                                                   value""
                                                                   table:nil];

并且它还提供了一个用于快速访问的宏:

#define NSLocalizedString(key, comment) \
        [[NSBundle mainBundle] localizedStringForKeykey) value"" table:nil]

默认情况下,iOS 在 Localizable.strings 文件中查找字符串。然而,我们也可以为 iOS 提供一个自定义文件来查找字符串。这就是事情变得有趣的地方。

要提供自定义文件,我们可以按以下方式使用上述 API。

NSString *localizedString = [[NSBundle mainBundle] localizedStringForKey:key
                                                                   value""
                                                                   table"AnotherLocalizableStringsFile"];

table 参数采用字符串参数 AnotherLocalizableStringsFile,它是包含字符串的文件。

另一个有趣的参数是 value 参数,它接受一个字符串,如果找不到与给定键匹配的字符串,则应返回该字符串。

假设提供的 key 在文件中,下面的代码将返回无效 key

NSString *stringValue = [[NSBundle mainBundle] localizedStringForKey"Wrong_key_passed"
                                                                   value"Invalid Key"
                                                                   table"TargetLocalizable"];

解决方案:

通过结合使用这两个有趣的参数,我们可以设计出一种方法来满足我们的要求。我们将要求 iOS 在目标特定字符串文件中查找特定于目标的字符串,并在加载所有目标通用的通用字符串时回退到 Localizablestrings 文件。

下面是这段代码的样子。

NSString *stringValue = [[NSBundle mainBundle] localizedStringForKey"Key"
                                                                   value:NSLocalizedString(@"Key", nil)
                                                                   table"TargetLocalizable"];

因此,iOS 首先在给定的 TargetLocalizable.strings 文件中查找字符串。如果在那里找不到它,它将在基础 Localizable.strings 文件中搜索。

所以我所要做的就是将所有目标共有的所有字符串放在 Localizable.strings 文件中,并将特定于目标的附加和覆盖字符串放在 TargetLocalizable 中>.strings 文件。

关于iOS 应用程序 Localization.strings 文件名更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35056397/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap