Log in

View Full Version : Adding more languages for PHP Localization for CMS



yubi
12-30-2010, 11:52 AM
Hello there,

I have a CMS which I've trying to create localization for. The idea is in the admin area you check a radio button and it changes the language of the entire admin interface. There is a mysql database with a table called nb_settings that has a column called lang. Up to this point I've gotten it to work but am having problems adding additional languages. The localization files have names like lang.nl.php,lang.en.php and so on..

The original code that works is this in a file called settings.php:


...
<?php
if($row['lang'] == nl)
{
echo '<input name="lang" type="radio" value="nl" checked="checked" /> '.($_CONSTANTS['NL']).'
<input name="lang" type="radio" value="en" /> '.($_CONSTANTS['EN']).'
<input name="lang" type="radio" value="de" /> '.($_CONSTANTS['DE']).'';
}
elseif($row['lang'] == en)
{
echo '<input name="lang" type="radio" value="nl" /> '.($_CONSTANTS['NL']).'
<input name="lang" type="radio" value="en" checked="checked" /> '.($_CONSTANTS['EN']).'
<input name="lang" type="radio" value="de" /> '.($_CONSTANTS['DE']).'';
}
elseif($row['lang'] == de)
{
echo '<input name="lang" type="radio" value="nl" /> '.($_CONSTANTS['NL']).'
<input name="lang" type="radio" value="en" /> '.($_CONSTANTS['EN']).'
<input name="lang" type="radio" value="de" checked="checked" /> '.($_CONSTANTS['DE']).'';
}
?>
...



Another file called common.php is used as well and has the following:


<?php
session_start();
header('Cache-control: private'); // IE 6 FIX

$sql = "SELECT * FROM nb_settings";
$query = mysql_query($sql);
$row = mysql_fetch_assoc($query);

if($row['lang'] == nl)
{
include('languages/lang.nl.php');
}
elseif($row['lang'] == en)
{
include('languages/lang.en.php');
}
elseif($row['lang'] == de)
{
include('languages/lang.de.php');
}



?>



But I am havng trouble adding more languages and expanding this. There is a folder called languages into which I put the individual localization files.


Just adding similar lines of code as shown below in both common and settings files doesn't do it: ie:


1)modifying settings.php to become:



<?php
if($row['lang'] == nl)
{
echo '<input name="lang" type="radio" value="nl" checked="checked" /> '.($_CONSTANTS['NL']).'
<input name="lang" type="radio" value="en" /> '.($_CONSTANTS['EN']).'
<input name="lang" type="radio" value="de" /> '.($_CONSTANTS['DE']).'
<input name="lang" type="radio" value="fra" /> '.($_CONSTANTS['FRA']).'';
}
elseif($row['lang'] == en)
{
echo '<input name="lang" type="radio" value="nl" /> '.($_CONSTANTS['NL']).'
<input name="lang" type="radio" value="en" checked="checked" /> '.($_CONSTANTS['EN']).'
<input name="lang" type="radio" value="de" /> '.($_CONSTANTS['DE']).'
<input name="lang" type="radio" value="fra" /> '.($_CONSTANTS['FRA']).'';
}
elseif($row['lang'] == de)
{
echo '<input name="lang" type="radio" value="nl" /> '.($_CONSTANTS['NL']).'
<input name="lang" type="radio" value="en" /> '.($_CONSTANTS['EN']).'
<input name="lang" type="radio" value="de" checked="checked" /> '.($_CONSTANTS['DE']).'
<input name="lang" type="radio" value="fra" /> '.($_CONSTANTS['FRA']).'';

}

elseif($row['lang'] == fra)
{
echo '<input name="lang" type="radio" value="nl" /> '.($_CONSTANTS['NL']).'
<input name="lang" type="radio" value="en" /> '.($_CONSTANTS['EN']).'
<input name="lang" type="radio" value="de" /> '.($_CONSTANTS['DE']).'
<input name="lang" type="radio" value="fra" checked="checked" /> '.($_CONSTANTS['FRA']).'';

}
?>

2)adding in common.php:


elseif($row['lang'] == fra)
{
include('languages/lang.fra.php');
}

Can anyone help me out with how to add additional languages?