如何使用POEdit解析器忽略PHP断行?

时间:2010-07-02 18:00:50

标签: php whitespace gettext line-breaks poedit

我目前正在使用带有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时复制换行符

1 个答案:

答案 0 :(得分:0)

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

 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 adn 8Bit且其a CR

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

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


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

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