모듈:일본어

하늘 (토론 | 기여)님의 2021년 4월 30일 (금) 16:02 판
설명문서 [편집] [역사] [새로고침]

삭제는 사용자들의 토론에 따라 결정됩니다.
다른 의견이 있으면 틀을 {{삭제보류}}로 바꿔 달아주시고, 토론 문서에서 문서의 삭제에 관해 토론해주세요.


삭제는 사용자들의 토론에 따라 결정됩니다.
다른 의견이 있으면 틀을 {{삭제보류}}로 바꿔 달아주시고, 토론 문서에서 문서의 삭제에 관해 토론해주세요.


연습장이나 사용자 문서에서 틀의 사용이나 수정을 연습할 수 있습니다.
분류는 /설명문서에 넣어주세요.

local jp = { }
local ending = {
	normal = { "く", "ぐ", "す", "つ", "ぬ", "ぶ", "む", "る", "う" },
	kusuruutsu = { "く", "す", "つ", "る", "う" },
	masu   = { "き", "ぎ", "し", "ち", "に", "び", "み", "り", "い" },
	te     = { "い", "い", "し", "っ", "ん", "ん", "ん", "っ", "っ" },
	teConj = { "て", "で", "て", "て", "で", "で", "で", "て", "て" },
	taConj = { "た", "だ", "た", "た", "だ", "だ", "だ", "た", "た" },
	nai    = { "か", "が", "さ", "た", "な", "ば", "ま", "ら", "わ" }
}
local ichidan = { "い", "き", "し", "ち", "に", "ひ", "み", "り", "え", "け", "せ", "て", "ね", "へ", "め", "れ" }

function jp.addTermi (termination, conjugation) -- 어미
	for i=1, 5 do
		if ending.kusuruutsu[i] == termination then return conjugation end
	end
	if conjugation == "て" then return "で"
	elseif conjugation == "ます" then return "ます"
	elseif conjugation == "た" then return "だ"
	else return "ない" end
end

function jp.convert(termination, conjugation)
	if conjugation == "て" or conjugation == "た"  then
		for i=1, 9 do
			if ending.normal[i] == termination then
				return ending.te[i]
			end
		end
	elseif conjugation == "ます" then
		for i=1, 9 do
			if ending.normal[i] == termination then
				return ending.masu[i]
			end
		end
	else --ない
		for i=1, 9 do
			if ending.normal[i] == termination then
				return ending.nai[i]
			end
		end
	end
end

function jp.ruby(kanji, furigana)
	return "<ruby><rb>"..kanji..[[</rb><rt style{{=}}"font-size: 70%">]]..furigana.."</rt></ruby>"
end

function jp.main(frame)

	local kanji = frame.args['kanji'] --"遊" --한자
    local furigana = frame.args['furigana'] -- "あそ" --후리가나
    local hiragana = frame.args['hiragana'] -- "あそぶ" --히라가나
    local conjugation = frame.args['conjugation'] --"て" --활용
    local verb_group = frame.args['verb_group']
    local termination --"" --어미
    local okurigana --"" --오쿠리가나
    
    if (kanji == "来") then
        if conjugation == "ない" then
            furigana = "こ"
        else
            furigana = "き"
        end
        return jp.ruby(kanji, furigana)..conjugation
        
    elseif hiragana == 2 and furigana == 1 then
    	termination = string.gsub( hiragana, furigana, "" )
    	return jp.ruby(kanji, furigana)..jp.convert(termination, conjugation)..jp.addTermi(termination, conjugation)
    	
    else
    	for i = 1, 16 do
    		if ichidan[i] == termination then
    			ichidan_ = true
    			break
    		end
    	end
    	
    	if ichidan_ == true then
    		local temp = string.gsub(string.gsub( hiragana, furigana, "" ), "る", "")
    		if conjugation == "て" then temp = temp.."て"
    		elseif conjugation == "ます" then temp = temp.."ます"
    		elseif conjugation == "た" then temp = temp.."た"
			else temp = temp.."ない" end
			return jp.ruby(kanji, furigana)..temp
		else
			okurigana = string.gsub( hiragana, furigana, "" )
	        if string.len( okurigana ) > 1 then
	            termination = string.sub( okurigana, 0, - 1)
	        else
	            termination = okurigana
	        end
	        return jp.ruby(kanji, furigana)..jp.convert(termination, conjugation)..jp.addTermi(termination, conjugation)
    	end
	
    end
end

return jp