Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中保持在同一页面上时切换语言_Php - Fatal编程技术网

在PHP中保持在同一页面上时切换语言

在PHP中保持在同一页面上时切换语言,php,Php,我是PHP新手,正在努力寻找解决问题的方法。 基本上,正如标题所说,我想做的是更改语言,但它将我重定向到index.php,正如下面的代码所示。关于更多if{echo…}语句的问题使它更加复杂。我读过一些主题,但找不到正确的答案。下面是我的header.php: <?php if ($lang == 'EN') { echo ' <!DOCTYPE html> <html lang="EN"> <head> <meta charset=

我是PHP新手,正在努力寻找解决问题的方法。 基本上,正如标题所说,我想做的是更改语言,但它将我重定向到index.php,正如下面的代码所示。关于更多if{echo…}语句的问题使它更加复杂。我读过一些主题,但找不到正确的答案。下面是我的header.php:

<?php
if ($lang == 'EN')
{
echo '
<!DOCTYPE html>
 <html lang="EN">
 <head>
    <meta charset="UTF-8">
    <title> iPhone 8 </title>
    <link rel="stylesheet" href="style.css"/>
 </head>
 <body>
 <header>
    <div id="navbar">
        <div id="container">
            <a href="index.php?lang='.$lang.'"><img src="Logos/mylogo1.svg" alt="logo" id="logo"></a>
        </div>
        <ul class="menu">
            <li><a href="index.php?lang='.$lang.'"> Homepage </a></li>
            <li class="dropdown">
            <a href="javascript:void(0)" class="dropbtn"> iPhone 8 </a>
                <div class="dropdown-content">
                    <a href="Review.php?lang='.$lang.'"> Review </a>
                    <a href="Specifications.php?lang='.$lang.'"> Specifications </a>
                </div>
            <li><a href="News.php?lang='.$lang.'"> News </a></li>
            <li class="dropdown">
            <a href="javascript:void(0)" class="dropbtn"> Media </a>
                <div class="dropdown-content">
                    <a href="Photos.php?lang='.$lang.'"> Photos & GIFs</a>
                    <a href="Videos.php?lang='.$lang.'"> Audio & Video </a>
                </div>
            <li><a href="CompareiPhones.php?lang='.$lang.'"> Compare </a></li>
            <li><a href="Contact.php?lang='.$lang.'"> Contact </a></li>
            <li><a class="current" href="index.php?lang=EN"><img class="iconclass" src="Icons/ukicon.ico" alt="ENG"></a></li>
            <li><a href="index.php?lang=SK"><img class="iconclass" src="Icons/slovakicon.ico" alt="SK"></a></li>
        </ul>
    </div>
 </header>';
}

else
{
$lang = 'SK';
echo '
<!DOCTYPE html>
 <html lang="SK">
 <head>
    <meta charset="UTF-8">
    <title> iPhone 8 </title>
    <link rel="stylesheet" href="style.css"/>
 </head>
 <body>
 <header>
    <div id="navbar">
        <div id="container">
            <a href="index.php"><img src="Logos/mylogo1.svg" alt="logo" id="logo"></a>
        </div>
        <ul class="menu">
            <li><a href="index.php?lang='.$lang.'"> D.Stránka </a></li>
            <li class="dropdown">
            <a href="javascript:void(0)" class="dropbtn"> iPhone 8 </a>
                <div class="dropdown-content">
                    <a href="Review.php?lang='.$lang.'"> Recenzia </a>
                    <a href="Specifications.php?lang='.$lang.'"> Špecifikácie </a>
                </div>
            <li><a href="News.php?lang='.$lang.'"> Novinky </a></li>
            <li class="dropdown">
            <a href="javascript:void(0)" class="dropbtn"> Média </a>
                <div class="dropdown-content">
                    <a href="Photos.php?lang='.$lang.'"> Fotky & GIFy</a>
                    <a href="Videos.php?lang='.$lang.'"> Audio & Video </a>
                </div>
            <li><a href="CompareiPhones.php?lang='.$lang.'"> Porovnanie </a></li>
            <li><a href="Contact.php?lang='.$lang.'"> Kontakt </a></li>
            <li><a href="index.php?lang=EN"><img class="iconclass" src="Icons/ukicon.ico" alt="ENG"></a></li>
            <li><a class="current"href="index.php?lang=SK"><img class="iconclass" src="Icons/slovakicon.ico" alt="SK"></a></li>
        </ul>
    </div>
 </header>';

}
?>

您可能想做的是:

我有一个基于当前语言翻译单词的函数,也可能有一个库/服务器实现为您执行此操作,但对于有限的单词,此方法可能很好 2将语言存储在会话中 3正如其他人所建议的,不要复制整个代码块

/config.php

/函数/getLang.php

/trans_SK.php

标题:

<?php
# Add config to top level pages
require_once(__DIR__.'/config.php');
# Set the language
if(!empty($_GET['lang']))
    $_SESSION['lang'] = strtoupper($_GET['lang']);

?><!DOCTYPE html>
 <html lang="<?php echo getLang() ?>">
 <head>
    <meta charset="UTF-8">
    <title> iPhone 8 </title>
    <link rel="stylesheet" href="style.css"/>
 </head>
 <body>
 <header>
    <div id="navbar">
        <div id="container">
            <a href="index.php"><img src="Logos/mylogo1.svg" alt="logo" id="logo"></a>
        </div>
        <ul class="menu">
            <li><a href="index.php?lang=<?php echo getLang() ?>"><?php echo __('Homepage') ?></a></li>
            <li class="dropdown">
            <a href="javascript:void(0)" class="dropbtn"> iPhone 8 </a>
                <div class="dropdown-content">
                    <a href="Review.php?lang=<?php echo getLang() ?>"> <?php echo __('Review') ?> </a>
                    <a href="Specifications.php?lang=<?php echo getLang() ?>"> <?php echo __('Specification') ?> </a>
                </div>
            <li><a href="News.php?lang=<?php echo getLang() ?>"> <?php echo __('News') ?> </a></li>
            <li class="dropdown">
            <a href="javascript:void(0)" class="dropbtn"> <?php echo __('Media') ?> </a>
                <div class="dropdown-content">
                    <a href="Photos.php?lang=<?php echo getLang() ?>"> <?php echo __('Photos and GIFs') ?></a>
                    <a href="Videos.php?lang=<?php echo getLang() ?>"> Audio & Video </a>
                </div>
            <li><a href="CompareiPhones.php?lang=<?php echo getLang() ?>"> <?php echo __('Compare') ?> </a></li>
            <li><a href="Contact.php?lang=<?php echo getLang() ?>"> <?php echo __('Contact') ?> </a></li>
            <li><a href="index.php?lang=EN"><img class="iconclass" src="Icons/ukicon.ico" alt="ENG"></a></li>
            <li><a class="current"href="index.php?lang=SK"><img class="iconclass" src="Icons/slovakicon.ico" alt="SK"></a></li>
        </ul>
    </div>
 </header>

欢迎来到苏尔蒂!这个问题可能会很快结束,因为它不是100%清楚你在问什么。我从你的问题中删除了不相关的标签以提供帮助。我假设您正在尝试使用两种语言创建PHP网站。这是一个非常大和复杂的话题。我可以给你的一个简单提示是将所选语言代码存储在会话变量中,而不是将其传递到GET查询字符串中。我可以建议一些其他的事情,这有点离题,但它会对你有所帮助。1.不要使用echo输出大块HTML。结束PHP块?>并输出HTML。2.不要为每种语言准备两份HTML。只使用一个并使用一些翻译库来处理输出上的翻译。
function __($text, $lang = false)
{
    # If lang is set, try to set from session
    if(empty($lang))
        $lang = (!empty($_SESSION['lang']))? $_SESSION['lang'] : 'EN'
    # Just return the text if the language is EN
    if($lang == 'EN')
        return $text;
    # Include our translator array
    if(!is_file($file = ROOT_DIR.'trans_'.$lang.'.php'))
        return $text;
    include($file);
    # See if there is a translation, if not just return the input
    return (isset($trans[$text]))? $trans[$text] : $text;
}
function getLang($default = 'EN')
{
    # Return the language if set, else send back default
    return (!empty($_SESSION['lang']))? $_SESSION['lang'] : $default;
}
<?php
$trans = [
    'Homepage' => 'D.Stránka',
    'Review' => 'Recenzia',
    'Specifications' => 'Špecifikácie',
    'News' => 'Novinky',
    'Media' => 'Média',
    'Photos and GIFs' => 'Fotky & GIFy',
    'Compare' => 'Porovnanie',
    'Contact' => 'Kontakt'
];
<?php
# Add config to top level pages
require_once(__DIR__.'/config.php');
# Set the language
if(!empty($_GET['lang']))
    $_SESSION['lang'] = strtoupper($_GET['lang']);

?><!DOCTYPE html>
 <html lang="<?php echo getLang() ?>">
 <head>
    <meta charset="UTF-8">
    <title> iPhone 8 </title>
    <link rel="stylesheet" href="style.css"/>
 </head>
 <body>
 <header>
    <div id="navbar">
        <div id="container">
            <a href="index.php"><img src="Logos/mylogo1.svg" alt="logo" id="logo"></a>
        </div>
        <ul class="menu">
            <li><a href="index.php?lang=<?php echo getLang() ?>"><?php echo __('Homepage') ?></a></li>
            <li class="dropdown">
            <a href="javascript:void(0)" class="dropbtn"> iPhone 8 </a>
                <div class="dropdown-content">
                    <a href="Review.php?lang=<?php echo getLang() ?>"> <?php echo __('Review') ?> </a>
                    <a href="Specifications.php?lang=<?php echo getLang() ?>"> <?php echo __('Specification') ?> </a>
                </div>
            <li><a href="News.php?lang=<?php echo getLang() ?>"> <?php echo __('News') ?> </a></li>
            <li class="dropdown">
            <a href="javascript:void(0)" class="dropbtn"> <?php echo __('Media') ?> </a>
                <div class="dropdown-content">
                    <a href="Photos.php?lang=<?php echo getLang() ?>"> <?php echo __('Photos and GIFs') ?></a>
                    <a href="Videos.php?lang=<?php echo getLang() ?>"> Audio & Video </a>
                </div>
            <li><a href="CompareiPhones.php?lang=<?php echo getLang() ?>"> <?php echo __('Compare') ?> </a></li>
            <li><a href="Contact.php?lang=<?php echo getLang() ?>"> <?php echo __('Contact') ?> </a></li>
            <li><a href="index.php?lang=EN"><img class="iconclass" src="Icons/ukicon.ico" alt="ENG"></a></li>
            <li><a class="current"href="index.php?lang=SK"><img class="iconclass" src="Icons/slovakicon.ico" alt="SK"></a></li>
        </ul>
    </div>
 </header>