繁体   English   中英

本地化 Google 插件

[英]Localizing Google Add-ons

我们有一个已发布的 Google 文档插件。 我们需要 5 种不同的语言。 我们正在阅读Internationalizing Your App文档。 它主要描述了如果您要发布 Chrome 扩展程序 (uploading.zip),该怎么做。 然而,Docs 插件是用 Google Apps 脚本编写的。

根据文档我们需要添加:

清单.json

消息.json

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

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

在此处输入图像描述

该文档根本不适用于Google Apps脚本 ,但适用于Chrome应用 所以它不直接适用。

简要介绍一下Google Apps脚本文档,未提及i18n。 它似乎没有任何支持库。

请注意,根据之前关于该主题的问题,您可以使用Session.getActiveUserLocale())获取用户的语言环境,并实现您自己的i18n。

但是,这可能不会在Web Store本身启用项目i18n。 有一个错误报告描述了这种情况

错误报告提到您可以通过使用此过程直接编辑生成的 Chrome应用程序中的区域设置字段/文件夹。 尽管如此,还是没有经过测试。

以下是我们在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. 创建一个 function,它将一个键作为输入,并根据用户的区域设置以正确的语言返回字符串这是使用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. 将所有裸字符串替换为上面创建的 function 并将该字符串作为键。
CardService.newTextParagraph().setText(translate("RECORD_MESSAGE_TEXT"));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM