Module:number list/data/vi

local export = {} local m_numutils = require("Module:number list/utils") local power_of = m_numutils.power_of

export.additional_number_types = { { key = "chu_quoc_ngu", display = "Cardinal", before = "ordinal" }, { key = "notes", display = "Notes", after = "ordinal" }, }

local numbers = {} export.numbers = numbers

local ordinal_prefix = "thứ " local tens_chu_quoc_ngu = "mười "

-- Delete any number types that don't apply.

numbers[0] = { chu_quoc_ngu = "không", }

numbers[1] = { chu_quoc_ngu = "một", ordinal = "thứ nhất", }

numbers[2] = { chu_quoc_ngu = "hai", ordinal = {"thứ hai", "thứ nhì"}, }

numbers[3] = { chu_quoc_ngu = "ba", }

numbers[4] = { chu_quoc_ngu = "bốn", ordinal = "thứ tư", }

numbers[5] = { chu_quoc_ngu = "năm", }

numbers[6] = { chu_quoc_ngu = "sáu", }

numbers[7] = { chu_quoc_ngu = {"bảy", "bẩy"}, }

numbers[8] = { chu_quoc_ngu = "tám", }

numbers[9] = { chu_quoc_ngu = "chín", }

numbers[10] = { chu_quoc_ngu = "mười", }

numbers[20] = { chu_quoc_ngu = "hai mươi", }

numbers[30] = { chu_quoc_ngu = "ba mươi", }

numbers[40] = { chu_quoc_ngu = "bốn mươi", }

numbers[50] = { chu_quoc_ngu = "năm mươi", }

numbers[60] = { chu_quoc_ngu = "sáu mươi", }

numbers[70] = { chu_quoc_ngu = "bảy mươi", }

numbers[80] = { chu_quoc_ngu = "tám mươi", }

numbers[90] = { chu_quoc_ngu = "chín mươi", }

-- Helper function to get the first chữ quốc ngữ local function get_first_chu_quoc_ngu(number) local chu_quoc_ngu = numbers[number].chu_quoc_ngu if type(chu_quoc_ngu) == "table" then return chu_quoc_ngu[1] else return chu_quoc_ngu end end

for number = 2, 10 do   if not numbers[number].ordinal then local first_chu_quoc_ngu = get_first_chu_quoc_ngu(number) numbers[number].ordinal = ordinal_prefix .. first_chu_quoc_ngu end end

for number = 11, 19 do   local base_num = number - 10 numbers[number] = { chu_quoc_ngu = m_numutils.map(function(unit)           if base_num == 5 then                return tens_chu_quoc_ngu .. "lăm"            else                return tens_chu_quoc_ngu .. get_first_chu_quoc_ngu(base_num)            end        end, get_first_chu_quoc_ngu(base_num)), } end

for tens = 20, 90, 10 do   for ones = 1, 9 do        local num = tens + ones if ones == 1 then numbers[num] = { chu_quoc_ngu = m_numutils.map(function(tens_unit)                   return tens_unit .. " mốt"                end, get_first_chu_quoc_ngu(tens)), }       elseif ones == 5 then numbers[num] = { chu_quoc_ngu = m_numutils.map(function(tens_unit)                   return tens_unit .. " lăm"                end, get_first_chu_quoc_ngu(tens)), }       else numbers[num] = { chu_quoc_ngu = m_numutils.map(function(tens_unit)                   return tens_unit .. " " .. get_first_chu_quoc_ngu(ones)                end, get_first_chu_quoc_ngu(tens)), }       end end end

for number = 11, 99 do   local tens = math.floor(number / 10) local ones = number % 10 if tens == 1 then if ones == 5 then numbers[number].ordinal = "thứ mười lăm" else numbers[number].ordinal = "thứ mười " .. get_first_chu_quoc_ngu(ones) end else if ones == 0 then numbers[number].ordinal = "thứ " .. get_first_chu_quoc_ngu(tens * 10) elseif ones == 1 then numbers[number].ordinal = "thứ " .. get_first_chu_quoc_ngu(tens * 10) .. " mốt" elseif ones == 5 then numbers[number].ordinal = "thứ " .. get_first_chu_quoc_ngu(tens * 10) .. " lăm" else numbers[number].ordinal = "thứ " .. get_first_chu_quoc_ngu(tens * 10) .. " " .. get_first_chu_quoc_ngu(ones) end end end

numbers[100] = { chu_quoc_ngu = "một trăm", ordinal = "thứ một trăm", }

numbers[1000] = { chu_quoc_ngu = {"một nghìn", "một ngàn"}, ordinal = {"thứ một nghìn", "thứ một ngàn"}, }

numbers[10000] = { chu_quoc_ngu = {"mười nghìn", "mười ngàn", "một vạn"}, ordinal = {"thứ mười nghìn", "thứ mười ngàn"}, }

numbers[100000] = { chu_quoc_ngu = {"một trăm nghìn", "một trăm ngàn", "một ứt", "một vẹo", "mười vạn"}, ordinal = {"thứ một trăm nghìn", "thứ một trăm ngàn"}, }

numbers[1000000] = { chu_quoc_ngu = {"một triệu", "một trăm vạn"}, ordinal = "thứ một triệu", }

numbers[10000000] = { chu_quoc_ngu = "mười triệu", ordinal = "thứ mười triệu", }

numbers[100000000] = { chu_quoc_ngu = "một trăm triệu", ordinal = "thứ một trăm triệu", }

numbers[1000000000] = { chu_quoc_ngu = "một tỉ", ordinal = "thứ một tỉ", }

numbers[10^12] = { chu_quoc_ngu = {"một nghìn tỉ", "một ngàn tỉ"}, ordinal = {"thứ một nghìn tỉ", "thứ một ngàn tỉ"}, }

numbers[10^15] = { chu_quoc_ngu = "một triệu tỉ", ordinal = "thứ một triệu tỉ", }

numbers[10^18] = { chu_quoc_ngu = "một tỉ tỉ", ordinal = "thứ một tỉ tỉ", }

return export