我正在开发一个JavaScript应用程序,到目前为止我的所有字符串都以纯文本形式输入。
这开始变得非常hacky(我习惯了gettext)所以我更喜欢将它们全部包装在像{{translatable_string}}这样的东西中,并且只需要搜索/替换它们在构建步骤中。
所以,我的问题是;是否有一个泛型(没有特定于框架的角度gettext或类似的东西)gettext replacer在那里?
显然,它甚至不必以任何方式连接到JavaScript,您应该能够在任何文件类型上运行它并且{{translatable_string}}:s被翻译
答案 0 :(得分:0)
您可能需要考虑使用gulp-replace。正如他们在this answer中所解释的那样,您应该能够使用它来查找和替换流中所需的任何字符串。
答案 1 :(得分:0)
如果您的应用可以动态生成页面内容,我建议为您的翻译建立一个字符串数据库。从英语开始或以正常情况为准,但如果没有强大的系统,则需要本地化内容是一个棘手的问题。可以使用简单的MongoDB表来存储内容,当应用程序需要接口时,可以使用正确的本地化字符串加载它。例如:
if(err) alert("Please turn off caps lock");
可能会成为:
if(err) alert(Please_turn_off_caps_lock.English);
如果您需要使用gulp构建静态页面,则与gulp-replace结合使用的数据库听起来很有趣。使用gulp-data来调用和打包字符串,然后您可以将其提供给gulp-replace并更改文件。数据库或文档存储的可扩展性使您可以扩展本地化,而无需一直攻击单个文件或树。
答案 2 :(得分:0)
var gettext = require("gulp-gettext-parser");
var rename = require("gulp-rename");
gulp.task("gettext", function() {
return gulp.src("src/**/*.js")
.pipe(gettext())
.pipe(rename("bundle.po"))
.pipe(gulp.dest("dist/"));
});
答案 3 :(得分:0)
也许你需要的是 mustache.js ,看看:https://github.com/janl/mustache.js/
我不习惯使用小胡子,但我必须在完成它的项目中做一些更新,我对它的功能感到惊讶。
如果你熟悉jade
(现在改名为哈巴狗),你会发现类似的东西,但最后,你不会被迫只生成html文件,你可以生成任何类型的文本文件。
此博客可能有助于理解其他一些模板语言与Nodej之间的差异:https://strongloop.com/strongblog/compare-javascript-templates-jade-mustache-dust/