Gadgetbridge/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/BengaliLanguageUtils.java

172 lines
5.5 KiB
Java
Raw Normal View History

2017-11-22 18:57:05 +01:00
package nodomain.freeyourgadget.gadgetbridge.util;
import java.util.Hashtable;
import java.util.regex.*;
2017-11-22 18:57:05 +01:00
public class BengaliLanguageUtils extends LanguageUtils {
private final static Hashtable<String, String> composites = new Hashtable<String, String>() {
2017-11-22 18:57:05 +01:00
{
put("ক্ষ", "kkh");
put("ঞ্চ", "NC");
put("ঞ্ছ", "NCh");
put("ঞ্জ", "Ng");
put("জ্ঞ", "gg");
put("ঞ্ঝ", "Ngh");
put("্র", "r");
put("্ল", "l");
put("ষ্ম", "SSh");
put("র্", "r");
put("্য", "y");
put("্ব", "w");
2017-11-22 18:57:05 +01:00
}
};
private final static Hashtable<String, String> letters = new Hashtable<String, String>() {
2017-11-22 18:57:05 +01:00
{
put("", "aa");
put("", "a");
put("", "i");
put("", "ii");
put("", "u");
put("", "uu");
put("", "ri");
put("", "e");
put("", "oi");
put("", "o");
put("", "ou");
put("", "k");
put("", "kh");
put("", "g");
put("", "gh");
put("", "ng");
put("", "ch");
put("", "chh");
put("", "j");
put("", "jh");
put("", "Ng");
put("", "T");
put("", "Th");
put("", "D");
put("", "Dh");
put("", "N");
put("", "t");
put("", "th");
put("", "d");
put("", "dh");
put("", "n");
put("", "p");
put("", "ph");
put("", "b");
put("", "bh");
put("", "m");
put("", "J");
put("", "r");
put("", "l");
put("", "sh");
put("", "Sh");
put("", "s");
put("", "h");
put("", "rh");
put("", "rH");
put("", "y");
put("", "t");
put("", "0");
put("", "1");
put("", "2");
put("", "3");
put("", "4");
put("", "5");
put("", "6");
put("", "7");
put("", "8");
put("", "9");
put("", "aa");
put("ি", "i");
put("", "ii");
put("", "u");
put("", "uu");
put("", "r");
put("", "e");
put("", "o");
put("", "oi");
put("", "ou");
put("", "ou");
put("", "ng");
put("", "h");
put("", "nN");
put("", ".");
2017-11-22 18:57:05 +01:00
}
};
private final static String pattern = "(র্){0,1}([অ-হড়-য়](্([অ-মশ-হড়-য়]))*)((){0,1}(্([য-ল]))){0,1}([া-ৌ]){0,1}|[্ঁঃংৎ০-৯।]| ";
2017-11-22 18:57:05 +01:00
public static String transliterate(String txt) {
if (txt.isEmpty()) {
return txt;
}
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(txt);
StringBuffer sb = new StringBuffer();
while (m.find()) {
String appendableString = "";
String reff = m.group(1);
if (reff != null) {
appendableString = appendableString + "rr";
2017-11-22 18:57:05 +01:00
}
int g = 0;
while (g < 5) {
String key = m.group(g);
if (key != null) {
boolean hasKey = composites.containsKey(key);
if (hasKey) {
appendableString = appendableString + composites.get(key);
break;
}
hasKey = letters.containsKey(key);
if (hasKey) {
appendableString = appendableString + letters.get(key);
break;
}
}
g = g + 1;
2017-11-22 18:57:05 +01:00
}
g = 5;
while (g < 9) {
String key = m.group(g);
if (key != null) {
boolean hasKey = composites.containsKey(key);
if (hasKey) {
appendableString = appendableString + composites.get(key);
break;
}
hasKey = letters.containsKey(key);
if (hasKey) {
appendableString = appendableString + letters.get(key);
break;
}
2017-11-22 18:57:05 +01:00
}
g = g + 1;
}
String kaar = m.group(9);
if (kaar != null) {
boolean hasKey = letters.containsKey(kaar);
if (hasKey) {
appendableString = appendableString + letters.get(kaar);
2017-11-22 18:57:05 +01:00
}
} else if (appendableString.length() > 0 && !appendableString.equals(".")) {
appendableString = appendableString + "a";
2017-11-22 18:57:05 +01:00
}
String others = m.group(0);
if (others != null) {
2017-11-22 18:57:05 +01:00
if (appendableString.length() <= 0) {
appendableString = appendableString + others;
}
}
m.appendReplacement(sb, appendableString);
2017-11-22 18:57:05 +01:00
}
m.appendTail(sb);
return sb.toString();
2017-11-22 18:57:05 +01:00
}
}