在javascript文件中查找所有字符串变量

时间:2014-09-10 22:15:30

标签: javascript regex string translation

我面临的问题是我必须将更大的html和javascript项目翻译成多种语言。 html内容没有问题,但是大量的javascript文件都有问题,因为我在开发过程中有点懒惰。例如,如果我需要一个消息文本,我只是将其添加到相关位置。

我现在的方法是,我正在使用内置文件搜索(Eclipse)来查找"'的每一次出现,我正在按行进行搜索。这将是非常耗时的,并且错误是不可避免的。

以下是文件中出现的一些示例:

var d = "Datum: " + d.getDate()+"."+(d.getMonth()+1)+"."+d.getFullYear();

showYesNoDialog("heading text","Are you sure?",function(){};

有时我混合"',有时字符串会超过几行:

var list="";
list+='<li data-role="list-divider">';
list+='Text To Translate';
list+='</li>';

我不想得到的东西,是jquery选择器,例如:

$("input[name^=checkbox]").each(function () {};

您是否看到任何时间保存方法来获取我想要翻译的所有字符串? 正则表达式?一个java解释器? grep的?

我知道,这是一个不寻常的问题。 所以任何建议都会很棒。

提前致谢!

1 个答案:

答案 0 :(得分:2)

最好使用某种词法扫描程序将代码转换为令牌,然后遍历令牌列表(或语法树)。有很多这样的工具(我甚至自己创建了其中一个 - 在这里你可以找到一些例子https://github.com/AlexAtNet/spelljs/blob/master/test/scan.js)。

有了它,您可以扫描JS文件并迭代令牌:

var scan = require('./..../scan.js');

scan(text).forEach(function (item) {
    if (item.str) {
        console.log(item);
    }
});