Module:Nihongo: Difference between revisions

Content deleted Content added
sync from sandbox;
Tag: Reverted
 
(12 intermediate revisions by 6 users not shown)
Line 1:
require('strict');
--[[--------------------------< N I H O N G O _ E R R O R >----------------------------------------------------
 
--[[--------------------------< E R R O R _ M E S S A G E S >--------------------------------------------------
creates an error message for {{nihongo}}, {{nihongo3}}, {{nihongo krt}}, and {{nihongo foot}} when these template are missing <japanese>
 
error messaging; keys to this table are the template base names:
'nihongo', 'nihongo3', 'nihongo krt', 'nihongo foot' → 'nihongo' etc
 
]]
 
local err_msg = {
['nihongo'] = 'Japanese or romaji text required',
}
 
local err_cat = {
['nihongo'] = '[[Category:Nihongo template errors]]',
}
 
 
--[[--------------------------< C O N F I G U R A T I O N >----------------------------------------------------
 
configuration setting for the various templates. keys to this table are the template names without capitalization
 
]]
 
local cfg = {
['nihongo'] = {
tag = 'ja',
system = 'hepburn',
system_link = '[[Hepburn romanization|Hepburn]]',
err_msg = err_msg.nihongo,
err_cat = err_cat.nihongo,
},
['nihongo3'] = {
tag = 'ja',
system = 'hepburn',
err_msg = err_msg.nihongo,
err_cat = err_cat.nihongo,
},
['nihongo krt'] = {
tag = 'ja',
system = 'hepburn',
err_msg = err_msg.nihongo,
err_cat = err_cat.nihongo,
},
['nihongo foot'] = {
tag = 'ja',
system = 'hepburn',
system_link = '[[Hepburn romanization|Hepburn]]',
err_msg = err_msg.nihongo,
err_cat = err_cat.nihongo,
},
}
 
 
--[[--------------------------< E R R O R _ M E S S A G E >----------------------------------------------------
 
Creates an error message for {{nihongo}}, {{nihongo3}}, {{nihongo krt}}, and {{nihongo foot}} when these template are missing <japanese>
or <romaji> inputs; names the offending template, links to template page, and adds article to Category:Nihongo template errors
 
]]
 
local function nihongo_errorerror_message (template)
local msg = {'<span class="error" style="font-size:100%">error: {{'};
table.insert (msg, template);
table.insert (msg, '}}: Japanese or romaji text required ([[Template:');
table.insert (msg, cfg[template].err_msg);
table.insert (msg, ' ([[Template:');
table.insert (msg, template);
table.insert (msg, '|help]])</span>');
if 0 == mw.title.getCurrentTitle().namespace then
table.insert (msg, 'cfg[[Category:Nihongo template errors]]'.err_cat);
end
 
Line 20 ⟶ 76:
 
 
--[[--------------------------< N I H O N G O _ R E N D E R E R >--------------------------------------------------------------
 
sharedShared support function for nihingo(), nihongo3(), and nihongo_foot(). Calculates an index into formatting{}
from set/unset parameters:
args[1] (english text) has a value of 8 (set) or 0 (unset)
args[2] (japanesenative text) has a value of 4
args[3] (romajiromanized text) has a value of 2
args[4] (extra) has a value of 1
index, the sum of these values, gets the appropriate format string from formatting{} table with associated values
Line 33 ⟶ 89:
]]
 
local function nihongo_rendererrenderer (args, formatting, extra2)
local output;
local index = 0; -- index into formatting{}
Line 52 ⟶ 108:
 
 
--[[--------------------------< R O M A JN I Z E D _ K E R N >--------------------------------------------------------
 
addAdd kerning when first or last character of romajiromanized text contacts adjacent opening or closing paranthesisparenthesis
 
In this example, without kerning, the romajiromanized characters 'j' and 'V' are italicized so will contact the parentheses
(<i lang=\"ja-Latn\" title=\"Hepburn transliteration\">jV</i>)
 
<ret_string> is the formatted template output (except that the magic string '<5p4n>' has not yet been replaced)
<romajiromanized> is the return from lang_module._transl_xlit() so is not wrapped in parentheses
 
]]
 
local function romaji_kernromanized_kern (ret_string, romajiromanized)
if not romajiromanized or ('' == romajiromanized) then -- if romajiromanized not set
return ret_string; -- then we're done
end
 
romajilocal romanized_text = romajiromanized:gsub ('([%b<>', ''):gsub (%'\'\'+', ''):gsub ('%.%%%+%-%*%?[%[', ''):gsub ('%^%$]%]])', '%%%1'); -- escape luastrip patternHTML characterstags
 
romanized = romanized:gsub ('([%(%)%.%%%+%-%*%?%[%^%$%]])', '%%%1'); -- escape lua pattern characters
local romaji_has_leading_paren = ret_string:match ('%(' .. romaji); -- has a value if (<romaji>; nil else
 
local romaji_has_trailing_paren = ret_string:match (romaji .. '%)'); -- has a value if <romaji>); nil else
local romaji_textromanized_has_leading_paren = romajiret_string:gsubmatch ('%b<>(', ''.. romanized); -- striphas a value if (<romanized>; htmlnil tagselse
local romanized_has_trailing_paren = ret_string:match (romanized .. '%)'); -- has a value if <romanized>); nil else
 
local kern_lead_pattern = '^[jpy]'; -- list of characters that when italicized contact unitalicized leading parenthesis
local kern_tail_pattern = '[dfijkltCEFHIJKMNPR-Z\'"%?!%]]$'; -- list of characters that when italicized contact unitalicized trailing parenthesis
 
local kern_right = '<span style="margin-right:.2em09em">(</span>%1'; -- %1 is <romajiromanized> capture
local kern_left = '%1<span style="margin-left:.2em09em">)</span>'; -- %1 is <romajiromanized> capture
 
if romaji_has_leading_parenromanized_has_leading_paren and romaji_textromanized_text:match (kern_lead_pattern) then
ret_string = ret_string:gsub ('%((' .. romajiromanized .. ')', kern_right); -- replace plain '(' with kerned '('; <romajiromanized> included here to ensure that the correct '(' is kerned
end
if romaji_has_trailing_parenromanized_has_trailing_paren and romaji_textromanized_text:match (kern_tail_pattern) then
ret_string = ret_string:gsub ('(' .. romajiromanized .. ')%)', kern_left); -- replace plain ')' with kerned ')'; <romajiromanized> included here to ensure that the correct ')' is kerned
end
 
Line 92 ⟶ 149:
 
 
--[=[--------------------------< N I HC O NM GM O N >------------------------------------------------------------------
 
Common support for {{nihongo}}
Implement {{nihongo}} using Module:Lang for language and transliteration markup
 
render order: is translated (English), native, romanized
{{Nihongo|<English>|<japanese>|<romaji>|<extra>|<extra2>|lead=yes}}
 
<template> is used to select the appropriate cfg table
<English>, <japanese>, and <romaji> are positional parameters
<English>: rendered as presented; purports to be English translation of <kanji/kana>
<japanese>: Japanese language text using Japanese script; TODO: require?
<romaji>: Hepburn romanization (transliteration); TODO: in Module:Lang/data change tooltip text to 'Hepburn romanization'?
<extra> and <extra2> are positional or named: |extra= and |extra2=; mixing can be problematic
<extra> is rendered as presented preceeded with <comma><space>
<extra2> is rendered as presented preceeded with <space>
|lead=: takes one value 'yes'; renders language name same as {{lang-ja}} but also adds [[Hepburn romanization|Hepburn]]:<space> ahead of the romanization; TODO: in Module:Lang, turnoff tooltip for transl when |lead=yes
 
]=]
 
local function nihongocommon (frame, template)
local lang_module = require ('Module:Lang' .. (frame:getTitle():match ('/sandbox') or '')); -- if this module is the sandbox, use Module:lang/sandbox; Module:Lang else
 
local args = require ('Module:Arguments').getArgs (frame);
local english, japanesenative, romajiromanized, extra, extra2 = args[1], args[2], args[3], args.extra or args[4], args.extra2 or args[5]; -- meaningful names
args[4] = extra or args[4]; -- ensure that extra is 'positional' for use by nihongo_rendererrenderer()
 
local lead = require ('yesModule:yesno' == )(args.lead); -- make boolean
 
if not (japanesenative or romajiromanized) then -- not present, return an error message
return nihongo_errorerror_message ('nihongo'template);
end
if japanesenative then
japanesenative = lead and lang_module._lang_xx_inherit_langx ({['code']='ja', japanesecfg[template].tag, ['templatetext']='nihongo'}) or lang_module._lang ({'ja', japanesenative, ['template']='nihongo'template}); -- add ja script with/without language prefixor
lang_module._lang ({cfg[template].tag, native, ['template']=template}); -- add ja script with/without language prefix
end
if romajiromanized then
romajiromanized = (lead and english and '(cfg[[Hepburn romanization|Hepburn]template].system_link .. ': ') or '') .. lang_module._transl_xlit ({'ja', 'hepburn'cfg[template].system, romajiromanized, ['template']=template}) or nil;
end
 
local formatting = { -- <5p4n> and </5p4n>: place holders for font-weight style spans; akin to stripmarkers, replaced before function returns
{'<5p4n>(%s)', {extra}}, -- 1 - (extra)
{'%s<5p4n>', {romajiromanized}}, -- 2 - romajiromanized
{'%s<5p4n> (%s)', {romajiromanized, extra}}, -- 3 - romajiromanized (extra)
{'<5p4n>(%s)', {japanesenative}}, -- 4 - japanesenative
{'<5p4n>(%s,; %s)', {japanesenative, extra}}, -- 5 - (japanese,native; extra)
{'%s<5p4n> (%s)', {romajiromanized, japanesenative}}, -- 6 - romajiromanized (japanesenative)
{'%s<5p4n> (%s,; %s)', {romajiromanized, japanesenative, extra}}, -- 7 - romajiromanized (japanese,native; extra)
{'%s<5p4n>', {english}}, -- 8 - english
{'%s<5p4n> (%s)', {english, extra}}, -- 9 - english (extra)
{'%s<5p4n> (%s)', {english, romajiromanized}}, -- 10 - english (romajiromanized)
{'%s<5p4n> (%s,; %s)', {english, romajiromanized, extra}}, -- 11 - english (romaji,romanized; extra)
{'%s<5p4n> (%s)', {english, japanesenative}}, -- 12 - english (japanesenative)
{'%s<5p4n> (%s,; %s)', {english, japanesenative, extra}}, -- 13 - english (japanese,native; extra)
{'%s<5p4n> (%s, %s)', {english, japanesenative, romajiromanized}}, -- 14 - english (japanesenative, romajiromanized)
{'%s<5p4n> (%s, %s,; %s)', {english, japanesenative, romajiromanized, extra}}, -- 15 - english (japanesenative, romaji,romanized; extra)
}
 
local ret_string = nihongo_rendererrenderer (args, formatting, extra2)
ret_string = romaji_kernromanized_kern (ret_string, romajiromanized); -- kern romajiromanized text when appropriate
ret_string = ret_string:gsub ('<5p4n>', '<span style="font-weight: normal">'):gsub ('</5p4n>', '</span>'); -- replace 'secret' tags with proper tags
 
Line 155 ⟶ 206:
 
 
--[=[--------------------------< NC IO HM M O N G_ R O 3M A N I Z E D _ N A T I V E _ T R A N S L A T E D >--------------------------------------------------------------
 
Common support for {{nihongo3}}
Implement {{nihongo3}} using Module:Lang for language and transliteration markup
 
render order: is romanized, native, translated (English)
Similar to {{nihongo}} but changes rendered order and does not support |lead=
 
<template> is used to select the appropriate cfg table
{{Nihongo3|<English>|<japanese>|<romaji>|<extra>|<extra2>}}
 
]]
<English>, <japanese>, and <romaji> are positional parameters
<English>: rendered as presented; purports to be English translation of <kanji/kana>
<japanese>: Japanese language text using Japanese script; TODO: require?
<romaji>: Hepburn romanization (transliteration); TODO: in Module:Lang/data change tooltip text to 'Hepburn romanization'?
<extra> and <extra2> are positional or named: |extra= and |extra2=; mixing can be problematic
<extra> is rendered as presented preceeded with <comma><space>
<extra2> is rendered as presented preceeded with <space>
 
local function common_romanized_native_translated (frame, template)
]=]
 
local function nihongo3 (frame)
local lang_module = require ('Module:Lang' .. (frame:getTitle():match ('/sandbox') or '')); -- if this module is the sandbox, use Module:lang/sandbox; Module:Lang else
local args = require ('Module:Arguments').getArgs (frame);
local english, japanesenative, romajiromanized, extra, extra2 = args[1], args[2], args[3], args.extra or args[4], args.extra2 or args[5]; -- meaningful names
args[4] = extra or args[4]; -- ensure that extra is 'positional' for use by nihongo_rendererrenderer()
 
if not (japanesenative or romajiromanized) then -- not present, return an error message
return nihongo_errorerror_message ('nihongo3'template);
end
japanesenative = japanesenative and lang_module._lang ({'ja'cfg[template].tag, japanesenative, ['template']=template}) or nil;
romajiromanized = romajiromanized and lang_module._transl_xlit ({'ja'cfg[template].tag, 'hepburn'cfg[template].system, romajiromanized, ['template']=template}) or nil;
local formatting = { -- <5p4n> and </5p4n>: place holders for font-weight style spans; akin to stripmarkers, replaced before function returns
{'<5p4n>(%s)', {extra}}, -- 1 - (extra)
{'%s<5p4n>', {romajiromanized}}, -- 2 - romajiromanized
{'%s<5p4n> (%s)', {romajiromanized, extra}}, -- 3 - romajiromanized (extra)
{'<5p4n>(%s)', {japanesenative}}, -- 4 - japanesenative
{'<5p4n>(%s,; %s)', {japanesenative, extra}}, -- 5 - (japanese,native; extra)
{'%s<5p4n> (%s)', {romajiromanized, japanesenative}}, -- 6 - romajiromanized (japanesenative)
{'%s<5p4n> (%s,; %s)', {romajiromanized, japanesenative, extra}}, -- 7 - romajiromanized (japanese,native; extra)
{'%s<5p4n>', {english}}, -- 8 - english
{'%s<5p4n> (%s)', {english, extra}}, -- 9 - english (extra)
{'%s<5p4n> (%s)', {romajiromanized, english}}, -- 10 - romajiromanized (english)
{'%s<5p4n> (%s,; %s)', {romajiromanized, english, extra}}, -- 11 - romajiromanized (english,; extra)
{'%s<5p4n> (%s)', {english, japanesenative}}, -- 12 - english (japanesenative)
{'%s<5p4n> (%s,; %s)', {english, japanesenative, extra}}, -- 13 - english (japanese,native; extra)
{'%s<5p4n> (%s, %s)', {romajiromanized, japanesenative, english}}, -- 14 - romajiromanized (japanesenative, english)
{'%s<5p4n> (%s, %s,; %s)', {romajiromanized, japanesenative, english, extra}}, -- 15 - romajiromanized (japanesenative, english,; extra)
}
 
local ret_string = nihongo_rendererrenderer (args, formatting, extra2)
ret_string = ret_string:gsub ('<5p4n>', '<span style="font-weight: normal">'):gsub ('</5p4n>', '</span>'); -- replace 'secret' tags with proper tags
return ret_string; -- because gsub returns the number of replacements made as second return value
end
 
--[=[--------------------------< C O M M O N _ N A T I HV E _ R O M A N GI OZ E D K_ T R A N S L A T E D >--------------------------------------------------------------
 
Common support for {{nihongo krt}}
Implement {{nihongo krt}} using Module:Lang for language and transliteration markup
 
render order: is native, romanized, translated (English)
Similar to {{nihongo}} but changes rendered order and does not support |lead=
 
<template> is used to select the appropriate cfg table
{{Nihongo krt|<English>|<japanese>|<romaji>|<extra>|<extra2>}}
 
]]
<English>, <japanese>, and <romaji> are positional parameters
<English>: rendered as presented; purports to be English translation of <kanji/kana>
<japanese>: Japanese language text using Japanese script; TODO: require?
<romaji>: Hepburn romanization (transliteration); TODO: in Module:Lang/data change tooltip text to 'Hepburn romanization'?
<extra> and <extra2> are positional or named: |extra= and |extra2=; mixing can be problematic
<extra> is rendered as presented preceeded with <comma><space>
<extra2> is rendered as presented preceeded with <space>
 
]=]
 
