如果您想在应用程序范围内管理您的区域设置(不是每个用户),您应该检查 AppController 的 beforeFilter() 中 URL 中的当前区域设置。您的 :language 前缀Router
将确保您为不同的本地化内容提供唯一的 URL。
$this->Html->link()
如果以正确的方式管理 Config.language 配置设置,它将按您的预期运行。
所以在你AppController::beforeFilter()
做一个 if() 语句来检测正在请求哪个语言环境,并取决于它:
Configure::write('Config.language', 'fre');
或者
Configure::write('Config.language', 'eng');
这样做将确保 I18n 和TranslateBehavior访问相同的语言值。
如果您想管理每个用户的应用程序区域设置,您可以将当前区域设置存储在 Session 中:
class AppController extends Controller {
public function beforeFilter() {
Configure::write('Config.language', $this->Session->read('Config.language'));
}
}
当然,您还应该使用翻译函数 __()。查看 Cake Book 的国际化和本地化部分。哦,是的,那篇文章的“细则”中还提到了一些非常重要的东西:
本地化应用程序的另一个方面是使用翻译功能未涵盖的,即日期/货币格式。不要忘记 CakePHP 是 PHP :),因此要设置这些内容的格式,您需要使用 setlocale。如果您将计算机上不存在的语言环境传递给 setlocale,它将无效。locale -a
您可以通过在终端中运行命令来查找可用语言环境的列表。