﻿// ***************************************************************************
// *
// * Copyright (C) 2015 International Business Machines
// * Corporation and others. All Rights Reserved.
// * Tool: org.unicode.cldr.icu.NewLdml2IcuConverter
// * Source File: <path>/common/main/ee.xml
// *
// ***************************************************************************
ee{
    Version{"2.1.19.14"}
    units{
        duration{
            day{
                dnam{"ŋkekewo"}
                one{"ŋkeke {0}"}
                other{"ŋkeke {0}"}
            }
            hour{
                dnam{"gaƒoƒowo"}
                one{"gaƒoƒo {0}"}
                other{"gaƒoƒo {0}"}
            }
            minute{
                dnam{"aɖabaƒoƒowo"}
                one{"aɖabaƒoƒo {0}"}
                other{"aɖabaƒoƒo {0}"}
            }
            month{
                dnam{"ɣletiwo"}
                one{"ɣleti {0}"}
                other{"ɣleti {0}"}
            }
            second{
                one{"sekend {0} wo"}
                other{"sekend {0} wo"}
            }
            week{
                dnam{"kɔsiɖawo"}
                one{"kɔsiɖa {0}"}
                other{"kɔsiɖa {0}"}
            }
            year{
                dnam{"ƒewo"}
                one{"ƒe {0}"}
                other{"ƒe {0}"}
            }
        }
    }
    unitsNarrow{
        duration{
            day{
                dnam{"ŋkeke"}
                one{"ŋkeke {0}"}
                other{"ŋkeke {0}"}
            }
            hour{
                dnam{"gaƒoƒo"}
                one{"gaƒoƒo {0}"}
                other{"gaƒoƒo {0}"}
            }
            minute{
                dnam{"aɖabaƒoƒo"}
                one{"a {0}"}
                other{"a {0}"}
            }
            month{
                dnam{"ɣletiwo"}
                one{"ɣleti {0}"}
                other{"ɣleti {0}"}
            }
            second{
                one{"s {0}"}
                other{"s {0}"}
            }
            week{
                dnam{"kɔsiɖa"}
                one{"kɔsiɖa {0}"}
                other{"kɔsiɖa {0}"}
            }
            year{
                dnam{"ƒe"}
                one{"ƒe {0}"}
                other{"ƒe {0}"}
            }
        }
    }
    unitsShort{
        duration{
            day{
                dnam{"ŋkekewo"}
                one{"ŋkeke {0}"}
                other{"ŋkeke {0}"}
            }
            hour{
                dnam{"gaƒoƒowo"}
                one{"gaƒoƒo {0}"}
                other{"gaƒoƒo {0}"}
            }
            minute{
                dnam{"aɖabaƒoƒowo"}
                one{"aɖabaƒoƒo {0}"}
                other{"aɖabaƒoƒo {0}"}
            }
            month{
                dnam{"ɣletiwo"}
                one{"ɣleti {0}"}
                other{"ɣleti {0}"}
            }
            second{
                one{"sekend {0}"}
                other{"sekend {0}"}
            }
            week{
                dnam{"kɔsiɖawo"}
                one{"kɔsiɖa {0}"}
                other{"kɔsiɖa {0}"}
            }
            year{
                dnam{"ƒewo"}
                one{"ƒe {0}"}
                other{"ƒe {0}"}
            }
        }
    }
}
