« Module:Multilingual » : différence entre les versions
Contenu supprimé Contenu ajouté
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
------------------------------------|------
--[[ .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.
p.version = { -- Modules dependencies. Dependencias del
['versionFrom'] = "CentralTest begin debug from function modes.levenshtein_similar_tests OK.lua",
['versionName'] = "Centralizer",
['
['site'] = "fr.wikisource",
['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.
-- 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
-- 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 = {
-- 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 = "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)"
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.
--[[
-- - - - ------------------ - - - - ----------------- - - - - -----------------------------
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
--]]
-- - - - ------------------ - - - - ------------------ - - - - -----------------------------
["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, -- "▼ /▶ ", -- = "Unwrap/Wrap",
-- â–¼ = ▼ -- â–¶ = ▶ 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>' --
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,
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
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
activity_central_library_description = "Das Library:activity Das Ding
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>
activity_support_central_modules_headers = "Projekt; Speicher; Admins;
activity_report_subtasks_title = 'activity.central_subtasks_report(t)
activity_MW_Versions_report_title = "<b>activity.MW_Versions_report()</b>
activity_central_count_admins_active_users = "
activity_phabricator_tasks_title = "activity.phabricator_tasks_report()
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 =
-- 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
activity_central_library_description = "La Library:activity soporta la
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 = "
activity_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
activity_support_central_modules_headers = "proyecto; Guarde; Administradores; activos; Enlace modelo; Enlace del
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,
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;
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
activity_space_name_module = "
activity_space_name_template = "Modelo",
activity_space_name_user = "Usuario",
activity_test_page_user = "
} -- activity.i18n.es
activity.i18n.fr = { -- fr = French =
-- Pour traduire, les langues de
-- 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
activity_central_library_description = "La Library:activity soutient la gestion des
activity_display_central_libraries_title = "activity.describe_central_libraries() Description des
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-
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
activity_support_central_modules_headers = "Project; Language; Admins; Assets; Lien
activity_phabricator_tasks_title = "activity.phabricator_tasks_report()
activity_phabricator_tasks_headers = "Importance,
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
activity_space_name_module = "Module", -- fr
activity_space_name_template = "
activity_space_name_user = "Utilisateur",
activity_test_page_user = "Documentation", -- br Documentation, Dokumentation,
} -- activity.i18n.fr
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/
-- 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.
-- br.wikisource.org/wiki/Modulenn:Centralizer-s-br/doc {{#invoke:Centralizer-s-br|read}} fr = Breton = Breton = Breitz
{ [
[
[
--
-- de.wikisource.org/wiki/Modul:Centralizer/Doku {{#invoke:Centralizer-s-de|read}} de = German = Deutsch
{ [
[
[
-- sur la page de projet je ne vois pas qui d'autre :Hexasoft Tejgad Arkanosis Xfigpower Zebulon84 ;Hlm Z.; Od1n TomT0m
-- 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:
-- en.wikipedia.org/wiki/Module:Centralizer/Documentation {{#invoke:Centralizer-w-en|read}} en = English = English
{ [
[
[
--
-- es.wikipedia.org/wiki/
{ [
[
[
--
-- es.wikisource.org/wiki/
{ [
[
[
--
-- Module br Modulenn, de Modul, en Module, es
-- Template br Patrom, de Vorlage, en Template, es Modelo, fr
-- User br Implijer, de Benutzer, en User, es Usuario, fr Utilisateur, hu
-- Docum br Documentation, de Dokumentation, en Documentation, es
-- fr.wikisource.org/wiki/Module:Centralizer-s-fr/Documentation {{#invoke:Centralizer-s-fr|read}} fr = French =
{ [
[
[
--
-- fr.wikisource.org/wiki/Module:Auteur2Tpt/Tests {{#invoke:Auteur2Tpt|read}} fr = French =
{ [
[
[
--
-- hu.wikipedia.org/wiki/Modul:Centralizer-w-hu/doc {{#invoke:Centralizer-w-hu|read}} hu = Hungarian = Magyar
{ [
[
[
--
-- vi.wikipedia.org/wiki/
{ [
[
[
-- 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 )
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.
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
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.
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;
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;
ftd = ftd .. "
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.
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
{ "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/
-- 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", },
-- T245812 : Status Open Stalled Needs Triage Reedy, Subscribers = Liuxinyu970226, Rical open tow days ago, Aklaper Asigned to None
-- T245812 : Rical added a comment.Sat, Feb 22, 10:00 Comment Actions. You has changed the task status from Stalled to Open.
-- 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.
--[[ T245812 : before : That means all active Lua coders are stopped in their works.
discussion avec Tpt : sujet : Peux tu tester une modification de module pour confirmer ou non la tache Phabicator T245812 que j'ai créée
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
Mais aussi il n'a pas les couleurs habituelles comme si le HTML n'était pas interprété.
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"
Je viens d'essayer sous Mac OS et Windows, c'est pareil !
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.
Message OK par la page utilisateur ... Ã suivre
Message to Aklapper : a good way to confirm or infirm this task is to very simply it is to try yourse :
1) follow the link to edit of my Module:Centalizer
2) change a small part of a comment
3) Try to valid your own change
4) repport your result in the task T245812
5) change or not the status of the task
Rical added a comment.Sun, Feb 23, 08:00
--]]
{ 102, "Important", "20180412", "T185557", 0, "Open", "Create the easy function mw.wikibase.property('P21', 'Q8023', 'en')", },
{ 106, "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", "
-- 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", "
-- T85419: to adapt errors and warning for administrators or modules coders
{ 138, "Important", "
{ 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:
-- T122752: (actu | diff) 2015-11-28T09:55:
-- T122752: (actu | diff) 2015-12-01T14:18:
-- T122752: (actu | diff) 2016-01-18T02:09:
-- 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", },
--
-- 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", "
{ 214, "Central", "
{ 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
--
-- 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,
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
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/
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
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 "
datas.i18n = {} -- Translations for datas library
datas.i18n.de = {
-- Zum
--
datas_Wikidata_header = "Daten: ",
datas_known_Datas_header = "Bekannte Daten: ",
datas_sougth_Datas_header = "
datas_needed_Datas_header = "Daten
datas_Wikidata_wikibase_err = "Fehler: Wikibase ist nicht
datas_Wikidata_getEntity_err = "Fehler: getEntity Wikidata ist nicht
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
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
datas_Wikidata_time_details_title = "datas.Wikidata_time_details{} Wikidata Zeiteigenschaften
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
-- 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
-- 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 = "
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
datas_Wikidata_getEntity_err = "Error: getEntity Wikidata no
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 = "
datas_structured_data_txt = 'Datos de Wikidata',
datas_Wikidata_any_page_title = "Wikidata para cualquier
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
datas_Wikidata_time_details_title = "datas.Wikidata_time_details{} Wikidata propiedades de tiempo para
datas_update_Special_PageData_title = "datas.update_PageData() Compartir DATOS entre
datas_update_Special_PageData_header = "sitio; tiempo de
datas_get_item_report_title = "datas.get_item_report() Informes de datos de mw.wikibase para la
-- Diversos mensajes y errores
datas_no_args_Wikidata_err = "Error:
datas_sources_of_datas = "Informaciones de: /Wikidata, /template o module, /other, /warning, /error",
} -- datas.i18n.es
datas.i18n.fr = {
-- Pour traduire, les langues de
-- 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 = "
datas_known_Datas_header = "
datas_sougth_Datas_header = "
datas_needed_Datas_header = "
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'
datas_Wikidata_property_err = "Erreur : La
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 = '
datas_Wikidata_any_page_title = "Wikidata pour une autre page :",
datas_Wikidata_details_test_title = "Tests et
datas_Wikidata_arbitrary_tests_title = "datas.get_item() Test de Wikidata
datas_Wikidata_arbitrary_access_text = "Wikidata pour un titre : ",
datas_Wikidata_time_details_title = "datas.Wikidata_time_details{} Wikidata
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
-- Messages et erreurs divers
datas_no_args_Wikidata_err = "Erreur interne : Module sans table d'arguments Wikidata.",
datas_sources_of_datas = "Informations de : /Wikidata, /
} -- datas.i18n.fr
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 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 = '
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
end
return struct
Ligne 1 941 ⟶ 2 699 :
{
"en": "Magnificent but a bit artificial sweet peaches",
"es": "esto puede estar en
"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 = "
events_close_without_memo_err = "viewers.restore_configs(memo, where) sin <b>memo</b> en el
events_antiCrash_protect_err = "La
} -- 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 :
events_all_kinds_tests_title = "events.all_kinds_test() Test: toutes les sortes d'
events_all_kinds_tests_headers = "typ;key;idargs;result",
events_add_cat_deprecated = "Fonction
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()
} -- events.i18n.fr
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.
evt.page_wkt = viewers.
evt.user_wkt = viewers.
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.
for i, event in pairs(events.list_all_events) do
local old_evt = viewers.
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 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.
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.
-- Each type of event formats its own type of wikitext
evt.content_wkt = viewers.
evt.page_wkt = viewers.
evt.user_wkt = viewers.
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.
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.
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
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.
local n = 0
for k, wng in ipairs(events.errors_list) do
msgref = viewers.
if wng.typ == "wng" then
res = res .. '<br>
end
end
for k, wng in ipairs(events.errors_list) do
msgref = viewers.
if wng.typ == "err" then
res = res .. '<br>
n = n + 1
end
Ligne 2 344 ⟶ 3 073 :
end
return gener
end -- function events.gener_categories(
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.
local keycontent = viewers.
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()
langs_translations_stats_report_title = "
langs_translations_stats_report_headers = "Berechnete Kopfzeilen",
langs_form9user_tests_title = "viewers.
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 = "
langs_form99user_all_types_values = "en
langs_translations_key_missing = "Interner Fehler: Fehlender oder abnormaler
langs_form99user_no_tranlation = "in
langs_form99user_a_value_is_table = "in
langs_lang_not_exist_err = "Fehler: <b>%1</b> Sprache ist nicht
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
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
langs_without_translation_N_err = "Es gibt <b>%1</b> nicht
langs_main_i18n_languages_count = "Dieses Modul kann <b>%1</b>
langs_table_can_translate_counts = "LaDie Tabelle <b>%1</b> kann <b>%2</b>
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
langs_languages_nbr_and_list = "\n* Es gibt <b>%1</b>
langs_string_translated_in_langs = "Es sind <b>%1</b> Texte in <b>%2</b> Sprachen
langs_no_wiki_translations_err = "Interner Fehler: Modul ohne
langs_list_in_translated_lang = "<b>%1</b>
langs_changing_translations_title = "langs.changing_translations()
langs_changing_translations_headers = "Modul; Sprache;
langs_missing_translations_title = "langs.missing_translations() Fehlende
langs_missing_translations_headers = "Sprache; i18n
langs_changing_translations_help = "Siehe auch <b>%1</b>
langs_mixed_translations_title = "i18n
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:
langs_selectLang_test_headers = "Wiki-Sprache; Benutzersprache; Gesuchte Sprache;
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
langs_missing_one_translation_i_cat = "Fehlende
} -- 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.
langs_form9user_all_types_values = "
langs_form99user_tests_title = "in
langs_form99user_all_types_values = "in
langs_form99user_no_tranlation = "in
langs_form99user_a_value_is_table = "in
langs_translations_key_missing = "Internal error: Translations key missing or abnormal in viewers.
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 = { -- ¿
language = 'lenguaje',
langs_translations_counts_title = "langs.translations_counts() Condes des traducciones en tablas",
langs_translations_stats_report_title = "Traducciones:
langs_translations_stats_report_headers = "Encabezados calculados",
langs_form9user_tests_title = "viewers.
langs_form9user_all_types_values = "
langs_form99user_tests_title = "en
langs_form99user_all_types_values = "en
langs_form99user_no_tranlation = "en
langs_form99user_a_value_is_table = "en
langs_translations_key_missing = "Error interno: Traducciones clave que falta o anormal en viewers.
langs_lang_not_exist_err = "Error: El lenguaje <b>%1</b> no
langs_abnormal_char_in_text_title = "langs.abnormal_char_in_text() Prueba: Detectar caracteres anormales en un texto
langs_abnormal_char_in_alphabet = "abcdefghabklmnopqrstuvwxyz ABCDEFGHABKLMNOPQRSTUVWXYZ 013456789
langs_list_MediaWiki_languages_title = "langs.list_MediaWiki_languages() Lista de todos los idiomas de MediaWiki.",
-- Textos principales, errores y
langs_first_tests_languages = "
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
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:
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;
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;
langs_changing_translations_help = "Consulte
langs_mixed_translations_title = "Tablas traducciones i18n combinadas:",
langs_dummy_languages_title = "langs.dummy_languages()
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
langs_missing_one_translation_i_cat = "Falta la
} -- 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-
langs_form9user_tests_title = "viewers.
langs_form9user_all_types_values = "
langs_form99user_tests_title = "
langs_form99user_all_types_values = "en
langs_translations_key_missing = "Erreur interne:
langs_form99user_no_tranlation = "en
langs_form99user_a_value_is_table = "en
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:
langs_abnormal_char_in_alphabet = "abcdefghabklmnopqrstuvwxyz ABCDEFGHABKLMNOPQRSTUVWXYZ 013456789
langs_list_MediaWiki_languages_title = "langs.list_MediaWiki_languages() Liste de toutes les langues de MediaWiki.",
-- Principaux textes, erreurs et
langs_first_tests_languages = "Documentation des
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
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;
langs_missing_translations_title = "langs.missing_translations() Traductions manquantes dans les tables i18n.",
langs_missing_translations_headers = "Langue;
langs_changing_translations_help = "Voir aussi <b>%1</b> pour demander de l'aide pour traduire.",
langs_mixed_translations_title = "Tables de traductions i18n
langs_dummy_languages_title = "langs.dummy_languages()
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,
langs_missing_one_translation_i_cat = "Traduction manquante, au moins une", -- + "Module with internal error",
} -- langs.i18n.fr
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.
if lang == "page" then t = viewers.
if lang == "content" then t = viewers.
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.
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.
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.
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" --
-- 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.
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.
if selected == "tests" then example = viewers.
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
local ok, normal = true, viewers.
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:"
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
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 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.
count_missingGroup, count_changingGroup, count_known_texts, err_in_refer_lang), ["modul"] = modul, }
table.insert( missingGroup, missing_case )
t = t .. viewers.
"\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.
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.
"\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.
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
--
-- - - - ------------------ - - - - ---------------------------------
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
-- 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", "
{ "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.es = {
luaTable_recursive_luaTable_title = "MediaWiki lua_table recursiva",
luaTable_rough_view_tests_title = "lua_table.rough_view() Prueba: Formar un
luaTable_structure_level_maxi = "
luaTable_table_listlimit_max_n = "
lua_table_structure_recursive_report= "lua_table.structure() Enumerar una tabla, prueba con o sin
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
luaTable_fromsubnames_tests_headers = "Sub nombre; Mesa base;
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
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
luaTable_toList_tests_headers = "Cas
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
luaTable_fromsubnames_tests_headers = "Sous-nom; Table de base; Taille de la table;
luaTable_table_dont_exists_err = "La table <b>%1</b> n'existe pas.",
luaTable_table_args_source_title = "lua_table.structure() Table des arguments
luaTable_tables_differences_title = "signaler les
} -- lua_table.i18n.fr
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
return sub_obj
end
Ligne 3 561 ⟶ 4 112 :
end
pre_counts = counts
counts.tt = viewers.
if loop > 99 then break end
end
Ligne 3 938 ⟶ 4 489 :
end -- function lua_table.count_tests(t)
-- opt = {
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.
t = t .. viewers.
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.
continue = false
end
if continue then
if (type(k) == "string")
then t = t .. viewers.
else t = t .. viewers.
end
end
Ligne 3 985 ⟶ 4 536 :
n = n + 1
if n > opt.max_n then
local col = viewers.styles_color_warning( viewers.
continue = false
end
Ligne 3 995 ⟶ 4 546 :
opt.level = (opt.level or 1) - 1
shift = "\n" .. string.rep(":", opt.level)
t = t .. viewers.
elseif (type(v) == "function") then
t = t .. viewers.
elseif (type(v) == "nil") then
t = t .. viewers.
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.
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.
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.
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 = {
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
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.
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 = { ["
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 = "
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
mathroman_roman2int_tests_headers = "
mathroman_int2roman_test_title = "mathroman.int2roman() Test von Dezimalzahlen in
mathroman_int2roman_tests_headers = "Dezimalzahl;
mathroman_int_is_not_integer_err = "Das nicht ganzzahlige <b>%1</b> ist nicht in
mathroman_int_is_not_number_err = "Der Wert <b>%1</b> ist keine Zahl, die in eine
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 = "
mathroman_char_X_in_N_err = "
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
mathroman_roman2int_tests_headers = "
mathroman_int2roman_test_title = "mathroman.int2roman() Prueba de
mathroman_int2roman_tests_headers = "
mathroman_int_is_not_integer_err = "El no entero <b>%1</b> no se puede convertir en
mathroman_int_is_not_number_err = "El valor <b>%1</b> no es un
mathroman_is_not_string_err = "El valor <b>%1</b> no es un texto y no se puede convertir en
} -- 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 = "
mathroman_char_X_in_N_err = "
mathroman_char_increase_err = "3
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
mathroman_roman2int_tests_title = "mathroman.roman2int() Test des nombres romains en nombres
mathroman_roman2int_tests_headers = "Nombre romain; Valeur
mathroman_int2roman_test_title = "mathroman.int2roman() Test des nombres
mathroman_int2roman_tests_headers = "Nombre
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
-- 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.
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.
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>
itemid = 'itemid',
itemid_descr = "Name der Wikidata-Daten wie <code>Q535</code>
itemid2 = 'id',
itemid2_descr = "Name der Wikidata-Daten wie <code>Q535</code>
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
c = "c",
c_descr = "Anzeigeoptionen
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
versions_bind_arguments_tests_title = "modes.options_from_args_tests() Testmodusoptionen",
modes_options_from_args_title = "Optionen
-- 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,
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 = "
modes_need_arg_value_err = "Fehler: Sie
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.
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 = "
modes_value_re_defined_err = "Fehler: Der Wert des Arguments <b>%1</b> ist bereits definiert.
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
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
modes_auto_val_warning_wng = "
--
modes_assist_user_param_err = "
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
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>,
-- 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
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
modes_multiple_selection_test_select= "2; nobel;
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 = "
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
sitelink = 'sitelink',
sitelink_descr = "Wikidata
-- Languages
contentlang = "contentlang",
contentlang_descr = "Idioma del wiki.",
pagelang = "pagelang",
pagelang_descr = "Idioma de la
userlang = "userlang",
userlang_descr = "Idioma del lector de la
--
QITEM = 'QITEM',
Ligne 4 873 ⟶ 5 387 :
itemid2_descr = "Nombre de los datos Wikidata, como <code>Q535</code> para Victor Hugo.",
debug = 'debug',
category = '
mode = "modo",
mode_descr = "Tipo de uso del
options = 'opciones',
options_descr = "Opciones de
c = "c",
c_descr = "Opciones de
knownversions = "knownversions",
knownversions_descr = "Conocidas versiones, para manejarlos.",
soughtversions = "soughtversions",
soughtversions_descr = "Versiones demanda, para manejarlos.",
modes_form_ok_categ_tests = "Prueba
--
-- 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
modes_list_all_system_arguments = "Lista de argumentos del sistema:",
modes_list_all_other_args = "Lista de los otros argumentos:",
-- Textos principales, errores y
modes_language_cat = 'Hablando <b>%1</b>',
modes_date_months_names = "Enero, Febrero, Marzo, Abril, Mayo,
modes_date_to_part_format = "dd mmmm yyyy",
modes_date_to_part_call_err = "Error interno: argumentos de llamadas
modes_date_to_part_call_cat = "
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
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
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>
modes_is_undefined_err = "El argumento <b>%1</b>:<b>%2</b> no
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
modes_value_re_defined_err = "Error: El valor del argumento <b>%1</b> ya
modes_lang_table_err = "Error: La <b>1%</b> idioma o su tabla es incorrecta.",
modes_lang_table_err_i_cat = "
modes_lang_table_err_i_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
modes_delete_docbox_wng = "Debe quitar esta
modes_auto_val_warning_wng = "Verifique el argumentos
--
modes_assist_user_param_err = "Apoyo al usuario para comprobar la
modes_args_values_err = "Valor anormal del argumento <b>%1</b> = <b>%2</b> (%3)",
--
modes_no_known_arguments_err = "Error interno:
modes_no_known_arguments_i_cat = "
modes_no_source_arguments_err = "Error interno:
modes_no_source_arguments_i_cat = "
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
modes_normal_box_main_text_2 = "<br/>
-- 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
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
modes_multiple_selection_tests_title= "modes.multiple_selection() Prueba de
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
modes_namespaces_page_list_title = "modes.namespaces_page_list()
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;
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
itemid2 = 'id',
itemid2_descr = "Autre identifiant des
debug = 'debug',
category = '
mode = "mode",
mode_descr = "Type d'utilisation du module ou du
options = "options",
options_descr = "Options d'affichage d'un module ou d'un
c = "c",
c_descr = "Options d'affichage d'un module ou d'un
knownversions = "knownversions",
knownversions_descr = "Versions connues, pour les
soughtversions = "soughtversions",
soughtversions_descr = "Versions
modes_form_ok_categ_tests = "Test de
-- Principaux textes, erreurs et
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,
modes_list_needed_args = "Liste des arguments
modes_list_all_config_arguments = "Liste des arguments de configuration :",
modes_list_all_system_arguments = "Liste des arguments
modes_list_all_other_args = "Liste des autres arguments :",
modes_language_cat = 'Parle <b>%1</b>',
modes_date_months_names = "Janvier,
modes_date_to_part_format = "dd yyyy mmmm",
modes_date_to_part_call_err = "Erreur interne : Argument anormal de
modes_date_to_part_call_cat = "Module avec erreur interne",
modes_date_to_part_not_found_err = "Erreur interne : partie non
-- Gestion des arguments
modes_error_list_header_err = "Assistance sur les
modes_need_arg_value_err = "Erreur : Vous devez
modes_none_value_err = "Erreur : Aucun argument n'a
modes_unknown_argument_err = "Erreur : Le
modes_too_unnamed_arguments_err = "Erreur : Ce
modes_without_translation_wsid_err = "Erreur interne : Signaler au
modes_is_defined_err = "L'argument <b>%1</b>:<b>%2</b> est
modes_is_undefined_err = "L'argument <b>%1</b>:<b>%2</b> n'est pas
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
modes_lang_table_err = "Erreur interne : La langue <b>%1</b> ou sa table est
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
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 = "
--
modes_assist_user_param_err = "Support aux utilisateurs pour
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
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()
modes_args_unknown_report_title = "viewers.simple_list_test() Signaler les arguments inconnus",
modes_normal_box_main_text_1 = "
modes_normal_box_main_text_2 = "<br/>Il
-- Ces textes sont
modes_list_wiki_selectors_title = "Liste des
modes_all_categories_list_title = "modes.all_categories_list() Liste des
modes_all_errors_list_title = "modes.all_errors_list() Liste des erreurs
modes_multiple_values_tests_title = "modes.multiple_values() Test des arguments
modes_multiple_selection_tests_title= "modes.multiple_selection() Test de
modes_multiple_selection_test_headers= "Options;
modes_multiple_selection_test_select= "2;nobel;
modes_recursiveLevel_err = "Erreur de niveau
modes_recursive_normal_tests_title = "modes.recursive_normal() Test: Normalise le niveau
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 = "
modes_get_args_report_title = "modes.get_args() Valeurs des argument dans p.args_known{}.", -- fr
} -- modes.i18n.fr
-- - - - ------------------ - - - - ---------------------------------
-- Support of the management of options.
-- - - - ------------------ - - - - ---------------------------------
Ligne 5 313 ⟶ 5 605 :
}
-- Manage Library:modes options. Administrar opciones.
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,
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,
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
-- Si une option est une langue, activer cette langue pour l'utilisateur.
for lang, tab in pairs(
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.
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
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.
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
-- id = "Q8739" -- (near 287 av. J.-C.
-- id = "Q20882" -- (1832
id = "Q1290" -- (1623
-- id = "Q41568" -- (1533
-- id = "Q83428" -- (near 1493
-- id = "Q131671" -- (VIe
-- id = "Q213330" -- (1330
-- id = "Q21157618"-- (
-- id = "Q9364" -- (1905
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.
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 = "
{ try = "
{ try = "description", correct = "Description", },
{ try = "anneeDeces", correct = "anneeNaissance", },
{ try = "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
--
-- Nombre maximum de lettres
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.
--
-- local ... = modes.multiple_values(test.argm, test.argvalue, test.
function modes.multiple_values(args_kown, argname, argvalue
local args_kown = args_kown or modes.args_kown or versions.args_kown or p.args_kown or {}
local argname, argvalue = argname, argvalue, 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,
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.
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.
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,
local head = mw.text.split( viewers.
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
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
--
-- 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.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
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.
local err = nil
local cats = ""
modes.nowyear = tonumber(os.date("%Y") ) -- now_date = os.date("%Y-%m-%d %H:%M:%S")
modes.import_arguments_err = ""
modes.import_arguments_track = ""
Ligne 6 284 ⟶ 6 575 :
if err then return args_import, err end
---------------------------------------
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]
if argm.syn == 2 then
-- Name an unnamed argument, positional, by its synonym. Nommer un argument non
-- Rename a named argument, by its synonym. Renommer un argument
-- 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
-- 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
-- - - - ------------------ - - - - ---------------------------------
function modes.generDoc(opt,
-- List of
-- Lister des
-- "docview" or ":" ajouter le panneau de documentation
-- "docmin" quelques
-- "docdef" seulement les
-- "docmax" tous les
-- "docnotice" generer les documentations des notices
-- "docline" mettre tous les
-- "docsrc" mettre les
-- 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(
if type(
local key, argknw, argval, arglingual = "", "", ""
local lst = true
local lst_doc, lst_1, lst_t = {}, {}, ""
for key, parm in pairs(
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.
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.
end
t = "\n* " .. module_name .. " " .. t -- .. "}}" -- <br>
return t
end -- function modes.generDoc(opt,
function modes.sources_of_datas_colors()
local res = ""
if modes.docolor then -- Document the data sources by colors
local datas_sources_of_datas = viewers.
-- 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.
langs.init_content_page_user_lang() -- function langs.init_content_page_user_lang()
if (type(langs.user_lang) == "string") and type(
for key, txt in pairs(
if viewers.is_in("cat_", key) or viewers.is_in("_cat", key) then
txt = viewers.
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.
if (type(langs.user_lang) == "string") and type(
for key, txt in pairs(
if viewers.is_in("err_", key) or viewers.is_in("_err", key) then
txt = viewers.
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.
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.
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.
t = t .. "<br><br>* <b>" .. viewers.
t = t .. "<br><br>* <b>" .. viewers.
t = t .. "<br><br>* <b>" .. viewers.
t = t .. "<br><br>* <b>" .. viewers.
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.
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 = '
-- 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 :
-- cut_libraries
Ligne 6 825 ⟶ 7 114 :
versions.i18n = {} -- Translations for versions library
versions.i18n.de = {
-- Principaux textes, erreurs et
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
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'
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
versions_versions_too_select_altern_err = "Erreur de versions : <b>%1</b>
versions_versions_select_not_used_err = "Erreur de versions : le
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
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
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
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 = "
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
versions_bind_modules_test_headers = "Versions
versions_tasks_changes_report = "versions.tasks_changes_report() Documentations,
versions_sort_central_modules_title = "versions.sort_central_modules_report() Liste
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
versions_deprecated_function_tests = "versions.deprecated_function() Test: Fonction
} -- versions.i18n.de
versions.i18n.en = {
Ligne 6 930 ⟶ 7 219 :
} -- versions.i18n.en
versions.i18n.es = {
-- Textos principales, errores y
versions_module_with_error_err = "
versions_with_internal_error = "
versions_with_internal_error_cat = "
versions_with_usage_error = "
versions_with_usage_error_cat = "
versions_err_module_miss_i18n_i_cat = "
versions_running_times_title = "versions.running_times() Tiempos de
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 = "
versions_table_listlimit_max_n = "
versions_with_usage_error_cat = "
versions_module_with_error_err = "
versions_with_internal_error_cat = "
--
versions_versions_no_select_altern_err = "Error de versiones: no hay
versions_versions_too_select_altern_err = "Error de versiones: <b>%1</b> selecciones en la alternativa <b>%2</b> del
versions_versions_select_not_used_err = "Error de versiones: selector <b>%1</b> no es en alternativas <b>%2</b> del
versions_versions_missing_module_err = "Error de versiones:
versions_main_module_missing_err = "El
versions_select_unknown_module_err = "Internal error: El
versions_I18N_module_no_base_err = "El
versions_no_versions_module_err = "El <b>%1</b>
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>,
versions_missing_versions_err = "El
versions_replaced_versions_err = "El
versions_unknownversions_err = "El
versions_module_miss_i18n_txt_err = "Error Interno: El texto <b>%1</b> falta de
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
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 = "
versions_versions_management_report = "versions.versions_management_report() Informe de
-- 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()
versions_sort_central_modules_title = "versions.sort_central_modules_report() Lista ordenada de
versions_sort_central_modules_headers = "
versions_sort_central_modules_counts = "esta + <b>%2</b>/<b>%3</b> T/I, ",
versions_versions_management_title = "versions.versions_support_test() Pruebas de
versions_versions_management_headers = "sought; versions; process; comments",
versions_add_deprecated_err = "
versions_deprecated_function_tests = "versions.deprecated_function() Prueba:
} -- versions.i18n.es
versions.i18n.fr = {
-- Principaux textes, erreurs et
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'
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
versions_versions_too_select_altern_err = "Erreur de versions : <b>%1</b>
versions_versions_select_not_used_err = "Erreur de versions : le
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
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
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
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 = "
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
versions_bind_modules_test_headers = "Versions
versions_tasks_changes_report = "versions.tasks_changes_report() Documentations,
versions_sort_central_modules_title = "versions.sort_central_modules_report() Liste
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
versions_deprecated_function_tests = "versions.deprecated_function() Test: Fonction
} -- versions.i18n.fr
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
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.
end
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
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.
-- t = t .. viewers.
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.
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
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
-- 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,
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"] =
}
return res
end -- versions.deprecated_function("old", "versions.deprecated_function", "kind", "code",
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.
get.counts = viewers.
-- get.counts = get.counts .. viewers.
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.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
["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
["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
["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.",
--
{ ["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 = {}
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
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(
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 =
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("
t = t .. viewers.ta("
-- 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 )
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.
-- "\n* versions.running_times() Temps d'
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
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
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
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.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,
-- modes_date_months_names = "Janvier,
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
-- 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.form_main_version(main_versions)
Ligne 9 240 ⟶ 8 954 :
local t = ""
local selector, section, style = selector, section, style
section = viewers.
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("
local t = "\n*
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, "
return drop_box_html_start
end -- t = t ..
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.
-- "Support desk for %1 : %2 translations in %3 languages"
return title
Ligne 9 290 ⟶ 9 005 :
}
-- 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.
tab_view.t = tab_view.t .. viewers.
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.
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.
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.
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
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
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, { ["
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,
--
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.
res = res .. drop_box.new(selector, "langs_form99user_tests_title",
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>
t = t .. viewers.time_line
-- <noinclude> </noinclude>
Ligne 9 892 ⟶ 9 347 :
toc_class = "toc",
toc_form = "toc_form",
-- result_form = viewers.
-- %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
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
viewers_sentence_example_page_text = "
}
-- 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.
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)
--
-- 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 = "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
-- local flag = viewers.form_image(viewers.
-- 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 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>
-- 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(
-- 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(
-- 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 = { -- }
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.
res = res .. drop_box.
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.
if modes.option("docview") then res = res .. "\n*" .. modes.generDoc("",
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(
p.options_for_modes = { -- module options_for_modes
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 "
if type(
res = res .. viewers.ta("modes.mode_name", modes.mode_name) .. viewers.ta("modes.options", modes.options)
res = res .. p.box_read(prop, title)
res = res .. p.box_read(prop, title)
-- return res function viewers.form_user_lang_test(ref, ...)
end -- Draw the main box one. -- ric (p.box_read) function modes.option(
-- if modes.option("tests") and not modes.option("box1") then -- if we have the option "tests" we display only all active tests
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
modes.time3 = os.clock()
res = res .. viewers.doc_group("allwaysview") -- viewers.doc_group(selector, mask_sections) -- To enforce title of sections
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(
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.
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'] = '
['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'] = '
['c'] = 'c',
['mode'] = 'mode',
Ligne 10 277 ⟶ 9 710 :
--
-- Traducir todos los los argumentos siguientes:
-- Argumentos relacionados con el
occupation_cat = '%1',
p_authors_deathyear_cat = "Autores-%1",
year_number_cat = "
-- Nombres y descripciones de los argumentos
lastname = 'nombre',
lastname_descr = "Nombre. Por favor, especifique para corregir la clave de
firstname = 'apellido',
firstname_descr = "Primero. Proponer para corregir la
firstname2 = 'primero',
firstname2_descr = "Primero. Proponer para corregir la
initial = 'inicial',
initial_descr = "Inicial para corregir la
title = 'titulo',
title_descr = "
country = '
flag_of_country = 'Flag_of_Spain.svg',
flag_of_country_descr = 'Bandera del
-- nacimiento y muerte
birthday = '
birthday_descr = "
birthyear = '
birthday_descr = "
p_authors_birthyear_cat = "N%1", -- es.wikisource N1802 - F1885
deathday = '
deathday_descr = "
deathyear = '
deathyear_descr = "
p_authors_deathyear_cat = "F%1", -- es.wikisource N1802 - F1885
description = 'descripcion',
description_descr = "
-- Argumentos limitados a
region = '
region_descr = '
region_values = "otro;china;india;siglo",
Ligne 10 319 ⟶ 9 752 :
sex = 'sex',
sex_descr = '
sex_values = 'hombre;mujer',
} -- p.i18n.es
p.i18n.fr = { -- Translations in
-- Arguments to import, do not translate. Arguments
["modules_guide"] = { ["typ"] = "ctr", ["need"] = 0, ["keyword"] = "modules_guide", ["modules_guide_default"] = "Centralizer", },
['p_template_drop_box_name'] = '
['c'] = 'c',
['mode'] = 'mode',
Ligne 10 335 ⟶ 9 768 :
--
-- Translate all next arguments. Traduire tous les arguments suivants :
-- Arguments
occupation_cat = '%1',
p_authors_deathyear_cat = "Auteurs-%1",
year_number_cat = "
-- Noms et descriptions des arguments
lastname = 'nom',
lastname_descr = "Nom. A
firstname = '
firstname_descr = "
firstname2 = 'prenom',
firstname2_descr = "
initial = 'initiale',
initial_descr = "Initiale pour corriger les
title = 'titre',
title_descr = "Titre de la page, automatique.",
Ligne 10 358 ⟶ 9 791 :
birthday_descr = "Jour de naissance.",
birthyear = 'anneeNaissance',
birthyear_descr = "
p_authors_birthyear_cat = "Naissance en %1", -- fr.wikisource Naissance en 1802
deathday = 'jourDeces', -- muerte P570
deathday_descr = "Jour de
deathyear = 'anneeDeces',
deathyear_descr = "
p_authors_deathyear_cat = "
description = 'description',
description_descr = "Description de l'auteur,
--
-- Arguments
region = '
region_descr = '
region_values = "autre;chine;inde;
rights = 'droits',
rights_descr = "Type de droits d'auteur
rights_values = '70;50;mpf;ONU;non',
Ligne 10 381 ⟶ 9 814 :
sex_values = 'homme;femme',
} -- p.i18n.fr
-- - - - ------------------ - - - - ---------------------------------
Ligne 10 452 ⟶ 9 826 :
-- Arguments in order without names, with their keyword for use as other arguments.
-- Arguments dans l'ordre, non
-- [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", }, --
--
-- 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
if p.i18n and p.i18n.fr then p.i18n.fr.error_i18n_voulue_pour_test_de_traduction_manquante = '
-- 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["
if not args_source.description then args_source.description = "Victor Hugo est
if not args_source.langue then args_source.langue = "
if not args_source.occupation then args_source.occupation = "
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
local a = args_import
local i = {} -- interact
datas.prop_default = datas.prop_default or "
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.
if a.docitem then a.docitem = mw.text.trim(a.docitem) end -- dockey docitem args_known = { i18n.
if a.dockey then a.dockey = mw.text.trim(a.dockey) end -- dockey docitem args_known = { i18n.
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.
events.add_cat( viewers.
end
--
if a.birth and not a.birthyear then
local tt, err = viewers.date_to_part(a.birth, viewers.
if tt then i.birthyear = tt else
events.add_err(err, viewers.
events.add_cat("modes_date_to_part_call_cat")
end
end
-- memorize interactions in modes.
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
n = n + 1
if (
-- 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.
return
end --
Ligne 10 672 ⟶ 10 046 :
-- Interfaces, alias and functions to templates
-- Interfaces, alias y funciones para modelos
-- Interfaces, alias et fonctions pour les
-- - - - ------------------ - - - - ---------------------------------
-- - - - ------------------ - - - - ---------------------------------
function versions.init_multilingual_module(mode, args_known) -- Initialise a mode in any known language on the base of known arguments
local res = ""
local args_all = {}
-- function versions.bind_reverse_i18n_translations(
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.
local res = ""
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
-- viewers.form_user_lang_test_cases = { -- Group or tests cases for function viewers.translate_user(lang, ref , ...) and also langs.content_lang + page_
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_multilingual_module("read", args_known)
res = res .. p.form_result(args_known, main_module) -- Formats all results of this module and its sub-modules.
return res
end -- function
function
local res = ""
local
res = res .. versions.init_multilingual_module("edit", args_known)
res = res .. p.form_result(args_known, main_module) -- Formats all results of this module and its sub-modules.
return res
end -- function
-- ["docfunc"] = { ["typ"] = "config", ["need"] = 0, ["keyword"] = "docfunc"},
-- ["docitem"] = { ["typ"] = "config", ["need"] = 0, ["keyword"] = "docitem"},
-- ["dockey"] = { ["typ"] = "config", ["need"] = 0, ["keyword"] = "dockey"},
function
local res = ""
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("doc", args_known)
local docfunc = modes.args_kown.docfunc or modes.args_kown[3] or modes.args_import.docitem or modes.args_import[3]
local docitem = modes.
local dockey = modes.args_kown.dockey or modes.args_kown[1] or modes.args_import.dockey or modes.args_import[1]
local
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
--[==[
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>
<button>Default Button</button>
<button class="button>Styled Button</button>
</html>
--]==]
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")
res = res .. p.form_result(modes.args_known) -- Generate wikitext, categories, and others
res = res .. "</br>p.form_result(modes.args_known)</br>" -- Generate wikitext, categories, and others
return res -- function p.form_result(
end -- function p.tests(frame)
function versions.detect_MediaWiki_changes()
Ligne 10 784 ⟶ 10 171 :
return "" -- t
end -- function versions.detect_MediaWiki_changes()
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
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
--
-- 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/
--
-- Tests pages on 2018-07-24 :
Ligne 10 982 ⟶ 10 208 :
-- Modulenn:Auteur2Tpt-s-br -- s.br.Modulenn:Auteur2Tpt as module itself in Breton
--
--
-- MediaWiki:Centralizer/Tests -- w.vi.wikipedia.
--
-- Plantilla:Centralizer/Tests -- s.es.wikipedia.
-- 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
--
-- Auteur:Utilisateur:Rical/Auteur:VictorHugo
|