PHP FreeMarker 本身不支持多語言,但你可以通過結合其他技術來實現多語言支持。以下是一個簡單的實現方法:
messages_en.php
和 messages_zh.php
),在這些文件中存儲不同語言的翻譯文本。// messages_en.php
return [
'welcome' => 'Welcome to our website!',
'hello' => 'Hello, user!'
];
// messages_zh.php
return [
'welcome' => '歡迎訪問我們的網站!',
'hello' => '你好,用戶!'
];
$userLanguage = $_SESSION['language'] ?? 'en';
include
語句將資源文件包含到 PHP 代碼中,并使用 freeMarker_parse_string
函數解析 FreeMarker 模板中的占位符:$messages = include "messages_{$userLanguage}.php";
$template = <<<FTL
<p>{$messages['welcome']}</p>
<p>{$messages['hello']}</p>
FTL;
$freeMarker = new FreeMarker();
$freeMarker->setTemplateContent($template);
$output = $freeMarker->render($data);
這樣,你就可以根據用戶的語言偏好顯示不同語言的文本了。當然,這只是一個簡單的示例,實際項目中你可能需要更復雜的邏輯來處理語言切換和本地化。你還可以考慮使用更成熟的國際化庫,如 Symfony
的 Translation
組件。