Sipariş karşılama mantığınız, kullanıcılara verilen yanıtları sunmak için her istekte aldığı yerel ayar dizesini kullanabilir. Bu kılavuzda, yerelleştirilmiş yanıtlar döndürmek için Cloud Functions for Firebase'deki bazı üçüncü taraf yerelleştirme kitaplıklarının nasıl kullanılacağı gösterilmektedir.
Yerelleştirme kitaplıkları
Belirli yerel ayarlar için özelleştirilmiş yanıtlar oluşturmanıza yardımcı olacak bazı faydalı kitaplıkları burada bulabilirsiniz:
- Genel amaçlı: I18n-node (örnek kod snippet'lerimiz bu kitaplığı kullanır)
- Genel amaçlı: format.js
- Saat dilimi/saat yerelleştirmesi: moment.js (örnek kod snippet'lerimiz bu kitaplığı kullanır)
- Para/para birimi: numeral.js
Yerelleştirilmiş yanıtlar oluşturma
Bu bölümde, yerelleştirilmiş dizeler içeren yerelleştirilmiş dize kaynağı dosyalarının nasıl oluşturulacağı ve bu kaynak dosyalarının Firebase için Cloud Functions istek karşılamasında nasıl kullanılacağı gösterilmektedir.
Yerelleştirilmiş yanıtlar oluşturmak için:
package.json
veindex.js
dosyalarınızla aynı dizinde, yerelleştirilmiş dize dosyalarınız için birlocales
dizini oluşturun. Bu dizinden<project-dir>/functions/locales
olarak bahsedeceğiz.Desteklemek istediğiniz her yerel ayar için yerelleştirilmiş dizeler içeren bir kaynak dosyası oluşturun. Örneğin,
en-US
,en-GB
vede-DE
yerel ayarlarını yerelleştirilmiş karşılama ve tarih mesajlarıyla desteklemek isterseniz bu dosyalar aşağıdaki gibi görünebilir:<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
dosyasında, i18n-node ve moment kitaplıklarını bağımlılık olarak tanımlayın:{ ... "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
dosyasında, i18n-node ve moment kitaplıklarının bağımlılıklarını tanımlayın:const i18n = require('i18n'); const moment = require('moment');
index.js
dosyasında, i18n-node'u desteklenen yerel ayarlarınızla yapılandırın:i18n.configure({ locales: ['en-US', 'en-GB', 'de-DE'], directory: __dirname + '/locales', defaultLocale: 'en-US' });
İstemci kitaplığı mülkünden
conv.user.locale
öğesini kullanarak kitaplıkların yerel ayarlarını belirleyin.app.middleware((conv) => { i18n.setLocale(conv.user.locale); moment.locale(conv.user.locale); });
Yerelleştirilmiş yanıt döndürmek için
ask()
yöntemini, i18n tarafından döndürülen yerelleştirilmiş bir dizeyle çağırın. Bu snippet'te, yerelleştirilmiş tarih döndürmek için moment kullanan bir işlev de bulunur: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'))); });
Örnek olarak eksiksiz bir index.js dosyasını burada bulabilirsiniz:
'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);