【问题标题】:Selecting different languages from SQL database with PHP使用 PHP 从 SQL 数据库中选择不同的语言
【发布时间】:2019-02-10 16:38:38
【问题描述】:

我的网站有 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';

我的语言切换使用简单的&lt;a href="?lang=X"&gt;,并且 ?lang=X 也会显示在 URL 中。

够了。 由于 XML 非常不切实际,我想将整个东西切换到 SQL 数据库。

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

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

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

【问题讨论】:

  • 我认为这取决于你想如何攻击它。您可以创建一个查询键的函数,然后让它输出文本,例如,如果您有一些像这样的 html:= getText('main_menu', 'german' ) ?> 另外,如果我要使用数据库,我可能会先检查 redis 或 memcache,然后再检查数据库。说实话,我可能会使用 gettext 并且仅在翻译公司使用工具填充并使用 TAL 模板之后使用数据库作为生成这些文件的一种方式。
  • 我不会尝试开发 i18n 的自定义实现,而是使用维护良好并被证明可以像 symfony.com/doc/current/components/translation.htmldocs.zendframework.com/zend-i18n 一样工作的现有库。

标签: php mysql database session multilingual


【解决方案1】:

我喜欢 OpenCart 实现这一点的方式,因为它很简单并且不会向数据库添加额外的调用。看看他们的实现。你从开源项目中学到了很多调查和学习。

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

language->get('heading_title');

【讨论】:

    猜你喜欢
    • 2018-12-01
    • 2022-01-16
    • 2016-08-31
    • 2022-08-17
    • 2017-03-19
    • 2019-01-19
    • 2012-09-24
    • 2015-05-31
    • 1970-01-01
    相关资源
    最近更新 更多