Logika pemenuhan Anda dapat menggunakan string lokalitas yang diterima dalam setiap permintaan untuk yang melayani respons pengguna. Panduan ini menunjukkan cara menggunakan beberapa informasi library pelokalan dalam Cloud Function for Firebase untuk ditampilkan respons yang dilokalkan.
Library pelokalan
Berikut ini beberapa library bermanfaat yang dapat dipertimbangkan untuk membantu Anda membuat respons yang disesuaikan untuk lokalitas tertentu:
- Tujuan umum: I18n-node ( contoh cuplikan kode menggunakan library ini)
- Tujuan umum: format.js
- Pelokalan zona waktu/waktu: moment.js ( contoh cuplikan kode menggunakan library ini)
- Uang/mata uang: numeral.js
Buat respons yang dilokalkan
Bagian ini menampilkan cara membuat file resource string terlokalkan yang berisi string yang dilokalkan dan cara menggunakan file resource ini di Cloud Anda Fungsi untuk fulfillment Firebase.
Untuk membuat respons yang dilokalkan:
- Di direktori yang sama dengan file
package.json
danindex.js
Anda, buat direktorilocales
untuk file string yang dilokalkan. Kita akan merujuk pada direktori sebagai<project-dir>/functions/locales
. Membuat file sumber daya yang berisi string yang dilokalkan untuk setiap lokal yang yang ingin Anda dukung. Misalnya, jika Anda ingin mendukung
en-US
,en-GB
, dande-DE
lokalitas dengan pesan selamat datang dan tanggal yang dilokalkan, file tersebut akan terlihat seperti ini:<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" }
Dalam file
package.json
, deklarasikan library node i18n dan momen sebagai dependensi:{ ... "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" } }
Dalam file
index.js
, deklarasikan dependensi untuk node dan momen i18n {i>library<i}:const i18n = require('i18n'); const moment = require('moment');
Dalam file
index.js
, konfigurasikan node i18n dengan lokalitas yang didukung:i18n.configure({ locales: ['en-US', 'en-GB', 'de-DE'], directory: __dirname + '/locales', defaultLocale: 'en-US' });
Menetapkan lokalitas untuk library menggunakan
conv.user.locale
dari library klien saat ini.app.middleware((conv) => { i18n.setLocale(conv.user.locale); moment.locale(conv.user.locale); });
Untuk menampilkan respons yang dilokalkan, panggil
ask()
dengan string yang dilokalkan yang ditampilkan oleh i18n. Cuplikan ini juga berisi fungsi yang menggunakan momen untuk mengembalikan tanggal yang dilokalkan: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'))); });
Berikut adalah file index.js lengkap sebagai contoh:
'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);