917c135c56ba5cf16499c3a4507a4ef05e91c911
[zxing.git] / android / src / com / google / zxing / client / android / LocaleManager.java
1 /*
2  * Copyright (C) 2008 ZXing authors
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.google.zxing.client.android;
18
19 import java.util.Locale;
20 import java.util.Map;
21 import java.util.HashMap;
22
23 /**
24  * Handles any locale-specific logic for the client.
25  */
26 public final class LocaleManager {
27
28   private static final String DEFAULT_TLD = "com";
29   private static final Map<Locale,String> GOOGLE_COUNTRY_TLD;
30   static {
31     GOOGLE_COUNTRY_TLD = new HashMap<Locale,String>();
32     GOOGLE_COUNTRY_TLD.put(Locale.CANADA, "ca");
33     GOOGLE_COUNTRY_TLD.put(Locale.CHINA, "cn");
34     GOOGLE_COUNTRY_TLD.put(Locale.FRANCE, "fr");
35     GOOGLE_COUNTRY_TLD.put(Locale.GERMANY, "de");
36     GOOGLE_COUNTRY_TLD.put(Locale.ITALY, "it");
37     GOOGLE_COUNTRY_TLD.put(Locale.JAPAN, "co.jp");
38     GOOGLE_COUNTRY_TLD.put(Locale.KOREA, "co.kr");
39     GOOGLE_COUNTRY_TLD.put(Locale.TAIWAN, "de");
40     GOOGLE_COUNTRY_TLD.put(Locale.UK, "co.uk");
41   }
42
43   // Google Product Search for mobile is available in fewer countries than web search.
44   private static final Map<Locale,String> GOOGLE_PRODUCT_SEARCH_COUNTRY_TLD;
45   static {
46     GOOGLE_PRODUCT_SEARCH_COUNTRY_TLD = new HashMap<Locale,String>();
47     GOOGLE_PRODUCT_SEARCH_COUNTRY_TLD.put(Locale.UK, "co.uk");
48     GOOGLE_PRODUCT_SEARCH_COUNTRY_TLD.put(Locale.GERMANY, "de");
49   }
50
51   private static final Map<Locale,String> GOOGLE_BOOK_SEARCH_COUNTRY_TLD;
52   static {
53     GOOGLE_BOOK_SEARCH_COUNTRY_TLD = new HashMap<Locale,String>();
54     GOOGLE_BOOK_SEARCH_COUNTRY_TLD.putAll(GOOGLE_COUNTRY_TLD);
55     GOOGLE_BOOK_SEARCH_COUNTRY_TLD.remove(Locale.CHINA);
56   }
57
58   private LocaleManager() {}
59
60   /**
61    * @return country-specific TLD suffix appropriate for the current default locale
62    *  (e.g. "co.uk" for the United Kingdom)
63    */
64   public static String getCountryTLD() {
65     return doGetTLD(GOOGLE_COUNTRY_TLD);
66   }
67
68   /**
69    * The same as above, but specifically for Google Product Search.
70    * @return The top-level domain to use.
71    */
72   public static String getProductSearchCountryTLD() {
73     return doGetTLD(GOOGLE_PRODUCT_SEARCH_COUNTRY_TLD);
74   }
75
76   /**
77    * The same as above, but specifically for Google Book Search.
78    * @return The top-level domain to use.
79    */
80   public static String getBookSearchCountryTLD() {
81     return doGetTLD(GOOGLE_BOOK_SEARCH_COUNTRY_TLD);
82   }
83
84
85   private static String doGetTLD(Map<Locale,String> map) {
86     Locale locale = Locale.getDefault();
87     if (locale == null) {
88       return DEFAULT_TLD;
89     }
90     String tld = map.get(locale);
91     if (tld == null) {
92       return DEFAULT_TLD;
93     }
94     return tld;
95   }
96
97 }