l10n'.arb'文件格式

时间:2017-03-29 01:42:18

标签: localization internationalization

我遇到的一个项目具有跟随结构的本地化

每种语言都有一个目录,在该目录下将有一个与目录+'.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的锚标记的资源是什么样的?这是正确的方法吗?

  3. "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"
           }
        }
    

2 个答案:

答案 0 :(得分:1)

ARB是Google的本地化格式,它在the webflutter framework

中使用

来自ARB (Application Resource Bundle Specification)

  

应用程序资源包(简称ARB)是本地化资源   简单的格式(基于JSON),可扩展的格式(词汇可以是   在不影响现有工具和使用的情况下添加),并且直接可用   (应用程序可以直接通过这种格式访问资源   而不转换为其他形式。

     

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

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

答案 1 :(得分:1)

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