٦١
تعديل
(update from Module:Age/sandbox; this aids localization; used at bnwiki + bswiki) |
ط (مراجعة واحدة) |
||
سطر ٣: | سطر ٣: | ||
local mtext = { | local mtext = { | ||
-- Message and other text that should be localized. | -- Message and other text that should be localized. | ||
['mt-bad-param1'] = 'Invalid parameter $1', | ['mt-bad-param1'] = 'Invalid parameter $1', | ||
['mt-bad-param2'] = 'Parameter $1=$2 is invalid', | ['mt-bad-param2'] = 'Parameter $1=$2 is invalid', | ||
سطر ٢٦: | سطر ٢٥: | ||
['mt-template-bad-name'] = 'The specified template name is not valid', | ['mt-template-bad-name'] = 'The specified template name is not valid', | ||
['mt-template-x'] = 'The template invoking this must have "|template=x" where x is the wanted operation', | ['mt-template-x'] = 'The template invoking this must have "|template=x" where x is the wanted operation', | ||
['txt- | ['txt-age'] = '(age ', | ||
['txt- | ['txt-aged'] = ' (aged ', | ||
['txt- | ['txt-and'] = '، و ', | ||
['txt-comma-and'] = ' | ['txt-comma-and'] = '، و ', | ||
['txt-error'] = ' | ['txt-error'] = 'خطأ: ', | ||
['txt- | ['txt-or'] = ' أو ', | ||
} | } | ||
local abbr_plural = { | |||
y = 'سنوات', | |||
m = 'شهور', | |||
w = 'أسابيع', | |||
d = 'أيام', | |||
H = 'ساعات', | |||
M = 'دقائق', | |||
S = 'ثواني', | |||
} | |||
local translate, from_en, to_en, isZero | local translate, from_en, to_en, isZero | ||
if translate then | if translate then | ||
سطر ٦٤: | سطر ٦٠: | ||
-- Return objects exported from the date module or its sandbox. | -- Return objects exported from the date module or its sandbox. | ||
if not _Date then | if not _Date then | ||
local sandbox = frame:getTitle():find( | local sandbox = frame:getTitle():find('ملعب', 1, true) and '/ملعب' or '' | ||
local datemod = require( | local datemod = require('Module:Date2' .. sandbox) | ||
local realDate = datemod._Date | local realDate = datemod._Date | ||
_currentDate = datemod._current | _currentDate = datemod._current | ||
سطر ١١٦: | سطر ١١٢: | ||
end | end | ||
return text | return text | ||
end | end | ||
سطر ١٣٨: | سطر ١٢١: | ||
end | end | ||
local function message(msg, | local function message(msg, id) | ||
-- Return formatted message text for an error or warning. | -- Return formatted message text for an error or warning. | ||
local function getText(msg) | local function getText(msg) | ||
return mtext[msg] or error('Bug: message "' .. tostring(msg) .. '" not defined') | return mtext[msg] or error('Bug: message "' .. tostring(msg) .. '" not defined') | ||
end | |||
local text | |||
if type(msg) == 'table' then | |||
text = getText(msg[1]) | |||
local rep = {} | |||
for i, v in ipairs(msg) do | |||
if i > 1 then | |||
rep['$' .. (i - 1)] = v | |||
end | |||
end | |||
text = text:gsub('$%d+', rep) | |||
else | |||
text = getText(msg) | |||
end | end | ||
local categories = { | local categories = { | ||
error = | error = '[[Category:Age error]]', | ||
warning = | warning = '[[Category:Age error]]', -- same as error until determine whether 'Age warning' would be worthwhile | ||
} | } | ||
local a, b | local a, b, category | ||
if id == 'warning' then | |||
a = '<sup>[<i>' | a = '<sup>[<i>' | ||
b = '</i>]</sup>' | b = '</i>]</sup>' | ||
else | else | ||
a = '<strong class="error">' .. getText('txt-error') | a = '<strong class="error">' .. getText('txt-error') | ||
b = '</strong>' | b = '</strong>' | ||
end | end | ||
if mw.title.getCurrentTitle():inNamespaces(0) then | if mw.title.getCurrentTitle():inNamespaces(0) then | ||
-- Category only in namespaces: 0=article. | -- Category only in namespaces: 0=article. | ||
category = | category = categories[id or 'error'] | ||
end | end | ||
return | return | ||
سطر ١٩٥: | سطر ١٨٨: | ||
-- i == 1 for the first number which can optionally start with an uppercase letter. | -- i == 1 for the first number which can optionally start with an uppercase letter. | ||
number = tostring(number) | number = tostring(number) | ||
return require( | return require('Module:ConvertNumeric').spell_number( | ||
number, | number, | ||
nil, -- fraction numerator | nil, -- fraction numerator | ||
سطر ٢٤٧: | سطر ٢٤٠: | ||
result = '<span data-sort-value="_SORTKEY_♠"></span>' | result = '<span data-sort-value="_SORTKEY_♠"></span>' | ||
end | end | ||
return | return result:gsub('_SORTKEY_', sortKey) | ||
end | end | ||
end | end | ||
سطر ٢٧٤: | سطر ٢٦٧: | ||
sep = { | sep = { | ||
comma = 'sep_comma', | comma = 'sep_comma', | ||
[' | ['،'] = 'sep_comma', | ||
serialcomma = 'sep_serialcomma', | serialcomma = 'sep_serialcomma', | ||
space = 'sep_space', | space = 'sep_space', | ||
سطر ٢٩٣: | سطر ٢٨٦: | ||
hm = { 'H', 'M', id = 'hm' }, | hm = { 'H', 'M', id = 'hm' }, | ||
hms = { 'H', 'M', 'S', id = 'hms' }, | hms = { 'H', 'M', 'S', id = 'hms' }, | ||
d = { 'd', id = 'd' }, | d = { 'd', id = 'd' }, | ||
dh = { 'd', 'H', id = 'dh' }, | dh = { 'd', 'H', id = 'dh' }, | ||
سطر ٣٥٠: | سطر ٣٤١: | ||
date = date + item | date = date + item | ||
if not date then | if not date then | ||
return message('mt-cannot-add', item) | return message({ 'mt-cannot-add', item }) | ||
end | end | ||
end | end | ||
سطر ٤٠٦: | سطر ٣٩٧: | ||
end | end | ||
local name = names[components[i]] | local name = names[components[i]] | ||
--if islist then | |||
--name = abbr_plural[components[i]] -- إضافة اسم الجمع باللغة العربية | |||
--end | |||
--mw.log( 'vstr: ' .. vstr ) | |||
if name then | if name then | ||
local plural = abbr_plural[components[i]] -- names.plural | |||
if not plural or (islist and v[2] or v) == 1 then | |||
plural = '' | |||
end | end | ||
text:add(vstr .. sep .. name) | if plural ~= "s" and plural ~= "" then name = "" end | ||
text:add(vstr .. sep .. name .. plural) | |||
else | else | ||
text:add(vstr) | text:add(vstr) | ||
سطر ٤٢١: | سطر ٤١٨: | ||
last = ' ' | last = ' ' | ||
elseif options.join == 'sep_comma' then | elseif options.join == 'sep_comma' then | ||
first = ' | first = ' و' | ||
last = ' | last = ' و' | ||
elseif options.join == 'sep_serialcomma' and text.n > 2 then | elseif options.join == 'sep_serialcomma' and text.n > 2 then | ||
first = ' | first = '، و' | ||
last = mtext['txt-comma-and'] | last = mtext['txt-comma-and'] | ||
else | else | ||
first = ' | first = '، و' | ||
last = mtext['txt-and'] | last = mtext['txt-and'] | ||
end | end | ||
سطر ٤٥٨: | سطر ٤٥٥: | ||
-- which have been validated. | -- which have been validated. | ||
local names = { | local names = { | ||
abbr_off = { | abbr_off = { | ||
plural = 's', | |||
sep = ' ', | sep = ' ', | ||
y = | y = 'سنة', | ||
m = | m = 'شهر', | ||
w = | w = 'أسبوع', | ||
d = | d = 'يوم', | ||
H = | H = 'ساعة', | ||
M = | M = 'دقيقة', | ||
S = | S = 'ثانية', | ||
}, | }, | ||
abbr_on = { | abbr_on = { | ||
سطر ٤٨٢: | سطر ٤٧٦: | ||
}, | }, | ||
abbr_infant = { -- for {{age for infant}} | abbr_infant = { -- for {{age for infant}} | ||
plural = 's', | |||
sep = ' ', | sep = ' ', | ||
y = | y = 'yr', | ||
m = | m = 'mo', | ||
w = | w = 'wk', | ||
d = | d = 'day', | ||
H = | H = 'hr', | ||
M = | M = 'min', | ||
S = | S = 'sec', | ||
}, | }, | ||
abbr_raw = {}, | abbr_raw = {}, | ||
سطر ٥٧٠: | سطر ٥٦٥: | ||
(textOptions.suffix or '') | (textOptions.suffix or '') | ||
end | end | ||
return message('mt-bad-show', show.id) | return message({ 'mt-bad-show', show.id }) | ||
end | end | ||
سطر ٦٤٤: | سطر ٦٣٩: | ||
for i = 1, nrDates do | for i = 1, nrDates do | ||
local index = i == 1 and 1 or 4 | local index = i == 1 and 1 or 4 | ||
dates[i] = Date(fields[index], fields[index+1], fields[index+2]) | |||
end | end | ||
else | else | ||
سطر ٨٨١: | سطر ٨٦٥: | ||
return message('mt-invalid-bd-age') | return message('mt-invalid-bd-age') | ||
end | end | ||
local disp = | local disp, show = 'disp_raw', 'y' | ||
if diff.years < 2 then | if diff.years < 2 then | ||
disp = 'disp_age' | disp = 'disp_age' | ||
سطر ٨٩١: | سطر ٨٧٤: | ||
end | end | ||
end | end | ||
local | local df = stripToNil(args.df) -- day first (dmy); default is month first (mdy) | ||
local result = '(<span class="bday">%-Y-%m-%d</span>) </span>' .. | |||
(df and '%-d %B %-Y' or '%B %-d, %-Y') | |||
result = from_en('<span style="display:none"> ' .. | |||
date:text(result) .. | |||
'<span class="noprint ForceAgeToShow"> ' .. | |||
mtext['txt-age'] .. | |||
dateDifference({ | |||
diff = diff, | diff = diff, | ||
show = show, | show = show, | ||
سطر ٩٠١: | سطر ٨٨٧: | ||
disp = disp, | disp = disp, | ||
sep = 'sep_space', | sep = 'sep_space', | ||
})) | }) .. | ||
')</span>') | |||
local warnings = tonumber(frame.args.warnings) | local warnings = tonumber(frame.args.warnings) | ||
if warnings and warnings > 0 then | if warnings and warnings > 0 then | ||
سطر ٩٣١: | سطر ٩١٧: | ||
end | end | ||
if invalid then | if invalid then | ||
result = result .. message('mt-bad-param1', invalid) | result = result .. message({ 'mt-bad-param1', invalid }, 'warning') | ||
end | end | ||
end | end | ||
سطر ٩٦٩: | سطر ٩٥٥: | ||
return message('mt-invalid-dates-age') | return message('mt-invalid-dates-age') | ||
end | end | ||
local | local df = stripToNil(args.df) -- day first (dmy); default is month first (mdy) | ||
local result | |||
if date1.day then -- y, m, d known | if date1.day then -- y, m, d known | ||
result = (df and | |||
'%-d %B %-Y' or | |||
'%B %-d, %-Y') .. | |||
'<span style="display:none">(%-Y-%m-%d)</span>' | |||
elseif date1.month then -- y, m known; d unknown | elseif date1.month then -- y, m known; d unknown | ||
result = | |||
'%B %-Y' .. | |||
'<span style="display:none">(%-Y-%m-00)</span>' | |||
else -- y known; m, d unknown | else -- y known; m, d unknown | ||
result = | |||
'%-Y' .. | |||
'<span style="display:none">(%-Y-00-00)</span>' | |||
end | end | ||
result = from_en(date1:text(result) .. | |||
mtext['txt- | mtext['txt-aged'] .. | ||
dateDifference({ | |||
diff = diff, | diff = diff, | ||
show = 'y', | show = 'y', | ||
abbr = 'abbr_off', | abbr = 'abbr_off', | ||
disp = | disp = 'disp_raw', | ||
range = 'dash', | range = 'dash', | ||
sep = 'sep_space', | sep = 'sep_space', | ||
})) | }) .. | ||
')') | |||
local warnings = tonumber(frame.args.warnings) | local warnings = tonumber(frame.args.warnings) | ||
if warnings and warnings > 0 then | if warnings and warnings > 0 then | ||
سطر ١٬٠١٥: | سطر ١٬٠٠٤: | ||
end | end | ||
if invalid then | if invalid then | ||
result = result .. message('mt-bad-param1', invalid) | result = result .. message({ 'mt-bad-param1', invalid }, 'warning') | ||
end | end | ||
end | end | ||
سطر ١٬٠٨٧: | سطر ١٬٠٧٦: | ||
parm = translate[parm] | parm = translate[parm] | ||
if parm == nil then -- test for nil because false is a valid setting | if parm == nil then -- test for nil because false is a valid setting | ||
return message('mt-bad-param2', argname, args[argname]) | return message({ 'mt-bad-param2', argname, args[argname] }) | ||
end | end | ||
parms[argname] = parm | parms[argname] = parm | ||
سطر ١٬٠٩٨: | سطر ١٬٠٨٧: | ||
if show then | if show then | ||
if show.id ~= round then | if show.id ~= round then | ||
return message('mt-conflicting-show', args.show, args.round) | return message({ 'mt-conflicting-show', args.show, args.round }) | ||
end | end | ||
else | else |