local function nihongokrtcommon_native_romanized_translated (frame, template)
local lang_module = require ('Module:Lang' .. (frame:getTitle():match ('/sandbox') or '')); -- if this module is the sandbox, use Module:lang/sandbox; Module:Lang else
local args = require ('Module:Arguments').getArgs (frame);
local english, japanesenative, romajiromanized, extra, extra2 = args[1], args[2], args[3], args.extra or args[4], args.extra2 or args[5]; -- meaningful names
args[4] = extra or args[4]; -- ensure that extra is 'positional' for use by nihongo_rendererrenderer()
 
if not (japanesenative or romajiromanized) then -- not present, return an error message
return nihongo_errorerror_message ('nihongo krt'template);
end
japanesenative = japanesenative and lang_module._lang ({'ja'cfg[template].tag, japanesenative, ['template']=template}) or nil;
romajiromanized = romajiromanized and lang_module._transl_xlit ({'ja'cfg[template].tag, 'hepburn'cfg[template].system, romajiromanized, ['template']=template}) or nil;
local formatting = { -- <5p4n> and </5p4n>: place holders for font-weight style spans; akin to stripmarkers, replaced before function returns
{'<5p4n>(%s)', {extra}}, -- 1 - (extra)
{'%s<5p4n>', {romajiromanized}}, -- 2 - romajiromanized
{'%s<5p4n> (%s)', {romajiromanized, extra}}, -- 3 - romajiromanized (extra)
{'<5p4n>%s', {japanesenative}}, -- 4 - japanesenative
{'<5p4n>%s (%s)', {japanesenative, extra}}, -- 5 - japanesenative (extra)
{'<5p4n>%s (%s)', {japanesenative, romajiromanized}}, -- 6 - japanesenative (romajiromanized)
{'<5p4n>%s (%s,; %s)', {japanesenative, romajiromanized, extra}}, -- 7 - japanesenative (romaji,romanized; extra)
{'%s<5p4n>', {english}}, -- 8 - english
{'%s<5p4n> (%s)', {english, extra}}, -- 9 - english (extra)
{'%s<5p4n> (%s)', {romajiromanized, english}}, -- 10 - romajiromanized (english)
{'%s<5p4n> (%s,; %s)', {romajiromanized, english, extra}}, -- 11 - romajiromanized (english,; extra)
{'<5p4n>%s (%s)', {japanesenative, english}}, -- 12 - japanesenative (english)
{'<5p4n>%s (%s,; %s)', {japanesenative, english, extra}}, -- 13 - japanesenative (english,; extra)
{'<5p4n>%s (%s, %s)', {japanesenative, romajiromanized, english}}, -- 14 - japanesenative (romajiromanized, english)
{'<5p4n>%s (%s, %s,; %s)', {japanesenative, romajiromanized, english, extra}}, -- 15 - japanesenative (romajiromanized, english,; extra)
}
 
