//*******************************************************************************
// Copyright (C) 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html
//*
//*   Copyright (C) 1998-2013, International Business Machines
//*   Corporation and others.  All Rights Reserved.
//*
//*******************************************************************************


// This is a test locale file for the fake locale 'te'

te
{
    string_only_in_te { TE }

    string_in_te_no_te_IN_fallback { TE_no_fallback }

    array_only_in_te { TE0, TE1, TE2, TE3 }

    array_2d_only_in_te
    {
        { TE00, TE01 }
        { TE10, TE11 }
    }

    tagged_array_only_in_te
    {
        tag9 { TE9 } 
        tag11 { TE11 } 
        tag3 { TE3 } 
        tag4 { TE4 }
    }

    string_in_Root_te_te_IN { TE }

    array_in_Root_te_te_IN { TE0, TE1, TE2, TE3, TE4 }

    array_2d_in_Root_te_te_IN
    {
        { TE00, TE01, TE02 }
        { TE10, TE11, TE12 }
        { TE20, TE21, TE22 }
        { TE30, TE31, TE32 }
    }

    tagged_array_in_Root_te_te_IN
    {
        tag7 { TE7 } 
        tag8 { TE8 } 
        tag14 { TE14 } 
        tag0 { TE0 } 
        tag4 { TE4 } 
        tag10 { TE10 } 
    }

    string_in_Root_te { TE }

    array_in_Root_te { TE0, TE1, TE2, TE3, TE4 }

    array_2d_in_Root_te
    {
        { TE00, TE01, TE02 }
        { TE10, TE11, TE12 }
        { TE20, TE21, TE22 }
        { TE30, TE31, TE32 }
    }

    tagged_array_in_Root_te
    {
        tag2 { TE2 } 
        tag1 { TE1 } 
        tag0 { TE0 } 
        tag3 { TE3 }
        tag4 { TE4 } 
        tag5 { TE5 } 
        tag6 { TE6 }
    }

    string_in_te_te_IN { TE }

    array_in_te_te_IN { TE0, TE1, TE2 }

    array_2d_in_te_te_IN
    {
        { TE00, TE01, TE02 }
        { TE10, TE11, TE12 }
        { TE20, TE21, TE22 }
    }

    tagged_array_in_te_te_IN
    {
        tag0 { TE0 } 
    }

    collations {
      standard { 
        Version { "1.0" }
        Override { "FALSE" }
        Sequence {"[reorder Grek] & A < a\u0308 , A\u0308 & C < c\u0327 , C\u0327 & G < g"
            "\u0306 , G\u0306 & H < \u0131 , I , i , \u0130 < \u0132 , \u0133 & O < o\u0308 "
            ", O\u0308 & S < s\u0327 , S\u0327 & U < u\u0308 , U\u0308" }
      }
    }
    aliasClient:alias {"/LOCALE/aliasDestination"}
    aliasDestination {"tedest"}
    rootAliasDestination {"correct"}
    a {
    a1{"a21"}
    a2{"a22"}
        a3{"a23"}
    a4{"a24"}
    }    
  zoneStrings{
        {
            "Pacific/Honolulu",
            "Hawaii Standard Time",
            "HST",
            "Hawaii Daylight Time",
            "HDT",
            "Honolulu",
            "Hawaii Time",
            "HT",
        }
        {
            "America/Anchorage",
            "Alaska Standard Time",
            "AKST",
            "Alaska Daylight Time",
            "AKDT",
            "Anchorage",
            "Alaska Time",
            "AKT",
        }
        {
            "America/Los_Angeles",
            "Pacific Standard Time",
            "PST",
            "Pacific Daylight Time",
            "PDT",
            "Los Angeles",
            "Pacific Time",
            "PT",
        }
        {
            "America/Phoenix",
            "Mountain Standard Time",
            "MST",
            "Mountain Daylight Time",
            "MDT",
            "Phoenix",
            "Mountain Time",
            "MT",
        }
        {
            "America/Denver",
            "Mountain Standard Time",
            "MST",
            "Mountain Daylight Time",
            "MDT",
            "Denver",
            "Mountain Time",
            "MT",
        }
    }

    tableT7996 {
        a7996:alias {"sh"}
        c7996 {"string c7996 in tableT7996 for te"}
    }
}

//eof
