İ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.jsonve- index.jsdosyalarınızla aynı dizinde oluşturun yerelleştirilmiş dize dosyalarınız için bir- localesdizini. 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çeren- de-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ı belirleyin- app.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);
