Локализуйте строки в JavaScript

38
задан Leniel Maccaferri 8 February 2013 в 22:22
поделиться

7 ответов

Основной объект JavaScript является ассоциативным массивом, таким образом, он может легко использоваться для хранения пар ключ/значение. Так с помощью JSON, Вы могли создать объект для каждой строки, которая будет локализована как это:

var localizedStrings={
    confirmMessage:{
        'en/US':'Are you sure?',
        'fr/FR':'Est-ce que vous êtes certain?',
        ...
    },

    ...
}

Тогда Вы могли получить версию локали каждой строки как это:

var locale='en/US';
var confirm=localizedStrings['confirmMessage'][locale];
26
ответ дан Frédéric Hamidi 27 November 2019 в 03:39
поделиться

Со сборкой-сателлитом (вместо resx файла) можно перечислить все строки на сервере, где Вы знаете язык, таким образом генерируя объект JavaScript только со строками для корректного языка.

Что-то вроде этого работает на нас (код VB.NET):

Dim rm As New ResourceManager([resource name], [your assembly])
Dim rs As ResourceSet = 
    rm.GetResourceSet(Thread.CurrentThread.CurrentCulture, True, True)
For Each kvp As DictionaryEntry In rs
    [Write out kvp.Key and kvp.Value]
Next

Однако мы не нашли способ сделать это для .resx файлов все же, печально.

4
ответ дан Ryan Lundy 27 November 2019 в 03:39
поделиться

Вдохновленный SproutCore можно установить свойства строк:

'Hello'.fr = 'Bonjour';
'Hello'.es = 'Hola';

и затем просто выложенный надлежащая локализация на основе Вашей локали:

var locale = 'en';
alert( message[locale] );
13
ответ дан 27 November 2019 в 03:39
поделиться

Я использовал бы нотацию объекта/массива:

var phrases={};
phrases['fatalError'] ='On no!';

Тогда можно просто подкачать файл JS или использовать вызов Ajax для переопределения списка фразы.

4
ответ дан Tracker1 27 November 2019 в 03:39
поделиться

Подробно останавливаясь на ответе diodeus.myopenid.com: Имейте свой код, выписывают файл, содержащий массив JS со всеми необходимыми строками, затем загружают соответствующий файл/сценарий перед другим кодом JS.

0
ответ дан Lasar 27 November 2019 в 03:39
поделиться

JSGettext отлично справляется со своей задачей - динамической загрузкой файлов GNU Gettext .po с использованием практически любого языка в серверной части. Google для "Динамической локализации Javascript с Gettext и PHP", чтобы найти пошаговое руководство для JSGettext с PHP (я бы опубликовал ссылку, но этот глупый сайт мне не позволит, вздох ...)

Изменить : это должно быть ссылкой

4
ответ дан 27 November 2019 в 03:39
поделиться

Способ MSDN сделать это , в основном таков:

Вы создаете отдельный файл сценария для каждого поддерживаемого языка и культура. В каждый файл сценария вы включаете объект в формате JSON, который содержит значения локализованных ресурсов для этого языка и культуры.

Я не могу сказать вам лучшего решения вашего вопроса, но ИМХО, это худший способ сделать это. По крайней мере, теперь вы знаете, как этого НЕ делать.

-1
ответ дан 27 November 2019 в 03:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: