הלוגיקה של מילוי ההזמנה יכולה להשתמש במחרוזת הלוקאל שהיא מקבלת בכל בקשה כדי להציג תשובות למשתמשים. במדריך הזה מתואר איך להשתמש בספריות התאמה לשוק המקומי של צד שלישי בתוך פונקציה ב-Cloud Functions for Firebase כדי להחזיר תגובות מקומיות.
ספריות לוקליזציה
ריכזנו כאן כמה ספריות שימושיות שתוכלו להיעזר בהן כדי ליצור תשובות מותאמות אישית ללוקאלים ספציפיים:
- מטרה כללית: I18n-node (קטעי הקוד לדוגמה שלנו משתמשים בספרייה זו)
- מטרה כללית: format.js
- לוקליזציה של אזור זמן/זמן: moment.js (קטעי הקוד לדוגמה שלנו משתמשים בספרייה זו)
- כסף/מטבע: numeral.js
יצירת תשובות מותאמות לשוק המקומי
בקטע הזה נסביר איך ליצור קובצי משאבים של מחרוזת שהותאמו לשוק המקומי שמכילים מחרוזות שמותאמות לשוק המקומי, ואיך להשתמש בקובצי המשאבים האלה במילוי הפונקציה ב-Cloud Functions for Firebase.
כדי ליצור תשובות שהותאמו לשוק המקומי:
- באותה ספרייה שבה נמצאים קובצי
package.json
ו-index.js
, יוצרים את הספרייהlocales
לקובצי המחרוזות שמותאמות לשוק המקומי. אנחנו נתייחס לספרייה הזו בתור<project-dir>/functions/locales
. יוצרים קובץ משאב שמכיל מחרוזות שמותאמות לשוק המקומי לכל לוקאל שרוצים לתמוך בו. לדוגמה, אם רוצים לתמוך בלוקאלים של
en-US
,en-GB
ו-de-DE
עם הודעות פתיחה ותאריך שמותאמות לשוק המקומי, הקבצים האלה עשויים להיראות כך:<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" }
בקובץ
package.json
, מצהירים על יחסי התלות של ספריות i18n-node וספריות רגע:{ ... "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" } }
בקובץ
index.js
, מצהירים על יחסי התלות של ספריות רגעי וצומת i18n:const i18n = require('i18n'); const moment = require('moment');
בקובץ
index.js
, מגדירים את צומת ה-i18n בהתאם ללוקאלים הנתמכים:i18n.configure({ locales: ['en-US', 'en-GB', 'de-DE'], directory: __dirname + '/locales', defaultLocale: 'en-US' });
מגדירים את הלוקאל של הספריות באמצעות
conv.user.locale
מנכס ספריית הלקוח.app.middleware((conv) => { i18n.setLocale(conv.user.locale); moment.locale(conv.user.locale); });
כדי להחזיר תשובה שמותאמת לשוק המקומי, צריך לבצע קריאה ל-
ask()
עם מחרוזת מותאמת לשוק המקומי שמוחזרת ב-i18n. קטע הקוד הזה מכיל גם פונקציה שמשתמשת ברגע כדי להחזיר תאריך מותאם לשוק המקומי: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'))); });
לפניכם קובץ index.js מלא לדוגמה:
'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);