summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--admin_media.php15
-rw-r--r--admin_modules.php15
-rw-r--r--admin_site_logs.php16
-rw-r--r--admin_users.php15
-rw-r--r--includes/functions/functions_print_lists.php163
-rw-r--r--library/WT/I18N.php42
6 files changed, 54 insertions, 212 deletions
diff --git a/admin_media.php b/admin_media.php
index 65643b1bff..53c1db0e75 100644
--- a/admin_media.php
+++ b/admin_media.php
@@ -1044,20 +1044,7 @@ if (check_media_structure()) {
->addInlineJavaScript('
jQuery("#media_table").dataTable( {
"sDom": \'<"H"pf<"dt-clear">irl>t<"F"pl>\',
- "oLanguage": {
- "sLengthMenu": "'./* I18N: Display %s [records per page], %s is a placeholder for listbox containing numeric options */ WT_I18N::translate('Display %s', '<select><option value=\"10\">10<option value=\"25\">25</option><option value=\"50\">50</option><option value=\"100\">100</option><option value=\"500\">500</option><option value=\"-1\">'.WT_I18N::translate('All').'</option></select>').'",
- "sZeroRecords": "'.WT_I18N::translate('No records to display').'",
- "sInfo": "'./* I18N: %s are placeholders for numbers */ WT_I18N::translate('Showing %1$s to %2$s of %3$s', '_START_', '_END_', '_TOTAL_').'",
- "sInfoEmpty": "'./* I18N: %s are placeholders for numbers */ WT_I18N::translate('Showing %1$s to %2$s of %3$s', '0', '0', '0').'",
- "sInfoFiltered": "'./* I18N: %s is a placeholder for a number */ WT_I18N::translate('(filtered from %s total entries)', '_MAX_').'",
- "sSearch": "'.WT_I18N::translate('Filter').'",
- "oPaginate": {
- "sFirst": "'./* I18N: button label, first page */ WT_I18N::translate('first').'",
- "sLast": "'./* I18N: button label, last page */ WT_I18N::translate('last').'",
- "sNext": "'./* I18N: button label, next page */ WT_I18N::translate('next').'",
- "sPrevious": "'./* I18N: button label, previous page */ WT_I18N::translate('previous').'"
- }
- },
+ '.WT_I18N::datatablesI18N().',
"bJQueryUI": true,
"bAutoWidth":false,
"aaSorting": [[ 1, "asc" ]],
diff --git a/admin_modules.php b/admin_modules.php
index 65575a631f..b6c25380be 100644
--- a/admin_modules.php
+++ b/admin_modules.php
@@ -92,20 +92,7 @@ $controller
var oTable = jQuery("#installed_table").dataTable( {
"sDom": \'<"H"pf<"dt-clear">irl>t<"F"pl>\',
- "oLanguage": {
- "sLengthMenu": "'./* I18N: Display %s [records per page], %s is a placeholder for listbox containing numeric options */ WT_I18N::translate('Display %s', '<select><option value=\"10\">10<option value=\"25\">25</option><option value=\"50\">50</option><option value=\"100\">100</option><option value=\"-1\">'.WT_I18N::translate('All').'</option></select>').'",
- "sZeroRecords": "'.WT_I18N::translate('No records to display').'",
- "sInfo": "'./* I18N: %s are placeholders for numbers */ WT_I18N::translate('Showing %1$s to %2$s of %3$s', '_START_', '_END_', '_TOTAL_').'",
- "sInfoEmpty": "'./* I18N: %s are placeholders for numbers */ WT_I18N::translate('Showing %1$s to %2$s of %3$s', '0', '0', '0').'",
- "sInfoFiltered": "'./* I18N: %s is a placeholder for a number */ WT_I18N::translate('(filtered from %s total entries)', '_MAX_').'",
- "sSearch": "'.WT_I18N::translate('Filter').'",
- "oPaginate": {
- "sFirst": "'./* I18N: button label, first page */ WT_I18N::translate('first').'",
- "sLast": "'./* I18N: button label, last page */ WT_I18N::translate('last').'",
- "sNext": "'./* I18N: button label, next page */ WT_I18N::translate('next').'",
- "sPrevious": "'./* I18N: button label, previous page */ WT_I18N::translate('previous').'"
- }
- },
+ '.WT_I18N::datatablesI18N().',
"bJQueryUI": true,
"bAutoWidth":false,
"aaSorting": [[ 1, "asc" ]],
diff --git a/admin_site_logs.php b/admin_site_logs.php
index 87900ed27b..eea89bbe42 100644
--- a/admin_site_logs.php
+++ b/admin_site_logs.php
@@ -184,21 +184,7 @@ $controller
"bProcessing": true,
"bServerSide": true,
"sAjaxSource": "'.WT_SERVER_NAME.WT_SCRIPT_PATH.WT_SCRIPT_NAME.'?action=load_json&from='.$from.'&to='.$to.'&type='.$type.'&text='.rawurlencode($text).'&ip='.rawurlencode($ip).'&user='.rawurlencode($user).'&gedc='.rawurlencode($gedc).'",
- "oLanguage": {
- "sLengthMenu": "'./* I18N: Display %s [records per page], %s is a placeholder for listbox containing numeric options */ WT_I18N::translate('Display %s', '<select><option value=\"10\">10<option value=\"20\">20</option><option value=\"50\">50</option><option value=\"100\">100</option><option value=\"500\">500</option><option value=\"1000\">1000</option><option value=\"-1\">'.WT_I18N::translate('All').'</option></select>').'",
- "sZeroRecords": "'.WT_I18N::translate('No records to display').'",
- "sInfo": "'./* I18N: %s are placeholders for numbers */ WT_I18N::translate('Showing %1$s to %2$s of %3$s', '_START_', '_END_', '_TOTAL_').'",
- "sInfoEmpty": "'./* I18N: %s are placeholders for numbers */ WT_I18N::translate('Showing %1$s to %2$s of %3$s', '0', '0', '0').'",
- "sInfoFiltered": "'./* I18N: %s is a placeholder for a number */ WT_I18N::translate('(filtered from %s total entries)', '_MAX_').'",
- "sProcessing": "'.WT_I18N::translate('Loading...').'",
- "sSearch": "'.WT_I18N::translate('Filter').'",
- "oPaginate": {
- "sFirst": "'./* I18N: button label, first page */ WT_I18N::translate('first').'",
- "sLast": "'./* I18N: button label, last page */ WT_I18N::translate('last').'",
- "sNext": "'./* I18N: button label, next page */ WT_I18N::translate('next').'",
- "sPrevious": "'./* I18N: button label, previous page */ WT_I18N::translate('previous').'"
- }
- },
+ '.WT_I18N::datatablesI18N(array(10,20,50,100,500,1000,-1)).',
"bJQueryUI": true,
"bAutoWidth":false,
"aaSorting": [[ 0, "desc" ]],
diff --git a/admin_users.php b/admin_users.php
index f5fb7b75c5..cfae4e36a5 100644
--- a/admin_users.php
+++ b/admin_users.php
@@ -697,20 +697,7 @@ default:
->addInlineJavaScript('
var oTable = jQuery("#list").dataTable({
"sDom": \'<"H"pf<"dt-clear">irl>t<"F"pl>\',
- "oLanguage": {
- "sLengthMenu": "'./* I18N: Display %s [records per page], %s is a placeholder for listbox containing numeric options */ WT_I18N::translate('Display %s', '<select><option value=\"10\">10<option value=\"25\">25</option><option value=\"50\">50</option><option value=\"100\">100</option><option value=\"500\">500</option><option value=\"-1\">'.WT_I18N::translate('All').'</option></select>').'",
- "sZeroRecords": "'.WT_I18N::translate('No records to display').'",
- "sInfo": "'./* I18N: %s are placeholders for numbers */ WT_I18N::translate('Showing %1$s to %2$s of %3$s', '_START_', '_END_', '_TOTAL_').'",
- "sInfoEmpty": "'./* I18N: %s are placeholders for numbers */ WT_I18N::translate('Showing %1$s to %2$s of %3$s', '0', '0', '0').'",
- "sInfoFiltered": "'./* I18N: %s is a placeholder for a number */ WT_I18N::translate('(filtered from %s total entries)', '_MAX_').'",
- "sSearch": "'.WT_I18N::translate('Filter').'",
- "oPaginate": {
- "sFirst": "'./* I18N: button label, first page */ WT_I18N::translate('first').'",
- "sLast": "'./* I18N: button label, last page */ WT_I18N::translate('last').'",
- "sNext": "'./* I18N: button label, next page */ WT_I18N::translate('next').'",
- "sPrevious": "'./* I18N: button label, previous page */ WT_I18N::translate('previous').'"
- }
- },
+ '.WT_I18N::datatablesI18N().',
"bProcessing" : true,
"bServerSide" : true,
"sAjaxSource" : "'.WT_SCRIPT_NAME.'?action=loadrows",
diff --git a/includes/functions/functions_print_lists.php b/includes/functions/functions_print_lists.php
index f8c96894e9..a5478ae73f 100644
--- a/includes/functions/functions_print_lists.php
+++ b/includes/functions/functions_print_lists.php
@@ -41,16 +41,6 @@ function print_indi_table($datalist, $option='') {
$SHOW_EST_LIST_DATES=get_gedcom_setting(WT_GED_ID, 'SHOW_EST_LIST_DATES');
if ($option=='MARR_PLAC') return;
- $pagination=
- '<select>'.
- '<option value="10">'.WT_I18N::number('10').'</option>'.
- '<option value="20">'.WT_I18N::number('20').'</option>'.
- '<option value="30">'.WT_I18N::number('30').'</option>'.
- '<option value="50">'.WT_I18N::number('50').'</option>'.
- '<option value="100">'.WT_I18N::number('100').'</option>'.
- '<option value="-1">'.WT_I18N::translate('All').'</option>'.
- '</select>';
-
$controller
->addExternalJavaScript(WT_STATIC_URL.'js/jquery/jquery.dataTables.min.js')
->addInlineJavaScript('
@@ -60,21 +50,7 @@ function print_indi_table($datalist, $option='') {
jQuery.fn.dataTableExt.oSort["num-html-desc"]=function(a,b) {a=parseFloat(a.replace(/<[^<]*>/, "")); b=parseFloat(b.replace(/<[^<]*>/, "")); return (a>b) ? -1 : (a<b ? 1 : 0);};
var oTable'.$table_id.' = jQuery("#'.$table_id.'").dataTable( {
"sDom": \'<"H"<"filtersH_'.$table_id.'"><"dt-clear">pf<"dt-clear">irl>t<"F"pl<"dt-clear"><"filtersF_'.$table_id.'">>\',
- "oLanguage": {
- "sLengthMenu": "'.addslashes(/* I18N: Display %s [records per page], %s is a placeholder for listbox containing numeric options */ WT_I18N::translate('Display %s', $pagination)).'",
- "sZeroRecords": "'.WT_I18N::translate('No records to display').'",
- "sInfo": "'./* I18N: %s are placeholders for numbers */ WT_I18N::translate('Showing %1$s to %2$s of %3$s', '_START_', '_END_', '_TOTAL_').'",
- "sInfoEmpty": "'./* I18N: %s are placeholders for numbers */ WT_I18N::translate('Showing %1$s to %2$s of %3$s', '0', '0', '0').'",
- "sInfoFiltered": "'./* I18N: %s is a placeholder for a number */ WT_I18N::translate('(filtered from %s total entries)', '_MAX_').'",
- "sProcessing": "'.WT_I18N::translate('Loading...').'",
- "sSearch": "'.WT_I18N::translate('Filter').'",
- "oPaginate": {
- "sFirst": "'./* I18N: button label, first page */ WT_I18N::translate('first').'",
- "sLast": "'./* I18N: button label, last page */ WT_I18N::translate('last').'",
- "sNext": "'./* I18N: button label, next page */ WT_I18N::translate('next').'",
- "sPrevious": "'./* I18N: button label, previous page */ WT_I18N::translate('previous').'"
- }
- },
+ '.WT_I18N::datatablesI18N().',
"bJQueryUI": true,
"bAutoWidth":false,
"bProcessing": true,
@@ -482,16 +458,6 @@ function print_fam_table($datalist, $option='') {
$table_id = 'ID'.floor(microtime()*1000000); // lists requires a unique ID in case there are multiple lists per page
if ($option=='BIRT_PLAC' || $option=='DEAT_PLAC') return;
- $pagination=
- '<select>'.
- '<option value="10">'.WT_I18N::number('10').'</option>'.
- '<option value="20">'.WT_I18N::number('20').'</option>'.
- '<option value="30">'.WT_I18N::number('30').'</option>'.
- '<option value="50">'.WT_I18N::number('50').'</option>'.
- '<option value="100">'.WT_I18N::number('100').'</option>'.
- '<option value="-1">'.WT_I18N::translate('All').'</option>'.
- '</select>';
-
$controller
->addExternalJavaScript(WT_STATIC_URL.'js/jquery/jquery.dataTables.min.js')
->addInlineJavaScript('
@@ -499,21 +465,7 @@ function print_fam_table($datalist, $option='') {
jQuery.fn.dataTableExt.oSort["unicode-desc"]=function(a,b) {return b.replace(/<[^<]*>/, "").localeCompare(a.replace(/<[^<]*>/, ""))};
var oTable'.$table_id.'=jQuery("#'.$table_id.'").dataTable( {
"sDom": \'<"H"<"filtersH_'.$table_id.'"><"dt-clear">pf<"dt-clear">irl>t<"F"pl<"dt-clear"><"filtersF_'.$table_id.'">>\',
- "oLanguage": {
- "sLengthMenu": "'.addslashes(WT_I18N::translate('Display %s', $pagination)).'",
- "sZeroRecords": "'.WT_I18N::translate('No records to display').'",
- "sInfo": "'./* I18N: %s are placeholders for numbers */ WT_I18N::translate('Showing %1$s to %2$s of %3$s', '_START_', '_END_', '_TOTAL_').'",
- "sInfoEmpty": "'./* I18N: %s are placeholders for numbers */ WT_I18N::translate('Showing %1$s to %2$s of %3$s', '0', '0', '0').'",
- "sInfoFiltered": "'./* I18N: %s is a placeholder for a number */ WT_I18N::translate('(filtered from %s total entries)', '_MAX_').'",
- "sProcessing": "'.WT_I18N::translate('Loading...').'",
- "sSearch": "'.WT_I18N::translate('Filter').'",
- "oPaginate": {
- "sFirst": "'./* I18N: button label, first page */ WT_I18N::translate('first').'",
- "sLast": "'./* I18N: button label, last page */ WT_I18N::translate('last').'",
- "sNext": "'./* I18N: button label, next page */ WT_I18N::translate('next').'",
- "sPrevious": "'./* I18N: button label, previous page */ WT_I18N::translate('previous').'"
- }
- },
+ '.WT_I18N::datatablesI18N().',
"bJQueryUI": true,
"bAutoWidth":false,
"bProcessing": true,
@@ -959,16 +911,6 @@ function print_fam_table($datalist, $option='') {
function print_sour_table($datalist) {
global $SHOW_LAST_CHANGE, $WT_IMAGES, $controller;
- $pagination=
- '<select>'.
- '<option value="10">'.WT_I18N::number('10').'</option>'.
- '<option value="20">'.WT_I18N::number('20').'</option>'.
- '<option value="30">'.WT_I18N::number('30').'</option>'.
- '<option value="50">'.WT_I18N::number('50').'</option>'.
- '<option value="100">'.WT_I18N::number('100').'</option>'.
- '<option value="-1">'.WT_I18N::translate('All').'</option>'.
- '</select>';
-
$table_id = "ID".floor(microtime()*1000000); // lists requires a unique ID in case there are multiple lists per page
$controller
->addExternalJavaScript(WT_STATIC_URL.'js/jquery/jquery.dataTables.min.js')
@@ -977,21 +919,7 @@ function print_sour_table($datalist) {
jQuery.fn.dataTableExt.oSort["unicode-desc"]=function(a,b) {return b.replace(/<[^<]*>/, "").localeCompare(a.replace(/<[^<]*>/, ""))};
jQuery("#'.$table_id.'").dataTable( {
"sDom": \'<"H"pf<"dt-clear">irl>t<"F"pl>\',
- "oLanguage": {
- "sLengthMenu": "'.addslashes(WT_I18N::translate('Display %s', $pagination)).'",
- "sZeroRecords": "'.WT_I18N::translate('No records to display').'",
- "sInfo": "'./* I18N: %s are placeholders for numbers */ WT_I18N::translate('Showing %1$s to %2$s of %3$s', '_START_', '_END_', '_TOTAL_').'",
- "sInfoEmpty": "'./* I18N: %s are placeholders for numbers */ WT_I18N::translate('Showing %1$s to %2$s of %3$s', '0', '0', '0').'",
- "sInfoFiltered": "'./* I18N: %s is a placeholder for a number */ WT_I18N::translate('(filtered from %s total entries)', '_MAX_').'",
- "sProcessing": "'.WT_I18N::translate('Loading...').'",
- "sSearch": "'.WT_I18N::translate('Filter').'",
- "oPaginate": {
- "sFirst": "'./* I18N: button label, first page */ WT_I18N::translate('first').'",
- "sLast": "'./* I18N: button label, last page */ WT_I18N::translate('last').'",
- "sNext": "'./* I18N: button label, next page */ WT_I18N::translate('next').'",
- "sPrevious": "'./* I18N: button label, previous page */ WT_I18N::translate('previous').'"
- }
- },
+ '.WT_I18N::datatablesI18N().',
"bJQueryUI": true,
"bAutoWidth":false,
"bProcessing": true,
@@ -1116,16 +1044,6 @@ function print_sour_table($datalist) {
function print_note_table($datalist) {
global $SHOW_LAST_CHANGE, $WT_IMAGES, $controller;
- $pagination=
- '<select>'.
- '<option value="10">'.WT_I18N::number('10').'</option>'.
- '<option value="20">'.WT_I18N::number('20').'</option>'.
- '<option value="30">'.WT_I18N::number('30').'</option>'.
- '<option value="50">'.WT_I18N::number('50').'</option>'.
- '<option value="100">'.WT_I18N::number('100').'</option>'.
- '<option value="-1">'.WT_I18N::translate('All').'</option>'.
- '</select>';
-
$table_id = 'ID'.floor(microtime()*1000000); // lists requires a unique ID in case there are multiple lists per page
$controller
->addExternalJavaScript(WT_STATIC_URL.'js/jquery/jquery.dataTables.min.js')
@@ -1134,21 +1052,7 @@ function print_note_table($datalist) {
jQuery.fn.dataTableExt.oSort["unicode-desc"]=function(a,b) {return b.replace(/<[^<]*>/, "").localeCompare(a.replace(/<[^<]*>/, ""))};
jQuery("#'.$table_id.'").dataTable({
"sDom": \'<"H"pf<"dt-clear">irl>t<"F"pl>\',
- "oLanguage": {
- "sLengthMenu": "'.addslashes(WT_I18N::translate('Display %s', $pagination)).'",
- "sZeroRecords": "'.WT_I18N::translate('No records to display').'",
- "sInfo": "'./* I18N: %s are placeholders for numbers */ WT_I18N::translate('Showing %1$s to %2$s of %3$s', '_START_', '_END_', '_TOTAL_').'",
- "sInfoEmpty": "'./* I18N: %s are placeholders for numbers */ WT_I18N::translate('Showing %1$s to %2$s of %3$s', '0', '0', '0').'",
- "sInfoFiltered": "'./* I18N: %s is a placeholder for a number */ WT_I18N::translate('(filtered from %s total entries)', '_MAX_').'",
- "sProcessing": "'.WT_I18N::translate('Loading...').'",
- "sSearch": "'.WT_I18N::translate('Filter').'",
- "oPaginate": {
- "sFirst": "'./* I18N: button label, first page */ WT_I18N::translate('first').'",
- "sLast": "'./* I18N: button label, last page */ WT_I18N::translate('last').'",
- "sNext": "'./* I18N: button label, next page */ WT_I18N::translate('next').'",
- "sPrevious": "'./* I18N: button label, previous page */ WT_I18N::translate('previous').'"
- }
- },
+ '.WT_I18N::datatablesI18N().',
"bJQueryUI": true,
"bAutoWidth":false,
"bProcessing": true,
@@ -1234,16 +1138,6 @@ function print_note_table($datalist) {
function print_repo_table($repos) {
global $SHOW_LAST_CHANGE, $WT_IMAGES, $SEARCH_SPIDER, $controller;
- $pagination=
- '<select>'.
- '<option value="10">'.WT_I18N::number('10').'</option>'.
- '<option value="20">'.WT_I18N::number('20').'</option>'.
- '<option value="30">'.WT_I18N::number('30').'</option>'.
- '<option value="50">'.WT_I18N::number('50').'</option>'.
- '<option value="100">'.WT_I18N::number('100').'</option>'.
- '<option value="-1">'.WT_I18N::translate('All').'</option>'.
- '</select>';
-
$table_id = 'ID'.floor(microtime()*1000000); // lists requires a unique ID in case there are multiple lists per page
$controller
->addExternalJavaScript(WT_STATIC_URL.'js/jquery/jquery.dataTables.min.js')
@@ -1252,21 +1146,7 @@ function print_repo_table($repos) {
jQuery.fn.dataTableExt.oSort["unicode-desc"]=function(a,b) {return b.replace(/<[^<]*>/, "").localeCompare(a.replace(/<[^<]*>/, ""))};
jQuery("#'.$table_id.'").dataTable({
"sDom": \'<"H"pf<"dt-clear">irl>t<"F"pl>\',
- "oLanguage": {
- "sLengthMenu": "'.addslashes(WT_I18N::translate('Display %s', $pagination)).'",
- "sZeroRecords": "'.WT_I18N::translate('No records to display').'",
- "sInfo": "'./* I18N: %s are placeholders for numbers */ WT_I18N::translate('Showing %1$s to %2$s of %3$s', '_START_', '_END_', '_TOTAL_').'",
- "sInfoEmpty": "'./* I18N: %s are placeholders for numbers */ WT_I18N::translate('Showing %1$s to %2$s of %3$s', '0', '0', '0').'",
- "sInfoFiltered": "'./* I18N: %s is a placeholder for a number */ WT_I18N::translate('(filtered from %s total entries)', '_MAX_').'",
- "sProcessing": "'.WT_I18N::translate('Loading...').'",
- "sSearch": "'.WT_I18N::translate('Filter').'",
- "oPaginate": {
- "sFirst": "'./* I18N: button label, first page */ WT_I18N::translate('first').'",
- "sLast": "'./* I18N: button label, last page */ WT_I18N::translate('last').'",
- "sNext": "'./* I18N: button label, next page */ WT_I18N::translate('next').'",
- "sPrevious": "'./* I18N: button label, previous page */ WT_I18N::translate('previous').'"
- }
- },
+ '.WT_I18N::datatablesI18N().',
"bJQueryUI": true,
"bAutoWidth":false,
"bProcessing": true,
@@ -1342,16 +1222,6 @@ function print_repo_table($repos) {
function print_media_table($datalist) {
global $SHOW_LAST_CHANGE, $WT_IMAGES, $controller;
- $pagination=
- '<select>'.
- '<option value="10">'.WT_I18N::number('10').'</option>'.
- '<option value="20">'.WT_I18N::number('20').'</option>'.
- '<option value="30">'.WT_I18N::number('30').'</option>'.
- '<option value="50">'.WT_I18N::number('50').'</option>'.
- '<option value="100">'.WT_I18N::number('100').'</option>'.
- '<option value="-1">'.WT_I18N::translate('All').'</option>'.
- '</select>';
-
$table_id = 'ID'.floor(microtime()*1000000); // lists requires a unique ID in case there are multiple lists per page
$controller
->addExternalJavaScript(WT_STATIC_URL.'js/jquery/jquery.dataTables.min.js')
@@ -1360,21 +1230,7 @@ function print_media_table($datalist) {
jQuery.fn.dataTableExt.oSort["unicode-desc"]=function(a,b) {return b.replace(/<[^<]*>/, "").localeCompare(a.replace(/<[^<]*>/, ""))};
jQuery("#'.$table_id.'").dataTable({
"sDom": \'<"H"pf<"dt-clear">irl>t<"F"pl>\',
- "oLanguage": {
- "sLengthMenu": "'.addslashes(WT_I18N::translate('Display %s', $pagination)).'",
- "sZeroRecords": "'.WT_I18N::translate('No records to display').'",
- "sInfo": "'./* I18N: %s are placeholders for numbers */ WT_I18N::translate('Showing %1$s to %2$s of %3$s', '_START_', '_END_', '_TOTAL_').'",
- "sInfoEmpty": "'./* I18N: %s are placeholders for numbers */ WT_I18N::translate('Showing %1$s to %2$s of %3$s', '0', '0', '0').'",
- "sInfoFiltered": "'./* I18N: %s is a placeholder for a number */ WT_I18N::translate('(filtered from %s total entries)', '_MAX_').'",
- "sProcessing": "'.WT_I18N::translate('Loading...').'",
- "sSearch": "'.WT_I18N::translate('Filter').'",
- "oPaginate": {
- "sFirst": "'./* I18N: button label, first page */ WT_I18N::translate('first').'",
- "sLast": "'./* I18N: button label, last page */ WT_I18N::translate('last').'",
- "sNext": "'./* I18N: button label, next page */ WT_I18N::translate('next').'",
- "sPrevious": "'./* I18N: button label, previous page */ WT_I18N::translate('previous').'"
- }
- },
+ '.WT_I18N::datatablesI18N().',
"bJQueryUI": true,
"bAutoWidth":false,
"bProcessing": true,
@@ -1752,10 +1608,7 @@ function print_changes_table($change_ids, $sort) {
"bAutoWidth":false,
"bLengthChange": false,
"bFilter": false,
- "oLanguage": {
- "sZeroRecords": "'.WT_I18N::translate('No records to display').'",
- "sInfo": "'./* I18N: %s are placeholders for numbers */ WT_I18N::translate('Showing %1$s to %2$s of %3$s', '_START_', '_END_', '_TOTAL_').'"
- },
+ '.WT_I18N::datatablesI18N().',
"bJQueryUI": true,
"aaSorting": ['.$aaSorting.'],
"aoColumns": [
@@ -1850,7 +1703,7 @@ function print_events_table($startjd, $endjd, $events='BIRT MARR DEAT', $only_li
->addInlineJavaScript('
jQuery("#'.$table_id.'").dataTable({
"sDom": \'t\',
- "oLanguage": {"sInfo": "'./* I18N: %s are placeholders for numbers */ WT_I18N::translate('Showing %1$s to %2$s of %3$s', '_START_', '_END_', '_TOTAL_').'"},
+ '.WT_I18N::datatablesI18N().',
"bAutoWidth":false,
"bPaginate": false,
"bLengthChange": false,
diff --git a/library/WT/I18N.php b/library/WT/I18N.php
index 50d61f9a5b..17f35dab86 100644
--- a/library/WT/I18N.php
+++ b/library/WT/I18N.php
@@ -452,4 +452,46 @@ class WT_I18N {
return WT_I18N::plural('%d second ago', '%d seconds ago', $seconds, $seconds);
}
}
+
+ // Generate consistent I18N for datatables.js
+ static function datatablesI18N(array $lengths=null) {
+ if ($lengths===null) {
+ $lengths=array(10, 20, 30, 50, 100, -1);
+ }
+
+ $length_menu='';
+ foreach ($lengths as $length) {
+ $length_menu.=
+ '<option value="'.$length.'">'.
+ ($length==-1 ? /* I18N: listbox option, e.g. "10,25,50,100,all" */ WT_I18N::translate('All') : WT_I18N::number($length)).
+ '</option>';
+ }
+ $length_menu='<select>'.$length_menu.'</select>';
+ $length_menu=/* I18N: Display %s [records per page], %s is a placeholder for listbox containing numeric options */ WT_I18N::translate('Display %s', $length_menu);
+
+ // Which symbol is used for separating numbers into groups
+ $symbols = Zend_Locale_Data::getList(WT_LOCALE, 'symbols');
+
+ return
+ '"oLanguage": {'.
+ ' "oPaginate": {'.
+ ' "sFirst": "'./* I18N: button label, first page */ WT_I18N::translate('first').'",'.
+ ' "sLast": "'./* I18N: button label, last page */ WT_I18N::translate('last').'",'.
+ ' "sNext": "'./* I18N: button label, next page */ WT_I18N::translate('next').'",'.
+ ' "sPrevious": "'./* I18N: button label, previous page */ WT_I18N::translate('previous').'"'.
+ ' },'.
+ ' "sEmptyTable": "'.WT_I18N::translate('No records to display').'",'.
+ ' "sInfo": "'./* I18N: %s are placeholders for numbers */ WT_I18N::translate('Showing %1$s to %2$s of %3$s', '_START_', '_END_', '_TOTAL_').'",'.
+ ' "sInfoEmpty": "'.WT_I18N::translate('Showing %1$s to %2$s of %3$s', 0, 0, 0).'",'.
+ ' "sInfoFiltered": "'./* I18N: %s is a placeholder for a number */ WT_I18N::translate('(filtered from %s total entries)', '_MAX_').'",'.
+ ' "sInfoPostfix": "",'.
+ ' "sInfoThousands": "'.$symbols['group'].'",'.
+ ' "sLengthMenu": "'.addslashes($length_menu).'",'.
+ ' "sLoadingRecords": "'.WT_I18N::translate('Loading...').'",'.
+ ' "sProcessing": "'.WT_I18N::translate('Loading...').'",'.
+ ' "sSearch": "'.WT_I18N::translate('Filter').'",'.
+ ' "sUrl": "",'.
+ ' "sZeroRecords": "'.WT_I18N::translate('No records to display').'"'.
+ '}';
+ }
}