@aaltw

Локализация .js файла с помощью кода RoR?

Есть обычный .js файл, мне в нем нужен локализованный текст. Я придумал следующее:

app.js
import { locale } from './locale.js.erb';

const locale = locale( );
translated_word = locale.translated_word;

locale.js.erb
function locale() {
  return {
    translated_word: "<%= t('words.translated_word') %>"
  }
}

export { locale }

Переводы как и должны определены в ru.yml, en.yml и т.д. Т.е. я хотел использовать обычный рельсовый перевод, передав его в .js. Однако это не сработало и вместо перевода слов, я просто получаю текст типа:
{ translated_word: "<%= t('words.translated_word') %>" }

Т.е. рельсовый код не выполнился. Почему?

Или может есть более адекватный способ это сделать? При условии, что файл должен остаться .js, а не быть превращен в .js.erb.
  • Вопрос задан
  • 111 просмотров
Решения вопроса 1
oh_shi
@oh_shi
Так работать не может. JS компилится один раз при деплое, t(...) высчитывается на каждый запрос. Либо все что связано с локализацией надо дублировать в js коде, либо подтягивать переводы через ajax. Еще можно извратиться и конвертировать yml в json на этапе сборки, пробросить их в роуты и подтягивать весь набор переоводов в зависимости от локали.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы