La logica di fulfillment può utilizzare la stringa delle impostazioni internazionali che riceve in ogni richiesta per indirizzare le risposte agli utenti. Questa guida mostra come utilizzare alcuni librerie di localizzazione all'interno di una funzione Cloud Functions per Firebase risposte localizzate.
Librerie di localizzazione
Ecco alcune librerie utili da prendere in considerazione per aiutarti Generare risposte personalizzate per paesi specifici:
- Uso generico: I18n-node (nostro esempi di snippet di codice che utilizzano questa libreria)
- Uso generico: format.js
- Localizzazione di fuso orario/ora: moment.js (nostro esempi di snippet di codice che utilizzano questa libreria)
- Denaro/valuta: numeral.js
Crea risposte localizzate
Questa sezione mostra come creare file di risorse di tipo stringa localizzata contengono stringhe localizzate e come utilizzare questi file di risorse nel tuo Cloud Funzione per il completamento di Firebase.
Per creare risposte localizzate:
- Nella stessa directory dei file
package.json
eindex.js
, crea una directorylocales
per i file di stringa localizzati. Ci riferiremo a questo come<project-dir>/functions/locales
. Crea un file di risorse che contenga stringhe localizzate per ogni lingua che vuoi supportare. Ad esempio, se vuoi supportare
en-US
,en-GB
, ede-DE
con messaggi di benvenuto e di data localizzati, i file potrebbe avere il seguente aspetto:<project-dir>/functions/locales/en-US.json
{ "WELCOME_BASIC": "Hello, welcome!", "DATE": "The date is %s" }
<project-dir>/functions/locales/en-GB.json
{ "WELCOME_BASIC": "Hello, welcome!", "DATE": "The date is %s" }
<project-dir>/functions/locales/de-DE.json
{ "WELCOME_BASIC": "Hallo und willkommen!", "DATE": "Das Datum ist %s" }
Nel file
package.json
, dichiara le librerie i18n-node e moment come delle dipendenze:{ ... "dependencies": { "actions-on-google": "^2.7.0", "firebase-admin": "^7.2.1", "firebase-functions": "^2.2.1", "i18n": "^0.8.3", "moment": "^2.22.1" } }
Nel file
index.js
, dichiara le dipendenze per i18n-node e moment librerie:const i18n = require('i18n'); const moment = require('moment');
Nel file
index.js
, configura il nodo i18n con le impostazioni internazionali supportate:i18n.configure({ locales: ['en-US', 'en-GB', 'de-DE'], directory: __dirname + '/locales', defaultLocale: 'en-US' });
Imposta le impostazioni internazionali per le librerie utilizzando
conv.user.locale
dalla libreria client proprietà.app.middleware((conv) => { i18n.setLocale(conv.user.locale); moment.locale(conv.user.locale); });
Per restituire una risposta localizzata, chiama
ask()
con una stringa localizzata restituito da i18n. Questo snippet contiene anche una funzione che utilizza per restituire una data localizzata:app.intent('Default Welcome Intent', (conv) => { // must not be async for i18n conv.ask(i18n.__('WELCOME_BASIC')); }); app.intent('date', (conv) => { // must not be async for i18n conv.ask(i18n.__('DATE', moment().format('LL'))); });
Ecco un file index.js completo come esempio:
'use strict'; const {dialogflow} = require('actions-on-google'); const functions = require('firebase-functions'); const i18n = require('i18n'); const moment = require('moment'); i18n.configure({ locales: ['en-US', 'en-GB', 'de-DE'], directory: __dirname + '/locales', defaultLocale: 'en-US' }); const app = dialogflow({debug: true}); app.middleware((conv) => { i18n.setLocale(conv.user.locale); moment.locale(conv.user.locale); }); app.intent('Default Welcome Intent', (conv) => { // must not be async for i18n conv.ask(i18n.__('WELCOME_BASIC')); }); app.intent('date', (conv) => { // must not be async for i18n conv.ask(i18n.__('DATE', moment().format('LL'))); }); exports.demoAction = functions.https.onRequest(app);