admin/define_language.php
We use this page a lot and spend a lot of time looking for the relevant file in the long list which, for us, is ordered in an unhelpful way.
Is it possible to order the list A-Z by filename without changing the core file?
Maybe it's just us that has this issue with the list?
If not, is it something that would help other users if changed in core?
TYIA
Tools > Define Languages
-
heatherbell
- Senior Contributor
- Posts: 2540
- Joined: Mon Oct 07, 2019 4:39 am
- Phoenix Version:
- Has thanked: 35 times
- Been thanked: 243 times
-
ecartz
- Core Team
- Posts: 3084
- Joined: Tue Nov 05, 2019 6:02 pm
- Phoenix Version:
- Has thanked: 4 times
- Been thanked: 208 times
Re: Tools > Define Languages
Not at the moment. It would be possible to make it changeable without modifying core. I can look into that later. It will probably be a few versions, at least 1.0.8.10.heatherbell wrote: ↑Tue Nov 16, 2021 1:38 pm Is it possible to order the list A-Z by filename without changing the core file?
New file admin/includes/classes/override/translation_tree.php
Code: Select all
class translation_tree {
const EXCLUDES = ['.', '..', '.DS_Store', 'Thumbs.db'];
protected static function _read($directory, &$files) {
$directory = rtrim($directory, '/') . '/';
if ($handle = opendir($directory)) {
while (false !== ($filename = readdir($handle))) {
if (in_array($filename, static::EXCLUDES)) {
continue;
}
$path = $directory . $filename;
$file = [
'name' => $path,
'is_dir' => is_dir($path),
'writable' => Path::is_writable($path),
'size' => filesize($path),
'last_modified' => strftime(DATE_TIME_FORMAT, filemtime($path)),
];
$files[] = $file;
if ($file['is_dir']) {
static::_read($path, $files);
}
}
}
}
public static function read($path) {
$files = [];
static::_read($path, $files);
usort($files, function ($a, $b) {
return strcmp(basename($a['name']), basename($b['name']));
});
return $files;
}
}Code: Select all
foreach (translation_tree::read(DIR_FS_CATALOG_LANGUAGES . $_GET['lngdir']) as $file) {-
heatherbell
- Senior Contributor
- Posts: 2540
- Joined: Mon Oct 07, 2019 4:39 am
- Phoenix Version:
- Has thanked: 35 times
- Been thanked: 243 times
Re: Tools > Define Languages
@ecartz
On 1.0.8.7 that gives:
unexpected ',', expecting ')' in
I guess there's one too many commas there so removed one but that then gives:
unexpected 'public' (T_PUBLIC) in
I guessed there was a missing } before that line so added it but that then gives numerous warnings like:
filesize(): stat failed for /includes/languages/englishcontact_us.php
filemtime(): stat failed for /includes/languages/englishcontact_us.php
I notice a missing / in those warnings
and the list shows filenames with first letter missing like e.g. ccount.php
and only lists language files for pages, does not list any of the module language files
I'm stuck now
On 1.0.8.7 that gives:
unexpected ',', expecting ')' in
Code: Select all
$path = rtrim($directory,, '/') . '/';
unexpected 'public' (T_PUBLIC) in
Code: Select all
public static function read($path) {
filesize(): stat failed for /includes/languages/englishcontact_us.php
filemtime(): stat failed for /includes/languages/englishcontact_us.php
I notice a missing / in those warnings
and the list shows filenames with first letter missing like e.g. ccount.php
and only lists language files for pages, does not list any of the module language files
I'm stuck now
-
ecartz
- Core Team
- Posts: 3084
- Joined: Tue Nov 05, 2019 6:02 pm
- Phoenix Version:
- Has thanked: 4 times
- Been thanked: 208 times
Re: Tools > Define Languages
I updated the previous post to hopefully fix the syntax errors. I think that the last set of problems was from assigning to the wrong variable after the rtrim.
-
heatherbell
- Senior Contributor
- Posts: 2540
- Joined: Mon Oct 07, 2019 4:39 am
- Phoenix Version:
- Has thanked: 35 times
- Been thanked: 243 times
Re: Tools > Define Languages
Many thanks - all warnings now gone but the sorting, although improved, is still not entirely A-Z as hoped.
You do not have the required permissions to view the files attached to this post.
-
ecartz
- Core Team
- Posts: 3084
- Joined: Tue Nov 05, 2019 6:02 pm
- Phoenix Version:
- Has thanked: 4 times
- Been thanked: 208 times
Re: Tools > Define Languages
So english.php is first, because it's hardcoded that way. That might be difficult to change. It would probably be easier just to remember where it is, since it would always be first. If this really bothers you, we can talk about it again when I next modify that file.
MATC.php is before about_us.php because capital letters sort before lowercase letters. If that bothers you, you could change that by changing strcmp to strcasecmp in the new file.
That's the only two things that look out of order to me. And like I said, both are in a predictable order.
MATC.php is before about_us.php because capital letters sort before lowercase letters. If that bothers you, you could change that by changing strcmp to strcasecmp in the new file.
That's the only two things that look out of order to me. And like I said, both are in a predictable order.
-
heatherbell
- Senior Contributor
- Posts: 2540
- Joined: Mon Oct 07, 2019 4:39 am
- Phoenix Version:
- Has thanked: 35 times
- Been thanked: 243 times
Re: Tools > Define Languages
Many thanks, I just did not understand the anomalies, as long as it is sorting as expected.
The change will make scanning, by eye, a list of about 250 items easier.
Of course, there is the option of app.php/addons/free_addon/language_search_edit/, thanks to zipurman.