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