#
# Copyright (C) 2009 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

# This is a build configuration that just contains a list of languages, with
# en_US set as the default language.
PRODUCT_LOCALES := \
        en_US \
        af_ZA \
        am_ET \
        ar_EG \
        ar_XB \
        as_IN \
        az_AZ \
        be_BY \
        bg_BG \
        bn_BD \
        bs_BA \
        ca_ES \
        cs_CZ \
        da_DK \
        de_DE \
        el_GR \
        en_AU \
        en_CA \
        en_GB \
        en_IN \
        en_XA \
        es_ES \
        es_US \
        et_EE \
        eu_ES \
        fa_IR \
        fi_FI \
        fr_CA \
        fr_FR \
        gl_ES \
        gu_IN \
        hi_IN \
        hr_HR \
        hu_HU \
        hy_AM \
        in_ID \
        is_IS \
        it_IT \
        iw_IL \
        ja_JP \
        ka_GE \
        kk_KZ \
        km_KH \
        kn_IN \
        ko_KR \
        ky_KG \
        lo_LA \
        lt_LT \
        lv_LV \
        mk_MK \
        ml_IN \
        mn_MN \
        mr_IN \
        ms_MY \
        my_MM \
        nb_NO \
        ne_NP \
        nl_NL \
        or_IN \
        pa_IN \
        pl_PL \
        pt_BR \
        pt_PT \
        ro_RO \
        ru_RU \
        si_LK \
        sk_SK \
        sl_SI \
        sq_AL \
        sr_Latn_RS \
        sr_RS \
        sv_SE \
        sw_TZ \
        ta_IN \
        te_IN \
        th_TH \
        tl_PH \
        tr_TR \
        uk_UA \
        ur_PK \
        uz_UZ \
        vi_VN \
        zh_CN \
        zh_HK \
        zh_TW \
        zu_ZA \
