diff options
author | Mario <mario@mariovavti.com> | 2018-10-13 14:00:12 +0200 |
---|---|---|
committer | Mario <mario@mariovavti.com> | 2018-10-13 14:00:12 +0200 |
commit | e5184458530bb0394e12026c82ee89257115f690 (patch) | |
tree | 9a4ee70d556fa355d527e679469725f9ec0b140d | |
parent | 8ce240b95c62f4b702b60977f63b0223a8ec0849 (diff) | |
parent | 6ae9ef571ea02aa5b80c575de70ecec1289c21db (diff) | |
download | volse-hubzilla-e5184458530bb0394e12026c82ee89257115f690.tar.gz volse-hubzilla-e5184458530bb0394e12026c82ee89257115f690.tar.bz2 volse-hubzilla-e5184458530bb0394e12026c82ee89257115f690.zip |
Merge branch 'patch-11' into 'dev'
Add date/time plurals translation in JavaScript
See merge request hubzilla/core!1331
-rw-r--r-- | include/js_strings.php | 19 | ||||
-rw-r--r-- | include/language.php | 28 | ||||
-rw-r--r-- | view/js/main.js | 41 | ||||
-rwxr-xr-x | view/tpl/js_strings.tpl | 2 |
4 files changed, 65 insertions, 25 deletions
diff --git a/include/js_strings.php b/include/js_strings.php index d9038e838..5ad7c072a 100644 --- a/include/js_strings.php +++ b/include/js_strings.php @@ -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') : '[]'), diff --git a/include/language.php b/include/language.php index 69a7e3004..c56d5acda 100644 --- a/include/language.php +++ b/include/language.php @@ -255,6 +255,34 @@ 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() { + + $r = ""; + $lang = str_replace('-', '_', App::$language); + if(function_exists("string_plural_select_".$lang)) + $r = trim(shell_exec("sed -n '5p' view/".$lang."/hstrings.php | grep 'return' | tr -d '$'")); + return ($r != "" ? $r : "return 0;"); +} + +/** * @brief Provide a fallback which will not collide with a function defined in * any language file. * diff --git a/view/js/main.js b/view/js/main.js index 48277f5cc..3e81ba0e4 100644 --- a/view/js/main.js +++ b/view/js/main.js @@ -44,25 +44,28 @@ $(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){return aStr['t07'].split("/")[tf(value)];}, + hour : aStr['t08'], + hours : function(value){return aStr['t09'].split("/")[tf(value)];}, + day : aStr['t10'], + days : function(value){return aStr['t11'].split("/")[tf(value)];}, + month : aStr['t12'], + months : function(value){return aStr['t13'].split("/")[tf(value)];}, + year : aStr['t14'], + years : function(value){return aStr['t15'].split("/")[tf(value)];}, + wordSeparator : aStr['t16'], + numbers : aStr['t17'], + }; + //mod_mail only $(".mail-conv-detail .autotime").timeago(); diff --git a/view/tpl/js_strings.tpl b/view/tpl/js_strings.tpl index 01fc3f993..f7425ba98 100755 --- a/view/tpl/js_strings.tpl +++ b/view/tpl/js_strings.tpl @@ -34,7 +34,7 @@ 'name_ok1' : "{{$name_ok1}}", 'name_ok2' : "{{$name_ok2}}", - + 'plural_func' : "{{$plural_func}}", 't01' : "{{$t01}}", 't02' : "{{$t02}}", |