12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- <?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);
|