NobGit
public nobgit read

NobMail

Based on mailcow: dockerized

Languages

Repository composition by tracked source files.

PHP
PHP 49% JavaScript 35% HTML 9% CSS 4% Shell 2% Python 1% Lua 0% Perl 0% Ruby 0% SCSS 0%
Create file Wiki Documentation
Clone
https://nobgit.com/orgs/nobgit/nobmail.git
ssh://[email protected]:2222/orgs/nobgit/nobmail.git
add-new-lang-keys.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);