Gettext()包含更大的文本

时间:2013-08-14 10:17:55

标签: php gettext

我使用gettext()翻译我网站上的一些文字。主要是短文/按钮,如"返回","姓名",......

// I18N support information here
$language = "en_US";
putenv("LANG=$language");
setlocale(LC_ALL, $language);


// Set the text domain as 'messages'
$domain = 'messages';
bindtextdomain($domain, "/opt/www/abc/web/www/lcl");
textdomain($domain);

echo gettext("Back");

我的问题是,' long'这个文本(id)可以在echo gettext("")部分吗?

是否会减慢长文本的流程?或者它也能正常工作吗?像这样举例如:

echo _("LZ adfadffs is a VVV contributor who writes a weekly column for Cv00m. The former Hechinger Institute Fellow has had his commentary recognized by the Online News Association, the National Association of Black Journalists and the National ");

3 个答案:

答案 0 :(得分:6)

官方gettext documentation仅提供此建议:

  

可翻译字符串应限于一个段落;不要让一条消息长于十行。原因是当可翻译字符串改变时,翻译者面临更新整个翻译字符串的任务。也许只有一个单词会在英文字符串中发生变化,但翻译人员看不到(使用当前的翻译工具),因此她必须校对整个消息。

字符串的长度没有官方限制,它们显然可以超过“一段/ 10行”。

对于长串,几乎没有可测量的性能损失。

答案 1 :(得分:0)

function gettext http://www.php.net/manual/en/function.gettext.php

它被定义为字符串输入,因此您的机器内存将成为限制因素。

如果您在开发机器上使用xdebug,请尝试使用microtime或更好的xedbug进行基准测试。

答案 2 :(得分:0)

gettext在字符串长度上有效限制 4096个字符

当您通过此限制时,您会收到警告:

Warning: gettext(): msgid passed too long in %s on line %d

并返回bool(false)而不是文字。

<强>来源: PHP Interpreter repository - The real fix for the gettext overflow bug