পূর্ণতা (সংলাপপ্রবাহ)

আপনার পূর্ণতা যুক্তি ব্যবহারকারীদের প্রতিক্রিয়া পূরণ করতে প্রতিটি অনুরোধে প্রাপ্ত লোকেল স্ট্রিং ব্যবহার করতে পারে। এই নির্দেশিকা আপনাকে দেখায় কিভাবে স্থানীয়কৃত প্রতিক্রিয়া ফেরাতে Firebase-এর জন্য একটি ক্লাউড ফাংশনের মধ্যে কিছু তৃতীয়-পক্ষ স্থানীয়করণ লাইব্রেরি ব্যবহার করতে হয়।

স্থানীয়করণ লাইব্রেরি

নির্দিষ্ট লোকেলের জন্য কাস্টমাইজড প্রতিক্রিয়া তৈরি করতে আপনাকে সাহায্য করার জন্য এখানে কিছু সহায়ক গ্রন্থাগার রয়েছে:

  • সাধারণ উদ্দেশ্য: I18n-নোড (আমাদের উদাহরণ কোড স্নিপেট এই লাইব্রেরি ব্যবহার করে)
  • সাধারণ উদ্দেশ্য: format.js
  • সময় অঞ্চল/সময় স্থানীয়করণ: moment.js (আমাদের উদাহরণ কোড স্নিপেট এই লাইব্রেরি ব্যবহার করে)
  • টাকা/মুদ্রা: numeral.js

স্থানীয় প্রতিক্রিয়া তৈরি করুন

এই বিভাগটি আপনাকে দেখায় কিভাবে স্থানীয়কৃত স্ট্রিং রিসোর্স ফাইল তৈরি করতে হয় যাতে স্থানীয় স্ট্রিং থাকে এবং কীভাবে এই রিসোর্স ফাইলগুলিকে ফায়ারবেস পূরণের জন্য আপনার ক্লাউড ফাংশনে ব্যবহার করতে হয়।

স্থানীয় প্রতিক্রিয়া তৈরি করতে:

  1. আপনার package.json এবং index.js ফাইলগুলির মতো একই ডিরেক্টরিতে, আপনার স্থানীয় স্ট্রিং ফাইলগুলির জন্য একটি locales ডিরেক্টরি তৈরি করুন৷ আমরা এই ডিরেক্টরিটিকে <project-dir>/functions/locales হিসাবে উল্লেখ করব।
  2. আপনি সমর্থন করতে চান এমন প্রতিটি লোকেলের জন্য স্থানীয়কৃত স্ট্রিং ধারণ করে এমন একটি সংস্থান ফাইল তৈরি করুন৷ উদাহরণ স্বরূপ, আপনি যদি 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"
    }
    
  3. package.json ফাইলে, i18n-নোড এবং মোমেন্ট লাইব্রেরিগুলিকে নির্ভরতা হিসাবে ঘোষণা করুন:

    {
     ...
     "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"
     }
    }
    
  4. index.js ফাইলে, i18n-নোড এবং মোমেন্ট লাইব্রেরির জন্য নির্ভরতা ঘোষণা করুন:

    const i18n = require('i18n');
    const moment = require('moment');

  5. index.js ফাইলে, আপনার সমর্থিত লোকেলগুলির সাথে i18n-নোড কনফিগার করুন:

    i18n.configure({
      locales: ['en-US', 'en-GB', 'de-DE'],
      directory: __dirname + '/locales',
      defaultLocale: 'en-US'
    });

  6. ক্লায়েন্ট লাইব্রেরি সম্পত্তি থেকে conv.user.locale ব্যবহার করে লাইব্রেরির জন্য লোকেল সেট করুন।

    app.middleware((conv) => {
      i18n.setLocale(conv.user.locale);
      moment.locale(conv.user.locale);
    });

  7. একটি স্থানীয়কৃত প্রতিক্রিয়া ফেরত দিতে, i18n দ্বারা প্রত্যাবর্তিত একটি স্থানীয় স্ট্রিং সহ ask() কল করুন। এই স্নিপেটে এমন একটি ফাংশনও রয়েছে যা একটি স্থানীয় তারিখ ফেরাতে মুহূর্ত ব্যবহার করে:

    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);