【问题标题】:Multilanguages site PHP array多语言网站 PHP 数组
【发布时间】:2019-12-27 03:11:54
【问题描述】:

我在 .php 中创建了几个文件,其中有一个数组作为网站的翻译器。

这是结构

/db/config.php
/lang/en/en.php
/lang/fr/fr.php
/lang/de/de.php

这是 en.php 文件

 <?php
      $lang = array(
           "one" => "one",
           "five" => "five",
           "nine" => "nine",
      );
 ?>

在配置文件中我有数据库配置和语言数组的插入

文件 config.php

 <?php

 ...... DB Config .......
 $langServer = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);

 if (!isset($_SESSION['lang']) && !isset($_GET['lang']){
      if($langServer == "en"){
           $_SESSION['lang'] = "en";
      }else if($langServer == "fr"){
           $_SESSION['lang'] = "fr";
      }else if($langServer == "de"){
           $_SESSION['lang'] = "de";
      }else{
           $_SESSION['lang'] = "en";
      }
 }else{
      $_SESSION['lang'] = "en";
 }

 require_once($_SERVER['DOCUMENT_ROOT']."/lang/" . $_SESSION['lang'] . "/". $_SESSION['lang'] .".php");

 ?>

我希望我可以在某个类或函数中访问该数组,如果我设置了一个 require_once 它不起作用...我找到的唯一解决方案是将数组插入到 $ _SESSION 但我不喜欢它作为一个想法.. 那: $_SESSION["arrayLang] = $lang;

我什至不想对每个函数都要求 require_once ...。我希望我可以在任何地方访问 $lang 数组...有什么想法吗?谢谢你

【问题讨论】:

  • 您可以在会话中存储一个 $lang 变量,该变量将设置所需的文件。比如如果 $lang = eng,需要 lang/en/en.php,如果 $lang = fr,需要 lang/fr/fr.php。不要忘记默认值。

标签: php arrays function class


【解决方案1】:

如果您需要或在每个文件中包含配置文件,您可以使用 define() 函数,这样您就可以在每个文件中读取“lang”全局。

在我的示例中,我还删除了 ifelse 语句,因为我认为它是不必要的,它会使应用程序更快一点。

<?php

 ...... DB Config .......
 $langServer = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);

 require_once($_SERVER['DOCUMENT_ROOT']."/lang/" . $langServer . "/".$langServer .".php");

//define the global lang which can be used in every file this file will be included in
//you can use it without a $ just use the word "lang"
define('lang', $langServer);




 ?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-14
    • 2012-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多