11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Copyright 2014 The Chromium Authors. All rights reserved.
21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Use of this source code is governed by a BSD-style license that can be
31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// found in the LICENSE file.
41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccipackage org.chromium.base;
61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciimport java.util.Locale;
81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/**
101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * This class provides the locale related methods.
111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci */
121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccipublic class LocaleUtils {
131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    /**
141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     * Guards this class from being instantiated.
151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     */
161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    private LocaleUtils() {
171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    }
181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    /**
201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     * @return the default locale, translating Android deprecated
211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     * language codes into the modern ones used by Chromium.
221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     */
231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    public static String getDefaultLocale() {
241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        Locale locale = Locale.getDefault();
251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        String language = locale.getLanguage();
261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        String country = locale.getCountry();
271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        // Android uses deprecated lanuages codes for Hebrew and Indonesian but Chromium uses the
291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        // updated codes. Also, Android uses "tl" while Chromium uses "fil" for Tagalog/Filipino.
301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        // So apply a mapping.
311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        // See http://developer.android.com/reference/java/util/Locale.html
321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        if ("iw".equals(language)) {
331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci            language = "he";
341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        } else if ("in".equals(language)) {
351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci            language = "id";
361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        } else if ("tl".equals(language)) {
371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci            language = "fil";
381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        }
391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        return country.isEmpty() ? language : language + "-" + country;
401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    }
411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
42