• 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

Revisionb531429b1a7d858730932acf06635226563b20a8 (tree)
Zeit2016-03-16 03:42:06
AutorSHIRAKATA Kentaro <argrath@ub32...>
CommiterSHIRAKATA Kentaro

Log Message

add translation

Ändern Zusammenfassung

Diff

--- a/src/apply.c
+++ b/src/apply.c
@@ -90,7 +90,7 @@ struct obj *obj;
9090 /*JP
9191 You("take a picture of the %s.",
9292 */
93- You("take a picture of the %s.",
93+ You("%sの写真を撮った.",
9494 (u.dz > 0) ? surface(u.ux, u.uy) : ceiling(u.ux, u.uy));
9595 } else if (!u.dx && !u.dy) {
9696 (void) zapyourself(obj, TRUE);
@@ -267,7 +267,11 @@ int rx, ry, *resp;
267267 } else if (Hallucination) {
268268 if (!corpse) {
269269 /* it's a statue */
270+/*JP
270271 Strcpy(buf, "You're both stoned");
272+*/
273+ Strcpy(buf, "石だ");
274+#if 0 /*JP*//*代名詞処理は不要*/
271275 } else if (corpse->quan == 1L && !more_corpses) {
272276 int gndr = 2; /* neuter: "it" */
273277 struct monst *mtmp = get_mtraits(corpse, FALSE);
@@ -290,14 +294,18 @@ int rx, ry, *resp;
290294 }
291295 Sprintf(buf, "%s's dead", genders[gndr].he); /* "he"/"she"/"it" */
292296 buf[0] = highc(buf[0]);
297+#endif
293298 } else { /* plural */
299+/*JP
294300 Strcpy(buf, "They're dead");
301+*/
302+ Strcpy(buf, "死んでるぜ");
295303 }
296304 /* variations on "He's dead, Jim." (Star Trek's Dr McCoy) */
297305 /*JP
298306 You_hear("a voice say, \"%s, Jim.\"", buf);
299307 */
300- You_hear("「そいつは死んでるぜ,ジム」という声が聞こえた.");
308+ You_hear("「そいつは%s,ジム」という声が聞こえた.", buf);
301309 *resp = 1;
302310 return TRUE;
303311
@@ -328,6 +336,7 @@ int rx, ry, *resp;
328336 } else { /* statue */
329337 const char *what, *how;
330338
339+#if 0 /*JP*/
331340 mptr = &mons[statue->corpsenm];
332341 if (Blind) { /* ignore statue->dknown; it'll always be set */
333342 Sprintf(buf, "%s %s",
@@ -339,7 +348,17 @@ int rx, ry, *resp;
339348 if (!type_is_pname(mptr))
340349 what = The(what);
341350 }
351+#else /*JP:日本語ではシンプルに*/
352+ if (Blind) { /* ignore statue->dknown; it'll always be set */
353+ what = (rx == u.ux && ry == u.uy) ? "これ" : "あれ";
354+ } else {
355+ what = mons[statue->corpsenm].mname;
356+ }
357+#endif
358+/*JP
342359 how = "fine";
360+*/
361+ how = "よい";
343362 if (Role_if(PM_HEALER)) {
344363 struct trap *ttmp = t_at(rx, ry);
345364
@@ -347,12 +366,12 @@ int rx, ry, *resp;
347366 /*JP
348367 how = "extraordinary";
349368 */
350- how = "健康的な";
369+ how = "並外れた";
351370 else if (Has_contents(statue))
352371 /*JP
353372 how = "remarkable";
354373 */
355- how = "躍動的な";
374+ how = "注目すべき";
356375 }
357376
358377 /*JP
@@ -480,7 +499,10 @@ register struct obj *obj;
480499
481500 if (mtmp->mundetected) {
482501 if (!canspotmon(mtmp))
502+/*JP
483503 There("is %s hidden there.", mnm);
504+*/
505+ pline("ここに%sが隠れている.", mnm);
484506 mtmp->mundetected = 0;
485507 newsym(mtmp->mx, mtmp->my);
486508 } else if (mtmp->mappearance) {
@@ -498,9 +520,15 @@ register struct obj *obj;
498520 break;
499521 }
500522 seemimic(mtmp);
523+/*JP
501524 pline("That %s is really %s", what, mnm);
525+*/
526+ pline("この%sは実際には%s.", what, mnm);
502527 } else if (flags.verbose && !canspotmon(mtmp)) {
528+/*JP
503529 There("is %s there.", mnm);
530+*/
531+ pline("ここには%sがいる.", mnm);
504532 }
505533 mstatusline(mtmp);
506534 if (!canspotmon(mtmp))
@@ -563,7 +591,7 @@ struct obj *obj;
563591 /*JP
564592 You("blow bubbles through %s.", yname(obj));
565593 */
566- You("%sを通して泡を出した.", yname(obj));
594+ You("%sを通して泡を出した.", xname(obj));
567595 } else {
568596 /*JP
569597 You(whistle_str, obj->cursed ? "shrill" : "high");
@@ -1522,27 +1550,43 @@ struct obj **optr;
15221550 return;
15231551 }
15241552
1553+ /*JP:最終的には「ろうそくを燭台に取りつけますか?」*/
15251554 /* first, minimal candelabrum suffix for formatting candles */
1555+/*JP
15261556 Sprintf(qsfx, " to\033%s?", thesimpleoname(otmp));
1557+*/
1558+ Sprintf(qsfx, "を\033%sに取りつけますか?", thesimpleoname(otmp));
15271559 /* next, format the candles as a prefix for the candelabrum */
15281560 /*JP
15291561 (void) safe_qbuf(qbuf, "Attach ", qsfx, obj, yname, thesimpleoname, s);
15301562 */
1531- (void) safe_qbuf(qbuf, "Attach ", qsfx, obj, yname, thesimpleoname, s);
1563+ (void) safe_qbuf(qbuf, "", qsfx, obj, xname, thesimpleoname, s);
1564+ /*JP:「(ろうそく)を\033燭台に取りつけますか?」*/
15321565 /* strip temporary candelabrum suffix */
1566+#if 0 /*JP*/
15331567 if ((q = strstri(qbuf, " to\033")) != 0)
15341568 Strcpy(q, " to ");
1569+#else
1570+ if ((q = strchr(qbuf, '\033')) != 0)
1571+ *q = '\0';
1572+ /*JP:「(ろうそく)を」*/
1573+#endif
15351574 /* last, format final "attach candles to candelabrum?" query */
1575+/*JP
15361576 if (yn(safe_qbuf(qbuf, qbuf, "?", otmp, yname, thesimpleoname, "it"))
1577+*/
1578+ if (yn(safe_qbuf(qbuf, qbuf, "に取りつけますか?", otmp, xname, thesimpleoname, "それ"))
15371579 == 'n') {
15381580 use_lamp(obj);
15391581 return;
15401582 } else {
15411583 if ((long) otmp->spe + obj->quan > 7L) {
15421584 obj = splitobj(obj, 7L - (long) otmp->spe);
1585+#if 0 /*JP:日本語では不要*/
15431586 /* avoid a grammatical error if obj->quan gets
15441587 reduced to 1 candle from more than one */
15451588 s = (obj->quan != 1) ? "candles" : "candle";
1589+#endif
15461590 } else
15471591 *optr = 0;
15481592 #if 0 /*JP*/
@@ -1687,7 +1731,7 @@ struct obj *obj;
16871731 verbalize("That's in addition to the cost of %s %s, of course.",
16881732 yname(obj), obj->quan == 1L ? "itself" : "themselves");
16891733 #else
1690- verbalize("これはもちろん%sの値段とは別だよ.", Yname2(obj));
1734+ verbalize("これはもちろん%sの値段とは別だよ.", xname(obj));
16911735 #endif
16921736 bill_dummy_object(obj);
16931737 }
@@ -1706,9 +1750,15 @@ struct obj *obj;
17061750 if (obj->lamplit) {
17071751 if (obj->otyp == OIL_LAMP || obj->otyp == MAGIC_LAMP
17081752 || obj->otyp == BRASS_LANTERN)
1753+/*JP
17091754 pline("%slamp is now off.", Shk_Your(buf, obj));
1755+*/
1756+ pline("%sランプの灯は消えた.", Shk_Your(buf, obj));
17101757 else
1758+/*JP
17111759 You("snuff out %s.", yname(obj));
1760+*/
1761+ You("%sを吹き消した.", xname(obj));
17121762 end_burn(obj, TRUE);
17131763 return;
17141764 }
@@ -1760,7 +1810,7 @@ struct obj *obj;
17601810 otense(obj, "burn"), Blind ? "." : " brightly!");
17611811 #else
17621812 pline("%sは%s燃えあがった!",
1763- Yname2(obj), Blind ? "" : "明るく");
1813+ xname(obj), Blind ? "" : "明るく");
17641814 #endif
17651815 if (obj->unpaid && costly_spot(u.ux, u.uy)
17661816 && obj->age == 20L * (long) objects[obj->otyp].oc_cost) {
@@ -2576,6 +2626,7 @@ long timeout;
25762626 struct obj *mshelter = level.objects[mtmp->mx][mtmp->my];
25772627 Sprintf(monnambuf, "%s", an(m_monnam(mtmp)));
25782628
2629+ /*JP:TODO:and_vanishは未処理*/
25792630 and_vanish[0] = '\0';
25802631 if ((mtmp->minvis && !See_invisible)
25812632 || (mtmp->data->mlet == S_MIMIC
@@ -2616,7 +2667,10 @@ long timeout;
26162667 case OBJ_FLOOR:
26172668 if (cansee_spot && !silent) {
26182669 if (suppress_see)
2670+/*JP
26192671 pline("%s suddenly vanishes!", an(xname(figurine)));
2672+*/
2673+ pline("%sは突然消えた!", xname(figurine));
26202674 else
26212675 #if 0 /*JP*/
26222676 You_see("a figurine transform into %s%s!", monnambuf,
@@ -2823,7 +2877,7 @@ struct obj *obj;
28232877 /*JP
28242878 You("cover %s with a thick layer of grease.", yname(otmp));
28252879 */
2826- You("%sに脂を丹念に塗った.", yname(otmp));
2880+ You("%sに脂を丹念に塗った.", xname(otmp));
28272881 otmp->greased = 1;
28282882 if (obj->cursed && !nohands(youmonst.data)) {
28292883 incr_itimeout(&Glib, rnd(15));
@@ -3302,7 +3356,10 @@ struct obj *obj;
33023356 rx = u.ux + u.dx;
33033357 ry = u.uy + u.dy;
33043358 if (!isok(rx, ry)) {
3359+/*JP
33053360 You("miss.");
3361+*/
3362+ You("はずした.");
33063363 return res;
33073364 }
33083365 mtmp = m_at(rx, ry);
@@ -3490,7 +3547,7 @@ struct obj *obj;
34903547 /*JP
34913548 You("wrap your bullwhip around %s.", yname(otmp));
34923549 */
3493- You("鞭を%sにからませた.", yname(otmp));
3550+ You("鞭を%sにからませた.", xname(otmp));
34943551 if (gotit && mwelded(otmp)) {
34953552 #if 0 /*JP*/
34963553 pline("%s welded to %s %s%c",
@@ -3516,7 +3573,7 @@ struct obj *obj;
35163573 /*JP
35173574 You("yank %s to the %s!", yname(otmp),
35183575 */
3519- You("%sを%sに引き落した!", yname(otmp),
3576+ You("%sを%sに引き落した!", xname(otmp),
35203577 surface(u.ux, u.uy));
35213578 place_object(otmp, u.ux, u.uy);
35223579 stackobj(otmp);
@@ -3549,7 +3606,7 @@ struct obj *obj;
35493606 /*JP
35503607 You("snatch %s!", yname(otmp));
35513608 */
3552- You("%sを奪った!", yname(otmp));
3609+ You("%sを奪った!", xname(otmp));
35533610 if (otmp->otyp == CORPSE
35543611 && touch_petrifies(&mons[otmp->corpsenm]) && !uarmg
35553612 && !Stone_resistance
@@ -4090,7 +4147,7 @@ struct obj *obj;
40904147 /*JP
40914148 boolean is_fragile = (!strcmp(OBJ_DESCR(objects[obj->otyp]), "balsa"));
40924149 */
4093- boolean is_fragile = (!strcmp(OBJ_DESCR(objects[obj->otyp]), "バルサ"));
4150+ boolean is_fragile = (!strcmp(OBJ_DESCR(objects[obj->otyp]), "バルサの杖"));
40944151
40954152 #if 0 /*JP*/
40964153 if (!paranoid_query(ParanoidBreakwand,
@@ -4101,7 +4158,7 @@ struct obj *obj;
41014158 if (!paranoid_query(ParanoidBreakwand,
41024159 safe_qbuf(confirm,
41034160 "本当に", "を壊すの?",
4104- obj, yname, ysimple_name, "杖")))
4161+ obj, xname, ysimple_name, "杖")))
41054162 #endif
41064163 return 0;
41074164
@@ -4109,19 +4166,19 @@ struct obj *obj;
41094166 /*JP
41104167 You_cant("break %s without hands!", yname(obj));
41114168 */
4112- You("手が無いので%sを壊せない!", yname(obj));
4169+ You("手が無いので%sを壊せない!", xname(obj));
41134170 return 0;
41144171 } else if (ACURR(A_STR) < (is_fragile ? 5 : 10)) {
41154172 /*JP
41164173 You("don't have the strength to break %s!", yname(obj));
41174174 */
4118- You("%sを壊すだけの力がない!", yname(obj));
4175+ You("%sを壊すだけの力がない!", xname(obj));
41194176 return 0;
41204177 }
41214178 /*JP
41224179 pline("Raising %s high above your %s, you break it in two!", yname(obj),
41234180 */
4124- pline("%sを%sの上に高く掲げ,二つにへし折った!", yname(obj),
4181+ You("%sを%sの上に高く掲げ,二つにへし折った!", xname(obj),
41254182 body_part(HEAD));
41264183
41274184 /* [ALI] Do this first so that wand is removed from bill. Otherwise,
--- a/src/artifact.c
+++ b/src/artifact.c
@@ -1146,9 +1146,11 @@ char *hittee; /* target's name: "you" or mon_nam(mdef) */
11461146 mdef->mconf = 1;
11471147 }
11481148
1149+#if 0 /*JP*//*日本語では不要*/
11491150 /* now give message(s) describing side-effects;
11501151 don't let vtense() be fooled by assigned name ending in 's' */
11511152 fakename = youdefend ? "you" : "mon";
1153+#endif
11521154 if (youattack || youdefend || vis) {
11531155 (void) upstart(hittee); /* capitalize */
11541156 if (resisted) {
@@ -1351,8 +1353,13 @@ int dieroll; /* needed for Magicbane and vorpal blades */
13511353 */
13521354 You("%sに深く斬りつけた!",mon_nam(mdef));
13531355 else if (vis)
1356+#if 0 /*JP*/
13541357 pline("%s cuts deeply into %s!", Monnam(magr),
13551358 hittee);
1359+#else
1360+ pline("%sは%sに深く斬りつけた!", Monnam(magr),
1361+ hittee);
1362+#endif
13561363 *dmgptr *= 2;
13571364 return TRUE;
13581365 }
@@ -2072,19 +2079,37 @@ int orc_count; /* new count (warn_obj_cnt is old count); -1 is a flag value */
20722079 if (orc_count == -1 && warn_obj_cnt > 0) {
20732080 /* -1 means that blindness has just been toggled; give a
20742081 'continue' message that eventual 'stop' message will match */
2082+#if 0 /*JP*/
20752083 pline("%s is %s.", bare_artifactname(uwep),
20762084 !Blind ? "glowing" : "quivering");
2085+#else
2086+ pline("%sは%sている.", bare_artifactname(uwep),
2087+ !Blind ? "輝い" : "震え");
2088+#endif
20772089 } else if (orc_count > 0 && warn_obj_cnt == 0) {
20782090 /* 'start' message */
20792091 if (!Blind)
2092+#if 0 /*JP*/
20802093 pline("%s %s %s!", bare_artifactname(uwep),
20812094 otense(uwep, "glow"), glow_color(uwep->oartifact));
2095+#else
2096+ pline("%sは%s輝いた!", bare_artifactname(uwep),
2097+ glow_color(uwep->oartifact));
2098+#endif
20822099 else
2100+/*JP
20832101 pline("%s quivers slightly.", bare_artifactname(uwep));
2102+*/
2103+ pline("%sは少し震えた.", bare_artifactname(uwep));
20842104 } else if (orc_count == 0 && warn_obj_cnt > 0) {
20852105 /* 'stop' message */
2106+#if 0 /*JP*/
20862107 pline("%s stops %s.", bare_artifactname(uwep),
20872108 !Blind ? "glowing" : "quivering");
2109+#else
2110+ pline("%sの%sは止まった.", bare_artifactname(uwep),
2111+ !Blind ? "輝き" : "震え");
2112+#endif
20882113 }
20892114 }
20902115 }
@@ -2112,8 +2137,13 @@ boolean loseit; /* whether to drop it if hero can longer touch it */
21122137
21132138 /* hero can't handle this object, but didn't get touch_artifact()'s
21142139 "<obj> evades your grasp|control" message; give an alternate one */
2140+#if 0 /*JP*/
21152141 You_cant("handle %s%s!", yname(obj),
21162142 obj->owornmask ? " anymore" : "");
2143+#else
2144+ You_cant("%s%sを扱えない!", obj->owornmask ? "もう" : "",
2145+ xname(obj));
2146+#endif
21172147 /* also inflict damage unless touch_artifact() already did so */
21182148 if (!touch_blasted) {
21192149 /* damage is somewhat arbitrary; half the usual 1d20 physical
@@ -2122,7 +2152,10 @@ boolean loseit; /* whether to drop it if hero can longer touch it */
21222152 tmp = rnd(10), dmg += Maybe_Half_Phys(tmp);
21232153 if (bane)
21242154 dmg += rnd(10);
2155+/*JP
21252156 Sprintf(buf, "handling %s", killer_xname(obj));
2157+*/
2158+ Sprintf(buf, "%sを扱って", killer_xname(obj));
21262159 losehp(dmg, buf, KILLED_BY);
21272160 exercise(A_CON, FALSE);
21282161 }
@@ -2150,8 +2183,13 @@ boolean loseit; /* whether to drop it if hero can longer touch it */
21502183 } else {
21512184 /* dropx gives a message iff item lands on an altar */
21522185 if (!IS_ALTAR(levl[u.ux][u.uy].typ))
2186+#if 0 /*JP*/
21532187 pline("%s to the %s.", Tobjnam(obj, "fall"),
21542188 surface(u.ux, u.uy));
2189+#else
2190+ pline("%sは%sに落ちた.", xname(obj),
2191+ surface(u.ux, u.uy));
2192+#endif
21552193 dropx(obj);
21562194 }
21572195 *objp = obj = 0; /* no longer in inventory */
@@ -2260,7 +2298,10 @@ int dropflag; /* 0==don't drop, 1==drop all, 2==drop weapon */
22602298 if (had_rings != (!!uleft + !!uright) && uarmg && uarmg->cursed)
22612299 uncurse(uarmg); /* temporary? hack for ring removal plausibility */
22622300 if (had_gloves && !uarmg)
2301+/*JP
22632302 selftouch("After losing your gloves, you");
2303+*/
2304+ selftouch("小手を失ったあと,あなたは");
22642305
22652306 if (!--nesting)
22662307 clear_bypasses(); /* reset upon final exit */
--- a/src/attrib.c
+++ b/src/attrib.c
@@ -302,12 +302,36 @@ static const struct poison_effect_message {
302302 void VDECL((*delivery_func), (const char *, ...));
303303 const char *effect_msg;
304304 } poiseff[] = {
305+#if 0 /*JP*/
305306 { You_feel, "weaker" }, /* A_STR */
307+#else
308+ { You_feel, "弱くなった" }, /* A_STR */
309+#endif
310+#if 0 /*JP*/
306311 { Your, "brain is on fire" }, /* A_INT */
312+#else
313+ { You, "頭に血がのぼった" }, /* A_INT */
314+#endif
315+#if 0 /*JP*/
307316 { Your, "judgement is impaired" }, /* A_WIS */
317+#else
318+ { You, "判断力を失った" }, /* A_WIS */
319+#endif
320+#if 0 /*JP*/
308321 { Your, "muscles won't obey you" }, /* A_DEX */
322+#else
323+ { You, "思うように動けない" }, /* A_DEX */
324+#endif
325+#if 0 /*JP*/
309326 { You_feel, "very sick" }, /* A_CON */
327+#else
328+ { You_feel, "とても気分が悪くなった" }, /* A_CON */
329+#endif
330+#if 0 /*JP*/
310331 { You, "break out in hives" } /* A_CHA */
332+#else
333+ { You, "じんましんがあらわれた" } /* A_CHA */
334+#endif
311335 };
312336
313337 /* feedback for attribute loss due to poisoning */
@@ -318,7 +342,10 @@ boolean exclaim; /* emphasis */
318342 {
319343 void VDECL((*func), (const char *, ...)) = poiseff[typ].delivery_func;
320344
345+/*JP
321346 (*func)("%s%c", poiseff[typ].effect_msg, exclaim ? '!' : '.');
347+*/
348+ (*func)("%s%s", poiseff[typ].effect_msg, exclaim ? "!" : ".");
322349 }
323350
324351 /* called when an attack or trap has poisoned the hero (used to be in mon.c)
@@ -1066,13 +1093,20 @@ int oldlevel, newlevel;
10661093 *(abil->ability) |= mask;
10671094 if (!(*(abil->ability) & INTRINSIC & ~mask)) {
10681095 if (*(abil->gainstr))
1096+/*JP
10691097 You_feel("%s!", abil->gainstr);
1098+*/
1099+ You("%sような気がした!", abil->gainstr);
10701100 }
10711101 } else if (oldlevel >= abil->ulevel && newlevel < abil->ulevel) {
10721102 *(abil->ability) &= ~mask;
10731103 if (!(*(abil->ability) & INTRINSIC)) {
10741104 if (*(abil->losestr))
1105+/*JP
10751106 You_feel("%s!", abil->losestr);
1107+*/
1108+ You("%sような気がした!", abil->losestr);
1109+/*JP:この条件は満さないはず.*/
10761110 else if (*(abil->gainstr))
10771111 You_feel("less %s!", abil->gainstr);
10781112 }
@@ -1256,17 +1290,31 @@ int reason; /* 0==conversion, 1==helm-of-OA on, 2==helm-of-OA off */
12561290 /* worn helm of opposite alignment might block change */
12571291 if (!uarmh || uarmh->otyp != HELM_OF_OPPOSITE_ALIGNMENT)
12581292 u.ualign.type = u.ualignbase[A_CURRENT];
1293+#if 0 /*JP*/
12591294 You("have a %ssense of a new direction.",
12601295 (u.ualign.type != oldalign) ? "sudden " : "");
1296+#else
1297+ You("%s別の方向性にめざめた.",
1298+ (u.ualign.type != oldalign) ? "突然" : "");
1299+#endif
12611300 } else {
12621301 /* putting on or taking off a helm of opposite alignment */
12631302 u.ualign.type = (aligntyp) newalign;
12641303 if (reason == 1)
1304+/*JP
12651305 Your("mind oscillates %s.", Hallucination ? "wildly" : "briefly");
1306+*/
1307+ You("%s寝返った.", Hallucination ? "荒っぽく" : "あっさりと");
12661308 else if (reason == 2)
1309+#if 0 /*JP*/
12671310 Your("mind is %s.", Hallucination
12681311 ? "much of a muchness"
12691312 : "back in sync with your body");
1313+#else
1314+ Your("心は%s.", Hallucination
1315+ ? "似たり寄ったりになった"
1316+ : "再び体と一致するようになった");
1317+#endif
12701318 }
12711319
12721320 if (u.ualign.type != oldalign) {
--- a/src/ball.c
+++ b/src/ball.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 /* Ball & Chain
611 * =============================================================*/
712
@@ -57,7 +62,7 @@ ballfall()
5762 /*JP
5863 pline("%s does not protect you.", Yname2(uarmh));
5964 */
60- Your("%sでは守れない.", Yname2(uarmh));
65+ Your("%sでは守れない.", xname(uarmh));
6166 }
6267 #if 0 /*JP*/
6368 losehp(Maybe_Half_Phys(dmg), "crunched in the head by an iron ball",
--- a/src/bones.c
+++ b/src/bones.c
@@ -2,6 +2,11 @@
22 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985,1993. */
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 "lev.h"
712
--- a/src/botl.c
+++ b/src/botl.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
@@ -257,7 +262,10 @@ boolean female;
257262 return role->name.f;
258263 else if (role->name.m)
259264 return role->name.m;
265+/*JP
260266 return "Player";
267+*/
268+ return "プレイヤー";
261269 }
262270
263271 STATIC_OVL const char *
--- a/src/cmd.c
+++ b/src/cmd.c
@@ -326,7 +326,10 @@ doextcmd(VOID_ARGS)
326326
327327 func = extcmdlist[idx].ef_funct;
328328 if (iflags.menu_requested && !accept_menu_prefix(func)) {
329+/*JP
329330 pline("'m' prefix has no effect for this command.");
331+*/
332+ pline("'m'接頭辞はこのコマンドには無効.");
330333 iflags.menu_requested = FALSE;
331334 }
332335 retval = (*func)();
@@ -1980,7 +1983,7 @@ int final;
19801983 : surface(u.ux, u.uy)); /* catchall; shouldn't happen */
19811984 you_are(buf, from_what(WWALKING));
19821985 #else
1983- Sprintf(buf, "%の上を歩いて",
1986+ Sprintf(buf, "%sの上を歩いて",
19841987 is_pool(u.ux, u.uy) ? "水"
19851988 : is_lava(u.ux, u.uy) ? "溶岩"
19861989 : surface(u.ux, u.uy)); /* catchall; shouldn't happen */
--- a/src/detect.c
+++ b/src/detect.c
@@ -379,10 +379,16 @@ register struct obj *sobj;
379379 return !stale;
380380 } else if (!ct) {
381381 known = TRUE;
382+/*JP
382383 You("%s %s nearby.", sobj ? "smell" : "sense", what);
384+*/
385+ You("近くで%s%s.", what, sobj ? "のにおいをかいだ" : "を感知した");
383386 if (sobj && sobj->blessed) {
384387 if (!u.uedibility)
388+/*JP
385389 pline("Your %s starts to tingle.", body_part(NOSE));
390+*/
391+ pline("あなたの%sがうずうずしだした.", body_part(NOSE));
386392 u.uedibility = 1;
387393 }
388394 } else {
@@ -686,7 +692,7 @@ int mclass; /* monster class, 0 for all */
686692 /*JP
687693 : "You feel threatened.");
688694 */
689- : "あなたは恐怖でぞくぞくした.");
695+ : "あなたは恐怖でぞくっとした.");
690696 return 1;
691697 } else {
692698 boolean woken = FALSE;
@@ -1587,7 +1593,10 @@ register int aflag; /* intrinsic autosearch vs explicit searching */
15871593 exercise(A_WIS, TRUE);
15881594 nomul(0);
15891595 feel_location(x, y); /* make sure it shows up */
1596+/*JP
15901597 You("find a hidden door.");
1598+*/
1599+ You("隠された扉を見つけた.");
15911600 } else if (levl[x][y].typ == SCORR) {
15921601 if (rnl(7 - fund))
15931602 continue;
@@ -1596,7 +1605,10 @@ register int aflag; /* intrinsic autosearch vs explicit searching */
15961605 exercise(A_WIS, TRUE);
15971606 nomul(0);
15981607 feel_location(x, y); /* make sure it shows up */
1608+/*JP
15991609 You("find a hidden passage.");
1610+*/
1611+ You("隠された通路を見つけた.");
16001612 } else {
16011613 /* Be careful not to find anything in an SCORR or SDOOR */
16021614 if ((mtmp = m_at(x, y)) != 0 && !aflag) {
@@ -1708,7 +1720,10 @@ int full; /* wizard|explore modes allow player to request full map */
17081720 int which_subset; /* when not full, whether to suppress objs and/or traps */
17091721 {
17101722 if ((Hallucination || Stunned || Confusion) && !full) {
1723+/*JP
17111724 You("are too disoriented for this.");
1725+*/
1726+ You("混乱しているのでそれはできない.");
17121727 } else {
17131728 int x, y, glyph, levl_glyph, default_glyph;
17141729 uchar seenv;
@@ -1800,21 +1815,42 @@ int which_subset; /* when not full, whether to suppress objs and/or traps */
18001815 u.uswallow = 1;
18011816 flush_screen(1);
18021817 if (full) {
1818+/*JP
18031819 Strcpy(buf, "underlying terrain");
1820+*/
1821+ Strcpy(buf, "下にある地形");
18041822 } else {
1823+/*JP
18051824 Strcpy(buf, "known terrain");
1825+*/
1826+ Strcpy(buf, "知っている地形");
18061827 if (keep_traps)
1828+#if 0 /*JP*/
18071829 Sprintf(eos(buf), "%s traps",
18081830 (keep_objs || keep_mons) ? "," : " and");
1831+#else
1832+ Strcat(buf, "と罠");
1833+#endif
18091834 if (keep_objs)
1835+#if 0 /*JP*/
18101836 Sprintf(eos(buf), "%s%s objects",
18111837 (keep_traps || keep_mons) ? "," : "",
18121838 keep_mons ? "" : " and");
1839+#else
1840+ Strcat(buf, "と物体");
1841+#endif
18131842 if (keep_mons)
1843+#if 0 /*JP*/
18141844 Sprintf(eos(buf), "%s and monsters",
18151845 (keep_traps || keep_objs) ? "," : "");
1846+#else
1847+ Strcat(buf, "と怪物");
1848+#endif
18161849 }
1850+/*JP
18171851 pline("Showing %s only...", buf);
1852+*/
1853+ pline("%sだけを見る...", buf);
18181854 display_nhwindow(WIN_MAP, TRUE); /* give "--More--" prompt */
18191855 docrt(); /* redraw the screen, restoring regular map */
18201856 if (Underwater)
--- a/src/dig.c
+++ b/src/dig.c
@@ -400,13 +400,24 @@ dig(VOID_ARGS)
400400 dmg = 1;
401401 else if (uarmf)
402402 dmg = (dmg + 1) / 2;
403+/*JP
403404 You("hit yourself in the %s.", body_part(FOOT));
405+*/
406+ pline("%sに当たった.", body_part(FOOT));
407+#if 0 /*JP*/
404408 Sprintf(kbuf, "chopping off %s own %s", uhis(),
405409 body_part(FOOT));
410+#else
411+ Sprintf(kbuf, "自分の%sを切り落として", body_part(FOOT));
412+#endif
406413 losehp(Maybe_Half_Phys(dmg), kbuf, KILLED_BY);
407414 } else {
415+#if 0 /*JP*/
408416 You("destroy the bear trap with %s.",
409417 yobjnam(uwep, (const char *) 0));
418+#else
419+ You("%sで熊の罠を壊した.", xname(uwep));
420+#endif
410421 u.utrap = 0; /* release from trap */
411422 deltrap(ttmp);
412423 }
@@ -1390,14 +1401,24 @@ struct obj *obj;
13901401 int adjidx = (idx + 4) % 8;
13911402 trap_with_u->conjoined |= (1 << idx);
13921403 trap->conjoined |= (1 << adjidx);
1404+/*JP
13931405 pline("You clear some debris from between the pits.");
1406+*/
1407+ pline("あなたは落し穴の間からごみを取りのぞいた.");
13941408 }
13951409 } else if (u.utrap && u.utraptype == TT_PIT
13961410 && (trap_with_u = t_at(u.ux, u.uy))) {
1411+#if 0 /*JP*/
13971412 You("swing %s, but the rubble has no place to go.",
13981413 yobjnam(obj, (char *) 0));
1414+#else
1415+ You("%sを振り回したが,破片の行き場所がない.", xname(obj));
1416+#endif
13991417 } else
1418+/*JP
14001419 You("swing %s through thin air.", yobjnam(obj, (char *) 0));
1420+*/
1421+ You("空中で%sを振り回した.", xname(obj));
14011422 } else {
14021423 #if 0 /*JP*/
14031424 static const char *const d_action[6] = { "swinging", "digging",
@@ -1701,15 +1722,23 @@ boolean unexpected;
17011722 /* U.S. classification system uses 1-A for eligible to serve
17021723 and 4-F for ineligible due to physical or mental defect;
17031724 some intermediate values exist but are rarely seen */
1725+#if 0 /*JP*/
17041726 You_feel("like you are %s.",
17051727 (ACURR(A_STR) < 6 || ACURR(A_DEX) < 6
17061728 || ACURR(A_CON) < 6 || ACURR(A_CHA) < 6
17071729 || ACURR(A_INT) < 6 || ACURR(A_WIS) < 6) ? "4-F"
17081730 : "1-A");
1731+#else
1732+ You("突然杉良太郎を思い出した.");
1733+#endif
17091734 } else {
17101735 if (!Hallucination) {
1736+/*JP
17111737 You_feel("a draft.");
1738+*/
1739+ You_feel("すきま風を感じた.");
17121740 } else {
1741+#if 0 /*JP*//*"draft"=「徴兵」*/
17131742 /* "marching" is deliberately ambiguous; it might mean drills
17141743 after entering military service or mean engaging in protests */
17151744 static const char *draft_reaction[] = {
@@ -1723,6 +1752,9 @@ boolean unexpected;
17231752 /* L: +(0..2), N: +(-1..1), C: +(-2..0); all: 0..3 */
17241753 dridx += rn1(3, sgn(u.ualign.type) - 1);
17251754 You_feel("like %s.", draft_reaction[dridx]);
1755+#else /*JP:日本語では凝ったことはしない*/
1756+ You("杉良太郎を思い出した.");
1757+#endif
17261758 }
17271759 }
17281760 }
@@ -1984,7 +2016,10 @@ char *msg;
19842016 int ltyp;
19852017 struct rm *room;
19862018 const char *foundation_msg =
2019+/*JP
19872020 "The foundation is too hard to dig through from this angle.";
2021+*/
2022+ "基礎はこの角度から掘るには固すぎる.";
19882023
19892024 if (!cc)
19902025 return FALSE;
@@ -2008,16 +2043,25 @@ char *msg;
20082043 return FALSE;
20092044 } else if (IS_TREE(ltyp)) { /* check trees before stone */
20102045 /* if (room->wall_info & W_NONDIGGABLE) */
2046+/*JP
20112047 Strcpy(msg, "The tree's roots glow then fade.");
2048+*/
2049+ Strcpy(msg, "木の根は一瞬輝いた.");
20122050 return FALSE;
20132051 } else if (ltyp == STONE || ltyp == SCORR) {
20142052 if (room->wall_info & W_NONDIGGABLE) {
2053+/*JP
20152054 Strcpy(msg, "The rock glows then fades.");
2055+*/
2056+ Strcpy(msg, "石は一瞬輝いた.");
20162057 return FALSE;
20172058 }
20182059 } else if (ltyp == IRONBARS) {
20192060 /* "set of iron bars" */
2061+/*JP
20202062 Strcpy(msg, "The bars go much deeper than your pit.");
2063+*/
2064+ Strcpy(msg, "棒は落し穴より遥かに深いところまで埋まっている.");
20212065 #if 0
20222066 } else if (is_lava(cc->x, cc->y)) {
20232067 } else if (is_ice(cc->x, cc->y)) {
@@ -2025,39 +2069,69 @@ char *msg;
20252069 } else if (IS_GRAVE(ltyp)) {
20262070 #endif
20272071 } else if (IS_SINK(ltyp)) {
2072+/*JP
20282073 Strcpy(msg, "A tangled mass of plumbing remains below the sink.");
2074+*/
2075+ Strcpy(msg, "入り組んだ配管が流し台の下に残ったままだ.");
20292076 return FALSE;
20302077 } else if ((cc->x == xupladder && cc->y == yupladder) /* ladder up */
20312078 || (cc->x == xdnladder && cc->y == ydnladder)) { /* " down */
2079+/*JP
20322080 Strcpy(msg, "The ladder is unaffected.");
2081+*/
2082+ Strcpy(msg, "はしごは影響を受けない.");
20332083 return FALSE;
20342084 } else {
20352085 const char *supporting = (const char *) 0;
20362086
20372087 if (IS_FOUNTAIN(ltyp))
2088+/*JP
20382089 supporting = "fountain";
2090+*/
2091+ supporting = "泉";
20392092 else if (IS_THRONE(ltyp))
2093+/*JP
20402094 supporting = "throne";
2095+*/
2096+ supporting = "玉座";
20412097 else if (IS_ALTAR(ltyp))
2098+/*JP
20422099 supporting = "altar";
2100+*/
2101+ supporting = "祭壇";
20432102 else if ((cc->x == xupstair && cc->y == yupstair)
20442103 || (cc->x == sstairs.sx && cc->y == sstairs.sy
20452104 && sstairs.up))
20462105 /* "staircase up" */
2106+/*JP
20472107 supporting = "stairs";
2108+*/
2109+ supporting = "階段";
20482110 else if ((cc->x == xdnstair && cc->y == ydnstair)
20492111 || (cc->x == sstairs.sx && cc->y == sstairs.sy
20502112 && !sstairs.up))
20512113 /* "staircase down" */
2114+/*JP
20522115 supporting = "stairs";
2116+*/
2117+ supporting = "階段";
20532118 else if (ltyp == DRAWBRIDGE_DOWN /* "lowered drawbridge" */
20542119 || ltyp == DBWALL) /* "raised drawbridge" */
2120+/*JP
20552121 supporting = "drawbridge";
2122+*/
2123+ supporting = "跳ね橋";
20562124
20572125 if (supporting) {
2126+#if 0 /*JP*/
20582127 Sprintf(msg, "The %s%ssupporting structures remain intact.",
20592128 supporting ? s_suffix(supporting) : "",
20602129 supporting ? " " : "");
2130+#else
2131+ Sprintf(msg, "%s%s支えている部分はそのままだ.",
2132+ supporting ? supporting : "",
2133+ supporting ? "を" : "");
2134+#endif
20612135 return FALSE;
20622136 }
20632137 }
@@ -2081,7 +2155,10 @@ schar filltyp;
20812155 levl[trap->tx][trap->ty].typ = filltyp;
20822156 liquid_flow(trap->tx, trap->ty, filltyp, trap,
20832157 (trap->tx == u.ux && trap->ty == u.uy)
2158+/*JP
20842159 ? "Suddenly %s flows in from the adjacent pit!"
2160+*/
2161+ ? "突然隣の落し穴から%sが流れ込んできた!"
20852162 : (char *) 0);
20862163 for (idx = 0; idx < 8; ++idx) {
20872164 if (t.conjoined & (1 << idx)) {
@@ -2205,7 +2282,10 @@ boolean *dealloced;
22052282 unpunish();
22062283 u.utrap = rn1(50, 20);
22072284 u.utraptype = TT_BURIEDBALL;
2285+/*JP
22082286 pline_The("iron ball gets buried!");
2287+*/
2288+ pline_The("鉄の球は埋まった!");
22092289 }
22102290 /* after unpunish(), or might get deallocated chain */
22112291 otmp2 = otmp->nexthere;
--- a/src/do.c
+++ b/src/do.c
@@ -382,9 +382,15 @@ polymorph_sink()
382382 make_grave(u.ux, u.uy, (char *) 0);
383383 break;
384384 }
385+#if 0 /*JP*/
385386 pline_The("sink transforms into %s!", (levl[u.ux][u.uy].typ == THRONE)
386387 ? "a throne"
387388 : an(surface(u.ux, u.uy)));
389+#else
390+ pline_The("流し台は%sに変化した!", (levl[u.ux][u.uy].typ == THRONE)
391+ ? "玉座"
392+ : an(surface(u.ux, u.uy)));
393+#endif
388394 newsym(u.ux, u.uy);
389395 }
390396
@@ -696,10 +702,12 @@ const char *word;
696702 /* getobj() kludge sets corpsenm to user's specified count
697703 when refusing to split a stack of cursed loadstones */
698704 if (*word) {
705+#if 0 /*JP*//*日本語では不要*/
699706 /* getobj() ignores a count for throwing since that is
700707 implicitly forced to be 1; replicate its kludge... */
701708 if (!strcmp(word, "throw") && obj->quan > 1L)
702709 obj->corpsenm = 1;
710+#endif
703711 #if 0 /*JP*/
704712 pline("For some reason, you cannot %s%s the stone%s!", word,
705713 obj->corpsenm ? " any of" : "", plur(obj->quan));
@@ -853,7 +861,7 @@ boolean with_impact;
853861 /*JP
854862 if (!u.uswallow && flooreffects(obj, u.ux, u.uy, "drop"))
855863 */
856- if (!u.uswallow && flooreffects(obj,u.ux,u.uy,"落ちる"))
864+ if (!u.uswallow && flooreffects(obj,u.ux,u.uy, "落ちる"))
857865 return;
858866 /* uswallow check done by GAN 01/29/87 */
859867 if (u.uswallow) {
@@ -1119,7 +1127,10 @@ dodown()
11191127 if (float_down(I_SPECIAL | TIMEOUT, W_ARTI)) {
11201128 return 1; /* came down, so moved */
11211129 } else if (!HLevitation && !ELevitation) {
1130+/*JP
11221131 Your("latent levitation ceases.");
1132+*/
1133+ pline("潜在的な浮遊能力が中断した.");
11231134 return 1; /* did something, effectively moved */
11241135 }
11251136 }
@@ -1884,7 +1895,10 @@ boolean at_stairs, falling, portal;
18841895 #endif
18851896
18861897 if ((annotation = get_annotation(&u.uz)))
1898+/*JP
18871899 You("remember this level as %s.", annotation);
1900+*/
1901+ You("この階が%sであることを思い出した.", annotation);
18881902
18891903 /* assume this will always return TRUE when changing level */
18901904 (void) in_out_region(u.ux, u.uy);
@@ -2124,11 +2138,22 @@ long timeout UNUSED;
21242138
21252139 if (rloc(mtmp, TRUE)) {
21262140 if (notice_it && !canseemon(mtmp))
2141+/*JP
21272142 pline("%s vanishes.", monname);
2143+*/
2144+ pline("%sは消えた.", monname);
21282145 else if (!notice_it && canseemon(mtmp))
2146+#if 0 /*JP*/
21292147 pline("%s appears.", Monnam(mtmp)); /* not pre-rloc monname */
2148+#else
2149+ pline("%sが現れた.", Monnam(mtmp)); /* not pre-rloc monname */
2150+#endif
21302151 else if (notice_it && dist2(mtmp->mx, mtmp->my, x, y) > 2)
2152+#if 0 /*JP*/
21312153 pline("%s teleports.", monname); /* saw it and still see it */
2154+#else
2155+ pline("%sは瞬間移動した.", monname); /* saw it and still see it */
2156+#endif
21322157 }
21332158 }
21342159