【问题标题】:l10n '.arb' file formatl10n '.arb' 文件格式
【发布时间】:2017-03-29 01:42:18
【问题描述】:

我遇到的一个项目具有遵循结构的本地化

每种语言都有一个目录,在该目录下会有一个与目录同名的文件 + '.arb' 扩展名。

en/en.arb

我找不到解释此文件格式的文档。 .arb 文件中的示例内容

"FOO_123": "Your pending cost is {COST}",
"@FOO_123": {
    "source_text": "Your pending cost is {COST}",
    "placeholders": {
       "COST": {
          "example": "$123.45",
          "description": "cost presented with currency symbol"
       }
    }

我能找到的最接近的是this

  1. 这是理解“.arb”文件的权威文档吗?

  2. 值具有带 href 的锚标记的资源是什么样的?这是正确的方法吗?

"FOO_124": "Refer to this {LINK}",
"@FOO_124": {
    "source_text": "Refer to this {LINK}",
    "placeholders": {
       "LINK": {
          "example": "<a href="https://en.wikipedia.org/">Encyclopedia</a>",
          "description": "Link to the Encyclopedia page"
       }
    }

【问题讨论】:

    标签: localization internationalization


    【解决方案1】:

    ARB是google的本地化格式,用于the webflutter framework

    来自ARB (Application Resource Bundle Specification)

    Application Resource Bundle(简称 ARB)是一种本地化资源 格式简单(基于 JSON),可扩展(词汇可以是 在不影响现有工具和使用的情况下添加),并且可以直接使用 (应用程序可以直接从此格式访问资源 无需转换为另一种形式)。

    在 ARB 中,可本地化的资源被编码为 JSON 对象。每个 资源将具有由资源键标识的资源条目,以及 带有资源属性键的可选资源属性条目。

    这个答案是对我的搜索的总结,希望它能节省别人的时间。

    【讨论】:

    • 一个例子会增加你的答案。
    【解决方案2】:

    ARB 代表应用程序资源包。
    它实际上是一个用于本地化的 JSON 文件,扩展名为 .arb。由于它基于 JSON,它只是定义了如何围绕键值对添加更多信息的标准化方法。

    用于 web 和 Flutter 应用的本地化。

    注意,official ARB specification 是通用的,有时可能与本地化库实现不同。

    关于其中带有锚标记的翻译,它再次取决于本地化库的实现。 下面是 Flutter 中的一个例子。

    ARB 文件示例:

    {
      ...
      "commonLink": "link",
      "@commonLink": {
        "description": "Link desc."
      },
      "commonReferContent": "Refer to this ",
      "@commonReferContent": {
        "description": "Refer content desc."
      }
      ...
    }
    

    使用示例:

    ...
    RichText(
      text: TextSpan(children: [
        TextSpan(
          style: TextStyle(color: Colors.black),
          text: S.of(context).commonReferContent,
        ),
        TextSpan(
          style: TextStyle(
            color: Theme.of(context).primaryColor,
            decoration: TextDecoration.underline),
          text: S.of(context).commonLink,
          recognizer: TapGestureRecognizer()
            ..onTap = handleReferLinkTap),
      ]),
    ),
    ...
    

    有关 Flutter 中 ARB 的更多详细信息,请查看this article

    【讨论】:

      猜你喜欢
      • 2021-10-29
      • 1970-01-01
      • 2012-01-17
      • 2019-08-08
      • 2019-06-02
      • 1970-01-01
      • 1970-01-01
      • 2023-01-03
      • 2016-11-26
      相关资源
      最近更新 更多