Вопрос по javascript, internationalization – Название языка из кода ISO 639-1 в Javascript

10

Я создаю веб-сайт, на котором люди могут связывать информацию о языке с контентом.

Веб-сайт интенсивно использует Javascript, а языковая информация, связанная с различными элементами, внутренне обрабатывается как код ISO 639-1.

Как показать список названий языков - на языке пользователя?

Я думаю, что это дубликатstackoverflow.com/questions/3217492/… Nacho Coloma

Ваш Ответ

5   ответов
3

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

Ах, я вижу, извините, я неправильно прочитал и подумал, что вы хотели имена на соответствующем языке (который есть в Википедии). Кажется, довольно распространено представлять их таким образом. Но для вашего требования, я полагаю, вы должны локализовать список языков, как вы локализуете любой другой пользовательский интерфейс.
Что мне нужно, так это какой-то веб-API или библиотека JS. В списке Википедии нет названия языка на разных языках :-( aberaud
14

Есть несколько похожих вопросов по stackoverflow. Мне нужна была функция JavaScript для получения английских имен и родных имен для разных языков. Я нашел хорошийотформатированный в json список кодов языка ISO 693-1 в стеке (на основевикипедия) и создалсуть с двумя функциями getLanguageName и getLanguageNativeName, Вот как это использовать:

getLanguageNativeName("cv"); // --> "чӑваш чӗлхи"
getLanguageName("cv"); // --> "Chuvash"
getLanguageNativeName("cv-RU"); // --> "чӑваш чӗлхи"
getLanguageName("cv-RU"); // --> "Chuvash"

Я использовал это, чтобы ответить на другой подобный вопрос:создать список локализованных названий языков со ссылками на Google Translate

Спасибо приятель приятно
Это почти все. Но это только показывает название языка на двух языках. Например, на моем сайте есть раскрывающийся список, позволяющий связать язык с каким-либо контентом. Если француз использует мой сайт и хочет выбрать «немецкий», он должен показать «Allemand» (французское название для немецкого языка). То же самое для китайского посетителя и т. Д. aberaud
1

Другое решение заключается в использованиипакет iso-639-1.

Монтаж:

npm install iso-639-1

Использование в Node.js:

const ISO6391 = require('iso-639-1')
console.log(ISO6391.getAllCodes())  // ['aa', 'ab', ...]
console.log(ISO6391.getName('cv'))  // 'Chuvash'
console.log(ISO6391.getNativeName('cv'))  // 'чӑваш чӗлхи'

Использование в браузерах:

<script type="text/javascript" src="./node_modules/iso-639-1/build/index.js"></script>
<script>
  console.log(ISO6391.getAllCodes())  // ['aa', 'ab', ...]
  console.log(ISO6391.getName('cv'))  // 'Chuvash'
  console.log(ISO6391.getNativeName('cv'))  // 'чӑваш чӗлхи'
</script>
Хороший, но, к сожалению, пока не позволяющий показывать "китайский язык" на немецком языке это будет "Chinesisch". Эта библиотека позволяет получить только название языка на английском (по какой-то причине) и на родном языке. aberaud
1

Если вам нужно имя произвольного языка на произвольном языке (например, как сказать «корейский язык» на японском языке), вы можете использоватьUnicode CLDR данные.

Чтобы использовать его в JavaScript, вы можете использоватьcldr пакет NPM лайк:

cldr.extractLanguageDisplayNames('it').en;
# => 'inglese'

Но не уверен, что пакет поддерживает только Node.js или также поддерживает браузеры. Если нет, вы можете искать другие библиотеки или написать свой собственный код для непосредственного анализа CLDR.

-2

Лучший способ:

 <script>
    var language = window.navigator.userLanguage || window.navigator.language; 
    alert(language);
    </script>

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