From 3632c834aceac639e97e62ca6b5685f77b942315 Mon Sep 17 00:00:00 2001 From: Michel Date: Tue, 21 Jul 2026 23:04:29 +0200 Subject: [PATCH] Changed the language for DataTables to make use of the i18n plug-in json file and added the Dutch translation file --- plug-ins/i18n/nl-NL.json | 313 +++++++++++++++++++++++++++++++++++++++ readme.txt | 1 + wp-jquery-datatable.php | 36 ++++- 3 files changed, 348 insertions(+), 2 deletions(-) create mode 100644 plug-ins/i18n/nl-NL.json diff --git a/plug-ins/i18n/nl-NL.json b/plug-ins/i18n/nl-NL.json new file mode 100644 index 0000000..9f43a31 --- /dev/null +++ b/plug-ins/i18n/nl-NL.json @@ -0,0 +1,313 @@ +{ + "aria": { + "orderable": "Sorteren inschakelen", + "orderableRemove": "Sortering verwijderen", + "orderableReverse": "Sortering omkeren", + "paginate": { + "first": "Eerste", + "last": "Laatste", + "next": "Volgende", + "previous": "Vorige" + } + }, + "autoFill": { + "cancel": "Annuleren", + "fill": "Vul alle cellen met %d<\/i>", + "fillHorizontal": "Vul cellen horizontaal", + "fillVertical": "Vul cellen verticaal", + "info": "" + }, + "buttons": { + "collection": "Verzameling", + "colvis": "Kolom zichtbaarheid", + "colvisRestore": "Herstel zichtbaarheid", + "copy": "Kopieer", + "copyKeys": "Klik ctrl of u2318 + C om de tabeldata to kopiëren naar je klembord. Om te annuleren klik hier of klik op escape.", + "copySuccess": { + "_": "%ds regels naar klembord gekopieerd", + "1": "1 regel naar klembord gekopieerd" + }, + "copyTitle": "Kopieer naar klembord", + "createState": "Maak staat", + "csv": "CSV", + "excel": "Excel", + "pageLength": { + "_": "Toon %d regels", + "-1": "Toon alle regels", + "1": "Toon 1 regel" + }, + "pdf": "PDF", + "print": "Print", + "removeAllStates": "Verwijder alle", + "removeState": "Verwijder", + "renameState": "Hernoem", + "savedStates": "Opgeslagen", + "stateRestore": "Preset %d", + "updateState": "Bijwerken" + }, + "columnControl": { + "buttons": { + "searchClear": "Reset zoekactie" + }, + "colVis": "Kolom zichtbaarheid", + "colVisDropdown": "Kolom zichtbaarheid", + "dropdown": "Meer...", + "list": { + "all": "Selecteer alles", + "empty": "Leeg", + "none": "Deselecteer", + "search": "Zoeken..." + }, + "orderAddAsc": "Sortering toevoegen (oplopend)", + "orderAddDesc": "Sortering toevoegen (aflopend)", + "orderAsc": "Oplopend sorteren", + "orderClear": "Reset sortering", + "orderDesc": "Aflopend sorteren", + "orderRemove": "Verwijder van sortering", + "reorder": "Kolommen herschikken", + "reorderLeft": "Verplaats kolom links", + "reorderRight": "Verplaatst kolom rechts", + "search": { + "datetime": { + "empty": "Leeg", + "equal": "Gelijk aan", + "greater": "Na", + "less": "Vóór", + "notEmpty": "Niet leeg", + "notEqual": "Niet gelijk aan" + }, + "number": { + "empty": "Leeg", + "equal": "Gelijk aan", + "greater": "Meer dan", + "greaterOrEqual": "Meer of gelijk", + "less": "Minder dan", + "lessOrEqual": "Minder of gelijk", + "notEmpty": "Niet leeg", + "notEqual": "Niet gelijk aan" + }, + "text": { + "contains": "Bevat", + "empty": "Leeg", + "ends": "Eindigt", + "equal": "Gelijk aan", + "notContains": "Bevat niet", + "notEmpty": "Niet leeg", + "notEqual": "Niet gelijk aan", + "starts": "Begint" + } + }, + "searchClear": "Reset zoekactie", + "searchDropdown": "Zoeken" + }, + "datetime": { + "amPm": { + "0": "vm", + "1": "nm" + }, + "hours": "Uur", + "minutes": "Minuut", + "months": { + "0": "Januari", + "1": "Februari", + "10": "November", + "11": "December", + "2": "Maart", + "3": "April", + "4": "Mei", + "5": "Juni", + "6": "Juli", + "7": "Augustus", + "8": "September", + "9": "Oktober" + }, + "next": "Volgende", + "previous": "Vorige", + "seconds": "Seconde", + "unknown": "Onbekend", + "weekdays": { + "0": "Zo", + "1": "Ma", + "2": "Di", + "3": "Wo", + "4": "Do", + "5": "Vr", + "6": "Za" + } + }, + "decimal": "", + "editor": { + "close": "Sluiten", + "create": { + "button": "Nieuw", + "submit": "Toevoegen", + "title": "Voeg nieuwe gegevens toe" + }, + "edit": { + "button": "Wijzigen", + "submit": "Wijzigen", + "title": "Wijzig gegevens" + }, + "error": { + "system": "Er is een fout gebeurd" + }, + "multi": { + "info": "De geselecteerde items bevatten verschillende waarden voor deze invoer. Om alle items voor deze invoer op dezelfde waarde te zetten, klik of tik hier, zoniet zullen de individuele waarden behouden blijven.", + "noMulti": "Deze invoer kan individueel gewijzigd worden, maar niet als deel van een groep.", + "restore": "Wijzigingen ongedaan maken", + "title": "Meerdere waarden" + }, + "remove": { + "button": "Verwijderen", + "confirm": { + "_": "Bent u zeker dat u %d rijen wil verwijderen?", + "1": "Bent u zeker dat u 1 rij wil verwijderen?" + }, + "submit": "Verwijder", + "title": "Verwijder" + } + }, + "emptyTable": "Geen resultaten aanwezig in de tabel", + "info": "_START_ tot _END_ van _TOTAL_ resultaten", + "infoEmpty": "Geen resultaten om weer te geven", + "infoFiltered": " (gefilterd uit _MAX_ resultaten)", + "infoPostFix": "", + "infoThousands": ".", + "lengthLabels": { + "-1": "Alle" + }, + "lengthMenu": "_MENU_ resultaten weergeven", + "loadingRecords": "Een moment geduld aub - bezig met laden...", + "orderClear": "Reset sortering", + "processing": "Verwerken...", + "search": "Zoeken:", + "searchBuilder": { + "add": "Toevoegen", + "button": { + "_": "Zoekwizard (%d)", + "0": "Zoekwizard" + }, + "clearAll": "Verwijder alles", + "condition": "Conditie", + "conditions": { + "array": { + "contains": "Bevat", + "empty": "Leeg", + "equals": "Gelijk aan", + "not": "Niet", + "notEmpty": "Niet leeg", + "without": "Zonder" + }, + "date": { + "after": "Na", + "before": "Voor", + "between": "Tussen", + "empty": "Leeg", + "equals": "Gelijk aan", + "not": "Niet", + "notBetween": "Niet tussen", + "notEmpty": "Niet leeg" + }, + "number": { + "between": "Tussen", + "empty": "Leeg", + "equals": "Gelijk aan", + "gt": "Groter dan", + "gte": "Groter dan of gelijk aan", + "lt": "Kleiner dan", + "lte": "kleiner dan of gelijk aan", + "not": "Niet", + "notBetween": "Niet tussen", + "notEmpty": "Niet leeg" + }, + "string": { + "contains": "Bevat", + "empty": "Leeg", + "endsWith": "Eindigt met", + "equals": "Gelijk aan", + "not": "Niet", + "notContains": "Zonder", + "notEmpty": "Niet leeg", + "notEndsWith": "Eindigt niet met", + "notStartsWith": "Begint niet met", + "startsWith": "Start met" + } + }, + "data": "Data", + "deleteTitle": "Verwijder", + "leftTitle": "Afwijkende criteria", + "logicAnd": "En", + "logicOr": "Of", + "rightTitle": "Criteria inspringen", + "search": "Zoeken", + "title": { + "_": "Zoekwizard (%d) ", + "0": "Zoekwizard" + }, + "value": "Waarde" + }, + "searchPanes": { + "clearMessage": "Alles leegmaken", + "collapse": { + "_": "Zoekpanelen (%d)", + "0": "Zoekpanelen" + }, + "collapseMessage": "Instorten", + "count": "{total}", + "countFiltered": "{shown} ({total})", + "emptyMessage": "<em>Leeg<\/em>", + "emptyPanes": "Geen zoekpanelen", + "loadMessage": "Zoekpanelen laden...", + "showMessage": "Alles weergeven", + "title": "%d filters actief" + }, + "searchPlaceholder": "", + "select": { + "cells": { + "_": "%d cellen geselecteerd", + "0": "", + "1": "1 cel geselecteerd" + }, + "columns": { + "_": "%d kolommen geselecteerd", + "0": "", + "1": "1 kolom geselecteerd" + }, + "rows": { + "_": "%d rijen geselecteerd", + "0": "", + "1": "1 rij geselecteerd" + } + }, + "stateRestore": { + "creationModal": { + "button": "Aanmaken", + "columns": { + "search": "Zoeken in kolom", + "visible": "Kolom tonen" + }, + "name": "Naam", + "order": "Sorteervolgorde", + "paging": "Paginering", + "scroller": "Meescrollen", + "search": "Zoeken", + "searchBuilder": "SearchBuilder", + "select": "Selecteer", + "title": "Nieuwe staat aanmaken", + "toggleLabel": "Bevat" + }, + "duplicateError": "Staat bestaat al", + "emptyError": "Naam kan niet leeg zijn", + "emptyStates": "Geen beschikbare staten", + "removeConfirm": "Weet u zeker dat u deze wil verwijderen:", + "removeError": "De verwijdering is mislukt", + "removeJoiner": "en", + "removeSubmit": "Verwijder", + "removeTitle": "Verwijder staat", + "renameButton": "Hernoem", + "renameLabel": "Nieuwe naam voor staat", + "renameTitle": "Hernoem staat" + }, + "thousands": ".", + "zeroRecords": "Geen resultaten gevonden" +} \ No newline at end of file diff --git a/readme.txt b/readme.txt index cd3f228..c00b315 100644 --- a/readme.txt +++ b/readme.txt @@ -93,6 +93,7 @@ Is this plugin prepared for multisites? Yes. * Removed the extra Select option from the page lenght menu. * Added the default page lenghts and the option for All in the page lenght dropdown. * Added the choosen page lenght as an option to the dropdown if it's not one of the default options. +* Changed the language for DataTables to make use of the i18n plug-in json file and added the Dutch translation file. = 4.1.0 = * Compatibility with WordPress version 6.7.1 diff --git a/wp-jquery-datatable.php b/wp-jquery-datatable.php index fc87883..efeac13 100644 --- a/wp-jquery-datatable.php +++ b/wp-jquery-datatable.php @@ -282,8 +282,8 @@ function wp_jdt_shortcode($atts) 'order': [, ''], 'searching': , 'language': { - 'search': ':' - } + 'url': '', + }, }); }); @@ -313,3 +313,35 @@ function wp_jdt_uninstall() delete_option($setting); } } + +/** + * Get the path of the locale JSON file if it exists. + * + * @return string|null File path if valid, or null if skipped/missing. + */ +function get_jdt_locale_json_file() +{ + // 1. Get the current locale (e.g., 'nl_NL', 'en_US', 'en_GB') + $locale = get_user_locale(); + + // 2. Exclude en_US specifically as that's the default dataTables language + // (en_GB and other English regional locales remain valid) + if ($locale === 'en_US') { + return null; + } + + // 3. Format the filename ('nl_NL' -> 'nl-NL.json') + $formatted_locale = str_replace('_', '-', $locale); + $filename = "{$formatted_locale}.json"; + + // 4. Set relative path inside your plugin directory + $relative_path = "plug-ins/i18n/{$filename}"; + + // 5. Verify file existence on disk + if (!file_exists(plugin_dir_path(__FILE__) . $relative_path)) { + return null; + } + + // 6. Return either the direct URL or the absolute file path + return plugin_dir_url(__FILE__) . $relative_path; +}