i18next 번역 방법을 grunt-pug-i18n 작업에 바인드하는 데 문제가 있습니다.i18next 번역 방법을 grunt-contrib-pug 컴파일러에 바인딩하는 방법
국제화를 위해 i18next 및 i18next-express-middleware가있는 웹 사이트에서 Node.js, Express.js 및 Pug를 사용하고 있습니다. 정적 버전의 요구에 그런
=t('key') // or #{t('key')}
나는 웹 사이트를 컴파일하는 고된 작업에서 꿀꿀 - 흙 - 국제화을 사용하고 있습니다 :
그러므로 내가 번역을 찾기 위해 퍼그 템플릿에이 기능을 사용 HTML로.
#{$i18n.key}
작품 벌금을하지만 동적 버전을 나누기 :하지만 기본적인 사용은이 같은 네임 스페이스 템플릿에서 t 방법을 대체 할 날 필요로한다.
동적 인 세계와 정적 인 세계를 동일하게 작동시키는 해결책이 필요합니다.
그래서 나는 grunt-pug-i18n을 t ('key') 메소드로 작업하려고했습니다. 그것은 구속력이있는 것처럼 보이는
// instantiate i18next
var i18n = require('i18next');
i18n.init({
lng: 'en',
resources: {
en: {
translation: grunt.file.readJSON(webDir + 'locales/en/translation.json')
}
}
});
console.log(i18n.t('key'));//works fine
...
// grunt task
pug: {
compile: {
options: {
namespace : 'JST',
separator : '\n\n',
amd : false,
client : false,
pretty : true,
self : false,
debug : false,
compileDebug: true,
//i18n specific options
i18n: {
locales: webDir + 'locales/en/translation.json'
},
//supposedly bind the i18n.t method to the task
data: function() {
return {
t: i18n.t
};
}
},
files: [ {
cwd: webDir + 'views',
src: ['**/*.pug', '!**/_*.pug'],
dest: webDir + 'static',
expand: true,
ext: '.htm'
} ]
}
}
: 작업이 템플릿에서 t 방법을 이해할 수 있도록 나는 options.data에 i18n.t 방법을 결합 할 수있는 것처럼이 문제 https://github.com/AdesisNetlife/grunt-pug-i18n/issues/21를 사용
는, 그것은 본다 수행하지만이 오류와 끝까지 :
>> TypeError: website/views/_layout.pug:9
>> 7| meta(name='description' content='')
>> 8| meta(name='author' content='')
>> > 9| title=t('title')
>> 10|
>> Cannot read property 'translator' of undefined
은 어떻게 툴툴-있는 contrib-퍼그 작업에 i18next 번역 방법을 바인딩? 대신
//supposedly bind the i18n.t method to the task data: function() { return { t: i18n.t }; }
의
는 더 이상 오류 메시지가 발생하지 않는 한 그것은 좋습니다. 그러나 번역 대신 키로 번역됩니다. ** t ('section.hout.h2') ** 번역 대신 section.about2를 제공합니다. –
Mh, 이상합니다. 해당 키의 번역을 찾을 수없는 경우 키만 출력하면 기본 동작입니다. 옥 (jade) 템플릿을 사용하는 앱에서이 방법을 사용하고 있습니다. dev 도구 콘솔에서 작동합니까? 처음에는 비슷한 문제가 있었지만 변환 리소스가 완전히로드되기 전에 번역에 액세스 할 때 내 잘못이었습니다 – iamrickyspanish
맞습니다. ** grunt.file.read() ** ** grunt.file.readJSON() ** i18next 인스턴스화에서 번역 파일을 가져 오면 완벽하게 작동합니다. –