Merge branch 'patch-14' into 'dev'

Add date/time plurals translation in JavaScript

See merge request hubzilla/core!1336
This commit is contained in:
Mario 2018-10-13 20:16:56 +02:00
commit a2575059e2
5 changed files with 65 additions and 27 deletions

View File

@ -38,6 +38,15 @@ function js_strings() {
// using the defaults set below if left untranslated, empty strings if
// translated to "NONE" and the corresponding language strings
// if translated to anything else
'minutes' => tt('%d minutes', '%d minutes', '%d'),
'hours' => tt('about %d hours', 'about %d hours', '%d'),
'days' => tt('%d days', '%d days', '%d'),
'months' => tt('%d months', '%d months', '%d'),
'years' => tt('%d years', '%d years', '%d'),
// get plural function code
'plural_func' => tf(),
'$t01' => ((t('timeago.prefixAgo') == 'timeago.prefixAgo') ? '' : ((t('timeago.prefixAgo') == 'NONE') ? '' : t('timeago.prefixAgo'))),
'$t02' => ((t('timeago.prefixFromNow') == 'timeago.prefixFromNow') ? '' : ((t('timeago.prefixFromNow') == 'NONE') ? '' : t('timeago.prefixFromNow'))),
'$t03' => ((t('timeago.suffixAgo') == 'timeago.suffixAgo') ? 'ago' : ((t('timeago.suffixAgo') == 'NONE') ? '' : t('timeago.suffixAgo'))),
@ -46,15 +55,15 @@ function js_strings() {
// translatable main strings for jquery.timeago
'$t05' => t('less than a minute'),
'$t06' => t('about a minute'),
'$t07' => t('%d minutes'),
'$t07' => ta('%d minutes'),
'$t08' => t('about an hour'),
'$t09' => t('about %d hours'),
'$t09' => ta('about %d hours'),
'$t10' => t('a day'),
'$t11' => t('%d days'),
'$t11' => ta('%d days'),
'$t12' => t('about a month'),
'$t13' => t('%d months'),
'$t13' => ta('%d months'),
'$t14' => t('about a year'),
'$t15' => t('%d years'),
'$t15' => ta('%d years'),
'$t16' => t(' '), // wordSeparator
'$t17' => ((t('timeago.numbers') != 'timeago.numbers') ? t('timeago.numbers') : '[]'),

View File

@ -254,6 +254,32 @@ function tt($singular, $plural, $count, $ctx = ''){
}
}
/**
* @brief Return slash separated string of plurals translation forms
*
* @param string $k key in translations array
* @return string
*/
function ta($k){
$t = App::$strings[$k];
if (is_array($t))
$t = implode("/", $t);
return ($t == "" ? $k : $t);
}
/**
* @brief Return string_plural_select_xx function code
*
* @return string
*/
function tf() {
$s = "plural_function_code";
return (x(App::$strings, $s) ? App::$strings[$s] : "return 0;");
}
/**
* @brief Provide a fallback which will not collide with a function defined in
* any language file.

View File

@ -58,8 +58,9 @@ function po2php_run($argc,$argv) {
$out .= 'function string_plural_select_' . $lang . '($n){'."\n";
$out .= ' return '.$cond.';'."\n";
$out .= '}}'."\n";
$out .= 'App::$rtl = ' . intval($rtl) ;
$out .= 'App::$rtl = ' . intval($rtl) . ";\n" ;
$out .= 'App::$strings["plural_function_code"] = "return ' . str_replace("$", "", $cond) . ';"';
}
if ($k!="" && substr($l,0,7)=="msgstr "){

View File

@ -44,25 +44,27 @@ $(document).ready(function() {
$(document).on('click', '.conversation-settings-link', getConversationSettings);
$(document).on('click', '#settings_module_ajax_submit', postConversationSettings);
jQuery.timeago.settings.strings = {
prefixAgo : aStr['t01'],
prefixFromNow : aStr['t02'],
suffixAgo : aStr['t03'],
suffixFromNow : aStr['t04'],
seconds : aStr['t05'],
minute : aStr['t06'],
minutes : aStr['t07'],
hour : aStr['t08'],
hours : aStr['t09'],
day : aStr['t10'],
days : aStr['t11'],
month : aStr['t12'],
months : aStr['t13'],
year : aStr['t14'],
years : aStr['t15'],
wordSeparator : aStr['t16'],
numbers : aStr['t17'],
};
var tf = new Function('n', aStr['plural_func']);
jQuery.timeago.settings.strings = {
prefixAgo : aStr['t01'],
prefixFromNow : aStr['t02'],
suffixAgo : aStr['t03'],
suffixFromNow : aStr['t04'],
seconds : aStr['t05'],
minute : aStr['t06'],
minutes : function(value){var str=aStr['t07'].split("/")[tf(value)]; return (str ? str : aStr['t07']);},
hour : aStr['t08'],
hours : function(value){var str=aStr['t09'].split("/")[tf(value)]; return (str ? str : aStr['t09']);},
day : aStr['t10'],
days : function(value){var str=aStr['t11'].split("/")[tf(value)]; return (str ? str : aStr['t11']);},
month : aStr['t12'],
months : function(value){var str=aStr['t13'].split("/")[tf(value)]; return (str ? str : aStr['t13']);},
year : aStr['t14'],
years : function(value){var str=aStr['t15'].split("/")[tf(value)]; return (str ? str : aStr['t15']);},
wordSeparator : aStr['t16'],
numbers : aStr['t17'],
};
//mod_mail only
$(".mail-conv-detail .autotime").timeago();

View File

@ -34,7 +34,7 @@
'name_ok1' : "{{$name_ok1}}",
'name_ok2' : "{{$name_ok2}}",
'plural_func' : "{{$plural_func}}",
't01' : "{{$t01}}",
't02' : "{{$t02}}",