【问题标题】:Parse data-i18n attributes in html element解析 html 元素中的 data-i18n 属性
【发布时间】:2014-09-23 11:25:25
【问题描述】:

我正在尝试使用自定义正则表达式(也使用默认 i18n.t 函数)从 html 文件中解析“data-i18n”属性:

i18next modules/ -o lang/ -r '[^a-zA-Z0-9](?:(?:t)|(?:i18n\\.t)|(?:data-i18n))(?:\\(|\\s|=)\\s*(?:(?:\'((?:(?:\\\\\')?[^\']+)+[^\\\\])\')|(?:"((?:(?:\\\\")?[^"]+)+[^\\\\])"))'

解析器可以在这里找到: https://github.com/karellm/i18next-parser

文档中的命令:

i18next /path/to/file/or/dir -r "(.*)"

该正则表达式已经在 regexpal 和 debuggex 上进行了测试,它匹配了正确的标签:

[^a-zA-Z0-9](?:(?:t)|(?:i18n\.t)|(?:data-i18n))(?:\(|\s|=)\s*(?:(?:'((?:(?:\\')?[^']+)+[^\\])')|(?:"((?:(?:\\")?[^"]+)+[^\\])"))

我尝试以各种形式转义正则表达式字符串,但它不起作用。 怎么做才合适?

【问题讨论】:

    标签: javascript regex node.js i18next


    【解决方案1】:

    考虑如下使用 gulp:

    var i18next = require("i18next-parser");
    var gulp = require("gulp");
    
    gulp.task("i18next-parse", function () {
        gulp.src("js/modules/**")
            .pipe(i18next({locales: ['en', 'hu'],
                parser: '[^a-zA-Z0-9](?:(?:t)|(?:i18n\\.t)|(?:data-i18n))(?:\\(|\\s|=)\\s*(?:(?:\'((?:(?:\\\\\')?[^\']+)+[^\\\\])\')|(?:"((?:(?:\\\\")?[^"]+)+[^\\\\])"))',
                output: "js/lang"})
                .on('reading', function(path) {
                    console.log("Reading: " + path);
                })
                .on('writing', function(path) {
                    console.log("Writing: " + path);
                }))
            .pipe(gulp.dest('js/lang'));
    });
    

    您可以通过这种方式传递正则表达式(这是您尝试在命令行中传递时的问题)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-13
      • 2023-03-07
      • 1970-01-01
      相关资源
      最近更新 更多