Я использую это решение с Pylons и ExtJS, но я думаю, что вы можете легко изменить функцию JS для ваших нужд.
В контроллере Pylons у меня есть метод, который экспортирует все переводы (вам нужен polibэто - http://code.google.com/p/polib/):
import polib
from pylons.i18n import get_lang
...
## method in conttroller class
@jsonify
def get_trans(self):
def get_trans():
items = polib.mofile(os.path.join(config['pylons.paths']['root'], 'i18n/%s/LC_MESSAGES/app.mo' % get_lang()[0]))
return [{'name': item.msgid, 'value': item.msgstr} for item in items]
return {'translations' : get_trans()}
Часть JavaScript:
lang_store = new Ext.data.JsonStore({
url: '/lang/get',
root: 'translations',
id: 'name',
autoLoad: true,
fields: ['name', 'value'],
});
gettext = _ = function(_key) {
try {
return lang_store.getById(_key).data.value
} catch(e) {
return _key + "**"
}
}
Теперь вы можете использовать функцию «gettext (STRING)» или «_ (STRING)» в JS, и выполучить переведенную строку, если перевода не будет, вы получите что-то вроде UNTRANSLATED_STRING ** (со звездочками в конце).