我正在使用angular-translate,并且有许多包含翻译字符串的JSON文件,我已经使用json-combine进行设置,将所有单个文件合并为每种语言的单个文件。生成的文件如下所示:
{
"myNamespace" : {
"CANCEL" : "Cancel",
"PENDING" : "Pending",
"module" : {
"USERNAME" : "User name",
"PASSWORD" : "Password"
}
}
}
但是,我需要在每个翻译字符串的开头和结尾添加字符,以便执行测试,在应用程序的任何地方都没有任何硬编码字符串,并且似乎无法计算如何做到这一点。
我可以手动修改每个字符串并创建一个单独的语言文件,但我更愿意以编程方式执行,并在其余的gulp任务之后执行。基本上它应该采用完全组合的英文文件并修改每个叶节点,如下所示:
{
"myNamespace" : {
"CANCEL" : "\u4ECFCancel\u7D42",
"PENDING" : "\u4ECFPending\u7D42",
"module" : {
"USERNAME" : "\u4ECFUser name\u7D42",
"PASSWORD" : "\u4ECFPassword\u7D42"
}
}
}
这可能吗?任何帮助将不胜感激。
答案 0 :(得分:0)
我能够自己解决这个问题,使用以下gulp任务:
gulp.task("i18n-pseudo-locale", function() {
return gulp.src(distDirectory + "/l10n/en_US.json")
.pipe(jsoncombine(pseudoLocale + ".json", function(data) {
var originalJson = data["en_US"];
function processJson(json) {
// Leaf node
if (typeof(json) === "string") {
return "\u4ECF" + json + "s\u7D42";
}
// object
for(var propertyName in json) {
json[propertyName] = processJson(json[propertyName]);
}
return json;
}
finalJson = processJson(originalJson);
return new Buffer(JSON.stringify(finalJson));
}))
.pipe(gulp.dest(distDirectory + "/l10n"));
});