本地化操作时的 5 个提示

文 / Jessica Dene Earley-Cha


640?wx_fmt=png


正在考虑让您的 Google 助理操作支持多种语言?那您需要将它本地化!本地化可以让使用不同语言的受众都理解您的操作,帮助您接触新的受众。通过本地化,您可以为自己的操作和用户创建并自定义不同语言的体验。查看您在本地化操作时适用的全部语言和语言区域,然后开始操作。


过程中需要一些帮助?不用担心,我们为您准备了一些提示。以下是帮助您通过本地化接触国际受众的五个最佳实践:


在进行本地化前,请确认您的操作具备高级全面功能,包括:


  • 强大的训练语句 — 请务必为每个意图添加超过 15 个训练语句,以确保大量不同类型的用户都能够访问操作的不同功能

  • 广泛的特色和功能 — 确保您已构建多个 MVP,并且拥有已准备好扩展到许多用户的操作

  • 实现错误处理 — 这意味着您的操作能够处理无输入的情况,具有回退功能,并且可以随时提供帮助等。

  • 提供响应变量 — 这可以为您的操作提供更加自然的体验,并且有助于译者提供更优秀的译文,下面是 “Anything else”(别的什么)语句的响应变量示例:

    “Now, what else can I help you with?”(现在,还有什么可以帮您?)

    “Is there anything else I can help you with?”(还有什么可以帮您?)


将代码外的响应模块化(为您的响应附加 JSON 文件)。以这种方式组织您的代码,这可以清除您的代码并支持转换为使用 i18n 库进行本地化。查看示例代码 https://github.com/actions-on-google/dialogflow-number-genie-nodejs,了解其自行组织方式。


使用有意义的响应变量名称,以使变量保持有序。即:

{
 “WELCOME_NEW”: “Welcome to …”,
 “WELCOME_BACK”: “Welcome back! I …”,
 “REPROMPT_1”: “Sorry, I didn’t hear …”,
 “REPROMPT_2”: “Sorry, I still didn’t …”,
 “IS_FINAL_REPROMPT”: “I’m sorry I’m …”,
 “FAREWELLS”: [
   “See you at our next meetup!”,
   “Thanks for hanging out, talk to you soon!”
   …
 ],
}


为每个意图提供文本和语音响应选项,尽管在最初编写时使用的本机语言中并不需要这些。这样,您就可以视需要在 SSML 中改变参数,而无需在每次需要时更改代码。即:

{
 “WELCOME_NEW_TEXT”: “Welcome to …”,
 “WELCOME_NEW_SPEECH”: “<speech> Welcome to …”,
 “WELCOME_BACK_TEXT”: “Welcome back!…”,
 “WELCOME_BACK_SPEECH”: “<speech> Welcome back! …”
}


使用支持 i18n 的优秀客户端库


  • 关于 Actions on Google 的 Node.js 客户端库,请查看 https://developers.google.com/actions/localization/fulfillment

  • 如果您使用 JavaScript 和动态翻译文本的字符串格式,请使用 {{{ }}}(三个花括号)来支持特殊字符

  • 如果使用 Actions on Google 的 Node.js 客户端库,您会用到 i18n-node 和异步:使用 i18n-node 时,您需要为每个请求设置语言区域,常用方法是从用户处获取语言区域,然后在中间件中进行设置(中间件 示例 https://github.com/actions-on-google/dialogflow-number-genie-nodejs/blob/master/functions/index.js/#LC57)。但如果需要使用异步,您会遇到与 i18n 形成竞争条件的情况。i18n 的文档只有一个用于设置语言区域的共享全局实例,因此,为确保不会与多个设置冲突语言区域的对话形成竞争条件,不需要使用异步。换言之,当您在处理法语请求时,可能进入一个西班牙语请求,并且覆盖法语请求的语言区域,因为 i18n 处于全局命名空间中。这种情况的解决方法是将 i18n.setLocale() 和 moment.locale() 封装到中间件的 conv.localize() 中,并在每个意图的开头调用它,当您进行任何异步调用时,请查看以下代码:

// Modules needed for localization
const i18n = require(‘i18n’);
const moment = require(‘moment’);// Configuration of i18n
i18n.configure({
 directory: path.join(__dirname, ‘/locales’),
 objectNotation: true,
 fallbacks: {
   ‘it-IT’: ‘it’,
   ‘es-MX’: ‘es’,
   ‘de-DE’: ‘de’,
   ‘pt-BR’: ‘pt’,
   ‘ja-JP’: ‘ja’,
 },
});app.intent(‘intent name’, async (conv) => {
 conv.localize();
 //do thing
 if (something) {
   variable = await function(parameters);
   conv.localize();
 }
}app.middleware((conv) => {
 conv.localize = () => {
 i18n.setLocale(conv.user.locale);
 moment.locale(conv.user.locale);
 };
});


在操作控制台中测试您的操作


  • 请人来听每种语言的 TTS 以修正语法,然后使用 SSML 使语音听起来更加自然。即:

{
 “FALLBACKPROMPT_2_TEXT”: “Sorry, I still didn’t get that. I can tell you about the GDG or when our next event is, or if you’re finished just say ‘goodbye’.”,
 “FALLBACKPROMPT_2_SPEECH” : “Sorry, I still didn’t get that. I can tell you about the GDG, or when our next event is. Or, if you’re finished just say ‘goodbye’.”,
}


  • 如需详细了解如何修改您的 TTS,请查看《使用对话设计师博客构建操作的 5 个提示》(https://medium.com/google-developers/5-tips-from-building-an-action-with-a-conversation-designer-ac8ec6bfff6a)


想要操作本地化的分步指南?请查看 国际化 — 将您的操作本地化。该指南会指引您完成针对使用 Dialogflow 和 fulfillment 的操作的本地化。当您在面向更大的用户受众执行操作本地化时,希望这些提示能够对您有所助益!



更多 AI 相关阅读:



640?wx_fmt=gif


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值