/*
 * Copyright 2012 Google Inc.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
package com.google.gwt.i18n.client.impl.cldr;

import com.google.gwt.core.client.JavaScriptObject;

// DO NOT EDIT - GENERATED FROM CLDR DATA

/**
 * Localized names for the "nd" locale.
 */
public class LocalizedNamesImpl_nd extends LocalizedNamesImpl {

  @Override
  public String[] loadSortedRegionCodes() {
    return new String[] {
        "AC",
        "AF",
        "AR",
        "AL",
        "DZ",
        "US",
        "AD",
        "AO",
        "AI",
        "AG",
        "AQ",
        "AM",
        "AW",
        "AU",
        "AT",
        "AX",
        "AZ",
        "BB",
        "BS",
        "BH",
        "BD",
        "BY",
        "BE",
        "BZ",
        "BM",
        "BJ",
        "BO",
        "BA",
        "BF",
        "BG",
        "BI",
        "BT",
        "BL",
        "BW",
        "BQ",
        "BR",
        "IO",
        "VG",
        "BN",
        "BV",
        "KH",
        "CV",
        "KY",
        "CC",
        "CF",
        "TD",
        "CL",
        "CN",
        "CK",
        "CP",
        "HR",
        "CU",
        "CW",
        "CX",
        "CY",
        "CZ",
        "CD",
        "DK",
        "DG",
        "DJ",
        "DO",
        "DM",
        "EA",
        "TL",
        "EC",
        "EG",
        "EH",
        "SV",
        "GQ",
        "ER",
        "EE",
        "ET",
        "EU",
        "EZ",
        "FK",
        "FJ",
        "FI",
        "FO",
        "FR",
        "GA",
        "GM",
        "GE",
        "DE",
        "GG",
        "GH",
        "GI",
        "GR",
        "GL",
        "GD",
        "GS",
        "GP",
        "GU",
        "GT",
        "GN",
        "GW",
        "GY",
        "GF",
        "HT",
        "HK",
        "HM",
        "HN",
        "HU",
        "IC",
        "IS",
        "IM",
        "IN",
        "ID",
        "IQ",
        "IR",
        "IE",
        "IL",
        "IT",
        "CI",
        "JM",
        "JP",
        "JE",
        "JO",
        "QA",
        "KZ",
        "CM",
        "CA",
        "KE",
        "KI",
        "CO",
        "KM",
        "CG",
        "CR",
        "KW",
        "KG",
        "LA",
        "LV",
        "LB",
        "LS",
        "LR",
        "LY",
        "LI",
        "LT",
        "LU",
        "MK",
        "MG",
        "MW",
        "MV",
        "MY",
        "ML",
        "MT",
        "MH",
        "MQ",
        "MR",
        "MU",
        "YT",
        "ME",
        "MX",
        "MF",
        "FM",
        "MO",
        "MD",
        "MC",
        "MN",
        "MS",
        "MA",
        "MZ",
        "MM",
        "ZA",
        "NA",
        "NR",
        "NP",
        "NL",
        "NC",
        "NZ",
        "NI",
        "NE",
        "NG",
        "NU",
        "NF",
        "MP",
        "KP",
        "NO",
        "OM",
        "PW",
        "PS",
        "PA",
        "PG",
        "PY",
        "PK",
        "PE",
        "PH",
        "PL",
        "PF",
        "PN",
        "PT",
        "PR",
        "QO",
        "RU",
        "RE",
        "RO",
        "RS",
        "RW",
        "SH",
        "KN",
        "LC",
        "PM",
        "VC",
        "AS",
        "WS",
        "SM",
        "ST",
        "SA",
        "SN",
        "SC",
        "SL",
        "SG",
        "SJ",
        "SK",
        "SI",
        "SB",
        "SO",
        "KR",
        "ES",
        "LK",
        "SS",
        "SD",
        "SR",
        "SZ",
        "SE",
        "CH",
        "SX",
        "SY",
        "TA",
        "TJ",
        "TZ",
        "TF",
        "TH",
        "TW",
        "TR",
        "TG",
        "TK",
        "TO",
        "TV",
        "TT",
        "TN",
        "TM",
        "TC",
        "VI",
        "UG",
        "UM",
        "UN",
        "AE",
        "GB",
        "UZ",
        "VA",
        "VE",
        "VU",
        "VN",
        "WF",
        "XK",
        "YE",
        "UA",
        "UY",
        "ZM",
        "ZW",
    };
  }

