模块讨论:Lang

Mys 721tx在话题“可否改成调用strict库?”中的最新留言:6个月前
          模块依照页面评级标准无需评级。
本模块属于下列维基专题范畴:
语言专题 (获评模块级不适用重要度
本模块属于语言专题范畴,该专题旨在改善中文维基百科语言相关条目类内容。如果您有意参与,请浏览专题主页、参与讨论,并完成相应的开放性任务。
 模块级模块  根据质量评级标准,本模块无需评级。

编辑请求 2019-08-13

编辑

  请求已处理--Xiplus#Talk 2019年8月16日 (五) 11:38 (UTC)回复

@Xiplus模块里有个make_category的函数,这里面的的意思是特殊的code需要做特殊的分类处理,比如中文会加入Category:含有明确引用中文的条目而不是Category:含有中文的条目,而英语德语之类的不需要做特殊处理,所以这些部分可以删掉。现在最需要添加的是韩语的特殊处理,因为刚刚Template:Lang-ko改成了使用本模块,而中文维基是建立的是Category:含有朝鲜语的条目,而不是Category:含有韩语的条目,导致现在属于Category:含有朝鲜语的条目的页面数量正在一点一点地往下降,所以这部分要赶紧修改。我在沙盒里修改了这个函数,做更新的时候只需要覆盖make_category函数即可。--Vozhuowhisper 2019年8月13日 (二) 15:05 (UTC)回复

@Vozhuo我没看到问题,页面仍然在Category:含有朝鲜语的条目。--Xiplus#Talk 2019年8月15日 (四) 13:49 (UTC)回复
@Xiplus我当时看的时候分类有14000+页面,每刷新一次页面数就掉一次,现在页面有13000+,估计已经掉光了。可以看一个例子,“CJ集团”条目用了lang-ko模板,但其页面属性没有Category:含有朝鲜语的条目,反而却有了Category:含有非中文内容的条目。光看Category:含有非中文内容的条目第一页就有大量韩国相关的条目,这些明显都是被错分类的。--Vozhuowhisper 2019年8月16日 (五) 11:31 (UTC)回复

请修正lang_xx_inherit

编辑

  请求已拒绝

当使用lang-xx模板时候,如果script=Yyyy被指定,此时的转写会被渲染成xx-Yyyy-Latn模式,导致渲染失败。请将其修正为xx-Latn模式,确保Yyyy不会影响Latn的渲染,谢谢!--173.68.165.114留言2020年8月27日 (四) 16:35 (UTC)回复

请在沙盒提供新版本。--Xiplus#Talk 2020年9月30日 (三) 08:26 (UTC)回复

编辑请求 2021-02-12

编辑

  请求已处理

在模块中添加:

--[[--------------------------< _ N A M E _ F R O M _ T A G >--------------------------------------------------
Returns language name associated with IETF language tag if valid; error message else.
All code combinations supported by {{lang}} and the {{lang-xx}} templates are supported by this function.
Set invoke's |link= parameter to yes to get wikilinked version of the language name.
Module entry point from another module
]]
local function _name_from_tag (args)
	local subtags = {};															-- IETF subtags script, region, variant, and private
	local raw_code = args[1];													-- save a copy of the input IETF subtag
	local link = 'yes' == args['link'];											-- make a boolean
	local label = args.label;
	local code;																	-- the language code
	local msg;																	-- gets an error message if IETF language tag is malformed or invalid
	local language_name = '';
	
	code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (raw_code);
	if msg then
		local template = (args['template'] and table.concat ({'{{', args['template'], '}}: '})) or '';	-- make template name (if provided by the template)
		return table.concat ({'<span style=\"font-size: 100%; font-style: normal;\" class=\"error\">Error: ', template, msg, '</span>'});
	end

	raw_code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private);	-- format to recommended subtag styles; private omitted because private
	language_name = language_name_get (raw_code, code);							-- get language name; try ietf tag first, then code w/o variant then code w/ variant

	language_name = language_name:gsub ('%s+%b()', '');							-- remove IANA parenthetical disambiguators or qualifiers from names that have them

	if link then																-- when |link=yes, wikilink the language name
		if language_name:find ('languages') then
			language_name = make_wikilink (language_name, label);				-- collective language name uses simple wikilink
		elseif lang_data.article_name[code] then
			language_name = make_wikilink (lang_data.article_name[code][1], label or language_name);	-- language name with wikilink from override data
		else
			language_name = make_wikilink (language_name .. ' language', label or language_name);	-- language name with wikilink
		end
	end

	return language_name;
