Changes

sync from sandbox;
Line 627: Line 627:     
if 13 > tonumber(year2) then return false; end -- don't allow 2003-05 which might be May 2003
 
if 13 > tonumber(year2) then return false; end -- don't allow 2003-05 which might be May 2003
year2 = century .. year2; -- add the century to year2 for comparisons
+
year2 = century .. year2; -- add the century to year2 for comparisons
 
if tonumber(year) >= tonumber(year2) then return false; end -- left to right, earlier to later, not the same
 
if tonumber(year) >= tonumber(year2) then return false; end -- left to right, earlier to later, not the same
 
if not is_valid_year(year2) then return false; end -- no year farther in the future than next year
 
if not is_valid_year(year2) then return false; end -- no year farther in the future than next year
Line 639: Line 639:  
else
 
else
 
return false; -- date format not one of the MOS:DATE approved formats
 
return false; -- date format not one of the MOS:DATE approved formats
 +
end
 +
 +
if param ~= 'date' then -- CITEREF disambiguation only allowed in |date=; |year= & |publication-date= promote to date
 +
if anchor_year:match ('%l$') then
 +
return false;
 +
end
 
end
 
end
   Line 1,102: Line 1,108:  
xlate = is_xlateable (month); -- get translate <month>; returns translation or nil
 
xlate = is_xlateable (month); -- get translate <month>; returns translation or nil
 
 
-- if cfg.date_names.en.long[month] then -- long month dates
  −
-- if cfg.date_names.inv_local_long[cfg.date_names.en.long[month]] then
  −
-- xlate = cfg.date_names.inv_local_long[cfg.date_names.en.long[month]];
  −
-- end
  −
---- mode = 'F'; -- English name is long so use long local name
  −
-- elseif cfg.date_names.en.short[month] then -- short month dates
  −
-- if cfg.date_names.inv_local_short[cfg.date_names.en.short[month]] then
  −
-- xlate = cfg.date_names.inv_local_short[cfg.date_names.en.short[month]];
  −
-- end
  −
---- mode = 'M'; -- English name is short so use short local name
  −
-- elseif cfg.date_names.en.quarter[month] then -- quarter dates
  −
-- if cfg.date_names.inv_local_quarter[cfg.date_names.en.quarter[month]] then
  −
-- xlate = cfg.date_names.inv_local_quarter[cfg.date_names.en.quarter[month]];
  −
-- end
  −
-- elseif cfg.date_names.en.season[month] then -- season dates
  −
-- if cfg.date_names.inv_local_season[cfg.date_names.en.season[month]] then
  −
-- xlate = cfg.date_names.inv_local_season[cfg.date_names.en.season[month]];
  −
-- end
  −
-- elseif cfg.date_names.en.named[month] then -- named dates
  −
-- if cfg.date_names.inv_local_named[cfg.date_names.en.named[month]] then
  −
-- xlate = cfg.date_names.inv_local_named[cfg.date_names.en.named[month]];
  −
-- end
  −
-- else
  −
-- xlate=nil; -- not an English month name; could be local language month name
  −
---- mode = nil; -- not an English month name; could be local language month name or an English season name
  −
-- end
  −
   
if xlate then
 
if xlate then
-- if mode then -- might be a season
  −
-- xlate = lang_object:formatDate(mode, '1' .. month); -- translate the month name to this local language
   
date = mw.ustring.gsub (date, month, xlate); -- replace the English with the translation
 
date = mw.ustring.gsub (date, month, xlate); -- replace the English with the translation
 
date_parameters_list[param_name].val = date; -- save the translated date
 
date_parameters_list[param_name].val = date; -- save the translated date