« Module:Multilingual » : différence entre les versions

Contenu supprimé Contenu ajouté
Reedy (discussion | contributions)
Annulation des modifications 10250297 de Reedy (discussion)
Balise : Annulation
supprime Clic à essayer plus tard
Ligne 2 :
-- The main central module is mainly an installer of central libraries and a small demonstrator.
-- The main central module installs central libraries and bind the main and its sub-modules
local Central = p -- Save as MdCentralMdc.lua MdCentralMdc reuseall titles translations are OK all contents of Drop Boxes are OK all res = res modes.levenshtein_similar_tests. neardrop_box.new(selector are OK OK 2019032620200227 16060947.lua
------------------------------------|------|------------------------ typical length --------------------------|------------------------------------------------------------max| DODO
--[[ .bind_all_i18n() ------- all titles translations are OK all contents of Drop Boxes are OK all res = res .. drop_box.new(selector are OK p.i18n
dropit.content_function_result = dropit.content_or_function(dropit.title, dropit.content, too complex DODO
 
 
{ 100, "Important", "20200221", " T245812, Open When create or to modify a Module in MW 1.35.0-wmf.20 (7ba3cac) interface do not permit that", },
t = t .. "\n* How to well report a task like in <b><big>viewers.phab_task('T149532#2878699', 'that task')</big></b> :"
------------------------------------|||||function viewers.form_user_lang_test(t) -- Tests combinations to debug BETER but no "1.35.0-wmf.20 (b45351b)"
-- MdCentral.lua MdCentral reuse modes.levenshtein_similar_tests near OK 20190326 1606.lua translate titles and display contents BETER BETER BETER
-----------------------------------------The version of MW 1.35.0-wmf.20 (7ba3cac) disrupts the interface for modifying modules and prevents them STOP
 
-- function viewers.translate_lang(lang, ref, ...) -- Replace %1 to %9 by tostring( argN ) from arguments, without any ambiguity in any string. BETER line 258
 
--]]
-- MUMU : means to report in the CentralManual.
-- MWMW : means add a mw version in the table versions.MediaWiki_Versions = { ... }
-- COCO : is the present change point of Lua codage.
-- MUMU : means to report in the CentralManual.
-- function Central.init(
 
p.teststests = "FAMLTVQDR"
 
p.version = { -- Modules dependencies. Dependencias del módulomódulo. DépendancesDépendances du module.
['versionFrom'] = "CentralTest begin debug from function modes.levenshtein_similar_tests OK.lua",
['versionName'] = "Centralizer",
['versionNumberversionDate'] = "1.0.0(190326T152020-02-26T08:0400:00)", -- UTC version structure MWMW
['site'] = "fr.wikisource",
['versionDate'] = "2019-03-26T15:04:00", -- UTC version structure MWMW 2019-03-02T09:28:00
['mainDescription'] = "Begin to use",
['functionDescription'] = "first functional support",
Ligne 24 ⟶ 33 :
['sought'] = "Centralizer;Centralizer/I18N;Mathroman;TestRequire", -- Sought module and submodules versions
['known'] = "Centralizer;Central-s-fr;Central-14 * Centralizer/I18N;Central/i18n * Mathroman22;Mathroman34", -- Known module and submodules versions
['MediaWiki'] = "1.35.0-wmf.19 (73e5f38)",
['treebranches'] = { -- For each sought. Replace known. Later on 201811207
{ "Centralizer", "Central-s-fr", "Central-2017" }, -- upper
Ligne 31 ⟶ 41 :
}
 
-- The central system permits to convert any module as central.
Central.Central_version_name = Central.version.versionName
-- The Lua part of the central modules support contains some libraries used by central modules.
p.ModuleNS = mw.site.namespaces.Module.name .. ":" -- translate Module: in other languages
-- The Module:Centralizer installs central libraries (waiting stable Scribunto central repository).
-- An object has a function object.new() to form several objects
-- A library is unic and come from Scribunto.
-- Unique declarations of libraries and objects:
-- To split ModuleCentral-s-fr delete activity. on 2018-01-10T09:35:00
activity = {} -- Library:activity from 20170611 Search story in Central modules.txt
-- args = {} -- Object:args from 20180106 form known arguments to import, complete from datas and finalize
datas = {} -- Library:datas from ?
drop_box = {} -- Object:drop_box from 20170615 rename viewers.drop_box.form() in viewers.drop_box on 20170615
events = {} -- Object:events from ? "events"
langs = {} -- Library:langs from i18n tables on 20130118, br-de-en-es-fr-vi from 20170217,
lua_table = {} -- Library:lua_table from lua_table.level_list() from 20170808
mathroman = {} -- Library:mathroman from ?
modes = {} -- Library:modes from arguments support on 20130125 in Module:Author, 20130312 in Module:ControlArgs
central_library = {} -- Object:central_library from versions.central_library on 20171211 in Module:Centralizer
tableview = {} -- Object:tableview from 20170208
tab_view = {} -- Object:tab_view from 20170208
tracker = {} -- Object:tracker from 20170628
versions = {} -- Library:versions from versioning on 20170316. From versions support in Module:Author3 on 20150225.
viewers = {} -- Library:viewers from 20170209
-- versions.args = args -- Object:args from 20180106 todo
-- Records are in function versions.setup_central_libraries(bindable_libraries, opt) -- Install central bindable libraries in package.loaded
 
-- Last MediaWiki-Wikisource update/upgrade versions:
-- Seen and recorded at each preview to test fr.wikisource.org/wiki/Module:Centralizer-s-fr
-- French time UTC +1 or +2
-- See ISO 8601 time format like : 1977-04-22T01:00:00-05:00 (5 shift hours) = 1977-04-22T06:00:00Z local time
 
versions.MediaWiki_Versions = {
-- only for ModuleCentralizer : restart from : ModuleCentralizer function modes.levenshtein_similar_tests OK.lua DODO
-- KEEP FIRST VERSIONS
-- only for ModuleCentralizer : then in function p.init_international_report(() group only all sub-functions in the original order then delete duplicated one's.
{ site = "fr.wikisource", verstime = "2016-06-19", versid = "2016-06-19", seen_time = "2016-06-19", },
-- only for ModuleCentralizer : then use function p.init_international_test() to replace function Central.init()
{ site = "fr.wikisource", verstime = "2017-05-11T00:48:00", versid = "1.29.0-wmf.21 (d6c07d1)", seen_time = "2017-05-11T00:48:00-00:00",
-- only for ModuleCentralizer : delete tests_groups and args_final and boxviews and update activity.report_subtasks_list
task = "T165000", title = "The version date of MW 1.29.0-wmf.21 (d6c07d1) is in the future !",
-- todo : then use function p.Init_central_module() to replace function Central.init()
report = "Rical: Schedule in https://www.MediaWiki.org/wiki/MediaWiki_1.29/Roadmap", },
-- function versions.detect_MediaWiki_changes() display only 3 last months
{ site = "fr.wikisource", verstime = "2018-01-02T18:49:06", versid = "1.31.0-wmf.15 (8e46998)", seen_time = "2018-01-04T14:20:00", },
{ site = "fr.wikisource", verstime = "2018-01-04T21:47:05", versid = "1.31.0-wmf.15 (601cf9d)", seen_time = "2018-01-07T18:30:00", },
{ site = "fr.wikipedia", verstime = "2018-01-07T20:46:36", versid = "1.31.0-wmf.15 (0953700)", seen_time = "2018-01-09T20:57:00", },
{ site = "fr.wikisource", verstime = "2018-01-07T20:46:36", versid = "1.31.0-wmf.15 (0953700)", seen_time = "2018-01-12T07:43:00", },
{ site = "fr.wikisource", verstime = "2017-12-15T23:35:09", versid = "1.31.0-wmf.16 (a31d45c)", seen_time = "2018-01-12T07:43:00",
task = "T155624", title = "In wikisource/Spécial:Version:wmf.15 (0953700) but Central module mw = 1.31.0-wmf.16 (a31d45c) seen by Rical.", },
{ site = "fr.wikisource", verstime = "2019-08-04T20:25:27", versid = "1.32.0-wmf.24 (9291e40)", seen_time = "2019-08-04T20:26:00", },
{ site = "fr.wikisource", verstime = "2019-08-04T20:30:15", versid = "1.32.0-wmf.24 (35fb3b6)", seen_time = "2019-08-04T20:50:00", },
{ site = "fr.wikisource", verstime = "2019-08-02T19:17:19", versid = "1.34.0-wmf.16 (22b2132)", seen_time = "2019-08-05T08:00:00", },
{ site = "fr.wikisource", verstime = "2019-08-06T13:16:22", versid = "1.34.0-wmf.16 (6b18b66)", seen_time = "2019-07-30T09:28:00", },
{ site = "www.MediaWiki", verstime = "2019-08-06T19:21:52", versid = "1.34.0-wmf.17 (b1c1329)", seen_time = "2019-08-07T08:00:00", },
{ site = "fr.wikisource", verstime = "2019-08-07T01:28:02", versid = "1.34.0-wmf.17 (09c0989)", seen_time = "2019-08-08T05:40:00", },
{ site = "fr.wikisource", verstime = "2019-08-09T01:41:20", versid = "1.34.0-wmf.17 (6566628)", seen_time = "2019-08-16T09:20:00", },
{ site = "fr.wikisource", verstime = "2019-08-20T13:58:22", versid = "1.34.0-wmf.17 (3ab1ed1)", seen_time = "2019-08-16T06:40:00", },
{ site = "fr.wikisource", verstime = "2019-08-22T14:22:26", versid = "1.34.0-wmf.19 (efab97f)", seen_time = "2019-08-23T07:50:00", },
{ site = "fr.wikisource", verstime = "2019-08-26T13:22:33", versid = "1.34.0-wmf.19 (451f99e)", seen_time = "2019-08-28T10:00:00", },
{ site = "www.MediaWiki", verstime = "2019-08-28T19:03:19", versid = "1.34.0-wmf.20 (1488aca)", seen_time = "2019-08-30T08:00:00", },
{ site = "fr.wikisource", verstime = "2019-09-04T19:46:10", versid = "1.34.0-wmf.21 (486add2)", seen_time = "2019-09-07T08:00:00", },
{ site = "fr.wikisource", verstime = "2019-09-11T03:14:16", versid = "1.34.0-wmf.22 (12d612c)", seen_time = "2019-09-12T10:30:00", },
{ site = "fr.wikisource", verstime = "2019-09-18T19:05:17", versid = "1.34.0-wmf.23 (db0e380)", seen_time = "2019-09-19T09:30:00", },
{ site = "fr.wikisource", verstime = "2019-09-19T19:44:08", versid = "1.34.0-wmf.23 (b2b9fbf)", seen_time = "2019-09-20T08:00:00", },
{ site = "fr.wikisource", verstime = "2019-09-25T19:04:32", versid = "1.34.0-wmf.24 (9d74db9)", seen_time = "2019-09-26T06:20:00", },
{ site = "fr.wikisource", verstime = "2019-10-01T01:21:40", versid = "1.34.0-wmf.24 (48381c8)", seen_time = "2019-10-01T21:00:00", },
{ site = "fr.wikisource", verstime = "2019-10-03T01:18:05", versid = "1.34.0-wmf.25 (4750f81)", seen_time = "2019-10-04T06:00:00", },
{ site = "fr.wikisource", verstime = "2019-10-07T21:06:43", versid = "1.34.0-wmf.25 (54dbe5f)", seen_time = "2019-10-04T06:00:00", },
{ site = "www.MediaWiki", verstime = "2019-10-08T20:09:47", versid = "1.35.0-wmf.1 (64f5c4c)", seen_time = "2019-10-09T06:00:00", },
{ site = "fr.wikisource", verstime = "2019-10-22T13:14:28", versid = "1.35.0-wmf.2 (21e7707)", seen_time = "2019-10-23T09:00:34", },
{ site = "www.MediaWiki", verstime = "2019-10-22T14:57:49", versid = "1.35.0-wmf.3 (1ed75b4)", seen_time = "2019-10-23T09:00:00", },
{ site = "fr.wikisource", verstime = "2019-10-24T13:04:24", versid = "1.35.0-wmf.3 (82aecf8)", seen_time = "2019-10-25T09:30:00", },
{ site = "fr.wikisource", verstime = "2019-10-24T13:04:24", versid = "1.35.0-wmf.4 (aef2d22)", seen_time = "2019-10-31T06:00:00", },
{ site = "fr.wikisource", verstime = "2019-10-31T19:05:47", versid = "1.35.0-wmf.4 (d11f7c9)", seen_time = "2019-11-01T07:00:00", },
{ site = "fr.wikisource", verstime = "2019-11-04T16:26:38", versid = "1.35.0-wmf.4 (7af252a)", seen_time = "2019-11-06T08:00:00", },
{ site = "www.MediaWiki", verstime = "2020-01-09T20:15:48", versid = "1.35.0-wmf.5 (c5c79e5)", seen_time = "2020-01-09T07:00:00", },
{ site = "www.MediaWiki", verstime = "2020-01-16T00:24:04", versid = "1.35.0-wmf.14 (5cacfed)", seen_time = "2020-01-16T06:00:00", },
{ site = "www.MediaWiki", verstime = "2020-01-23T01:00:21", versid = "1.35.0-wmf.16 (8a7d1c0)", seen_time = "2020-01-23T07:00:00", },
{ site = "www.MediaWiki", verstime = "2020-02-06T17:22:01", versid = "1.35.0-wmf.18 (a473ba0)", seen_time = "2020-02-06T08:00:00", },
{ site = "fr.wikisource", verstime = "2020-02-13T20:25:37", versid = "1.35.0-wmf.19 (73e5f38)", seen_time = "2020-02-14T09:00:00", },
{ site = "fr.wikisource", verstime = "2020-02-14T18:30:46", versid = "1.35.0-wmf.19 (758952f)", seen_time = "2020-02-19T10:00:00", },
{ site = "www.MediaWiki", verstime = "2020-02-18T19:06:36", versid = "1.35.0-wmf.20 (015d9e6)", seen_time = "2020-02-19T10:00:00", },
{ site = "fr.wikisource", verstime = "2020-02-19T20:25:14", versid = "1.35.0-wmf.20 (7ba3cac)", seen_time = "2020-02-20T06:00:00",
title = "The version of MW 1.35.0-wmf.20 (7ba3cac) disrupts the interface for modifying modules and prevents them from being modified and saved !", },
{ site = "www.MediaWiki", verstime = "2020-02-19T21:04:58", versid = "1.35.0-wmf.20 (b45351b)", seen_time = "2020-02-19T10:00:00", title = "Debug NON NON NON", },
{ site = "fr.wikisource", verstime = "2020-02-20T11:06:41", versid = "1.35.0-wmf.20 (7ba3cac)", seen_time = "2020-02-21T06:00:00",
title = "The version of MW 1.35.0-wmf.20 (7ba3cac) disrupts the interface for modifying modules and prevents them from being modified and saved !", },
{ site = "www.MediaWiki", verstime = "2020-02-21T14:18:10", versid = "1.35.0-wmf.20 (97a5df7)", seen_time = "2020-02-22T09:00:00", title = "Debug NON NON NON", },
{ site = "fr.wikisource", verstime = "2020-02-24T13:09:57", versid = "1.35.0-wmf.20 (2d9db35)", seen_time = "2020-02-25T18:00:00", },
{ site = "fr.wikisource", verstime = "2020-02-25T20:18:21", versid = "1.35.0-wmf.20 (a8dfba0)", seen_time = "2020-02-26T08:00:00", },
{ site = "www.MediaWiki", verstime = "2020-02-21T14:18:10", versid = "1.35.0-wmf.21 (dc4d003)", seen_time = "2020-02-26T08:00:00", },
} -- MWMW 1.35.0-wmf.21 (dc4d003)
 
versions.MediaWiki_version_memo = "1.35.0-wmf.21 (dc4d003)"
-- TODO for ModuleCentralizer : then in function p.init_central_module() group only all sub-functions in the original order then delete duplicated one's.
versions.MediaWiki_Versions_sort = "<" -- First on end, Last on begin
-- TODO for ModuleCentralizer : then use function p.init_central_module() to replace function Central.init()
versions.MediaWiki_Versions_sort = ">" -- First on begin, Last on end
-- TODO for ModuleCentralizer : then use function p.init_international() to replace function Central.init()
-- function activity.MW_Versions_report(t) -- Reports versions of MediaWiki for 3 months.
-- TODO for ModuleCentralizer : then use function p.init_international_report() to replace function Central.init()
-- TODO for ModuleCentralizer : then use function p.init_international_test() to replace function Central.init() init_central_module
 
--[[
-- only for ModuleCentralizer : restart from : ModuleCentralizer function modes.levenshtein_similar_tests OK.lua DODO
-- done for ModuleCentralizer : delete tests_groups and args_final and boxviews and update activity.report_subtasks_list
-- done for ModuleCentralizer : then in function p.init_international() group only all sub-functions in the original order then delete duplicated one's.
-- done for ModuleCentralizer : then use function p.init_international() to replace function Central.init() function modes.
-- done for ModuleCentralizer : then use function p.init_international_report(t) -- Reports known_arguments for phase = "mode" or "argument" or "QITEM" or "property"
-- done for ModuleCentralizer : then use function p.init_international_test() to replace function Central.init()
 
-- cut_libraries
 
-- - - - ------------------ - - - - ----------------- - - - - -----------------------------
Ligne 79 ⟶ 158 :
-- Do not disturb actual modules, libraries, translations ; only add new structures and most explicit tables of args, i18n, modules, libraries...
--
-----------------------|---------------|------------------------------ typical length --------------------------|---------------------------max| DODO
-- modes.getTitle() = function() begin return p.mainmodule_name end this is the title of the module invoked
--------------------------------------------function viewers.drop(selector title content_or_func very good but l 1320 got nil
versions.loaded_modules_and_libraries = versions.loaded_modules_and_libraries or {}
for i, get in pairs(versions.loaded_modules_and_libraries) do
t = versions.bind_all_i18n() -- Bind all i18n translations from all sub-modules in reverse order. incude p.i18n
versions.bind_reverse_i18n_translations(main_versions, loaded_pack) -- Bind all i18n translations from modules /I18N translations sub-modules + p.i18n
mw.language.fetchLanguageName( code, inLanguage )
-- This long string foo = [ abcd button for autonomous dropbox button
local args_known = args_known or modes.args_known or p.args_known or {} -- optional value from p.args_known = { -- }
the global variable _G package.loaded This table holds the loaded modules. if _G[name] == object then binded_in = "_G" end if package.loaded[name] == object
 
langs.default_user_lang = "en" -- Default language to replace any other in case it is not or bad defined
Erreur Lua : bad argument #1 to 'gsub' (st parcel edit with a good drop box+Box Very good (p.box_read) langs names links OK OK expected, got nil) local t = versions.init_multilingual_module("read", args_known) -- l 10248
function versions.versions_support_test(t) -- Tests various combinations of mod-- frame:getTitle() ---- if frame then local title = frame:getTitle()
-- local main_module = modes.getTitle() -- this is the title of the module invoked
-- if 'main_versions' (a nil value). replace main_versions by from 20171224 infos p.["infos"]["versions"]["libname"]
-- function _test(t) -- Tests of viewers.translate_user_test(). at 20190830 0809
function viewers.translate_lang(lang, ref, ...) -- Replace %1 to %9 by tostring( argN ) from arguments, without any ambiguity in any string. BETER line 258
--protopyte of tab_view for all tests to standardize unic key : TVTV _test1 to ckeck after " local tab_view = "
p.form_result(args_kown, main_module) -- Formats all results of this module and its sub-modules.
local grouptest = versions.init_multilingual_module_tests
local testgroup = {}
for k, var in pairs( grouptest ) do
onet = versions.versions_support(t)
table.insert(testgroup, onet) end
end
local tab_view = { -- Group datas and options for a table view with lines and columns.
title_memo = "versions.versions_support_test", -- Tests various combinations of mod
test_group = testgroup, -- List of subtasks to monitor.
-- headers = "activity_monitor_central_libraries_headers", -- " Name; Description of the library ",
headers = " Name; Description of the library ",
headers_class = "wikitable alternative center sortable",
rowGroup = {},
-- track_on == "details",
}
t = t .. tableview.new(tab_view) -- Runs tests cases and formats a table view with lines and columns.
return t
local args_known = args_known or modes.args_known or p.args_known or {} -- optional value from p.args_known = { -- }
 
-- local frame = mw.getCurrentFrame()
-- local title = frame:getTitle() -- this is the title of the module invoked
-- local main_module = versions.get_one_module_or_library(title) -- Get the main module. versions.bind_all_i18n()better
--[ [after OK : standard tabview, search all residual anomalies in all tests, clean comments for a normal understanding, /I18N, UMUM
-- then share with the first team of good lua coders, 3*3*3 are OK ,close the begin task. Then split Centralizer in independant libraries.
-- Then Rical, half the time, can begin Teslain with perhaps Jean Louis Naudin, Yves, Lucien, Pascal and the security team.
-- Continue, half the time, to support other lua coders, like all the fist team ...
-- frame:getTitle()
-- function versions.bind_the_main_module() -- Bind the main module, all sub-modules and all their i18n.
local t = t -- t or
if type(t) ~= "string" then t = '\n* <b>langs.translations_counts("activity.i18n")</b> : Counts of contents of some tables' end
-- UMUM : means to report in the CentralManual.
-- MWMW : means add a mw version in the table activity.MediaWiki_Versions = { ... }
-- COCO : is the present change point of Lua codage. hh
-- COCO Story : function activity.phabricator_tasks_report(t, short) -- OK -- arbitrary end added in main Loop pairs(args_known)
-- function versions.init_multilingual_module( MdCentral function viewers.translate_content(ref, ...) in debug ERR 201901321.lua
-- %x: (where x is any non-alphanumeric character) represents the character x. This is the standard way to escape the magic characters.
-- x: (where x is not one of the magic characters ^$()%.[]*+-?) represents the character x itself. THEN "%%" give "%"
-- viewers_form9user_abnormal_ref_i_cat = "In the function viewers.translate_user(ref, ...) function the reference is abnormal",
else d.header = function viewers.translate_user("viewers_dropdown_missing_header") end -- "Missing title for this drop_box"
function viewers.drop(selector, title, content_or_func, ...) -- Formats a drop_box for a doc or a group of tests
t = t .. viewers.insert_image(d.image, "22px", d.style, ...) -- example of use
if (type(t) ~= "string") then t = '\n* langs.translations_counts("activity.i18n") Counts of contents of some tables, from their names: ' end
function viewers.translate_content(ref, ...) and other functional languages seem ok
function modes.namespaces_page_list(t) -- List namespaces for the actual page.
datas.available_props_report(t) -- Reports availables datas properties **" does not exist
res = res .. "\n* <br/>{{Références}}"
p.i18n langs.main_i18n or versions.main_i18n or versions.memo_i18n
from ModuleCentralizer Levenshtein 20181016 ok idem 20190723 1004.lua
-- debug t = function activity.central_subtasks_report(t) seams ok 20190729 1702
function modes.namespaces_page_list(t) -- List namespaces for the actual page. seems OK at 20190723 0820 no a nil value
function versions.bind_all_sub_modules(sub_modules, iftest) -- Bind all sub-modules of the main module.seems OK at 20190723 0816
local success, result = viewers.AntiCrash(protected_func, selector, mask_sections) -- function viewers.AntiCrash(
seems ok : modes.all_categories_list(t) langs.translations_statistics_report(t) activity.phabricator_tasks_report(t, short)
return res used in all main viewers, probably good, then residual debug starts on 21/07/2019
 
--Module:Centralizer à la ligne 10937
-- res = res .. p.form_result(args_known fail ligne 10956
-- The main central module is mainly an installer of central libraries and a small demonstrator.
-- The current debugs change only small adjustments in new functions ...
-- ********** before 3 3 3 install verify all tests + ;viewers...; + UMUM ********* apres manger . . .
function viewers.drop(
-- === Références par module -- -- ==={{Références|taille=40}}=== Références par balise ===<references/>
res = res .. "\n* <br/>=== Références par module ==="
res = res .. "\n* <br/>{{Références|taille=40}}"
res = res .. "\n* <br/>=== Références par balise ==="
res = res .. viewers.drop(
-- Running times: start in page = 2421 mS , import + 0 mS , form result + 0 mS , tests + 20 mS , duration = 20 mS ,
--------------------|---------------------|------------------------ typical length --------------------------|----------max| DODO
-- We will display, in "err" style, module name + space + line number to link. COCO
function viewers.AntiCrash(protected_func, ...) -- Protects the pages of wikipedia against a complete crash, if available. UMUM
local args_known = args_known or modes.args_known or p.args_known or {} -- optional value from p.args_known = {...}
modes.args_import = modes.args_import or {} seems OK at 20190530 0747
t = t .. "\n* " .. one_elem["key"] .. " = " .. viewers.translate_user(one_elem.trans_key) -- seem ok
function modes.all_elements_list(base, list_Kind) -- List all eventual categories or others of this wiki to try
modes.arguments = arguments -- arguments values sorted by keyword UMUM
-- new to try : function modes.all_categories_list(t) -- List all eventual categories of this wiki
-- MdCentral function p.form_result() continue OK 0957.lua function viewers.translate_user(ref, ...) seems OK argmt, detailed UMUM
t = t .. frame:expandTemplate{ title = dropit.title, args = {
modes.args_import = modes.args_import or {} -- seems OK at 20190530 0747
--]]
-- - - - ------------------ - - - - ------------------ - - - - -----------------------------
 
-- The central system permits to convert any module as central.
-- The Lua part of the central modules support contains some libraries used by central modules.
-- The Module:Centralizer installs central libraries (waiting stable Scribunto central repository).
-- An object has a function object.new() to form several objects
-- A library is unic and come from Scribunto.
-- Unique declarations of libraries and objects:
-- To split ModuleCentral-s-fr delete activity. on 2018-01-10T09:35:00
activity = {} -- Library:activity from 20170611 Search story in Central modules.txt
-- args = {} -- Object:args from 20180106 form known arguments to import, complete from datas and finalize
datas = {} -- Library:datas from ?
drop_box = {} -- Object:drop_box from 20170615 rename viewers.drop_box.form() in viewers.drop_box on 20170615
events = {} -- Object:events from ? "events"
langs = {} -- Library:langs from i18n tables on 20130118, br-de-en-es-fr-vi from 20170217,
lua_table = {} -- Library:lua_table from lua_table.level_list() from 20170808
mathroman = {} -- Library:mathroman from ?
modes = {} -- Library:modes from arguments support on 20130125 in Module:Author, 20130312 in Module:ControlArgs
central_library = {} -- Object:central_library from versions.central_library on 20171211 in Module:Centralizer
tableview = {} -- Object:tableview from 20170208
tab_view = {} -- Object:tab_view from 20170208
tracker = {} -- Object:tracker from 20170628
versions = {} -- Library:versions from versioning on 20170316. From versions support in Module:Author3 on 20150225.
viewers = {} -- Library:viewers from 20170209
-- versions.args = args -- Object:args from 20180106 todo
-- Records are in function versions.setup_central_libraries(bindable_libraries, opt) -- Install central bindable libraries in package.loaded
-- done for ModuleCentralizer : then use function p.init_international() to replace function Central.init() function modes.
p.init_international = {} -- () to replace function Central.init()
modes.init_international = p.init_international -- Library:modes from arguments support on 20130125 in Module:Author, 20130312 in Module:ControlArgs
 
Centralp.infos = { -- from 20171218
["libname"] = "Central", typ = "Module",
libdesc = "The main central module install central libraries and bind the main and sub modules.",
Ligne 126 ⟶ 280 :
 
-- cut_libraries
 
-- - - - ------------------ - - - - ---------------------------------
-- - - - ------------------ - - - - ---------------------------------
-- The Library:viewers supports Lua-coders sub-tasks and inter-wikis central modules.
-- - - - ------------------ - - - - ---------------------------------
-- - - - ------------------ - - - - ---------------------------------
 
 
-- These Module:Centralizer/I18N translations for viewers library update and complete Module:Centralizer translations.
viewers.i18n = {}
viewers.i18n.de = {
-- Haupttexte, Fehler und Kategorien von Werkzeugen
viewers_test_no_values = "Test: ohne Werte",
viewers_test_the_value_is_table = "Test: Der Wert ist eine Tabelle",
viewers_test_all_types_values = "Test: Werte aller Arten",
viewers_Dropbox_label_Unwrap = "Erweitern / Wrap",
viewers_page_tests_title = "Tests und Informationen zu dieser Seite:",
viewers_section_title_page = "Tests dieser Seite",
viewers_section_title_module = "Tests dieses Moduls",
viewers_section_title_internal = "Interne Tests",
-- Ãœbersetzen Sie diese Bibliotheken nicht
viewers_section_title_library_activity = "Library:activity",
viewers_section_title_library_datas = "Library:datas",
viewers_section_title_library_langs = "Library:langs",
viewers_section_title_library_lua_table = "Library:lua_table",
viewers_section_title_library_mathroman = "Library:mathroman",
viewers_section_title_library_modes = "Library:modes",
viewers_section_title_library_versions = "Library:versions",
viewers_section_title_library_wiewers = "Library:wiewers",
viewers_section_title_is_missing = "Dieser Abschnitt fehlt der Titel",
viewers_dropdown_missing_title = "Titel fehlt für diese Dropdown-Box",
-- Titel der Tests
viewers_page_tests_title = "Tests und Informationen zu dieser Seite:",
viewers_module_tests_title = "Tests und Informationen zu diesem Modul:",
viewers_internal_tests_title = "Interne Regressionstests:",
viewers_tableView_default_headers = "A; B; C; D; E",
viewers_tableView_tests_title = "tableview.new() Test: Bilden Sie eine Tabelle mit Zeilen und Spalten.",
viewers_tab_view_form_elem_detail = "Detail = <b>%1</b> | <b>%2</b> | <b>%3</b> | <b>%4</b> | %5.",
viewers_tableView_tests_err = "Interner Fehler: tableview.new() abnormaler Fehler.",
viewers_format_time_tests_title = "viewers.formatDate() Codierungstests und Datumskonvertierungen",
viewers_parts_of_date_tests_title = "viewers.date_to_part() Datum Tests zu Tag, Monat, Jahr oder Zeit",
viewers_simpleList_tests_title = "viewers.simple_list() Test: Sortiere eine Liste von Wörtern ohne Wiederholung",
viewers_save_restore_balance_title = "viewers.save_restore_balance_report() Test: Speichern und Wiederherstellen, Balance der Konfigurationen",
viewers_save_restore_balance_headers = "i; wo; registrieren; wiederherzustellen; Fehler",
viewers_drop_box_title = 'Dropdown-Box', -- Modell:Dropdown-Box zum for drop_box.new(
viewers_no_content_admins_solve_i_cat = "Es gibt keinen Inhalt und dieser Text ermöglicht es den Administratoren, dieses Problem zu lösen",
viewers_no_function_admins_solve_i_cat = "Es gibt keine Funktion und dieser Text ermöglicht es Administratoren, dieses Problem zu lösen",
} -- viewers.i18n.de
viewers.i18n.en = {
-- Main string, errors and categories of tools
viewers_test_no_values = "Test: without values",
viewers_test_the_value_is_table = "Test: the value is a table",
viewers_test_all_types_values = "Test: values of all types",
viewers_Dropbox_label_Unwrap = "Unwrap/Wrap",
viewers_page_tests_title = "Testing and information related to this page:",
viewers_section_title_page = "Tests of this page",
viewers_section_title_module = "Tests of this module",
viewers_section_title_internal = "Internal tests",
-- Do not ranslate these libraries names
viewers_section_title_library_activity = "Library:activity",
viewers_section_title_library_datas = "Library:datas",
viewers_section_title_library_langs = "Library:langs",
viewers_section_title_library_lua_table = "Library:lua_table",
viewers_section_title_library_mathroman = "Library:mathroman",
viewers_section_title_library_modes = "Library:modes",
viewers_section_title_library_versions = "Library:versions",
viewers_section_title_library_wiewers = "Library:wiewers",
viewers_dropdown_missing_title = "Missing title for this drop_box",
-- Titles of tests
viewers_module_tests_title = "Testing and information related to this module:",
viewers_internal_tests_title = "Internal regression tests:",
viewers_tableView_default_headers = "A; B; C; D; E",
viewers_tableView_tests_title = "tableview.new() Test: Formats a table with lines and columns.",
viewers_tab_view_form_elem_detail = "detail = <b>%1</b> | <b>%2</b> | <b>%3</b> | <b>%4</b> | %5.",
viewers_tableView_tests_err = "Internal error : tableview.new() abnormal fail.",
viewers_format_time_tests_title = "viewers.formatDate() Tests of coding and conversion of dates",
viewers_parts_of_date_tests_title = "viewers.date_to_part() Tests of date to day, month, year or era",
viewers_simpleList_tests_title = "viewers.simple_list() Test: Sort a list of words without repetition",
viewers_save_restore_balance_title = "viewers.save_restore_balance_report() Test: save and restore, balance of configurations",
viewers_save_restore_balance_headers = "i;where;save;restore;errors",
viewers_drop_box_title = 'Drop-down box', -- Template:Drop-down box for for drop_box.new(
viewers_no_content_admins_solve_i_cat = "There is no content and this text allows the administrators to solve this problem",
viewers_no_function_admins_solve_i_cat = "There is no fucntion and this text allows the administrators to solve this problem",
} -- viewers.i18n.en
viewers.i18n.es = {
-- Textos principales, errores y categorías de instrumentos
viewers_test_no_values = "Prueba: sin valores",
viewers_test_the_value_is_table = "Prueba: el valor es una tabla",
viewers_test_all_types_values = "Prueba: valores de todos los tipos",
viewers_Dropbox_label_Unwrap = "Desenvolver/Envolver",
viewers_page_tests_title = "Pruebas y información relacionada con esta página:",
viewers_section_title_page = "Pruebas de esta página",
viewers_section_title_module = "Pruebas de esta módulo",
viewers_section_title_internal = "Pruebas internas",
-- No traduzca estos nombres de bibliotecas
viewers_section_title_library_activity = "Library:activity",
viewers_section_title_library_datas = "Library:datas",
viewers_section_title_library_langs = "Library:langs",
viewers_section_title_library_lua_table = "Library:lua_table",
viewers_section_title_library_mathroman = "Library:mathroman",
viewers_section_title_library_modes = "Library:modes",
viewers_section_title_library_versions = "Library:versions",
viewers_section_title_library_wiewers = "Library:wiewers",
viewers_section_title_is_missing = "This section misses of title",
viewers_dropdown_missing_title = "Falta el título para este drop_box",
-- Titres des pruebas
viewers_page_tests_title = "Pruebas y información relacionada con esta página:",
viewers_module_tests_title = "Pruebas y información relacionada con esto módulo:",
viewers_internal_tests_title = "Pruebas de no regresión internas:",
viewers_tableView_default_headers = "A; B; C; D; E",
viewers_tableView_tests_title = "tableview.new() Prueba: Formar una tabla con líneas y columnas.",
viewers_tab_view_form_elem_detail = "detalle = <b>%1</b> | <b>%2</b> | <b>%3</b> | <b>%4</b> | %5.",
viewers_tableView_tests_err = "Error interno: tableview.new() error anormal.",
viewers_format_time_tests_title = "viewers.formatDate() Pruebas de codificación y conversión fechas",
viewers_parts_of_date_tests_title = "viewers.date_to_part() Pruebas de fecha a día, mes, año o época",
viewers_simpleList_tests_title = "viewers.simple_list() Prueba: Ordenar una lista de palabras sin repetición",
viewers_save_restore_balance_title = "viewers.save_restore_balance_report() Prueba: guardar y restaurar, equilibrio de configuraciones",
viewers_save_restore_balance_headers = "i; dónde; guardar; restaurar; errores",
viewers_drop_box_title = 'Cuadro desplegable', -- Modelo:cuadro desplegable :Boîte déroulante para drop_box.new(
viewers_no_content_admins_solve_i_cat = "No hay contenido y este texto permite a los administradores resolver este problema",
viewers_no_function_admins_solve_i_cat = "No hay ninguna función y este texto permite a los administradores resolver este problema",
viewers_no_lang_admins_solve_i_cat = "No hay contenido y este texto permite a los administradores resolver este problema",
} -- viewers.i18n.es
viewers.i18n.fr = {
-- Principaux textes, erreurs et catégories des outils
viewers_test_no_values = "Test: sans valeurs",
viewers_test_the_value_is_table = "Test: la valeur est une table",
viewers_test_all_types_values = "Test: valeurs de tous types",
viewers_Dropbox_label_Unwrap = "Dérouler/Enrouler",
viewers_page_tests_title = "Tests et informations liées à cette page :",
viewers_section_title_page = "Tests de cette page",
viewers_section_title_module = "Tests de ce module",
viewers_section_title_internal = "Tests internes",
-- Ne pas traduire ces noms de bibliothèques
viewers_section_title_library_activity = "Library:activity",
viewers_section_title_library_datas = "Library:datas",
viewers_section_title_library_langs = "Library:langs",
viewers_section_title_library_lua_table = "Library:lua_table",
viewers_section_title_library_mathroman = "Library:mathroman",
viewers_section_title_library_modes = "Library:modes",
viewers_section_title_library_versions = "Library:versions",
viewers_section_title_library_wiewers = "Library:wiewers",
viewers_section_title_is_missing = "Cette section manque de titre",
viewers_dropdown_missing_title = "Titre manquant pour cette boite déroulante",
-- Titres des tests
viewers_page_tests_title = "Tests et informations liées à cette page :",
viewers_module_tests_title = "Tests et informations liées à ce module :",
viewers_internal_tests_title = "Tests internes de non régression :",
viewers_tableView_default_headers = "A; B; C; D; E",
viewers_tableView_tests_title = "tableview.new() Test: former un tableau avec lignes et colonnes.",
viewers_tab_view_form_elem_detail = "détail = <b>%1</b> | <b>%2</b> | <b>%3</b> | <b>%4</b> | %5.",
viewers_tableView_tests_err = "Erreur interne: tableview.new() échec anormal.",
viewers_format_time_tests_title = "viewers.formatDate() Tests de codage et conversions de dates",
viewers_parts_of_date_tests_title = "viewers.date_to_part() Tests de date vers jour, mois, année ou ère",
viewers_simpleList_tests_title = "viewers.simple_list() Test: Trier une liste de mots sans répétition",
viewers_save_restore_balance_title = "viewers.save_restore_balance_report() Test: sauver et restaurer, équilibre des configurations",
viewers_save_restore_balance_headers = "i; où; enregistre; restaure; erreurs",
viewers_drop_box_title = 'Boîte déroulante', -- Modèle:Boîte déroulante pour drop_box.new(
viewers_no_content_admins_solve_i_cat = "Il n'y a pas de contenu et ce texte permet aux administrateurs de résoudre ce problème",
viewers_no_function_admins_solve_i_cat = "Il n'y a pas de function et ce texte permet aux administrateurs de résoudre ce problème",
viewers_no_lang_admins_solve_i_cat = "Il n'y a pas de langue et ce texte permet aux administrateurs de résoudre ce problème",
} -- viewers.i18n.fr
 
function viewers.translate_default(ref, ...) -- Formats reference_key;v1;v2;v3;... for tests.
local t = tostring(ref)
for i, var in pairs( { ... } ) do
if type(var) == "table" then var = "table" -- tostring() or viewers.value() ?
else var = tostring(var) end -- tostring() or viewers.value() ?
if var then t = t .. ";" .. var end -- tostring() or viewers.value() ?
end
return t
end
-- viewers.form_user_lang_test(ref, ...) : Tests some combinations of parameters to debug then optimize translations;table
 
function viewers.translate_lang(lang, ref, ...) -- Replace %1 to %9 by tostring( argN ) from arguments, without any ambiguity in any string. BETER line 258
local t, S9, repl, val, charN = "", "", "", "", ""
-- Tactic : check separately and in some combinations and in cases of error(s) reports the maximum of availables values to support them
local n = 1
local args = {...}
local ref = ref
local translation = ""
if type(ref) ~= "string" then ref = "default list of the first arguments : %1 ; %2 ; %3 ; %4 ; %5 ; %6 " end
if type(lang) ~= "string" then lang = langs.default_user_lang end -- Default language to replace any other in case it is not or bad defined
local translation_table = {}
-- verify cases : language is valid or default and known in mw, p.i18n is table langs -- in the normal case
-- errors cases : language is unavailable or default or unknown and in some bad cases
if (type(lang) == "string") and (type(p.i18n[lang]) == "table") then -- Here we check if the language is valid
if (type(mw.language.fetchLanguageName(lang)) == "table") then -- mw.language.fetchLanguageName(onetest["lang"]) -- "lang" can be like "English" or "en" mw.language.fetchLanguageName
-- We search if a translation exist for these language an reference
if (type(ref) == "string") and (type(p.i18n) == "table") and (type(p.i18n[lang]) == "table") and (type(p.i18n[lang][ref]) == "string") then
-- here we are sure that we have translation for a good reference in an available languge
translation = p.i18n[lang][ref]
else -- In case of error we alert administrators in a dedicated category
err = ref .. "_" .. lang .. "_i_cat" -- Here we first alert administrators UMUM
-- Then we format a minimal string to help them to locate and debug the error :
ref = viewers.translate_default(ref, args) -- Formats reference_key;v1;v2;v3;... for tests.
-- function events.add_cat(key, ... ) -- Add a category in the actual table of events.
events.add_cat(err) -- Add a category in the actual table of events
end
end
end
if (type(p.i18n[lang]) == "table") then -- Normal case, we have found the right translation table for the C language
right_translation_table = p.i18n[lang] -- And we use it as usual table of translations
else right_translation_table = p.i18n[langs.default_user_lang] end -- In other cases we use the default table of translations
-- With a valid language and a valid table of translations we can translate :
if lua_table.level_count(args) > 0 then
local n = 1
for n = 9, 1, -1 do
S9 = tostring(n)
charN = string.find(t, "%".. S9, 1, true)
if charN then -- If reference has %0 to %9
repl = tostring( args[n] or "" )
t = string.sub(t, 1, charN - 1) .. repl .. string.sub(t, charN + string.len( "%".. S9 ) )
end
end
end
return t
--[[
local t = viewers.form_user_lang_test(t) -- Tests some combinations of parameters to debug then optimize translations
if 1 then return t end
--]]
end -- function viewers.translate_lang(translations, key, ...)
-- viewers.form_user_lang_test(ref, ...) : Tests some combinations of parameters to debug then optimize translations;table
function viewers.translate_content(ref, ...) -- replace %1 to %9 by v1 to v9 in the content translation of ref, else in ref
local args = {...}
return viewers.translate_lang(langs.content_lang, ref, args) -- Replace %1 to %9 by tostring( argN )
end -- local t = function viewers.translate_content(ref, ...)
 
function viewers.translate_page(ref , ...) -- Replace %1 to %9 by arguments, without any ambiguity in any string.
local args = {...}
return viewers.translate_lang(langs.page_lang, ref, args) -- Replace %1 to %9 by tostring( argN )
end -- local t = function viewers.translate_content(ref, ...)
 
function viewers.translate_user(ref , ...) -- Replace %1 to %9 by arguments, without any ambiguity in any string.
local args = {...}
return viewers.translate_page(langs.user_lang, ref, args)
end -- function viewers.translate_user(ref, ...)
 
viewers.form_user_lang_test_cases = { -- Group or tests cases for function viewers.translate_user(lang, ref , ...) and also langs.content_lang
{ ["object"] = "normal case", ["lang"] = "es", ["ref"] = "", ["style"] = "add", },
{ ["object"] = "normal but missing lang", ["lang"] = nil, ["ref"] = "activity_display_central_libraries_title", ["style"] = "delete", },
{ ["object"] = "normal but missing ref", ["lang"] = "en", ["ref"] = "viewers_internal_tests_title", ["style"] = "b", },
{ ["object"] = "normal but missing ref", ["lang"] = "en", ["ref"] = nil, ["style"] = "b", },
{ ["object"] = "normal but bad content_lang", ["lang"] = "XYZT", ["ref"] = "activity_display_central_libraries_title", ["style"] = "sun", },
{ ["object"] = "normal but bad page_lang", ["lang"] = "ABCD", ["ref"] = "activity_translate_string_guide", ["style"] = "error", },
}
 
function viewers.form_user_lang_test(t) -- Tests some combinations of parameters to debug then optimize translations
local t = t -- t or
if type(t) ~= "string" then t = '\n* <b>viewers.form_user_lang_test(ref, ...)</b> : Tests some combinations of parameters to debug then optimize translations' end
local grouptest = viewers.form_user_lang_test_cases
local n, args = 0, {}
local ref = ""
local testgroup = {}
for k, onetest in pairs( grouptest ) do
local args = onetest["args"]
-- function viewers.translate_lang(lang, ref, ...) -- Replace %1 to %9 by tostring( argN ) from arguments, without any ambiguity in any string.
-- Here we give first the language to translate and arguments as options to diversify tests then we got the result of one test
onetest["result"] = viewers.translate_lang(onetest["lang"], onetest["args"] )
onetest = { onetest["object"], onetest["lang"], onetest["ref"], onetest["style"], onetest["result"], onetest["errors"], }
table.insert(testgroup, onetest) -- function viewers.translate_user(
end
-- viewers.translate_user(ref , args) -- Replace %1 to %9 by arguments, without any ambiguity in any string.
-- viewers_internal_tests_title = "Pruebas de no regresión internas:",
if type(ref) ~= "string" then
t = t .. viewers.translate_default("form9en", args)
elseif type(p.i18n.en[ref]) == "string" then
t = t .. viewers.translate_lang(p.i18n.en, ref, args)
else t = t .. viewers.translate_default(ref, args) -- Formats reference_key;v1;v2;v3;... for tests.
end -- Default text to help to locate a bug viewers.translate_default(ref, ...)
local testgroup = {}
-- function viewers.translate_user(ref , ...) -- Replace %1 to %9 by arguments, without any ambiguity in any string.
local tab_view = { -- Group datas and options for a table view with lines and columns.
title_memo = "versions.versions_support_test", -- Tests various combinations of mod
test_group = testgroup, -- List of subtasks to monitor.
-- headers = "activity_monitor_central_libraries_headers", -- " Name; Description of the library ",
headers = " Name; Description of the library ",
headers_class = "wikitable alternative center sortable",
rowGroup = {},
-- track_on == "details",
}
t = t .. tableview.new(tab_view) -- Runs tests cases and formats a table view with lines and columns.
viewers.restore_configs(memo, "viewers.translate_user_test") -- Restore global configurations after eventual changes.
--[[
local t = viewers.translate_user_test(t)
if 1 then return t end
--]]
return t
end -- function viewers.translate_user_test(t)
 
-- t = drop_box.form(dropit.title, dropit.content, dropit)
function drop_box.new(title, content_or_function, dropit) -- Easy drop_box style from a list of named options.
local memo = viewers.save_configs("drop_box.form") -- Save global configuration before eventual changes.
local dropit = mw.clone(dropit) -- Save global configuration before eventual changes.
local DROPFUNTION = mw.clone(content_or_function)
dropit.title, dropit.content_or_function, dropit.args = mw.clone(title), mw.clone(content_or_function), mw.clone(dropit.args)
local t = "\n* drop_box.form: "
-- if type(content) == "function" then content = ( content(title, content, dropit) ) end -- and use it as content form function
t = t .. viewers.ta("title", tostring(dropit.title) )
t = t .. viewers.ta("content", tostring(dropit.content) )
t = t .. viewers.ta("dropit", tostring(dropit.dropit) )
dropit.content_or_function = mw.clone(content_or_function)
if type(dropit.content_or_function == "function") then DROPFUNTION = dropit.content_or_function end
-- if type(dropit.content) == "function" then dropit.function = dropit.content end
-- if type(DROPFUNTION) == "function" then
-- dropit.content = DROPFUNTION(dropit.content_or_function, dropit.args)
-- dropit.function = dropit.content_or_function
-- dropit.content_function_result = dropit.content_or_function(dropit.title, dropit.args )
-- t = t .. dropit.content_function_result
-- end
if type(dropit.content_function_result) == "string" then dropit.function_name = "dropit.content_or_function" end
t = t .. "\n* dropit.function_name:" .. dropit.function_name
-- if type(dropit.content_function_result) == "string" then dropit.content = dropit.content_function_result end
-- title = title() -- function drop_box.new_title()
if type(dropit.content_or_function) ~= "function" then viewers.translate_user("viewers_no_function_admins_solve_i_cat") end
if type(dropit.content) ~= "string" then viewers.translate_user("viewers_no_content_admins_solve_i_cat") end
if type(dropit.lang) ~= "string" then viewers.translate_user("viewers_no_lang_admins_solve_i_cat") end
dropit.title = viewers.translate_user(dropit.title)
t = t .. viewers.ta("\n* title", tostring(dropit.title) )
t = t .. viewers.ta("#dropit", lua_table.level_count(dropit) )
local opt = mw.clone(drop_box.css_options) -- Save global configuration before eventual changes.
dropit.style = { -- Conventional css parameters : from -- https://en.wikisource.org/wiki/Template:drop_box#Parameters
image = nil,
cssview = dropit.cssview, -- cssview : display values of options
fw1 = dropit.fw1 or opt.fw1, -- "left", -- fw1 : the font-weight for the heading
fw2 = dropit.fw2 or opt.fw2, -- "left", -- fw2 : the font-weight for the body
fs1 = dropit.fs1 or opt.fs1, -- "100%", -- font-size: 100%;
fs2 = dropit.fs2 or opt.fs2, -- "100%", -- font-size: 100%;
bg1 = dropit.bg1 or opt.bg1, -- "#FFFFFF", -- bg1 : the background-color for the heading
bg2 = dropit.bg2 or opt.bg2, -- "#FFFFFF", -- bg2 : the back.clicground-color for the body
ta1 = dropit.ta1 or opt.ta1, -- "left", -- ta1 : the text-align for the heading
ta2 = dropit.ta2 or opt.ta2, -- "left", -- ta2 : the text-align for the body
float = dropit.float or opt.float, -- "none", -- float : should the box be floated? (left, right, or none)
width = dropit.width or opt.width, -- "99%", -- width : the width of the box, e.g. 33%
border_radius = dropit.border_radius or opt.border_radius, -- "0px 0px 0px 0px", -- border-radius: "15px 50px 30px 5px" : add rounded corners to an element.
style = dropit.style or opt.style, -- "0px 0px 0px 0px", -- style : HTML/CSS affectionados only: any other css style arguments for the whole box
-- <div id="NavFrame10" class="NavFrame" style="clear:both; margin-bottom:1em; width:99%; border-style:solid; border-radius:0px 0px 0px 0px; border-color:#AAAAAA; background-color:#FFFFFF;" title="â–¼ /â–¶ ">
hidden = dropit.hidden or opt.hidden, -- "true", -- hidden : set this to any string (e.g. hidden=true) to have the box hidden by default
headType = dropit.headType or opt.fw1, -- "h4", -- headType : allows you to set the box header to (say) "h4", which means it will be included in the table of contents. This is provided as an explicit parameter because if you just surround the title with header tags, e.g. <h4>Box 1.1</h4>
tc1 = dropit.tc1 or opt.tc1, -- "black", -- tc1 : the text-color for the heading
tc2 = dropit.tc2 or opt.tc2, -- "black", -- tc2 : the text-color for the body
border_color = dropit.border_color or opt.border_color, -- "#AAAAAA", -- border-color : the text-color for the heading and the body
-- display = dropit.display or opt.display, -- "block", -- display: block : results without line break.
display = dropit.display or opt.display, -- "inline", -- display: inline : results with free line break.
margin_all = dropit.margin_all or opt.margin_all, -- "0px", -- margin
margin_bottom = dropit.margin_bottom or opt.margin_bottom, -- "1em", -- margin-bottom
--
height = dropit.height or opt.height, -- "1.6em", -- height
label = dropit.label or opt.label, -- "&#x25bc; &nbsp; /&#x25b6; &nbsp; ", -- = "Unwrap/Wrap",
-- â–¼ = &#x25bc; -- â–¶ = &#x25b6; https://fr.wikipedia.org/wiki/Table_des_caract%C3%A8res_Unicode/U25A0
-- label = label or viewers.translate_user("viewers_drop_box_label_Unwrap"), -- = "Unwrap/Wrap" translations
}
-- if type(dropit.content) == "function" then dropit.content = ( dropit.content() ) end -- and use it as content form function
if type(dropit.content) == "function" then dropit.content = dropit.content( dropit.ref, dropit.args )
-- dropit.lang = dropit.lang or langs.default_user_lang -- Default language to replace any other in case it is not or bad defined
else
-- dropit.title = "Inside the viewer drop_box.form(), a function in test or in report has a nil result."
-- dropit.content = "Inside the viewer drop_box.form(), there is no content and this text allows the administrator to solve this problem i_cat." -- Formats reference_key;v1;v2;v3;... for tests.
if type(dropit.lang) ~= "string" then dropit.lang = langs.default_user_lang -- Default language to replace any other in case it is not or bad defined
else
-- dropit.lang = viewers.translate_user(dropit.lang)
-- dropit.ref = viewers.translate_user(dropit.ref)
-- dropit.title = viewers.translate_user(dropit.title)
-- dropit.content = viewers.translate_user(dropit.content)
-- dropit.err = dropit.ref .. "_" .. dropit.lang .. "_i_cat" -- Here we first alert administrators UMUM
dropit.content_or_function = dropit.content_or_function() return "" end -- dropit.content_or_function
if type(dropit.content_or_function ~= "function") then viewers.translate_user("viewers_no_function_admins_solve_i_cat") end
if type(dropit.content ~= "string") then viewers.translate_user("viewers_no_function_admins_solve_i_cat") end
if type(dropit.lang ~= "string") then viewers.translate_user("viewers_no_function_admins_solve_i_cat") end
end
--[[
viewers_no_function_admins_solve_i_cat = "Es gibt keine Funktion und dieser Text ermöglicht es Administratoren, dieses Problem zu lösen",
viewers_no_function_admins_solve_i_cat = "There is no function and this text allows administrators to solve this problem", -- UMUM
viewers_no_function_admins_solve_i_cat = "No hay ninguna función y este texto permite a los administradores resolver este problema",
viewers_no_function_admins_solve_i_cat = "Il n'y a pas de function et ce texte permet aux administrateurs de résoudre ce problème",
viewers_no_content_admins_solve_i_cat = "Es gibt keinen Inhalt und dieser Text ermöglicht es den Administratoren, dieses Problem zu lösen",
viewers_no_content_admins_solve_i_cat = "There is no content and this text allows the administrators to solve this problem", -- UMUM
viewers_no_content_admins_solve_i_cat = "No hay contenido y este texto permite a los administradores resolver este problema",
87 = "Il n'y a pas de contenu et ce texte permet aux administrateurs de résoudre ce problème",
viewers_no_lang_admins_solve_i_cat = "Es gibt keinen Inhalt und dieser Text ermöglicht es den Administratoren, dieses Problem zu lösen",
viewers_no_lang_admins_solve_i_cat = "There is no content and this text allows the administrators to solve this problem", -- UMUM
viewers_no_lang_admins_solve_i_cat = "No hay contenido y este texto permite a los administradores resolver este problema",
viewers_no_lang_admins_solve_i_cat = "Il n'y a pas de langue et ce texte permet aux administrateurs de résoudre ce problème",
--]]
-- dropit.title = viewers.translate_user(dropit.ref , dropit.args) -- Replace %1 to %9 by arguments, without any ambiguity in any string.
-- end -- and use it as content form function
if type(dropit.image) == "string" then
dropit.image = ''
.. '<div class="NavPic" style=" background-color:' .. dropit.bg1 .. '; " >'
.. '[[File:' .. dropit.image .. '|22px]]'
.. '</div>' -- &nbsp;
else
dropit.image = ''
end
local d = dropit
-- res = res .. "</b>"
local t = "</b>"
if dropit.cssview then
t = t .. '\n* List values of <b>CSS if cssview</b>: '
for key, elem in pairs(dropit) do
if (key ~= "content") and (key ~= "title") then t = t .. viewers.ta(key, elem) end
end
end
-- drop_box from https://fr.wikisource.org/wiki/Modèle:Boîte déroulante = drop_box from template on 20180505 OK.
-- p_template_drop_box_name = 'Boîte déroulante', -- Modèle:Boîte déroulante for drop_box.form
local dropbox_title = 'Boîte déroulante'
--[ [
-- local dropbox_title = viewers.form9content("p_template_drop_box_name")
t = t .. mw.getCurrentFrame():expandTemplate{ title = dropbox_title, args = {
["label"] = d.label, ["titre"] = d.title, ["contenu"] = d.content,
["margeHaut"] = d.margin_all, ["margeBas"] = d.margin_bottom,
["hauteur"] = d.height, -- ["width"] = d.width, -- not in html V5
["couleurFond"] = d.bg1, ["couleurBordure"] = d.tc1,
["alignT"] = d.ta1, ["align"] = d.ta2,
["arrondi"] = d.border_radius, ["couleurBordure"] = d.border_color,
-- Keep default values for : br, image, alignB, hauteur, margeHaut, margeBas
} }
--] ]
drop_box.Dropbox_t = t
viewers.restore_configs(memo, "drop_box.form") -- Restore global configurations after eventual changes.
return t
end -- function drop_box.new(title, content, dropit)
--[==[
function drop_box.new(selector, title, content_or_func, ...) -- Formats a drop_box for a doc or a group of tests. Take apart dropit options.
-- From 20180503 a bug (in Module:Centralizer or MediaWiki) some Dropboxes display twice : modes.get_args_report.
-- From 20180503 a bug (in Module:Centralizer or MediaWiki) See CentralManual display twice : modes.get_args_report.xml
-- selector = "allwaysview" -- To allways display one view. -- selector = "enforcerun" -- To debug one box with INTERNAL ERROR.
local memo = viewers.save_configs("drop_box.new") -- Save global configuration before eventual changes.
local t = ""
local args = {...}
local content_or_func_error = viewers.translate_user("\n* Error : Abnormal content for drop_box.new(%1, %2).\n*", selector, title, content_or_func) -- , %3
if selector == "never" then return "" end
if not ( (selector == true) or (selector == title) or viewers.is_in_sp(selector, "allwaysview alltestsview enforcerun failinref nocontent") ) then return "" end
if (type(title) ~= "string") then title = "Default_title" end
local dropit = nil -- dropit to change the look of the drop_box
-- Style options in dropit{}: ta1, image, ta2, margin_bottom, width, border_radius, border_color, bg1)
for i, args_tab in ipairs(args) do -- Get the dropit options for the drop_box.
modes.recursiveLoop = (modes.recursiveLoop or 0) + 1
if modes.recursiveLoop > 33 then return "" end
-- The last argument can be a dropit to change the look of the drop_box
if (i == lua_table.level_count(args) ) and (type(args_tab) == "table") and (args_tab["dropit"] == "dropit") then
dropit = mw.clone( args_tab )
end
end
local dropit = dropit or {} -- for antiCrash
if type(title) ~= "string" then title = "viewers_dropdown_missing_title" end
dropit.selector = selector
dropit.title = title
dropit.args = { ... } -- optional arguments for the content_or_func function
local func_from_name = nil
dropit.content = content_or_func -- string or function
if type(content_or_func) == "string" then func_from_name = lua_table.from_subnames_object(content_or_func) end -- Get the last sub-table from its sub-names.
dropit.content_error = ""
dropit.title = dropit.title .. ( dropit.title_errors or "" )
dropit.resultKind = "ref"
local success, result = true, ""
dropit.result = result
dropit.success = success
if type(func_from_name) == "function" then -- In case of named function:
dropit.func_name = content_or_func -- memorise its name
-- dropit.content = func_from_name -- and use it as content form function
end
local res = drop_box.form(dropit.title, dropit.content, dropit)
if not dropit.success then
dropit.content_ref = "content_error<ref>" .. viewers.styles_color_error( dropit.content_error) .. "</ref>"
dropit.content = dropit.content_ref
end
local list, count, level, split = lua_table.level_list(package.loaded) -- subtasks S170813lll
viewers.restore_configs(memo, "drop_box.new") -- Restore global configurations after eventual changes.
-- res = t .. res
return res
end -- function drop_box.new(selector, title, content, ...)
--]==]
 
 
-- - - - ------------------ - - - - ---------------------------------
Ligne 185 ⟶ 815 :
langs.infos = { -- from 20171218
["libname"] = "langs", typ = "Library",
libdesc = "The Library:lua_table p.i18n translates: arguments names, sentencies, error messages, catégoriescatégories...",
versfirst = "130312.12:00", verslast = "171221.07:43",
versions = {
Ligne 264 ⟶ 894 :
{ "datas", "The Library:datas gets datas from the Wikibase.", },
{ "events", "The Library:events form events like erros, warnings and categories.", },
{ "langs", "The Library:langs supports p.i18n translations.", },
{ "lua_table", "The Library:lua_table enhances the native Lua table library, to avoid ambiguities.", },
{ "mathroman", "The Library:mathroman converts roman numbers and detect errors. It is here as an example of very small central library.", },
{ "modes", "The Library:modes supports the modes and their options, like p.read(frame).", },
{ "tables", "The Library:tables formats rows of tables in html. Sortable tables with buttons are forbiden in MediaWiki.", },
{ "versions", "The Library:versions installs all central libraries, modules, their p.i18n translations and versions.", },
{ "viewers", "The Library:viewer translates and formats strings to document texts and table views.", },
-- Objects have a function object.new() to form several objects.
Ligne 378 ⟶ 1 008 :
end -- ARGS = tracker.initrack({ ["name"] = "ARGS", limit = 2, }) -- Initialize a track
 
function tracker.init_trakers() -- Initialize some trakers. To run in Centralp.init()
ARGS = tracker.initadd({ ["name"] = "ARGS", ["limit"] = 2 }) -- Initialize a track
CNT = tracker.initadd({ ["name"] = "CNT", ["limit"] = 2 }) -- Initialize a track
Ligne 399 ⟶ 1 029 :
["docitem"] = "docitem",
["dockey"] = "dockey",
activity_description = "Das Library:activity Das Ding unterstütztunterstützt das Management von phaborator-Aufgaben, von inter-Lua-Coder-Unteraufgaben und von interwikis-Zentralmodulen.",
activity_central_library_description = "Das Library:activity Das Ding unterstütztunterstützt das Management von phaborator-Aufgaben, von inter-Lua-Coder-Unteraufgaben und von interwikis-Zentralmodulen.",
activity_display_central_libraries_title = "activity.describe_central_libraries() Zentrale Bibliotheksbeschreibungen",
activity_Module_Central_central_version = "Modul:Central",
activity_Library_translate_I18N = "Modul:Library/translate/I18N",
activity_Central_modules_reference_manual = "Scribunto/Central modules reference manual",
activity_support_central_modules_title = "<b>activity.begin_central_modules_support()</b> UnterstützenUnterstützen Sie die ersten Anwendungen von Central-Modulen.",
activity_support_central_modules_headers = "Projekt; Speicher; Admins; VermögenswerteVermögenswerte; Modellverbindung; Modulverbindung; LinkTests; beginnen; Gebraucht seit; Encoder; Ok", -- fr
activity_report_subtasks_title = 'activity.central_subtasks_report(t) ÜberwachenÃœberwachen Sie den aktuellen Stand der subtasks. See "NOW".',
activity_MW_Versions_report_title = "<b>activity.MW_Versions_report()</b> ÜberwachenÃœberwachen von MediaWiki-Versionen, letzten 3 Monate.", -- de
activity_central_count_admins_active_users = "FürFür diese Seite, br.wikisource.org, Konto <b>%1</b> Direktoren fürfür <b>%2</b> aktive Nutzer.",
activity_phabricator_tasks_title = "activity.phabricator_tasks_report() ZuständigeZuständige Aufgaben in Phabricator",
activity_phabricator_tasks_headers = "Wichtigkeit; modifiziert die; Aufgabe; Status; Titel",
activity_central_functions_report_title = "activity.central_functions_report(t) Listen Sie die aktuellen Funktionen auf.",
Ligne 446 ⟶ 1 076 :
activity_test_page_user = "Documentation",
} -- activity.i18n.en
activity.i18n.es = { -- es = Spanish = españolespañol
-- To translate, referral languages are English and French.
-- To translate, do not translate parts like these: <b>%1</b> ; <b>%1</b> = <b>%2</b> (%3) ; <code>Q535</code> ; <br/> ; \n* ; _G.
Ligne 452 ⟶ 1 082 :
["docitem"] = "docitem",
["dockey"] = "dockey",
activity_description = "La Library:activity soporta la gestióngestión de tareas de phabricator, de sub-tareas inter Lua-coders, y de módulosmódulos interwikis centrales.",
activity_central_library_description = "La Library:activity soporta la gestióngestión de tareas de phabricator, de sub-tareas inter Lua-coders, y de módulosmódulos interwikis centrales.",
activity_display_central_libraries_title = "activity.describe_central_libraries() Descripciones de bibliotecas centrales",
activity_translate_string_guide = "Para traducir, no traducir partes como estas: <b>%1</b> ; <b>%1</b> = <b>%2</b> (%3) ; <code>Q535</code> ; <br/> ; <br/> ; \n* ; _G.",
activity_Module_Central_central_version = "MóduloMódulo:Central",
activity_Library_translate_I18N = "MóduloMódulo:Library/translate/I18N",
activity_Central_modules_reference_manual = "Scribunto/Central modules reference manual",
activity_support_central_modules_title = "activity.begin_central_modules_support() Apoye los primeros usos de los módulosmódulos centrales.",
activity_support_central_modules_headers = "proyecto; Guarde; Administradores; activos; Enlace modelo; Enlace del módulomódulo; Enlace Tests; Inicio; Usado desde entonces; codificador; bueno", -- fr
activity_report_subtasks_title = 'activity.central_subtasks_report(t) Monitorear las subtareas. See "NOW".',
activity_MW_Versions_report_title = "<b>activity.MW_Versions_report()</b> Monitorear las versiones de MediaWiki, últimosúltimos 3 meses.", -- es
activity_central_count_admins_active_users = "Este sitio, br.wikisource.org, cuenta <b>%1</b> administradores para <b>%2</b> usuarios activos.",
activity_phabricator_tasks_title = "activity.phabricator_tasks_report() Tareas relacionadas con los estados en Phabricator",
activity_phabricator_tasks_headers = "Importancia; modificado; Tarea; Estado; TítuloTítulo",
activity_central_functions_report_title = "activity.central_functions_report(t) Listar funciones actuales.",
activity_check_html_bold_tags_title = "activity.check_html_bold_tags() Informe los desequilibrios de los comienzos y los extremos de negrita en el códigocódigo.",
activity_space_name_module = "MóduloMódulo", -- es
activity_space_name_template = "Modelo",
activity_space_name_user = "Usuario",
activity_test_page_user = "DocumentaciónDocumentación", -- br Documentation, Dokumentation,
} -- activity.i18n.es
activity.i18n.fr = { -- fr = French = FrançaisFrançais
-- Pour traduire, les langues de référenceréférence sont l'anglais et le françaisfrançais.
-- Pour traduire, ne traduisez pas des parties comme celles-ci : <b>%1</b> ; <b>%1</b> = <b>%2</b> (%3) ; <code>Q535</code> ; <br/> ; \n* ; _G.
["docfunc"] = "docfunc",
["docitem"] = "docitem",
["dockey"] = "dockey",
activity_description = "La Library:activity soutient la gestion des tâchestâches de phabricator, des sous-tâchestâches inter Lua-codeurs et des modules centraux interwikis.",
activity_central_library_description = "La Library:activity soutient la gestion des tâchestâches de phabricator, des sous-tâchestâches inter Lua-codeurs et des modules centraux interwikis.",
activity_display_central_libraries_title = "activity.describe_central_libraries() Description des bibliothèquesbibliothèques centrales",
activity_translate_string_guide = "Pour traduire, ne traduisez pas les parties comme celles-ci : <b>%1</b> ; <b>%1</b> = <b>%2</b> (%3) ; <code>Q535</code> ; <br/> ; <br/> ; \n* ; _G.",
activity_Module_Central_central_version = "Module:Centralizer",
activity_Library_translate_I18N = "Module:Library/translate/I18N",
activity_Central_modules_reference_manual = "Scribunto/Central modules reference manual",
activity_report_subtasks_title = 'activity.central_subtasks_report(t) Surveiller les sous-tâchestâches. Voir "NOW".',
activity_MW_Versions_report_title = "<b>activity.MW_Versions_report()</b> Surveiller les versions de MediaWiki, les 3 derniers mois.", -- fr
activity_central_count_admins_active_users = "Ce site, fr.wikisource.org, compte <b>%1</b> administrateurs pour <b>%2</b> utilisateurs actifs.",
activity_support_central_modules_title = "activity.begin_central_modules_support() Soutenir les premièrespremières utilisations des Central modules.",
activity_support_central_modules_headers = "Project; Language; Admins; Assets; Lien ModèleModèle; Lien Module; Lien Tests; DébutDébut; UtiliséUtilisé depuis; Codeur; OK", -- fr
activity_phabricator_tasks_title = "activity.phabricator_tasks_report() ÉtatsÉtats des tâchestâches connexes dans Phabricator",
activity_phabricator_tasks_headers = "Importance, modifiéemodifiée le; TâcheTâche; Etat; Titre",
activity_central_functions_report_title = "activity.central_functions_report(t) Lister les fonctions actuelles.",
activity_check_html_bold_tags_title = "activity.check_html_bold_tags() Signaler les déséquilibresdéséquilibres des débutsdébuts et des fins de gras dans le code.",
activity_space_name_module = "Module", -- fr
activity_space_name_template = "ModèleModèle",
activity_space_name_user = "Utilisateur",
activity_test_page_user = "Documentation", -- br Documentation, Dokumentation,
} -- activity.i18n.fr
activity.i18n.hu = { -- hu = Hungarian = Magyar -- Il n'y a aucun module dans l'espace module Modul:Central-w-hu/doc {{#invoke:Central-w-hu|read}}
-- To translate, referral languages are English and French.
-- To translate, do not translate parts like these: <b>%1</b> ; <b>%1</b> = <b>%2</b> (%3) ; <code>Q535</code> ; <br/> ; \n* ; _G.
["docfunc"] = "docfunc",
["docitem"] = "docitem",
["dockey"] = "dockey",
activity_description = "A Library:activity a phabricator feladatok kezelését, az inter Lua-kódoló al-feladatok és az interwikis központi modulok kezelését.",
activity_central_library_description = "A Library:activity a phabricator feladatok kezelését, az inter Lua-kódoló al-feladatok és az interwikis központi modulok kezelését.",
activity_display_central_libraries_title = "activity.describe_central_libraries() Központi könyvtárak leírása",
activity_translate_string_guide = "Töltsd le a szöveget, és nyomd le a partit a cellák között: <b>%1</b> ; <b>%1</b> = <b>%2</b> (%3) ; <code>Q535</code> ; <br/> ; <br/> ; \n* ; _G.",
activity_Module_Central_central_version = "Modul:Central",
activity_Library_translate_I18N = "Modul:Library/translate/I18N",
activity_Central_modules_reference_manual = "Scribunto/Central modules reference manual",
activity_report_subtasks_title = 'activity.central_subtasks_report(t) Kíséri részfeladatok. See "NOW".',
activity_MW_Versions_report_title = "<b>activity.MW_Versions_report()</b> Monitor MediaWiki verziók, az elmúlt 3 hónapban.", -- hu
activity_central_count_admins_active_users = "Ez az oldal, br.wikisource.org, fiók <b>%1</b> rendszergazdák és <b>%2</b> felhasználók aktív.",
activity_support_central_modules_title = "activity.begin_central_modules_support() Támogassa a központi modulok első használatát.",
activity_support_central_modules_headers = "Project mentése; Adminok; eszközöket; Modell link; Modul kapcsolat; Link Tests; indul el; Óta használják; jeladó; rendben", -- fr
activity_phabricator_tasks_title = "activity.phabricator_tasks_report() Államokkal kapcsolatos feladatok a Phabricator",
activity_phabricator_tasks_headers = "Fontosság; módosította; a Feladat; Állapot; Cím",
activity_central_functions_report_title = "activity.central_functions_report(t) Listázza az aktuális funkciókat.",
activity_check_html_bold_tags_title = "activity.check_html_bold_tags() Jelentés a merész kódok kezdetének és végének egyenlőtlenségeiről.",
activity_space_name_module = "Modul", -- hu
activity_space_name_template = "Sablon",
activity_space_name_user = "Dokumentáció", -- br Documentation, Dokumentation,
} -- activity.i18n.hu
activity.i18n.vi = { -- vi = Vietnamese = Tiếng việt
-- To translate, referral languages are English and French.
-- To translate, do not translate parts like these: <b>%1</b> ; <b>%1</b> = <b>%2</b> (%3) ; <code>Q535</code> ; <br/> ; \n* ; _G.
["docfunc"] = "docfunc",
["docitem"] = "docitem",
["dockey"] = "dockey",
activity_central_library_description = "Điều này Library:activity hỗ trợ việc quản lý các công việc để nhà phân tích, các nhiệm vụ phụ liên Lua-coders, và các mô-đun trung tâm liên thông.",
activity_display_central_libraries_title = "activity.describe_central_libraries() Mô tả thư viện trung ương",
activity_translate_string_guide = "Để dịch, không dịch các phần như thế này : <b>%1</b> ; <b>%1</b> = <b>%2</b> (%3) ; <code>Q535</code> ; <br/> ; \n* ; _G.",
activity_Module_Central_central_version = "Mô đun:Central",
activity_Library_translate_I18N = "Mô đun:Library/translate/I18N",
activity_Central_modules_reference_manual = "Scribunto/Central modules reference manual",
activity_report_subtasks_title = 'activity.central_subtasks_report(t) Xem việc phụ. See "NOW".',
activity_MW_Versions_report_title = "<b>activity.MW_Versions_report()</b> Giám sát các phiên bản MediaWiki, 3 tháng gần đây.", -- vi
activity_central_count_admins_active_users = "Trang web này, Br.wikisource.org có <b>%1</b> quản trị viên cho <b>%2</b> người dùng hoạt động.",
activity_support_central_modules_title = "activity.begin_central_modules_support() Hỗ trợ sử dụng đầu tiên để mô-đun Trung tâm.",
activity_support_central_modules_headers = "dự án; lưu; Quản trị viên; tài sản; Liên kết mô hình; Liên kết mô-đun; Liên kết Tests; bắt đầu; Được sử dụng kể từ; encoder; tốt",
activity_phabricator_tasks_title = "activity.phabricator_tasks_report() Các nhiệm vụ liên quan đến Nhà nước trong Phabricator",
activity_phabricator_tasks_headers = "Tầm quan trọng; sửa đổi; nhiệm vụ; tình trạng; tiêu đề",
activity_central_functions_report_title = "activity.central_functions_report(t) Liệt kê các chức năng hiện tại.",
activity_check_html_bold_tags_title = "activity.check_html_bold_tags() Báo cáo sự mất cân đối của các khởi đầu và kết thúc bằng chữ in đậm.",
activity_space_name_module = "Mô-đun", -- vi
activity_space_name_template = "Mẫu",
activity_space_name_user = "tài liệu", -- br Documentation, Dokumentation,
} -- activity.i18n.vi
 
function activity.describe_central_libraries(t) -- Central libraries descriptions, activity_display_central_libraries_title
Ligne 566 ⟶ 1 145 :
t = t .. tableview.new(tab_view) -- Runs tests cases and formats a table view with lines and columns.
viewers.restore_configs(memo, "activity.describe_central_libraries") -- Restore global configurations after eventual changes.
local grouptest = versions.init_multilingual_module_tests
local testgroup = {}
for k, var in pairs( grouptest ) do
onet = versions.versions_support(t)
table.insert(testgroup, onet)
end
local tab_view = { -- Group datas and options for a table view with lines and columns.
title_memo = "versions.versions_support_test", -- Tests various combinations of mod
test_group = testgroup, -- List of subtasks to monitor.
-- headers = "activity_monitor_central_libraries_headers", -- " Name; Description of the library ",
headers = " Name; Description of the library ",
headers_class = "wikitable alternative center sortable",
rowGroup = {},
-- track_on == "details",
}
t = t .. tableview.new(tab_view) -- Runs tests cases and formats a table view with lines and columns.
return t
end
Ligne 575 ⟶ 1 170 :
["v"] = "wikiversity", ["w"] = "wikipedia", ["wm"] = "wikimedia", ["y"] = "wikivoyage",
} -- activity.wikis_names
-- see https://fr.wikisource.org/wiki/SpécialSpécial:Interwiki
-- see https://www.MediaWiki.org/wiki/Special:Interwiki
-- see https://fr.wikisource.org/wiki/Sp%C3%A9cial:Matrice_des_sites
Ligne 588 ⟶ 1 183 :
activity.local_version = "Centralizer-s-fr" -- default Patrom:Central
 
activity.coder_lang_modulecoders_langs_modules = { -- List to report of Module:Centralizer for 'Begin to use' 7 central modules, 7 coders, 7 projets, 7 langs to get.
-- br.wikisource.org/wiki/Modulenn:Centralizer-s-br/doc {{#invoke:Centralizer-s-br|read}} fr = Breton = Breton = Breitz
{ ['"lang'"] = "frbr", ['"project'"] = "wikipediawikisource", ['"module_vers'"] = "Centralizer", ['"coder'"] = "[[:ws:frbr:UtilisateurImplijer:TEDVIGNERON|TEDVIGNERON]]", ['"ok'"] = "ok",
['"project_short'"] = "ws", ['"tests_lang'"] = "Centralizer/Documentation", ['"template'"] = "ModèlePatrom", ['"template_vers'"] = "Centralizer/Documentation",
['"module'"] = "Modulenn", ['"admins'"] = "15016", ['"assets'"] = "236", ['"beginon'"] = "20180719 ?", ['"usedfrom'"] = "20180719 ?", },
--
-- de.wikisource.org/wiki/Modul:Centralizer/Doku {{#invoke:Centralizer-s-de|read}} de = German = Deutsch
{ ['"lang'"] = "de", ['"project'"] = "wikisource", ['"module_vers'"] = "Centralizer", ['"coder'"] = "[[:s:de:Benutzer:DerFussi|DerFussi]]", ['"ok'"] = "...",
['"project_short'"] = "s", ['"tests_lang'"] = "Centralizer/Dokumentation", ['"template'"] = "Vorlage", ['"template_vers'"] = "Centralizer/Dokumentation",
['"module'"] = "Modul", ['"admins'"] = "15016", ['"assets'"] = "236", ['"beginon'"] = "20180719 ?", ['"usedfrom'"] = "20180719 ?", },
-- sur la page de projet je ne vois pas qui d'autre :Hexasoft Tejgad Arkanosis Xfigpower Zebulon84 ;Hlm Z.; Od1n TomT0m ArchimëaArchimëa
-- sur la page de projet je ne vois pas qui d'autre : {{u'|Hexasoft}}, {{u'|Tejgad}}, {{u'|Arkanosis}}, {{u'|Xfigpower}}, {{u'|Zebulon84}},, {{u'|Hlm Z.}}.
-- Je rajoute au hasard {{u'|Od1n}}, {{u'|TomT0m}} et... -- [[Utilisateur:ArchimëaArchimëa|ArchimëaArchimëa]] <
-- en.wikipedia.org/wiki/Module:Centralizer/Documentation {{#invoke:Centralizer-w-en|read}} en = English = English
{ ['"lang'"] = "en", ['"project'"] = "wikipedia", ['"module_vers'"] = "Centralizer", ['"coder'"] = "[[:w:en:User:Toohool|Toohool]]", ['"ok'"] = "...",
['"project_short'"] = "w", ['"tests_lang'"] = "Centralizer/Documentation", ['"template'"] = "Template", ['"template_vers'"] = "Centralizer/Documentation",
['"module'"] = "Module", ['"admins'"] = "1500", ['"assets'"] = "0", ['"beginon'"] = "20180719 ?", ['"usedfrom'"] = "20180719 ?", },
--
-- es.wikipedia.org/wiki/MóduloMódulo:Centralizers/DocumentaciónDocumentación {{#invoke:Centralizer-w-es|read}} es = Spanish = españolespañol
{ ['"lang'"] = "es", ['"project'"] = "wikipedia", ['"module_vers'"] = "Centralizer", ['"coder'"] = "[[:w:es:Usuario:Juan_Mayordomo|Juan_Mayordomo]]", ['"ok'"] = "...",
['"project_short'"] = "w", ['"tests_lang'"] = "Centralizer/DocumentaciónDocumentación", ['"template'"] = "Plantilla", ['"template_vers'"] = "Centralizer/Documentación",
['"module'"] = "MóduloMódulo", ['"admins'"] = "15016", ['"assets'"] = "236", ['"beginon'"] = "20180719 ?", ['"usedfrom'"] = "20180719 ?", },
--
-- es.wikisource.org/wiki/MóduloMódulo:Centralizer-s-es/DocumentaciónDocumentación {{#invoke:Centralizer-s-es|read}} es = Spanish = españolaespañola
{ ['"lang'"] = "es", ['"project'"] = "wikisource", ['"module_vers'"] = "Centralizer", ['"coder'"] = "[[:s:es:Usuario:Alex brollo|Alex brollo]]", ['"ok'"] = "...", -- Usuario:Juan_Mayordomo
['"project_short'"] = "s", ['"tests_lang'"] = "Centralizer/DocumentaciónDocumentación", ['"template'"] = "Plantilla", ['"template_vers'"] = "Centralizer/Documentación",
['"module'"] = "MóduloMódulo", ['"admins'"] = "15022", ['"assets'"] = "234", ['"beginon'"] = "20180719 ?", ['"usedfrom'"] = "20180719 ?", },
--
-- Module br Modulenn, de Modul, en Module, es MóduloMódulo, fr Module, hu Modul, vi Mô-đunÄ‘un,
-- Template br Patrom, de Vorlage, en Template, es Modelo, fr ModèleModèle, hu Modell, vi MẫuMẫu,
-- User br Implijer, de Benutzer, en User, es Usuario, fr Utilisateur, hu HasználóHasználó, vi ngườingÆ°á»�i sửsá»­ dụngdụng,
-- Docum br Documentation, de Dokumentation, en Documentation, es DocumentaciónDocumentación, fr Documentation, hu DokumentációDokumentáció, vi tàitài liệuliệu,
-- fr.wikisource.org/wiki/Module:Centralizer-s-fr/Documentation {{#invoke:Centralizer-s-fr|read}} fr = French = FrançaisFrançais
{ ['"lang'"] = "fr", ['"project'"] = "wikisource", ['"module_vers'"] = "Centralizer", ['"coder'"] = "[[:s:fr:Utilisateur:Rical|Rical]]", ['"ok'"] = "ok",
['"project_short'"] = "s", ['"tests_lang'"] = "Centralizer/Documentation", ['"template'"] = "ModèleModèle", ['"template_vers'"] = "Centralizer/Documentation",
['"module'"] = "Module", ['"admins'"] = "16", ['"assets'"] = "204", ['"beginon'"] = "20180719", ['"usedfrom'"] = "20180719 ?", },
--
-- fr.wikisource.org/wiki/Module:Auteur2Tpt/Tests {{#invoke:Auteur2Tpt|read}} fr = French = FrançaisFrançais
{ ['"lang'"] = "fr", ['"project'"] = "wikisource", ['"module_vers'"] = "Auteur2Tpt", ['"coder'"] = "[[:s:fr:Utilisateur:Rical|Rical]]", ['"ok'"] = "ok",
['"project_short'"] = "s", ['"tests_lang'"] = "Auteur2Tpt/Documentation", ['"template'"] = "ModèleModèle", ['"template_vers'"] = "Auteur2Tpt/Documentation",
['"module'"] = "Module", ['"admins'"] = "16", ['"assets'"] = "204", ['"beginon'"] = "20180719", ['"usedfrom'"] = "20180719 ?", },
--
-- hu.wikipedia.org/wiki/Modul:Centralizer-w-hu/doc {{#invoke:Centralizer-w-hu|read}} hu = Hungarian = Magyar
{ ['"lang'"] = "hu", ['"project'"] = "wikipedia", ['"module_vers'"] = "Centralizer", ['"coder'"] = "[[:w:hu:SzerkesztőSzerkesztÅ‘:Tacsipacsi|Tacsipacsi]]", ['"ok'"] = "...",
['"project_short'"] = "w", ['"tests_lang'"] = "Centralizer/DokumentációDokumentáció", ['"template'"] = "Sablon", ['"template_vers'"] = "Centralizer/Dokumentáció",
['"module'"] = "Modul", ['"admins'"] = "3", ['"assets'"] = "77", ['"beginon'"] = "20180719 ?", ['"usedfrom'"] = "20180719 ?", },
--
-- vi.wikipedia.org/wiki/Mô đunÄ‘un:Centralizer-w-vi/tàitài liệuliệu {{#invoke:Centralizer-w-vi|read}} vi = Vietnamese = TiếngTiếng ViệtViệt
{ ['"lang'"] = "vi", ['"project'"] = "wikipedia", ['"module_vers'"] = "Centralizer", ['"coder'"] = "[[:w:vi:ThànhThành viênviên:mxn|mxn]]", ['"ok'"] = "...",
['"project_short'"] = "w", ['"tests_lang'"] = "Centralizer/vi tàitài liệuliệu", ['"template'"] = "BảnBản mẫumẫu", ['"template_vers'"] = "Centralizer/vi tài liệu",
['"module'"] = "Mô đunÄ‘un", ['"admins'"] = "3", ['"assets'"] = "77", ['"beginon'"] = "20180719 ?", ['"usedfrom'"] = "20180719 ?", },
-- Projects : MediaWikis wikidata wikipedia wikisource wikiquote meta test2
-- NOWNOW -- User = 2, Module = 828, Template = 10,
-- In all central wikis, install Dropbox template in Template:CentralDropbox and sortable Table in template in Template:CentralTable
-- { "20170805", "20170807", "todo", "Rical", "S170702ALC", "Ask Lua-coders: Oliv0, Tpt, Od1n, Ayack, Kertraon, Julien1978, Thibaut120094", },
-- { "20170805", "20170807", "todo", "Rical", "S170702ALC", "Ask Lua-coders: Zolo, Zebulon84, Hlm Z., Cantons-de-l'Est, Daehan", },
}
function activity.describe_central_libraries(t) -- Central libraries descriptions, activity_display_central_libraries_title
local memo = viewers.save_configs("activity.describe_central_libraries") -- Save global configuration before eventual changes.
local t = t or "\n* <b>activity.describe_central_libraries()</b> Monitor central libraries descriptions." -- t or
local tab_view = { -- Group datas and options for a table view with lines and columns.
test_group = modes.central_libraries, -- List of subtasks to monitor.
title_memo = "activity_display_central_libraries_title", -- "activity.describe_central_libraries() Monitor central libraries descriptions",
-- headers = "activity_monitor_central_libraries_headers", -- " Name; Description of the library ",
headers = " Name; Description of the library ",
headers_class = "wikitable alternative center sortable",
rowGroup = {},
-- track_on == "details",
}
t = t .. tableview.new(tab_view) -- Runs tests cases and formats a table view with lines and columns.
viewers.restore_configs(memo, "activity.describe_central_libraries") -- Restore global configurations after eventual changes.
return t
end
 
activity.wikis_names = { -- see mw:Extension:WikimediaIncubator
["b"] = "wikibooks", ["cm"] = "commons", ["meta"] = "meta", ["mw"] = "MediaWiki", ["d"] = "wikidata",
["n"] = "wikinews", ["p"] = "wiki", ["q"] = "wikiquote", ["s"] = "wikisource",
["species"] = "species", ["t"] = "wiktionary", ["test"] = "test", ["test2"] = "test2",
["v"] = "wikiversity", ["w"] = "wikipedia", ["wm"] = "wikimedia", ["y"] = "wikivoyage",
} -- activity.wikis_names
-- see https://fr.wikisource.org/wiki/Spécial:Interwiki
-- see https://www.MediaWiki.org/wiki/Special:Interwiki
-- see https://fr.wikisource.org/wiki/Sp%C3%A9cial:Matrice_des_sites
activity.kiwis_names = {
["commons"] = "cm", ["MediaWiki"] = "mw", ["meta"] = "meta", ["species"] = "species", ["wikidata"] = "d",
["test"] = "test", ["test2"] = "test2", ["wiki"] = "p", ["wikibooks"] = "b",
["wikimedia"] = "wm", ["wikinews"] = "n", ["wikipedia"] = "w", ["wikiquote"] = "q",
["wikisource"] = "s", ["wikiversity"] = "v", ["wikivoyage"] = "y", ["wiktionary"] = "t",
}
 
activity.proto_version = "Centralizer-s-fr"
activity.local_version = "Centralizer-s-fr" -- default Patrom:Central
 
activity.coders_langs_modules = { -- List to report of Module:Centralizer for 'Begin to use' 7 central modules, 7 coders, 7 projets, 7 langs to get.
-- br.wikisource.org/wiki/Modulenn:Centralizer-s-br/doc {{#invoke:Centralizer-s-br|read}} fr = Breton = Breton = Breitz
{ ["lang"] = "br", ["project"] = "wikisource", ["module_vers"] = "Centralizer", ["coder"] = "[[:s:br:Implijer:VIGNERON|VIGNERON]]", ["ok"] = "ok",
["project_short"] = "s", ["tests_lang"] = "Centralizer/Documentation", ["template"] = "Patrom", ["template_vers"] = "Centralizer",
["module"] = "Modulenn", ["admins"] = "16", ["assets"] = "236", ["beginon"] = "20180719 ?", ["usedfrom"] = "20180719 ?", },
--
-- de.wikisource.org/wiki/Modul:Centralizer/Doku {{#invoke:Centralizer-s-de|read}} de = German = Deutsch
{ ["lang"] = "de", ["project"] = "wikisource", ["module_vers"] = "Centralizer", ["coder"] = "[[:s:de:Benutzer:DerFussi|DerFussi]]", ["ok"] = "...",
["project_short"] = "s", ["tests_lang"] = "Centralizer/Dokumentation", ["template"] = "Vorlage", ["template_vers"] = "Centralizer",
["module"] = "Modul", ["admins"] = "16", ["assets"] = "236", ["beginon"] = "20180719 ?", ["usedfrom"] = "20180719 ?", },
-- sur la page de projet je ne vois pas qui d'autre :Hexasoft Tejgad Arkanosis Xfigpower Zebulon84 ;Hlm Z.; Od1n TomT0m Archimëa
-- sur la page de projet je ne vois pas qui d'autre : {{u'|Hexasoft}}, {{u'|Tejgad}}, {{u'|Arkanosis}}, {{u'|Xfigpower}}, {{u'|Zebulon84}},, {{u'|Hlm Z.}}.
-- Je rajoute au hasard {{u'|Od1n}}, {{u'|TomT0m}} et... -- [[Utilisateur:Archimëa|Archimëa]] <
-- en.wikipedia.org/wiki/Module:Centralizer/Documentation {{#invoke:Centralizer-w-en|read}} en = English = English
{ ["lang"] = "en", ["project"] = "wikipedia", ["module_vers"] = "Centralizer", ["coder"] = "[[:w:en:User:Toohool|Toohool]]", ["ok"] = "...",
["project_short"] = "w", ["tests_lang"] = "Centralizer/Documentation", ["template"] = "Template", ["template_vers"] = "Centralizer",
["module"] = "Module", ["admins"] = "0", ["assets"] = "0", ["beginon"] = "20180719 ?", ["usedfrom"] = "20180719 ?", },
--
-- es.wikipedia.org/wiki/Módulo:Centralizers/Documentación {{#invoke:Centralizer-w-es|read}} es = Spanish = español
{ ["lang"] = "es", ["project"] = "wikipedia", ["module_vers"] = "Centralizer", ["coder"] = "[[:w:es:Usuario:Juan_Mayordomo|Juan_Mayordomo]]", ["ok"] = "...",
["project_short"] = "w", ["tests_lang"] = "Centralizer/Documentación", ["template"] = "Plantilla", ["template_vers"] = "Centralizer",
["module"] = "Módulo", ["admins"] = "16", ["assets"] = "236", ["beginon"] = "20180719 ?", ["usedfrom"] = "20180719 ?", },
--
-- es.wikisource.org/wiki/Módulo:Centralizer-s-es/Documentación {{#invoke:Centralizer-s-es|read}} es = Spanish = española
{ ["lang"] = "es", ["project"] = "wikisource", ["module_vers"] = "Centralizer", ["coder"] = "[[:s:es:Usuario:Alex brollo|Alex brollo]]", ["ok"] = "...", -- Usuario:Juan_Mayordomo
["project_short"] = "s", ["tests_lang"] = "Centralizer/Documentación", ["template"] = "Plantilla", ["template_vers"] = "Centralizer",
["module"] = "Módulo", ["admins"] = "22", ["assets"] = "234", ["beginon"] = "20180719 ?", ["usedfrom"] = "20180719 ?", },
--
-- Module br Modulenn, de Modul, en Module, es Módulo, fr Module, hu Modul, vi Mô-đun,
-- Template br Patrom, de Vorlage, en Template, es Modelo, fr Modèle, hu Modell, vi Mẫu,
-- User br Implijer, de Benutzer, en User, es Usuario, fr Utilisateur, hu Használó, vi ngư�i sử dụng,
-- Docum br Documentation, de Dokumentation, en Documentation, es Documentación, fr Documentation, hu Dokumentáció, vi tài liệu,
-- fr.wikisource.org/wiki/Module:Centralizer-s-fr/Documentation {{#invoke:Centralizer-s-fr|read}} fr = French = Français
{ ["lang"] = "fr", ["project"] = "wikisource", ["module_vers"] = "Centralizer", ["coder"] = "[[:s:fr:Utilisateur:Rical|Rical]]", ["ok"] = "ok",
["project_short"] = "s", ["tests_lang"] = "Centralizer/Documentation", ["template"] = "Modèle", ["template_vers"] = "Centralizer",
["module"] = "Module", ["admins"] = "16", ["assets"] = "204", ["beginon"] = "20180719", ["usedfrom"] = "20180719 ?", },
--
-- fr.wikisource.org/wiki/Module:Auteur2Tpt/Tests {{#invoke:Auteur2Tpt|read}} fr = French = Français
{ ["lang"] = "fr", ["project"] = "wikisource", ["module_vers"] = "Auteur2Tpt", ["coder"] = "[[:s:fr:Utilisateur:Rical|Rical]]", ["ok"] = "ok",
["project_short"] = "s", ["tests_lang"] = "Auteur2Tpt/Documentation", ["template"] = "Modèle", ["template_vers"] = "Auteur2Tpt",
["module"] = "Module", ["admins"] = "16", ["assets"] = "204", ["beginon"] = "20180719", ["usedfrom"] = "20180719 ?", },
--
-- hu.wikipedia.org/wiki/Modul:Centralizer-w-hu/doc {{#invoke:Centralizer-w-hu|read}} hu = Hungarian = Magyar
{ ["lang"] = "hu", ["project"] = "wikipedia", ["module_vers"] = "Centralizer", ["coder"] = "[[:w:hu:Szerkesztő:Tacsipacsi|Tacsipacsi]]", ["ok"] = "...",
["project_short"] = "w", ["tests_lang"] = "Centralizer/Dokumentáció", ["template"] = "Sablon", ["template_vers"] = "Centralizer",
["module"] = "Modul", ["admins"] = "3", ["assets"] = "77", ["beginon"] = "20180719 ?", ["usedfrom"] = "20180719 ?", },
--
-- vi.wikipedia.org/wiki/Mô đun:Centralizer-w-vi/tài liệu {{#invoke:Centralizer-w-vi|read}} vi = Vietnamese = Tiếng Việt
{ ["lang"] = "vi", ["project"] = "wikipedia", ["module_vers"] = "Centralizer", ["coder"] = "[[:w:vi:Thành viên:mxn|mxn]]", ["ok"] = "...",
["project_short"] = "w", ["tests_lang"] = "Centralizer/vi tài liệu", ["template"] = "Bản mẫu", ["template_vers"] = "Centralizer",
["module"] = "Mô đun", ["admins"] = "3", ["assets"] = "77", ["beginon"] = "20180719 ?", ["usedfrom"] = "20180719 ?", },
-- Projects : MediaWikis wikidata wikipedia wikisource wikiquote meta test2
-- NOWNOW -- User = 2, Module = 828, Template = 10,
Ligne 649 ⟶ 1 337 :
local memo = viewers.save_configs("activity.begin_central_modules_support") -- Save global configuration before eventual changes.
local t = t or "\n* <b>activity.begin_central_modules_support()</b> Support the first uses of Central modules."
t = t .. "\n* Local NameSpaces: " .. viewers.ta("Module=828", mw.site.namespaces.Module.name )
-- MUMU : Reports in the CentralManual : if the last argument after the function itself is a table["CSStyle"] == "CSStyle" it change the style of the drop box.
t = t .. viewers.ta("Template=10", mw.site.namespaces.Template.name )
t = t .. viewers.ta("User=2", mw.site.namespaces.User.name )
local tab_view = { -- Group datas and options for a table view with lines and columns.
test_group = activity.coders_langs_modules, -- CLM
rowGroup = {},
form_one_case = function(case) -- Convert a case from test_group to rowGroup.
local mwuri = mw.uri.new()
local hostPort = mwuri.hostPort
local selector = mwuri.hostPort
case = activity.central_module_descriptor(case) -- Begin to adapt the main central module version to a case.
case.lang = tostring(case.lang)
case.project = tostring(case.project)
case.admins = tostring(case.admins)
case.assets = tostring(case.assets)
case.template = tostring(case.template)
case.template_vers = tostring(case.template_vers)
case.module = tostring(case.module)
case.module_vers = tostring(case.module_vers)
case.version = tostring(case.version)
case.page_template = case.template .. ":" .. case.template_vers
case.link_template = "[[" .. case.project_short .. ":" .. case.lang .. ":" .. case.page_template .. "|" .. case.page_template .. "]]"
case.page_module = case.module .. ":" .. case.module_vers
case.link_module = "[[" .. case.project_short .. ":" .. case.lang .. ":" .. case.page_module .. "|" .. case.page_module .. "]]"
-- case.page_doc = case.tests_lang
-- case.page_doc = case.module .. ":" .. case.tests_lang
-- case.link_doc = "[[" .. case.project_short .. ":" .. case.lang .. ":" .. case.module .. ":" .. case.tests_lang .. "|" .. case.tests_lang .. "]]"
case.link_Tests = "[[" .. case.project_short .. ":" .. case.lang .. ":" .. case.module .. ":" .. case.tests_lang .. "|" .. case.tests_lang .. "]]"
return { case.project, case.lang, case.admins, case.assets, case.link_template, case.link_module, case.link_Tests, case.beginon, case.usedfrom, case.coder, case.ok }
end,
title_memo = "activity_support_central_modules_title",
headers = "Project; Language; Admins; Assets; Lien Modèle; Lien Module; Lien Tests; Début; Utilisé depuis; Codeur; OK",
-- activity_support_central_modules_headers = "Project; Language; Admins; Assets; Module version; Link to Tests; Start; Used since; Coder; OK", -- en
}
t = t .. tableview.new(tab_view) -- Runs tests cases and formats a table view with lines and columns.
local langs, coders, projects, versions = {}, {}, {}, {}
for i, case in pairs(activity.coders_langs_modules) do
if (type(case.lang) == "string") then table.insert(langs, case.lang) end
if (type(case.coder) == "string") then table.insert(coders, case.coder) end
if (type(case.project) == "string") then table.insert(projects, case.project) end
if (type(case.module_vers) == "string") then table.insert(versions, case.module_vers) end
end
local counter = lua_table.count_values(coders, "lang")
t = t .. "\n* Count begin coders: " .. viewers.ta("n", lua_table.level_count(counter) ) .. lua_table.rough_view(counter)
local counter = lua_table.count_values(langs, "lang")
t = t .. "\n* Count begin langs: " .. viewers.ta("n", lua_table.level_count(counter) ) .. lua_table.rough_view(counter)
local counter = lua_table.count_values(projects, "lang")
t = t .. "\n* Count begin projects: " .. viewers.ta("n", lua_table.level_count(counter) ) .. lua_table.rough_view(counter)
local counter = lua_table.count_values(versions, "lang")
t = t .. "\n* Count begin versions: " .. viewers.ta("n", lua_table.level_count(counter) ) .. lua_table.rough_view(counter)
viewers.restore_configs(memo, "activity.begin_central_modules_support") -- Restore global configurations after eventual changes.
return t
end
 
function activity.begin_central_modules_support(t) -- Supports the first uses of Central modules.
local memo = viewers.save_configs("activity.begin_central_modules_support") -- Save global configuration before eventual changes.
local t = t or "\n* <b>activity.begin_central_modules_support()</b> Support the first uses of Central modules."
-- p.ModuleNS = mw.site.namespaces.Module.name .. ":" -- translate Module: in other languages ONLY FOR local site
t = t .. "\n* Local NameSpaces: " .. viewers.ta("Module=828", mw.site.namespaces.Module.name )
Ligne 655 ⟶ 1 400 :
t = t .. viewers.ta("User=2", mw.site.namespaces.User.name )
local tab_view = { -- Group datas and options for a table view with lines and columns.
test_group = activity.coder_lang_modulecoders_langs_modules, -- CLM
rowGroup = {},
form_one_case = function(case) -- Convert a case from test_group to rowGroup.
Ligne 682 ⟶ 1 427 :
end,
title_memo = "activity_support_central_modules_title",
headers = "Project; Language; Admins; Assets; Lien ModèleModèle; Lien Module; Lien Tests; DébutDébut; UtiliséUtilisé depuis; Codeur; OK",
activity_support_central_modules_headers = "Project; Language; Admins; Assets; Module version; Link to Tests; Start; Used since; Coder; OK", -- en
}
t = t .. tableview.new(tab_view) -- Runs tests cases and formats a table view with lines and columns.
local langs, coders, projects, versions = {}, {}, {}, {}
for i, case in pairs(activity.coder_lang_modulecoders_langs_modules) do
if (type(case.lang) == "string") then table.insert(langs, case.lang) end
if (type(case.coder) == "string") then table.insert(coders, case.coder) end
Ligne 794 ⟶ 1 539 :
ftd = ftd .. "activity.MW_Versions_report;activity.phabricator_tasks_report;"
ftd = ftd .. "central_library.binded_in;central_library.new;"
ftd = ftd .. "datas.get_image;datas.get_item;datas.get_item_report;datas.property;onedropdrop_box.new;"
ftd = ftd .. "events.add_cat;events.add_cat_group;events.add_err;events.add_wng;events.all_kinds_test;"
ftd = ftd .. "events.categories_lister;events.errors_lister;events.gener_categories;"
Ligne 810 ⟶ 1 555 :
ftd = ftd .. "version descriptor;versions.all_G_and_loaded_list;versions.get_one_module_or_library;versions.setup_central_libraries;"
ftd = ftd .. "viewers.day_to_stamp;viewers.day_to_UTC;viewers.discreet_main_version;viewers.doc_group;viewers.doc_internal;"
ftd = ftd .. "viewers.doc_module;viewers.doc_page;viewers.doc_section;viewers.form99content;viewers.form99page;viewers.phab_task;"
ftd = ftd .. "viewers.form99user;viewers.form9contenttranslate_content;viewers.form9entranslate_lang;viewers.form9pagetranslate_page;viewers.form9usertranslate_user;viewers.form9user_testtranslate_user_test;"
ftd = ftd .. "viewers.form_image;viewers.is_in;viewers.is_in_sp;viewers.main_view;viewers.restore_configs;lua_table.rough_view;"
ftd = ftd .. "lua_table.rough_view_test;viewers.save_configs;viewers.save_restore_balance_report;viewers.simple_list;"
Ligne 923 ⟶ 1 668 :
local one_autodoc = "<br>[[= = = %1 = = =]]<br> "
for i, lib_func in pairs(activity.sorted_to_autodoc) do -- form one_autodoc
t = t .. viewers.form9usertranslate_user(one_autodoc, lib_func.libname_funcname)
end
t = string.gsub(tostring(t), "= = =", "===")
Ligne 965 ⟶ 1 710 :
{ "20170915", "20170917", "todo", "Rical", "S170915ajb", "phabtask extend tests_groups.subdiffs() to lua_table.trees.all_jobs", },
{ "20170910", "20170914", "todo", "Rical", "S170910wpw", "Use: wikidata = { property = 'P84',... syntax like {{Wikidata}} for wikidata", },
-- see 4.2 ParamètreParamètre "wikidata" https://fr.wikipedia.org/wiki/Aide:Infobox_en_Lua#Param.C3.A8tre_.22wikidata.22
{ "20170910", "20170914", "todo", "Rical", "S170910bob", "Create a button object for boxes, like drop_box with: n, states, shapes, keywords, colors", },
{ "20170828", "20170905", "todo", "Rical", "S170828dut", "delete unused tracker in _G : ARGS, IAMO, MAMO, tests_groups", },
Ligne 980 ⟶ 1 725 :
{ "20170811", "20170815", "todo", "Rical", "S170718FLI", "Propose Firstname, Lastname and Initial in wikidata", },
{ "20170811", "20170815", "todo", "Rical", "S170718FLI", "lua_table.4_diffs(A, B) Detect 4 first diffs of tables A/B and B/A, in-deep/in-next with limits", },
{ "20170811", "20170815", "todo", "Rical", "S170811uMD", "After 'Begin' fully use Module:drop_box from es.wikipedia.org/wiki/MóduloMódulo:Lista_plegable", },
-- S170718FLI : in https://www.wikidata.org/wiki/Wikidata:Property_proposal/Person#Noms().", },
-- S170718FLI : T53657 is Close : Firstname and Lastname properties
Ligne 1 143 ⟶ 1 888 :
return t
end -- t = function activity.central_subtasks_report(t) -- Report the current state of subtasks, See "NOW".
 
 
activity.phabricator_tasks_Group = { -- toDoc
-- Importance: Important
{ 100, "Important", "20200221", "T245812", 0, "Open", "When Lua coders try to create or to modify a Module in MW 1.35.0-wmf.20 (7ba3cac) interface do not permit that", },
-- { "importance", "updateday", "TASKNBR", 0, "State", "Synthetic description of the phabricator task", }, -- Last update headers
-- T245812 : Status Open Stalled Needs Triage Reedy, Subscribers = Liuxinyu970226, Rical open tow days ago, Aklaper Asigned to None
{ "Important", "20190109", "T168726", 0, "Triage", "Create syntax documentation page for Special:PageData.", },
-- T245812 : Rical added a comment.Sat, Feb 22, 10:00 Comment Actions. You has changed the task status from Stalled to Open.
{ "Important", "20190108", "T107595", 0, "Assigned", "[RFC] Multi-Content Revisions", },
-- T245812 : now 22/02/2020 19:30 Sorry : I meant : You has changed the task status from Open to Stalled. That means all active Lua coders are stopped in their works.
-- CCicalese_WMF removed a subtask: : Introduce a ContentStore service to allow certain types of content to not be stored as serialized blobs..
--[[ T245812 : before : That means all active Lua coders are stopped in their works.
{ "Important", "20181231", "T88416", 0, "Open", "Provide global user talk page (header)", },
discussion avec Tpt : sujet : Peux tu tester une modification de module pour confirmer ou non la tache Phabicator T245812 que j'ai créée
{ "Central", "20181203", "T121470", 0, "Open", "Central Global Repository for Templates, Lua modules, and Gadgets", },
Il y a deux jours j'ai essayé de modifier mon Module:Centralizer mais je n'ai pas pu parce que l'interface n'a pas plus de bouton pour valider la modif
{ "Important", "20181201", "T107119", 0, "Open", "Provide a Lua method mw.loadTemplateData()", }, -- See PageData
Mais aussi il n'a pas les couleurs habituelles comme si le HTML n'était pas interprété.
{ "Important", "20181005", "T173207", 0, "Triage", "Implement Lua alternative to {{int:Lang}} / wgUserLanguage", },
Jai donc créé la tache "T245812", 0, "Open", "When Lua coders try to create or to modify a Module in MW 1.35.0-wmf.20 (7ba3cac) interface do not permit that"
{ "Important", "20180805", "T4085", 0, "Open", "Add a {{USERLANGUAGE}}/{{USERLANG}} magic word", },
Je viens d'essayer sous Mac OS et Windows, c'est pareil !
{ "Important", "20180626", "T135845", 0, "Assigned", "Convert any module as central or centralisable", },
Pourrais tu essayer sur un module de modifier un détails dans un commentaire et décrire ton ou tes test(s) en me répondant ici ou mieux, en cas de confirmation du problème) directement dans la tache. Merci d'avance.
-- T135845 : Central modules must be really multi wikis.
Message OK par la page utilisateur ... à suivre
-- T135845 : For this goal they need to join a standard template with the central module.
 
-- T135845 : But the MediaWiki security prohibit them in Lua modules. Then the deployment must do these.
Message to Aklapper : a good way to confirm or infirm this task is to very simply it is to try yourse :
-- Known Importance: ToCreate, Triage, Stalled, Open, Assigned, Resolved, Close, Declined, Declined, Obsolete, Invalid. Assigned To None = Triage
1) follow the link to edit of my Module:Centalizer
--
2) change a small part of a comment
{ "Important", "20180603", "T85461", 0, "Resolved", "Lua error: too many language codes requested", },
3) Try to valid your own change
4) repport your result in the task T245812
{ "Important", "20180412", "T185557", 0, "Open", "Create the easy function mw.wikibase.property('P21', 'Q8023', 'en')", },
5) change or not the status of the task
{ "Important", "20180413", "T142093", 0, "Open", "Decide how to do usage tracking for strings_c used to lookup entities (page titles, external ids, …)", },
 
{ "Important", "20170921", "T176362", 0, "Declined", "Implement ClassNameTests in Scribunto to enhance central modules stability", },
Rical added a comment.Sun, Feb 23, 08:00
{ "Important", "20170907", "T68051", 1, "Open", "Central modules need the user language to display errors and category names", },
--]]
{ "Important", "20170727", "T149532", 0, "Assigned", "Why Multi-Content-Revisions? Use cases and requirements.", },
{ 102, "Important", "20180412", "T185557", 0, "Open", "Create the easy function mw.wikibase.property('P21', 'Q8023', 'en')", },
-- Known Importance: ToCreate, Triage, Stalled, Open, Assigned, Resolved, Close, Declined, Declined, Obsolete, Invalid. Assigned To None = Triage
{ 106, "Important", "20170703", "T20170703", 0, "ToCreate", "Standardize content, page and user langages availability", },
-- T149532 Why Multi-Content-Revisions? Use cases and requirements. Jul 27 2017, 00:40 Assigned: daniel
{ "Important", "20170713", "T163923", 0, "Resolved", "Create Special:PageData as a canonical entry point for machine readable page data.", },
{ "Important", "20170703", "T20170703", 0, "ToCreate", "Standardize content, page and user langages availability", },
-- T20170703 : Rename T68051 : "Central modules need the user language to display errors and category names"
-- T20170703 : Standardize content, page and user langages availability
-- T20170703 : Content, page and user langages are not available nor defined in the same ways for scribunto modules.
-- T20170703 : That complicate modules which use them. Similar ways could enhance efficiency and reduce the development tasks.
{ 110, "Important", "20170325", "T20170325", 0, "ToCreate", "Centralize and share central datas about central modules", },
-- T20170325 : Centralize datas as MediaWiki versions installations in each lang-project, uses of central modules (helpers, projects, languages ...).
{ 114, "Important", "2017030920180626", "T159322T135845", 0, "OpenAssigned", "CentralConvert categoriesany andmodule alerts foras central modulesor centralisable", },
-- T135845 : Central modules must be really multi wikis.
-- T135845 : For this goal they need to join a standard template with the central module.
-- T135845 : But the MediaWiki security prohibit them in Lua modules. Then the deployment must do these.
{ 116, "Important", "20160822", "T53660", 0, "Open", "Detect the edit state for modules which help users and helpers", },
{ 118, "Important", "20180806", "T4085", 0, "Open", "Add a {{USERLANGUAGE}}/{{USERLANG}} magic word", },
{ 118, "Important", "20181005", "T173207", 0, "Open", "Implement Lua alternative to {{int:Lang}} / wgUserLanguage", },
{ 119, "Important", "20180710", "T107119", 0, "Open", "Provide a Lua method mw.loadTemplateData()", }, -- See PageData
{ 120, "Important", "20170713", "T163923", 0, "Resolved", "Create Special:PageData as a canonical entry point for machine readable page data.", },
-- T163923: Permit at modules to change PageData (for stat, modules versions, mw versions...).
{ 122, "Important", "20170727", "T149532", 0, "Resolved", "Why Multi-Content-Revisions? Use cases and requirements.", },
{ 124, "Important", "20180817", "T168726", 0, "Open", "Create syntax documentation page for Special:PageData.", },
{ 126, "Important", "20170907", "T68051", 1, "Open", "Central modules need the user language to display errors and category names", },
{ 132, "Important", "20180603", "T85461", 0, "Resolved", "Lua error: too many language codes requested", },
-- T85461 https://meta.wikimedia.org/wiki/Module:Assemble_multilingual_message
-- T85461 https://meta.wikimedia.org/w/index.php?title=Module:Assemble_multilingual_message&action=edit#mw-ce-l46
{ 134, "Important", "20170309", "T159322", 0, "Open", "Central categories and alerts for central modules", },
-- T159322 : Does the community agree to implement central categories and alerts for central modules?
-- T159322 : This enhances the efficiency of the detection and the correction of errors, in some ways:
{ 136, "Important", "2017021120160522", "T20170211T85419", 10, "ToCreateOpen", "In mw.language.fetchLanguageNames( 'fr' ) someUser languagesgroups namesshould arebe notexposed into FrenchScribunto", },
-- T20161220 : ToDo: test: local getContentLanguage = mw.language.getContentLanguage().code -- default content_lang
{ "Important", "20160822", "T53660", 0, "Open", "Detect the edit state for modules which help users and helpers", },
-- T163923: Permit at modules to change PageData (for stat, modules versions, mw versions...).
{ "Important", "20160522", "T85419", 0, "Open", "User groups should be exposed to Scribunto", },
-- T85419: to adapt errors and warning for administrators or modules coders
{ 138, "Important", "2017012120180413", "T122752T142093", 10, "Open", "#invokeDecide how to do notusage recordtracking thefor mainstrings_c moduleused into lookup entities (page titles, external ids, package.loaded…)", },
{ 140, "Important", "20170211", "T20170211", 1, "ToCreate", "In mw.language.fetchLanguageNames( 'fr' ) some languages names are not in French", },
-- T20161220 : ToDo: test: local getContentLanguage = mw.language.getContentLanguage().code -- default content_lang
{ 146, "Important", "20170921", "T176362", 0, "Declined", "Implement ClassNameTests in Scribunto to enhance central modules stability", },
-- T176362 : phabtask : Implement getTestProvider in Scribunto to enhance central modules stability
-- T176362 : phabtask : proposed functions in MediaWiki:
-- T176362 : phabtask : mw.getTestProvider(mw_tests, nmaxi) -- To initialise, to limit all tests in time and to limit cases to nmaxi.
-- T176362 : phabtask : mw.ClassNameCase(case, n), used inside mw.getTestProvider() to run each test case of number 1 to nmaxi.
-- T176362 : phabtask : The case object contains fields: count, OK="OK"..., n, name, type, args{}, expect{}, NameTest{}, func(), provide(), run()
-- T176362 : phabtask : Functions used in central modules: tests_groups.getTestProvider(), .init(), .gettests_groups(), .getcases(), .subdiffs(), .normalcase(case), viewers.translate_lang()
-- T176362 : phabtask : In the tests_groups library, tests cases are in recursive groups of groups of cases. Groups levels: main module, sub modules or libraries, functions and their tests cases.
{ 148, "Important", "20170121", "T122752", 1, "Open", "#invoke do not record the main module in package.loaded", },
-- T122752: 20161202 18:25 See example https://fr.wikisource.org/wiki/Module:Phab.TestpackG : detect "in " "_G" or package.loaded
-- T122752: 20160102 22:46 See example https://fr.wikisource.org/wiki/Module:TestRequire
-- T122752: To locate and to debug the bug T122752 in time, Rical lists here the versions of fr.wikisource.org/wiki/Module:ControlArgs1
-- T122752: Oldest research of "Replace the missing of record of the module by" : ModuleControlArgs 6 tools...lua 2016-01-16
-- T122752: (actu | diff) 2015-11-25T11:43:11‎11‎ Rical (discussion | contributions | bloquer)‎ . . (261 314 octets) (-3 519)‎ . . (The versions management seems OK) (annuler)
-- T122752: (actu | diff) 2015-11-28T09:55:37‎37‎ Rical (discussion | contributions | bloquer)‎ . . (267 472 octets) (+5 809)‎ . . (find_main_module)
-- T122752: (actu | diff) 2015-12-01T14:18:22‎22‎ Rical (discussion | contributions | bloquer)‎ . . (268 956 octets) (+1 614)‎ . . (find_main_module OK ?)
-- T122752: (actu | diff) 2016-01-18T02:09:45‎45‎ Rical (discussion | contributions | bloquer)‎ . . (319 599 octets) (+10 183)‎ . . (translate library.i18n first)
-- T122752: 2016-01-02 phabricator: T122752 Rical created this task. Sat, Jan 2, 2016-01-02 23:08
{ 156, "Important", "20180508", "T63958", 0, "Assigned", "Use existing $dateFormats to format dates on Wikidata", },
{ 160, "Important", "20170521", "T67687", 0, "Resolved", "mw.load_data can be used to pass data between #invoke's by reading frame arguments", },
--
-- Known Importance: ToCreate, Triage, Stalled, Open, Assigned, Resolved, Close, Declined, Declined, Obsolete, Invalid. Assigned To None = Triage
--
-- Importance: Central
{ 202, "Central", "20180701", "T198107", 0, "Open", "Begin to use central modules in 7 wikis S180625btu", },
{ 206, "Central", "20171106", "T20171106", 0, "ToCreate", "Lua-coders could better report bugs with recent MediaWiki versions for each wiki", },
{ 210, "Central", "2018071820181002", "T52329T121470", 0, "StalledOpen", "WeCentral needGlobal a common repositoryRepository for ScribuntoTemplates, Lua modules, and templatesGadgets", },
{ 214, "Central", "2018031220180718", "T41610T52329", 0, "OpenStalled", "ScribuntoWe shouldneed supporta common repository for Scribunto globalmodules moduleand invocationstemplates", },
{ 218, "Central", "20180312", "T41610", 0, "Open", "Scribunto should support global module invocations", },
-- T41610: subscriber: kaldari 2017-05-20, 16:03
-- T41610: You can include Lua modules in extensions and then register them with Scribunto as global modules.
Ligne 1 213 ⟶ 1 977 :
-- T41610: Wikibase/client/includes/DataAccess/Scribunto/mw.wikibase.entity.lua
-- T41610: Wikibase/client/includes/DataAccess/Scribunto/mw.wikibase.lua
{ 224, "Central", "20170301", "T20170301", 0, "ToCreate", "Phabricator tasks states for easier versions management of modules", },
-- datas to get for each query: Task number, title, state, priority, Authored By and date, Last event date, number of subscribers, Assigned.
{ 228, "Central", "20170225", "T20170225", 0, "ToCreate", "? Report MediaWiki changes for the versions management, and use {{subst:}}", },
-- T20170225: The gerrit team needs the date of a bug and the dates of mw install in each wiki to debug mw.
-- T20170225: We could detect, record and report all date-time changes of MediaWiki, for some weeks.
-- T20170225: We could use {{subst:}} in 2 ways. See https://www.MediaWiki.org/wiki/Manual:Substitution
-- T20170225: duplicate of T121470: Central Global Repository for Templates, Lua modules, and Gadgets.
{ 230, "Central", "20170314", "T1238", 0, "Close", "Central Code Repository for code used on wikis (Templates, Lua modules, Gadgets)", },
--
-- Importance: Other
{ 302, "Other", "20180320", "T147618", 0, "Open", "Localize one or more major WMF software products related to new editor retention to hu.wikipedia", },
{ 304, "Other", "20180320", "T132308", 0, "Open", "Internationalise citoid dates", },
{ 306, "Other", "20180320", "T142906", 1, "Close", "Data access in user language doesn't obey the uselang get parameter", },
{ 308, "Other", "20180106", "T104109", 0, "Close", "No syntax highlight for large JavaScript/CSS/Lua/API pages", },
{ 310, "Other", "20170427", "T162877", 0, "Close", "CodeEditor default changed if you have never used the toggle", },
{ 312, "Other", "20170427", "T161875", 0, "Close", "CodeEditor is always enabled when starting an edit on a page containing code", },
-- T161875: Actual: It is enabled, though mw.user.options.get('usecodeeditor') correctly gives 0.
{ 314, "Other", "20180412", "T85412", 0, "Open", "The formatPropertyValues needs an option to format data from date-time, angle or geographic coordinates", },
{ 316, "Other", "20170912", "T156048", 0, "Open", "Add syntax highlighting to wiki diff of source code pages (like Gerrit)", },
{ 318, "Other", "20180710", "T107119", 0, "Open", "Provide a Lua method mw.loadTemplateData()", },
{ 320, "Other", "20170524", "T166202", 0, "Open", "Strings defined as long comments give a Lua modules syntax error", },
--
-- Other, ToCreate or not
{ 321, "Other", "20170213", "T20170213", 0, "ToCreate", "Some languages have not French names in French language", },
{ 322, "Other", "20151215", "T20151215", 0, "ToCreate", "In some cases the box of the drop_box is not displayed", },
-- T20151215: .. "\n------ " -- This code interact with drop_box and debug the task T20151215 2016-11-13 17:57.
-- T20151215: if there is "\n------ " before editDocBox and then the editDocBox <div> is only a bar of 1 em hight, and its content is after the <div>. Rical 2016-10-24 08:15.
{ 326, "Other", "20160616", "T20160616", 0, "ToCreate", "? Add module and library types in scribunto ?", },
-- T20160616: get.is_library = ( true ) -- true if the object is a library
{ 328, "Other", "20171007", "T155624", 0, "Open", "Special:Version not showing SHA info for MediaWiki version on fr.wikisource", },
-- UTC-20170407-20:21 : reported in T155624 Special:Version not showing SHA info for MediaWiki version on fr.wikisource
--
-- Known Importance: ToCreate, Triage, Stalled, Open, Assigned, Resolved, Close, Declined, Declined, Obsolete, Invalid. Assigned To None = Triage
--
-- Importance: Obsolete: Do not create, these functions come from mw... libraries.
{ 428, "Obsolete", "20161022", "T20161022", 0, "ToCreate", "? Scribunto functions are out of package.loaded", },
-- T20161022: -- Found in Lua_reference_manual but not in Module:Centralizer-s-fr :
-- T20161022: -- 2016-10-22 15:45 : versions.all_G_and_loaded_list() : Variables in _G global space without libraries and modules in packageloaded. ,
Ligne 1 254 ⟶ 2 016 :
-- assert = function , ipairs = function , rawequal = function , getmetatable = function , rawset = function , pcall = function , type = function ,
-- selector = function , rawget = function , tonumber = function , error = function , setmetatable = function
{ 430, "Obsolete", "20170324", "T133498", 1, "Declined", "Detect and extend known title <-> entity links in a semi-automatic way", },
{ 432, "Obsolete", "20161128", "T151715", 0, "Invalid", 'string.gsub( s, "%%1", repl) fails as "invalid capture index"', },
{ 434, "Obsolete", "20170110", "T154769", 0, "Invalid", 'When "Erreur Lua : attempt to call a string value", where?', },
-- T154769: Rical 2017-01-08 My main mistake was to write xpcall() where pcall() is right.
-- T154769: Tests are there https://fr.wikisource.org/wiki/Module:Phab.T154769.Test
-- T154769: versions.anti_crash() preserve pages against residual errors which can crash pages.
{ 436, "Obsolete", "20170202", "T155898", 0, "Invalid", "Preview change from external local editors", },
-- T155898: OK, I will continue to search in JEdit plugins. Perhaps I will ask them an adapted solution.
{ 438, "Obsolete", "20160424", "T67507", 0, "Resolved", "It should be possible to get entity id from page title", },
{ 440, "Obsolete", "20160524", "T119978", 0, "Invalid", "Get name and record-time of all modules to better manage their versions", },
{ 442, "Obsolete", "20160813", "T75460", 0, "Resolved", "[Story] Make Lua functions default to the user's language on multilingual wikis", },
} -- activity.phabricator_tasks_Group = {...}
 
Ligne 1 277 ⟶ 2 039 :
t = t .. "\n* 8) <b>Who would benefit + your name.</b> 9) <b>Current status of the discussion</b>"
t = t .. "\n* 10) <b>Links</b> 11) <b>Your name linked to your MediaWiki URL, or profile elsewhere on the internet</b>"
--[[ T245812
 
Fill out at least the following fields:
1) Title: A short one-sentence summary that explains the problem (not your suggested solution).
Good: "Selecting gender is not functional."
Bad: "Software crashes."
0) Assigned to: You should ignore this field: Developers will set an assignee when they plan to work on the task.
Description: Full details of the issue, giving as much detail as possible. This should include:
For bugs:
2) Steps to Reproduce: Minimized, easy-to-follow steps that will trigger the described problem. Include any special setup steps.
 
Example:
Go to https://en.wikipedia.org with Internet Explorer version 10.0;
Make sure you are logged in;
Select "My Preferences" menu;
Go to "Gender" and select female gender from box list;
Click "Save" button.
 
3) Actual Results: What the application did after performing the above steps.
 
Example:
 
"There is no female gender in front of my user name."
 
4) Expected Results: What the application should have done, if there was no bug.
 
Example:
 
"My gender is shown in front of my user name."
 
For feature requests:
5) A description of what you would like to achieve, and why. Explain what you hope the feature will solve (the actual underlying problem) along with specific examples; but do not demand a specific solution, as there might be other/better solutions. A user story is an effective way of conveying this.
 
Example:
 
"As a new editor, I would like to be acknowledged for my contribution to the project, so that I feel welcomed and valued"
 
6) Please also provide any other information that might be useful, such as:
the web browsers, skins, or computer systems you've seen the bug on;
links or diffs to one or more pages where you encountered the bug; or
whether the problem appears every time, only occasionally, only on certain pages, or only in specific circumstances.
7) To attach a log file or screenshot (but make sure that no confidential data is included or shown), click the Upload File button (a cloud with an arrow) in the tool bar of the Description field.
8) Select the tags (project(s)) in which you've found the bug:
Projects are how developers find tasks to work on. To identify the right project(s), use the search function (in the top right) to find its description.
This could be for example the MediaWiki-General-or-Unknown project for the wiki software itself, or Wikimedia-Site-Requests for configuration changes on a Wikimedia site (see Selecting projects).
9) Subscribers: If you know specific users who will be interested in getting notified of this task you can add them here. Otherwise, ignore this field.
 
10)Check if your report is complete, then press the "Create Task" button. Your report will now be in the database. This allows somebody interested in the report to look at it and potentially work on it.
--]]
local mwtitle = mw.title.getCurrentTitle()
local tasks_Group = activity.phabricator_tasks_Group
Ligne 1 315 ⟶ 2 126 :
task.title = viewers.usual_color(task.title, usual)
if task.detect == 1 then task.title = task.title .. " - ( detected state )" end
-- headers = "Importance; modified on; Task; Status; Title" -- "Importance, modifiéemodifiée le, TâcheTâche, Etat, Titre"
local importance = task.importance .. viewers.styles_color_discreet(" on " .. task.lastdate)
return { importance , task.phab, task.status, task.title, } -- task.sort, task.shortext }
Ligne 1 388 ⟶ 2 199 :
}
-- from MediaWiki 1.30.0-wmf.4 (3248a17) 22:41, 7 June 2017
-- See ISO 8601 time format like : 1977-04-22T01:00:00-05:00 (5 heures de décalagedécalage) = 1977-04-22T06:00:00Z local time
function tab_view.form_one_case(version, all_cases) -- Convert a case from test_group to rowGroup.
local example =
{ site = "fr.wikisource", verstime = "2017-12-15T23:35:09", versid = "1.31.0-wmf.16 (a31d45c)", seen_time = "2018-01-12T07:43:00",
task = "T155624", title = "In wikisource/SpécialSpécial:Version:wmf.15 (0953700) but Central module mw = 1.31.0-wmf.16 (a31d45c) seen by Rical.", }
if version.task then version.versid = version.versid .. "<br/>" .. viewers.phab_task(version.task, version.task) end
if version.title then version.seen_time = version.seen_time .. "<br/>" .. version.title end
Ligne 1 427 ⟶ 2 238 :
code = code .. "\n* versions.MediaWiki_Versions = {"
for i, version in ipairs(MediaWiki_Versions) do
-- See ISO 8601 time format like : 1977-04-22T01:00:00-05:00 (5 heures de décalagedécalage) = 1977-04-22T06:00:00Z local time
code = code .. '<br/> { site = "' .. version.site
code = code .. '", verstime = "' .. version.verstime
Ligne 1 510 ⟶ 2 321 :
-- datas = {} -- already declared by Scribunto, see central_library.new() -- Record a library in package.loaded
 
datas.default_item = datas.default_item or "Q307Q11758" -- KeepLudwik GaliléeLejzer Zamenhof (Q307Q11758)
 
datas.i18n = {} -- Translations for datas library
datas.i18n.de = {
-- Zum ÜbersetzenÃœbersetzen sind die Referenzsprachen Englisch und FranzösischFranzösisch.
-- ÜbersetzeÃœbersetze keine Teile wie diese: <b>%1</b> ; <b>%1</b> = <b>%2</b> (%3) ; <code>Q535</code> ; <br/> ; \n* ; _G.
datas_Wikidata_header = "Daten: ",
datas_known_Datas_header = "Bekannte Daten: ",
datas_sougth_Datas_header = "GewünschteGewünschte Daten: ",
datas_needed_Datas_header = "Daten benötigtbenötigt: ",
datas_Wikidata_wikibase_err = "Fehler: Wikibase ist nicht verfügbarverfügbar.",
datas_Wikidata_getEntity_err = "Fehler: getEntity Wikidata ist nicht verfügbarverfügbar.",
datas_Wikidata_getEntityObject_err = "Fehler: Der Eintrag <b>%1</b> von Wikidata wurde nicht gefunden.",
datas_Wikidata_property_err = "Fehler: Die Wikidata <b>%1</b> Eigenschaft wurde nicht gefunden.",
Ligne 1 528 ⟶ 2 339 :
datas_Wikidata_cat_err = "Modul mit internem Fehler", -- modes_no_source_arguments_cat
datas_structured_data_txt = 'Wikidata daten',
datas_Wikidata_any_page_title = "Wikidata fürfür eine andere Seite:",
datas_Wikidata_details_test_title = "Tests und Daten, die aus Wikidata importiert wurden",
datas_Wikidata_arbitrary_tests_title = "datas.get_item() Wikidata Test beliebiger Zugriff",
datas_Wikidata_arbitrary_access_text = "Wikidata fürfür einen Titel: ",
datas_Wikidata_time_details_title = "datas.Wikidata_time_details{} Wikidata Zeiteigenschaften fürfür weitere Details",
datas_update_Special_PageData_title = "datas.update_PageData() Partager des DATA entre modules en Special:PageData",
datas_update_Special_PageData_header = "Ort; Versionszeit; Versionskennung; Stunde der Sicht",
datas_get_item_report_title = "datas.get_item_report() Gibt mw.wikibase-Daten fürfür die Seite oder einen anderen Artikel aus.",
-- Verschiedene Nachrichten und Fehler
datas_no_args_Wikidata_err = "Interner Fehler: Modul ohne Wikidata-Argumenttabelle.",
Ligne 1 572 ⟶ 2 383 :
} -- datas.i18n.en
datas.i18n.es = {
-- Para traducir, los idiomas de referencia son inglésinglés y francésfrancés.
-- Para traducir, no traduzca partes como estas: <b>%1</b> ; <b>%1</b> = <b>%2</b> (%3) ; <code>Q535</code> ; <br/> ; \n* ; _G.
-- Wikidata
args_known_country = "EspañaEspaña", -- Spanish
args_known_flag = "Flag_of_Spain.svg", -- Flag of Spain
args_known_monument = "MADRID_100206_UDCI_023.jpg", -- Puerta del Sol
Ligne 1 583 ⟶ 2 394 :
datas_sougth_Datas_header = "Datos deseados: ",
datas_needed_Datas_header = "Datos necesarios: ",
datas_Wikidata_wikibase_err = "Error: Wikibase no estáestá disponible.",
datas_Wikidata_getEntity_err = "Error: getEntity Wikidata no estáestá disponible.",
datas_Wikidata_getEntityObject_err = "Error: Elemento <b>%1</b> de Wikidata no se encuentra.",
datas_Wikidata_property_err = "Error: La propiedad <b>%1</b> de Wikidata no se encuentra.",
datas_Wikidata_error_err = "Error Wikidata : <b>%1</b> ",
datas_Wikidata_cat_err = "MóduloMódulo con error interno", -- modes_no_source_arguments_cat
datas_structured_data_txt = 'Datos de Wikidata',
datas_Wikidata_any_page_title = "Wikidata para cualquier páginapágina:",
datas_Wikidata_details_test_title = "Pruebas y datos importados de Wikidata",
datas_Wikidata_arbitrary_tests_title = "datas.get_item() Prueba de Wikidata acceso arbitrario",
datas_Wikidata_arbitrary_access_text = "Wikidata por títulotítulo: ",
datas_Wikidata_time_details_title = "datas.Wikidata_time_details{} Wikidata propiedades de tiempo para másmás detalles",
datas_update_Special_PageData_title = "datas.update_PageData() Compartir DATOS entre módulosmódulos en Special:PageData",
datas_update_Special_PageData_header = "sitio; tiempo de versiónversión; identificador de versiónversión; tiempo visto",
datas_get_item_report_title = "datas.get_item_report() Informes de datos de mw.wikibase para la páginapágina o cualquier otro elemento.",
-- Diversos mensajes y errores
datas_no_args_Wikidata_err = "Error: MóduloMódulo sin argumentos Wikidata tabla.",
datas_sources_of_datas = "Informaciones de: /Wikidata, /template o module, /other, /warning, /error",
} -- datas.i18n.es
datas.i18n.fr = {
-- Pour traduire, les langues de référenceréférence sont l'anglais et le françaisfrançais.
-- Pour traduire, ne traduisez pas des parties comme celles-ci : <b>%1</b> ; <b>%1</b> = <b>%2</b> (%3) ; <code>Q535</code> ; <br/> ; \n* ; _G.
-- Wikidata
Ligne 1 610 ⟶ 2 421 :
args_known_monument = "Tour Eiffel", -- French
args_known_town = "Paris", -- French
datas_Wikidata_header = "DonnéesDonnées : ",
datas_known_Datas_header = "DonnéesDonnées connues : ",
datas_sougth_Datas_header = "DonnéesDonnées souhaitéessouhaitées : ",
datas_needed_Datas_header = "DonnéesDonnées nécessairesnécessaires : ",
datas_Wikidata_wikibase_err = "Erreur : Wikibase n'est pas disponible.",
datas_Wikidata_getEntity_err = "Erreur : getEntity Wikidata n'est pas disponible.",
datas_Wikidata_getEntityObject_err = "Erreur : L'élémentélément <b>%1</b> de Wikidata n'est pas trouvétrouvé.",
datas_Wikidata_property_err = "Erreur : La propriétépropriété <b>%1</b> de Wikidata n'est pas trouvéetrouvée.",
datas_Wikidata_error_err = "Erreur Wikidata : <b>%1</b> ",
-- datas_Wikidata_cat_err = "modes_no_source_arguments_cat",
datas_Wikidata_cat_err = "Module with internal error", -- modes_no_source_arguments_cat
datas_structured_data_txt = 'DonnéesDonnées de Wikidata',
datas_Wikidata_any_page_title = "Wikidata pour une autre page :",
datas_Wikidata_details_test_title = "Tests et donnéesdonnées importéesimportées de Wikidata",
datas_Wikidata_arbitrary_tests_title = "datas.get_item() Test de Wikidata accèsaccès arbitraire",
datas_Wikidata_arbitrary_access_text = "Wikidata pour un titre : ",
datas_Wikidata_time_details_title = "datas.Wikidata_time_details{} Wikidata propriétéspropriétés de temps pour plus de détailsdétails",
datas_update_Special_PageData_title = "datas.update_PageData() Partager des DATA entre modules en Special:PageData",
datas_update_Special_PageData_header = "site; temps de version; identificateur de version; heure de vue",
datas_get_item_report_title = "datas.get_item_report() Rapporte les donnéesdonnées de mw.wikibase pour la page ou tout autre élémentélément.",
-- Messages et erreurs divers
datas_no_args_Wikidata_err = "Erreur interne : Module sans table d'arguments Wikidata.",
datas_sources_of_datas = "Informations de : /Wikidata, /modèlemodèle ou module, /autres, /warning, /erreur",
} -- datas.i18n.fr
datas.i18n.hu = {
-- Zum Übersetzen sind die Referenzsprachen Englisch und Französisch.
-- Übersetzen Sie keine Teile wie diese: <b>%1</b> ; <b>%1</b> = <b>%2</b> (%3) ; <code>Q535</code> ; <br/> ; \n* ; _G.
datas_Wikidata_header = "Adat: ",
datas_known_Datas_header = "Ismert adatok: ",
datas_sougth_Datas_header = "Kívánt adatokat: ",
datas_needed_Datas_header = "Szükséges adatok: ",
datas_Wikidata_getEntity_err = "Hiba: a getEntity Wikidata nem érhető el.",
datas_Wikidata_getEntityObject_err = "Lỗi: Không tìm thấy mục <b>%1</b> để Wikidata.",
datas_Wikidata_property_err = "Erreur : La propriété <b>%1</b> de Wikidata n'est pas trouvée.",
datas_Wikidata_error_err = "Lỗi Wikidata : <b>%1</b> ",
datas_Wikidata_cat_err = "Mô-đun có lỗi nội bộ",
datas_structured_data_txt = 'Dữ liệu Wikidata',
datas_Wikidata_any_page_title = "Wikidata cho một trang khác:",
datas_Wikidata_details_test_title = "Kiểm tra và dữ liệu được nhập từ Wikidata",
datas_Wikidata_arbitrary_tests_title = "datas.get_item() Wikidata kiểm tra truy cập tùy ý",
 
datas_Wikidata_arbitrary_access_text = "Wikidata cho một tiêu đề : ",
datas_Wikidata_time_details_title = "datas.Wikidata_time_details{} Wikidata thuộc tính thời gian để biết thêm chi tiết",
datas_update_Special_PageData_title = "datas.update_PageData() Megosztja a DATA-t a speciális modulok között: Special:PageData",
datas_update_Special_PageData_header = "webhely; verzióidő; verzióazonosító; látott órát",
 
datas_get_item_report_title = "datas.get_item_report() Rapporte les données de mw.wikibase pour la page ou tout autre élément.",
-- Messages et erreurs divers
datas_no_args_Wikidata_err = "Erreur interne : Module sans table d'arguments Wikidata.",
datas_sources_of_datas = "Informations de : /Wikidata, /modèle ou module, /autres, /warning, /erreur",
} -- datas.i18n.hu
datas.i18n.vi = {
-- Để dịch, các ngôn ngữ giới thiệu là tiếng Anh và tiếng Pháp.
-- Để dịch, không dịch các phần như thế này: <b>%1</b> ; <b>%2</b> = <b>%3</b> (<b>%4</b>) ; <code>Q535</code> ; <br/> ; <br/> ; \n* ; _G.
datas_Wikidata_header = "Dữ liệu: ",
datas_known_Datas_header = "Dữ liệu nổi tiếng: ",
datas_sougth_Datas_header = "Dữ liệu mong muốn: ",
datas_needed_Datas_header = "Dữ liệu cần thiết : ",
datas_Wikidata_wikibase_err = "Lỗi: Wikibase không khả dụng.",
datas_Wikidata_getEntity_err = "Lỗi: getEntity Wikidata không khả dụng.",
datas_Wikidata_getEntityObject_err = "Lỗi: Không tìm thấy mục <b>%1</b> để Wikidata.",
datas_Wikidata_property_err = "Lỗi: Không tìm thấy thuộc tính Wikidata <b>%1</b>.",
datas_Wikidata_error_err = "Lỗi Wikidata: <b>%1</b> ",
-- datas_Wikidata_cat_err = "modes_no_source_arguments_cat",
datas_Wikidata_cat_err = "Mô-đun có lỗi nội bộ", -- modes_no_source_arguments_cat
datas_structured_data_txt = 'Dữ liệu Wikidata',
datas_Wikidata_any_page_title = "Wikidata cho một trang khác:",
datas_Wikidata_details_test_title = "Các bài kiểm tra và dữ liệu được nhập từ Wikidata",
datas_Wikidata_arbitrary_tests_title = "datas.get_item() Wikidata kiểm tra truy cập tùy ý",
datas_Wikidata_arbitrary_access_text = "Wikidata cho một tiêu đề: ",
datas_Wikidata_time_details_title = "datas.Wikidata_time_details{} Các thuộc tính thời gian để Wikidata để biết thêm chi tiết",
datas_update_Special_PageData_title = "datas.update_PageData() Chia sẻ DATA giữa các mô-đun trong Special:PageData",
datas_update_Special_PageData_header = "địa điểm; thời gian phiên bản; định danh phiên bản; thấy giờ",
datas_get_item_report_title = "datas.get_item_report() Báo cáo dữ liệu mw.wikibase cho trang hoặc bất kỳ mục nào khác.",
-- Các thông báo và lỗi khác nhau
datas_no_args_Wikidata_err = "Lỗi nội bộ: Mô-đun không có bảng đối số Wikidata.",
datas_sources_of_datas = "Thông tin từ: /Wikidata, /mô hình hoặc mô-đun, /người khác, /cảnh báo, /lỗi",
} -- datas.i18n.vi
 
function datas.available_props_report(t) -- Reports available datas properties
local memo = viewers.save_configs("datas.available_props_report") -- Save global configuration before eventual changes.
local t = t -- t or
if type(t) ~= "string" then t = '\n* <b>datas.available_props_report(t)</b> : Reports availablesavailable datas properties.\n*' "end
local i = 0
-- t = t .. "\n* Guideline for this stat : Count lists of translations by languages and libraries, then convert in a 2D table, then format and report them."
Ligne 1 740 ⟶ 2 498 :
for _,qualifier in pairs(statement.qualifiers.P1319) do
struct = parseWbTime(qualifier.datavalue.value)
prefix = 'aprèsaprès '
struct.precision = 8 --TODO: hacky
end
Ligne 1 765 ⟶ 2 523 :
struct.text = prefix .. getTextForCentury(struct.century, true)
else
struct.text = errorMessage('La date de ' .. field .. ' a une précisionprécision trop faible sur Wikidata')
end
return struct
Ligne 1 941 ⟶ 2 699 :
{
"en": "Magnificent but a bit artificial sweet peaches",
"es": "esto puede estar en españolespañol",
"fr": "this could be in french"
}
Ligne 2 033 ⟶ 2 791 :
events_all_kinds_tests_title = "events.all_kinds_test() Prueba: todo tipo de eventos (err, wng, cat)",
events_all_kinds_tests_headers = "typ;key;idargs;result",
events_add_cat_deprecated = "FunciónFunción obsoleto en módulomódulo principal.",
events_close_without_memo_err = "viewers.restore_configs(memo, where) sin <b>memo</b> en el módulomódulo <b>%1</b>.",
events_antiCrash_protect_err = "La funciónfunción antiCrash() protege esta páginapágina contra un colapso completo debido a un error interna: %1.",
} -- events.i18n.es
events.i18n.fr = {
Ligne 2 044 ⟶ 2 802 :
events_test_MediaWiki_title = "Test and display tests events for MediaWiki",
events_test_MediaWiki_headers = "Type;Key;Name test and values;result of the test",
events_test_categ_Test_title = "Tester categ_Test : catégoriescatégories dans quelques langues",
events_all_kinds_tests_title = "events.all_kinds_test() Test: toutes les sortes d'événementsévénements (err, wng, cat)",
events_all_kinds_tests_headers = "typ;key;idargs;result",
events_add_cat_deprecated = "Fonction obsolèteobsolète dans le module principal.",
events_close_without_memo_err = "viewers.restore_configs(memo, where) sans <b>memo</b> dans le module <b>%1</b>.",
events_antiCrash_protect_err = "La fonction antiCrash() protègeprotège cette page contre un effondrement complet dû àà une erreur interne : %1.",
} -- events.i18n.fr
events.i18n.hu = {
events_test_tests_title = "List a table, test with limits:",
events_test_resTest_title = "List a table, test with limits:",
events_test_projects_title = "Test and display tests events for projects",
events_test_projects_headers = "Type;Key;Name test and values;result of the test",
events_test_MediaWiki_title = "Test and display tests events for MediaWiki",
events_test_MediaWiki_headers = "Type;Key;Name test and values;result of the test",
events_test_categ_Test_title = "Tester categ_Test : catégories dans quelques langues",
events_all_kinds_tests_title = "events.all_kinds_test() Test: toutes les sortes d'événements (err, wng, cat)",
events_all_kinds_tests_headers = "typ;key;idargs;result",
events_add_cat_deprecated = "Fonction obsolète dans le module principal.",
events_close_without_memo_err = "viewers.restore_configs(memo, where) sans <b>memo</b> dans le module <b>%1</b>.",
events_antiCrash_protect_err = "La fonction antiCrash() protège cette page contre un effondrement complet dû à une erreur interne : %1.",
} -- events.i18n.hu
events.i18n.vi = {
events_test_tests_title = "List a table, test with limits:",
events_test_resTest_title = "List a table, test with limits:",
events_test_projects_title = "Test and display tests events for projects",
events_test_projects_headers = "Type;Key;Name test and values;result of the test",
events_test_MediaWiki_title = "Test and display tests events for MediaWiki",
events_test_MediaWiki_headers = "Type;Key;Name test and values;result of the test",
events_test_categ_Test_title = "Tester categ_Test : catégories dans quelques langues",
events_all_kinds_tests_title = "events.all_kinds_test() Test: toutes les sortes d'événements (err, wng, cat)",
events_all_kinds_tests_headers = "typ;key;idargs;result",
events_add_cat_deprecated = "Fonction obsolète dans le module principal.",
events_close_without_memo_err = "viewers.restore_configs(memo, where) sans <b>memo</b> dans le module <b>%1</b>.",
events_antiCrash_protect_err = "La fonction antiCrash() protège cette page contre un effondrement complet dû à une erreur interne : %1.",
} -- events.i18n.vi
 
events.test_group = {}
Ligne 2 102 ⟶ 2 832 :
local c = c or evt.ccc or ":"
if evt.typ == "cat" then -- Format a category to display or activate
evt.content_wkt = viewers.form9contenttranslate_content(evt.key, lua_table.to_list( evt.vals ) )
evt.page_wkt = viewers.form9pagetranslate_page(evt.key, lua_table.to_list( evt.vals ) )
evt.user_wkt = viewers.form9usertranslate_user(evt.key, lua_table.to_list( evt.vals ) )
return " [[" .. c .. space .. (evt.content_wkt or lnk) .. "|" .. (evt.user_wkt or txt) .. "]] "
else
Ligne 2 142 ⟶ 2 872 :
-- Select only new events
if type(evt) ~= "table" then evt = {} end
local new_evt = viewers.form9teststranslate_default( tostring(evt.key), lua_table.to_list( evt.vals ) )
for i, event in pairs(events.list_all_events) do
local old_evt = viewers.form9teststranslate_default( tostring(event.key), lua_table.to_list( event.vals ) )
if new_evt == old_evt then new_evt = nil ; break end -- Add only new events. Reject already seen events.
end
Ligne 2 156 ⟶ 2 886 :
-- Guide line: without duplication: events differ if the type, the key or any value of any argument differs.
-- Guide line: We can view or categorize categories.
local intern_or_use = versions.memo_i18n["en"][key]
local evt = events.new(typ, key, ...) -- Initialize and finalize a new event.
local evt = events.add_new(evt) -- Add an error, warning or category in the lists. S170626rev
Ligne 2 164 ⟶ 2 893 :
 
function events.form(evt, c) -- Format an event as an error, warning or category.
evt.res = tostring(evt.res) .. "? form " .. viewers.form9teststranslate_default(".form evt.key=%1, evt.res=%2, ", evt.key, evt.res )
local evt = mw.clone(evt) -- do not disturb input event
if type(evt) ~= "table" then
Ligne 2 177 ⟶ 2 906 :
if type(evt.name) ~= "string" then evt.name = ""
elseif evt.name ~= "" then evt.name = evt.name .. "_" end
evt.idargs = evt.name .. tostring( viewers.form9usertranslate_user( tostring(evt.key), lua_table.to_list( evt.vals ) ) )
-- Each type of event formats its own type of wikitext
evt.content_wkt = viewers.form9contenttranslate_content(evt.key, lua_table.to_list( evt.vals ) )
evt.page_wkt = viewers.form9pagetranslate_page(evt.key, lua_table.to_list( evt.vals ) )
evt.user_wkt = viewers.form9usertranslate_user(evt.key, lua_table.to_list( evt.vals ) )
evt.res = "" -- multilingual
if evt.typ == "err" then evt.res = viewers.styles_color_error(evt.user_wkt) end
Ligne 2 236 ⟶ 2 965 :
local cats = ""
for i, str in mw.text.gsplit(groupList, ";", true) do
local wkt = viewers.form9usertranslate_user(groupCat, str)
cats = cats .. events.add_cat(groupCat, wkt)
end
local res, evt = events.add("catGroup", groupCat, cats) -- Add an event to a group.
evt.trc = evt.trc .. viewers.form9usertranslate_user("\n* add_cat evt.typ=%1, evt.key=%2, ", evt.typ, evt.key)
return res, evt
end -- function events.add_cat_group(groupCat, groupList)
Ligne 2 303 ⟶ 3 032 :
 
events.errors_list = {} -- Deprecated: Table to collect errors and warnings
events.erron = true -- Activated or not errors. Errores activado o no. Erreurs activéesactivées ou non.
events.categories_list = {} -- Table to collect all categories to generate in wikitext
 
Ligne 2 311 ⟶ 3 040 :
local page = tostring(mwtitle.nsText) .. ":" .. tostring(mwtitle.text)
if type(title) ~= "string" then title = "modes_error_list_header_err" end
res = res .. '\n*' .. viewers.form9usertranslate_user(title, page, v1, v2, v3, v4, v5, v6, v7, v8, v9) -- .. ' - ' .. page
local n = 0
for k, wng in ipairs(events.errors_list) do
msgref = viewers.form9usertranslate_user(wng.ref, wng.v1, wng.v2, wng.v3, wng.v4, wng.v5, wng.v6, wng.v7, wng.v8, wng.v9) -- texte traduit ou direct
if wng.typ == "wng" then
res = res .. '<br>� ' .. viewers.styles_color_warning(msgref)
end
end
for k, wng in ipairs(events.errors_list) do
msgref = viewers.form9usertranslate_user(wng.ref, wng.v1, wng.v2, wng.v3, wng.v4, wng.v5, wng.v6, wng.v7, wng.v8, wng.v9) -- texte traduit ou direct
if wng.typ == "err" then
res = res .. '<br>� ' .. viewers.styles_color_error(msgref)
n = n + 1
end
Ligne 2 344 ⟶ 3 073 :
end
return gener
end -- function events.gener_categories(args_finalargs_kown)
 
function events.categories_lister(c) -- Categorize categories, or view categories if c=":".
Ligne 2 353 ⟶ 3 082 :
for k, evt in pairs(events.list_all_events) do
if (evt.typ == "cat") then
local keyuser = viewers.form9usertranslate_user(evt.key)
local keycontent = viewers.form9contenttranslate_content(evt.key)
res = res .. events.form_cat(evt, keyuser, keycontent, c)
end
Ligne 2 373 ⟶ 3 102 :
langs.i18n.de = {
language = 'Sprache',
langs_translations_counts_title = "langs.translations_counts() ÜbersetzungenÃœbersetzungen in Tabellen zählenzählen",
langs_translations_stats_report_title = "ÜbersetzungenÃœbersetzungen: Zahlen nach Sprachen und nach Bibliotheken oder Modulen.",
langs_translations_stats_report_headers = "Berechnete Kopfzeilen",
langs_form9user_tests_title = "viewers.form9usertranslate_user() Test: Ersetzen Sie <b>%1</b> bis %9 durch tostring(argN) von den Argumenten",
langs_form9user_all_types_values = "Testergebnisse: string=<b>%1</b> number=<b>%2</b> nil=<b>%3</b> function=<b>%4</b> table=%5.",
langs_form99user_tests_title = "viewers.form99user() Test: Ersetzen Sie %01 bis %99 durch tostring(argN) von den Argumenten",
langs_form99user_all_types_values = "en viewers.form99user() Werte aller Arten: <b>%1</b>, <b>%2</b>, <b>%3</b>, <b>%4</b>, %5.",
langs_translations_key_missing = "Interner Fehler: Fehlender oder abnormaler ÜbersetzungsschlüsselÃœbersetzungsschlüssel viewers.trans9varstranslate_lang()",
langs_form99user_no_tranlation = "in viewers.form99user() Mangel an ÜbersetzungÃœbersetzung.",
langs_form99user_a_value_is_table = "in viewers.form99user() Ein Wert ist eine Tabelle.",
langs_lang_not_exist_err = "Fehler: <b>%1</b> Sprache ist nicht verfügbarverfügbar.",
langs_abnormal_char_in_text_title = "langs.abnormal_char_in_text() Test: Ermitteln Sie abnormale Zeichen in einem einsprachigen Text.",
langs_abnormal_char_in_alphabet = "abcdefghabklmnopqrstuvwxyz ABCDEFGHABKLMNOPQRSTUVWXYZ 013456789 àéèêëiouüœÃ Ã©Ã¨ÃªÃ«iouüœ ÀÉÈÊËIOU܌ÀÉÈÊËIOUÜŒ ,;.:!?",
langs_list_MediaWiki_languages_title = "langs.list_MediaWiki_languages() Liste aller MediaWiki-Sprachen.",
-- Haupttexte, Fehler und Kategorien von Werkzeugen
langs_first_tests_languages = "Dokumentation der ersten Sprachen",
langs_content_page_user_lang_msg = "Sprachen: content: <b>%1</b>, page: <b>%2</b>, user: <b>%3</b>.",
langs_without_translation_err = "Bekannt, aber nicht übersetztübersetzt: <b>%1</b>.",
langs_without_translation_N_err = "Es gibt <b>%1</b> nicht übersetzteübersetzte Argumente.",
langs_main_i18n_languages_count = "Dieses Modul kann <b>%1</b> SätzeSätze in <b>%2</b> Sprachen übersetzenübersetzen.",
langs_table_can_translate_counts = "LaDie Tabelle <b>%1</b> kann <b>%2</b> SätzeSätze in <b>%3</b> Sprachen übersetzenübersetzen.",
langs_mw_language_fetchLanguageName = "<b>%1</b>(<b>%2</b>=<b>%3</b>), ",
langs_counts_translations_headers = "*; Name der Tabelle; Texte; Tabellen; Kommentar",
langs_i18n_list_all_string = "Diese Liste zeigt alle Texte, kann aber die ursprünglichenursprünglichen Aussagen nicht ersetzen.",
langs_languages_nbr_and_list = "\n* Es gibt <b>%1</b> ÜbersetzungstabellenÃœbersetzungstabellen in diesen Sprachen: <b>%2</b> <br>",
langs_string_translated_in_langs = "Es sind <b>%1</b> Texte in <b>%2</b> Sprachen übersetztübersetzt.",
langs_no_wiki_translations_err = "Interner Fehler: Modul ohne übersetzteübersetzte Argumententabelle.",
langs_list_in_translated_lang = "<b>%1</b> SprachübersetzungenSprachübersetzungen <b>%2</b> : <b>%3</b> : <b>%4</b>",
langs_changing_translations_title = "langs.changing_translations() ÜbersetzungsänderungenÃœbersetzungsänderungen in i18n-Tabellen",
langs_changing_translations_headers = "Modul; Sprache; SchlüsselSchlüssel i18n; Vorherige ÜbersetzungÃœbersetzung; ÄndernÄndern der ÜbersetzungÃœbersetzung",
langs_missing_translations_title = "langs.missing_translations() Fehlende ÜbersetzungenÃœbersetzungen in i18n-Tabellen.",
langs_missing_translations_headers = "Sprache; i18n SchlüsselSchlüssel; Vorherige ÜbersetzungÃœbersetzung Neue ÜbersetzungÃœbersetzung Modul",
langs_changing_translations_help = "Siehe auch <b>%1</b> fürfür die Hilfe beim ÜbersetzenÃœbersetzen.",
langs_mixed_translations_title = "i18n ÜbersetzungstabellenÃœbersetzungstabellen kombiniert:",
langs_dummy_languages_title = "langs.dummy_languages() Eigenschaften einiger Sprachen:",
langs_Module_Central_version = "Central-w-de",
langs_selectLang_tests_title = "langs.select_lang() Tests: WählenWählen Sie eine Sprache fürfür Tests oder andere Tests aus",
langs_selectLang_test_headers = "Wiki-Sprache; Benutzersprache; Gesuchte Sprache; AusgewählteAusgewählte Sprache; Beispiel",
langs_selectLang_test_example = "Sprache: content = <b>%1</b>, user = <b>%2</b>, selected = <b>%3</b>.",
langs_selectLang_test_err = "Internal error : langs.select_lang(lang) has hat keine Testtabelle.",
langs_selectLang_test_cat = "Modul mit internem Fehler",
langs_missing_one_translation_err = "Fehlende ÜbersetzungÃœbersetzung, SchlüsselSchlüssel <b>%1</b> in Sprache <b>%2</b>",
langs_missing_one_translation_i_cat = "Fehlende ÜbersetzungÃœbersetzung, mindestens eine", -- + "Module with internal error",
} -- langs.i18n.de
langs.i18n.en = {
Ligne 2 422 ⟶ 3 151 :
langs_translations_stats_report_title = "Translations: numbers by language and by libraries or modules.",
langs_translations_stats_report_headers = "Computed headers",
langs_form9user_tests_title = "viewers.form9usertranslate_user() Test: Replace <b>%1</b> to %9 by tostring( argN ) from arguments",
langs_form9user_all_types_values = "RésultatsRésultats de test: string=<b>%1</b> number=<b>%2</b> nil=<b>%3</b> function=<b>%4</b> table=%5.",
langs_form99user_tests_title = "in viewers.form99user() Test: Replace %01 to %99 by tostring( argN ) from arguments",
langs_form99user_all_types_values = "in viewers.form99user() Values of all types: <b>%1</b>, <b>%2</b>, <b>%3</b>, <b>%4</b>, %5.",
langs_form99user_no_tranlation = "in viewers.form99user() Lack of translation.",
langs_form99user_a_value_is_table = "in viewers.form99user() A value is a table.",
langs_translations_key_missing = "Internal error: Translations key missing or abnormal in viewers.trans9varstranslate_lang()",
langs_lang_not_exist_err = "Error: The language <b>%1</b> is not available.",
langs_abnormal_char_in_text_title = "langs.abnormal_char_in_text() Test: Detect abnormal characters in an unilingual text.",
Ligne 2 464 ⟶ 3 193 :
langs_missing_one_translation_i_cat = "Missing at least one translation", -- + "Module with internal error",
} -- langs.i18n.en
langs.i18n.es = { -- ¿QuiénQuién es?
language = 'lenguaje',
langs_translations_counts_title = "langs.translations_counts() Condes des traducciones en tablas",
langs_translations_stats_report_title = "Traducciones: númerosnúmeros por idioma y por bibliotecas o módulosmódulos.",
langs_translations_stats_report_headers = "Encabezados calculados",
langs_form9user_tests_title = "viewers.form9usertranslate_user() Prueba: Reemplazar <b>%1</b> a %9 por tostring( argN ) a partir de argumentos",
langs_form9user_all_types_values = "RésultatsRésultats de test: string=<b>%1</b> number=<b>%2</b> nil=<b>%3</b> function=<b>%4</b> table=%5.",
langs_form99user_tests_title = "en viewers.form99user() Prueba: Reemplazar %01 a %99 por tostring( argN ) a partir de argumentos",
langs_form99user_all_types_values = "en viewers.form99user() Valores de todos los tipos: <b>%1</b>, <b>%2</b>, <b>%3</b>, <b>%4</b>, %5.",
langs_form99user_no_tranlation = "en viewers.form99user() Falta de traduccióntraducción.",
langs_form99user_a_value_is_table = "en viewers.form99user() Un valor es una tabla.",
langs_translations_key_missing = "Error interno: Traducciones clave que falta o anormal en viewers.trans9varstranslate_lang()",
langs_lang_not_exist_err = "Error: El lenguaje <b>%1</b> no estáestá disponible.",
langs_abnormal_char_in_text_title = "langs.abnormal_char_in_text() Prueba: Detectar caracteres anormales en un texto monolingüemonolingüe.",
langs_abnormal_char_in_alphabet = "abcdefghabklmnopqrstuvwxyz ABCDEFGHABKLMNOPQRSTUVWXYZ 013456789 àéèêëiouüœÃ Ã©Ã¨ÃªÃ«iouüœ ÀÉÈÊËIOU܌ÀÉÈÊËIOUÜŒ ,;.:!?",
langs_list_MediaWiki_languages_title = "langs.list_MediaWiki_languages() Lista de todos los idiomas de MediaWiki.",
-- Textos principales, errores y categoríascategorías de instrumentos
langs_first_tests_languages = "DocumentaciónDocumentación de las primeras idiomas",
langs_content_page_user_lang_msg = "Idiomas: content: <b>%1</b>, page: <b>%2</b>, user: <b>%3</b>.",
langs_without_translation_err = "Argumento conocido, pero no traducido: <b>%1</b>.",
langs_without_translation_N_err = "Hay <b>%1</b> argumentos no traducidos.",
-- Diversos mensajes y errores
langs_main_i18n_languages_count = "Este módulomódulo puede traducir <b>%1</b> frases en <b>%2</b> idiomas: ",
langs_table_can_translate_counts = "Tabla <b>%1</b> puede traducir <b>%2</b> frases en <b>%3</b> idiomas.",
langs_mw_language_fetchLanguageName = "<b>%1</b>( <b>%2</b> = <b>%3</b> ), ",
Ligne 2 492 ⟶ 3 221 :
langs_languages_nbr_and_list = "\n* Hay <b>%1</b> mesas de traducciones en estas idiomas: <b>%2</b> <br>",
langs_string_translated_in_langs = "Hay <b>%1</b> textos traducidos en <b>%2</b> idiomas.",
langs_no_wiki_translations_err = "Error: MóduloMódulo sin argumentos traducidos tabla.",
langs_i18n_list_all_string = "Esta lista muestra todos los textos, pero no puede sustituir a las declaraciones originales.",
langs_list_in_translated_lang = "<b>%1</b> traducciones en idioma <b>%1</b>:<b>%2</b>:<b>%3</b> <b>%4</b> ",
langs_missing_translations_title = "langs.missing_translations() Faltan traducciones en las tablas i18n.",
langs_missing_translations_headers = "Idioma; llave i18n; TraducciónTraducción previa; Nueva traduccióntraducción; MóduloMódulo",
langs_changing_translations_title = "langs.changing_translations() Changing (or missing) translations in i18n tables.",
langs_changing_translations_title = "langs.changing_translations() Traducciones que cambian (o falta de) en las tablas i18n.",
langs_changing_translations_headers = "Idioma; Clave i18n; TraducciónTraducción anterior; Nueva traduccióntraducción; MóduloMódulo",
langs_changing_translations_help = "Consulte tambiéntambién <b>%1</b> para solicitar ayuda para traducir.",
langs_mixed_translations_title = "Tablas traducciones i18n combinadas:",
langs_dummy_languages_title = "langs.dummy_languages() CaracterísticasCaracterísticas de algunos idiomas:",
langs_Module_Central_version = "Central-w-es",
langs_selectLang_tests_title = "langs.select_lang() Tests: Select a language for tests or other",
Ligne 2 509 ⟶ 3 238 :
langs_selectLang_test_err = "Internal error : langs.select_lang(lang) has no tests table.",
langs_selectLang_test_cat = "Module with internal error",
langs_missing_one_translation_err = "Falta traduccióntraducción, clave <b>%1</b> en el idioma <b>%2</b>",
langs_missing_one_translation_i_cat = "Falta la traduccióntraducción, al menos uno", -- + "Module with internal error",
} -- langs.i18n.es
langs.i18n.fr = {
Ligne 2 516 ⟶ 3 245 :
langs_translations_counts_title = "langs.translations_counts() Comptages des traductions en tables",
langs_translations_stats_report_title = "Traductions: nombres par langues et par librairies ou modules.",
langs_translations_stats_report_headers = "En-têtestêtes calculéscalculés",
langs_form9user_tests_title = "viewers.form9usertranslate_user() Test: Remplacer <b>%1</b> àà %9 par tostring( argN ) àà partir des arguments",
langs_form9user_all_types_values = "RésultatsRésultats de test: string=<b>%1</b> number=<b>%2</b> nil=<b>%3</b> function=<b>%4</b> table=%5.",
langs_form99user_tests_title = "viewers.form99user() Test: Remplacer %01 àà %99 par tostring( argN ) àà partir des arguments",
langs_form99user_all_types_values = "en viewers.form99user() Valeurs de tous types : <b>%1</b>, <b>%2</b>, <b>%3</b>, <b>%4</b>, %5.",
langs_translations_key_missing = "Erreur interne: CléClé de traduction manquante ou anormale dans viewers.trans9varstranslate_lang()",
langs_form99user_no_tranlation = "en viewers.form99user() Manque de traduction.",
langs_form99user_a_value_is_table = "en viewers.form99user() Une valeur est une table.",
langs_lang_not_exist_err = "Erreur : La langue <b>%1</b> n'est pas disponible.",
langs_abnormal_char_in_text_title = "langs.abnormal_char_in_text() Test: DétecterDétecter les caractèrescaractères anormaux dans un texte unilingue.",
langs_abnormal_char_in_alphabet = "abcdefghabklmnopqrstuvwxyz ABCDEFGHABKLMNOPQRSTUVWXYZ 013456789 àéèêëiouüœÃ Ã©Ã¨ÃªÃ«iouüœ ÀÉÈÊËIOU܌ÀÉÈÊËIOUÜŒ ,;.:!?",
langs_list_MediaWiki_languages_title = "langs.list_MediaWiki_languages() Liste de toutes les langues de MediaWiki.",
-- Principaux textes, erreurs et catégoriescatégories des outils
langs_first_tests_languages = "Documentation des premièrespremières langues",
langs_content_page_user_lang_msg = "Langues : content: <b>%1</b>, page: <b>%2</b>, user: <b>%3</b>.",
langs_without_translation_err = "Argument connu, mais non traduit : <b>%1</b>.",
Ligne 2 537 ⟶ 3 266 :
langs_mw_language_fetchLanguageName = "<b>%1</b>(%2=%3), ",
langs_counts_translations_headers = "*; Nom de la table; Textes; Tables; Commentaire",
langs_i18n_list_all_string = "Cette liste montre tous les textes, mais ne peut remplacer les déclarationsdéclarations originales.",
langs_languages_nbr_and_list = "\n* Il y a <b>%1</b> tables de traductions dans ces langues : <b>%2</b> <br>",
langs_string_translated_in_langs = "Il y a <b>%1</b> textes traduits en <b>%2</b> langues.",
Ligne 2 543 ⟶ 3 272 :
langs_list_in_translated_lang = "<b>%1</b> traductions en langage <b>%2</b> : <b>%3</b> : <b>%4</b>",
langs_changing_translations_title = "langs.changing_translations() Changements de traduction dans les tables i18n",
langs_changing_translations_headers = "Module; Langue; CléClé i18n; Traduction précédenteprécédente; Traduction changeante",
langs_missing_translations_title = "langs.missing_translations() Traductions manquantes dans les tables i18n.",
langs_missing_translations_headers = "Langue; cléclé i18n; Traduction précédenteprécédente; Nouvelle traduction; Module",
langs_changing_translations_help = "Voir aussi <b>%1</b> pour demander de l'aide pour traduire.",
langs_mixed_translations_title = "Tables de traductions i18n combinéescombinées :",
langs_dummy_languages_title = "langs.dummy_languages() CaractéristiquesCaractéristiques de quelques langues:",
langs_Module_Central_version = "Central-w-fr",
langs_selectLang_tests_title = "langs.select_lang() Tests: Select a language for tests or other",
Ligne 2 555 ⟶ 3 284 :
langs_selectLang_test_err = "Internal error : langs.select_lang(lang) has no tests table.",
langs_selectLang_test_cat = "Module avec erreur interne",
langs_missing_one_translation_err = "Traduction manquante, cléclé <b>%1</b> en langue <b>%2</b>",
langs_missing_one_translation_i_cat = "Traduction manquante, au moins une", -- + "Module with internal error",
} -- langs.i18n.fr
langs.i18n.hu = {
language = 'nyelv',
langs_translations_counts_title = "langs.translations_counts() Fordítások a táblázatokba",
langs_translations_stats_report_title = "Fordítások: számok nyelv és könyvtárak vagy modulok szerint.",
langs_translations_stats_report_headers = "Számított fejlécek",
langs_form9user_tests_title = "viewers.form9user() Teszt: Az argumentumokból tostring(argN) helyett <b>%1</b> - %9 helyettesítse",
langs_form9user_all_types_values = "Teszt: string=<b>%1</b> number=<b>%2</b> nil=<b>%3</b> function=<b>%4</b> table=%5.",
langs_form99user_tests_title = "viewers.form99user() Teszt: Az argumentumokból tostring(argN) helyett %01 - %99 helyettesítse",
langs_form99user_all_types_values = "Teszt: string=<b>%1</b> number=<b>%2</b> nil=<b>%3</b> function=<b>%4</b> table=%5.",
langs_form99user_all_types_values = "xx-ben minden típusú értékek: <b>%1</b>, <b>%2</b>, <b>%3</b>, <b>%4</b>, %5.",
langs_translations_key_missing = "Belső hiba: hiányzik vagy abnormális fordítási kulcs van viewers.trans9vars()",
langs_form99user_no_tranlation = "in viewers.form99user() A fordítás hiánya.",
langs_form99user_a_value_is_table = "in viewers.form99user() Az érték egy táblázat.",
langs_lang_not_exist_err = "Hiba: A (z) <b>%1</b> nyelv nem érhető el.",
langs_abnormal_char_in_text_title = "langs.abnormal_char_in_text() Teszt: A kóros karaktereket egynyelvű szövegben ismeri fel.",
langs_abnormal_char_in_alphabet = "abcdefghabklmnopqrstuvwxyz ABCDEFGHABKLMNOPQRSTUVWXYZ 013456789 àéèêëiouüœ ÀÉÈÊËIOUÜŒ ,;.:!?",
langs_list_MediaWiki_languages_title = "langs.list_MediaWiki_languages() Az összes MediaWiki nyelv listája.",
-- Fő szövegek, hibák és eszközök kategóriái
langs_first_tests_languages = "Az első nyelvek dokumentálása",
langs_content_page_user_lang_msg = "Nyelveken: content: <b>%1</b>, page: <b>%2</b>, user: <b>%3</b>.",
langs_without_translation_err = "Ismert, de nem lefordított: <b>%1</b>.",
langs_without_translation_N_err = "<b>%1</b> nem fordított argumentum van.",
langs_main_i18n_languages_count = "Ez a modul lefordíthat <b>%1</b> mondatokat <b>%2</b> nyelvekre: ",
langs_table_can_translate_counts = "A <b>%1</b> táblázat <b>%2</b> mondatokat lefordíthat <b>%3</b> nyelvekre.",
langs_mw_language_fetchLanguageName = "<b>%1</b>(%2=%3), ",
langs_counts_translations_headers = "*; A táblázat neve; szövegek; asztalok; megjegyzés",
langs_i18n_list_all_string = "Ez a lista az összes szöveget mutatja, de nem helyettesítheti az eredeti állításokat.",
langs_languages_nbr_and_list = "\n* Ezek a nyelvek <b>%1</b> fordítási táblázatok vannak: <b>%2</b> ",
langs_string_translated_in_langs = "<b>%1</b> szövegek <b>%2</b> nyelvre lettek lefordítva.",
langs_no_wiki_translations_err = "Belső hiba: Modul fordítás nélküli táblázat nélkül.",
langs_list_in_translated_lang = "<b>%1</b> nyelvi fordítások <b>%2</b> : <b>%3</b> : <b>%4</b>",
langs_changing_translations_title = "langs.changing_translations() Fordítások a táblázatokban i18n",
langs_changing_translations_headers = "modul; nyelv; I18n kulcs; Korábbi fordítás; A fordítás megváltoztatása",
langs_missing_translations_title = "langs.missing_translations() A táblázatokban hiányzik a fordítás i18n.",
langs_missing_translations_headers = "nyelv; i18n kulcs; Korábbi fordítás; Új fordítás modul",
langs_changing_translations_help = "Voir aussi <b>%1</b> pour demander de l'aide pour traduire.",
langs_mixed_translations_title = "Tables de traductions i18n combinées :",
langs_dummy_languages_title = "langs.dummy_languages() Caractéristiques de quelques langues:",
langs_Module_Central_version = "Central-w-fr",
langs_selectLang_tests_title = "langs.select_lang() Tests: Select a language for tests or other",
langs_selectLang_test_headers = "Wiki language; User language; Sought language; Selected language; Example",
langs_selectLang_test_example = "Language: content = <b>%1</b>, user = <b>%2</b>, selected = <b>%3</b>.",
langs_selectLang_test_err = "Internal error : langs.select_lang(lang) has no tests table.",
langs_selectLang_test_cat = "Module avec erreur interne",
langs_missing_one_translation_err = "Traduction manquante, clé <b>%1</b> en langue <b>%2</b>",
langs_missing_one_translation_i_cat = "Traduction manquante, au moins une", -- + "Module with internal error",
} -- langs.i18n.hu
langs.i18n.vi = {
language = 'langue',
langs_translations_counts_title = "langs.translations_counts() Số bản dịch vào các bảng",
langs_translations_stats_report_title = "Bản dịch: số theo ngôn ngữ và theo thư viện hoặc mô-đun.",
langs_translations_stats_report_headers = "Tiêu đề được tính toán",
langs_form9user_tests_title = "viewers.form9user() Test: Remplacer <b>%1</b> à %9 par tostring( argN ) à partir des arguments",
langs_form9user_all_types_values = "Test: string=<b>%1</b> number=<b>%2</b> nil=<b>%3</b> function=<b>%4</b> table=%5.",
langs_form99user_tests_title = "viewers.form99user() Test: Remplacer %01 à %99 par tostring( argN ) à partir des arguments",
langs_form99user_all_types_values = "en viewers.form99user() Valeurs de tous types : <b>%1</b>, <b>%2</b>, <b>%3</b>, <b>%4</b>, %5.",
langs_translations_key_missing = "Erreur interne: Clé de traduction manquante ou anormale dans viewers.trans9vars()",
langs_form99user_no_tranlation = "en viewers.form99user() Manque de traduction.",
langs_form99user_a_value_is_table = "en viewers.form99user() Une valeur est une table.",
langs_lang_not_exist_err = "Erreur : La langue <b>%1</b> n'est pas disponible.",
langs_abnormal_char_in_text_title = "langs.abnormal_char_in_text() Test: Détecter les caractères anormaux dans un texte unilingue.",
langs_abnormal_char_in_alphabet = "abcdefghabklmnopqrstuvwxyz ABCDEFGHABKLMNOPQRSTUVWXYZ 013456789 àéèêëiouüœ ÀÉÈÊËIOUÜŒ ,;.:!?",
langs_list_MediaWiki_languages_title = "langs.list_MediaWiki_languages() Liste de toutes les langues de MediaWiki.",
-- Principaux textes, erreurs et catégories des outils
langs_first_tests_languages = "Documentation des premières langues",
langs_content_page_user_lang_msg = "Langues : content: <b>%1</b>, page: <b>%2</b>, user: <b>%3</b>.",
langs_without_translation_err = "Argument connu, mais non traduit : <b>%1</b>.",
langs_without_translation_N_err = "Il y a <b>%1</b> arguments non traduits.",
langs_main_i18n_languages_count = "Ce module peut traduire <b>%1</b> phrases en <b>%2</b> langues : ",
langs_i18n_list_all_string = "Cette liste montre tous les textes, mais ne peut remplacer les déclarations originales.",
langs_languages_nbr_and_list = "\n* Il y a <b>%1</b> tables de traductions dans ces langues : <b>%2</b> <br>",
langs_string_translated_in_langs = "Il y a <b>%1</b> textes traduits en <b>%2</b> langues.",
langs_no_wiki_translations_err = "Erreur interne : Module sans table d'arguments traduits.",
langs_list_in_translated_lang = "<b>%1</b> traductions en langage <b>%2</b> : <b>%3</b> : <b>%4</b>",
langs_changing_translations_help = "Voir aussi <b>%1</b> pour demander de l'aide pour traduire.",
langs_mixed_translations_title = "Tables de traductions i18n combinées :",
langs_dummy_languages_title = "langs.dummy_languages() Caractéristiques de quelques langues:",
langs_Module_Central_version = "Central-w-fr",
langs_selectLang_tests_title = "langs.select_lang() Tests: Select a language for tests or other",
langs_selectLang_test_headers = "Wiki language; User language; Sought language; Selected language; Example",
langs_selectLang_test_example = "Language: content = <b>%1</b>, user = <b>%2</b>, selected = <b>%3</b>.",
langs_selectLang_test_err = "Internal error : langs.select_lang(lang) has no tests table.",
langs_selectLang_test_cat = "Module avec erreur interne",
langs_missing_one_translation_err = "Traduction manquante, clé <b>%1</b> en langue <b>%2</b>",
langs_missing_one_translation_i_cat = "Traduction manquante, au moins une", -- + "Module with internal error",
--
langs_counts_translations_headers = "*; Tên bảng; Văn bản; Những cái bàn; Bình luận",
langs_table_can_translate_counts = "Bảng <b>%1</b> có thể dịch thành <b>%2</b> câu <b>%3</b> ngôn ngữ.",
langs_mw_language_fetchLanguageName = "<b>%1</b>(%2=%3), ",
langs_changing_translations_title = "langs.changing_translations() Các bản dịch trong i18n tables",
langs_changing_translations_headers = "Mô đun; Ngôn ngữ;, Khóa i18n; Bản dịch trước; Thay đổi bản dịch",
langs_missing_translations_title = "langs.missing_translations() Thiếu bản dịch trong bảng i18n.",
langs_missing_translations_headers = "Ngôn ngữ; i18n Key; Bản dịch trước; Bản dịch mới; Mô-đun",
langs_missing_one_translation_err = "Thiếu phím dịch <b>%1</b> bằng ngôn ngữ <b>%2</b>",
langs_missing_one_translation_i_cat = "Thiếu bản dịch, ít nhất một", -- + "Module with internal error",
} -- langs.i18n.vi
 
langs.MetaSupportedLanguages = { "ja", "es", "ru", "de", "nl", "tr", "fr", "pt", "ko", "en", "it", "oc",
Ligne 2 717 ⟶ 3 350 :
elseif lang == "u" then lang = "user" end
if (type(key_form) ~= "string") then key_form = "langs_table_can_translate_counts" end
local t = viewers.form9usertranslate_user(key_form, subnames, strings_c, tables_c)
if lang == "page" then t = viewers.form9pagetranslate_page(key_form, subnames, strings_c, tables_c) end
if lang == "content" then t = viewers.form9contenttranslate_content(key_form, subnames, strings_c, tables_c) end
return t, strings_c, tables_c, strs_on_tabs, subnames
-- local t, strings_c, tables_c, strs_on_tabs, subnames = langs.i18n_sub_counts(subnames_in, key_form, lang)
Ligne 2 768 ⟶ 3 401 :
case.i = case.i or 33
case.t, case.strings_c, case.tables_c, case.strs_on_tabs, case.subnames = langs.i18n_sub_counts(case.subnames_in, "langs_table_can_translate_counts", "user")
case.comment = viewers.form9usertranslate_user("langs_table_can_translate_counts", case.subnames, case.strings_c, case.tables_c)
return { case.i, case.subnames_in, case.strings_c, case.tables_c, case.t, } -- .. comment .. trk
end
Ligne 2 892 ⟶ 3 525 :
end )
strs_on_tabs = math.floor(strs_on_tabs / tables_c)
local t = viewers.form9usertranslate_user("langs_main_i18n_languages_count", strs_on_tabs, tables_c)
for i, lang in pairs(tab_to_sort) do -- Name and count translations in each language
local langi18n = "langs.main_i18n." .. lang
Ligne 2 900 ⟶ 3 533 :
local englishname = mw.language.fetchLanguageName(lang, "en")
local englishname = mw.language.fetchLanguageName(lang, "en")
t = t .. viewers.form9usertranslate_user("langs_mw_language_fetchLanguageName", nativename, lang, englishname) -- "<b>%1</b>(%2=%3), "
if i > 12 then t = t .. "<b> ...</b>" ; break end
end -- see langs.select_lang
Ligne 2 907 ⟶ 3 540 :
 
langs.Central_version = "Central-s-fr" -- To adapt the version of Module:Centralizer in any translated text.
langs.default_user_lang = "en" -- ToDefault adaptlanguage theto versionreplace ofany Module:Centralizerother in anycase it is not or translatedbad text.defined
-- waiting T68051 Central modules need the user language to display errors and category names
 
Ligne 2 919 ⟶ 3 552 :
local modesCont, modesPage, modesUser = nil, nil, nil
if modes.args_source then -- and modes.args_source.userlang Does module arguments ask a content_lang?
local modes_args = modes.args_finalargs_kown or modes.args_source -- work after full init or before
modesCont = modes_args.contentlang
modesPage = modes_args.pagelang
Ligne 2 969 ⟶ 3 602 :
function tab_view.form_one_case(case) -- Convert a case from test_group to rowGroup.
local selected = langs.select_lang( lang )
local example = viewers.form9usertranslate_user("langs_selectLang_test_example")
if selected == "tests" then example = viewers.form9teststranslate_default("selectLang", case.content_lang, case.user_lang, case.sought) end
return { tostring(case.content_lang), tostring(case.user_lang), tostring(case.sought), tostring(selected), tostring(example), }
end
Ligne 3 008 ⟶ 3 641 :
function langs.abnormal_char_in_text(t) -- Test: Detect abnormal characters in an unilingual text.
if type(t) ~= "string" then return false end -- langs_abnormal_char_in_text_title
-- local ok, normal = true, "ABCDEFGHABKLMNOPQRSTUVWXYZ 013456789 abcdefghabklmnopqrstuvwxyz àéèêëiouüœÃ Ã©Ã¨ÃªÃ«iouüœ ÀÉÈÊËIOU܌ÀÉÈÊËIOUÜŒ ,;.:!?"
local ok, normal = true, viewers.form9usertranslate_user("langs_abnormal_char_in_alphabet")
local letter, nn = "x", string.len(t .. " abcdef") - 3
for i = 1, nn do -- for all chars in t
Ligne 3 021 ⟶ 3 654 :
local memo = viewers.save_configs("langs.changing_translations") -- Save global configuration before eventual changes.
local t = t or "\n* <b>langs.changing_translations()</b>: List all changing translations:"
local i18n = versions.memo_i18n
langs.translations_differences = langs.translations_differences or {}
local nerr, errors, trans, err = 0, "*", "", ""
Ligne 3 067 ⟶ 3 699 :
local modul = string.sub(keyi18n, 1, cut - 1)
if (nbr_in_lang == nbr_in_lang_limit) then -- for the last changing
-- local strnew = p.i18n[refer_lang][keyi18n] or "strnew"
if p.i18n[refer_lang] then
strnew = p.i18n[refer_lang][keyi18n] or "strnew"
end
table.insert( changingGroup, { ["lang"] = refer_lang, ["keyi18n"] = keyi18n, ["stri18n"] = stri18n, ["strnew"] = strnew,
Ligne 3 076 ⟶ 3 708 :
elseif (nbr_in_lang < nbr_in_lang_limit) then -- for changing before the last
-- headers = "Language; i18n Key; Previous translation; New translation; Module",
if p.i18n[refer_lang] then
strnew = p.i18n[refer_lang][keyi18n] or "strnew"
end
table.insert( changingGroup, { ["lang"] = refer_lang, ["keyi18n"] = keyi18n, ["stri18n"] = stri18n, ["strnew"] = strnew,
Ligne 3 126 ⟶ 3 758 :
local t = t or ""
langs.known_translations = langs.known_translations or {}
langs.known_langs = p.i18n
local i18n = versions.memo_i18n
langs.known_langs = i18n
langs.known_texts = {}
langs.known_langs_maxi = 0
langs.known_texts_maxi = 0
for refer_lang, next_table in pairs(p.i18n) do -- For all languages and texts to translate
if (type(other_trans) == "table") then
langs.known_langs[refer_lang] = refer_lang
Ligne 3 143 ⟶ 3 774 :
end
t = t .. "\n* i18n end: " .. viewers.ta("#langs.known_langs", lua_table.level_count(langs.known_langs) ) .. viewers.ta("#langs.known_texts", lua_table.level_count(langs.known_texts) )
if (langs.known_langs_maxi < lua_table.level_count(p.i18n) ) then langs.known_langs_maxi = lua_table.level_count(p.i18n) end -- Maximum number of languages
return t
end
Ligne 3 150 ⟶ 3 781 :
local memo = viewers.save_configs("langs.missing_translations") -- Save global configuration before eventual changes.
local t = t or "\n* <b>langs.missing_translations()</b>: List all missing translations: "
local i18n = versions.memo_i18n
local errors = "*"
local changingGroup = {}
Ligne 3 171 ⟶ 3 801 :
if not ( (refer_lang == "en") or (refer_lang == "es") or (refer_lang == "fr") ) then -- small langs for tests debug
t = t .. ", L=" .. refer_lang ..": n=".. lua_table.level_count(refer_trans)
refer_trans = p.i18n[refer_lang]
for other_lang, other_trans in pairs(langs.known_langs) do -- Look at all translations in one language, but check them only from 1 to nbr_in_lang_limit.
if not ( (other_lang == "en") or (other_lang == "es") or (other_lang == "fr") ) then -- small langs for tests debug
Ligne 3 180 ⟶ 3 810 :
local cut = string.find(tostring(keyi18n) .. "_", "_")
local modul = string.sub(keyi18n, 1, cut - 1)
refer_stri18n = p.i18n[refer_lang][keyi18n]
other_stri18n = p.i18n[other_lang][keyi18n]
count_known_texts = lua_table.level_count(langs.known_texts)
count_changingGroup = lua_table.level_count(changingGroup)
Ligne 3 188 ⟶ 3 818 :
count_missingGroup = lua_table.level_count(missingGroup) + 1
local missing_case = { ["refer_lang"] = refer_lang, ["other_lang"] = other_lang, ["keyi18n"] = keyi18n,
["refer_stri18n"] = refer_stri18n, ["counts"] = viewers.form9usertranslate_user("counts missing=%1 / changing=%2 (err n=%3)",
count_missingGroup, count_changingGroup, count_known_texts, err_in_refer_lang), ["modul"] = modul, }
table.insert( missingGroup, missing_case )
t = t .. viewers.form9usertranslate_user(
"\n* missing err: refer_lang=%1, other_lang=%2, missing=%3 / changing=%4, keyi18n=%5",
refer_lang, other_lang, count_missingGroup, count_changingGroup, keyi18n)
Ligne 3 197 ⟶ 3 827 :
err_in_other_lang = err_in_other_lang + 1
count_changingGroup = lua_table.level_count(changingGroup) + 1
local counts = viewers.form9usertranslate_user("refer_lang=%1, other_lang=%2, counts changing=%1 / missing=%2, texts=%3",
refer_lang, other_lang, count_changingGroup, count_missingGroup, count_known_texts, err_in_other_lang)
local changing_case = { ["refer_lang"] = refer_lang, ["other_lang"] = other_lang, ["keyi18n"] = keyi18n,
["refer_stri18n"] = refer_stri18n, ["other_stri18n"] = other_stri18n, ["counts"] = counts, ["modul"] = modul, }
table.insert( changingGroup, changing_case )
t = t .. viewers.form9usertranslate_user(
"\n* changing err: refer_lang=%1, other_lang=%2, changing=%3 / missing=%4, keyi18n=%5",
refer_lang, other_lang, count_changingGroup, count_missingGroup, keyi18n)
Ligne 3 245 ⟶ 3 875 :
local t = t or "\n* <b>i18n_lister</b> :"
t = t .. viewers.styles_color_error("\n* <b>This list show all the string, but cannot replace the original declarations.</b> ")
t = t .. viewers.styles_color_error("\n* <b>" .. viewers.form9usertranslate_user("langs_i18n_list_all_string") .. " </b> " )
for lang, lang_table in pairs(i18n_tables) do
t = t .. "\np.i18n." .. lang .. ' = { '
Ligne 3 263 ⟶ 3 893 :
-- Manage translations of arguments and warnings
-- Gestione traducciones de argumentos y advertencias
-- GérerGérer les traductions des arguments et warnings
-- - - - ------------------ - - - - ---------------------------------
 
Ligne 3 269 ⟶ 3 899 :
-- https://fr.wikipedia.org/wiki/%C3%89tiquette_d%27identification_de_langues_IETF
-- https://fr.wikipedia.org/wiki/Module:Langue/Data
-- pour convertir en code de langue IETF les noms françaisfrançais de langues
-- https://www.MediaWiki.org/wiki/Manual:$wgDummyLanguageCodes
-- List of language codes that have been renamed to new (correct) codes, or don't correspond to an actual interface language.
Ligne 3 298 ⟶ 3 928 :
{ "als", "Modulen:Central/I18N", }, -- alemanish
{ "gsw", "Mod-gsw:Central/I18N", }, -- unknown
{ "he", "יחידהיחידה:Central/I18N", }, -- hebrew
{ "bat-smg", "Mod-bat-smg:Central/I18N", }, -- alemanish
{ "sgs", "Mod-sgs:Central/I18N", }, -- unknown
Ligne 3 338 ⟶ 3 968 :
-- The Module:Centralizer/I18N translations for lua_table library update and complete Module:Centralizer translations.
lua_table.i18n = {} -- Translations for lua_table library
lua_table.i18n.de = {
luaTable_recursive_luaTable_title = "MediaWiki lua_table rekursive",
luaTable_rough_view_tests_title = "lua_table.rough_view() Test: Bilden Sie einen groben Lua-Code aus einer Tabelle",
luaTable_structure_level_maxi = "Rekursives Level-Limit = <b>%1</b> ",
luaTable_table_listlimit_max_n = "Längenbegrenzung max_n = <b>%1</b> ",
lua_table_structure_recursive_report= "lua_table.structure() Listen Sie eine Tabelle auf, testen Sie mit oder ohne Grenzen:",
luaTable_toList_tests_title = "lua_table.to_list() Gibt eine Liste aus einer Lua-Tabelle zurück.",
luaTable_toList_tests_headers = "Fall getestet; Tabelle zu Liste, grobe Ansicht; Freigabeliste",
luaTable_toTable_tests_title = "lua_table.to_table() Test: Konvertiere einen Satz in eine Worttabelle",
luatable_form_subcounts_subtables = "Die Tabelle <b>%1</b> zählt <b>%2</b> Variablen, <b>%3</b> Untertabellen, <b>%4</b> Funktionen.",
luaTable_fromsubnames_base_err = "Interner Fehler: in langs.sub_i18n_counts(), Basis für die Tabelle der Unternamen nicht verfügbar <b>%1</b>.",
luaTable_fromsubnames_subtable_err = "Interner Fehler: In langs.sub_i18n_counts(), ist <b>%1</b> keine Untertabelle in Unternamen <b>%2</b>.",
luaTable_fromsubnames_subtable_err = "Interner Fehler: In langs.sub_i18n_counts(), <b>%1</b> ist keine Untertabelle in Unternamen <b>%2</b>.",
luaTable_form_sub_counts_type_err = "Ein <b>%1</b> ersetzt die Tabelle: <b>%2</b>.",
luaTable_fromsubnames_tests_headers = "Teilname; Basistabelle; Größe des Tisches; Eintrag lua_table.rough_view",
luaTable_table_dont_exists_err = "Tabelle <b>%1</b> existiert nicht.",
luaTable_table_args_source_title = "lua_table.structure() Tabelle der Argumente erhaltenTabelle der Argumente erhalten, args_source:",
luaTable_tables_differences_title = "Berichten Sie die Unterschiede zwischen 2 Tabellen.",
} -- lua_table.i18n.de
lua_table.i18n.en = {
luaTable_recursive_luaTable_title = "MediaWiki recursive lua_table",
luaTable_rough_view_tests_title = "lua_table.rough_view() Test: Formats a rough Lua code of a table",
luaTable_structure_level_maxi = "Recursive level limit = <b>%1</b> ",
luaTable_table_listlimit_max_n = "Length limit max_n = <b>%1</b> ",
lua_table_structure_recursive_report= "lua_table.structure() List a table, test with or without limits:",
luaTable_toList_tests_title = "lua_table.to_list() Return a list from a Lua table.",
luaTable_toList_tests_headers = "Tested case; Input table, rough_view; Output list",
luaTable_toTable_tests_title = "lua_table.to_table() Test: convert a string to a table of words",
luatable_form_subcounts_subtables = "The table <b>%1</b> counts <b>%2</b> values, <b>%3</b> sub-tables and <b>%4</b> functions.",
luaTable_fromsubnames_base_err = "Internal error: in langs.sub_i18n_counts(), base unavailable for the subnames table <b>%1</b>.",
luaTable_fromsubnames_subtable_err = "Internal error: in langs.sub_i18n_counts(), <b>%1</b> is not a sub-table in subnames <b>%2</b>.",
luaTable_form_sub_counts_type_err = "A <b>%1</b> replaces the table: <b>%2</b>.",
-- luaTable_fromsubnames_missing_err = "Internal error: in lua_table.form_sub_counts() The search for this sub-table <b>%1</b> found only this one <b>%2</b>.", obsolete
luaTable_fromsubnames_tests_headers = "Sub name; Base table; Table count; Input lua_table.rough_view",
luaTable_table_dont_exists_err = "The table <b>%1</b> does not exist.",
luaTable_table_args_source_title = "lua_table.structure() Table of received arguments, args_source:",
luaTable_tables_differences_title = "report differences between 2 tables.",
} -- lua_table.i18n.en
lua_table.i18n.es = {
luaTable_recursive_luaTable_title = "MediaWiki lua_table recursiva",
luaTable_rough_view_tests_title = "lua_table.rough_view() Prueba: Formar un códigocódigo de Lua grueso de una tabla",
luaTable_structure_level_maxi = "LímiteLímite de nivel recursivo = <b>%1</b> ",
luaTable_table_listlimit_max_n = "LímiteLímite de longitud max_n = <b>%1</b> ",
lua_table_structure_recursive_report= "lua_table.structure() Enumerar una tabla, prueba con o sin límiteslímites:",
luaTable_toList_tests_title = "lua_table.to_list() Devolver una lista de una tabla Lua.",
luaTable_toList_tests_headers = "Probados casos; Tabla a listar, ver prima; lista de salida",
Ligne 3 389 ⟶ 3 981 :
luaTable_fromsubnames_subtable_err = "Error interno: en langs.sub_i18n_counts(), <b>%1</b> no es una sub-tabla en subnames <b>%2</b>.",
luaTable_form_sub_counts_type_err = "Un <b>%1</b> reemplaza la tabla: <b>%2</b>.",
-- luaTable_fromsubnames_missing_err = "Error interno: in lua_table.form_sub_counts() La búsquedabúsqueda de este subtabla <b>%1</b> encontróencontró que <b>%2</b>.", obsolete
luaTable_fromsubnames_tests_headers = "Sub nombre; Mesa base; TamañoTamaño de la mesa; lua_table.rough_view de entrada",
luaTable_table_dont_exists_err = "La tabla <b>%1</b> no existe.",
luaTable_table_args_source_title = "lua_table.structure() Tabla de argumentos recibido, args_source:",
Ligne 3 396 ⟶ 3 988 :
} -- lua_table.i18n.es
lua_table.i18n.fr = {
luaTable_recursive_luaTable_title = "MediaWiki lua_table récursiverécursive",
luaTable_rough_view_tests_title = "lua_table.rough_view() Test: Former un code Lua grossier d'une table",
luaTable_structure_level_maxi = "Limite de niveau recursif = <b>%1</b> ",
luaTable_table_listlimit_max_n = "Limite de longueur max_n = <b>%1</b> ",
lua_table_structure_recursive_report= "lua_table.structure() Lister une table, test avec ou sans limites :",
luaTable_toList_tests_title = "lua_table.to_list() Retourne une liste àà partir d'une table Lua.",
luaTable_toList_tests_headers = "Cas testétesté; Table àà lister, vue brute; Liste de sortie",
luaTable_toTable_tests_title = "lua_table.to_table() Test: convertir une phrase en table de mots",
luatable_form_subcounts_subtables = "La table <b>%1</b> compte <b>%2</b> variables, <b>%3</b> sous-tables, <b>%4</b> fonctions.",
Ligne 3 408 ⟶ 4 000 :
luaTable_fromsubnames_subtable_err = "Erreur interne: dans langs.sub_i18n_counts(), <b>%1</b> n'est pas une sous-table dans subnames <b>%2</b>.",
luaTable_form_sub_counts_type_err = "Un <b>%1</b> remplace la table : <b>%2</b>.",
-- luaTable_fromsubnames_missing_err = "Erreur interne : in lua_table.form_sub_counts() La recherche de cette sous-table <b>%1</b> n'a trouvétrouvé que celle-ci <b>%2</b>.", obsolete
luaTable_fromsubnames_tests_headers = "Sous-nom; Table de base; Taille de la table; EntréeEntrée lua_table.rough_view",
luaTable_table_dont_exists_err = "La table <b>%1</b> n'existe pas.",
luaTable_table_args_source_title = "lua_table.structure() Table des arguments reçusreçus, args_source :",
luaTable_tables_differences_title = "signaler les différencesdifférences entre 2 tables.",
} -- lua_table.i18n.fr
lua_table.i18n.hu = {
luaTable_recursive_luaTable_title = "MediaWiki lua_table rekurzív",
luaTable_rough_view_tests_title = "lua_table.rough_view() Teszt: Formázz egy durva Lua kódot egy asztaltól",
luaTable_structure_level_maxi = "Rekurzív szintű határérték = <b>%1</b> ",
luaTable_table_listlimit_max_n = "Hossza határ max_n = <b>%1</b> ",
lua_table_structure_recursive_report= "lua_table.structure() Sorolja fel a táblázatot, próbálkozzon korlátozásokkal vagy anélkül :",
luaTable_toList_tests_title = "lua_table.to_list() Visszaad egy listát egy Lua asztalról.",
luaTable_toList_tests_headers = "Esettanulmány; Táblázat lista, durva nézet; Kiadási lista",
luaTable_toTable_tests_title = "lua_table.to_table() Teszt: egy mondatot egy szótáblára konvertál",
luatable_form_subcounts_subtables = "A <b>%1</b> táblázatok <b>%2</b> változókat, <b>%3</b> al-táblákat, <b>%4</b>.",
luaTable_fromsubnames_base_err = "Belső hiba: be langs.sub_i18n_counts(), alap nem áll rendelkezésre az almenük táblázata számára <b>%1</b>.",
luaTable_fromsubnames_subtable_err = "Belső hiba: be langs.sub_i18n_counts(), A <b>%1</b> nem alatti név az almenekben <b>%2</b>.",
luaTable_form_sub_counts_type_err = "A <b>%1</b> táblázat helyettesíti az asztalt: <b>%2</b>.",
luaTable_fromsubnames_tests_headers = "Sub-név; Base asztal; A táblázat mérete; belépés lua_table.rough_view",
luaTable_table_dont_exists_err = "A <b>%1</b> táblázat nem létezik.",
luaTable_table_args_source_title = "lua_table.structure() A kapott érvek táblázata, args_source :",
luaTable_tables_differences_title = "Jelenteni a különbségeket a két táblázat között.",
} -- lua_table.i18n.hu
lua_table.i18n.vi = {
luaTable_recursive_luaTable_title = "MediaWiki lua_table đệ quy",
luaTable_rough_view_tests_title = "lua_table.rough_view() Kiểm tra: Tạo thành một mã Lua thô từ một bảng",
luaTable_structure_level_maxi = "Giới hạn mức đệ quy = <b>%1</b> ",
luaTable_table_listlimit_max_n = "Giới hạn độ dài max_n = <b>%1</b> ",
lua_table_structure_recursive_report= "lua_table.structure() Liệt kê một bảng, kiểm tra có hoặc không có giới hạn:",
luaTable_toList_tests_title = "lua_table.to_list() Trả về danh sách từ bảng Lua.",
luaTable_toList_tests_headers = "Trường hợp được kiểm tra; Bảng vào danh sách, xem thô; Danh sách phát hành",
luaTable_toTable_tests_title = "lua_table.to_table() Kiểm tra: chuyển đổi một câu thành một bảng từ",
luatable_form_subcounts_subtables = "Bảng <b>%1</b> đếm <b>%2</b> biến, <b>%3</b> bảng phụ, <b>%4</b> chức năng.",
luaTable_fromsubnames_base_err = "Lỗi nội bộ: trong ngôn langs.sub_i18n_counts(), cơ sở không có sẵn cho bảng subnames <b>%1</b>.",
luaTable_fromsubnames_subtable_err = "Lỗi nội bộ: trong ngôn langs.sub_i18n_counts(), <b>%1</b> không phải là một bảng phụ trong subnames <b>%2</b>.",
luaTable_form_sub_counts_type_err = "Một <b>%1</b> thay thế bảng: <b>%2</b>.",
luaTable_fromsubnames_tests_headers = "Sub-tên; Bảng cơ sở; Kích thước để bảng; lối vào lua_table.rough_view",
luaTable_table_dont_exists_err = "Bảng <b>%1</b> không tồn tại.",
luaTable_table_args_source_title = "lua_table.structure() Bảng đối số nhận được, args_source:",
luaTable_tables_differences_title = "Báo cáo sự khác biệt giữa 2 bảng.",
} -- lua_table.i18n.vi
 
function lua_table.from_subnames_object(sub_names, base_table) -- Get the last sub-object from its sub-names, but not a table.
Ligne 3 462 ⟶ 4 018 :
else break end -- get the last object which is not a table
end
-- example for a function : lua_table.from_subnames_object("versions.Boîte déroulante", base_table) -- Get the function from its sub-names.
-- example for a return : lua_table.from_subnames_object("versions.DropBox", base_table) -- Replace the function name by the sought one's.
-- p_template_drop_box_name = 'Boîte déroulante', -- Modèle:Boîte déroulante for drop_box.form
-- example : get : form9content("p_template_drop_box_name" -- previous function name 'Boîte déroulante', -- Modèle:Boîte déroulante for drop_box.form
-- example : return lua_table.from_subnames_object("versions.DropBox", base_table) -- Replace the function name by the sought one's.
return sub_obj
end
Ligne 3 561 ⟶ 4 112 :
end
pre_counts = counts
counts.tt = viewers.form9usertranslate_user( "\n* counts: %1, %2, %3, %4, %5, %6.", counts.i, counts.partname, counts.endi18n, counts.strings_c, counts.tables_c, counts.all_strings)
if loop > 99 then break end
end
Ligne 3 938 ⟶ 4 489 :
end -- function lua_table.count_tests(t)
 
-- opt = { onedropdropit.onedropdropit = "onedropdropit", level_maxi = 3, max_n = 2, exclude1 = "hou" } ) -- example of use , {width = "88%", tc1 = "blue"}
function lua_table.normal_options(opt, recursiveLevel, recursive_limit) -- Normalize lua_table options.
if type(opt) ~= "table" then opt = {} end
Ligne 3 966 ⟶ 4 517 :
local continue = true
if opt.level > opt.recursive_limit then -- Limit the number of levels of sub-tables to opt.recursive_limit
local col = viewers.styles_color_warning( viewers.form9usertranslate_user( '%1 = %2', "recursive_limit", opt.recursive_limit) )
t = t .. viewers.form9usertranslate_user( '{ %1 }', col )
else
shift = "\n" .. string.rep(":", opt.level)
Ligne 3 973 ⟶ 4 524 :
n = n + 1
if n > opt.max_n then -- Limit the number of elements in each-subtable to opt.max_n.
local col = viewers.styles_color_warning( viewers.form9usertranslate_user( '%1 = %2', "max_n", opt.max_n ) )
continue = false
end
if continue then
if (type(k) == "string")
then t = t .. viewers.form9usertranslate_user( '["%1"] = %2, ', k, tostring(v), shift )
else t = t .. viewers.form9usertranslate_user( '[%1] = %2, ', tostring(k), tostring(v), shift ) end
end
end
Ligne 3 985 ⟶ 4 536 :
n = n + 1
if n > opt.max_n then
local col = viewers.styles_color_warning( viewers.form9usertranslate_user( '%1 = %2', "max_n", opt.max_n ) )
continue = false
end
Ligne 3 995 ⟶ 4 546 :
opt.level = (opt.level or 1) - 1
shift = "\n" .. string.rep(":", opt.level)
t = t .. viewers.form9usertranslate_user( '%3 ["%1"] = %2 ', k, tt, shift )
elseif (type(v) == "function") then
t = t .. viewers.form9usertranslate_user( '%3 ["%1"] = %2() ', k, "function", shift )
elseif (type(v) == "nil") then
t = t .. viewers.form9usertranslate_user( '%3 %1 = %2() ', k, "nil", shift )
end
end
Ligne 4 073 ⟶ 4 624 :
local list = not opt.countonly
if recursiveLevel > opt.level_maxi then -- limit the number of the level of sub-tables
local t_levelmaxi = viewers.form9usertranslate_user("luaTable_structure_level_maxi", recursiveLevel)
return viewers.styles_color_warning( tostring(t_levelmaxi ) ), tot_vars, tot_func, tot_tabs
end
Ligne 4 103 ⟶ 4 654 :
if list then lst_subtabs = lst_subtabs .. st end
else
local t_levelmaxi = viewers.form9usertranslate_user("luaTable_structure_level_maxi", recursiveLevel)
if list then res = res .. " " .. viewers.styles_color_warning( t_levelmaxi ) end
end
local sep = ""
if max == opt.max_n then
local luaTable_table_listlimit_max_n = viewers.form9usertranslate_user("luaTable_table_listlimit_max_n", opt.max_n)
if list then res = res .. "\n" .. shift .. " Table <b>" .. levelname .. "</b> " .. viewers.styles_color_warning(luaTable_table_listlimit_max_n) end
break
Ligne 4 148 ⟶ 4 699 :
lua_table.tablim.house = { "kitcheen", "bedroom"}
lua_table.tablim.house.garden = { flower = "rose", nature = "river"}
-- opt = { onedropdropit.onedropdropit = "onedropdropit", level_maxi = 3, max_n = 2, exclude1 = "hou" } ) -- , {width = "88%", tc1 = "blue"}
 
function lua_table.structure(table, tablename, opt)
Ligne 4 171 ⟶ 4 722 :
opt.countonly = opt.countonly and true
local tot_vars, tot_func, tot_tabs = 0, 0, 0
if recursiveLevel > opt.level_maxi then -- even for abnormal limit -- Erreur Lua dans Module:Centralizer-s-fr àà la ligne 7271 : attempt to compare number with nil.
return "", tot_vars, tot_func, tot_tabs
end
Ligne 4 180 ⟶ 4 731 :
tot_tabs = tot_tabs + tb
res = res .. "\n* Content of the <b>" .. tostring(tablename) .. "</b> table, end: "
res = res .. viewers.form9usertranslate_user(" %1 variables, %2 functions, %3 sub-tables.\n", vr, fn, tb)
viewers.restore_configs(memo, "lua_table.structure") -- Restore global configurations after eventual changes.
return res, tot_vars, tot_func, tot_tabs
Ligne 4 188 ⟶ 4 739 :
local t = t or "\n* <b>lua_table.structure()</b> List the structure of a table, with or without limits"
local t = t .. "\n* lua_table.structure() List a table, <b>test with limits</b>:"
local opt = { ["onedropdropit"] = "onedropdropit", ["level_maxi"] = 3, ["max_n"] = 2, ["exclude1"] = "hou" }
local res, tot_vars, tot_func, tot_tabs = lua_table.structure(lua_table.tablim, "lua_table.tablim", opt)
local t = t .. res -- luaTable_structure_limits_title
Ligne 4 214 ⟶ 4 765 :
mathroman.i18n.de = {
mathroman_errors_head_err = "Fehler: ",
mathroman_roman_err = "RömischerRömischer Fehler: ",
mathroman_value_error_err = "Wert Fehler: ",
mathroman_J_before_end_err = "J Zeichen vor dem Ende",
Ligne 4 223 ⟶ 4 774 :
mathroman_rom2dig_value_err = "Roman Wert Fehler",
mathroman_dig2rom_value_err = "Dezimalwertfehler",
mathroman_roman2int_tests_title = "mathroman.roman2int() Test römischerrömischer Zahlen in Dezimalzahlen",
mathroman_roman2int_tests_headers = "RömischeRömische Nummer; Dezimalwert; Richtig; Error (s)",
mathroman_int2roman_test_title = "mathroman.int2roman() Test von Dezimalzahlen in römischenrömischen Zahlen",
mathroman_int2roman_tests_headers = "Dezimalzahl; RömischerRömischer Wert; Richtig; Error (s)",
mathroman_int_is_not_integer_err = "Das nicht ganzzahlige <b>%1</b> ist nicht in römischerömische Zahl umwandelbar",
mathroman_int_is_not_number_err = "Der Wert <b>%1</b> ist keine Zahl, die in eine römischerömische Zahl umgewandelt werden kann",
mathroman_is_not_string_err = "Der Wert <b>%1</b> ist kein konvertierbarer Text in der Zahl",
} -- mathroman.i18n.de
Ligne 4 254 ⟶ 4 805 :
mathroman_roman_err = "Error de romano: ",
mathroman_value_error_err = "Error de valor: ",
mathroman_J_before_end_err = "CarácterCarácter J antes del fin",
mathroman_char_X_in_N_err = "CarácterCarácter <b>%1</b> en <b>%2</b>",
mathroman_char_increase_err = "3 crecientes caracteres",
mathroman_greater_4999_err = "Valor > 4999",
Ligne 4 261 ⟶ 4 812 :
mathroman_rom2dig_value_err = "Romano valor error",
mathroman_dig2rom_value_err = "Decimale valor error",
mathroman_roman2int_tests_title = "mathroman.roman2int() Prueba de númerosnúmeros romanos a númerosnúmeros decimales",
mathroman_roman2int_tests_headers = "NúmeroNúmero romano; Valor digital; Corregido; Error(s)",
mathroman_int2roman_test_title = "mathroman.int2roman() Prueba de númerosnúmeros decimales a númerosnúmeros romanos",
mathroman_int2roman_tests_headers = "NúmeroNúmero decimal, Valor romana; Correcto; Error(es),",
mathroman_int_is_not_integer_err = "El no entero <b>%1</b> no se puede convertir en númeronúmero romano",
mathroman_int_is_not_number_err = "El valor <b>%1</b> no es un númeronúmero y no se puede convertir en númeronúmero romano",
mathroman_is_not_string_err = "El valor <b>%1</b> no es un texto y no se puede convertir en númeronúmero",
} -- mathroman.i18n.es
mathroman.i18n.fr = {
Ligne 4 273 ⟶ 4 824 :
mathroman_roman_err = "Erreur de romain : ",
mathroman_value_error_err = "Erreur de valeur : ",
mathroman_J_before_end_err = "CaractèreCaractère J avant la fin",
mathroman_char_X_in_N_err = "CaractèreCaractère <b>%1</b> en <b>%2</b>",
mathroman_char_increase_err = "3 caractèrescaractères croissants",
mathroman_greater_4999_err = "Valeur > 4999",
mathroman_null_value_err = "Valeur nulle",
mathroman_rom2dig_value_err = "Erreur de valeur de nombre romain",
mathroman_dig2rom_value_err = "Erreur de valeur décimaledécimale",
mathroman_roman2int_tests_title = "mathroman.roman2int() Test des nombres romains en nombres décimauxdécimaux",
mathroman_roman2int_tests_headers = "Nombre romain; Valeur décimaledécimale; Correct; Erreur(s)",
mathroman_int2roman_test_title = "mathroman.int2roman() Test des nombres décimauxdécimaux en nombres romains",
mathroman_int2roman_tests_headers = "Nombre décimaldécimal; Valeur romaine; Correct; Erreur(s)",
mathroman_int_is_not_integer_err = "Le nombre non entier <b>%1</b> n'est pas convertible en nombre romain",
mathroman_int_is_not_number_err = "La valeur <b>%1</b> n'est pas un nombre convertible en nombre romain",
mathroman_is_not_string_err = "La valeur <b>%1</b> n'est pas un texte convertible en nombre",
} -- mathroman.i18n.fr
mathroman.i18n.hu = {
mathroman_errors_head_err = "Hiba: ",
mathroman_roman_err = "Római hiba: ",
mathroman_value_error_err = "Értékhiba: ",
mathroman_J_before_end_err = "Karakter J a vége előtt",
mathroman_char_X_in_N_err = "<b>%1</b> karakter <b>%2</b> -ben",
mathroman_char_increase_err = "3 növekvő karakter",
mathroman_greater_4999_err = "Érték > 4999",
mathroman_null_value_err = "Null érték",
mathroman_rom2dig_value_err = "Római számérték hiba",
mathroman_dig2rom_value_err = "Tizedes érték hiba",
mathroman_roman2int_tests_title = "mathroman.roman2int() A római számok tizedes számok tesztelése",
mathroman_roman2int_tests_headers = "Római szám; Decimális érték; helyes; Hiba (k)",
mathroman_int2roman_test_title = "mathroman.int2roman() A decimális számok vizsgálata római számokban",
mathroman_int2roman_tests_headers = "Tizedes szám; Római érték; helyes; Hiba (k)",
mathroman_int_is_not_integer_err = "A nem egész <b>%1</b> nem konvertálható a római számra",
mathroman_int_is_not_number_err = "A <b>%1</b> érték nem egy szám, amely átváltható egy római számra",
mathroman_is_not_string_err = "Az <b>%1</b> érték nem konvertibilis szöveg",
} -- mathroman.i18n.hu
mathroman.i18n.vi = {
mathroman_errors_head_err = "Lỗi: ",
mathroman_roman_err = "Lỗi roman: ",
mathroman_value_error_err = "Lỗi giá trị: ",
mathroman_J_before_end_err = "Ký tự J trước khi kết thúc",
mathroman_char_X_in_N_err = "<b>%1</b> ký tự trong <b>%2</b>",
mathroman_char_increase_err = "3 ký tự tăng",
mathroman_greater_4999_err = "Giá trị> 4999",
mathroman_null_value_err = "Giá trị rỗng",
mathroman_rom2dig_value_err = "Lỗi giá trị số La Mã",
mathroman_dig2rom_value_err = "Lỗi giá trị thập phân",
mathroman_roman2int_tests_title = "mathroman.roman2int() Kiểm tra các số La Mã trong các số thập phân",
mathroman_roman2int_tests_headers = "Số La Mã; Giá trị thập phân; chính xác; Lỗi",
mathroman_int2roman_test_title = "mathroman.int2roman() Kiểm tra các số thập phân trong số La Mã",
mathroman_int2roman_tests_headers = "Số thập phân; Giá trị La Mã; chính xác; lỗi",
mathroman_int_is_not_integer_err = "Số nguyên <b>%1</b> không thể chuyển đổi thành số La Mã",
mathroman_int_is_not_number_err = "Giá trị <b>%1</b> không phải là số có thể chuyển đổi thành số La Mã",
mathroman_is_not_string_err = "Giá trị <b>%1</b> không phải là văn bản có thể chuyển đổi trong số",
} -- mathroman.i18n.vi
 
-- vueRomains : XIJ=12 MCXI=1111 MCDXLIV=1444 MDCLXVI=1666 MCMXCIX=1999 MMCCXXII=2222 MMMMCMXCIX=4999 ERREURS=0 erreur caractere S en 7. XIA=11 erreur caractere A en 3. XJI=12 erreur caractere J avant la fin. IXC=89 erreur caracteres croissants. VLD=445 erreur caracteres croissants. MMMMM=5000 erreur > 4999. MMMMMYJXC=5089 erreur > 4999. erreur caractere Y en 6. erreur caractere J avant la fin.
Ligne 4 492 ⟶ 5 005 :
function mathroman.roman2int_tests(t) -- Tests of main central modules -- S170606rmn
local memo = viewers.save_configs("mathroman.roman2int_tests") -- Save global configuration before eventual changes.
local t = t or "\n* " .. viewers.form9usertranslate_user("mathroman_roman2int_tests_title")
local tab_view = { -- Group datas and options for a table view with lines and columns.
tests_title = "mathroman_roman2int_tests_title", -- "mathroman.roman2int() Test roman to digital numbers"
Ligne 4 518 ⟶ 5 031 :
function mathroman.int2roman_test(t) -- Unitary tests of mathroman.int2roman
local memo = viewers.save_configs("mathroman.int2roman_test") -- Save global configuration before eventual changes.
local t = t or "\n* " .. viewers.form9usertranslate_user("mathroman_int2roman_test_title")
local tab_view = { -- Group datas and options for a table view with lines and columns.
tests_title = "mathroman_int2roman_test_title", -- "mathroman.int2roman() Test digital numbers to roman numbers"
Ligne 4 621 ⟶ 5 134 :
modes.cat_view = "" -- = ":" to document a category rather than truly categorize it
modes.i18n = {} -- Translations for modes library
 
modes.i18n.de = {
-- Namen und Beschreibungen von Konfigurationsargumenten
Ligne 4 642 ⟶ 5 156 :
QITEM = 'QITEM',
uri = 'uri',
QITEM_descr = "Name der Wikidata-Daten wie <code>Q535</code> fürfür Victor Hugo.",
itemid = 'itemid',
itemid_descr = "Name der Wikidata-Daten wie <code>Q535</code> fürfür Victor Hugo.",
itemid2 = 'id',
itemid2_descr = "Name der Wikidata-Daten wie <code>Q535</code> fürfür Victor Hugo.",
debug = 'debug',
category = 'Kategorie',
Ligne 4 652 ⟶ 5 166 :
mode_descr = "Art der Verwendung des Moduls oder Modells: Lesen, Bearbeiten, Dokumentieren, Testen.",
options = 'opciones',
options_descr = "Anzeigeoptionen fürfür ein Modul oder ein Modell.",
c = "c",
c_descr = "Anzeigeoptionen fürfür ein Modul oder ein Modell.",
knownversions = "knownversions",
knownversions_descr = "Bekannte Versionen, um mit ihnen umzugehen.",
Ligne 4 663 ⟶ 5 177 :
-- Titel der Pruebas
modes_used_options_list_title = "modes.used_options_list() Verwendung von Optionen:",
modes_options_uses_tests_title = "modes.options_from_mode_tests() Modi und Optionen in KürzeKürze",
versions_bind_arguments_tests_title = "modes.options_from_args_tests() Testmodusoptionen",
modes_options_from_args_title = "Optionen fürfür das Testen von Argumenten",
-- Gruppen von Argumenten
modes_needed_to_verify = "(obligatorio, se debe comprobar)",
Ligne 4 674 ⟶ 5 188 :
-- Haupttexte, Fehler und Instrumentenkategorien
modes_language_cat = 'Sprechen <b>%1</b>',
modes_date_months_names = "Januar, Februar, MärzMärz, April, Mai, Juni, Juli, August, September, Oktober, November, Dezember",
modes_date_to_part_format = "dd mmmm yyyy",
modes_date_to_part_call_err = "Interner Fehler: anomale Aufrufargumente am Datum <b>%1</b>.",
Ligne 4 680 ⟶ 5 194 :
modes_date_to_part_not_found_err = "Interner Fehler: Nicht am Datum gefunden <b>%1</b>.",
-- Kontrolle der Argumente
modes_error_list_header_err = "UnterstützungUnterstützung in den Parametern dieses Modells:",
modes_need_arg_value_err = "Fehler: Sie müssenmüssen dieses notwendige Argument beheben, aber es fehlt: <b>%1</b>.",
modes_none_value_err = "Fehler: Es wurde kein Argument definiert.",
modes_unknown_argument_err = "Fehler: Der Parameter <b>%1</b> ist in diesem Modell unbekannt. ÜberprüfenÃœberprüfen Sie den Namen oder melden Sie diesen Fehler.",
modes_too_unnamed_arguments_err = "Fehler: Zu viel Argument ohne einen Namen: <b>%1</b> = <b>%2</b>.",
modes_without_translation_wsid_err = "Interner Fehler: Informiere den Entwickler, dass das interne Argument <b>%1</b> ist in den Aufzeichnungen unbekannt.",
Ligne 4 692 ⟶ 5 206 :
modes_args_values_err = "Abnormaler Wert des Arguments <b>%1</b> = <b>%2</b> zwischen: (<b>%3</b>) ",
modes_nearest_argument_err = "Fehler : Willst du das bekannte Argument <b>%1</b> ?",
modes_max_nearest_argument_msg = "LängeresLängeres Namensargument akzeptiert mehr Buchstabenfehler.",
modes_value_re_defined_err = "Fehler: Der Wert des Arguments <b>%1</b> ist bereits definiert. WählenWählen Sie nur einen Wert eines einzelnen Synonyms aus",
modes_lang_table_err = "Fehler: Die Sprache <b>%1</b> oder ihre Tabelle ist falsch.",
modes_lang_table_err_i_cat = "Modul mit internem Fehler", -- modes_lang_table_err_i_cat
modes_lang_table_err_i_cat = "Modul mit der Sprache der fehlerhaften Argumente", -- modes_no_source_arguments_cat
modes_lang_not_translated_err = "Fehler: Die Sprache <b>%1</b> ist nicht übersetztübersetzt.",
modes_generDoc1_paramName_err = "Fehler intern: in generDoc1, schlechtes Argument <b>%1</b>.",
--
modes_unknown_auto_arg_err = "Interner fehler: Automatisches unbekanntes Argument: <b>%1</b> = <b>%2</b>.",
modes_delete_docbox_wng = "Sie müssenmüssen diese Dokumentation vor dem Brennen entfernen.<br>Entfernen Sie alle Modi, um in den Lesemodus zurückzukehrenzurückzukehren.",
modes_auto_val_warning_wng = "ÜberprüfenÃœberprüfen Sie die automatischen Argumente.",
--
modes_assist_user_param_err = "BenutzerunterstützungBenutzerunterstützung zur ÜberprüfungÃœberprüfung der Konfiguration:",
modes_args_values_err = "Abnormaler Wert des Arguments <b>%1</b> = <b>%2</b> (%3)",
modes_no_known_arguments_err = "Fehler intern: Modul ohne Tabelle mit bekannten Argumenten.",
Ligne 4 711 ⟶ 5 225 :
modes_no_source_arguments_i_cat = "Modul ohne Quellenargumententabelle.",
modes_list_all_args_main_title = "modes.list_all_args_main() Liste aller akzeptierten Argumente",
modes_levenshtein_similar_tests_title= "modes.levenshtein() Beweis der Entfernungen <b>[https://es.wikipedia.org/wiki/Distancia_de_Levenshtein Levenshtein]</b> zwischen den WörternWörtern:",
modes_args_known_structure_title = "modes.args_known_structure() Definitionen von Argumenten",
modes_args_unknown_report_title = "viewers.simple_list_test() Melden Sie unbekannte Argumente",
modes_normal_box_main_text_1 = "Einfaches Informationsfeld: Titel der Seite: <b>%1</b>, Beschreibung: <b>%2</b>",
modes_normal_box_main_text_2 = "<br/>Er war ein <b>%1</b>, heißtheißt <b>%2</b> <b>%3</b> war in gestorben <b>%4</b>.",
-- Diese Texte werden verwendet, um einige Tests zu benennen.
modes_list_wiki_selectors_title = "Liste der Selektoren in diesem Modul:",
modes_all_categories_list_title = "modes.all_categories_list() Liste der möglichenmöglichen Kategorien dieses Moduls:",
modes_all_errors_list_title = "modes.all_errors_list() Liste der erkennbaren Fehler in diesem Modul:",
modes_multiple_values_tests_title = "modes.multiple_values() Testen mehrerer Argumentwerte",
modes_multiple_selection_tests_title= "modes.multiple_selection() Mehrfachauswahltest",
modes_multiple_selection_test_headers= "Optionen; Auswahl; Um auszuwählenauszuwählen; AusgewähltAusgewählt",
modes_multiple_selection_test_select= "2; nobel; PräsidentPräsident; stellvertretender; Preis",
modes_recursiveLevel_err = "Fehler der rekursiven Ebene <b>%1</b> > <b>%2</b>",
modes_recursive_normal_tests_title = "modes.recursive_normal() Test: Normalisieren Sie die rekursive Ebene und die rekursive Grenze",
modes_namespaces_page_list_title = "modes.namespaces_page_list() Module, Namespaces und Seitennamen:",
modes_args_known_report_title = "modes.args_known_report(t) Bericht der wichtigsten bekannten Argumente.",
modes_args_known_report_headers = "SchlüsselSchlüssel Wert tippen Sie ein; notwendig SchlüsselwortSchlüsselwort Synonyme; Eigentum; Format; Brunnen",
modes_get_args_report_title = "modes.get_args() Werte der Argumente in p.args_known{}.", -- es
} -- modes.i18n.de
Ligne 4 854 ⟶ 5 368 :
["modules_guide"] = "Argument modules_guide",
label = 'label',
label_descr = "Wikidata automáticaautomática argumento.",
sitelink = 'sitelink',
sitelink_descr = "Wikidata automáticaautomática argumento.",
-- Languages
contentlang = "contentlang",
contentlang_descr = "Idioma del wiki.",
pagelang = "pagelang",
pagelang_descr = "Idioma de la páginapágina.",
userlang = "userlang",
userlang_descr = "Idioma del lector de la páginapágina.",
--
QITEM = 'QITEM',
Ligne 4 873 ⟶ 5 387 :
itemid2_descr = "Nombre de los datos Wikidata, como <code>Q535</code> para Victor Hugo.",
debug = 'debug',
category = 'CategoríaCategoría',
mode = "modo",
mode_descr = "Tipo de uso del módulomódulo o modelo: leer, editar, documentar, probar.",
options = 'opciones',
options_descr = "Opciones de visualizaciónvisualización de un módulomódulo o un modelo.",
c = "c",
c_descr = "Opciones de visualizaciónvisualización de un módulomódulo o un modelo.",
knownversions = "knownversions",
knownversions_descr = "Conocidas versiones, para manejarlos.",
soughtversions = "soughtversions",
soughtversions_descr = "Versiones demanda, para manejarlos.",
modes_form_ok_categ_tests = "Prueba generacióngeneración categoríacategoría en OK",
--
-- Titres des pruebas
Ligne 4 894 ⟶ 5 408 :
modes_needed_to_verify = "(obligatorio, se debe comprobar)",
modes_list_needed_args = "Lista de argumentos necesarios:",
modes_list_all_config_arguments = "Lista de argumentos de configuraciónconfiguración:",
modes_list_all_system_arguments = "Lista de argumentos del sistema:",
modes_list_all_other_args = "Lista de los otros argumentos:",
-- Textos principales, errores y categoríascategorías de instrumentos
modes_language_cat = 'Hablando <b>%1</b>',
modes_date_months_names = "Enero, Febrero, Marzo, Abril, Mayo, Junio​​Junio​​, Julio, Agosto, Septiembre, Octubre, Noviembre, Diciembre",
modes_date_to_part_format = "dd mmmm yyyy",
modes_date_to_part_call_err = "Error interno: argumentos de llamadas anómalaanómala en fecha <b>%1</b>.",
modes_date_to_part_call_cat = "MóduloMódulo con error interno",
modes_date_to_part_not_found_err = "Error interno: No se encuentra en fecha <b>%1</b>.",
-- Control de argumentos
modes_error_list_header_err = "Asistencia de los parámetrosparámetros de este modelo:",
modes_need_arg_value_err = "Error: Usted tiene que fijar este argumento necesario, pero falta: <b>%1</b>.",
modes_none_value_err = "Error: No hay argumento se ha definido.",
modes_unknown_argument_err = "Error: El parámetroparámetro <b>%1</b> es desconocido en este modelo. Compruebe el nombre o reportar esta falta.",
modes_too_unnamed_arguments_err = "Error: Demasiado argumento sin nombre: <b>%1</b> = <b>%2</b>.",
modes_without_translation_wsid_err = "Error interno: Informar al el desarrollador que el argumento interno <b>%1</b> es desconocido en los registros.",
modes_is_defined_err = "El argumento <b>%1</b>:<b>%2</b> estáestá definido.",
modes_is_undefined_err = "El argumento <b>%1</b>:<b>%2</b> no estáestá definido.",
modes_args_values_err = "Valor anormal del argumento <b>%1</b> = <b>%2</b> entre: (%3) ",
modes_nearest_argument_err = "Error : ¿Es usted conocido argumento <b>%1</b> ?",
modes_max_nearest_argument_msg = "Un argumento nombre másmás largo acepta másmás letras errores.",
modes_value_re_defined_err = "Error: El valor del argumento <b>%1</b> ya estáestá definido. Elija sólosólo un valor de un solo sinónimosinónimo",
modes_lang_table_err = "Error: La <b>1%</b> idioma o su tabla es incorrecta.",
modes_lang_table_err_i_cat = "MóduloMódulo con error interno", -- modes_lang_table_err_i_cat
modes_lang_table_err_i_cat = "MóduloMódulo con lenguaje de argumentos erróneoserróneos", -- modes_no_source_arguments_cat
modes_lang_not_translated_err = "Error: El lenguaje <b>%1</b> no se traduce.",
modes_generDoc1_paramName_err = "Error interno: en generDoc1, mal argumento <b>%1</b>.",
--
modes_unknown_auto_arg_err = "Error interno: Argumento desconocido automáticoautomático: <b>%1</b> = <b>%2</b>.",
modes_delete_docbox_wng = "Debe quitar esta documentacióndocumentación antes de grabar.<br>Retire todos los modos para volver al modo read.",
modes_auto_val_warning_wng = "Verifique el argumentos automáticosautomáticos.",
--
modes_assist_user_param_err = "Apoyo al usuario para comprobar la configuraciónconfiguración:",
modes_args_values_err = "Valor anormal del argumento <b>%1</b> = <b>%2</b> (%3)",
--
modes_no_known_arguments_err = "Error interno: MóduloMódulo sin tabla de argumentos conocidos.",
modes_no_known_arguments_i_cat = "MóduloMódulo sin tabla de argumentos conocidos.",
modes_no_source_arguments_err = "Error interno: MóduloMódulo sin tabla de argumentos fuentes.",
modes_no_source_arguments_i_cat = "MóduloMódulo sin tabla de argumentos fuente.",
 
modes_list_all_args_main_title = "modes.list_all_args_main() Lista de todos los argumentos aceptados",
Ligne 4 939 ⟶ 5 453 :
modes_args_known_structure_title = "modes.args_known_structure() Definiciones de argumentos",
modes_args_unknown_report_title = "viewers.simple_list_test() Informar argumentos desconocidos",
modes_normal_box_main_text_1 = "Simple caja de informacióninformación: TítuloTítulo de la páginapágina: <b>%1</b>, descripcióndescripción: <b>%2</b>",
modes_normal_box_main_text_2 = "<br/>ÉlÉl era un <b>%1</b>, es nombrado <b>%2</b> <b>%3</b> habíahabía muerto en <b>%4</b>.",
-- Estos textos se utilizan para titular algunas pruebas.
modes_list_wiki_selectors_title = "Lista de las selectores de este modulo:",
modes_all_categories_list_title = "modes.all_categories_list() Lista de las posibles categoríascategorías de este modulo:",
modes_all_errors_list_title = "modes.all_errors_list() Lista de los errores detectables de este modulo:",
modes_multiple_values_tests_title = "modes.multiple_values() Prueba de múltiplesmúltiples valores argumentos",
modes_multiple_selection_tests_title= "modes.multiple_selection() Prueba de selecciónselección múltiplemúltiple",
modes_multiple_selection_test_headers= "Opciones;Selector;Para seleccionar;Seleccionadas",
modes_multiple_selection_test_select= "2;nobel;presidente;diputado;precio",
modes_recursiveLevel_err = "Error de nivel recursivo <b>%1</b> > <b>%2</b>",
modes_recursive_normal_tests_title = "modes.recursive_normal() Prueba: Normalizar el nivel recursivo y el límitelímite recursiva",
modes_namespaces_page_list_title = "modes.namespaces_page_list() MóduloMódulo, namespaces, y nombres de páginaspáginas:",
modes_args_known_report_title = "modes.args_known_report(t) Informe de los principales argumentos conocidos.",
modes_args_known_report_headers = "clave; valor; tipo; necesario; palabra clave; sinónimossinónimos; propiedad; formato; fuente",
modes_get_args_report_title = "modes.get_args() Valores de los argumentos en p.args_known{}.", -- es
} -- modes.i18n.es
Ligne 4 979 ⟶ 5 493 :
uri = 'uri',
itemid = 'itemid',
itemid_descr = "Identifiant des donnéesdonnées de Wikidata, comme <code>Q535</code> pour Victor Hugo.",
itemid2 = 'id',
itemid2_descr = "Autre identifiant des donnéesdonnées de Wikidata, comme <code>Q535</code> pour Victor Hugo.",
debug = 'debug',
category = 'CatégorieCatégorie',
mode = "mode",
mode_descr = "Type d'utilisation du module ou du modèlemodèle : lire, éditeréditer, documenter, tester.",
options = "options",
options_descr = "Options d'affichage d'un module ou d'un modèlemodèle.",
c = "c",
c_descr = "Options d'affichage d'un module ou d'un modèlemodèle.",
knownversions = "knownversions",
knownversions_descr = "Versions connues, pour les gérergérer.",
soughtversions = "soughtversions",
soughtversions_descr = "Versions demandéesdemandées, pour les gérergérer.",
modes_form_ok_categ_tests = "Test de générationgénération de catégoriecatégorie OK",
-- Principaux textes, erreurs et catégoriescatégories des outils
language = 'langue',
-- Messages et erreurs divers
Ligne 5 003 ⟶ 5 517 :
modes_options_from_args_title = "Test des options des arguments",
-- Groupes d'arguments
modes_needed_to_verify = "(obligatoire, àà vérifiervérifier)",
modes_list_needed_args = "Liste des arguments nécessairesnécessaires :",
modes_list_all_config_arguments = "Liste des arguments de configuration :",
modes_list_all_system_arguments = "Liste des arguments systèmesystème :",
modes_list_all_other_args = "Liste des autres arguments :",
modes_language_cat = 'Parle <b>%1</b>',
modes_date_months_names = "Janvier, FévrierFévrier, Mars, Avril, Mai, Juin, Juillet, AoûtAoût, Septembre, Octobre, Novembre, DécembreDécembre",
modes_date_to_part_format = "dd yyyy mmmm",
modes_date_to_part_call_err = "Erreur interne : Argument anormal de définitiondéfinition de date <b>%1</b>.",
modes_date_to_part_call_cat = "Module avec erreur interne",
modes_date_to_part_not_found_err = "Erreur interne : partie non définiedéfinie de date <b>%1</b>.",
-- Gestion des arguments
modes_error_list_header_err = "Assistance sur les paramètresparamètres de ce modèlemodèle :",
modes_need_arg_value_err = "Erreur : Vous devez définirdéfinir cet argument nécessairenécessaire mais absent : <b>%1</b>.",
modes_none_value_err = "Erreur : Aucun argument n'a étéété définidéfini.",
modes_unknown_argument_err = "Erreur : Le paramètreparamètre <b>%1</b> est inconnu dans ce modèlemodèle. VérifierVérifier ce nom ou signaler ce manque.",
modes_too_unnamed_arguments_err = "Erreur : Ce paramètreparamètre non nomménommé est en trop : <b>%1</b> = <b>%2</b>.",
modes_without_translation_wsid_err = "Erreur interne : Signaler au développeurdéveloppeur que l'argument interne <b>%1</b> est inconnu dans les notices.",
modes_is_defined_err = "L'argument <b>%1</b>:<b>%2</b> est définidéfini.",
modes_is_undefined_err = "L'argument <b>%1</b>:<b>%2</b> n'est pas définidéfini.",
modes_args_values_err = "Valeur anormale de l'argument <b>%1</b> = <b>%2</b> parmi : (%3) ",
-- Messages et erreurs divers
modes_nearest_argument_err = "Erreur : Voulez vous l'argument connu <b>%1</b> ?",
modes_max_nearest_argument_msg = "Un nom d'argument plus long accepte plus d'erreurs de lettres.",
modes_value_re_defined_err = "Erreur : La valeur de l'argument <b>%1</b> est déjàdéjà définiedéfinie. Choisir une seule valeur d'un seul synonyme.",
modes_lang_table_err = "Erreur interne : La langue <b>%1</b> ou sa table est erronéeerronée.",
modes_lang_table_err_i_cat = "Module avec erreur interne", -- modes_no_source_arguments_cat
modes_lang_table_err_i_cat = "Module avec langue d'arguments erronéeerronée",
modes_lang_not_translated_err = "Erreur : La langue <b>%1</b> n'est pas traduite.",
modes_generDoc1_paramName_err = "Erreur interne : en generDoc1, mauvais argument <b>%1</b>.",
Ligne 5 036 ⟶ 5 550 :
--
modes_delete_docbox_wng = "Vous devez suprimer cette documentation avant d'enregistrer.<br>Supprimez tous les modes pour revenir en mode read.",
modes_auto_val_warning_wng = "VérifiezVérifiez l'argument automatique.",
--
modes_assist_user_param_err = "Support aux utilisateurs pour vérifiervérifier les paramètresparamètres :",
modes_args_values_err = "Valeur anormale de l'argument <b>%1</b> = <b>%2</b> (%3)",
--
Ligne 5 046 ⟶ 5 560 :
modes_no_source_arguments_i_cat = "Module sans table d'arguments source.",
--
modes_list_all_args_main_title = "modes.list_all_args_main() Liste de tous les arguments acceptésacceptés",
modes_levenshtein_similar_tests_title = "modes.levenshtein() Test des distances de <b>[https://fr.wikipedia.org/wiki/Distance_de_Levenshtein Levenshtein]</b> entre mots:",
modes_args_known_structure_title = "modes.args_known_structure() DéfinitionsDéfinitions des arguments",
modes_args_unknown_report_title = "viewers.simple_list_test() Signaler les arguments inconnus",
modes_normal_box_main_text_1 = "BoîteBoîte d'information simple : titre de cette page <b>%1</b>, description : <b>%2</b>",
modes_normal_box_main_text_2 = "<br/>Il étaitétait <b>%1</b>, se nommait <b>%2</b> <b>%3</b>, il est mort en <b>%4</b>.",
-- Ces textes sont utilisésutilisés pour titrer des tests.
modes_list_wiki_selectors_title = "Liste des sélecteurssélecteurs de ce module :",
modes_all_categories_list_title = "modes.all_categories_list() Liste des catégoriescatégories éventuelleséventuelles de ce module :",
modes_all_errors_list_title = "modes.all_errors_list() Liste des erreurs détectablesdétectables de ce module :",
modes_multiple_values_tests_title = "modes.multiple_values() Test des arguments àà valeurs multiples",
modes_multiple_selection_tests_title= "modes.multiple_selection() Test de sélectionsélection multiple",
modes_multiple_selection_test_headers= "Options;SélecteurSélecteur;ÀÀ sélectionnersélectionner;SélectionnésSélectionnés",
modes_multiple_selection_test_select= "2;nobel;présidentprésident;députédéputé;prix",
modes_recursiveLevel_err = "Erreur de niveau récursifrécursif <b>%1</b> > <b>%2</b>",
modes_recursive_normal_tests_title = "modes.recursive_normal() Test: Normalise le niveau récursifrécursif et la limite récursiverécursive",
modes_namespaces_page_list_title = "modes.namespaces_page_list() Module, namespaces, et noms de pages :",
modes_args_known_report_title = "modes.args_known_report(t) Rapport des principaux arguments connus.",
modes_args_known_report_headers = "cléclé; valeur; type; nécessairenécessaire; mot-cléclé; synonyme; propriétépropriété; format; source",
modes_get_args_report_title = "modes.get_args() Valeurs des argument dans p.args_known{}.", -- fr
} -- modes.i18n.fr
 
modes.i18n.hu = {
-- Nombres y descripciones de argumentos de configuraciones
[1] = "1",
[2] = "2",
[3] = "3",
[4] = "4",
["modules_guide"] = "Argument modules_guide",
label = 'label',
label_descr = "Automatikus Wikidata argumentum.",
sitelink = 'sitelink',
sitelink_descr = "Automatikus Wikidata argumentum.",
-- Languages
contentlang = "contentlang",
contentlang_descr = "Wiki nyelv.",
pagelang = "pagelang",
pagelang_descr = "Az oldal nyelve.",
userlang = "userlang",
userlang_descr = "Az oldal olvasó nyelve.",
--
QITEM = 'QITEM',
uri = 'uri',
QITEM_descr = "Wikidata adatok neve, például Victor Hugo kódja <code>Q535</code>.",
itemid = 'itemid',
itemid_descr = "Wikidata adatok neve, például Victor Hugo kódja <code>Q535</code>.",
itemid2 = 'id',
itemid2_descr = "Wikidata adatok neve, például Victor Hugo kódja <code>Q535</code>.",
debug = 'debug',
category = 'kategória',
mode = "modo",
mode_descr = "A modul vagy modell használata: olvasás, szerkesztés, dokumentum, tesztelés.",
options = 'opciones',
options_descr = "Egy modul vagy modell megjelenítési lehetőségei.",
c = "c",
c_descr = "Egy modul vagy modell megjelenítési lehetőségei.",
knownversions = "knownversions",
knownversions_descr = "Jól ismert verziók, kezelni őket.",
soughtversions = "soughtversions",
soughtversions_descr = "Kérjen változatokat, kezelni őket.",
-- Textos principales, errores y categorías de instrumentos
modes_form_ok_categ_tests = "OK kategória-generációs teszt",
--
-- Titres des pruebas
modes_used_options_list_title = "modes.used_options_list() Az opciók használata:",
modes_options_uses_tests_title = "modes.options_from_mode_tests() Módok és lehetőségek röviden",
versions_bind_arguments_tests_title = "modes.options_from_args_tests() Tesztelési mód beállításai",
modes_options_from_args_title = "Tesztelési argumentum opciók",
-- Grupos de argumentos
modes_needed_to_verify = "(kötelező, ellenőrizze)",
modes_list_needed_args = "A szükséges érvek felsorolása:",
modes_list_all_config_arguments = "Konfigurációs argumentumok listája:",
modes_list_all_system_arguments = "Rendszer-érvek listája:",
modes_list_all_other_args = "Egyéb érvek felsorolása:",
-- Fő szövegek, hibák és műszerkategóriák
modes_language_cat = 'beszélő <b>%1</b>',
modes_date_months_names = "Január, február, március, április, május, június, július, augusztus, szeptember, október, november, december",
modes_date_to_part_format = "dd mmmm yyyy",
modes_date_to_part_call_err = "Belső hiba: anomáliás híváselméletek a dátumon <b>%1</b>.",
modes_date_to_part_call_cat = "Modul belső hibával",
modes_date_to_part_not_found_err = "Belső hiba: Nem található a dátumon <b>%1</b>.",
-- Control de argumentos
modes_error_list_header_err = "A modell paramétereinek támogatása:",
modes_need_arg_value_err = "Hiba: Meg kell oldanod ezt a szükséges érvet, de hiányzik: <b>%1</b>.",
modes_none_value_err = "Hiba: Nincs argumentum definiálva.",
modes_unknown_argument_err = "Hiba: A <b>%1</b> paraméter ismeretlen ebben a modellben. Ellenőrizze a nevet vagy jelezze ezt a hibát.",
modes_too_unnamed_arguments_err = "Hiba: túl sok argumentum a név nélkül: <b>%1</b> = <b>%2</b>.",
modes_without_translation_wsid_err = "Belső hiba: Tájékoztassa a fejlesztőt, hogy a <b>%1</b> belső argumentum ismeretlen a rekordokban.",
modes_is_defined_err = "A argumentum <b>%1</b>:<b>%2</b> definiálva van.",
modes_is_undefined_err = "A <b>%1</b>:<b>%2</b> argumentum nincs meghatározva.",
modes_args_values_err = "Az argumentum abnormális értéke <b>%1</b> = <b>%2</b> között: (<b>%3</b>) ",
modes_nearest_argument_err = "Hiba: Ismeretes az argumentum <b>%1</b> ?",
modes_max_nearest_argument_msg = "A hosszabb név argumentum több betűhibát is elfogad.",
modes_value_re_defined_err = "Hiba: Az <b>%1</b> argumentum értéke már definiált. Válasszon csak egyetlen értéket egy szinonimának",
modes_lang_table_err = "Hiba: A <b>%1</b> nyelv vagy annak táblája nem megfelelő.",
modes_lang_table_err_i_cat = "Modul belső hibával", -- modes_lang_table_err_i_cat
modes_lang_table_err_i_cat = "A téves érvek nyelvével rendelkező modul", -- modes_no_source_arguments_cat
modes_lang_not_translated_err = "Hiba: A nyelv <b>%1</b> nem fordított le.",
modes_generDoc1_paramName_err = "Belső hiba: generDoc1-ben, rossz érv <b>%1</b>.",
--
modes_unknown_auto_arg_err = "Belső hiba: Automatikus ismeretlen argumentum: <b>%1</b> = <b>%2</b>.",
modes_delete_docbox_wng = "Törölje a dokumentációt az égetés előtt.<br> Távolítsa el az összes módot, hogy visszatérjen az olvasási üzemmódba.",
modes_auto_val_warning_wng = "Ellenőrizze az automatikus érveket.",
--
modes_assist_user_param_err = "Felhasználói támogatás a konfiguráció ellenőrzéséhez:",
modes_args_values_err = "Az érv abnormális értéke <b>%1</b> = <b>%2</b> ( <b>%3</b> )",
--
modes_no_known_arguments_err = "Belső hiba: Az ismert argumentumok táblázata nélküli modul.",
modes_no_known_arguments_i_cat = "Modul tábla nélkül ismert érvekkel.",
modes_no_source_arguments_err = "Belső hiba: A tábla argumentum nélküli tábla nélküli modul.",
modes_no_source_arguments_i_cat = "Modul forrás argumentum táblázattal.Modul forrás argumentum táblázattal.",
 
modes_list_all_args_main_title = "modes.list_all_args_main() Az elfogadott érvek listája",
modes_levenshtein_similar_tests_title= "modes.levenshtein() A távolságok igazolása <b>[https://es.wikipedia.org/wiki/Distancia_de_Levenshtein Levenshtein]</b> entre las palabras:",
modes_args_known_structure_title = "modes.args_known_structure() Az érvek fogalommeghatározása",
modes_args_unknown_report_title = "viewers.simple_list_test() Ismeretlen érvek jelentése",
modes_normal_box_main_text_1 = "Egyszerű információs mező: Az oldal címe: <b>%1</b>, leírás: <b>%2</b>",
modes_normal_box_main_text_2 = "<br/><b>%1</b> névvel <b>%2</b> <b>%3</b> meghalt <b>%4</b>.",
-- Ezeket a szövegeket néhány teszt tesztelésére használják.
modes_list_wiki_selectors_title = "Ebben a modulban a szelektorkészletek listája:",
modes_all_categories_list_title = "modes.all_categories_list() A modul lehetséges kategóriái:",
modes_all_errors_list_title = "modes.all_errors_list() A modulban észlelhető hibák felsorolása:",
modes_multiple_values_tests_title = "modes.multiple_values() Több argumentum értékének vizsgálata",
modes_multiple_selection_tests_title= "modes.multiple_selection() Többszörös kiválasztási teszt",
modes_multiple_selection_test_headers= "Opciók; Kiválasztó; Kiválasztás; Kiválasztott",
modes_multiple_selection_test_select= "2; Nobel; elnök; helyettese; ár",
modes_recursiveLevel_err = "Rekurzív szint hiba <b>%1</b> > <b>%2</b>",
modes_recursive_normal_tests_title = "modes.recursive_normal() Teszt: Normalizálja a rekurzív szintet és a rekurzív határt",
modes_namespaces_page_list_title = "modes.namespaces_page_list() Modul, névterek és oldalnevek:",
modes_args_known_report_title = "modes.args_known_report(t) A legfontosabb ismert érvekről szóló jelentés.",
modes_args_known_report_headers = "kulcs; érték; írja; szükséges; kulcsszó; fordítása; tulajdon; formátumban; forrás",
modes_get_args_report_title = "modes.get_args() Az érvek értékei p.args_known{}.", -- es
} -- modes.i18n.hu
 
modes.i18n.vi = {
-- Noms et descriptions des arguments de configurations
[1] = "1",
[2] = "2",
[3] = "3",
[4] = "4",
["modules_guide"] = "Argument modules_guide",
label = 'label',
label_descr = "Đối số tự động để Wikidata.",
sitelink = 'sitelink',
sitelink_descr = "Đối số tự động để Wikidata.",
-- Languages
contentlang = "contentlang",
contentlang_descr = "Ngôn ngữ wiki.",
pagelang = "pagelang",
pagelang_descr = "Ngôn ngữ trang.",
userlang = "userlang",
userlang_descr = "Ngôn ngữ để người đọc trang.",
--
QITEM = 'QITEM',
uri = 'uri',
itemid = 'itemid',
itemid_descr = "Định danh dữ liệu Wikidata, chẳng hạn như <code>Q535</code> để Victor Hugo.",
itemid2 = 'id',
itemid2_descr = "Số nhận dạng khác để dữ liệu Wikidata, chẳng hạn như <code>Q535</code> để Victor Hugo.",
debug = 'gỡ lỗi',
category = 'Loại',
mode = "mode",
mode_descr = "Loại sử dụng mô-đun hoặc mô hình: đọc, chỉnh sửa, tài liệu, kiểm tra.",
options = "options",
options_descr = "Hiển thị tùy chọn mô-đun hoặc mô hình.",
c = "c",
c_descr = "Hiển thị tùy chọn mô-đun hoặc mô hình.",
knownversions = "knownversions",
knownversions_descr = "Các phiên bản đã biết, để quản lý chúng.",
soughtversions = "soughtversions",
soughtversions_descr = "Các phiên bản được yêu cầu, để quản lý chúng.",
-- Principaux textes, erreurs et catégories des outils
language = 'langue',
-- Messages et erreurs divers
modes_used_options_list_title = "modes.used_options_list() Sử dụng các tùy chọn:",
modes_options_uses_tests_title = "modes.options_from_mode_tests() Chế độ và tùy chọn trong ngắn hạn",
versions_bind_arguments_tests_title = "modes.options_from_args_tests() Tùy chọn chế độ thử nghiệm",
modes_options_from_args_title = "Kiểm tra đối số tùy chọn",
-- Groupes d'arguments
modes_needed_to_verify = "(bắt buộc, phải được xác minh)",
modes_list_needed_args = "Danh sách các đối số cần thiết:",
modes_list_all_config_arguments = "Danh sách các đối số cấu hình:",
modes_list_all_system_arguments = "Danh sách các đối số hệ thống:",
modes_list_all_other_args = "Danh sách các đối số khác:",
modes_language_cat = 'Nói tiếng <b>%1</b>',
modes_date_months_names = "Tháng 1, tháng 2, tháng 3, tháng 4, tháng 5, tháng 6, tháng 7, tháng 9, tháng 10, tháng 11, tháng 12",
modes_date_to_part_format = "dd yyyy mmmm",
modes_date_to_part_call_err = "Lỗi nội bộ: Đối số định nghĩa ngày bất thường <b>%1</b>.",
modes_date_to_part_call_cat = "Mô-đun có lỗi nội bộ",
modes_date_to_part_not_found_err = "Lỗi nội bộ: phần không xác định để ngày <b>%1</b>.",
-- Gestion des arguments
modes_error_list_header_err = "Hỗ trợ các thông số để mô hình này:",
modes_need_arg_value_err = "Lỗi: Bạn phải đặt đối số cần thiết nhưng vắng mặt này: <b>%1</b>.",
modes_none_value_err = "Lỗi: Không có đối số nào được xác định.",
modes_unknown_argument_err = "Lỗi: Thông số <b>%1</b> không xác định trong mẫu này. Kiểm tra tên này hoặc báo cáo sự thiếu này.",
modes_too_unnamed_arguments_err = "Lỗi: Tham số chưa đặt tên này vượt quá: <b>%1</b> = <b>%2</b>.",
modes_without_translation_wsid_err = "Lỗi nội bộ: Báo cáo cho nhà phát triển rằng đối số nội bộ <b>%1</b> không xác định trong các bản ghi.",
modes_is_defined_err = "Đối số <b>%1</b>:<b>%2</b> được đặt.",
modes_is_undefined_err = "Đối số <b>%1</b>:<b>%2</b> không được xác định.",
modes_args_values_err = "Giá trị bất thường để đối số <b>%1</b> = <b>%2</b> từ: ( <b>%3</b> ) ",
-- Messages et erreurs divers
modes_nearest_argument_err = "Lỗi: Bạn có muốn đối số <b>%1</b> đã biết không?",
modes_max_nearest_argument_msg = "Tên đối số dài hơn chấp nhận nhiều lỗi thư hơn.",
modes_value_re_defined_err = "Lỗi: Giá trị để đối số <b>%1</b> đã được đặt. Chọn một giá trị duy nhất từ một từ đồng nghĩa duy nhất.",
modes_lang_table_err = "Lỗi nội bộ: Ngôn ngữ <b>%1</b> hoặc bảng để nó sai.", -- để=để
modes_lang_table_err_i_cat = "Mô-đun có lỗi nội bộ", -- modes_no_source_arguments_cat
modes_lang_table_err_i_cat = "Mô-đun với ngôn ngữ đối số sai",
modes_lang_not_translated_err = "Lỗi: Ngôn ngữ <b>%1</b> không được dịch.",
modes_generDoc1_paramName_err = "Lỗi nội bộ: trong generDoc1, đối số không hợp lệ <b>%1</b>.",
modes_unknown_auto_arg_err = "Lỗi nội bộ: Đối số tự động không xác định: <b>%1</b> = <b>%2</b>.",
--
modes_delete_docbox_wng = "Bạn phải xóa tài liệu này trước khi lưu.<br> Xóa tất cả các chế độ để trở về chế độ đọc.",
modes_auto_val_warning_wng = "Kiểm tra đối số tự động.",
--
modes_assist_user_param_err = "Hỗ trợ người dùng để kiểm tra cài đặt:",
modes_args_values_err = "Giá trị bất thường để đối số <b>%1</b> = <b>%2</b> ( <b>%3</b> )",
--
modes_no_known_arguments_err = "Lỗi nội bộ: Mô-đun không có bảng các đối số đã biết.",
modes_no_known_arguments_i_cat = "Mô-đun không có bảng các đối số đã biết.",
modes_no_source_arguments_err = "Lỗi nội bộ: Mô-đun không có bảng đối số nguồn.",
modes_no_source_arguments_i_cat = "Mô-đun không có bảng đối số nguồn.",
--
modes_list_all_args_main_title = "modes.list_all_args_main() Danh sách tất cả các đối số được chấp nhận",
modes_levenshtein_similar_tests_title = "modes.levenshtein() Kiểm tra khoảng cách <b>[https://fr.wikipedia.org/wiki/Distance_de_Levenshtein Levenshtein]</b> entre mots:",
modes_args_known_structure_title = "modes.args_known_structure() Định nghĩa đối số",
modes_args_unknown_report_title = "viewers.simple_list_test() Báo cáo đối số không xác định",
modes_normal_box_main_text_1 = "Hộp thông tin đơn giản: tiêu đề để trang này <b>%1</b>, mô tả: <b>%2</b>",
modes_normal_box_main_text_2 = "<br/>Anh ta <b>%1</b>, tên anh ta <b>%2</b> <b>%3</b>, anh ta đã chết <b>%4</b>.",
-- Ces textes sont utilisés pour titrer des tests.
modes_list_wiki_selectors_title = "Danh sách các bộ chọn để mô-đun này:",
modes_all_categories_list_title = "modes.all_categories_list() Danh sách các danh mục có thể có để mô-đun này:",
modes_all_errors_list_title = "modes.all_errors_list() Danh sách các lỗi có thể phát hiện trong mô-đun này:",
modes_multiple_values_tests_title = "modes.multiple_values() Thử nghiệm đối số nhiều giá trị",
modes_multiple_selection_tests_title= "modes.multiple_selection() Kiểm tra nhiều lựa chọn",
modes_multiple_selection_test_headers= "Tùy chọn; Bộ chọn; Để chọn; Đã chọn",
modes_multiple_selection_test_select= "2; nobel; chủ tịch; Phó; giá",
modes_recursiveLevel_err = "Lỗi mức đệ quy <b>%1</b> > <b>%2</b>",
modes_recursive_normal_tests_title = "modes.recursive_normal() Kiểm tra: Bình thường hóa mức đệ quy và giới hạn đệ quy",
modes_namespaces_page_list_title = "modes.namespaces_page_list() Mô-đun, namespaces, và tên trang:",
modes_args_known_report_title = "modes.args_known_report(t) Báo cáo để các đối số được biết đến chính.",
modes_args_known_report_headers = "chính; giá trị; loại; cần thiết; từ khóa; đồng nghĩa; bất động sản; định dạng; nguồn",
modes_get_args_report_title = "modes.get_args() Giá trị để các đối số trong p.args_known{}.",
} -- modes.i18n.vi
 
-- - - - ------------------ - - - - ---------------------------------
-- Support of the management of options. SosténSostén de la gestióngestión de las opciones. Soutien de la gestion des options.
-- - - - ------------------ - - - - ---------------------------------
 
Ligne 5 313 ⟶ 5 605 :
}
 
-- Manage Library:modes options. Administrar opciones. GérerGérer les options.
modes.template_options = "" -- Normal options from the template, like {{Bananas|options=docmax docdef}}.
modes.mode_options = "" -- Internal options from the mode.
Ligne 5 326 ⟶ 5 618 :
c = {typ = "config", need = 0, keyword = "c"},
options = {typ = "config", need = 0, keyword = "options"},
-- The userlang argument permits at an administrator in his own langage (errors, warnings, catégoriescatégories, tests) to help a wiki in any language.
contentlang = {typ = "config", need = 1, keyword = "contentlang"},
pagelang = {typ = "config", need = 2, keyword = "pagelang"},
Ligne 5 416 ⟶ 5 708 :
viewers.restore_configs(memo, "modes.args_known_report") -- Restore global configurations after eventual changes.
return t
end -- function modes.args_known_report(t, args_finalargs_kown)
 
function modes.init_options(template_options)
Ligne 5 432 ⟶ 5 724 :
if modes.option("docolor") then modes.docolor = true end
-- If an option is a language, enable this language for the user.
-- Si una opciónopción es un lenguaje, activar esta lengua para usuario.
-- Si une option est une langue, activer cette langue pour l'utilisateur.
for lang, tab in pairs(versionsp.i18n) do
if modes.option(lang) then
langs.init_content_page_user_lang(langs.content_lang, xx, yy, lang) -- langs.content_lang, langs.user_lang
Ligne 5 504 ⟶ 5 796 :
for md, opt in pairs(modes.options_for_modes) do t = t .. "<br>- " .. viewers.ta(md, opt) end
-- List of used options after collect them
t = t .. "\n* " .. viewers.form9usertranslate_user("langs_content_page_user_lang_msg", langs.user_lang, langs.content_lang)
t = t .. "\n* Actual mode used: <b>" .. modes.mode_name .. "</b>"
t = t .. "\n* Options read the last time in these tests, ones <b>activated</b> are in bold: "
t = t .. "\n* Options lues pour la dernièredernière fois pendant ces tests, celles <b>activéesactivées</b> sont en gras : "
t = t .. "<br>"
local used = ""
Ligne 5 558 ⟶ 5 850 :
t = t .. viewers.table_end()
t = t .. modes.used_options_list(nil, modes.used_options)
t = t .. "\n* After these tests, previous options are restored. AprèsAprès ces tests, les options antérieuresantérieures sont restaurésrestaurés."
modes.mode_options = mode_options_memo -- restore
modes.template_options = template_options_memo -- restore
Ligne 5 572 ⟶ 5 864 :
else -- Else use the template arguments or inforce QITEM here.
id = modes.args_source.id
-- id = "Q535" -- (1802 – 1885) Victor Hugo
-- id = "Q8739" -- (near 287 av. J.-C. – 212 av. J.-C.) ArchimèdeArchimède, Machine d'ArchimèdeArchimède
-- id = "Q20882" -- (1832 – 1923) Gustave Eiffel
id = "Q1290" -- (1623 – 1662) Blaise Pascal
-- id = "Q41568" -- (1533 – 1592) Michel de Montaigne
-- id = "Q83428" -- (near 1493 – 1541) Paracelse
-- id = "Q131671" -- (VIe sièclesiècle av. J.-C. – Ve sièclesiècle av. J.-C.) XénophaneXénophane
-- id = "Q213330" -- (1330 – 1418) Nicolas Flamel
-- id = "Q21157618"-- ( – 1932) Charles MaumenéMaumené
-- id = "Q9364" -- (1905 – 1980) Jean-Paul Sartre
end
local nst = 10 -- mw.site.namespaces.Template
Ligne 5 670 ⟶ 5 962 :
function modes.levenshtein_similar_tests(t) -- Tests of modes.similar_args_diffmaxi(10, t .. "diffmaxi = ")
local memo = viewers.save_configs("modes.levenshtein_similar_tests") -- Save global configuration before eventual changes.
local t = t or ("\n* " .. viewers.form9usertranslate_user("modes_max_nearest_argument_msg") ) -- "A longer name argument accepts more letter errors."
t = t .. "\n* " .. "Formula to compute the near words limit: Formule de calcul de limite des mots proches : "
local errors, key, argsyn, arglingual, txt = ""
Ligne 5 695 ⟶ 5 987 :
{ try = "", correct = "xyz", },
{ try = "xxx", correct = "xyz", },
{ try = "prénomprénom", correct = "Prenom", },
{ try = "catégoriecatégorie", correct = "Category", },
{ try = "description", correct = "Description", },
{ try = "anneeDeces", correct = "anneeNaissance", },
{ try = "avant-aprèsaprès", correct = "aprèsaprès-avant", },
}
local tab_view = { -- Group datas and options for a table view with lines and columns.
Ligne 5 733 ⟶ 6 025 :
 
-- Maximum number of different letters between 2 argument names
-- NúmeroNúmero máximomáximo de letras diferentes entre 2 nombres de argumento
-- Nombre maximum de lettres différentesdifférentes entre deux noms d'arguments
modes.length_from_i = {} -- Format a string from the formula
function modes.similar_args_diffmaxi(word, t) -- Format a string from the formula
Ligne 5 762 ⟶ 6 054 :
 
-- Check if the value of an argument is among the possible values.
-- VérifierVérifier si la valeur d'un argument est parmi les valeurs possibles.
-- local ... = modes.multiple_values(test.argm, test.argvalue, test.args_finalargs_kown)
function modes.multiple_values(args_kown, argname, argvalue, args_final, args_known)
local args_kown = args_kown or modes.args_kown or versions.args_kown or p.args_kown or {}
if type(args_final) ~= "table" then args_final = modes.args_final or {} end
local argname, argvalue = argname, argvalue, arg_values, key_values, keyword, keyval, argval, rank
local args_known = args_known or modes.args_known or p.args_known or {}
local argvalue = argvalue or args_final[argname]
local arg_values, key_values, keyword, keyval, argval, rank
local argmt = args_known[argname]
if argmt then
Ligne 5 794 ⟶ 6 084 :
end
return keyword, keyval, argval, rank, arg_values
end -- function modes.multiple_values(argname, argvalue, args_finalargs_kown, args_known)
 
function modes.multiple_values_tests(t) -- Test: convert a string to a table of words
Ligne 5 811 ⟶ 6 101 :
}
local tab_view = {}
tab_view.headers = viewers.form9usertranslate_user("argm; all values; value; keyword; keyval; argval; rank")
tab_view.test_group = group_test
tab_view.rowGroup = {}
if type(group_test) == "table" then
for i, test in ipairs(group_test) do
local keyword, keyval, argval, rank, arg_values = modes.multiple_values(test.argm, test.argvalue, test.args_finalargs_kown)
table.insert( tab_view.rowGroup, { tostring(test.argm or "-"), tostring(arg_values or "-"), tostring(test.argvalue or "-"), tostring(keyword or "-"), tostring(keyval or "-"), tostring(argval or "-"), tostring(rank or "-") } )
end
Ligne 5 887 ⟶ 6 177 :
--]]
local opt = "; "
t = t .. "\n: selector = <b>nobel,+1,présidentprésident,3,députédéputé,prix</b> signifie : sélectionnersélectionner le premier, puis 1 de plus parmi les suivants, puis 3 en tout au maximum."
local head = mw.text.split( viewers.form9usertranslate_user("modes_multiple_selection_test_headers") , ';')
t = t .. viewers.table_head() .. viewers.table_col(head[1]) .. viewers.table_col(head[2]) .. viewers.table_col(head[3]) .. viewers.table_col(head[4])
-- recursiveLevel, recursive_limit, recursiveLevel_err == modes.recursive_normal(recursiveLevel, recursive_limit) -- typical use tab_view
Ligne 5 942 ⟶ 6 232 :
return
end -- function modes.verify_args_tables(_known, _source)
 
modes.args_import = modes.args_import or {} -- seems OK at 20190530 0747
 
function modes.get_args(args_known) -- Update argmt.val and argmt.src in p.args_known{}
Ligne 5 954 ⟶ 6 246 :
if type(argmt) == "table" then
-- * These origins of arguments are in the increasig priority: <code>known</code>, <code>import</code>, <code>datas</code>, <code>template</code>, <code>interact_final</code>.
if args_known[argmt.keyword] then
argmt.val = args_known[argmt.keyword] ; argmt.src = "final" ;
counts[argmt.src] = counts[argmt.src]+1 ; tt = tt .. viewers.ta(argmt.src, counts[argmt.src])
end
if argmt.keyword then
argmt.val = argmt.default ; argmt.src = "known" ;
Ligne 5 964 ⟶ 6 260 :
if prop[argmt.keyword] then
argmt.val = prop[argmt.keyword] ; argmt.src = "datas" ;
counts[argmt.src] = counts[argmt.src]+1 ; tt = tt .. viewers.ta(argmt.src, counts[argmt.src])
end
if modes.args_final[argmt.keyword] then
argmt.val = modes.args_final[argmt.keyword] ; argmt.src = "final" ;
counts[argmt.src] = counts[argmt.src]+1 ; tt = tt .. viewers.ta(argmt.src, counts[argmt.src])
end
Ligne 5 992 ⟶ 6 284 :
 
function modes.get_default_args(args_known) -- Gets default arguments values
-- List of twice-view cases : in CentralManual modes.get_args_report ; not in ModuleCentral test mode ; yes in ModuleCentral "Doc with function from string". Search â–¼
local memo = viewers.save_configs("modes.get_default_args") -- Save global configuration before eventual changes.
local args_known = args_known or modes.args_known or p.args_known or {} -- optional value from p.args_known = { }
-- ["QITEM"] = { ["typ"] = "dat", ["need"] = 0, ["keyword"] = "QITEM", ["prop"] = "QITEM", ["prop_default"] = "Q307", },
-- keep GaliléeGalilée (Q307), avoid Victor Hugo (Q535), Rudyard Kipling (Q34743),
-- GaliléeGalilée (Q307), Victor Hugo (Q535), Aristote (Q868), Albert Einstein (Q937), Mohandas Karamchand Gandhi (Q1001), Christophe Colomb (Q7322),
-- Nelson Mandela (Q8023), Rudyard Kipling (Q34743), Martin Fleischmann (Q899264), Emmanuel Macron (Q3052772)
-- ["QITEM"] = { ["typ"] = "dat", ["need"] = 0, ["keyword"] = "QITEM", ["prop"] = "QITEM", prop_default = "Q34743", },
Ligne 6 012 ⟶ 6 304 :
 
function modes.get_args_report(t) -- Update modes.get_args()=args_known
-- List of twice-view cases : in CentralManual modes.get_args_report ; not in ModuleCentral test mode ; yes in ModuleCentral "Doc with function from string". Search â–¼
local memo = viewers.save_configs("modes.get_args_report") -- Save global configuration before eventual changes.
local t = t or "\n* <b>modes.get_args(args_known)</b>: Update argmt.val and argmt.src in p.args_known{}."
t = t .. '\n* List of twice-view cases : in CentralManual modes.get_args_report ; not in ModuleCentral test mode ; yes in ModuleCentral "Doc with function from string". Search â–¼'
local arguments, counts, tt = modes.get_args(p.args_known) -- Update argmt.val and argmt.src in p.args_known{}
local tab_view = { -- Group datas and options for a table view with lines and columns.
Ligne 6 225 ⟶ 6 517 :
-- Import args mode options
local t = "t= * * * "
modes.frame = modes.frame or mw.getCurrentFrame() -- frame or modes.frame or
modes.args_template = modes.frame:getParent().args
args_template = modes.args_template
Ligne 6 244 ⟶ 6 536 :
local t = ", " .. tostring(diffmaxi) .. " / " .. tostring(length) .. " "
for key, arglingual in pairs(list) do
-- Search the most similar and same length. Buscar las másmás similares y la misma longitud. Chercher le plus ressemblant et la mêmemême longueur.
dist, tlev = modes.levenshtein(search, arglingual)
if (dist <= min1) then
Ligne 6 274 ⟶ 6 566 :
content_translations = content_translations or langs.content_translations
-- Mix args_source in args_import, with priority for present args_source.
-- for key, argm in pairs(modes.args_template) do modes.args_import[key] = argm end
local err = nil
local cats = ""
modes.nowyear = tonumber(os.date("%Y") ) -- now_date = os.date("%Y-%m-%d %H:%M:%S")
ARGS.add(viewers.ARGS, 1, "import_arguments", { ["argsknown"] = args_known, ["argssource"] = args_source, ["argswikidata"] = args_wikidata, ["nowyear"] = modes.nowyear, } ) -- ARGS.t
modes.import_arguments_err = ""
modes.import_arguments_track = ""
Ligne 6 284 ⟶ 6 575 :
if err then return args_import, err end
---------------------------------------
langs.main_i18n = versions.memo_i18n
local i18n = versions.memo_i18n or versions.main_i18n
local err, er1, t2 = "", "", ""
local key, argval, argid = "kkk", "xxx", ""
Ligne 6 310 ⟶ 6 599 :
modes.import_arguments_track = tostring(modes.import_arguments_track) .. " - " .. tostring(key_known)
argm_syn = args_known[argm.keyword]
ARGS.add(viewers.ARGS, 1, "args_known for", { key = key_known, Nargm = lua_table.level_count(argm), syn = argm.syn, } ) -- ARGS.t
if argm.syn == 2 then
-- Name an unnamed argument, positional, by its synonym. Nommer un argument non nomménommé, numéroténuméroté, par son synonyme.
-- Rename a named argument, by its synonym. Renommer un argument nomménommé, par son synonyme.
-- argm_orig = key_known -- DEBUG
key_known = argm.keyword
Ligne 6 401 ⟶ 6 689 :
-- modes.import_arguments: after import itself, some surrounding checks.
for key_known, argm in pairs(args_known) do -- For all known arguments
-- Redefined arguments. Argumentos redefinieron. Arguments redéfinisredéfinis.
-- synonyms are defined with the stamp "syn = 2", then here stamp the basic argument with "syn = 1".
if argm.keyword and args_known[argm.keyword] and args_known[argm.keyword].syn then -- if the argument is a synonym, increase the found level
Ligne 6 477 ⟶ 6 765 :
 
-- - - - ------------------ - - - - ---------------------------------
-- Argts : Generate documentation. Generar documentacióndocumentación. GénérerGénérer la documentation.
-- - - - ------------------ - - - - ---------------------------------
 
function modes.generDoc(opt, args_finalargs_kown, module_name)
-- List of paramètresparamètres for the module documentation
-- Lister des paramètresparamètres pour la documentation du module
-- "docview" or ":" ajouter le panneau de documentation
-- "docmin" quelques paramètresparamètres de base
-- "docdef" seulement les paramètresparamètres définisdéfinis, ayant une valeur non nulle
-- "docmax" tous les paramètresparamètres connus
-- "docnotice" generer les documentations des notices
-- "docline" mettre tous les paramètresparamètres sur une seule ligne
-- "docsrc" mettre les paramètresparamètres en couleurs selon les sources
-- modes.options = " docdata docmin docdef docmax docline docview docafter docnotice docsrc: " -- for documentation
-- modes.options = " erron noerr nobox1 nocatview " -- without normal result
Ligne 6 501 ⟶ 6 789 :
if type(module_name) ~= "string" then module_name = "Central" end
local n, t, val = 0, "", ""
if type(args_finalargs_kown) ~= "table" then t = t.."err_args_final="..type(args_finalargs_kown).."<br>" end -- optional arguments
if type(args_finalargs_kown) ~= "table" then args_finalargs_kown = modes.args_finalargs_known end -- optional arguments
local key, argknw, argval, arglingual = "", "", ""
local lst = true
local lst_doc, lst_1, lst_t = {}, {}, ""
for key, parm in pairs(args_finalargs_kown) do -- for all known arguments
val = ""
n = tonumber(key)
if n then key = tostring(parm["keyword"]) end -- key for unnamed arguments, in numeric sort
argknw = args_known[key]
arglingual = viewers.form9usertranslate_user(arglingual) -- multilingual name of the argmt in the template
if arglingual == "nil" then arglingual = key end -- if argument is translatable
val = parm -- tostring(args_import[key])
Ligne 6 522 ⟶ 6 810 :
if not args_known[key] then lst = false end
if key and args_known[key] and args_known[key].typ == "sys" then lst = false end
if lst then t = t .. viewers.tam( viewers.form9usertranslate_user(key), parm) end -- list if found and selected
end
t = "\n* " .. module_name .. " " .. t -- .. "}}" -- <br>
return t
end -- function modes.generDoc(opt, args_finalargs_kown, module_name)
 
function modes.sources_of_datas_colors()
local res = ""
if modes.docolor then -- Document the data sources by colors
local datas_sources_of_datas = viewers.form9usertranslate_user("datas_sources_of_datas")
-- datas_sources_of_datas = "Informations from: /Wikidata, /template or module, /other, /warning, /error",
local splitxt = mw.text.split(datas_sources_of_datas, "/", true)
Ligne 6 606 ⟶ 6 894 :
function modes.all_categories_list(t) -- List all eventual categories of this wiki
local memo = viewers.save_configs("modes.all_categories_list") -- Save global configuration before eventual changes.
local t = "\n* " .. (t or viewers.form9usertranslate_user("modes_all_categories_list_title") )
langs.init_content_page_user_lang() -- function langs.init_content_page_user_lang()
if (type(langs.user_lang) == "string") and type(versionsp.memo_i18ni18n[langs.user_lang]) == "table" then
for key, txt in pairs(versionsp.memo_i18ni18n[langs.user_lang]) do
if viewers.is_in("cat_", key) or viewers.is_in("_cat", key) then
txt = viewers.form9usertranslate_user(key, "**", "**", "**", "**", "**", "**")
t = t .. "<br>" .. viewers.ta(key, txt)
end
Ligne 6 621 ⟶ 6 909 :
 
function modes.all_errors_list(t) -- List detectable errors of this module
local t = "\n* " .. (t or viewers.form9usertranslate_user("modes_all_errors_list_title") )
if (type(langs.user_lang) == "string") and type(versionsp.memo_i18ni18n[langs.user_lang]) == "table" then
for key, txt in pairs(versionsp.memo_i18ni18n[langs.user_lang]) do -- or modes.modes_args.userlang) do
if viewers.is_in("err_", key) or viewers.is_in("_err", key) then
txt = viewers.form9usertranslate_user(key, "**", "**", "**", "**", "**", "**")
t = t .. "<br>" .. viewers.ta(key, txt)
end
Ligne 6 635 ⟶ 6 923 :
function modes.list_all_args_main(t, args_known) -- List of all accepted arguments
local memo = viewers.save_configs("modes.list_all_args_main") -- Save global configuration before eventual changes.
local t = "\n* " .. (t or viewers.form9usertranslate_user("modes_list_all_args_main_title") )
local args_known = args_known or modes.args_known or p.args_known or {}
if type(args_known) ~= "table" then return (t .. "The known arguments table modes.args_known misses.") end
Ligne 6 667 ⟶ 6 955 :
else table.insert(gr_other, elem) end
end
local needed = viewers.styles_small_caps(viewers.form9usertranslate_user("modes_needed_to_verify"))
local function list_group( group, needed )
needed = needed or ""
local t = ""
for key, elem in pairs(group or {}) do
elem.user_lang_key = tostring(elem.user_lang_key)
if elem.syn
then t = t .. "<br>* <b>" .. tostring(elem.user_lang_key) .. "</b> => <b>" .. elem.user_lang_key .. "</b> : " .. needed .. " " .. tostring(elem.description) -- .. elem.lev_arg_txt
Ligne 6 678 ⟶ 6 967 :
return t
end
t = t .. "<br><br>* <b>" .. viewers.form9usertranslate_user("modes_list_needed_args") .. "</b> " .. list_group( gr_need, needed )
t = t .. "<br><br>* <b>" .. viewers.form9usertranslate_user("modes_list_all_other_args") .. "</b> " .. list_group( gr_other )
t = t .. "<br><br>* <b>" .. viewers.form9usertranslate_user("list_all_authorities") .. "</b> " .. list_group( gr_authority )
t = t .. "<br><br>* <b>" .. viewers.form9usertranslate_user("modes_list_all_config_arguments") .. "</b> " .. list_group( gr_config )
t = t .. "<br><br>* <b>" .. viewers.form9usertranslate_user("modes_list_all_system_arguments") .. "</b> " .. list_group( gr_sys )
viewers.restore_configs(memo, "modes.list_all_args_main") -- Restore global configurations after eventual changes.
return t
Ligne 6 705 ⟶ 6 994 :
--
if recursiveLevel > recursive_limit then
recursiveLevel_err = viewers.form9usertranslate_user( modes_recursiveLevel_err, recursiveLevel, recursive_limit)
recursiveLevel_err = viewers.styles_color_error( tostring(recursiveLevel_err) )
end
Ligne 6 796 ⟶ 7 085 :
 
-- p_template_drop_box_name = 'Cuadro desplegable', -- Equivalent templates exist in other wikis
-- p_template_drop_box_name = 'BoîteBoîte déroulantedéroulante', -- ModèleModèle:BoîteBoîte déroulantedéroulante for drop_box.form
-- p_template_drop_box_name = 'Drop-down box', -- Template: Drop-down box for drop_box.form
-- p_template_drop_box_name = 'Cuadro desplegable', -- Modelo: cuadro desplegable :BoîteBoîte déroulantedéroulante for drop_box.form
 
-- cut_libraries
Ligne 6 825 ⟶ 7 114 :
versions.i18n = {} -- Translations for versions library
versions.i18n.de = {
-- Principaux textes, erreurs et catégoriescatégories des outils
versions_module_with_error_err = "Modul mit Fehler",
versions_with_internal_error = "Modul mit internem Fehler",
Ligne 6 831 ⟶ 7 120 :
versions_with_usage_error = "Modul mit Bedienungsfehler",
versions_with_usage_error_cat = "Modul mit Bedienungsfehler",
versions_err_module_miss_i18n_i_cat = "Modul fehlende ÜbersetzungÃœbersetzung i18n",
versions_module_miss_i18n_mini_err = "Erreur interne : La table i18n n'a que <b>%1</b> traductions.",
versions_running_times_title = "versions.running_times() Temps d'exécutionexécution et référencesréférences pour les Lua-codeurs.",
versions_luatables_counts = "<b>%1</b> variables, <b>%3</b> sous-tables, <b>%2</b> fonctions",
versions_table_dont_exists = "La table <b>%1</b> n'existe pas.",
Ligne 6 843 ⟶ 7 132 :
 
-- Gestion des versions
versions_versions_no_select_altern_err = "Erreur de versions : pas de sélectionsélection dans l'alternative <b>%1</b> du module <b>%2</b>.",
versions_versions_too_select_altern_err = "Erreur de versions : <b>%1</b> sélectionssélections dans l'alternative <b>%2</b> du module <b>%3</b>.",
versions_versions_select_not_used_err = "Erreur de versions : le sélecteursélecteur <b>%1</b> n'est pas dans les alternatives <b>%2</b> du module <b>%3</b>.",
versions_versions_missing_module_err = "Erreur de versions : module absent pour la version <b>%1</b> du module <b>%2</b>.",
versions_main_module_missing_err = "Le module principal est introuvable.",
versions_select_unknown_module_err = "Internal error: Le Module:<b>%1</b> manquant est remplacéremplacé par le module normal Module:<b>%2</b>.",
versions_I18N_module_no_base_err = "Le module de traductions <b>%1</b> n'a pas de version de base.",
versions_no_versions_module_err = "Le module <b>%1</b> n'est pas dans le systèmesystème des versions.",
versions_all_versions_tests = "Versions avertissements : <b>%1</b>, normaux : <b>%2</b>, liste : <b>%3</b>.",
versions_all_versions_check = "Versions: manquantes: <b>%1</b>, inconnues: <b>%2</b>, normales: <b>%3</b>, en excèsexcès: <b>%4</b>, toutes selectionéesselectionées : <b>%5</b>.",
versions_missing_versions_err = "Le module <b>%1</b> manque dans le module principal <b>%2</b>.",
versions_replaced_versions_err = "Le module <b>%1</b> remplace le sous-module absent dans le module principal <b>%2</b>.",
Ligne 6 863 ⟶ 7 152 :
-- Titres des tests
versions_all_G_and_loaded_list_title = "versions.all_G_and_loaded_list() Objects dans l'espace global _G",
versions_central_changes_headers = "cléclé; valeur; compte; niveau",
versions_support_desk_title = "Informations de soutien: en version <b>%1</b>",
versions_versions_management_report = "versions.versions_management_report() Rapport de gestion des versions",
-- versions_bind_modules_tests_title = "versions.bind_modules_test() Test de la gestion des versions des modules",
versions_verif_bind_modules_report = "Liaison des modules et contrôlecontrôle des versions",
versions_bind_modules_test_headers = "Versions demandéesdemandées; Versions utiliséesutilisées; Versions connues; ACTUEL : Erreurs dans le module actif; SIMULATION : Erreurs dans le module actif",
versions_tasks_changes_report = "versions.tasks_changes_report() Documentations, tâchestâches et modifications",
versions_sort_central_modules_title = "versions.sort_central_modules_report() Liste triéetriée des modules et bibliothèquesbibliothèques centraux.",
versions_sort_central_modules_headers = "Titre; Version; Date; Traductions / Langues",
versions_sort_central_modules_counts = "ceci: + <b>%2</b>/<b>%3</b> T/L, ",
versions_versions_management_title = "versions.versions_support_test() Tests du support de versions.",
versions_versions_management_headers = "sought; versions; process; comments",
versions_add_deprecated_err = "Fonction obsolèteobsolète <b>%1(...)</b>. Remplacez-la par <b>%2(...)</b> dans le module <b>%3</b>.",
versions_deprecated_function_tests = "versions.deprecated_function() Test: Fonction obsolèteobsolète. Remplacez-la dans le module.",
} -- versions.i18n.de
versions.i18n.en = {
Ligne 6 930 ⟶ 7 219 :
} -- versions.i18n.en
versions.i18n.es = {
-- Textos principales, errores y categoríascategorías de instrumentos
versions_module_with_error_err = "MóduloMódulo con error",
versions_with_internal_error = "MóduloMódulo con error interno",
versions_with_internal_error_cat = "MóduloMódulo con error interno",
versions_with_usage_error = "MóduloMódulo con error del uso",
versions_with_usage_error_cat = "MóduloMódulo con error del uso",
versions_err_module_miss_i18n_i_cat = "MóduloMódulo traduccióntraducción i18n que falta",
versions_running_times_title = "versions.running_times() Tiempos de ejecuciónejecución y referencias para los codificadores Lua.",
versions_luatables_counts = "<b>%1</b> variables, <b>%3</b> subtablas, <b>%2</b> funciones",
versions_table_dont_exists = "La tabla <b>%1</b> no existe.",
versions_table_listlimit_levelmaxi = "LímiteLímite de nivel recursive_limit = <b>%1</b>",
versions_table_listlimit_max_n = "LímiteLímite de longitud max_n = <b>%1</b>",
versions_with_usage_error_cat = "MóduloMódulo con error del uso",
versions_module_with_error_err = "MóduloMódulo con error",
versions_with_internal_error_cat = "MóduloMódulo con interno error",
 
-- GestiónGestión de versiones
versions_versions_no_select_altern_err = "Error de versiones: no hay selecciónselección en alternativa <b>%1</b> del módulomódulo <b>%2</b>.",
versions_versions_too_select_altern_err = "Error de versiones: <b>%1</b> selecciones en la alternativa <b>%2</b> del módulomódulo <b>%3</b>.",
versions_versions_select_not_used_err = "Error de versiones: selector <b>%1</b> no es en alternativas <b>%2</b> del módulomódulo <b>%3</b>.",
versions_versions_missing_module_err = "Error de versiones: módulomódulo ausente para la versiónversión <b>%1</b> del módulomódulo <b>%2</b>.",
versions_main_module_missing_err = "El módulomódulo principal no es encontrado.",
versions_select_unknown_module_err = "Internal error: El MóduloMódulo:<b>%1</b> faltante se reemplaza por lo normal Module:<b>%2</b>.",
versions_I18N_module_no_base_err = "El módulomódulo de traducciones <b>%1</b> no tiene ninguna versiónversión básicabásica.",
versions_no_versions_module_err = "El <b>%1</b> módulomódulo no estáestá en el sistema de versiones.",
versions_all_versions_tests = "Versiones aviso: <b>%1</b>, normal: <b>%2</b>, lista: <b>%3</b>.",
versions_all_versions_check = "Versiones: falta: <b>%1</b>, incógnitasincógnitas: <b>%2</b>, normales: <b>%3</b>, en exceso: <b>%4</b>, selecciona todo: <b>%5</b>.",
versions_missing_versions_err = "El módulomódulo <b>%1</b> no disponible en el módulomódulo principal <b>%2</b>.",
versions_replaced_versions_err = "El módulomódulo <b>%1</b> reemplaza el sub-módulomódulo ausente en el módulomódulo principal <b>%2</b>.",
versions_unknownversions_err = "El módulomódulo <b>%1</b> es desconocido en el módulomódulo principal <b>%2</b>.",
versions_module_miss_i18n_txt_err = "Error Interno: El texto <b>%1</b> falta de traduccióntraducción en <b>%2</b> lengua, y / o otras.",
versions_module_miss_i18n_count_err = "Error interno: Hay <b>%1</b> que falta en <b>%2</b> traducciones.",
versions_module_miss_i18n_none_err = "OK, ninguno traducciones que faltan.",
versions_module_miss_i18n_trad_err = "Error interno: translation faltan en MóduloMódulo i18n para el argumento <b>i18n.%1.%2</b>.",
versions_module_miss_i18n_mini_err = "Error: la tabla i18n tiene solamente <b>1%</b> traducciones.",
 
Ligne 6 969 ⟶ 7 258 :
versions_all_G_and_loaded_list_title = "versions.all_G_and_loaded_list() Objects en el espacio global _G",
versions_central_changes_headers = "llave; valor; contar; nivel",
versions_support_desk_title = "InformaciónInformación de soporte: en versiónversión <b>%1</b>",
versions_versions_management_report = "versions.versions_management_report() Informe de gestióngestión de versiones",
-- versions_bind_modules_tests_title = "versions.bind_modules_test() Test for management of modules versions",
versions_verif_bind_modules_report = "Binding of modules and versions control",
versions_bind_modules_test_headers = "Sought versions; Used versions; Known versions; ACTUAL: Errors in the active module; SIMULATION: Errors in the active module",
versions_tasks_changes_report = "versions.tasks_changes_report() DocumentaciónDocumentación, parches y modificaciones",
versions_sort_central_modules_title = "versions.sort_central_modules_report() Lista ordenada de módulosmódulos y bibliotecas centrales.",
versions_sort_central_modules_headers = "TítuloTítulo; VersiónVersión; Fecha; Traducciones / Idiomas",
versions_sort_central_modules_counts = "esta + <b>%2</b>/<b>%3</b> T/I, ",
versions_versions_management_title = "versions.versions_support_test() Pruebas de gestióngestión de versiones.",
versions_versions_management_headers = "sought; versions; process; comments",
versions_add_deprecated_err = "FunciónFunción obsoleta <b>%1(...)</b>. SustitúyalaSustitúyala por <b>%2(...)</b> en el módulomódulo <b>%3</b>.",
versions_deprecated_function_tests = "versions.deprecated_function() Prueba: FunciónFunción obsoleta. SustitúyalaSustitúyala en el módulomódulo.",
} -- versions.i18n.es
versions.i18n.fr = {
-- Principaux textes, erreurs et catégoriescatégories des outils
versions_module_with_error_err = "Module avec erreur",
versions_with_internal_error = "Module avec erreur interne",
Ligne 6 992 ⟶ 7 281 :
versions_err_module_miss_i18n_i_cat = "Module manquant de traduction i18n",
versions_module_miss_i18n_mini_err = "Erreur interne : La table i18n n'a que <b>%1</b> traductions.",
versions_running_times_title = "versions.running_times() Temps d'exécutionexécution et référencesréférences pour les Lua-codeurs.",
versions_luatables_counts = "<b>%1</b> variables, <b>%3</b> sous-tables, <b>%2</b> fonctions",
versions_table_dont_exists = "La table <b>%1</b> n'existe pas.",
Ligne 7 002 ⟶ 7 291 :
 
-- Gestion des versions
versions_versions_no_select_altern_err = "Erreur de versions : pas de sélectionsélection dans l'alternative <b>%1</b> du module <b>%2</b>.",
versions_versions_too_select_altern_err = "Erreur de versions : <b>%1</b> sélectionssélections dans l'alternative <b>%2</b> du module <b>%3</b>.",
versions_versions_select_not_used_err = "Erreur de versions : le sélecteursélecteur <b>%1</b> n'est pas dans les alternatives <b>%2</b> du module <b>%3</b>.",
versions_versions_missing_module_err = "Erreur de versions : module absent pour la version <b>%1</b> du module <b>%2</b>.",
versions_main_module_missing_err = "Le module principal est introuvable.",
versions_select_unknown_module_err = "Internal error: Le Module:<b>%1</b> manquant est remplacéremplacé par le module normal Module:<b>%2</b>.",
versions_I18N_module_no_base_err = "Le module de traductions <b>%1</b> n'a pas de version de base.",
versions_no_versions_module_err = "Le module <b>%1</b> n'est pas dans le systèmesystème des versions.",
versions_all_versions_tests = "Versions avertissements : <b>%1</b>, normaux : <b>%2</b>, liste : <b>%3</b>.",
versions_all_versions_check = "Versions: manquantes: <b>%1</b>, inconnues: <b>%2</b>, normales: <b>%3</b>, en excèsexcès: <b>%4</b>, toutes selectionéesselectionées : <b>%5</b>.",
versions_missing_versions_err = "Le module <b>%1</b> manque dans le module principal <b>%2</b>.",
versions_replaced_versions_err = "Le module <b>%1</b> remplace le sous-module absent dans le module principal <b>%2</b>.",
Ligne 7 022 ⟶ 7 311 :
-- Titres des tests
versions_all_G_and_loaded_list_title = "versions.all_G_and_loaded_list() Objects dans l'espace global _G",
versions_central_changes_headers = "cléclé; valeur; compte; niveau",
versions_support_desk_title = "Informations de soutien: en version <b>%1</b>",
versions_versions_management_report = "versions.versions_management_report() Rapport de gestion des versions",
-- versions_bind_modules_tests_title = "versions.bind_modules_test() Test de la gestion des versions des modules",
versions_verif_bind_modules_report = "Liaison des modules et contrôlecontrôle des versions",
versions_bind_modules_test_headers = "Versions demandéesdemandées; Versions utiliséesutilisées; Versions connues; ACTUEL : Erreurs dans le module actif; SIMULATION : Erreurs dans le module actif",
versions_tasks_changes_report = "versions.tasks_changes_report() Documentations, tâchestâches et modifications",
versions_sort_central_modules_title = "versions.sort_central_modules_report() Liste triéetriée des modules et bibliothèquesbibliothèques centraux.",
versions_sort_central_modules_headers = "Titre; Version; Date; Traductions / Langues",
versions_sort_central_modules_counts = "ceci: + <b>%2</b>/<b>%3</b> T/L, ",
versions_versions_management_title = "versions.versions_support_test() Tests du support de versions.",
versions_versions_management_headers = "sought; versions; process; comments",
versions_add_deprecated_err = "Fonction obsolèteobsolète <b>%1(...)</b>. Remplacez-la par <b>%2(...)</b> dans le module <b>%3</b>.",
versions_deprecated_function_tests = "versions.deprecated_function() Test: Fonction obsolèteobsolète. Remplacez-la dans le module.",
} -- versions.i18n.fr
versions.i18n.hu = {
-- Fő szövegek, hibák és szerszámkategóriák
versions_module_with_error_err = "A modul hibás",
versions_with_internal_error = "Modul belső hibával",
versions_with_internal_error_cat = "Modul belső hibával",
versions_with_usage_error = "Modul hibás használat esetén",
versions_with_usage_error_cat = "Modul hibás használat esetén",
versions_err_module_miss_i18n_i_cat = "Az i18n hiányzó modul hiányzik",
versions_module_miss_i18n_mini_err = "Belső hiba: Az i18n táblázat csak <b>%1</b> fordításokat tartalmaz.",
versions_running_times_title = "versions.running_times() Végrehajtási idők és hivatkozások a Lua-kódolók számára.",
versions_luatables_counts = "<b>%1</b> változók, <b>%2</b> allables, <b>%3</b> függvények",
versions_table_dont_exists = "A <b>%1</b> táblázat nem létezik.",
versions_table_listlimit_levelmaxi = "Szintkorlát recursive_limit = <b>%1</b> ",
versions_table_listlimit_max_n = "Hossza határ max_n = <b>%1</b> ",
versions_with_usage_error_cat = "Modul hibás használat esetén",
versions_module_with_error_err = "A modul hibás",
versions_with_internal_error_cat = "Modul belső hibával",
 
-- Gestion des versions
versions_versions_no_select_altern_err = "Változatok hiba: nincs lehetőség a modul <b>%1</b> alternatívájára <b>%2</b>.",
versions_versions_too_select_altern_err = "Változatok hiba: <b>%1</b> választása a modul <b>%2</b> alternatívájaként <b>%3</b>.",
versions_versions_select_not_used_err = "Változatok hiba: a <b>%1</b> választó nem szerepel az alternatívákban <b>%2</b> a modul <b>%3</b>.",
versions_versions_missing_module_err = "Változatok hiba: hiányzó modul a verzióhoz <b>%1</b> a modul <b>%2</b>.",
versions_main_module_missing_err = "A főmodul nem található.",
versions_select_unknown_module_err = "Belső hiba: Modul: <b>%1</b> hiányzik a normál modul helyett. Modul:<b>%2</b>.",
versions_I18N_module_no_base_err = "A fordítási modul <b>%1</b> nem rendelkezik alapváltozattal.",
versions_no_versions_module_err = "A <b>%1</b> modul nincs a verziórendszerben.",
versions_all_versions_tests = "Figyelmeztető verziók: <b>%1</b>, normál: <b>%2</b>, lista: <b>%3</b>.",
versions_all_versions_check = "Változatok: hiányzik: <b>%1</b>, ismeretlen: <b>%2</b>, normál: <b>%3</b>, feleslegben: <b>%4</b>, minden kiválasztott: <b>%5</b>.",
versions_missing_versions_err = "A modul <b>%1</b> manque dans le module principal <b>%2</b>.",
versions_replaced_versions_err = "A modul <b>%1</b> helyettesíti a hiányzó al-modulot a főmodulban <b>%2</b>.",
versions_unknownversions_err = "A modul <b>%1</b> a fő modulban ismeretlen <b>%2</b>.",
versions_module_miss_i18n_txt_err = "Belső hiba: A <b>%1</b> szöveg hiányzik a <b>%2</b> fordításban és / vagy más nyelven.",
versions_module_miss_i18n_count_err = "Belső hiba: <b>%1</b> hiányosságok vannak a <b>%2</b> fordítások között.",
versions_module_miss_i18n_none_err = "OK, nincs hiányzó fordítás.",
versions_module_miss_i18n_trad_err = "Belső hiba: az érvelés fordításának hiánya <b>i18n.%1.%2</b>.",
 
-- Titres des tests
versions_all_G_and_loaded_list_title = "versions.all_G_and_loaded_list() Tárgyak a globális térben _G",
versions_central_changes_headers = "kulcs; érték; figyelembe; szint",
versions_support_desk_title = "Támogatási információ: verzió <b>%1</b>",
versions_versions_management_report = "versions.versions_management_report() Jelentés menedzsment az verziók",
-- versions_bind_modules_tests_title = "versions.bind_modules_test() Modul teszt a menedzsment az verziók",
versions_verif_bind_modules_report = "Modulkötés és verziókezelés",
versions_bind_modules_test_headers = "Kért változatok; Használt verziók; Ismert változatok; CURRENT: Hibák az aktív modulban; SZIMULÁCIÓ: Az aktív modul hibái",
versions_tasks_changes_report = "versions.tasks_changes_report() Dokumentációk, feladatok és módosítások",
versions_sort_central_modules_title = "versions.sort_central_modules_report() A modulok és a központi könyvtárak rendezett listája.",
versions_sort_central_modules_headers = "Cím; változata; dátum; Fordítások / Nyelvek",
versions_sort_central_modules_counts = "ezt: + <b>%2</b>/<b>%3</b> T/L, ",
versions_versions_management_title = "versions.versions_support_test() Teszt a menedzsment az verziók.",
versions_versions_management_headers = "keresett; változatban; folyamat; Hozzászólások",
versions_add_deprecated_err = "Elavult funkció <b>%1(...)</b>. Helyezze vissza <b>%2(...)</b> a modulba <b>%3</b>.",
versions_deprecated_function_tests = "versions.deprecated_function() Teszt: elavult funkció. Helyezze vissza a modulba.",
} -- versions.i18n.hu
versions.i18n.vi = {
-- Các văn bản, lỗi và danh mục chính của công cụ
versions_module_with_error_err = "Mô-đun có lỗi",
versions_with_internal_error = "Mô-đun có lỗi nội bộ",
versions_with_internal_error_cat = "Mô-đun có lỗi nội bộ",
versions_with_usage_error = "Mô-đun có lỗi sử dụng",
versions_with_usage_error_cat = "Mô-đun có lỗi sử dụng",
versions_err_module_miss_i18n_i_cat = "Mô-đun thiếu bản dịch i18n",
versions_module_miss_i18n_mini_err = "Lỗi nội bộ: Bảng i18n chỉ có <b>%1</b> dịch.",
versions_running_times_title = "versions.running_times() Thời gian thực hiện và tài liệu tham khảo cho Lua-coders.",
versions_luatables_counts = "<b>%1</b> biến, <b>%3</b> Subtables, <b>%2</b> chức năng",
versions_table_dont_exists = "Bảng <b>%1</b> không tồn tại.",
versions_table_listlimit_levelmaxi = "Giới hạn mức recursive_limit = <b>%1</b> ",
versions_table_listlimit_max_n = "Giới hạn độ dài max_n = <b>%1</b> ",
versions_antiCrash_tests_title = "versions.anti_crash() Kiểm tra: trong trường hợp lỗi khi chạy, không ghi đè lên trang.",
versions_antiCrash_reference_label = "Khảo",
versions_with_usage_error_cat = "Mô-đun có lỗi sử dụng",
versions_module_with_error_err = "Mô-đun có lỗi",
versions_with_internal_error_cat = "Mô-đun có lỗi nội bộ",
-- Quản lý phiên bản
versions_versions_no_select_altern_err = "Lỗi phiên bản: không có lựa chọn nào thay thế <b>%1</b> của mô-đun <b>%2</b>.",
versions_versions_too_select_altern_err = "Lỗi phiên bản: <b>%1</b> lựa chọn thay thế <b>%2</b> của mô-đun <b>%3</b>.",
versions_versions_select_not_used_err = "Lỗi phiên bản: bộ chọn <b>%1</b> không có trong lựa chọn thay thế <b>%2</b> của mô-đun <b>%3</b>.",
versions_versions_missing_module_err = "Lỗi phiên bản: mô-đun không khả dụng cho phiên bản <b>%1</b> của mô-đun <b>%2</b>.",
versions_main_module_missing_err = "Không tìm thấy mô-đun chính.",
versions_select_unknown_module_err = "Lỗi nội bộ: Mô-đun:<b>%1</b> mất tích được thay thế bởi bình thường Mô-đun:<b>%2</b>.",
versions_I18N_module_no_base_err = "Mô-đun dịch <b>%1</b> không có phiên bản cơ bản.",
versions_no_versions_module_err = "Mô-đun <b>%1</b> không nằm trong hệ thống phiên bản.",
versions_all_versions_tests = "Các phiên bản cảnh báo: <b>%1</b>, bình thường: <b>%2</b>, danh sách: <b>%3</b>.",
versions_all_versions_check = "Phiên bản: thiếu: <b>%1</b>, ẩn số: <b>%2</b>, bình thường: <b>%3</b>, vượt quá: <b>%4</b>, tất cả đã chọn: <b>%5</b>.",
versions_missing_versions_err = "Mô-đun <b>%1</b> bị thiếu trong mô-đun chính <b>%2</b>.",
versions_replaced_versions_err = "Mô-đun <b>%1</b> thay thế mô-đun phụ bị thiếu trong mô-đun chính <b>%2</b>.",
versions_unknownversions_err = "Mô-đun <b>%1</b> không được biết trong mô-đun chính <b>%2</b>.",
versions_module_miss_i18n_txt_err = "Lỗi nội bộ: Văn bản <b>%1</b> thiếu bản dịch ngôn ngữ <b>%2</b>, và / hoặc những người khác.",
versions_module_miss_i18n_count_err = "Lỗi nội bộ: Có khoảng cách <b>%1</b> trong số <b>%2</b> bản dịch.",
versions_module_miss_i18n_none_err = "OK, không có bản dịch bị thiếu.",
versions_module_miss_i18n_trad_err = "Lỗi nội bộ: thiếu bản dịch cho đối số <b>i18n.%1.%2</b>.",
-- Tiêu đề kiểm tra
versions_all_G_and_loaded_list_title = "versions.all_G_and_loaded_list() Các đối tượng trong không gian toàn cầu _G",
versions_central_changes_headers = "chính; giá trị; tài khoản; trình độ",
versions_support_desk_title = "Thông tin hỗ trợ: Phiên bản <b>%1</b>",
versions_versions_management_report = "versions.versions_management_report() Báo cáo quản lý phát hành",
-- versions_bind_modules_tests_title = "versions.bind_modules_test() Kiểm tra quản lý phiên bản mô-đun",
versions_verif_bind_modules_report = "Kiểm soát phiên bản và ràng buộc mô-đun",
versions_bind_modules_test_headers = "Các phiên bản được yêu cầu; Các phiên bản được sử dụng; Các phiên bản đã biết; CURRENT: Lỗi trong mô-đun đang hoạt động; Mô phỏng: Lỗi trong mô-đun đang hoạt động",
versions_tasks_changes_report = "versions.tasks_changes_report() Tài liệu, nhiệm vụ và sửa đổi",
versions_sort_central_modules_title = "versions.sort_central_modules_report() Sắp xếp danh sách các mô-đun và thư viện trung tâm.",
versions_sort_central_modules_headers = "Tiêu đề; phiên bản; ngày; Bản dịch / Ngôn ngữ",
versions_sort_central_modules_counts = "điều này: + <b>%2</b>/<b>%3</b> T/L, ",
versions_versions_management_title = "versions.versions_support_test() Kiểm tra hỗ trợ phiên bản.",
versions_versions_management_headers = "tìm kiếm; phiên bản; quá trình; bình luận",
versions_add_deprecated_err = "Hàm không được chấp nhận <b>%1(...)</b>. Thay thế bằng <b>%2(...)</b> trong mô-đun <b>%3</b>.",
versions_deprecated_function_tests = "versions.deprecated_function() Test: Chức năng lỗi thời. Thay thế nó trong mô-đun.",
} -- versions.i18n.vi
 
versions.ModuleNS = mw.site.namespaces.Module.name .. ":"
 
function versions.bind_all_i18n() -- Bind all i18n translations from all sub-modules in reverse order. incude p.i18n
-- Translate all translations in the exact reverse order, using the memorised binding order.
-- Then upper modules happens later and can adapt translations.
local t = "\n* versions.bind_all_i18n() "
local i18n = {}
for i = lua_table.level_count(versions.central_libraries_sort), 1, -1 do -- in reverse order
sub_module_name = versions.central_libraries_sort[i] -- Collect translations in available libraries
local get = versions.bind_main_and_sub_modules_get[sub_module_name] -- Use the get descriptor of the sub_module.
-- Add i18n translations from the sub-module itself:
Ligne 7 160 ⟶ 7 342 :
t = t .. "\n*" .. viewers.ta("title", get.title)
t = t .. viewers.ta("#i18n", lua_table.level_count(get.i18n) )
table.insert(i18n, get.i18n)
end
-- Add i18n translations from an eventual /I18N sub-module:
Ligne 7 168 ⟶ 7 351 :
t = t .. "\n*" .. viewers.ta("title", get.title)
t = t .. viewers.ta("#i18n", lua_table.level_count(get.i18n) )
table.insert(i18n, get.i18n)
end
end
end
p.i18n = i18n
return t
end -- t = versions.bind_all_i18n() -- Bind all i18n translations from all sub-modules ofin thereverse order. mainincude modulep.i18n
 
function versions.bind_the_main_module() -- Bind the main module, all sub-modules and all their i18n.
Ligne 7 196 ⟶ 7 381 :
--
if not versions.main_module then -- The main module is not found.
res = res .. viewers.styles_color_error( viewers.form9usertranslate_user("versions_main_module_missing_err") )
end
langs.main_i18n = langs.main_i18n or versions.main_i18n or {}
versions.main_i18n = langs.main_i18n
return res
end -- function versions.bind_the_main_module() -- Bind the main module, all sub-modules and all their i18n.
Ligne 7 243 ⟶ 7 426 :
versions.sub_modules.sub_tries = { -- TEST: Bind all sub-modules of the main module.
-- Normal cases: all known = "Box1, Box3 * Group;Group2;Group4 * Item;Item5;Item7"
Main = { ["versionName"] = "Main", ["sought"] = "Box1;Group2;Item5", ["known"] = "Box1;Box3 * Group;Group2;Group4 * Item5;Item7", },
Box1 = { ["versionName"] = "Box1", ["sought"] = "Group2;Item5", ["known"] = "Group;Group2;Group4 * Item5;Item7", },
Box3 = { ["versionName"] = "Box3", ["sought"] = "Group2;Item", ["known"] = "Group2;Group4 * Item;Item5", },
Group2 = { ["versionName"] = "Group2", ["sought"] = "Item", ["known"] = "Item;Item5,Item7", },
Group4 = { ["versionName"] = "Group4", ["sought"] = "Item5", ["known"] = "Item;Item5,Item7", },
-- Errors cases:
Box1_ms = { ["versionName"] = "Box1", ["sought"] = "Group2", ["known"] = "Group;Group2;Group4 * Item5;Item7", }, -- missing sought
Box3_es = { ["versionName"] = "Box3", ["sought"] = "Group2;ItemERR", ["known"] = "Group2;Group4 * Item;Item5", }, -- erroneous sought
Group2_mk = { ["versionName"] = "Group2", ["sought"] = "Item", ["known"] = "Item5,Item7", }, -- missing known
Group4_ek = { ["versionName"] = "Group4", ["sought"] = "Item5", ["known"] = "Item;ItemERR,Item7", }, -- erroneous known
Box3_ks = { ["versionName"] = "Box3", ["sought"] = "Group2;ItemERR", ["known"] = "Group2;Group4 * Item;Item5", }, -- known repairs erroneous sought
}
 
Ligne 7 559 ⟶ 7 742 :
end
-- Record the get descriptor with others
versions.loaded_modules_and_libraries = versions.loaded_modules_and_libraries or {}
if get.i18n then table.insert(versions.loaded_modules_and_libraries, get) end
--
versions.bind_main_and_sub_modules_get = versions.bind_main_and_sub_modules_get or {}
versions.bind_main_and_sub_modules_get[get.title] = get
return get, module
end -- get, module = versions.get_one_module_or_library(title, given_module)
Ligne 7 592 ⟶ 7 770 :
end
end
t = t .. viewers.form9usertranslate_user(", lang:<b>%1:%2:%3</b> ", lang, lang_N, text_N)
-- t = t .. viewers.form9teststranslate_default(", lang:<b>%1:%2:%3</b> ", lang, lang_N, text_N)
else -- add the table and all is fields if it is not already in langs.main_i18n
if mw.language.isKnownLanguageTag(lang) then -- only for languages known in wikis
Ligne 7 599 ⟶ 7 777 :
main_i18n[lang] = mw.clone(trans)
text_N = text_N + lua_table.level_count(trans)
t = t .. viewers.form9usertranslate_user(", lang:<b>%1:%2:%3</b> ", lang, lang_N, text_N)
-- t = t .. viewers.form9tests(", lang:<b>%1:%2:%3</b> ", lang, lang_N, text_N)
end
end
Ligne 7 612 ⟶ 7 789 :
if type(version) == "string" then
version = string.gsub( version, versions.ModuleNS, "" ) -- normalize for always one "Module:"
local bug = "Erreur Lua dans Module:Centralizer-s-fr àà la ligne 5778 : attempt to call field 'gsub' (a nil value)."
version = versions.ModuleNS .. version -- example Module:Centralizer/I18N
end
Ligne 7 736 ⟶ 7 913 :
-- The library:modes supports modes and their options, like p.read(frame). en
-- La biblioteca:modos admite modos y sus opciones, como p.read(frame). es
-- La bibliothèquebibliothèque:modes prend en charge les modes et leurs options, comme p.read(frame). fr
-- versions_bind_arguments_tests_title = "modes.options_from_args_tests() Test options from modes", -- argschanges
-- versions_bind_arguments_tests_title = "modes.options_from_args_tests() Prueba de opciones de modos", -- argschanges
Ligne 7 785 ⟶ 7 962 :
end -- t = t .. versions.bind_arguments_tests(t, loaded_pack)
 
function versions.bind_reverse_i18n_translations(main_versions, loaded_pack) -- include p.i18n
-- Bind all i18n translations from libraries, modules, sub-modules and their /I18N translations sub-modules.
-- Bind all translations in the exact reverse order of sub-modules binding. Then upper modules can adapt translations.
local main_versions = main_versions or versions.main_versions
local t = "\n* <b>versions.bind_reverse_i18n_translations()<b>"
local i18n = {}
versions.loaded_modules_and_libraries = versions.loaded_modules_and_libraries or {}
for i, get in pairs(versions.loaded_modules_and_libraries) do
if (type(get.title) == "string") and (type(get.module) == "table") then
Ligne 7 800 ⟶ 7 979 :
versions.add_one_i18n("", get.subI18N, get.module) -- Add with previews an i18n translations table
t = t .. viewers.ta("#i18n", lua_table.level_count(get.i18n) )
table.insert(i18n, get.i18n)
end
end
p.i18n = i18n
return t
end -- t = versions.bind_reverse_i18n_translations(main_versions, loaded_pack) -- include p.i18n
 
function versions.tab_elem_report(tab, key) -- simple text report of versions elements
Ligne 7 831 ⟶ 8 012 :
local res = ""
if type(langs.user_lang) == "string" then
res = events.add_err("versions_add_deprecated_err", old, new, Centralp.version.versionName)
events.add_cat("modes_no_source_arguments_cat")
end
Ligne 7 837 ⟶ 8 018 :
versions.deprecated_functionGroup[old] = {
["old"] = old, ["new"] = new, ["kind"] = (kind or "kind"), ["use"] = "run",
["central_version"] = Centralp.version.versionName,
}
return res
end -- versions.deprecated_function("old", "versions.deprecated_function", "kind", "code", Centralp.version.versionName) -- Deprecated function. Replace it in the module.
 
function versions.sort_central_modules_report(t) -- Sorted list of central modules and libraries
Ligne 7 848 ⟶ 8 029 :
local t = t or "\n* <b>versions.sort_central_modules_report()</b> -- Sorted list of central modules and libraries."
local loaded_sorted = {}
versions.loaded_modules_and_libraries = versions.loaded_modules_and_libraries or {}
for key, elem in pairs(versions.loaded_modules_and_libraries) do
if elem.hasi18n and elem.is_library then table.insert(loaded_sorted, elem) end
Ligne 7 873 ⟶ 8 055 :
local tabname = get.i18nRoot .. ".i18n"
local t, strings_c, tables_c, strs_on_tabs, subnames = langs.i18n_sub_counts(tabname, "versions_sort_central_modules_counts", "user")
-- get.counts = viewers.form9usertranslate_user("versions_sort_central_modules_counts", strings_c, tables_c) .. t
get.counts = viewers.form9usertranslate_user("this: + %1/%2 T/L, ", strings_c, tables_c)
-- get.counts = get.counts .. viewers.form9usertranslate_user("versions_sort_central_modules_counts", strings_c, tables_c)
if get.has_I18N then get.counts = get.counts .. "<br>+ i18n in: <b>" .. get.viewI18N .. "</b>" end -- version_I18N
if get.versionName and get.pagename then
Ligne 7 893 ⟶ 8 075 :
return res
end -- function versions.tasks_changes_report(t)
 
-- function versions.init(frame, mode_name, args_known, options_for_modes, QITEM)
function versions.init(frame, Central_version, mode_name, args_known, options_for_modes, QITEM)
-- Initializes translations, bind_libraries, bind_sub_modules, get arguments, modes, options.
-- Imports arguments from wikidata, module and template with increasing priorities.
local res, t = "", ""
versions.bind_the_main_module() -- Bind the main module, all sub-modules and all their i18n.
langs.main_i18n_complete = false -- Mask any views to avoid failures until enough init.
Central_version = Central_version or langs.Module_Central_version -- or p.Module_Central_version
versions.setup_central_libraries(versions.bindable_libraries) -- Actual installation of central bindable libraries in package.loaded
versions.bind_all_sub_modules() -- Bind all sub-modules of the main module.
res = res .. modes.init_modes_translate_events(frame, Central_version, mode_name, args_known, options_for_modes, QITEM)
if type(langs) == "table" then langs.main_i18n = langs.main_i18n or versions.main_i18n or {} end -- Same pointers insure later same contents.
-- Bind all i18n translations from libraries, modules and their /I18N translations sub-modules
local loaded_pack = versions.loaded_modules_and_libraries
versions.bind_reverse_i18n_translations(main_versions, loaded_pack) -- Bind all i18n translations from modules and their /I18N translations sub-modules
ARGS = tracker.initadd({ ["name"] = "ARGS", limit = 2, }) -- Initialize a track and its track lines.
ARGS.add(ARGS, 1, "versions.init before import_arguments") -- ARGS.t
-- res = res .. langs.init_content_page_user_lang() -- content_lang, page_lang, user_lang, "versions.init")
local mix = modes.init_args_mode_options(mix, mode_name, args_template) -- Import and mix args mode and options -- S170710mix
-- ["QITEM"] = { ["typ"] = "dat", ["need"] = 0, ["keyword"] = "QITEM", ["prop"] = "QITEM", prop_default = "Q34743", },
local args_known = args_known or modes.args_known or p.args_known or {}
for key, one_arg in pairs(args_known) do
local argskwn = args_known[key]
if type(one_arg) == "table" then
if type(one_arg.default_item == "string") then datas.prop_default = one_arg.default_item end -- "Q34743" -- Rudyard Kipling **
end
end
local mix = mix or {}
modes.mix = mix -- To easy get, track and test the init_args_mode_options process
local mix = modes.init_args_mode_options(mix, mode_name, args_template) -- S170703amo MAMO.t
-- res = res .. langs.init_content_page_user_lang() -- content_lang, page_lang, user_lang, "versions.init")
langs.main_i18n_complete = true -- Unmask all views after enough init.
res = res .. versions.detect_MediaWiki_changes()
return res
end -- res = res .. versions.init(frame, Central_version, mode_name, args_known, options_for_modes, QITEM)
 
function versions.versions_support_test(t) -- Test : List all loaded modules
Ligne 7 937 ⟶ 8 083 :
local loaded_tests = { -- loaded_tests
-- Cases to look for the main module
{ ["key"] = "Box", ["versionName"] = "Box", ["versionDate"] = "2015-12-02 02:02",
["request"] = "normal modules", ["comment"] = 'normal module for Box, with alias like : <code>local Box = require("Box")</code>',
["i18n"] = { ["en"] = { ["a"] = "a" } }, ["sought"] = "Box", ["known"] = "Box", ["loaded_list"] = ";Box;", },
--
{ ["key"] = "Box/I18N", ["versionName"] = "Box", ["versionDate"] = "2016-05-07 18:36",
["request"] = "normal with /I18N", ["comment"] = "I18N translations for Box",
["i18n"] = { ["en"] = { ["a"] = "a" } }, ["sought"] = "Box", ["known"] = "Box", ["loaded_list"] = ";Box;Box/I18N;", },
--
{ ["key"] = "Box3", ["versionName"] = "Box2", ["versionDate"] = "2016-05-07 11:11",
["request"] = "normal replace known alternate", ["comment"] = "alternate version module for Box",
["i18n"] = { ["en"] = { ["a"] = "a" } }, ["sought"] = "Box2", ["known"] = "Box;Box2", ["loaded_list"] = ";Box;Box/I18N;Box2;Box2/I18N;", },
--
{ ["key"] = "Box2/I18N", ["versionName"] = "Box2", ["versionDate"] = "2016-05-07 19:19",
["request"] = "missing actual module", ["comment"] = "I18N translations without basic module. Formats an alert.",
["i18n"] = { ["en"] = { ["a"] = "a" } }, ["sought"] = "Box", ["known"] = "Box2;Box3", ["loaded_list"] = ";Box3;Box3/I18N;Box2;Box2/I18N;", },
-- Cases to look for sub-modules
{ ["key"] = "Group", ["versionName"] = "Box", ["I18N"] = "Group/I18N", ["versionDate"] = "2016-05-07 11:11",
["request"] = "normal sub-module", ["comment"] = "normal module for Group",
["i18n"] = { ["en"] = { ["a"] = "a" } }, ["sought"] = "Group", ["known"] = "Group", ["loaded_list"] = ";Group;Group/I18N;", },
--
{ ["key"] = "Group4", ["versionName"] = "Box", ["versionDate"] = "2015-12-11 11:11",
["request"] = "unknown sought version", ["comment"] = "Mask this to test missing sought version",
["i18n"] = { ["en"] = { ["a"] = "a" } }, ["sought"] = "Box;Group", ["known"] = "Box", ["loaded_list"] = ";Box;", },
--
{ ["key"] = "Group/I18N", ["versionName"] = "Box", ["versionDate"] = "2016-05-07 22:2",
["request"] = "sub-module not exists", ["comment"] = "I18N translations for the normal module Group",
["i18n"] = { ["en"] = { ["a"] = "a" } }, ["sought"] = "Box;Group", ["known"] = "Box * Group", ["loaded_list"] = ";Box;", },
-- Cases to look for /I18N sub-modules
{ ["key"] = "Group2", ["versionName"] = "Box3", ["versionDate"] = "2015-12-22 22:2", versionDate = "2016-05-07 05:05",
["request"] = "normal sub-module with normal /18N", ["comment"] = "normal alternate sub-module Group for Group2",
["i18n"] = { ["en"] = { ["a"] = "a" } }, ["sought"] = "Box;Group2", ["known"] = "Box;Box2 * Group;Group2", ["loaded_list"] = ";Group;Group/I18N;Group2;Group2/I18N;Box;Box/I18N;Box2;Box2/I18N;", },
--
{ ["key"] = "Group2", ["versionName"] = "Box3", ["versionDate"] = "2015-12-22 22:2", versionDate = "2016-05-07 05:05",
["request"] = "unknown module for /18N sub-module", ["comment"] = "normal alternate sub-module Group for Group2",
["i18n"] = { ["en"] = { ["a"] = "a" } }, ["sought"] = "Box;Group2", ["known"] = "Box;Box2 * Group;Group2", ["loaded_list"] = ";Group;Group/I18N;Group2;Group2/I18N;Box;Box/I18N;Box2;Box2/I18N;", },
--
{ ["key"] = "Group2", ["versionName"] = "Box3", ["versionDate"] = "2015-12-22 22:2", versionDate = "2016-05-07 05:05",
["request"] = "missing module Box for /18N sub-module", ["comment"] = "normal alternate sub-module Group for Group2",
["i18n"] = { ["en"] = { ["a"] = "a" } }, ["sought"] = "Box;Group2", ["known"] = "Box;Box2 * Group;Group2",
["loaded_list"] = ";Group;Group/I18N;Group2;Group2/I18N;Box/I18N;Box2;Box2/I18N;", },
--
{ ["key"] = "Jocker", ["versionName"] = "Jocker", ["versionDate"] = "2015-12-21 11:33",
["request"] = "not central module, without i18n", ["comment"] = "Any module can have no i18n table.",
sought["i18n"] = { ["Boxen",] known= ={ ["Boxa", loaded_list] = ";Box;a", } }, -- i18n["sought"] = {"Box", en["known"] = {"Box", a["loaded_list"] = "a;Box;" }, },
--
{ ["key"] = "Jocker", ["versionName"] = "Jocker", ["versionDate"] = "2015-12-21 11:33",
["request"] = "unknown and not sought actual module", ["comment"] = "Any module can be outside of the central system.",
["i18n"] = { ["en"] = { ["a"] = "a" } }, ["sought"] = "Jocker.2", ["known"] = "Jocker.2", ["loaded_list"] = ";Box;", },
}
t = t .. "\n* <b>loaded_vers</b> : Table of all loaded modules, or simulation."
Ligne 8 149 ⟶ 8 296 :
function versions.central_library(objt, title) -- Get checked values and types of central objects
local o = {}
local i18n = langs.main_i18n or versions.main_i18n or versions.memo_i18n
o.val = objt
if (title == objt) then
Ligne 8 241 ⟶ 8 387 :
 
function versions.is_ISO_8601_time_format_like(time_in, form) -- Compute the delay from t1 to t2, or adjust t2 at t1 + diff.
-- See ISO 8601 time format like : 1977-04-22T01:00:00-05:00 (5 heures de décalagedécalage) = 1977-04-22T06:00:00Z local time
local nowtime = os.date("%Y-%m-%d %H:%M:%S") -- in ISO 8601 time format like : 1977-04-22T01:00:00
local nowtable = os.date("*t") or {} -- in ISO 8601 time format like : 1977-04-22T01:00:00
Ligne 8 306 ⟶ 8 452 :
t = t .. "\n*. <b>Modules</b>: "
t = t .. viewers.ta("Main module", tostring(versions.mainversion) )
t = t .. viewers.ta("Proto version", tostring(Centralp.version.versionName ) )
t = t .. viewers.ta("Modules in this wiki", tostring(mw.site.stats.pagesInNamespace( 828 ) ) )
-- Central module version
t = t .. "\n*. <b>Central module version</b>: "
local VersCentral = Centralp.version -- Get the Centralp.version details
t = t .. viewers.ta("versionName", tostring(VersCentral.versionName) )
t = t .. viewers.ta("versionNumber", tostring(VersCentral.versionNumber) )
Ligne 8 338 ⟶ 8 484 :
t = t .. "\n* <b>User language</b>: "
-- T173207: Implement Lua alternative to {{int:Lang}}.
t = t .. viewers.ta("⧼Lang⧽⧼Lang⧽", "⧼Lang⧽⧼Lang⧽" )
t = t .. viewers.ta("⧼es⧽⧼es⧽", "⧼es⧽⧼es⧽" )
-- https://fr.wikisource.org/w/index.php?title=MediaWiki:Lang/en&action=edit
-- https://vi.wikipedia.org/w/index.php?title=MediaWiki:Lang/en&action=edit
Ligne 8 359 ⟶ 8 505 :
t = t .. viewers.ta("main_title", modes.main_title )
t = t .. viewers.ta("label", mwuri.label )
-- local label = modes.args_final.label or modes.main_title or modes.args_final.QITEM or modes.args_final.itemid
t = t .. viewers.ta("text", mwuri.text )
t = t .. viewers.ta("host", mwuri.host )
Ligne 8 380 ⟶ 8 525 :
-- Running times: , start in page = 171 mS , import + 0 mS , form result + 0 mS , tests + 522 mS , duration = 522 mS
local res = "" -- res or "\n* versions.running_times() Modules, users and stats in this wiki"
res = res .. "\n* <b>" .. viewers.form9usertranslate_user("versions_running_times_title") .. "</b>"
-- "\n* versions.running_times() Temps d'exécutionexécution et référencesréférences pour les Lua-codeurs."
local mwuri = mw.uri.new()
res = res .. "\n* " .. versions.MediaWiki_version() -- Modules, users and stats in this wiki.
Ligne 8 416 ⟶ 8 561 :
-- cut_libraries
 
 
-- - - - ------------------ - - - - ---------------------------------
-- - - - ------------------ - - - - ---------------------------------
-- The Library:viewers supports Lua-coders sub-tasks and inter-wikis central modules.
-- - - - ------------------ - - - - ---------------------------------
-- - - - ------------------ - - - - ---------------------------------
 
 
-- These Module:Centralizer/I18N translations for viewers library update and complete Module:Centralizer translations.
viewers.i18n = {}
viewers.i18n.de = {
-- Haupttexte, Fehler und Kategorien von Werkzeugen
viewers_test_no_values = "Test: ohne Werte",
viewers_test_the_value_is_table = "Test: Der Wert ist eine Tabelle",
viewers_test_all_types_values = "Test: Werte aller Arten",
viewers_Dropbox_label_Unwrap = "Erweitern / Wrap",
viewers_page_tests_title = "Tests und Informationen zu dieser Seite:",
viewers_section_title_page = "Tests dieser Seite",
viewers_section_title_module = "Tests dieses Moduls",
viewers_section_title_internal = "Interne Tests",
-- Übersetzen Sie diese Bibliotheken nicht
viewers_section_title_library_activity = "Library:activity",
viewers_section_title_library_datas = "Library:datas",
viewers_section_title_library_langs = "Library:langs",
viewers_section_title_library_lua_table = "Library:lua_table",
viewers_section_title_library_mathroman = "Library:mathroman",
viewers_section_title_library_modes = "Library:modes",
viewers_section_title_library_versions = "Library:versions",
viewers_section_title_library_wiewers = "Library:wiewers",
viewers_section_title_is_missing = "Dieser Abschnitt fehlt der Titel",
viewers_dropdown_missing_title = "Titel fehlt für diese Dropdown-Box",
-- Titel der Tests
viewers_page_tests_title = "Tests und Informationen zu dieser Seite:",
viewers_module_tests_title = "Tests und Informationen zu diesem Modul:",
viewers_internal_tests_title = "Interne Regressionstests:",
viewers_tableView_default_headers = "A; B; C; D; E",
viewers_tableView_tests_title = "tableview.new() Test: Bilden Sie eine Tabelle mit Zeilen und Spalten.",
viewers_tab_view_form_elem_detail = "Detail = <b>%1</b> | <b>%2</b> | <b>%3</b> | <b>%4</b> | %5.",
viewers_tableView_tests_err = "Interner Fehler: tableview.new() abnormaler Fehler.",
viewers_format_time_tests_title = "viewers.formatDate() Codierungstests und Datumskonvertierungen",
viewers_parts_of_date_tests_title = "viewers.date_to_part() Datum Tests zu Tag, Monat, Jahr oder Zeit",
viewers_simpleList_tests_title = "viewers.simple_list() Test: Sortiere eine Liste von Wörtern ohne Wiederholung",
viewers_save_restore_balance_title = "viewers.save_restore_balance_report() Test: Speichern und Wiederherstellen, Balance der Konfigurationen",
viewers_save_restore_balance_headers = "i; wo; registrieren; wiederherzustellen; Fehler",
} -- viewers.i18n.de
viewers.i18n.en = {
-- Main string, errors and categories of tools
viewers_test_no_values = "Test: without values",
viewers_test_the_value_is_table = "Test: the value is a table",
viewers_test_all_types_values = "Test: values of all types",
viewers_Dropbox_label_Unwrap = "Unwrap/Wrap",
viewers_page_tests_title = "Testing and information related to this page:",
viewers_section_title_page = "Tests of this page",
viewers_section_title_module = "Tests of this module",
viewers_section_title_internal = "Internal tests",
-- Do not ranslate these libraries names
viewers_section_title_library_activity = "Library:activity",
viewers_section_title_library_datas = "Library:datas",
viewers_section_title_library_langs = "Library:langs",
viewers_section_title_library_lua_table = "Library:lua_table",
viewers_section_title_library_mathroman = "Library:mathroman",
viewers_section_title_library_modes = "Library:modes",
viewers_section_title_library_versions = "Library:versions",
viewers_section_title_library_wiewers = "Library:wiewers",
viewers_dropdown_missing_title = "Missing title for this drop_box",
-- Titles of tests
viewers_module_tests_title = "Testing and information related to this module:",
viewers_internal_tests_title = "Internal regression tests:",
viewers_tableView_default_headers = "A; B; C; D; E",
viewers_tableView_tests_title = "tableview.new() Test: Formats a table with lines and columns.",
viewers_tab_view_form_elem_detail = "detail = <b>%1</b> | <b>%2</b> | <b>%3</b> | <b>%4</b> | %5.",
viewers_tableView_tests_err = "Internal error : tableview.new() abnormal fail.",
viewers_format_time_tests_title = "viewers.formatDate() Tests of coding and conversion of dates",
viewers_parts_of_date_tests_title = "viewers.date_to_part() Tests of date to day, month, year or era",
viewers_simpleList_tests_title = "viewers.simple_list() Test: Sort a list of words without repetition",
viewers_save_restore_balance_title = "viewers.save_restore_balance_report() Test: save and restore, balance of configurations",
viewers_save_restore_balance_headers = "i;where;save;restore;errors",
} -- viewers.i18n.en
viewers.i18n.es = {
-- Textos principales, errores y categorías de instrumentos
viewers_test_no_values = "Prueba: sin valores",
viewers_test_the_value_is_table = "Prueba: el valor es una tabla",
viewers_test_all_types_values = "Prueba: valores de todos los tipos",
viewers_Dropbox_label_Unwrap = "Desenvolver/Envolver",
viewers_page_tests_title = "Pruebas y información relacionada con esta página:",
viewers_section_title_page = "Pruebas de esta página",
viewers_section_title_module = "Pruebas de esta módulo",
viewers_section_title_internal = "Pruebas internas",
-- No traduzca estos nombres de bibliotecas
viewers_section_title_library_activity = "Library:activity",
viewers_section_title_library_datas = "Library:datas",
viewers_section_title_library_langs = "Library:langs",
viewers_section_title_library_lua_table = "Library:lua_table",
viewers_section_title_library_mathroman = "Library:mathroman",
viewers_section_title_library_modes = "Library:modes",
viewers_section_title_library_versions = "Library:versions",
viewers_section_title_library_wiewers = "Library:wiewers",
viewers_section_title_is_missing = "This section misses of title",
viewers_dropdown_missing_title = "Falta el título para este drop_box",
-- Titres des pruebas
viewers_page_tests_title = "Pruebas y información relacionada con esta página:",
viewers_module_tests_title = "Pruebas y información relacionada con esto módulo:",
viewers_internal_tests_title = "Pruebas de no regresión internas:",
viewers_tableView_default_headers = "A; B; C; D; E",
viewers_tableView_tests_title = "tableview.new() Prueba: Formar una tabla con líneas y columnas.",
viewers_tab_view_form_elem_detail = "detalle = <b>%1</b> | <b>%2</b> | <b>%3</b> | <b>%4</b> | %5.",
viewers_tableView_tests_err = "Error interno: tableview.new() error anormal.",
viewers_format_time_tests_title = "viewers.formatDate() Pruebas de codificación y conversión fechas",
viewers_parts_of_date_tests_title = "viewers.date_to_part() Pruebas de fecha a día, mes, año o época",
viewers_simpleList_tests_title = "viewers.simple_list() Prueba: Ordenar una lista de palabras sin repetición",
viewers_save_restore_balance_title = "viewers.save_restore_balance_report() Prueba: guardar y restaurar, equilibrio de configuraciones",
viewers_save_restore_balance_headers = "i; dónde; guardar; restaurar; errores",
} -- viewers.i18n.es
viewers.i18n.fr = {
-- Principaux textes, erreurs et catégories des outils
viewers_test_no_values = "Test: sans valeurs",
viewers_test_the_value_is_table = "Test: la valeur est une table",
viewers_test_all_types_values = "Test: valeurs de tous types",
viewers_Dropbox_label_Unwrap = "Dérouler/Enrouler",
viewers_page_tests_title = "Tests et informations liées à cette page :",
viewers_section_title_page = "Tests de cette page",
viewers_section_title_module = "Tests de ce module",
viewers_section_title_internal = "Tests internes",
-- Ne pas traduire ces noms de bibliothèques
viewers_section_title_library_activity = "Library:activity",
viewers_section_title_library_datas = "Library:datas",
viewers_section_title_library_langs = "Library:langs",
viewers_section_title_library_lua_table = "Library:lua_table",
viewers_section_title_library_mathroman = "Library:mathroman",
viewers_section_title_library_modes = "Library:modes",
viewers_section_title_library_versions = "Library:versions",
viewers_section_title_library_wiewers = "Library:wiewers",
viewers_section_title_is_missing = "Cette section manque de titre",
viewers_dropdown_missing_title = "Titre manquant pour cette boite déroulante",
-- Titres des tests
viewers_page_tests_title = "Tests et informations liées à cette page :",
viewers_module_tests_title = "Tests et informations liées à ce module :",
viewers_internal_tests_title = "Tests internes de non régression :",
viewers_tableView_default_headers = "A; B; C; D; E",
viewers_tableView_tests_title = "tableview.new() Test: former un tableau avec lignes et colonnes.",
viewers_tab_view_form_elem_detail = "détail = <b>%1</b> | <b>%2</b> | <b>%3</b> | <b>%4</b> | %5.",
viewers_tableView_tests_err = "Erreur interne: tableview.new() échec anormal.",
viewers_format_time_tests_title = "viewers.formatDate() Tests de codage et conversions de dates",
viewers_parts_of_date_tests_title = "viewers.date_to_part() Tests de date vers jour, mois, année ou ère",
viewers_simpleList_tests_title = "viewers.simple_list() Test: Trier une liste de mots sans répétition",
viewers_save_restore_balance_title = "viewers.save_restore_balance_report() Test: sauver et restaurer, équilibre des configurations",
viewers_save_restore_balance_headers = "i; où; enregistre; restaure; erreurs",
} -- viewers.i18n.fr
viewers.i18n.hu = {
-- Principaux textes, erreurs et catégories des outils
viewers_test_no_values = "Teszt: érték nélkül",
viewers_test_the_value_is_table = "Teszt: az érték egy táblázat",
viewers_test_all_types_values = "Teszt: minden típusú érték",
viewers_Dropbox_label_Unwrap = "Nagyítás / Wrap",
viewers_page_tests_title = "Az oldalhoz kapcsolódó tesztek és információk:",
viewers_section_title_page = "Az oldal tesztelése",
viewers_section_title_module = "A modul tesztelése",
viewers_section_title_internal = "Belső vizsgálatok",
-- Ne fordítsa le ezeket a könyvtárak nevét
viewers_section_title_library_activity = "Library:activity",
viewers_section_title_library_datas = "Library:datas",
viewers_section_title_library_langs = "Library:langs",
viewers_section_title_library_lua_table = "Library:lua_table",
viewers_section_title_library_mathroman = "Library:mathroman",
viewers_section_title_library_modes = "Library:modes",
viewers_section_title_library_versions = "Library:versions",
viewers_section_title_library_wiewers = "Library:wiewers",
viewers_section_title_is_missing = "Ez a rész hiányzik a cím",
viewers_dropdown_missing_title = "Ennek a legördülő mezőnek hiányzik a címe",
-- Titres des tests
viewers_page_tests_title = "Az oldalhoz kapcsolódó tesztek és információk:",
viewers_module_tests_title = "A modulhoz kapcsolódó tesztek és információk:",
viewers_internal_tests_title = "Belső regressziós tesztek:",
viewers_tableView_default_headers = "A; B; C; D; E",
viewers_tableView_tests_title = "tableview.new() Teszt: Táblázat létrehozása sorokkal és oszlopokkal.",
viewers_tab_view_form_elem_detail = "részlet = <b>%1</b> | <b>%2</b> | <b>%3</b> | <b>%4</b> | %5.",
viewers_tableView_tests_err = "Belső hiba: tableview.new() abnormális hiba.",
viewers_format_time_tests_title = "viewers.formatDate() Kódolási tesztek és dátum konverziók",
viewers_parts_of_date_tests_title = "viewers.date_to_part() Dátum vizsgálat napra, hónapra, évre vagy korszakra",
viewers_simpleList_tests_title = "viewers.simple_list() Teszt: Az ismétlődő szavak listájának rendezése",
viewers_save_restore_balance_title = "viewers.save_restore_balance_report() Teszt: mentés és visszaállítás, konfigurációk egyensúlya",
viewers_save_restore_balance_headers = "i; ahol; Regisztráljon; helyreállítása; hibák",
} -- viewers.i18n.hu
viewers.i18n.vi = {
-- Principaux textes, erreurs et catégories des outils
viewers_test_no_values = "Kiểm tra: không có giá trị",
viewers_test_the_value_is_table = "Kiểm tra: giá trị là một bảng",
viewers_test_all_types_values = "Kiểm tra: giá trị của tất cả các loại",
viewers_Dropbox_label_Unwrap = "Mở rộng / Gói",
viewers_page_tests_title = "Kiểm tra và thông tin liên quan đến trang này:",
viewers_section_title_page = "Kiểm tra trang này",
viewers_section_title_module = "Kiểm tra mô-đun này",
viewers_section_title_internal = "Kiểm tra nội bộ",
-- Không dịch các tên thư viện này
viewers_section_title_library_activity = "Library:activity",
viewers_section_title_library_datas = "Library:datas",
viewers_section_title_library_langs = "Library:langs",
viewers_section_title_library_lua_table = "Library:lua_table",
viewers_section_title_library_mathroman = "Library:mathroman",
viewers_section_title_library_modes = "Library:modes",
viewers_section_title_library_versions = "Library:versions",
viewers_section_title_library_wiewers = "Library:wiewers",
viewers_section_title_is_missing = "Phần này thiếu tiêu đề",
viewers_dropdown_missing_title = "Thiếu tiêu đề cho hộp thả xuống này",
-- Tiêu đề kiểm tra
viewers_page_tests_title = "Kiểm tra và thông tin liên quan đến trang này:",
viewers_module_tests_title = "Kiểm tra và thông tin liên quan đến mô-đun này:",
viewers_internal_tests_title = "Kiểm tra hồi quy nội bộ:",
viewers_tableView_default_headers = "A; B; C; D; E",
viewers_tableView_tests_title = "tableview.new() Kiểm tra: tạo thành một bảng với các hàng và cột.",
viewers_tab_view_form_elem_detail = "chi tiết = <b>%1</b> | <b>%2</b> | <b>%3</b> | <b>%4</b> | %5.",
viewers_tableView_tests_err = "Lỗi nội bộ: tableview.new() lỗi bất thường.",
viewers_format_time_tests_title = "viewers.formatDate() Kiểm tra mã hóa và chuyển đổi ngày",
viewers_parts_of_date_tests_title = "viewers.date_to_part() Kiểm tra ngày đến ngày, tháng, năm hoặc thời đại",
viewers_simpleList_tests_title = "viewers.simple_list() Kiểm tra: Sắp xếp danh sách các từ không lặp lại",
viewers_save_restore_balance_title = "viewers.save_restore_balance_report() Kiểm tra: lưu và khôi phục, cân bằng cấu hình",
viewers_save_restore_balance_headers = "i; nơi; đăng ký; khôi phục; lỗi",
} -- viewers.i18n.vi
 
function viewers.is_in(word, text) -- The word is it in the text, even inside another word?
local bug = "Erreur Lua dans Module:Centralizer-s-fr àà la ligne 7444 : attempt to call field 'find' (a nil value)."
local i = string.find(text or "", word or "", 1, true)
return (i and true)
Ligne 8 650 ⟶ 8 577 :
end
 
function viewers.is_def(x) -- x is defined or no. x est définidéfini ou non
return (type(x) == "string") and (x ~= "") and (x ~= " ") and (x ~= "nil")
end
Ligne 8 669 ⟶ 8 596 :
return view
end -- function viewers.value(value, form)
 
function viewers.value_subtables(value, form, level, level_limit) -- Formats a string from values like: true, 123.456, "abcd", func(), table{}, subtables{}.
local typ, view = type(value), "-" -- options: ' nonil noquote '
if ( type(level) ~= "number" ) then level = 1 end
if ( type(level_limit) ~= "number" ) then level_limit = 5 end
if typ == "boolean" then
if value == true then view = "true" else view = "false" end
elseif typ == "function" then view = "func()"
elseif typ == "number" then view = tostring(value)
elseif typ == "string" then
if viewers.is_in('noquote', form) then view = value
else view = '"' .. value .. '"' end
elseif (typ == "table") and (level < level_limit) then
level = level + 1
view = view .. viewers.value_subtables(value, form, level, level_limit) -- Formats a string from values like: subtables{}.
elseif typ == "nil" then view = "nil"
if viewers.is_in('nonil', form) then view = "" end
end
return view
end -- t = t .. function viewers.value_subtables(value, form, level, level_limit) -- Formats a string from values...
 
function viewers.phab_task(task, comment) -- Forms a link to a Phabricator task.
Ligne 8 760 ⟶ 8 667 :
 
function viewers.styles_color_discreet(t) return viewers.usual_color(t, "discreet") end --For attentive readers only.
 
function viewers.styles_color_error(t) return viewers.usual_color(t, "error") end
 
Ligne 8 776 ⟶ 8 684 :
return '<span style="font-variant: small-caps">' .. t .. '</span>'
end
 
function viewers.styles_color_add(t) return viewers.usual_color(t, "add") end -- function viewers.usual_color(
function viewers.styles_color_delete(t) return viewers.usual_color(t, "delete") end
function viewers.styles_color_discreet(t) return viewers.usual_color(t, "discreet") end --For attentive readers only.
function viewers.styles_color_error(t) return viewers.usual_color(t, "error") end
 
-- Extract a part of date following a pre-defined format which starts with separator
Ligne 8 822 ⟶ 8 735 :
if not dd and mmmm and yyyy and not era then
-- modes_date_months_names = "January, February, March, April, May, June, July, August, September, October, November, December",
-- modes_date_months_names = "Enero, Febrero, Marzo, Abril, Mayo, Junio​​Junio​​, Julio, Agosto, Septiembre, Octubre, Noviembre, Diciembre",
-- modes_date_months_names = "Janvier, FévrierFévrier, Mars, Avril, Mai, Juin, Juillet, AoûtAoût, Septembre, Octobre, Novembre, DécembreDécembre",
found = true
end
Ligne 8 989 ⟶ 8 902 :
function viewers.parts_of_date_tests(t)
local memo = viewers.save_configs("viewers.parts_of_date_tests") -- Save global configuration before eventual changes.
local t = t -- t or
if type(t) ~= "string" then t = '\n* <b>langs.translations_counts("activity.i18n")</b> : Counts of contents of some tables' end
local function date_to_part_test1(t, nom, date, part)
local t = t .. viewers.table_row() .. viewers.table_dat(nom) .. viewers.table_dat(date) .. viewers.table_dat(part) .. viewers.table_dat(tostring(viewers.date_to_part(date, part)))
Ligne 9 009 ⟶ 8 924 :
-- see https://fr.wikipedia.org/wiki/Discussion:ISO_8601#Av._J.C._:_contradiction_avec_l.27article_anglais
-- see https://fr.wikipedia.org/w/index.php?title=ISO_8601&diff=next&oldid=12449725
-- see ISO 8601 time format like : 1977-04-22T01:00:00-05:00 (5 heures de décalagedécalage) = 1977-04-22T06:00:00Z local time
-- os.date( format, time ) get datetime
viewers.restore_configs(memo, "viewers.parts_of_date_tests") -- Restore global configurations after eventual changes.
Ligne 9 021 ⟶ 8 936 :
return '[[File:' .. file .. '|' .. size .. 'px|' .. options .. ']]' -- options must begin with "|"
end -- local image = viewers.form_image(file, size)
 
function viewers.trans9vars(translations, ref, ...) -- Replace %1 to %9 by tostring( argN ) from arguments, without any ambiguity in any string.
local t, S9, repl, val, charN = "", "", "", "", ""
if type(ref) ~= "string" then ref = "a;b;c;d;e;f;g" end
if type(translations) ~= "table" then
t = viewers.form9tests( tostring(ref), ...)
return t
end
if type(translations[ref]) == "string" then ref = translations[ref] end
args = {...}
t = ref
if lua_table.level_count(args) > 0 then
local n = 1
for n = 9, 1, -1 do
S9 = tostring(n)
charN = string.find(t, "%".. S9, 1, true)
if charN then -- If reference has %0 to %9
repl = tostring( args[n] or "" )
t = string.sub(t, 1, charN - 1) .. repl .. string.sub(t, charN + string.len( "%".. S9 ) )
end
end
end
t = string.gsub(t, p.version.versionName, langs.Central_version or Central.Central_version or "versionName")
return t
end -- function viewers.trans9vars(translations, key, ...)
 
function viewers.form9tests(ref, ...) -- Formats reference_key;v1;v2;v3;... for tests.
local t = tostring(ref)
for i, var in pairs( { ... } ) do
if var then t = t .. ";" .. viewers.value(var) end -- tostring() or viewers.value() ?
end
return t
end
 
function viewers.form9en(ref, ...) -- Replace %1 to %9 by arguments. Always in english
if not langs.main_i18n_complete then return "" end -- Avoid to fail in init phase.
local t, n = "", 0
if type(ref) ~= "string" then t = viewers.form9tests("form9en", ...)
elseif type(versions.memo_i18n.en[ref] == "string") then t = viewers.trans9vars(versions.memo_i18n.en, ref, ...)
else t = viewers.form9tests(ref, ...) end -- Default text to help to locate a bug
return t
end -- function viewers.form9en(ref, ...)
 
function viewers.form9content(ref, ...) -- replace %1 to %9 by v1 to v9 in the content translation of ref, else in ref
if not langs.main_i18n_complete then return "" end -- Mask or Unmask all views to avoid failures.
local form, n = "", 0
if type(ref) ~= "string" then form = viewers.form9tests("form9content", ...) end
if (type(langs.content_translations) == "table") then -- Only after versions.bind_reverse_i18n_translations()
if langs.content_translations[ref] then -- Normal case
form = form .. viewers.trans9vars(langs.content_translations, ref, ...)
elseif versions.memo_i18n.en[ref] then -- try english translation in case another lang mises of translation
form = form .. viewers.trans9vars(versions.memo_i18n.en, ref, ...)
else form = form .. viewers.form9tests(ref, ...) end
else form = form .. viewers.form9tests(ref, ...) end
return form
end -- function viewers.form9content(ref, ...)
 
function viewers.form9page(ref, ...) -- Replace %1 to %9 by tostring( argN ) from arguments, without any ambiguity in any string.
if not langs.main_i18n_complete then return "" end -- Mask or Unmask all views to avoid failures.
local form, n = "", 0
if type(ref) ~= "string" then form = viewers.form9tests("form9page", ...) end
local form, n = "", 0
if not langs.main_i18n_complete then return "" end -- Mask or Unmask all views to avoid failures.
if (type(langs.page_translations) == "table") then -- Only after versions.bind_reverse_i18n_translations()
if langs.page_translations[ref] then -- Normal case
form = form .. viewers.trans9vars(langs.page_translations, ref, ...)
elseif versions.memo_i18n.en[ref] then -- try english translation in case another lang mises of translation
form = form .. viewers.trans9vars(versions.memo_i18n.en, ref, ...)
else form = form .. viewers.form9tests(ref, ...) end
else form = form .. viewers.form9tests(ref, ...) end
return form
end -- function viewers.form9page(ref, ...)
 
function viewers.form9user(ref, ...) -- Replace %1 to %9 by arguments, without any ambiguity in any string.
if not langs.main_i18n_complete then return "" end -- Avoid to fail in init phase.
-- langs.main_i18n = langs.main_i18n or versions.main_i18n or {}
-- versions.main_i18n = langs.main_i18n --
local i18n = langs.main_i18n or versions.main_i18n or versions.memo_i18n
if type(langs.main_i18n) ~= "table" then
-- langs.main_i18n = versions.memo_i18n ; versions.main_i18n = versions.memo_i18n
end
local t, trans, n = "", "", 0
if type(ref) ~= "string" then return viewers.form9tests("form9user", ...) end
if (type(langs.user_translations) == "table") then -- Normal translation
if langs.user_translations[ref] then trans = langs.user_translations[ref] end -- Normal ref to translate
t = viewers.trans9vars(langs.user_translations, ref, ...)
elseif i18n.en[ref] then -- If a lang mises of translations, try English.
ref = i18n.en[ref] -- Normal ref to translate
t = viewers.trans9vars(i18n.en, ref, ...)
else t = viewers.form9tests(ref, ...) end -- Default text to help to locate a bug
return t
end -- function viewers.form9user(ref, ...)
 
function viewers.form9user_test(t) -- Tests of viewers.form9user_test().
local memo = viewers.save_configs("viewers.form9user_test") -- Save global configuration before eventual changes.
local t = t or "\n* <b>viewers.form9user_test(t, ref, ...)</b>:"
local tab_view = { -- Group datas and options for a table view with lines and columns.
test_group = {
{ "translate_form9user_no_translation", },
{ "viewers_test_no_values", },
{ "translate_form9user_a_value_is_table", {}, },
{ "langs_form9user_all_types_values", "abc", 4, nil, function(x) end, { 55, "xyz" }, },
{ "replace: abc%1efg%2ijk", "<b>D</b>", "<b>H</b>", },
{ "repeat: a=%1 b=%2 c=%1 d=%2", "<b>1</b>", "<b>2</b>", },
{ "altern: 1%13%25", "<b>2</b>", "<b>4</b>", },
{ "list: %0<%1<%2<%3<%4<%5<%6<%7<%8<%9", "00", "11", "22", "33", "44", "55", "66", "77", "88", "99", },
{ "mix: %1, %5, %2, %4, %3, ", "A", "B", "C", "D", "E", },
{ "missing args: yes=%1 no=%5 no=%9 yes=%2", "args[1]", "args[2]", },
{ "MATRIX 4 * 5<br>"
.. "{ %1%5, %1%6, %1%7, %1%8, %1%9 }<br>"
.. "{ %2%5, %2%6, %2%7, %2%8, %2%9 }<br>"
.. "{ %3%5, %3%6, %3%7, %3%8, %3%9 }<br>"
.. "{ %4%5, %4%6, %4%7, %4%8, %4%9 }<br>", "a", "b", "c", "d", "1", "2", "3", "4", "5", },
},
title_memo = "activity_MW_Versions_report_title",
headers = " input string and args; viewers.form9user_test ",
-- headers_class = "wikitable alternative center sortable",
rowGroup = {},
}
function tab_view.form_one_case(case) -- Convert a case from test_group to rowGroup.
local ref = case[1]
local form9user, t9 = viewers.form9user( lua_table.to_list(case) )
return { ref, form9user, }
end
t = t .. tableview.new(tab_view) -- Runs tests cases and formats a table view with lines and columns.
viewers.restore_configs(memo, "viewers.form9user_test") -- Restore global configurations after eventual changes.
return t
end -- function viewers.form9user_test(t)
 
function viewers.trans99vars(translations, ref, ...) -- Replace %01 to %99 by tostring( argN ) from arguments, without any ambiguity in any string.
local S99, repl, val, charN
if type(translations) ~= "table" then return viewers.form9tests(ref, ...) end
if type(ref) ~= "string" then ref = "langs_translations_key_missing" end
if type(translations[ref]) == "string" then ref = translations[ref] end
args = {...}
if lua_table.level_count(args) > 0 then
local n = 1
for n = 99, 1, -1 do
S99 = tostring(n)
if n < 10 then S99 = "0" .. S99 end
charN = string.find(ref, "%".. S99, 1, true)
if charN then -- If reference has %01 to %99
repl = tostring( args[n] or "" )
ref = string.sub(ref, 1, charN - 1) .. repl .. string.sub(ref, charN + string.len( "%".. S99 ) )
end
end
end
return ref
end -- function viewers.trans99vars(translations, ref, ...)
 
function viewers.form99content(ref, ...) -- Replace %01 to %99 by tostring( argN ) from arguments, without any ambiguity in any string.
local form = viewers.trans99vars(langs.content_translations, ref, ...)
return form
end
 
function viewers.form99page(ref, ...) -- Replace %01 to %99 by tostring( argN ) from arguments, without any ambiguity in any string.
local form = viewers.trans99vars(langs.page_translations, ref, ...)
return form
end
 
function viewers.form99user(ref, ...) -- Replace %01 to %99 by tostring( argN ) from arguments, without any ambiguity in any string.
local form = viewers.trans99vars(langs.user_translations, ref, ...)
return form
end
 
function viewers.form99user_test(t) -- Tests of viewers.form9user_test().
local memo = viewers.save_configs("viewers.form99user_test") -- Save global configuration before eventual changes.
local t = t or "\n* <b>viewers.form99user_test(t)</b>:"
local tab_view = { -- Group datas and options for a table view with lines and columns.
test_group = {
{ "langs_form99user_no_tranlation", },
{ "viewers_test_no_values", },
{ "langs_form99user_a_value_is_table", {}, },
{ "langs_form99user_all_types_values", "abc", 4, nil, function(x) end, { 55, "xyz" }, },
{ "replace: abc%01fg%02jk", "<b>DE</b>", "<b>HI</b>", },
{ "repeat: a=%01 b=%02 c=%01 d=%02", "<b>01</b>", "<b>02</b>", },
{ "altern: 01%0145%0289", "<b>23</b>", "<b>67</b>", },
{ "list: %00<%01<%02<%03<%04<%05<%06<%07<%08<%09", "00", "11", "22", "33", "44", "55", "66", "77", "88", "99", },
{ "mix: %01, %05, %02, %04, %03, ", "A", "B", "C", "D", "E", },
{ "missing args: yes=%01 no=%05 no=%09 yes=%02", "args[1]", "args[2]", },
{ "matrix: %10<br>"
.. "{ %01%05, %01%06, %01%07, %01%08, %01%09 }<br>"
.. "{ %02%05, %02%06, %02%07, %02%08, %02%09 }<br>"
.. "{ %03%05, %03%06, %03%07, %03%08, %03%09 }<br>"
.. "{ %04%05, %04%06, %04%07, %04%08, %04%09 }<br>", "a", "b", "c", "d", "1", "2", "3", "4", "5", "MATRIX 4 * 5", },
},
title_memo = "langs_form99user_tests_title", -- "in viewers.form99user() Test: Replace %01 to &%;29 by tostring( argN ) from arguments",
headers = " input string and args; viewers.form9user_test ",
-- headers_class = "wikitable alternative center sortable",
rowGroup = {},
-- track_on = true,
}
function tab_view.form_one_case(case) -- Convert a case from test_group to rowGroup.
local ref = case[1]
local form99user, t99 = viewers.form99user( lua_table.to_list(case) )
return { ref, form99user, }
end
t = t .. tableview.new(tab_view) -- Runs tests cases and formats a table view with lines and columns.
viewers.restore_configs(memo, "viewers.form99user_test") -- Restore global configurations after eventual changes.
return t
end -- function viewers.form99user_test(t)
 
function viewers.form_main_version(main_versions)
Ligne 9 240 ⟶ 8 954 :
local t = ""
local selector, section, style = selector, section, style
section = viewers.form9usertranslate_user(section) -- like viewers_section_title_page or viewers_section_title_internal function viewers.form9usertranslate_user(
if mask_sections then return t end
if selector == "never" then return t end
Ligne 9 257 ⟶ 8 971 :
return val
end
dh = drop_box.dh
 
function drop_box.html(title, content_or_func) -- Builds the drop box at the html level.
local memo = viewers.save_configs("onedropdrop_box.html") -- Save global configuration before eventual changes.
local t = "\n* onedropdrop_box.html() -- Builds the drop box at the html level."
local drop_box_html = drop_box_html_start .. drop_box_html_medium .. drop_box_html_end .. drop_box_look_like
t = t .. drop_box_html_start .. drop_box_html_content
viewers.restore_configs(memo, "onedropdrop_box.html") -- Restore global configurations after eventual changes.
return drop_box_html_start
end -- t = t .. onedropdrop_box.html(title, content) -- Builds the drop box at the html level.
 
function drop_box.new_title() -- Support desk title of the docDropbox of the edit box.
local t, strings_c, tables_c, strs_on_tabs, subnames = langs.i18n_sub_counts("langs.main_i18n", "langs_main_i18n_languages_count", "user")
local report_main_discreet = viewers.styles_color_discreet( viewers.form_main_version(main_versions) )
local title = viewers.form9usertranslate_user("versions_support_desk_title", report_main_discreet, strs_on_tabs, tables_c)
-- "Support desk for %1 : %2 translations in %3 languages"
return title
Ligne 9 290 ⟶ 9 005 :
}
 
function drop_box.new(selector, title, content_or_func, ...) -- Formats a drop_box for a doc or a group of tests. Take apart onedrop options.
-- res = res .. drop_box.new(selector, "activity_report_subtasks_title", activity.central_subtasks_report) -- typical use
-- selector = "allwaysview" -- To allways display one view. -- selector = "enforcerun" -- To debug one box with INTERNAL ERROR.
local memo = viewers.save_configs("drop_box.new") -- Save global configuration before eventual changes.
local onedrop = {}
onedrop.selector = selector
onedrop.title = onedrop.title or title
onedrop.erros = "" -- put all variables in a table for easier tests.
onedrop.content = ""
onedrop.content_or_func = content_or_func
onedrop.args = {...}
if not onedrop.title then onedrop.erros = onedrop.erros .. viewers.form9content("viewers_dropdown_missing_title") end
if onedrop.selector == "never" then return "" end -- function viewers.is_in_sp(
if (onedrop.selector == true) or viewers.is_in_sp(onedrop.selector, "allwaysview alltestsview enforcerun") then onedrop.view = true end
if not onedrop.view then
onedrop.content = ""
onedrop.erros = onedrop.erros .. "\n* The selector of this Drop box is abnormal. This Drop box is in error." -- MUMU : means to report in the CentralManual.
return "<b>" .. onedrop.erros .. "</b></b>" -- to not transmit bad pairs of <b>...</b>
end
-- All cases : "allwaysview alltestsview enforcerun failinref nocontent"
-- In other cases continue : "allwaysview alltestsview enforcerun "
onedrop.content_or_func = nil -- From a function to a string.
if type(onedrop.content_or_func) == "function" then onedrop.content = lua_table.from_subnames_object(onedrop.content_or_func) end -- Get the last sub-table from its sub-names.
if type(onedrop.content) ~= "string" then
onedrop.content = ""
onedrop.erros = onedrop.erros .. "\n* The content of this Drop box is not a string or a translation of a title." -- MUMU : means to report in the CentralManual.
end
if (type(onedrop.title) ~= "string") then
onedrop.title = ""
onedrop.erros = onedrop.erros .. "\n* The title of this Drop box is not a string or a translation of a title." -- MUMU : means to report in the CentralManual.
end
-- COCO
-- Style options in onedrop{}: ta1, image, ta2, margin_bottom, width, border_radius, border_color, bg1
for i, args_tab in ipairs(args) do -- Get the onedrop options for the drop_box.
modes.recursiveLoop = (modes.recursiveLoop or 0) + 1
if modes.recursiveLoop > 33 then return "" end
-- The last argument can be a onedrop to change the look of the drop_box
if (i == lua_table.level_count(args) ) and (type(args_tab) == "table") and (args_tab["CSStyle"] == "CSStyle") then
-- MUMU : Reports in the CentralManual : if the last argument after the function itself is a table["CSStyle"] == "CSStyle" it change the style of the drop box.
onedrop = mw.clone( args_tab )
end
end
if type(onedrop.content) == "function" then onedrop.content_or_func = onedrop.content(title, content, onedrop) end -- and use it as content form function
if type(title) == "function" then
title = title() -- function drop_box.new_title()
elseif type(title) ~= "string" then title = "viewers_dropdown_missing_title" end
title = viewers.form9user(title)
local opt = mw.clone(drop_box.css_options) -- Save global configuration before eventual changes.
onedrop = { -- Conventional css parameters : from -- https://en.wikisource.org/wiki/Template:drop_box#Parameters
image = nil,
cssview = onedrop.cssview, -- cssview : display values of options
fw1 = onedrop.fw1 or opt.fw1, -- "left", -- fw1 : the font-weight for the heading
fw2 = onedrop.fw2 or opt.fw2, -- "left", -- fw2 : the font-weight for the body
fs1 = onedrop.fs1 or opt.fs1, -- "100%", -- font-size: 100%;
fs2 = onedrop.fs2 or opt.fs2, -- "100%", -- font-size: 100%;
bg1 = onedrop.bg1 or opt.bg1, -- "#FFFFFF", -- bg1 : the background-color for the heading
bg2 = onedrop.bg2 or opt.bg2, -- "#FFFFFF", -- bg2 : the back.clicground-color for the body
ta1 = onedrop.ta1 or opt.ta1, -- "left", -- ta1 : the text-align for the heading
ta2 = onedrop.ta2 or opt.ta2, -- "left", -- ta2 : the text-align for the body
float = onedrop.float or opt.float, -- "none", -- float : should the box be floated? (left, right, or none)
width = onedrop.width or opt.width, -- "99%", -- width : the width of the box, e.g. 33%
border_radius = onedrop.border_radius or opt.border_radius, -- "0px 0px 0px 0px", -- border-radius: "15px 50px 30px 5px" : add rounded corners to an element.
style = onedrop.style or opt.style, -- "0px 0px 0px 0px", -- style : HTML/CSS affectionados only: any other css style arguments for the whole box
-- <div id="NavFrame10" class="NavFrame" style="clear:both; margin-bottom:1em; width:99%; border-style:solid; border-radius:0px 0px 0px 0px; border-color:#AAAAAA; background-color:#FFFFFF;" title="▼ /▶ ">
hidden = onedrop.hidden or opt.hidden, -- "true", -- hidden : set this to any string (e.g. hidden=true) to have the box hidden by default
headType = onedrop.headType or opt.fw1, -- "h4", -- headType : allows you to set the box header to (say) "h4", which means it will be included in the table of contents. This is provided as an explicit parameter because if you just surround the title with header tags, e.g. <h4>Box 1.1</h4>
tc1 = onedrop.tc1 or opt.tc1, -- "black", -- tc1 : the text-color for the heading
tc2 = onedrop.tc2 or opt.tc2, -- "black", -- tc2 : the text-color for the body
border_color = onedrop.border_color or opt.border_color, -- "#AAAAAA", -- border-color : the text-color for the heading and the body
-- display = onedrop.display or opt.display, -- "block", -- display: block : results without line break.
display = onedrop.display or opt.display, -- "inline", -- display: inline : results with free line break.
margin_all = onedrop.margin_all or opt.margin_all, -- "0px", -- margin
margin_bottom = onedrop.margin_bottom or opt.margin_bottom, -- "1em", -- margin-bottom
--
height = onedrop.height or opt.height, -- "1.6em", -- height
label = onedrop.label or opt.label, -- "&#x25bc; &nbsp; /&#x25b6; &nbsp; ", -- = "Unwrap/Wrap",
-- ▼ = &#x25bc; -- ▶ = &#x25b6; https://fr.wikipedia.org/wiki/Table_des_caract%C3%A8res_Unicode/U25A0
-- label = label or viewers.form9user("viewers_drop_box_label_Unwrap"), -- = "Unwrap/Wrap" translations
}
if type(onedrop.content) ~= "string" then
onedrop.erros = tostring(onedrop.erros) .. "\n* Inside the viewer onedrop.new(), the result of function in test or in report is not a string."
end
if type(onedrop.image) == "string" then
onedrop.image = ''
.. '<div class="NavPic" style=" background-color:' .. onedrop.bg1 .. '; " >'
.. '[[File:' .. onedrop.image .. '|22px]]'
.. '</div>' -- &nbsp;
else
onedrop.image = ''
end
if onedrop.cssview then
onedrop.erros = onedrop.erros .. '\n* List values of <b>CSS if cssview</b>: '
for key, elem in pairs(onedrop) do
if (key ~= "content") and (key ~= "title") then t = t .. viewers.ta(key, elem) end
end
end
-- drop_box from https://fr.wikisource.org/wiki/Modèle:Boîte déroulante = drop_box from template on 20180505 OK.
-- p_template_drop_box_name = 'Boîte déroulante', -- Modèle:Boîte déroulante for drop_box.form
local dropbox_title = 'Boîte déroulante'
local dropbox_title = viewers.form9content("p_template_drop_box_name")
-- Gets the local dropbox in each wiki.
onedrop.content = onedrop.content or tostring(onedrop.content)
onedrop.title = onedrop.title or tostring(onedrop.title)
onedrop.box = "{{" .. langs.content_translations["p_template_drop_box_name"] .. "|selector=" .. tostring(onedrop.selector) .. "|title=" .. onedrop.title .. "|content=" .. onedrop.content .. "}}"
onedrop.box = onedrop.box .. mw.getCurrentFrame():expandTemplate{ title = dropbox_title, args = {
["label"] = onedrop.label, ["titre"] = onedrop.title, ["contenu"] = box,
["margeHaut"] = onedrop.margin_all, ["margeBas"] = onedrop.margin_bottom,
["hauteur"] = onedrop.height, -- ["width"] = onedrop.width, -- not in html V5
["couleurFond"] = onedrop.bg1, ["couleurBordure"] = onedrop.tc1,
["alignT"] = onedrop.ta1, ["align"] = onedrop.ta2,
["arrondi"] = onedrop.border_radius, ["couleurBordure"] = onedrop.border_color,
-- Keep default values for : br, image, alignB, hauteur, margeHaut, margeBas
} }
viewers.restore_configs(memo, "drop_box.new") -- Restore global configurations after eventual changes.
return onedrop.erros .. onedrop.box .. "</b>" -- to not transmit bad pairs of <b>...</b>
end -- res = res .. drop_box.new("enforce", "langs_list_MediaWiki_languages_title", langs.list_MediaWiki_languages ) -- OK, show in table ?
 
-- t = drop_box.form(dropit.title, dropit.content, dropit)
function drop_box.form(title, content, dropit) -- Easy drop_box style from a list of named options.
local memo = viewers.save_configs("drop_box.form") -- Save global configuration before eventual changes.
local dropit = mw.clone(dropit) -- Save global configuration before eventual changes.
local t = "\n* drop_box.form:"
-- if type(content) == "function" then content = ( content(title, content, dropit) ) end -- and use it as content form function
t = t .. viewers.ta("title", tostring(title) )
t = t .. viewers.ta("content", tostring(content) )
t = t .. viewers.ta("dropit", tostring(dropit) )
if type(title) == "function" then
title = title() -- function drop_box.new_title()
elseif type(title) ~= "string" then title = "viewers_dropdown_missing_title" end
title = viewers.form9user(title)
local dropit = dropit or {}
t = t .. viewers.ta("\n* title", tostring(title) )
t = t .. viewers.ta("#dropit", lua_table.level_count(dropit) )
local opt = mw.clone(drop_box.css_options) -- Save global configuration before eventual changes.
dropit = { -- Conventional css parameters : from -- https://en.wikisource.org/wiki/Template:drop_box#Parameters
image = nil,
cssview = dropit.cssview, -- cssview : display values of options
fw1 = dropit.fw1 or opt.fw1, -- "left", -- fw1 : the font-weight for the heading
fw2 = dropit.fw2 or opt.fw2, -- "left", -- fw2 : the font-weight for the body
fs1 = dropit.fs1 or opt.fs1, -- "100%", -- font-size: 100%;
fs2 = dropit.fs2 or opt.fs2, -- "100%", -- font-size: 100%;
bg1 = dropit.bg1 or opt.bg1, -- "#FFFFFF", -- bg1 : the background-color for the heading
bg2 = dropit.bg2 or opt.bg2, -- "#FFFFFF", -- bg2 : the back.clicground-color for the body
ta1 = dropit.ta1 or opt.ta1, -- "left", -- ta1 : the text-align for the heading
ta2 = dropit.ta2 or opt.ta2, -- "left", -- ta2 : the text-align for the body
float = dropit.float or opt.float, -- "none", -- float : should the box be floated? (left, right, or none)
width = dropit.width or opt.width, -- "99%", -- width : the width of the box, e.g. 33%
border_radius = dropit.border_radius or opt.border_radius, -- "0px 0px 0px 0px", -- border-radius: "15px 50px 30px 5px" : add rounded corners to an element.
style = dropit.style or opt.style, -- "0px 0px 0px 0px", -- style : HTML/CSS affectionados only: any other css style arguments for the whole box
-- <div id="NavFrame10" class="NavFrame" style="clear:both; margin-bottom:1em; width:99%; border-style:solid; border-radius:0px 0px 0px 0px; border-color:#AAAAAA; background-color:#FFFFFF;" title="▼ /▶ ">
hidden = dropit.hidden or opt.hidden, -- "true", -- hidden : set this to any string (e.g. hidden=true) to have the box hidden by default
headType = dropit.headType or opt.fw1, -- "h4", -- headType : allows you to set the box header to (say) "h4", which means it will be included in the table of contents. This is provided as an explicit parameter because if you just surround the title with header tags, e.g. <h4>Box 1.1</h4>
tc1 = dropit.tc1 or opt.tc1, -- "black", -- tc1 : the text-color for the heading
tc2 = dropit.tc2 or opt.tc2, -- "black", -- tc2 : the text-color for the body
border_color = dropit.border_color or opt.border_color, -- "#AAAAAA", -- border-color : the text-color for the heading and the body
-- display = dropit.display or opt.display, -- "block", -- display: block : results without line break.
display = dropit.display or opt.display, -- "inline", -- display: inline : results with free line break.
margin_all = dropit.margin_all or opt.margin_all, -- "0px", -- margin
margin_bottom = dropit.margin_bottom or opt.margin_bottom, -- "1em", -- margin-bottom
--
height = dropit.height or opt.height, -- "1.6em", -- height
label = dropit.label or opt.label, -- "&#x25bc; &nbsp; /&#x25b6; &nbsp; ", -- = "Unwrap/Wrap",
-- ▼ = &#x25bc; -- ▶ = &#x25b6; https://fr.wikipedia.org/wiki/Table_des_caract%C3%A8res_Unicode/U25A0
-- label = label or viewers.form9user("viewers_drop_box_label_Unwrap"), -- = "Unwrap/Wrap" translations
}
dropit.title = dropit.title or title
dropit.content = dropit.content or content or
"\n* Inside the viewer drop_box.form(), a function in test or in report has a nil result."
-- if type(dropit.content) == "function" then dropit.content = ( dropit.content() ) end -- and use it as content form function
if type(dropit.content) == "function" then dropit.content = ( dropit.content() ) end -- and use it as content form function
if type(dropit.image) == "string" then
dropit.image = ''
.. '<div class="NavPic" style=" background-color:' .. dropit.bg1 .. '; " >'
.. '[[File:' .. dropit.image .. '|22px]]'
.. '</div>' -- &nbsp;
else
dropit.image = ''
end
local d = dropit
-- res = res .. "</b>"
local t = "</b>"
if dropit.cssview then
t = t .. '\n* List values of <b>CSS if cssview</b>: '
for key, elem in pairs(dropit) do
if (key ~= "content") and (key ~= "title") then t = t .. viewers.ta(key, elem) end
end
end
-- drop_box from https://fr.wikisource.org/wiki/Modèle:Boîte déroulante = drop_box from template on 20180505 OK.
-- p_template_drop_box_name = 'Boîte déroulante', -- Modèle:Boîte déroulante for drop_box.form
local dropbox_title = 'Boîte déroulante'
--[ [
-- local dropbox_title = viewers.form9content("p_template_drop_box_name")
t = t .. mw.getCurrentFrame():expandTemplate{ title = dropbox_title, args = {
["label"] = d.label, ["titre"] = d.title, ["contenu"] = d.content,
["margeHaut"] = d.margin_all, ["margeBas"] = d.margin_bottom,
["hauteur"] = d.height, -- ["width"] = d.width, -- not in html V5
["couleurFond"] = d.bg1, ["couleurBordure"] = d.tc1,
["alignT"] = d.ta1, ["align"] = d.ta2,
["arrondi"] = d.border_radius, ["couleurBordure"] = d.border_color,
-- Keep default values for : br, image, alignB, hauteur, margeHaut, margeBas
} }
--] ]
drop_box.Dropbox_t = t
viewers.restore_configs(memo, "drop_box.form") -- Restore global configurations after eventual changes.
return t
end -- function drop_box.form(title, content, dropit)
 
function drop_box.new(selector, title, content_or_func, ...) -- Formats a drop_box for a doc or a group of tests. Take apart dropit options.
-- From 20180503 a bug (in Module:Centralizer or MediaWiki) some Dropboxes display twice : modes.get_args_report.
-- From 20180503 a bug (in Module:Centralizer or MediaWiki) See CentralManual display twice : modes.get_args_report.xml
-- selector = "allwaysview" -- To allways display one view. -- selector = "enforcerun" -- To debug one box with INTERNAL ERROR.
local memo = viewers.save_configs("drop_box.new") -- Save global configuration before eventual changes.
local t = ""
local args = {...}
local content_or_func_error = viewers.form9user("\n* Error : Abnormal content for drop_box.new(%1, %2).\n*", selector, title, content_or_func) -- , %3
if selector == "never" then return "" end
if not ( (selector == true) or (selector == title) or viewers.is_in_sp(selector, "allwaysview alltestsview enforcerun failinref nocontent") ) then return "" end
if (type(title) ~= "string") then title = "Default_title" end
local dropit = nil -- dropit to change the look of the drop_box
-- Style options in dropit{}: ta1, image, ta2, margin_bottom, width, border_radius, border_color, bg1)
for i, args_tab in ipairs(args) do -- Get the dropit options for the drop_box.
modes.recursiveLoop = (modes.recursiveLoop or 0) + 1
if modes.recursiveLoop > 33 then return "" end
-- The last argument can be a dropit to change the look of the drop_box
if (i == lua_table.level_count(args) ) and (type(args_tab) == "table") and (args_tab["dropit"] == "dropit") then
dropit = mw.clone( args_tab )
end
end
local dropit = dropit or {} -- for antiCrash
if type(title) ~= "string" then title = "viewers_dropdown_missing_title" end
dropit.selector = selector
dropit.title = title
dropit.args = { ... } -- optional arguments for the content_or_func function
local func_from_name = nil
dropit.content = content_or_func -- string or function
if type(content_or_func) == "string" then func_from_name = lua_table.from_subnames_object(content_or_func) end -- Get the last sub-table from its sub-names.
dropit.content_error = ""
dropit.title = dropit.title .. ( dropit.title_errors or "" )
dropit.resultKind = "ref"
local success, result = true, ""
dropit.result = result
dropit.success = success
if type(func_from_name) == "function" then -- In case of named function:
dropit.func_name = content_or_func -- memorise its name
-- dropit.content = func_from_name -- and use it as content form function
end
local res = drop_box.form(dropit.title, dropit.content, dropit)
if not dropit.success then
dropit.content_ref = "content_error<ref>" .. viewers.styles_color_error( dropit.content_error) .. "</ref>"
dropit.content = dropit.content_ref
end
local list, count, level, split = lua_table.level_list(package.loaded) -- subtasks S170813lll
viewers.restore_configs(memo, "drop_box.new") -- Restore global configurations after eventual changes.
-- res = t .. res
return res
end -- function drop_box.new(selector, title, content, ...)
 
 
-- Build a table, with headers for columns. Example:f
-- ! style="text-align:left;"| Item
Ligne 9 646 ⟶ 9 104 :
trk.End_row_N = lua_table.level_count(tab_view.rowGroup) -- err tab_view.test_group is table ?
tab_view.t = tab_view.t .. "\n* Start: "
tab_view.t = tab_view.t .. viewers.form9usertranslate_user("tb=<b>%1</b>, tbN=<b>%2</b>, min=<b>%3</b>, max=<b>%4</b>. ", tostring(trk.Start_test), trk.Start_test_N, trk.min_in, trk.max_in) -- track to debug
tab_view.t = tab_view.t .. viewers.form9usertranslate_user("i=<b>%1</b>, case_in=<b>%2</b>, case_out=<b>%3</b>, ", tostring(trk.i), type(trk.case_in), type(trk.case_out) )
trk.Start_test = tab_view.test_group -- err tab_view.test_group is table ?
trk.Start_test_N = lua_table.level_count(tab_view.test_group) -- size tab_view.test_group
Ligne 9 653 ⟶ 9 111 :
trk.Start_row_N = lua_table.level_count(tab_view.rowGroup) -- err tab_view.test_group is table ?
tab_view.t = tab_view.t .. " ** End: "
tab_view.t = tab_view.t .. viewers.form9usertranslate_user("tb=<b>%1</b>, tbN=<b>%2</b>, min=<b>%3</b>, max=<b>%4</b>. ", tostring(trk.End_test), trk.End_test_N, trk.min_out, trk.max_out) -- track to debug
tab_view.track = trk
end
Ligne 9 664 ⟶ 9 122 :
tab_view.t = (tab_view.t or "")
tab_view.headers = tab_view.headers or "viewers_tableView_default_headers"
tab_view.headers = viewers.form9usertranslate_user(tab_view.headers)
tab_view.form_elem_detail = tab_view.form_elem_detail or "viewers_tab_view_form_elem_detail" -- "detail = %1 | %2 | %3 | %4 | %5."
tab_view.headers_class = tab_view.headers_class or "wikitable alternative center"
Ligne 9 695 ⟶ 9 153 :
err = err .. tab_view.headers
end
local head = mw.text.split( viewers.form9usertranslate_user(tab_view.headers), ";")
for i, header in ipairs(head) do -- Formats headers of the table.
t = t .. viewers.table_col(header or "")
Ligne 9 738 ⟶ 9 196 :
local res = ""
if not mask_sections then res = res .. viewers.doc_section(selector, "viewers_section_title_page", "h2", mask_sections) end
-- { "20180824", "20180825", "done", "Rical", "S180824iCD", "in activity.begin_central_modules_support() header namespace and local links.", },
res = res .. drop_box.new(selector, "activity.begin_central_modules_support() Tests **", activity.begin_central_modules_support,
{ ["CSStyle"] = "CSStyle", ["border_radius"] = "5px", ["color"] = viewers.usual_colors["invoke"], }) -- doc link MUMU
res = res .. drop_box.new(selector, "datas.available_props_report(t) Reports availables datas properties **", datas.available_props_report)
-- res = res .. drop_box.new(selector, "modes_args_known_report_title", modes.args_known_report)
Ligne 9 767 ⟶ 9 222 :
local res = ""
if not mask_sections then res = res .. viewers.doc_section(selector, "Library:activity", "h3") end
res = res .. drop_box.new(selector, "activity_support_central_modules_title", activity.begin_central_modules_support) -- doc link
-- MUMU : Reports in the CentralManual : if the last argument after the function itself is a table["CSStyle"] == "CSStyle" it change the style of the drop box.
res = res .. drop_box.new(selector, "langs_translations_stats_report_title", langs.translations_statistics_report)
res = res .. drop_box.new(selector, "activity_phabricator_tasks_title", activity.phabricator_tasks_report) -- S170606act
Ligne 9 803 ⟶ 9 258 :
res = res .. drop_box.new(selector, "luaTable_rough_view_tests_title", lua_table.rough_view_test )
res = res .. drop_box.new(selector, "lua_table_structure_recursive_report", lua_table.structure_recursive_report)
res = res .. drop_box.new(selector, "luaTable_toList_tests_title", lua_table.to_list_tests, { ["onedropdropit"] = "onedropdropit", arggg = "onedropdropit" } )
res = res .. drop_box.new(selector, "luaTable_toTable_tests_title", lua_table.to_table_test)
--
Ligne 9 825 ⟶ 9 280 :
res = res .. drop_box.new(selector, "modes_options_uses_tests_title", modes.options_from_mode_tests)
-- res = res .. drop_box.new(selector, "modes_options_uses_tests_title", modes.options_from_mode_tests,
-- onedropd.bg1="yellow", onedropd.border_color="red", onedropd.border_radius="10px 10px 10px 10px", image="Sanscrit dha.svg", } ) -- , cssview=true
res = res .. drop_box.new(selector, "modes_recursive_normal_tests_title", modes.recursive_normal_tests) -- only errors
-- arguments list
Ligne 9 857 ⟶ 9 312 :
if not mask_sections then res = res .. viewers.doc_section(selector, "Library:viewers", "h3") end
-- The Library:viewers can formats texts to document in some languages: tableview(in lines and columns), Dropboxes, recursive luatables...
res = res .. drop_box.new(selector, "langs_form9user_tests_title", viewers.form9user_testtranslate_user_test )
res = res .. drop_box.new(selector, "langs_form99user_tests_title", viewers.form99user_test_test )
res = res .. drop_box.new(selector, "viewers_parts_of_date_tests_title", viewers.parts_of_date_tests)
res = res .. drop_box.new(selector, "viewers_simpleList_tests_title", viewers.simple_list_test )
Ligne 9 873 ⟶ 9 328 :
-- use : frame:newTemplateParserValue{ title = title, args = table }
local t = "\n* viewers.try_graph()"
t = t .. "<b>CarrièreCarrière et parcours politique d'Emmanuel Macron</b>"
t = t .. viewers.time_line
-- <noinclude> </noinclude>
Ligne 9 892 ⟶ 9 347 :
toc_class = "toc",
toc_form = "toc_form",
-- result_form = viewers.form9usertranslate_user(result_form, toc_form, toc_class, edit_form, content_form, page_form, user_form, xx, xx, xx)
-- %1 %1 %1 %1 %1 %1 %1 %1
CSSstructure = '<div class="editOptions">%1</div><div class="editOptions">%1</div><div class="editOptions">%1</div><div class="editOptions">%1</div>',
Ligne 9 899 ⟶ 9 354 :
viewers_sentence_example_page_text = "Dieser Satz zeigt eine Beispieltextseite. ", -- de
viewers_sentence_example_page_text = "This sentence shows an example of page text. ", -- en
viewers_sentence_example_page_text = "Esta frase muestra una páginapágina de muestra de texto. ", -- es
viewers_sentence_example_page_text = "Cette phrase montre un exemple de texte de page. ", -- fr
viewers_sentence_example_page_text = "Ez a mondat egy minta oldal szövegszöveg.", -- hu
viewers_sentence_example_page_text = "CâuCâu nàynày cho thấythấy mộtmá»™t trang mẫumẫu củacủa vănvăn bảnbản. ", -- vi
}
 
-- The TemplateStyles extension introduces a <templatestyles> tag to specify that a stylesheet should be loaded from a wiki page. Placing this in a template allows the template to have custom styles without having to place them in MediaWiki:Common.css.
 
function p.init_international_report(t) -- Reports known_arguments for phase = "mode" or "argument" or "QITEM" or "property"
local memo = viewers.save_configs("p.Init_central_module_report") -- Save global configuration before eventual changes.
local t = t or "\n* <b>p.Init_central_module_report(t)</b> Reports known_arguments for phase = mode or argument or QITEM or property. \n*"
modes.actual_arguments = modes.actual_arguments or {} -- Activated known_arguments depending of for phase = mode or argument or QITEM or property
local tab_view = { -- Group datas and options for a table view with lines and columns.
test_group = modes.actual_arguments, -- = sorted activity.phabricator_tasks_Group,
title_memo = "p_Init_central_module_report **", -- Activated known_arguments depending of phase
headers = "activity_phabricator_tasks_headers", -- "Importance; modified on; Task; Status; Title"
headers = "key; keyword; typ; bind; need; prop; prop_default; format; value",
headers_class = "wikitable alternative center sortable",
form_one_case = function(case) -- Convert a case from test_group to rowGroup.
-- ["QITEM"] = { ["typ"] = "dat", ["need"] = 0, ["keyword"] = "QITEM", ["prop"] = "QITEM", prop_default = "Q34743", },
-- ["mode"] = { ["typ"] = "config", ["need"] = 0, ["keyword"] = "mode", ["prop_default"] = "read"},
-- ["label"] = { ["typ"] = "dat", ["need"] = 0, ["keyword"] = "label" , ["prop"] = "label", ["prop_default"] = "Aristote", },
return { case.key, case.keyword, case.typ, case.bind, case.need, case.prop, case.prop_default, case.format, case.value, }
end,
rowGroup = {},
-- track_on = true, allwaysview
-- res = res .. drop_box.new(selector, "p_Init_central_module_report **", p.Init_central_module_report) -- for phase = mode or argument or QITEM or property
}
t = t .. tableview.new(tab_view) -- Runs tests cases and formats a table view with lines and columns.
viewers.restore_configs(memo, "p.Init_central_module_report") -- Restore global configurations after eventual changes.
return t
end -- t = t .. function p.init_international_report(t) -- FAMLTVQDR replaces function Central.init( code DODO
 
p.options_for_modes = { -- module options_for_modes
Ligne 9 939 ⟶ 9 369 :
}
function p.box_read(prop, title) -- Draw the main box one. -- ric (p.box_read)
-- GaliléeGalilée (Q307), Victor Hugo (Q535), Aristote (Q868), Albert Einstein (Q937), Mohandas Karamchand Gandhi (Q1001), Christophe Colomb (Q7322),
-- Nelson Mandela (Q8023), Rudyard Kipling (Q34743), Martin Fleischmann (Q899264), Emmanuel Macron (Q3052772), Ludwik Lejzer Zamenhof (Q11758)
datas.QITEM = mw.wikibase.getEntityIdForCurrentPage() -- use props.QITEM Returns the Item id as string, like "Q42"
-- local QITEM = datas.QITEM or datas.default_item or "Q307Q11758" -- Keep Galilée (Q307)Ludwik Lejzer Zamenhof
local QITEM = "Q11758" -- Keep Ludwik Lejzer Zamenhof
datas.prop, datas.props = datas.get_item(modes.args_known, QITEM) -- Get datas from mw.wikibase for the page.
langs.init_content_page_user_lang() -- function langs.init_content_page_user_lang()
local res = ""
local prop = datas.prop
-- local resimage = "viewers.form_image(pprop.box_read)image, "50)
local flagimage = viewers.form_image("Flag_of_EnglandFlag_of_Europe.svg", 50)
-- local flag = viewers.form_image(viewers.form9usertranslate_user("flag_of_country"), 50)
-- args_known_country = "England", -- English
-- args_known_flag = "Flag_of_England.svg", -- English
-- args_known_monument = "St_Pauls_aerial_%28cropped%29.jpg", -- English St Paul's Cathedral
-- args_known_town = "London", -- English
local image = viewers.form_image(prop.image, 50)
local birthyear_deathyear = " ( " .. (prop.birthyear or "birthyear") .. " - " .. (prop.deathyear or "deathyear") .. " ) "
local phabtask = " - [[d:" .. QITEM .. "|Datas]] "
Ligne 9 960 ⟶ 9 391 :
res = res .. "<br/><center>Labels in langs: <b>" .. prop.labelbylang .. "</b>, user: <b>" .. prop.labeluser .. "</b>, content: <b>" .. prop.labelcontent .. "</b>, page: <b>" .. prop.labelpage .. "</b>"
res = res .. "<br/><center><b>description: " .. prop.description .. birthyear_deathyear .. "</b></center>"
res = res .. " <br/><center>" .. flag .. " * used languages: user:<b>" .. langs.user_lang .. "</b>, content:<b>" .. langs.content_lang .. "</b>, page:<b>" .. langs.page_lang .. "</b> * " .. image .. "</center>"
-- res = res .. "<br/><center>languages:<b>" .. langs.main_i18n_languages_list() -- List available translations languages
res = '<div style="border-radius:0.7em; margin-right:5px; box-shadow:0.2em 0.3em 0.2em #B7B7B7; background-color:#F1F1DE; padding:0.3em; width=90%; overflow-x:hidden; ">' .. res .. '</div>'
return res
end -- function p.box_read(args_finalargs_kown, title)
 
-- Display the documentation in an infobox, similar to edit-boxs
-- Affichage de documentation dans un cadre (box), semblable aux boites d'edition
function p.box_edit(args_finalargs_kown)
-- read = " box1 ",
-- edit = " box1 docdef docline docsrc docdata catview docview : ",
Ligne 9 974 ⟶ 9 405 :
-- tests = " box1 docdef docline docsrc docdata catview docview : tests ",
local res, props = "", datas.props
local args_known = args_known or modes.args_known or p.args_known or {} -- optional value from p.args_known = { -- }
if type(args_final) ~= "table" then args_final = modes.args_final end -- optional arguments
langs.init_content_page_user_lang(modes.args_source.contentlang, modes.args_source.pagelang, modes.args_source.userlang)
-- res = res .. "<center><small>" .. viewers.discreet_main_version() .. viewers.ta("contentlang", langs.content_lang) .. viewers.ta("pagelang", langs.page_lang) .. viewers.ta("userlang", langs.user_lang)
Ligne 9 981 ⟶ 9 412 :
res = res .. " - viewers.phab_task('T135845', 'Convert')"
res = res .. " - viewers.phab_task('T198107', 'Begin to use')" .. "</center>"
res = res .. viewers.styles_color_error("<center><b>" .. viewers.form9usertranslate_user("modes_delete_docbox_wng") .. "</b><br/></center>")
res = res .. drop_box.newform(drop_box.new_title(), versions.form_support_desk_report() )
if modes.option("debug") then res = res .. "\n*" .. viewers.ta("modes.cat_view", modes.cat_view) .. viewers.ta("modes.template_options", modes.template_options) .. viewers.ta("modes.mode_options", modes.mode_options) end
local lnk = props.QITEM
if modes.option("docdata") then res = res .. "\n*" .. modes.generDoc(" docdef docline ", datas.args_wikidata, datas_link) end
res = res .. ", " .. viewers.form9usertranslate_user(" (%1 properties)", (datas.propss_count_all or "") ) -- datas_structured_data_txt
if modes.option("docview") then res = res .. "\n*" .. modes.generDoc("", args_finalargs_kown, "Arguments") end
if not modes.option("noerr")then res = res .. "\n*" .. events.errors_lister() end
local t = "" -- Formats events views
Ligne 10 021 ⟶ 9 452 :
-- result = result .. "\n* " .. events.categories_lister(":")
return res
end -- function p.box_edit(args_finalargs_kown)
 
p.options_for_modes = { -- module options_for_modes
function p.form_result(args_final, main_module) -- Formats all results of this module and its sub-modules.
read = " box1 catview ",
doc = " nobox1 noerr nocatview ",
edit = " box1 catview docdef docline docsrc docdata docview : ",
tests = " box1 catview docdef docline docsrc docdata docview : tests ",
}
 
function p.form_result(args_kown, main_module) -- Formats all results of this module and its sub-modules.
local res = ""
local args_kown = args_kown or modes.args_kown or versions.args_kown or p.args_kown or {}
local memo = viewers.init_configs("p.form_result") -- Initialize global configurations and save them before eventual changes.
datas.default_item = datas.default_item or "Q307Q11758" -- KeepLudwik GaliléeLejzer Zamenhof (Q307Q11758)
-- main_module = main_module or versions.main_module
if type(args_finalargs_kown) ~= "table" then args_finalargs_kown = modes.args_finalargs_kown end -- optional arguments
res = res .. viewers.ta("modes.mode_name", modes.mode_name) .. viewers.ta("modes.options", modes.options)
-- if modes.option("box1") then res-- =if reswe ..have p.box_read(props)the endoption --"box1" ricwe (p.box_read)display only the panel of the read mode
if modes.option("box1") then -- res = res .. pviewers.box_readform_user_lang_test(propref, title...) end -- DrawReplace the%1 mainto box%9 oneby arguments. --Always ricin (p.box_read)english
res = res .. p.box_read(prop, title)
if modes.option("box1") or modes.option("catview")
res = res .. p.box_read(prop, title)
then res = res .. " catview = " .. events.categories_lister(":") end -- Display categories
-- return res function viewers.form_user_lang_test(ref, ...)
events.gener_categories(args_final) -- Formats all categories without activate them
end -- Draw the main box one. -- ric (p.box_read) function modes.option(
if modes.option("docview") or modes.option(":") or modes.option("tests") or (modes.args_final.mode == "edit") then
-- if modes.option("tests") and not modes.option("box1") then -- if we have the option "tests" we display only all active tests
res = res .. "\n* datas.default_item = <b>" .. datas.default_item .. "</b>, datas.default_name = <b>" .. datas.default_item .. "</b>\n"
if modes.option("tests testsy box1 catview docdef docline docsrc docdata docview ") or true then -- if we have the option "tests" we display only all active tests
res = res .. p.box_edit(modes.args_final)
modes.time3 = os.clock()
elseif modes.option("read") or (modes.args_final.mode == "read") then -- (box_edit)
res = res .. "\n* datas.default_item = <b>" .. datas.default_item .. "</b>, datas.default_name = <b>" .. datas.default_item .. "</b>\n"
res = res .. p.box_read(modes.args_final)
elseif modes.option("edit") or (modes.args_final.mode == "edit") then
end
modes.time3 = os.clock()
if modes.option("tests") then -- or (modes.args_final.mode == "tests") --
res = res .. viewers.doc_group("allwaysview") -- viewers.doc_group(selector, mask_sections) -- To enforce title of sections
-- res = res .. viewers.doc_page("allwaysview") -- included in viewers.doc_group
-- res = res .. viewers.doc_module("allwaysview") -- included in viewers.doc_group
-- res = res .. viewers.doc_internal("allwaysview") -- included in viewers.doc_group
res = res .. versions.running_times(false, "")
end
viewers.restore_configs(memo, "p.form_result") -- Restore global configurations after eventual changes.
return res
end -- res = res .. p.form_result(args_finalargs_kown, main_module) -- Formats all results of this module and its sub-modules.
 
function viewers.init_configs(memo, tab_view, group) -- Initialize global configurations and save them before eventual changes.
Ligne 10 179 ⟶ 9 612 :
local t = t or "\n* viewers.save_restore_balance_report(t) Report known couples of save and restore global configurations."
viewers.save_restore_balance_group = viewers.save_configs_check(viewers.save_configs_runs, viewers.restore_configs_runs) -- After all runs, report saved global configurations.
t = t .. viewers.form9usertranslate_user("\n* This report checks %1 configurations.", #viewers.save_restore_balance_group)
if type(viewers.save_restore_balance_group) ~= "table" then -- abnormal run
t = t .. "\n* Error: <b>The table viewers.save_restore_balance_group{} do not exist.</b>"
Ligne 10 211 ⟶ 9 644 :
-- Arguments to import, do not translate.
["modules_guide"] = { ["typ"] = "ctr", ["need"] = 0, ["keyword"] = "modules_guide", ["modules_guide_default"] = "Centralizer", },
['p_template_drop_box_name'] = 'BoîteBoîte déroulantedéroulante', -- ModèleModèle:BoîteBoîte déroulantedéroulante for drop_box.form
['c'] = 'c',
['mode'] = 'mode',
Ligne 10 268 ⟶ 9 701 :
-- Importar estos argumentos. No traducir.
["modules_guide"] = { ["typ"] = "ctr", ["need"] = 0, ["keyword"] = "modules_guide", ["modules_guide_default"] = "Centralizer", },
['p_template_drop_box_name'] = 'BoîteBoîte déroulantedéroulante', -- ModèleModèle:BoîteBoîte déroulantedéroulante for drop_box.form
['c'] = 'c',
['mode'] = 'mode',
Ligne 10 277 ⟶ 9 710 :
--
-- Traducir todos los los argumentos siguientes:
-- Argumentos relacionados con el módulomódulo principal
occupation_cat = '%1',
p_authors_deathyear_cat = "Autores-%1",
year_number_cat = "AñoAño %1",
-- Nombres y descripciones de los argumentos
lastname = 'nombre',
lastname_descr = "Nombre. Por favor, especifique para corregir la clave de ordenaciónordenación.",
firstname = 'apellido',
firstname_descr = "Primero. Proponer para corregir la autómataautómata.",
firstname2 = 'primero',
firstname2_descr = "Primero. Proponer para corregir la autómataautómata.",
initial = 'inicial',
initial_descr = "Inicial para corregir la categoríacategoría de los autores.",
title = 'titulo',
title_descr = "TítuloTítulo de la páginapágina, automáticoautomático.",
country = 'paíspaís',
flag_of_country = 'Flag_of_Spain.svg',
flag_of_country_descr = 'Bandera del paíspaís',
-- nacimiento y muerte
birthday = 'nacimientodíanacimientodía', -- nacimiento P569
birthday_descr = "DíaDía de nacimiento.",
birthyear = 'nacimientoañonacimientoaño',
birthday_descr = "AñoAño de nacimiento.",
p_authors_birthyear_cat = "N%1", -- es.wikisource N1802 - F1885
deathday = 'muertedíamuertedía', -- muerte P570
deathday_descr = "DíaDía de muerte",
deathyear = 'muerteañomuerteaño',
deathyear_descr = "AñoAño de muerte",
p_authors_deathyear_cat = "F%1", -- es.wikisource N1802 - F1885
description = 'descripcion',
description_descr = "DescripciónDescripción del autor, para aclarar si la descripcióndescripción automáticaautomática no encaja.",
 
-- Argumentos limitados a múltiplesmúltiples valores
region = 'regiónregión',
region_descr = 'RegiónRegión para determinar los tiempos antiguos.',
region_values = "otro;china;india;siglo",
 
Ligne 10 319 ⟶ 9 752 :
 
sex = 'sex',
sex_descr = 'GéneroGénero del autor',
sex_values = 'hombre;mujer',
} -- p.i18n.es
 
p.i18n.fr = { -- Translations in françaisfrançais
-- Arguments to import, do not translate. Arguments àà importer, ne pas traduire.
["modules_guide"] = { ["typ"] = "ctr", ["need"] = 0, ["keyword"] = "modules_guide", ["modules_guide_default"] = "Centralizer", },
['p_template_drop_box_name'] = 'BoîteBoîte déroulantedéroulante', -- ModèleModèle:BoîteBoîte déroulantedéroulante for drop_box.form
['c'] = 'c',
['mode'] = 'mode',
Ligne 10 335 ⟶ 9 768 :
--
-- Translate all next arguments. Traduire tous les arguments suivants :
-- Arguments liésliés au module principal
occupation_cat = '%1',
p_authors_deathyear_cat = "Auteurs-%1",
year_number_cat = "AnnéeAnnée %1",
-- Noms et descriptions des arguments
lastname = 'nom',
lastname_descr = "Nom. A préciserpréciser pour corriger la cléclé de tri.",
firstname = 'prénomprénom',
firstname_descr = "PrénomPrénom. A préciserpréciser pour corriger la cléclé de tri.",
firstname2 = 'prenom',
firstname2_descr = "PrénomPrénom. A préciserpréciser pour corriger la cléclé de tri.",
initial = 'initiale',
initial_descr = "Initiale pour corriger les catégoriescatégories d'ateurs.",
title = 'titre',
title_descr = "Titre de la page, automatique.",
Ligne 10 358 ⟶ 9 791 :
birthday_descr = "Jour de naissance.",
birthyear = 'anneeNaissance',
birthyear_descr = "AnnéeAnnée de naissance",
p_authors_birthyear_cat = "Naissance en %1", -- fr.wikisource Naissance en 1802 DécèsDécès en 1885
deathday = 'jourDeces', -- muerte P570
deathday_descr = "Jour de décèsdécès",
deathyear = 'anneeDeces',
deathyear_descr = "AnnéeAnnée de décèsdécès",
p_authors_deathyear_cat = "DécèsDécès en %1", -- fr.wikisource Naissance en 1802 DécèsDécès en 1885
description = 'description',
description_descr = "Description de l'auteur, àà préciserpréciser si la description automatique ne convient pas",
--
-- Arguments limitéslimités àà des valeurs multiples
region = 'régionrégion',
region_descr = 'RégionRégion pour déterminerdéterminer les époquesépoques anciennes.',
region_values = "autre;chine;inde;sièclesiècle", -- wiki_selectors
 
rights = 'droits',
rights_descr = "Type de droits d'auteur nécessairenécessaire parmi : 70,50,mpf,ONU,non.",
rights_values = '70;50;mpf;ONU;non',
 
Ligne 10 381 ⟶ 9 814 :
sex_values = 'homme;femme',
} -- p.i18n.fr
 
p.i18n.vi = {
-- Arguments to import, do not translate. Arguments à importer, ne pas traduire.
["modules_guide"] = { ["typ"] = "ctr", ["need"] = 0, ["keyword"] = "modules_guide", ["modules_guide_default"] = "Centralizer", },
['p_template_drop_box_name'] = 'Boîte déroulante', -- Modèle:Boîte déroulante for drop_box.form
['c'] = 'c',
['mode'] = 'mode',
['options'] = 'options',
['itemid'] = 'itemid',
['QITEM'] = 'QITEM',
['uri'] = 'uri',
--
-- Translate all next arguments. Traduire tous les arguments suivants :
-- Arguments liés au module principal
occupation_cat = '%1',
p_authors_deathyear_cat = "Auteurs-%1",
year_number_cat = "Année %1",
-- Noms et descriptions des arguments
lastname = 'nom',
lastname_descr = "Nom. A préciser pour corriger la clé de tri.",
firstname = 'prénom',
firstname_descr = "Prénom. A préciser pour corriger la clé de tri.",
firstname2 = 'prenom',
firstname2_descr = "Prénom. A préciser pour corriger la clé de tri.",
initial = 'initiale',
initial_descr = "Initiale pour corriger les catégories d'ateurs.",
title = 'titre',
title_descr = "Titre de la page, automatique.",
country = 'pays',
flag_of_country = 'Flag_of_France.svg',
flag_of_country_descr = 'Drapeau du pays',
 
-- naissance et deces
birthday = 'jourNaissance', -- nacimiento P569
birthday_descr = "Jour de naissance.",
birthyear = 'anneeNaissance',
birthyear_descr = "Année de naissance",
p_authors_birthyear_cat = "Naissance en %1", -- fr.wikisource Naissance en 1802 Décès en 1885
deathday = 'jourDeces', -- muerte P570
deathday_descr = "Jour de décès",
deathyear = 'anneeDeces',
deathyear_descr = "Année de décès",
p_authors_deathyear_cat = "Décès en %1", -- fr.wikisource Naissance en 1802 Décès en 1885
description = 'description',
description_descr = "Description de l'auteur, à préciser si la description automatique ne convient pas",
--
-- Arguments limités à des valeurs multiples
region = 'région',
region_descr = 'Région pour déterminer les époques anciennes.',
region_values = "autre;chine;inde;siècle", -- wiki_selectors
 
rights = 'droits',
rights_descr = "Type de droits d'auteur nécessaire parmi : 70,50,mpf,ONU,non.",
rights_values = '70;50;mpf;ONU;non',
 
sex = 'sexe',
sex_descr = "Sexe de l'auteur",
sex_values = 'homme;femme',
} -- p.i18n.vi
 
-- - - - ------------------ - - - - ---------------------------------
Ligne 10 452 ⟶ 9 826 :
 
-- Arguments in order without names, with their keyword for use as other arguments.
-- Arguments dans l'ordre, non nommésnommés, avec leur keyword pour traitement comme les autres arguments.
-- [1] = { ["typ"] = "config", ["need"] = 0, ["keyword"] = "mode", ["syn"] = 2},
 
Ligne 10 529 ⟶ 9 903 :
["labeluser"] = { ["typ"] = "dat", ["need"] = 0, ["keyword"] = "labeluser", ["prop"] = "labeluser", },
["labelbylang"] = { ["typ"] = "dat", ["need"] = 0, ["keyword"] = "labelbylang",["prop"] = "labelbylang", },
["QITEM"] = { ["typ"] = "dat", ["need"] = 0, ["keyword"] = "QITEM", ["prop"] = "QITEM", ["prop_default"] = "Q307", }, -- GaliléeGalilée
-- GaliléeGalilée (Q307), Victor Hugo (Q535), Aristote (Q868), Albert Einstein (Q937), Mohandas Karamchand Gandhi (Q1001), Christophe Colomb (Q7322),
-- Nelson Mandela (Q8023), Rudyard Kipling (Q34743), Martin Fleischmann (Q899264), Emmanuel Macron (Q3052772)
["sitelink"] = { ["typ"] = "dat", ["need"] = 0, ["keyword"] = "sitelink", ["prop"] = "sitelink", },
Ligne 10 574 ⟶ 9 948 :
if type(args_source) ~= "table" then args_source = modes.args_source or {} end
if p.i18n and p.i18n.en then p.i18n.en.error_i18n_wanted_to_test_missing_translation = 'English error i18n wanted for tests missing translation' end
if p.i18n and p.i18n.es then p.i18n.es.error_i18n_deseada_para_probar_traduccion_faltan = 'Espagnol error i18n deseada para probar traduccióntraducción faltan' end
if p.i18n and p.i18n.fr then p.i18n.fr.error_i18n_voulue_pour_test_de_traduction_manquante = 'FrançaisFrançais erreur i18n voulue pour tests de traduction manquante' end
-- if not args_source.userlang then args_source.userlang = "en" end
-- if not args_source.contentlang then args_source.contentlang = "es" end
Ligne 10 584 ⟶ 9 958 :
if not args_source.nom then args_source.nom = "Victor Hugo" end
if not args_source.region then args_source.region = "india" end
if not args_source["régionrégion"] then args_source["régionrégion"] = "chine" end
if not args_source.description then args_source.description = "Victor Hugo est trèstrès connu." end
if not args_source.langue then args_source.langue = "françaisfrançais,japonais" end
if not args_source.occupation then args_source.occupation = "AcadémiciensAcadémiciens,PersonnalitésPersonnalités politiques" end
modes.args_source = args_source
return res
Ligne 10 593 ⟶ 9 967 :
 
function p.interact_args_final(args_import, args_known)
local t = "" -- function
local args_known = args_known or modes.args_known or p.args_known or {} -- optional value from p.args_known = { -- }
if type(args_import) ~= "table" then args_import = modes.args_import or {} end
local args_finalargs_kown = mw.clone(args_import) -- do not disturb original args_import
local a = args_import
local i = {} -- interact
datas.prop_default = datas.prop_default or "Q307Q11758" -- keepLudwik GaliléeLejzer Zamenhof (Q307Q11758)
local tit = nil
if not a.title then -- If title is undefined, enforce it.
Ligne 10 608 ⟶ 9 982 :
end
--
if a.docfunc then a.docfunc = mw.text.trim(a.docfunc) end -- dockey docitem args_known = { i18n.vies
if a.docitem then a.docitem = mw.text.trim(a.docitem) end -- dockey docitem args_known = { i18n.vies
if a.dockey then a.dockey = mw.text.trim(a.dockey) end -- dockey docitem args_known = { i18n.vies
if not a.QITEM then -- The Title can come from several arguments to insure it.
i.QITEM = a.label or modes.main_title or a.QITEM or a.itemid or a.title
Ligne 10 635 ⟶ 10 009 :
if label then i.label = label
else
events.add_err( viewers.form9usertranslate_user("versions_with_internal_error") )
events.add_cat( viewers.form9usertranslate_user("versions_with_internal_error_cat") )
end
--
if a.birth and not a.birthyear then
local tt, err = viewers.date_to_part(a.birth, viewers.form9usertranslate_user("modes_date_to_part_format"), "yyyy")
if tt then i.birthyear = tt else
events.add_err(err, viewers.form9usertranslate_user("birthyear"), "yyyy")
events.add_cat("modes_date_to_part_call_cat")
end
end
-- memorize interactions in modes.args_finalargs_kown and show errors or warnings
langs.init_content_page_user_lang() -- function langs.init_content_page_user_lang()
local n = 0
Ligne 10 652 ⟶ 10 026 :
local argskwn = args_known[key]
if type(argskwn) == "table" then
args_finalargs_kown[key] = val -- = i[key]
args_finalargs_kown.src = "inter"
n = n + 1
if (args_finalargs_kown.need == 2) and not a[key] then --
-- need = 2 necessary from argument or module interaction
events.add_wng("modes_auto_val_warning_wng", langs.user_translations[key], val) -- form_result
Ligne 10 663 ⟶ 10 037 :
end
end
modes.args_finalargs_kown = args_finalargs_kown
return args_finalargs_kown, t
end -- args_finalargs_kown = p.interact_args_final(args_import)
 
 
Ligne 10 672 ⟶ 10 046 :
-- Interfaces, alias and functions to templates
-- Interfaces, alias y funciones para modelos
-- Interfaces, alias et fonctions pour les modèlesmodèles
-- - - - ------------------ - - - - ---------------------------------
-- - - - ------------------ - - - - ---------------------------------
 
function versions.init_multilingual_module(mode, args_known) -- Initialise a mode in any known language on the base of known arguments
function Central.install(frame, Central_version, mode_name, args_known, options_for_modes)
-- p.version.versionNumber = CentralI18N.version.versionNumber
local res = ""
local args_all = {}
return "\n* ARGS.t=" .. tostring(ARGS.t) .. ", CNT.t=" .. tostring(CNT.t)
-- function versions.bind_reverse_i18n_translations(
end
versions.bind_reverse_i18n_translations(main_versions, loaded_pack) -- Bind all i18n translations from modules /I18N translations sub-modules + p.i18n
versions.bind_the_main_module() -- Bind the main module, all sub-modules and all their i18n. function versions.bind_the_main_module(
local args_known = args_known or modes.args_known or p.args_known or {}
versions.setup_central_libraries(versions.bindable_libraries) -- Actual installation of central bindable libraries in package.loaded
langs.init_content_page_user_lang() -- content_lang, page_lang, user_lang, "versions.init") first and later for all cases
modes.args_import = modes.import_arguments(args_known, args_source, content_translations, args_wikidata) -- Imports all arguments from template, or invoke, or wikidata
local args_import = args_import or modes.args_import
local options_for_modes = modes.options_for_modes or p.options_for_modes
-- local args_known, done = p.add_one_arg(args_known, one_arg) -- Gets mode, frame, args_known and interacts them.
res = res .. "\n* Count the previous main arguments:" .. lua_table.level_count(args_known) .. "<br/>"
res = res .. "\n* Count of new arguments added to previous main arguments:" .. lua_table.level_count(p.args_known) .. "<br/>"
langs.init_content_page_user_lang() -- content_lang, page_lang, user_lang, "versions.init") first and later for all cases
res = res .. modes.init_modes_translate_events(frame, Central_version, mode_name, args_known, options_for_modes, QITEM)
if type(langs) == "table" then langs.main_i18n = langs.main_i18n or versions.main_i18n or {} end -- Same pointers insure later same contents.
-- Bind all i18n translations from libraries, modules and their /I18N translations sub-modules
local loaded_pack = versions.loaded_modules_and_libraries
langs.init_content_page_user_lang() -- content_lang, page_lang, user_lang, "versions.init") function langs.init_content_page_user_lang(
-- langs.main_i18n_complete = true -- Unmask all views after enough init.
-- res = res .. activity.detect_MediaWiki_changes() -- MWMW
return res
end -- res = res .. versions.init_multilingual_module(mode, args_known) -- Replace each Mdversions.init_multilingual_module() function by its sub fonctions.
 
function p.read(frame) -- The read mode generates the normal result for read only users.
function Central.demo(frame, Central_version, mode_name, args_known, options_for_modes)
-- p.version.versionNumber = CentralI18N.version.versionNumber
local res = ""
return "\n* ARGS.t=" .. tostring(ARGS.t) .. ", CNT.t=" .. tostring(CNT.t)
end
 
function Central.init(frame, Central_version, mode_name, args_known, options_for_modes)
-- p.version.versionNumber = CentralI18N.version.versionNumber
local res = ""
tracker.init_trakers() -- Initialize some trakers. To run in Central.init()
modes.time1 = os.clock()
local args_known = args_known or modes.args_known or p.args_known or {} -- optional value from p.args_known = {...}
-- function viewers.translate_user(ref, ...) --- Replace %1 to %9 by arguments. Always in english langs.user_lang
Central_version = Central_version or langs.Central_version or Central.Central_version
-- viewers.form_user_lang_test_cases = { -- Group or tests cases for function viewers.translate_user(lang, ref , ...) and also langs.content_lang + page_
local options_for_modes = options_for_modes or modes.options_for_modes or p.options_for_modes
res = res .. viewers.form_user_lang_test(ref, viewers.form_user_lang_test_cases) -- Replace %1 to %9 by arguments. Always in english
res = res .. versions.init(frame, Central_version)
res = res .. versions.init_multilingual_module("read", args_known)
versions.memo_i18n = mw.clone(versions.main_i18n or langs.main_i18n)
res = res .. p.form_result(args_known, main_module) -- Formats all results of this module and its sub-modules.
langs.main_i18n = versions.memo_i18n ; versions.main_i18n = versions.memo_i18n
-- local datas = mw.clone(datas)
res = res .. modes.init_modes_translate_events(frame, Central_version, mode_name, modes.args_known, options_for_modes, QITEM or itemid)
datas.props = datas.get_item(args_known, QITEM) -- Get datas from mw.wikibase for the page.
modes.init_args_mode_options(mix, mode_name, modes.args_template) -- Import and mix args mode and options from template and invoke -- S170710mix
modes.args_import = modes.import_arguments(args_known, args_source, content_translations, args_wikidata) -- function modes.import_arguments()
modes.args_final = p.interact_args_final(modes.args_import) -- Interactions between arguments
modes.get_args(args_known) -- Interactions between arguments
langs.init_content_page_user_lang() -- function langs.init_content_page_user_lang()
res = res .. (datas.props_trk or "")
res = res .. "</b>"
-- p.version.versionNumber = CentralI18N.version.versionNumber
return res
end -- function Centralp.initread(frame, Central_version, mode_name, args_known, options_for_modes)
 
function Centralp.readedit(frame) -- The readedit mode generatesverifies arguments, displays the normaledit panel resultwith forerrors, readwarnings onlyand userscategories.
-- Helpers or admins can add options to include edit or tests or user language...
local res = ""
local targs_known = Central.init(frame,args_known Centralor modes.Central_version,args_known "read",or p.args_known, or {} -- optional value from p.options_for_modes)args_known = {...}
res = res .. versions.init_multilingual_module("edit", args_known)
-- res = res .. t
res = res .. p.form_result(args_known, main_module) -- Formats all results of this module and its sub-modules.
modes.args_final = p.interact_args_final(modes.args_import) -- Interactions between arguments
res = res .. p.form_result(modes.args_final)
res = res .. "\n* " .. datas.track_val
return res
end -- function Centralp.readedit(frame)
 
function Central.edit(frame) -- The edit mode verifies arguments, displays the edit panel with errors, warnings and categories.
local res = "</b>"
res = res .. "Library:langs"
local t = Central.init(frame, Central.Central_version, "edit", p.args_known, p.options_for_modes)
-- res = res .. t
modes.args_final = p.interact_args_final(modes.args_import) -- Interactions between argumensts
res = res .. "</b>"
res = res .. p.form_result(modes.args_final)
return res
end -- function Central.edit(frame)
 
-- ["docfunc"] = { ["typ"] = "config", ["need"] = 0, ["keyword"] = "docfunc"},
-- ["docitem"] = { ["typ"] = "config", ["need"] = 0, ["keyword"] = "docitem"},
-- ["dockey"] = { ["typ"] = "config", ["need"] = 0, ["keyword"] = "dockey"},
function Centralp.doc(frame) -- Formats a documentation or a test in a onedropdrop_box.
local res = ""
local args_known = args_known or modes.args_known or p.args_known or {} -- optional value from p.args_known = {...}
Central.init(frame, p.Module_Central_version, "doc", p.args_known, p.options_for_modes) -- QITEM
res = res .. versions.init_multilingual_module("doc", args_known)
langs.init_content_page_user_lang() -- function langs.init_content_page_user_lang()
local docfunc = modes.args_kown.docfunc or modes.args_kown[3] or modes.args_import.docitem or modes.args_import[3]
modes.change_itemid() -- default = "Q41568"
local docitem = modes.args_finalargs_kown.docitem =or pmodes.interact_args_final(args_kown[2] or modes.args_import).docitem --or Interactionsmodes.args_import[2] betweenor argumenstsdatas.default_item
local dockey = modes.args_kown.dockey or modes.args_kown[1] or modes.args_import.dockey or modes.args_import[1]
-- {{Central|doc|versions_support_desk_title}}
local docfuncQITEM = modes.args_finalargs_kown.docfuncQITEM or modes.args_final[3] or modes.args_importargs_kown.docitem or modes.args_import[3]docitem
local docitem = modes.args_final.docitem or modes.args_final[2] or modes.args_import.docitem or modes.args_import[2] or datas.default_item
local dockey = modes.args_final.dockey or modes.args_final[1] or modes.args_import.dockey or modes.args_import[1]
local QITEM = modes.args_final.QITEM or modes.args_final.docitem or docitem
QITEM = mw.text.trim(QITEM) -- clean spaces in each name
if dockey then
local selector = mw.text.trim(dockey)
end
res = res .. p.form_result(args_known, main_module) -- Formats all results of this module and its sub-modules.
return res
end -- function Centralp.doc(frame)
--[==[
local t = viewers.translate_user_test(t)
if 1 then return t end
--] ]
To try as Indepenent button after task T245812 OK OK OK
[ [
<!DOCTYPE html>
<html>
<head>10)
<style>
.button {
background-color: #4CAF50;
border: none;
color: white;
padding: 15px 25px;
text-align: center;
font-size: 16px;
cursor: centre;
}
.button:hover {
background-color: green;
}
</style>
</head>
 
<h1>CSS button</h1>
function Central.tests(frame)
<button>Default Button</button>
local res = ""
<button class="button>Styled Button</button>
res = res .. tracker.init_trakers() -- Initialize some trakers. To run in Central.init()
</html>
local t = Central.init(frame, Central.Central_version, "tests", p.args_known, p.options_for_modes)
--]==]
res = res .. t
 
-- res = res .. "\n* getEntityIdForCurrentPage = " .. tostring( mw.wikibase.getEntityIdForCurrentPage() ) -- Returns the Item id as string, like "Q42"
function p.tests(frame) -- Formats several groups of test cases to finalise the Centralizer UMUM
-- local content = viewers.form_user_lang_test(t) -- Tests some combinations of parameters to debug then optimize translations
local res = viewers.form_user_lang_test(t) -- Tests some combinations of parameters to debug then optimize translations
-- if 1 then return res end
local args_known = args_known or modes.args_known or p.args_known or {} -- optional value from p.args_known = {...}
res = res .. versions.init_multilingual_module("tests", args_known)
res = res .. tracker.init_trakers() -- Initialize some trakers. To run in p.init()
local args_known = args_known or modes.args_known or p.args_known or {} -- optional value from p.args_known = {...}
local main_module = versions.main_module -- Bind the main module from function versions.bind_the_main_module()
p.form_tests_init()
langs.init_content_page_user_lang(a, b, c, d, "p.tests")
modes.args_final = p.interact_args_final(modes.args_import) -- Interactions between arguments
res = res .. p.form_result(modes.args_known) -- Generate wikitext, categories, and others
langs.init_content_page_user_lang(a, b, c, d, "Central.tests")
res = res .. "</br>p.form_result(modes.args_known)</br>" -- Generate wikitext, categories, and others
versions.main_versions = versions.main_versions or { versionName = "versionName", versionNumber = "0.0", }
return res -- function p.form_result(
if not versions.main_versions then versions.main_versions = p.version or versions.version end
end -- function p.tests(frame)
modes.mode_name = "tests"
res = res .. p.form_result(modes.args_final) -- Generate wikitext, categories, and others
-- res = res .. viewers.try_graph()
return res
end -- function Central.tests(frame)
 
function versions.detect_MediaWiki_changes()
Ligne 10 784 ⟶ 10 171 :
return "" -- t
end -- function versions.detect_MediaWiki_changes()
 
-- Last MediaWiki-Wikisource update/upgrade versions:
-- Seen and recorded at each preview to test fr.wikisource.org/wiki/Module:Centralizer-s-fr
-- French time UTC +1 or +2
-- See ISO 8601 time format like : 1977-04-22T01:00:00-05:00 (5 shift hours) = 1977-04-22T06:00:00Z local time
 
versions.MediaWiki_Versions_sort = ">"
versions.MediaWiki_Versions = {
-- KEEP FIRST VERSIONS
{ site = "fr.wikisource", verstime = "2016-06-19", versid = "2016-06-19", seen_time = "2016-06-19", },
{ site = "fr.wikisource", verstime = "2017-05-11T00:48:00", versid = "1.29.0-wmf.21 (d6c07d1)", seen_time = "2017-05-11T00:48:00-00:00",
task = "T165000", title = "The version date of MW 1.29.0-wmf.21 (d6c07d1) is in the future !",
report = "Rical: Schedule in https://www.MediaWiki.org/wiki/MediaWiki_1.29/Roadmap", },
-- function versions.detect_MediaWiki_changes() display only 3 last months
{ site = "fr.wikisource", verstime = "2018-01-02T18:49:06", versid = "1.31.0-wmf.15 (8e46998)", seen_time = "2018-01-04T14:20:00", },
{ site = "fr.wikisource", verstime = "2018-01-04T21:47:05", versid = "1.31.0-wmf.15 (601cf9d)", seen_time = "2018-01-07T18:30:00", },
{ site = "fr.wikipedia", verstime = "2018-01-07T20:46:36", versid = "1.31.0-wmf.15 (0953700)", seen_time = "2018-01-09T20:57:00", },
{ site = "fr.wikisource", verstime = "2018-01-07T20:46:36", versid = "1.31.0-wmf.15 (0953700)", seen_time = "2018-01-12T07:43:00", },
{ site = "fr.wikisource", verstime = "2017-12-15T23:35:09", versid = "1.31.0-wmf.16 (a31d45c)", seen_time = "2018-01-12T07:43:00",
task = "T155624", title = "In wikisource/Spécial:Version:wmf.15 (0953700) but Central module mw = 1.31.0-wmf.16 (a31d45c) seen by Rical.", },
{ site = "www.MediaWiki", verstime = "2018-01-11T20:29:30", versid = "1.31.0-wmf.16 (ab6bf1f)", seen_time = "2018-01-13T06:11:00", },
{ site = "fr.wikisource", verstime = "2018-01-16T18:33:22", versid = "1.31.0-wmf.16 (d3c472e)", seen_time = "2018-01-17T06:59:00", },
{ site = "www.MediaWiki", verstime = "2018-01-16T21:16:44", versid = "1.31.0-wmf.17 (d543eb9)", seen_time = "2018-01-17T06:59:00", },
{ site = "fr.wikisource", verstime = "2018-01-18T01:23:03", versid = "1.31.0-wmf.17 (d8c8c31)", seen_time = "2018-01-19T08:16:00", },
{ site = "fr.wikisource", verstime = "2018-01-29T20:37:52", versid = "1.31.0-wmf.17 (dfc8ff3)", seen_time = "2018-02-02T19:19:00", },
{ site = "fr.wikisource", verstime = "2018-02-05T21:33:14", versid = "1.31.0-wmf.17 (b34e25b)", seen_time = "2018-02-06T23:40:00", },
{ site = "www.MediaWiki", verstime = "2018-02-06T19:00:03", versid = "1.31.0-wmf.20 (5bcccb0)", seen_time = "2018-02-07T00:14:00", },
{ site = "fr.wikisource", verstime = "2018-02-12T17:50:32", versid = "1.31.0-wmf.20 (11f1e9c)", seen_time = "2018-02-13T10:38:00", },
{ site = "fr.wikisource", verstime = "2018-02-13T19:40:36", versid = "1.31.0-wmf.21 (5e7beec)", seen_time = "2018-02-14T20:47:00", },
{ site = "fr.wikisource", verstime = "2018-02-16T01:11:36", versid = "1.31.0-wmf.21 (828e6cc)", seen_time = "2018-02-18T05:17:00", },
{ site = "fr.wikisource", verstime = "2018-02-23T21:50:11", versid = "1.31.0-wmf.22 (fd29ac3)", seen_time = "2018-02-23T21:28:00", },
{ site = "fr.wikisource", verstime = "2018-02-26T20:32:35", versid = "1.31.0-wmf.22 (d5c267c)", seen_time = "2018-02-28T23:04:00", },
{ site = "fr.wikisource", verstime = "2018-02-27T18:48:39", versid = "1.31.0-wmf.23 (82d9536)", seen_time = "2018-03-03T21:13:00", },
{ site = "fr.wikisource", verstime = "2018-03-06T02:30:14", versid = "1.31.0-wmf.23 (f46c818)", seen_time = "2018-03-06T08:04:00", },
{ site = "fr.wikisource", verstime = "2018-03-06T19:10:12", versid = "1.31.0-wmf.24 (52b67ec)", seen_time = "2018-03-08T11:30:00", },
{ site = "fr.wikisource", verstime = "2018-03-10T00:19:55", versid = "1.31.0-wmf.24 (6e6b5d9)", seen_time = "2018-03-13T10:30:00", },
{ site = "fr.wikisource", verstime = "2018-03-14T12:21:45", versid = "1.31.0-wmf.25 (02e257c)", seen_time = "2018-03-15T21:47:00", },
{ site = "www.MediaWiki", verstime = "2018-03-20T20:46:55", versid = "1.31.0-wmf.25 (18911f8)", seen_time = "2018-03-20T08:00:00", },
{ site = "fr.wikisource", verstime = "2018-03-20T20:36:33", versid = "1.31.0-wmf.26 (68b8563)", seen_time = "2018-03-22T18:22:00", },
{ site = "fr.wikisource", verstime = "2018-03-26T15:13:22", versid = "1.31.0-wmf.26 (c3296c8)", seen_time = "2018-03-22T26:22:00", },
{ site = "www.MediaWiki", verstime = "2018-03-27T21:01:26", versid = "1.31.0-wmf.27 (06af291)", seen_time = "2018-03-28T21:01:00", },
{ site = "fr.wikisource", verstime = "2018-03-27T21:01:26", versid = "1.31.0-wmf.27 (06af291)", seen_time = "2018-04-02T21:10:00", },
{ site = "fr.wikisource", verstime = "2018-04-03T21:17:25", versid = "1.31.0-wmf.28 (80a1a33)", seen_time = "2018-04-04T20:10:00", },
{ site = "fr.wikisource", verstime = "2018-04-05T22:06:11", versid = "1.31.0-wmf.28 (7fa86eb)", seen_time = "2018-04-06T21:07:00", },
{ site = "fr.wikisource", verstime = "2018-04-10T19:18:04", versid = "1.31.0-wmf.29 (3125cb5)", seen_time = "2018-04-12T18:30:00", },
{ site = "fr.wikisource", verstime = "2018-04-11T19:35:36", versid = "1.31.0-wmf.29 (e5d3ad6)", seen_time = "2018-04-15T05:39:00", },
{ site = "fr.wikisource", verstime = "2018-04-17T15:36:44", versid = "1.31.0-wmf.29 (1cb7198)", seen_time = "2018-04-19T08:35:00", },
{ site = "www.MediaWiki", verstime = "2018-04-18T18:47:14", versid = "1.31.0-wmf.30 (e8360e8)", seen_time = "2018-04-19T08:35:00", },
{ site = "fr.wikisource", verstime = "2018-04-23T16:34:41", versid = "1.31.0-wmf.30 (990d8c8)", seen_time = "2018-04-23T18:45:00", },
{ site = "fr.wikisource", verstime = "2018-04-24T01:11:27", versid = "1.31.0-wmf.30 (1865391)", seen_time = "2018-04-25T25:05:31", },
{ site = "www.MediaWiki", verstime = "2018-04-24T18:56:18", versid = "1.32.0-wmf.1 (d94bd0b)", seen_time = "2018-04-25T25:05:31", },
{ site = "fr.wikisource", verstime = "2018-04-26T22:59:23", versid = "1.32.0-wmf.1 (d5ae4d6)", seen_time = "2018-04-27T06:55:00", },
{ site = "fr.wikisource", verstime = "2018-05-01T01:24:19", versid = "1.32.0-wmf.1 (1de2db9)", seen_time = "2018-05-02T04:23:00", },
{ site = "www.MediaWiki", verstime = "2018-05-01T22:12:54", versid = "1.32.0-wmf.2 (b0c908a)", seen_time = "2018-05-02T04:23:00", },
{ site = "fr.wikisource", verstime = "2018-05-03T22:59:29", versid = "1.32.0-wmf.2 (bbd5b51)", seen_time = "2018-05-04T04:49:00", },
{ site = "fr.wikisource", verstime = "2018-05-08T15:38:13", versid = "1.32.0-wmf.2 (fad297c)", seen_time = "2018-05-09T05:05:00", },
{ site = "www.MediaWiki", verstime = "2018-05-08T20:36:49", versid = "1.32.0-wmf.3 (5f8dcbf)", seen_time = "2018-05-09T05:05:00", },
{ site = "fr.wikisource", verstime = "2018-05-09T17:53:16", versid = "1.32.0-wmf.3 (9809712)", seen_time = "2018-05-10T15:55:00", },
{ site = "fr.wikisource", verstime = "2018-05-15T03:08:36", versid = "1.32.0-wmf.3 (e3cf869)", seen_time = "2018-05-15T07:12:36", },
{ site = "www.MediaWiki", verstime = "2018-05-15T19:45:34", versid = "1.32.0-wmf.4 (eb66f55)", seen_time = "2018-05-15T09:52:00", },
{ site = "www.MediaWiki", verstime = "2018-05-18T00:47:32", versid = "1.32.0-wmf.4 (54379d4)", seen_time = "2018-05-18T19:17:00", },
{ site = "fr.wikisource", verstime = "2018-05-18T17:56:38", versid = "1.32.0-wmf.4 (cb4dbfb)", seen_time = "2018-05-22T08:40:00", },
{ site = "fr.wikisource", verstime = "2018-05-22T15:16:13", versid = "1.32.0-wmf.4 (03a6eac)", seen_time = "2018-05-23T07:35:00", },
{ site = "www.MediaWiki", verstime = "2018-05-22T23:18:01", versid = "1.32.0-wmf.5 (82c3307)", seen_time = "2018-05-23T07:35:00", },
{ site = "fr.wikisource", verstime = "2018-05-23T16:24:49", versid = "1.32.0-wmf.5 (fda06ee)", seen_time = "2018-05-24T05:19:00", },
{ site = "fr.wikisource", verstime = "2018-05-29T21:44:35", versid = "1.32.0-wmf.6 (54cd6f3)", seen_time = "2018-05-31T12:01:00", },
{ site = "fr.wikisource", verstime = "2018-06-02T09:30:41", versid = "1.32.0-wmf.6 (22984c1)", seen_time = "2018-06-06T03:32:00", },
{ site = "www.MediaWiki", verstime = "2018-06-05T18:23:32", versid = "1.32.0-wmf.7 (3878394)", seen_time = "2018-06-06T03:32:00", },
{ site = "fr.wikisource", verstime = "2018-06-02T09:30:41", versid = "1.32.0-wmf.6 (22984c1)", seen_time = "2018-06-06T17:15:00", },
{ site = "fr.wikisource", verstime = "2018-06-07T01:13:36", versid = "1.32.0-wmf.7 (2e7183b)", seen_time = "2018-06-06T17:15:00", },
{ site = "fr.wikisource", verstime = "2018-06-12T15:32:14", versid = "1.32.0-wmf.7 (c37c061)", seen_time = "2018-06-13T05:55:00", },
{ site = "fr.wikisource", verstime = "2018-06-12T19:04:43", versid = "1.32.0-wmf.8 (645bb45)", seen_time = "2018-06-13T22:55:00", },
{ site = "www.MediaWiki", verstime = "2018-06-14T23:46:07", versid = "1.32.0-wmf.999 (b631ec6)", seen_time = "2018-06-15T06:45:00", },
{ site = "fr.wikisource", verstime = "2018-06-15T00:14:44", versid = "1.32.0-wmf.8 (53a4a6c)", seen_time = "2018-06-15T06:45:00", },
{ site = "fr.wikisource", verstime = "2018-06-25T16:34:52", versid = "1.32.0-wmf.8 (53a4a6c)", seen_time = "2018-06-26T13:25:00", },
{ site = "www.MediaWiki", verstime = "2018-06-25T16:35:25", versid = "1.32.0-wmf.999 (db8bc87)", seen_time = "2018-06-26T13:25:00", },
{ site = "fr.wikisource", verstime = "2018-06-25T16:34:52", versid = "1.32.0-wmf.8 (6949e74)", seen_time = "2018-06-27T05:18:00", },
{ site = "www.MediaWiki", verstime = "2018-06-26T19:33:39", versid = "1.32.0-wmf.10 (dfc8825)", seen_time = "2018-06-27T05:18:00", },
{ site = "fr.wikisource", verstime = "2018-06-29T01:45:57", versid = "1.32.0-wmf.10 (02fc5f1)", seen_time = "2018-07-06T14:36:00", },
{ site = "fr.wikisource", verstime = "2018-07-05T16:30:23", versid = "1.32.0-wmf.10 (4c30aa3)", seen_time = "2018-07-06T14:36:00", },
{ site = "www.MediaWiki", verstime = "2018-07-10T14:14:37", versid = "1.32.0-wmf.12 (490a345)", seen_time = "2018-07-11T07:50:00", },
{ site = "fr.wikisource", verstime = "2018-07-10T14:48:52", versid = "1.32.0-wmf.10 (9b12f7f)", seen_time = "2018-07-11T07:50:00", },
{ site = "fr.wikisource", verstime = "2018-07-17T13:26:15", versid = "1.32.0-wmf.12 (7c2cfe6)", seen_time = "2018-07-17T19:55:00", },
{ site = "fr.wikisource", verstime = "2018-07-17T21:51:12", versid = "1.32.0-wmf.12 (eb2e8d4)", seen_time = "2018-07-18T07:15:00", },
{ site = "www.MediaWiki", verstime = "2018-07-18T01:25:01", versid = "1.32.0-wmf.13 (360f7b5)", seen_time = "2018-07-18T07:15:00", },
{ site = "fr.wikisource", verstime = "2018-07-18T01:25:01", versid = "1.32.0-wmf.13 (360f7b5)", seen_time = "2018-07-19T15:58:00", },
{ site = "fr.wikisource", verstime = "2018-07-23T23:26:55", versid = "1.32.0-wmf.13 (93bb3e9)", seen_time = "2018-07-26T10:00:00", },
{ site = "fr.wikisource", verstime = "2018-07-24T18:08:34", versid = "1.32.0-wmf.14 (e2b3d28)", seen_time = "2018-07-24T14:53:00", },
{ site = "fr.wikisource", verstime = "2018-07-25T06:10:28", versid = "1.32.0-wmf.13 (3b7d427)", seen_time = "2018-07-26T10:42:00", },
{ site = "fr.wikisource", verstime = "2018-07-30T13:20:27", versid = "1.32.0-wmf.14 (bf3db55)", seen_time = "2018-07-30T16:10:00", },
{ site = "www.MediaWiki", verstime = "2018-07-31T21:50:01", versid = "1.32.0-wmf.14 (418983a)", seen_time = "2018-07-31T19:50:00", },
{ site = "fr.wikisource", verstime = "2018-07-31T01:59:33", versid = "1.32.0-wmf.15 (ffb4e30)", seen_time = "2018-08-01T07:00:00", },
{ site = "fr.wikisource", verstime = "2018-07-31T21:50:01", versid = "1.32.0-wmf.15 (ffb4e30)", seen_time = "2018-08-01T20:25:00", },
{ site = "www.MediaWiki", verstime = "2018-08-02T01:32:39", versid = "1.32.0-wmf.14 (418983a)", seen_time = "2018-08-05T21:00:00", },
{ site = "www.MediaWiki", verstime = "2018-07-31T21:50:01", versid = "1.32.0-wmf.15 (ffb4e30)", seen_time = "2018-08-06T05:50:00", },
{ site = "fr.wikisource", verstime = "2018-08-04T02:53:20", versid = "1.32.0-wmf.15 (376d0a8)", seen_time = "2018-08-08T14:41:00", },
{ site = "www.MediaWiki", verstime = "2018-08-07T21:19:02", versid = "1.32.0-wmf.16 (e818a98)", seen_time = "2018-08-08T14:41:00", },
{ site = "fr.wikisource", verstime = "2018-08-20T20:51:52", versid = "1.32.0-wmf.16 (29fbc92)", seen_time = "2018-08-16T21:27:00", },
{ site = "www.MediaWiki", verstime = "2018-08-15T13:21:49", versid = "1.32.0-wmf.16 (a1c7015)", seen_time = "2018-08-21T09:58:00", },
{ site = "www.MediaWiki", verstime = "2018-08-21T19:31:24", versid = "1.32.0-wmf.18 (857f494)", seen_time = "2018-08-22T17:43:00", },
{ site = "fr.wikisource", verstime = "2018-08-22T17:43:00", versid = "1.32.0-wmf.19 (c8515bc)", seen_time = "2018-09-05T08:50:00", },
{ site = "www.MediaWiki", verstime = "2018-09-04T16:39:41", versid = "1.32.0-wmf.20 (cee9956)", seen_time = "2018-09-05T08:50:00", },
{ site = "fr.wikisource", verstime = "2018-09-05T03:33:38", versid = "1.32.0-wmf.20 (922ef6d)", seen_time = "2018-09-05T19:05:00", },
{ site = "fr.wikisource", verstime = "2018-09-06T06:00:52", versid = "1.32.0-wmf.20 (879b2b2)", seen_time = "2018-09-12T08:46:00", },
{ site = "fr.wikisource", verstime = "2018-09-11T23:18:09", versid = "1.32.0-wmf.20 (922ef6d)", seen_time = "2018-09-13T23:40:00", },
{ site = "www.MediaWiki", verstime = "2018-09-18T18:31:09", versid = "1.32.0-wmf.22 (5d33b6d)", seen_time = "2018-09-18T21:07:00", },
{ site = "fr.wikisource", verstime = "2018-09-18T18:31:14", versid = "1.32.0-wmf.20 (8a97ce1)", seen_time = "2018-09-18T21:07:00", },
{ site = "fr.wikisource", verstime = "2018-09-20T20:51:53", versid = "1.32.0-wmf.22 (2650d03)", seen_time = "2018-09-23T14:14:00", },
{ site = "fr.wikisource", verstime = "2018-09-25T13:59:38", versid = "1.32.0-wmf.22 (53887ef)", seen_time = "2018-09-26T09:34:00", },
{ site = "www.MediaWiki", verstime = "2018-09-25T15:33:51", versid = "1.32.0-wmf.23 (c014536)", seen_time = "2018-09-26T09:34:00", },
{ site = "fr.wikisource", verstime = "2018-09-26T17:35:06", versid = "1.32.0-wmf.23 (647d3c2)", seen_time = "2018-09-26T19:30:00", },
{ site = "fr.wikisource", verstime = "2018-09-27T13:36:13", versid = "1.32.0-wmf.23 (7081a55)", seen_time = "2018-09-27T15:15:00", },
{ site = "fr.wikisource", verstime = "2018-10-03T02:36:46", versid = "1.32.0-wmf.23 (16a7864)", seen_time = "2018-10-03T20:32:00", },
{ site = "www.MediaWiki", verstime = "2018-10-03T18:21:13", versid = "1.32.0-wmf.24 (5fa193c)", seen_time = "2018-10-03T20:32:00", },
{ site = "fr.wikisource", verstime = "2018-10-04T01:30:09", versid = "1.32.0-wmf.24 (4f66a3b)", seen_time = "2018-10-05T09:28:00", },
{ site = "fr.wikisource", verstime = "2018-10-10T01:44:27", versid = "1.32.0-wmf.24 (9291e40)", seen_time = "2018-10-10T20:26:00", },
{ site = "fr.wikisource", verstime = "2018-10-16T13:30:15", versid = "1.32.0-wmf.24 (35fb3b6)", seen_time = "2018-10-16T20:50:00", },
{ site = "fr.wikisource", verstime = "2018-10-18T22:57:44", versid = "1.32.0-wmf.24 (35fb3b6)", seen_time = "2018-10-17T06:30:00", },
{ site = "fr.wikisource", verstime = "2018-10-20T22:57:44", versid = "1.32.0-wmf.26 (06a4ac1)", seen_time = "2018-10-21T19:22:00", },
{ site = "fr.wikisource", verstime = "2018-10-23T22:56:17", versid = "1.32.0-wmf.26 (abfc550)", seen_time = "2018-10-24T06:10:00", },
{ site = "www.MediaWiki", verstime = "2018-10-24T00:34:34", versid = "1.33.0-wmf.1 (b1724ee)", seen_time = "2018-10-24T06:10:00", },
{ site = "fr.wikisource", verstime = "2018-10-26T01:30:57", versid = "1.32.0-wmf.1 (ef37e05)", seen_time = "2018-10-27T09:38:00", },
{ site = "fr.wikisource", verstime = "2018-10-29T00:33:47", versid = "1.33.0-wmf.1 (bdf45fc)", seen_time = "2018-10-30T08:50:00", },
{ site = "www.MediaWiki", verstime = "2018-10-30T21:36:59", versid = "1.33.0-wmf.2 (f6c4f5f)", seen_time = "2018-10-31T08:50:00", },
{ site = "fr.wikisource", verstime = "2018-11-29T00:33:47", versid = "1.33.0-wmf.2 (1c41eef)", seen_time = "2018-11-29T08:50:00", },
{ site = "fr.wikisource", verstime = "2018-12-05T20:37:45", versid = "1.33.0-wmf.2 (b6abf62)", seen_time = "2018-12-06T21:46:00", },
{ site = "fr.wikisource", verstime = "2018-12-08T13:23:27", versid = "1.33.0-wmf.3 (d114665)", seen_time = "2018-12-09T00:00:00", },
{ site = "fr.wikisource", verstime = "2018-12-14T19:43:13", versid = "1.33.0-wmf.4 (967d9eb)", seen_time = "2018-12-15T08:27:00", },
{ site = "fr.wikisource", verstime = "2018-12-15T13:12:06", versid = "1.33.0-wmf.4 (b34307c)", seen_time = "2018-12-17T07:35:00", },
{ site = "fr.wikisource", verstime = "2018-12-19T20:59:49", versid = "1.33.0-wmf.4 (bf6a756)", seen_time = "2018-12-21T06:04:00", },
{ site = "fr.wikisource", verstime = "2018-12-27T11:28:27", versid = "1.33.0-wmf.4 (ebeab6e)", seen_time = "2018-12-28T07:47:00", },
{ site = "fr.wikisource", verstime = "2018-12-28T13:29:48", versid = "1.33.0-wmf.6 (19f2ad7)", seen_time = "2018-12-29T08:35:00", },
{ site = "fr.wikisource", verstime = "2018-12-29T14:08:43", versid = "1.33.0-wmf.6 (e5db35f)", seen_time = "2018-12-29T21:51:00", },
{ site = "fr.wikisource", verstime = "2018-12-29T20:09:40", versid = "1.33.0-wmf.6 (e7d6fb2)", seen_time = "2018-12-29T23:33:00", },
{ site = "fr.wikisource", verstime = "2019-01-13T01:34:02", versid = "1.33.0-wmf.8 (2859494)", seen_time = "2019-01-17T08:33:00", },
{ site = "www.MediaWiki", verstime = "2019-01-18T14:22:32", versid = "1.33.0-wmf.9 (b5ca53a)", seen_time = "2019-01-18T18:00:00", },
{ site = "fr.wikisource", verstime = "2019-01-19T17:52:30", versid = "1.33.0-wmf.9 (7cf3023)", seen_time = "2019-01-20T09:07:00", },
{ site = "fr.wikisource", verstime = "2019-01-20T17:20:46", versid = "1.33.0-wmf.9 (02196d2)", seen_time = "2019-01-20T21:04:00", },
{ site = "fr.wikisource", verstime = "2019-01-21T07∶35∶30", versid = "1.33.0-wmf.18 (6deca5e)", seen_time = "2019-01-21T20∶35∶30", },
{ site = "fr.wikisource", verstime = "2019-02-25T20:29:29", versid = "1.33.0-wmf.18 (3456bc6)", seen_time = "2019-02-26T07:40:00", },
{ site = "www.MediaWiki", verstime = "2019-02-26T15:56:32", versid = "1.33.0-wmf.19 (c76e64a)", seen_time = "2019-02-26T07:40:00", },
{ site = "fr.wikisource", verstime = "2019-02-28T15:24:15", versid = "1.33.0-wmf.19 (e53935b)", seen_time = "2019-03-02T09:28:00", },
{ site = "www.MediaWiki", verstime = "2019-03-05T14:50:49", versid = "1.33.0-wmf.20 (e66958a)", seen_time = "2019-03-06T07:40:00", },
{ site = "www.MediaWiki", verstime = "2019-03-12T11:51:30", versid = "1.33.0-wmf.21 (0aba213)", seen_time = "2019-03-13T21:26:00", },
{ site = "fr.wikisource", verstime = "2019-03-13T00:24:25", versid = "1.33.0-wmf.21 (1d9232f)", seen_time = "2019-03-13T21:26:00", },
{ site = "fr.wikisource", verstime = "2019-03-14T12:09:28", versid = "1.33.0-wmf.21 (2ae1a70)", seen_time = "2019-03-16T15:16:34", },
{ site = "fr.wikisource", verstime = "2019-03-22T00:53:59", versid = "1.33.0-wmf.21 (2ae1a70)", seen_time = "2019-03-22T07:20:34", },
} -- MWMW 1.33.0-wmf.21 (2ae1a70)
versions.MediaWiki_version_memo = "1.33.0-wmf.21 (2ae1a70)"
versions.MediaWiki_Versions_sort = "<" -- First on end, Last on begin
versions.MediaWiki_Versions_sort = ">" -- First on begin, Last on end
-- function activity.MW_Versions_report(t) -- Reports versions of MediaWiki for 3 months.
 
function viewers.doc_group(selector, mask_sections) -- function viewers.doc_internal(selector, mask_sections)
local res = ""
 
local selector = selector or "enforce"
local mask_sections = mask_sections or nil
if p.teststests == "FAML---TVQDR"true then -- DODO
res = res .. "\n* Display : langs_main_i18n_languages_list and langs_list_MediaWiki_languages_title \n*"
res = res .. drop_box.new("enforce", "langs_main_i18n_languages_list", langs.main_i18n_languages_list ) -- OK, show in table ?
res = res .. drop_box.new("enforce", "langs_list_MediaWiki_languages_title", langs.list_MediaWiki_languages ) -- OK, show in table ?
res = res .. drop_box.new(selector, "p.teststests = FAMLTVQDR Init_mode_args_datas_tests **", modes.Init_mode_args_datas_tests )
res = res .. drop_box.new(selector, "modes Init Frame Args Mode Libraries **", p.init_central_module_tests)
res = res .. drop_box.new(selector, "modes_get_args_datas_tests_title", modes.get_args_datas_tests)
res = res .. viewers.doc_page(selector, mask_sections) -- mask for time limit function viewers.doc_page(
res = res .. viewers.doc_module(selector, mask_sections) -- mask for time limit
return res
else
res = res .. viewers.doc_section(selector, "Tests of this page", "h2", mask_sections) -- function viewers.doc_section(
res = res .. drop_box.new(selector, "activity_report_subtasks_title", activity.central_subtasks_report) -- to try if needed
Ligne 10 964 ⟶ 10 190 :
return p
 
-- GaliléeGalilée (Q307), Victor Hugo (Q535), Aristote (Q868), Albert Einstein (Q937), Mohandas Karamchand Gandhi (Q1001), Christophe Colomb (Q7322),
-- Nelson Mandela (Q8023), Rudyard Kipling or "Q (Q34743), Martin Fleischmann (Q899264), Emmanuel Macron (Q3052772)
-- local QITEM = datas.QITEM or datas.default_item
Ligne 10 975 ⟶ 10 201 :
-- Utilisateur:Rical/Nelson Mandela -- ws.Module:Tests (Q8023)
-- Utilisateur:Rical/Nelson Mandela -- ws.Module:Centralizer-s-fr (Q8023)
-- Module:Centralizer-s-fr/GaliléeGalilée -- ws.Module:Centralizer (Q307)
--
-- Tests pages on 2018-07-24 :
Ligne 10 982 ⟶ 10 208 :
-- Modulenn:Auteur2Tpt-s-br -- s.br.Modulenn:Auteur2Tpt as module itself in Breton
--
-- Mô đunÄ‘un:Centralizer-w-vi -- w.vi.wikipedia.Mô đunÄ‘un:Centralizer-w-vi in Vietnamise
-- MediaWiki:Centralizer/Tests -- w.vi.wikipedia.Mô đunÄ‘un:Centralizer/Tests in Vietnamise
-- MóduloMódulo:Centralizer-w-es -- s.es.wikipedia.MóduloMódulo:Central-w-es in Spanish
-- Plantilla:Centralizer/Tests -- s.es.wikipedia.MóduloMódulo:Centralizer/Tests in Spanish
-- Modulenn:Centralizer-s-br -- s.br.wikisource.Modulenn:Centralizer-s-br in Breton
-- Patrom:TestsCentralizer -- s.br.wikisource.Patrom:CentralizerTests in Breton
Ligne 10 993 ⟶ 10 219 :
-- Module:Auteur2Tpt/Documentation -- s.fr.wikisource.Module:Auteur2Tpt/Documentation in French
-- Module:Centralizer/Documentation -- s.fr.wikisource.Module:Centralizer/Tests in French
-- UtilisateurAuteur:Utilisateur.Rical/Auteur:VictorHugo -- Tester Module:Centalizer pour l'auteur Victor Hugo
-- Auteur:Utilisateur:Rical/Auteur:VictorHugo
--