summaryrefslogtreecommitdiff
path: root/src/web/ejabberd_http.erl
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/web/ejabberd_http.erl24
1 files changed, 20 insertions, 4 deletions
diff --git a/src/web/ejabberd_http.erl b/src/web/ejabberd_http.erl
index 1192791a..b07facf1 100644
--- a/src/web/ejabberd_http.erl
+++ b/src/web/ejabberd_http.erl
@@ -24,7 +24,8 @@
request_method,
request_path,
request_auth,
- request_content_length
+ request_content_length,
+ request_lang = "en"
}).
@@ -74,6 +75,8 @@ receive_headers(State) ->
_ ->
receive_headers(State)
end;
+ {ok, {http_header, _, 'Accept-Language', _, Langs}} ->
+ receive_headers(State#state{request_lang = parse_lang(Langs)});
{ok, {http_header, _, _, _, _}} ->
receive_headers(State);
{ok, http_eoh} ->
@@ -100,7 +103,8 @@ receive_headers(State) ->
process_request(#state{request_method = 'GET',
request_path = {abs_path, Path},
- request_auth = Auth}) ->
+ request_auth = Auth,
+ request_lang = Lang}) ->
User = case Auth of
{U, P} ->
case ejabberd_auth:check_password(U, P) of
@@ -129,7 +133,8 @@ process_request(#state{request_method = 'GET',
Request = #request{method = 'GET',
path = LPath,
q = LQuery,
- user = User},
+ user = User,
+ lang = Lang},
case ejabberd_web:process_get(Request) of
El when element(1, El) == xmlelement ->
make_xhtml_output(200, [], El);
@@ -149,6 +154,7 @@ process_request(#state{request_method = 'POST',
request_path = {abs_path, Path},
request_auth = Auth,
request_content_length = Len,
+ request_lang = Lang,
sockmod = SockMod,
socket = Socket} = State) when is_integer(Len) ->
User = case Auth of
@@ -188,7 +194,8 @@ process_request(#state{request_method = 'POST',
path = LPath,
q = LQuery,
user = User,
- data = Data},
+ data = Data,
+ lang = Lang},
case ejabberd_web:process_get(Request) of
El when element(1, El) == xmlelement ->
make_xhtml_output(200, [], El);
@@ -272,6 +279,15 @@ make_text_output(Status, Headers, Text) ->
[SL, H, "\r\n", Data].
+parse_lang(Langs) ->
+ case string:tokens(Langs, ",; ") of
+ [First | _] ->
+ First;
+ [] ->
+ "en"
+ end.
+
+
% Code below is taken (with some modifications) from the yaws webserver, which
% is distributed under the folowing license: