【问题标题】:Multi language php script多语言php脚本
【发布时间】:2013-06-26 12:52:18
【问题描述】:

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

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

&lt;option value='EN'&gt;English&lt;/option&gt; 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

【问题讨论】:

  • 是的,当然,我们都会说……无论是什么语言……
  • 你昨天问了这个确切的问题。您应该编辑该问题而不是打开一个新问题。
  • 这个问题有什么问题?
  • @LukaBoltes - 首先,您可以在问题中包含您的脚本,而不是指向第三方网站的链接。如果您可以证明您已经尝试过某事,即使它没有奏效,您也更有可能获得帮助 - 就像现在一样,您的问题读起来就像您希望有人为您做所有事情。您是否已将语言

标签: php multilingual


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    如果您的语言文件真的很长,您可以通过在语言包括上方添加以下内容来逐页拆分:

    // 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】:

      使用了上面的代码,但是每次加载到EN都会覆盖session,所以改成

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

      【讨论】:

        【解决方案4】:

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

        第 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 步:通过 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'];
        ?>
        

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

        【讨论】:

        • 感谢代码将第三步放在哪里?另外我怎么能设置到 site.com/EN/ ?
        • 您是否计划在每个文件夹中都有重复的网站? EN/FR/DE 还是您只是想让它标记一种语言并重定向到主站点?
        • 我的建议是使用查询字符串,例如 index.php?lang=EN 来捕获用户想要的语言偏好,并使用 htaccess 将这些 url 重写为 index.php/EN
        • 如何创建 htaccess 重写?它需要像hotelpedia.si/EN 一样现在是酒店语言选择器,同时我想成为主菜单翻译 对于SEO 与index.php/en 或只是/en/ 相同,对吗?因为我更喜欢 /en/
        • 漂亮的解决方案。这有很大帮助。我只是用 $dict 替换了 $lang,以避免与 $_GET 数组中的 'lang' 键混淆。
        猜你喜欢
        • 1970-01-01
        • 2012-10-02
        • 2015-09-23
        • 2010-10-22
        • 2011-04-20
        • 2011-08-23
        • 1970-01-01
        • 1970-01-01
        • 2010-12-22
        相关资源
        最近更新 更多