包含PHP问题

时间:2018-10-09 12:20:47

标签: php arrays include

我需要一点帮助!我正在用php创建多语言站点,但出现了问题。我想将数组包含在另一个数组中。

有一个php文件

<?php
$lang = array(
    'en' => array(
        include ('translations/nav-translation/en.php');
    ),
    'lv' => array(
        include ('translations/nav-translation/lv.php');
    ),
);
?>

我要包含的php文件

<?php
 "home" => "Home",
 "blog" => "Blog",
 "about" => "About me",
?>

4 个答案:

答案 0 :(得分:1)

如果您不想使用yaml,最好从lang文件中返回数组

en.php:

<?php
 return ["home" => "Home",....]
?>

index.php:

<?php
$lang = array(
    'en' => include("translations/nav-translation/en.php"),
    'lv' => ....

答案 1 :(得分:0)

要创建一个多语言的PHP网站,建议使用一种功能,该功能检查用户指定的语言,然后从数据库中加载文本或使用JSON。

使用JSON

创建一个扩展名为.txt的文件,以JSON格式创建翻译并通过PHP读取,以使用PHP读取文件:

$json = json_decode(file_get_contents($file),TRUE);

然后您可以使用JSON数据在PHP中设置变量以显示正确的语言。

使用数据库

具有这样的数据库设置:

   ---------------------------
   Lang   |   Short   |   Text
   ---------------------------

在数据库中,根据需要设置尽可能多的语言,在lang列中使用语言名称的两个字母缩写,短名称应为文本名称,因此,如果它是首页标题,名称简短的home-title,然后该文本应该是您希望以所需语言显示的文本。

使用数据库可让您通过数据库添加/编辑语言和翻译。

答案 2 :(得分:0)

您不能像这样设置包含文件吗?

translations / nav-translation / en.php

<Context antiResourceLocking="false" privileged="true" >
  <!--
    Remove the comment markers from around the Valve below to limit access to
    the manager application to clients connecting from localhost
  -->

  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="149\.4\.223\.238|127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />

 </Context>

然后:

<?php
    $lang['en'] = array(
        "home" => "Home",
        "blog" => "Blog",
        "about" => "About me"
    );
?>

似乎没有其他建议那么复杂。

答案 3 :(得分:0)

$path = 'translations/nav-translation';
$user_lang = 'nl';  // determine what the user actually wants
$fallback_lang = 'en';
if (file_exists("{$path}/{$user_lang}.php")) {
    include ("{$path}/{$user_lang}.php");
} else {
    include ("{$path}/{$fallback_lang}.php");  // nominate a default
}

在语言文件(例如translations/nav-translation/en.php)中,提供完整的关联数组:

$lang = [
    "home" => "Home",
    "blog" => "Blog",
    "about" => "About me"
];

然后,在条件包含调用之后返回到原始文件,您可以引用$lang['home'] [cringe] 使用extract() *生成类似{{1}的变量}。

*请注意,我从未在我的任何项目中使用过$home,使用它存在风险-我只是说你可以