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

package com.ibm.icu.dev.data.resources;

import java.util.ListResourceBundle;

public class TestDataElments_fr_Latn_FR extends ListResourceBundle {

    private static Object[][] data = new Object[][] { 
        {
            "from_fr_Latn_FR",
            "This data comes from fr_Latn_FR"
        }
        
    };
    protected Object[][] getContents() {
        return data;
    }
}
