使用 arb 进行 Flutter l10n:逻辑翻译

问题描述 投票:0回答:2

在我的 flutter 应用程序中,我使用

.arb
文件实现了本地化。就我而言,我想要实现的是这样的:

"arrangement_index": "{value}{value == 1? 'st' : 'nd'}",
"@arrangement_index": {
    "placeholders": {
        "value": {
            "type": "int"
        }
    }
}

所以,对于生成的翻译,如果我使用:

AppLocalizations.of(context)!.arrangement_index(1)
我应该得到:
1st
AppLocalizations.of(context)!.arrangement_index(2)
我应该得到:
2nd

这种方法不起作用,我怎样才能获得这样的功能?

flutter dart localization intl arb
2个回答
3
投票

flutter_localizations 使用 ICU 语法解析 .arb 文件中的文本并生成 Dart 本地化。

这是编写本地化的圣经:https://icu.unicode.org/design/formatting/messageformat/newsyntax

如果您遵循他们的文档并将其应用于您的具体案例,这就是您最终应该得到的结果:

"arrangement_index": "{value,select, 1 {1st} 2 {2nd} 3 {3rd} other{{value}th}}",
"@arrangement_index": {
    "placeholders": {
        "value": {
            "type": "int"
        }
    }
}

0
投票

这对我有用

"order_garbage_content": "{num, plural, zero {мешок} one {мешок} few {мешка} other {мешков}}",

然后使用 flutter pub get

© www.soinside.com 2019 - 2024. All rights reserved.