1 package org.daisy.pipeline.nlp;
2
3 import java.util.Arrays;
4 import java.util.HashSet;
5 import java.util.Locale;
6 import java.util.Set;
7 import java.util.regex.Matcher;
8 import java.util.regex.Pattern;
9
10 public class LanguageUtils {
11 private static Pattern localePattern = Pattern
12 .compile("(\\p{Alpha}{2})(?:[-_](\\p{Alpha}{2}))?(?:[-_](\\p{Alnum}{1,8}))*");
13
14 public static Locale stringToLanguage(String lang) {
15
16
17
18
19 Locale locale = null;
20 if (lang != null) {
21 Matcher m = localePattern.matcher(lang.toLowerCase());
22 if (m.matches()) {
23 locale = new Locale(m.group(1), m.group(2) != null ? m.group(2) : "");
24 }
25 }
26 return locale;
27 }
28
29
30 private static Set<String> RightToLeft = new HashSet<String>(Arrays.asList("yid", "ara",
31 "jpr", "per", "fas", "peo", "heb"));
32
33 public static boolean isRightToLeft(Locale l) {
34 return RightToLeft.contains(l.getISO3Language());
35 }
36
37
38
39
40 public static String getFullStopSymbol(Locale lang) {
41 return "! ";
42 }
43
44 public static String getCommaSymbol(Locale lang) {
45 return ", ";
46 }
47
48 public static String getWhiteSpaceSymbol(Locale lang) {
49 return " ";
50 }
51 }