Skip to content

Commit 5b90b6f

Browse files
committed
refactor: Check type translated value
1 parent d23c879 commit 5b90b6f

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

system/Commands/Translation/LocalizationSync.php

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

1616
use CodeIgniter\CLI\BaseCommand;
1717
use CodeIgniter\CLI\CLI;
18+
use CodeIgniter\Exceptions\LogicException;
1819
use Config\App;
1920
use Locale;
2021
use RecursiveDirectoryIterator;
@@ -152,7 +153,7 @@ private function mergeLanguageKeys(array $originalLanguageKeys, array $targetLan
152153
foreach ($originalLanguageKeys as $key => $value) {
153154
$placeholderValue = $prefix !== '' ? $prefix . '.' . $key : $key;
154155

155-
if (! is_array($value)) {
156+
if (is_string($value)) {
156157
// Keep the old value
157158
// TODO: The value type may not match the original one
158159
if (array_key_exists($key, $targetLanguageKeys)) {
@@ -163,14 +164,16 @@ private function mergeLanguageKeys(array $originalLanguageKeys, array $targetLan
163164

164165
// Set new key with placeholder
165166
$mergedLanguageKeys[$key] = $placeholderValue;
166-
} else {
167+
} elseif (is_array($value)) {
167168
if (! array_key_exists($key, $targetLanguageKeys)) {
168169
$mergedLanguageKeys[$key] = $this->mergeLanguageKeys($value, [], $placeholderValue);
169170

170171
continue;
171172
}
172173

173174
$mergedLanguageKeys[$key] = $this->mergeLanguageKeys($value, $targetLanguageKeys[$key], $placeholderValue);
175+
} else {
176+
throw new LogicException('Value for the key "' . $placeholderValue . '" is of the wrong type. Only "array" or "string" is allowed.');
174177
}
175178
}
176179

0 commit comments

Comments
 (0)