当密钥未翻译时使用默认语言后备

2023-12-08

我可以使用默认语言(例如英语)作为其他语言的 Localized.strings 文件中的未翻译键吗?


为此,您可以使用英文单词作为 Localized.strings 文件中的键。

另一种方法是检查 NSLocalizedString 的结果并返回默认的英文版本(使用“强制”捆绑),以防结果与密钥相同。

它可能看起来像这样

extension NSString {
    class func NSLocalizedStringWithDefault (key:String, comment:String)->String {
        let message = NSLocalizedString(key, comment: comment)
        if message != key {
            return message
        }
        let language = "en"
        let path = NSBundle.mainBundle().pathForResource(language, ofType: "lproj")
        let bundle = NSBundle(path: path!)
        if let forcedString = bundle?.localizedStringForKey(key, value: nil, table: nil){
            return forcedString
        }else {
            return key
        }
    }
}

Localized.string(eng)

"test-key-1" = "Test 1";
"test-key-2" = "Test 2";

Localized.string (esp)

"test-key-1" = "El Test 1";

那么你可以像这样使用它(假设区域设置设置为“es”):

println(NSString.NSLocalizedStringWithDefault("test-key-1", comment: "")) // El Test 1
println(NSString.NSLocalizedStringWithDefault("test-key-2", comment: "")) // Test 2 (from eng file)

这不是最干净的实施方式,但你明白了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当密钥未翻译时使用默认语言后备 的相关文章

随机推荐

  • 在 matplotlib 中绘制带中点箭头的圆形 fancyarrowpatch

    我一直在尝试突破 matplotlib 补丁的界限并指示它绘制圆形FancyArrowPatch中点有一个方向箭头 这在我尝试创建的网络表示中非常有用 我使用 python 的编码时间还没有达到两位数 所以我不能说我对 matplotlib
  • 有谁知道如何修复此错误以将 Findbugs 安装到 Netbeans 8.2 中?

    将 Findbugs 安装到 Netbeans 8 2 时出现以下错误 There were some problems while storing Establishing a connection Cause Cannot resolv
  • 列出 Pub/Sub 订阅使用者

    服务可以对发布 订阅订阅进行长轮询 这显然需要在 pub sub 服务和客户端之间不断打开 TCP 连接 有什么方法可以查明某个订阅是否打开了该 TCP 连接吗 没有办法列出 Pub Sub 订阅的所有消费者 不 这会很困难 因为存在三种不
  • SQL Server 2005 某些数据库对象的搜索视图

    SQL Server 中有没有一种方法可以列出数据库中从特定对象连接的所有视图 即 查找从表 myTable 加入的所有视图 您可以使用sys sql dependencies select object name object id fr
  • 我可以通过基类类型的引用访问子类方法吗?

    下面是我正在尝试处理但无法解决问题的代码片段 我真的可以用 Java 执行以下操作吗 如果是 请帮助了解我 如何 如果不是 为什么 看看下面的代码 class Base public void func System out println
  • 使用正则表达式替换 CSV 中引号之间的逗号

    例如 我们有一个像这样的字符串 COURSE 247 28 4 2016 12 53 Europe Brussels 1 Verschil tussen merk product en leveranciersverantwoordelij
  • 没有焦点的按键事件

    我正在编写一个简单的 GUI 它将在特定点打开一个 opencv 窗口 这个窗口有一些非常基本的 keyEvents 来控制它 我想通过一些功能来推进这一点 由于我的 QtGui 是我的控制器 因此我认为使用 KeyPressedEvent
  • 闪亮的应用程序:保持面板在多个视图中保持一致

    在 Shiny 中 我想保持一些面板 下面的面板 1 在多个视图 下面的绘图视图 1 和 2 中保持一致 下面我可以在 Plotview2 中显示 panel1 但是 该面板在此视图中不起作用 目标是能够通过多个 绘图视图 拥有一些一致的
  • 我对值初始化的尝试被解释为函数声明,为什么 A a(()); 不被解释为函数声明?解决这个问题?

    Stack Overflow 教给我的许多东西中 有一个就是所谓的 最令人烦恼的解析 它通常用这样的行来演示 A a B declares a function 虽然对于大多数人来说 直观上这似乎是一个对象的声明a类型的A 暂时采取B对象作
  • 无法删除 docker 镜像

    在设置新的构建机器 CentOS 7 Docker CE 17 12 0 ce 时 我做了一个简单的测试 docker run it rm ubuntu bash 效果很好 但现在我无法删除 Ubuntu 映像 build docker i
  • 在 Spark 中迭代每一列并找到最大长度

    我是 Spark scala 的新手 我有以下情况 我在集群上有一个表 TEST TABLE 可以是配置单元表 我正在将其转换为数据框 作为 scala gt val testDF spark sql select from TEST TA
  • 使用向量代替循环

    我有一个巨大的矩阵 我刚刚给出了一个具有大小的矩阵的示例 1 1000000 我正在使用简单Loop 我不喜欢使用Loop 来找到k where k k ii abs a ii 1 2 a ii a ii 1 a ii 1 2 a ii a
  • GridLayout 和行/列跨度问题

    The Android 开发者博客文章介绍GridLayout显示了跨度如何影响自动索引分配的图表 我正在尝试使用GridLayout 这是我到目前为止所拥有的
  • MySQL、utf8_general_ci 和西里尔字符

    MySQL 版本 4 1 及其排序规则 utf8 general ci 似乎不喜欢特定的西里尔字符 和 适用于 MySQL 5 0 及以上版本 由于该字段用于存储俄语以外的语言 英语 爱沙尼亚语 德语 的信息 因此更改排序规则的类型是不可想
  • 在 AWS IOT 中调用 getShadow/updateShadow 时出现 ForbiddenError 403

    我有带有联合 ID 的经过身份验证的用户 但是当我尝试访问 AWS IOT 内容时 我收到了这个错误 这让我发疯 我正在关注iot sample code 所有相关凭证也都是正确的 MQTTHelper credentialsProvide
  • 重定向子进程的输出

    有多种方法可以重定向子进程的输出 using freopen 3 using dup 3 using popen 3 如果需要的话 应该选择什么是执行子进程并将其输出保存在给定文件中 非常类似于ls gt files txt works s
  • 在多页中获取 Activecontrol

    我正在尝试获取该名称Listbox我刚刚选择的 ListBox1 Caveat ListBox1位于Multipage1 在第一个选项卡上 Private Sub ListBox1 Click Dim m As String m Me Ac
  • 在 Ubuntu 14.04 上的 Python 2.6 上安装 M2Crypto 0.20.1

    我需要在 Ubuntu 14 04 上从 Python 2 6 的源代码编译并安装 M2Crypto 0 20 1 我现在无法迁移到 Python2 7 但我们正在计划这样做 我安装了Python2 6https launchpad net
  • 使用 Sass 定制引导程序;我到底应该在我的 scss 文件中导入 bootstrap 吗?

    在尝试使用 Sass 自定义引导程序时 我注意到覆盖默认引导程序变量似乎以一种不连贯的方式工作 并且希望有人可以解释到底发生了什么导致这种行为 某些变量似乎只有在导入 bootstrap 之前声明时才会被覆盖 其他变量似乎只有在导入 boo
  • 当密钥未翻译时使用默认语言后备

    我可以使用默认语言 例如英语 作为其他语言的 Localized strings 文件中的未翻译键吗 为此 您可以使用英文单词作为 Localized strings 文件中的键 另一种方法是检查 NSLocalizedString 的结果