Skip to content

Commit b29462b

Browse files
committed
fix: key sorting
1 parent 8933d3f commit b29462b

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

system/Commands/Translation/LocalizationSync.php

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515

1616
use CodeIgniter\CLI\BaseCommand;
1717
use CodeIgniter\CLI\CLI;
18-
use CodeIgniter\Helpers\Array\ArrayHelper;
1918
use Config\App;
2019
use Locale;
2120
use RecursiveDirectoryIterator;
@@ -134,7 +133,6 @@ private function process(string $originalLocale, string $targetLocale): void
134133
}
135134

136135
$targetLanguageKeys = $this->mergeLanguageKeys($originalLanguageKeys, $targetLanguageKeys, $originalLanguageFile->getBasename('.php'));
137-
// ksort($targetLanguageKeys);
138136

139137
$content = "<?php\n\nreturn " . var_export($targetLanguageKeys, true) . ";\n";
140138
file_put_contents($targetLanguageFile, $content);
@@ -149,28 +147,34 @@ private function process(string $originalLocale, string $targetLocale): void
149147
*/
150148
private function mergeLanguageKeys(array $originalLanguageKeys, array $targetLanguageKeys, string $prefix = ''): array
151149
{
150+
$mergedLanguageKeys = [];
151+
152152
foreach ($originalLanguageKeys as $key => $value) {
153153
$placeholderValue = $prefix !== '' ? $prefix . '.' . $key : $key;
154154

155155
if (! is_array($value)) {
156156
// Keep the old value
157157
// TODO: The value type may not match the original one
158158
if (array_key_exists($key, $targetLanguageKeys)) {
159+
$mergedLanguageKeys[$key] = $targetLanguageKeys[$key];
160+
159161
continue;
160162
}
161163

162164
// Set new key with placeholder
163-
$targetLanguageKeys[$key] = $placeholderValue;
165+
$mergedLanguageKeys[$key] = $placeholderValue;
164166
} else {
165167
if (! array_key_exists($key, $targetLanguageKeys)) {
166-
$targetLanguageKeys[$key] = [];
168+
$mergedLanguageKeys[$key] = $this->mergeLanguageKeys($value, [], $placeholderValue);
169+
170+
continue;
167171
}
168172

169-
$targetLanguageKeys[$key] = $this->mergeLanguageKeys($value, $targetLanguageKeys[$key], $placeholderValue);
173+
$mergedLanguageKeys[$key] = $this->mergeLanguageKeys($value, $targetLanguageKeys[$key], $placeholderValue);
170174
}
171175
}
172176

173-
return ArrayHelper::intersectKeyRecursive($targetLanguageKeys, $originalLanguageKeys);
177+
return $mergedLanguageKeys;
174178
}
175179

176180
private function isIgnoredFile(SplFileInfo $file): bool

0 commit comments

Comments
 (0)