繁体   English   中英

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,contact.php中实现此变量。那么,有没有更好的解决方案? 请帮忙!!!

我认为gettext更好

http://us3.php.net/gettext

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

yii,您提到的框架,具有良好的gettext解析器

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

您可以设置是否

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

其中get_data是专门为您目的而构建的功能,而$ lang参数是一个值(en,de,fr等),代表mySQL query WHERE子句。

除了与您的朋友就他的建议(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';

然后脱掉所有的东西

然后创建一个目录,您将在其中创建语言文件,例如“ lang”。

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

//lang/it.php
<?php

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

然后是另一个lang文件

//lang/en.php
<?php

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM