﻿// ***************************************************************************
// *
// * Copyright (C) 2010 International Business Machines
// * Corporation and others.  All Rights Reserved.
// * Tool: com.ibm.icu.dev.tool.cldr.LDML2ICUConverter.java
// * Source File:<path>/common/main/vi.xml
// *
// ***************************************************************************
/**
 *  ICU <specials> source: <path>/xml/main/vi.xml
 */
vi{
    AuxExemplarCharacters{"[]"}
    ExemplarCharacters{
        "[a à ả ã á ạ ă ằ ẳ ẵ ắ ặ â ầ ẩ ẫ ấ ậ b c d đ e è ẻ ẽ é ẹ ê ề ể ễ ế ệ f g h i"
        " ì ỉ ĩ í ị j k l m n o ò ỏ õ ó ọ ô ồ ổ ỗ ố ộ ơ ờ ở ỡ ớ ợ p q r s t u ù ủ ũ ú"
        " ụ ư ừ ử ữ ứ ự v w x y ỳ ỷ ỹ ý ỵ z]"
    }
    ExemplarCharactersCurrency{"[a b c d đ e f g h i j k l m n o p q r s t u v w x y z]"}
    ExemplarCharactersIndex{"[A Ă Â B C D Đ E Ê F G H I J K L M N O Ô Ơ P Q R S T U Ư V W X Y Z]"}
    LocaleScript{
        "Latn",
    }
    NumberElements{
        ",",
        ".",
        ";",
        "%",
        "0",
        "#",
        "-",
        "E",
        "‰",
        "∞",
        "NaN",
        "+",
    }
    NumberPatterns{
        "#,##0.###",
        "#,##0.00 ¤",
        "#,##0%",
        "#E0",
    }
    Version{"2.0.48.64"}
    calendar{
        gregorian{
            AmPmMarkers{
                "SA",
                "CH",
            }
            DateTimePatterns{
                "HH:mm:ss zzzz",
                "HH:mm:ss z",
                "HH:mm:ss",
                "HH:mm",
                "EEEE, 'ngày' dd MMMM 'năm' y",
                "'Ngày' dd 'tháng' M 'năm' y",
                "dd-MM-yyyy",
                "dd/MM/yyyy",
                "{0} {1}",
                "{0} {1}",
                "{0} {1}",
                "{0} {1}",
                "{0} {1}",
            }
            availableFormats{
                MEd{"E, d-M"}
                MMMEd{"E d MMM"}
                MMMMEd{"E d MMMM"}
                MMMMd{"d MMMM"}
                MMMd{"d MMM"}
                MMdd{"dd-MM"}
                Md{"d-M"}
                mmss{"mm:ss"}
                yMEd{"EEE, d-M-yyyy"}
                yMMM{"MMM y"}
                yMMMEd{"EEE, d MMM y"}
                yMMMM{"MMMM y"}
                yQ{"Q yyyy"}
                yQQQ{"QQQ y"}
                yyQ{"Q yy"}
                yyyy{"y"}
                yyyyMM{"MM-yyyy"}
            }
            dayNames{
                format{
                    abbreviated{
                        "CN",
                        "Th 2",
                        "Th 3",
                        "Th 4",
                        "Th 5",
                        "Th 6",
                        "Th 7",
                    }
                    wide{
                        "Chủ nhật",
                        "Thứ hai",
                        "Thứ ba",
                        "Thứ tư",
                        "Thứ năm",
                        "Thứ sáu",
                        "Thứ bảy",
                    }
                }
            }
            eras{
                abbreviated{
                    "tr. CN",
                    "sau CN",
                }
            }
            intervalFormats{
                H{
                    H{"HH'h' - HH'h'"}
                    a{"HH'h' - HH'h'"}
                }
                Hm{
                    H{"HH:mm-HH:mm"}
                    m{"HH:mm-HH:mm"}
                }
                Hmv{
                    H{"HH:mm-HH:mm v"}
                    m{"HH:mm-HH:mm v"}
                }
                Hv{
                    H{"HH'h'-HH'h' v"}
                    a{"HH'h'-HH'h' v"}
                }
                M{
                    M{"'Tháng' M - 'Tháng' M"}
                }
                MEd{
                    M{"EEEE, dd/MM - EEEE, dd/MM"}
                    d{"EEEE, dd/MM - EEEE, dd/MM"}
                }
                MMM{
                    M{"MMM-MMM"}
                }
                MMMEd{
                    M{"EEEE, 'ngày' dd 'tháng' M - EEEE, 'ngày' dd 'tháng' M"}
                    d{"EEEE, 'ngày' dd - EEEE, 'ngày' dd 'tháng' M"}
                }
                MMMd{
                    M{"'Ngày' dd 'tháng' M - 'Ngày' dd 'tháng' M"}
                    d{"'Ngày' dd 'tháng' M - 'Ngày' dd 'tháng' M"}
                }
                Md{
                    M{"dd/MM - dd/MM"}
                    d{"dd/MM - dd/MM"}
                }
                d{
                    d{"'Ngày' d-d"}
                }
                fallback{"{0} - {1}"}
                h{
                    a{"h'h' a - h'h' a"}
                    h{"h'h' - h'h' a"}
                }
                hm{
                    h{"h:mm-h:mm a"}
                    m{"h:mm-h:mm a"}
                }
                hmv{
                    h{"h:mm-h:mm a v"}
                    m{"h:mm-h:mm a v"}
                }
                hv{
                    a{"h'h' a - h'h' a v"}
                    h{"h'h'-h'h' a v"}
                }
                y{
                    y{"y-y"}
                }
                yM{
                    M{"MM/yyyy - MM/yyyy"}
                    y{"MM/yyyy - MM/yyyy"}
                }
                yMEd{
                    M{"EEEE, dd/MM/yyyy - EEEE, dd/MM/yyyy"}
                    d{"EEEE, dd/MM/yyyy - EEEE, dd/MM/yyyy"}
                    y{"EEEE, dd/MM/yyyy - EEEE, dd/MM/yyyy"}
                }
                yMMM{
                    M{"'Tháng' M - 'Tháng' M 'năm' y"}
                    y{"'Tháng' M 'năm' y - 'Tháng' M 'năm' y"}
                }
                yMMMEd{
                    M{"EEEE, 'ngày' dd MMM - EEEE, 'ngày' dd MMM 'năm' y"}
                    d{"EEEE, 'ngày' dd MMM - EEEE, 'ngày' dd MMM 'năm' y"}
                    y{"EEEE, 'ngày' dd MMM 'năm' y - EEEE, 'ngày' dd MMM 'năm' y"}
                }
                yMMMd{
                    M{"'Ngày' dd 'tháng' M - 'Ngày' dd 'tháng' M 'năm' y"}
                    d{"'Ngày' dd 'tháng' M - 'Ngày' dd 'tháng' M 'năm' y"}
                    y{"'Ngày' dd 'tháng' M 'năm' y - 'Ngày' dd 'tháng' M 'năm' y"}
                }
                yMd{
                    M{"dd/MM/yyyy - dd/MM/yyyy"}
                    d{"dd/MM/yyyy - dd/MM/yyyy"}
                    y{"dd/MM/yyyy - dd/MM/yyyy"}
                }
            }
            monthNames{
                format{
                    abbreviated{
                        "thg 1",
                        "thg 2",
                        "thg 3",
                        "thg 4",
                        "thg 5",
                        "thg 6",
                        "thg 7",
                        "thg 8",
                        "thg 9",
                        "thg 10",
                        "thg 11",
                        "thg 12",
                    }
                    wide{
                        "tháng một",
                        "tháng hai",
                        "tháng ba",
                        "tháng tư",
                        "tháng năm",
                        "tháng sáu",
                        "tháng bảy",
                        "tháng tám",
                        "tháng chín",
                        "tháng mười",
                        "tháng mười một",
                        "tháng mười hai",
                    }
                }
            }
        }
    }
    delimiters{
        alternateQuotationEnd{"’"}
        alternateQuotationStart{"‘"}
        quotationEnd{"”"}
        quotationStart{"“"}
    }
    units{
        day{
            other{"{0} ngày"}
        }
        hour{
            other{"{0} giờ"}
        }
        minute{
            other{"{0} phút"}
        }
        month{
            other{"{0} tháng"}
        }
        second{
            other{"{0} giây"}
        }
        week{
            other{"{0} tuần"}
        }
        year{
            other{"{0} năm"}
        }
    }
    unitsShort{
        day{
            other{"{0} ngày"}
        }
        hour{
            other{"{0} g"}
        }
        minute{
            other{"{0} ph"}
        }
        month{
            other{"{0} tháng"}
        }
        second{
            other{"{0} s"}
        }
        week{
            other{"{0} tuần"}
        }
        year{
            other{"{0} năm"}
        }
    }
}
