لقد أنشأنا طريقة JS مخصصة لبعض العمل الخاص باللغة المخصصة التي تقوم بتحميل كائن I18n من جانب المتصفح بسمة مخصصة.
أريد تشغيل إعادة تقييم لطريقة JsLocaleHelper هذه على كل من العملاء التابعين.
أحاول إيجاد طريقة لتشغيل هذا من جانب الخادم.
لقد نجح هذا من قبل ولكنه يبدو أنه قد تغير مؤخرًا.
البيانات صحيحة عندما أقوم بحذف ذاكرة التخزين المؤقت المحلية للعميل من المتصفح، ولكن من الواضح أن هذا غير قابل للتطبيق للاستخدام الإنتاجي. إنه يثبت أن المشكلة هي ذاكرة التخزين المؤقت المحلية.
الأشياء التي جربتها تشمل:
Discourse.request_refresh!
أو الأكثر استهدافًا:
Discourse.request_refresh!(user_ids: user_ids)
والذي يبدو أنه يجبر على التحديث عند التنقل. ومع ذلك، أشك في أن البرنامج النصي يتم تخزينه مؤقتًا لذا فهذا ليس حلاً.
لقد اختبرت للتو Discourse.request_refresh! ويبدو أنها تعيد تحميل جميع أصول جافاسكريبت عند التنقل التالي. قد لا تؤدي إلى تشغيل تحديث JsLocaleHelper، فأنا لست مطلعًا بما فيه الكفاية على كيفية عمل ذلك.
شكرا. نعم، لقد فعلت. أعتقد أن هذا جانبي الخادم فقط ولا يغير رقم الإصدار في مجموعة ملفات JS المقدمة التي تم إعدادها أثناء التمهيد. لا توجد مشكلة في جانب الخادم.
أفكر في نقل هذه البيانات إلى كائن الموقع والمُسلسل لمعرفة ما إذا كان بإمكاني الحصول على مزيد من التحكم.
حسنًا، أعتقد أنني لا أفهم ما تحاول إنجازه.
افترضت أنك تريد من العميل ببساطة التقاط البيانات التي أضفتها على الخادم عند إعادة التحميل التالية. إذا كنت تريد القيام بكل شيء على العميل، فلماذا لا تقوم بتحديث I18n.extras مباشرة على العميل.
إذا قمت بتشغيل هذا الأمر من وحدة تحكم rails، فكيف يبطل البرامج النصية على العميل؟
(للعلم، العلامات هي حالة خاصة حيث يتم استخدامها في الأسماء المستعارة، لذلك يجب علي إضافة كائن خاص لتضمين الترجمات، لا يمكنني تسلسل ترجمة علامة في كل مكان لأن المسارات لن تعمل).
في المرة القادمة التي يقوم فيها العميل بإعادة تحميل الصفحة، سيرى تجزئة مختلفة في HTML ويقوم بتحميل البرنامج النصي الجديد. هذه هي طريقة عمل ميزة “تخصيص النص” (تستخدم حزمة “overrides”).