Die Auftragsausführungslogik kann den Sprachstring verwenden, den sie in jeder Anfrage erhält, um die auf die Nutzenden reagieren. In diesem Leitfaden erfahren Sie, wie Sie in einer Cloud Functions-Funktion für Firebase, lokalisierten Antworten.
Lokalisierungsbibliotheken
Hier sind einige hilfreiche Bibliotheken, die dir dabei helfen, benutzerdefinierte Antworten für bestimmte Sprachen generieren:
- Für allgemeine Zwecke: I18n-node (unser Diese Bibliothek wird in Beispielcode-Snippets verwendet.
- Für allgemeine Zwecke: format.js
- Zeitzone/Uhrzeitlokalisierung: moment.js (unser Diese Bibliothek wird in Beispielcode-Snippets verwendet.
- Geld/Währung: numeral.js
Lokalisierte Antworten erstellen
In diesem Abschnitt erfahren Sie, wie Sie lokalisierte Zeichenfolgenressourcen-Dateien erstellen, die lokalisierten Strings enthalten und wie Sie diese Ressourcendateien in Ihrer Cloud Funktion für die Firebase-Auftragsausführung.
So erstellst du lokalisierte Antworten:
- Erstellen Sie im selben Verzeichnis, in dem sich auch die Dateien
package.json
undindex.js
befinden, einlocales
-Verzeichnis für deine lokalisierten Stringdateien. Wir verweisen darauf als<project-dir>/functions/locales
. Erstellen Sie eine Ressourcendatei, die lokalisierte Strings für jedes Gebietsschema enthält, das die Sie unterstützen möchten. Wenn Sie beispielsweise
en-US
,en-GB
, undde-DE
Sprachen mit lokalisierten Willkommens- und Datumsnachrichten, werden diese Dateien könnte wie folgt aussehen:<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" }
Deklarieren Sie in der Datei
package.json
die i18n-Knoten- und Momentbibliotheken als Abhängigkeiten:{ ... "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" } }
Deklarieren Sie in der Datei
index.js
die Abhängigkeiten für den i18n-Knoten und Moment Bibliotheken:const i18n = require('i18n'); const moment = require('moment');
Konfigurieren Sie in der Datei
index.js
den i18n-Knoten mit Ihren unterstützten Sprachen:i18n.configure({ locales: ['en-US', 'en-GB', 'de-DE'], directory: __dirname + '/locales', defaultLocale: 'en-US' });
Legen Sie die Sprache für die Bibliotheken mit
conv.user.locale
aus der Clientbibliothek fest. Property.app.middleware((conv) => { i18n.setLocale(conv.user.locale); moment.locale(conv.user.locale); });
Rufe
ask()
mit einem lokalisierten String auf, um eine lokalisierte Antwort zurückzugeben. von i18n zurückgegeben. Dieses Snippet enthält auch eine Funktion, die , um ein lokalisiertes Datum zurückzugeben: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'))); });
Hier sehen Sie eine vollständige index.js-Datei als Beispiel:
'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);