Выбор разных языков из базы данных SQL с помощью PHP - PullRequest
0 голосов
/ 10 февраля 2019

У меня 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"> и что? Lang = Xбудет также отображаться в URL.

Достаточно этого.Поскольку XML довольно непрактичен, я хотел переключить все это на базу данных SQL.

Я создал таблицу с ID столбцов, немецким и английским и успешно подключил БД.Теперь я хочу, чтобы PHP сказал SQL, чтобы он получал только текст языка сеанса с таким выбором, например, как этот.

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

Моя проблема в том, что я действительно не знаю, как это сделать с PHP.Я бы подумал, что мне нужно было бы либо как-то добавить PHP-оператор в оператор, либо выбрать всю строку и позволить PHP решить, какой из них должен отображаться.Любой совет / предложение приветствуется!Заранее спасибо!

1 Ответ

0 голосов
/ 10 февраля 2019

Мне нравится, как OpenCart реализовал это, потому что он прост и не добавляет дополнительных вызовов в БД.Посмотрите на их реализацию.Вы многому научились, изучая и изучая проекты с открытым исходным кодом

У них есть php-скрипт для каждого языка и модуль с массивом, который содержит все строки.Он просто включает или загружает сценарии для получения доступа к строкам, например: en-gb .Загрузка строки по ключу с помощью этого метода:

language->get('heading_title');
...