વિભાગ:Convert/text

-- Text used by Module:Convert for enwiki.
-- This is a separate module to simplify translation for use on another wiki.
-- See en:Template:Convert/Transwiki guide if copying to another wiki.

-- Some units accept an SI prefix before the unit code, such as "kg" for kilogram.
local SIprefixes = {
 -- The prefix field is what the prefix should be, if different from the prefix used.
 ['Y'] = { exponent = 24, name = 'yotta', },
 ['Z'] = { exponent = 21, name = 'zetta', },
 ['E'] = { exponent = 18, name = 'exa' , },
 ['P'] = { exponent = 15, name = 'peta' , },
 ['T'] = { exponent = 12, name = 'tera' , },
 ['G'] = { exponent = 9, name = 'giga' , },
 ['M'] = { exponent = 6, name = 'mega' , },
 ['k'] = { exponent = 3, name = 'kilo' , },
 ['h'] = { exponent = 2, name = 'hecto', },
 ['da']= { exponent = 1, name = 'deca' , name\_us = 'deka' },
 ['d'] = { exponent = -1, name = 'deci' , },
 ['c'] = { exponent = -2, name = 'centi', },
 ['m'] = { exponent = -3, name = 'milli', },
 ['μ'] = { exponent = -6, name = 'micro', }, -- key = 'GREEK SMALL LETTER MU' (U+03BC) utf-8 CE BC
 ['µ'] = { exponent = -6, name = 'micro', prefix = 'μ' }, -- key = 'MICRO SIGN' (U+00B5) utf-8 C2 B5
 ['u'] = { exponent = -6, name = 'micro', prefix = 'μ' }, -- not an SI prefix, but allow for people typing this
 ['n'] = { exponent = -9, name = 'nano' , },
 ['p'] = { exponent =-12, name = 'pico' , },
 ['f'] = { exponent =-15, name = 'femto', },
 ['a'] = { exponent =-18, name = 'atto' , },
 ['z'] = { exponent =-21, name = 'zepto', },
 ['y'] = { exponent =-24, name = 'yocto', },
}

-- Some units can be qualified with one of the following prefixes, when linked.
local customary\_units = {
 { "US", link = "United States customary units" },
 { "U.S.", link = "United States customary units" },
 { "imperial", link = "Imperial units" },
 { "imp", link = "Imperial units" },
}

-- Names when using engineering notation (a prefix of "eN" where N is a number; example "e6km").
-- key = { "name", link = "article title", exponent = numeric\_key\_value }
-- If lk=on and link is defined, the name of the number will appear as a link.
local eng\_scales = {
 ["3"] = { "thousand", exponent = 3 },
 ["6"] = { "million", exponent = 6 },
 ["9"] = { "billion", link = "1000000000 (number)", exponent = 9 },
 ["12"] = { "trillion", link = "1000000000000 (number)", exponent = 12 },
 ["15"] = { "quadrillion", link = "1000000000000000 (number)", exponent = 15 },
}

local all\_categories = {
 unit = "",
 option = "",
 warning = *,*
 tracking = *,*
}

-- For some error messages, the following puts the wanted style around
-- each unit code marked like '...%{ft%}...'.
local unitcode\_regex = '%%([{}])'
local unitcode\_replace = { ['{'] = '"', ['}'] = '"' } -- no longer need the more elaborate substitute used before 2013-09-28

