Skip to content

Commit

Permalink
Merge branch 'report-non-translated'
Browse files Browse the repository at this point in the history
  • Loading branch information
plepe committed Jun 14, 2018
2 parents 94bc48a + d4c11f2 commit eb4addb
Show file tree
Hide file tree
Showing 2 changed files with 83 additions and 6 deletions.
53 changes: 53 additions & 0 deletions inc/lang.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,35 @@ function change_language() {
ob.submit();
}

function lang_shall_count_translations() {
if (typeof lang_non_translated === 'undefined') {
return false
}

if (lang_non_translated === null) {
return false
}

if (typeof lang_non_translated !== 'object') {
return false
}

if (Array.isArray(lang_non_translated)) {
lang_non_translated = {}
}

return true
}

function lang_element(str, count) {
var l;
var non_translated_counted = false

if (lang_shall_count_translations() && str in lang_non_translated) {
lang_non_translated[str]++
non_translated_counted = true
}


if(l=lang_str[str]) {
if(typeof(l)=="string")
Expand Down Expand Up @@ -43,6 +70,14 @@ function lang_element(str, count) {
if(typeof debug=="function")
debug(str, "language string missing");

if (lang_shall_count_translations() && !non_translated_counted) {
if (str in lang_non_translated) {
lang_non_translated[str]++
} else {
lang_non_translated[str] = 1
}
}

if((l=str.match(/^tag:([^=]+)=(.*)$/))&&(l=lang_str["tag:*="+l[2]])) {
// Boolean values, see:
// http://wiki.openstreetmap.org/wiki/Proposed_features/boolean_values
Expand Down Expand Up @@ -186,8 +221,26 @@ function lang_code_check(lang) {
return lang.match(/^[a-z\-]+$/);
}

function lang_report_non_translated () {
if (Object.keys(lang_non_translated).length === 0) {
return
}

ajax('lang_report_non_translated', { ui_lang: ui_lang }, lang_non_translated, function () {})

for (var k in lang_non_translated) {
lang_non_translated[k] = 0
}
}

register_hook("options_change", lang_change);

register_hook('init', function () {
if (modulekit_loaded('modulekit-ajax')) {
window.setInterval(lang_report_non_translated, 300000)
}
})

// Create twig 'lang' function
register_hook('twig_init', function() {
Twig.extendFunction("lang", function() {
Expand Down
36 changes: 30 additions & 6 deletions inc/lang.php
Original file line number Diff line number Diff line change
Expand Up @@ -216,9 +216,11 @@ function lang_file_load_php($file) {

function lang_load($lang, $loaded=array()) {
global $lang_str;
global $lang_non_translated;
global $modulekit;

$lang_str=array();
$lang_non_translated = array();

lang_file_load_json(modulekit_file("modulekit-lang", "lang/base_{$lang}.json"));
lang_file_load_json(modulekit_file("modulekit-lang", "lang/lang_{$lang}.json"));
Expand Down Expand Up @@ -250,6 +252,14 @@ function lang_load($lang, $loaded=array()) {

$save_lang_str=$lang_str;
lang_load($base, $loaded);

// check which lang strings from base language are missing in the main language
foreach ($lang_str as $k => $v) {
if (!array_key_exists($k, $save_lang_str)) {
$lang_non_translated[$k] = 0;
}
}

$lang_str=array_merge($lang_str, $save_lang_str);
}

Expand All @@ -259,6 +269,7 @@ function lang_code_check($lang) {

function lang_init() {
global $lang_str;
global $lang_non_translated;
global $ui_lang;
global $language_list;
global $languages;
Expand Down Expand Up @@ -300,7 +311,8 @@ function lang_init() {
$cache_file="{$modulekit_cache_dir}lang_{$ui_lang}.data";
$cache_file_js="{$modulekit_cache_dir}lang_{$ui_lang}.js";
if(file_exists($cache_file)) {
$lang_str=unserialize(file_get_contents($cache_file));
$vars = unserialize(file_get_contents($cache_file));
$lang_str = $vars['lang_str'];
}
else {
lang_load($ui_lang);
Expand All @@ -310,22 +322,34 @@ function lang_init() {
$lang_str["lang_native:".$abbr]=$lang;
}

$vars=array(
"ui_lang" => $ui_lang,
"lang_str" => $lang_str,
"language_list" => $language_list,
"languages" => $languages,
"lang_genders" => $lang_genders,
"lang_non_translated" => $lang_non_translated,
);

if(is_writeable($modulekit_cache_dir)) {
file_put_contents($cache_file, serialize($lang_str));
file_put_contents($cache_file, serialize($vars));
file_put_contents($cache_file_js, "var lang_str=".json_encode($lang_str).";\n");
}
}

$vars=array("ui_lang"=>$ui_lang, "language_list"=>$language_list, "languages"=>$languages, "lang_genders"=>$lang_genders);
if(file_exists($cache_file_js))
if(file_exists($cache_file_js)) {
unset($vars['lang_str']);
add_html_header("<script type='text/javascript' src='{$cache_file_js}?{$modulekit['version']}'></script>");
else
$vars['lang_str']=$lang_str;
}

html_export_var($vars);
add_html_header("<meta http-equiv=\"content-language\" content=\"{$ui_lang}\">");
}

function ajax_lang_report_non_translated ($param, $post) {
call_hooks('lang_report_non_translated', $post, $param['ui_lang']);
}

register_hook("init", "lang_init");

// Create twig 'lang' function
Expand Down

0 comments on commit eb4addb

Please sign in to comment.