diff --git a/languages_substitution.go b/languages_substitution.go index 7661d6a..24cda9a 100644 --- a/languages_substitution.go +++ b/languages_substitution.go @@ -31,6 +31,7 @@ func init() { &slSub, &svSub, &trSub, + &viSub, } { for key, value := range defaultSub { (*sub)[key] = value @@ -311,3 +312,89 @@ var bgSub = map[rune]string{ 'ю': "yu", 'я': "ya", } + +var viSub = map[rune]string{ + '&': "va", + '@': "a cong", + '$': "do la", + '%': " phan tram", + '*': "sao", + '+': "cong", + '=': "bang", + '<': "nho hon", + '>': "lon hon", + 'đ': "d", + 'Đ': "D", + 'ă': "a", + 'Ă': "A", + 'â': "a", + 'Â': "A", + 'ê': "e", + 'Ê': "E", + 'ô': "o", + 'Ô': "O", + 'ơ': "o", + 'Ơ': "O", + 'ư': "u", + 'Ư': "U", + 'à': "a", + 'À': "A", + 'á': "a", + 'Á': "A", + 'ạ': "a", + 'Ạ': "A", + 'ả': "a", + 'Ả': "A", + 'ã': "a", + 'Ã': "A", + 'è': "e", + 'È': "E", + 'é': "e", + 'É': "E", + 'ẹ': "e", + 'Ẹ': "E", + 'ẻ': "e", + 'Ẻ': "E", + 'ẽ': "e", + 'Ẽ': "E", + 'ì': "i", + 'Ì': "I", + 'í': "i", + 'Í': "I", + 'ị': "i", + 'Ị': "I", + 'ỉ': "i", + 'Ỉ': "I", + 'ĩ': "i", + 'Ĩ': "I", + 'ò': "o", + 'Ò': "O", + 'ó': "o", + 'Ó': "O", + 'ọ': "o", + 'Ọ': "O", + 'ỏ': "o", + 'Ỏ': "O", + 'õ': "o", + 'Õ': "O", + 'ù': "u", + 'Ù': "U", + 'ú': "u", + 'Ú': "U", + 'ụ': "u", + 'Ụ': "U", + 'ủ': "u", + 'Ủ': "U", + 'ũ': "u", + 'Ũ': "U", + 'ỳ': "y", + 'Ỳ': "Y", + 'ý': "y", + 'Ý': "Y", + 'ỵ': "y", + 'Ỵ': "Y", + 'ỷ': "y", + 'Ỷ': "Y", + 'ỹ': "y", + 'Ỹ': "Y", +} diff --git a/slug.go b/slug.go index b4ed7cd..596ed07 100644 --- a/slug.go +++ b/slug.go @@ -117,6 +117,8 @@ func MakeLang(s string, lang string) (slug string) { slug = SubstituteRune(slug, svSub) case "tr", "tur": slug = SubstituteRune(slug, trSub) + case "vi": + slug = SubstituteRune(slug, viSub) default: // fallback to "en" if lang not found slug = SubstituteRune(slug, enSub) } diff --git a/slug_test.go b/slug_test.go index 9788a27..51aa970 100644 --- a/slug_test.go +++ b/slug_test.go @@ -163,6 +163,11 @@ func TestSlugMakeLang(t *testing.T) { {"sl", "1\"2'3’4-5–6—7―8", "1234-5-6-7-8", true}, {"sv", "1\"2'3’4‒5–6—7―8", "1234-5-6-7-8", true}, {"tr", "1\"2'3’4‒5–6—7―8", "1234-5-6-7-8", true}, + {"vi", "10 Bí Quyết Để Thành Công Trong Công Việc", "10-bi-quyet-de-thanh-cong-trong-cong-viec", true}, + {"vi", "Cách Sử Dụng @ trong Email Hiệu Quả", "cach-su-dung-a-cong-trong-email-hieu-qua", true}, + {"vi", "Học Lập Trình: #1 Hành Trình Đầy Thử Thách!", "hoc-lap-trinh-1-hanh-trinh-day-thu-thach", true}, + {"vi", "Câu Chuyện Thành Công & Những Bài Học", "cau-chuyen-thanh-cong-va-nhung-bai-hoc", true}, + {"vi", "Tăng Thu Nhập 100% Nhờ Kinh Doanh Online!", "tang-thu-nhap-100-phan-tram-nho-kinh-doanh-online", true}, } for index, smlt := range testCases {