  @Override
  protected void loadNameMapJava() {
    super.loadNameMapJava();
    namesMap.put("AD", "Andora");
    namesMap.put("AG", "Antigua le Barbuda");
    namesMap.put("AR", "Ajentina");
    namesMap.put("AS", "Samoa ye Amelika");
    namesMap.put("AW", "Arubha");
    namesMap.put("BA", "Bhosnia le Herzegovina");
    namesMap.put("BB", "Bhabhadosi");
    namesMap.put("BD", "Bhangiladeshi");
    namesMap.put("BE", "Bhelgium");
    namesMap.put("BF", "Bhukina Faso");
    namesMap.put("BG", "Bhulgariya");
    namesMap.put("BH", "Bhahareni");
    namesMap.put("BI", "Bhurundi");
    namesMap.put("BJ", "Bhenini");
    namesMap.put("BM", "Bhemuda");
    namesMap.put("BO", "Bholiviya");
    namesMap.put("BR", "Brazili");
    namesMap.put("BS", "Bhahamas");
    namesMap.put("BT", "Bhutani");
    namesMap.put("BY", "Bhelarusi");
    namesMap.put("BZ", "Bhelize");
    namesMap.put("CA", "Khanada");
    namesMap.put("CD", "Democratic Republic of the Congo");
    namesMap.put("CG", "Khongo");
    namesMap.put("CI", "Ivory Coast");
    namesMap.put("CM", "Khameruni");
    namesMap.put("CO", "Kholombiya");
    namesMap.put("CR", "Khosta Rikha");
    namesMap.put("CV", "Cape Verde Islands");
    namesMap.put("CZ", "Czech Republic");
    namesMap.put("DK", "Denmakhi");
    namesMap.put("DM", "Dominikha");
    namesMap.put("DZ", "Aljeriya");
    namesMap.put("FR", "Furansi");
    namesMap.put("GA", "Gabhoni");
    namesMap.put("GF", "Gwiyana ye Furansi");
    namesMap.put("GM", "Gambiya");
    namesMap.put("HT", "Hayiti");
    namesMap.put("ID", "Indonesiya");
    namesMap.put("IL", "Isuraeli");
    namesMap.put("IN", "Indiya");
    namesMap.put("IQ", "Iraki");
    namesMap.put("IT", "Itali");
    namesMap.put("JO", "Jodani");
    namesMap.put("KE", "Khenya");
    namesMap.put("KI", "Khiribati");
    namesMap.put("KM", "Khomoro");
    namesMap.put("KN", "Saint Kitts and Nevis");
    namesMap.put("KW", "Khuweiti");
    namesMap.put("LB", "Lebhanoni");
    namesMap.put("LC", "Saint Lucia");
    namesMap.put("LR", "Libheriya");
    namesMap.put("LY", "Libhiya");
    namesMap.put("MA", "Morokho");
    namesMap.put("MC", "Monakho");
    namesMap.put("MG", "Madagaska");
    namesMap.put("MM", "Myanmar");
    namesMap.put("MX", "Meksikho");
    namesMap.put("MY", "Malezhiya");
    namesMap.put("NA", "Namibhiya");
    namesMap.put("NG", "Nigeriya");
    namesMap.put("NO", "Noweyi");
    namesMap.put("NP", "Nephali");
    namesMap.put("OM", "Omani");
    namesMap.put("PE", "Pheru");
    namesMap.put("PF", "Pholinesiya ye Fulansi");
    namesMap.put("PK", "Phakistani");
    namesMap.put("PL", "Pholandi");
    namesMap.put("PM", "Saint Pierre and Miquelon");
    namesMap.put("PN", "Pitcairn");
    namesMap.put("PS", "Palestinian West Bank and Gaza");
    namesMap.put("QA", "Kathari");
    namesMap.put("RU", "Rashiya");
    namesMap.put("RW", "Ruwanda");
    namesMap.put("SD", "Sudani");
    namesMap.put("SH", "Saint Helena");
    namesMap.put("SN", "Senegali");
    namesMap.put("SO", "Somaliya");
    namesMap.put("ST", "São Tomé and Príncipe");
    namesMap.put("TC", "Turks and Caicos Islands");
    namesMap.put("TD", "Chadi");
    namesMap.put("TG", "Thogo");
    namesMap.put("TH", "Thayilandi");
    namesMap.put("TK", "Thokelawu");
    namesMap.put("TL", "East Timor");
    namesMap.put("TN", "Tunisiya");
    namesMap.put("TO", "Thonga");
    namesMap.put("TR", "Thekhi");
    namesMap.put("TT", "Trinidad le Tobago");
    namesMap.put("TV", "Thuvalu");
    namesMap.put("TW", "Thayiwani");
    namesMap.put("TZ", "Tanzaniya");
    namesMap.put("UA", "Yukreini");
    namesMap.put("US", "Amelika");
    namesMap.put("UY", "Yurugwai");
    namesMap.put("VA", "Vatican State");
    namesMap.put("VC", "Saint Vincent and the Grenadines");
    namesMap.put("VU", "Vhanuatu");
    namesMap.put("WF", "Wallis and Futuna");
    namesMap.put("WS", "Samowa");
    namesMap.put("YE", "Yemeni");
    namesMap.put("ZA", "Mzansi ye Afrika");
    namesMap.put("ZM", "Zambiya");
  }

