Help:Lua/mw.language
mw.language提供了与语言有关的相关功能。请使用本页的静态方法获取一个语言对象,然后才能调用实例方法。
静态方法[编辑源代码]
fetchLanguageName[编辑源代码]
mw.language.fetchLanguageName(code, inLanguage)
返回给定的语言代码的完整语言名称。如有inLanguage
的值,则是code
的这个语言在inLanguage
中的语言名称,否则表示该语言的本地名称。例如:
- 用俄语表示俄语:
mw.language.fetchLanguageName('ru')
→ русский - 用法语表示俄语:
mw.language.fetchLanguageName('ru', 'fr')
→ russe - 用中文表示俄语:
mw.language.fetchLanguageName('ru', 'zh')
→ 俄语
fetchLanguageNames[编辑源代码]
mw.language.fetchLanguageName(inLanguage, include)
获取MediaWiki已知的语言列表,返回将语言代码映射到语言名称的表。
默认返回的名称是语言自称,但如果有inLanguage
则返回那个语言下的所有名称。
默认只会返回MediaWiki已知的语言名称,若include
为'all'
则表示所有可用的语言,'mwfile'
表示包括拥有在MediaWiki核心或启用的扩展包括的自定义消息的语言。默认为'mw'
。
例如,mw.language.fetchLanguageNames()
返回如下内容:
{
["aa"] = "Qafár af",
["ab"] = "Аҧсшәа",
["abs"] = "bahasa ambon",
["ace"] = "Acèh",
...
["zh-sg"] = "中文(新加坡)",
["zh-tw"] = "中文(台灣)",
["zh-yue"] = "粵語",
["zu"] = "isiZulu",
}
mw.language.fetchLanguageNames('ja')
则会返回如下内容:
{
["aa"] = "アファル語",
["ab"] = "アブハズ語",
["abs"] = "Ambonese Malay",
["ace"] = "アチェ語",
...
["zh-tw"] = "中国語(台湾)",
["zh-yue"] = "広東語",
["zu"] = "ズールー語",
}
getContentLanguage[编辑源代码]
mw.language.getContentLanguage()
或mw.getContentLanguage()
返回wiki当前的默认语言的语言对象。
getFallbacksFor[编辑源代码]
mw.language.getFallbacksFor(code)
返回MediaWiki针对指定语言代码的备选语言代码列表。例如:
mw.language.getFallbacksFor('zh')
返回{'zh-hans', 'en'}
mw.language.getFallbacksFor('ja')
返回{'en'}
mw.language.getFallbacksFor('en')
返回{}
isKnownLanguageTag[编辑源代码]
mw.language.isKnownLanguageTag(code)
若语言代码为MediaWiki已知的语言,返回true。语言代码“已知”意味着是个“有效的内置代码”(例如,对于mw.language.isValidBuiltInCode
返回true),对于mw.language.fetchLanguageName
返回一个非空字符串。
例如,mw.language.isKnownLanguageTag('zh')
返回true,mw.language.isKnownLanguageTag('zh-shanghai')
返回false。
isSupportedLanguage[编辑源代码]
mw.language.isSupportedLanguage(code)
检查MediaWiki的语言代码内是否有任何本地化可用。
语言“受支持”意味着是个“有效的”代码(对于mw.language.isValidCode
返回true),不包含任何大写字母,并在MediaWiki的当前运行版本中有个消息文件。
一个语言代码可能既“受支持”又“未知”(例如,对mw.language.isKnownLanguageTag
返回true)。还要注意,尽管mw.language.isValidBuiltInCode
返回false,特定的代码仍是“受支持”的。
isValidBuiltInCode[编辑源代码]
mw.language.isValidBuiltInCode(code)
如果语言代码是用于MediaWiki内部自定义的有效形式,返回true。
这个代码可能不对应任何已知语言。
语言代码是“有效的内置代码”意味着这是个“有效”代码(比如,对于mw.language.isValidCode
返回true),只包括ASCII字母、数字和连字符,并至少两个字符长度。
注意有些代码“受支持”(即mw.language.isSupportedLanguage
会返回true),即使这个函数返回false。
isValidCode[编辑源代码]
mw.language.isValidCode(code)
若语言代码字符串是有效形式的,返回true,无论其是否存在。这包括了所有单独用于通过MediaWiki命名空间自定义使用的语言代码。
这个代码可能不对应任何已知语言。
一个语言代码有效意味着不包含任何不安全字符(逗号、单双引号、斜杠、反斜杠、尖括号、连字号或ASCII NUL)且允许出现在页面标题中。
new[编辑源代码]
mw.language.new(code)
或mw.getLanguage(code)
创建新的语言对象。语言对象没有任何可公开获取的属性,不过可以含有几个方法。不同语言代码在页面中的使用有次数限制。超过限制会报错。
实例方法[编辑源代码]
本页的所有实例中,lang
均表示一个语言对象。
getCode[编辑源代码]
lang:getCode()
返回这个语言对象的语言代码。
getFallbackLanguages[编辑源代码]
lang:getFallbackLanguages()
返回MediaWiki针对此语言对象的备选语言代码列表。mw.language.getFallbackLanguages(lang:getCode())
。
isRTL[编辑源代码]
lang:isRTL()
若语言是从右至左写的,返回true,否则返回false。
lc[编辑源代码]
lang:lc()
将字符串转化为小写,但遵从给定的语言的任何特殊规则。mw.ustring.lower()
函数会通过调用mw.language.getContentLanguage():lc(s)
来实现。
lcfirst[编辑源代码]
lang:lcfirst()
将字符串的第一个字符转化为小写,就像lang:lc()
那样。
uc[编辑源代码]
lang:uc()
将字符串转化为大写,但遵从给定的语言的任何特殊规则。mw.ustring.upper()
函数会通过调用mw.language.getContentLanguage():lc(s)
来实现。
ucfirst[编辑源代码]
lang:ucfirst()
将字符串的第一个字符转化为大写,就像lang:uc()
那样。
caseFold[编辑源代码]
lang:caseFold()
将字符串转换为不区分大小写的比较表示形式。注意,显示其结果可能无任何意义。
formatNum[编辑源代码]
lang:formatNum(n, options)
格式化数字,使用给定语言的合适的分组符合小数点。给予123456.78,可能会产生123,456.78、123.456,78或甚至١٢٣٬٤٥٦٫٧٨,取决于语言和wiki配置。
options
是包含选项设置的表,可以是:
noCommafy
:若为true,则忽略分组符并使用点(.
)作为小数点。数字转化仍会发生,可能包括转化数字分隔符。
=mw.getContentLanguage():formatNum(1234567.89)
1,234,567.89
=mw.language.new'ru':formatNum(1234567.89)
1 234 567,89
=mw.language.new'ar':formatNum(1234567.89)
١٬٢٣٤٬٥٦٧٫٨٩
=mw.language.new'ar':formatNum(1234567.89, {noCommafy=true})
١٢٣٤٥٦٧.٨٩
formatDate[编辑源代码]
lang:formatDate(format, timestamp, isLocal)
根据给定的格式字符串格式化一个日期。timestamp
表示需要格式化的时间戳,默认为当前时间。isLocal
如果是true,那么时间会格式化为当前时间而非UTC。format
与解析器函数{{#time:}}
的格式相同。
formatDuration[编辑源代码]
lang:formatDuration(seconds, chosenIntervals)
将时间间隔(单位为秒)转化为更加易读的单位,例如12345转化为3 hours, 25 minutes and 45 seconds(3时25分45秒),返回字符串结果。
chosenIntervals
,如提供,是一个指定了要在结果中使用的间隔单位名称的表(table)。包括millennia
、centuries
、decades
、years
、weeks
、days
、hours
、minutes
和seconds
。
例如:
=mw.getContentLanguage():formatDuration(114514)
1天7小时48分34秒
=mw.getContentLanguage():formatDuration(1145141919810)
362个世纪88年37天13小时33分54秒
=mw.getContentLanguage():formatDuration(1145141919810, {'days', 'seconds'})
13,253,957天35,010秒
=mw.language.new'ru':formatDuration(1145141919810)
36 тысячелетий, 2 века, 8 десятилетий, 8 лет, 37 дней, 13 часов, 33 минуты и 54 секунды
parseFormattedNumber[编辑源代码]
lang:parseFormattedNumber(s)
这需要一个以lang:formatNum()格式化的数字,并返回实际数字。换句话说,这基本上是tonumber的根据语言转换的版本。
convertPlural[编辑源代码]
lang:convertPlural(n, forms)
或lang:convertPlural(n, ...)
,此外lang:plural
等价
从forms
(必须是数组)或可变参数...
基于数字n
选择合适的语法形式。以英语为例:
=mw.language.new'en':convertPlural(1, 'second', 'seconds')
second
=mw.language.new'en':convertPlural(20, 'second', 'seconds')
seconds
convertGrammar[编辑源代码]
lang:convertGrammar(word, case)
或lang:grammar(case, word)
,注意两者不等价
这会选择给定的变形码case
的合适的word
变形形式。
word
和case
的可能的值是依赖于语言的、
gender[编辑源代码]
lang:gender(what, masculine, feminine, neutral)
或lang:gender(what, {masculine, femining, neutral})
选择对应what
的性别的字符串,可以是male、female或注册的用户名。
getArrow[编辑源代码]
lang:getArrow(direction)
返回对应方向direction
的Unicode箭头字符,可以有以下值:
- forwards:“→”或“←”,取决于语言的书写方向。
- backwards:“←”或“→”,取决于语言的书写方向。
- left:“←”
- right:“→”
- up:“↑”
- down:“↓”
例如:
=mw.language.new'en':getArrow('forwards')
→
=mw.language.new'he':getArrow('forwards')
←
如果direction
无效,返回nil。
getDir[编辑源代码]
lang:getDir()
根据语言的书写方向,返回"ltr"(从左至右)或"rtl"(从右至左)。
getDirMark[编辑源代码]
lang:getDirMark(isOpposite)
返回包含U+200E(从左至右标记)或U+20F(从右至左标记)的字符串,取决于语言的书写方向以及isOpposite
的值。
getDirMarkEntity[编辑源代码]
lang:getDirMarkEntity(isOpposite)
返回“‎”或“‏”,取决于语言的书写方向和isOpposite
的值。
getDurationIntervals[编辑源代码]
lang:getDurationIntervals(seconds, chosenIntervals)
将秒数的时间间隔转化为更加已读的单位,并返回从单位名称映射到数字的表。
chosenIntervals
,如提供,则表示返回的值中使用的时间间隔单位的表(table),可以包括millennia
、centuries
、decades
、years
、weeks
、days
、hours
、minutes
和seconds
。
这些单元关键字也是返回的表中使用的键。返回中仅设置具有非零值的单位,除非返回值为空,在这种情况下,返回值为0的最小单位。例如:
=mw.logObject(mw.getContentLanguage():getDurationIntervals(114514))
table#1 {
["days"] = 1,
["hours"] = 7,
["minutes"] = 48,
["seconds"] = 34,
}