اذهب إلى المحتوى
  • 0

كيف يمكن الوصول إلى لغة المتصفح من خلال express.js؟

Bassel Jhr

السؤال

لدي مشروع مبني ضمن إطار العمل express.js، يقوم فيه المستخدم بطلب صفحة معيّنة وأريد معرفة لغة المتصفّح الخاصة به من طرف الخادم قبل إرسال الرد المناسب.

لقد حاولت الحصول عليها من طرف المتصفح كالتالي:

var language = window.navigator.userLanguage || window.navigator.language

ولكن كيف يتم ذلك من طرف الخادم؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

البروتوكول المتبع للتواصل بين الخادم والعميل (المتصفح) هو HTTP،
بنية الطلب تتضمن إمكانية اضافة معلومات حول اللغات الذي يستطيع قبولها (يتقنها) العميل عبر قيمة تسمى Accept-Language، قيمتها تعبر عن لغة أو عدة لغات يفضلها العميل (تعين افتراضيا من قبل المتصفح حسب لغة جهاز العميل مثلا) 

Accept-Language: * // العميل يقبل أي لغة
Accept-Language: ar, en // العميل يفضل العربية ثم الانجليزية بالترتيب

على الخادم يمكنك معرفة قبول العميل لأحد اللغات عبر الدالة acceptsLanguages

app.use(function(request, response, next) {
    var lang = request.acceptsLanguages('ar'); // يعيد قيمة اللغة اذا كان يقبلها العميل
	// lang = 'ar'
    // يمكنك الان التصرف حسب قيمة اللغة المقبولة
  	...
});

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1

إضافة للإجابة السابقة، باستخدام Express 4.x ، يمكنك استخدام req.acceptsLanguages (lang [، ...]) للتحقق من قبول لغات معينة:

var express = require('express');
app.get('/translation', function(request, response) {
    var lang = request.acceptsLanguages('fr', 'es', 'en');
    if (lang) {
        console.log('The first accepted of [fr, es, en] is: ' + lang);
        ...
    } else {
        console.log('None of [fr, es, en] is accepted');
        ...
    }
});

للحصول على قائمة بجميع اللغات المقبولة ، باستخدام Express 4.x ، يمكنك استخدام الموديول accepts:

var express = require('express'), accepts = require('accepts');
app.get('/translation', function(request, response) {
    console.log(accepts(request).languages());
    ...
});

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...