| LocaleHelper.java |
1 /*
2 * Copyright 2000-2001,2004 The Apache Software Foundation.
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 org.apache.wsrp4j.util;
18
19 import java.util.ArrayList;
20 import java.util.Locale;
21
22 public class LocaleHelper {
23 private final static String LOCALE_SEPARATOR = "-";
24
25 /**
26 * Gets the language code from a locales string representation, assuming
27 * that the provided locale has a format like [2 char language code]"-"[2 char country code].
28 *
29 * @param locale The locale as <code>String</code>.
30 * @return The language code.
31 **/
32 public static String getLanguageCode(String locale) {
33
34 String code = "";
35
36 int pos = locale.indexOf(LOCALE_SEPARATOR);
37
38 if (pos != -1) {
39 code = locale.substring(0, pos);
40
41 }
42 else if (locale.length() == 2) {
43 //see if locale is language only
44 code = locale;
45
46 }
47 else if ((pos = locale.indexOf("_")) != -1) {
48
49 // see if separator is "_" instead of "-"
50 code = locale.substring(0, pos);
51
52 }
53
54 return code;
55 }
56
57 /**
58 * Gets the country code from a locales string representation, assuming
59 * that the provided locale has a format like [2 char language code]"-"[2 char country code].
60 *
61 * @param locale The locale as <code>String</code>.
62 * @return The country code.
63 **/
64 public static String getCountryCode(String locale) {
65
66 String code = "";
67
68 int pos = locale.indexOf(LOCALE_SEPARATOR);
69
70 if (pos != -1) {
71 code = locale.substring(pos + 1, locale.length());
72
73 }
74 else if ((pos = locale.indexOf("_")) != -1) {
75
76 // see if separator is "_" instead of "-"
77 code = locale.substring(0, pos);
78 }
79
80 return code;
81 }
82
83 /**
84 * Convinence method to create a <code>Locale</code> object from a locales
85 * string representation, assuming that the provided locale has a format like
86 * [2 char language code]"-"[2 char country code].
87 *
88 * @param locale The locale as <code>String</code>.
89 * @return The corresponding <code>Locale</code> object.
90 **/
91 public static Locale getLocale(String locale) {
92 return new Locale(getLanguageCode(locale), getCountryCode(locale));
93 }
94
95 /**
96 * The method takes a given <code>Locale</code> and returns a string
97 * representation which is conform to the WSRP standard.
98 *
99 * @param locale The <code>Locale</code> to be formatted.
100 * @return A string representation of the given locale which is conform to the
101 * WSRP standard.
102 **/
103 public static String getWsrpLocale(Locale locale) {
104 if (locale == null)
105 return null;
106
107 String lang = locale.getLanguage();
108 String country = locale.getCountry();
109
110 return lang
111 + ((country != null && !country.equals("")) ? "-" + country
112 : "");
113 }
114
115 /**
116 * Convinence method to create a <code>Locale</code> object array from a locales
117 * string array representation, assuming that the provided locale has a format like
118 * [2 char language code]"-"[2 char country code].
119 *
120 * @param locales The locale as <code>String</code>.
121 * @return The corresponding <code>Locale</code> object.
122 **/
123 public static Locale[] getLocales(String[] locales) {
124
125 ArrayList list = new ArrayList();
126
127 for (int i = 0; i < locales.length; i++) {
128 list.add(getLocale(locales[i]));
129 }
130
131 Locale[] typedArray = new Locale[locales.length];
132
133 return (Locale[]) list.toArray(typedArray);
134 }
135 }