İ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.jsonveindex.jsdosyalarınızla aynı dizinde oluşturun yerelleştirilmiş dize dosyalarınız için birlocalesdizini. Bundan sonraki adımlarda<project-dir>/functions/localesolarak dizin.Hedeflediğiniz her yerel ayar için yerelleştirilmiş dizeler içeren bir istediğinize karar verin. Örneğin
en-US,en-GBve ve yerelleştirilmiş karşılama ve tarih mesajları içerende-DEyerel 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.jsondosyası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.jsdosyası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.jsdosyası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.localekullanarak 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);