Php交换机用于多语言网站问题

时间:2013-11-17 17:50:40

标签: php

我的多语言网站有问题...我为我的网站制作了一些代码,并向朋友征求意见,他说如果有更多人访问我的域名,服务器会慢得多。他说我应该使用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,contact.php之后实现了这个变量。那么,还有更好的解决方案吗?请帮忙!!!

3 个答案:

答案 0 :(得分:0)

我认为gettext更好

http://us3.php.net/gettext

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

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

答案 1 :(得分:0)

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

你可以设置是否

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

其中get_data是专门为您的目的而构建的函数,而参数$ lang是一个值(en,de,fr等),它代表WHERE的{​​{1}}子句。< / p>

答案 2 :(得分:0)

除了与你的朋友讨论他的建议(Yii,Laravel,Symfony,Codeigniter等等)之外,你可以创建这样的东西。

在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';

并取消以下所有内容。

然后创建一个dir,您将在其中创建语言文件,例如&#34; lang&#34;。

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

//lang/it.php
<?php

return array(
    'name' => 'Paolo', 
    ...
);

然后是另一个lang文件

//lang/en.php
<?php

return array(
    'name' => 'Paul', 
    ...
);