The following warnings occurred: | ||||||||||||
Warning [2] Undefined variable $unreadreports - Line: 26 - File: global.php(961) : eval()'d code PHP 8.2.25 (Linux)
|
Make additional $user variables? - Printable Version +- UserSpice (https://userspice.com/forums) +-- Forum: Support Center (https://userspice.com/forums/forumdisplay.php?fid=23) +--- Forum: UserSpice 4.3 and Below (https://userspice.com/forums/forumdisplay.php?fid=26) +--- Thread: Make additional $user variables? (/showthread.php?tid=740) |
Make additional $user variables? - Katronix - 09-12-2017 Hi all, The script I'm working on, uses an Array of strings to be both in Spanish and English. (or at least the original script I'm converting to US does). A couple of questions, I saw that US has its own multi-language section, can this be added on to? If not, is it possible for me to turn an array such as $lang so that I could refer to element 15 and echo just $lang->15 without having to load the array in every file? Hope these questions make sense, Chris Make additional $user variables? - Katronix - 09-12-2017 Can someone explain how this code works? <?=lang("SIGNUP_TEXT","");?> not sure who this echos the value of SIGNUP_TEXT, and for the "" what would go there if you supported multiple languages? And how would your array need to be built to handle this? Thanks, Chris Make additional $user variables? - karsen - 09-12-2017 You can certainly do this, and fairly easily. Once it's set up, all you need to do is add your per-page translations (see below) for any pages you want both languages on. The language file is located at Code: /users/helpers/language.php Code: file and name it language_es.php Code: <?= lang_es("SIGNUP_TEXT", ""); ?> Be sure to copy and modify the lang() function in Code: us_helpers.php Code: function lang_es($key,$markers = NULL){ Code: global $lang_es; Code: if($markers == NULL){ Code: $str = $lang_es[$key]; Code: }else{ Code: //Replace any dyamic markers Code: $str = $lang_es[$key]; Code: $iteration = 1; Code: foreach($markers as $marker){ Code: $str = str_replace("{3bc1fe685386cc4c3ab89a3f76566d8931e181ad17f08aed9ad73b30bf28114d}m".$iteration."{3bc1fe685386cc4c3ab89a3f76566d8931e181ad17f08aed9ad73b30bf28114d}",$marker,$str); Code: $iteration++; Code: } Code: } Code: //Ensure we have something to return Code: if($str == ""){ Code: return ("No se encontró ninguna clave de idioma"); Code: }else{ Code: return $str; Code: } Code: } To add on to the array, you can include it in Code: language.php Code: $lang = array_merge($lang, array( Code: "TRACKING_ERROR" => "There was an error retrieving the tracking number.", Code: "TRACKING_NUMBER" => "Tracking Number", Code: )); Code: echo $lang('TRACKING_NUMBER', '') . ': ' . $trackingNumber; This isn't the most elegant solution since the language feature was intended for one language at a time instead of multiple, but I'll look at updating this so you can specify your language in your lang() function call. Let me know if you are able to get this going! Make additional $user variables? - Katronix - 09-12-2017 The way I formerly did it was this: switch ($lang) { case 0: include_once 'lang/spanish.php';] break; case 1: include_once 'lang/english.php'; break; This way it didn't require any difference in coding as $lang[23] was the same string, in both files. Any way I can use my scripts to do this? The site I'm designing won't use much of the US interface. Make additional $user variables? - karsen - 09-12-2017 Oh I'm sorry, I thought you wanted to use both languages side by side. In that case, you can do as you suggested and load either file. You can go through the language arrays to remove the string keys associated with each text line, but if you add a new line earlier in your array all your array keys will be off. I'd suggest keeping the keys as a string, since the end user will never see the anyway. Code: lang_en.php: Code: $lang = array_merge($lang, array( Code: "HELLO_WORLD" => "Hello world!" Code: )); Code: echo lang('HELLO_WORLD); Code: Hello world! Code: lang_es.php: Code: $lang = array_merge($lang, array( Code: "HELLO_WORLD" => "¡Hola Mundo!" Code: )); Code: echo lang('HELLO_WORLD); Code: ¡Hola Mundo! Make additional $user variables? - Katronix - 09-12-2017 Okay so I'd have to add my existing arrays with the US ones, for <?= to work... okay. Still wish I knew how <?= worked though lol Make additional $user variables? - Brandin - 09-13-2017 <?= is a shorthanded <?php echo E.g. I have defined $test = "Blah blah blah" I can then to <?=$test;?> (you can drop the ; actually) and it will echo this value. You can read more here: https://stackoverflow.com/questions/2020445/what-does-mean-in-php |