javascript অবজ ব্রাউজার ভাষা পছন্দ সনাক্ত করার জন্য জাভাস্ক্রিপ্ট




জাভাস্ক্রিপ্ট বই pdf (21)

জবাবের উপর ভিত্তি করে এখানে জাভাস্ক্রিপ্টে ওয়েব পেজের HTTP হেডারগুলি অ্যাক্সেস করা আমি ব্রাউজার ভাষাটি পেতে নিচের লিপিটি তৈরি করেছি:

var req = new XMLHttpRequest();
req.open('GET', document.location, false);
req.send(null);
var headers = req.getAllResponseHeaders().toLowerCase();
var contentLanguage = headers.match( /^content-language\:(.*)$/gm );
if(contentLanguage[0]) {
    return contentLanguage[0].split(":")[1].trim().toUpperCase();
}

আমি জাভাস্ক্রিপ্ট ব্যবহার করে ব্রাউজার ভাষা পছন্দ সনাক্ত করার চেষ্টা করা হয়েছে।

আমি যদি ইন্টারনেটে ব্রাউজার ভাষাটি Tools>Internet Options>General>Languages সেট করি তবে আমি কিভাবে জাভাস্ক্রিপ্ট ব্যবহার করে এই মানটি পড়তে পারি?

ফায়ারফক্সের জন্য একই সমস্যা। navigator.language ব্যবহার করে আমি tools>options>content>languages সেটিংটি সনাক্ত করতে পারছি না।

navigator.userLanguage ব্যবহার করে, এটি Start>ControlPanel>RegionalandLanguageOptions>Regional Options ট্যাব দিয়ে সম্পন্ন সেটিংটি সনাক্ত করে।

আমি navigator.browserLanguage এবং navigator.systemLanguage navigator.browserLanguage দিয়ে পরীক্ষা করেছি কিন্তু প্রথম সেটিং ( Tools>InternetOptions>General>Languages ) এর মানটি ফেরত দেয় না

