Today I have fought with a stubborn error in the output of my tools that extract and process the contents of tra() clauses. I could not find out what on earth changed key/value pairs, until I found an astonishing explanation: It's a bug, no, actually a feature of PHP that I didn't think of, and I believe also the devs who constructed Tikis tra() logic.
Basically there is an include file language.php which defines something like this:
$lang = [ "first key" => "first value", ... "nth key" => "nth value", ];
Then there is another include file, custom.php, which can be edited through the custom translation admin page, which does something like this:
$lang_custom = array( "something" => "else", );
Then -if the bug ever gets fixed that this is omitted- custom.php close with a merge:
$lang = array_merge($lang, $lang_custom);
This is used so users/admins can modify the translation given in language.php. Newer values for keys given overwrite older definitions upon an array_merge.
Normally, this works as intended. BUT something completely different can happen if keys with numbers appear...
Voilà, according to PHP manual
"If, however, the arrays contain numeric keys, the later value will not overwrite the original value, but will be appended. "
Which produces very funny (NOT) results, which are very hard to debug. And - language.php for German (de.de) DOES contain several numeric keys.
Also, a user or admin could at any time enter numeric keys. IMHO this "feature" should be documented and measures against numerical user entries be taken, unless I am completely mistaken. But simply try this little PHP demonstrator:
$lang is taken from the real language.php.
<?php $lang = [ "1" => "1", "5" => "5", "10" => "10", "15" => "15", "30" => "30", "2" => "2", "4" => "4", "6" => "6", "7" => "7", "8" => "8", "9" => "9", "20" => "20", "40" => "40", "50" => "50", "60" => "60", ]; $lang_custom = array( "something" => "else", ); $merge = array_merge($lang, $lang_custom); print_r($merge); ?>
Backported in Tiki 23.x, 22.x, 21.x, 18.x
Show.tiki.org snapshot creation is in progress... Please monitor http:///snapshots/ for progress. Note that if you get a popup asking for a username/password, please just enter "show" and "show".
Password reset was successful
Password reset failed
Show.tiki.org instance destruction is in progress... Please wait...
The public/private keys configured to connect to show2.tikiwiki.org were not accepted. Please make sure you are using RSA keys. Thanks.
Unable to connect to show2.tikiwiki.org. Please let us know of the problem so that we can do something about it. Thanks.
Show.tiki.org is currently under maintenance. Sorry for the inconvenience.
Unable to get information from show2.tikiwiki.org. Please let us know of the problem so that we can do something about it. Thanks.
Show.tiki.org is in the progress of creating the new instance. Please continue waiting for a minute or two. If this continues on for more than 10 minutes, please let us know of the problem so that we can do something about it. Thanks.
To help developers solve the bug, we kindly request that you demonstrate your bug on a show2.tikiwiki.org instance. To start, simply select a version and click on "Create show2.tikiwiki.org instance". Once the instance is ready (in a minute or two), as indicated in the status window below, you can then access that instance, login (the initial admin username/password is "admin") and configure the Tiki to demonstrate your bug. Priority will be given to bugs that have been demonstrated on show2.tikiwiki.org.
The URL for the show2.tikiwiki.org instance that demonstrates this bug is at: http://. Note that if you get a popup asking for a username/password, please just enter "show" and "show". This is different from the initial login and password for a new Tiki which is "admin" and "admin".
For the install log, see http:///info.txt
Note that if you see PHP errors or a Tiki claiming to be missing third party software, the instance creation is probably not finished. Please wait a couple minutes and reload.
Snapshots are database dumps of the configuration that developers can download for debugging. Once you have reproduced your bug on the show2.tikiwiki.org instance, create a snapshot that can then be downloaded by developers for further investigation.
Snapshots can be accessed at: http:///snapshots/. Note that if you get a popup asking for a username/password, please just enter "show" and "show".Create new snapshot
|No attachments for this item|