﻿// ***************************************************************************
// *
// * Copyright (C) 2014 International Business Machines
// * Corporation and others. All Rights Reserved.
// * Tool: org.unicode.cldr.icu.NewLdml2IcuConverter
// * Source File: <path>/common/main/mt.xml
// *
// ***************************************************************************
/**
 * ICU <specials> source: <path>/common/main/mt.xml
 */
mt{
    AuxExemplarCharacters{"[c y]"}
    ExemplarCharacters{"[a à b ċ d e è f ġ g {għ} h ħ i ì j k l m n o ò p q r s t u ù v w x ż z]"}
    ExemplarCharactersIndex{"[A B Ċ C D E F Ġ G {GĦ} H Ħ I {IE} J K L M N O P Q R S T U V W X Y Ż Z]"}
    ExemplarCharactersPunctuation{"[\\- , ; \\: ! ? . ' ‘ ’ \u0022 “ ” ( ) \\[ \\] \\{ \\}]"}
    LocaleScript{
        "Latn",
    }
    NumberElements{
        latn{
            patterns{
                currencyFormat{"¤#,##0.00"}
            }
            symbols{
                decimal{"."}
                group{","}
            }
        }
    }
    Version{"2.0.97.92"}
    calendar{
        generic{
            DateTimePatterns{
                "HH:mm:ss zzzz",
                "HH:mm:ss z",
                "HH:mm:ss",
                "HH:mm",
                "EEEE, d 'ta'’ MMMM y G",
                "d 'ta'’ MMMM y G",
                "dd MMM y G",
                "dd/MM/y GGGGG",
                "{1} {0}",
                "{1} {0}",
                "{1} {0}",
                "{1} {0}",
                "{1} {0}",
            }
        }
        gregorian{
            AmPmMarkers{
                "QN",
                "WN",
            }
            DateTimePatterns{
                "HH:mm:ss zzzz",
                "HH:mm:ss z",
                "HH:mm:ss",
                "HH:mm",
                "EEEE, d 'ta'’ MMMM y",
                "d 'ta'’ MMMM y",
                "dd MMM y",
                "dd/MM/y",
                "{1} {0}",
                "{1} {0}",
                "{1} {0}",
                "{1} {0}",
                "{1} {0}",
            }
            dayNames{
                format{
                    abbreviated{
                        "Ħad",
                        "Tne",
                        "Tli",
                        "Erb",
                        "Ħam",
                        "Ġim",
                        "Sib",
                    }
                    narrow{
                        "Ħ",
                        "T",
                        "T",
                        "E",
                        "Ħ",
                        "Ġ",
                        "S",
                    }
                    wide{
                        "Il-Ħadd",
                        "It-Tnejn",
                        "It-Tlieta",
                        "L-Erbgħa",
                        "Il-Ħamis",
                        "Il-Ġimgħa",
                        "Is-Sibt",
                    }
                }
                stand-alone{
                    narrow{
                        "Ħ",
                        "T",
                        "T",
                        "E",
                        "Ħ",
                        "Ġ",
                        "S",
                    }
                }
            }
            eras{
                abbreviated{
                    "QK",
                    "WK",
                }
                wide{
                    "Qabel Kristu",
                    "Wara Kristu",
                }
            }
            monthNames{
                format{
                    abbreviated{
                        "Jan",
                        "Fra",
                        "Mar",
                        "Apr",
                        "Mej",
                        "Ġun",
                        "Lul",
                        "Aww",
                        "Set",
                        "Ott",
                        "Nov",
                        "Diċ",
                    }
                    wide{
                        "Jannar",
                        "Frar",
                        "Marzu",
                        "April",
                        "Mejju",
                        "Ġunju",
                        "Lulju",
                        "Awwissu",
                        "Settembru",
                        "Ottubru",
                        "Novembru",
                        "Diċembru",
                    }
                }
                stand-alone{
                    narrow{
                        "J",
                        "F",
                        "M",
                        "A",
                        "M",
                        "Ġ",
                        "L",
                        "A",
                        "S",
                        "O",
                        "N",
                        "D",
                    }
                    wide{
                        "Jannar",
                        "Frar",
                        "Marzu",
                        "April",
                        "Mejju",
                        "Ġunju",
                        "Lulju",
                        "Awwissu",
                        "Settembru",
                        "Ottubru",
                        "Novembru",
                        "Diċembru",
                    }
                }
            }
            quarters{
                format{
                    abbreviated{
                        "K1",
                        "K2",
                        "K3",
                        "K4",
                    }
                    narrow{
                        "1",
                        "2",
                        "3",
                        "4",
                    }
                    wide{
                        "K1",
                        "K2",
                        "K3",
                        "K4",
                    }
                }
                stand-alone{
                    abbreviated{
                        "K1",
                        "K2",
                        "K3",
                        "K4",
                    }
                    narrow{
                        "1",
                        "2",
                        "3",
                        "4",
                    }
                    wide{
                        "1el kwart",
                        "2ni kwart",
                        "3et kwart",
                        "4ba' kwart",
                    }
                }
            }
        }
    }
    fields{
        day{
            dn{"Jum"}
            relative{
                "-1"{"Ilbieraħ"}
                "0"{"Illum"}
                "1"{"Għada"}
            }
        }
        era{
            dn{"Epoka"}
        }
        hour{
            dn{"Siegħa"}
        }
        minute{
            dn{"Minuta"}
        }
        mon{
            relative{
                "-1"{"It-Tnejn li għadda"}
                "1"{"It-Tnejn li ġej"}
            }
        }
        month{
            dn{"Xahar"}
            relative{
                "-1"{"Ix-xahar li għadda"}
                "0"{"Dan ix-xahar"}
                "1"{"Ix-xahar id-dieħel"}
            }
        }
        second{
            dn{"Sekonda"}
        }
        sun{
            relative{
                "-1"{"Il-Ħadd li għadda"}
                "0"{"Dan il-Ħadd"}
                "1"{"Il-Ħadd li ġej"}
            }
        }
        week{
            dn{"Ġimgħa"}
            relative{
                "-1"{"Il-ġimgħa li għaddiet"}
                "0"{"Din il-ġimgħa"}
                "1"{"Il-ġimgħa d-dieħla"}
            }
        }
        weekday{
            dn{"Jum tal-Ġimgħa"}
        }
        year{
            dn{"Sena"}
            relative{
                "-1"{"Is-sena li għaddiet"}
                "1"{"Is-sena d-dieħla"}
            }
            relativeTime{
                past{
                    few{"{0} snin ilu"}
                    many{"{0} snin ilu"}
                    one{"{0} sena ilu"}
                    other{"{0} snin ilu"}
                }
            }
        }
        zone{
            dn{"Żona"}
        }
    }
    measurementSystemNames{
        UK{"UK"}
        US{"US"}
        metric{"Metriku"}
    }
}
