İstek karşılama mantığınız, aşağıdakileri yapmak için her istekte aldığı yerel ayar dizesini kullanabilir. kullanıcılara hitap etmesine yardımcı olur. Bu kılavuzda, bazı üçüncü tarafları nasıl kullanabileceğiniz gösterilmektedir Firebase için Cloud Functions işlevi içindeki yerelleştirme kitaplıkları yerelleştirilmiş yanıtlar.
Yerelleştirme kitaplıkları
Size yardımcı olabilecek bazı kütüphaneleri aşağıda bulabilirsiniz Belirli yerel ayarlar için özelleştirilmiş yanıtlar oluşturun:
- Genel amaçlı: I18n-node ( örnek kod snippet'leri bu kitaplığı kullanır)
- Genel amaçlı: format.js
- Saat dilimi/saat yerelleştirme: moment.js ( örnek kod snippet'leri bu kitaplığı kullanır)
- Para/para birimi: numeral.js
Yerelleştirilmiş yanıtlar oluşturma
Bu bölümde, Yerelleştirilmiş dizeler içermesi ve bu kaynak dosyalarının Cloud uygulamanızda nasıl kullanılacağını öğrenme Firebase karşılama işlevi.
Yerelleştirilmiş yanıtlar oluşturmak için:
package.json
veindex.js
dosyalarınızla aynı dizinde oluşturun yerelleştirilmiş dize dosyalarınız için birlocales
dizini. Bundan sonraki adımlarda<project-dir>/functions/locales
olarak dizin.Hedeflediğiniz her yerel ayar için yerelleştirilmiş dizeler içeren bir istediğinize karar verin. Örneğin
en-US
,en-GB
ve ve yerelleştirilmiş karşılama ve tarih mesajları içerende-DE
yerel ayar, 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 an kitaplıklarını ve bağımlılıkları vardır:{ ... "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 an için bağımlılıkları tanımlayın. kitaplıklar:const i18n = require('i18n'); const moment = require('moment');
index.js
dosyasında, i18n-node'u desteklenen yerel ayarlarla yapılandırın:i18n.configure({ locales: ['en-US', 'en-GB', 'de-DE'], directory: __dirname + '/locales', defaultLocale: 'en-US' });
İstemci kitaplığından
conv.user.locale
kullanarak kitaplıkların yerel ayarını belirleyinapp.middleware((conv) => { i18n.setLocale(conv.user.locale); moment.locale(conv.user.locale); });
Yerelleştirilmiş bir yanıt döndürmek için
ask()
öğesini yerelleştirilmiş bir dizeyle çağırın i18n tarafından döndürüldü. Bu snippet, an kullanan bir işlev de değerini döndürür: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 tam bir index.js dosyası aşağıdaki gibidir:
'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);