local ret_string = nihongo_rendererrenderer (args, formatting, extra2)
ret_string = romaji_kernromanized_kern (ret_string, romajiromanized); -- kern romajiromanized text when appropriate
ret_string = ret_string:gsub ('<5p4n>', '<span style="font-weight: normal">'):gsub ('</5p4n>', '</span>'); -- replace 'secret' tags with proper tags
return ret_string; -- because gsub returns the number of replacements made as second return value
end
 
--[=[-------------------------< N I H O N G O _ F O O T >------------------------------------------------------
 
--[[--------------------------< C O M M O N _ F O O T >--------------------------------------------------------
Implement {{nihongo_foot}} using Module:Lang for language and transliteration markup
 
Common support for {{nihongo foot}}
{{Nihongo foot|<English>|<japanese>|<romaji>|<extra>|<extra2>|<post>|lead=yes|group}}
 
render order: is English<ref>native, romanized</ref>
<English>, <japanese>, and <romaji> are positional parameters
<English>: rendered as presented; purports to be English translation of <kanji/kana>
<japanese>: Japanese language text using Japanese script; TODO: require?
<romaji>: Hepburn romanization (transliteration); TODO: in Module:Lang/data change tooltip text to 'Hepburn romanization'?
<extra> and <extra2> are positional or named: |extra= and |extra2=; mixing can be problematic
<extra> is rendered as presented preceeded with <comma><space>
<extra2> is rendered as presented preceeded with <space>
<post> is positional or named: |post= is a postscript character preceding the <ref>..</ref> tag (after <English>)
|lead=: takes one value 'yes'; renders language name same as {{lang-ja}} but also adds [[Hepburn romanization|Hepburn]]:<space> ahead of the romanization;
TODO: in Module:Lang, turnoff tooltip for transl when |lead=yes
in the live template |lead= also adds the Help:Installing Japanese character sets link; this is not supported in this code (nihongo nor nihongo3 have this support)
|group=: the group attribute in <ref group="..."> and in {{reflist}}
 
<template> is used to select the appropriate cfg table
]=]
 
]]
local function nihongo_foot (frame)
 
