• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Tags
Keine Tags

Frequently used words (click to add to your profile)

javaandroidc++linuxc#objective-ccocoa誰得qtrubypythonbathyscaphephpgamewindowsguic翻訳omegattwitterframeworktestbtronarduinovb.net計画中(planning stage)directxpreviewerゲームエンジンdom

patch投げ用


Commit MetaInfo

Revisiond1a7e94618a8238b897629fde0c0db1e909d91d8 (tree)
Zeit2016-03-24 00:52:19
AutorSHIRAKATA Kentaro <argrath@ub32...>
CommiterSHIRAKATA Kentaro

Log Message

add translation

Ändern Zusammenfassung

Diff

--- a/src/apply.c
+++ b/src/apply.c
@@ -2869,7 +2869,10 @@ struct obj *obj;
28692869 otmp = getobj(lubricables, "grease");
28702870 if (!otmp)
28712871 return;
2872+/*JP
28722873 if (inaccessible_equipment(otmp, "grease", FALSE))
2874+*/
2875+ if (inaccessible_equipment(otmp, "に脂を塗る", FALSE))
28732876 return;
28742877 consume_obj_charge(obj, TRUE);
28752878
--- a/src/do_name.c
+++ b/src/do_name.c
@@ -119,7 +119,10 @@ const char *goal;
119119 boolean hilite_state = FALSE;
120120
121121 if (!goal)
122+/*JP
122123 goal = "desired location";
124+*/
125+ goal = "目的地";
123126 if (flags.verbose) {
124127 /*JP
125128 pline("(For instructions type a ?)");
@@ -139,7 +142,10 @@ const char *goal;
139142 #endif
140143 for (;;) {
141144 if (show_goal_msg) {
145+/*JP
142146 pline("Move cursor to %s:", goal);
147+*/
148+ pline("カーソルを%sに動かしてください:", goal);
143149 curs(WIN_MAP, cx, cy);
144150 flush_screen(0);
145151 show_goal_msg = FALSE;
@@ -241,9 +247,15 @@ const char *goal;
241247 goto nxtc;
242248 } else if (c == '#') {
243249 auto_msg = !auto_msg;
250+#if 0 /*JP*/
244251 pline("Automatic description %sis %s.",
245252 flags.verbose ? "of features under cursor " : "",
246253 auto_msg ? "on" : "off");
254+#else
255+ pline("%s説明自動表示:%s",
256+ flags.verbose ? "カーソルの下にあるものの" : "",
257+ auto_msg ? "オン" : "オフ");
258+#endif
247259 if (!auto_msg)
248260 show_goal_msg = TRUE;
249261 msg_given = TRUE;
@@ -897,8 +909,13 @@ namefloorobj()
897909 }
898910 if (!obj) {
899911 /* "under you" is safe here since there's no object to hide under */
912+#if 0 /*JP*/
900913 pline("There doesn't seem to be any object %s.",
901914 (cc.x == u.ux && cc.y == u.uy) ? "under you" : "there");
915+#else
916+ pline("%sには何もないようだ.",
917+ (cc.x == u.ux && cc.y == u.uy) ? "あなたの下" : "そこ");
918+#endif
902919 return;
903920 }
904921 /* note well: 'obj' might be as instance of STRANGE_OBJECT if target
@@ -927,16 +944,35 @@ namefloorobj()
927944 /* traditional */
928945 unames[4] = roguename();
929946 /* silly */
947+/*JP
930948 unames[5] = "Wibbly Wobbly";
949+*/
950+ unames[5] = "うろうろ";
951+#if 0 /*JP*/
931952 pline("%s %s to call you \"%s.\"",
932953 The(buf), use_plural ? "decide" : "decides",
933954 unames[rn2(SIZE(unames))]);
955+#else
956+ pline("%sはあなたを「%s」と呼ぶことに決めた.",
957+ buf,
958+ unames[rn2(SIZE(unames))]);
959+#endif
934960 } else if (!objtyp_is_callable(obj->otyp)) {
961+#if 0 /*JP*/
935962 pline("%s %s can't be assigned a type name.",
936963 use_plural ? "Those" : "That", buf);
964+#else
965+ pline("%sに種類の名前を割り当てることはできない.",
966+ buf);
967+#endif
937968 } else if (!obj->dknown) {
969+#if 0 /*JP*/
938970 You("don't know %s %s well enough to name %s.",
939971 use_plural ? "those" : "that", buf, use_plural ? "them" : "it");
972+#else
973+ You("名前を付けられるほど%sのことをよく知らない.",
974+ buf);
975+#endif
940976 } else {
941977 docall(obj);
942978 }
@@ -1055,9 +1091,15 @@ boolean called;
10551091 /* an "aligned priest" not flagged as a priest or minion should be
10561092 "priest" or "priestess" (normally handled by priestname()) */
10571093 if (mdat == &mons[PM_ALIGNED_PRIEST])
1094+/*JP
10581095 pm_name = mtmp->female ? "priestess" : "priest";
1096+*/
1097+ pm_name = mtmp->female ? "尼僧" : "僧侶";
10591098 else if (mdat == &mons[PM_HIGH_PRIEST] && mtmp->female)
1099+/*JP
10601100 pm_name = "high priestess";
1101+*/
1102+ pm_name = "法王";
10611103
10621104 /* Shopkeepers: use shopkeeper name. For normal shopkeepers, just
10631105 * "Asidonhopo"; for unusual ones, "Asidonhopo the invisible
--- a/src/do_wear.c
+++ b/src/do_wear.c
@@ -134,7 +134,10 @@ boolean on;
134134 */
135135 Your("静かに動けるようになった.");
136136 else if (Levitation || Flying)
137+/*JP
137138 You("float imperceptibly.");
139+*/
140+ You("いつのまにか浮いていた.");
138141 else
139142 /*JP
140143 You("walk very quietly.");
@@ -179,8 +182,13 @@ boolean on;
179182 || Detect_monsters))) {
180183 makeknown(obj->otyp);
181184
185+#if 0 /*JP*/
182186 You_feel("that monsters%s have difficulty pinpointing your location.",
183187 on ? "" : " no longer");
188+#else
189+ You_feel("怪物はあなたの位置がはっきりと分か%sなったようだ.",
190+ on ? "らなく" : "るように");
191+#endif
184192 }
185193 }
186194
@@ -508,7 +516,7 @@ Helmet_on(VOID_ARGS)
508516 You("%sような気がした.",
509517 ACURR(A_INT)
510518 <= (ABASE(A_INT) + ABON(A_INT) + ATEMP(A_INT))
511- ? "街角に座っている"
519+ ? "隅っこに座っている"
512520 : "目がまわった");
513521 #endif
514522 } else {
@@ -1461,9 +1469,15 @@ struct obj *stolenobj; /* no message if stolenobj is already being doffing */
14611469 by unmul() since the on or off action isn't completing */
14621470 afternmv = 0;
14631471 if (putting_on || otmp != stolenobj) {
1472+#if 0 /*JP*/
14641473 Sprintf(buf, "You stop %s %s.",
14651474 putting_on ? "putting on" : "taking off",
14661475 thesimpleoname(otmp));
1476+#else
1477+ Sprintf(buf, "あなたは%sを%sのを止めた.",
1478+ thesimpleoname(otmp),
1479+ putting_on ? "身につける" : "外す");
1480+#endif
14671481 } else {
14681482 buf[0] = '\0'; /* silently stop doffing stolenobj */
14691483 result = -multi; /* remember this before calling unmul() */
@@ -1533,7 +1547,10 @@ armor_or_accessory_off(obj)
15331547 struct obj *obj;
15341548 {
15351549 if (!(obj->owornmask & (W_ARMOR | W_ACCESSORY))) {
1550+/*JP
15361551 You("are not wearing that.");
1552+*/
1553+ You("それを身につけていない.");
15371554 return 0;
15381555 }
15391556
@@ -2099,7 +2116,7 @@ struct obj *obj;
20992116 /*JP
21002117 You("cannot make the ring stick to your body.");
21012118 */
2102- You("指輪をはめれない体だ.");
2119+ You("指輪をはめられない体だ.");
21032120 return 0;
21042121 }
21052122 if (uleft && uright) {
@@ -2225,7 +2242,7 @@ struct obj *obj;
22252242 /*JP
22262243 You_cant("wear that!");
22272244 */
2228- You_cant("wear that!");
2245+ You_cant("それを身につけられない!");
22292246 return 0;
22302247 }
22312248 }
@@ -2310,7 +2327,10 @@ dowear()
23102327 if (uarm && uarmu && uarmc && uarmh && uarms && uarmg && uarmf
23112328 && uleft && uright && uamul && ublindf) {
23122329 /* 'W' message doesn't mention accessories */
2330+/*JP
23132331 You("are already wearing a full complement of armor.");
2332+*/
2333+ You("すでに完全装備している.");
23142334 return 0;
23152335 }
23162336 otmp = getobj(clothes, "wear");
@@ -3125,10 +3145,16 @@ boolean
31253145 inaccessible_equipment(obj, verb, only_if_known_cursed)
31263146 struct obj *obj;
31273147 const char *verb; /* "dip" or "grease", or null to avoid messages */
3148+/*JP:日本語では "を浸す", "に脂を塗る", null のいずれか*/
31283149 boolean only_if_known_cursed; /* ignore covering unless known to be cursed */
31293150 {
3151+#if 0 /*JP*/
31303152 static NEARDATA const char need_to_take_off_outer_armor[] =
31313153 "need to take off %s to %s %s.";
3154+#else /*JP:引数が原文と変わっていることに注意*/
3155+ static NEARDATA const char need_to_take_off_outer_armor[] =
3156+ "%s%sには%sを%s必要がある.";
3157+#endif
31323158 char buf[BUFSZ];
31333159 boolean anycovering = !only_if_known_cursed; /* more comprehensible... */
31343160 #define BLOCKSACCESS(x) (anycovering || ((x)->cursed && (x)->bknown))
@@ -3140,7 +3166,11 @@ boolean only_if_known_cursed; /* ignore covering unless known to be cursed */
31403166 if (obj == uarm && uarmc && BLOCKSACCESS(uarmc)) {
31413167 if (verb) {
31423168 Strcpy(buf, yname(uarmc));
3169+#if 0 /*JP*/
31433170 You(need_to_take_off_outer_armor, buf, verb, yname(obj));
3171+#else /*JP:対象はクロークなのでjoffmsgを使わず決め撃ち*/
3172+ You(need_to_take_off_outer_armor, xname(obj), verb, buf, "脱ぐ");
3173+#endif
31443174 }
31453175 return TRUE;
31463176 }
@@ -3160,10 +3190,17 @@ boolean only_if_known_cursed; /* ignore covering unless known to be cursed */
31603190 if (uarmc)
31613191 Strcat(buf, yname(uarmc));
31623192 if (uarm && uarmc)
3193+/*JP
31633194 Strcat(buf, " and ");
3195+*/
3196+ Strcat(buf, "と");
31643197 if (uarm)
31653198 Strcat(buf, sameprefix ? xname(uarm) : yname(uarm));
3199+#if 0 /*JP*/
31663200 You(need_to_take_off_outer_armor, buf, verb, yname(obj));
3201+#else /*JP:対象はクロークか鎧なのでjoffmsgを使わず決め撃ち*/
3202+ You(need_to_take_off_outer_armor, xname(obj), verb, buf, "脱ぐ");
3203+#endif
31673204 }
31683205 return TRUE;
31693206 }
@@ -3171,7 +3208,11 @@ boolean only_if_known_cursed; /* ignore covering unless known to be cursed */
31713208 if ((obj == uleft || obj == uright) && uarmg && BLOCKSACCESS(uarmg)) {
31723209 if (verb) {
31733210 Strcpy(buf, yname(uarmg));
3211+#if 0 /*JP*/
31743212 You(need_to_take_off_outer_armor, buf, verb, yname(obj));
3213+#else /*JP:対象は小手なのでjoffmsgを使わず決め撃ち*/
3214+ You(need_to_take_off_outer_armor, xname(obj), verb, buf, "はずす");
3215+#endif
31753216 }
31763217 return TRUE;
31773218 }
--- a/src/dogmove.c
+++ b/src/dogmove.c
@@ -332,8 +332,13 @@ boolean devour;
332332 /* edible item owned by shop has been thrown or kicked
333333 by hero and caught by tame or food-tameable monst */
334334 oprice = unpaid_cost(obj, TRUE);
335+#if 0 /*JP*/
335336 pline("That %s will cost you %ld %s.", objnambuf, oprice,
336337 currency(oprice));
338+#else
339+ pline("あの%sは%ld%sだ.", objnambuf, oprice,
340+ currency(oprice));
341+#endif
337342 /* delobj->obfree will handle actual shop billing update */
338343 }
339344 delobj(obj);
@@ -1150,6 +1155,7 @@ struct monst *mtmp;
11501155 (on the other hand, perhaps you're sensing a brief glimpse
11511156 of its mind as it changes form) */
11521157 newsym(mtmp->mx, mtmp->my);
1158+#if 0 /*JP*/
11531159 You("%s %s appear where %s was!",
11541160 cansee(mtmp->mx, mtmp->my) ? "see" : "sense",
11551161 (mtmp->m_ap_type == M_AP_FURNITURE)
@@ -1164,6 +1170,22 @@ struct monst *mtmp;
11641170 ? an(mons[mtmp->mappearance].mname)
11651171 : something,
11661172 buf);
1173+#else
1174+ You("%sがあったところに%sが現れたの%s!",
1175+ buf,
1176+ (mtmp->m_ap_type == M_AP_FURNITURE)
1177+ ? an(defsyms[mtmp->mappearance].explanation)
1178+ : (mtmp->m_ap_type == M_AP_OBJECT
1179+ && OBJ_DESCR(objects[mtmp->mappearance]))
1180+ ? an(OBJ_DESCR(objects[mtmp->mappearance]))
1181+ : (mtmp->m_ap_type == M_AP_OBJECT
1182+ && OBJ_NAME(objects[mtmp->mappearance]))
1183+ ? an(OBJ_NAME(objects[mtmp->mappearance]))
1184+ : (mtmp->m_ap_type == M_AP_MONSTER)
1185+ ? an(mons[mtmp->mappearance].mname)
1186+ : something,
1187+ cansee(mtmp->mx, mtmp->my) ? "を見た" : "に気づいた");
1188+#endif
11671189 display_nhwindow(WIN_MAP, TRUE);
11681190 }
11691191 }
--- a/src/dokick.c
+++ b/src/dokick.c
@@ -194,8 +194,13 @@ xchar x, y;
194194 map_invisible(x, y);
195195 else
196196 newsym(x, y);
197+#if 0 /*JP*/
197198 There("is %s here.",
198199 canspotmon(mon) ? a_monnam(mon) : "something hidden");
200+#else
201+ There("%sがいる.",
202+ canspotmon(mon) ? a_monnam(mon) : "何か隠れているもの");
203+#endif
199204 }
200205
201206 /* Kick attacks by kicking monsters are normal attacks, not special.
@@ -424,6 +429,7 @@ register struct obj *gold;
424429 out of the vault. If he did do that, player
425430 could try fighting, then weasle out of being
426431 killed by throwing his/her gold when losing. */
432+#if 0 /*JP*/
427433 verbalize(
428434 umoney
429435 ? "Drop the rest and follow me."
@@ -432,6 +438,16 @@ register struct obj *gold;
432438 : mtmp->mpeaceful
433439 ? "I'll take care of that; please move along."
434440 : "I'll take that; now get moving.");
441+#else
442+ verbalize(
443+ umoney
444+ ? "残りを置いてついてきなさい."
445+ : hidden_gold()
446+ ? "まだ金を隠しているな.置きなさい."
447+ : mtmp->mpeaceful
448+ ? "それは私が拾っておきますからついてきてください."
449+ : "それは拾っておく.来なさい.");
450+#endif
435451 } else if (is_mercenary(mtmp->data)) {
436452 long goldreqd = 0L;
437453
@@ -783,20 +799,36 @@ xchar x, y;
783799 kickedobj = splitobj(kickedobj, 1L);
784800 } else {
785801 if (rn2(20)) {
802+#if 0 /*JP*/
786803 static NEARDATA const char *const flyingcoinmsg[] = {
787804 "scatter the coins", "knock coins all over the place",
788805 "send coins flying in all directions",
789806 };
807+#else
808+ static NEARDATA const char *const flyingcoinmsg[] = {
809+ "金貨をまき散らした", "金貨をばらまいた",
810+ "金貨をあちこちに飛ばした",
811+ };
812+#endif
790813
814+/*JP
791815 pline("Thwwpingg!");
816+*/
817+ pline("ガシャーン!");
818+/*JP
792819 You("%s!", flyingcoinmsg[rn2(SIZE(flyingcoinmsg))]);
820+*/
821+ You("%s!", flyingcoinmsg[rn2(SIZE(flyingcoinmsg))]);
793822 (void) scatter(x, y, rn2(3) + 1, VIS_EFFECTS | MAY_HIT,
794823 kickedobj);
795824 newsym(x, y);
796825 return 1;
797826 }
798827 if (kickedobj->quan > 300L) {
828+/*JP
799829 pline("Thump!");
830+*/
831+ pline("ゴツン!");
800832 return (!rn2(3) || martial());
801833 }
802834 }
@@ -995,9 +1027,15 @@ dokick()
9951027
9961028 if (wl == BOTH_SIDES)
9971029 bp = makeplural(bp);
1030+#if 0 /*JP*/
9981031 Your("%s%s %s in no shape for kicking.",
9991032 (wl == LEFT_SIDE) ? "left " : (wl == RIGHT_SIDE) ? "right " : "",
10001033 bp, (wl == BOTH_SIDES) ? "are" : "is");
1034+#else
1035+ Your("%s%sは蹴りができる状態じゃない.",
1036+ (wl == LEFT_SIDE) ? "左" : (wl == RIGHT_SIDE) ? "右" : "",
1037+ bp);
1038+#endif
10011039 no_kick = TRUE;
10021040 } else if (near_capacity() > SLT_ENCUMBER) {
10031041 /*JP
@@ -1362,9 +1400,16 @@ dokick()
13621400 (void) mksobj_at(ROCK, x, y, TRUE, FALSE);
13631401 del_engr_at(x, y);
13641402 if (Blind)
1403+#if 0 /*JP*/
13651404 pline("Crack! %s broke!", Something);
1405+#else
1406+ pline("ゴツン!何かが壊れた!");
1407+#endif
13661408 else {
1409+/*JP
13671410 pline_The("headstone topples over and breaks!");
1411+*/
1412+ pline("墓石は倒れて壊れた!");
13681413 newsym(x, y);
13691414 }
13701415 return 1;
--- a/src/dothrow.c
+++ b/src/dothrow.c
@@ -282,7 +282,11 @@ int *shotlimit_p; /* (see dothrow()) */
282282 You("何かを投げるのは物理的に無理だ.");
283283 return FALSE;
284284 } else if (nohands(youmonst.data)) {
285+#if 0 /*JP*/
285286 You_cant("throw or shoot without hands."); /* not body_part(HAND) */
287+#else
288+ You("手がない."); /* not body_part(HAND) */
289+#endif
286290 return FALSE;
287291 /*[what about !freehand(), aside from cursed missile launcher?]*/
288292 }
@@ -428,7 +432,10 @@ dofire()
428432 /* give feedback if quiver has now been filled */
429433 if (uquiver) {
430434 uquiver->owornmask &= ~W_QUIVER; /* less verbose */
435+/*JP
431436 prinv("You ready:", uquiver, 0L);
437+*/
438+ prinv("準備:", uquiver, 0L);
432439 uquiver->owornmask |= W_QUIVER;
433440 }
434441 }
@@ -1013,7 +1020,10 @@ boolean hitsroof;
10131020 /* egg ends up "all over your face"; perhaps
10141021 visored helmet should still save you here */
10151022 if (uarmh)
1023+/*JP
10161024 Your("%s fails to protect you.", helm_simple_name(uarmh));
1025+*/
1026+ Your("%sはあなたを守れなかった.", helm_simple_name(uarmh));
10171027 goto petrify;
10181028 }
10191029 case CREAM_PIE:
@@ -2009,9 +2019,15 @@ xchar x, y;
20092019 && (mtmp = makemon(&mons[rn2(3) ? PM_HOMUNCULUS : PM_IMP], x, y,
20102020 NO_MM_FLAGS)) != 0) {
20112021 if (canspotmon(mtmp))
2022+#if 0 /*JP*/
20122023 pline("%s is released!", Hallucination
20132024 ? An(rndmonnam(NULL))
20142025 : "The picture-painting demon");
2026+#else
2027+ pline("%sが解放された!", Hallucination
2028+ ? rndmonnam(NULL)
2029+ : "お絵描きの悪魔");
2030+#endif
20152031 mtmp->mpeaceful = !obj->cursed;
20162032 set_malign(mtmp);
20172033 }
--- a/src/drawing.c
+++ b/src/drawing.c
@@ -31,7 +31,10 @@ nhsym l_syms[SYM_MAX] = DUMMY; /* loaded symbols */
3131 nhsym r_syms[SYM_MAX] = DUMMY; /* rogue symbols */
3232
3333 nhsym warnsyms[WARNCOUNT] = DUMMY; /* the current warning display symbols */
34+/*JP
3435 const char invisexplain[] = "remembered, unseen, creature";
36+*/
37+const char invisexplain[] = "覚えているが見えていない怪物";
3538
3639 /* Default object class symbols. See objclass.h.
3740 * {symbol, name, explain}
@@ -40,88 +43,319 @@ const char invisexplain[] = "remembered, unseen, creature";
4043 */
4144 const struct class_sym def_oc_syms[MAXOCLASSES] = {
4245 { '\0', "", "" }, /* placeholder for the "random class" */
46+/*JP
4347 { ILLOBJ_SYM, "illegal objects", "strange object" },
48+*/
49+ { ILLOBJ_SYM, "奇妙な物体", "奇妙な物体" },
50+/*JP
4451 { WEAPON_SYM, "weapons", "weapon" },
52+*/
53+ { WEAPON_SYM, "武器", "武器" },
54+/*JP
4555 { ARMOR_SYM, "armor", "suit or piece of armor" },
56+*/
57+ { ARMOR_SYM, "鎧", "服または鎧のたぐい" },
58+/*JP
4659 { RING_SYM, "rings", "ring" },
60+*/
61+ { RING_SYM, "指輪", "指輪" },
62+/*JP
4763 { AMULET_SYM, "amulets", "amulet" },
64+*/
65+ { AMULET_SYM, "魔除け", "魔除け" },
66+/*JP
4867 { TOOL_SYM, "tools", "useful item (pick-axe, key, lamp...)" },
68+*/
69+ { TOOL_SYM, "道具", "便利な道具(つるはし,鍵,ランプ...)" },
70+/*JP
4971 { FOOD_SYM, "food", "piece of food" },
72+*/
73+ { FOOD_SYM, "食料", "食料" },
74+/*JP
5075 { POTION_SYM, "potions", "potion" },
76+*/
77+ { POTION_SYM, "薬", "薬" },
78+/*JP
5179 { SCROLL_SYM, "scrolls", "scroll" },
80+*/
81+ { SCROLL_SYM, "巻物", "巻物" },
82+/*JP
5283 { SPBOOK_SYM, "spellbooks", "spellbook" },
84+*/
85+ { SPBOOK_SYM, "魔法書", "魔法書" },
86+/*JP
5387 { WAND_SYM, "wands", "wand" },
88+*/
89+ { WAND_SYM, "杖", "杖" },
90+/*JP
5491 { GOLD_SYM, "coins", "pile of coins" },
92+*/
93+ { GOLD_SYM, "金貨", "金貨の山" },
94+/*JP
5595 { GEM_SYM, "rocks", "gem or rock" },
96+*/
97+ { GEM_SYM, "石", "宝石または石" },
98+/*JP
5699 { ROCK_SYM, "large stones", "boulder or statue" },
100+*/
101+ { ROCK_SYM, "巨石", "岩または像" },
102+/*JP
57103 { BALL_SYM, "iron balls", "iron ball" },
104+*/
105+ { BALL_SYM, "鉄球", "鉄球" },
106+/*JP
58107 { CHAIN_SYM, "chains", "iron chain" },
108+*/
109+ { CHAIN_SYM, "鎖", "鉄の鎖" },
110+/*JP
59111 { VENOM_SYM, "venoms", "splash of venom" }
112+*/
113+ { VENOM_SYM, "毒", "毒液" }
60114 };
61115
62116 /* Default monster class symbols. See monsym.h. */
63117 const struct class_sym def_monsyms[MAXMCLASSES] = {
64118 { '\0', "", "" },
119+/*JP
65120 { DEF_ANT, "", "ant or other insect" },
121+*/
122+ { DEF_ANT, "", "蟻または他の昆虫" },
123+/*JP
66124 { DEF_BLOB, "", "blob" },
125+*/
126+ { DEF_BLOB, "", "ブロッブ" },
127+/*JP
67128 { DEF_COCKATRICE, "", "cockatrice" },
129+*/
130+ { DEF_COCKATRICE, "", "コカトリス" },
131+/*JP
68132 { DEF_DOG, "", "dog or other canine" },
133+*/
134+ { DEF_DOG, "", "犬またはイヌ科の動物" },
135+/*JP
69136 { DEF_EYE, "", "eye or sphere" },
137+*/
138+ { DEF_EYE, "", "目または球体" },
139+/*JP
70140 { DEF_FELINE, "", "cat or other feline" },
141+*/
142+ { DEF_FELINE, "", "猫またはネコ科の動物" },
143+/*JP
71144 { DEF_GREMLIN, "", "gremlin" },
145+*/
146+ { DEF_GREMLIN, "", "グレムリン" },
147+/*JP
72148 { DEF_HUMANOID, "", "humanoid" },
149+*/
150+ { DEF_HUMANOID, "", "ヒューマノイド" },
151+/*JP
73152 { DEF_IMP, "", "imp or minor demon" },
153+*/
154+ { DEF_IMP, "", "インプまたは下級悪魔" },
155+/*JP
74156 { DEF_JELLY, "", "jelly" },
157+*/
158+ { DEF_JELLY, "", "ゼリー" },
159+/*JP
75160 { DEF_KOBOLD, "", "kobold" },
161+*/
162+ { DEF_KOBOLD, "", "コボルト" },
163+/*JP
76164 { DEF_LEPRECHAUN, "", "leprechaun" },
165+*/
166+ { DEF_LEPRECHAUN, "", "レプラコーン" },
167+/*JP
77168 { DEF_MIMIC, "", "mimic" },
169+*/
170+ { DEF_MIMIC, "", "ミミック" },
171+/*JP
78172 { DEF_NYMPH, "", "nymph" },
173+*/
174+ { DEF_NYMPH, "", "ニンフ" },
175+/*JP
79176 { DEF_ORC, "", "orc" },
177+*/
178+ { DEF_ORC, "", "オーク" },
179+/*JP
80180 { DEF_PIERCER, "", "piercer" },
181+*/
182+ { DEF_PIERCER, "", "穴喰い" },
183+/*JP
81184 { DEF_QUADRUPED, "", "quadruped" },
185+*/
186+ { DEF_QUADRUPED, "", "四足動物" },
187+/*JP
82188 { DEF_RODENT, "", "rodent" },
189+*/
190+ { DEF_RODENT, "", "齧歯動物" },
191+/*JP
83192 { DEF_SPIDER, "", "arachnid or centipede" },
193+*/
194+ { DEF_SPIDER, "", "クモ形類動物またはムカデ" },
195+/*JP
84196 { DEF_TRAPPER, "", "trapper or lurker above" },
197+*/
198+ { DEF_TRAPPER, "", "トラッパーまたはラーカー" },
199+/*JP
85200 { DEF_UNICORN, "", "unicorn or horse" },
201+*/
202+ { DEF_UNICORN, "", "ユニコーンまたは馬" },
203+/*JP
86204 { DEF_VORTEX, "", "vortex" },
205+*/
206+ { DEF_VORTEX, "", "渦" },
207+/*JP
87208 { DEF_WORM, "", "worm" },
209+*/
210+ { DEF_WORM, "", "ワーム" },
211+/*JP
88212 { DEF_XAN, "", "xan or other mythical/fantastic insect" },
213+*/
214+ { DEF_XAN, "", "ザンまたは神話やファンタジーの昆虫" },
215+/*JP
89216 { DEF_LIGHT, "", "light" },
217+*/
218+ { DEF_LIGHT, "", "光" },
219+/*JP
90220 { DEF_ZRUTY, "", "zruty" },
221+*/
222+ { DEF_ZRUTY, "", "ズルティ" },
223+/*JP
91224 { DEF_ANGEL, "", "angelic being" },
225+*/
226+ { DEF_ANGEL, "", "天使" },
227+/*JP
92228 { DEF_BAT, "", "bat or bird" },
229+*/
230+ { DEF_BAT, "", "こうもりまたは鳥" },
231+/*JP
93232 { DEF_CENTAUR, "", "centaur" },
233+*/
234+ { DEF_CENTAUR, "", "ケンタウロス" },
235+/*JP
94236 { DEF_DRAGON, "", "dragon" },
237+*/
238+ { DEF_DRAGON, "", "ドラゴン" },
239+/*JP
95240 { DEF_ELEMENTAL, "", "elemental" },
241+*/
242+ { DEF_ELEMENTAL, "", "精霊" },
243+/*JP
96244 { DEF_FUNGUS, "", "fungus or mold" },
245+*/
246+ { DEF_FUNGUS, "", "キノコまたはモールド" },
247+/*JP
97248 { DEF_GNOME, "", "gnome" },
249+*/
250+ { DEF_GNOME, "", "ノーム" },
251+/*JP
98252 { DEF_GIANT, "", "giant humanoid" },
253+*/
254+ { DEF_GIANT, "", "巨人" },
255+/*JP
99256 { '\0', "", "invisible monster" },
257+*/
258+ { '\0', "", "透明な怪物" },
259+/*JP
100260 { DEF_JABBERWOCK, "", "jabberwock" },
261+*/
262+ { DEF_JABBERWOCK, "", "ジャバウォック" },
263+/*JP
101264 { DEF_KOP, "", "Keystone Kop" },
265+*/
266+ { DEF_KOP, "", "警備員" },
267+/*JP
102268 { DEF_LICH, "", "lich" },
269+*/
270+ { DEF_LICH, "", "リッチ" },
271+/*JP
103272 { DEF_MUMMY, "", "mummy" },
273+*/
274+ { DEF_MUMMY, "", "ミイラ" },
275+/*JP
104276 { DEF_NAGA, "", "naga" },
277+*/
278+ { DEF_NAGA, "", "ナーガ" },
279+/*JP
105280 { DEF_OGRE, "", "ogre" },
281+*/
282+ { DEF_OGRE, "", "オーガ" },
283+/*JP
106284 { DEF_PUDDING, "", "pudding or ooze" },
285+*/
286+ { DEF_PUDDING, "", "プリンまたはウーズ" },
287+/*JP
107288 { DEF_QUANTMECH, "", "quantum mechanic" },
289+*/
290+ { DEF_QUANTMECH, "", "量子場" },
291+/*JP
108292 { DEF_RUSTMONST, "", "rust monster or disenchanter" },
293+*/
294+ { DEF_RUSTMONST, "", "錆の怪物または吸魔の怪物" },
295+/*JP
109296 { DEF_SNAKE, "", "snake" },
297+*/
298+ { DEF_SNAKE, "", "ヘビ" },
299+/*JP
110300 { DEF_TROLL, "", "troll" },
301+*/
302+ { DEF_TROLL, "", "トロル" },
303+/*JP
111304 { DEF_UMBER, "", "umber hulk" },
305+*/
306+ { DEF_UMBER, "", "アンバーハルク" },
307+/*JP
112308 { DEF_VAMPIRE, "", "vampire" },
309+*/
310+ { DEF_VAMPIRE, "", "吸血鬼" },
311+/*JP
113312 { DEF_WRAITH, "", "wraith" },
313+*/
314+ { DEF_WRAITH, "", "レイス" },
315+/*JP
114316 { DEF_XORN, "", "xorn" },
317+*/
318+ { DEF_XORN, "", "ゾーン" },
319+/*JP
115320 { DEF_YETI, "", "apelike creature" },
321+*/
322+ { DEF_YETI, "", "猿のような生物" },
323+/*JP
116324 { DEF_ZOMBIE, "", "zombie" },
325+*/
326+ { DEF_ZOMBIE, "", "ゾンビ" },
327+/*JP
117328 { DEF_HUMAN, "", "human or elf" },
329+*/
330+ { DEF_HUMAN, "", "人間またはエルフ" },
331+/*JP
118332 { DEF_GHOST, "", "ghost" },
333+*/
334+ { DEF_GHOST, "", "悪魔" },
335+/*JP
119336 { DEF_GOLEM, "", "golem" },
337+*/
338+ { DEF_GOLEM, "", "ゴーレム" },
339+/*JP
120340 { DEF_DEMON, "", "major demon" },
341+*/
342+ { DEF_DEMON, "", "悪魔" },
343+/*JP
121344 { DEF_EEL, "", "sea monster" },
345+*/
346+ { DEF_EEL, "", "海の怪物" },
347+/*JP
122348 { DEF_LIZARD, "", "lizard" },
349+*/
350+ { DEF_LIZARD, "", "トカゲ" },
351+/*JP
123352 { DEF_WORM_TAIL, "", "long worm tail" },
353+*/
354+ { DEF_WORM_TAIL, "", "ロングワームの尻尾" },
355+/*JP
124356 { DEF_MIMIC_DEF, "", "mimic" },
357+*/
358+ { DEF_MIMIC_DEF, "", "ミミック" },
125359 };
126360
127361 const struct symdef def_warnsyms[WARNCOUNT] = {
@@ -161,6 +395,7 @@ const struct symdef def_warnsyms[WARNCOUNT] = {
161395 * Default screen symbols with explanations and colors.
162396 */
163397 const struct symdef defsyms[MAXPCHARS] = {
398+#if 0 /*JP*/
164399 /* 0*/ { ' ', "dark part of a room", C(NO_COLOR) }, /* stone */
165400 { '|', "wall", C(CLR_GRAY) }, /* vwall */
166401 { '-', "wall", C(CLR_GRAY) }, /* hwall */
@@ -171,6 +406,19 @@ const struct symdef defsyms[MAXPCHARS] = {
171406 { '-', "wall", C(CLR_GRAY) }, /* crwall */
172407 { '-', "wall", C(CLR_GRAY) }, /* tuwall */
173408 { '-', "wall", C(CLR_GRAY) }, /* tdwall */
409+#else
410+/* 0*/ { ' ', "部屋の暗い部分", C(NO_COLOR) }, /* stone */
411+ { '|', "壁", C(CLR_GRAY) }, /* vwall */
412+ { '-', "壁", C(CLR_GRAY) }, /* hwall */
413+ { '-', "壁", C(CLR_GRAY) }, /* tlcorn */
414+ { '-', "壁", C(CLR_GRAY) }, /* trcorn */
415+ { '-', "壁", C(CLR_GRAY) }, /* blcorn */
416+ { '-', "壁", C(CLR_GRAY) }, /* brcorn */
417+ { '-', "壁", C(CLR_GRAY) }, /* crwall */
418+ { '-', "壁", C(CLR_GRAY) }, /* tuwall */
419+ { '-', "壁", C(CLR_GRAY) }, /* tdwall */
420+#endif
421+#if 0 /*JP*/
174422 /*10*/ { '|', "wall", C(CLR_GRAY) }, /* tlwall */
175423 { '|', "wall", C(CLR_GRAY) }, /* trwall */
176424 { '.', "doorway", C(CLR_GRAY) }, /* ndoor */
@@ -181,6 +429,19 @@ const struct symdef defsyms[MAXPCHARS] = {
181429 { '#', "iron bars", C(HI_METAL) }, /* bars */
182430 { '#', "tree", C(CLR_GREEN) }, /* tree */
183431 { '.', "floor of a room", C(CLR_GRAY) }, /* room */
432+#else
433+/*10*/ { '|', "壁", C(CLR_GRAY) }, /* tlwall */
434+ { '|', "壁", C(CLR_GRAY) }, /* trwall */
435+ { '.', "出入口", C(CLR_GRAY) }, /* ndoor */
436+ { '-', "開いた扉", C(CLR_BROWN) }, /* vodoor */
437+ { '|', "開いた扉", C(CLR_BROWN) }, /* hodoor */
438+ { '+', "閉じた扉", C(CLR_BROWN) }, /* vcdoor */
439+ { '+', "閉じた扉", C(CLR_BROWN) }, /* hcdoor */
440+ { '#', "鉄棒", C(HI_METAL) }, /* bars */
441+ { '#', "木", C(CLR_GREEN) }, /* tree */
442+ { '.', "部屋の床", C(CLR_GRAY) }, /* room */
443+#endif
444+#if 0 /*JP*/
184445 /*20*/ { '.', "dark part of a room", C(CLR_BLACK) }, /* dark room */
185446 { '#', "corridor", C(CLR_GRAY) }, /* dark corr */
186447 { '#', "lit corridor", C(CLR_GRAY) }, /* lit corr (see mapglyph.c) */
@@ -191,6 +452,19 @@ const struct symdef defsyms[MAXPCHARS] = {
191452 { '_', "altar", C(CLR_GRAY) }, /* altar */
192453 { '|', "grave", C(CLR_GRAY) }, /* grave */
193454 { '\\', "opulent throne", C(HI_GOLD) }, /* throne */
455+#else
456+/*20*/ { '.', "部屋の暗い部分", C(CLR_BLACK) }, /* dark room */
457+ { '#', "通路", C(CLR_GRAY) }, /* dark corr */
458+ { '#', "明るい通路", C(CLR_GRAY) }, /* lit corr (see mapglyph.c) */
459+ { '<', "上り階段", C(CLR_GRAY) }, /* upstair */
460+ { '>', "下り階段", C(CLR_GRAY) }, /* dnstair */
461+ { '<', "上りはしご", C(CLR_BROWN) }, /* upladder */
462+ { '>', "下りはしご", C(CLR_BROWN) }, /* dnladder */
463+ { '_', "祭壇", C(CLR_GRAY) }, /* altar */
464+ { '|', "墓", C(CLR_GRAY) }, /* grave */
465+ { '\\', "華やかな玉座", C(HI_GOLD) }, /* throne */
466+#endif
467+#if 0 /*JP*/
194468 /*30*/ { '#', "sink", C(CLR_GRAY) }, /* sink */
195469 { '{', "fountain", C(CLR_BLUE) }, /* fountain */
196470 { '}', "water", C(CLR_BLUE) }, /* pool */
@@ -201,6 +475,19 @@ const struct symdef defsyms[MAXPCHARS] = {
201475 { '#', "raised drawbridge", C(CLR_BROWN) }, /* vcdbridge */
202476 { '#', "raised drawbridge", C(CLR_BROWN) }, /* hcdbridge */
203477 { ' ', "air", C(CLR_CYAN) }, /* open air */
478+#else
479+/*30*/ { '#', "流し台", C(CLR_GRAY) }, /* sink */
480+ { '{', "泉", C(CLR_BLUE) }, /* fountain */
481+ { '}', "水のたまった場所", C(CLR_BLUE) }, /* pool */
482+ { '.', "氷", C(CLR_CYAN) }, /* ice */
483+ { '}', "溶岩", C(CLR_RED) }, /* lava */
484+ { '.', "降りている跳ね橋", C(CLR_BROWN) }, /* vodbridge */
485+ { '.', "降りている跳ね橋", C(CLR_BROWN) }, /* hodbridge */
486+ { '#', "上っている跳ね橋", C(CLR_BROWN) }, /* vcdbridge */
487+ { '#', "上っている跳ね橋", C(CLR_BROWN) }, /* hcdbridge */
488+ { ' ', "空気のたまった場所", C(CLR_CYAN) }, /* open air */
489+#endif
490+#if 0 /*JP*/
204491 /*40*/ { '#', "cloud", C(CLR_GRAY) }, /* [part of] a cloud */
205492 { '}', "water", C(CLR_BLUE) }, /* under water */
206493 { '^', "arrow trap", C(HI_METAL) }, /* trap */
@@ -211,6 +498,19 @@ const struct symdef defsyms[MAXPCHARS] = {
211498 { '^', "land mine", C(CLR_RED) }, /* trap */
212499 { '^', "rolling boulder trap", C(CLR_GRAY) }, /* trap */
213500 { '^', "sleeping gas trap", C(HI_ZAP) }, /* trap */
501+#else
502+/*40*/ { '#', "雲", C(CLR_GRAY) }, /* [part of] a cloud */
503+ { '}', "水", C(CLR_BLUE) }, /* under water */
504+ { '^', "矢の罠", C(HI_METAL) }, /* trap */
505+ { '^', "投げ矢の罠", C(HI_METAL) }, /* trap */
506+ { '^', "落石の罠", C(CLR_GRAY) }, /* trap */
507+ { '^', "きしむ板", C(CLR_BROWN) }, /* trap */
508+ { '^', "熊の罠", C(HI_METAL) }, /* trap */
509+ { '^', "地雷", C(CLR_RED) }, /* trap */
510+ { '^', "巨岩の罠", C(CLR_GRAY) }, /* trap */
511+ { '^', "睡眠ガスの罠", C(HI_ZAP) }, /* trap */
512+#endif
513+#if 0 /*JP*/
214514 /*50*/ { '^', "rust trap", C(CLR_BLUE) }, /* trap */
215515 { '^', "fire trap", C(CLR_ORANGE) }, /* trap */
216516 { '^', "pit", C(CLR_BLACK) }, /* trap */
@@ -221,6 +521,19 @@ const struct symdef defsyms[MAXPCHARS] = {
221521 { '^', "level teleporter", C(CLR_MAGENTA) }, /* trap */
222522 { '^', "magic portal", C(CLR_BRIGHT_MAGENTA) }, /* trap */
223523 { '"', "web", C(CLR_GRAY) }, /* web */
524+#else
525+/*50*/ { '^', "腐食の罠", C(CLR_BLUE) }, /* trap */
526+ { '^', "火の罠", C(CLR_ORANGE) }, /* trap */
527+ { '^', "落し穴", C(CLR_BLACK) }, /* trap */
528+ { '^', "トゲだらけの落し穴", C(CLR_BLACK) }, /* trap */
529+ { '^', "穴", C(CLR_BROWN) }, /* trap */
530+ { '^', "落し扉", C(CLR_BROWN) }, /* trap */
531+ { '^', "瞬間移動の罠", C(CLR_MAGENTA) }, /* trap */
532+ { '^', "別の階への瞬間移動の罠", C(CLR_MAGENTA) }, /* trap */
533+ { '^', "魔法の罠", C(CLR_BRIGHT_MAGENTA) }, /* trap */
534+ { '"', "くもの巣", C(CLR_GRAY) }, /* web */
535+#endif
536+#if 0 /*JP*/
224537 /*60*/ { '^', "statue trap", C(CLR_GRAY) }, /* trap */
225538 { '^', "magic trap", C(HI_ZAP) }, /* trap */
226539 { '^', "anti-magic field", C(HI_ZAP) }, /* trap */
@@ -233,13 +546,32 @@ const struct symdef defsyms[MAXPCHARS] = {
233546 { '*', "", C(CLR_WHITE) }, /* dig beam */
234547 { '!', "", C(CLR_WHITE) }, /* camera flash beam */
235548 { ')', "", C(HI_WOOD) }, /* boomerang open left */
549+#else
550+/*60*/ { '^', "彫像の罠", C(CLR_GRAY) }, /* trap */
551+ { '^', "魔法の罠", C(HI_ZAP) }, /* trap */
552+ { '^', "反魔法空間の罠", C(HI_ZAP) }, /* trap */
553+ { '^', "変化の罠", C(CLR_BRIGHT_GREEN) }, /* trap */
554+ { '^', "振動している場所", C(CLR_YELLOW) }, /* trap */
555+ { '|', "壁", C(CLR_GRAY) }, /* vbeam */
556+ { '-', "壁", C(CLR_GRAY) }, /* hbeam */
557+ { '\\', "壁", C(CLR_GRAY) }, /* lslant */
558+ { '/', "壁", C(CLR_GRAY) }, /* rslant */
559+ { '*', "", C(CLR_WHITE) }, /* dig beam */
560+ { '!', "", C(CLR_WHITE) }, /* camera flash beam */
561+ { ')', "", C(HI_WOOD) }, /* boomerang open left */
562+#endif
236563 /*70*/ { '(', "", C(HI_WOOD) }, /* boomerang open right */
237564 { '0', "", C(HI_ZAP) }, /* 4 magic shield symbols */
238565 { '#', "", C(HI_ZAP) },
239566 { '@', "", C(HI_ZAP) },
240567 { '*', "", C(HI_ZAP) },
568+#if 0 /*JP*/
241569 { '#', "poison cloud", C(CLR_BRIGHT_GREEN) }, /* part of a cloud */
242570 { '?', "valid position", C(CLR_BRIGHT_GREEN) }, /* target position */
571+#else
572+ { '#', "毒雲", C(CLR_BRIGHT_GREEN) }, /* part of a cloud */
573+ { '?', "有効な位置", C(CLR_BRIGHT_GREEN) }, /* target position */
574+#endif
243575 { '/', "", C(CLR_GREEN) }, /* swallow top left */
244576 { '-', "", C(CLR_GREEN) }, /* swallow top center */
245577 { '\\', "", C(CLR_GREEN) }, /* swallow top right */
--- a/src/dungeon.c
+++ b/src/dungeon.c
@@ -2009,11 +2009,20 @@ donamelevel()
20092009
20102010 if (mptr->custom) {
20112011 char tmpbuf[BUFSZ];
2012+#if 0 /*JP*/
20122013 Sprintf(tmpbuf, "Replace annotation \"%.30s%s\" with?", mptr->custom,
20132014 strlen(mptr->custom) > 30 ? "..." : "");
20142015 getlin(tmpbuf, nbuf);
2016+#else
2017+ Sprintf(tmpbuf, "現在の名前「%.30s%s」を何に書き換える?", mptr->custom,
2018+ strlen(mptr->custom) > 30 ? "..." : "");
2019+ getlin(tmpbuf, nbuf);
2020+#endif
20152021 } else
2022+/*JP
20162023 getlin("What do you want to call this dungeon level?", nbuf);
2024+*/
2025+ getlin("この階を何と呼ぶ?", nbuf);
20172026 if (index(nbuf, '\033'))
20182027 return 0;
20192028 (void) mungspaces(nbuf);
--- a/src/eat.c
+++ b/src/eat.c
@@ -194,13 +194,19 @@ eatmupdate()
194194
195195 if (is_obj_mappear(&youmonst,ORANGE) && !Hallucination) {
196196 /* revert from hallucinatory to "normal" mimicking */
197+/*JP
197198 altmsg = "You now prefer mimicking yourself.";
199+*/
200+ altmsg = "あなたは自分自身のまねをすることを選んだ.";
198201 altapp = GOLD_PIECE;
199202 } else if (is_obj_mappear(&youmonst,GOLD_PIECE) && Hallucination) {
200203 /* won't happen; anything which might make immobilized
201204 hero begin hallucinating (black light attack, theft
202205 of Grayswandir) will terminate the mimicry first */
206+/*JP
203207 altmsg = "Your rind escaped intact.";
208+*/
209+ altmsg = "あなたの皮がそのままの形で逃げていった.";
204210 altapp = ORANGE;
205211 }
206212
@@ -519,16 +525,30 @@ int *dmg_p; /* for dishing out extra damage in lieu of Int loss */
519525
520526 if (noncorporeal(pd)) {
521527 if (visflag)
528+#if 0 /*JP*/
522529 pline("%s brain is unharmed.",
523530 (mdef == &youmonst) ? "Your" : s_suffix(Monnam(mdef)));
531+#else
532+ pline("%sの脳は無事だった.",
533+ (mdef == &youmonst) ? "あなた" : Monnam(mdef));
534+#endif
524535 return MM_MISS; /* side-effects can't occur */
525536 } else if (magr == &youmonst) {
537+/*JP
526538 You("eat %s brain!", s_suffix(mon_nam(mdef)));
539+*/
540+ You("%sの脳を食べた!", mon_nam(mdef));
527541 } else if (mdef == &youmonst) {
542+/*JP
528543 Your("brain is eaten!");
544+*/
545+ Your("脳は食べられた!");
529546 } else { /* monster against monster */
530547 if (visflag)
548+/*JP
531549 pline("%s brain is eaten!", s_suffix(Monnam(mdef)));
550+*/
551+ pline("%sの脳は食べられた!", Monnam(mdef));
532552 }
533553
534554 if (flesh_petrifies(pd)) {
@@ -542,7 +562,10 @@ int *dmg_p; /* for dishing out extra damage in lieu of Int loss */
542562 /* no need to check for poly_when_stoned or Stone_resistance;
543563 mind flayers don't have those capabilities */
544564 if (visflag)
565+/*JP
545566 pline("%s turns to stone!", Monnam(magr));
567+*/
568+ pline("%sは石になった!", Monnam(magr));
546569 monstone(magr);
547570 if (magr->mhp > 0) {
548571 /* life-saved; don't continue eating the brains */
@@ -550,7 +573,10 @@ int *dmg_p; /* for dishing out extra damage in lieu of Int loss */
550573 } else {
551574 if (magr->mtame && !visflag)
552575 /* parallels mhitm.c's brief_feeling */
576+/*JP
553577 You("have a sad thought for a moment, then is passes.");
578+*/
579+ You("悲しい考えにおそわれたが、すぐに過ぎさった.");
554580 return MM_AGR_DIED;
555581 }
556582 }
@@ -562,12 +588,21 @@ int *dmg_p; /* for dishing out extra damage in lieu of Int loss */
562588 */
563589 eating_conducts(pd);
564590 if (mindless(pd)) { /* (cannibalism not possible here) */
591+/*JP
565592 pline("%s doesn't notice.", Monnam(mdef));
593+*/
594+ pline("%sは気づいていない.", Monnam(mdef));
566595 /* all done; no extra harm inflicted upon target */
567596 return MM_MISS;
568597 } else if (is_rider(pd)) {
598+/*JP
569599 pline("Ingesting that is fatal.");
600+*/
601+ pline("取り込んだらすぐに死んでしまった.");
602+/*JP
570603 Sprintf(killer.name, "unwisely ate the brain of %s", pd->mname);
604+*/
605+ Sprintf(killer.name, "愚かにも%sの体を食べて", pd->mname);
571606 killer.format = NO_KILLER_PREFIX;
572607 done(DIED);
573608 /* life-saving needed to reach here */
@@ -595,19 +630,28 @@ int *dmg_p; /* for dishing out extra damage in lieu of Int loss */
595630 */
596631 /* no such thing as mindless players */
597632 if (ABASE(A_INT) <= ATTRMIN(A_INT)) {
633+/*JP
598634 static NEARDATA const char brainlessness[] = "brainlessness";
635+*/
636+ static NEARDATA const char brainlessness[] = "脳を失って";
599637
600638 if (Lifesaved) {
601639 Strcpy(killer.name, brainlessness);
602640 killer.format = KILLED_BY;
603641 done(DIED);
604642 /* amulet of life saving has now been used up */
643+/*JP
605644 pline("Unfortunately your brain is still gone.");
645+*/
646+ pline("残念ながらあなたには脳がない.");
606647 /* sanity check against adding other forms of life-saving */
607648 u.uprops[LIFESAVED].extrinsic =
608649 u.uprops[LIFESAVED].intrinsic = 0L;
609650 } else {
651+/*JP
610652 Your("last thought fades away.");
653+*/
654+ Your("最後の思いが走馬燈のように横ぎった.");
611655 }
612656 Strcpy(killer.name, brainlessness);
613657 killer.format = KILLED_BY;
@@ -615,7 +659,10 @@ int *dmg_p; /* for dishing out extra damage in lieu of Int loss */
615659 /* can only get here when in wizard or explore mode and user has
616660 explicitly chosen not to die; arbitrarily boost intelligence */
617661 ABASE(A_INT) = ATTRMIN(A_INT) + 2;
662+/*JP
618663 You_feel("like a scarecrow.");
664+*/
665+ You("かかしのような気持がした.");
619666 }
620667 give_nutrit = TRUE; /* in case a conflicted pet is doing this */
621668 exercise(A_WIS, FALSE);
@@ -627,7 +674,10 @@ int *dmg_p; /* for dishing out extra damage in lieu of Int loss */
627674 */
628675 if (mindless(pd)) {
629676 if (visflag)
677+/*JP
630678 pline("%s doesn't notice.", Monnam(mdef));
679+*/
680+ pline("%sは気づいていない.", Monnam(mdef));
631681 return MM_MISS;
632682 } else if (is_rider(pd)) {
633683 mondied(magr);
@@ -639,7 +689,10 @@ int *dmg_p; /* for dishing out extra damage in lieu of Int loss */
639689 *dmg_p += xtra_dmg;
640690 give_nutrit = TRUE;
641691 if (*dmg_p >= mdef->mhp && visflag)
692+/*JP
642693 pline("%s last thought fades away...",
694+*/
695+ pline("%sの最後の思いがよぎる...",
643696 s_suffix(Monnam(mdef)));
644697 }
645698 }
@@ -1175,7 +1228,10 @@ register int pm;
11751228 case PM_DOPPELGANGER:
11761229 case PM_SANDESTIN: /* moot--they don't leave corpses */
11771230 if (Unchanging) {
1178- You_feel("momentarily different."); /* same as poly trap */
1231+#if 0 /*JP*/
1232+ You_feel("一瞬違った感じがした."); /* same as poly trap */
1233+#else
1234+#endif
11791235 } else {
11801236 /*JP
11811237 You_feel("a change coming over you.");
@@ -1346,6 +1402,7 @@ char *buf;
13461402 */
13471403 Strcat(buf, "空っぽの");
13481404 else {
1405+#if 0 /*JP*//*日本語は後で*/
13491406 if ((obj->cknown || iflags.override_ID) && obj->spe < 0) {
13501407 if (r == ROTTEN_TIN || r == HOMEMADE_TIN) {
13511408 /* put these before the word tin */
@@ -1354,19 +1411,32 @@ char *buf;
13541411 } else {
13551412 Sprintf(eos(buf), " of %s ", tintxts[r].txt);
13561413 }
1414+ Sprintf(eos(buf), "%s", tintxts[r].txt);
13571415 } else {
13581416 Strcpy(eos(buf), " of ");
13591417 }
1418+#endif
1419+#if 1 /*JP*//*「の」で始まるなら後置、それ以外なら前置*/
1420+ if (strstr(tintxts[r].txt, "の") != tintxts[r].txt) {
1421+ Strcpy(eos(buf), tintxts[r].txt);
1422+ }
1423+#endif
13601424 if (vegetarian(&mons[mnum]))
13611425 /*JP
13621426 Sprintf(eos(buf), "%s", mons[mnum].mname);
13631427 */
1364- Sprintf(eos(buf), "%sの", mons[mnum].mname);
1428+ Sprintf(eos(buf), "%s", mons[mnum].mname);
13651429 else
13661430 /*JP
13671431 Sprintf(eos(buf), "%s meat", mons[mnum].mname);
13681432 */
1369- Sprintf(eos(buf), "%sの肉の", mons[mnum].mname);
1433+ Sprintf(eos(buf), "%sの肉", mons[mnum].mname);
1434+#if 1 /*JP*//*「の」で始まるなら後置、それ以外なら前置*/
1435+ if (strstr(tintxts[r].txt, "の") == tintxts[r].txt) {
1436+ Strcpy(eos(buf), tintxts[r].txt);
1437+ }
1438+ Strcpy(eos(buf), "の");
1439+#endif
13701440 }
13711441 }
13721442 }
@@ -1436,7 +1506,10 @@ const char *mesg;
14361506
14371507 r = tin_variety(tin, FALSE);
14381508 if (tin->otrapped || (tin->cursed && r != HOMEMADE_TIN && !rn2(8))) {
1509+/*JP
14391510 b_trapped("tin", 0);
1511+*/
1512+ b_trapped("缶", 0);
14401513 costly_tin(COST_DSTROY);
14411514 goto use_up_tin;
14421515 }
@@ -1458,7 +1531,10 @@ const char *mesg;
14581531 which = 0; /* 0=>plural, 1=>as-is, 2=>"the" prefix */
14591532 if ((mnum == PM_COCKATRICE || mnum == PM_CHICKATRICE)
14601533 && (Stone_resistance || Hallucination)) {
1534+/*JP
14611535 what = "chicken";
1536+*/
1537+ what = "鶏肉";
14621538 which = 1; /* suppress pluralization */
14631539 } else if (Hallucination) {
14641540 what = rndmonnam(NULL);
@@ -1657,11 +1733,18 @@ struct obj *otmp;
16571733 */
16581734 mesg = "缶は魔法のように開いた!";
16591735 else
1736+/*JP
16601737 pline_The("tin seems easy to open.");
1738+*/
1739+ pline_The("缶は簡単に開けられそうだ.");
16611740 } else if (uwep) {
16621741 switch (uwep->otyp) {
16631742 case TIN_OPENER:
1743+#if 0 /*JP*/
16641744 mesg = "You easily open the tin."; /* iff tmp==0 */
1745+#else
1746+ mesg = "あなたは簡単に缶を開けた."; /* iff tmp==0 */
1747+#endif
16651748 tmp = rn2(uwep->cursed ? 3 : !uwep->blessed ? 2 : 1);
16661749 break;
16671750 case DAGGER:
@@ -1939,9 +2022,15 @@ struct obj *otmp;
19392022 consume_oeaten(otmp, 2); /* oeaten >>= 2 */
19402023 } else if ((mnum == PM_COCKATRICE || mnum == PM_CHICKATRICE)
19412024 && (Stone_resistance || Hallucination)) {
2025+/*JP
19422026 pline("This tastes just like chicken!");
2027+*/
2028+ pline("これは鶏肉の味だ!");
19432029 } else if (mnum == PM_FLOATING_EYE && u.umonnum == PM_RAVEN) {
2030+/*JP
19442031 You("peck the eyeball with delight.");
2032+*/
2033+ You("目玉をつんつんつついた.");
19452034 } else {
19462035 /* [is this right? omnivores end up always disliking the taste] */
19472036 boolean yummy = vegan(&mons[mnum])
@@ -2046,7 +2135,7 @@ struct obj *otmp;
20462135 /*JP
20472136 : "That food really hit the spot!");
20482137 */
2049- : "That food really hit the spot!");
2138+ : "この食べ物は本当に申し分ない!");
20502139 else if (u.uhunger <= 700)
20512140 /*JP
20522141 pline("That satiated your %s!", body_part(STOMACH));
@@ -2564,11 +2653,20 @@ struct obj *otmp;
25642653 not food, so we substitute cursed; fortunately our hero
25652654 won't have to wait for a prince to be rescued/revived */
25662655 if (Race_if(PM_DWARF) && Hallucination)
2656+/*JP
25672657 verbalize("Heigh-ho, ho-hum, I think I'll skip work today.");
2658+*/
2659+ verbalize("ハイホー,ハイホー,今日は休み.");
25682660 else if (Deaf || !flags.acoustics)
2661+/*JP
25692662 You("fall asleep.");
2663+*/
2664+ You("眠りに落ちた.");
25702665 else
2666+/*JP
25712667 You_hear("sinister laughter as you fall asleep...");
2668+*/
2669+ You_hear("眠りに落ちるときに邪悪な笑い声を聞いた...");
25722670 fall_asleep(-rn1(11, 20), TRUE);
25732671 }
25742672 break;
@@ -2615,7 +2713,11 @@ struct obj *otmp;
26152713 int material = objects[otmp->otyp].oc_material, mnum = otmp->corpsenm;
26162714 long rotted = 0L;
26172715
2716+#if 0 /*JP*/
26182717 Strcpy(foodsmell, Tobjnam(otmp, "smell"));
2718+#else
2719+ Strcpy(foodsmell, xname(otmp));
2720+#endif
26192721 Strcpy(it_or_they, (otmp->quan == 1L) ? "it" : "they");
26202722 #if 0 /*JP*/
26212723 Sprintf(eat_it_anyway, "Eat %s anyway?",
@@ -3280,7 +3382,10 @@ void
32803382 reset_faint()
32813383 {
32823384 if (afternmv == unfaint)
3385+/*JP
32833386 unmul("You revive.");
3387+*/
3388+ unmul("あなたは気がついた.");
32843389 }
32853390
32863391 /* compute and comment on your (new?) hunger status */
@@ -3612,7 +3717,10 @@ vomit() /* A good idea from David Neves */
36123717 if (cantvomit(youmonst.data))
36133718 /* doesn't cure food poisoning; message assumes that we aren't
36143719 dealing with some esoteric body_part() */
3720+/*JP
36153721 Your("jaw gapes convulsively.");
3722+*/
3723+ Your("あごは発作的に大きく開いた.");
36163724 else
36173725 make_sick(0L, (char *) 0, TRUE, SICK_VOMITABLE);
36183726 nomul(-2);
--- a/src/end.c
+++ b/src/end.c
@@ -467,12 +467,21 @@ int how;
467467 set up fake mptr for type_is_pname/the_unique_pm */
468468 mptr = &mons[mtmp->mappearance];
469469 fakenm = mptr->mname;
470+#if 0 /*JP*/
470471 } else if (alt && strstri(realnm, "vampire")
471472 && !strcmp(fakenm, "vampire bat")) {
472473 /* special case: use "vampire in bat form" in preference
473474 to redundant looking "vampire in vampire bat form" */
474475 fakenm = "bat";
476+#else
477+ } else if (alt && strstri(realnm, "吸血鬼")
478+ && !strcmp(fakenm, "吸血こうもり")) {
479+ /* 「吸血こうもりの姿の吸血鬼」は冗長なので
480+ 「こうもりの姿の吸血鬼」の形にする */
481+ fakenm = "こうもり";
482+#endif
475483 }
484+#if 0 /*JP*/
476485 /* for the alternate format, always suppress any article;
477486 pname and the_unique should also have s_suffix() applied,
478487 but vampires don't take on any shapes which warrant that */
@@ -482,12 +491,23 @@ int how;
482491 Sprintf(shape, "the %s", fakenm);
483492 else /* "a"/"an" */
484493 Strcpy(shape, an(fakenm));
494+#else /*JP:日本語ではシンプル*/
495+ Strcpy(shape, fakenm);
496+#endif
485497 /* omit "called" to avoid excessive verbosity */
498+#if 0 /*JP*/
486499 Sprintf(eos(buf),
487500 alt ? "%s in %s form"
488501 : mimicker ? "%s disguised as %s"
489502 : "%s imitating %s",
490503 realnm, shape);
504+#else
505+ Sprintf(eos(buf),
506+ alt ? "%sの姿の%s"
507+ : mimicker ? "%sのふりをしている%s"
508+ : "%sのまねをしている%s",
509+ shape, realnm);
510+#endif
491511 mptr = mtmp->data; /* reset for mimicker case */
492512 } else if (mptr == &mons[PM_GHOST]) {
493513 #if 0 /*JP*/
@@ -787,9 +807,15 @@ boolean taken;
787807
788808 if (!done_stopprint) {
789809 ask = should_query_disclose_option('o', &defquery);
810+#if 0 /*JP*/
790811 c = ask ? yn_function("Do you want to see the dungeon overview?",
791812 ynqchars, defquery)
792813 : defquery;
814+#else
815+ c = ask ? yn_function("迷宮の概要を見ますか?",
816+ ynqchars, defquery)
817+ : defquery;
818+#endif
793819 if (c == 'y')
794820 show_overview((how >= PANICKED) ? 1 : 2, how);
795821 if (c == 'q')
@@ -1778,7 +1804,10 @@ boolean ask;
17781804 }
17791805 } else if (defquery == 'a') {
17801806 /* #dovanquished rather than final disclosure, so pline() is ok */
1807+/*JP
17811808 pline("No monsters have been vanquished.");
1809+*/
1810+ pline("倒した敵はいなかった.");
17821811 }
17831812 }
17841813
--- a/src/engrave.c
+++ b/src/engrave.c
@@ -191,11 +191,19 @@ cant_reach_floor(x, y, up, check_pit)
191191 int x, y;
192192 boolean up, check_pit;
193193 {
194+#if 0 /*JP*/
194195 You("can't reach the %s.",
195196 up ? ceiling(x, y)
196197 : (check_pit && can_reach_floor(FALSE))
197198 ? "bottom of the pit"
198199 : surface(x, y));
200+#else
201+ You("%sに届かない.",
202+ up ? ceiling(x, y)
203+ : (check_pit && can_reach_floor(FALSE))
204+ ? "落し穴の底"
205+ : surface(x, y));
206+#endif
199207 }
200208
201209 const char *
@@ -660,7 +668,10 @@ doengrave()
660668 return 0;
661669
662670 if (otmp == &zeroobj) {
671+/*JP
663672 Strcat(strcpy(fbuf, "your "), makeplural(body_part(FINGER)));
673+*/
674+ Strcat(strcpy(fbuf, "あなたの"), makeplural(body_part(FINGER)));
664675 writer = fbuf;
665676 } else
666677 writer = yname(otmp);
--- a/src/exper.c
+++ b/src/exper.c
@@ -2,6 +2,11 @@
22 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
33 /* NetHack may be freely redistributed. See license for details. */
44
5+/* JNetHack Copyright */
6+/* (c) Issei Numata, Naoki Hamada, Shigehiro Miyashita, 1994-2000 */
7+/* For 3.4-, Copyright (c) SHIRAKATA Kentaro, 2002-2016 */
8+/* JNetHack may be freely redistributed. See license for details. */
9+
510 #include "hack.h"
611 #include <limits.h>
712
--- a/src/explode.c
+++ b/src/explode.c
@@ -605,9 +605,15 @@ int expltype;
605605 if (iflags.last_msg == PLNMSG_CAUGHT_IN_EXPLOSION
606606 || iflags.last_msg
607607 == PLNMSG_TOWER_OF_FLAME) /*seffects()*/
608+/*JP
608609 pline("It is fatal.");
610+*/
611+ pline("それは致命的だ.");
609612 else
613+/*JP
610614 pline_The("%s is fatal.", str);
615+*/
616+ pline_The("%sは致命的だ.", str);
611617 /* Known BUG: BURNING suppresses corpse in bones data,
612618 but done does not handle killer reason correctly */
613619 done((adtyp == AD_FIRE) ? BURNING : DIED);
--- a/src/files.c
+++ b/src/files.c
@@ -2,6 +2,11 @@
22 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
33 /* NetHack may be freely redistributed. See license for details. */
44
5+/* JNetHack Copyright */
6+/* (c) Issei Numata, Naoki Hamada, Shigehiro Miyashita, 1994-2000 */
7+/* For 3.4-, Copyright (c) SHIRAKATA Kentaro, 2002-2016 */
8+/* JNetHack may be freely redistributed. See license for details. */
9+
510 #include "hack.h"
611 #include "dlb.h"
712
--- a/src/fountain.c
+++ b/src/fountain.c
@@ -2,13 +2,13 @@
22 /* Copyright Scott R. Turner, srt@ucla, 10/27/86 */
33 /* NetHack may be freely redistributed. See license for details. */
44
5-/* Code for drinking from fountains. */
6-
75 /* JNetHack Copyright */
86 /* (c) Issei Numata, Naoki Hamada, Shigehiro Miyashita, 1994-2000 */
97 /* For 3.4-, Copyright (c) SHIRAKATA Kentaro, 2002-2016 */
108 /* JNetHack may be freely redistributed. See license for details. */
119
10+/* Code for drinking from fountains. */
11+
1212 #include "hack.h"
1313
1414 STATIC_DCL void NDECL(dowatersnakes);
@@ -797,7 +797,7 @@ drinksink()
797797 /*JP
798798 pline("Yuk, this water tastes awful.");
799799 */
800- pline("オェ,とてもひどい味がする.");
800+ pline("オェ,とてもひどい味がする.");
801801 more_experienced(1, 0);
802802 newexplevel();
803803 break;
--- a/src/hack.c
+++ b/src/hack.c
@@ -1003,7 +1003,10 @@ int mode;
10031003 } else if (dx && dy && worm_cross(ux, uy, x, y)) {
10041004 /* consecutive long worm segments are at <ux,y> and <x,uy> */
10051005 if (mode == DO_MOVE)
1006+/*JP
10061007 pline("%s is in your way.", Monnam(m_at(ux, y)));
1008+*/
1009+ pline("道の途中に%sがいる.", Monnam(m_at(ux, y)));
10071010 return FALSE;
10081011 }
10091012 /* Pick travel path that does not require crossing a trap.
@@ -1403,36 +1406,72 @@ struct trap *desttrap; /* nonnull if another trap at <x,y> */
14031406 after this successful move would have its
14041407 can't-do-that message suppressed by Norep */
14051408 if (flags.verbose)
1409+/*JP
14061410 Norep("You move within the chain's reach.");
1411+*/
1412+ Norep("鎖が届く範囲に移動できる.");
14071413 return TRUE;
14081414 }
14091415 }
14101416 if (--u.utrap) {
14111417 if (flags.verbose) {
14121418 if (anchored) {
1419+#if 0 /*JP*/
14131420 predicament = "chained to the";
14141421 culprit = "buried ball";
1422+#else
1423+ predicament = "とつながっている";
1424+ culprit = "埋まっている球";
1425+#endif
14151426 } else {
1427+#if 0 /*JP*/
14161428 predicament = "stuck in the";
14171429 culprit = surface(u.ux, u.uy);
1430+#else
1431+ predicament = "に埋まっている";
1432+ culprit = surface(u.ux, u.uy);
1433+#endif
14181434 }
14191435 if (u.usteed) {
14201436 if (anchored)
1437+#if 0 /*JP*/
14211438 Norep("You and %s are %s %s.", steedname, predicament,
14221439 culprit);
1440+#else
1441+ Norep("あなたと%sは%s%s.", steedname, culprit,
1442+ predicament);
1443+#endif
14231444 else
1445+#if 0 /*JP*/
14241446 Norep("%s is %s %s.", upstart(steedname), predicament,
14251447 culprit);
1448+#else
1449+ Norep("%sは%s%s.", steedname, culprit,
1450+ predicament);
1451+#endif
14261452 } else
1453+/*JP
14271454 Norep("You are %s %s.", predicament, culprit);
1455+*/
1456+ Norep("あなたは%sに%s.", culprit, predicament);
14281457 }
14291458 } else {
14301459 if (u.usteed)
1460+#if 0 /*JP*/
14311461 pline("%s finally %s free.", upstart(steedname),
14321462 !anchored ? "lurches" : "wrenches the ball");
1463+#else
1464+ pline("%sは%sやっと自由になった.", upstart(steedname),
1465+ !anchored ? "もがいて" : "鉄球をもぎ取って");
1466+#endif
14331467 else
1468+#if 0 /*JP*/
14341469 You("finally %s free.",
14351470 !anchored ? "wriggle" : "wrench the ball");
1471+#else
1472+ You("%sやっと自由になった.",
1473+ !anchored ? "もがいて" : "鉄球をもぎ取って");
1474+#endif
14361475 if (anchored)
14371476 buried_ball_to_punishment();
14381477 }
@@ -1761,27 +1800,51 @@ domove()
17611800 because you don't see remembered terrain while underwater;
17621801 although the hero can attack an adjacent monster this way,
17631802 assume he can't reach out far enough to distinguish terrain */
1803+#if 0 /*JP*/
17641804 Sprintf(buf, (Is_waterlevel(&u.uz) && levl[x][y].typ == AIR)
17651805 ? "an air bubble"
17661806 : "nothing");
1807+#else
1808+ Sprintf(buf, (Is_waterlevel(&u.uz) && levl[x][y].typ == AIR)
1809+ ? "空気の泡"
1810+ : "何もないところ");
1811+#endif
17671812 else if (solid)
17681813 /* glyph might indicate unseen terrain if hero is blind;
17691814 unlike searching, this won't reveal what that terrain is
17701815 (except for solid rock, where the glyph would otherwise
17711816 yield ludicrous "dark part of a room") */
1817+#if 0 /*JP*/
17721818 Strcpy(buf,
17731819 (levl[x][y].typ == STONE)
17741820 ? "solid rock"
17751821 : glyph_is_cmap(glyph)
17761822 ? the(defsyms[glyph_to_cmap(glyph)].explanation)
17771823 : (const char *) "an unknown obstacle");
1824+#else
1825+ Strcpy(buf,
1826+ (levl[x][y].typ == STONE)
1827+ ? "石"
1828+ : glyph_is_cmap(glyph)
1829+ ? the(defsyms[glyph_to_cmap(glyph)].explanation)
1830+ : (const char *) "不明な障害物");
1831+#endif
17781832 /* note: 'solid' is misleadingly named and catches pools
17791833 of water and lava as well as rock and walls */
17801834 else
1835+/*JP
17811836 Strcpy(buf, "thin air");
1837+*/
1838+ Strcpy(buf, "何もない空中");
1839+#if 0 /*JP*/
17821840 You("%s%s %s.",
17831841 !(boulder || solid) ? "" : !explo ? "harmlessly " : "futilely ",
17841842 explo ? "explode at" : "attack", buf);
1843+#else
1844+ You("%s%s%s.",
1845+ !(boulder || solid) ? "" : !explo ? "効果なく" : "むだに",
1846+ buf, explo ? "で爆発した" : "を攻撃した");
1847+#endif
17851848
17861849 nomul(0);
17871850 if (explo) {
@@ -1877,7 +1940,10 @@ domove()
18771940 } else if (u.ux0 != x && u.uy0 != y && NODIAG(mtmp->data - mons)) {
18781941 /* can't swap places when pet can't move to your spot */
18791942 u.ux = u.ux0, u.uy = u.uy0;
1943+/*JP
18801944 You("stop. %s can't move diagonally.", upstart(y_monnam(mtmp)));
1945+*/
1946+ You("止まった.%sは斜めに動けない.", upstart(y_monnam(mtmp)));
18811947 } else if (u.ux0 != x && u.uy0 != y && bad_rock(mtmp->data, x, u.uy0)
18821948 && bad_rock(mtmp->data, u.ux0, y)
18831949 && (bigmonst(mtmp->data) || (curr_mon_load(mtmp) > 600))) {
@@ -2097,7 +2163,10 @@ switch_terrain()
20972163 if (blocklev) {
20982164 /* called from spoteffects(), skip float_down() */
20992165 if (Levitation)
2166+/*JP
21002167 You_cant("levitate in here.");
2168+*/
2169+ You_cant("ここでは浮遊できない.");
21012170 BLevitation |= FROMOUTSIDE;
21022171 } else if (BLevitation) {
21032172 BLevitation &= ~FROMOUTSIDE;
@@ -2107,7 +2176,10 @@ switch_terrain()
21072176 /* the same terrain that blocks levitation also blocks flight */
21082177 if (blocklev) {
21092178 if (Flying)
2179+/*JP
21102180 You_cant("fly in here.");
2181+*/
2182+ You_cant("ここでは飛べない.");
21112183 BFlying |= FROMOUTSIDE;
21122184 } else if (BFlying) {
21132185 BFlying &= ~FROMOUTSIDE;
@@ -2116,7 +2188,10 @@ switch_terrain()
21162188 resuming it; that could be tracked so that this message could
21172189 be adjusted to "resume flying", but isn't worth the effort...] */
21182190 if (Flying)
2191+/*JP
21192192 You("start flying.");
2193+*/
2194+ You("飛びはじめた.");
21202195 }
21212196 }
21222197
@@ -2307,9 +2382,15 @@ boolean pick;
23072382 /* Warning alerts you to ice danger */
23082383 if (Warning && is_ice(u.ux, u.uy)) {
23092384 static const char *const icewarnings[] = {
2385+#if 0 /*JP*/
23102386 "The ice seems very soft and slushy.",
23112387 "You feel the ice shift beneath you!",
23122388 "The ice, is gonna BREAK!", /* The Dead Zone */
2389+#else
2390+ "氷はとても軟らかくて溶けそうだ.",
2391+ "あなたの下の氷が動いたような気がした!",
2392+ "氷が壊れるぞ!", /* The Dead Zone */
2393+#endif
23132394 };
23142395 long time_left = spot_time_left(u.ux, u.uy, MELT_ICE_AWAY);
23152396 if (time_left && time_left < 15L)
@@ -2788,15 +2869,30 @@ dopickup()
27882869 if (!OBJ_AT(u.ux, u.uy)) {
27892870 register struct rm *lev = &levl[u.ux][u.uy];
27902871 if (IS_THRONE(lev->typ))
2872+/*JP
27912873 pline("It must weigh%s a ton!", lev->looted ? " almost" : "");
2874+*/
2875+ pline("これは%s重い!", lev->looted ? "かなり" : "すごく");
27922876 else if (IS_SINK(lev->typ))
2877+/*JP
27932878 pline_The("plumbing connects it to the floor.");
2879+*/
2880+ pline_The("配管は床につながっている.");
27942881 else if (IS_GRAVE(lev->typ))
2882+/*JP
27952883 You("don't need a gravestone. Yet.");
2884+*/
2885+ pline("あなたには墓石は不要だ...今のところ.");
27962886 else if (IS_FOUNTAIN(lev->typ))
2887+/*JP
27972888 You("could drink the water...");
2889+*/
2890+ You("水を飲めない...");
27982891 else if (IS_DOOR(lev->typ) && (lev->doormask & D_ISOPEN))
2892+/*JP
27992893 pline("It won't come off the hinges.");
2894+*/
2895+ pline("ヒンジを外せない.");
28002896 else
28012897 /*JP
28022898 There("is nothing here to pick up.");
@@ -2813,7 +2909,10 @@ dopickup()
28132909 else if (u.usteed && P_SKILL(P_RIDING) < P_BASIC)
28142910 rider_cant_reach();
28152911 else if (Blind && !can_reach_floor(TRUE))
2912+/*JP
28162913 You("cannot reach anything here.");
2914+*/
2915+ You("何にも届かない.");
28172916 else
28182917 /*JP
28192918 You("cannot reach the %s.", surface(u.ux, u.uy));
--- a/src/hacklib.c
+++ b/src/hacklib.c
@@ -3,6 +3,11 @@
33 /* Copyright (c) Robert Patrick Rankin, 1991 */
44 /* NetHack may be freely redistributed. See license for details. */
55
6+/* JNetHack Copyright */
7+/* (c) Issei Numata, Naoki Hamada, Shigehiro Miyashita, 1994-2000 */
8+/* For 3.4-, Copyright (c) SHIRAKATA Kentaro, 2002-2016 */
9+/* JNetHack may be freely redistributed. See license for details. */
10+
611 #include "hack.h" /* for config.h+extern.h */
712 /*=
813 Assorted 'small' utility routines. They're virtually independent of
--- a/src/potion.c
+++ b/src/potion.c
@@ -2225,7 +2225,10 @@ dodip()
22252225 allowall[1] = '\0';
22262226 if (!(obj = getobj(allowall, "dip")))
22272227 return 0;
2228+/*JP
22282229 if (inaccessible_equipment(obj, "dip", FALSE))
2230+*/
2231+ if (inaccessible_equipment(obj, "を浸す", FALSE))
22292232 return 0;
22302233
22312234 #if 0 /*JP*/