【问题标题】:How to ignore PHP break lines with POEdit parser?如何使用 POEdit 解析器忽略 PHP 换行符?
【发布时间】:2011-03-11 05:30:53
【问题描述】:

我目前正在使用带有 POEdit 的 gettext 翻译我的 PHP 应用程序。由于我尊重源代码中的打印边距,因此我习惯于编写这样的字符串:

print $this->translate("A long string of text
    that needs to follow the print margin and since
    php outputs whitespaces for every break line I do
    my sites renders correctly.");

但是,在 POEdit 中,正如预期的那样,换行符不会转义为空格。

A long string of text\n
    that needs to follow the print margin and since\n
    php outputs whitespaces for every break line I do\n
    my websites render correctly.\n

我知道一种方法是在更改源代码中的行时关闭字符串:

print $this->translate("A long string of text " . 
    "that needs to follow the print margin and since " .
    "php outputs whitespaces for every break line I do " .
    "my sites renders correctly. ");

但是当文本需要更改和打印边距时,这不是一种可扩展的方法 仍然受到尊重,除非 netbeans(我使用的 IDE)可以像 eclipse 一样自动为我做到这一点 在java中。

总之,有没有办法告诉 POEdit 解析器将换行符转义为首选项中的空格?

我知道即使换行符没有转义,字符串仍然可以翻译,我这样问是为了让我的 traductor(有时甚至是客户/用户)在 POEdit 中翻译时避免混淆认为他需要复制换行符.

【问题讨论】:

    标签: php whitespace gettext line-breaks poedit


    【解决方案1】:

    您必须确保在脚本和应用程序中使用正确的换行符

     LF:    Line Feed, U+000A
     FF:    Form Feed, U+000C
     CR:    Carriage Return, U+000D
     CR+LF: CR (U+000D) followed by LF (U+000A)
     NEL:   Next Line, U+0085
     LS:    Line Separator, U+2028
     PS:    Paragraph Separator, U+2029
    

    在 Windows 系统 (ms-dos) 中,换行符是 CR+LF,而在“类 Unix”系统中,它的 LF 和 8Bit commodore 是 CR

    您必须确保源位置包含与您的编辑位置相同类型的提要。

    您的服务器处理的换行符与运行编辑器的主机不同,只需仔细检查并根据您的操作系统开发一些自动替换 Unicode 字符的方法


    正如您所说的“使用带有 POEdit 的 gettext 翻译我的 PHP 应用程序”,我会创建一个脚本来通过 shell/doss/php 扔掉所有文件,并将字符代码自动转换为您运行的系统类型.

    因此,如果您在 Windows 上工作,那么您将搜索 U+000A 的所有字符并替换为 U+000DU+000A

    【讨论】:

    • 我没有跨操作系统的换行问题,因为我确保在我的源代码中使用类似 Unix 的换行符(或者我可能没有清楚地理解你的陈述)。我认为有一种简单的方法可以将换行符解释为 xgettext 解析器命令中的空格。这可能吗?
    猜你喜欢
    • 2014-03-08
    • 1970-01-01
    • 2020-09-11
    • 1970-01-01
    • 2015-09-10
    • 2013-04-07
    • 2011-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多