Шаблоны Google Closure генерируют несколько файлов JavaScript для каждого языка вместо одной базы кода JavaScript с отдельными файлами ресурсов. - PullRequest
1 голос
/ 10 августа 2011

Я использую шаблон Google Closure Template для написания пользовательского интерфейса моего приложения с использованием JavaScript. Посмотрите на этот вопрос , чтобы узнать, почему я использую шаблон закрытия Google. Я хочу, чтобы это было многоязычным. Я вижу, что есть переключатель --locales, а также посмотрел образцы, представленные в проекте здесь и здесь . В файлах README_FOR_EXAMPLES написано, что

+ simple_generated_en.js, features_generated_en.js,
simple_generated_x-zz.js, features_generated_x-zz.js Файлы JS, сгенерированные SoyToJsSrcCompiler, когда он выполняется на simple.soy и features.soy (локали - это en и x-zz с переведенными файлами XLIFF из каталога общих примеров 'examples' и с указанными выше глобальными переменными времени компиляции файл). Нам нужны и simple.soy, и features.soy, потому что некоторые из шаблонов в features.soy вызывают шаблоны в simple.soy. Примечание: для примера цели Ant (и аргументов командной строки), которая генерирует эти файлы, см. целевой js-features-example в верхнем уровне build.xml.

Я ожидал, что он сгенерирует только одну кодовую базу JavaScript, которая будет использовать нужные строки из соответствующего файла локали на основе опции, предоставленной во время выполнения перед вызовом функции шаблона. Это возможно с шаблонами закрытия?

1 Ответ

1 голос
/ 10 августа 2011

Насколько я вижу, вы можете использовать объект-словарь в качестве параметра для вашего шаблона.

/**
 * @param dict
 */
{template .example}
    <h1>{$dict.title}</h1>
    <div>{$dict.content}</div>
{/template}

Этот объект может быть сгенерирован на стороне сервера из вашего файла локали и передан вjavascript через тег сценария.

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

Существует также i18n возможность , но это бесполезно длятвоя проблема, имо.

...