diff --git a/mercurial/hgweb/hgweb_mod.py b/mercurial/hgweb/hgweb_mod.py --- a/mercurial/hgweb/hgweb_mod.py +++ b/mercurial/hgweb/hgweb_mod.py @@ -28,6 +28,7 @@ error, hg, hook, + i18n, repoview, templatefilters, templater, @@ -418,6 +419,9 @@ rctx.ctype = ctype content = webcommands.rawfile(rctx, req, tmpl) else: + lang = req.form.get('lang', None) + if lang is not None and len(lang): + i18n.setdatapath(util.datapath, lang) content = getattr(webcommands, cmd)(rctx, req, tmpl) req.respond(HTTP_OK, ctype) diff --git a/tests/test-hgweb-locale.t b/tests/test-hgweb-locale.t --- a/tests/test-hgweb-locale.t +++ b/tests/test-hgweb-locale.t @@ -4,11 +4,540 @@ $ hg init test $ cd test + $ LANG=ja $ LANGUAGE= $ LC_ALL= $ hg serve --singlethreaded -n help -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log $ cat hg.pid >> $DAEMON_PIDS +help add (default: Japanese) + + $ get-with-headers.py localhost:$HGPORT 'help/add' + 200 Script output follows + + + + + + + + + + Help: add + + + +
+ + +
+ +

Help: add

+ + +
+

+ hg add [OPTION]... [FILE]... +

+

+ \xe6\x8c\x87\xe5\xae\x9a\xe3\x83\x95\xe3\x82\xa1\xe3\x82\xa4\xe3\x83\xab\xe3\x81\xae\xe8\xbf\xbd\xe5\x8a\xa0\xe7\x99\xbb\xe9\x8c\xb2\xe4\xba\x88\xe7\xb4\x84 (esc) +

+

+ \xe6\xa7\x8b\xe6\x88\x90\xe7\xae\xa1\xe7\x90\x86\xe3\x81\xb8\xe3\x81\xae\xe3\x83\x95\xe3\x82\xa1\xe3\x82\xa4\xe3\x83\xab\xe3\x81\xae\xe8\xbf\xbd\xe5\x8a\xa0\xe7\x99\xbb\xe9\x8c\xb2\xe3\x82\x92\xe4\xba\x88\xe7\xb4\x84\xe3\x81\x97\xe3\x81\xbe\xe3\x81\x99\xe3\x80\x82 (esc) +

+

+ \xe6\x8c\x87\xe5\xae\x9a\xe3\x81\x95\xe3\x82\x8c\xe3\x81\x9f\xe3\x83\x95\xe3\x82\xa1\xe3\x82\xa4\xe3\x83\xab\xe3\x81\xaf\xe3\x80\x81 \xe6\xac\xa1\xe5\x9b\x9e\xe3\x81\xae\xe3\x82\xb3\xe3\x83\x9f\xe3\x83\x83\xe3\x83\x88\xe3\x81\x8b\xe3\x82\x89\xe6\xa7\x8b\xe6\x88\x90\xe7\xae\xa1\xe7\x90\x86\xe5\xaf\xbe\xe8\xb1\xa1\xe3\x81\xa8\xe3\x81\xaa\xe3\x82\x8a\xe3\x81\xbe\xe3\x81\x99\xe3\x80\x82 (esc) + \xe8\xbf\xbd\xe5\x8a\xa0\xe7\x99\xbb\xe9\x8c\xb2\xe3\x81\xae\xe3\x82\xb3\xe3\x83\x9f\xe3\x83\x83\xe3\x83\x88\xe5\x89\x8d\xe5\x8f\x96\xe3\x82\x8a\xe6\xb6\x88\xe3\x81\x97\xe3\x81\xaf "hg help forget" \xe3\x82\x92\xe5\x8f\x82\xe7\x85\xa7\xe3\x81\x97\xe3\x81\xa6\xe3\x81\x8f\xe3\x81\xa0\xe3\x81\x95\xe3\x81\x84\xe3\x80\x82 (esc) +

+

+ If no names are given, add all files to the repository (except + files matching ".hgignore"). +

+

+ Examples: +

+
    +
  • New (unknown) files are added automatically by "hg add": +
    +  \$ ls
    +  foo.c
    +  \$ hg status
    +  ? foo.c
    +  \$ hg add
    +  adding foo.c
    +  \$ hg status
    +  A foo.c
    +  
    +
  • Specific files to be added can be specified: +
    +  \$ ls
    +  bar.c  foo.c
    +  \$ hg status
    +  ? bar.c
    +  ? foo.c
    +  \$ hg add bar.c
    +  \$ hg status
    +  A bar.c
    +  ? foo.c
    +  
    +
