LINUX.ORG.RU

Посоветуйте либу для локализации

 , ,


0

0

Посоветуйте либу для локализации приложения. Среда выполнения у меня похожа на ноду но не нода. Ее можно представить как нода но на базе JS VM от IE.

требования:

  • без внешних зависимостей (аля jquery, underscore итд)
  • поддержка IE8+ (возможно через es5-shim)
  • работоспособность после минимизации
  • сохранение строк переводов в каком-то своем хранилище/словаре
  • поддержка заменяемых параметров в строке перевода

Хочу заменить свой самописный велосипед на что-то более проверенное, но в тоже время простое и надежное как молоток

Да, я видел это, но возможно здесь есть товарищи, которые имеют опыт работы/пользования либ, которые там перечислены

★★★★★

Как планируешь переключать языки? На ходу или при перезагрузке сайта?

noomorph ()
Ответ на: комментарий от noomorph

учитывая специфику проекта скорее подойдет ответ «при перезагрузке сайта»

Еще момент: имя/код языка можна узнать вызвав функцию, которая есть частью среды/платформы

ZuBB ★★★★★ ()
Последнее исправление: ZuBB (всего исправлений: 2)
Ответ на: комментарий от ZuBB

На самом деле, у меня на проекте тоже используются самописные классы по схеме: подгружается JSON для английского+текущего языка, а далее ищем по ключу нужную строку, если не находим – юзаем английский вариант, а если и там не находим, то генерируем «ругательное» сообщение, включающее в себя ненайденный ключ.

Примитивно, но работает вполне себе нормально.

noomorph ()
Ответ на: комментарий от noomorph

у меня на проекте тоже используются самописные классы

Примитивно, но работает вполне себе нормально.

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

ZuBB ★★★★★ ()
Ответ на: комментарий от ZuBB

несколько отдельных файлов en.json, ru.json каждый имеет линейную структуру:

{ «ключ1»: «значение1», «ключ2»: «значение2», «например»: "", «load»: «Загрузить», «save»: «Сохранить» }

по-моему, очевидно. возможно, слишком просто, да. но ведь работает. :)

noomorph ()
Ответ на: комментарий от noomorph

возможно, слишком просто, да. но ведь работает

работает до тех пор пока не нужно переводчику сделать свою работу. впрочем как оказалось нужда в переводчиках у меня отпала

ZuBB ★★★★★ ()

+1 к noomorph

На сервере обычно хранятся l10n JSON с переводами. Для особо крупных проектов можно разбивать на неймспейсы:

{
    "admin.foo": "Do foo as admin",
    "user.foo": "Do foo as user"
}

Затем они подгружаются (можно раздельно и лениво), и делается что-то такое:

var l10n = {};

/* как нибудь загружаем переводы в l10n */

function getLine(token) {
    return l10n[getUserlanguage][token] || l10n['en'][token] || token;
}

// делаем глобальный алиас, для удобства
_ = getLine;

А в целом про i18n — то тут уже нужно чтоб библиотека отрисовки GUI поддерживала всё, что надо (например письмо справа-налево).

KennyMinigun ★★★★★ ()
Последнее исправление: KennyMinigun (всего исправлений: 1)
Ответ на: комментарий от ZuBB

Увы да, это маленькое простое решение в дальнейшем выливается в написание веб-морды для редактирования JSON. ТАК и есть.

noomorph ()

Тебе дофига языков что ли надо? Тогда, ясен пень, gettext.

А если 2-3 языка, то свой велосипед лучше.

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от KennyMinigun

Можно же просто жабоскрипт на нужном языке хранить (нагенерировать их сразу кучу). Сразу двух зайцев убиваем: быстрей грузится сайтик, меньше нагрузка на машину юзверя.

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от Eddy_Em

Да, но это надо иметь хорошую систему сборки (аля sencha cmd).

Кстати, попутно вопрос треду: зачем минификация js, когда есть gzip?

KennyMinigun ★★★★★ ()
Ответ на: комментарий от KennyMinigun

зачем минификация js, когда есть gzip?

Все равно, не пристало писать длинные портянки!

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от noomorph

Это все работает до первого столба. А дальше начинаются танцы с подстановкой параметров, «1 кота» и т.п.

Vit ★★★★★ ()
Ответ на: комментарий от Vit

там еще плюрализатор встроенный, извини

ну это не проблема.

в общем добавил в общий список либ которые нужно отревювить.

спс

ZuBB ★★★★★ ()
Последнее исправление: ZuBB (всего исправлений: 1)
Ответ на: комментарий от ZuBB

Она через browserify под браузер выгоняется, если чо. Просто сейчас тема такая, лепить даже под браузер на ноде в commonjs формате.

Vit ★★★★★ ()
Последнее исправление: Vit (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.