모듈:일본어

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

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


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


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

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

function jp.addTermi (termination, conjugation) -- 어미
	local i = 1
	while i <= 5 do
		if ending.kusuruutsu[i] == termination then return conjugation end
		i = i + 1
	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
		if "く" == termination then return "い"
		elseif "ぐ" == termination then return "い"
		elseif "す" == termination then return "し"
		elseif "ぬ" == termination then return "ん"
		elseif "ぶ" == termination then return "ん"
		elseif "む" == termination then return "ん"
		elseif "る" == termination then return "っ"
		elseif "う" == termination then return "っ"
		elseif "つ" == termination then return "っ"
		else end
		
	elseif conjugation == "ます" then 
		if "く" == termination then return "き"
		elseif "ぐ" == termination then return "ぎ"
		elseif "す" == termination then return "し"
		elseif "ぬ" == termination then return "に"
		elseif "ぶ" == termination then return "び"
		elseif "む" == termination then return "み"
		elseif "る" == termination then return "り"
		elseif "う" == termination then return "い"
		elseif "つ" == termination then return "ち"
		else end
	else --ない
		if "く" == termination then return "か" 
		elseif "ぐ" == termination then return "が"
		elseif "す" == termination then return "さ"
		elseif "ぬ" == termination then return "な"
		elseif "ぶ" == termination then return "ば"
		elseif "む" == termination then return "ま"
		elseif "る" == termination then return "ら"
		elseif "う" == termination then return "わ"
		elseif "つ" == termination then return "た"
		else 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 verb_group == "1" 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 "<ruby><rb>"..kanji..[[</rb><rt style{{=}}"font-size: 70%">]]..furigana.."</rt></ruby>"..temp
        
    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
        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

return jp