اقرأ الثقافة الحالية لمشروع ASP.NET MVC وتغيير اللغة في JavaScript

StackOverflow https://stackoverflow.com/questions/3651808

سؤال

لدي جافا سكريبت تأكيد. نصي باللغة الإنجليزية ، لكن إذا قمت بتغيير اللغة/ثقافة مشروع ASP.NET MVC ، تأكد من أن English English.

يمكنني التحكم فيه يدويًا وأكتب طريقتان JavaScript (لكلتا اللغتين) ولكن ليس من النظيف جدًا على ما أعتقد. وإذا كان لدي أكثر من 3 لغات ، فستكون أكثر قذرة.

هل يمكن أن تعطيني بعض النصيحة كيف يمكنني حل مشكلتي؟

الأفضل بالنسبة لي هو التأكيد مع بعض metatag أو أي شيء حيث يمكنني إعطاء النص الخاص بي من ملفات الموارد.

هل كانت مفيدة؟

المحلول

<script language="javascript">
var confirmMessage = "<%= localizedConfirmMessage %>";

// use confirmMessage when showing confirm popup
...
</script>

نصائح أخرى

يمكنك القيام بملف JS منفصل بالسلاسل فقط ، على سبيل المثال:

var MultilanguageStrings = {
    'savingConfirmation': {
        'en': 'Do you want to save changes?',
        'pl': 'Czy chcesz zapisać zmiany?'
    },
    'fatalError': {
        'en': 'Fatal error occured.',
        'pl': 'Wystąpił krytyczny błąd.'
    },
    'get': function (key, lang) {
        if (this[key] === undefined)
            return 'Error. There is no such message.';
        if (lang == 'en' && this[key]['en'] === undefined)
            return 'Error. There is no such message.';
        if (this[key][lang] === undefined)
            return this.get(key, 'en');
        return this[key][lang];
    }
};

ومن جعل ملف JS الذي تم إنشاؤه ديناميكيًا بمعلومات يتم تعيين اللغة:

var currentLanguage = 'en';

يمكنك أيضًا الحصول على هذه المعلومات بطريقة مختلفة (على سبيل المثال AJAX) ولكن الحل أعلاه لديه هذه الميزة ، وأن الكود الخاص بك قد تم تحميله بالفعل و currentLanguage تم تعيينه.

ثم في الكود الخاص بك وضع:

...
if (confirm(MultilanguageStrings.get('savingConfirmation', currentLanguage))) {
...

قد ترغب في لف كل شيء إلى متغير عالمي واحد ، سيكون أكثر أناقة. تذكر أيضًا عدم الكتابة فوق طريقة MultilanguageStrings.get.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top