  @Override
  protected JavaScriptObject loadNameMapNative() {
    return overrideMap(super.loadNameMapNative(), loadMyNameMap());
  }

  private native JavaScriptObject loadMyNameMap() /*-{
    return {
        "AD": "Andora",
        "AG": "Antigua le Barbuda",
        "AR": "Ajentina",
        "AS": "Samoa ye Amelika",
        "AW": "Arubha",
        "BA": "Bhosnia le Herzegovina",
        "BB": "Bhabhadosi",
        "BD": "Bhangiladeshi",
        "BE": "Bhelgium",
        "BF": "Bhukina Faso",
        "BG": "Bhulgariya",
        "BH": "Bhahareni",
        "BI": "Bhurundi",
        "BJ": "Bhenini",
        "BM": "Bhemuda",
        "BO": "Bholiviya",
        "BR": "Brazili",
        "BS": "Bhahamas",
        "BT": "Bhutani",
        "BY": "Bhelarusi",
        "BZ": "Bhelize",
        "CA": "Khanada",
        "CD": "Democratic Republic of the Congo",
        "CG": "Khongo",
        "CI": "Ivory Coast",
        "CM": "Khameruni",
        "CO": "Kholombiya",
        "CR": "Khosta Rikha",
        "CV": "Cape Verde Islands",
        "CZ": "Czech Republic",
        "DK": "Denmakhi",
        "DM": "Dominikha",
        "DZ": "Aljeriya",
        "FR": "Furansi",
        "GA": "Gabhoni",
        "GF": "Gwiyana ye Furansi",
        "GM": "Gambiya",
        "HT": "Hayiti",
        "ID": "Indonesiya",
        "IL": "Isuraeli",
        "IN": "Indiya",
        "IQ": "Iraki",
        "IT": "Itali",
        "JO": "Jodani",
        "KE": "Khenya",
        "KI": "Khiribati",
        "KM": "Khomoro",
        "KN": "Saint Kitts and Nevis",
        "KW": "Khuweiti",
        "LB": "Lebhanoni",
        "LC": "Saint Lucia",
        "LR": "Libheriya",
        "LY": "Libhiya",
        "MA": "Morokho",
        "MC": "Monakho",
        "MG": "Madagaska",
        "MM": "Myanmar",
        "MX": "Meksikho",
        "MY": "Malezhiya",
        "NA": "Namibhiya",
        "NG": "Nigeriya",
        "NO": "Noweyi",
        "NP": "Nephali",
        "OM": "Omani",
        "PE": "Pheru",
        "PF": "Pholinesiya ye Fulansi",
        "PK": "Phakistani",
        "PL": "Pholandi",
        "PM": "Saint Pierre and Miquelon",
        "PN": "Pitcairn",
        "PS": "Palestinian West Bank and Gaza",
        "QA": "Kathari",
        "RU": "Rashiya",
        "RW": "Ruwanda",
        "SD": "Sudani",
        "SH": "Saint Helena",
        "SN": "Senegali",
        "SO": "Somaliya",
        "ST": "São Tomé and Príncipe",
        "TC": "Turks and Caicos Islands",
        "TD": "Chadi",
        "TG": "Thogo",
        "TH": "Thayilandi",
        "TK": "Thokelawu",
        "TL": "East Timor",
        "TN": "Tunisiya",
        "TO": "Thonga",
        "TR": "Thekhi",
        "TT": "Trinidad le Tobago",
        "TV": "Thuvalu",
        "TW": "Thayiwani",
        "TZ": "Tanzaniya",
        "UA": "Yukreini",
        "US": "Amelika",
        "UY": "Yurugwai",
        "VA": "Vatican State",
        "VC": "Saint Vincent and the Grenadines",
        "VU": "Vhanuatu",
        "WF": "Wallis and Futuna",
        "WS": "Samowa",
        "YE": "Yemeni",
        "ZA": "Mzansi ye Afrika",
        "ZM": "Zambiya"
    };
  }-*/;
}
