【发布时间】:2015-01-13 01:52:47
【问题描述】:
我正在尝试了解将我的 PHP 网站翻译成其他语言的最佳方式。我的网站目前是英文的,我知道我可以使用不同的语言变量设置创建不同的语言文件(例如 en.php、pt.php、es.php 等)。
但是,我读过使用 *.po 或 *.pot 文件可以使翻译网站更容易。
是否有一种工具可以提取我网站中的所有英文文本,然后将其放入 *.po 文件中?
【问题讨论】:
标签: php multilingual po
我正在尝试了解将我的 PHP 网站翻译成其他语言的最佳方式。我的网站目前是英文的,我知道我可以使用不同的语言变量设置创建不同的语言文件(例如 en.php、pt.php、es.php 等)。
但是,我读过使用 *.po 或 *.pot 文件可以使翻译网站更容易。
是否有一种工具可以提取我网站中的所有英文文本,然后将其放入 *.po 文件中?
【问题讨论】:
标签: php multilingual po
PHP 中的GetText 函数是处理多种语言的好方法。
首先.po、.mo和.pot的区别:
.POT 可移植对象模板。这是您从应用程序中提取文本时获得的文件。通常,您将此文件发送给您的翻译人员。
.PO 可移植对象。这是您从翻译人员那里收到的文件。这是一个包含原文和译文的文本文件。
.MO 机器对象。 MO 文件包含与 PO 文件完全相同的内容。这两个文件的格式不同。 PO 文件是文本文件,易于人类阅读,而 MO 文件是经过编译的,易于计算机阅读。您的网络服务器将使用 MO 文件来显示翻译。
在 PHP 中的使用
<?php
// Set language to German
putenv('LC_ALL=de_DE');
setlocale(LC_ALL, 'de_DE');
// Specify location of translation tables
bindtextdomain("myPHPApp", "./locale");
// Choose domain
textdomain("myPHPApp");
// Translation is looking for in ./locale/de_DE/LC_MESSAGES/myPHPApp.mo now
// Print a test message
echo gettext("Welcome to My PHP Application");
// Or use the alias _() for gettext()
echo _("Have a nice day");
?>
工具
我使用的工具是Poedit。这些工具允许您在 POT 中的新文本之间进行合并,然后生成 PO 或 MO 文件。
【讨论】: