【发布时间】:2015-12-22 06:34:46
【问题描述】:
是否可以从动态源加载 JSON 文件?我想做一些本地化
grunt.file.readJSON('src/locales/<%= grunt.task.current.args[0] %>/i18n.json');
更完整的 Gruntfile 示例如下所示:
module.exports = function(grunt) {
var i18n = {
locales: ['en', 'fr', 'de', 'es'],
default: 'en',
replacements: function(locale){
var content = grunt.file.readJSON('src/locales/<%= grunt.task.current.args[0] %>/i18n.json');
var arr = [];
for(i in content){
var replacement = {
from: i,
to: content[i].value
};
arr.push(replacement);
}
return arr;
}
};
// Project configuration.
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
replace: {
build: {
src: ['local/en/**/*.html'], // source files array (supports minimatch)
dest: 'local/<%= grunt.task.current.args[0] %>/', // destination directory or file
replacements: i18n.replacements('<%= grunt.task.current.args[0] %>')
}
},
注册任务时的样子:
grunt.registerTask('localise', function(){
var tasks = [];
for(i in i18n.locales){
if(i18n.locales[i] !== i18n.default){
tasks.push('replace:build:' + i18n.locales[i]);
}
}
grunt.task.run(tasks);
});
除了加载 JSON 来实际进行替换之外,一切都如我所愿。
我也试过了:
grunt.file.readJSON('src/locales/'+locale+'/i18n.json');
这也不起作用,让我有点难过。
谁能帮忙?
谢谢
【问题讨论】:
标签: javascript json gruntjs npm