1

我目前正在使用带有 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)可以像 java 中的 eclipse 一样自动为我做到这一点。

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

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

4

1 回答 1

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”系统中,它的LFadn 8Bit commodore 是CR

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

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


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

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

于 2010-07-02T18:10:45.503 回答