LINUX.ORG.RU

История изменений

Исправление KennyMinigun, (текущая версия) :

+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, :

+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] || l10n['en'] || token;
}

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

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