aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/js_strings.php19
-rw-r--r--include/language.php28
-rw-r--r--view/js/main.js41
-rwxr-xr-xview/tpl/js_strings.tpl2
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}}",