多语言PHP脚本

时间:2013-06-28 16:58:39

标签: php multilingual

如何在html / php脚本中创建多语言主菜单 现在我有

<li>
<a href="{url p='poceni-letalske-karte.html'}">
<span>{t t="Letalske Karte"}</span>
</a>
</li>

<option value='EN'>English</option>转到mysite.com/EN 我想当用户选择英语EN代码时它还会改变主菜单文本怎么做? 这是网站Letalske karte

我找到了这个脚本http://www.bitrepository.com/php-how-to-add-multi-language-support-to-a-website.html 但我不知道如何设置为/ EN /现在在此脚本中设置为index.php?lang=en

4 个答案:

答案 0 :(得分:19)

我的方法是做以下事情:

步骤1:设置如下文件夹树结构:

Languages
 -en
   -lang.en.php
 -fr
   -lang.fr.php
 -de
   -lang.de.php

继续制作包含您想要支持的所有其他语言的新文件夹

第2步:创建我们的语言文件,我将从languages/en/lang.en.php

开始
<?php   
  $lang['label']      = 'Value for this label';
  $lang['firstname']  = 'First Name';
  $lang['lastname']   = 'Last Name';
  $lang['phone']      = 'Phone';       
  // ETC
?>

你会为其他所有语言重复这个,例如languages/fr/lang.fr.php。注意标签在英语中是如何保持不变的

<?php   
  $lang['label']      = 'Valeur pour ce label';
  $lang['firstname']  = 'Prénom';
  $lang['lastname']   = 'Nom de famille';
  $lang['phone']      = 'Téléphone';       
  // ETC
?>

步骤3:通过网址变量

检查用户是否请求了语言更改
<?php
  // Start a Session, You might start this somewhere else already.
  session_start();

  // What languages do we support
  $available_langs = array('en','fr','de');

  // Set our default language session
  $_SESSION['lang'] = 'en';   

  if(isset($_GET['lang']) && $_GET['lang'] != ''){ 
    // check if the language is one we support
    if(in_array($_GET['lang'], $available_langs))
    {       
      $_SESSION['lang'] = $_GET['lang']; // Set session
    }
  }
  // Include active language
  include('languages/'.$_SESSION['lang'].'/lang.'.$_SESSION['lang'].'.php');

?>

第4步:你可以像这样访问你的语言部分,它会根据加载的语言文件而改变。

<?php
  echo $lang['firstname'];
?>

希望这有助于您开始作为一个想法

答案 1 :(得分:1)

使用上面的代码,但每次加载到EN都会覆盖会话,因此将其更改为

<?php
// Start a Session, You might start this somewhere else already.
session_start();

// What languages do we support
$available_langs = array('en','zh-cn','es');




if(isset($_GET['lang']) && $_GET['lang'] != ''){
    // check if the language is one we support
    if(in_array($_GET['lang'], $available_langs))
    {
        $_SESSION['lang'] = $_GET['lang']; // Set session
    }
}



// Set our default language session ONLY if we've got nothing
if ($_SESSION['lang']=='') {
    $_SESSION['lang'] = 'en';

}


// Include active language
include('languages/'.$_SESSION['lang'].'/lang.'.$_SESSION['lang'].'.php');

?>

答案 2 :(得分:1)

如果您的语言文件非常长,您可以通过在语言上方添加以下语言来逐页分解:

// for login page
$textpart = 'login';

并将语言页面拆分为数组

<?php   
switch ($textpart) {
  //login page
  case 'login':
    $lang['label']      = 'Value for this label';
    $lang['firstname']  = 'First Name';
    $lang['lastname']   = 'Last Name';
    $lang['phone']      = 'Phone';
    break;

  //home page
  case 'home':
    // ETC
}

// All pages
   $lang['title']       = 'Title';
   // ETC

?>

答案 3 :(得分:0)

LM PHP(语言管理PHP)

多语言管理和对PHP的支持。


样品:

<?php
include "LMPHP.php";
/////////////////////////////
$langs = new LMPHP();

$langs -> language_add("en","English");
$langs -> language_add("fr","Germany");

$langs -> language_active("en");
$langs -> word_add("Bye","Good Bye!");
$langs -> word_add("HowAre");

$langs -> language_active("fr");
$langs -> word_add("Bye","Au revoir!");

print_r( $langs -> words );

echo $langs -> word_get("Bye");

代码存储库: https://github.com/BaseMax/LMPHP

完整示例代码: https://github.com/BaseMax/LMPHP/blob/master/Sample.php