(Translated by https://www.hiragana.jp/)
模組:ZhConversion - 维基百科,自由的百科全书 とべ转到内容ないよう

ぐみ:ZhConversion

本页使用了标题或全文手工转换
被永久保护的模块
维基百科ひゃっか自由じゆうてき百科ひゃっかぜん
文档图示 かたぎ块文档[查看] [编辑] [历史] [きよしじょ缓存]

ほんぐみ以在Lua階段かいだん實現じつげん文字もじてき繁簡はんかん轉換てんかんただし支援しえん地區ちく轉換てんかん轉換てんかんぐみ。(ZhConversion.phpてきLua實現じつげん

原始げんし文字もじ 本文ほんぶん为测试文字もじ这段文字もじよう于说あかり格式かくしき,请勿删除。这段文字もじよう于说あかり格式かくしき,请勿删除。うみひゃくがわゆうよう乃大。维基百科ひゃっか自由じゆうてき百科ひゃっかぜん书。

輸入ゆにゅういたto_hant()函數かんすうへんためてんためしげるからだ):
本文ほんぶんためはかためし文字もじ這段文字もじよう說明せつめい格式かくしき,請勿刪除。這段文字もじよう說明せつめい格式かくしき,請勿刪除。うみおさめひゃくがわゆうよう乃大。維基百科ひゃっか自由じゆうてき百科全書ひゃっかぜんしょ

原始げんし文字もじ 本文ほんぶんためはかためし文字もじ這段文字もじよう說明せつめい格式かくしき,請勿刪除。這段文字もじよう說明せつめい格式かくしき,請勿刪除。うみおさめひゃくがわゆうよう乃大。維基百科ひゃっか自由じゆうてき百科全書ひゃっかぜんしょ

輸入ゆにゅういたto_hans()函數かんすうへんためてんため簡體):
本文ほんぶん为测试文字もじ这段文字もじよう于说あかり格式かくしき,请勿删除。这段文字もじよう于说あかり格式かくしき,请勿删除。うみひゃくがわゆうよう乃大。维基百科ひゃっか自由じゆうてき百科ひゃっかぜん书。

原始げんし文字もじしげるからだ简体繁簡はんかん混用こんよう

輸入ゆにゅういたto_hant()函數かんすうへんためてんためしげるからだ):しげるからだ簡體

原始げんし文字もじしげるからだ简体繁簡はんかん混用こんよう

輸入ゆにゅういたto_hans()函數かんすうへんためてんため簡體):しげるからだ简体

用途ようと

標題ひょうだい轉換てんかん

ざい魔術まじゅつLuaてき場合ばあいちゅうぺーじめん標題ひょうだいてき繁簡はんかん差異さい法被はっぴ識別しきべつてきれい{{PAGESIZE:}}。以ひかり泽 (矿物)ためれいぺーじめんひかり泽 (矿物)存在そんざい而頁めん光澤こうたく (礦物)存在そんざいよし系統けいとう自動じどう轉換てんかん標題ひょうだい差異さい,這時:

{{PAGESIZE:ひかり泽 (矿物)}}→「9,881」
{{PAGESIZE:光澤こうたく (礦物)}}→「0」

たい輸入ゆにゅうてき標題ひょうだい同時どうじ,-{}-<langconvert></langconvert>とう轉換てんかん語法ごほうざいばん及模ぐみ階段かいだん工作こうさくてき

<langconvert from="zh-hans" to="zh-hant">ひかり泽 (矿物)</langconvert>→「光澤こうたく (礦物)」
{{PAGESIZE:<langconvert from="zh-hans" to="zh-hant">ひかり泽 (矿物)</langconvert>}}→「0」
<langconvert from="zh-hant" to="zh-hans">光澤こうたく (礦物)</langconvert>→「ひかり泽 (矿物)」
{{PAGESIZE:<langconvert from="zh-hant" to="zh-hans">光澤こうたく (礦物)</langconvert>}}→「0」

這意あじちょ,如果存在そんざいてきぺーじめんひかり泽 (矿物)輸入ゆにゅう光澤こうたく (礦物)いたばんあるぐみ中有ちゅううせきいさおのうかい失效しっこうてき

所以ゆえん如果輸入ゆにゅうてき值是光澤こうたく (礦物)就有ざいLua運算うんざん階段かいだん使用しよう繁簡はんかん轉換てんかんてき需求。