+

+ \xe5\x85\xa8\xe3\x81\xa6\xe3\x81\xae\xe3\x83\x95\xe3\x82\xa1\xe3\x82\xa4\xe3\x83\xab\xe3\x81\xae\xe7\x99\xbb\xe9\x8c\xb2\xe3\x81\x8c\xe6\x88\x90\xe5\x8a\x9f\xe3\x81\x97\xe3\x81\x9f\xe5\xa0\xb4\xe5\x90\x88\xe3\x81\xae\xe3\x82\xb3\xe3\x83\x9e\xe3\x83\xb3\xe3\x83\x89\xe7\xb5\x82\xe4\xba\x86\xe5\x80\xa4\xe3\x81\xaf 0 \xe3\x81\xa7\xe3\x81\x99\xe3\x80\x82 (esc) +

+

+ \xe3\x82\xaa\xe3\x83\x97\xe3\x82\xb7\xe3\x83\xa7\xe3\x83\xb3 ([+] \xe5\x8d\xb0\xe4\xbb\x98\xe3\x81\x8d\xe3\x81\xae\xe3\x82\xaa\xe3\x83\x97\xe3\x82\xb7\xe3\x83\xa7\xe3\x83\xb3\xe3\x81\xaf\xe8\xa4\x87\xe6\x95\xb0\xe5\x9b\x9e\xe6\x8c\x87\xe5\xae\x9a\xe5\x8f\xaf\xe8\x83\xbd\xe3\x81\xa7\xe3\x81\x99): (esc) +

+ + + + + + + + + + + + + +
-I--include ???? [+]?????????????????????
-X--exclude ???? [+]??????????????????????
-S--subrepos??????????????
-n--dry-run??????????????????????
+

+ \xe3\x82\xb0\xe3\x83\xad\xe3\x83\xbc\xe3\x83\x90\xe3\x83\xab\xe3\x82\xaa\xe3\x83\x97\xe3\x82\xb7\xe3\x83\xa7\xe3\x83\xb3 ([+] \xe5\x8d\xb0\xe4\xbb\x98\xe3\x81\x8d\xe3\x81\xae\xe3\x82\xaa\xe3\x83\x97\xe3\x82\xb7\xe3\x83\xa7\xe3\x83\xb3\xe3\x81\xaf\xe8\xa4\x87\xe6\x95\xb0\xe5\x9b\x9e\xe6\x8c\x87\xe5\xae\x9a\xe5\x8f\xaf\xe8\x83\xbd\xe3\x81\xa7\xe3\x81\x99): (esc) +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + (esc) + + + (esc) + + + + + + + + + + + + + + + + + + +
-R--repository ????????????????? ??????????????
--cwd ?????????????
-y--noninteractive????????? ?????????????
-q--quiet?????
-v--verbose??????????
--config ?? [+]??????????????(????? 'section.name=value')
--debug??????????
--debugger???????
--encoding ?????????????????? (\xe3\x83\x87\xe3\x83\x95\xe3\x82\xa9\xe3\x83\xab\xe3\x83\x88\xe5\x80\xa4: ascii)
--encodingmode ??????????????????? (\xe3\x83\x87\xe3\x83\x95\xe3\x82\xa9\xe3\x83\xab\xe3\x83\x88\xe5\x80\xa4: strict)
--traceback???????????????????
--time??????????????
--profile????????????????
--version??????????????
-h--help????????????
--hidden??????????????????
+ +
+
+
+ + + + + + + + +help add (request: Japanese) + + $ get-with-headers.py localhost:$HGPORT 'help/add?lang=ja' + 200 Script output follows + + + + + + + + + + Help: add + + + +
+ + +
+ +

Help: add

+ + +
+

+ hg add [OPTION]... [FILE]... +

+

+ \xe6\x8c\x87\xe5\xae\x9a\xe3\x83\x95\xe3\x82\xa1\xe3\x82\xa4\xe3\x83\xab\xe3\x81\xae\xe8\xbf\xbd\xe5\x8a\xa0\xe7\x99\xbb\xe9\x8c\xb2\xe4\xba\x88\xe7\xb4\x84 (esc) +

+

