/*
 *******************************************************************************
 * Copyright (C) 2012-2012, Google, International Business Machines Corporation and    *
 * others. All Rights Reserved.                                                *
 *******************************************************************************
 */
package com.ibm.icu.util;

class ListFormatData {
    static void load() {
        ListFormat.add("af", "{0} en {1}", "{0}, {1}", "{0}, {1}", "{0} en {1}");
        ListFormat.add("am", "{0} እና {1}", "{0}, {1}", "{0}, {1}", "{0}, እና {1}");
        ListFormat.add("ar", "{0} و {1}", "{0}، {1}", "{0}، {1}", "{0}، و {1}");
        ListFormat.add("bg", "{0} и {1}", "{0}, {1}", "{0}, {1}", "{0} и {1}");
        ListFormat.add("bn", "{0} এবং {1}", "{0}, {1}", "{0}, {1}", "{0}, এবং {1}");
        ListFormat.add("bs", "{0} i {1}", "{0}, {1}", "{0}, {1}", "{0} i {1}");
        ListFormat.add("ca", "{0} i {1}", "{0}, {1}", "{0}, {1}", "{0} i {1}");
        ListFormat.add("cs", "{0} a {1}", "{0}, {1}", "{0}, {1}", "{0} a {1}");
        ListFormat.add("da", "{0} og {1}", "{0}, {1}", "{0}, {1}", "{0} og {1}");
        ListFormat.add("de", "{0} und {1}", "{0}, {1}", "{0}, {1}", "{0} und {1}");
        ListFormat.add("ee", "{0} kple {1}", "{0}, {1}", "{0}, {1}", "{0}, kple {1}");
        ListFormat.add("el", "{0} και {1}", "{0}, {1}", "{0}, {1}", "{0} και {1}");
        ListFormat.add("en", "{0} and {1}", "{0}, {1}", "{0}, {1}", "{0}, and {1}");
        ListFormat.add("es", "{0} y {1}", "{0}, {1}", "{0}, {1}", "{0} y {1}");
        ListFormat.add("et", "{0} ja {1}", "{0}, {1}", "{0}, {1}", "{0} ja {1}");
        ListFormat.add("eu", "{0} eta {1}", "{0}, {1}", "{0}, {1}", "{0} eta {1}");
        ListFormat.add("fa", "{0} و {1}", "{0}،‏ {1}", "{0}،‏ {1}", "{0}، و {1}");
        ListFormat.add("fi", "{0} ja {1}", "{0}, {1}", "{0}, {1}", "{0} ja {1}");
        ListFormat.add("fil", "{0} at {1}", "{0}, {1}", "{0}, {1}", "{0} at {1}");
        ListFormat.add("fo", "{0} og {1}", "{0}, {1}", "{0}, {1}", "{0} og {1}");
        ListFormat.add("fr", "{0} et {1}", "{0}, {1}", "{0}, {1}", "{0} et {1}");
        ListFormat.add("fur", "{0} e {1}", "{0}, {1}", "{0}, {1}", "{0} e {1}");
        ListFormat.add("gd", "{0} agus {1}", "{0}, {1}", "{0}, {1}", "{0}, agus {1}");
        ListFormat.add("gl", "{0} e {1}", "{0}, {1}", "{0}, {1}", "{0} e {1}");
        ListFormat.add("gsw", "{0} und {1}", "{0}, {1}", "{0}, {1}", "{0} und {1}");
        ListFormat.add("gu", "{0} અને {1}", "{0}, {1}", "{0}, {1}", "{0} અને {1}");
        ListFormat.add("he", "{0} ו-{1}", "{0}, {1}", "{0}, {1}", "{0} ו-{1}");
        ListFormat.add("hi", "{0} और {1}", "{0}, {1}", "{0}, {1}", "{0}, और {1}");
        ListFormat.add("hr", "{0} i {1}", "{0}, {1}", "{0}, {1}", "{0} i {1}");
        ListFormat.add("hu", "{0} és {1}", "{0}, {1}", "{0}, {1}", "{0} és {1}");
        ListFormat.add("id", "{0} dan {1}", "{0}, {1}", "{0}, {1}", "{0}, dan {1}");
        ListFormat.add("is", "{0} og {1}", "{0}, {1}", "{0}, {1}", "{0} og {1}");
        ListFormat.add("it", "{0} e {1}", "{0}, {1}", "{0}, {1}", "{0}, e {1}");
        ListFormat.add("ja", "{0}、{1}", "{0}、{1}", "{0}、{1}", "{0}、{1}");
        ListFormat.add("ka", "{0} და {1}", "{0}, {1}", "{0}, {1}", "{0} და {1}");
        ListFormat.add("kea", "{0} y {1}", "{0}, {1}", "{0}, {1}", "{0} y {1}");
        ListFormat.add("kl", "{0} aamma {1}", "{0} aamma {1}", "{0}, {1}", "{0}, {1}");
        ListFormat.add("kn", "{0} ಮತ್ತು {1}", "{0}, {1}", "{0}, {1}", "{0}, ಮತ್ತು {1}");
        ListFormat.add("ko", "{0} 및 {1}", "{0}, {1}", "{0}, {1}", "{0} 및 {1}");
        ListFormat.add("ksh", "{0} un {1}", "{0}, {1}", "{0}, {1}", "{0} un {1}");
        ListFormat.add("lt", "{0} ir {1}", "{0}, {1}", "{0}, {1}", "{0} ir {1}");
        ListFormat.add("lv", "{0} un {1}", "{0}, {1}", "{0}, {1}", "{0} un {1}");
        ListFormat.add("ml", "{0} കൂടാതെ {1}", "{0}, {1}", "{0}, {1}", "{0}, {1} എന്നിവ");
        ListFormat.add("mr", "{0} आणि {1}", "{0}, {1}", "{0}, {1}", "{0} आणि {1}");
        ListFormat.add("ms", "{0} dan {1}", "{0}, {1}", "{0}, {1}", "{0}, dan {1}");
        ListFormat.add("nb", "{0} og {1}", "{0}, {1}", "{0}, {1}", "{0} og {1}");
        ListFormat.add("nl", "{0} en {1}", "{0}, {1}", "{0}, {1}", "{0} en {1}");
        ListFormat.add("nn", "{0} og {1}", "{0}, {1}", "{0}, {1}", "{0} og {1}");
        ListFormat.add("pl", "{0} i {1}", "{0}; {1}", "{0}; {1}", "{0} i {1}");
        ListFormat.add("pt", "{0} e {1}", "{0}, {1}", "{0}, {1}", "{0} e {1}");
        ListFormat.add("ro", "{0} şi {1}", "{0}, {1}", "{0}, {1}", "{0} şi {1}");
        ListFormat.add("", "{0}, {1}", "{0}, {1}", "{0}, {1}", "{0}, {1}"); // root
        ListFormat.add("ru", "{0} и {1}", "{0}, {1}", "{0}, {1}", "{0} и {1}");
        ListFormat.add("se", "{0} ja {1}", "{0}, {1}", "{0}, {1}", "{0} ja {1}");
        ListFormat.add("sk", "{0} a {1}", "{0}, {1}", "{0}, {1}", "{0} a {1}");
        ListFormat.add("sl", "{0} in {1}", "{0}, {1}", "{0}, {1}", "{0} in {1}");
        ListFormat.add("sr", "{0} и {1}", "{0}, {1}", "{0}, {1}", "{0} и {1}");
        ListFormat.add("sr_Cyrl", "{0} и {1}", "{0}, {1}", "{0}, {1}", "{0} и {1}");
        ListFormat.add("sr_Latn", "{0} i {1}", "{0}, {1}", "{0}, {1}", "{0} i {1}");
        ListFormat.add("sv", "{0} och {1}", "{0}, {1}", "{0}, {1}", "{0} och {1}");
        ListFormat.add("sw", "{0} na {1}", "{0}, {1}", "{0}, {1}", "{0}, na {1}");
        ListFormat.add("ta", "{0} மற்றும் {1}", "{0}, {1}", "{0}, {1}", "{0} மற்றும் {1}");
        ListFormat.add("te", "{0} మరియు {1}", "{0}, {1}", "{0}, {1}", "{0} మరియు {1}");
        ListFormat.add("th", "{0}และ{1}", "{0} {1}", "{0} {1}", "{0} และ{1}");
        ListFormat.add("tr", "{0} ve {1}", "{0}, {1}", "{0}, {1}", "{0} ve {1}");
        ListFormat.add("uk", "{0} та {1}", "{0}, {1}", "{0}, {1}", "{0} та {1}");
        ListFormat.add("ur", "{0} اور {1}", "{0}، {1}", "{0}، {1}", "{0}، اور {1}");
        ListFormat.add("vi", "{0} và {1}", "{0}, {1}", "{0}, {1}", "{0} và {1}");
        ListFormat.add("wae", "{0} und {1}", "{0}, {1}", "{0}, {1}", "{0} und {1}");
        ListFormat.add("zh", "{0}和{1}", "{0}、{1}", "{0}、{1}", "{0}和{1}");
        ListFormat.add("zh", "{0}和{1}", "{0}、{1}", "{0}、{1}", "{0}和{1}");
        ListFormat.add("zu", "I-{0} ne-{1}", "{0}, {1}", "{0}, {1}", "{0}, no-{1}");
    }
}
