【问题标题】:Localizing Google Add-ons本地化 Google 插件
【发布时间】:2016-09-25 11:58:32
【问题描述】:

我们有一个已发布的 Google 文档插件。我们需要 5 种不同的语言。我们正在阅读Internationalizing Your App 文档。它主要描述了如果您要发布 Chrome 扩展程序(上传 .zip)如何完成。但是,Docs Add-on 是用 Google Apps 脚本编写的。

根据文档,我们需要添加:

ma​​nifest.json

messages.json

“并在应用的 ZIP 文件中提供 _locales 目录”

这就是我们遇到麻烦的地方。我们如何在 Google Apps 脚本中添加文件夹以及如何添加 .json 文件?唯一的选项是脚本文件和 html 文件。

【问题讨论】:

    标签: json google-apps-script google-chrome-devtools google-chrome-app


    【解决方案1】:

    该文档根本不是针对Google Apps Script,而是针对Chrome Apps。所以它并不直接适用。

    简单浏览 Google Apps Script 文档,没有提到 i18n。它似乎没有任何支持库。

    请注意,根据earlier question on the topic,您可以使用Session.getActiveUserLocale()) 获取用户的语言环境并实现您自己的i18n。

    但是,这可能不会在 Web Store 本身中启用 item i18n。有一个bug report describing this situation

    错误报告提到,您可能会通过直接使用this procedure 进行编辑,在生成的 Chrome 应用程序中添加区域设置字段/文件夹。不过,这还没有经过测试。

    【讨论】:

    • 谢谢!这很复杂,但它似乎可以下载 CRX 文件,并将值添加为 Chrome 应用程序参考。谢谢!
    • @enedebe 您能否提供一个将语言添加到 Google 插件的过程示例?谢谢
    【解决方案2】:

    这是我们在Vocal 的做法。它相当简单且易于实现(我们的示例支持英语和西班牙语)。

    1.为您的应用中的不同字符串创建一个包含键的字典:

    const LANGUAGE_MAP = {
      "RECORD_MESSAGE": {
        "en": "Record message",
        "es": "Grabar mensaje"
      },
      "RECORD_MESSAGE_TEXT": {
        "en": "1. Click here to record your voice",
        "es": "1. Haga clic aquí para grabar su voz"
      }
    }
    

    2。创建一个函数,该函数将键作为输入并根据用户的语言环境以适当的语言返回字符串 这是使用Session.getActiveUserLocale()

    完成的
    function translate(key) {
      locale = Session.getActiveUserLocale();
      if (['en', 'es'].includes(locale)) {
      return LANGUAGE_MAP[key][locale]
      }
      else {
        return LANGUAGE_MAP[key]['en']
      }
    }
    
    1. 将所有裸字符串替换为上面创建的函数并将字符串作为键。
    CardService.newTextParagraph().setText(translate("RECORD_MESSAGE_TEXT"));
    

    【讨论】:

      猜你喜欢
      • 2018-11-10
      • 2011-07-21
      • 2019-01-24
      • 2011-09-11
      • 1970-01-01
      • 2015-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多