Reputation: 516
I am making a menu for website language and it works but i think the way i am doing it is not the best way in case i add more languages in future. Maybe someone can show a better example. Here is a piece of what i've got.
if(isSet($_SESSION['lang'])) {
$lang = $_SESSION['lang'];
if ($lang == "en") {
echo '<li class="">EN
<ul>
<li class="submenu">RU</li>
<li class="submenu">ES</li>
<li class="submenu">GR</li>
<li class="submenu">DE</li>
</ul>
</li>';
}
if ($lang == "de") {
echo '<li class="">DE
<ul>
<li class="submenu">RU</li>
<li class="submenu">ES</li>
<li class="submenu">GR</li>
<li class="submenu">EN</li>
</ul>
</li>';
}
// and so on for every language..
}
Probably would be better doing some array and than foreach function, but i have no idea how to do that x,x way too confusing
Upvotes: 1
Views: 27
Reputation: 648
I think something like this should be @ help, i defined an array for languages and anytime you need to add a language, you just added there.
$lang = $_SESSION['lang'];
$languages = array ("de" => "DE", "ru" => "RU", "en" => "EN");
foreach ($languages as $key=>$val)
if ($lang == $key)
{
unset($languages[$key]);
$main_lang = $val;
}
echo "
<li class=\"\">$main_lang //main button
<ul> // sub menu";
foreach ($languages as $language)
echo "<li class=\"submenu\">$language</li>";
echo "
</ul>
</li>";
Upvotes: 0
Reputation: 10381
If you want an array, it's possible to create a function, this function will get the language as parameter and display the options according to it :
<?php
function display ( $lang )
{ $arr = array( "en" => array( "RU","ES","GR","DE" ),
"de" => array( "RU","ES","GR","DE" )
);
echo '<li class="">' .
'<ul>';
foreach ( $arr[ $lang ] as $item ) // DISPLAY THE OPTIONS.
echo '<li class="submenu">' . $item . '</li>';
echo '</ul>
</li>';
}
display( "en" ); // DISPLAY OPTIONS FOR "EN".
display( "de" ); // DISPLAY OPTIONS FOR "DE".
?>
In the future, you may add more languages to the array.
To test it, copy-paste previous code in a file, save it as PHP and open it in your browser.
Upvotes: 0