#
# 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.
#
# These are all the locales that have translations.
PRODUCT_LOCALES := \
        en_US \
        af_ZA \
        am_ET \
        ar_EG \
        ar_XB \
        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 \
        en_XC \
        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 \
        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
