在html元素中解析data-i18n属性

时间:2014-07-31 13:32:43

标签: javascript regex node.js i18next

我正在尝试解析数据-i18n'具有自定义正则表达式的html文件中的属性(也使用默认的i18n.t函数):

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*(?:(?:'((?:(?:\\')?[^']+)+[^\\])')|(?:"((?:(?:\\")?[^"]+)+[^\\])"))

我尝试以各种形式转义正则表达式字符串,但它无法正常工作。 怎么做得好?

1 个答案:

答案 0 :(得分:2)

考虑使用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'));
});

你可以通过这种方式传递正则表达式(当你试图传递命令行时这就是问题。)