aboutsummaryrefslogtreecommitdiff
path: root/src/translate.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/translate.erl')
-rw-r--r--src/translate.erl53
1 files changed, 50 insertions, 3 deletions
diff --git a/src/translate.erl b/src/translate.erl
index ebdd96472..664cbed49 100644
--- a/src/translate.erl
+++ b/src/translate.erl
@@ -60,8 +60,14 @@ load_file(Lang, File) ->
case file:consult(File) of
{ok, Terms} ->
lists:foreach(fun({Orig, Trans}) ->
- ets:insert(translations,
- {{Lang, Orig}, Trans})
+ Trans1 = case Trans of
+ "" ->
+ Orig;
+ _ ->
+ Trans
+ end,
+ ets:insert(translations,
+ {{Lang, Orig}, Trans1})
end, Terms);
{error, Reason} ->
exit(file:format_error(Reason))
@@ -72,6 +78,47 @@ translate(Lang, Msg) ->
[{_, Trans}] ->
Trans;
_ ->
- Msg
+ ShortLang = string:substr(Lang, 1, 2),
+ case ShortLang of
+ "en" ->
+ Msg;
+ Lang ->
+ translate(Msg);
+ _ ->
+ case ets:lookup(translations, {ShortLang, Msg}) of
+ [{_, Trans}] ->
+ Trans;
+ _ ->
+ translate(Msg)
+ end
+ end
+ end.
+
+translate(Msg) ->
+ case ?MYLANG of
+ undefined ->
+ Msg;
+ "en" ->
+ Msg;
+ Lang ->
+ case ets:lookup(translations, {Lang, Msg}) of
+ [{_, Trans}] ->
+ Trans;
+ _ ->
+ ShortLang = string:substr(Lang, 1, 2),
+ case ShortLang of
+ "en" ->
+ Msg;
+ Lang ->
+ Msg;
+ _ ->
+ case ets:lookup(translations, {ShortLang, Msg}) of
+ [{_, Trans}] ->
+ Trans;
+ _ ->
+ Msg
+ end
+ end
+ end
end.