end


--[[--------------------------< N A M E _ F R O M _ T A G >----------------------------------------------------

Module entry point from an {{#invoke:}}

]]

local function name_from_tag (frame)											-- entry point from an {{#invoke:Lang|name_from_tag|<ietf tag>|link=<yes>|template=<template name>}}
	return _name_from_tag (getArgs(frame))										-- pass-on the args table, nothing else; getArgs() so we also get parent frame
end


--[[--------------------------< _ T A G _ F R O M _ N A M E >--------------------------------------------------

Returns the ietf language tag associated with the language name.  Spelling of language name must be correct
according to the spelling in the source tables.  When a standard language name has a parenthetical disambiguator,
that disambiguator must be omitted (they are not present in the data name-to-tag tables).

Module entry point from another module

]]

local function _tag_from_name (args)											-- entry point from another module
	local msg;

	if args[1] and '' ~= args[1] then
		local data = mw.loadData ('Module:Lang/tag from name');					-- get the reversed data tables TODO: change when going live
		local lang = args[1]:lower();											-- allow any-case for the language name (speeling must till be correct)
		local tag = data.rev_override_table[lang] or data.rev_lang_table[lang] or data.rev_lang_dep_table[lang];	-- get the code; look first in the override then in the standard

		if tag then
			return tag, true;													-- language name found so return tag and done; second return used by is_lang_name()
		else
			msg = 'language: ' .. args[1] .. ' not found'						-- language name not found, error message
		end
	else
		msg = 'missing language name'											-- language name not provided, error message
	end
	local template = '';
	if args.template and '' ~= args.template then
		template = table.concat ({'{{', args['template'], '}}: '});				-- make template name (if provided by the template)
	end
	return table.concat ({'<span style=\"font-size: 100%; font-style: normal;\" class=\"error\">Error: ', template, msg, '</span>'});
end
--[[--------------------------< T A G _ F R O M _ N A M E >----------------------------------------------------
Module entry point from an {{#invoke:}}
]]
local function tag_from_name (frame)											-- entry point from an {{#invoke:Lang|tag_from_name|<language name>|link=<yes>|template=<template name>}}
	local result, _ = _tag_from_name (getArgs(frame))							-- pass-on the args table, nothing else; getArgs() so we also get parent frame; supress second return used by is_lang_name()
	return result;		
end

Special:PermanentLink/64248037#In lang模块。由于本人不太了解技术细节,因此只是从英维对应模块处拷贝了以上代码。有可能无法正常工作。----Yining Chen留言|签名2021年2月12日 (五) 08:57 (UTC)回复

还要配合Module_talk:Lang/data#编辑请求_2021-02-12-- Sunny00217  2021年2月12日 (五) 12:04 (UTC)回复
我已在沙盒中合并英文维基的最新版本,但需要测试。--Vozhuowhisper 2021年2月12日 (五) 14:44 (UTC)回复
目前还需要更新Module:TableTools,请看到的管理员先更新TableTools模块。--Vozhuowhisper 2021年2月18日 (四) 06:04 (UTC)回复
Module:TableTools已更新,请在Module_talk:Lang/testcases检查变更后的格式变化。--Vozhuowhisper 2021年2月24日 (三) 08:23 (UTC)回复
检查完毕,要是没有其他人提出意见的话我会认为当前沙盒版本中的内容可以正常运作。管理员需要同时更新Module:LangModule:Lang/dataModule:Language/data/iana_languages,替换为各自沙盒中的内容(沙盒修改日期为3月3日,以防之后有其他人更新)。另外更新之后不建议全保护Module:Lang/data,因为这里面的中文还没写完,经常要添加新的语言,全保护的话修改请求经常无法得到及时反馈,建议降为模板保护。--Vozhuowhisper 2021年3月3日 (三) 10:47 (UTC)回复
我在查看Module_talk:Lang/testcases页面的时候发现页面上显示了大量错误,这个是代码设计成这样的吗?--Yining Chen留言|签名2021年3月4日 (四) 11:23 (UTC)回复
现在的沙盒中的版本是待更新的版本,不能用来检查测试样例,要检查测试样例需要修改Module:Lang/sandbox的第13行(改为加载Module:Lang/data/sandbox)和Module:Lang/data/sandbox的51和52行(改为加载Module:Language/data/iana languages/sandbox)。--Vozhuowhisper 2021年3月4日 (四) 14:30 (UTC)回复
改动稍大,稳妥起见等待至3月10日执行修改。--Tiger留言2021年3月7日 (日) 07:50 (UTC)回复
按请求将Module:LangModule:Lang/dataModule:Language/data/iana_languages分别替换成3月3日时的沙盒版本后,条目内出现Lua错误 在Module:Lang的第589行:尝试读取空全局变量:page_exists,遂予以回退。--Tiger留言2021年3月11日 (四) 01:18 (UTC)回复
@Tigerzeng哎呀,我忘记把这个函数加上了,现在的Module:Lang/sandbox可以了。--Vozhuowhisper 2021年3月12日 (五) 11:09 (UTC)回复
 完成,感谢。--Tiger留言2021年3月12日 (五) 13:09 (UTC)回复

In lang模块

编辑

{{In lang}}模板中显示Module:In lang错误(模板固定链接:Special:PermanentLink/63906340,模块固定链接:Special:PermanentLink/63906389),有办法能够修复吗?感谢。--Yining Chen留言|签名2021年2月12日 (五) 02:07 (UTC)回复

粗看了一下是Module:Lang没有同步英文维基的版本,缺少name_from_tag这个函数。要更新的话最好还是走 ep 流程。 --砜中嘌呤的白磷萃取 打谱 2021年2月12日 (五) 03:24 (UTC)回复
感谢。已提交至Module_talk:Lang。--Yining Chen留言|签名2021年2月12日 (五) 08:59 (UTC)回复

现在输出的是语言的英文名称,是否需要改成中文?——BlackShadowG留言维基百科20岁生日快乐! 2021年2月28日 (日) 13:52 (UTC)回复

应该要。现在沙盒版本里的语言名称已经被汉化了,把开头的 In 改掉就行。不过我想问,这个模板和{{ja icon}}之类是不是重复了?英文版没有后者。 --砜中嘌呤的白磷萃取 打谱 2021年3月3日 (三) 03:58 (UTC)回复
@WhitePhosphorus:xx icon一类的模板在英文版是因为与本模板重复被删除了,我觉得这个模板不会重复且很有必要,因为使用xx icon一类的模板一次只能标记一种语言,如果网页有多种语言的话就得使用多个xx icon模板标记,这样的效果很不好,比如中文、英文和日文网页用xx icon模板标记会成为这样:(中文)(英文)(日语),而本模板可以兼容多个语言参数,希望将来本模板的显示效果可以与cite web模板的language参数一样,用于标记多语言的网页,如下:示例 (中文、英语及日语). Category:CS1英语来源 (en)。——BlackShadowG留言维基百科20岁生日快乐! 2021年3月4日 (四) 11:34 (UTC)回复
管理员可以先处理Module_talk:Lang的编辑请求。--Vozhuowhisper 2021年3月3日 (三) 11:02 (UTC)回复
报错了。--Yining Chen留言|签名2021年3月11日 (四) 14:32 (UTC)回复
Module:Lang已更新,In lang可以正常显示了。要是这个模板真的在中文维基启用的话那些xx icon模板就可以计划删掉了,{{In lang|ja}}的写法完全可以代替{{ja icon}},或者可以用字符更少的{{LL|ja}}写法。--Vozhuowhisper 2021年3月12日 (五) 14:45 (UTC)回复
另外还需要解决的问题是显示样式:(日语)(日语),本来中文英文维基都是用的右边的样式,但是英文维基cite web等模板后来改成了左边的样式,中文维基并未跟进。所以要么把in lang改成中文维基现在用的样式,要么把cite web等模板更新成英文维基现在的样式。--Vozhuowhisper 2021年3月12日 (五) 15:21 (UTC)回复
现行的{{ja icon}}的鼠标浮现文字是“连接到X语网页”。但像{{Cite book}}QWER (日语). Category:CS1日语来源 (ja)这里并没有什么网页可供连接。作为类似的式样,似乎要一起考虑。--洛普利宁 2021年3月12日 (五) 15:36 (UTC)回复
@Vozhuo:,我已经修改了模块把{{in lang}}的显示样式更改为{{language icon}}的样式了,而cite web一类的模板似乎是直接引用了{{language icon}}模板,因此出现了@Lopullinen提到的悬浮文字的问题。我认为可以吧language icon的默认悬浮文字去掉,因为目前似乎language icon不只是用于标记网页,有些编者也会使用language icon标记书籍的语言。——BlackShadowG留言维基百科20岁生日快乐! 2021年3月21日 (日) 01:13 (UTC)回复

编辑请求 2022-02-28

编辑

  请求已处理--Xiplus#Talk 2022年3月11日 (五) 02:16 (UTC)回复

回应回廊彼端的回馈:[1]

编辑请参考沙盒,第1119行if args.links and args.link and (args.links ~= args.link) then

既links和link设为别名,那么提议只在两个参数值不一样时才显示冲突。 这样以来,在lang-xx模板中可以使用其中任何一个参数。

目前{{lang-de}}

  • {{lang-de|test|link=no}} → 德语:test
  • {{lang-de|test|links=no}} → [test] 错误:Template:Lang-xx:冲突:|links= 和 |link=(帮助
  • {{lang-de|test|link=yes}}德语test
  • {{lang-de|test|links=yes}} → [test] 错误:Template:Lang-xx:冲突:|links= 和 |link=(帮助

沙盒{{lang-de/sandbox}}

  • {{lang-de/sandbox|test|link=no}} → 德语:test
  • {{lang-de/sandbox|test|links=no}} → 德语:test
  • {{lang-de/sandbox|test|link=yes}}德语test
  • {{lang-de/sandbox|test|links=yes}}德语test

谢谢!--Tjmj留言2022年2月28日 (一) 10:41 (UTC)回复

编辑请求 2022-08-14

编辑

  请求已处理--Xiplus#Talk 2022年8月24日 (三) 09:20 (UTC)回复

此页上方曾有Module_talk:Lang#编辑请求_2019-08-13的讨论,把“含有韩语的页面”按当时状况归类到Category:含有朝鲜语的条目,不过目前互助客栈讨论共识修改模板Template:ISO 639 name koTemplate:ISO 639 name kor两个模板内容为繁体用语“韓語”,因此不再需要该次所新增的判别函数,直接让页面归入Category:含有韩语的条目即可。又由于我不太懂相关语法,想麻烦各位协助修改。

此外使用Template:Lang-pinyinTemplate:标音Template:Pinyin、{{lang|zh-Latn|OOO}}会自动把条目归入Category:含有中文的条目这个多余分类,希望可以一起修改,谢谢辛苦。--回廊彼端留言2022年8月14日 (日) 03:24 (UTC)回复

关于西里尔语言模板的几个问题

编辑

1.translit参数的问题。如果使用translit参数({{lang-ru|Москва|translit=Moskva}}),会变成
俄语:Москва罗马化:Moskva
但如果不写参数,直接写转写({{lang-ru|Москва|Moskva}}),会变成
俄语:Москва罗马化Moskva,这里请问一下是不是要把这两种写法整合一下。
2.软音符号的问题。有些条目不会转写Ь(比如阿穆尔河畔共青城),有些会转写成'(比如乌里扬诺夫斯克),想请教应该要翻呢?还是不翻呢?
3.塞尔维亚语的转写。这里确认一下,标准的转写是否像{{lang-sr|'''Суботица'''/'''Subotica'''}}一样,西里尔和拉丁写在一起。--Sean0115 2022年12月13日 (二) 14:01 (UTC)回复

1、感觉将 “罗马化”连接到 条目 俄语罗马化 比较好,熟悉俄语的应该是少数。 2、@Yelets--Kethyga留言2022年12月16日 (五) 05:18 (UTC)回复
从转写的角度说我支持加上'ʹ,也与主流转写标准、地图册、翻译辞典等一致。不加的话我觉得严格来说不是转写,而更偏向英/外语化。塞尔维亚语是西里尔拉丁都用,所以并列是没问题的。--Yelets 留言 2022年12月18日 (日) 03:57 (UTC)回复

可否改成调用strict库?

编辑

  请求已处理

原因在Mediawiki.org了解一下,写在/sandbox里了,就改了第7行。--Liuxinyu970226留言2024年4月23日 (二) 22:07 (UTC)回复

 完成。-Mys_721tx留言2024年4月24日 (三) 04:17 (UTC)回复
返回到“Lang”页面。