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