1 /*
2  * Copyright (C) 2014 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.layoutlib.bridge.android;
18 
19 import com.android.layoutlib.bridge.impl.RenderAction;
20 
21 import android.os.LocaleList;
22 
23 import java.util.Locale;
24 
25 /**
26  * This class provides an alternate implementation for {@code java.util.Locale#adjustLanguageCode}
27  * which is not available in openJDK. It also overrides the getDefault method.
28  *
29  * The create tool re-writes references to the above mentioned method to this one. Hence it's
30  * imperative that this class is not deleted unless the create tool is modified.
31  */
32 @SuppressWarnings("UnusedDeclaration")
33 public class AndroidLocale {
34 
adjustLanguageCode(String languageCode)35     public static String adjustLanguageCode(String languageCode) {
36         String adjusted = languageCode.toLowerCase(Locale.US);
37         // Map new language codes to the obsolete language
38         // codes so the correct resource bundles will be used.
39         if (languageCode.equals("he")) {
40             adjusted = "iw";
41         } else if (languageCode.equals("id")) {
42             adjusted = "in";
43         } else if (languageCode.equals("yi")) {
44             adjusted = "ji";
45         }
46 
47         return adjusted;
48     }
49 
getDefault()50     public static Locale getDefault() {
51         BridgeContext context = RenderAction.getCurrentContext();
52         if (context != null) {
53             LocaleList localeList = context.getConfiguration().getLocales();
54             if (!localeList.isEmpty()) {
55                 return localeList.get(0);
56             }
57         }
58         return Locale.getDefault();
59     }
60 }
61