1143657392bf0702a155fe688171a5abbf4c86570Vinit Deshpande/*
2143657392bf0702a155fe688171a5abbf4c86570Vinit Deshpande * Copyright (C) 2014 The Android Open Source Project
368cb8c02b4ad079c54a2ffd4407da921d18c7af9Wei Wang *
4143657392bf0702a155fe688171a5abbf4c86570Vinit Deshpande * Licensed under the Apache License, Version 2.0 (the "License");
5143657392bf0702a155fe688171a5abbf4c86570Vinit Deshpande * you may not use this file except in compliance with the License.
6143657392bf0702a155fe688171a5abbf4c86570Vinit Deshpande * You may obtain a copy of the License at
7143657392bf0702a155fe688171a5abbf4c86570Vinit Deshpande *
8d57031521f4687a573e82298843f6ac1906edddeWei Wang *      http://www.apache.org/licenses/LICENSE-2.0
9435236f48f94a8373fa71251a3223e642f446e77Ningyuan Wang *
10435236f48f94a8373fa71251a3223e642f446e77Ningyuan Wang * Unless required by applicable law or agreed to in writing, software
11435236f48f94a8373fa71251a3223e642f446e77Ningyuan Wang * distributed under the License is distributed on an "AS IS" BASIS,
1268cb8c02b4ad079c54a2ffd4407da921d18c7af9Wei Wang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13435236f48f94a8373fa71251a3223e642f446e77Ningyuan Wang * See the License for the specific language governing permissions and
14143657392bf0702a155fe688171a5abbf4c86570Vinit Deshpande * limitations under the License.
1568cb8c02b4ad079c54a2ffd4407da921d18c7af9Wei Wang */
16143657392bf0702a155fe688171a5abbf4c86570Vinit Deshpande
17d57031521f4687a573e82298843f6ac1906edddeWei Wangpackage com.android.layoutlib.bridge.android;
1802a1f98f2cecb8ae2d466d6f9fab06b473f970ddVinit Deshpande
19143657392bf0702a155fe688171a5abbf4c86570Vinit Deshpandeimport com.android.layoutlib.bridge.impl.RenderAction;
20143657392bf0702a155fe688171a5abbf4c86570Vinit Deshpande
21435236f48f94a8373fa71251a3223e642f446e77Ningyuan Wangimport android.icu.util.ULocale;
22143657392bf0702a155fe688171a5abbf4c86570Vinit Deshpande
23143657392bf0702a155fe688171a5abbf4c86570Vinit Deshpandeimport java.util.Locale;
24143657392bf0702a155fe688171a5abbf4c86570Vinit Deshpande
25143657392bf0702a155fe688171a5abbf4c86570Vinit Deshpande/**
26d57031521f4687a573e82298843f6ac1906edddeWei Wang * This class provides an alternate implementation for {@code java.util.Locale#toLanguageTag}
27143657392bf0702a155fe688171a5abbf4c86570Vinit Deshpande * which is only available after Java 6.
28143657392bf0702a155fe688171a5abbf4c86570Vinit Deshpande *
29143657392bf0702a155fe688171a5abbf4c86570Vinit Deshpande * The create tool re-writes references to the above mentioned method to this one. Hence it's
30d57031521f4687a573e82298843f6ac1906edddeWei Wang * imperative that this class is not deleted unless the create tool is modified.
31143657392bf0702a155fe688171a5abbf4c86570Vinit Deshpande */
32d57031521f4687a573e82298843f6ac1906edddeWei Wang@SuppressWarnings("UnusedDeclaration")
33143657392bf0702a155fe688171a5abbf4c86570Vinit Deshpandepublic class AndroidLocale {
34143657392bf0702a155fe688171a5abbf4c86570Vinit Deshpande
3568cb8c02b4ad079c54a2ffd4407da921d18c7af9Wei Wang    public static String toLanguageTag(Locale locale)  {
36143657392bf0702a155fe688171a5abbf4c86570Vinit Deshpande        return ULocale.forLocale(locale).toLanguageTag();
37143657392bf0702a155fe688171a5abbf4c86570Vinit Deshpande    }
38d57031521f4687a573e82298843f6ac1906edddeWei Wang
39d57031521f4687a573e82298843f6ac1906edddeWei Wang    public static String adjustLanguageCode(String languageCode) {
4068cb8c02b4ad079c54a2ffd4407da921d18c7af9Wei Wang        String adjusted = languageCode.toLowerCase(Locale.US);
4102a1f98f2cecb8ae2d466d6f9fab06b473f970ddVinit Deshpande        // Map new language codes to the obsolete language
42143657392bf0702a155fe688171a5abbf4c86570Vinit Deshpande        // codes so the correct resource bundles will be used.
43435236f48f94a8373fa71251a3223e642f446e77Ningyuan Wang        if (languageCode.equals("he")) {
44143657392bf0702a155fe688171a5abbf4c86570Vinit Deshpande            adjusted = "iw";
4568cb8c02b4ad079c54a2ffd4407da921d18c7af9Wei Wang        } else if (languageCode.equals("id")) {
46143657392bf0702a155fe688171a5abbf4c86570Vinit Deshpande            adjusted = "in";
47eeefcd82f4c80048f7cf49bfc1972bdfce5ecf82Andreas Gampe        } else if (languageCode.equals("yi")) {
48143657392bf0702a155fe688171a5abbf4c86570Vinit Deshpande            adjusted = "ji";
4902a1f98f2cecb8ae2d466d6f9fab06b473f970ddVinit Deshpande        }
50435236f48f94a8373fa71251a3223e642f446e77Ningyuan Wang
51143657392bf0702a155fe688171a5abbf4c86570Vinit Deshpande        return adjusted;
5268cb8c02b4ad079c54a2ffd4407da921d18c7af9Wei Wang    }
53143657392bf0702a155fe688171a5abbf4c86570Vinit Deshpande
54143657392bf0702a155fe688171a5abbf4c86570Vinit Deshpande    public static Locale forLanguageTag(String tag) {
55143657392bf0702a155fe688171a5abbf4c86570Vinit Deshpande        return ULocale.forLanguageTag(tag).toLocale();
56143657392bf0702a155fe688171a5abbf4c86570Vinit Deshpande    }
57143657392bf0702a155fe688171a5abbf4c86570Vinit Deshpande
58143657392bf0702a155fe688171a5abbf4c86570Vinit Deshpande    public static String getScript(Locale locale) {
59143657392bf0702a155fe688171a5abbf4c86570Vinit Deshpande        return ULocale.forLocale(locale).getScript();
60143657392bf0702a155fe688171a5abbf4c86570Vinit Deshpande    }
61143657392bf0702a155fe688171a5abbf4c86570Vinit Deshpande
62143657392bf0702a155fe688171a5abbf4c86570Vinit Deshpande    public static Locale getDefault() {
63143657392bf0702a155fe688171a5abbf4c86570Vinit Deshpande        BridgeContext context = RenderAction.getCurrentContext();
64143657392bf0702a155fe688171a5abbf4c86570Vinit Deshpande        if (context != null) {
65143657392bf0702a155fe688171a5abbf4c86570Vinit Deshpande            Locale locale = context.getConfiguration().locale;
66143657392bf0702a155fe688171a5abbf4c86570Vinit Deshpande            if (locale != null) {
67143657392bf0702a155fe688171a5abbf4c86570Vinit Deshpande                return locale;
6868cb8c02b4ad079c54a2ffd4407da921d18c7af9Wei Wang            }
6968cb8c02b4ad079c54a2ffd4407da921d18c7af9Wei Wang        }
7068cb8c02b4ad079c54a2ffd4407da921d18c7af9Wei Wang        return Locale.getDefault();
71143657392bf0702a155fe688171a5abbf4c86570Vinit Deshpande    }
72143657392bf0702a155fe688171a5abbf4c86570Vinit Deshpande}
73143657392bf0702a155fe688171a5abbf4c86570Vinit Deshpande