Commit MetaInfo

Revision3be5d02819c7185d7cffb673ed4119a2e0303c7a (tree)
Time2019-08-11 00:33:06
AuthorSHIRAKATA Kentaro <argrath@ub32...>
CommiterSHIRAKATA Kentaro

Log Message

add translation

Change Summary

Incremental Difference

--- a/dat/hh
+++ b/dat/hh
@@ -3,10 +3,12 @@ y k u 7 8 9
33 h-.-l 4-.-6 YUHJKLBN: 指定方向に,何かにぶつかるまで歩く,
44 /|\ /|\ または何かの中へ入る.
55 b j n 1 2 3 g<dir>: 指定方向に,何かが見えるまで歩く
6- numberpad G<dir>: 指定方向に,何かが見えるまで歩く.
7- ただし,通路の分岐で止まらない.
8- < up ^<dir>: 上に同じ.(コントロールを押しながら)
6+ numberpad
7+ G<dir>: 同じ; ただし,通路の分岐で止まらない.
8+ < up ^<dir>: 上に同じ.(ここでの^はキャレットではなく
9+ コントロールキー)
910 > down m<dir>: 何もせずに移動する.
11+ F<dir>: 怪物がいるのが分からなくても戦う.
1012 number_pad オプションをセットすると,テンキーで移動できる.
1113 プラットフォームによっては,Shift+数字,Meta-数字,Alt+数字で
1214 YUHJKLBNコマンドを発動するものもある.
@@ -15,14 +17,14 @@ b j n 1 2 3 g<dir>:
1517 数字の '5' は 'G' 接頭辞のように働くが,number_pad が 2 の時は
1618 'g' のように働く.
1719 number_pad が 3 なら 1,2,3 と 7,8,9 の役割は逆になる; 4 なら
18- 3 と 2 の組み合わせのように振る舞う。
20+ 3 と 2 の組み合わせのように振る舞う.
1921 number_pad が -1 なら,英字の移動コマンドを使うが,'y' と
2022 'z' が入れ替わる.
2123
2224 一般:
23-? help ヘルプ
24-#quit quit ゲームをやめる.
25-S save ゲームを(後で続けるために)中断する.
25+? help ヘルプ文章の表示
26+#quit quit 現在のゲームを保存せずにゲームをやめる
27+S save ゲームを(後で続けるために)保存して終了する
2628 ! sh (もしできるなら)シェルを実行する.
2729 ^Z suspend ゲームを中断する.
2830 O options オプションを設定する.
@@ -30,17 +32,16 @@ O options
3032 \ known 今までに発見した道具の一覧を表示する.
3133 v version バージョンを表示する.
3234 V history ゲームの歴史を表示する.
33-^A again 1つ前のコマンドを実行する.(^Aはコントロールを押しな
34- がらAを押すことを意味する.)
35+^A again 1つ前のコマンドを再実行する.(^Aはコントロール-A)
3536 ^R redraw 画面を書きなおす.
3637 ^P prevmsg 前のメッセージを見る.(^Pは繰り返し使える)
37-` オリジナルモードと日本語モードの切り替え
3838 # 拡張コマンド(#?でヘルプ)
3939 & what-does キーを押して起動するコマンドを説明する.
4040
4141 ゲーム:
4242 ^D kick 蹴る.(扉等)
4343 ^T 'port 瞬間移動.(可能なら)
44+^X show 属性を表示する
4445 a apply 道具を使う.(つるはし,鍵,カメラ等)
4546 A armor 全ての鎧を脱ぐ.
4647 c close 扉を閉める.
@@ -48,9 +49,9 @@ C call
4849 d drop 物を置く. d7a:aなるものを7個置く.
4950 D Drop 種類を選んで物を置く.
5051 e eat 何かを食べる.
52+E engrave 床のほこりに文字を書く.(E- 指を使って)
5153 f fire 装填されているものを射る.
5254 F fight 方向を指定し戦う.
53-E engrave 床のほこりに文字を書く.(E- 指を使って)
5455 i invent あなたの持ち物一覧.(あなたが持っているもの全て)
5556 I Invent 種類を選択して持ち物一覧.
5657 Iu: 未払の道具一覧.
@@ -121,9 +122,9 @@ M-w wipe
121122 `number_pad'のオプションがオンなら,次のコマンドが可能になる.
122123
123124 n これに続く数字だけ次のコマンドを実行する.
125+h help '?' と同様ヘルプ文章の一つを表示
124126 j jump 他の位置に飛びうつる.
125127 k kick 蹴る.(扉等)
126128 l loot 床の上の箱の中身を略奪する.
127129 N name アイテムや物に名前をつける.
128130 u untrap 罠をはずす.(通常はしかけられた物)
129-
--- a/src/allmain.c
+++ b/src/allmain.c
@@ -543,7 +543,7 @@ int wtcap;
543543 /*JP
544544 interrupt_multi("You are in full health.");
545545 */
546- interrupt_multi("体力が回復した.");
546+ interrupt_multi("体力が完全回復した.");
547547 }
548548
549549 void
--- a/src/apply.c
+++ b/src/apply.c
@@ -528,7 +528,10 @@ register struct obj *obj;
528528 mtmp->mundetected = 0;
529529 newsym(mtmp->mx, mtmp->my);
530530 } else if (mtmp->mappearance) {
531+/*JP
531532 const char *what = "thing";
533+*/
534+ const char *what = "物体";
532535
533536 switch (M_AP_TYPE(mtmp)) {
534537 case M_AP_OBJECT:
@@ -1324,9 +1327,15 @@ struct obj *obj;
13241327
13251328 if (mtmp->mfrozen) {
13261329 if (vis)
1330+/*JP
13271331 You("discern no obvious reaction from %s.", mon_nam(mtmp));
1332+*/
1333+ You("%sからの明らかな反応は識別できなかった.", mon_nam(mtmp));
13281334 else
1335+/*JP
13291336 You_feel("a bit silly gesturing the mirror in that direction.");
1337+*/
1338+ You_feel("鏡をその方向に向けるのはちょっとおかしな行動だと感じた.");
13301339 do_react = FALSE;
13311340 }
13321341 if (do_react) {
--- a/src/cmd.c
+++ b/src/cmd.c
@@ -422,10 +422,15 @@ doextlist(VOID_ARGS)
422422 add_menu(menuwin, NO_GLYPH, &any, 0, 0, ATR_NONE,
423423 "", MENU_UNSELECTED);
424424
425+#if 0 /*JP*/
425426 Strcpy(buf, menumode ? "Show" : "Hide");
426427 Strcat(buf, " commands that don't autocomplete");
427428 if (!menumode)
428429 Strcat(buf, " (those not marked with [A])");
430+#else
431+ Strcpy(buf, "自動補完されないコマンドを");
432+ Strcat(buf, menumode ? "表示する" : "表示しない (これらは[A]マークがつかない)");
433+#endif
429434 any.a_int = 1;
430435 add_menu(menuwin, NO_GLYPH, &any, 'a', 0, ATR_NONE, buf,
431436 MENU_UNSELECTED);
@@ -437,10 +442,19 @@ doextlist(VOID_ARGS)
437442 actual list of extended commands shown via separator lines;
438443 having ':' as an explicit selector overrides the default
439444 menu behavior for it; we retain 's' as a group accelerator */
445+#if 0 /*JP*/
440446 add_menu(menuwin, NO_GLYPH, &any, ':', 's', ATR_NONE,
441447 "Search extended commands", MENU_UNSELECTED);
448+#else
449+ add_menu(menuwin, NO_GLYPH, &any, ':', 's', ATR_NONE,
450+ "拡張コマンドを検索する", MENU_UNSELECTED);
451+#endif
442452 } else {
453+#if 0 /*JP*/
443454 Strcpy(buf, "Show all, clear search");
455+#else
456+ Strcpy(buf, "全て表示; 検索をクリア");
457+#endif
444458 if (strlen(buf) + strlen(searchbuf) + strlen(" (\"\")") < QBUFSZ)
445459 Sprintf(eos(buf), " (\"%s\")", searchbuf);
446460 any.a_int = 3;
@@ -454,10 +468,17 @@ doextlist(VOID_ARGS)
454468 }
455469 if (wizard) {
456470 any.a_int = 4;
471+#if 0 /*JP*/
457472 add_menu(menuwin, NO_GLYPH, &any, 'z', 0, ATR_NONE,
458473 onelist ? "Show debugging commands in separate section"
459474 : "Show all alphabetically, including debugging commands",
460475 MENU_UNSELECTED);
476+#else
477+ add_menu(menuwin, NO_GLYPH, &any, 'z', 0, ATR_NONE,
478+ onelist ? "デバッグコマンドは別の節に表示する"
479+ : "デバッグコマンドを含む全てのコマンドをアルファベット順に表示する",
480+ MENU_UNSELECTED);
481+#endif
461482 }
462483 any = zeroany;
463484 add_menu(menuwin, NO_GLYPH, &any, 0, 0, ATR_NONE,
@@ -519,8 +540,13 @@ doextlist(VOID_ARGS)
519540 "", MENU_UNSELECTED);
520541 }
521542 if (*searchbuf && !n)
543+#if 0 /*JP*/
522544 add_menu(menuwin, NO_GLYPH, &any, 0, 0, ATR_NONE,
523545 "no matches", MENU_UNSELECTED);
546+#else
547+ add_menu(menuwin, NO_GLYPH, &any, 0, 0, ATR_NONE,
548+ "一致なし", MENU_UNSELECTED);
549+#endif
524550
525551 end_menu(menuwin, (char *) 0);
526552 n = select_menu(menuwin, PICK_ONE, &selected);
@@ -551,8 +577,12 @@ doextlist(VOID_ARGS)
551577 searchbuf[0] = '\0';
552578 }
553579 if (search) {
580+#if 0 /*JP*/
554581 Strcpy(promptbuf, "Extended command list search phrase");
555582 Strcat(promptbuf, "?");
583+#else
584+ Strcpy(promptbuf, "拡張コマンドの検索文字列は?");
585+#endif
556586 getlin(promptbuf, searchbuf);
557587 (void) mungspaces(searchbuf);
558588 if (searchbuf[0] == '\033')
@@ -2229,8 +2259,12 @@ int final;
22292259 int egdepth = observable_depth(&u.uz);
22302260
22312261 (void) endgamelevelname(tmpbuf, egdepth);
2262+#if 0 /*JP*/
22322263 Sprintf(buf, "in the endgame, on the %s%s",
22332264 !strncmp(tmpbuf, "Plane", 5) ? "Elemental " : "", tmpbuf);
2265+#else
2266+ Sprintf(buf, "最終試練の%s", tmpbuf);
2267+#endif
22342268 } else if (Is_knox(&u.uz)) {
22352269 /* this gives away the fact that the knox branch is only 1 level */
22362270 /*JP
@@ -2260,9 +2294,15 @@ int final;
22602294 /* TODO? maybe extend this bit to include various other automatic
22612295 annotations from the dungeon overview code */
22622296 if (Is_rogue_level(&u.uz))
2297+/*JP
22632298 Strcat(tmpbuf, ", a primitive area");
2299+*/
2300+ Strcat(tmpbuf, ", 単純な世界");
22642301 else if (Is_bigroom(&u.uz) && !Blind)
2302+/*JP
22652303 Strcat(tmpbuf, ", a very big room");
2304+*/
2305+ Strcat(tmpbuf, ", とても大きな部屋");
22662306 #if 0 /*JP*/
22672307 Sprintf(buf, "in %s, on %s", dgnbuf, tmpbuf);
22682308 #else
@@ -2305,9 +2345,14 @@ int final;
23052345 long nxtlvl = newuexp(ulvl);
23062346 /* long oldlvl = (ulvl > 1) ? newuexp(ulvl - 1) : 0; */
23072347
2348+#if 0 /*JP*/
23082349 Sprintf(eos(buf), ", %ld %s%sneeded to attain level %d",
23092350 (nxtlvl - u.uexp), (u.uexp > 0) ? "more " : "",
23102351 !final ? "" : "were ", (ulvl + 1));
2352+#else
2353+ Sprintf(eos(buf), "(レベル%dまで%ldポイント)",
2354+ (ulvl + 1), (nxtlvl - u.uexp));
2355+#endif
23112356 }
23122357 }
23132358 you_have(buf, "");
@@ -2433,15 +2478,32 @@ int final;
24332478 if (flags.pickup) {
24342479 char ocl[MAXOCLASSES + 1];
24352480
2481+#if 0 /*JP*//*後に回す*/
24362482 Strcpy(buf, "on");
2483+#endif
24372484 oc_to_str(flags.pickup_types, ocl);
2485+#if 0 /*JP*/
24382486 Sprintf(eos(buf), " for %s%s%s",
24392487 *ocl ? "'" : "", *ocl ? ocl : "all types", *ocl ? "'" : "");
2488+#else
2489+ Sprintf(buf, "%s%s%s",
2490+ *ocl ? "'" : "", *ocl ? ocl : "全ての種類", *ocl ? "'" : "");
2491+#endif
24402492 if (flags.pickup_thrown && *ocl) /* *ocl: don't show if 'all types' */
2493+/*JP
24412494 Strcat(buf, " plus thrown");
2495+*/
2496+ Strcat(buf, "に加えて投げるもの");
24422497 if (iflags.autopickup_exceptions[AP_GRAB]
24432498 || iflags.autopickup_exceptions[AP_LEAVE])
2499+/*JP
24442500 Strcat(buf, ", with exceptions");
2501+*/
2502+ Strcat(buf, "(例外あり)");
2503+#if 1 /*JP*/
2504+ Strcpy(buf, "に対してオン");
2505+#endif
2506+
24452507 } else
24462508 /*JP
24472509 Strcpy(buf, "off");
@@ -3228,7 +3290,11 @@ int final;
32283290
32293291 /*** Vision and senses ***/
32303292 if (!Blind && (Blinded || !haseyes(youmonst.data)))
3293+#if 0 /*JP*/
32313294 you_can("see", from_what(-BLINDED)); /* Eyes of the Overworld */
3295+#else /*「超世界の目によって見ることができる」*/
3296+ you_can("見ることが", from_what(-BLINDED)); /* Eyes of the Overworld */
3297+#endif
32323298 if (See_invisible) {
32333299 if (!Blind)
32343300 /*JP
@@ -4386,6 +4452,7 @@ int final;
43864452 * N wishes (1 for an artifact)
43874453 * N wishes (M for artifacts)
43884454 */
4455+#if 0 /*JP*/
43894456 if (u.uconduct.wisharti == u.uconduct.wishes)
43904457 Sprintf(eos(buf), " (%s",
43914458 (u.uconduct.wisharti > 2L) ? "all "
@@ -4396,6 +4463,9 @@ int final;
43964463 Sprintf(eos(buf), "for %s)",
43974464 (u.uconduct.wisharti == 1L) ? "an artifact"
43984465 : "artifacts");
4466+#else
4467+ Sprintf(eos(buf), " (聖器は%ld回)", u.uconduct.wisharti);
4468+#endif
43994469 }
44004470 you_have_X(buf);
44014471
@@ -6435,9 +6505,15 @@ const char *msg;
64356505 }
64366506 }
64376507
6508+#if 0 /*JP*/
64386509 Sprintf(buf, "Valid direction keys%s%s%s are:",
64396510 prefixhandling ? " to " : "", prefixhandling ? dothat : "",
64406511 NODIAG(u.umonnum) ? " in your current form" : "");
6512+#else
6513+ Sprintf(buf, "%s%s%sでの有効な方向指定は:",
6514+ prefixhandling ? " to " : "", prefixhandling ? dothat : "",
6515+ NODIAG(u.umonnum) ? " in your current form" : "");
6516+#endif
64416517 putstr(win, 0, buf);
64426518 show_direction_keys(win, !prefixhandling ? '.' : ' ', NODIAG(u.umonnum));
64436519
--- a/src/do.c
+++ b/src/do.c
@@ -229,10 +229,17 @@ const char *verb;
229229 mtmp->mhp -= damage;
230230 if (DEADMONSTER(mtmp)) {
231231 if (canspotmon(mtmp))
232+#if 0 /*JP*/
232233 pline("%s is %s!", Monnam(mtmp),
233234 (nonliving(mtmp->data)
234235 || is_vampshifter(mtmp))
235236 ? "destroyed" : "killed");
237+#else
238+ pline("%sは%s!", Monnam(mtmp),
239+ (nonliving(mtmp->data)
240+ || is_vampshifter(mtmp))
241+ ? "倒された" : "殺された");
242+#endif
236243 mondied(mtmp);
237244 }
238245 } else {
@@ -1331,20 +1338,41 @@ dodown()
13311338
13321339 if (trap) {
13331340 const char *down_or_thru = trap->ttyp == HOLE ? "down" : "through";
1341+#if 0 /*JP*/
13341342 const char *actn = Flying ? "fly" : locomotion(youmonst.data, "jump");
1343+#else
1344+ const char *actn = "";
1345+#endif
13351346
13361347 if (youmonst.data->msize >= MZ_HUGE) {
13371348 char qbuf[QBUFSZ];
13381349
1350+#if 0 /*JP*/
13391351 You("don't fit %s easily.", down_or_thru);
13401352 Sprintf(qbuf, "Try to squeeze %s?", down_or_thru);
1353+#else
1354+ pline("ここは狭くて簡単には通り抜けられない.");
1355+ Sprintf(qbuf, "体を押し込みますか?");
1356+#endif
13411357 if (yn(qbuf) == 'y') {
13421358 if (!rn2(3)) {
1359+#if 0 /*JP*/
13431360 actn = "manage to squeeze";
1361+#else
1362+ actn = "なんとか";
1363+#endif
1364+#if 0 /*JP*/
13441365 losehp(Maybe_Half_Phys(rnd(4)),
13451366 "contusion from a small passage", KILLED_BY);
1367+#else
1368+ losehp(Maybe_Half_Phys(rnd(4)),
1369+ "狭い道での打ち身で", KILLED_BY);
1370+#endif
13461371 } else {
1372+/*JP
13471373 You("were unable to fit %s.", down_or_thru);
1374+*/
1375+ You("通り抜けられない.");
13481376 return 0;
13491377 }
13501378 } else {
@@ -1355,7 +1383,7 @@ dodown()
13551383 You("%s %s the %s.", actn, down_or_thru,
13561384 trap->ttyp == HOLE ? "hole" : "trap door");
13571385 #else
1358- You("%s.",
1386+ You("%s%s.", actn,
13591387 trap->ttyp == HOLE ? "穴を降りた" : "落し扉を通り抜けた");
13601388 #endif
13611389 }
--- a/src/dokick.c
+++ b/src/dokick.c
@@ -1249,7 +1249,7 @@ dokick()
12491249 /*JP
12501250 You("splash some %s around.", hliquid("water"));
12511251 */
1252- You("%sを回りにまきちらした.", hliquid("water"));
1252+ You("%sを回りにまきちらした.", hliquid("水"));
12531253 return 1;
12541254 }
12551255
--- a/src/dothrow.c
+++ b/src/dothrow.c
@@ -852,10 +852,16 @@ int x, y;
852852 (void) drown();
853853 return FALSE;
854854 } else if (!Is_waterlevel(&u.uz) && !stopping_short) {
855+/*JP
855856 Norep("You move over %s.", an(is_moat(x, y) ? "moat" : "pool"));
857+*/
858+ Norep("あなたは%sの上を移動した.", is_moat(x, y) ? "堀" : "水たまり");
856859 }
857860 } else if (is_lava(x, y) && !stopping_short) {
861+/*JP
858862 Norep("You move over some lava.");
863+*/
864+ Norep("あなたは溶岩の上を移動した.");
859865 }
860866
861867 /* FIXME:
@@ -1513,7 +1519,10 @@ boolean twoweap; /* used to restore twoweapon mode if wielded weapon returns */
15131519 } else if (u.uswallow) {
15141520 if (tethered_weapon) {
15151521 tmp_at(DISP_END, 0);
1522+/*JP
15161523 pline("%s returns to your hand!", The(xname(thrownobj)));
1524+*/
1525+ pline("%sはあなたの手に戻ってきた!", The(xname(thrownobj)));
15171526 thrownobj = addinv(thrownobj);
15181527 (void) encumber_msg();
15191528 /* in case addinv() autoquivered */
--- a/src/eat.c
+++ b/src/eat.c
@@ -3843,10 +3843,10 @@ boolean incr;
38433843 /* Returns an object representing food.
38443844 * Object may be either on floor or in inventory.
38453845 */
3846-/*JP CHECK: 3.6.1 での呼び出し元
3847-apply.c:2478: if (!(corpse = floorfood("tin", 2)))
3848-eat.c:3050: if (!(otmp = floorfood("eat", 0)))
3849-pray.c:1659: otmp = floorfood("sacrifice", 1);
3846+/*JP CHECK: 3.6.2 での呼び出し元
3847+apply.c:2500: if (!(corpse = floorfood("tin", 2)))
3848+eat.c:3089: if (!(otmp = floorfood("eat", 0)))
3849+pray.c:1684: otmp = floorfood("sacrifice", 1);
38503850 この関数は英語名のまま呼び出すこと。
38513851 */
38523852 struct obj *
@@ -3994,7 +3994,10 @@ vomit() /* A good idea from David Neves */
39943994 vomiting_dialog() gives a vomit message when its countdown
39953995 reaches 0, but only if u.uhs < FAINTING (and !cantvomit()) */
39963996 if (u.uhs >= FAINTING)
3997+/*JP
39973998 Your("%s heaves convulsively!", body_part(STOMACH));
3999+*/
4000+ Your("%sは激しい吐き気をもよおした!", body_part(STOMACH));
39984001 }
39994002
40004003 /* nomul()/You_can_move_again used to be unconditional, which was
--- a/src/hack.c
+++ b/src/hack.c
@@ -1796,7 +1796,10 @@ domove_core()
17961796 doing so while encumbered is feasible; if in an aquatic
17971797 form, stressed or less is allowed; otherwise (magical
17981798 breathing), only burdened is allowed */
1799+/*JP
17991800 You("are carrying too much to climb out of the water.");
1801+*/
1802+ You("水から上がるには荷物を持ちすぎている.");
18001803 nomul(0);
18011804 return;
18021805 }
--- a/src/invent.c
+++ b/src/invent.c
@@ -2245,9 +2245,9 @@ unsigned *resultflags;
22452245 * If allflag then no questions are asked. Mx gives the max number
22462246 * of objects to be treated. Return the number of objects treated.
22472247 */
2248-/*JP CHECK: 3.6.0 での呼び出し元
2249-invent.c:1886: int cnt = askchain(&invent, olets, allflag, fn, ckfn, mx, word);
2250-pickup.c:3145: if (askchain(objlist, (one_by_one ? (char *) 0 : selection), allflag,
2248+/*JP CHECK: 3.6.2 での呼び出し元
2249+invent.c:2228: int cnt = askchain(&invent, olets, allflag, fn, ckfn, mx, word);
2250+pickup.c:3208: if (askchain(objlist, (one_by_one ? (char *) 0 : selection), allflag,
22512251 wordには動詞が英語で入る。
22522252 */
22532253 int
@@ -3253,7 +3253,10 @@ dounpaid()
32533253 char contbuf[BUFSZ];
32543254
32553255 /* Shopkeeper knows what to charge for contents */
3256+/*JP
32563257 Sprintf(contbuf, "%s contents", s_suffix(xname(otmp)));
3258+*/
3259+ Sprintf(contbuf, "%sの中身", xname(otmp));
32573260 putstr(win, 0,
32583261 xprname((struct obj *) 0, contbuf, CONTAINED_SYM,
32593262 TRUE, contcost, 0L));
--- a/src/mail.c
+++ b/src/mail.c
@@ -499,7 +499,7 @@ struct obj *otmp UNUSED;
499499 /*JP
500500 "Please disregard previous letter.", "Welcome to NetHack.",
501501 */
502- "前のメールは忘れてください.", "NetHackへようこそ!",
502+ "前のメールは忘れてください.", "JNetHackへようこそ!",
503503 #ifdef AMIGA
504504 "Only Amiga makes it possible.", "CATS have all the answers.",
505505 #endif
--- a/src/objnam.c
+++ b/src/objnam.c
@@ -763,9 +763,9 @@ unsigned cxn_flags; /* bitmask of CXN_xxx values */
763763 break;
764764 case ROCK_CLASS:
765765 if (typ == STATUE && omndx != NON_PM) {
766+#if 0 /*JP*/
766767 char anbuf[10];
767768
768-#if 0 /*JP*/
769769 Sprintf(buf, "%s%s of %s%s",
770770 (Role_if(PM_ARCHEOLOGIST) && (obj->spe & STATUE_HISTORIC))
771771 ? "historic "
@@ -3504,7 +3504,11 @@ struct obj *no_wish;
35043504 int wetness, gsize = 0;
35053505 struct fruit *f;
35063506 int ftype = context.current_fruit;
3507+#if 0 /*JP*/
35073508 char fruitbuf[BUFSZ], globbuf[BUFSZ];
3509+#else
3510+ char fruitbuf[BUFSZ];
3511+#endif
35083512 /* Fruits may not mess up the ability to wish for real objects (since
35093513 * you can leave a fruit in a bones file and it will be added to
35103514 * another person's game), so they must be checked for last, after
--- a/src/pager.c
+++ b/src/pager.c
@@ -1684,6 +1684,7 @@ boolean do_mons; /* True => monsters, False => objects */
16841684 }
16851685
16861686 static const char *suptext1[] = {
1687+#if 0 /*JP:T*/
16871688 "%s is a member of a marauding horde of orcs",
16881689 "rumored to have brutally attacked and plundered",
16891690 "the ordinarily sheltered town that is located ",
@@ -1693,9 +1694,19 @@ static const char *suptext1[] = {
16931694 "defiantly acclaim their allegiance to their",
16941695 "leader %s in their names.",
16951696 (char *) 0,
1697+#else
1698+ "%sは,ノームの鉱山の奥に位置している",
1699+ "通常通り防御していた街を容赦なく攻撃して",
1700+ "略奪したと噂される,オークの襲撃集団の一員である.",
1701+ "",
1702+ "その悪質な集団のメンバーは,そのリーダーである%sの名の下に",
1703+ "誇らしげかつ挑戦的にその忠誠を称賛している.",
1704+ (char *) 0,
1705+#endif
16961706 };
16971707
16981708 static const char *suptext2[] = {
1709+#if 0 /*JP:T*/
16991710 "\"%s\" is the common dungeon name of",
17001711 "a nefarious orc who is known to acquire property",
17011712 "from thieves and sell it off for profit.",
@@ -1703,6 +1714,15 @@ static const char *suptext2[] = {
17031714 "The perpetrator was last seen hanging around the",
17041715 "stairs leading to the Gnomish Mines.",
17051716 (char *) 0,
1717+#else
1718+ "\"%s\" は,盗賊から物品を入手して",
1719+ "利益を得るために売りさばくことで知られている",
1720+ "無法なオークの一般的な迷宮名である.",
1721+ "",
1722+ "犯人が最後に目撃されたのは",
1723+ "ノームの炭鉱へ続く階段の近くである.",
1724+ (char *) 0,
1725+#endif
17061726 };
17071727
17081728 void
@@ -1803,7 +1823,10 @@ doidtrap()
18031823 boolean chesttrap = trapped_chest_at(tt, x, y);
18041824
18051825 if (chesttrap || trapped_door_at(tt, x, y)) {
1826+/*JP
18061827 pline("That is a trapped %s.", chesttrap ? "chest" : "door");
1828+*/
1829+ pline("それは罠が仕掛けられた%sだ.", chesttrap ? "箱" : "扉");
18071830 return 0; /* trap ID'd, but no time elapses */
18081831 }
18091832 }
@@ -2132,11 +2155,19 @@ dowhatdoes()
21322155 char q, *reslt;
21332156
21342157 if (!once) {
2158+#if 0 /*JP*/
21352159 pline("Ask about '&' or '?' to get more info.%s",
21362160 #ifdef ALTMETA
21372161 iflags.altmeta ? " (For ESC, type it twice.)" :
21382162 #endif
21392163 "");
2164+#else
2165+ pline("さらなる情報については '&' か '?' についてたずねます.%s",
2166+#ifdef ALTMETA
2167+ iflags.altmeta ? " (ESCについては,2回タイプします.)" :
2168+#endif
2169+ "");
2170+#endif
21402171 once = TRUE;
21412172 }
21422173 #if defined(UNIX) || defined(VMS)
--- a/src/polyself.c
+++ b/src/polyself.c
@@ -1288,7 +1288,10 @@ rehumanize()
12881288 #endif
12891289 done(DIED);
12901290 } else if (uamul && uamul->otyp == AMULET_OF_UNCHANGING) {
1291+/*JP
12911292 Your("%s %s!", simpleonames(uamul), otense(uamul, "fail"));
1293+*/
1294+ Your("%sに失敗した!", simpleonames(uamul));
12921295 uamul->dknown = 1;
12931296 makeknown(AMULET_OF_UNCHANGING);
12941297 }
@@ -1321,8 +1324,13 @@ rehumanize()
13211324 vision_full_recalc = 1;
13221325 (void) encumber_msg();
13231326 if (was_flying && !Flying && u.usteed)
1327+#if 0 /*JP*/
13241328 You("and %s return gently to the %s.",
13251329 mon_nam(u.usteed), surface(u.ux, u.uy));
1330+#else
1331+ You("と%sは%sに着地した.",
1332+ mon_nam(u.usteed), surface(u.ux, u.uy));
1333+#endif
13261334 retouch_equipment(2);
13271335 if (!uarmg)
13281336 selftouch(no_longer_petrify_resistant);
@@ -2013,7 +2021,7 @@ struct monst *mon;
20132021 int part;
20142022 {
20152023 static NEARDATA const char
2016-#if 0 /*JP*/
2024+#if 0 /*JP:T*/
20172025 *humanoid_parts[] = { "arm", "eye", "face", "finger",
20182026 "fingertip", "foot", "hand", "handed",
20192027 "head", "leg", "light headed", "neck",
@@ -2027,7 +2035,7 @@ int part;
20272035 "背骨", "爪先", "髪", "血",
20282036 "肺", "鼻", "胃"},
20292037 #endif
2030-#if 0 /*JP*/
2038+#if 0 /*JP:T*/
20312039 *jelly_parts[] = { "pseudopod", "dark spot", "front",
20322040 "pseudopod extension", "pseudopod extremity",
20332041 "pseudopod root", "grasp", "grasped",
@@ -2045,7 +2053,7 @@ int part;
20452053 "波紋", "体液", "表面", "感覚器",
20462054 "胃"},
20472055 #endif
2048-#if 0 /*JP*/
2056+#if 0 /*JP:T*/
20492057 *animal_parts[] = { "forelimb", "eye", "face",
20502058 "foreclaw", "claw tip", "rear claw",
20512059 "foreclaw", "clawed", "head",
@@ -2063,7 +2071,7 @@ int part;
20632071 "血", "肺", "鼻",
20642072 "胃"},
20652073 #endif
2066-#if 0 /*JP*/
2074+#if 0 /*JP:T*/
20672075 *bird_parts[] = { "wing", "eye", "face", "wing",
20682076 "wing tip", "foot", "wing", "winged",
20692077 "head", "leg", "light headed", "neck",
@@ -2077,7 +2085,7 @@ int part;
20772085 "背骨", "爪先", "羽毛", "血",
20782086 "肺", "くちばし", "胃" },
20792087 #endif
2080-#if 0 /*JP*/
2088+#if 0 /*JP:T*/
20812089 *horse_parts[] = { "foreleg", "eye", "face",
20822090 "forehoof", "hoof tip", "rear hoof",
20832091 "forehoof", "hooved", "head",
@@ -2095,7 +2103,7 @@ int part;
20952103 "血", "肺", "鼻",
20962104 "胃" },
20972105 #endif
2098-#if 0 /*JP*/
2106+#if 0 /*JP:T*/
20992107 *sphere_parts[] = { "appendage", "optic nerve", "body", "tentacle",
21002108 "tentacle tip", "lower appendage", "tentacle",
21012109 "tentacled", "body", "lower tentacle",
@@ -2111,7 +2119,7 @@ int part;
21112119 "下の触手の先", "繊毛", "生命力",
21122120 "網膜", "嗅覚中枢", "内部" },
21132121 #endif
2114-#if 0 /*JP*/
2122+#if 0 /*JP:T*/
21152123 *fungus_parts[] = { "mycelium", "visual area", "front",
21162124 "hypha", "hypha", "root",
21172125 "strand", "stranded", "cap area",
@@ -2129,7 +2137,7 @@ int part;
21292137 "体液", "えら", "えら",
21302138 "内部"},
21312139 #endif
2132-#if 0 /*JP*/
2140+#if 0 /*JP:T*/
21332141 *vortex_parts[] = { "region", "eye", "front",
21342142 "minor current", "minor current", "lower current",
21352143 "swirl", "swirled", "central core",
@@ -2147,7 +2155,7 @@ int part;
21472155 "生命力", "中心", "前縁",
21482156 "内部" },
21492157 #endif
2150-#if 0 /*JP*/
2158+#if 0 /*JP:T*/
21512159 *snake_parts[] = { "vestigial limb", "eye", "face", "large scale",
21522160 "large scale tip", "rear region", "scale gap",
21532161 "scale gapped", "head", "rear region",
@@ -2163,7 +2171,7 @@ int part;
21632171 "鱗", "血", "肺", "舌",
21642172 "胃" },
21652173 #endif
2166-#if 0 /*JP*/
2174+#if 0 /*JP:T*/
21672175 *worm_parts[] = { "anterior segment", "light sensitive cell",
21682176 "clitellum", "setae", "setae", "posterior segment",
21692177 "segment", "segmented", "anterior segment",
@@ -2179,7 +2187,7 @@ int part;
21792187 "体", "後部の角", "角", "血",
21802188 "皮膚", "口前葉", "胃" },
21812189 #endif
2182-#if 0 /*JP*/
2190+#if 0 /*JP:T*/
21832191 *fish_parts[] = { "fin", "eye", "premaxillary", "pelvic axillary",
21842192 "pelvic fin", "anal fin", "pectoral fin", "finned",
21852193 "head", "peduncle", "played out", "gills",
--- a/src/restore.c
+++ b/src/restore.c
@@ -1390,8 +1390,13 @@ winid bannerwin; /* if not WIN_ERR, clear window and show copyright in menu */
13901390 add_menu(tmpwin, NO_GLYPH, &any, 0, 0, ATR_NONE, "",
13911391 MENU_UNSELECTED);
13921392 }
1393+#if 0 /*JP*/
13931394 add_menu(tmpwin, NO_GLYPH, &any, 0, 0, ATR_NONE,
13941395 "Select one of your saved games", MENU_UNSELECTED);
1396+#else
1397+ add_menu(tmpwin, NO_GLYPH, &any, 0, 0, ATR_NONE,
1398+ "セーブしたゲームを一つ選んだください", MENU_UNSELECTED);
1399+#endif
13951400 for (k = 0; saved[k]; ++k) {
13961401 any.a_int = k + 1;
13971402 add_menu(tmpwin, NO_GLYPH, &any, 0, 0, ATR_NONE, saved[k],
@@ -1399,12 +1404,22 @@ winid bannerwin; /* if not WIN_ERR, clear window and show copyright in menu */
13991404 }
14001405 clet = (k <= 'n' - 'a') ? 'n' : 0; /* new game */
14011406 any.a_int = -1; /* not >= 0 */
1407+#if 0 /*JP*/
14021408 add_menu(tmpwin, NO_GLYPH, &any, clet, 0, ATR_NONE,
14031409 "Start a new character", MENU_UNSELECTED);
1410+#else
1411+ add_menu(tmpwin, NO_GLYPH, &any, clet, 0, ATR_NONE,
1412+ "新しいキャラクタで始める", MENU_UNSELECTED);
1413+#endif
14041414 clet = (k + 1 <= 'q' - 'a') ? 'q' : 0; /* quit */
14051415 any.a_int = -2;
1416+#if 0 /*JP*/
14061417 add_menu(tmpwin, NO_GLYPH, &any, clet, 0, ATR_NONE,
14071418 "Never mind (quit)", MENU_SELECTED);
1419+#else
1420+ add_menu(tmpwin, NO_GLYPH, &any, clet, 0, ATR_NONE,
1421+ "やめる", MENU_SELECTED);
1422+#endif
14081423 /* no prompt on end_menu, as we've done our own at the top */
14091424 end_menu(tmpwin, (char *) 0);
14101425 if (select_menu(tmpwin, PICK_ONE, &chosen_game) > 0) {
--- a/src/shk.c
+++ b/src/shk.c
@@ -1523,7 +1523,10 @@ dopay()
15231523 }
15241524 mtmp = m_at(cx, cy);
15251525 if (!cansee(cx, cy) && (!mtmp || !canspotmon(mtmp))) {
1526+/*JP
15261527 You("can't %s anyone there.", !Blind ? "see" : "sense");
1528+*/
1529+ You("ここには誰も%sない.", !Blind ? "見え" : "感じられ");
15271530 return 0;
15281531 }
15291532 if (!mtmp) {
@@ -1732,7 +1735,7 @@ dopay()
17321735 /*JP
17331736 Strcat(sbuf, "you picked up in the store.");
17341737 */
1735- Strcpy(sbuf, "店の中で拾ったものに対して,");
1738+ Strcpy(sbuf, "店の中で拾ったものに対して,");
17361739 else
17371740 #if 0 /*JP*/
17381741 Strcat(sbuf,
@@ -3464,13 +3467,9 @@ boolean peaceful, silent;
34643467 */
34653468 still = "さらに";
34663469 }
3467-#if 0 /*JP:T*/
3470+#if 0 /*JP*/
34683471 Sprintf(buf, "%sowe %s %ld %s", still, shkname(shkp),
34693472 value, currency(value));
3470-#else
3471- Sprintf(buf, "%s%sに%ld%sの借りをつくった", still, shkname(shkp),
3472- value, currency(value));
3473-#endif
34743473 if (u_count) /* u_count > 0 implies Has_contents(obj) */
34753474 Sprintf(eos(buf), " for %s%sits contents",
34763475 was_unpaid ? "it and " : "",
@@ -3478,6 +3477,10 @@ boolean peaceful, silent;
34783477 else if (obj->oclass != COIN_CLASS)
34793478 Sprintf(eos(buf), " for %s",
34803479 (obj->quan > 1L) ? "them" : "it");
3480+#else
3481+ Sprintf(buf, "%s%sに%ld%sの借りをつくった", still, shkname(shkp),
3482+ value, currency(value));
3483+#endif
34813484
34823485 #if 0 /*JP*/
34833486 You("%s!", buf); /* "You owe <shk> N zorkmids for it!" */
@@ -4038,7 +4041,7 @@ register xchar x, y;
40384041 /*JP
40394042 verbalize("Out of my way, scum!");
40404043 */
4041- verbalize("どけ,クソったれ!");
4044+ verbalize("どけ,クソったれ!");
40424045 if (cansee(x, y)) {
40434046 #if 0 /*JP:T*/
40444047 pline("%s nimbly%s catches %s.", Shknam(shkp),
@@ -4321,10 +4324,18 @@ boolean catchup; /* restoring a level */
43214324 message for the only repair, but perhaps the shop repair
43224325 incantation means that shk's untrap attempt will never fail */
43234326 if (canseemon(shkp))
4327+#if 0 /*JP*/
43244328 pline("%s whispers %s.", Shknam(shkp),
43254329 shk_closeby ? "an incantation" : "something");
4330+#else
4331+ pline("%sは%sをささやいた.", Shknam(shkp),
4332+ shk_closeby ? "呪文" : "何か");
4333+#endif
43264334 else if (!Deaf && shk_closeby)
4335+/*JP
43274336 You_hear("someone muttering an incantation.");
4337+*/
4338+ You_hear("誰かが呪文をつぶやいているのを聞いた.");
43284339 *once = 0;
43294340 }
43304341 if (ttmp) {
--- a/src/sit.c
+++ b/src/sit.c
@@ -492,13 +492,19 @@ dosit()
492492 return 0;
493493 } else if (eggs_in_water(youmonst.data)) {
494494 if (!(Underwater || Is_waterlevel(&u.uz))) {
495+/*JP
495496 pline("A splash tetra you are not.");
497+*/
498+ pline("あなたはコペラ・アーノルディではなかった.");
496499 return 0;
497500 }
498501 if (Upolyd &&
499502 (youmonst.data == &mons[PM_GIANT_EEL]
500503 || youmonst.data == &mons[PM_ELECTRIC_EEL])) {
504+/*JP
501505 You("yearn for the Sargasso Sea.");
506+*/
507+ You("サルガッソー海にあこがれた.");
502508 return 0;
503509 }
504510 }
--- a/src/sounds.c
+++ b/src/sounds.c
@@ -183,21 +183,21 @@ dosounds()
183183 /*JP
184184 You_hear("a low buzzing.");
185185 */
186- You_hear("ぶーんという音を聞いた.");
186+ You_hear("ぶーんという音を聞いた.");
187187 break;
188188 case 1:
189189 /*JP
190190 You_hear("an angry drone.");
191191 */
192- You_hear("興奮した雄バチの音を聞いた.");
192+ You_hear("興奮した雄バチの音を聞いた.");
193193 break;
194194 case 2:
195195 #if 0 /*JP*/
196196 You_hear("bees in your %sbonnet!",
197197 uarmh ? "" : "(nonexistent) ");
198198 #else
199- You_hear("ハチがあなたの帽子%sの中にいる音を聞いた!",
200- uarmh ? "" : "(被ってないけど)");
199+ You_hear("ハチがあなたの帽子%sの中にいる音を聞いた!",
200+ uarmh ? "" : "(被ってないけど)");
201201 #endif
202202 break;
203203 }
--- a/src/spell.c
+++ b/src/spell.c
@@ -2190,7 +2190,10 @@ char *outbuf;
21902190
21912191 if (turnsleft < 1L) {
21922192 /* spell has expired; hero can't successfully cast it anymore */
2193+/*JP
21932194 Strcpy(outbuf, "(gone)");
2195+*/
2196+ Strcpy(outbuf, "(忘却)");
21942197 } else if (turnsleft >= (long) KEEN) {
21952198 /* full retention, first turn or immediately after reading book */
21962199 Strcpy(outbuf, "100%");
--- a/src/steed.c
+++ b/src/steed.c
@@ -316,7 +316,10 @@ boolean force; /* Quietly force this animal */
316316 attempting to mount a tail segment when hero was not adjacent
317317 to worm's head could trigger an impossible() in worm_cross()
318318 called from test_move(), so handle not-on-head before that */
319+/*JP
319320 You("couldn't ride %s, let alone its tail.", a_monnam(mtmp));
321+*/
322+ You("%sには乗れない,もちろん尻尾にも乗れない.", a_monnam(mtmp));
320323 return FALSE;
321324 }
322325 if (u.uswallow || u.ustuck || u.utrap || Punished
@@ -474,7 +477,10 @@ boolean force; /* Quietly force this animal */
474477 */
475478 You("%sに乗った.", mon_nam(mtmp));
476479 if (Flying)
480+/*JP
477481 You("and %s take flight together.", mon_nam(mtmp));
482+*/
483+ You("と%sは一緒に空を飛んだ.", mon_nam(mtmp));
478484 }
479485 /* setuwep handles polearms differently when you're mounted */
480486 if (uwep && is_pole(uwep))
--- a/src/timeout.c
+++ b/src/timeout.c
@@ -501,9 +501,15 @@ struct kinfo *kptr;
501501 player may have genocided green slimes after being infected */
502502 if ((mvitals[PM_GREEN_SLIME].mvflags & G_GENOD) != 0) {
503503 killer.format = KILLED_BY;
504+/*JP
504505 Strcpy(killer.name, "slimicide");
506+*/
507+ Strcpy(killer.name, "スライム虐殺");
505508 /* immediately follows "OK, so you don't die." */
509+/*JP
506510 pline("Yes, you do. Green slime has been genocided...");
511+*/
512+ pline("はい,そうです.緑スライムは虐殺されました...");
507513 done(GENOCIDED);
508514 /* could be life-saved again (only in explore or wizard mode)
509515 but green slimes are gone; just stay in current form */
@@ -769,7 +775,10 @@ nh_timeout()
769775 /* timed Flying is via #wizintrinsic only */
770776 if (was_flying && !Flying) {
771777 context.botl = 1;
778+/*JP
772779 You("land.");
780+*/
781+ You("着地した.");
773782 spoteffects(TRUE);
774783 }
775784 break;
@@ -778,8 +787,13 @@ nh_timeout()
778787 if (!Warn_of_mon) {
779788 context.warntype.speciesidx = NON_PM;
780789 if (context.warntype.species) {
790+#if 0 /*JP*/
781791 You("are no longer warned about %s.",
782792 makeplural(context.warntype.species->mname));
793+#else
794+ You("もはや%sを警告しなくなった.",
795+ makeplural(context.warntype.species->mname));
796+#endif
783797 context.warntype.species = (struct permonst *) 0;
784798 }
785799 }
--- a/src/trap.c
+++ b/src/trap.c
@@ -192,7 +192,10 @@ int ef_flags;
192192 *const msg[] = { "burnt", "rusted", "rotten", "corroded" },
193193 */
194194 *const msg[] = { "焦げた", "錆びた", "腐った", "腐食した" },
195+/*JP
195196 *const bythe[] = { "heat", "oxidation", "decay", "corrosion" };
197+*/
198+ *const bythe[] = { "熱", "酸化", "腐敗", "腐食" };
196199 boolean vulnerable = FALSE, is_primary = TRUE,
197200 check_grease = (ef_flags & EF_GREASE) ? TRUE : FALSE,
198201 print = (ef_flags & EF_VERBOSE) ? TRUE : FALSE,
@@ -1088,7 +1091,10 @@ boolean msg;
10881091 if (!was_Lev && Levitation)
10891092 float_up();
10901093 if (!was_Fly && Flying)
1094+/*JP
10911095 You("can fly.");
1096+*/
1097+ You("飛べるようになった.");
10921098 }
10931099 }
10941100
@@ -1564,8 +1570,13 @@ unsigned trflags;
15641570 */
15651571 You("隣の落し穴に移動した.");
15661572 } else if (adj_pit) {
1573+#if 0 /*JP:T*/
15671574 You("stumble over debris%s.",
15681575 !rn2(5) ? " between the pits" : "");
1576+#else
1577+ You("は%sがらくたでつまづいた.",
1578+ !rn2(5) ? "落し穴の" : "");
1579+#endif
15691580 } else {
15701581 #if 0 /*JP*/
15711582 Strcpy(verbbuf,
@@ -1912,14 +1923,18 @@ unsigned trflags;
19121923
19131924 seetrap(trap);
19141925 if (viasitting)
1926+#if 0 /*JP*/
19151927 Strcpy(verbbuf, "trigger"); /* follows "You sit down." */
1928+#else
1929+ Strcpy(verbbuf, "を引き起こした"); /* follows "You sit down." */
1930+#endif
19161931 else if (u.usteed)
19171932 #if 0 /*JP*/
19181933 Sprintf(verbbuf, "lead %s onto",
19191934 x_monnam(u.usteed, steed_article, (char *) 0,
19201935 SUPPRESS_SADDLE, FALSE));
19211936 #else
1922- Sprintf(verbbuf, "%sとともに飛び込んだ",
1937+ Sprintf(verbbuf, "に%sとともに飛び込んだ",
19231938 x_monnam(u.usteed, steed_article, (char *) 0,
19241939 SUPPRESS_SADDLE, FALSE));
19251940 #endif
@@ -1929,14 +1944,14 @@ unsigned trflags;
19291944 Levitation ? (const char *) "float"
19301945 : locomotion(youmonst.data, "step"));
19311946 #else
1932- Sprintf(verbbuf,"%s",
1947+ Sprintf(verbbuf,"に%s",
19331948 jpast(Levitation ? (const char *)"浮きながら飛びこむ"
19341949 : locomotion(youmonst.data, "踏み込む")));
19351950 #endif
19361951 /*JP
19371952 You("%s a polymorph trap!", verbbuf);
19381953 */
1939- You("変化の罠に%s!", verbbuf);
1954+ You("変化の罠%s!", verbbuf);
19401955 if (Antimagic || Unchanging) {
19411956 shieldeff(u.ux, u.uy);
19421957 /*JP
@@ -3639,11 +3654,20 @@ float_up()
36393654 (void) buried_ball(&cc);
36403655 /* being chained to the floor blocks levitation from floating
36413656 above that floor but not from enhancing carrying capacity */
3657+#if 0 /*JP*/
36423658 You("feel lighter, but your %s is still chained to the %s.",
36433659 body_part(LEG),
36443660 IS_ROOM(levl[cc.x][cc.y].typ) ? "floor" : "ground");
3661+#else
3662+ You("すこし軽くなったが,あなたの%sはまだ%sにつながっている.",
3663+ body_part(LEG),
3664+ IS_ROOM(levl[cc.x][cc.y].typ) ? "床" : "地面");
3665+#endif
36453666 } else if (u.utraptype == WEB) {
3667+/*JP
36463668 You("float up slightly, but you are still stuck in the web.");
3669+*/
3670+ You("すこし浮き上がったが,まだくもの巣につかまっている.");
36473671 } else { /* bear trap */
36483672 /*JP
36493673 You("float up slightly, but your %s is still stuck.",
@@ -3754,12 +3778,21 @@ long hmask, emask; /* might cancel timeout */
37543778
37553779 float_vs_flight();
37563780 if (trapped && u.utrap) /* u.utrap => paranoia */
3781+#if 0 /*JP*/
37573782 You("are no longer trying to float up from the %s.",
37583783 (u.utraptype == TT_BEARTRAP) ? "trap's jaws"
37593784 : (u.utraptype == TT_WEB) ? "web"
37603785 : (u.utraptype == TT_BURIEDBALL) ? "chain"
37613786 : (u.utraptype == TT_LAVA) ? "lava"
37623787 : "ground"); /* TT_INFLOOR */
3788+#else
3789+ You("もはや%sから浮き上がろうとしなくなった.",
3790+ (u.utraptype == TT_BEARTRAP) ? "罠の歯"
3791+ : (u.utraptype == TT_WEB) ? "くもの巣"
3792+ : (u.utraptype == TT_BURIEDBALL) ? "鎖"
3793+ : (u.utraptype == TT_LAVA) ? "溶岩"
3794+ : "地面"); /* TT_INFLOOR */
3795+#endif
37633796 (void) encumber_msg(); /* carrying capacity might have changed */
37643797 return 0;
37653798 }
@@ -4138,7 +4171,10 @@ domagictrap()
41384171 context.botl = TRUE;
41394172 } else {
41404173 /* magic vibrations still hit you */
4174+/*JP
41414175 You_feel("rankled.");
4176+*/
4177+ You_feel("いらいらした.");
41424178 incr_itimeout(&HDeaf, rn1(5, 15));
41434179 context.botl = TRUE;
41444180 }
@@ -5947,14 +5983,23 @@ boolean *noticed; /* set to true iff hero notices the effect; */
59475983 which = "";
59485984 switch (u.utraptype) {
59495985 case TT_LAVA:
5986+/*JP
59505987 trapdescr = "molten lava";
5988+*/
5989+ trapdescr = "どろどろの溶岩";
59515990 break;
59525991 case TT_INFLOOR:
59535992 /* solidified lava, so not "floor" even if within a room */
5993+/*JP
59545994 trapdescr = "ground";
5995+*/
5996+ trapdescr = "地面";
59555997 break;
59565998 case TT_BURIEDBALL:
5999+/*JP
59576000 trapdescr = "your anchor";
6001+*/
6002+ trapdescr = "くさび";
59586003 break;
59596004 case TT_BEARTRAP:
59606005 case TT_PIT:
@@ -5964,7 +6009,10 @@ boolean *noticed; /* set to true iff hero notices the effect; */
59646009 default:
59656010 /* lint suppression in case 't' is unexpectedly Null
59666011 or u.utraptype has new value we don't know about yet */
6012+/*JP
59676013 trapdescr = "trap";
6014+*/
6015+ trapdescr = "罠";
59686016 break;
59696017 }
59706018 } else {
@@ -6677,7 +6725,7 @@ unconscious()
66776725 || !strncmp(nomovemsg, "You regain con", 14)
66786726 || !strncmp(nomovemsg, "You are consci", 14))));
66796727 #else
6680-/*JP 3.6.0 での出現位置/回数
6728+/*JP 3.6.2 での出現位置/回数
66816729 "You awake" : potion.c(1)
66826730 "You regain con": eat.c(1)
66836731 "You are consci": eat.c(1)
--- a/src/uhitm.c
+++ b/src/uhitm.c
@@ -197,8 +197,13 @@ struct obj *wep; /* uwep for attack(), null for kick_monster() */
197197 struct obj *obj;
198198
199199 if (!Blind && Hallucination)
200+#if 0 /*JP*/
200201 pline("A %s %s appeared!",
201202 mtmp->mtame ? "tame" : "wild", l_monnam(mtmp));
203+#else
204+ pline("%s%sが現れた!",
205+ mtmp->mtame ? "手なづけられた" : "野生の", l_monnam(mtmp));
206+#endif
202207 else if (Blind || (is_pool(mtmp->mx, mtmp->my) && !Underwater))
203208 /*JP
204209 pline("Wait! There's a hidden monster there!");
@@ -480,7 +485,10 @@ register struct monst *mtmp;
480485 && (m_move(mtmp, 0) == 2 /* it died */
481486 || mtmp->mx != u.ux + u.dx
482487 || mtmp->my != u.uy + u.dy)) { /* it moved */
488+/*JP
483489 You("miss wildly and stumble forwards.");
490+*/
491+ You("大きく外して前につまづいた.");
484492 return FALSE;
485493 }
486494
@@ -1484,20 +1492,37 @@ int dieroll;
14841492
14851493 if (canspotmon(mon)) {
14861494 if (saved_oname[0]) {
1495+#if 0 /*JP*/
14871496 Sprintf(emitlightobjbuf,
14881497 "%s radiance penetrates deep into",
14891498 s_suffix(saved_oname));
14901499 Strcat(emitlightobjbuf, " %s!");
1500+#else
1501+ Sprintf(emitlightobjbuf,
1502+ "%s光が%%sに深く貫通した!",
1503+ s_suffix(saved_oname));
1504+#endif
14911505 fmt = emitlightobjbuf;
14921506 } else
1507+/*JP
14931508 fmt = "The light sears %s!";
1509+*/
1510+ fmt = "光は%sを焼いた!";
14941511 } else {
1512+#if 0 /*JP*/
14951513 *whom = highc(*whom); /* "it" -> "It" */
1514+#endif
1515+/*JP
14961516 fmt = "%s is seared!";
1517+*/
1518+ fmt = "%sは焼かれた!";
14971519 }
14981520 /* note: s_suffix returns a modifiable buffer */
14991521 if (!noncorporeal(mdat) && !amorphous(mdat))
1522+/*JP
15001523 whom = strcat(s_suffix(whom), " flesh");
1524+*/
1525+ whom = strcat(s_suffix(whom), "肉");
15011526 pline(fmt, whom);
15021527 }
15031528 /* if a "no longer poisoned" message is coming, it will be last;
@@ -1907,9 +1932,15 @@ int specialdmg; /* blessed and/or silver bonus against various things */
19071932 */
19081933 pline("%sは完全に燃え尽きた!", Monnam(mdef));
19091934 else
1935+#if 0 /*JP*/
19101936 You("smell burning%s.",
19111937 (pd == &mons[PM_PAPER_GOLEM]) ? " paper"
19121938 : (pd == &mons[PM_STRAW_GOLEM]) ? " straw" : "");
1939+#else
1940+ You("%sが燃えるにおいがした.",
1941+ (pd == &mons[PM_PAPER_GOLEM]) ? "紙"
1942+ : (pd == &mons[PM_STRAW_GOLEM]) ? "わら" : "何か");
1943+#endif
19131944 xkilled(mdef, XKILL_NOMSG | XKILL_NOCORPSE);
19141945 tmp = 0;
19151946 break;
@@ -2881,7 +2912,9 @@ register struct monst *mon;
28812912 if (dhit) {
28822913 int compat, specialdmg;
28832914 long silverhit = 0L;
2915+#if 0 /*JP*//* すべて「攻撃した」にする */
28842916 const char *verb = 0; /* verb or body part */
2917+#endif
28852918
28862919 if (!u.uswallow
28872920 && (compat = could_seduce(&youmonst, mon, mattk)) != 0) {
@@ -2909,7 +2942,9 @@ register struct monst *mon;
29092942 case AT_CLAW:
29102943 case AT_TUCH:
29112944 /* verb=="claws" may be overridden below */
2945+#if 0 /*JP*/
29122946 verb = (mattk->aatyp == AT_TUCH) ? "touch" : "claws";
2947+#endif
29132948 /* decide if silver-hater will be hit by silver ring(s);
29142949 for 'multi_claw' where attacks alternate right/left,
29152950 assume 'even' claw or touch attacks use right hand
@@ -2930,35 +2965,49 @@ register struct monst *mon;
29302965 case AT_TENT:
29312966 /* assumes mind flayer's tentacles-on-head rather
29322967 than sea monster's tentacle-as-arm */
2968+#if 0 /*JP*/
29332969 verb = "tentacles";
2970+#endif
29342971 break;
29352972 case AT_KICK:
2973+#if 0 /*JP*/
29362974 verb = "kick";
2975+#endif
29372976 specialdmg = special_dmgval(&youmonst, mon, W_ARMF,
29382977 &silverhit);
29392978 break;
29402979 case AT_BUTT:
2980+#if 0 /*JP*/
29412981 verb = "head butt"; /* mbodypart(mon,HEAD)=="head" */
29422982 /* hypothetical; if any form with a head-butt attack
29432983 could wear a helmet, it would hit shades when
29442984 wearing a blessed (or silver) one */
2985+#endif
29452986 specialdmg = special_dmgval(&youmonst, mon, W_ARMH,
29462987 &silverhit);
29472988 break;
29482989 case AT_BITE:
2990+#if 0 /*JP*/
29492991 verb = "bite";
2992+#endif
29502993 break;
29512994 case AT_STNG:
2995+#if 0 /*JP*/
29522996 verb = "sting";
2997+#endif
29532998 break;
29542999 default:
3000+#if 0 /*JP*/
29553001 verb = "hit";
3002+#endif
29563003 break;
29573004 }
29583005 if (mon->data == &mons[PM_SHADE] && !specialdmg) {
3006+#if 0 /*JP*/
29593007 if (!strcmp(verb, "hit")
29603008 || (mattk->aatyp == AT_CLAW && humanoid(mon->data)))
29613009 verb = "attack";
3010+#endif
29623011 #if 0 /*JP*/
29633012 Your("%s %s harmlessly through %s.",
29643013 verb, vtense(verb, "pass"), mon_nam(mon));
@@ -2973,9 +3022,15 @@ register struct monst *mon;
29733022 */
29743023 Your("触手が%sの体液を吸いとった.", mon_nam(mon));
29753024 } else {
3025+#if 0 /*JP*/
29763026 if (mattk->aatyp == AT_CLAW)
29773027 verb = "hit"; /* not "claws" */
3028+#endif
3029+#if 0 /*JP*/
29783030 You("%s %s.", verb, mon_nam(mon));
3031+#else
3032+ You("%sを攻撃した.", mon_nam(mon));
3033+#endif
29793034 if (silverhit && flags.verbose)
29803035 silver_sears(&youmonst, mon, silverhit);
29813036 }
@@ -3033,13 +3088,19 @@ register struct monst *mon;
30333088 unconcerned = FALSE;
30343089 }
30353090 if (mon->data == &mons[PM_SHADE]) {
3091+#if 0 /*JP*/
30363092 const char *verb = byhand ? "grasp" : "hug";
3093+#endif
30373094
30383095 /* hugging a shade; successful if blessed outermost armor
30393096 for normal hug, or blessed gloves or silver ring(s) for
30403097 choking hug; deals damage but never grabs hold */
30413098 if (specialdmg) {
3099+#if 0 /*JP*/
30423100 You("%s %s%s", verb, mon_nam(mon), exclam(specialdmg));
3101+#else
3102+ You("%sをつかんだ%s", mon_nam(mon), exclam(specialdmg));
3103+#endif
30433104 if (silverhit && flags.verbose)
30443105 silver_sears(&youmonst, mon, silverhit);
30453106 sum[i] = damageum(mon, mattk, specialdmg);
@@ -3308,7 +3369,7 @@ boolean wep_was_destroyed;
33083369 /*JP
33093370 pline("A hail of magic missiles narrowly misses you!");
33103371 */
3311- pline("魔法の矢の雨をなんとかかわした!");
3372+ pline("魔法の矢の雨がかすめていった!");
33123373 } else {
33133374 /*JP
33143375 You("are hit by magic missiles appearing from thin air!");
--- a/src/vault.c
+++ b/src/vault.c
@@ -263,7 +263,10 @@ struct monst *grd;
263263 && um_dist(grd->mx, grd->my, 1)) {
264264 if (grd->mpeaceful) {
265265 if (canspotmon(grd)) /* see or sense via telepathy */
266+/*JP
266267 pline("%s becomes irate.", Monnam(grd));
268+*/
269+ pline("%sは激怒した.", Monnam(grd));
267270 grd->mpeaceful = 0; /* bypass setmangry() */
268271 }
269272 /* if arriving outside guard's temporary corridor, give the
@@ -1192,7 +1195,10 @@ register struct monst *grd;
11921195 /* We're stuck, so try to find a new destination. */
11931196 if (!find_guard_dest(grd, &egrd->gdx, &egrd->gdy)
11941197 || (egrd->gdx == gx && egrd->gdy == gy)) {
1198+/*JP
11951199 pline("%s, confused, disappears.", Monnam(grd));
1200+*/
1201+ pline("%sは混乱し,消えた.", Monnam(grd));
11961202 disappear_msg_seen = TRUE;
11971203 goto cleanup;
11981204 } else
--- a/src/weapon.c
+++ b/src/weapon.c
@@ -476,7 +476,9 @@ struct monst *magr UNUSED;
476476 struct monst *mdef;
477477 long silverhit;
478478 {
479+#if 0 /*JP*/
479480 char rings[20]; /* plenty of room for "rings" */
481+#endif
480482 int ltyp = ((uleft && (silverhit & W_RINGL) != 0L)
481483 ? uleft->otyp : STRANGE_OBJECT),
482484 rtyp = ((uright && (silverhit & W_RINGR) != 0L)
@@ -494,6 +496,7 @@ long silverhit;
494496 silver [see hmonas(uhitm.c) for explanation of 'multi_claw'] */
495497 both = ((ltyp == rtyp && uleft->dknown == uright->dknown)
496498 || (l_ag && r_ag));
499+#if 0 /*JP*/
497500 Sprintf(rings, "ring%s", both ? "s" : "");
498501 Your("%s%s %s %s!",
499502 (l_ag || r_ag) ? "silver "
@@ -501,6 +504,14 @@ long silverhit;
501504 : ((silverhit & W_RINGL) != 0L) ? "left "
502505 : "right ",
503506 rings, vtense(rings, "sear"), mon_nam(mdef));
507+#else
508+ Your("%s指輪が%sを焼いた!",
509+ (l_ag || r_ag) ? "銀の"
510+ : both ? ""
511+ : ((silverhit & W_RINGL) != 0L) ? "左の"
512+ : "右の",
513+ mon_nam(mdef));
514+#endif
504515 }
505516 }
506517
--- a/src/wield.c
+++ b/src/wield.c
@@ -223,7 +223,10 @@ struct obj *wep;
223223
224224 wep->owornmask |= W_WEP;
225225 if (wep->otyp == AKLYS && (wep->owornmask & W_WEP) != 0)
226+/*JP
226227 You("secure the tether.");
228+*/
229+ You("ひもをしっかりと固定した.");
227230 prinv((char *) 0, wep, 0L);
228231 wep->owornmask = dummy;
229232 }
@@ -922,12 +925,20 @@ register int amount;
922925
923926 if (amount >= 0 && uwep && will_weld(uwep)) { /* cursed tin opener */
924927 if (!Blind) {
928+#if 0 /*JP*/
925929 Sprintf(buf, "%s with %s aura.",
926930 Yobjnam2(uwep, "glow"), an(hcolor(NH_AMBER)));
931+#else
932+ Sprintf(buf, "%sは%sオーラにつつまれた.",
933+ xname(uwep), hcolor(NH_AMBER));
934+#endif
927935 uwep->bknown = !Hallucination;
928936 } else {
929937 /* cursed tin opener is wielded in right hand */
938+/*JP
930939 Sprintf(buf, "Your right %s tingles.", body_part(HAND));
940+*/
941+ Sprintf(buf, "あなたの右%sはちくちくした.", body_part(HAND));
931942 }
932943 uncurse(uwep);
933944 update_inventory();
--- a/src/zap.c
+++ b/src/zap.c
@@ -2123,11 +2123,19 @@ struct obj *obj, *otmp;
21232123 /* we don't want to force alive vs dead
21242124 determination for Schroedinger's Cat here,
21252125 so just make probing be inconclusive for it */
2126+#if 0 /*JP*/
21262127 You("aren't sure whether %s has %s or its corpse inside.",
21272128 the(xname(obj)),
21282129 /* unfortunately, we can't tell whether rndmonnam()
21292130 picks a form which can't leave a corpse */
21302131 an(Hallucination ? rndmonnam((char *) 0) : "cat"));
2132+#else
2133+ pline("%sに%sが入っているのかその死体が入っているのかわからない.",
2134+ xname(obj),
2135+ /* unfortunately, we can't tell whether rndmonnam()
2136+ picks a form which can't leave a corpse */
2137+ Hallucination ? rndmonnam((char *) 0) : "猫");
2138+#endif
21312139 obj->cknown = 0;
21322140 } else {
21332141 struct obj *o;
@@ -2227,8 +2235,13 @@ struct obj *obj, *otmp;
22272235 } else {
22282236 if (cansee(ox, oy)) {
22292237 if (canspotmon(mtmp)) {
2238+#if 0 /*JP*/
22302239 pline("%s is resurrected!",
22312240 upstart(noname_monnam(mtmp, ARTICLE_THE)));
2241+#else
2242+ pline("%sは生き返った!",
2243+ upstart(noname_monnam(mtmp, ARTICLE_THE)));
2244+#endif
22322245 learn_it = TRUE;
22332246 } else {
22342247 /* saw corpse but don't see monster: maybe
@@ -2236,7 +2249,10 @@ struct obj *obj, *otmp;
22362249 a different spot than <ox,oy> */
22372250 if (!type_is_pname(&mons[corpsenm]))
22382251 corpsname = The(corpsname);
2252+/*JP
22392253 pline("%s disappears.", corpsname);
2254+*/
2255+ pline("%sは消えた.", corpsname);
22402256 }
22412257 } else {
22422258 /* couldn't see corpse's location */
@@ -2245,7 +2261,10 @@ struct obj *obj, *otmp;
22452261 if (!type_is_pname(&mons[corpsenm]))
22462262 corpsname = an(corpsname);
22472263 if (!Hallucination)
2264+/*JP
22482265 You_hear("%s reviving.", corpsname);
2266+*/
2267+ You_hear("%sが生き返る音を聞いた.", corpsname);
22492268 else
22502269 /*JP
22512270 You_hear("a defibrillator.");
@@ -3093,7 +3112,11 @@ boolean youattack, allow_cancel_kill, self_cancel;
30933112 if (!Blind)
30943113 pline(writing_vanishes, your);
30953114 else /* note: "dark" rather than "heavy" is intentional... */
3115+#if 0 /*JP*/
30963116 You_feel("%s headed.", Hallucination ? "dark" : "light");
3117+#else /*いい訳語を思いつかないので幻覚でメッセージを変えない */
3118+ You_feel("軽はずみだった気がした.");
3119+#endif
30973120 u.mh = 0; /* fatal; death handled by rehumanize() */
30983121 }
30993122 if (Unchanging && u.mh > 0)
@@ -5626,9 +5649,11 @@ int osym, dmgtyp;
56265649 pline("%s %s %s!", mult, xname(obj),
56275650 destroy_strings[dindx][(cnt > 1L)]);
56285651 #else
5629- mult = (cnt == quan)
5630- ? ""
5631- : (cnt == 1L) ? "のひとつ" : "のいくつか";
5652+ mult = (cnt == 1L)
5653+ ? ((quan == 1L) ? "" /* 1 of 1 */
5654+ : "のひとつ") /* 1 of N */
5655+ : ((cnt < quan) ? "のいくつか" /* n of N */
5656+ : "の全て"); /* N of N */
56325657 pline("あなたの%s%sは%s!", xname(obj), mult,
56335658 destroy_strings[dindx][(cnt > 1L)]);
56345659 #endif
Show on old repository browser