跳至內容

模組討論:Lang

頁面內容不支援其他語言。
維基百科,自由的百科全書
          模塊依照頁面品質評定標準無需評級。
本模組屬於下列維基專題範疇:
語言專題 (獲評模塊級不適用重要度
本模組屬於語言專題範疇,該專題旨在改善中文維基百科語言相關條目類內容。如果您有意參與,請瀏覽專題主頁、參與討論,並完成相應的開放性任務。
 模塊級模塊  根據品質評級標準,本模組無需評級。

編輯請求 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)[回覆]