我仍然支持数据库的想法。
假设您有输入字段,旁边有英文的“用户名”,默认值为“输入您的用户名”。你可以有类似的东西:
<td><?=$obj->translate('username');?></td>
<td><input type="text" name="username" value="<?=$obj->translate('enter_username');?>" /></td>
所以你有即在你的数据库表translations:
id | placeholder | en | pl |
-------------------------------------------------------------------------
1 | username | Username | Nazwa użytkownika |
2 | enter_username | Enter your username | Wprowadź nazwę użytkownika |
所以你的客户是波兰人,你设置他$_SESSION['language'] = 'pl'
您构建函数/方法 translate(),它返回当前语言翻译。
public function translate($word) {
$sql = "SELECT $_SESSION['language'] FROM translations WHERE placeholder = '$word';";
$this->db->query($sql);
return $this->db->result();
}
因此,基本上,当您为波兰客户运行 $obj->translate('enter_username'); 时,您会进行如下查询:
SELECT pl FROM translations WHERE placeholder = 'enter_username';
返回 'Wprowadź nazwę użytkownika'
每次您需要打印某些内容时,您都必须将其占位符插入到您的数据库中,稍后或立即将其插入翻译。
如果您需要通过 javascript 发出错误警报,例如,对于错误的用户名,您可以在数据库中添加一个占位符,即“wrong_username_from_login_form”最近用英文翻译为“您输入了错误的用户名。请返回并重试”。
你可以拥有:
<script>
alert("<?=$obj->translate('wrong_username_from_login_form');?>");
</script>
如果您的客户是英国人,他会在屏幕上提示:“您输入了错误的用户名。请返回并重试”