Wil*_*tin 6 php ubuntu-server php-gettext
我目前正在开发一个需要提供法语和英语的PHP Web应用程序.我环顾四周,发现Gettext()功能提供了最佳性能.
我用命令生成了我的.pot文件
xgettext PhpFileToTranslate.php -o NameOfTemplateFile.pot
Run Code Online (Sandbox Code Playgroud)
并成功生成了一个.pot文件.我使用PoEdit生成messages.po文件并创建了messages.mo
这是我的服务器文件:
/app
/locale
/en_US
/LC_MESSAGES
messages.po
messages.mo
/fr_FR
/LC_MESSAGES
messages.po
messages.mo
template.pot
Run Code Online (Sandbox Code Playgroud)
我在php文件中设置语言环境,如下所示:
$language = $_SESSION['language']; //session contains 'fr_FR.UTF-8' or 'en_US.UTF-8'
setlocale(LC_ALL, $language);
bindtextdomain('messages', './locale');
textdomain('messages');
Run Code Online (Sandbox Code Playgroud)
但我只看到标签,而不是翻译......我试着把'fr_FR'代替'fr_FR.UTF-8'和所有种类的字符串,但它不起作用.
我错过了什么吗?我的服务器是带Apache和php5的Ubuntu 12.04服务器
小智 7
要在linux上编译.mo文件,您需要在服务器和编译它的机器上安装locales.语言环境是操作系统支持的语言.
如本教程中所述:http://dev.jimdo.com/archive-old-blog/tutorial-for-the-easy-use-of-gettext-for-internationalization-of-php-apps/ 验证您有linux上安装的语言环境
确保你想要使用的语言环境安装在你的linux中并使用.UTF-8(你想要i18n所以请使用UTF!):
# Example for debian
dpkg-reconfigure locales
Run Code Online (Sandbox Code Playgroud)
- 在linux上安装新的语言环境
列出系统上实际安装的语言:
locale -a
Run Code Online (Sandbox Code Playgroud)
安装fr_FR的示例:
#List the available i18n locales
less /usr/share/i18n/SUPPORTED
Run Code Online (Sandbox Code Playgroud)
安装语言环境(这里是fr_FR.utf8)
locale-gen fr_FR.utf8
Run Code Online (Sandbox Code Playgroud)
重新配置系统上的区域设置
sudo dpkg-reconfigure locales
Run Code Online (Sandbox Code Playgroud)
使用PoEdit重新编译.mo文件,这应该可以解决问题.确保在服务器和计算机上安装语言环境,以编译.mo文件.
希望有所帮助
| 归档时间: |
|
| 查看次数: |
1025 次 |
| 最近记录: |