-- All messages that may be displayed if a problem occurs.
local all\_messages = {
 -- Message format string: $1=title, $2=text, $3=category, $4=anchor.
 -- Each displayed message starts with "Convert:" so can easily locate by searching article.
 cvt\_format = '[*convert: $2*]$3',
 cvt\_format2 = '$2$3',
 cvt\_format\_preview = '**Error in convert: $1 (help)**$3',
 -- Each of following messages is a table:
 -- { [1] = 'title', -- mouseover title text
 -- [2] = 'text', -- link text displayed in article
 -- [3] = 'category key', -- key to lookup category in all\_categories
 -- [4] = 'anchor', -- anchor for link to relevant section on help page
 -- regex = gsub\_regex,
 -- replace = gsub\_table,
 -- } Mouseover title text Link text CatKey Anchor
 cvt\_bad\_input = { 'input "$1" must be a number and unit' , 'invalid input' , 'option', 'invalid\_input' },
 cvt\_bad\_num = { 'Value "$1" must be a number' , 'invalid number' , 'option', 'invalid\_number' },
 cvt\_big\_prec = { 'Precision "$1" is too large' , 'precision too large' , 'option', 'precision\_too\_large' },
 cvt\_invalid\_num = { 'Number has overflowed' , 'number overflow' , 'option', 'number\_overflow' },
 cvt\_no\_num = { 'Needs the number to be converted' , 'needs a number' , 'option', 'needs\_number' },
 cvt\_no\_num2 = { 'Needs another number for a range' , 'needs another number', 'option', 'needs\_another\_number' },
 cvt\_bad\_frac = { '"$1" needs an integer above 1' , 'invalid fraction' , 'option', 'invalid\_fraction' },
 cvt\_bad\_prec = { 'Precision "$1" must be an integer' , 'invalid precision' , 'option', 'invalid\_precision' },
 cvt\_bad\_sigfig = { '"$1" needs a positive integer' , 'invalid sigfig' , 'option', 'invalid\_sigfig' },
 cvt\_empty\_option = { 'Ignored empty option "$1"' , 'empty option' , 'option', 'empty\_option' },
 cvt\_deprecated = { 'Option "$1" is deprecated' , '\*' , 'option', 'deprecated\_option', format = 'cvt\_format2', nowarn = true },
 cvt\_no\_spell = { 'Spelling is not available' , 'bug, ask for help' , 'option', 'ask\_for\_help' },
 cvt\_unknown\_option = { 'Ignored invalid option "$1"' , 'invalid option' , 'option', 'invalid\_option' },
 cvt\_wd\_fail = { 'Unable to access Wikidata' , 'wikidata problem' , 'option', 'wikidata\_problem' },
 cvt\_bad\_default = { 'Unit "$1" has an invalid default' , 'bug, ask for help' , 'unit' , 'ask\_for\_help' },
 cvt\_bad\_unit = { 'Unit "$1" is invalid here' , 'unit invalid here' , 'unit' , 'unit\_invalid\_here' },
 cvt\_no\_default = { 'Unit "$1" has no default output unit' , 'bug, ask for help' , 'unit' , 'ask\_for\_help' },
 cvt\_no\_unit = { 'Needs name of unit' , 'needs unit name' , 'unit' , 'needs\_unit\_name' },
 cvt\_unknown = { 'Unit name "$1" is not known' , 'unknown unit' , 'unit' , 'unknown\_unit' },
 cvt\_should\_be = { '$1' , 'ambiguous unit' , 'unit' , 'ambiguous\_unit', regex = unitcode\_regex, replace = unitcode\_replace },
 cvt\_mismatch = { 'Cannot convert "$1" to "$2"' , 'unit mismatch' , 'unit' , 'unit\_mismatch' },
 cvt\_bug\_convert = { 'Bug: Cannot convert between specified units', 'bug, ask for help' , 'unit' , 'ask\_for\_help' },
 cvt\_lookup = { 'Unit "$1" is incorrectly defined' , 'bug, ask for help' , 'unit' , 'ask\_for\_help' },
}

