64 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
function 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-gb.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);
 |