[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-users:42760] Re: [gettext] ja.po の msgid に non-ASCII 文字は使える?
- From: YOSHIFUJI Hideaki / 吉藤英明 <yoshfuji@xxxxxxxxxxxxxx>
- Subject: [debian-users:42760] Re: [gettext] ja.po の msgid に non-ASCII 文字は使える?
- Date: Wed, 2 Feb 2005 05:31:44 +0900
- List-help: <mailto:debian-users-ctl@debian.or.jp?body=help>
- List-id: debian-users.debian.or.jp
- List-owner: <mailto:debian-users-admin@debian.or.jp>
- List-post: <mailto:debian-users@debian.or.jp>
- List-software: fml [fml 4.0.3 release (20011202/4.0.3)]
- List-unsubscribe: <mailto:debian-users-ctl@debian.or.jp?body=unsubscribe>
- Organization: USAGI Project
- X-face: "5$Al-.M>NJ%a'@hhZdQm:."qn~PA^gq4o*>iCFToq*bAi#4FRtx}enhuQKz7fNqQz\BYU] $~O_5m-9'}MIs`XGwIEscw;e5b>n"B_?j/AkL~i/MEa<!5P`&C$@oP>ZBLP
- X-fingerprint: 9022 65EB 1ECF 3AD1 0BDF 80D8 4807 F894 E062 0EEA
- X-ml-info: If you have a question, send e-mail with the body "help" (without quotes) to the address debian-users-ctl@debian.or.jp; help=<mailto:debian-users-ctl@debian.or.jp?body=help>
- X-ml-name: debian-users
- X-mlserver: fml [fml 4.0.3 release (20011202/4.0.3)]; post only (only members can post)
- X-original-to: debian-users@debian.or.jp
- X-pgp-key-url: http://www.yoshifuji.org/%7Ehideaki/hideaki@xxxxxxxxxxxxxxxxx
- X-spam-level:
- X-spam-status: No, hits=0.0 required=10.0 tests=IN_REP_TO,ISO2022JP_BODY,ISO2022JP_CHARSET,NOSPAM_INC, PATCH_UNIFIED_DIFF,QUOTED_EMAIL_TEXT,RCVD_IN_ORBS, RCVD_IN_OSIRUSOFT_COM,REFERENCES,SIGNATURE_SHORT_DENSE, SPAM_PHRASE_00_01,X_OSIRU_OPEN_RELAY version=2.44
- X-url: http://www.yoshifuji.org/%7Ehideaki/
- References: <050122111744.M0103612@xxxxxxxxxxxxxxxxx> <050202020421.M0105065@xxxxxxxxxxxxxxxxx>
- Message-id: <20050202.053231.95863715.yoshfuji@xxxxxxxxxxxxxx>
- X-mail-count: 42760
- X-mailer: Mew version 2.2 on Emacs 20.7 / Mule 4.1 (AOI)
In article <050202020421.M0105065@xxxxxxxxxxxxxxxxx> (at Wed, 2 Feb 2005 02:04:21 +0900), hma@xxxxxxxxxxxxx says:
> [debian-users:42596] で質問した、
> 「UTF-8 で書いた ja.po の中で、 msgid に non-ASCII 文字は使用できるのか」
> という問題について、
> 条件付きで使えることがわかりました。
>
> 試しかた:
>
> 添付の g.c の中の文字列を変換するため、
> 添付した ja.po を使用してメッセージカタログを作ります。
> このとき、
> msgfmt -o g.mo ja.po
> で生成した g.mo では変換に失敗し、
>
> msgfmt --no-hash -o g.mo ja.po
> で生成した g.mo では変換に成功しました。
:
> non-ASCII を含む msgid を変換する時には、
> intl/dcigettext.c: 705 行め付近の、nctr の計算結果が 0 になり、
> 707 行目の判定で該当する msgid なしということにされてしまいます。
:
> domain->hash_tab[idx] が 0 になるのは、ハッシュの計算に
> ミスがあるためではないかと思い、msgfmt の man を見直して
> --no-hash オプションを見つけました。これを試したら
> うまくいったというわけです。
ちらっと見た感じ、gettextとglibcでhash_string()が微妙に違い、
実際、得られる値が異なります。
これでうまくいきますか?
diff -ru gettext-0.14.1/gettext-runtime/intl/hash-string.h gettext-0.14.1-fix/gettext-runtime/intl/hash-string.h
--- gettext-0.14.1/gettext-runtime/intl/hash-string.h 2003-10-24 19:23:03.000000000 +0900
+++ gettext-0.14.1-fix/gettext-runtime/intl/hash-string.h 2005-02-02 05:16:17.000000000 +0900
@@ -36,7 +36,7 @@
while (*str != '\0')
{
hval <<= 4;
- hval += (unsigned char) *str++;
+ hval += (unsigned long int) *str++;
g = hval & ((unsigned long int) 0xf << (HASHWORDBITS - 4));
if (g != 0)
{
--
Hideaki YOSHIFUJI @ USAGI Project <yoshfuji@xxxxxxxxxxxxxx>
GPG FP: 9022 65EB 1ECF 3AD1 0BDF 80D8 4807 F894 E062 0EEA