针对多语言网站的Php切换问题


Php switch for multilingual websites issue

我对多语言网站有问题。。。我为我的网站做了一些代码,并征求了一位朋友的意见,他说当更多的人在我的域上时,服务器会慢得多。他说我应该使用Yii或其他一些框架。。但我不熟悉框架S

这是我在config.php 中的代码

if(isSet($_GET['lang'])){
    $lang = $_GET['lang'];
    // register the session and set the cookie
    $_SESSION['lang'] = $lang;
    setcookie("lang", $lang, time() + (3600 * 24 * 30));
    } else if(isSet($_SESSION['lang'])) {
        $lang = $_SESSION['lang'];
    } else if(isSet($_COOKIE['lang'])) {
        $lang = $_COOKIE['lang'];
    } else {
        $lang = 'hr';
    }

    switch ($lang) {
      case 'en':
      $naslovnica_naslov = 'Home';
      $onama_naslov = 'About us';
      $restoran_naslov = 'Restaurant';
      $motel_naslov = 'Motel';
      $opcenito_naslov = 'General';
      $galerija_naslov = 'Gallery';
      $novosti_naslov = 'News & Offers';
      $rezervacije_naslov = 'Reservations';
      $kontakt_naslov = 'Contact';
      $rezervacija_smjestaja = "Reservation of apartment";
      $kontakt_informacije = "Contact info";
      $kontakt_adrese_h3 = 'Adresses';
      $lokacija = 'Location';
      $onama_krace = 'Ideal for fun and relaxation, Kiwi Motel is located in the breasts in the town of Gruda. From here, guests can enjoy easy access to all that the lively city has to offer ...';
      $vidi_vise = 'See more...';
      $svecanosti = 'Ceremonies';
      $proslave = '& celebrations';
      break;
      case 'de':
      $naslovnica_naslov = 'Startseite';
      $onama_naslov = 'Über uns';
      $restoran_naslov = 'Restaurant';
      $motel_naslov = 'Motel';
      $opcenito_naslov = 'Allgemeine';
      $galerija_naslov = 'Galerie';
      $novosti_naslov = 'Neuigkeiten & Angeboten';
      $rezervacije_naslov = 'Reservierungen';
      $kontakt_naslov = 'Kontakt';
      $rezervacija_smjestaja = 'Reservierung der Unterkunft';
      $kontakt_informacije = 'Kontaktinfos';
      $kontakt_adrese_h3 = 'Adressen';
      $lokacija = 'Stelle';
      $onama_krace = 'Ideal für Spaß und Entspannung, ist Kiwi Motel in der Nähe von Stadt Grude entfernt. Von hier aus können die Gäste einen einfachen Zugang zu allem, was die lebhafte Stadt zu bieten hat ...';
      $vidi_vise = 'Mehr sehen...';
      $svecanosti = 'Zeremonien';
      $proslave = '& Feierlichkeiten';
      break;
      default:
      $naslovnica_naslov = 'Naslovnica';
      $onama_naslov = 'O nama';
      $restoran_naslov = 'Restoran';
      $motel_naslov = 'Motel';
      $opcenito_naslov = 'Općenito';
      $galerija_naslov = 'Galerija';
      $novosti_naslov = 'Novosti & ponude';
      $rezervacije_naslov = 'Rezervacije';
      $kontakt_naslov = 'Kontakt';
      $rezervacija_smjestaja = 'Rezervacija smještaja';
      $kontakt_informacije = 'Kontakt informacije';
      $kontakt_adrese_h3 = 'Adrese';
      $lokacija = 'Lokacija';
      $onama_krace = 'Idealan za zabavu i opuštanje, Motel Kiwi smješten u Grude u području grada Grude. S ovog mjesta, gosti mogu imati lagan pristup svemu što ovaj ljupki grad može ponuditi...';
      $vidi_vise = 'Vidi više...';
      $svecanosti = 'Svečanosti';
      $proslave = '& proslave';
    }

我在index.php中实现了这些变量,联系.php。那么,有更好的解决方案吗?请帮忙!!!

除了与你的朋友就他的建议(Yii、Laravel、Symfony、Codeigner等)达成一致外,你还可以创建这样的东西。

在您的config.php中完成此部分之后:

if(isSet($_GET['lang'])){
$lang = $_GET['lang'];
// register the session and set the cookie
$_SESSION['lang'] = $lang;
setcookie("lang", $lang, time() + (3600 * 24 * 30));
} else if(isSet($_SESSION['lang'])) {
    $lang = $_SESSION['lang'];
} else if(isSet($_COOKIE['lang'])) {
    $lang = $_COOKIE['lang'];
} else {
    $lang = 'hr';
}

插入

$langArray = require 'lang/'.$lang.'.php';

然后放下一切。

然后创建一个目录,用于创建语言文件,例如"lang"。

然后,对于每个语言文件,您都可以在该目录中创建所需的文件,并复制从config.php中提取的相关部分。。

//lang/it.php
<?php
return array(
    'name' => 'Paolo', 
    ...
);

然后是另一个lang文件

//lang/en.php
<?php
return array(
    'name' => 'Paul', 
    ...
);

我认为gettext是更好的

http://us3.php.net/gettext

但是php扩展非常糟糕,但是php有很多gettext类。只需在github:D上搜索

yii,u提到的框架,有一个很好的gettext解析器

将它们直接存储在文件中是一种非常糟糕的做法。您最好将它们存储在数据库中,并使用名为"lang"的列,然后使用

如果

switch($lang) { case "en" : get_data($lang); break;}

其中get_data是专门为您的目的构建的函数,参数$lang是代表mySQL queryWHERE子句的值(en、de、fr等)。