在Ubuntu上实现PHP的多语言支持,可以按照以下步骤进行:
首先,确保你的系统已经安装了PHP和相关的多语言支持库。
sudo apt update sudo apt install php php-cli php-fpm php-mysql php-bcmath php-gd php-mbstring php-xml php-zip gettext 是一个用于多语言支持的库。
sudo apt install gettext 编辑PHP配置文件(通常是 /etc/php/7.x/cli/php.ini 或 /etc/php/7.x/fpm/php.ini),确保以下行没有被注释掉:
zend.enable_gc = 1 zend_extension=/usr/lib/php/20190902/xdebug.so 在你的项目目录中创建一个 locale 目录,并在其中创建不同语言的 .po 和 .mo 文件。
mkdir -p locale/en/LC_MESSAGES mkdir -p locale/zh_CN/LC_MESSAGES 使用 xgettext 工具从PHP代码中提取字符串:
xgettext --language=PHP --keyword=_ --output=locale/messages.pot . 然后,使用 msginit 工具为每种语言创建 .po 文件:
msginit --input=locale/messages.pot --locale=en --output-file=locale/en/LC_MESSAGES/messages.po msginit --input=locale/messages.pot --locale=zh_CN --output-file=locale/zh_CN/LC_MESSAGES/messages.po 编辑 .po 文件以添加翻译。
使用 msgfmt 工具将 .po 文件编译成 .mo 文件:
msgfmt -o locale/en/LC_MESSAGES/messages.mo locale/en/LC_MESSAGES/messages.po msgfmt -o locale/zh_CN/LC_MESSAGES/messages.mo locale/zh_CN/LC_MESSAGES/messages.po 在你的PHP代码中使用 _() 函数来标记需要翻译的字符串。
<?php putenv('LANG=en_US.UTF-8'); setlocale(LC_ALL, 'en_US.UTF-8'); echo _('Hello, World!'); ?> 如果你使用的是Apache,确保启用了 mod_rewrite 和 mod_deflate 模块。
sudo a2enmod rewrite deflate sudo systemctl restart apache2 如果你使用的是Nginx,确保配置了正确的重写规则。
访问你的PHP应用,检查是否正确显示了不同语言的文本。
通过以上步骤,你应该能够在Ubuntu上成功实现PHP的多语言支持。