2

现在我有如何在 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

4 回答 4

28

我的方法是执行以下操作:

第 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
?>

您会为其他所有语言重复此操作,例如 fr 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 步:通过 url 变量检查用户是否请求更改语言

<?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'];
?>

希望这可以帮助您开始一个想法

于 2013-06-28T18:28:19.840 回答
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

?>
于 2014-03-19T13:17:33.033 回答
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');

?>
于 2013-10-07T18:47:30.493 回答
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

于 2019-01-20T10:24:25.630 回答