2015-10-28 3 views
1

, например, в моем manifest.json есть пары:Расширение Chrome, как изменить язык?

"default_locale": "en" 

вопрос, как я могу динамически изменять язык в яваскрипта коды?

не могу найти примеры на документы о конкретных методах ...

также мои данные переплетены так:

<div data-l10n-id="key_download"></div> 

она динамически разбирается в HTML, но как я могу изменить язык, который он выбирает?

ответ

3

Точка встроенного в chrome.i18n API заключается в том, чтобы расширения соответствовали языку пользовательского интерфейса браузера, поэтому нет возможности API-интерфейса Chrome для его программного программирования, вам придется реализовать его самостоятельно или использовать один из existing js libraries.

Прочтите официальное сообщение chrome.i18n documentation для получения более подробной информации и примеров того, как облегчить тестирование вашего расширения с использованием разных языков интерфейса браузера.

+0

, но как я могу проверить эти языки, я должен изменить мой системный язык? – user3112115

+0

Это описано в [документах] (https://developer.chrome.com/extensions/i18n#win-shortcut). – wOxxOm

+0

слишком сложно объяснить xD – user3112115

0

вы помечены вас вопросом, как расширение Chrome Google, но API вы используете из Mozilla Docs

системы за chrome.i18n API является то, что он опирается на messages.json файлов для разных языков
Если разработчик реализовал поддержку языка для определенного языка (добавлен файл messages.json в папку локалей), и этот язык распознается Chrome (язык браузера), Chrome будет использовать этот файл.
Этот файл имеет форму ключа.
Это означает, что для каждого ключа есть значение, которое будет использоваться в зависимости от языка браузера.
Строка, которую нужно использовать, вы просто описать с помощью клавиши (как в вашем примере, но и для Chrome является данных i18n)

<div data-i18n="key_download"></div> 

и в ваших messages.json файлов, добавьте значение что ключ
по умолчанию является английский, это то, что вы определили в манифесте

"default_locale": "en" 

поэтому, если нет ключа в используемых сообщений, если будет возврат к messages.json определено в ан вложенной папки локалей (и если этот файл также не хватает, что ключ ... ничего не строка не будет добавлена)

Итак, вернемся к этому key_downlaod
в ан вложенной в ваших сообщениях. JSon вы будете иметь:

{ 
    "key_downlaod ": { 
     "message": "download" 
    }, 
    ............ 
} 

и в вашем час подкаталоге (например, для хорватского), в сообщениях.JSon будет:

{ 
    "key_downlaod ": { 
     "message": "preuzmi" 
    }, 
    ............ 
} 

легко, когда вы можете добавить эти ключи в HTML, но если вам это нужно динамически из JavaScript, собрать все элементы с данных-i18n атрибут и добавить текстовые строки к ним на основе их ключ

var i18n_elem = document.querySelectorAll('[data-i18n]'); 

for (var j=i18n_elem.length-1; j>=0; j--) 
    i18n_elem[j].textContent = chrome.i18n.getMessage(i18n_elem[j].getAttribute('data-i18n')); 

или вы можете добавить текстовую строку непосредственно к элементу (возможно, в момент создания). Пример заголовка кнопки:

someElement.title = chrome.i18n.getMessage('key_open'); 

key_open является ключом из файла сообщений. Не нужно добавлять префикс key_, я просто добавляю его для лучшего понимания, вы можете называть эти ключи независимо от того, что вам нравится, но уникально.

другой случай использования, когда вам необходимо изменить некоторые элементы (например, ширина) для различных языков
прибудете язык интерфейса, а затем сделать вашу работу

var getLang = chrome.i18n.getUILanguage(); 

if (getLang === 'ru') { 
    //whatever 
} else if (getLang === 'de') { 
    //whatever 
} 
Смежные вопросы