【问题标题】:How can I get my include function to work?我怎样才能让我的包含功能工作?
【发布时间】:2014-11-24 15:49:00
【问题描述】:

我正在为娱乐公司制作网站。因为我们为很多外国人工作,所以我尝试让网站多语言。但是,当我全部测试时,文本返回为空白。我认为问题出在 common.php 文件中,但我不确定。我使用了一个小伙子的 common.php,他做了几乎一样的东西。

我将整个网站放在一个页面上(index.php),用户使用 js 滑块功能进入下一部分。翻译脚本应该像这样工作:common.php 文件包含在我的 index.php 中。它检查用户使用的语言。然后 common.php 应该在 index.php 中加载匹配的字典文件。但它没有......

非常感谢任何有关如何将我的翻译文本加载到网站上的帮助!

    <?php
/*
------------------
Taal: Nederlands
------------------
*/

$lang = array();

// Menu

$lang['MENU_FOTO'] = 'Fotogalerij';
$lang['MENU_INFO'] = 'Over ons';
$lang['MENU_AGENDA'] = 'Koncerten';
$lang['MENU_CONTACT'] = 'Contact';
?>

我的 index.php 中的标题部分

<header>
    <div class="sticky-nav">
        <a id="mobile-nav" class="menu-nav" href="#menu-nav"></a>

        <div id="logo">
            <a id="goUp" href="#home-slider" title="Entertainment">Home</a>
        </div>

        <nav id="menu">
            <ul id="menu-nav">

                <li><a href="#foto"><?php echo $lang['MENU_FOTO']; ?></a></li>
                <li><a href="#work"><?php echo $lang['MENU_INFO']; ?></a></li>
                <li><a href="#about"><?php echo $lang['MENU_AGENDA']; ?></a></li>
                <li><a href="#contact"><?php echo $lang['MENU_CONTACT']; ?></a></li>
            </ul>
        </nav>

    </div>
</header>

还有common.php

<?php
session_start();
header('Cache-control: private'); 

if(isSet($_GET['lang']))
{
$lang = $_GET['lang'];

// register the session and set the cookie
$_SESSION['lang'] = $lang;

setcookie('lang', $lang, time() + (3600 * 24 * 30));
}
else if(isSet($_SESSION['lang']))
{
$lang = $_SESSION['lang'];
}
else if(isSet($_COOKIE['lang']))
{
$lang = $_COOKIE['lang'];
}
else
{
$lang = 'nl';
}

switch ($lang) {
  case 'nl':
  $lang_file = 'nederlands.php';
  break;

  case 'ba':
  $lang_file = 'bosnisch.php';
  break;

include_once .$lang_file;
?>

编辑

我现在什至尝试将其中一种语言文件直接包含到 index.php 中。但是现在我真的很困惑,因为那也没用!

【问题讨论】:

  • 不知道如何让它工作,但 Koncerten 使用的是 C 而不是 K
  • 你的语言文件和你的脚本在同一个目录吗?
  • 您是否检查过以确保已填充$_GET$_SESSION 怎么样?
  • @Konstantin 他们在同一个文件夹中是的。我什至尝试使用完整链接(包括 C:\... 等),但这也无济于事。

标签: javascript php jquery html language-translation


【解决方案1】:

删除.

include_once $lang_file

【讨论】:

    【解决方案2】:

    尝试关闭开关指令。

    switch ($lang) {
      case 'nl':
      $lang_file = 'nederlands.php';
      break;
    
      case 'ba':
      $lang_file = 'bosnisch.php';
      break;
    } // close switch 
    
    include_once $lang_file;
    

    【讨论】:

    • 我尝试了包含代码,它可以在我的计算机上运行。所以我认为问题不在于inlude_once。如果我有其他想法,我会发布一个新答案。
    【解决方案3】:
    include_once($lang_file);
    

    这是一个函数而不是一个构造

    【讨论】:

    • 其实它一个构造而不是一个函数,所以你应该不需要()。
    • @luator 双向工作,include_once $file;include_once($file); 是一回事。我更喜欢 ()
    • 啊,我猜你每天都会学到一些东西,我一直用()。
    • @Deer-Outdoor.nl 我知道,我只是想指出,答案是错误的,因此缺少括号不是问题。
    【解决方案4】:

    我找到了。问题不在于 de php 编码。由于某种原因,我的 apache 服务器的设置搞砸了,它没有读取任何 php,只有 html。所以它实际上显示了网站,就好像你从你的计算机而不是从服务器加载它一样。

    无论如何,感谢您的努力!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-12
      • 2021-01-22
      • 2011-04-26
      • 1970-01-01
      • 1970-01-01
      • 2011-06-30
      • 2011-02-28
      相关资源
      最近更新 更多