错误:Vapor 中 Lingo 的“缺少复数规则”

问题描述

我正在将 Lingo 包用于我的 Vapor 解决方案,请参阅: https://github.com/vapor-community/Lingo-Vapor 并且这对于 3 种语言来说非常完美

现在我需要为正在创建的弹出窗口使用复数形式:

for i in stride(from: 1,to: 12,by: 1) {
            if let description = lingo?.localize("lbl_hour_s",locale: language,interpolations: ["count" : i]) {
                option = FormFieldStringOption(key:String(i),label: description)
            } else {
                option = FormFieldStringOption(key:String(i),label: String(i))
            }
            duration.options.append(option)
        }

我的 Json 文件是这样配置的:

for en_US
"lbl_hour_s" : {"one" : "1 hour","other" : "%{count} hours"},for nl_BE
"lbl_hour_s" : {"one" : "%{count} uur","many" : "%{count} uren","other" : "%{count} uren"},

(我尝试在 nl 中使用额外的“许多”,但在两种情况下仍然出现相同的错误

缺少语言环境的复数规则:en_US。将认为 other 规则。

这有什么问题吗?它看起来与文档中的示例相同:

"unread.messages": {
        "one": "You have one unread message.","other": "You have %{count} unread messages."

或者我需要对 Lingo 进行一些额外的配置吗? (在文档中没有找到它)

解决方法

问题在于,Lingo 不会自动回退到裸语言代码复数规则(例如,从 en_US -> en 当 en_US 不存在时)。

此问题已在版本 3.1.0 中修复。

,

我发现了我的问题。我使用“en_US”是因为我想在未来提供更多翻译。显然,对于美国英语,我应该使用“en”。

比利时的荷兰语(荷兰)口语“nl_BE”也有同样的问题。我想要这个,因为我还添加了“nl_NL”,这是荷兰的荷兰口语。两者 95% 相同,但有些词或句子不同。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...