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


// This is a test default locale file

root
{
    Version { 44.0 }

    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
