如何使用pdo对象从数据库翻译构建多语言表单?
例如,有我的代码来创建pdo对象:
try {
$pdo = new PDO("mysql:host=$servername;dbname=$dbname",$username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo $e->getMEssage();
die();
}
$sql = "SELECT FROM `lang_content` `id`, `:lang`";
$query = $pdo->prepare($sql);
if($query->execute(array(
':lang' => $_GET['lang'].'_content'
))){
// Show content
}
MySQL表结构:
CREATE TABLE `lang_content` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`en_content` VARCHAR(1000) NULL DEFAULT NULL,
`lv_content` VARCHAR(1000) NULL DEFAULT NULL,
`ru_content` VARCHAR(1000) NULL DEFAULT NULL,
PRIMARY KEY (`id`)
)
COMMENT='All translations'
ENGINE=MyISAM
;
MySQL表数据示例:
id en_content lv_content ru_content
1 MOD KASKO КАСКО
2 MTPL OCTA ОСАГО
我想用它像: 如果lang en
<?= $result->1 ?> // Echo MOD
将返回MOD,
<?= $result->2 ?> // Echo MTPL
将返回MTPL
答案 0 :(得分:0)
老实说,通过数据库进行翻译并不是一种好的做法。许多大平台通过某种文本格式来实现。例如,magento通过csv文件来完成它。
您可以使用以下代码开始开发。
您的西班牙语翻译文件es.csv
'Home', 'Inicio'
'Page 1', 'Pagina 1'
'Page 2', 'Pagina 2'
'Page 3', 'Pagina 3'
第一列单词将是您在函数中定义的默认语言。
<a href="#"><?php __("Home"); ?>
然后,您将使用类似于顶部的switch语句来捕获用户选择的语言。 __()
函数看起来像这样。输入将是“家”
$csv = array_map('str_getcsv', file($file));
// Logic (where it would do the translation)
// It could look for the input in the $cvs variable if it exist then use the next value of the current array. Else keep the text the same.
您的cvs文件需要制作要翻译的确切字词。