আমি একটি link খুঁজে পেয়েছি যা বিস্তারিতভাবে আলোচনা করেছে, কিন্তু প্রশ্নটি অনুপস্থিত :((


আমি মনে করি এখানে প্রধান সমস্যা হল ব্রাউজার সেটিংস আসলে navigator.language সম্পত্তিকে জাভাস্ক্রিপ্টের মাধ্যমে প্রাপ্ত নয়।

তারা কীভাবে HTTP 'Accept-Language' শিরোনামটি প্রভাবিত করে তবে এটি প্রদর্শিত হয় যে এই মানটি জাভাস্ক্রিপ্টের মাধ্যমে উপলব্ধ নয়। (সম্ভবতঃ @anddoutoi বলেছেন কেন সে তার জন্য একটি রেফারেন্স খুঁজে পাচ্ছেন না যা সার্ভারের পাশে নেই।)

আমি একটি ওয়ার্কারাউন্ড কোডেড করেছি: আমি http://ajaxhttpheaders.appspot.com এ একটি গুগল অ্যাপ্লিকেশন ইঞ্জিন স্ক্রিপ্ট খারিজ করেছি যা আপনাকে JSONP এর মাধ্যমে HTTP অনুরোধ শিরোনামগুলি ফিরিয়ে দেবে।

(দ্রষ্টব্য: এটি কেবলমাত্র একটি হ্যাক ব্যবহার করা হবে যদি আপনার কাছে ব্যাক ব্যাক শেষ না থাকে যা এটি আপনার জন্য করতে পারে। সাধারণভাবে আপনি আপনার পৃষ্ঠাগুলিতে তৃতীয় পক্ষের হোস্ট হওয়া জাভাস্ক্রিপ্ট ফাইলগুলিতে কল করতে পারবেন না যতক্ষণ না আপনার খুব উচ্চ হোস্ট বিশ্বাসের স্তর।)

আমি চিরস্থায়ী সেখানে এটি ছেড়ে ইচ্ছা তাই আপনার কোড এটি ব্যবহার করতে বিনা দ্বিধায়।

এখানে আপনি কীভাবে এটি ব্যবহার করতে পারেন তার জন্য কিছু উদাহরণ কোড (jQuery তে)

$.ajax({ 
    url: "http://ajaxhttpheaders.appspot.com", 
    dataType: 'jsonp', 
    success: function(headers) {
        language = headers['Accept-Language'];
        nowDoSomethingWithIt(language);
    }
});

কেউ এই দরকারী খুঁজে বের করে আশা করি।

সম্পাদনা করুন: আমি জিথুব-এ একটি ছোট jQuery প্লাগইন লিখেছি যা এই কার্যকারিতাটি আবৃত করে: https://github.com/dansingerman/jQuery-Browser-Language ব্রাউজার -ভাষা

সম্পাদনা 2: এখানে অনুরোধ করা কোডটি অ্যাপেঞ্জাইন (অতি তুচ্ছ সত্যিই) -এ চলমান কোড:

class MainPage(webapp.RequestHandler):
    def get(self):
        headers = self.request.headers
        callback = self.request.get('callback')

        if callback:
          self.response.headers['Content-Type'] = 'application/javascript'
          self.response.out.write(callback + "(")
          self.response.out.write(headers)
          self.response.out.write(")")
        else:
          self.response.headers['Content-Type'] = 'text/plain'
          self.response.out.write("I need a callback=")

application = webapp.WSGIApplication(
                                     [('/', MainPage)],
                                     debug=False)

def main():
    run_wsgi_app(application)

if __name__ == "__main__":
    main()

সম্পাদনা 3: এখানে অ্যাপ ইঞ্জিন কোডটি খোলা আছে: https://github.com/dansingerman/app-engine-headers


আমি সার্ভারাইড জড়িত ছাড়া এটি সম্ভব যে একটি একক রেফারেন্স খুঁজে পাচ্ছি না।

এমএসডিএন:

ব্রাউজার ভাষা থেকে:

মাইক্রোসফ্ট ইন্টারনেট এক্সপ্লোরার 4.0 এবং এর আগে, ব্রাউজারভাষা সম্পত্তি ইনস্টল ব্রাউজারের ব্যবহারকারী ইন্টারফেসের ভাষা প্রতিফলিত করে। উদাহরণস্বরূপ, যদি আপনি একটি ইংরেজী অপারেটিং সিস্টেমে উইন্ডোজ ইন্টারনেট এক্সপ্লোরারের একটি জাপানি সংস্করণ ইনস্টল করেন তবে ব্রাউজারভাষাটি হবে।

ইন্টারনেট এক্সপ্লোরার 5 এবং পরবর্তীতে, ইন্টারনেট ব্রাউজারের ইনস্টল থাকা ভাষা সংস্করণটি নির্বিশেষে ব্রাউজার ভাষাভাষার অপারেটিং সিস্টেমের ভাষা প্রতিফলিত করে। যাইহোক, যদি মাইক্রোসফ্ট উইন্ডোজ 2000 মাল্টিভাঙ্গেজ সংস্করণ ইনস্টল করা থাকে তবে ব্রাউজারভাঙ্গার সম্পত্তিটি নিয়ন্ত্রণ প্যানেলের আঞ্চলিক বিকল্পগুলিতে পাওয়া অপারেটিং সিস্টেমের বর্তমান মেনু এবং ডায়ালগগুলিতে ভাষা সেটকে নির্দেশ করে। উদাহরণস্বরূপ, যদি আপনি একটি ইংরেজী (যুক্তরাজ্য) অপারেটিং সিস্টেমে ইন্টারনেট এক্সপ্লোরার 5 এর জাপানি সংস্করণ ইনস্টল করেন তবে ব্রাউজারভাষা এন-জিবি হবে। আপনি যদি উইন্ডোজ 2000 মাল্টিভাঙ্গেজ সংস্করণটি ইনস্টল করেন এবং ফ্রেঞ্চে মেনু এবং ডায়ালগগুলির ভাষা সেট করেন তবে ব্রাউজারভাষাটি হ'ল, যদিও আপনার কাছে ইন্টারনেট এক্সপ্লোরারের জাপানি সংস্করণ রয়েছে।

দ্রষ্টব্য এই সম্পত্তিটি ইন্টারনেট বিকল্প কথোপকথন বাক্সে অবস্থিত ভাষা পছন্দগুলিতে ব্যবহারকারী দ্বারা নির্ধারিত ভাষা বা ভাষাগুলিকে নির্দেশ করে না।

উপরন্তু, মনে হচ্ছে browserLanguage হয়েছে কারণ IE8 এটি তালিকাভুক্ত করে না


সর্বোপরি, আমার ইংরেজি জন্য আমাকে ক্ষমা। আমি আমার কোড শেয়ার করতে চাই, কারণ এটি কাজ করে এবং এটি অন্যকে দেওয়া মঞ্চগুলির চেয়ে আলাদা। এই উদাহরণে, আপনি যদি ফ্রেঞ্চ (ফ্রান্স, বেলজিয়াম বা অন্য ফ্রেঞ্চ ভাষা) বলতে থাকেন তবে ব্রাউজার কনফিগারেশনের উপর নির্ভর করে আপনাকে ফ্রেঞ্চ পৃষ্ঠাতে পাঠানো হয়, অন্যথায় ইংরেজি পৃষ্ঠাতে:

<script type="text/javascript">
        $(document).ready(function () {
            var userLang = navigator.language || navigator.userLanguage;
            if (userLang.startsWith("fr")) {
                    window.location.href = '../fr/index.html';
                }
            else {
                    window.location.href = '../en/index.html';
                }
            });
    </script>


var language = window.navigator.userLanguage || window.navigator.language;
alert(language); //works IE/SAFARI/CHROME/FF

window.navigator.userLanguage শুধুমাত্র IE এবং এটি উইন্ডোজ কন্ট্রোল প্যানেল - আঞ্চলিক বিকল্পগুলি এবং ব্রাউজারের ভাষাতে কোনও ভাষা সেট নয় তবে আপনি মনে করতে পারেন যে কোনও ব্যবহারকারী ফ্রান্সে সেট করা উইন্ডো আঞ্চলিক সেটিংস সহ একটি মেশিন ব্যবহার করে সম্ভবত একজন ফ্রেঞ্চ ব্যবহারকারী।

navigator.language ফায়ারফক্স এবং অন্যান্য অন্যান্য ব্রাউজার।

কিছু ভাষা কোড: 'it' = ইতালি, 'en-US' = ইংরেজি মার্কিন ইত্যাদি।

RCoup এবং WebMacheter দ্বারা নিচের মতামতগুলিতে উল্লেখ করা হয়েছে, ব্যবহারকারীরা যখন IE ব্যতীত ব্রাউজারে ওয়েবসাইট দেখছেন তখন এই ভাষাগুলি আপনাকে ইংরেজী উপভাষার মধ্যে বৈষম্য দেয় না।

window.navigator.language (ক্রোম / এফএফ / সাফারি) সর্বদা ব্রাউজারের ভাষা এবং ব্রাউজারের পছন্দের ভাষা নয়, এটি ফেরত দেয় তবে: "এটি ফায়ারফক্সের এন-উই সংস্করণ রাখার জন্য ইংরেজি ভাষাভাষীদের (জিবি, অ, এনজে, ইত্যাদি) একেবারে সাধারণ। ক্রোম / সাফারি। " তাই window.navigator.language en-GB থাকলেও window.navigator.language en-US ফিরে আসবে।


যদি আপনার ব্যাকএন্ডের নিয়ন্ত্রণ থাকে এবং django ব্যবহার করে থাকেন তবে ড্যানের ধারণাটির 4 লাইন বাস্তবায়ন হল:

def get_browser_lang(request):
if request.META.has_key('HTTP_ACCEPT_LANGUAGE'):
    return JsonResponse({'response': request.META['HTTP_ACCEPT_LANGUAGE']})
else:
    return JsonResponse({'response': settings.DEFAULT_LANG})

তারপর urls.py:

url(r'^browserlang/$', views.get_browser_lang, name='get_browser_lang'),

এবং সামনে শেষ:

$.get(lg('SERVER') + 'browserlang/', function(data){
    var lang_code = data.response.split(',')[0].split(';')[0].split('-')[0];
});

(আপনাকে অবশ্যই অবশ্যই সেটিংস-তে DEFAULT_LANG সেট করতে হবে)


জাভাস্ক্রিপ্ট উপায়:

var language = window.navigator.userLanguage || window.navigator.language;//returns value like 'en-us'

আপনি jQuery.i18n প্লাগিন ব্যবহার করছেন , আপনি ব্যবহার করতে পারেন:

jQuery.i18n.browserLang();//returns value like '"en-US"'

যে সেটিং পেতে কোন শালীন উপায় আছে, অন্তত কিছু ব্রাউজার স্বাধীন না।

কিন্তু সার্ভারটি সেই তথ্যটি আছে, কারণ এটি HTTP অনুরোধ শিরোনামের অংশ (অ্যাক্সেস-লেবেল ফিল্ডটি দেখুন, http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.4 )

সুতরাং একমাত্র নির্ভরযোগ্য উপায় সার্ভার থেকে একটি উত্তর পেতে হয়। সার্ভারে চালানোর জন্য আপনাকে এমন কিছু করতে হবে (যেমন .asp, .jsp, .php, CGI) এবং যে "জিনিস" সেই তথ্যটি ফেরত পাঠাতে পারে। এখানে ভাল উদাহরণ: http://www.developershome.com/wap/detection/detection.asp?page=readHeader


আমি শুধু এই সঙ্গে আসা করেছি। এটি ভাষা এবং লোকেল পুনরুদ্ধারের জন্য কয়েকটি স্ট্যান্ডার্ড অপারেশন সহ নতুন JS destructuring সিনট্যাক্সকে একত্রিত করে।

var [lang, locale] = (((navigator.userLanguage || navigator.language).replace('-', '_')).toLowerCase()).split('_');

এটা কেউ সাহায্য করে আশা করি


আপনি যদি বহিরাগত সার্ভারের উপর নির্ভর করতে চান না এবং আপনার নিজের একটিতে আপনি একটি সাধারণ পিএইচপি স্ক্রিপ্ট ব্যবহার করতে পারেন তবে @ ড্যানসিংম্যান উত্তর হিসাবে একই আচরণ অর্জন করতে পারেন।

languageDetector.php :

<?php
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
echo json_encode($lang);
?>

এবং শুধু jQuery স্ক্রিপ্ট থেকে এই লাইন পরিবর্তন:

url: "languageDetector.php",
dataType: 'json',
success: function(language) {
    nowDoSomethingWithIt(language);
}

ড্যান সিংম্যানের উত্তরটি একটি সমস্যা রয়েছে যা jQuery এর AJAX এর অ্যাসিঙ্ক্রোনাস প্রকৃতির কারণে সরাসরি শিরোনামটি ব্যবহার করা উচিত। যাইহোক, তার গুগল অ্যাপ সার্ভারের মাধ্যমে, আমি নিম্নলিখিতটি লিখেছিলাম, যেমন হেডার প্রাথমিক সেটআপের অংশ হিসাবে সেট করা হয়েছে এবং পরবর্তী সময়ে এটি ব্যবহার করা যেতে পারে।

<html>
<head>
<script>

    var bLocale='raw'; // can be used at any other place

    function processHeaders(headers){
        bLocale=headers['Accept-Language'];
        comma=bLocale.indexOf(',');
        if(comma>0) bLocale=bLocale.substring(0, comma);
    }

</script>

<script src="jquery-1.11.0.js"></script>

<script type="application/javascript" src="http://ajaxhttpheaders.appspot.com?callback=processHeaders"></script>

</head>
<body>

<h1 id="bLocale">Should be the browser locale here</h1>

</body>

<script>

    $("#bLocale").text(bLocale);

</script>
</html>

উইকিমিডিয়া এর সর্বজনীন ভাষা নির্বাচক লাইব্রেরির জন্য এটি কী মূল্যবান? https://www.mediawiki.org/wiki/Extension:UniversalLanguageSelector

ফাংশনটি দেখুন / ফ্রী / ext.uls.init.js এ ফ্রীফন্টেন্টভাষালিস্টটি দেখুন। সরাসরি লিঙ্ক: https://gerrit.wikimedia.org/r/gitweb?p=mediawiki/extensions/UniversalLanguageSelector.git;a=blob;f=resources/js/ext.uls.init.js;hb=HEAD

এটি এখনও সার্ভারের উপর নির্ভর করে, বা আরো বিশেষভাবে, মিডিয়াওয়িকি API। আমি এটি দেখানোর কারণটি হল এটি ব্যবহারকারীর ভাষা সম্পর্কে ব্রাউজার ভাষা, অ্যাক্সেস-ল্যাঙ্গুয়েজ, জিওলোকেশন (CLDR থেকে দেশ / ভাষা তথ্য পাওয়ার সাথে সাথে) সম্পর্কে সমস্ত দরকারী তথ্য পাওয়ার একটি ভাল উদাহরণ সরবরাহ করতে পারে এবং অবশ্যই, ব্যবহারকারীর নিজস্ব সাইট পছন্দ।


আমি একটি হ্যাক আছে যা আমি মনে করি খুব কম কোড ব্যবহার করে এবং বেশ নির্ভরযোগ্য।

আপনার সাইটের ফাইল একটি সাবডিরেক্টরিতে রাখুন। আপনার সার্ভারে এসএসএল এবং সেই সাবডিরেক্টরিতে সিম্বলিংক তৈরি করুন যেখানে আপনার ফাইলগুলি সংরক্ষণ করা হয় যা আপনার ভাষাগুলিকে নির্দেশ করে।

এটার মতো কিছু:

ln -s /var/www/yourhtml /var/www/en
ln -s /var/www/yourhtml /var/www/sp
ln -s /var/www/yourhtml /var/www/it

HTTP_ACCEPT_LANGUAGE পড়তে আপনার ওয়েব সার্ভারটি ব্যবহার করুন এবং এটি সরবরাহ করে এমন ভাষা মান অনুযায়ী এই "বিভিন্ন উপড্রাইরেক্টরি" তে পুনঃনির্দেশিত করুন।

এখন আপনি আপনার ইউআরএল পেতে জাভাস্ক্রিপ্ট এর window.location.href ব্যবহার করতে পারেন এবং শর্তসাপেক্ষে পছন্দসই ভাষাটি সনাক্ত করতে এটি শর্তগুলিতে ব্যবহার করতে পারেন।

url_string = window.location.href;
if (url_string = "http://yoursite.com/it/index.html") {
    document.getElementById("page-wrapper").className = "italian";
}

জাভা সার্ভার সমাধান খুঁজছেন যারা জন্য

এখানে Resteasy হয়

@GET
@Path("/preference-language")
@Consumes({"application/json", "application/xml"})
@Produces({"application/json", "application/xml"})
public Response getUserLanguagePreference(@Context HttpHeaders headers) {
    return Response.status(200)
            .entity(headers.getAcceptableLanguages().get(0))
            .build();
}

আমি কিছু সময়ের জন্য হামিদ এর উত্তর ব্যবহার করছি, কিন্তু এটি এমন ক্ষেত্রে যেখানে ভাষা অ্যারের ["এন", "এন-জিবি", "এন-ইউএস", "ফ্রা-আরআর", "ফ্র", "এন" -জেএ "] এটি" এন "ফিরে আসবে, যখন" এন-জিবি "একটি ভাল ম্যাচ হবে।

আমার আপডেট (নীচে) প্রথম দীর্ঘ বিন্যাস কোড যেমন "এন-জিবি" প্রদান করবে, নাহলে এটি প্রথম শর্ট কোড যেমন "en" প্রদান করবে, নাহলে এটি নল ফিরে আসবে।

function getFirstBrowserLanguage() {
        var nav = window.navigator,
            browserLanguagePropertyKeys = ['language', 'browserLanguage', 'systemLanguage', 'userLanguage'],
            i,
            language,
            len,
            shortLanguage = null;

        // support for HTML 5.1 "navigator.languages"
        if (Array.isArray(nav.languages)) {
            for (i = 0; i < nav.languages.length; i++) {
                language = nav.languages[i];
                len = language.length;
                if (!shortLanguage && len) {
                    shortLanguage = language;
                }
                if (language && len>2) {
                    return language;
                }
            }
        }

        // support for other well known properties in browsers
        for (i = 0; i < browserLanguagePropertyKeys.length; i++) {
            language = nav[browserLanguagePropertyKeys[i]];
            len = language.length;
            if (!shortLanguage && len) {
                shortLanguage = language;
            }
            if (language && len > 2) {
                return language;
            }
        }

        return shortLanguage;
    }

console.log(getFirstBrowserLanguage());


আপনি যদি Chrome অ্যাপ্লিকেশন / এক্সটেনশানটি ক্রোম তৈরি করেন তবে chrome.i18n API ব্যবহার করুন।

chrome.i18n.getAcceptLanguages(function(languages) {
  console.log(languages);
  // ["en-AU", "en", "en-US"]
});


<script type="text/javascript">
var lang = window.navigator.languages ? window.navigator.languages[0] : null;
    lang = lang || window.navigator.language || window.navigator.browserLanguage || window.navigator.userLanguage;
if (lang.indexOf('-') !== -1)
    lang = lang.split('-')[0];

if (lang.indexOf('_') !== -1)
    lang = lang.split('_')[0];
</script>

আমি শুধুমাত্র আমার প্রয়োজনের জন্য প্রাথমিক উপাদান প্রয়োজন, কিন্তু আপনি সহজেই শুধুমাত্র সম্পূর্ণ স্ট্রিং ব্যবহার করতে পারেন। সর্বশেষ ক্রোম, ফায়ারফক্স, সাফারি এবং IE10 + সঙ্গে কাজ করে।


আপনি যদি ASP .NET MVC ব্যবহার করেন এবং আপনি জাভাস্ক্রিপ্ট থেকে Accepted-Languages ​​শিরোনামটি পেতে চান তবে এখানে একটি কার্যকর উদাহরণ যা কোন অ্যাসিঙ্ক্রোনাস অনুরোধগুলি অন্তর্ভুক্ত করে না।

আপনার .cshtml ফাইলের মধ্যে, শিরোনামের নিরাপদে শিরোনামের ডেটা সংরক্ষণ করুন- বৈশিষ্ট্য:

<div data-languages="@Json.Encode(HttpContext.Current.Request.UserLanguages)"></div>

তারপর আপনার জাভাস্ক্রিপ্ট কোড তথ্য অ্যাক্সেস করতে পারেন, যেমন JQuery ব্যবহার করে:

<script type="text/javascript">
$('[data-languages]').each(function () {
    var languages = $(this).data("languages");
    for (var i = 0; i < languages.length; i++) {
        var regex = /[-;]/;
        console.log(languages[i].split(regex)[0]);
    }
});
</script>

অবশ্যই অন্যান্য সার্ভার প্রযুক্তির সাথে একই রকম পদ্ধতির ব্যবহার করতে পারেন।


বছরের আপডেট 2014।

এখন ফায়ারফক্সে অ্যাক্সেস-ভাষা এবং navigator.languages ল্যাঙ্গুয়েজ ব্যবহার করে ক্রোম পেতে একটি উপায় রয়েছে (ক্রোমে কাজ করে => 32 এবং ফায়ারফক্স> = 32)

এছাড়াও, ফায়ারফক্সে navigator.language এই বছরগুলি UI এর ভাষা নয় বরং সামগ্রীগুলির সর্বাধিক পছন্দের ভাষা প্রতিফলিত করে। কিন্তু এই ধারণাটি এখনও অন্যান্য ব্রাউজার দ্বারা সমর্থিত নয়, এটি খুব দরকারী নয়।

সুতরাং, যখন সম্ভব হয় তখন সর্বাধিক পছন্দসই সামগ্রী ভাষা পেতে এবং ফাল্যাকব হিসাবে UI ভাষা ব্যবহার করুন:

navigator.languages
    ? navigator.languages[0]
    : (navigator.language || navigator.userLanguage)

আমি এঙ্গুলার অনুবাদ মডিউলে ব্রাউজারের ভাষা সনাক্ত করতে কোডের এই অংশটি জুড়ে এসেছি, যা আপনি here উৎস খুঁজে পেতে পারেন। আমি এঙ্গেল লাইব্রেরির থেকে স্বাধীন করার জন্য Array.isAray এর সাথে angular.isArray প্রতিস্থাপন করে কোডটি সামান্য পরিবর্তন করেছি।

var getFirstBrowserLanguage = function () {
    var nav = window.navigator,
    browserLanguagePropertyKeys = ['language', 'browserLanguage', 'systemLanguage', 'userLanguage'],
    i,
    language;

    // support for HTML 5.1 "navigator.languages"
    if (Array.isArray(nav.languages)) {
      for (i = 0; i < nav.languages.length; i++) {
        language = nav.languages[i];
        if (language && language.length) {
          return language;
        }
      }
    }

    // support for other well known properties in browsers
    for (i = 0; i < browserLanguagePropertyKeys.length; i++) {
      language = nav[browserLanguagePropertyKeys[i]];
      if (language && language.length) {
        return language;
      }
    }

    return null;
  };

console.log(getFirstBrowserLanguage());







internationalization