+ \xe6\xa7\x8b\xe6\x88\x90\xe7\xae\xa1\xe7\x90\x86\xe3\x81\xb8\xe3\x81\xae\xe3\x83\x95\xe3\x82\xa1\xe3\x82\xa4\xe3\x83\xab\xe3\x81\xae\xe8\xbf\xbd\xe5\x8a\xa0\xe7\x99\xbb\xe9\x8c\xb2\xe3\x82\x92\xe4\xba\x88\xe7\xb4\x84\xe3\x81\x97\xe3\x81\xbe\xe3\x81\x99\xe3\x80\x82 (esc) +

+

+ \xe6\x8c\x87\xe5\xae\x9a\xe3\x81\x95\xe3\x82\x8c\xe3\x81\x9f\xe3\x83\x95\xe3\x82\xa1\xe3\x82\xa4\xe3\x83\xab\xe3\x81\xaf\xe3\x80\x81 \xe6\xac\xa1\xe5\x9b\x9e\xe3\x81\xae\xe3\x82\xb3\xe3\x83\x9f\xe3\x83\x83\xe3\x83\x88\xe3\x81\x8b\xe3\x82\x89\xe6\xa7\x8b\xe6\x88\x90\xe7\xae\xa1\xe7\x90\x86\xe5\xaf\xbe\xe8\xb1\xa1\xe3\x81\xa8\xe3\x81\xaa\xe3\x82\x8a\xe3\x81\xbe\xe3\x81\x99\xe3\x80\x82 (esc) + \xe8\xbf\xbd\xe5\x8a\xa0\xe7\x99\xbb\xe9\x8c\xb2\xe3\x81\xae\xe3\x82\xb3\xe3\x83\x9f\xe3\x83\x83\xe3\x83\x88\xe5\x89\x8d\xe5\x8f\x96\xe3\x82\x8a\xe6\xb6\x88\xe3\x81\x97\xe3\x81\xaf "hg help forget" \xe3\x82\x92\xe5\x8f\x82\xe7\x85\xa7\xe3\x81\x97\xe3\x81\xa6\xe3\x81\x8f\xe3\x81\xa0\xe3\x81\x95\xe3\x81\x84\xe3\x80\x82 (esc) +

+

+ If no names are given, add all files to the repository (except + files matching ".hgignore"). +

+

+ Examples: +

+
    +
  • New (unknown) files are added automatically by "hg add": +
    +  \$ ls
    +  foo.c
    +  \$ hg status
    +  ? foo.c
    +  \$ hg add
    +  adding foo.c
    +  \$ hg status
    +  A foo.c
    +  
    +
  • Specific files to be added can be specified: +
    +  \$ ls
    +  bar.c  foo.c
    +  \$ hg status
    +  ? bar.c
    +  ? foo.c
    +  \$ hg add bar.c
    +  \$ hg status
    +  A bar.c
    +  ? foo.c
    +  
    +
+

+ \xe5\x85\xa8\xe3\x81\xa6\xe3\x81\xae\xe3\x83\x95\xe3\x82\xa1\xe3\x82\xa4\xe3\x83\xab\xe3\x81\xae\xe7\x99\xbb\xe9\x8c\xb2\xe3\x81\x8c\xe6\x88\x90\xe5\x8a\x9f\xe3\x81\x97\xe3\x81\x9f\xe5\xa0\xb4\xe5\x90\x88\xe3\x81\xae\xe3\x82\xb3\xe3\x83\x9e\xe3\x83\xb3\xe3\x83\x89\xe7\xb5\x82\xe4\xba\x86\xe5\x80\xa4\xe3\x81\xaf 0 \xe3\x81\xa7\xe3\x81\x99\xe3\x80\x82 (esc) +

+

+ \xe3\x82\xaa\xe3\x83\x97\xe3\x82\xb7\xe3\x83\xa7\xe3\x83\xb3 ([+] \xe5\x8d\xb0\xe4\xbb\x98\xe3\x81\x8d\xe3\x81\xae\xe3\x82\xaa\xe3\x83\x97\xe3\x82\xb7\xe3\x83\xa7\xe3\x83\xb3\xe3\x81\xaf\xe8\xa4\x87\xe6\x95\xb0\xe5\x9b\x9e\xe6\x8c\x87\xe5\xae\x9a\xe5\x8f\xaf\xe8\x83\xbd\xe3\x81\xa7\xe3\x81\x99): (esc) +

