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


// This is a test default locale file

default
{
    Version { 44.0 }

    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
