Reputation: 55263
I would like to change this:
// use appropiate lang.xx.php file according to the value of the $lang
switch ($_SESSION['lang']) {
case 'en':
$lang_file = 'lang.en.php';
break;
case 'es':
$lang_file = 'lang.es.php';
break;
case 'zh-tw':
$lang_file = 'lang.zh-tw.php';
break;
case 'zh-cn':
$lang_file = 'lang.zh-cn.php';
break;
default:
$lang_file = 'lang.en.php';
}
into something like this:
//include file for final output
include_once 'languages/lang.'.$_SESSION['lang'].'php;
(I think the $lang_file
variable becomes redundant if I do the include-final-output-thing above)
So that I can skip the whole switch
part. I tried other combinations but they don't seem to work. Any suggestions?
Upvotes: 4
Views: 1355
Reputation: 15887
This will work perfectly fine
$lang_file_tmp = 'lang.' . $_SESSION['lang'] . '.php';
if ( preg_match( '/^[a-zA-Z\-]{2,5}$/', $_SERSSION['lang'] ) && file_exists( $lang_file_tmp ) ) {
$lang_file = $lang_file_tmp;
} else {
$lang_file = 'lang.en.php';
}
With this, you won't have to edit the code every time your're adding a new language and you will not have to worry about security.
Upvotes: 0
Reputation: 655129
You can do this:
switch ($_SESSION['lang']) {
case 'en':
case 'es':
case 'zh-tw':
case 'zh-cn':
$lang_file = 'lang.'.$_SESSION['lang'].'.php';
break;
default:
$lang_file = 'lang.en.php';
}
Or you use an array and use in_array
to see if the value is in the array:
$languages = array('en', 'es', 'zh-tw', 'zh-cn');
if (in_array($_SESSION['lang'], $languages)) {
$lang_file = 'lang.'.$_SESSION['lang'].'.php';
} else {
$lang_file = 'lang.en.php';
}
You even could omit en
in both cases since it’s the default.
Upvotes: 18
Reputation: 56
Or:
$allowed = array('en', 'es', 'zh-tw', 'zh-cn');
$lang_file = (in_array($_SESSION['lang'], $allowed))
? 'lang.'.$_SESSION['lang'].'.php' : 'lang.en.php';
Upvotes: 2
Reputation: 29953
$lang_file = 'lang.' . ($_SESSION['lang']) . 'php';
if(!file_exists($lang_file))
{
$lang_file = 'lang.en.php';
}
although it isn't secure against injections. It does, however, allow you to add new language codes without modifying the code.
Upvotes: 2