我正在使用PHP。
我有一个系统,我需要翻译成法语,意大利语,西班牙语......
所以我提出了两个解决方案。
解决方案1: 所有语言字符串都存储在数据库中,以便管理员可以轻松编辑。因此,在每个页面上,我需要调用此表以获取正确的字符串。
解决方案2: 与第一个相同,除了我将在每次更改Json文件后生成。将在每个页面上调用此Json文件以打印正确的字符串。
我的解决方案的女巫是最好的请求?
或许,存在另一种解决方案吗?
感谢。
答案 0 :(得分:1)
我曾经做过多种语言的项目。这是一个很大的麻烦。我不推荐下面的方法,而是向您展示如何实现它。
lang.en.php
$lang = array();
$lang['menu'] = array(
'home' => 'Home',
'projects' => 'Projects',
'about' => 'About',
'contact' => 'Contact'
);
$lang['some_other_section'] = array(
'some_value' => 'some value',
...
...
);
lang.no.php
$lang = array();
$lang['menu'] = array(
'home' => 'Hjem',
'projects' => 'Prosjekter',
'about' => 'Om',
'contact' => 'Kontakt'
);
$lang['some_other_section'] = array(
'some_value' => 'En annen verdi',
...
...
);
现在,最大的麻烦是使用变量在应用程序中编写所有文本,然后添加它们并在每个语言文件中进行翻译。
的index.php
<div class="menu">
<a href="#"><?php echo $lang['menu']['home']; ?></a>
<a href="#"><?php echo $lang['menu']['projects']; ?></a>
<a href="#"><?php echo $lang['menu']['about']; ?></a>
<a href="#"><?php echo $lang['menu']['contact']; ?></a>
</div>
您必须设置&#34;有效&#34;语言在页面初始化的某些地方。即:
<?php
session_start();
if($_SESSION['lang'] == "en") {
require('lang.en.php');
} elseif($_SESSION['lang'] == "no") {
require('lang.no.php');
}
?>
<html>
<head>
...
...
答案 1 :(得分:0)
使用数据库:您可以在包含每种语言答案的表格中保存问题和答案 - 这很简单,然后设置RBAC模块以允许特定用户添加新的问题和答案。
questions_table:
question_id (int) 255 PK AUTO_INCREMENT
question (varchar) 160
answers_table:
answer_id (int) 255 PK AUTO_INCREMENT
question_id (int) 255
language_id (int) 255
answer (varchar)
language_table:
language_id (int) 255 PK AUTO_INCREMENT
language (varchar) 30
user table and user answer table also
使用这个,您将能够使用INNER JOIN
sql语句在表之间进行引用,然后您需要做的就是为您的连接创建一个驱动程序对象(最好是pdo),然后为回答问题的对象,登录,注册,管理和前端显示。