第 1 步:安装 gettext 库 安装 gettext 库,它提供了一组函数和实用程序,用于处理语言翻译。使用 Composer 安装它:
composer require ext-intl
第 2 步:创建翻译文件 创建 .po(可移植对象)文件来存储您的翻译。.po 文件包含如下信息:
- 原始文本(需要翻译的内容)
- 翻译(原始文本在目标语言中的对应内容)
- 语句注释
第 3 步:提取翻译字符串
使用 gettext 函数 gettext()
提取需要翻译的字符串。在您的 PHP 文件中:
$translatedString = gettext("Original string");
第 4 步:编译翻译文件 编译 .po 文件以生成 .mo(机器对象)文件。.mo 文件是二进制文件,gettext 函数可以使用它来查找翻译:
msgfmt -o translations.mo translations.po
第 5 步:设置语言环境
在处理请求之前,设置当前语言环境以确定要使用的翻译。使用 setlocale()
函数:
setlocale(LC_ALL, "en_US.UTF-8");
第 6 步:获取翻译
使用 _()
函数获取特定语言环境下的翻译:
$translatedString = _("Original string");
第 7 步:处理复数形式
对于将复数形式与语言相关的语言(例如法语和德语),您需要使用 ngettext()
函数:
$translatedString = ngettext("One item", "%d items", $count);
第 8 步:管理不同语言的 URL 为了支持不同语言的 URL,您可以使用路由器组件或使用重写规则。例如,使用 Laravel 框架:
Route::get("/{locale}/home", "HomeController@home");
第 9 步:存储用户首选语言 存储用户首选语言以便后续请求使用。可以使用会话、数据库或 cookie 来保存此信息。
第 10 步:最佳实践
- 使用一致的命名约定,以便于翻译和维护。
- 避免硬编码字符串,始终使用 gettext 函数。
- 使用辅助函数来处理复数形式和性别特异性翻译。
- 经常更新您的翻译文件,以保持应用程序的准确性和最新性。