From 58da154bfc3b12fafbd5900cfee49d094d48a4db Mon Sep 17 00:00:00 2001 From: Kristian Feldsam Date: Wed, 1 Sep 2021 17:11:59 +0200 Subject: [PATCH] [Helper] Helper script to detect missing translations (#4177) Signed-off-by: Kristian Feldsam --- helper-scripts/add-new-lang-keys.php | 63 ++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 helper-scripts/add-new-lang-keys.php diff --git a/helper-scripts/add-new-lang-keys.php b/helper-scripts/add-new-lang-keys.php new file mode 100644 index 00000000..19010f86 --- /dev/null +++ b/helper-scripts/add-new-lang-keys.php @@ -0,0 +1,63 @@ + $v) { + if (is_array($arr1[$k]) && is_array($arr2[$k])) { + $d = array_diff_key_recursive($arr1[$k], $arr2[$k]); + + if ($d) { + $diff[$k] = $d; + } + } + } + + return $diff; +} + +// target lang +$targetLang = $argv[1]; + +if(empty($targetLang)) { + die('Please specify target lang as the first argument, to which you want to add missing keys from master lang (EN). Use the lowercase name, + for example `sk` for the Slovak language'."\n"); +} + +// load master lang +$masterLang = file_get_contents(__DIR__.'/../data/web/lang/lang.en.json'); +$masterLang = json_decode($masterLang, true); + +// load target lang +$lang = file_get_contents(__DIR__.'/../data/web/lang/lang.'.$targetLang.'.json'); +$lang = json_decode($lang, true); + +// compare lang keys +$result = array_diff_key_recursive($masterLang, $lang); + +if(empty($result)) { + die('No new keys were added. Looks like target lang is up to date.'."\n"); +} + +foreach($result as $key => $val) { + // check if section key exists in target lang + if(array_key_exists($key, $lang)) { + // add only missing section keys + foreach ($val as $k => $v) { + $lang[$key][$k] = $v; + } + // sort keys + ksort($lang[$key]); + } else { + // add whole section + $lang[$key] = $val; + ksort($lang); + } +} + +$lang = json_encode($lang, JSON_PRETTY_PRINT|JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES); +file_put_contents(__DIR__.'/../data/web/lang/lang.'.$targetLang.'.json', $lang); + +echo 'Following new lang keys were added and need translation:'."\n"; +print_r($result);