{{PAGESIZE:{{#invoke:ZhConversion|zh_title|ひかり泽 (矿物)}}}}→「9,881」
{{PAGESIZE:{{#invoke:ZhConversion|zh_title|光澤こうたく (礦物)}}}}→「9,881」

函數かんすう說明せつめい

to_hant(くし)
輸入ゆにゅういちくし轉換てんかんためしげるたいちゅうぶんいた調ちょうよう
to_hans(くし)
輸入ゆにゅういちくし轉換てんかんため簡體ちゅうぶんいた調ちょうよう
zh_convert(くし)
輸入ゆにゅういちくし進行しんこう繁簡はんかん轉換てんかんわか輸入ゆにゅう簡體,轉換てんかんためしげるからだわか輸入ゆにゅうしげるからだ轉換てんかんため簡體;わか繁簡はんかん混用こんよう,以繁たい優先ゆうせん。(いた調ちょうよう
zh_title(ぺーじめん標題ひょうだい)
輸入ゆにゅういちぺーじめん標題ひょうだいわか該頁めん標題ひょうだいぺーじめん存在そんざいただし繁簡はんかん轉換てんかん存在そんざいのりかえしかい存在そんざいてき標題ひょうだい。(いた調ちょうよう
equals(くし1,くし2)
ゆるがせりゃく繁簡はんかん差異さいてき文字もじたいれい如「ひかり泽」あずか光澤こうたく為相ためすけどう。(いた調ちょうよう
_language_cvt(くし, 轉換てんかんひょう, くしさがせひろ最大さいだいちょう)
使用しよう指定していてき轉換てんかんひょう進行しんこう轉換てんかん。(支援しえんかたぎいた調ちょうよう

まいり

local p={}
local zhcvt = mw.loadData('Module:ZhConversion/data')
function p.to_hant(str)
	local input_str = str
	if type(str) == type({"table"}) then
		input_str = (str.args or {})[1] or str[1] or ''
	elseif type(str) ~= type("string") then
		input_str = tostring(str)
	end
	return p._language_cvt(input_str, zhcvt.to_hant, zhcvt.max_length)
end
function p.to_hans(str)
	local input_str = str
	if type(str) == type({"table"}) then
		input_str = (str.args or {})[1] or str[1] or ''
	elseif type(str) ~= type("string") then
		input_str = tostring(str)
	end
	return p._language_cvt(input_str, zhcvt.to_hans, zhcvt.max_length)
end
function p.zh_title(str)
	local input_str = str
	if type(str) == type({"table"}) then
		input_str = (str.args or {})[1] or str[1] or ''
	elseif type(str) ~= type("string") then
		input_str = tostring(str)
	end
	local checked_title = input_str
	xpcall(function()
		local function getTitle(...)
			local success, titleObj = pcall(mw.title.new, ...)
			if success then return titleObj else return nil end
		end
		local titleObj = getTitle(input_str)
		local ori_code = titleObj:getContent()
		if ori_code then checked_title = input_str else
			local zh_hant = p.to_hant(input_str)
			local titleHantObj = getTitle(zh_hant)
			local hant_code = titleHantObj:getContent()
			if hant_code then checked_title = zh_hant else
				local zh_hans = p.to_hans(input_str)
				local titleHansObj = getTitle(zh_hans)
				local hans_code = titleHansObj:getContent()
				if hans_code then checked_title = zh_hans end
			end
		end
	end,function()end)
	return checked_title
end
function p.equals(str1, str2)
	local input_str1 = str1
	local input_str2 = str2
	if type(str1) == type({"table"}) then
		input_str1 = (str1.args or {})[1] or str1[1] or ''
		input_str2 = (str1.args or {})[2] or str1[2] or ''
	elseif type(str1) ~= type("string") then
		input_str1 = tostring(str1)
		input_str2 = tostring(str2)
	end
	local result = false
	if input_str1 == input_str2 then
		result = true
	else
		local str1_hans = p._language_cvt(input_str1, zhcvt.to_hans, zhcvt.max_length)
		local str2_hans = p._language_cvt(input_str2, zhcvt.to_hans, zhcvt.max_length)
		if str1_hans == str2_hans or input_str1 == str2_hans or str1_hans == input_str2 then
			result = true
		else
			local str1_hant = p._language_cvt(input_str1, zhcvt.to_hant, zhcvt.max_length)
			local str2_hant = p._language_cvt(input_str2, zhcvt.to_hant, zhcvt.max_length)
			if str1_hant == str2_hant or input_str1 == str2_hant or str1_hant == input_str2 then
				result = true
			end
		end
	end
	if str1 == mw.getCurrentFrame() or (type(str1)==type({}) and type(str1.getParent)==type(function()end)) then
		return result and '1' or ''
	end
	return result
end
function p.zh_convert(str)
	local input_str = str
	if type(str) == type({"table"}) then
		input_str = (str.args or {})[1] or str[1] or ''
	elseif type(str) ~= type("string") then
		input_str = tostring(str)
	end
	local result = p._language_cvt(input_str, zhcvt.to_hant, zhcvt.max_length)
	if result == input_str then
		result = p._language_cvt(input_str, zhcvt.to_hans, zhcvt.max_length)
	end
	return result
end

function p._language_cvt(str, cvt_table, max_length)
	local strlen = mw.ustring.len(str)
	local result = ''
	local i=1
	while i<=strlen do
		local changed = false
		local this_char = mw.ustring.sub(str, i, i)
		for ji = 1,max_length do
			local j = max_length - ji
			if i + j <= strlen then
				local check_str = mw.ustring.sub(str, i, i + j)
				if cvt_table[check_str] then
					result = result .. cvt_table[check_str]
					i = i + j
					changed = true
					break
				end
			end
		end
		if not changed then result = result .. this_char end
		i = i + 1
	end
	return result
end
return p