我有yii語言本地化打開,所以我用在配置'language'=>'en',
和寫的東西,如Yii::t('layouts_main','Home')
和商店翻譯Home
在php文件中。 但除此之外,我有表格,並且裏面有不同語言的數據。 例如,我有一個國家的列表,必須以不同的語言存儲在MySQL表中。 表格結構非常簡單:id, name_en,name_de,name_es
etc ... 我這樣做,所以如果語言改變這兩個字母必須控制從哪個賣書讀取名稱。yii語言本地化的MySQL表數據到視圖
在我的控制,我得到我的數據,從表到陣列
$tableCountry = Country::model()->findAll();
然後我做這樣的變量,它containt "name+"
語言變量,它是在配置 $name_lang ="name_".Yii::app()->Language;
'en'
所以現在我做了變量$name_lang
其中包含name_en
然後我選擇合適的銷售使用$name_lang
變量
$list=CHtml::listData($modelCountry,'id',$name_lang);
僅使用$ name_lang name_en數據將轉到List。因此,稍後我可以將配置文件中的語言設置切換爲「de」,並且只有name_de數據將會轉到List。
所以一切都很好。 但如果我有複雜的表包含country_name_en,city_name_en,region_name_en等等
爲了把這個數據到名單上有使3級或更多的變量
$country_name_lang ="country_name_".Yii::app()->Language;
$city_name_lang ="city_name_".Yii::app()->Language;
$region_name_lang ="region_name_".Yii::app()->Language;
所以我想知道有沒有其他更好的方法來做這樣的事情?
如果所有表格列都有語言後綴,則可以將其置於模型的默認範圍內 – tinybyte
不是,不幸的是,並非所有的都有後綴。我的意思是有像'id','dateCreated'等列,他們沒有後綴。順便說一句,這個後綴也只是我關於如何做到這一點的想法,我的意思是如果有另一種方法,也許有可能做到這一點,甚至沒有?我只是不知道如何。這是我找到的唯一方法。它在工作,但只是認爲會有更好的方式來做到這一點。 – David