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


// This is a test default locale file

root
{
    Version { 44 }

    ShortLanguage { xxx }

    string_only_in_Root { ROOT }

    array_only_in_Root { ROOT0, ROOT1, ROOT2, ROOT3 }

    array_2d_only_in_Root
    {
        { ROOT00, ROOT01 }
        { ROOT10, ROOT11 }
    }

    tagged_array_only_in_Root
    {
        tag2 { ROOT2 } 
        tag1 { ROOT1 } 
        tag3 { ROOT3 } 
        tag6 { ROOT6 } 
        tag12 { ROOT12 } 
        tag7 { ROOT7 } 
        tag14 { ROOT14 } 
        tag9 { ROOT9 } 
    }

    string_in_Root_te_te_IN { ROOT }

    array_in_Root_te_te_IN { ROOT0, ROOT1, ROOT2, ROOT3, ROOT4 }

    array_2d_in_Root_te_te_IN
    {
        { ROOT00, ROOT01, ROOT02 }
        { ROOT10, ROOT11, ROOT12 }
        { ROOT20, ROOT21, ROOT22 }
        { ROOT30, ROOT31, ROOT32 }
    }

    tagged_array_in_Root_te_te_IN
    {
        tag4 { ROOT4 } 
        tag9 { ROOT9 } 
        tag12 { ROOT12 } 
    }

    string_in_Root_te { ROOT }

    array_in_Root_te { ROOT0, ROOT1, ROOT2, ROOT3, ROOT4 }

    array_2d_in_Root_te
    {
        { ROOT00, ROOT01, ROOT02 }
        { ROOT10, ROOT11, ROOT12 }
        { ROOT20, ROOT21, ROOT22 }
        { ROOT30, ROOT31, ROOT32 }
    }

    tagged_array_in_Root_te
    {
        tag12 { ROOT12 } 
        tag1 { ROOT1 } 
        tag7 { ROOT7 } 
        tag3 { ROOT3 } 
    }

    string_in_Root_te_IN { ROOT }

    array_in_Root_te_IN { ROOT0, ROOT1, ROOT2 }

    array_2d_in_Root_te_IN
    {
        { ROOT00, ROOT01, ROOT02, ROOT03 }
        { ROOT10, ROOT11, ROOT12, ROOT13 }
        { ROOT20, ROOT21, ROOT22, ROOT23 }
    }

    tagged_array_in_Root_te_IN
    {
        tag13 { ROOT13 } 
        tag8 { ROOT8 } 
    }
}

//eof
