我想让babel解析一个文件并找出一些简单的翻译字符串:
(_
结束于:
)
因此file.myext
中的翻译部分可能是:
(_ "message")
字符串文字始终以双引号(“)开头和结尾。
有一些参考文献:http://babel.pocoo.org/en/latest/messages.html?highlight=parser
但这似乎是一件非常复杂的事情。有人可以提供一个简单的例子来为具有上述约束的babel实现自己的消息提取器吗?
我可以从https://github.com/pallets/jinja/blob/99498320871a290f5799d4f96a7774fc8a34381e/jinja2/ext.py
找到Jinja2解析器但是吧?!
Django项目也有自己的提取器:https://github.com/python-babel/django-babel/blob/master/django_babel/extract.py
答案 0 :(得分:1)
这些看似复杂的原因是因为他们使用lexical analysis(又名“lexers”)来解析输入并找到字符串。这可能看起来过于复杂,但它是一个非常成熟的计算机科学领域,也是这项工作的正确工具。大多数初学者都会从这种任务的正则表达式和自定义代码开始,如果他们坚持并从可用内容中学习,最终会得到词法分析器和解析器。
根据您自己的定义,您正在寻找:
(
_
"
"
)
many lexing / parsing libraries in Python这是一个很大的问题,也是介绍这项技术的完美方式。
您还需要考虑其他一些案例:
(_ 'single quotes')
(_ '''multi
line
quotes''')
(_ "strings with \"escaped quotes\".")
(_ "strings with 'mixed quotes'")
(_ "strings that are just wrong')