| Matthias Andreas Benkard | 12a5735 | 2021-12-28 18:02:04 +0100 | [diff] [blame] | 1 | <?php | 
 | 2 |  | 
 | 3 | function array_diff_key_recursive (array $arr1, array $arr2) { | 
 | 4 |   $diff = array_diff_key($arr1, $arr2); | 
 | 5 |   $intersect = array_intersect_key($arr1, $arr2); | 
 | 6 |  | 
 | 7 |   foreach ($intersect as $k => $v) { | 
 | 8 |     if (is_array($arr1[$k]) && is_array($arr2[$k])) { | 
 | 9 |       $d = array_diff_key_recursive($arr1[$k], $arr2[$k]); | 
 | 10 |  | 
 | 11 |       if ($d) { | 
 | 12 |         $diff[$k] = $d; | 
 | 13 |       } | 
 | 14 |     } | 
 | 15 |   } | 
 | 16 |  | 
 | 17 |   return $diff; | 
 | 18 | } | 
 | 19 |  | 
 | 20 | // target lang | 
 | 21 | $targetLang = $argv[1]; | 
 | 22 |  | 
 | 23 | if(empty($targetLang)) { | 
 | 24 |   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, | 
 | 25 |   for example `sk` for the Slovak language'."\n"); | 
 | 26 | } | 
 | 27 |  | 
 | 28 | // load master lang | 
| Matthias Andreas Benkard | 1ba5381 | 2022-12-27 17:32:58 +0100 | [diff] [blame] | 29 | $masterLang = file_get_contents(__DIR__.'/../data/web/lang/lang.en-gb.json'); | 
| Matthias Andreas Benkard | 12a5735 | 2021-12-28 18:02:04 +0100 | [diff] [blame] | 30 | $masterLang = json_decode($masterLang, true); | 
 | 31 |  | 
 | 32 | // load target lang | 
 | 33 | $lang = file_get_contents(__DIR__.'/../data/web/lang/lang.'.$targetLang.'.json'); | 
 | 34 | $lang = json_decode($lang, true); | 
 | 35 |  | 
 | 36 | // compare lang keys | 
 | 37 | $result = array_diff_key_recursive($masterLang, $lang); | 
 | 38 |  | 
 | 39 | if(empty($result)) { | 
 | 40 |   die('No new keys were added. Looks like target lang is up to date.'."\n"); | 
 | 41 | } | 
 | 42 |  | 
 | 43 | foreach($result as $key => $val) { | 
 | 44 |   // check if section key exists in target lang | 
 | 45 |   if(array_key_exists($key, $lang)) { | 
 | 46 |     // add only missing section keys | 
 | 47 |     foreach ($val as $k => $v) { | 
 | 48 |       $lang[$key][$k] = $v; | 
 | 49 |     } | 
 | 50 |     // sort keys | 
 | 51 |     ksort($lang[$key]); | 
 | 52 |   } else { | 
 | 53 |     // add whole section | 
 | 54 |     $lang[$key] = $val; | 
 | 55 |     ksort($lang); | 
 | 56 |   } | 
 | 57 | } | 
 | 58 |  | 
 | 59 | $lang = json_encode($lang, JSON_PRETTY_PRINT|JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES); | 
 | 60 | file_put_contents(__DIR__.'/../data/web/lang/lang.'.$targetLang.'.json', $lang); | 
 | 61 |  | 
 | 62 | echo 'Following new lang keys were added and need translation:'."\n"; | 
 | 63 | print_r($result); |