//*******************************************************************************
//*
//*   Copyright (C) 1998-2000, International Business Machines
//*   Corporation and others.  All Rights Reserved.
//*
//*******************************************************************************


// This is a test default locale file

default
{
    Version { 44 }

    ShortLanguage { xxx }

    string_only_in_Default { DEFAULT }

    array_only_in_Default { DEFAULT0, DEFAULT1, DEFAULT2, DEFAULT3 }

    array_2d_only_in_Default
    {
        { DEFAULT00, DEFAULT01 }
        { DEFAULT10, DEFAULT11 }
    }

    tagged_array_only_in_Default
    {
        tag2 { DEFAULT2 } 
        tag1 { DEFAULT1 } 
        tag3 { DEFAULT3 } 
        tag6 { DEFAULT6 } 
        tag12 { DEFAULT12 } 
        tag7 { DEFAULT7 } 
        tag14 { DEFAULT14 } 
        tag9 { DEFAULT9 } 
    }

    string_in_Default_te_te_IN { DEFAULT }

    array_in_Default_te_te_IN { DEFAULT0, DEFAULT1, DEFAULT2, DEFAULT3, DEFAULT4 }

    array_2d_in_Default_te_te_IN
    {
        { DEFAULT00, DEFAULT01, DEFAULT02 }
        { DEFAULT10, DEFAULT11, DEFAULT12 }
        { DEFAULT20, DEFAULT21, DEFAULT22 }
        { DEFAULT30, DEFAULT31, DEFAULT32 }
    }

    tagged_array_in_Default_te_te_IN
    {
        tag4 { DEFAULT4 } 
        tag9 { DEFAULT9 } 
        tag12 { DEFAULT12 } 
    }

    string_in_Default_te { DEFAULT }

    array_in_Default_te { DEFAULT0, DEFAULT1, DEFAULT2, DEFAULT3, DEFAULT4 }

    array_2d_in_Default_te
    {
        { DEFAULT00, DEFAULT01, DEFAULT02 }
        { DEFAULT10, DEFAULT11, DEFAULT12 }
        { DEFAULT20, DEFAULT21, DEFAULT22 }
        { DEFAULT30, DEFAULT31, DEFAULT32 }
    }

    tagged_array_in_Default_te
    {
        tag12 { DEFAULT12 } 
        tag1 { DEFAULT1 } 
        tag7 { DEFAULT7 } 
        tag3 { DEFAULT3 } 
    }

    string_in_Default_te_IN { DEFAULT }

    array_in_Default_te_IN { DEFAULT0, DEFAULT1, DEFAULT2 }

    array_2d_in_Default_te_IN
    {
        { DEFAULT00, DEFAULT01, DEFAULT02, DEFAULT03 }
        { DEFAULT10, DEFAULT11, DEFAULT12, DEFAULT13 }
        { DEFAULT20, DEFAULT21, DEFAULT22, DEFAULT23 }
    }

    tagged_array_in_Default_te_IN
    {
        tag13 { DEFAULT13 } 
        tag8 { DEFAULT8 } 
    }
}

//eof