+ + + + + + + + + + + + + +
-I--include ???? [+]?????????????????????
-X--exclude ???? [+]??????????????????????
-S--subrepos??????????????
-n--dry-run??????????????????????
+

+ \xe3\x82\xb0\xe3\x83\xad\xe3\x83\xbc\xe3\x83\x90\xe3\x83\xab\xe3\x82\xaa\xe3\x83\x97\xe3\x82\xb7\xe3\x83\xa7\xe3\x83\xb3 ([+] \xe5\x8d\xb0\xe4\xbb\x98\xe3\x81\x8d\xe3\x81\xae\xe3\x82\xaa\xe3\x83\x97\xe3\x82\xb7\xe3\x83\xa7\xe3\x83\xb3\xe3\x81\xaf\xe8\xa4\x87\xe6\x95\xb0\xe5\x9b\x9e\xe6\x8c\x87\xe5\xae\x9a\xe5\x8f\xaf\xe8\x83\xbd\xe3\x81\xa7\xe3\x81\x99): (esc) +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + (esc) + + + (esc) + + + + + + + + + + + + + + + + + + +
-R--repository ????????????????? ??????????????
--cwd ?????????????
-y--noninteractive????????? ?????????????
-q--quiet?????
-v--verbose??????????
--config ?? [+]??????????????(????? 'section.name=value')
--debug??????????
--debugger???????
--encoding ?????????????????? (\xe3\x83\x87\xe3\x83\x95\xe3\x82\xa9\xe3\x83\xab\xe3\x83\x88\xe5\x80\xa4: ascii)
--encodingmode ??????????????????? (\xe3\x83\x87\xe3\x83\x95\xe3\x82\xa9\xe3\x83\xab\xe3\x83\x88\xe5\x80\xa4: strict)
--traceback???????????????????
--time??????????????
--profile????????????????
--version??????????????
-h--help????????????
--hidden??????????????????
+ +
+
+
+ + + + + + + + +help add (request: German) + + $ get-with-headers.py localhost:$HGPORT 'help/add?lang=de' + 200 Script output follows + + + + + + + + + + Help: add + + + +
+ + +
+ +

Help: add

+ + +
+

+ hg add [OPTION]... [FILE]... +

+

+ F\xc3\xbcgt die angegebenen Dateien der n\xc3\xa4chsten Version hinzu (esc) +

+

+ Merkt Dateien zur Versionskontrolle im Projektarchiv vor. +

+

+ Die Dateien werden dem Projektarchiv beim n\xc3\xa4chsten \xc3\x9cbernehmen (commit) (esc) + hinzugef\xc3\xbcgt. Um dies vorher r\xc3\xbcckg\xc3\xa4ngig zu machen, siehe"hg forget". (esc) +

+

+ If no names are given, add all files to the repository (except + files matching ".hgignore"). +

+

+ Examples: +

+
    +
  • New (unknown) files are added automatically by "hg add": +
    +  \$ ls
    +  foo.c
    +  \$ hg status
    +  ? foo.c
    +  \$ hg add
    +  adding foo.c
    +  \$ hg status
    +  A foo.c
    +  
    +
  • Specific files to be added can be specified: +
    +  \$ ls
    +  bar.c  foo.c
    +  \$ hg status
    +  ? bar.c
    +  ? foo.c
    +  \$ hg add bar.c
    +  \$ hg status
    +  A bar.c
    +  ? foo.c
    +  
    +
+

+ Gibt 0 zur\xc3\xbcck, wenn alle Dateien erfolgreich hinzugef\xc3\xbcgt wurden. (esc) +

+

+ options ([+] can be repeated): +

+ + + + + + + + + + + + + +
-I--include ???? [+]?????????????????????
-X--exclude ???? [+]??????????????????????
-S--subrepos??????????????
-n--dry-run??????????????????????
+

+ global options ([+] can be repeated): +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
-R--repository ????????????????? ??????????????
--cwd ?????????????
-y--noninteractive????????? ?????????????
-q--quiet?????
-v--verbose??????????
--config ?? [+]??????????????(????? 'section.name=value')
--debug??????????
--debugger???????
--encoding ?????????????????? (Voreinstellung: ascii)
--encodingmode ??????????????????? (Voreinstellung: strict)
--traceback???????????????????
--time??????????????
--profile????????????????
--version??????????????
-h--help????????????
--hidden??????????????????
+ +
+
+
+ + + + + + + + stop $ killdaemons.py