| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 | <?phpfunction array_diff_key_recursive (array $arr1, array $arr2) {  $diff = array_diff_key($arr1, $arr2);  $intersect = array_intersect_key($arr1, $arr2);  foreach ($intersect as $k => $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);
 |