使用PHP从SQL数据库中选择不同的语言

时间:2019-02-10 16:38:38

标签: php mysql database session multilingual

我的网站有2个问题。 这是一种多语言的语言(德语,英语)。 我总是将翻译保存在这样的XML文档中

<?xml version="1.0" encoding="utf-8"?>
<root>
    <les>
        <en>Lesson</en>
        <de>Lektion</de>
    </les>

然后我将这些XML变量转换为php变量,并在需要的地方像这样回显它们

$xml=simplexml_load_file("langindex.xml") or die("xml not found!");
$les = $xml->les->$lang;

<?php echo $les;?>

问题1是,当我打开网站时,没有将语言设置为默认语言,因此即使包含!isset,我也总是必须首先选择一种语言。如果我什么都没有选择,将会拉伸一些图像,这会给我一个错误,即未设置任何语言。

<?php
session_start();
$page = 0;
$lang = $_GET['lang'];
$langArray = array('en','de');
$found = false;

if(in_array($lang, $langArray))
    $found = true;
if(!$found)
    $lang = 'en';

if(!isset($_SESSION['lang']))
    $_SESSION['lang'] = 'en';

if(isset($_GET['lang']) && in_array($_GET['lang'], array('en', 'de')))
    $_SESSION['lang'] = $_GET['lang'];


include '../nihongo/php/dbconnect.php';

我的语言切换器使用简单的<a href="?lang=X">,并且URL上也会显示?lang = X。

足够了。 由于XML不太实用,因此我想将整个过程切换到SQL数据库。

我创建了一个包含ID,德语和英语列的表,并成功连接了数据库。 现在,我希望PHP告诉SQL仅以这样的选择获取会话语言的文本。

SELECT german FROM texts WHERE ID = '1'
SELECT english FROM texts WHERE ID = '2'

我的问题是我真的不知道如何使用PHP做到这一点。 我认为我要么必须以某种方式将PHP var放入该语句中,要么选择整行,然后让PHP决定应显示哪一行。 欢迎任何建议/建议! 预先感谢!

1 个答案:

答案 0 :(得分:0)

我喜欢OpenCart实现此方法的方式,因为它很简单并且不会向数据库添加其他调用。看一下它们的实现。您会从开放源代码项目中学到很多调查和学习。

每种语言和模块都有一个php脚本,并带有包含所有字符串的数组。它仅包含或加载脚本以访问字符串,例如:en-gb。使用此方法通过其键加载字符串:

language->get('heading_title');