Интернационализация с помощью переменных Javascript - PullRequest
0 голосов
/ 23 сентября 2011

Я использую один API, который имеет свой собственный JavaScript. Теперь в этом файле JavaScript они объявили несколько переменных следующим образом:

monthNames: ['January','February','March','April','May','June','July','August','September','October','November','December'],

monthNamesShort: ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'],

dayNames: ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],

dayNamesShort: ['Sun','Mon','Tue','Wed','Thu','Fri','Sat']

В моем приложении мы реализовали интернационализацию. Как я могу реализовать интернационализацию для объявленных выше переменных?

Ответы [ 2 ]

1 голос
/ 23 сентября 2011

Специально для форматирования даты и времени я должен предложить Глобализация .
У него также есть возможность просто переводить ресурсы (хотя вам нужно было бы выписывать переведенные ресурсы из серверной части в любом случае).

КСТАТИ. Если вам нужен какой-то элемент управления Calendar, вы можете использовать jQuery UI Datepicker , который имеет встроенную (частичную) поддержку i18n и некоторые общедоступные файлы локализации .

1 голос
/ 23 сентября 2011

Я бы предложил какую-то оболочку интернационализации.Что-то вроде следующего псевдокода:

var i18n = {
   longNames: true; 

   getMonth: function(i) {
       if (longNames) 
           return monthNames[i];
       else 
           return monthNamesShort[i];
   }, 

   getDay: function() {
    ....
   }, 
   ...

}

Если вы хотите перевести, например, массив monthNames, вы можете попробовать что-то вроде следующего.Используя тот же принцип, что и выше, вы также можете обернуть его, чтобы абстрагировать конфигурацию language от каждого вызова.

var monthNames = {
   "English": ["January", "February", ..., "December"]},
   "French": ...
   ...
]
var englishMonth = monthNames["English"][0]; // January in english

};

...