2015-09-11 27 views
1

__('string')函數不能與Handlebars文件集成。有沒有任何JavaScript模板庫可以使用webpack的i18n插件?

有沒有其他庫可以使用__()函數?

這是我* .handlebars文件:

<div> __('title') </div> 

,我想國際化了。 ,我正在使用handlebars-loader來要求這個文件。 但似乎webpack無法分析句柄文件中的__()函數。

模板的HTML輸出是:

<div> __('title') </div> 

我要的是:

<div>title</div> 

<div>標題</div> 
+0

你能提供更多信息嗎?你想用真正的把手做什麼? –

回答

2

這爲我工作。剛適應基於the example

var path = require('path'); 
var I18nPlugin = require('i18n-webpack-plugin'); 
var languages = { 
    'en': null, 
    'de': require('./de.json') 
}; 
module.exports = Object.keys(languages).map(function(language) { 
    return { 
     name: language, 
     entry: './templates/example.hbs', 
     output: { 
      path: path.join(__dirname, 'js'), 
      filename: language + '.output.js' 
     }, 
     module: { 
      loaders: [ 
       { 
        test: /\.hbs$/, 
        loaders: ['handlebars'], 
        include: path.join(__dirname, 'templates') 
       } 
      ] 
     }, 
     plugins: [ 
      new I18nPlugin(
       languages[language] 
      ) 
     ] 
    }; 
}); 
+0

請注意,這會輸出JS文件,然後您可以通過代碼導入。我不確定這是否正是你想要的。如果您只需要這樣的html輸出,那麼直接通過Handlebars並跳過Webpack可能會更好。這完全取決於你想如何使用數據。你也可以把它推到客戶端等等。 –

+0

無論如何。你提供的答案不完全是我想要的。使用hbs作爲入口點不適合我,我想將__()函數與模板集成在一起。但是你的回答改變了我想如何使用webpack的方式。 – Littlee

+0

你能描述你使用模板的環境嗎?我們可以推動替代邏輯到一個加載器,但這隻會讓我們失去i18n的理念。我覺得你可能需要在Webpack之外做一些動態的工作,並在客戶端應用翻譯。 –

相關問題