local function common_foot (frame, template)
local lang_module = require ('Module:Lang' .. (frame:getTitle():match ('/sandbox') or '')); -- if this module is the sandbox, use Module:lang/sandbox; Module:Lang else
local args = require ('Module:Arguments').getArgs (frame);
local english, japanesenative, romajiromanized, extra, extra2 = args[1], args[2], args[3], args.extra or args[4], args.extra2 or args[5]; -- meaningful names
args[4] = extra or args[4]; -- ensure that extra is 'positional' for use by nihongo_rendererrenderer()
local post = args[6] or args.post;
local group = args.group;
local ref_name = args.ref_name
local lead = require ('yesModule:yesno' == )(args.lead); -- make boolean
 
if not (japanesenative or romajiromanized) then -- not present, return an error message
return nihongo_errorerror_message ('nihongo foot'template);
end
if japanesenative then
japanesenative = lead and lang_module._lang_xx_inherit_langx ({['code']=cfg[template].tag, ['jatext']=native, japanese}) or lang_module._lang ({['jatemplate', japanese]=template}); -- add ja script with/without language prefixor
lang_module._lang ({cfg[template].tag, native, ['template']=template}); -- add ja script with/without language prefix
end
if romajiromanized then
romajiromanized = (lead and '(cfg[[Hepburn romanization|Hepburn]template].system_link .. ': ') or '') .. lang_module._transl_xlit ({'ja', 'hepburn'cfg[template].system, romajiromanized, ['template']=template}) or nil;
end
local formatting = {
{'%s', {extra}}, -- 1 - extra
{'%s', {romajiromanized}}, -- 2 - romajiromanized
{'%s,; %s', {romajiromanized, extra}}, -- 3 - romaji,romanized; extra
{'%s', {japanesenative}}, -- 4 - japanesenative
{'%s,; %s', {japanesenative, extra}}, -- 5 - japanese,native; extra
{'%s, %s', {japanesenative, romajiromanized}}, -- 6 - japanesenative romajiromanized
{'%s, %s,; %s', {japanesenative, romajiromanized, extra}}, -- 7 - japanesenative romaji,romanized; extra
-- from here english is used in the mapping but not rendered by nihongo_rendererrenderer so not included in the table
{'', {''}}, -- 8 - english
{'%s', {extra}}, -- 9 - extra
{'%s', {romajiromanized}}, -- 10 - romajiromanized
{'%s,; %s', {romajiromanized, extra}}, -- 11 - romaji,romanized; extra
{'%s', {japanesenative}}, -- 12 - japanesenative
{'%s,; %s', {japanesenative, extra}}, -- 13 - japanese,native; extra
{'%s, %s', {japanesenative, romajiromanized}}, -- 14 - japanesenative romajiromanized
{'%s, %s,; %s', {japanesenative, romajiromanized, extra}}, -- 15 - japanesenative romaji,romanized; extra
}
 
Line 333 ⟶ 359:
end
 
if japanesenative or romajiromanized or extra or extra2 then -- no ref tag when none of these are set (it would be empty)
local content = nihongo_rendererrenderer (args, formatting, extra2);
content = content:gsub ('<5p4n>', ''):gsub ('</5p4n>$', '', 1); -- strip secret <5p4n> and </5p4n> tags added by nihongo_rendererrenderer(); spans not used by this template
 
if english:match ('\'\'+$') then -- if <english> is italic, bold, or both
local text = english:gsub ('%b<>', ''):gsub ('\'\'+', ''):gsub ('%[%[', ''):gsub ('%]%]', ''); -- strip markup
if text:match ('[dfijkltCEFHIJKMNPR-Z\'"%?!%]]$') then -- when <english> ends with one of these characters
english = '<span style="margin-right:.09em">' .. english .. '</span>'; -- add kerning
end
end
 
return english .. frame:extensionTag ({name='ref', args={group=group, name=ref_name}, content=content}); -- english with attached reference tag
Line 341 ⟶ 374:
return english; -- nothing to be inside ref tag so just return english
end
end
 
 
--[=[-------------------------< N I H O N G O >----------------------------------------------------------------
 
Implement {{nihongo}} using Module:Lang for language and transliteration markup
 
{{Nihongo|<English>|<japanese>|<romaji>|<extra>|<extra2>|lead=yes}}
 
<English>, <japanese>, and <romaji> are positional parameters
<English>: rendered as presented; purports to be English translation of <kanji/kana>
<japanese>: Japanese language text using Japanese script; TODO: require?
<romaji>: Hepburn romanization (transliteration); TODO: in Module:Lang/data change tooltip text to 'Hepburn romanization'?
<extra> and <extra2> are positional or named: |extra= and |extra2=; mixing can be problematic
<extra> is rendered as presented preceeded with <comma><space>
<extra2> is rendered as presented preceeded with <space>
|lead=: takes one value 'yes'; renders language name same as {{langx|ja}} but also adds [[Hepburn romanization|Hepburn]]:<space> ahead of the romanization; TODO: in Module:Lang, turnoff tooltip for transl when |lead=yes
 
]=]
 
local function nihongo (frame)
return common (frame, 'nihongo')
end
 
 
--[=[-------------------------< N I H O N G O 3 >--------------------------------------------------------------
 
Implement {{nihongo3}} using Module:Lang for language and transliteration markup
 
Similar to {{nihongo}} but changes rendered order and does not support |lead=
 
{{Nihongo3|<English>|<japanese>|<romaji>|<extra>|<extra2>}}
 
<English>, <japanese>, and <romaji> are positional parameters
<English>: rendered as presented; purports to be English translation of <kanji/kana>
<japanese>: Japanese language text using Japanese script; TODO: require?
<romaji>: Hepburn romanization (transliteration); TODO: in Module:Lang/data change tooltip text to 'Hepburn romanization'?
<extra> and <extra2> are positional or named: |extra= and |extra2=; mixing can be problematic
<extra> is rendered as presented preceded with <comma><space>
<extra2> is rendered as presented preceded with <space>
 
]=]
 
local function nihongo3 (frame)
return common_romanized_native_translated (frame, 'nihongo3')
end
 
 
--[=[-------------------------< N I H O N G O _ K R T >--------------------------------------------------------
 
Implement {{nihongo krt}} using Module:Lang for language and transliteration markup
 
Similar to {{nihongo}} but changes rendered order and does not support |lead=
 
{{Nihongo krt|<English>|<japanese>|<romaji>|<extra>|<extra2>}}
 
<English>, <japanese>, and <romaji> are positional parameters
<English>: rendered as presented; purports to be English translation of <kanji/kana>
<japanese>: Japanese language text using Japanese script; TODO: require?
<romaji>: Hepburn romanization (transliteration); TODO: in Module:Lang/data change tooltip text to 'Hepburn romanization'?
<extra> and <extra2> are positional or named: |extra= and |extra2=; mixing can be problematic
<extra> is rendered as presented preceded with <comma><space>
<extra2> is rendered as presented preceded with <space>
 
]=]
 
local function nihongo_krt (frame)
return common_native_romanized_translated (frame, 'nihongo krt')
end
 
 
--[=[-------------------------< N I H O N G O _ F O O T >------------------------------------------------------
 
Implement {{nihongo_foot}} using Module:Lang for language and transliteration markup
 
{{Nihongo foot|<English>|<japanese>|<romaji>|<extra>|<extra2>|<post>|lead=yes|group}}
 
<English>, <japanese>, and <romaji> are positional parameters
<English>: rendered as presented; purports to be English translation of <kanji/kana>
<japanese>: Japanese language text using Japanese script; TODO: require?
<romaji>: Hepburn romanization (transliteration); TODO: in Module:Lang/data change tooltip text to 'Hepburn romanization'?
<extra> and <extra2> are positional or named: |extra= and |extra2=; mixing can be problematic
<extra> is rendered as presented preceded with <comma><space>
<extra2> is rendered as presented preceded with <space>
<post> is positional or named: |post= is a postscript character preceding the <ref>..</ref> tag (after <English>)
|lead=: takes one value 'yes'; renders language name same as {{langx|ja}} but also adds [[Hepburn romanization|Hepburn]]:<space> ahead of the romanization;
TODO: in Module:Lang, turnoff tooltip for transl when |lead=yes
in the live template |lead= also adds the Help:Installing Japanese character sets link; this is not supported in this code (nihongo nor nihongo3 have this support)
|group=: the group attribute in <ref group="..."> and in {{reflist}}
 
]=]
 
local function nihongo_foot (frame)
return common_foot (frame, 'nihongo foot')
end
 
Line 350 ⟶ 477:
nihongo = nihongo,
nihongo3 = nihongo3,
nihongo_krt = nihongo_krt,
nihongokrt = nihongokrt,
nihongo_foot = nihongo_foot,
}