Tu lógica de entrega puede usar la cadena de configuración regional que recibe en cada solicitud para brindan respuestas a los usuarios. En esta guía, se muestra cómo usar herramientas las bibliotecas de localización en una Cloud Function para Firebase para crear respuestas localizadas.
Bibliotecas de localización
Estas son algunas bibliotecas útiles que debes tener en cuenta para ayudarte Genera respuestas personalizadas para configuraciones regionales específicas:
- De uso general: I18n-node (nuestro ejemplos de fragmentos de código usan esta biblioteca)
- Uso general: format.js
- Zona horaria/localización de la hora: moment.js (nuestro ejemplos de fragmentos de código usan esta biblioteca)
- Dinero y moneda: numeral.js
Crea respuestas localizadas
En esta sección, se muestra cómo crear archivos de recursos de cadenas localizados contienen cadenas localizadas y cómo usar estos archivos de recursos en tu Es la función para la entrega de Firebase.
Para crear respuestas localizadas, sigue estos pasos:
- En el mismo directorio que tus archivos
package.json
yindex.js
, crea un directoriolocales
para tus archivos de cadenas localizadas. Nos referiremos a esto como<project-dir>/functions/locales
. Crea un archivo de recursos que contenga cadenas localizadas para cada configuración regional que que deseas admitir. Por ejemplo, si quieres admitir
en-US
,en-GB
, yde-DE
configuraciones regionales con mensajes de fecha y bienvenida localizados, esos archivos podría verse así:<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" }
En el archivo
package.json
, declara las bibliotecas i18n-node y moment como dependencies:{ ... "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" } }
En el archivo
index.js
, declara las dependencias para el nodo i18n y el momento bibliotecas:const i18n = require('i18n'); const moment = require('moment');
En el archivo
index.js
, configura el nodo i18n con tus configuraciones regionales compatibles:i18n.configure({ locales: ['en-US', 'en-GB', 'de-DE'], directory: __dirname + '/locales', defaultLocale: 'en-US' });
Establece la configuración regional de las bibliotecas con
conv.user.locale
de la biblioteca cliente propiedad.app.middleware((conv) => { i18n.setLocale(conv.user.locale); moment.locale(conv.user.locale); });
Para mostrar una respuesta localizada, llama a
ask()
con una cadena localizada que devuelve i18n. Este fragmento también contiene una función que usa para mostrar una fecha localizada: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'))); });
A continuación, se muestra un archivo index.js completo a modo de ejemplo:
'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);