代码之家  ›  专栏  ›  技术社区  ›  Evgeny

“django-admin.py makemessages”或xgettext调用中的错误?->“警告:未终止的字符串”

  •  0
  • Evgeny  · 技术社区  · 16 年前

    django-admin.py生成消息 在包装很长字符串的情况下,会出现错误“警告:未终止字符串”:

    string = "some text \
              more text\
              and even more"
    

    这些字符串甚至不需要翻译,例如sql查询字符串。

    有人有这样的问题吗?你找到解决办法了吗?

    我有以下版本的相关工具:

    有一个 ticket 在这个问题上,它被关闭了,可能是因为错误只出现在某些组件版本的组合中。

    -xgettext将警告消息打印到sterr,django将其视为致命错误并退出。

    xgettext调用的返回状态为0-“成功”。我想django应该意识到这是成功的,而不是因为警告而退出。

    有趣的是,如果需要翻译,xgettext仍然提取反斜杠包装的字符串,但在stderr中给出警告( “未终止字符串” )和.po文件( “国际化消息不应包含“\r”转义序列” )

    xgettext调用如下所示:

    xgettext -d django -L Python --keyword=gettext_noop \
             --keyword=gettext_lazy --keyword=ngettext_lazy:1,2 \
             --keyword=ugettext_noop --keyword=ugettext_lazy \
             --keyword=ungettext_lazy:1,2 
             --from-code UTF-8 -o - source_file.py
    

    从django/core/management/commands/makemessages.py调用

    1 回复  |  直到 16 年前
        1
  •  2
  •   Alice Purcell    16 年前

    无论哪种方式,我都会利用C风格的自动字符串连接:

    >>> string = ("some text "
    ...           "more text "
    ...           "and even more")
    >>> string
    'some text more text and even more'
    

    或者,如果您不介意换行符在其中结束,请使用多行字符串:

    >>> string = """some text
    ...             more text
    ...             and even more"""
    

    这有用吗?

    推荐文章