-- Text to join input value/unit with output value/unit.
local disp\_joins = {
 -- [1]=before output, [2]=after output, [3]=between outputs in a combination; default "; "
 -- [wantname] gives default abbr=off
 ["or"] = { " or " , "" , " or ", wantname = true },
 ["sqbr-sp"] = { " [" , "]" },
 ["sqbr-nbsp"] = { " [" , "]" },
 ["comma"] = { ", " , "" , ", " },
 ["slash-sp"] = { " / " , "" , wantname = true },
 ["slash-nbsp"] = { " / ", "" , wantname = true },
 ["slash-nosp"] = { "/" , "" , wantname = true },
 ["b"] = { " (" , ")" },
 ["(or)"] = { " (" , ")", " or " },
 ["br"] = { "
" , "" , wantname = true },
 ["br()"] = { "
(" , ")", wantname = true },
}

-- Text to separate values in a range.
local range\_types = {
 -- Specifying a table requires either:
 -- \* "off" and "on" values (for "abbr=off" and "abbr=on"), or
 -- \* "input" and "output" values (for LHS and RHS);
 -- other fields are optional.
 -- When "adj=on|abbr=off" applies, spaces in range text are replaced with hyphens.
 -- With "exception = true", that also occurs with "adj=on|abbr=on".
 -- If "adj" is defined here, that text (unchanged) is used with "adj=on".
 ["+"] = " + ",
 [","] = ", ",
 [", and"] = ", and ",
 [", or"] = ", or ",
 ["by"] = " by ",
 ["-"] = "–",
 ["to about"] = " to about ",
 ["and"] = { off = " and ", on = " and ", exception = true },
 ["and(-)"] = { input = " and ", output = "–" },
 ["or"] = { off = " or " , on = " or " , exception = true },
 ["to"] = { off = " to " , on = " to " , exception = true },
 ["to(-)"] = { input = " to ", output = "–" },
 ["+/-"] = { off = " ± ", on = " ± ", adj = " ± ", is\_range\_change = true },
 ["by(x)"] = { input = " by ", output = " × ", out\_range\_x = true },
 ["x"] = { off = " by ", on = " × ", abbr\_range\_x = true },
 ["xx"] = " × ",
 ["\*"] = "×",
 ["/"] = " / ", -- for a table of high/low temperatures with **Script error: No such module "convert".**
}

local range\_aliases = {
 -- ["alternative name for a range"] = "standard range name"
 ["–"] = "-",
 ["–"] = "-",
 ["×"] = "x",
 ["×"] = "x",
 ["±"] = "+/-",
 ["±"] = "+/-",
}

-- Convert accepts range text delimited with whitespace, for example, **Script error: No such module "convert".**.
-- In addition, the following "words" are accepted without spaces, for example, **Script error: No such module "convert".**.
-- Words must be in correct order for searching, for example, 'x' after 'xx'.
local range\_words = { '-', '–', 'xx', 'x', '\*' }

local ranges = {
 types = range\_types,
 aliases = range\_aliases,
 words = range\_words,
}

-- Valid option names.
local en\_option\_name = {
 -- ["local text for option name"] = "en name used in this module"
 ["$"] = "$",
 ["abbr"] = "abbr",
 ["adj"] = "adj",
 ["comma"] = "comma",
 ["debug"] = "debug",
 ["disp"] = "disp",
 ["frac"] = "frac",
 ["input"] = "input",
 ["lang"] = "lang",
 ["lk"] = "lk",
 ["order"] = "order",
 ["qid"] = "qid",
 ["qual"] = "qual",
 ["qualifier"] = "qual",
 ["round"] = "round",
 ["sigfig"] = "sigfig",
 ["sing"] = "adj", -- "sing" is an old alias for "adj"
 ["sortable"] = "sortable",
 ["sp"] = "sp",
 ["spell"] = "spell",
 ["stylein"] = "stylein",
 ["styleout"] = "styleout",
 ["tracking"] = "tracking",
}

-- Valid option values.
-- Convention: parms.opt\_xxx refers to an option that is set here
-- (not intended to be set by the template which invokes this module).
-- Example: At enwiki, "abbr" includes:
-- ["comma"] = "opt\_nocomma"
-- As a result, if the template uses abbr=comma, Module:Convert sets:
-- parms["opt\_nocomma"] = true
-- parms["abbr"] = nil
-- Therefore parms.abbr will be nil, or will have one of the listed values
-- that do not start with "opt\_".
-- An option value of form "xxx?" is the same as "xxx" but shows the input as deprecated.
local en\_option\_value = {
 -- $=x is handled as a special case: x should be a currency symbol that will be used instead of "$"
 ["abbr"] = {
 -- ["local text for option value"] = "en value used in this module"
 ["def"] = "", -- ignored (some wrapper templates call convert with "abbr=def" to mean "default abbreviation")
 ["h"] = "on", -- abbr=on + use "h" for hand unit (default)
 ["hh"] = "opt\_hand\_hh", -- abbr=on + use "hh" for hand unit
 ["in"] = "in", -- use symbol for LHS unit
 ["none"] = "off", -- old name for "off"
 ["off"] = "off", -- use name for all units
 ["on"] = "on", -- use symbol for all units
 ["out"] = "out", -- use symbol for RHS unit (default)
 ["unit"] = "unit", -- abbr=on but abbreviate units only: e6km → million km (not ×10⁶ km)
 ["values"] = "opt\_values", -- show only input and output numbers, not units
 ["~"] = "opt\_also\_symbol", -- show input unit symbol as well as name
 },
 ["adj"] = {
 ["mid"] = "opt\_adjectival, opt\_adj\_mid", -- adj=on with user-specified text after input unit (between input and output)
 ["off"] = "", -- ignored (off is the default)
 ["on"] = "opt\_adjectival", -- unit name is singular and hyphenated
 ["pre"] = "opt\_one\_preunit", -- user-specified text before input unit
 ["ri0"] = "opt\_ri=0", -- round input with precision = 0
 ["ri1"] = "opt\_ri=1", -- round input with precision = 1
 ["ri2"] = "opt\_ri=2", -- round input with precision = 2
 ["ri3"] = "opt\_ri=3", -- round input with precision = 3
 },
 ["comma"] = {
 ["5"] = "opt\_comma5", -- only use numsep grouping if 5 or more digits
 ["gaps"] = "opt\_gaps", -- use gaps, not numsep, to separate groups of digits
 ["gaps3"] = "opt\_gaps, opt\_gaps3", -- group only in threes rather than default of no gap before a single digit after decimal mark
 ["off"] = "opt\_nocomma", -- no numsep in input or output numbers
 },
 ["debug"] = {
 ["yes"] = "opt\_sortable\_debug", -- make the normally hidden sort key visible
 },
 ["disp"] = {
 ["5"] = "opt\_round=5?", -- round output value to nearest 5
 ["b"] = "b", -- join: '(...)'
 ["(or)"] = "(or)", -- join: '(...)' with 'or' between outputs in a combination
 ["br"] = "br", -- join: '
'
 ["br()"] = "br()", -- join: '
(...)'
 ["comma"] = "comma", -- join: ','
 ["flip"] = "opt\_flip", -- reverse order of input/output
 ["number"] = "opt\_output\_number\_only", -- display output value (not input, and not output symbol/name)
 ["or"] = "or", -- join: 'or'
 ["out"] = "opt\_output\_only",
 ["output number only"] = "opt\_output\_number\_only",
 ["output only"] = "opt\_output\_only",
 ["preunit"] = "opt\_two\_preunits", -- user-specified text before input and output units
 ["sqbr"] = "sqbr", -- join: '[...]'
 ["table"] = "opt\_table", -- output is suitable for a table cell with align="right"
 ["tablecen"] = "opt\_tablecen", -- output is suitable for a table cell with align="center"
 ["unit"] = "opt\_input\_unit\_only", -- display input symbol/name (not output, and not input value)
 ["unit or text"] = "opt\_input\_unit\_only, opt\_ignore\_error", -- display input symbol/name, or given unit code if not known
 ["unit2"] = "opt\_output\_unit\_only",
 ["x"] = "x", -- join: <first>...<second> (user-specified text)
 },
 -- frac=x is handled as a special case: x must be an integer (possibly in local language) = 2 or more
 -- input=x is handled as a special case: x should be <value><space><unitcode> or <wikidata-property-id>
 ["lang"] = { -- language for output digits (both en and local digits are always accepted for input)
 ["en"] = "opt\_lang\_en", -- use en digits for numbers, regardless of local language
 ["local"] = "opt\_lang\_local", -- use local digits for numbers (default, although config can change default to en)
 },
 ["lk"] = {
 ["in"] = "in", -- link LHS unit name or symbol
 ["off"] = "off", -- do not link: same as default except for hand unit
 ["on"] = "on", -- link all unit names or symbols (but not twice for the same unit)
 ["out"] = "out", -- link RHS unit name or symbol
 },
 ["order"] = {
 ["flip"] = "opt\_flip", -- reverse order of input/output
 ["out"] = "opt\_order\_out", -- do not show input; instead, use order in output combination, with the first output shown as the input
 },
 -- qid=x is handled as a special case: x should be a Wikidata Q item identifier.
 -- qual=x is handled as a special case: x should be a Wikidata Q item identifier.
 ["round"] = {
 ["0.5"] = "opt\_round=0.5", -- round output value to nearest 0.5
 ["5"] = "opt\_round=5", -- round output value to nearest 5
 ["10"] = "opt\_round=10", -- round output value to nearest 10 (same as but clearer than "|-1")
 ["25"] = "opt\_round=25", -- round output value to nearest 25
 ["50"] = "opt\_round=50", -- round output value to nearest 50
 ["each"] = "opt\_round\_each", -- using default precision in a range, round each output separately (default uses highest precision of each item in range)
 },
 -- sigfig=x is handled as a special case: x must be an integer (possibly in local language) = 1 or more
 ["sortable"] = {
 ["off"] = "", -- ignored (off is the default)
 ["on"] = "opt\_sortable\_on", -- output sort key for use in a sortable table, based on value from converting to a standard base unit
 },
 ["sp"] = {
 ["us"] = "opt\_sp\_us", -- use U.S. spelling (like "meter" instead of default "metre")
 },
 ["spell"] = { -- only English spelling is supported; not scientific notation; only some fractions
 ["in"] = "opt\_spell\_in", -- spell input value in words
 ["In"] = "opt\_spell\_in, opt\_spell\_upper", -- spell input value in words with first letter uppercase
 ["on"] = "opt\_spell\_in, opt\_spell\_out", -- spell input and output values in words
 ["On"] = "opt\_spell\_in, opt\_spell\_out, opt\_spell\_upper", -- same, with first letter of first word in result uppercase
 },
 -- stylein=x is handled as a special case: x can be any text
 -- styleout=x is handled as a special case: x can be any text
 -- tracking=x is handled as a special case: x can be any text
}

return {
 SIprefixes = SIprefixes,
 all\_categories = all\_categories,
 all\_messages = all\_messages,
 currency = { ['$'] = true, ['£'] = true, ['€'] = true, ['₱'] = true, ['₽'] = true, ['¥'] = true },
 customary\_units = customary\_units,
 disp\_joins = disp\_joins,
 en\_option\_name = en\_option\_name,
 en\_option\_value = en\_option\_value,
 eng\_scales = eng\_scales,
 ranges = ranges,
}