summaryrefslogtreecommitdiff
path: root/src/translate.erl
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/translate.erl39
1 files changed, 30 insertions, 9 deletions
diff --git a/src/translate.erl b/src/translate.erl
index 664cbed4..a6cc8c14 100644
--- a/src/translate.erl
+++ b/src/translate.erl
@@ -40,16 +40,18 @@ load_dir(Dir) ->
fun(FN) ->
case string:len(FN) > 4 of
true ->
- string:substr(FN,
- string:len(FN) - 3) == ".msg";
+ string:substr(
+ FN,
+ string:len(FN) - 3) == ".msg";
_ ->
false
end
end, Files),
lists:foreach(
fun(FN) ->
- load_file(string:substr(FN, 1, string:len(FN) - 4),
- Dir ++ "/" ++ FN)
+ L = ascii_tolower(
+ string:substr(FN, 1, string:len(FN) - 4)),
+ load_file(L, Dir ++ "/" ++ FN)
end, MsgFiles),
ok;
{error, Reason} ->
@@ -74,15 +76,21 @@ load_file(Lang, File) ->
end.
translate(Lang, Msg) ->
- case ets:lookup(translations, {Lang, Msg}) of
+ LLang = ascii_tolower(Lang),
+ case ets:lookup(translations, {LLang, Msg}) of
[{_, Trans}] ->
Trans;
_ ->
- ShortLang = string:substr(Lang, 1, 2),
+ ShortLang = case string:tokens(LLang, "-") of
+ [] ->
+ LLang;
+ [SL | _] ->
+ SL
+ end,
case ShortLang of
"en" ->
Msg;
- Lang ->
+ LLang ->
translate(Msg);
_ ->
case ets:lookup(translations, {ShortLang, Msg}) of
@@ -101,11 +109,17 @@ translate(Msg) ->
"en" ->
Msg;
Lang ->
- case ets:lookup(translations, {Lang, Msg}) of
+ LLang = ascii_tolower(Lang),
+ case ets:lookup(translations, {LLang, Msg}) of
[{_, Trans}] ->
Trans;
_ ->
- ShortLang = string:substr(Lang, 1, 2),
+ ShortLang = case string:tokens(LLang, "-") of
+ [] ->
+ LLang;
+ [SL | _] ->
+ SL
+ end,
case ShortLang of
"en" ->
Msg;
@@ -122,3 +136,10 @@ translate(Msg) ->
end
end.
+ascii_tolower([C | Cs]) when C >= $A, C =< $Z ->
+ [C + ($a - $A) | ascii_tolower(Cs)];
+ascii_tolower([C | Cs]) ->
+ [C | ascii_tolower(Cs)];
+ascii_tolower([]) ->
+ [].
+