我想开发具有选择语言选项的网站
当时我不知道如何构建我的数据库表,即
或者我应该为每种语言添加单独的字段,例如
tbl_posts
id, title_en,title_fr,description_en,description_fr,....
或者我应该在运行时获得谷歌翻译的帮助
或者还有其他容易做到的事情
其次我需要URLs
喜欢
www.domain.com/en/posts/
& www.domain.com/fr/posts/
答案 0 :(得分:2)
CakePHP的
第1步:在你的lib / Cake / basic.php中添加函数
if (!function_exists('__dbt')) {
function __dbt($text, $args = null) {
if($text==null){
return null;
}else{
$languageUse = Configure::read('Config.language');
if($languageUse!='en-us' && $languageUse!='eng'){
$modelName = ucfirst($languageUse)."Translation";
$model = ClassRegistry::init($modelName);
$data = $model->find('first',array('fields'=>array('translation'),'conditions'=>array("text"=>"$text")));
if(!empty($data[$modelName]) && $data[$modelName]['translation']!=''){
return $data[$modelName]['translation'];//die('1');
}else{
// Please copy & paste below code from your basic.php __() function
App::uses('I18n', 'I18n');
$translated = I18n::translate($text);
$arguments = func_get_args();
return I18n::insertArgs($translated, array_slice($arguments, 1));
}
}else{
// Please copy & paste below code from your basic.php __() function
App::uses('I18n', 'I18n');
$translated = I18n::translate($text);
$arguments = func_get_args();
return I18n::insertArgs($translated, array_slice($arguments, 1));
}
}
}
}
第2步:根据您要使用的语言创建表格 注意:表名应该是locale + _tranlations前缀 例如:hin_translations,tha_translations等。
CREATE TABLE IF NOT EXISTS `hin_translations` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`text` text NOT NULL,
`translation` text NOT NULL,
`created` datetime NOT NULL,
`modified` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
在上表中,在文本列中添加英文字符串,并在翻译栏中添加其翻译。
步骤3:您想要从数据库或语言环境po文件中更改语言字符串,只需使用
__dbt("Write your string here");
:)享受您的多语种网站