私は CakePHP でページを作成しています。URL を翻訳しようとしています。私が望むのは、コントローラー名を翻訳することです。このURLを持っているとしましょう。domain/da/product
それをデンマーク語に翻訳する必要があるので、domain/da/produkt
.
AppHelper で独自の url メソッドを作成しましたが、翻訳のためにモデルにアクセスする際に問題があります。ヘルパーからモデルへのアクセスを検索すると、人々はそのようにすることに反対します。
では、これを行う適切な方法は何でしょうか。ユーザーがリンクを使用するとき、私はそれを元に戻すルックアップを作成する必要がありますdomain/da/product
。
これがApphelperコードです
App::uses('Helper', 'View');
App::import("Model", "ControllerTranslation");
class AppHelper extends Helper {
public function url($url = null, $full = false) {
$Model = new ControllerTranslation();
$lang = Configure::read('Config.language');
$controller = $Model->find("first",array("conditions"=> array("ControllerTranslation.translation = "=> $url['controller'],"ControllerTranslation.language" => $lang)));
if (count($controller))
{
$url['controller'] = $controller["ControllerTranslation"]["translation"];
}
return parent::url($url, $full);
}