تم إيقاف إجراءات المحادثات نهائيًا في 13 حزيران (يونيو) 2023. لمزيد من المعلومات، يُرجى الاطّلاع على
إنهاء إجراءات المحادثة.
توصيل الطلبات (Dialogflow)
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
يمكن لمنطق التنفيذ استخدام سلسلة اللغة التي يتلقاها في كل طلب
وتلبية احتياجات المستخدمين. يوضّح لك هذا الدليل كيفية استخدام خدمات تابعة لجهات خارجية
لعرض مكتبات الأقلمة ضمن إحدى وظائف السحابة الإلكترونية حتى يمكن لمنصّة Firebase عرض
ردودًا مترجَمة.
مكتبات الأقلمة
فيما يلي بعض المكتبات المفيدة التي يجب أخذها في الاعتبار لمساعدتك
إنشاء ردود مخصصة للغات معينة:
- الغرض العام: I18n-node (
مثال لمقتطفات الرمز التي تستخدم هذه المكتبة)
- الأغراض العامة: format.js
- أقلمة المنطقة الزمنية/الوقت: moment.js (
مثال لمقتطفات الرمز التي تستخدم هذه المكتبة)
- مال/عملة: numeral.js
إنشاء ردود مترجَمة
يوضّح لك هذا القسم كيفية إنشاء ملفات لموارد السلاسل النصية المترجَمة والتي
تحتوي على سلاسل معدَّلة بما يناسب السوق المحلية وكيفية استخدام ملفات الموارد هذه في السحابة الإلكترونية
وظيفة تنفيذ Firebase.
لإنشاء ردود مترجَمة:
- في الدليل نفسه الذي يضم ملفات
package.json
وindex.js
، أنشئ
دليل locales
لملفات السلسلة المترجَمة سنشير إلى هذا
الدليل باسم <project-dir>/functions/locales
.
أنشئ ملف موارد يحتوي على سلاسل مترجمة لكل لغة
التي تريد دعمها. على سبيل المثال، إذا كنت تريد إتاحة 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"
}
في ملف 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"
}
}
في ملف index.js
، يجب الإعلان عن التبعيات لعقدة i18n واللحظة
المكتبات:
const i18n = require('i18n');
const moment = require('moment');
في ملف index.js
، اضبط عقدة i18n باللغات المتوافقة:
i18n.configure({
locales: ['en-US', 'en-GB', 'de-DE'],
directory: __dirname + '/locales',
defaultLocale: 'en-US'
});
ضبط اللغة للمكتبات باستخدام conv.user.locale
من مكتبة البرامج
الموقع.
app.middleware((conv) => {
i18n.setLocale(conv.user.locale);
moment.locale(conv.user.locale);
});
لعرض رد مترجم، يمكنك طلب ask()
باستخدام سلسلة مترجمة.
التي تم إرجاعها بواسطة i18n. يحتوي هذا المقتطف أيضًا على دالة تستخدم اللحظة
لعرض تاريخ مترجَم:
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);
إنّ محتوى هذه الصفحة مرخّص بموجب ترخيص Creative Commons Attribution 4.0 ما لم يُنصّ على خلاف ذلك، ونماذج الرموز مرخّصة بموجب ترخيص Apache 2.0. للاطّلاع على التفاصيل، يُرجى مراجعة سياسات موقع Google Developers. إنّ Java هي علامة تجارية مسجَّلة لشركة Oracle و/أو شركائها التابعين.
تاريخ التعديل الأخير: 2025-09-04 (حسب التوقيت العالمي المتفَّق عليه)
[null,null,["تاريخ التعديل الأخير: 2025-09-04 (حسب التوقيت العالمي المتفَّق عليه)"],[[["\u003cp\u003eUtilize the locale string from user requests to tailor responses for different regions.\u003c/p\u003e\n"],["\u003cp\u003eLeverage third-party libraries like i18n-node and moment.js to manage localized strings and date/time formats.\u003c/p\u003e\n"],["\u003cp\u003eCreate localized string resource files in JSON format for each supported locale.\u003c/p\u003e\n"],["\u003cp\u003eConfigure i18n-node and set the locale within your Cloud Function for Firebase using the user's locale.\u003c/p\u003e\n"],["\u003cp\u003eReturn localized responses by calling \u003ccode\u003eask()\u003c/code\u003e with strings generated from your resource files and libraries.\u003c/p\u003e\n"]]],[],null,["# Fulfillment (Dialogflow)\n\nYour fulfillment logic can use the locale string it receives in every request to\ncater responses to users. This guide shows you how to use some third-party\nlocalization libraries within a Cloud Function for Firebase to return\nlocalized responses.\n\nLocalization libraries\n----------------------\n\nHere are some helpful libraries to consider to help you\ngenerate customized responses for specific locales:\n\n- General purpose: [I18n-node](//github.com/mashpie/i18n-node) (our example code snippets use this library)\n- General purpose: [format.js](//formatjs.io/)\n- Timezone/time localization: [moment.js](//momentjs.com/) (our example code snippets use this library)\n- Money/currency: [numeral.js](//numeraljs.com/)\n\nCreate localized responses\n--------------------------\n\nThis section shows you how to create localized string resource files that\ncontain localized strings and how to use these resource files in your Cloud\nFunction for Firebase fulfillment.\n\nTo create localized responses:\n\n1. In the same directory as your `package.json` and `index.js` files, create a `locales` directory for your localized string files. We'll refer to this directory as `\u003cproject-dir\u003e/functions/locales`.\n2. Create a resource file that contains localized strings for every locale that\n you want to support. For example, if you want to support `en-US`, `en-GB`,\n and `de-DE` locales with localized welcome and date messages, those files\n might look like this:\n\n **`\u003cproject-dir\u003e/functions/locales/en-US.json`** \n\n {\n \"WELCOME_BASIC\": \"Hello, welcome!\",\n \"DATE\": \"The date is %s\"\n }\n\n **`\u003cproject-dir\u003e/functions/locales/en-GB.json`** \n\n {\n \"WELCOME_BASIC\": \"Hello, welcome!\",\n \"DATE\": \"The date is %s\"\n }\n\n **`\u003cproject-dir\u003e/functions/locales/de-DE.json`** \n\n {\n \"WELCOME_BASIC\": \"Hallo und willkommen!\",\n \"DATE\": \"Das Datum ist %s\"\n }\n\n3. In the `package.json` file, declare the i18n-node and moment libraries as\n dependencies:\n\n {\n ...\n \"dependencies\": {\n \"actions-on-google\": \"^2.7.0\",\n \"firebase-admin\": \"^7.2.1\",\n \"firebase-functions\": \"^2.2.1\",\n \"i18n\": \"^0.8.3\",\n \"moment\": \"^2.22.1\"\n }\n }\n\n4. In the `index.js` file, declare the dependencies for the i18n-node and moment\n libraries:\n\n ```gdscript\n const i18n = require('i18n');\n const moment = require('moment');\n ```\n\n \u003cbr /\u003e\n\n5. In the `index.js` file, configure the i18n-node with your supported locales:\n\n ```css+lasso\n i18n.configure({\n locales: ['en-US', 'en-GB', 'de-DE'],\n directory: __dirname + '/locales',\n defaultLocale: 'en-US'\n });\n ```\n\n \u003cbr /\u003e\n\n6. Set the locale for the libraries using `conv.user.locale` from the client library\n property.\n\n ```text\n app.middleware((conv) =\u003e {\n i18n.setLocale(conv.user.locale);\n moment.locale(conv.user.locale);\n });\n ```\n\n \u003cbr /\u003e\n\n7. To return a localized response, call `ask()` with a localized string\n returned by i18n. This snippet also contains a function that uses moment\n to return a localized date:\n\n ```scdoc\n app.intent('Default Welcome Intent', (conv) =\u003e { // must not be async for i18n\n conv.ask(i18n.__('WELCOME_BASIC'));\n });\n\n app.intent('date', (conv) =\u003e { // must not be async for i18n\n conv.ask(i18n.__('DATE', moment().format('LL')));\n });\n ```\n\n \u003cbr /\u003e\n\nHere's a complete index.js file as an example: \n\n```gdscript\n'use strict';\nconst {dialogflow} = require('actions-on-google');\nconst functions = require('firebase-functions');\nconst i18n = require('i18n');\nconst moment = require('moment');\n\ni18n.configure({\n locales: ['en-US', 'en-GB', 'de-DE'],\n directory: __dirname + '/locales',\n defaultLocale: 'en-US'\n});\n\nconst app = dialogflow({debug: true});\n\napp.middleware((conv) =\u003e {\n i18n.setLocale(conv.user.locale);\n moment.locale(conv.user.locale);\n});\n\napp.intent('Default Welcome Intent', (conv) =\u003e { // must not be async for i18n\n conv.ask(i18n.__('WELCOME_BASIC'));\n});\n\napp.intent('date', (conv) =\u003e { // must not be async for i18n\n conv.ask(i18n.__('DATE', moment().format('LL')));\n});\n\nexports.demoAction = functions.https.onRequest(app);\n```\n\n\u003cbr /\u003e"]]