【问题标题】:Gulp task to translate JS翻译 JS 的 Gulp 任务
【发布时间】:2016-10-19 15:06:47
【问题描述】:

我正在开发一个 JavaScript 应用程序,到目前为止,我已将所有字符串都输入为纯文本。

这开始感觉很hacky(我习惯于gettext),所以我更愿意将它们全部包装在{{translatable_string}}之类的东西中,并有一个gulp任务只是在构建步骤中搜索/替换它们.

所以,我的问题是;是否有通用的(没有特定于框架的,如 angular-gettext 或类似的东西)gettext 替换器?

显然它甚至不必以任何方式连接到 JavaScript,您应该能够在 任何 文件类型上运行它并翻译 {{translatable_string}}:s。

【问题讨论】:

  • 必须让这些拒绝发表评论的选民失望。这个问题到底有什么问题?

标签: javascript gulp gettext


【解决方案1】:

您可能想考虑使用gulp-replace。正如他们在this answer 中解释的那样,您应该能够使用它来查找和替换流中所需的任何字符串。

【讨论】:

  • 好的,谢谢,我实际上已经将它用于其他任务,但老实说,用它来完成我的整个翻译感觉有点笨拙......如果没有人建议更强大的东西我可能最终会使用它。最好我也想要一些实际使用 .po.mo 文件的东西。
【解决方案2】:

如果您的应用可以动态生成页面内容,我建议为您的翻译建立一个字符串数据库。从英语或任何正常的开始,但如果没有强大的系统,本地化内容的需要是一个棘手的问题。可以使用一个简单的 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 并更改文件。数据库或文档存储的可扩展性使您能够扩展您的本地化,而不会一直侵入单个文件或树。

【讨论】:

  • 谢谢。不过,我并不是真的在寻找如何存储文本的解决方案,我想我会像平常一样使用 po/mo 文件。我所需要的只是一个 gulp/npm 模块,它在构建步骤中处理搜索/替换所有翻译字符串。毕竟我可能最终会使用gulp-replace。似乎没有任何与 gettext 相关的正确可用的东西。
【解决方案3】:

试试gulp-gettext-parser

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/"));
});

【讨论】:

    【解决方案4】:

    也许你需要的是mustache.js,看看:https://github.com/janl/mustache.js/

    我不习惯使用 mustache,但我不得不在使用它完成的项目中进行一些更新,我对它的功能感到惊讶。

    如果你熟悉jade(现在重命名为 pug),你会发现类似的东西,但最后,你不必只生成 html 文件,你可以生成任何类型的文本文件.

    此博客可能有助于了解 Nodejs 上的其他一些模板语言之间的差异:https://strongloop.com/strongblog/compare-javascript-templates-jade-mustache-dust/

    【讨论】:

    • 谢谢。不过,我并不是真的想改变模板语言。这就是为什么我特别要求一个通用模块,即使文件类型如何也能工作(我应该能够在 js、CSS、html 甚至 svg 的任何东西上运行这个东西)
    猜你喜欢
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-13
    • 2021-07-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多