【问题标题】:Error : "Missing pluralization rule for" for Lingo in Vapor错误:Vapor 中 Lingo 的“缺少复数规则”
【发布时间】:2021-03-20 08:36:43
【问题描述】:

我正在为我的 Vapor 解决方案使用 Lingo 包,请参阅: 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 进行一些额外的配置吗? (在文档中一无所获)

【问题讨论】:

    标签: swift localization vapor lingo


    【解决方案1】:

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

    这已在版本3.1.0 中得到修复。

    【讨论】:

    • 谢谢,我向存储库添加了功能请求以添加一些语言
    【解决方案2】:

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

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

    【讨论】:

    • 这更像是一种解决方法,“en_US”和“en”都应该可以工作,但之前有一个错误阻止“en_US”正常工作。这已在 3.1.0 版中修复。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-11
    • 1970-01-01
    • 2020-10-27
    • 1970-01-01
    • 1970-01-01
    • 2013-11-12
    相关资源
    最近更新 更多