# HG changeset patch # User FUJIWARA Katsunori # Date 1463091599 -32400 # Node ID 9d38a2061fd8a7a4fd80ead8d5798f38b359bfe3 # Parent 1111e84de635213b0be18055a180afdf34821cf9 patch: show lower-ed translated message correctly Before this patch, patch.filterpatch() shows meaningless translation of help message for chunk selection in some encoding. It applies str.lower() instead of encoding.lower(str) on translated message, but some encoding uses 0x41(A) - 0x5a(Z) as the second or later byte of multi-byte character (for example, ja_JP.cp932), and str.lower() causes unexpected result. To show lower-ed translated message correctly, this patch replaces str.lower() by encoding.lower(str). diff -r 1111e84de635 -r 9d38a2061fd8 mercurial/patch.py --- a/mercurial/patch.py Sun May 08 22:28:09 2016 -0400 +++ b/mercurial/patch.py Fri May 13 07:19:59 2016 +0900 @@ -1010,7 +1010,7 @@ ui.write("\n") if r == 8: # ? for c, t in ui.extractchoices(resps)[1]: - ui.write('%s - %s\n' % (c, t.lower())) + ui.write('%s - %s\n' % (c, encoding.lower(t))) continue elif r == 0: # yes ret = True diff -r 1111e84de635 -r 9d38a2061fd8 tests/test-commit-interactive.t --- a/tests/test-commit-interactive.t Sun May 08 22:28:09 2016 -0400 +++ b/tests/test-commit-interactive.t Fri May 13 07:19:59 2016 +0900 @@ -878,6 +878,32 @@ abort: user quit [255] +#if gettext + +Test translated help message + +str.lower() instead of encoding.lower(str) on translated message might +make message meaningless, because some encoding uses 0x41(A) - 0x5a(Z) +as the second or later byte of multi-byte character. + +For example, "\x8bL\x98^" (translation of "record" in ja_JP.cp932) +contains 0x4c (L). str.lower() replaces 0x4c(L) by 0x6c(l) and this +replacement makes message meaningless. + +This tests that translated help message is lower()-ed correctly. + + $ LANGUAGE=ja + $ export LANGUAGE + + $ hg commit -i --encoding cp932 2>&1 < ? + > q + > EOF + y - \x82\xb1\x82\xcc\x95\xcf\x8dX\x82\xf0\x8bL\x98^(yes) (esc) + + $ LANGUAGE= +#endif + Skip $ hg commit -i <