OSDN Git Service

#37287 #37353 (2.2.0.89) 型の置換を継続中。 / Ongoing type replacement.
[hengband/hengband.git] / src / do-spell.c
index 476e83e..7d848c0 100644 (file)
-/* File: do-spell.c */
-
-/* Purpose: Do everything for each spell */
-
-#include "angband.h"
-
-#define LIFE_SPEL_CURE_LIGHT_WOUNDS         0  
-#define LIFE_SPEL_BLESS                            1  
-#define LIFE_SPEL_CAUSE_LIGHT_WOUNDS       2  
-#define LIFE_SPEL_CALL_LIGHT               3  
-#define LIFE_SPEL_DETECT_DOORS_AND_TRAPS    4  
-#define LIFE_SPEL_CURE_MEDIUM_WOUNDS       5  
-#define LIFE_SPEL_CURE_POISON              6  
-#define LIFE_SPEL_SATISFY_HUNGER           7  
-#define LIFE_SPEL_REMOVE_CURSE             8  
-#define LIFE_SPEL_CAUSE_MEDIUM_WOUNDS      9  
-#define LIFE_SPEL_CURE_CRITICAL_WOUNDS     10 
-#define LIFE_SPEL_RESIST_HEAT_AND_COLD     11 
-#define LIFE_SPEL_SENSE_SURROUNDINGS       12 
-#define LIFE_SPEL_TURN_UNDEAD              13 
-#define LIFE_SPEL_HEALING                  14 
-#define LIFE_SPEL_GLYPH_OF_WARDING         15 
-#define LIFE_SPEL_DISPEL_CURSE             16 
-#define LIFE_SPEL_PERCEPTION               17 
-#define LIFE_SPEL_DISPEL_UNDEAD                    18 
-#define LIFE_SPEL_DAY_OF_THE_DOVE          19 
-#define LIFE_SPEL_CAUSE_CRITICAL_WOUNDS            20 
-#define LIFE_SPEL_WORD_OF_RECALL           21 
-#define LIFE_SPEL_ALTER_REALITY                    22 
-#define LIFE_SPEL_WARDING_TRUE             23 
-#define LIFE_SPEL_STERILIZATION                    24 
-#define LIFE_SPEL_DETECTION                25 
-#define LIFE_SPEL_ANNIHILATE_UNDEAD        26 
-#define LIFE_SPEL_CLAIRVOYANCE             27 
-#define LIFE_SPEL_RESTORATION              28 
-#define LIFE_SPEL_HEALING_TRUE             29 
-#define LIFE_SPEL_HOLY_VISION              30 
-#define LIFE_SPEL_ULTIMATE_RESISTANCE      31 
-#define SORC_SPEL_DETECT_MONSTERS          32 
-#define SORC_SPEL_PHASE_DOOR               33 
-#define SORC_SPEL_DETECT_DOORS_AND_TRAPS    34 
-#define SORC_SPEL_LIGHT_AREA               35 
-#define SORC_SPEL_CONFUSE_MONSTER          36 
-#define SORC_SPEL_TELEPORT                 37 
-#define SORC_SPEL_SLEEP_MONSTER                    38 
-#define SORC_SPEL_RECHARGING               39 
-#define SORC_SPEL_MAGIC_MAPPING                    40 
-#define SORC_SPEL_IDENTIFY                 41 
-#define SORC_SPEL_SLOW_MONSTER             42 
-#define SORC_SPEL_MASS_SLEEP               43 
-#define SORC_SPEL_TELEPORT_AWAY                    44 
-#define SORC_SPEL_HASTE_SELF               45 
-#define SORC_SPEL_DETECTION_TRUE           46 
-#define SORC_SPEL_IDENTIFY_TRUE                    47 
-#define SORC_SPEL_DETECT_ITEMS_AND_TREASURE 48 
-#define SORC_SPEL_CHARM_MONSTER                    49 
-#define SORC_SPEL_SENSE_MINDS              50 
-#define SORC_SPEL_TELEPORT_TO_TOWN         51 
-#define SORC_SPEL_SELF_KNOWLEDGE           52 
-#define SORC_SPEL_TELEPORT_LEVEL           53 
-#define SORC_SPEL_WORD_OF_RECALL           54 
-#define SORC_SPEL_DIMENSION_DOOR           55 
-#define SORC_SPEL_PROBING                  56 
-#define SORC_SPEL_EXPLOSIVE_RUNE           57 
-#define SORC_SPEL_TELEKINESIS              58 
-#define SORC_SPEL_CLAIRVOYANCE             59 
-#define SORC_SPEL_CHARM_MONSTERS           60 
-#define SORC_SPEL_ALCHEMY                  61 
-#define SORC_SPEL_BANISHMENT               62 
-#define SORC_SPEL_GLOBE_OF_INVULNERABILITY  63 
-#define NATU_SPEL_DETECT_CREATURES         64 
-#define NATU_SPEL_LIGHTNING                65 
-#define NATU_SPEL_DETECT_DOORS_AND_TRAPS    66 
-#define NATU_SPEL_PRODUCE_FOOD             67 
-#define NATU_SPEL_DAYLIGHT                 68 
-#define NATU_SPEL_ANIMAL_TAMING                    69 
-#define NATU_SPEL_RESIST_ENVIRONMENT       70 
-#define NATU_SPEL_CURE_WOUNDS_AND_POISON    71 
-#define NATU_SPEL_STONE_TO_MUD             72 
-#define NATU_SPEL_FROST_BOLT               73 
-#define NATU_SPEL_NATURE_AWARENESS         74 
-#define NATU_SPEL_FIRE_BOLT                75 
-#define NATU_SPEL_RAY_OF_SUNLIGHT          76 
-#define NATU_SPEL_ENTANGLE                 77 
-#define NATU_SPEL_SUMMON_ANIMAL                    78 
-#define NATU_SPEL_HERBAL_HEALING           79 
-#define NATU_SPEL_STAIR_BUILDING           80 
-#define NATU_SPEL_STONE_SKIN               81 
-#define NATU_SPEL_RESISTANCE_TRUE          82 
-#define NATU_SPEL_FOREST_CREATION          83 
-#define NATU_SPEL_ANIMAL_FRIENDSHIP        84 
-#define NATU_SPEL_STONE_TELL               85 
-#define NATU_SPEL_WALL_OF_STONE                    86 
-#define NATU_SPEL_PROTECT_FROM_CORROSION    87 
-#define NATU_SPEL_EARTHQUAKE               88 
-#define NATU_SPEL_CYCLONE                  89 
-#define NATU_SPEL_BLIZZARD                 90 
-#define NATU_SPEL_LIGHTNING_STORM          91 
-#define NATU_SPEL_WHIRLPOOL                92 
-#define NATU_SPEL_CALL_SUNLIGHT                    93 
-#define NATU_SPEL_ELEMENTAL_BRANDING       94 
-#define NATU_SPEL_NATURES_WRATH                    95 
-#define CHAO_SPEL_MAGIC_MISSILE                    96 
-#define CHAO_SPEL_TRAP_DOOR_DESTRUCTION     97 
-#define CHAO_SPEL_FLASH_OF_LIGHT           98 
-#define CHAO_SPEL_TOUCH_OF_CONFUSION       99 
-#define CHAO_SPEL_MANA_BURST               100
-#define CHAO_SPEL_FIRE_BOLT                101
-#define CHAO_SPEL_FIST_OF_FORCE                    102
-#define CHAO_SPEL_TELEPORT_SELF                    103
-#define CHAO_SPEL_WONDER                   104
-#define CHAO_SPEL_CHAOS_BOLT               105
-#define CHAO_SPEL_SONIC_BOOM               106
-#define CHAO_SPEL_DOOM_BOLT                107
-#define CHAO_SPEL_FIRE_BALL                108
-#define CHAO_SPEL_TELEPORT_OTHER           109
-#define CHAO_SPEL_WORD_OF_DESTRUCTION      110
-#define CHAO_SPEL_INVOKE_LOGRUS                    111
-#define CHAO_SPEL_POLYMORPH_OTHER          112
-#define CHAO_SPEL_CHAIN_LIGHTNING          113
-#define CHAO_SPEL_ARCANE_BINDING           114
-#define CHAO_SPEL_DISINTEGRATE             115
-#define CHAO_SPEL_ALTER_REALITY                    116
-#define CHAO_SPEL_MAGIC_ROCKET             117
-#define CHAO_SPEL_CHAOS_BRANDING           118
-#define CHAO_SPEL_SUMMON_DEMON             119
-#define CHAO_SPEL_BEAM_OF_GRAVITY          120
-#define CHAO_SPEL_METEOR_SWARM             121
-#define CHAO_SPEL_FLAME_STRIKE             122
-#define CHAO_SPEL_CALL_CHAOS               123
-#define CHAO_SPEL_POLYMORPH_SELF           124
-#define CHAO_SPEL_MANA_STORM               125
-#define CHAO_SPEL_BREATHE_LOGRUS           126
-#define CHAO_SPEL_CALL_THE_VOID                    127
-#define DEAT_SPEL_DETECT_UNLIFE                    128
-#define DEAT_SPEL_MALEDICTION              129
-#define DEAT_SPEL_DETECT_EVIL              130
-#define DEAT_SPEL_STINKING_CLOUD           131
-#define DEAT_SPEL_BLACK_SLEEP              132
-#define DEAT_SPEL_RESIST_POISON                    133
-#define DEAT_SPEL_HORRIFY                  134
-#define DEAT_SPEL_ENSLAVE_UNDEAD           135
-#define DEAT_SPEL_ORB_OF_ENTROPY           136
-#define DEAT_SPEL_NETHER_BOLT              137
-#define DEAT_SPEL_CLOUD_KILL               138
-#define DEAT_SPEL_GENOCIDE_ONE             139
-#define DEAT_SPEL_POISON_BRANDING          140
-#define DEAT_SPEL_VAMPIRIC_DRAIN           141
-#define DEAT_SPEL_ANIMATE_DEAD             142
-#define DEAT_SPEL_GENOCIDE                 143
-#define DEAT_SPEL_BERSERK                  144
-#define DEAT_SPEL_INVOKE_SPIRITS           145
-#define DEAT_SPEL_DARK_BOLT                146
-#define DEAT_SPEL_BATTLE_FRENZY                    147
-#define DEAT_SPEL_VAMPIRIC_BRANDING        148
-#define DEAT_SPEL_VAMPIRISM_TRUE           149
-#define DEAT_SPEL_NETHER_WAVE              150
-#define DEAT_SPEL_DARKNESS_STORM           151
-#define DEAT_SPEL_DEATH_RAY                152
-#define DEAT_SPEL_RAISE_THE_DEAD           153
-#define DEAT_SPEL_ESOTERIA                 154
-#define DEAT_SPEL_POLYMORPH_VAMPIRE        155
-#define DEAT_SPEL_RESTORE_LIFE             156
-#define DEAT_SPEL_MASS_GENOCIDE                    157
-#define DEAT_SPEL_HELLFIRE                 158
-#define DEAT_SPEL_WRAITHFORM               159
-#define TRUM_SPEL_PHASE_DOOR               160
-#define TRUM_SPEL_TRUMP_SPIDERS                    161
-#define TRUM_SPEL_SHUFFLE                  162
-#define TRUM_SPEL_RESET_RECALL             163
-#define TRUM_SPEL_TELEPORT                 164
-#define TRUM_SPEL_TRUMP_SPYING             165
-#define TRUM_SPEL_TELEPORT_AWAY                    166
-#define TRUM_SPEL_TRUMP_ANIMALS                    167
-#define TRUM_SPEL_TRUMP_REACH              168
-#define TRUM_SPEL_TRUMP_KAMIKAZE           169
-#define TRUM_SPEL_PHANTASMAL_SERVANT       170
-#define TRUM_SPEL_HASTE_MONSTER                    171
-#define TRUM_SPEL_TELEPORT_LEVEL           172
-#define TRUM_SPEL_DIMENSION_DOOR           173
-#define TRUM_SPEL_WORD_OF_RECALL           174
-#define TRUM_SPEL_BANISH                   175
-#define TRUM_SPEL_SWAP_POSITION                    176
-#define TRUM_SPEL_TRUMP_UNDEAD             177
-#define TRUM_SPEL_TRUMP_REPTILES           178
-#define TRUM_SPEL_TRUMP_MONSTERS           179
-#define TRUM_SPEL_TRUMP_HOUNDS             180
-#define TRUM_SPEL_TRUMP_BRANDING           181
-#define TRUM_SPEL_LIVING_TRUMP             182
-#define TRUM_SPEL_TRUMP_CYBERDEMON         183
-#define TRUM_SPEL_TRUMP_DIVINATION         184
-#define TRUM_SPEL_TRUMP_LORE               185
-#define TRUM_SPEL_HEAL_MONSTER             186
-#define TRUM_SPEL_TRUMP_DRAGON             187
-#define TRUM_SPEL_TRUMP_METEOR             188
-#define TRUM_SPEL_TRUMP_DEMON              189
-#define TRUM_SPEL_TRUMP_GREATER_UNDEAD     190
-#define TRUM_SPEL_TRUMP_ANCIENT_DRAGON     191
-#define ARCA_SPEL_ZAP                      192
-#define ARCA_SPEL_WIZARD_LOCK              193
-#define ARCA_SPEL_DETECT_INVISIBILITY      194
-#define ARCA_SPEL_DETECT_MONSTERS          195
-#define ARCA_SPEL_BLINK                            196
-#define ARCA_SPEL_LIGHT_AREA               197
-#define ARCA_SPEL_TRAP_AND_DOOR_DESTRUCTION 198
-#define ARCA_SPEL_CURE_LIGHT_WOUNDS        199
-#define ARCA_SPEL_DETECT_DOORS_AND_TRAPS    200
-#define ARCA_SPEL_PHLOGISTON               201
-#define ARCA_SPEL_DETECT_TREASURE          202
-#define ARCA_SPEL_DETECT_ENCHANTMENT       203
-#define ARCA_SPEL_DETECT_OBJECTS           204
-#define ARCA_SPEL_CURE_POISON              205
-#define ARCA_SPEL_RESIST_COLD              206
-#define ARCA_SPEL_RESIST_FIRE              207
-#define ARCA_SPEL_RESIST_LIGHTNING         208
-#define ARCA_SPEL_RESIST_ACID              209
-#define ARCA_SPEL_CURE_MEDIUM_WOUNDS       210
-#define ARCA_SPEL_TELEPORT                 211
-#define ARCA_SPEL_IDENTIFY                 212
-#define ARCA_SPEL_STONE_TO_MUD             213
-#define ARCA_SPEL_RAY_OF_LIGHT             214
-#define ARCA_SPEL_SATISFY_HUNGER           215
-#define ARCA_SPEL_SEE_INVISIBLE                    216
-#define ARCA_SPEL_CONJURE_ELEMENTAL        217
-#define ARCA_SPEL_TELEPORT_LEVEL           218
-#define ARCA_SPEL_TELEPORT_AWAY                    219
-#define ARCA_SPEL_ELEMENTAL_BALL           220
-#define ARCA_SPEL_DETECTION                221
-#define ARCA_SPEL_WORD_OF_RECALL           222
-#define ARCA_SPEL_CLAIRVOYANCE             223
-#define CRAF_SPEL_INFRAVISION              224
-#define CRAF_SPEL_REGENERATION             225
-#define CRAF_SPEL_SATISFY_HUNGER           226
-#define CRAF_SPEL_RESIST_COLD              227
-#define CRAF_SPEL_RESIST_FIRE              228
-#define CRAF_SPEL_HEROISM                  229
-#define CRAF_SPEL_RESIST_LIGHTNING         230
-#define CRAF_SPEL_RESIST_ACID              231
-#define CRAF_SPEL_SEE_INVISIBILITY         232
-#define CRAF_SPEL_REMOVE_CURSE             233
-#define CRAF_SPEL_RESIST_POISON                    234
-#define CRAF_SPEL_BERSERK                  235
-#define CRAF_SPEL_SELF_KNOWLEDGE           236
-#define CRAF_SPEL_PROTECTION_FROM_EVIL     237
-#define CRAF_SPEL_CURE                     238
-#define CRAF_SPEL_MANA_BRANDING                    239
-#define CRAF_SPEL_TELEPATHY                240
-#define CRAF_SPEL_STONE_SKIN               241
-#define CRAF_SPEL_RESISTANCE               242
-#define CRAF_SPEL_HASTE_SELF               243
-#define CRAF_SPEL_WALK_THROUGH_WALL        244
-#define CRAF_SPEL_POLISH_SHIELD                    245
-#define CRAF_SPEL_CREATE_GOLEM             246
-#define CRAF_SPEL_MAGICAL_ARMOR                    247
-#define CRAF_SPEL_REMOVE_ENCHANTMENT       248
-#define CRAF_SPEL_REMOVE_ALL_CURSE         249
-#define CRAF_SPEL_KNOWLEDGE_TRUE           250
-#define CRAF_SPEL_ENCHANT_WEAPON           251
-#define CRAF_SPEL_ENCHANT_ARMOR                    252
-#define CRAF_SPEL_BRAND_WEAPON             253
-#define CRAF_SPEL_LIVING_TRUMP             254
-#define CRAF_SPEL_IMMUNITY                 255
-#define DAEM_SPEL_MAGIC_MISSILE                    256
-#define DAEM_SPEL_DETECT_UNLIFE                    257
-#define DAEM_SPEL_EVIL_BLESS               258
-#define DAEM_SPEL_RESIST_FIRE              259
-#define DAEM_SPEL_HORRIFY                  260
-#define DAEM_SPEL_NETHER_BOLT              261
-#define DAEM_SPEL_SUMMON_MANES             262
-#define DAEM_SPEL_HELLISH_FLAME                    263
-#define DAEM_SPEL_DOMINATE_DEMON           264
-#define DAEM_SPEL_VISION                   265
-#define DAEM_SPEL_RESIST_NETHER                    266
-#define DAEM_SPEL_PLASMA_BOLT              267
-#define DAEM_SPEL_FIRE_BALL                268
-#define DAEM_SPEL_FIRE_BRANDING                    269
-#define DAEM_SPEL_NETHER_BALL              270
-#define DAEM_SPEL_SUMMON_DEMON             271
-#define DAEM_SPEL_DEVILISH_EYE             272
-#define DAEM_SPEL_DEVIL_CLOAK              273
-#define DAEM_SPEL_THE_FLOW_OF_LAVA         274
-#define DAEM_SPEL_PLASMA_BALL              275
-#define DAEM_SPEL_POLYMORPH_DEMON          276
-#define DAEM_SPEL_NATHER_WAVE              277
-#define DAEM_SPEL_KISS_OF_SUCCUBUS         278
-#define DAEM_SPEL_DOOM_HAND                279
-#define DAEM_SPEL_RAISE_THE_MORALE         280
-#define DAEM_SPEL_IMMORTAL_BODY                    281
-#define DAEM_SPEL_INSANITY_CIRCLE          282
-#define DAEM_SPEL_EXPLODE_PETS             283
-#define DAEM_SPEL_SUMMON_GREATER_DEMON     284
-#define DAEM_SPEL_NETHER_STORM             285
-#define DAEM_SPEL_BLOODY_CURSE             286
-#define DAEM_SPEL_POLYMORPH_DEMONLORD      287
-#define CRUS_SPEL_PUNISHMENT               288
-#define CRUS_SPEL_DETECT_EVIL              289
-#define CRUS_SPEL_REMOVE_FEAR              290
-#define CRUS_SPEL_SCARE_MONSTER                    291
-#define CRUS_SPEL_SANCTUARY                292
-#define CRUS_SPEL_PORTAL                   293
-#define CRUS_SPEL_STAR_DUST                294
-#define CRUS_SPEL_PURIFY                   295
-#define CRUS_SPEL_SCATTER_EVIL             296
-#define CRUS_SPEL_HOLY_ORB                 297
-#define CRUS_SPEL_EXORCISM                 298
-#define CRUS_SPEL_REMOVE_CURSE             299
-#define CRUS_SPEL_SENSE_UNSEEN             300
-#define CRUS_SPEL_PROTECTION_FROM_EVIL     301
-#define CRUS_SPEL_JUDGMENT_THUNDER         302
-#define CRUS_SPEL_HOLY_WORD                303
-#define CRUS_SPEL_UNBARRING_WAYS           304
-#define CRUS_SPEL_ARREST                   305
-#define CRUS_SPEL_HOLY_AURA                306
-#define CRUS_SPEL_DISPEL_UNDEAD_AND_DEMONS  307
-#define CRUS_SPEL_DISPEL_EVIL              308
-#define CRUS_SPEL_HOLY_BLADE               309
-#define CRUS_SPEL_STAR_BURST               310
-#define CRUS_SPEL_SUMMON_ANGEL             311
-#define CRUS_SPEL_HEROISM                  312
-#define CRUS_SPEL_DISPEL_CURSE             313
-#define CRUS_SPEL_BANISH_EVIL              314
-#define CRUS_SPEL_ARMAGEDDON               315
-#define CRUS_SPEL_AN_EYE_FOR_AN_EYE        316
-#define CRUS_SPEL_WRATH_OF_THE_GOD         317
-#define CRUS_SPEL_DIVINE_INTERVENTION      318
-#define CRUS_SPEL_CRUSADE                  319
-#define MUSI_SPEL_SONG_OF_HOLDING          320
-#define MUSI_SPEL_SONG_OF_BLESSING         321
-#define MUSI_SPEL_WRECKING_NOTE                    322
-#define MUSI_SPEL_STUN_PATTERN             323
-#define MUSI_SPEL_FLOW_OF_LIFE             324
-#define MUSI_SPEL_SONG_OF_THE_SUN          325
-#define MUSI_SPEL_SONG_OF_FEAR             326
-#define MUSI_SPEL_HEROIC_BALLAD                    327
-#define MUSI_SPEL_CLAIRAUDIENCE                    328
-#define MUSI_SPEL_SOUL_SHRIEK              329
-#define MUSI_SPEL_SONG_OF_LORE             330
-#define MUSI_SPEL_HIDING_TUNE              331
-#define MUSI_SPEL_ILLUSION_PATTERN         332
-#define MUSI_SPEL_DOOMCALL                 333
-#define MUSI_SPEL_FIRIELS_SONG             334
-#define MUSI_SPEL_FELLOWSHIP_CHANT         335
-#define MUSI_SPEL_SOUND_OF_DISINTEGRATION   336
-#define MUSI_SPEL_FINRODS_RESISTANCE       337
-#define MUSI_SPEL_HOBBIT_MELODIES          338
-#define MUSI_SPEL_WORLD_CONTORTION         339
-#define MUSI_SPEL_DISPELLING_CHANT         340
-#define MUSI_SPEL_THE_VOICE_OF_SARUMAN     341
-#define MUSI_SPEL_SONG_OF_THE_TEMPEST      342
-#define MUSI_SPEL_AMBARKANTA               343
-#define MUSI_SPEL_WRECKING_PATTERN         344
-#define MUSI_SPEL_STATIONARY_SHRIEK        345
-#define MUSI_SPEL_ENDURANCE                346
-#define MUSI_SPEL_THE_HEROS_POEM           347
-#define MUSI_SPEL_RELIEF_OF_YAVANNA        348
-#define MUSI_SPEL_GODDESS_REBIRTH          349
-#define MUSI_SPEL_WIZARDRY_OF_SAURON       350
-#define MUSI_SPEL_FINGOLFINS_CHALLENGE     351
-#define TECH_SPEL_TOBI_IZUNA               352
-#define TECH_SPEL_3_WAY_ATTACK             353
-#define TECH_SPEL_BOOMERANG                354
-#define TECH_SPEL_BURNING_STRIKE           355
-#define TECH_SPEL_DETECT_FEROCITY          356
-#define TECH_SPEL_STRIKE_TO_STUN           357
-#define TECH_SPEL_COUNTER                  358
-#define TECH_SPEL_HARAINUKE                359
-#define TECH_SPEL_SERPENTS_TONGUE          360
-#define TECH_SPEL_ZAMMAKEN                 361
-#define TECH_SPEL_WIND_BLAST               362
-#define TECH_SPEL_JUDGE                            363
-#define TECH_SPEL_ROCK_SMASH               364
-#define TECH_SPEL_MIDARE_SETSUGEKKA        365
-#define TECH_SPEL_SPOT_AIMING              366
-#define TECH_SPEL_MAJINGIRI                367
-#define TECH_SPEL_DESPERATE_ATTACK         368
-#define TECH_SPEL_LIGHTNING_EAGLE          369
-#define TECH_SPEL_RUSH_ATTACK              370
-#define TECH_SPEL_BLOODY_MAELSTROM         371
-#define TECH_SPEL_EARTHQUAKE_BLOW          372
-#define TECH_SPEL_CRACK                            373
-#define TECH_SPEL_WAR_CRY                  374
-#define TECH_SPEL_MUSOU_SANDAN             375
-#define TECH_SPEL_VAMPIRES_FANG                    376
-#define TECH_SPEL_MOON_DAZZLING                    377
-#define TECH_SPEL_HUNDRED_SLAUGHTER        378
-#define TECH_SPEL_DRAGONIC_FLASH           379
-#define TECH_SPEL_TWIN_SLASH               380
-#define TECH_SPEL_KOFUKU_ZETTOUSEI         381
-#define TECH_SPEL_KEIUN_KININKEN           382
-#define TECH_SPEL_HARAKIRI                 383
-
-
-/*
- * List of spell ID's for each realm
- */
-static s16b spell_id_list[][32] =
-{
-       {
-               LIFE_SPEL_CURE_LIGHT_WOUNDS,
-               LIFE_SPEL_BLESS,
-               LIFE_SPEL_CAUSE_LIGHT_WOUNDS,
-               LIFE_SPEL_CALL_LIGHT,
-               LIFE_SPEL_DETECT_DOORS_AND_TRAPS,
-               LIFE_SPEL_CURE_MEDIUM_WOUNDS,
-               LIFE_SPEL_CURE_POISON,
-               LIFE_SPEL_SATISFY_HUNGER,
-               LIFE_SPEL_REMOVE_CURSE,
-               LIFE_SPEL_CAUSE_MEDIUM_WOUNDS,
-               LIFE_SPEL_CURE_CRITICAL_WOUNDS,
-               LIFE_SPEL_RESIST_HEAT_AND_COLD,
-               LIFE_SPEL_SENSE_SURROUNDINGS,
-               LIFE_SPEL_TURN_UNDEAD,
-               LIFE_SPEL_HEALING,
-               LIFE_SPEL_GLYPH_OF_WARDING,
-               LIFE_SPEL_DISPEL_CURSE,
-               LIFE_SPEL_PERCEPTION,
-               LIFE_SPEL_DISPEL_UNDEAD,
-               LIFE_SPEL_DAY_OF_THE_DOVE,
-               LIFE_SPEL_CAUSE_CRITICAL_WOUNDS,
-               LIFE_SPEL_WORD_OF_RECALL,
-               LIFE_SPEL_ALTER_REALITY,
-               LIFE_SPEL_WARDING_TRUE,
-               LIFE_SPEL_STERILIZATION,
-               LIFE_SPEL_DETECTION,
-               LIFE_SPEL_ANNIHILATE_UNDEAD,
-               LIFE_SPEL_CLAIRVOYANCE,
-               LIFE_SPEL_RESTORATION,
-               LIFE_SPEL_HEALING_TRUE,
-               LIFE_SPEL_HOLY_VISION,
-               LIFE_SPEL_ULTIMATE_RESISTANCE,
-       },
-
-       {
-               SORC_SPEL_DETECT_MONSTERS,
-               SORC_SPEL_PHASE_DOOR,
-               SORC_SPEL_DETECT_DOORS_AND_TRAPS,
-               SORC_SPEL_LIGHT_AREA,
-               SORC_SPEL_CONFUSE_MONSTER,
-               SORC_SPEL_TELEPORT,
-               SORC_SPEL_SLEEP_MONSTER,
-               SORC_SPEL_RECHARGING,
-               SORC_SPEL_MAGIC_MAPPING,
-               SORC_SPEL_IDENTIFY,
-               SORC_SPEL_SLOW_MONSTER,
-               SORC_SPEL_MASS_SLEEP,
-               SORC_SPEL_TELEPORT_AWAY,
-               SORC_SPEL_HASTE_SELF,
-               SORC_SPEL_DETECTION_TRUE,
-               SORC_SPEL_IDENTIFY_TRUE,
-               SORC_SPEL_DETECT_ITEMS_AND_TREASURE,
-               SORC_SPEL_CHARM_MONSTER,
-               SORC_SPEL_SENSE_MINDS,
-               SORC_SPEL_TELEPORT_TO_TOWN,
-               SORC_SPEL_SELF_KNOWLEDGE,
-               SORC_SPEL_TELEPORT_LEVEL,
-               SORC_SPEL_WORD_OF_RECALL,
-               SORC_SPEL_DIMENSION_DOOR,
-               SORC_SPEL_PROBING,
-               SORC_SPEL_EXPLOSIVE_RUNE,
-               SORC_SPEL_TELEKINESIS,
-               SORC_SPEL_CLAIRVOYANCE,
-               SORC_SPEL_CHARM_MONSTERS,
-               SORC_SPEL_ALCHEMY,
-               SORC_SPEL_BANISHMENT,
-               SORC_SPEL_GLOBE_OF_INVULNERABILITY,
-       },
-
-       {
-               NATU_SPEL_DETECT_CREATURES,
-               NATU_SPEL_LIGHTNING,
-               NATU_SPEL_DETECT_DOORS_AND_TRAPS,
-               NATU_SPEL_PRODUCE_FOOD,
-               NATU_SPEL_DAYLIGHT,
-               NATU_SPEL_ANIMAL_TAMING,
-               NATU_SPEL_RESIST_ENVIRONMENT,
-               NATU_SPEL_CURE_WOUNDS_AND_POISON,
-               NATU_SPEL_STONE_TO_MUD,
-               NATU_SPEL_FROST_BOLT,
-               NATU_SPEL_NATURE_AWARENESS,
-               NATU_SPEL_FIRE_BOLT,
-               NATU_SPEL_RAY_OF_SUNLIGHT,
-               NATU_SPEL_ENTANGLE,
-               NATU_SPEL_SUMMON_ANIMAL,
-               NATU_SPEL_HERBAL_HEALING,
-               NATU_SPEL_STAIR_BUILDING,
-               NATU_SPEL_STONE_SKIN,
-               NATU_SPEL_RESISTANCE_TRUE,
-               NATU_SPEL_FOREST_CREATION,
-               NATU_SPEL_ANIMAL_FRIENDSHIP,
-               NATU_SPEL_STONE_TELL,
-               NATU_SPEL_WALL_OF_STONE,
-               NATU_SPEL_PROTECT_FROM_CORROSION,
-               NATU_SPEL_EARTHQUAKE,
-               NATU_SPEL_CYCLONE,
-               NATU_SPEL_BLIZZARD,
-               NATU_SPEL_LIGHTNING_STORM,
-               NATU_SPEL_WHIRLPOOL,
-               NATU_SPEL_CALL_SUNLIGHT,
-               NATU_SPEL_ELEMENTAL_BRANDING,
-               NATU_SPEL_NATURES_WRATH,
-       },
-
-       {
-               CHAO_SPEL_MAGIC_MISSILE,
-               CHAO_SPEL_TRAP_DOOR_DESTRUCTION,
-               CHAO_SPEL_FLASH_OF_LIGHT,
-               CHAO_SPEL_TOUCH_OF_CONFUSION,
-               CHAO_SPEL_MANA_BURST,
-               CHAO_SPEL_FIRE_BOLT,
-               CHAO_SPEL_FIST_OF_FORCE,
-               CHAO_SPEL_TELEPORT_SELF,
-               CHAO_SPEL_WONDER,
-               CHAO_SPEL_CHAOS_BOLT,
-               CHAO_SPEL_SONIC_BOOM,
-               CHAO_SPEL_DOOM_BOLT,
-               CHAO_SPEL_FIRE_BALL,
-               CHAO_SPEL_TELEPORT_OTHER,
-               CHAO_SPEL_WORD_OF_DESTRUCTION,
-               CHAO_SPEL_INVOKE_LOGRUS,
-               CHAO_SPEL_POLYMORPH_OTHER,
-               CHAO_SPEL_CHAIN_LIGHTNING,
-               CHAO_SPEL_ARCANE_BINDING,
-               CHAO_SPEL_DISINTEGRATE,
-               CHAO_SPEL_ALTER_REALITY,
-               CHAO_SPEL_MAGIC_ROCKET,
-               CHAO_SPEL_CHAOS_BRANDING,
-               CHAO_SPEL_SUMMON_DEMON,
-               CHAO_SPEL_BEAM_OF_GRAVITY,
-               CHAO_SPEL_METEOR_SWARM,
-               CHAO_SPEL_FLAME_STRIKE,
-               CHAO_SPEL_CALL_CHAOS,
-               CHAO_SPEL_POLYMORPH_SELF,
-               CHAO_SPEL_MANA_STORM,
-               CHAO_SPEL_BREATHE_LOGRUS,
-               CHAO_SPEL_CALL_THE_VOID,
-       },
-
-       {
-               DEAT_SPEL_DETECT_UNLIFE,
-               DEAT_SPEL_MALEDICTION,
-               DEAT_SPEL_DETECT_EVIL,
-               DEAT_SPEL_STINKING_CLOUD,
-               DEAT_SPEL_BLACK_SLEEP,
-               DEAT_SPEL_RESIST_POISON,
-               DEAT_SPEL_HORRIFY,
-               DEAT_SPEL_ENSLAVE_UNDEAD,
-               DEAT_SPEL_ORB_OF_ENTROPY,
-               DEAT_SPEL_NETHER_BOLT,
-               DEAT_SPEL_CLOUD_KILL,
-               DEAT_SPEL_GENOCIDE_ONE,
-               DEAT_SPEL_POISON_BRANDING,
-               DEAT_SPEL_VAMPIRIC_DRAIN,
-               DEAT_SPEL_ANIMATE_DEAD,
-               DEAT_SPEL_GENOCIDE,
-               DEAT_SPEL_BERSERK,
-               DEAT_SPEL_INVOKE_SPIRITS,
-               DEAT_SPEL_DARK_BOLT,
-               DEAT_SPEL_BATTLE_FRENZY,
-               DEAT_SPEL_VAMPIRIC_BRANDING,
-               DEAT_SPEL_VAMPIRISM_TRUE,
-               DEAT_SPEL_NETHER_WAVE,
-               DEAT_SPEL_DARKNESS_STORM,
-               DEAT_SPEL_DEATH_RAY,
-               DEAT_SPEL_RAISE_THE_DEAD,
-               DEAT_SPEL_ESOTERIA,
-               DEAT_SPEL_POLYMORPH_VAMPIRE,
-               DEAT_SPEL_RESTORE_LIFE,
-               DEAT_SPEL_MASS_GENOCIDE,
-               DEAT_SPEL_HELLFIRE,
-               DEAT_SPEL_WRAITHFORM,
-       },
-
-       {
-               TRUM_SPEL_PHASE_DOOR,
-               TRUM_SPEL_TRUMP_SPIDERS,
-               TRUM_SPEL_SHUFFLE,
-               TRUM_SPEL_RESET_RECALL,
-               TRUM_SPEL_TELEPORT,
-               TRUM_SPEL_TRUMP_SPYING,
-               TRUM_SPEL_TELEPORT_AWAY,
-               TRUM_SPEL_TRUMP_ANIMALS,
-               TRUM_SPEL_TRUMP_REACH,
-               TRUM_SPEL_TRUMP_KAMIKAZE,
-               TRUM_SPEL_PHANTASMAL_SERVANT,
-               TRUM_SPEL_HASTE_MONSTER,
-               TRUM_SPEL_TELEPORT_LEVEL,
-               TRUM_SPEL_DIMENSION_DOOR,
-               TRUM_SPEL_WORD_OF_RECALL,
-               TRUM_SPEL_BANISH,
-               TRUM_SPEL_SWAP_POSITION,
-               TRUM_SPEL_TRUMP_UNDEAD,
-               TRUM_SPEL_TRUMP_REPTILES,
-               TRUM_SPEL_TRUMP_MONSTERS,
-               TRUM_SPEL_TRUMP_HOUNDS,
-               TRUM_SPEL_TRUMP_BRANDING,
-               TRUM_SPEL_LIVING_TRUMP,
-               TRUM_SPEL_TRUMP_CYBERDEMON,
-               TRUM_SPEL_TRUMP_DIVINATION,
-               TRUM_SPEL_TRUMP_LORE,
-               TRUM_SPEL_HEAL_MONSTER,
-               TRUM_SPEL_TRUMP_DRAGON,
-               TRUM_SPEL_TRUMP_METEOR,
-               TRUM_SPEL_TRUMP_DEMON,
-               TRUM_SPEL_TRUMP_GREATER_UNDEAD,
-               TRUM_SPEL_TRUMP_ANCIENT_DRAGON,
-       },
-
-       {
-               ARCA_SPEL_ZAP,
-               ARCA_SPEL_WIZARD_LOCK,
-               ARCA_SPEL_DETECT_INVISIBILITY,
-               ARCA_SPEL_DETECT_MONSTERS,
-               ARCA_SPEL_BLINK,
-               ARCA_SPEL_LIGHT_AREA,
-               ARCA_SPEL_TRAP_AND_DOOR_DESTRUCTION,
-               ARCA_SPEL_CURE_LIGHT_WOUNDS,
-               ARCA_SPEL_DETECT_DOORS_AND_TRAPS,
-               ARCA_SPEL_PHLOGISTON,
-               ARCA_SPEL_DETECT_TREASURE,
-               ARCA_SPEL_DETECT_ENCHANTMENT,
-               ARCA_SPEL_DETECT_OBJECTS,
-               ARCA_SPEL_CURE_POISON,
-               ARCA_SPEL_RESIST_COLD,
-               ARCA_SPEL_RESIST_FIRE,
-               ARCA_SPEL_RESIST_LIGHTNING,
-               ARCA_SPEL_RESIST_ACID,
-               ARCA_SPEL_CURE_MEDIUM_WOUNDS,
-               ARCA_SPEL_TELEPORT,
-               ARCA_SPEL_IDENTIFY,
-               ARCA_SPEL_STONE_TO_MUD,
-               ARCA_SPEL_RAY_OF_LIGHT,
-               ARCA_SPEL_SATISFY_HUNGER,
-               ARCA_SPEL_SEE_INVISIBLE,
-               ARCA_SPEL_CONJURE_ELEMENTAL,
-               ARCA_SPEL_TELEPORT_LEVEL,
-               ARCA_SPEL_TELEPORT_AWAY,
-               ARCA_SPEL_ELEMENTAL_BALL,
-               ARCA_SPEL_DETECTION,
-               ARCA_SPEL_WORD_OF_RECALL,
-               ARCA_SPEL_CLAIRVOYANCE,
-       },
-
-       {
-               CRAF_SPEL_INFRAVISION,
-               CRAF_SPEL_REGENERATION,
-               CRAF_SPEL_SATISFY_HUNGER,
-               CRAF_SPEL_RESIST_COLD,
-               CRAF_SPEL_RESIST_FIRE,
-               CRAF_SPEL_HEROISM,
-               CRAF_SPEL_RESIST_LIGHTNING,
-               CRAF_SPEL_RESIST_ACID,
-               CRAF_SPEL_SEE_INVISIBILITY,
-               CRAF_SPEL_REMOVE_CURSE,
-               CRAF_SPEL_RESIST_POISON,
-               CRAF_SPEL_BERSERK,
-               CRAF_SPEL_SELF_KNOWLEDGE,
-               CRAF_SPEL_PROTECTION_FROM_EVIL,
-               CRAF_SPEL_CURE,
-               CRAF_SPEL_MANA_BRANDING,
-               CRAF_SPEL_TELEPATHY,
-               CRAF_SPEL_STONE_SKIN,
-               CRAF_SPEL_RESISTANCE,
-               CRAF_SPEL_HASTE_SELF,
-               CRAF_SPEL_WALK_THROUGH_WALL,
-               CRAF_SPEL_POLISH_SHIELD,
-               CRAF_SPEL_CREATE_GOLEM,
-               CRAF_SPEL_MAGICAL_ARMOR,
-               CRAF_SPEL_REMOVE_ENCHANTMENT,
-               CRAF_SPEL_REMOVE_ALL_CURSE,
-               CRAF_SPEL_KNOWLEDGE_TRUE,
-               CRAF_SPEL_ENCHANT_WEAPON,
-               CRAF_SPEL_ENCHANT_ARMOR,
-               CRAF_SPEL_BRAND_WEAPON,
-               CRAF_SPEL_LIVING_TRUMP,
-               CRAF_SPEL_IMMUNITY,
-       },
-
-       {
-               DAEM_SPEL_MAGIC_MISSILE,
-               DAEM_SPEL_DETECT_UNLIFE,
-               DAEM_SPEL_EVIL_BLESS,
-               DAEM_SPEL_RESIST_FIRE,
-               DAEM_SPEL_HORRIFY,
-               DAEM_SPEL_NETHER_BOLT,
-               DAEM_SPEL_SUMMON_MANES,
-               DAEM_SPEL_HELLISH_FLAME,
-               DAEM_SPEL_DOMINATE_DEMON,
-               DAEM_SPEL_VISION,
-               DAEM_SPEL_RESIST_NETHER,
-               DAEM_SPEL_PLASMA_BOLT,
-               DAEM_SPEL_FIRE_BALL,
-               DAEM_SPEL_FIRE_BRANDING,
-               DAEM_SPEL_NETHER_BALL,
-               DAEM_SPEL_SUMMON_DEMON,
-               DAEM_SPEL_DEVILISH_EYE,
-               DAEM_SPEL_DEVIL_CLOAK,
-               DAEM_SPEL_THE_FLOW_OF_LAVA,
-               DAEM_SPEL_PLASMA_BALL,
-               DAEM_SPEL_POLYMORPH_DEMON,
-               DAEM_SPEL_NATHER_WAVE,
-               DAEM_SPEL_KISS_OF_SUCCUBUS,
-               DAEM_SPEL_DOOM_HAND,
-               DAEM_SPEL_RAISE_THE_MORALE,
-               DAEM_SPEL_IMMORTAL_BODY,
-               DAEM_SPEL_INSANITY_CIRCLE,
-               DAEM_SPEL_EXPLODE_PETS,
-               DAEM_SPEL_SUMMON_GREATER_DEMON,
-               DAEM_SPEL_NETHER_STORM,
-               DAEM_SPEL_BLOODY_CURSE,
-               DAEM_SPEL_POLYMORPH_DEMONLORD,
-       },
-
-       {
-               CRUS_SPEL_PUNISHMENT,
-               CRUS_SPEL_DETECT_EVIL,
-               CRUS_SPEL_REMOVE_FEAR,
-               CRUS_SPEL_SCARE_MONSTER,
-               CRUS_SPEL_SANCTUARY,
-               CRUS_SPEL_PORTAL,
-               CRUS_SPEL_STAR_DUST,
-               CRUS_SPEL_PURIFY,
-               CRUS_SPEL_SCATTER_EVIL,
-               CRUS_SPEL_HOLY_ORB,
-               CRUS_SPEL_EXORCISM,
-               CRUS_SPEL_REMOVE_CURSE,
-               CRUS_SPEL_SENSE_UNSEEN,
-               CRUS_SPEL_PROTECTION_FROM_EVIL,
-               CRUS_SPEL_JUDGMENT_THUNDER,
-               CRUS_SPEL_HOLY_WORD,
-               CRUS_SPEL_UNBARRING_WAYS,
-               CRUS_SPEL_ARREST,
-               CRUS_SPEL_HOLY_AURA,
-               CRUS_SPEL_DISPEL_UNDEAD_AND_DEMONS,
-               CRUS_SPEL_DISPEL_EVIL,
-               CRUS_SPEL_HOLY_BLADE,
-               CRUS_SPEL_STAR_BURST,
-               CRUS_SPEL_SUMMON_ANGEL,
-               CRUS_SPEL_HEROISM,
-               CRUS_SPEL_DISPEL_CURSE,
-               CRUS_SPEL_BANISH_EVIL,
-               CRUS_SPEL_ARMAGEDDON,
-               CRUS_SPEL_AN_EYE_FOR_AN_EYE,
-               CRUS_SPEL_WRATH_OF_THE_GOD,
-               CRUS_SPEL_DIVINE_INTERVENTION,
-               CRUS_SPEL_CRUSADE,
-       },
-};
-
-
-/*
- * List of spell ID's for each special realm
+/*!
+    @file do-spell.c
+    @brief 魔法のインターフェイスと発動 / Purpose: Do everything for each spell
+    @date 2013/12/31
+    @author
+    2013 Deskull rearranged comment for Doxygen.
  */
-static s16b technique_id_list[][32] =
-{
-       {
-               MUSI_SPEL_SONG_OF_HOLDING,
-               MUSI_SPEL_SONG_OF_BLESSING,
-               MUSI_SPEL_WRECKING_NOTE,
-               MUSI_SPEL_STUN_PATTERN,
-               MUSI_SPEL_FLOW_OF_LIFE,
-               MUSI_SPEL_SONG_OF_THE_SUN,
-               MUSI_SPEL_SONG_OF_FEAR,
-               MUSI_SPEL_HEROIC_BALLAD,
-               MUSI_SPEL_CLAIRAUDIENCE,
-               MUSI_SPEL_SOUL_SHRIEK,
-               MUSI_SPEL_SONG_OF_LORE,
-               MUSI_SPEL_HIDING_TUNE,
-               MUSI_SPEL_ILLUSION_PATTERN,
-               MUSI_SPEL_DOOMCALL,
-               MUSI_SPEL_FIRIELS_SONG,
-               MUSI_SPEL_FELLOWSHIP_CHANT,
-               MUSI_SPEL_SOUND_OF_DISINTEGRATION,
-               MUSI_SPEL_FINRODS_RESISTANCE,
-               MUSI_SPEL_HOBBIT_MELODIES,
-               MUSI_SPEL_WORLD_CONTORTION,
-               MUSI_SPEL_DISPELLING_CHANT,
-               MUSI_SPEL_THE_VOICE_OF_SARUMAN,
-               MUSI_SPEL_SONG_OF_THE_TEMPEST,
-               MUSI_SPEL_AMBARKANTA,
-               MUSI_SPEL_WRECKING_PATTERN,
-               MUSI_SPEL_STATIONARY_SHRIEK,
-               MUSI_SPEL_ENDURANCE,
-               MUSI_SPEL_THE_HEROS_POEM,
-               MUSI_SPEL_RELIEF_OF_YAVANNA,
-               MUSI_SPEL_GODDESS_REBIRTH,
-               MUSI_SPEL_WIZARDRY_OF_SAURON,
-               MUSI_SPEL_FINGOLFINS_CHALLENGE,
-       },
-
-       {
-               TECH_SPEL_TOBI_IZUNA,
-               TECH_SPEL_3_WAY_ATTACK,
-               TECH_SPEL_BOOMERANG,
-               TECH_SPEL_BURNING_STRIKE,
-               TECH_SPEL_DETECT_FEROCITY,
-               TECH_SPEL_STRIKE_TO_STUN,
-               TECH_SPEL_COUNTER,
-               TECH_SPEL_HARAINUKE,
-               TECH_SPEL_SERPENTS_TONGUE,
-               TECH_SPEL_ZAMMAKEN,
-               TECH_SPEL_WIND_BLAST,
-               TECH_SPEL_JUDGE,
-               TECH_SPEL_ROCK_SMASH,
-               TECH_SPEL_MIDARE_SETSUGEKKA,
-               TECH_SPEL_SPOT_AIMING,
-               TECH_SPEL_MAJINGIRI,
-               TECH_SPEL_DESPERATE_ATTACK,
-               TECH_SPEL_LIGHTNING_EAGLE,
-               TECH_SPEL_RUSH_ATTACK,
-               TECH_SPEL_BLOODY_MAELSTROM,
-               TECH_SPEL_EARTHQUAKE_BLOW,
-               TECH_SPEL_CRACK,
-               TECH_SPEL_WAR_CRY,
-               TECH_SPEL_MUSOU_SANDAN,
-               TECH_SPEL_VAMPIRES_FANG,
-               TECH_SPEL_MOON_DAZZLING,
-               TECH_SPEL_HUNDRED_SLAUGHTER,
-               TECH_SPEL_DRAGONIC_FLASH,
-               TECH_SPEL_TWIN_SLASH,
-               TECH_SPEL_KOFUKU_ZETTOUSEI,
-               TECH_SPEL_KEIUN_KININKEN,
-               TECH_SPEL_HARAKIRI,
-       },
-};
-
 
-/*
- * Get unique spell id from realm and spell number (0-31) in the realm
- */
-static int spell_id_from(int realm, int spell)
-{
-       if (is_magic(realm))
-               return (int)spell_id_list[realm - 1][spell];
-       else
-               return (int)technique_id_list[realm - MIN_TECHNIC][spell];
-}
+#include "angband.h"
 
 
-/*
- * Generate dice info string such as "foo 2d10"
+/*!
+ * @brief
+ * 魔法の効果を「キャプション:ダイス+定数値」のフォーマットで出力する / Generate dice info string such as "foo 2d10"
+ * @param str キャプション
+ * @param dice ダイス数
+ * @param sides ダイス目
+ * @param base 固定値
+ * @return フォーマットに従い整形された文字列
  */
 static cptr info_string_dice(cptr str, int dice, int sides, int base)
 {
@@ -855,151 +34,143 @@ static cptr info_string_dice(cptr str, int dice, int sides, int base)
 }
 
 
-/*
- * Generate damage-dice info string such as "dam 2d10"
+/*!
+ * @brief 魔法によるダメージを出力する / Generate damage-dice info string such as "dam 2d10"
+ * @param dice ダイス数
+ * @param sides ダイス目
+ * @param base 固定値
+ * @return フォーマットに従い整形された文字列
  */
 static cptr info_damage(int dice, int sides, int base)
 {
-#ifdef JP
-       return info_string_dice("»½ý:", dice, sides, base);
-#else
-       return info_string_dice("dam ", dice, sides, base);
-#endif
+       return info_string_dice(_("損傷:", "dam "), dice, sides, base);
 }
 
-
-/*
- * Generate duration info string such as "dur 20+1d20"
+/*!
+ * @brief 魔法の効果時間を出力する / Generate duration info string such as "dur 20+1d20"
+ * @param base 固定値
+ * @param sides ダイス目
+ * @return フォーマットに従い整形された文字列
  */
 static cptr info_duration(int base, int sides)
 {
-#ifdef JP
-       return format("´ü´Ö:%d+1d%d", base, sides);
-#else
-       return format("dur %d+1d%d", base, sides);
-#endif
+       return format(_("期間:%d+1d%d", "dur %d+1d%d"), base, sides);
 }
 
-
-/*
- * Generate range info string such as "range 5"
+/*!
+ * @brief 魔法の効果範囲を出力する / Generate range info string such as "range 5"
+ * @param range 効果範囲
+ * @return フォーマットに従い整形された文字列
  */
-static cptr info_range(int range)
+static cptr info_range(POSITION range)
 {
-#ifdef JP
-       return format("ÈÏ°Ï:%d", range);
-#else
-       return format("range %d", range);
-#endif
+       return format(_("範囲:%d", "range %d"), range);
 }
 
-
-/*
- * Generate heal info string such as "heal 2d8"
+/*!
+ * @brief 魔法による回復量を出力する / Generate heal info string such as "heal 2d8"
+ * @param dice ダイス数
+ * @param sides ダイス目
+ * @param base 固定値
+ * @return フォーマットに従い整形された文字列
  */
 static cptr info_heal(int dice, int sides, int base)
 {
-#ifdef JP
-       return info_string_dice("²óÉü:", dice, sides, base);
-#else
-       return info_string_dice("heal ", dice, sides, base);
-#endif
+       return info_string_dice(_("回復:", "heal "), dice, sides, base);
 }
 
-
-/*
- * Generate delay info string such as "delay 15+1d15"
+/*!
+ * @brief 魔法効果発動までの遅延ターンを出力する / Generate delay info string such as "delay 15+1d15"
+ * @param base 固定値
+ * @param sides ダイス目
+ * @return フォーマットに従い整形された文字列
  */
 static cptr info_delay(int base, int sides)
 {
-#ifdef JP
-       return format("ÃÙ±ä:%d+1d%d", base, sides);
-#else
-       return format("delay %d+1d%d", base, sides);
-#endif
+       return format(_("遅延:%d+1d%d", "delay %d+1d%d"), base, sides);
 }
 
 
-/*
- * Generate multiple-damage info string such as "dam 25 each"
+/*!
+ * @brief 魔法によるダメージを出力する(固定値&複数回処理) / Generate multiple-damage info string such as "dam 25 each"
+ * @param dam 固定値
+ * @return フォーマットに従い整形された文字列
  */
-static cptr info_multi_damage(int dam)
+static cptr info_multi_damage(HIT_POINT dam)
 {
-#ifdef JP
-       return format("»½ý:³Æ%d", dam);
-#else
-       return format("dam %d each", dam);
-#endif
+       return format(_("損傷:各%d", "dam %d each"), dam);
 }
 
 
-/*
- * Generate multiple-damage-dice info string such as "dam 5d2 each"
+/*!
+ * @brief 魔法によるダメージを出力する(ダイスのみ&複数回処理) / Generate multiple-damage-dice info string such as "dam 5d2 each"
+ * @param dice ダイス数
+ * @param sides ダイス目
+ * @return フォーマットに従い整形された文字列
  */
 static cptr info_multi_damage_dice(int dice, int sides)
 {
-#ifdef JP
-       return format("»½ý:³Æ%dd%d", dice, sides);
-#else
-       return format("dam %dd%d each", dice, sides);
-#endif
+       return format(_("損傷:各%dd%d", "dam %dd%d each"), dice, sides);
 }
 
-
-/*
- * Generate power info string such as "power 100"
+/*!
+ * @brief 魔法による一般的な効力値を出力する(固定値) / Generate power info string such as "power 100"
+ * @param power 固定値
+ * @return フォーマットに従い整形された文字列
  */
 static cptr info_power(int power)
 {
-#ifdef JP
-       return format("¸úÎÏ:%d", power);
-#else
-       return format("power %d", power);
-#endif
+       return format(_("効力:%d", "power %d"), power);
 }
 
 
+/*!
+ * @brief 魔法による一般的な効力値を出力する(ダイス値) / Generate power info string such as "power 100"
+ * @param dice ダイス数
+ * @param sides ダイス目
+ * @return フォーマットに従い整形された文字列
+ */
 /*
  * Generate power info string such as "power 1d100"
  */
 static cptr info_power_dice(int dice, int sides)
 {
-#ifdef JP
-       return format("¸úÎÏ:%dd%d", dice, sides);
-#else
-       return format("power %dd%d", dice, sides);
-#endif
+       return format(_("効力:%dd%d", "power %dd%d"), dice, sides);
 }
 
 
-/*
- * Generate radius info string such as "rad 100"
+/*!
+ * @brief 魔法の効果半径を出力する / Generate radius info string such as "rad 100"
+ * @param rad 効果半径
+ * @return フォーマットに従い整形された文字列
  */
 static cptr info_radius(int rad)
 {
-#ifdef JP
-       return format("Ⱦ·Â:%d", rad);
-#else
-       return format("rad %d", rad);
-#endif
+       return format(_("半径:%d", "rad %d"), rad);
 }
 
 
-/*
- * Generate weight info string such as "max wgt 15"
+/*!
+ * @brief 魔法効果の限界重量を出力する / Generate weight info string such as "max wgt 15"
+ * @param weight 最大重量
+ * @return フォーマットに従い整形された文字列
  */
 static cptr info_weight(int weight)
 {
 #ifdef JP
-       return format("ºÇÂç½ÅÎÌ:%d.%dkg", lbtokg1(weight/10), lbtokg2(weight/10));
+       return format("最大重量:%d.%dkg", lbtokg1(weight), lbtokg2(weight));
 #else
        return format("max wgt %d", weight/10);
 #endif
 }
 
 
-/*
- * Prepare standard probability to become beam for fire_bolt_or_beam()
+/*!
+ * @brief 一部ボルト魔法のビーム化確率を算出する / Prepare standard probability to become beam for fire_bolt_or_beam()
+ * @return ビーム化確率(%)
+ * @details
+ * ハードコーティングによる実装が行われている。
+ * メイジは(レベル)%、ハイメイジ、スペルマスターは(レベル)%、それ以外の職業は(レベル/2)%
  */
 static int beam_chance(void)
 {
@@ -1011,15 +182,22 @@ static int beam_chance(void)
        return p_ptr->lev / 2;
 }
 
-
-/*
- * Handle summoning and failure of trump spells
+/*!
+ * @brief トランプ魔法独自の召喚処理を行う / Handle summoning and failure of trump spells
+ * @param num summon_specific()関数を呼び出す回数
+ * @param pet ペット化として召喚されるか否か
+ * @param y 召喚位置のy座標
+ * @param x 召喚位置のx座標
+ * @param lev 召喚レベル
+ * @param type 召喚条件ID
+ * @param mode モンスター生成条件フラグ
+ * @return モンスターが(敵対も含めて)召還されたならばTRUEを返す。
  */
-static bool trump_summoning(int num, bool pet, int y, int x, int lev, int type, u32b mode)
+static bool trump_summoning(int num, bool pet, POSITION y, POSITION x, DEPTH lev, int type, BIT_FLAGS mode)
 {
-       int plev = p_ptr->lev;
+       PLAYER_LEVEL plev = p_ptr->lev;
 
-       int who;
+       MONSTER_IDX who;
        int i;
        bool success = FALSE;
 
@@ -1059,22 +237,22 @@ static bool trump_summoning(int num, bool pet, int y, int x, int lev, int type,
 
        if (!success)
        {
-#ifdef JP
-               msg_print("ï¤â¤¢¤Ê¤¿¤Î¥«¡¼¥É¤Î¸Æ¤ÓÀ¼¤ËÅú¤¨¤Ê¤¤¡£");
-#else
-               msg_print("Nobody answers to your Trump call.");
-#endif
+               msg_print(_("誰もあなたのカードの呼び声に答えない。", "Nobody answers to your Trump call."));
        }
 
        return success;
 }
 
 
-/*
- * This spell should become more useful (more controlled) as the
- * player gains experience levels.  Thus, add 1/5 of the player's
- * level to the die roll.  This eliminates the worst effects later on,
- * while keeping the results quite random.  It also allows some potent
+/*!
+ * @brief 「ワンダー」のランダムな効果を決定して処理する。
+ * @param dir 方向ID
+ * @return なし
+ * @details
+ * This spell should become more useful (more controlled) as the\n
+ * player gains experience levels.  Thus, add 1/5 of the player's\n
+ * level to the die roll.  This eliminates the worst effects later on,\n
+ * while keeping the results quite random.  It also allows some potent\n
  * effects only at high level.
  */
 static void cast_wonder(int dir)
@@ -1100,23 +278,19 @@ static void cast_wonder(int dir)
 
        if (die > 100)
        {
-#ifdef JP
-               msg_print("¤¢¤Ê¤¿¤ÏÎϤ¬¤ß¤Ê¤®¤ë¤Î¤ò´¶¤¸¤¿¡ª");
-#else
-               msg_print("You feel a surge of power!");
-#endif
+               msg_print(_("あなたは力がみなぎるのを感じた!", "You feel a surge of power!"));
        }
 
        if (die < 8) clone_monster(dir);
-       else if (die < 14) speed_monster(dir);
+       else if (die < 14) speed_monster(dir, plev);
        else if (die < 26) heal_monster(dir, damroll(4, 6));
-       else if (die < 31) poly_monster(dir);
+       else if (die < 31) poly_monster(dir, plev);
        else if (die < 36)
                fire_bolt_or_beam(beam_chance() - 10, GF_MISSILE, dir,
                                  damroll(3 + ((plev - 1) / 5), 4));
        else if (die < 41) confuse_monster(dir, plev);
        else if (die < 46) fire_ball(GF_POIS, dir, 20 + (plev / 2), 3);
-       else if (die < 51) (void)lite_line(dir);
+       else if (die < 51) (void)lite_line(dir, damroll(6, 8));
        else if (die < 56)
                fire_bolt_or_beam(beam_chance() - 10, GF_ELEC, dir,
                                  damroll(3 + ((plev - 5) / 4), 8));
@@ -1137,11 +311,11 @@ static void cast_wonder(int dir)
        else if (die < 101) drain_life(dir, 100 + plev);
        else if (die < 104)
        {
-               earthquake(py, px, 12);
+               earthquake(p_ptr->y, p_ptr->x, 12);
        }
        else if (die < 106)
        {
-               (void)destroy_area(py, px, 13 + randint0(5), FALSE);
+               (void)destroy_area(p_ptr->y, p_ptr->x, 13 + randint0(5), FALSE);
        }
        else if (die < 108)
        {
@@ -1151,13 +325,18 @@ static void cast_wonder(int dir)
        else /* RARE */
        {
                dispel_monsters(150);
-               slow_monsters();
-               sleep_monsters();
+               slow_monsters(plev);
+               sleep_monsters(plev);
                hp_player(300);
        }
 }
 
 
+/*!
+ * @brief 「悪霊召喚」のランダムな効果を決定して処理する。
+ * @param dir 方向ID
+ * @return なし
+ */
 static void cast_invoke_spirits(int dir)
 {
        int plev = p_ptr->lev;
@@ -1176,58 +355,40 @@ static void cast_invoke_spirits(int dir)
                }
        }
 
-#ifdef JP
-       msg_print("¤¢¤Ê¤¿¤Ï»à¼Ô¤¿¤Á¤ÎÎϤò¾·½¸¤·¤¿...");
-#else
-       msg_print("You call on the power of the dead...");
-#endif
+       msg_print(_("あなたは死者たちの力を招集した...", "You call on the power of the dead..."));
        if (die < 26)
                chg_virtue(V_CHANCE, 1);
 
        if (die > 100)
        {
-#ifdef JP
-               msg_print("¤¢¤Ê¤¿¤Ï¤ª¤É¤í¤ª¤É¤í¤·¤¤ÎϤΤ¦¤Í¤ê¤ò´¶¤¸¤¿¡ª");
-#else
-               msg_print("You feel a surge of eldritch force!");
-#endif
+               msg_print(_("あなたはおどろおどろしい力のうねりを感じた!", "You feel a surge of eldritch force!"));
        }
 
 
        if (die < 8)
        {
-#ifdef JP
-               msg_print("¤Ê¤ó¤Æ¤³¤Ã¤¿¡ª¤¢¤Ê¤¿¤Î¼þ¤ê¤ÎÃÏÌ̤«¤éµà¤Á¤¿¿Í±Æ¤¬Î©¤Á¾å¤¬¤Ã¤Æ¤­¤¿¡ª");
-#else
-               msg_print("Oh no! Mouldering forms rise from the earth around you!");
-#endif
+               msg_print(_("なんてこった!あなたの周りの地面から朽ちた人影が立ち上がってきた!", 
+                                       "Oh no! Mouldering forms rise from the earth around you!"));
 
-               (void)summon_specific(0, py, px, dun_level, SUMMON_UNDEAD, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET));
+               (void)summon_specific(0, p_ptr->y, p_ptr->x, dun_level, SUMMON_UNDEAD, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET));
                chg_virtue(V_UNLIFE, 1);
        }
        else if (die < 14)
        {
-#ifdef JP
-               msg_print("̾¾õ¤·Æñ¤¤¼Ù°­¤Ê¸ºß¤¬¤¢¤Ê¤¿¤Î¿´¤òÄ̤ê²á¤®¤Æ¹Ô¤Ã¤¿...");
-#else
-               msg_print("An unnamable evil brushes against your mind...");
-#endif
+               msg_print(_("名状し難い邪悪な存在があなたの心を通り過ぎて行った...", "An unnamable evil brushes against your mind..."));
 
                set_afraid(p_ptr->afraid + randint1(4) + 4);
        }
        else if (die < 26)
        {
-#ifdef JP
-               msg_print("¤¢¤Ê¤¿¤ÎƬ¤ËÂçÎ̤ÎÍ©Î¤Á¤ÎÁû¡¹¤·¤¤À¼¤¬²¡¤·´ó¤»¤Æ¤­¤¿...");
-#else
-               msg_print("Your head is invaded by a horde of gibbering spectral voices...");
-#endif
+               msg_print(_("あなたの頭に大量の幽霊たちの騒々しい声が押し寄せてきた...",
+                                       "Your head is invaded by a horde of gibbering spectral voices..."));
 
                set_confused(p_ptr->confused + randint1(4) + 4);
        }
        else if (die < 31)
        {
-               poly_monster(dir);
+               poly_monster(dir, plev);
        }
        else if (die < 36)
        {
@@ -1244,7 +405,7 @@ static void cast_invoke_spirits(int dir)
        }
        else if (die < 51)
        {
-               (void)lite_line(dir);
+               (void)lite_line(dir, damroll(6, 8));
        }
        else if (die < 56)
        {
@@ -1292,11 +453,11 @@ static void cast_invoke_spirits(int dir)
        }
        else if (die < 104)
        {
-               earthquake(py, px, 12);
+               earthquake(p_ptr->y, p_ptr->x, 12);
        }
        else if (die < 106)
        {
-               (void)destroy_area(py, px, 13 + randint0(5), FALSE);
+               (void)destroy_area(p_ptr->y, p_ptr->x, 13 + randint0(5), FALSE);
        }
        else if (die < 108)
        {
@@ -1309,45 +470,46 @@ static void cast_invoke_spirits(int dir)
        else
        { /* RARE */
                dispel_monsters(150);
-               slow_monsters();
-               sleep_monsters();
+               slow_monsters(plev);
+               sleep_monsters(plev);
                hp_player(300);
        }
 
        if (die < 31)
        {
-#ifdef JP
-               msg_print("±¢±µ¤ÊÀ¼¤¬¥¯¥¹¥¯¥¹¾Ð¤¦¡£¡Ö¤â¤¦¤¹¤°¤ª¤Þ¤¨¤Ï²æ¡¹¤ÎÃç´Ö¤Ë¤Ê¤ë¤À¤í¤¦¡£¼å¤­¼Ô¤è¡£¡×");
-#else
-               msg_print("Sepulchral voices chuckle. 'Soon you will join us, mortal.'");
-#endif
+               msg_print(_("陰欝な声がクスクス笑う。「もうすぐおまえは我々の仲間になるだろう。弱き者よ。」",
+                                       "Sepulchral voices chuckle. 'Soon you will join us, mortal.'"));
        }
 }
 
-
-static void wild_magic(int spell)
+/*!
+ * @brief カオス的効果あるいは及びシャッフルの「運命の輪」効果を引数基準に処理する。
+ * @param spell 基準となる引数ID
+ * @return なし
+ */
+static void wild_magic(SPELL_IDX spell)
 {
        int counter = 0;
-       int type = SUMMON_BIZARRE1 + randint0(6);
+       int type = SUMMON_MOLD + randint0(6);
 
-       if (type < SUMMON_BIZARRE1) type = SUMMON_BIZARRE1;
-       else if (type > SUMMON_BIZARRE6) type = SUMMON_BIZARRE6;
+       if (type < SUMMON_MOLD) type = SUMMON_MOLD;
+       else if (type > SUMMON_MIMIC) type = SUMMON_MIMIC;
 
        switch (randint1(spell) + randint1(8) + 1)
        {
        case 1:
        case 2:
        case 3:
-               teleport_player(10, TRUE);
+               teleport_player(10, TELEPORT_PASSIVE);
                break;
        case 4:
        case 5:
        case 6:
-               teleport_player(100, TRUE);
+               teleport_player(100, TELEPORT_PASSIVE);
                break;
        case 7:
        case 8:
-               teleport_player(200, TRUE);
+               teleport_player(200, TELEPORT_PASSIVE);
                break;
        case 9:
        case 10:
@@ -1364,12 +526,13 @@ static void wild_magic(int spell)
                break;
        case 16: case 17:
                wall_breaker();
+               break;
        case 18:
                sleep_monsters_touch();
                break;
        case 19:
        case 20:
-               trap_creation(py, px);
+               trap_creation(p_ptr->y, p_ptr->x);
                break;
        case 21:
        case 22:
@@ -1381,7 +544,7 @@ static void wild_magic(int spell)
                aggravate_monsters(0);
                break;
        case 26:
-               earthquake(py, px, 5);
+               earthquake(p_ptr->y, p_ptr->x, 5);
                break;
        case 27:
        case 28:
@@ -1404,15 +567,15 @@ static void wild_magic(int spell)
        case 35:
                while (counter++ < 8)
                {
-                       (void)summon_specific(0, py, px, (dun_level * 3) / 2, type, (PM_ALLOW_GROUP | PM_NO_PET));
+                       (void)summon_specific(0, p_ptr->y, p_ptr->x, (dun_level * 3) / 2, type, (PM_ALLOW_GROUP | PM_NO_PET));
                }
                break;
        case 36:
        case 37:
-               activate_hi_summon(py, px, FALSE);
+               activate_hi_summon(p_ptr->y, p_ptr->x, FALSE);
                break;
        case 38:
-               (void)summon_cyber(-1, py, px);
+               (void)summon_cyber(-1, p_ptr->y, p_ptr->x);
                break;
        default:
                {
@@ -1423,7 +586,10 @@ static void wild_magic(int spell)
        }
 }
 
-
+/*!
+ * @brief トランプ領域の「シャッフル」の効果をランダムに決めて処理する。
+ * @return なし
+ */
 static void cast_shuffle(void)
 {
        int plev = p_ptr->lev;
@@ -1453,246 +619,130 @@ static void cast_shuffle(void)
                }
        }
 
-#ifdef JP
-       msg_print("¤¢¤Ê¤¿¤Ï¥«¡¼¥É¤òÀڤäưìËç°ú¤¤¤¿...");
-#else
-       msg_print("You shuffle the deck and draw a card...");
-#endif
+       msg_print(_("あなたはカードを切って一枚引いた...", "You shuffle the deck and draw a card..."));
 
        if (die < 30)
                chg_virtue(V_CHANCE, 1);
 
        if (die < 7)
        {
-#ifdef JP
-               msg_print("¤Ê¤ó¤Æ¤³¤Ã¤¿¡ª¡Ô»à¡Õ¤À¡ª");
-#else
-               msg_print("Oh no! It's Death!");
-#endif
+               msg_print(_("なんてこった!《死》だ!", "Oh no! It's Death!"));
 
                for (i = 0; i < randint1(3); i++)
-                       activate_hi_summon(py, px, FALSE);
+                       activate_hi_summon(p_ptr->y, p_ptr->x, FALSE);
        }
        else if (die < 14)
        {
-#ifdef JP
-               msg_print("¤Ê¤ó¤Æ¤³¤Ã¤¿¡ª¡Ô°­Ëâ¡Õ¤À¡ª");
-#else
-               msg_print("Oh no! It's the Devil!");
-#endif
-
-               summon_specific(0, py, px, dun_level, SUMMON_DEMON, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET));
+               msg_print(_("なんてこった!《悪魔》だ!", "Oh no! It's the Devil!"));
+               summon_specific(0, p_ptr->y, p_ptr->x, dun_level, SUMMON_DEMON, (PM_ALLOW_GROUP | PM_ALLOW_UNIQUE | PM_NO_PET));
        }
        else if (die < 18)
        {
                int count = 0;
-#ifdef JP
-               msg_print("¤Ê¤ó¤Æ¤³¤Ã¤¿¡ª¡ÔÄߤé¤ì¤¿ÃË¡Õ¤À¡ª");
-#else
-               msg_print("Oh no! It's the Hanged Man.");
-#endif
-
+               msg_print(_("なんてこった!《吊られた男》だ!", "Oh no! It's the Hanged Man."));
                activate_ty_curse(FALSE, &count);
        }
        else if (die < 22)
        {
-#ifdef JP
-               msg_print("¡ÔÉÔĴϤηõ¡Õ¤À¡£");
-#else
-               msg_print("It's the swords of discord.");
-#endif
-
+               msg_print(_("《不調和の剣》だ。", "It's the swords of discord."));
                aggravate_monsters(0);
        }
        else if (die < 26)
        {
-#ifdef JP
-               msg_print("¡Ô¶ò¼Ô¡Õ¤À¡£");
-#else
-               msg_print("It's the Fool.");
-#endif
-
+               msg_print(_("《愚者》だ。", "It's the Fool."));
                do_dec_stat(A_INT);
                do_dec_stat(A_WIS);
        }
        else if (die < 30)
        {
-#ifdef JP
-               msg_print("´ñ̯¤Ê¥â¥ó¥¹¥¿¡¼¤Î³¨¤À¡£");
-#else
-               msg_print("It's the picture of a strange monster.");
-#endif
-
-               trump_summoning(1, FALSE, py, px, (dun_level * 3 / 2), (32 + randint1(6)), PM_ALLOW_GROUP | PM_ALLOW_UNIQUE);
+               msg_print(_("奇妙なモンスターの絵だ。", "It's the picture of a strange monster."));
+               trump_summoning(1, FALSE, p_ptr->y, p_ptr->x, (dun_level * 3 / 2), (32 + randint1(6)), PM_ALLOW_GROUP | PM_ALLOW_UNIQUE);
        }
        else if (die < 33)
        {
-#ifdef JP
-               msg_print("¡Ô·î¡Õ¤À¡£");
-#else
-               msg_print("It's the Moon.");
-#endif
-
+               msg_print(_("《月》だ。", "It's the Moon."));
                unlite_area(10, 3);
        }
        else if (die < 38)
        {
-#ifdef JP
-               msg_print("¡Ô±¿Ì¿¤ÎÎØ¡Õ¤À¡£");
-#else
-               msg_print("It's the Wheel of Fortune.");
-#endif
-
+               msg_print(_("《運命の輪》だ。", "It's the Wheel of Fortune."));
                wild_magic(randint0(32));
        }
        else if (die < 40)
        {
-#ifdef JP
-               msg_print("¥Æ¥ì¥Ý¡¼¥È¡¦¥«¡¼¥É¤À¡£");
-#else
-               msg_print("It's a teleport trump card.");
-#endif
-
-               teleport_player(10, TRUE);
+               msg_print(_("テレポート・カードだ。", "It's a teleport trump card."));
+               teleport_player(10, TELEPORT_PASSIVE);
        }
        else if (die < 42)
        {
-#ifdef JP
-               msg_print("¡ÔÀµµÁ¡Õ¤À¡£");
-#else
-               msg_print("It's Justice.");
-#endif
-
+               msg_print(_("《正義》だ。", "It's Justice."));
                set_blessed(p_ptr->lev, FALSE);
        }
        else if (die < 47)
        {
-#ifdef JP
-               msg_print("¥Æ¥ì¥Ý¡¼¥È¡¦¥«¡¼¥É¤À¡£");
-#else
-               msg_print("It's a teleport trump card.");
-#endif
-
-               teleport_player(100, TRUE);
+               msg_print(_("テレポート・カードだ。", "It's a teleport trump card."));
+               teleport_player(100, TELEPORT_PASSIVE);
        }
        else if (die < 52)
        {
-#ifdef JP
-               msg_print("¥Æ¥ì¥Ý¡¼¥È¡¦¥«¡¼¥É¤À¡£");
-#else
-               msg_print("It's a teleport trump card.");
-#endif
-
-               teleport_player(200, TRUE);
+               msg_print(_("テレポート・カードだ。", "It's a teleport trump card."));
+               teleport_player(200, TELEPORT_PASSIVE);
        }
        else if (die < 60)
        {
-#ifdef JP
-               msg_print("¡ÔÅã¡Õ¤À¡£");
-#else
-               msg_print("It's the Tower.");
-#endif
-
+               msg_print(_("《塔》だ。", "It's the Tower."));
                wall_breaker();
        }
        else if (die < 72)
        {
-#ifdef JP
-               msg_print("¡ÔÀáÀ©¡Õ¤À¡£");
-#else
-               msg_print("It's Temperance.");
-#endif
-
+               msg_print(_("《節制》だ。", "It's Temperance."));
                sleep_monsters_touch();
        }
        else if (die < 80)
        {
-#ifdef JP
-               msg_print("¡ÔÅã¡Õ¤À¡£");
-#else
-               msg_print("It's the Tower.");
-#endif
+               msg_print(_("《塔》だ。", "It's the Tower."));
 
-               earthquake(py, px, 5);
+               earthquake(p_ptr->y, p_ptr->x, 5);
        }
        else if (die < 82)
        {
-#ifdef JP
-               msg_print("ͧ¹¥Åª¤Ê¥â¥ó¥¹¥¿¡¼¤Î³¨¤À¡£");
-#else
-               msg_print("It's the picture of a friendly monster.");
-#endif
-
-               trump_summoning(1, TRUE, py, px, (dun_level * 3 / 2), SUMMON_BIZARRE1, 0L);
+               msg_print(_("友好的なモンスターの絵だ。", "It's the picture of a friendly monster."));
+               trump_summoning(1, TRUE, p_ptr->y, p_ptr->x, (dun_level * 3 / 2), SUMMON_MOLD, 0L);
        }
        else if (die < 84)
        {
-#ifdef JP
-               msg_print("ͧ¹¥Åª¤Ê¥â¥ó¥¹¥¿¡¼¤Î³¨¤À¡£");
-#else
-               msg_print("It's the picture of a friendly monster.");
-#endif
-
-               trump_summoning(1, TRUE, py, px, (dun_level * 3 / 2), SUMMON_BIZARRE2, 0L);
+               msg_print(_("友好的なモンスターの絵だ。", "It's the picture of a friendly monster."));
+               trump_summoning(1, TRUE, p_ptr->y, p_ptr->x, (dun_level * 3 / 2), SUMMON_BAT, 0L);
        }
        else if (die < 86)
        {
-#ifdef JP
-               msg_print("ͧ¹¥Åª¤Ê¥â¥ó¥¹¥¿¡¼¤Î³¨¤À¡£");
-#else
-               msg_print("It's the picture of a friendly monster.");
-#endif
-
-               trump_summoning(1, TRUE, py, px, (dun_level * 3 / 2), SUMMON_BIZARRE4, 0L);
+               msg_print(_("友好的なモンスターの絵だ。", "It's the picture of a friendly monster."));
+               trump_summoning(1, TRUE, p_ptr->y, p_ptr->x, (dun_level * 3 / 2), SUMMON_VORTEX, 0L);
        }
        else if (die < 88)
        {
-#ifdef JP
-               msg_print("ͧ¹¥Åª¤Ê¥â¥ó¥¹¥¿¡¼¤Î³¨¤À¡£");
-#else
-               msg_print("It's the picture of a friendly monster.");
-#endif
-
-               trump_summoning(1, TRUE, py, px, (dun_level * 3 / 2), SUMMON_BIZARRE5, 0L);
+               msg_print(_("友好的なモンスターの絵だ。", "It's the picture of a friendly monster."));
+               trump_summoning(1, TRUE, p_ptr->y, p_ptr->x, (dun_level * 3 / 2), SUMMON_COIN_MIMIC, 0L);
        }
        else if (die < 96)
        {
-#ifdef JP
-               msg_print("¡ÔÎø¿Í¡Õ¤À¡£");
-#else
-               msg_print("It's the Lovers.");
-#endif
+               msg_print(_("《恋人》だ。", "It's the Lovers."));
 
                if (get_aim_dir(&dir))
                        charm_monster(dir, MIN(p_ptr->lev, 20));
        }
        else if (die < 101)
        {
-#ifdef JP
-               msg_print("¡Ô±£¼Ô¡Õ¤À¡£");
-#else
-               msg_print("It's the Hermit.");
-#endif
-
+               msg_print(_("《隠者》だ。", "It's the Hermit."));
                wall_stone();
        }
        else if (die < 111)
        {
-#ifdef JP
-               msg_print("¡Ô¿³È½¡Õ¤À¡£");
-#else
-               msg_print("It's the Judgement.");
-#endif
-
+               msg_print(_("《審判》だ。", "It's the Judgement."));
                do_cmd_rerate(FALSE);
                if (p_ptr->muta1 || p_ptr->muta2 || p_ptr->muta3)
                {
-#ifdef JP
-                       msg_print("Á´¤Æ¤ÎÆÍÁ³ÊÑ°Û¤¬¼£¤Ã¤¿¡£");
-#else
-                       msg_print("You are cured of all mutations.");
-#endif
-
+                       msg_print(_("全ての突然変異が治った。", "You are cured of all mutations."));
                        p_ptr->muta1 = p_ptr->muta2 = p_ptr->muta3 = 0;
                        p_ptr->update |= PU_BONUS;
                        handle_stuff();
@@ -1700,69 +750,58 @@ static void cast_shuffle(void)
        }
        else if (die < 120)
        {
-#ifdef JP
-               msg_print("¡ÔÂÀÍÛ¡Õ¤À¡£");
-#else
-               msg_print("It's the Sun.");
-#endif
-
+               msg_print(_("《太陽》だ。", "It's the Sun."));
                chg_virtue(V_KNOWLEDGE, 1);
                chg_virtue(V_ENLIGHTEN, 1);
                wiz_lite(FALSE);
        }
        else
        {
-#ifdef JP
-               msg_print("¡ÔÀ¤³¦¡Õ¤À¡£");
-#else
-               msg_print("It's the World.");
-#endif
-
+               msg_print(_("《世界》だ。", "It's the World."));
                if (p_ptr->exp < PY_MAX_EXP)
                {
                        s32b ee = (p_ptr->exp / 25) + 1;
                        if (ee > 5000) ee = 5000;
-#ifdef JP
-                       msg_print("¹¹¤Ë·Ð¸³¤òÀѤó¤À¤è¤¦¤Êµ¤¤¬¤¹¤ë¡£");
-#else
-                       msg_print("You feel more experienced.");
-#endif
-
+                       msg_print(_("更に経験を積んだような気がする。", "You feel more experienced."));
                        gain_exp(ee);
                }
        }
 }
 
-
-/*
- * Drop 10+1d10 meteor ball at random places near the player
+/*!
+ * @brief カオス魔法「流星群」の処理としてプレイヤーを中心に隕石落下処理を10+1d10回繰り返す。
+ * / Drop 10+1d10 meteor ball at random places near the player
+ * @param dam ダメージ
+ * @param rad 効力の半径
+ * @return なし
  */
-static void cast_meteor(int dam, int rad)
+static void cast_meteor(HIT_POINT dam, int rad)
 {
        int i;
        int b = 10 + randint1(10);
 
        for (i = 0; i < b; i++)
        {
-               int y, x;
+               POSITION y = 0, x = 0;
                int count;
 
                for (count = 0; count <= 20; count++)
                {
                        int dy, dx, d;
 
-                       x = px - 8 + randint0(17);
-                       y = py - 8 + randint0(17);
+                       x = p_ptr->x - 8 + randint0(17);
+                       y = p_ptr->y - 8 + randint0(17);
 
-                       dx = (px > x) ? (px - x) : (x - px);
-                       dy = (py > y) ? (py - y) : (y - py);
+                       dx = (p_ptr->x > x) ? (p_ptr->x - x) : (x - p_ptr->x);
+                       dy = (p_ptr->y > y) ? (p_ptr->y - y) : (y - p_ptr->y);
 
                        /* Approximate distance */
                        d = (dy > dx) ? (dy + (dx >> 1)) : (dx + (dy >> 1));
 
                        if (d >= 9) continue;
 
-                       if (!in_bounds(y, x) || !projectable(py, px, y, x)) continue;
+                       if (!in_bounds(y, x) || !projectable(p_ptr->y, p_ptr->x, y, x)
+                           || !cave_have_flag_bold(y, x, FF_PROJECT)) continue;
 
                        /* Valid position */
                        break;
@@ -1775,10 +814,13 @@ static void cast_meteor(int dam, int rad)
 }
 
 
-/*
- * Drop 10+1d10 disintegration ball at random places near the target
+/*!
+ * @brief 破邪魔法「神の怒り」の処理としてターゲットを指定した後分解のボールを最大20回発生させる。
+ * @param dam ダメージ
+ * @param rad 効力の半径
+ * @return ターゲットを指定し、実行したならばTRUEを返す。
  */
-static bool cast_wrath_of_the_god(int dam, int rad)
+static bool cast_wrath_of_the_god(HIT_POINT dam, int rad)
 {
        int x, y, tx, ty;
        int nx, ny;
@@ -1788,8 +830,8 @@ static bool cast_wrath_of_the_god(int dam, int rad)
        if (!get_aim_dir(&dir)) return FALSE;
 
        /* Use the given direction */
-       tx = px + 99 * ddx[dir];
-       ty = py + 99 * ddy[dir];
+       tx = p_ptr->x + 99 * ddx[dir];
+       ty = p_ptr->y + 99 * ddy[dir];
 
        /* Hack -- Use an actual "target" */
        if ((dir == 5) && target_okay())
@@ -1798,8 +840,8 @@ static bool cast_wrath_of_the_god(int dam, int rad)
                ty = target_row;
        }
 
-       x = px;
-       y = py;
+       x = p_ptr->x;
+       y = p_ptr->y;
 
        while (1)
        {
@@ -1808,10 +850,10 @@ static bool cast_wrath_of_the_god(int dam, int rad)
 
                ny = y;
                nx = x;
-               mmove2(&ny, &nx, py, px, ty, tx);
+               mmove2(&ny, &nx, p_ptr->y, p_ptr->x, ty, tx);
 
                /* Stop at maximum range */
-               if (MAX_RANGE <= distance(py, px, ny, nx)) break;
+               if (MAX_RANGE <= distance(p_ptr->y, p_ptr->x, ny, nx)) break;
 
                /* Stopped by walls/doors */
                if (!cave_have_flag_bold(ny, nx, FF_PROJECT)) break;
@@ -1860,9 +902,10 @@ static bool cast_wrath_of_the_god(int dam, int rad)
        return TRUE;
 }
 
-
-/*
- * An "item_tester_hook" for offer
+/*!
+ * @brief 悪魔領域のグレーターデーモン召喚に利用可能な死体かどうかを返す。 / An "item_tester_hook" for offer
+ * @param o_ptr オブジェクト構造体の参照ポインタ
+ * @return 生贄に使用可能な死体ならばTRUEを返す。
  */
 static bool item_tester_offer(object_type *o_ptr)
 {
@@ -1877,26 +920,21 @@ static bool item_tester_offer(object_type *o_ptr)
        return (FALSE);
 }
 
-
-/*
- * Daemon spell Summon Greater Demon
+/*!
+ * @brief 悪魔領域のグレーターデーモン召喚を処理する / Daemon spell Summon Greater Demon
+ * @return 処理を実行したならばTRUEを返す。
  */
 static bool cast_summon_greater_demon(void)
 {
-       int plev = p_ptr->lev;
-       int item;
+       PLAYER_LEVEL plev = p_ptr->lev;
+       OBJECT_IDX item;
        cptr q, s;
        int summon_lev;
        object_type *o_ptr;
 
        item_tester_hook = item_tester_offer;
-#ifdef JP
-       q = "¤É¤Î»àÂΤòÊû¤²¤Þ¤¹¤«? ";
-       s = "Êû¤²¤é¤ì¤ë»àÂΤò»ý¤Ã¤Æ¤¤¤Ê¤¤¡£";
-#else
-       q = "Sacrifice which corpse? ";
-       s = "You have nothing to scrifice.";
-#endif
+       q = _("どの死体を捧げますか? ", "Sacrifice which corpse? ");
+       s = _("捧げられる死体を持っていない。", "You have nothing to scrifice.");
        if (!get_item(&item, q, s, (USE_INVEN | USE_FLOOR))) return FALSE;
 
        /* Get the item (in the pack) */
@@ -1913,20 +951,10 @@ static bool cast_summon_greater_demon(void)
 
        summon_lev = plev * 2 / 3 + r_info[o_ptr->pval].level;
 
-       if (summon_specific(-1, py, px, summon_lev, SUMMON_HI_DEMON, (PM_ALLOW_GROUP | PM_FORCE_PET)))
+       if (summon_specific(-1, p_ptr->y, p_ptr->x, summon_lev, SUMMON_HI_DEMON, (PM_ALLOW_GROUP | PM_FORCE_PET)))
        {
-#ifdef JP
-               msg_print("ⲫ¤Î°­½­¤¬½¼Ëþ¤·¤¿¡£");
-#else
-               msg_print("The area fills with a stench of sulphur and brimstone.");
-#endif
-
-
-#ifdef JP
-               msg_print("¡Ö¤´ÍѤǤ´¤¶¤¤¤Þ¤¹¤«¡¢¤´¼ç¿ÍÍÍ¡×");
-#else
-               msg_print("'What is thy bidding... Master?'");
-#endif
+               msg_print(_("硫黄の悪臭が充満した。", "The area fills with a stench of sulphur and brimstone."));
+               msg_print(_("「ご用でございますか、ご主人様」", "'What is thy bidding... Master?'"));
 
                /* Decrease the item (from the pack) */
                if (item >= 0)
@@ -1946,27 +974,25 @@ static bool cast_summon_greater_demon(void)
        }
        else
        {
-#ifdef JP
-               msg_print("°­Ëâ¤Ï¸½¤ì¤Ê¤«¤Ã¤¿¡£");
-#else
-               msg_print("No Greater Demon arrive.");
-#endif
+               msg_print(_("悪魔は現れなかった。", "No Greater Demon arrive."));
        }
 
        return TRUE;
 }
 
-
-/*
- * Start singing if the player is a Bard 
+/*!
+ * @brief 歌の開始を処理する / Start singing if the player is a Bard 
+ * @param spell 領域魔法としてのID
+ * @param song 魔法効果のID
+ * @return なし
  */
-static void start_singing(int spell, int song)
+static void start_singing(SPELL_IDX spell, MAGIC_NUM1 song)
 {
        /* Remember the song index */
-       p_ptr->magic_num1[0] = song;
+       SINGING_SONG_EFFECT(p_ptr) = (MAGIC_NUM1)song;
 
        /* Remember the index of the spell which activated the song */
-       p_ptr->magic_num2[0] = spell;
+       SINGING_SONG_ID(p_ptr) = (MAGIC_NUM2)spell;
 
 
        /* Now the player is singing */
@@ -1980,33 +1006,33 @@ static void start_singing(int spell, int song)
        p_ptr->redraw |= (PR_STATUS);
 }
 
-
-/*
- * Stop singing if the player is a Bard 
+/*!
+ * @brief 歌の停止を処理する / Stop singing if the player is a Bard 
+ * @return なし
  */
 void stop_singing(void)
 {
        if (p_ptr->pclass != CLASS_BARD) return;
 
        /* Are there interupted song? */
-       if (p_ptr->magic_num1[1])
+       if (INTERUPTING_SONG_EFFECT(p_ptr))
        {
                /* Forget interupted song */
-               p_ptr->magic_num1[1] = 0;
+               INTERUPTING_SONG_EFFECT(p_ptr) = MUSIC_NONE;
                return;
        }
 
        /* The player is singing? */
-       if (!p_ptr->magic_num1[0]) return;
+       if (!SINGING_SONG_EFFECT(p_ptr)) return;
 
        /* Hack -- if called from set_action(), avoid recursive loop */
        if (p_ptr->action == ACTION_SING) set_action(ACTION_NONE);
 
        /* Message text of each song or etc. */
-       do_spell(REALM_MUSIC, p_ptr->magic_num2[0], SPELL_STOP);
+       do_spell(REALM_MUSIC, SINGING_SONG_ID(p_ptr), SPELL_STOP);
 
-       p_ptr->magic_num1[0] = MUSIC_NONE;
-       p_ptr->magic_num2[0] = 0;
+       SINGING_SONG_EFFECT(p_ptr) = MUSIC_NONE;
+       SINGING_SONG_ID(p_ptr) = 0;
 
        /* Recalculate bonuses */
        p_ptr->update |= (PU_BONUS);
@@ -2016,45 +1042,27 @@ void stop_singing(void)
 }
 
 
-/*
- * Do everything for each spell
+/*!
+ * @brief 生命領域魔法の各処理を行う
+ * @param spell 魔法ID
+ * @param mode 処理内容 (SPELL_NAME / SPELL_DESC / SPELL_INFO / SPELL_CAST)
+ * @return SPELL_NAME / SPELL_DESC / SPELL_INFO 時には文字列ポインタを返す。SPELL_CAST時はNULL文字列を返す。
  */
-cptr do_spell(int realm, int spell, int mode)
+static cptr do_life_spell(SPELL_IDX spell, BIT_FLAGS mode)
 {
        bool name = (mode == SPELL_NAME) ? TRUE : FALSE;
        bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;
        bool info = (mode == SPELL_INFO) ? TRUE : FALSE;
        bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;
-       bool fail = (mode == SPELL_FAIL) ? TRUE : FALSE;
-       bool cont = (mode == SPELL_CONT) ? TRUE : FALSE;
-       bool stop = (mode == SPELL_STOP) ? TRUE : FALSE;
-
-#ifdef JP
-       static const char s_dam[] = "»½ý:";
-       static const char s_random[] = "¥é¥ó¥À¥à";
-       static const char s_rng[] = "¼ÍÄø";
-#else
-       static const char s_dam[] = "dam ";
-       static const char s_random[] = "random";
-       static const char s_rng[] = "rng ";
-#endif
 
        int dir;
        int plev = p_ptr->lev;
 
-       int spellid = spell_id_from(realm, spell);
-
-       switch (spellid)
+       switch (spell)
        {
-       case LIFE_SPEL_CURE_LIGHT_WOUNDS:  
-#ifdef JP
-               if (name) return "·Ú½ý¤Î¼£Ìþ";
-               if (desc) return "²ø²æ¤ÈÂÎÎϤò¾¯¤·²óÉü¤µ¤»¤ë¡£";
-#else
-               if (name) return "Cure Light Wounds";
-               if (desc) return "Heals cut and HP a little.";
-#endif
-    
+       case 0:
+               if (name) return _("軽傷の治癒", "Cure Light Wounds");
+               if (desc) return _("怪我と体力を少し回復させる。", "Heals cut and HP a little.");
                {
                        int dice = 2;
                        int sides = 10;
@@ -2069,15 +1077,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_BLESS:  
-#ifdef JP
-               if (name) return "½ËÊ¡";
-               if (desc) return "°ìÄê»þ´Ö¡¢Ì¿ÃæΨ¤ÈAC¤Ë¥Ü¡¼¥Ê¥¹¤òÆÀ¤ë¡£";
-#else
-               if (name) return "Bless";
-               if (desc) return "Gives bonus to hit and AC for a few turns.";
-#endif
-    
+       case 1:
+               if (name) return _("祝福", "Bless");
+               if (desc) return _("一定時間、命中率とACにボーナスを得る。", "Gives bonus to hit and AC for a few turns.");
                {
                        int base = 12;
 
@@ -2090,15 +1092,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_CAUSE_LIGHT_WOUNDS:  
-#ifdef JP
-               if (name) return "·Ú½ý";
-               if (desc) return "1ÂΤΥâ¥ó¥¹¥¿¡¼¤Ë¾®¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
-#else
-               if (name) return "Cause Light Wounds";
-               if (desc) return "Wounds a monster a little unless resisted.";
-#endif
-    
+       case 2:
+               if (name) return _("軽傷", "Cause Light Wounds");
+               if (desc) return _("1体のモンスターに小ダメージを与える。抵抗されると無効。", "Wounds a monster a little unless resisted.");
                {
                        int dice = 3 + (plev - 1) / 5;
                        int sides = 4;
@@ -2113,15 +1109,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_CALL_LIGHT:  
-#ifdef JP
-               if (name) return "¸÷¤Î¾¤´­";
-               if (desc) return "¸÷¸»¤¬¾È¤é¤·¤Æ¤¤¤ëÈϰϤ«Éô²°Á´ÂΤò±Êµ×¤ËÌÀ¤ë¤¯¤¹¤ë¡£";
-#else
-               if (name) return "Call Light";
-               if (desc) return "Lights up nearby area and the inside of a room permanently.";
-#endif
-    
+       case 3:
+               if (name) return _("光の召喚", "Call Light");
+               if (desc) return _("光源が照らしている範囲か部屋全体を永久に明るくする。", "Lights up nearby area and the inside of a room permanently.");
                {
                        int dice = 2;
                        int sides = plev / 2;
@@ -2136,15 +1126,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_DETECT_DOORS_AND_TRAPS:  
-#ifdef JP
-               if (name) return "æ« & ±£¤·Èâ´¶ÃÎ";
-               if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î櫤ÈÈâ¤È³¬Ãʤò´¶ÃΤ¹¤ë¡£";
-#else
-               if (name) return "Detect Doors & Traps";
-               if (desc) return "Detects traps, doors, and stairs in your vicinity.";
-#endif
-    
+       case 4:
+               if (name) return _("罠 & 隠し扉感知", "Detect Doors & Traps");
+               if (desc) return _("近くの全ての罠と扉と階段を感知する。", "Detects traps, doors, and stairs in your vicinity.");
                {
                        int rad = DETECT_RAD_DEFAULT;
 
@@ -2159,15 +1143,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_CURE_MEDIUM_WOUNDS:  
-#ifdef JP
-               if (name) return "½Å½ý¤Î¼£Ìþ";
-               if (desc) return "²ø²æ¤ÈÂÎÎϤòÃæÄøÅÙ²óÉü¤µ¤»¤ë¡£";
-#else
-               if (name) return "Cure Medium Wounds";
-               if (desc) return "Heals cut and HP more.";
-#endif
-    
+       case 5:
+               if (name) return _("重傷の治癒", "Cure Medium Wounds");
+               if (desc) return _("怪我と体力を中程度回復させる。", "Heals cut and HP more.");
                {
                        int dice = 4;
                        int sides = 10;
@@ -2182,15 +1160,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_CURE_POISON:  
-#ifdef JP
-               if (name) return "²òÆÇ";
-               if (desc) return "ÂÎÆâ¤ÎÆǤò¼è¤ê½ü¤¯¡£";
-#else
-               if (name) return "Cure Poison";
-               if (desc) return "Cure poison status.";
-#endif
-    
+       case 6:
+               if (name) return _("解毒", "Cure Poison");
+               if (desc) return _("体内の毒を取り除く。", "Cure poison status.");
                {
                        if (cast)
                        {
@@ -2199,15 +1171,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_SATISFY_HUNGER:  
-#ifdef JP
-               if (name) return "¶õÊ¢½¼Â­";
-               if (desc) return "ËþÊ¢¤Ë¤¹¤ë¡£";
-#else
-               if (name) return "Satisfy Hunger";
-               if (desc) return "Satisfies hunger.";
-#endif
-    
+       case 7:
+               if (name) return _("空腹充足", "Satisfy Hunger");
+               if (desc) return _("満腹にする。", "Satisfies hunger.");
                {
                        if (cast)
                        {
@@ -2216,39 +1182,23 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_REMOVE_CURSE:  
-#ifdef JP
-               if (name) return "²ò¼ö";
-               if (desc) return "¥¢¥¤¥Æ¥à¤Ë¤«¤«¤Ã¤¿¼å¤¤¼ö¤¤¤ò²ò½ü¤¹¤ë¡£";
-#else
-               if (name) return "Remove Curse";
-               if (desc) return "Removes normal curses from equipped items.";
-#endif
-
+       case 8:
+               if (name) return _("解呪", "Remove Curse");
+               if (desc) return _("アイテムにかかった弱い呪いを解除する。", "Removes normal curses from equipped items.");
                {
                        if (cast)
                        {
                                if (remove_curse())
                                {
-#ifdef JP
-                                       msg_print("狼¤Ë¸«¼é¤é¤ì¤Æ¤¤¤ë¤è¤¦¤Êµ¤¤¬¤¹¤ë¡£");
-#else
-                                       msg_print("You feel as if someone is watching over you.");
-#endif
+                                       msg_print(_("誰かに見守られているような気がする。", "You feel as if someone is watching over you."));
                                }
                        }
                }
                break;
 
-       case LIFE_SPEL_CAUSE_MEDIUM_WOUNDS:  
-#ifdef JP
-               if (name) return "½Å½ý";
-               if (desc) return "1ÂΤΥâ¥ó¥¹¥¿¡¼¤ËÃæ¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
-#else
-               if (name) return "Cause Medium Wounds";
-               if (desc) return "Wounds a monster unless resisted.";
-#endif
-    
+       case 9:
+               if (name) return _("重傷", "Cause Medium Wounds");
+               if (desc) return _("1体のモンスターに中ダメージを与える。抵抗されると無効。", "Wounds a monster unless resisted.");
                {
                        int sides = 8 + (plev - 5) / 4;
                        int dice = 8;
@@ -2258,20 +1208,14 @@ cptr do_spell(int realm, int spell, int mode)
                        if (cast)
                        {
                                if (!get_aim_dir(&dir)) return NULL;
-                               fire_ball_hide(GF_WOUNDS, dir, damroll(sides, dice), 0);
+                               fire_ball_hide(GF_WOUNDS, dir, damroll(dice, sides), 0);
                        }
                }
                break;
 
-       case LIFE_SPEL_CURE_CRITICAL_WOUNDS: 
-#ifdef JP
-               if (name) return "Ã×Ì¿½ý¤Î¼£Ìþ";
-               if (desc) return "ÂÎÎϤòÂçÉý¤Ë²óÉü¤µ¤»¡¢Éé½ý¤ÈÛ¯Û°¾õÂÖ¤âÁ´²÷¤¹¤ë¡£";
-#else
-               if (name) return "Cure Critical Wounds";
-               if (desc) return "Heals cut, stun and HP greatly.";
-#endif
-    
+       case 10:
+               if (name) return _("致命傷の治癒", "Cure Critical Wounds");
+               if (desc) return _("体力を大幅に回復させ、負傷と朦朧状態も全快する。", "Heals cut, stun and HP greatly.");
                {
                        int dice = 8;
                        int sides = 10;
@@ -2287,14 +1231,10 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_RESIST_HEAT_AND_COLD: 
-#ifdef JP
-               if (name) return "ÂÑÇ®ÂÑ´¨";
-               if (desc) return "°ìÄê»þ´Ö¡¢²Ð±ê¤ÈÎ䵤¤ËÂФ¹¤ëÂÑÀ­¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ­¤ËÎßÀѤ¹¤ë¡£";
-#else
-               if (name) return "Resist Heat and Cold";
-               if (desc) return "Gives resistance to fire and cold. These resistances can be added to which from equipment for more powerful resistances.";
-#endif
+       case 11:
+               if (name) return _("耐熱耐寒", "Resist Heat and Cold");
+               if (desc) return _("一定時間、火炎と冷気に対する耐性を得る。装備による耐性に累積する。", 
+                       "Gives resistance to fire and cold. These resistances can be added to which from equipment for more powerful resistances.");
     
                {
                        int base = 20;
@@ -2309,14 +1249,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_SENSE_SURROUNDINGS: 
-#ifdef JP
-               if (name) return "¼þÊÕ´¶ÃÎ";
-               if (desc) return "¼þÊÕ¤ÎÃÏ·Á¤ò´¶ÃΤ¹¤ë¡£";
-#else
-               if (name) return "Sense Surroundings";
-               if (desc) return "Maps nearby area.";
-#endif
+       case 12:
+               if (name) return _("周辺感知", "Sense Surroundings");
+               if (desc) return _("周辺の地形を感知する。", "Maps nearby area.");
     
                {
                        int rad = DETECT_RAD_MAP;
@@ -2330,14 +1265,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_TURN_UNDEAD: 
-#ifdef JP
-               if (name) return "¥Ñ¥Ë¥Ã¥¯¡¦¥¢¥ó¥Ç¥Ã¥É";
-               if (desc) return "»ë³¦Æâ¤Î¥¢¥ó¥Ç¥Ã¥É¤ò¶²Éݤµ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
-#else
-               if (name) return "Turn Undead";
-               if (desc) return "Attempts to scare undead monsters in sight.";
-#endif
+       case 13:
+               if (name) return _("パニック・アンデッド", "Turn Undead");
+               if (desc) return _("視界内のアンデッドを恐怖させる。抵抗されると無効。", "Attempts to scare undead monsters in sight.");
     
                {
                        if (cast)
@@ -2347,14 +1277,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_HEALING: 
-#ifdef JP
-               if (name) return "ÂÎÎϲóÉü";
-               if (desc) return "¶Ë¤á¤Æ¶¯ÎϤʲóÉü¼öʸ¤Ç¡¢Éé½ý¤ÈÛ¯Û°¾õÂÖ¤âÁ´²÷¤¹¤ë¡£";
-#else
-               if (name) return "Healing";
-               if (desc) return "Much powerful healing magic, and heals cut and stun completely.";
-#endif
+       case 14:
+               if (name) return _("体力回復", "Healing");
+               if (desc) return _("極めて強力な回復呪文で、負傷と朦朧状態も全快する。", "Much powerful healing magic, and heals cut and stun completely.");
     
                {
                        int heal = 300;
@@ -2370,14 +1295,10 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_GLYPH_OF_WARDING: 
-#ifdef JP
-               if (name) return "·ë³¦¤ÎÌæ¾Ï";
-               if (desc) return "¼«Ê¬¤Î¤¤¤ë¾²¤Î¾å¤Ë¡¢¥â¥ó¥¹¥¿¡¼¤¬Ä̤êÈ´¤±¤¿¤ê¾¤´­¤µ¤ì¤¿¤ê¤¹¤ë¤³¤È¤¬¤Ç¤­¤Ê¤¯¤Ê¤ë¥ë¡¼¥ó¤òÉÁ¤¯¡£";
-#else
-               if (name) return "Glyph of Warding";
-               if (desc) return "Sets a glyph on the floor beneath you. Monsters cannot attack you if you are on a glyph, but can try to break glyph.";
-#endif
+       case 15:
+               if (name) return _("結界の紋章", "Glyph of Warding");
+               if (desc) return _("自分のいる床の上に、モンスターが通り抜けたり召喚されたりすることができなくなるルーンを描く。",
+                       "Sets a glyph on the floor beneath you. Monsters cannot attack you if you are on a glyph, but can try to break glyph.");
     
                {
                        if (cast)
@@ -2387,38 +1308,24 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_DISPEL_CURSE: 
-#ifdef JP
-               if (name) return "*²ò¼ö*";
-               if (desc) return "¥¢¥¤¥Æ¥à¤Ë¤«¤«¤Ã¤¿¶¯ÎϤʼö¤¤¤ò²ò½ü¤¹¤ë¡£";
-#else
-               if (name) return "Dispel Curse";
-               if (desc) return "Removes normal and heavy curse from equipped items.";
-#endif
+       case 16:
+               if (name) return _("*解呪*", "Dispel Curse");
+               if (desc) return _("アイテムにかかった強力な呪いを解除する。", "Removes normal and heavy curse from equipped items.");
     
                {
                        if (cast)
                        {
                                if (remove_all_curse())
                                {
-#ifdef JP
-                                       msg_print("狼¤Ë¸«¼é¤é¤ì¤Æ¤¤¤ë¤è¤¦¤Êµ¤¤¬¤¹¤ë¡£");
-#else
-                                       msg_print("You feel as if someone is watching over you.");
-#endif
+                                       msg_print(_("誰かに見守られているような気がする。", "You feel as if someone is watching over you."));
                                }
                        }
                }
                break;
 
-       case LIFE_SPEL_PERCEPTION: 
-#ifdef JP
-               if (name) return "´Õ¼±";
-               if (desc) return "¥¢¥¤¥Æ¥à¤ò¼±Ê̤¹¤ë¡£";
-#else
-               if (name) return "Perception";
-               if (desc) return "Identifies an item.";
-#endif
+       case 17:
+               if (name) return _("鑑識", "Perception");
+               if (desc) return _("アイテムを識別する。", "Identifies an item.");
     
                {
                        if (cast)
@@ -2428,14 +1335,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_DISPEL_UNDEAD: 
-#ifdef JP
-               if (name) return "¥¢¥ó¥Ç¥Ã¥ÉÂ໶";
-               if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥¢¥ó¥Ç¥Ã¥É¤Ë¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
-#else
-               if (name) return "Dispel Undead";
-               if (desc) return "Damages all undead monsters in sight.";
-#endif
+       case 18:
+               if (name) return _("アンデッド退散", "Dispel Undead");
+               if (desc) return _("視界内の全てのアンデッドにダメージを与える。", "Damages all undead monsters in sight.");
     
                {
                        int dice = 1;
@@ -2450,14 +1352,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_DAY_OF_THE_DOVE: 
-#ifdef JP
-               if (name) return "Æä¤Î¹ï";
-               if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò̥λ¤¹¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
-#else
-               if (name) return "Day of the Dove";
-               if (desc) return "Attempts to charm all monsters in sight.";
-#endif
+       case 19:
+               if (name) return _("凪の刻", "Day of the Dove");
+               if (desc) return _("視界内の全てのモンスターを魅了する。抵抗されると無効。", "Attempts to charm all monsters in sight.");
     
                {
                        int power = plev * 2;
@@ -2471,14 +1368,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_CAUSE_CRITICAL_WOUNDS: 
-#ifdef JP
-               if (name) return "Ã×Ì¿½ý";
-               if (desc) return "1ÂΤΥâ¥ó¥¹¥¿¡¼¤ËÂç¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
-#else
-               if (name) return "Cause Critical Wounds";
-               if (desc) return "Wounds a monster critically unless resisted.";
-#endif
+       case 20:
+               if (name) return _("致命傷", "Cause Critical Wounds");
+               if (desc) return _("1体のモンスターに大ダメージを与える。抵抗されると無効。", "Wounds a monster critically unless resisted.");
     
                {
                        int dice = 5 + (plev - 5) / 3;
@@ -2494,14 +1386,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_WORD_OF_RECALL: 
-#ifdef JP
-               if (name) return "µ¢´Ô¤Î¾Û";
-               if (desc) return "ÃϾå¤Ë¤¤¤ë¤È¤­¤Ï¥À¥ó¥¸¥ç¥ó¤ÎºÇ¿¼³¬¤Ø¡¢¥À¥ó¥¸¥ç¥ó¤Ë¤¤¤ë¤È¤­¤ÏÃϾå¤Ø¤È°ÜÆ°¤¹¤ë¡£";
-#else
-               if (name) return "Word of Recall";
-               if (desc) return "Recalls player from dungeon to town, or from town to the deepest level of dungeon.";
-#endif
+       case 21:
+               if (name) return _("帰還の詔", "Word of Recall");
+               if (desc) return _("地上にいるときはダンジョンの最深階へ、ダンジョンにいるときは地上へと移動する。", "Recalls player from dungeon to town, or from town to the deepest level of dungeon.");
     
                {
                        int base = 15;
@@ -2516,14 +1403,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_ALTER_REALITY: 
-#ifdef JP
-               if (name) return "¿¿¼Â¤Îº×ÃÅ";
-               if (desc) return "¸½ºß¤Î³¬¤òºÆ¹½À®¤¹¤ë¡£";
-#else
-               if (name) return "Alter Reality";
-               if (desc) return "Recreates current dungeon level.";
-#endif
+       case 22:
+               if (name) return _("真実の祭壇", "Alter Reality");
+               if (desc) return _("現在の階を再構成する。", "Recreates current dungeon level.");
     
                {
                        int base = 15;
@@ -2538,14 +1420,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_WARDING_TRUE: 
-#ifdef JP
-               if (name) return "¿¿¡¦·ë³¦";
-               if (desc) return "¼«Ê¬¤Î¤¤¤ë¾²¤È¼þ°Ï8¥Þ¥¹¤Î¾²¤Î¾å¤Ë¡¢¥â¥ó¥¹¥¿¡¼¤¬Ä̤êÈ´¤±¤¿¤ê¾¤´­¤µ¤ì¤¿¤ê¤¹¤ë¤³¤È¤¬¤Ç¤­¤Ê¤¯¤Ê¤ë¥ë¡¼¥ó¤òÉÁ¤¯¡£";
-#else
-               if (name) return "Warding True";
-               if (desc) return "Creates glyphs in all adjacent squares and under you.";
-#endif
+       case 23:
+               if (name) return _("真・結界", "Warding True");
+               if (desc) return _("自分のいる床と周囲8マスの床の上に、モンスターが通り抜けたり召喚されたりすることができなくなるルーンを描く。", "Creates glyphs in all adjacent squares and under you.");
     
                {
                        int rad = 1;
@@ -2560,14 +1437,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_STERILIZATION: 
-#ifdef JP
-               if (name) return "ÉÔÌÓ²½";
-               if (desc) return "¤³¤Î³¬¤ÎÁý¿£¤¹¤ë¥â¥ó¥¹¥¿¡¼¤¬Áý¿£¤Ç¤­¤Ê¤¯¤Ê¤ë¡£";
-#else
-               if (name) return "Sterilization";
-               if (desc) return "Prevents any breeders on current level from breeding.";
-#endif
+       case 24:
+               if (name) return _("不毛化", "Sterilization");
+               if (desc) return _("この階の増殖するモンスターが増殖できなくなる。", "Prevents any breeders on current level from breeding.");
     
                {
                        if (cast)
@@ -2577,14 +1449,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_DETECTION: 
-#ifdef JP
-               if (name) return "Á´´¶ÃÎ";
-               if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¡¢æ«¡¢Èâ¡¢³¬ÃÊ¡¢ºâÊõ¡¢¤½¤·¤Æ¥¢¥¤¥Æ¥à¤ò´¶ÃΤ¹¤ë¡£";
-#else
-               if (name) return "Detection";
-               if (desc) return "Detects all monsters, traps, doors, stairs, treasures and items in your vicinity.";
-#endif
+       case 25:
+               if (name) return _("全感知", "Detection");
+               if (desc) return _("近くの全てのモンスター、罠、扉、階段、財宝、そしてアイテムを感知する。", "Detects all monsters, traps, doors, stairs, treasures and items in your vicinity.");
 
                {
                        int rad = DETECT_RAD_DEFAULT;
@@ -2598,14 +1465,10 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_ANNIHILATE_UNDEAD: 
-#ifdef JP
-               if (name) return "¥¢¥ó¥Ç¥Ã¥É¾ÃÌÇ";
-               if (desc) return "¼«Ê¬¤Î¼þ°Ï¤Ë¤¤¤ë¥¢¥ó¥Ç¥Ã¥É¤ò¸½ºß¤Î³¬¤«¤é¾Ã¤·µî¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
-#else
-               if (name) return "Annihilate Undead";
-               if (desc) return "Eliminates all nearby undead monsters, exhausting you.  Powerful or unique monsters may be able to resist.";
-#endif
+       case 26:
+               if (name) return _("アンデッド消滅", "Annihilate Undead");
+               if (desc) return _("自分の周囲にいるアンデッドを現在の階から消し去る。抵抗されると無効。",
+                       "Eliminates all nearby undead monsters, exhausting you.  Powerful or unique monsters may be able to resist.");
     
                {
                        int power = plev + 50;
@@ -2619,14 +1482,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_CLAIRVOYANCE: 
-#ifdef JP
-               if (name) return "ÀéΤ´ã";
-               if (desc) return "¤½¤Î³¬Á´ÂΤò±Êµ×¤Ë¾È¤é¤·¡¢¥À¥ó¥¸¥ç¥óÆ⤹¤Ù¤Æ¤Î¥¢¥¤¥Æ¥à¤ò´¶ÃΤ¹¤ë¡£";
-#else
-               if (name) return "Clairvoyance";
-               if (desc) return "Maps and lights whole dungeon level. Knows all objects location. And gives telepathy for a while.";
-#endif
+       case 27:
+               if (name) return _("千里眼", "Clairvoyance");
+               if (desc) return _("その階全体を永久に照らし、ダンジョン内すべてのアイテムを感知する。", "Maps and lights whole dungeon level. Knows all objects location. And gives telepathy for a while.");
     
                {
                        if (cast)
@@ -2636,14 +1494,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_RESTORATION: 
-#ifdef JP
-               if (name) return "Á´Éü³è";
-               if (desc) return "¤¹¤Ù¤Æ¤Î¥¹¥Æ¡¼¥¿¥¹¤È·Ð¸³Ãͤò²óÉü¤¹¤ë¡£";
-#else
-               if (name) return "Restoration";
-               if (desc) return "Restores all stats and experience.";
-#endif
+       case 28:
+               if (name) return _("全復活", "Restoration");
+               if (desc) return _("すべてのステータスと経験値を回復する。", "Restores all stats and experience.");
     
                {
                        if (cast)
@@ -2659,14 +1512,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_HEALING_TRUE: 
-#ifdef JP
-               if (name) return "*ÂÎÎϲóÉü*";
-               if (desc) return "ºÇ¶¯¤Î¼£Ìþ¤ÎËâË¡¤Ç¡¢Éé½ý¤ÈÛ¯Û°¾õÂÖ¤âÁ´²÷¤¹¤ë¡£";
-#else
-               if (name) return "Healing True";
-               if (desc) return "The greatest healing magic. Heals all HP, cut and stun.";
-#endif
+       case 29:
+               if (name) return _("*体力回復*", "Healing True");
+               if (desc) return _("最強の治癒の魔法で、負傷と朦朧状態も全快する。", "The greatest healing magic. Heals all HP, cut and stun.");
     
                {
                        int heal = 2000;
@@ -2682,14 +1530,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_HOLY_VISION: 
-#ifdef JP
-               if (name) return "À»¤Ê¤ë¥Ó¥¸¥ç¥ó";
-               if (desc) return "¥¢¥¤¥Æ¥à¤Î»ý¤ÄǽÎϤò´°Á´¤ËÃΤ롣";
-#else
-               if (name) return "Holy Vision";
-               if (desc) return "*Identifies* an item.";
-#endif
+       case 30:
+               if (name) return _("聖なるビジョン", "Holy Vision");
+               if (desc) return _("アイテムの持つ能力を完全に知る。", "*Identifies* an item.");
     
                {
                        if (cast)
@@ -2699,23 +1542,18 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case LIFE_SPEL_ULTIMATE_RESISTANCE: 
-#ifdef JP
-               if (name) return "µæ¶Ë¤ÎÂÑÀ­";
-               if (desc) return "°ìÄê»þ´Ö¡¢¤¢¤é¤æ¤ëÂÑÀ­¤òÉÕ¤±¡¢AC¤ÈËâË¡ËɸæǽÎϤò¾å¾º¤µ¤»¤ë¡£";
-#else
-               if (name) return "Ultimate Resistance";
-               if (desc) return "Gives ultimate resistance, bonus to AC and speed.";
-#endif
+       case 31:
+               if (name) return _("究極の耐性", "Ultimate Resistance");
+               if (desc) return _("一定時間、あらゆる耐性を付け、ACと魔法防御能力を上昇させる。", "Gives ultimate resistance, bonus to AC and speed.");
     
                {
-                       int base = plev / 2;
+                       TIME_EFFECT base = (TIME_EFFECT)plev / 2;
 
                        if (info) return info_duration(base, base);
 
                        if (cast)
                        {
-                               int v = randint1(base) + base;
+                               TIME_EFFECT v = randint1(base) + base;
                                set_fast(v, FALSE);
                                set_oppose_acid(v, FALSE);
                                set_oppose_elec(v, FALSE);
@@ -2726,15 +1564,32 @@ cptr do_spell(int realm, int spell, int mode)
                        }
                }
                break;
+       }
 
-       case SORC_SPEL_DETECT_MONSTERS: 
-#ifdef JP
-               if (name) return "¥â¥ó¥¹¥¿¡¼´¶ÃÎ";
-               if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î¸«¤¨¤ë¥â¥ó¥¹¥¿¡¼¤ò´¶ÃΤ¹¤ë¡£";
-#else
-               if (name) return "Detect Monsters";
-               if (desc) return "Detects all monsters in your vicinity unless invisible.";
-#endif
+       return "";
+}
+
+/*!
+ * @brief 仙術領域魔法の各処理を行う
+ * @param spell 魔法ID
+ * @param mode 処理内容 (SPELL_NAME / SPELL_DESC / SPELL_INFO / SPELL_CAST)
+ * @return SPELL_NAME / SPELL_DESC / SPELL_INFO 時には文字列ポインタを返す。SPELL_CAST時はNULL文字列を返す。
+ */
+static cptr do_sorcery_spell(SPELL_IDX spell, BIT_FLAGS mode)
+{
+       bool name = (mode == SPELL_NAME) ? TRUE : FALSE;
+       bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;
+       bool info = (mode == SPELL_INFO) ? TRUE : FALSE;
+       bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;
+
+       int dir;
+       int plev = p_ptr->lev;
+
+       switch (spell)
+       {
+       case 0:
+               if (name) return _("モンスター感知", "Detect Monsters");
+               if (desc) return _("近くの全ての見えるモンスターを感知する。", "Detects all monsters in your vicinity unless invisible.");
     
                {
                        int rad = DETECT_RAD_DEFAULT;
@@ -2748,35 +1603,25 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_PHASE_DOOR: 
-#ifdef JP
-               if (name) return "¥·¥ç¡¼¥È¡¦¥Æ¥ì¥Ý¡¼¥È";
-               if (desc) return "¶áµ÷Î¥¤Î¥Æ¥ì¥Ý¡¼¥È¤ò¤¹¤ë¡£";
-#else
-               if (name) return "Phase Door";
-               if (desc) return "Teleport short distance.";
-#endif
+       case 1:
+               if (name) return _("ショート・テレポート", "Phase Door");
+               if (desc) return _("近距離のテレポートをする。", "Teleport short distance.");
     
                {
-                       int range = 10;
+                       POSITION range = 10;
 
                        if (info) return info_range(range);
 
                        if (cast)
                        {
-                               teleport_player(range, FALSE);
+                               teleport_player(range, 0L);
                        }
                }
                break;
 
-       case SORC_SPEL_DETECT_DOORS_AND_TRAPS: 
-#ifdef JP
-               if (name) return "櫤ÈÈâ´¶ÃÎ";
-               if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤ÎÈâ¤È櫤ò´¶ÃΤ¹¤ë¡£";
-#else
-               if (name) return "Detect Doors and Traps";
-               if (desc) return "Detects traps, doors, and stairs in your vicinity.";
-#endif
+       case 2:
+               if (name) return _("罠と扉感知", "Detect Doors and Traps");
+               if (desc) return _("近くの全ての扉と罠を感知する。", "Detects traps, doors, and stairs in your vicinity.");
     
                {
                        int rad = DETECT_RAD_DEFAULT;
@@ -2792,14 +1637,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_LIGHT_AREA: 
-#ifdef JP
-               if (name) return "¥é¥¤¥È¡¦¥¨¥ê¥¢";
-               if (desc) return "¸÷¸»¤¬¾È¤é¤·¤Æ¤¤¤ëÈϰϤ«Éô²°Á´ÂΤò±Êµ×¤ËÌÀ¤ë¤¯¤¹¤ë¡£";
-#else
-               if (name) return "Light Area";
-               if (desc) return "Lights up nearby area and the inside of a room permanently.";
-#endif
+       case 3:
+               if (name) return _("ライト・エリア", "Light Area");
+               if (desc) return _("光源が照らしている範囲か部屋全体を永久に明るくする。", "Lights up nearby area and the inside of a room permanently.");
     
                {
                        int dice = 2;
@@ -2815,14 +1655,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_CONFUSE_MONSTER: 
-#ifdef JP
-               if (name) return "¥Ñ¥Ë¥Ã¥¯¡¦¥â¥ó¥¹¥¿¡¼";
-               if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤòº®Í𤵤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
-#else
-               if (name) return "Confuse Monster";
-               if (desc) return "Attempts to confuse a monster.";
-#endif
+       case 4:
+               if (name) return _("パニック・モンスター", "Confuse Monster");
+               if (desc) return _("モンスター1体を混乱させる。抵抗されると無効。", "Attempts to confuse a monster.");
     
                {
                        int power = (plev * 3) / 2;
@@ -2838,35 +1673,25 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_TELEPORT: 
-#ifdef JP
-               if (name) return "¥Æ¥ì¥Ý¡¼¥È";
-               if (desc) return "±óµ÷Î¥¤Î¥Æ¥ì¥Ý¡¼¥È¤ò¤¹¤ë¡£";
-#else
-               if (name) return "Teleport";
-               if (desc) return "Teleport long distance.";
-#endif
+       case 5:
+               if (name) return _("テレポート", "Teleport");
+               if (desc) return _("遠距離のテレポートをする。", "Teleport long distance.");
     
                {
-                       int range = plev * 5;
+                       POSITION range = plev * 5;
 
                        if (info) return info_range(range);
 
                        if (cast)
                        {
-                               teleport_player(range, FALSE);
+                               teleport_player(range, 0L);
                        }
                }
                break;
 
-       case SORC_SPEL_SLEEP_MONSTER: 
-#ifdef JP
-               if (name) return "¥¹¥ê¡¼¥×¡¦¥â¥ó¥¹¥¿¡¼";
-               if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤò̲¤é¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
-#else
-               if (name) return "Sleep Monster";
-               if (desc) return "Attempts to sleep a monster.";
-#endif
+       case 6:
+               if (name) return _("スリープ・モンスター", "Sleep Monster");
+               if (desc) return _("モンスター1体を眠らせる。抵抗されると無効。", "Attempts to sleep a monster.");
     
                {
                        int power = plev;
@@ -2877,19 +1702,14 @@ cptr do_spell(int realm, int spell, int mode)
                        {
                                if (!get_aim_dir(&dir)) return NULL;
 
-                               sleep_monster(dir);
+                               sleep_monster(dir, plev);
                        }
                }
                break;
 
-       case SORC_SPEL_RECHARGING: 
-#ifdef JP
-               if (name) return "ËâÎϽ¼Å¶";
-               if (desc) return "¾ó/ËâË¡ËÀ¤Î½¼Å¶²ó¿ô¤òÁý¤ä¤¹¤«¡¢½¼Å¶Ãæ¤Î¥í¥Ã¥É¤Î½¼Å¶»þ´Ö¤ò¸º¤é¤¹¡£";
-#else
-               if (name) return "Recharging";
-               if (desc) return "Recharges staffs, wands or rods.";
-#endif
+       case 7:
+               if (name) return _("魔力充填", "Recharging");
+               if (desc) return _("杖/魔法棒の充填回数を増やすか、充填中のロッドの充填時間を減らす。", "Recharges staffs, wands or rods.");
     
                {
                        int power = plev * 4;
@@ -2903,14 +1723,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_MAGIC_MAPPING: 
-#ifdef JP
-               if (name) return "ËâË¡¤ÎÃÏ¿Þ";
-               if (desc) return "¼þÊÕ¤ÎÃÏ·Á¤ò´¶ÃΤ¹¤ë¡£";
-#else
-               if (name) return "Magic Mapping";
-               if (desc) return "Maps nearby area.";
-#endif
+       case 8:
+               if (name) return _("魔法の地図", "Magic Mapping");
+               if (desc) return _("周辺の地形を感知する。", "Maps nearby area.");
     
                {
                        int rad = DETECT_RAD_MAP;
@@ -2924,14 +1739,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_IDENTIFY: 
-#ifdef JP
-               if (name) return "´ÕÄê";
-               if (desc) return "¥¢¥¤¥Æ¥à¤ò¼±Ê̤¹¤ë¡£";
-#else
-               if (name) return "Identify";
-               if (desc) return "Identifies an item.";
-#endif
+       case 9:
+               if (name) return _("鑑定", "Identify");
+               if (desc) return _("アイテムを識別する。", "Identifies an item.");
     
                {
                        if (cast)
@@ -2941,14 +1751,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_SLOW_MONSTER: 
-#ifdef JP
-               if (name) return "¥¹¥í¥¦¡¦¥â¥ó¥¹¥¿¡¼";
-               if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤò¸ºÂ®¤µ¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
-#else
-               if (name) return "Slow Monster";
-               if (desc) return "Attempts to slow a monster.";
-#endif
+       case 10:
+               if (name) return _("スロウ・モンスター", "Slow Monster");
+               if (desc) return _("モンスター1体を減速さる。抵抗されると無効。", "Attempts to slow a monster.");
     
                {
                        int power = plev;
@@ -2959,19 +1764,14 @@ cptr do_spell(int realm, int spell, int mode)
                        {
                                if (!get_aim_dir(&dir)) return NULL;
 
-                               slow_monster(dir);
+                               slow_monster(dir, plev);
                        }
                }
                break;
 
-       case SORC_SPEL_MASS_SLEEP: 
-#ifdef JP
-               if (name) return "¼þÊÕ¥¹¥ê¡¼¥×";
-               if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò̲¤é¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
-#else
-               if (name) return "Mass Sleep";
-               if (desc) return "Attempts to sleep all monsters in sight.";
-#endif
+       case 11:
+               if (name) return _("周辺スリープ", "Mass Sleep");
+               if (desc) return _("視界内の全てのモンスターを眠らせる。抵抗されると無効。", "Attempts to sleep all monsters in sight.");
     
                {
                        int power = plev;
@@ -2980,19 +1780,14 @@ cptr do_spell(int realm, int spell, int mode)
 
                        if (cast)
                        {
-                               sleep_monsters();
+                               sleep_monsters(plev);
                        }
                }
                break;
 
-       case SORC_SPEL_TELEPORT_AWAY: 
-#ifdef JP
-               if (name) return "¥Æ¥ì¥Ý¡¼¥È¡¦¥â¥ó¥¹¥¿¡¼";
-               if (desc) return "¥â¥ó¥¹¥¿¡¼¤ò¥Æ¥ì¥Ý¡¼¥È¤µ¤»¤ë¥Ó¡¼¥à¤òÊü¤Ä¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
-#else
-               if (name) return "Teleport Away";
-               if (desc) return "Teleports all monsters on the line away unless resisted.";
-#endif
+       case 12:
+               if (name) return _("テレポート・モンスター", "Teleport Away");
+               if (desc) return _("モンスターをテレポートさせるビームを放つ。抵抗されると無効。", "Teleports all monsters on the line away unless resisted.");
     
                {
                        int power = plev;
@@ -3008,14 +1803,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_HASTE_SELF: 
-#ifdef JP
-               if (name) return "¥¹¥Ô¡¼¥É";
-               if (desc) return "°ìÄê»þ´Ö¡¢²Ã®¤¹¤ë¡£";
-#else
-               if (name) return "Haste Self";
-               if (desc) return "Hastes you for a while.";
-#endif
+       case 13:
+               if (name) return _("スピード", "Haste Self");
+               if (desc) return _("一定時間、加速する。", "Hastes you for a while.");
     
                {
                        int base = plev;
@@ -3030,14 +1820,10 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_DETECTION_TRUE: 
-#ifdef JP
-               if (name) return "¿¿¡¦´¶ÃÎ";
-               if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¡¢æ«¡¢Èâ¡¢³¬ÃÊ¡¢ºâÊõ¡¢¤½¤·¤Æ¥¢¥¤¥Æ¥à¤ò´¶ÃΤ¹¤ë¡£";
-#else
-               if (name) return "Detection True";
-               if (desc) return "Detects all monsters, traps, doors, stairs, treasures and items in your vicinity.";
-#endif
+       case 14:
+               if (name) return _("真・感知", "Detection True");
+               if (desc) return _("近くの全てのモンスター、罠、扉、階段、財宝、そしてアイテムを感知する。",
+                       "Detects all monsters, traps, doors, stairs, treasures and items in your vicinity.");
     
                {
                        int rad = DETECT_RAD_DEFAULT;
@@ -3051,14 +1837,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_IDENTIFY_TRUE: 
-#ifdef JP
-               if (name) return "¿¿¡¦´ÕÄê";
-               if (desc) return "¥¢¥¤¥Æ¥à¤Î»ý¤ÄǽÎϤò´°Á´¤ËÃΤ롣";
-#else
-               if (name) return "Identify True";
-               if (desc) return "*Identifies* an item.";
-#endif
+       case 15:
+               if (name) return _("真・鑑定", "Identify True");
+               if (desc) return _("アイテムの持つ能力を完全に知る。", "*Identifies* an item.");
     
                {
                        if (cast)
@@ -3068,14 +1849,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_DETECT_ITEMS_AND_TREASURE: 
-#ifdef JP
-               if (name) return "ʪÂΤȺâÊõ´¶ÃÎ";
-               if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î¥¢¥¤¥Æ¥à¤ÈºâÊõ¤ò´¶ÃΤ¹¤ë¡£";
-#else
-               if (name) return "Detect items and Treasure";
-               if (desc) return "Detects all treasures and items in your vicinity.";
-#endif
+       case 16:
+               if (name) return _("物体と財宝感知", "Detect items and Treasure");
+               if (desc) return _("近くの全てのアイテムと財宝を感知する。", "Detects all treasures and items in your vicinity.");
     
                {
                        int rad = DETECT_RAD_DEFAULT;
@@ -3091,14 +1867,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_CHARM_MONSTER: 
-#ifdef JP
-               if (name) return "¥Á¥ã¡¼¥à¡¦¥â¥ó¥¹¥¿¡¼";
-               if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤò̥λ¤¹¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
-#else
-               if (name) return "Charm Monster";
-               if (desc) return "Attempts to charm a monster.";
-#endif
+       case 17:
+               if (name) return _("チャーム・モンスター", "Charm Monster");
+               if (desc) return _("モンスター1体を魅了する。抵抗されると無効。", "Attempts to charm a monster.");
     
                {
                        int power = plev;
@@ -3114,14 +1885,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_SENSE_MINDS: 
-#ifdef JP
-               if (name) return "Àº¿À´¶ÃÎ";
-               if (desc) return "°ìÄê»þ´Ö¡¢¥Æ¥ì¥Ñ¥·¡¼Ç½ÎϤòÆÀ¤ë¡£";
-#else
-               if (name) return "Sense Minds";
-               if (desc) return "Gives telepathy for a while.";
-#endif
+       case 18:
+               if (name) return _("精神感知", "Sense Minds");
+               if (desc) return _("一定時間、テレパシー能力を得る。", "Gives telepathy for a while.");
     
                {
                        int base = 25;
@@ -3136,14 +1902,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_TELEPORT_TO_TOWN: 
-#ifdef JP
-               if (name) return "³¹°ÜÆ°";
-               if (desc) return "³¹¤Ø°ÜÆ°¤¹¤ë¡£ÃϾå¤Ë¤¤¤ë¤È¤­¤·¤«»È¤¨¤Ê¤¤¡£";
-#else
-               if (name) return "Teleport to town";
-               if (desc) return "Teleport to a town which you choose in a moment. Can only be used outdoors.";
-#endif
+       case 19:
+               if (name) return _("街移動", "Teleport to town");
+               if (desc) return _("街へ移動する。地上にいるときしか使えない。", "Teleport to a town which you choose in a moment. Can only be used outdoors.");
     
                {
                        if (cast)
@@ -3153,14 +1914,10 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_SELF_KNOWLEDGE: 
-#ifdef JP
-               if (name) return "¼«¸ÊʬÀÏ";
-               if (desc) return "¸½ºß¤Î¼«Ê¬¤Î¾õÂÖ¤ò´°Á´¤ËÃΤ롣";
-#else
-               if (name) return "Self Knowledge";
-               if (desc) return "Gives you useful info regarding your current resistances, the powers of your weapon and maximum limits of your stats.";
-#endif
+       case 20:
+               if (name) return _("自己分析", "Self Knowledge");
+               if (desc) return _("現在の自分の状態を完全に知る。",
+                       "Gives you useful info regarding your current resistances, the powers of your weapon and maximum limits of your stats.");
     
                {
                        if (cast)
@@ -3170,36 +1927,23 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_TELEPORT_LEVEL: 
-#ifdef JP
-               if (name) return "¥Æ¥ì¥Ý¡¼¥È¡¦¥ì¥Ù¥ë";
-               if (desc) return "½Ö»þ¤Ë¾å¤«²¼¤Î³¬¤Ë¥Æ¥ì¥Ý¡¼¥È¤¹¤ë¡£";
-#else
-               if (name) return "Teleport Level";
-               if (desc) return "Teleport to up or down stairs in a moment.";
-#endif
+       case 21:
+               if (name) return _("テレポート・レベル", "Teleport Level");
+               if (desc) return _("瞬時に上か下の階にテレポートする。", "Teleport to up or down stairs in a moment.");
     
                {
                        if (cast)
                        {
-#ifdef JP
-                               if (!get_check("ËÜÅö¤Ë¾¤Î³¬¤Ë¥Æ¥ì¥Ý¡¼¥È¤·¤Þ¤¹¤«¡©")) return NULL;
-#else
-                               if (!get_check("Are you sure? (Teleport Level)")) return NULL;
-#endif
+                               if (!get_check(_("本当に他の階にテレポートしますか?", "Are you sure? (Teleport Level)"))) return NULL;
                                teleport_level(0);
                        }
                }
                break;
 
-       case SORC_SPEL_WORD_OF_RECALL: 
-#ifdef JP
-               if (name) return "µ¢´Ô¤Î¼öʸ";
-               if (desc) return "ÃϾå¤Ë¤¤¤ë¤È¤­¤Ï¥À¥ó¥¸¥ç¥ó¤ÎºÇ¿¼³¬¤Ø¡¢¥À¥ó¥¸¥ç¥ó¤Ë¤¤¤ë¤È¤­¤ÏÃϾå¤Ø¤È°ÜÆ°¤¹¤ë¡£";
-#else
-               if (name) return "Word of Recall";
-               if (desc) return "Recalls player from dungeon to town, or from town to the deepest level of dungeon.";
-#endif
+       case 22:
+               if (name) return _("帰還の呪文", "Word of Recall");
+               if (desc) return _("地上にいるときはダンジョンの最深階へ、ダンジョンにいるときは地上へと移動する。", 
+                       "Recalls player from dungeon to town, or from town to the deepest level of dungeon.");
     
                {
                        int base = 15;
@@ -3214,41 +1958,27 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_DIMENSION_DOOR: 
-#ifdef JP
-               if (name) return "¼¡¸µ¤ÎÈâ";
-               if (desc) return "ûµ÷Î¥Æâ¤Î»ØÄꤷ¤¿¾ì½ê¤Ë¥Æ¥ì¥Ý¡¼¥È¤¹¤ë¡£";
-#else
-               if (name) return "Dimension Door";
-               if (desc) return "Teleport to given location.";
-#endif
+       case 23:
+               if (name) return _("次元の扉", "Dimension Door");
+               if (desc) return _("短距離内の指定した場所にテレポートする。", "Teleport to given location.");
     
                {
-                       int range = plev / 2 + 10;
+                       POSITION range = plev / 2 + 10;
 
                        if (info) return info_range(range);
 
                        if (cast)
                        {
-#ifdef JP
-                               msg_print("¼¡¸µ¤ÎÈ⤬³«¤¤¤¿¡£ÌÜŪÃϤòÁª¤ó¤Ç²¼¤µ¤¤¡£");
-#else
-                               msg_print("You open a dimensional gate. Choose a destination.");
-#endif
-
+                               msg_print(_("次元の扉が開いた。目的地を選んで下さい。", "You open a dimensional gate. Choose a destination."));
                                if (!dimension_door()) return NULL;
                        }
                }
                break;
 
-       case SORC_SPEL_PROBING: 
-#ifdef JP
-               if (name) return "Ä´ºº";
-               if (desc) return "¥â¥ó¥¹¥¿¡¼¤Î°À­¡¢»Ä¤êÂÎÎÏ¡¢ºÇÂçÂÎÎÏ¡¢¥¹¥Ô¡¼¥É¡¢ÀµÂΤòÃΤ롣";
-#else
-               if (name) return "Probing";
-               if (desc) return "Proves all monsters' alignment, HP, speed and their true character.";
-#endif
+       case 24:
+               if (name) return _("調査", "Probing");
+               if (desc) return _("モンスターの属性、残り体力、最大体力、スピード、正体を知る。",
+                       "Proves all monsters' alignment, HP, speed and their true character.");
     
                {
                        if (cast)
@@ -3258,14 +1988,10 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_EXPLOSIVE_RUNE: 
-#ifdef JP
-               if (name) return "Çúȯ¤Î¥ë¡¼¥ó";
-               if (desc) return "¼«Ê¬¤Î¤¤¤ë¾²¤Î¾å¤Ë¡¢¥â¥ó¥¹¥¿¡¼¤¬Ä̤ë¤ÈÇúȯ¤·¤Æ¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¥ë¡¼¥ó¤òÉÁ¤¯¡£";
-#else
-               if (name) return "Explosive Rune";
-               if (desc) return "Sets a glyph under you. The glyph will explode when a monster moves on it.";
-#endif
+       case 25:
+               if (name) return _("爆発のルーン", "Explosive Rune");
+               if (desc) return _("自分のいる床の上に、モンスターが通ると爆発してダメージを与えるルーンを描く。", 
+                       "Sets a glyph under you. The glyph will explode when a monster moves on it.");
     
                {
                        int dice = 7;
@@ -3281,14 +2007,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_TELEKINESIS: 
-#ifdef JP
-               if (name) return "Ç°Æ°ÎÏ";
-               if (desc) return "¥¢¥¤¥Æ¥à¤ò¼«Ê¬¤Î­¸µ¤Ø°ÜÆ°¤µ¤»¤ë¡£";
-#else
-               if (name) return "Telekinesis";
-               if (desc) return "Pulls a distant item close to you.";
-#endif
+       case 26:
+               if (name) return _("念動力", "Telekinesis");
+               if (desc) return _("アイテムを自分の足元へ移動させる。", "Pulls a distant item close to you.");
     
                {
                        int weight = plev * 15;
@@ -3304,14 +2025,10 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_CLAIRVOYANCE: 
-#ifdef JP
-               if (name) return "ÀéΤ´ã";
-               if (desc) return "¤½¤Î³¬Á´ÂΤò±Êµ×¤Ë¾È¤é¤·¡¢¥À¥ó¥¸¥ç¥óÆ⤹¤Ù¤Æ¤Î¥¢¥¤¥Æ¥à¤ò´¶ÃΤ¹¤ë¡£¤µ¤é¤Ë¡¢°ìÄê»þ´Ö¥Æ¥ì¥Ñ¥·¡¼Ç½ÎϤòÆÀ¤ë¡£";
-#else
-               if (name) return "Clairvoyance";
-               if (desc) return "Maps and lights whole dungeon level. Knows all objects location. And gives telepathy for a while.";
-#endif
+       case 27:
+               if (name) return _("千里眼", "Clairvoyance");
+               if (desc) return _("その階全体を永久に照らし、ダンジョン内すべてのアイテムを感知する。さらに、一定時間テレパシー能力を得る。",
+                       "Maps and lights whole dungeon level. Knows all objects location. And gives telepathy for a while.");
     
                {
                        int base = 25;
@@ -3334,14 +2051,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_CHARM_MONSTERS: 
-#ifdef JP
-               if (name) return "̥λ¤Î»ëÀþ";
-               if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò̥λ¤¹¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
-#else
-               if (name) return "Charm monsters";
-               if (desc) return "Attempts to charm all monsters in sight.";
-#endif
+       case 28:
+               if (name) return _("魅了の視線", "Charm monsters");
+               if (desc) return _("視界内の全てのモンスターを魅了する。抵抗されると無効。", "Attempts to charm all monsters in sight.");
     
                {
                        int power = plev * 2;
@@ -3355,14 +2067,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_ALCHEMY: 
-#ifdef JP
-               if (name) return "Ï£¶â½Ñ";
-               if (desc) return "¥¢¥¤¥Æ¥à1¤Ä¤ò¤ª¶â¤ËÊѤ¨¤ë¡£";
-#else
-               if (name) return "Alchemy";
-               if (desc) return "Turns an item into 1/3 of its value in gold.";
-#endif
+       case 29:
+               if (name) return _("錬金術", "Alchemy");
+               if (desc) return _("アイテム1つをお金に変える。", "Turns an item into 1/3 of its value in gold.");
     
                {
                        if (cast)
@@ -3372,14 +2079,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_BANISHMENT: 
-#ifdef JP
-               if (name) return "²øʪÄÉÊü";
-               if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò¥Æ¥ì¥Ý¡¼¥È¤µ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
-#else
-               if (name) return "Banishment";
-               if (desc) return "Teleports all monsters in sight away unless resisted.";
-#endif
+       case 30:
+               if (name) return _("怪物追放", "Banishment");
+               if (desc) return _("視界内の全てのモンスターをテレポートさせる。抵抗されると無効。", "Teleports all monsters in sight away unless resisted.");
     
                {
                        int power = plev * 4;
@@ -3393,14 +2095,10 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case SORC_SPEL_GLOBE_OF_INVULNERABILITY: 
-#ifdef JP
-               if (name) return "̵½ý¤Îµå";
-               if (desc) return "°ìÄê»þ´Ö¡¢¥À¥á¡¼¥¸¤ò¼õ¤±¤Ê¤¯¤Ê¤ë¥Ð¥ê¥¢¤òÄ¥¤ë¡£Àڤ줿½Ö´Ö¤Ë¾¯¤·¥¿¡¼¥ó¤ò¾ÃÈñ¤¹¤ë¤Î¤ÇÃí°Õ¡£";
-#else
-               if (name) return "Globe of Invulnerability";
-               if (desc) return "Generates barrier which completely protect you from almost all damages. Takes a few your turns when the barrier breaks or duration time is exceeded.";
-#endif
+       case 31:
+               if (name) return _("無傷の球", "Globe of Invulnerability");
+               if (desc) return _("一定時間、ダメージを受けなくなるバリアを張る。切れた瞬間に少しターンを消費するので注意。",
+                       "Generates barrier which completely protect you from almost all damages. Takes a few your turns when the barrier breaks or duration time is exceeded.");
     
                {
                        int base = 4;
@@ -3413,15 +2111,36 @@ cptr do_spell(int realm, int spell, int mode)
                        }
                }
                break;
+       }
 
-       case NATU_SPEL_DETECT_CREATURES: 
-#ifdef JP
-               if (name) return "¥â¥ó¥¹¥¿¡¼´¶ÃÎ";
-               if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î¸«¤¨¤ë¥â¥ó¥¹¥¿¡¼¤ò´¶ÃΤ¹¤ë¡£";
-#else
-               if (name) return "Detect Creatures";
-               if (desc) return "Detects all monsters in your vicinity unless invisible.";
-#endif
+       return "";
+}
+
+
+/*!
+ * @brief 自然領域魔法の各処理を行う
+ * @param spell 魔法ID
+ * @param mode 処理内容 (SPELL_NAME / SPELL_DESC / SPELL_INFO / SPELL_CAST)
+ * @return SPELL_NAME / SPELL_DESC / SPELL_INFO 時には文字列ポインタを返す。SPELL_CAST時はNULL文字列を返す。
+ */
+static cptr do_nature_spell(SPELL_IDX spell, BIT_FLAGS mode)
+{
+       bool name = (mode == SPELL_NAME) ? TRUE : FALSE;
+       bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;
+       bool info = (mode == SPELL_INFO) ? TRUE : FALSE;
+       bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;
+
+       static const char s_dam[] = _("損傷:", "dam ");
+       static const char s_rng[] = _("射程", "rng ");
+
+       int dir;
+       int plev = p_ptr->lev;
+
+       switch (spell)
+       {
+       case 0:
+               if (name) return _("モンスター感知", "Detect Creatures");
+               if (desc) return _("近くの全ての見えるモンスターを感知する。", "Detects all monsters in your vicinity unless invisible.");
     
                {
                        int rad = DETECT_RAD_DEFAULT;
@@ -3435,19 +2154,14 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_LIGHTNING: 
-#ifdef JP
-               if (name) return "°ðºÊ";
-               if (desc) return "ÅÅ·â¤Îû¤¤¥Ó¡¼¥à¤òÊü¤Ä¡£";
-#else
-               if (name) return "Lightning";
-               if (desc) return "Fires a short beam of lightning.";
-#endif
+       case 1:
+               if (name) return _("稲妻", "Lightning");
+               if (desc) return _("電撃の短いビームを放つ。", "Fires a short beam of lightning.");
     
                {
                        int dice = 3 + (plev - 1) / 5;
                        int sides = 4;
-                       int range = plev / 6 + 2;
+                       POSITION range = plev / 6 + 2;
 
                        if (info) return format("%s%dd%d %s%d", s_dam, dice, sides, s_rng, range);
 
@@ -3462,14 +2176,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_DETECT_DOORS_AND_TRAPS: 
-#ifdef JP
-               if (name) return "櫤ÈÈâ´¶ÃÎ";
-               if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î櫤ÈÈâ¤ò´¶ÃΤ¹¤ë¡£";
-#else
-               if (name) return "Detect Doors and Traps";
-               if (desc) return "Detects traps, doors, and stairs in your vicinity.";
-#endif
+       case 2:
+               if (name) return _("罠と扉感知", "Detect Doors and Traps");
+               if (desc) return _("近くの全ての罠と扉を感知する。", "Detects traps, doors, and stairs in your vicinity.");
     
                {
                        int rad = DETECT_RAD_DEFAULT;
@@ -3485,43 +2194,28 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_PRODUCE_FOOD: 
-#ifdef JP
-               if (name) return "¿©ÎÈÀ¸À®";
-               if (desc) return "ËþÊ¢¤Ë¤Ê¤ë¡£";
-#else
-               if (name) return "Produce Food";
-               if (desc) return "Satisfies hunger.";
-#endif
+       case 3:
+               if (name) return _("食糧生成", "Produce Food");
+               if (desc) return _("食料を一つ作り出す。", "Produces a Ration of Food.");
     
                {
                        if (cast)
                        {
                                object_type forge, *q_ptr = &forge;
-
-#ifdef JP
-                               msg_print("¿©ÎÁ¤òÀ¸À®¤·¤¿¡£");
-#else
-                               msg_print("A food ration is produced.");
-#endif
+                               msg_print(_("食料を生成した。", "A food ration is produced."));
 
                                /* Create the food ration */
                                object_prep(q_ptr, lookup_kind(TV_FOOD, SV_FOOD_RATION));
 
                                /* Drop the object from heaven */
-                               drop_near(q_ptr, -1, py, px);
+                               drop_near(q_ptr, -1, p_ptr->y, p_ptr->x);
                        }
                }
                break;
 
-       case NATU_SPEL_DAYLIGHT: 
-#ifdef JP
-               if (name) return "Æü¤Î¸÷";
-               if (desc) return "¸÷¸»¤¬¾È¤é¤·¤Æ¤¤¤ëÈϰϤ«Éô²°Á´ÂΤò±Êµ×¤ËÌÀ¤ë¤¯¤¹¤ë¡£";
-#else
-               if (name) return "Daylight";
-               if (desc) return "Lights up nearby area and the inside of a room permanently.";
-#endif
+       case 4:
+               if (name) return _("日の光", "Daylight");
+               if (desc) return _("光源が照らしている範囲か部屋全体を永久に明るくする。", "Lights up nearby area and the inside of a room permanently.");
     
                {
                        int dice = 2;
@@ -3536,30 +2230,16 @@ cptr do_spell(int realm, int spell, int mode)
 
                                if ((prace_is_(RACE_VAMPIRE) || (p_ptr->mimic_form == MIMIC_VAMPIRE)) && !p_ptr->resist_lite)
                                {
-#ifdef JP
-                                       msg_print("Æü¤Î¸÷¤¬¤¢¤Ê¤¿¤ÎÆùÂΤò¾Ç¤¬¤·¤¿¡ª");
-#else
-                                       msg_print("The daylight scorches your flesh!");
-#endif
-
-#ifdef JP
-                                       take_hit(DAMAGE_NOESCAPE, damroll(2, 2), "Æü¤Î¸÷", -1);
-#else
-                                       take_hit(DAMAGE_NOESCAPE, damroll(2, 2), "daylight", -1);
-#endif
+                                       msg_print(_("日の光があなたの肉体を焦がした!", "The daylight scorches your flesh!"));
+                                       take_hit(DAMAGE_NOESCAPE, damroll(2, 2), _("日の光", "daylight"), -1);
                                }
                        }
                }
                break;
 
-       case NATU_SPEL_ANIMAL_TAMING: 
-#ifdef JP
-               if (name) return "ưʪ½¬¤·";
-               if (desc) return "ưʪ1ÂΤò̥λ¤¹¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
-#else
-               if (name) return "Animal Taming";
-               if (desc) return "Attempts to charm an animal.";
-#endif
+       case 5:
+               if (name) return _("動物習し", "Animal Taming");
+               if (desc) return _("動物1体を魅了する。抵抗されると無効。", "Attempts to charm an animal.");
     
                {
                        int power = plev;
@@ -3575,14 +2255,10 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_RESIST_ENVIRONMENT: 
-#ifdef JP
-               if (name) return "´Ä¶­¤Ø¤ÎÂÑÀ­";
-               if (desc) return "°ìÄê»þ´Ö¡¢Î䵤¡¢±ê¡¢ÅÅ·â¤ËÂФ¹¤ëÂÑÀ­¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ­¤ËÎßÀѤ¹¤ë¡£";
-#else
-               if (name) return "Resist Environment";
-               if (desc) return "Gives resistance to fire, cold and electricity for a while. These resistances can be added to which from equipment for more powerful resistances.";
-#endif
+       case 6:
+               if (name) return _("環境への耐性", "Resist Environment");
+               if (desc) return _("一定時間、冷気、炎、電撃に対する耐性を得る。装備による耐性に累積する。",
+                       "Gives resistance to fire, cold and electricity for a while. These resistances can be added to which from equipment for more powerful resistances.");
     
                {
                        int base = 20;
@@ -3598,14 +2274,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_CURE_WOUNDS_AND_POISON: 
-#ifdef JP
-               if (name) return "½ý¤ÈÆǼ£ÎÅ";
-               if (desc) return "²ø²æ¤òÁ´²÷¤µ¤»¡¢ÆǤòÂΤ«¤é´°Á´¤Ë¼è¤ê½ü¤­¡¢ÂÎÎϤò¾¯¤·²óÉü¤µ¤»¤ë¡£";
-#else
-               if (name) return "Cure Wounds & Poison";
-               if (desc) return "Heals all cut and poison status. Heals HP a little.";
-#endif
+       case 7:
+               if (name) return _("傷と毒治療", "Cure Wounds & Poison");
+               if (desc) return _("怪我を全快させ、毒を体から完全に取り除き、体力を少し回復させる。", "Heals all cut and poison status. Heals HP a little.");
     
                {
                        int dice = 2;
@@ -3622,14 +2293,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_STONE_TO_MUD: 
-#ifdef JP
-               if (name) return "´äÀÐÍϲò";
-               if (desc) return "ÊɤòÍϤ«¤·¤Æ¾²¤Ë¤¹¤ë¡£";
-#else
-               if (name) return "Stone to Mud";
-               if (desc) return "Turns one rock square to mud.";
-#endif
+       case 8:
+               if (name) return _("岩石溶解", "Stone to Mud");
+               if (desc) return _("壁を溶かして床にする。", "Turns one rock square to mud.");
     
                {
                        int dice = 1;
@@ -3642,19 +2308,14 @@ cptr do_spell(int realm, int spell, int mode)
                        {
                                if (!get_aim_dir(&dir)) return NULL;
 
-                               wall_to_mud(dir);
+                               wall_to_mud(dir, 20 + randint1(30));
                        }
                }
                break;
 
-       case NATU_SPEL_FROST_BOLT: 
-#ifdef JP
-               if (name) return "¥¢¥¤¥¹¡¦¥Ü¥ë¥È";
-               if (desc) return "Î䵤¤Î¥Ü¥ë¥È¤â¤·¤¯¤Ï¥Ó¡¼¥à¤òÊü¤Ä¡£";
-#else
-               if (name) return "Frost Bolt";
-               if (desc) return "Fires a bolt or beam of cold.";
-#endif
+       case 9:
+               if (name) return _("アイス・ボルト", "Frost Bolt");
+               if (desc) return _("冷気のボルトもしくはビームを放つ。", "Fires a bolt or beam of cold.");
     
                {
                        int dice = 3 + (plev - 5) / 4;
@@ -3670,14 +2331,10 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_NATURE_AWARENESS: 
-#ifdef JP
-               if (name) return "¼«Á³¤Î³ÐÀÃ";
-               if (desc) return "¼þÊÕ¤ÎÃÏ·Á¤ò´¶ÃΤ·¡¢¶á¤¯¤Îæ«¡¢Èâ¡¢³¬ÃÊ¡¢Á´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò´¶ÃΤ¹¤ë¡£";
-#else
-               if (name) return "Nature Awareness";
-               if (desc) return "Maps nearby area. Detects all monsters, traps, doors and stairs.";
-#endif
+       case 10:
+               if (name) return _("自然の覚醒", "Nature Awareness");
+               if (desc) return _("周辺の地形を感知し、近くの罠、扉、階段、全てのモンスターを感知する。",
+                       "Maps nearby area. Detects all monsters, traps, doors and stairs.");
     
                {
                        int rad1 = DETECT_RAD_MAP;
@@ -3696,14 +2353,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_FIRE_BOLT: 
-#ifdef JP
-               if (name) return "¥Õ¥¡¥¤¥¢¡¦¥Ü¥ë¥È";
-               if (desc) return "²Ð±ê¤Î¥Ü¥ë¥È¤â¤·¤¯¤Ï¥Ó¡¼¥à¤òÊü¤Ä¡£";
-#else
-               if (name) return "Fire Bolt";
-               if (desc) return "Fires a bolt or beam of fire.";
-#endif
+       case 11:
+               if (name) return _("ファイア・ボルト", "Fire Bolt");
+               if (desc) return _("火炎のボルトもしくはビームを放つ。", "Fires a bolt or beam of fire.");
     
                {
                        int dice = 5 + (plev - 5) / 4;
@@ -3719,14 +2371,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_RAY_OF_SUNLIGHT: 
-#ifdef JP
-               if (name) return "ÂÀÍÛ¸÷Àþ";
-               if (desc) return "¸÷Àþ¤òÊü¤Ä¡£¸÷¤ê¤ò·ù¤¦¥â¥ó¥¹¥¿¡¼¤Ë¸ú²Ì¤¬¤¢¤ë¡£";
-#else
-               if (name) return "Ray of Sunlight";
-               if (desc) return "Fires a beam of light which damages to light-sensitive monsters.";
-#endif
+       case 12:
+               if (name) return _("太陽光線", "Ray of Sunlight");
+               if (desc) return _("光線を放つ。光りを嫌うモンスターに効果がある。", "Fires a beam of light which damages to light-sensitive monsters.");
     
                {
                        int dice = 6;
@@ -3737,25 +2384,15 @@ cptr do_spell(int realm, int spell, int mode)
                        if (cast)
                        {
                                if (!get_aim_dir(&dir)) return NULL;
-#ifdef JP
-                               msg_print("ÂÀÍÛ¸÷Àþ¤¬¸½¤ì¤¿¡£");
-#else
-                               msg_print("A line of sunlight appears.");
-#endif
-
-                               lite_line(dir);
+                               msg_print(_("太陽光線が現れた。", "A line of sunlight appears."));
+                               lite_line(dir, damroll(6, 8));
                        }
                }
                break;
 
-       case NATU_SPEL_ENTANGLE: 
-#ifdef JP
-               if (name) return "­¤«¤»";
-               if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò¸ºÂ®¤µ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
-#else
-               if (name) return "Entangle";
-               if (desc) return "Attempts to slow all monsters in sight.";
-#endif
+       case 13:
+               if (name) return _("足かせ", "Entangle");
+               if (desc) return _("視界内の全てのモンスターを減速させる。抵抗されると無効。", "Attempts to slow all monsters in sight.");
     
                {
                        int power = plev;
@@ -3764,44 +2401,30 @@ cptr do_spell(int realm, int spell, int mode)
 
                        if (cast)
                        {
-                               slow_monsters();
+                               slow_monsters(plev);
                        }
                }
                break;
 
-       case NATU_SPEL_SUMMON_ANIMAL: 
-#ifdef JP
-               if (name) return "ưʪ¾¤´­";
-               if (desc) return "ưʪ¤ò1Âξ¤´­¤¹¤ë¡£";
-#else
-               if (name) return "Summon Animal";
-               if (desc) return "Summons an animal.";
-#endif
+       case 14:
+               if (name) return _("動物召喚", "Summon Animal");
+               if (desc) return _("動物を1体召喚する。", "Summons an animal.");
     
                {
                        if (cast)
                        {
-                               if (!(summon_specific(-1, py, px, plev, SUMMON_ANIMAL_RANGER, (PM_ALLOW_GROUP | PM_FORCE_PET))))
+                               if (!(summon_specific(-1, p_ptr->y, p_ptr->x, plev, SUMMON_ANIMAL_RANGER, (PM_ALLOW_GROUP | PM_FORCE_PET))))
                                {
-#ifdef JP
-                                       msg_print("ưʪ¤Ï¸½¤ì¤Ê¤«¤Ã¤¿¡£");
-#else
-                                       msg_print("No animals arrive.");
-#endif
+                                       msg_print(_("動物は現れなかった。", "No animals arrive."));
                                }
                                break;
                        }
                }
                break;
 
-       case NATU_SPEL_HERBAL_HEALING: 
-#ifdef JP
-               if (name) return "ÌôÁð¼£ÎÅ";
-               if (desc) return "ÂÎÎϤòÂçÉý¤Ë²óÉü¤µ¤»¡¢Éé½ý¡¢Û¯Û°¾õÂÖ¡¢ÆǤ«¤éÁ´²÷¤¹¤ë¡£";
-#else
-               if (name) return "Herbal Healing";
-               if (desc) return "Heals HP greatly. And heals cut, stun and poison completely.";
-#endif
+       case 15:
+               if (name) return _("薬草治療", "Herbal Healing");
+               if (desc) return _("体力を大幅に回復させ、負傷、朦朧状態、毒から全快する。", "Heals HP greatly. And heals cut, stun and poison completely.");
     
                {
                        int heal = 500;
@@ -3818,14 +2441,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_STAIR_BUILDING: 
-#ifdef JP
-               if (name) return "³¬ÃÊÀ¸À®";
-               if (desc) return "¼«Ê¬¤Î¤¤¤ë°ÌÃ֤˳¬Ãʤòºî¤ë¡£";
-#else
-               if (name) return "Stair Building";
-               if (desc) return "Creates a stair which goes down or up.";
-#endif
+       case 16:
+               if (name) return _("階段生成", "Stair Building");
+               if (desc) return _("自分のいる位置に階段を作る。", "Creates a stair which goes down or up.");
     
                {
                        if (cast)
@@ -3835,14 +2453,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_STONE_SKIN: 
-#ifdef JP
-               if (name) return "È©Àв½";
-               if (desc) return "°ìÄê»þ´Ö¡¢AC¤ò¾å¾º¤µ¤»¤ë¡£";
-#else
-               if (name) return "Stone Skin";
-               if (desc) return "Gives bonus to AC for a while.";
-#endif
+       case 17:
+               if (name) return _("肌石化", "Stone Skin");
+               if (desc) return _("一定時間、ACを上昇させる。", "Gives bonus to AC for a while.");
     
                {
                        int base = 20;
@@ -3857,14 +2470,10 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_RESISTANCE_TRUE: 
-#ifdef JP
-               if (name) return "¿¿¡¦ÂÑÀ­";
-               if (desc) return "°ìÄê»þ´Ö¡¢»À¡¢ÅÅ·â¡¢±ê¡¢Î䵤¡¢ÆǤËÂФ¹¤ëÂÑÀ­¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ­¤ËÎßÀѤ¹¤ë¡£";
-#else
-               if (name) return "Resistance True";
-               if (desc) return "Gives resistance to fire, cold, electricity, acid and poison for a while. These resistances can be added to which from equipment for more powerful resistances.";
-#endif
+       case 18:
+               if (name) return _("真・耐性", "Resistance True");
+               if (desc) return _("一定時間、酸、電撃、炎、冷気、毒に対する耐性を得る。装備による耐性に累積する。", 
+                       "Gives resistance to fire, cold, electricity, acid and poison for a while. These resistances can be added to which from equipment for more powerful resistances.");
     
                {
                        int base = 20;
@@ -3882,14 +2491,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_FOREST_CREATION: 
-#ifdef JP
-               if (name) return "¿¹ÎÓÁϤ";
-               if (desc) return "¼þ°Ï¤ËÌÚ¤òºî¤ê½Ð¤¹¡£";
-#else
-               if (name) return "Forest Creation";
-               if (desc) return "Creates trees in all adjacent squares.";
-#endif
+       case 19:
+               if (name) return _("森林創造", "Forest Creation");
+               if (desc) return _("周囲に木を作り出す。", "Creates trees in all adjacent squares.");
     
                {
                        if (cast)
@@ -3899,14 +2503,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_ANIMAL_FRIENDSHIP: 
-#ifdef JP
-               if (name) return "ưʪͧÏÂ";
-               if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Îưʪ¤ò̥λ¤¹¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
-#else
-               if (name) return "Animal Friendship";
-               if (desc) return "Attempts to charm all animals in sight.";
-#endif
+       case 20:
+               if (name) return _("動物友和", "Animal Friendship");
+               if (desc) return _("視界内の全ての動物を魅了する。抵抗されると無効。", "Attempts to charm all animals in sight.");
     
                {
                        int power = plev * 2;
@@ -3920,14 +2519,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_STONE_TELL: 
-#ifdef JP
-               if (name) return "»î¶âÀÐ";
-               if (desc) return "¥¢¥¤¥Æ¥à¤Î»ý¤ÄǽÎϤò´°Á´¤ËÃΤ롣";
-#else
-               if (name) return "Stone Tell";
-               if (desc) return "*Identifies* an item.";
-#endif
+       case 21:
+               if (name) return _("試金石", "Stone Tell");
+               if (desc) return _("アイテムの持つ能力を完全に知る。", "*Identifies* an item.");
     
                {
                        if (cast)
@@ -3937,14 +2531,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_WALL_OF_STONE: 
-#ifdef JP
-               if (name) return "ÀФÎÊÉ";
-               if (desc) return "¼«Ê¬¤Î¼þ°Ï¤Ë²ÖÖ¾´ä¤ÎÊɤòºî¤ë¡£";
-#else
-               if (name) return "Wall of Stone";
-               if (desc) return "Creates granite walls in all adjacent squares.";
-#endif
+       case 22:
+               if (name) return _("石の壁", "Wall of Stone");
+               if (desc) return _("自分の周囲に花崗岩の壁を作る。", "Creates granite walls in all adjacent squares.");
     
                {
                        if (cast)
@@ -3954,14 +2543,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_PROTECT_FROM_CORROSION: 
-#ifdef JP
-               if (name) return "Éå¿©ËÉ»ß";
-               if (desc) return "¥¢¥¤¥Æ¥à¤ò»À¤Ç½ý¤Ä¤«¤Ê¤¤¤è¤¦²Ã¹©¤¹¤ë¡£";
-#else
-               if (name) return "Protect from Corrosion";
-               if (desc) return "Makes an equipment acid-proof.";
-#endif
+       case 23:
+               if (name) return _("腐食防止", "Protect from Corrosion");
+               if (desc) return _("アイテムを酸で傷つかないよう加工する。", "Makes an equipment acid-proof.");
     
                {
                        if (cast)
@@ -3971,14 +2555,10 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_EARTHQUAKE: 
-#ifdef JP
-               if (name) return "ÃÏ¿Ì";
-               if (desc) return "¼þ°Ï¤Î¥À¥ó¥¸¥ç¥ó¤òÍɤ餷¡¢ÊɤȾ²¤ò¥é¥ó¥À¥à¤ËÆþ¤ìÊѤ¨¤ë¡£";
-#else
-               if (name) return "Earthquake";
-               if (desc) return "Shakes dungeon structure, and results in random swapping of floors and walls.";
-#endif
+       case 24:
+               if (name) return _("地震", "Earthquake");
+               if (desc) return _("周囲のダンジョンを揺らし、壁と床をランダムに入れ変える。", 
+                       "Shakes dungeon structure, and results in random swapping of floors and walls.");
     
                {
                        int rad = 10;
@@ -3987,19 +2567,14 @@ cptr do_spell(int realm, int spell, int mode)
 
                        if (cast)
                        {
-                               earthquake(py, px, rad);
+                               earthquake(p_ptr->y, p_ptr->x, rad);
                        }
                }
                break;
 
-       case NATU_SPEL_CYCLONE: 
-#ifdef JP
-               if (name) return "¥«¥Þ¥¤¥¿¥Á";
-               if (desc) return "Á´Êý¸þ¤Ë¸þ¤«¤Ã¤Æ¹¶·â¤¹¤ë¡£";
-#else
-               if (name) return "Cyclone";
-               if (desc) return "Attacks all adjacent monsters.";
-#endif
+       case 25:
+               if (name) return _("カマイタチ", "Cyclone");
+               if (desc) return _("全方向に向かって攻撃する。", "Attacks all adjacent monsters.");
     
                {
                        if (cast)
@@ -4010,8 +2585,8 @@ cptr do_spell(int realm, int spell, int mode)
 
                                for (dir = 0; dir < 8; dir++)
                                {
-                                       y = py + ddy_ddd[dir];
-                                       x = px + ddx_ddd[dir];
+                                       y = p_ptr->y + ddy_ddd[dir];
+                                       x = p_ptr->x + ddx_ddd[dir];
                                        c_ptr = &cave[y][x];
 
                                        /* Get the monster */
@@ -4025,17 +2600,12 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_BLIZZARD: 
-#ifdef JP
-               if (name) return "¥Ö¥ê¥¶¡¼¥É";
-               if (desc) return "µðÂç¤ÊÎ䵤¤Îµå¤òÊü¤Ä¡£";
-#else
-               if (name) return "Blizzard";
-               if (desc) return "Fires a huge ball of cold.";
-#endif
+       case 26:
+               if (name) return _("ブリザード", "Blizzard");
+               if (desc) return _("巨大な冷気の球を放つ。", "Fires a huge ball of cold.");
     
                {
-                       int dam = 70 + plev * 3 / 2;
+                       HIT_POINT dam = 70 + plev * 3 / 2;
                        int rad = plev / 12 + 1;
 
                        if (info) return info_damage(0, 0, dam);
@@ -4049,17 +2619,12 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_LIGHTNING_STORM: 
-#ifdef JP
-               if (name) return "°ðºÊÍò";
-               if (desc) return "µðÂç¤ÊÅÅ·â¤Îµå¤òÊü¤Ä¡£";
-#else
-               if (name) return "Lightning Storm";
-               if (desc) return "Fires a huge electric ball.";
-#endif
+       case 27:
+               if (name) return _("稲妻嵐", "Lightning Storm");
+               if (desc) return _("巨大な電撃の球を放つ。", "Fires a huge electric ball.");
     
                {
-                       int dam = 90 + plev * 3 / 2;
+                       HIT_POINT dam = 90 + plev * 3 / 2;
                        int rad = plev / 12 + 1;
 
                        if (info) return info_damage(0, 0, dam);
@@ -4073,17 +2638,12 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_WHIRLPOOL: 
-#ifdef JP
-               if (name) return "±²Ä¬";
-               if (desc) return "µðÂç¤Ê¿å¤Îµå¤òÊü¤Ä¡£";
-#else
-               if (name) return "Whirlpool";
-               if (desc) return "Fires a huge ball of water.";
-#endif
+       case 28:
+               if (name) return _("渦潮", "Whirlpool");
+               if (desc) return _("巨大な水の球を放つ。", "Fires a huge ball of water.");
     
                {
-                       int dam = 100 + plev * 3 / 2;
+                       HIT_POINT dam = 100 + plev * 3 / 2;
                        int rad = plev / 12 + 1;
 
                        if (info) return info_damage(0, 0, dam);
@@ -4096,17 +2656,13 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_CALL_SUNLIGHT: 
-#ifdef JP
-               if (name) return "ÍÛ¸÷¾¤´­";
-               if (desc) return "¼«Ê¬¤òÃæ¿´¤È¤·¤¿¸÷¤Îµå¤òȯÀ¸¤µ¤»¤ë¡£¤µ¤é¤Ë¡¢¤½¤Î³¬Á´ÂΤò±Êµ×¤Ë¾È¤é¤·¡¢¥À¥ó¥¸¥ç¥óÆ⤹¤Ù¤Æ¤Î¥¢¥¤¥Æ¥à¤ò´¶ÃΤ¹¤ë¡£";
-#else
-               if (name) return "Call Sunlight";
-               if (desc) return "Generates ball of light centered on you. Maps and lights whole dungeon level. Knows all objects location.";
-#endif
+       case 29:
+               if (name) return _("陽光召喚", "Call Sunlight");
+               if (desc) return _("自分を中心とした光の球を発生させる。さらに、その階全体を永久に照らし、ダンジョン内すべてのアイテムを感知する。",
+                       "Generates ball of light centered on you. Maps and lights whole dungeon level. Knows all objects location.");
     
                {
-                       int dam = 150;
+                       HIT_POINT dam = 150;
                        int rad = 8;
 
                        if (info) return info_damage(0, 0, dam/2);
@@ -4120,30 +2676,16 @@ cptr do_spell(int realm, int spell, int mode)
 
                                if ((prace_is_(RACE_VAMPIRE) || (p_ptr->mimic_form == MIMIC_VAMPIRE)) && !p_ptr->resist_lite)
                                {
-#ifdef JP
-                                       msg_print("Æü¸÷¤¬¤¢¤Ê¤¿¤ÎÆùÂΤò¾Ç¤¬¤·¤¿¡ª");
-#else
-                                       msg_print("The sunlight scorches your flesh!");
-#endif
-
-#ifdef JP
-                                       take_hit(DAMAGE_NOESCAPE, 50, "Æü¸÷", -1);
-#else
-                                       take_hit(DAMAGE_NOESCAPE, 50, "sunlight", -1);
-#endif
+                                       msg_print(_("日光があなたの肉体を焦がした!", "The sunlight scorches your flesh!"));
+                                       take_hit(DAMAGE_NOESCAPE, 50, _("日光", "sunlight"), -1);
                                }
                        }
                }
                break;
 
-       case NATU_SPEL_ELEMENTAL_BRANDING: 
-#ifdef JP
-               if (name) return "ÀºÎî¤Î¿Ï";
-               if (desc) return "Éð´ï¤Ë±ê¤«Î䵤¤Î°À­¤ò¤Ä¤±¤ë¡£";
-#else
-               if (name) return "Elemental Branding";
-               if (desc) return "Makes current weapon fire or frost branded.";
-#endif
+       case 30:
+               if (name) return _("精霊の刃", "Elemental Branding");
+               if (desc) return _("武器に炎か冷気の属性をつける。", "Makes current weapon fire or frost branded.");
     
                {
                        if (cast)
@@ -4153,14 +2695,10 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case NATU_SPEL_NATURES_WRATH: 
-#ifdef JP
-               if (name) return "¼«Á³¤Î¶¼°Ò";
-               if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤Ë¥À¥á¡¼¥¸¤òÍ¿¤¨¡¢ÃϿ̤òµ¯¤³¤·¡¢¼«Ê¬¤òÃæ¿´¤È¤·¤¿Ê¬²ò¤Îµå¤òȯÀ¸¤µ¤»¤ë¡£";
-#else
-               if (name) return "Nature's Wrath";
-               if (desc) return "Damages all monsters in sight. Makes quake. Generates disintegration ball centered on you.";
-#endif
+       case 31:
+               if (name) return _("自然の脅威", "Nature's Wrath");
+               if (desc) return _("近くの全てのモンスターにダメージを与え、地震を起こし、自分を中心とした分解の球を発生させる。", 
+                       "Damages all monsters in sight. Makes quake. Generates disintegration ball centered on you.");
     
                {
                        int d_dam = 4 * plev;
@@ -4173,20 +2711,41 @@ cptr do_spell(int realm, int spell, int mode)
                        if (cast)
                        {
                                dispel_monsters(d_dam);
-                               earthquake(py, px, q_rad);
-                               project(0, b_rad, py, px, b_dam, GF_DISINTEGRATE, PROJECT_KILL | PROJECT_ITEM, -1);
+                               earthquake(p_ptr->y, p_ptr->x, q_rad);
+                               project(0, b_rad, p_ptr->y, p_ptr->x, b_dam, GF_DISINTEGRATE, PROJECT_KILL | PROJECT_ITEM, -1);
                        }
                }
                break;
+       }
 
-       case CHAO_SPEL_MAGIC_MISSILE: 
-#ifdef JP
-               if (name) return "¥Þ¥¸¥Ã¥¯¡¦¥ß¥µ¥¤¥ë";
-               if (desc) return "¼å¤¤ËâË¡¤ÎÌð¤òÊü¤Ä¡£";
-#else
-               if (name) return "Magic Missile";
-               if (desc) return "Fires a weak bolt of magic.";
-#endif
+       return "";
+}
+
+
+/*!
+ * @brief カオス領域魔法の各処理を行う
+ * @param spell 魔法ID
+ * @param mode 処理内容 (SPELL_NAME / SPELL_DESC / SPELL_INFO / SPELL_CAST)
+ * @return SPELL_NAME / SPELL_DESC / SPELL_INFO 時には文字列ポインタを返す。SPELL_CAST時はNULL文字列を返す。
+ */
+static cptr do_chaos_spell(SPELL_IDX spell, BIT_FLAGS mode)
+{
+       bool name = (mode == SPELL_NAME) ? TRUE : FALSE;
+       bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;
+       bool info = (mode == SPELL_INFO) ? TRUE : FALSE;
+       bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;
+
+       static const char s_dam[] = _("損傷:", "dam ");
+       static const char s_random[] = _("ランダム", "random");
+
+       int dir;
+       int plev = p_ptr->lev;
+
+       switch (spell)
+       {
+       case 0:
+               if (name) return _("マジック・ミサイル", "Magic Missile");
+               if (desc) return _("弱い魔法の矢を放つ。", "Fires a weak bolt of magic.");
     
                {
                        int dice = 3 + ((plev - 1) / 5);
@@ -4203,14 +2762,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_TRAP_DOOR_DESTRUCTION: 
-#ifdef JP
-               if (name) return "¥È¥é¥Ã¥×/¥É¥¢Ç˲õ";
-               if (desc) return "ÎÙÀܤ¹¤ë櫤ÈÈâ¤òÇ˲õ¤¹¤ë¡£";
-#else
-               if (name) return "Trap / Door Destruction";
-               if (desc) return "Destroys all traps in adjacent squares.";
-#endif
+       case 1:
+               if (name) return _("トラップ/ドア破壊", "Trap / Door Destruction");
+               if (desc) return _("隣接する罠と扉を破壊する。", "Destroys all traps in adjacent squares.");
     
                {
                        int rad = 1;
@@ -4224,14 +2778,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_FLASH_OF_LIGHT: 
-#ifdef JP
-               if (name) return "Á®¸÷";
-               if (desc) return "¸÷¸»¤¬¾È¤é¤·¤Æ¤¤¤ëÈϰϤ«Éô²°Á´ÂΤò±Êµ×¤ËÌÀ¤ë¤¯¤¹¤ë¡£";
-#else
-               if (name) return "Flash of Light";
-               if (desc) return "Lights up nearby area and the inside of a room permanently.";
-#endif
+       case 2:
+               if (name) return _("閃光", "Flash of Light");
+               if (desc) return _("光源が照らしている範囲か部屋全体を永久に明るくする。", "Lights up nearby area and the inside of a room permanently.");
     
                {
                        int dice = 2;
@@ -4247,26 +2796,16 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_TOUCH_OF_CONFUSION: 
-#ifdef JP
-               if (name) return "º®Íð¤Î¼ê";
-               if (desc) return "Áê¼ê¤òº®Í𤵤»¤ë¹¶·â¤ò¤Ç¤­¤ë¤è¤¦¤Ë¤¹¤ë¡£";
-#else
-               if (name) return "Touch of Confusion";
-               if (desc) return "Attempts to confuse the next monster that you hit.";
-#endif
+       case 3:
+               if (name) return _("混乱の手", "Touch of Confusion");
+               if (desc) return _("相手を混乱させる攻撃をできるようにする。", "Attempts to confuse the next monster that you hit.");
     
                {
                        if (cast)
                        {
                                if (!(p_ptr->special_attack & ATTACK_CONFUSE))
                                {
-#ifdef JP
-                                       msg_print("¤¢¤Ê¤¿¤Î¼ê¤Ï¸÷¤ê»Ï¤á¤¿¡£");
-#else
-                                       msg_print("Your hands start glowing.");
-#endif
-
+                                       msg_print(_("あなたの手は光り始めた。", "Your hands start glowing."));
                                        p_ptr->special_attack |= ATTACK_CONFUSE;
                                        p_ptr->redraw |= (PR_STATUS);
                                }
@@ -4274,14 +2813,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_MANA_BURST:
-#ifdef JP
-               if (name) return "ËâÎÏßÚÎö";
-               if (desc) return "ËâË¡¤Îµå¤òÊü¤Ä¡£";
-#else
-               if (name) return "Mana Burst";
-               if (desc) return "Fires a ball of magic.";
-#endif
+       case 4:
+               if (name) return _("魔力炸裂", "Mana Burst");
+               if (desc) return _("魔法の球を放つ。", "Fires a ball of magic.");
     
                {
                        int dice = 3;
@@ -4314,14 +2848,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_FIRE_BOLT:
-#ifdef JP
-               if (name) return "¥Õ¥¡¥¤¥¢¡¦¥Ü¥ë¥È";
-               if (desc) return "±ê¤Î¥Ü¥ë¥È¤â¤·¤¯¤Ï¥Ó¡¼¥à¤òÊü¤Ä¡£";
-#else
-               if (name) return "Fire Bolt";
-               if (desc) return "Fires a bolt or beam of fire.";
-#endif
+       case 5:
+               if (name) return _("ファイア・ボルト", "Fire Bolt");
+               if (desc) return _("炎のボルトもしくはビームを放つ。", "Fires a bolt or beam of fire.");
     
                {
                        int dice = 8 + (plev - 5) / 4;
@@ -4338,14 +2867,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_FIST_OF_FORCE:
-#ifdef JP
-               if (name) return "ÎϤηý";
-               if (desc) return "¤´¤¯¾®¤µ¤Êʬ²ò¤Îµå¤òÊü¤Ä¡£";
-#else
-               if (name) return "Fist of Force";
-               if (desc) return "Fires a tiny ball of disintegration.";
-#endif
+       case 6:
+               if (name) return _("力の拳", "Fist of Force");
+               if (desc) return _("ごく小さな分解の球を放つ。", "Fires a tiny ball of disintegration.");
     
                {
                        int dice = 8 + ((plev - 5) / 4);
@@ -4363,35 +2887,25 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_TELEPORT_SELF:
-#ifdef JP
-               if (name) return "¥Æ¥ì¥Ý¡¼¥È";
-               if (desc) return "±óµ÷Î¥¤Î¥Æ¥ì¥Ý¡¼¥È¤ò¤¹¤ë¡£";
-#else
-               if (name) return "Teleport Self";
-               if (desc) return "Teleport long distance.";
-#endif
+       case 7:
+               if (name) return _("テレポート", "Teleport Self");
+               if (desc) return _("遠距離のテレポートをする。", "Teleport long distance.");
     
                {
-                       int range = plev * 5;
+                       POSITION range = plev * 5;
 
                        if (info) return info_range(range);
 
                        if (cast)
                        {
-                               teleport_player(range, FALSE);
+                               teleport_player(range, 0L);
                        }
                }
                break;
 
-       case CHAO_SPEL_WONDER:
-#ifdef JP
-               if (name) return "¥ï¥ó¥À¡¼";
-               if (desc) return "¥â¥ó¥¹¥¿¡¼¤Ë¥é¥ó¥À¥à¤Ê¸ú²Ì¤òÍ¿¤¨¤ë¡£";
-#else
-               if (name) return "Wonder";
-               if (desc) return "Fires something with random effects.";
-#endif
+       case 8:
+               if (name) return _("ワンダー", "Wonder");
+               if (desc) return _("モンスターにランダムな効果を与える。", "Fires something with random effects.");
     
                {
                        if (info) return s_random;
@@ -4406,14 +2920,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_CHAOS_BOLT:
-#ifdef JP
-               if (name) return "¥«¥ª¥¹¡¦¥Ü¥ë¥È";
-               if (desc) return "¥«¥ª¥¹¤Î¥Ü¥ë¥È¤â¤·¤¯¤Ï¥Ó¡¼¥à¤òÊü¤Ä¡£";
-#else
-               if (name) return "Chaos Bolt";
-               if (desc) return "Fires a bolt or ball of chaos.";
-#endif
+       case 9:
+               if (name) return _("カオス・ボルト", "Chaos Bolt");
+               if (desc) return _("カオスのボルトもしくはビームを放つ。", "Fires a bolt or ball of chaos.");
     
                {
                        int dice = 10 + (plev - 5) / 4;
@@ -4430,42 +2939,27 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_SONIC_BOOM:
-#ifdef JP
-               if (name) return "¥½¥Ë¥Ã¥¯¡¦¥Ö¡¼¥à";
-               if (desc) return "¼«Ê¬¤òÃæ¿´¤È¤·¤¿¹ì²»¤Îµå¤òȯÀ¸¤µ¤»¤ë¡£";
-#else
-               if (name) return "Sonic Boom";
-               if (desc) return "Generates a ball of sound centered on you.";
-#endif
+       case 10:
+               if (name) return _("ソニック・ブーム", "Sonic Boom");
+               if (desc) return _("自分を中心とした轟音の球を発生させる。", "Generates a ball of sound centered on you.");
     
                {
-                       int dam = 60 + plev;
+                       HIT_POINT dam = 60 + plev;
                        int rad = plev / 10 + 2;
 
                        if (info) return info_damage(0, 0, dam/2);
 
                        if (cast)
                        {
-#ifdef JP
-                               msg_print("¥É¡¼¥ó¡ªÉô²°¤¬Íɤ줿¡ª");
-#else
-                               msg_print("BOOM! Shake the room!");
-#endif
-
-                               project(0, rad, py, px, dam, GF_SOUND, PROJECT_KILL | PROJECT_ITEM, -1);
+                               msg_print(_("ドーン!部屋が揺れた!", "BOOM! Shake the room!"));
+                               project(0, rad, p_ptr->y, p_ptr->x, dam, GF_SOUND, PROJECT_KILL | PROJECT_ITEM, -1);
                        }
                }
                break;
 
-       case CHAO_SPEL_DOOM_BOLT:
-#ifdef JP
-               if (name) return "ÇËÌǤÎÌð";
-               if (desc) return "½ã¿è¤ÊËâÎϤΥӡ¼¥à¤òÊü¤Ä¡£";
-#else
-               if (name) return "Doom Bolt";
-               if (desc) return "Fires a beam of pure mana.";
-#endif
+       case 11:
+               if (name) return _("破滅の矢", "Doom Bolt");
+               if (desc) return _("純粋な魔力のビームを放つ。", "Fires a beam of pure mana.");
     
                {
                        int dice = 11 + (plev - 5) / 4;
@@ -4482,17 +2976,12 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_FIRE_BALL:
-#ifdef JP
-               if (name) return "¥Õ¥¡¥¤¥¢¡¦¥Ü¡¼¥ë";
-               if (desc) return "±ê¤Îµå¤òÊü¤Ä¡£";
-#else
-               if (name) return "Fire Ball";
-               if (desc) return "Fires a ball of fire.";
-#endif
+       case 12:
+               if (name) return _("ファイア・ボール", "Fire Ball");
+               if (desc) return _("炎の球を放つ。", "Fires a ball of fire.");
     
                {
-                       int dam = plev + 55;
+                       HIT_POINT dam = plev + 55;
                        int rad = 2;
 
                        if (info) return info_damage(0, 0, dam);
@@ -4506,14 +2995,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_TELEPORT_OTHER:
-#ifdef JP
-               if (name) return "¥Æ¥ì¥Ý¡¼¥È¡¦¥¢¥¦¥§¥¤";
-               if (desc) return "¥â¥ó¥¹¥¿¡¼¤ò¥Æ¥ì¥Ý¡¼¥È¤µ¤»¤ë¥Ó¡¼¥à¤òÊü¤Ä¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
-#else
-               if (name) return "Teleport Other";
-               if (desc) return "Teleports all monsters on the line away unless resisted.";
-#endif
+       case 13:
+               if (name) return _("テレポート・アウェイ", "Teleport Other");
+               if (desc) return _("モンスターをテレポートさせるビームを放つ。抵抗されると無効。", "Teleports all monsters on the line away unless resisted.");
     
                {
                        int power = plev;
@@ -4529,14 +3013,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_WORD_OF_DESTRUCTION:
-#ifdef JP
-               if (name) return "Ç˲õ¤Î¸ÀÍÕ";
-               if (desc) return "¼þÊդΥ¢¥¤¥Æ¥à¡¢¥â¥ó¥¹¥¿¡¼¡¢ÃÏ·Á¤òÇ˲õ¤¹¤ë¡£";
-#else
-               if (name) return "Word of Destruction";
-               if (desc) return "Destroy everything in nearby area.";
-#endif
+       case 14:
+               if (name) return _("破壊の言葉", "Word of Destruction");
+               if (desc) return _("周辺のアイテム、モンスター、地形を破壊する。", "Destroy everything in nearby area.");
     
                {
                        int base = 12;
@@ -4544,22 +3023,17 @@ cptr do_spell(int realm, int spell, int mode)
 
                        if (cast)
                        {
-                               destroy_area(py, px, base + randint1(sides), FALSE);
+                               destroy_area(p_ptr->y, p_ptr->x, base + randint1(sides), FALSE);
                        }
                }
                break;
 
-       case CHAO_SPEL_INVOKE_LOGRUS:
-#ifdef JP
-               if (name) return "¥í¥°¥ë¥¹È¯Æ°";
-               if (desc) return "µðÂç¤Ê¥«¥ª¥¹¤Îµå¤òÊü¤Ä¡£";
-#else
-               if (name) return "Invoke Logrus";
-               if (desc) return "Fires a huge ball of chaos.";
-#endif
+       case 15:
+               if (name) return _("ログルス発動", "Invoke Logrus");
+               if (desc) return _("巨大なカオスの球を放つ。", "Fires a huge ball of chaos.");
     
                {
-                       int dam = plev * 2 + 99;
+                       HIT_POINT dam = plev * 2 + 99;
                        int rad = plev / 5;
 
                        if (info) return info_damage(0, 0, dam);
@@ -4573,14 +3047,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_POLYMORPH_OTHER:
-#ifdef JP
-               if (name) return "¾¼ÔÊÑÍÆ";
-               if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤòÊѿȤµ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
-#else
-               if (name) return "Polymorph Other";
-               if (desc) return "Attempts to polymorph a monster.";
-#endif
+       case 16:
+               if (name) return _("他者変容", "Polymorph Other");
+               if (desc) return _("モンスター1体を変身させる。抵抗されると無効。", "Attempts to polymorph a monster.");
     
                {
                        int power = plev;
@@ -4591,19 +3060,14 @@ cptr do_spell(int realm, int spell, int mode)
                        {
                                if (!get_aim_dir(&dir)) return NULL;
 
-                               poly_monster(dir);
+                               poly_monster(dir, plev);
                        }
                }
                break;
 
-       case CHAO_SPEL_CHAIN_LIGHTNING:
-#ifdef JP
-               if (name) return "Ï¢º¿°ðºÊ";
-               if (desc) return "Á´Êý¸þ¤ËÂФ·¤ÆÅÅ·â¤Î¥Ó¡¼¥à¤òÊü¤Ä¡£";
-#else
-               if (name) return "Chain Lightning";
-               if (desc) return "Fires lightning beams in all directions.";
-#endif
+       case 17:
+               if (name) return _("連鎖稲妻", "Chain Lightning");
+               if (desc) return _("全方向に対して電撃のビームを放つ。", "Fires lightning beams in all directions.");
     
                {
                        int dice = 5 + plev / 10;
@@ -4619,14 +3083,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_ARCANE_BINDING:
-#ifdef JP
-               if (name) return "ËâÎÏÉõÆþ";
-               if (desc) return "¾ó/ËâË¡ËÀ¤Î½¼Å¶²ó¿ô¤òÁý¤ä¤¹¤«¡¢½¼Å¶Ãæ¤Î¥í¥Ã¥É¤Î½¼Å¶»þ´Ö¤ò¸º¤é¤¹¡£";
-#else
-               if (name) return "Arcane Binding";
-               if (desc) return "Recharges staffs, wands or rods.";
-#endif
+       case 18:
+               if (name) return _("魔力封入", "Arcane Binding");
+               if (desc) return _("杖/魔法棒の充填回数を増やすか、充填中のロッドの充填時間を減らす。", "Recharges staffs, wands or rods.");
     
                {
                        int power = 90;
@@ -4640,17 +3099,12 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_DISINTEGRATE:
-#ifdef JP
-               if (name) return "¸¶»Òʬ²ò";
-               if (desc) return "µðÂç¤Êʬ²ò¤Îµå¤òÊü¤Ä¡£";
-#else
-               if (name) return "Disintegrate";
-               if (desc) return "Fires a huge ball of disintegration.";
-#endif
+       case 19:
+               if (name) return _("原子分解", "Disintegrate");
+               if (desc) return _("巨大な分解の球を放つ。", "Fires a huge ball of disintegration.");
     
                {
-                       int dam = plev + 70;
+                       HIT_POINT dam = plev + 70;
                        int rad = 3 + plev / 40;
 
                        if (info) return info_damage(0, 0, dam);
@@ -4664,14 +3118,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_ALTER_REALITY:
-#ifdef JP
-               if (name) return "¸½¼ÂÊÑÍÆ";
-               if (desc) return "¸½ºß¤Î³¬¤òºÆ¹½À®¤¹¤ë¡£";
-#else
-               if (name) return "Alter Reality";
-               if (desc) return "Recreates current dungeon level.";
-#endif
+       case 20:
+               if (name) return _("現実変容", "Alter Reality");
+               if (desc) return _("現在の階を再構成する。", "Recreates current dungeon level.");
     
                {
                        int base = 15;
@@ -4686,17 +3135,12 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_MAGIC_ROCKET:
-#ifdef JP
-               if (name) return "¥Þ¥¸¥Ã¥¯¡¦¥í¥±¥Ã¥È";
-               if (desc) return "¥í¥±¥Ã¥È¤òȯ¼Í¤¹¤ë¡£";
-#else
-               if (name) return "Magic Rocket";
-               if (desc) return "Fires a magic rocket.";
-#endif
+       case 21:
+               if (name) return _("マジック・ロケット", "Magic Rocket");
+               if (desc) return _("ロケットを発射する。", "Fires a magic rocket.");
     
                {
-                       int dam = 120 + plev * 2;
+                       HIT_POINT dam = 120 + plev * 2;
                        int rad = 2;
 
                        if (info) return info_damage(0, 0, dam);
@@ -4705,25 +3149,15 @@ cptr do_spell(int realm, int spell, int mode)
                        {
                                if (!get_aim_dir(&dir)) return NULL;
 
-#ifdef JP
-                               msg_print("¥í¥±¥Ã¥Èȯ¼Í¡ª");
-#else
-                               msg_print("You launch a rocket!");
-#endif
-
+                               msg_print(_("ロケット発射!", "You launch a rocket!"));
                                fire_rocket(GF_ROCKET, dir, dam, rad);
                        }
                }
                break;
 
-       case CHAO_SPEL_CHAOS_BRANDING:
-#ifdef JP
-               if (name) return "º®Æ٤οÏ";
-               if (desc) return "Éð´ï¤Ë¥«¥ª¥¹¤Î°À­¤ò¤Ä¤±¤ë¡£";
-#else
-               if (name) return "Chaos Branding";
-               if (desc) return "Makes current weapon a Chaotic weapon.";
-#endif
+       case 22:
+               if (name) return _("混沌の刃", "Chaos Branding");
+               if (desc) return _("武器にカオスの属性をつける。", "Makes current weapon a Chaotic weapon.");
     
                {
                        if (cast)
@@ -4733,62 +3167,40 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_SUMMON_DEMON:
-#ifdef JP
-               if (name) return "°­Ë⾤´­";
-               if (desc) return "°­Ëâ¤ò1Âξ¤´­¤¹¤ë¡£";
-#else
-               if (name) return "Summon Demon";
-               if (desc) return "Summons a demon.";
-#endif
+       case 23:
+               if (name) return _("悪魔召喚", "Summon Demon");
+               if (desc) return _("悪魔を1体召喚する。", "Summons a demon.");
     
                {
                        if (cast)
                        {
-                               u32b mode = 0L;
+                               u32b flg = 0L;
                                bool pet = !one_in_(3);
 
-                               if (pet) mode |= PM_FORCE_PET;
-                               else mode |= PM_NO_PET;
-                               if (!(pet && (plev < 50))) mode |= PM_ALLOW_GROUP;
+                               if (pet) flg |= PM_FORCE_PET;
+                               else flg |= PM_NO_PET;
+                               if (!(pet && (plev < 50))) flg |= PM_ALLOW_GROUP;
 
-                               if (summon_specific((pet ? -1 : 0), py, px, (plev * 3) / 2, SUMMON_DEMON, mode))
+                               if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, (plev * 3) / 2, SUMMON_DEMON, flg))
                                {
-#ifdef JP
-                                       msg_print("ⲫ¤Î°­½­¤¬½¼Ëþ¤·¤¿¡£");
-#else
-                                       msg_print("The area fills with a stench of sulphur and brimstone.");
-#endif
-
+                                       msg_print(_("硫黄の悪臭が充満した。", "The area fills with a stench of sulphur and brimstone."));
                                        if (pet)
                                        {
-#ifdef JP
-                                               msg_print("¡Ö¤´ÍѤǤ´¤¶¤¤¤Þ¤¹¤«¡¢¤´¼ç¿ÍÍÍ¡×");
-#else
-                                               msg_print("'What is thy bidding... Master?'");
-#endif
+                                               msg_print(_("「ご用でございますか、ご主人様」", "'What is thy bidding... Master?'"));
                                        }
                                        else
                                        {
-#ifdef JP
-                                               msg_print("¡ÖÈܤ·¤­¼Ô¤è¡¢²æ¤ÏÆò¤Î²¼Ëͤˤ¢¤é¤º¡ª ¤ªÁ°¤Îº²¤òĺ¤¯¤¾¡ª¡×");
-#else
-                                               msg_print("'NON SERVIAM! Wretch! I shall feast on thy mortal soul!'");
-#endif
+                                               msg_print(_("「卑しき者よ、我は汝の下僕にあらず! お前の魂を頂くぞ!」",
+                                                                       "'NON SERVIAM! Wretch! I shall feast on thy mortal soul!'"));
                                        }
                                }
                        }
                }
                break;
 
-       case CHAO_SPEL_BEAM_OF_GRAVITY:
-#ifdef JP
-               if (name) return "½ÅÎϸ÷Àþ";
-               if (desc) return "½ÅÎϤΥӡ¼¥à¤òÊü¤Ä¡£";
-#else
-               if (name) return "Beam of Gravity";
-               if (desc) return "Fires a beam of gravity.";
-#endif
+       case 24:
+               if (name) return _("重力光線", "Beam of Gravity");
+               if (desc) return _("重力のビームを放つ。", "Fires a beam of gravity.");
     
                {
                        int dice = 9 + (plev - 5) / 4;
@@ -4805,17 +3217,12 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_METEOR_SWARM:
-#ifdef JP
-               if (name) return "ήÀ±·²";
-               if (desc) return "¼«Ê¬¤Î¼þÊÕ¤Ëð¨ÀФòÍî¤È¤¹¡£";
-#else
-               if (name) return "Meteor Swarm";
-               if (desc) return "Makes meteor balls fall down to nearby random locations.";
-#endif
+       case 25:
+               if (name) return _("流星群", "Meteor Swarm");
+               if (desc) return _("自分の周辺に隕石を落とす。", "Makes meteor balls fall down to nearby random locations.");
     
                {
-                       int dam = plev * 2;
+                       HIT_POINT dam = plev * 2;
                        int rad = 2;
 
                        if (info) return info_multi_damage(dam);
@@ -4827,17 +3234,12 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_FLAME_STRIKE:
-#ifdef JP
-               if (name) return "±ë¤Î°ì·â";
-               if (desc) return "¼«Ê¬¤òÃæ¿´¤È¤·¤¿Ä¶µðÂç¤Ê±ê¤Îµå¤òȯÀ¸¤µ¤»¤ë¡£";
-#else
-               if (name) return "Flame Strike";
-               if (desc) return "Generate a huge ball of fire centered on you.";
-#endif
+       case 26:
+               if (name) return _("焔の一撃", "Flame Strike");
+               if (desc) return _("自分を中心とした超巨大な炎の球を発生させる。", "Generate a huge ball of fire centered on you.");
     
                {
-                       int dam = 300 + 3 * plev;
+                       HIT_POINT dam = 300 + 3 * plev;
                        int rad = 8;
 
                        if (info) return info_damage(0, 0, dam/2);
@@ -4849,14 +3251,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_CALL_CHAOS:
-#ifdef JP
-               if (name) return "º®ÆÙ¾¤Íè";
-               if (desc) return "¥é¥ó¥À¥à¤Ê°À­¤Îµå¤ä¥Ó¡¼¥à¤òȯÀ¸¤µ¤»¤ë¡£";
-#else
-               if (name) return "Call Chaos";
-               if (desc) return "Generate random kind of balls or beams.";
-#endif
+       case 27:
+               if (name) return _("混沌召来", "Call Chaos");
+               if (desc) return _("ランダムな属性の球やビームを発生させる。", "Generate random kind of balls or beams.");
     
                {
                        if (info) return format("%s150 / 250", s_dam);
@@ -4868,39 +3265,25 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_POLYMORPH_SELF:
-#ifdef JP
-               if (name) return "¼«¸ÊÊÑÍÆ";
-               if (desc) return "¼«Ê¬¤òÊѿȤµ¤»¤è¤¦¤È¤¹¤ë¡£";
-#else
-               if (name) return "Polymorph Self";
-               if (desc) return "Polymorphs yourself.";
-#endif
+       case 28:
+               if (name) return _("自己変容", "Polymorph Self");
+               if (desc) return _("自分を変身させようとする。", "Polymorphs yourself.");
     
                {
                        if (cast)
                        {
-#ifdef JP
-                               if (!get_check("ÊѿȤ·¤Þ¤¹¡£¤è¤í¤·¤¤¤Ç¤¹¤«¡©")) return NULL;
-#else
-                               if (!get_check("You will polymorph yourself. Are you sure? ")) return NULL;
-#endif
+                               if (!get_check(_("変身します。よろしいですか?", "You will polymorph yourself. Are you sure? "))) return NULL;
                                do_poly_self();
                        }
                }
                break;
 
-       case CHAO_SPEL_MANA_STORM:
-#ifdef JP
-               if (name) return "ËâÎϤÎÍò";
-               if (desc) return "Èó¾ï¤Ë¶¯ÎϤǵðÂç¤Ê½ã¿è¤ÊËâÎϤεå¤òÊü¤Ä¡£";
-#else
-               if (name) return "Mana Storm";
-               if (desc) return "Fires an extremely powerful huge ball of pure mana.";
-#endif
+       case 29:
+               if (name) return _("魔力の嵐", "Mana Storm");
+               if (desc) return _("非常に強力で巨大な純粋な魔力の球を放つ。", "Fires an extremely powerful huge ball of pure mana.");
     
                {
-                       int dam = 300 + plev * 4;
+                       HIT_POINT dam = 300 + plev * 4;
                        int rad = 4;
 
                        if (info) return info_damage(0, 0, dam);
@@ -4914,17 +3297,12 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_BREATHE_LOGRUS:
-#ifdef JP
-               if (name) return "¥í¥°¥ë¥¹¤Î¥Ö¥ì¥¹";
-               if (desc) return "Èó¾ï¤Ë¶¯ÎϤʥ«¥ª¥¹¤Îµå¤òÊü¤Ä¡£";
-#else
-               if (name) return "Breathe Logrus";
-               if (desc) return "Fires an extremely powerful ball of chaos.";
-#endif
+       case 30:
+               if (name) return _("ログルスのブレス", "Breathe Logrus");
+               if (desc) return _("非常に強力なカオスの球を放つ。", "Fires an extremely powerful ball of chaos.");
     
                {
-                       int dam = p_ptr->chp;
+                       HIT_POINT dam = p_ptr->chp;
                        int rad = 2;
 
                        if (info) return info_damage(0, 0, dam);
@@ -4938,14 +3316,10 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CHAO_SPEL_CALL_THE_VOID:
-#ifdef JP
-               if (name) return "µõ̵¾¤Íè";
-               if (desc) return "¼«Ê¬¤Ë¼þ°Ï¤Ë¸þ¤«¤Ã¤Æ¡¢¥í¥±¥Ã¥È¡¢½ã¿è¤ÊËâÎϤε塢Êü¼ÍÀ­ÇÑ´þʪ¤Îµå¤òÊü¤Ä¡£¤¿¤À¤·¡¢ÊɤËÎÙÀܤ·¤Æ»ÈÍѤ¹¤ë¤È¹­ÈϰϤòÇ˲õ¤¹¤ë¡£";
-#else
-               if (name) return "Call the Void";
-               if (desc) return "Fires rockets, mana balls and nuclear waste balls in all directions each unless you are not adjacent to any walls. Otherwise *destroys* huge area.";
-#endif
+       case 31:
+               if (name) return _("虚無召来", "Call the Void");
+               if (desc) return _("自分に周囲に向かって、ロケット、純粋な魔力の球、放射性廃棄物の球を放つ。ただし、壁に隣接して使用すると広範囲を破壊する。", 
+                       "Fires rockets, mana balls and nuclear waste balls in all directions each unless you are not adjacent to any walls. Otherwise *destroys* huge area.");
     
                {
                        if (info) return format("%s3 * 175", s_dam);
@@ -4956,15 +3330,35 @@ cptr do_spell(int realm, int spell, int mode)
                        }
                }
                break;
+       }
 
-       case DEAT_SPEL_DETECT_UNLIFE:
-#ifdef JP
-               if (name) return "̵À¸Ì¿´¶ÃÎ";
-               if (desc) return "¶á¤¯¤ÎÀ¸Ì¿¤Î¤Ê¤¤¥â¥ó¥¹¥¿¡¼¤ò´¶ÃΤ¹¤ë¡£";
-#else
-               if (name) return "Detect Unlife";
-               if (desc) return "Detects all nonliving monsters in your vicinity.";
-#endif
+       return "";
+}
+
+/*!
+ * @brief 暗黒領域魔法の各処理を行う
+ * @param spell 魔法ID
+ * @param mode 処理内容 (SPELL_NAME / SPELL_DESC / SPELL_INFO / SPELL_CAST)
+ * @return SPELL_NAME / SPELL_DESC / SPELL_INFO 時には文字列ポインタを返す。SPELL_CAST時はNULL文字列を返す。
+ */
+static cptr do_death_spell(SPELL_IDX spell, BIT_FLAGS mode)
+{
+       bool name = (mode == SPELL_NAME) ? TRUE : FALSE;
+       bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;
+       bool info = (mode == SPELL_INFO) ? TRUE : FALSE;
+       bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;
+
+       static const char s_dam[] = _("損傷:", "dam ");
+       static const char s_random[] = _("ランダム", "random");
+
+       int dir;
+       int plev = p_ptr->lev;
+
+       switch (spell)
+       {
+       case 0:
+               if (name) return _("無生命感知", "Detect Unlife");
+               if (desc) return _("近くの生命のないモンスターを感知する。", "Detects all nonliving monsters in your vicinity.");
     
                {
                        int rad = DETECT_RAD_DEFAULT;
@@ -4978,14 +3372,10 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_MALEDICTION:
-#ifdef JP
-               if (name) return "¼ö»¦ÃÆ";
-               if (desc) return "¤´¤¯¾®¤µ¤Ê¼Ù°­¤ÊÎϤò»ý¤Ä¥Ü¡¼¥ë¤òÊü¤Ä¡£Á±Îɤʥâ¥ó¥¹¥¿¡¼¤Ë¤ÏÂ礭¤Ê¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
-#else
-               if (name) return "Malediction";
-               if (desc) return "Fires a tiny ball of evil power which hurts good monsters greatly.";
-#endif
+       case 1:
+               if (name) return _("呪殺弾", "Malediction");
+               if (desc) return _("ごく小さな邪悪な力を持つボールを放つ。善良なモンスターには大きなダメージを与える。", 
+                       "Fires a tiny ball of evil power which hurts good monsters greatly.");
     
                {
                        int dice = 3 + (plev - 1) / 5;
@@ -5026,14 +3416,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_DETECT_EVIL:
-#ifdef JP
-               if (name) return "¼Ù°­´¶ÃÎ";
-               if (desc) return "¶á¤¯¤Î¼Ù°­¤Ê¥â¥ó¥¹¥¿¡¼¤ò´¶ÃΤ¹¤ë¡£";
-#else
-               if (name) return "Detect Evil";
-               if (desc) return "Detects all evil monsters in your vicinity.";
-#endif
+       case 2:
+               if (name) return _("邪悪感知", "Detect Evil");
+               if (desc) return _("近くの邪悪なモンスターを感知する。", "Detects all evil monsters in your vicinity.");
     
                {
                        int rad = DETECT_RAD_DEFAULT;
@@ -5047,17 +3432,12 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_STINKING_CLOUD:
-#ifdef JP
-               if (name) return "°­½­±À";
-               if (desc) return "ÆǤεå¤òÊü¤Ä¡£";
-#else
-               if (name) return "Stinking Cloud";
-               if (desc) return "Fires a ball of poison.";
-#endif
+       case 3:
+               if (name) return _("悪臭雲", "Stinking Cloud");
+               if (desc) return _("毒の球を放つ。", "Fires a ball of poison.");
     
                {
-                       int dam = 10 + plev / 2;
+                       HIT_POINT dam = 10 + plev / 2;
                        int rad = 2;
 
                        if (info) return info_damage(0, 0, dam);
@@ -5071,14 +3451,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_BLACK_SLEEP:
-#ifdef JP
-               if (name) return "¹õ¤¤Ì²¤ê";
-               if (desc) return "1ÂΤΥâ¥ó¥¹¥¿¡¼¤ò̲¤é¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
-#else
-               if (name) return "Black Sleep";
-               if (desc) return "Attempts to sleep a monster.";
-#endif
+       case 4:
+               if (name) return _("黒い眠り", "Black Sleep");
+               if (desc) return _("1体のモンスターを眠らせる。抵抗されると無効。", "Attempts to sleep a monster.");
     
                {
                        int power = plev;
@@ -5089,19 +3464,15 @@ cptr do_spell(int realm, int spell, int mode)
                        {
                                if (!get_aim_dir(&dir)) return NULL;
 
-                               sleep_monster(dir);
+                               sleep_monster(dir, plev);
                        }
                }
                break;
 
-       case DEAT_SPEL_RESIST_POISON:
-#ifdef JP
-               if (name) return "ÂÑÆÇ";
-               if (desc) return "°ìÄê»þ´Ö¡¢ÆǤؤÎÂÑÀ­¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ­¤ËÎßÀѤ¹¤ë¡£";
-#else
-               if (name) return "Resist Poison";
-               if (desc) return "Gives resistance to poison. This resistance can be added to which from equipment for more powerful resistance.";
-#endif
+       case 5:
+               if (name) return _("耐毒", "Resist Poison");
+               if (desc) return _("一定時間、毒への耐性を得る。装備による耐性に累積する。", 
+                       "Gives resistance to poison. This resistance can be added to which from equipment for more powerful resistance.");
     
                {
                        int base = 20;
@@ -5115,14 +3486,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_HORRIFY:
-#ifdef JP
-               if (name) return "¶²¹²";
-               if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤò¶²Éݤµ¤»¡¢Û¯Û°¤µ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
-#else
-               if (name) return "Horrify";
-               if (desc) return "Attempts to scare and stun a monster.";
-#endif
+       case 6:
+               if (name) return _("恐慌", "Horrify");
+               if (desc) return _("モンスター1体を恐怖させ、朦朧させる。抵抗されると無効。", "Attempts to scare and stun a monster.");
     
                {
                        int power = plev;
@@ -5139,14 +3505,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_ENSLAVE_UNDEAD:
-#ifdef JP
-               if (name) return "¥¢¥ó¥Ç¥Ã¥É½¾Â°";
-               if (desc) return "¥¢¥ó¥Ç¥Ã¥É1ÂΤò̥λ¤¹¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
-#else
-               if (name) return "Enslave Undead";
-               if (desc) return "Attempts to charm an undead monster.";
-#endif
+       case 7:
+               if (name) return _("アンデッド従属", "Enslave Undead");
+               if (desc) return _("アンデッド1体を魅了する。抵抗されると無効。", "Attempts to charm an undead monster.");
     
                {
                        int power = plev;
@@ -5162,14 +3523,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_ORB_OF_ENTROPY:
-#ifdef JP
-               if (name) return "¥¨¥ó¥È¥í¥Ô¡¼¤Îµå";
-               if (desc) return "À¸Ì¿¤Î¤¢¤ë¼Ô¤Ë¸ú²Ì¤Î¤¢¤ëµå¤òÊü¤Ä¡£";
-#else
-               if (name) return "Orb of Entropy";
-               if (desc) return "Fires a ball which damages living monsters.";
-#endif
+       case 8:
+               if (name) return _("エントロピーの球", "Orb of Entropy");
+               if (desc) return _("生命のある者に効果のある球を放つ。", "Fires a ball which damages living monsters.");
     
                {
                        int dice = 3;
@@ -5191,19 +3547,14 @@ cptr do_spell(int realm, int spell, int mode)
                        {
                                if (!get_aim_dir(&dir)) return NULL;
 
-                               fire_ball(GF_OLD_DRAIN, dir, damroll(dice, dice) + base, rad);
+                               fire_ball(GF_OLD_DRAIN, dir, damroll(dice, sides) + base, rad);
                        }
                }
                break;
 
-       case DEAT_SPEL_NETHER_BOLT:
-#ifdef JP
-               if (name) return "ÃϹö¤ÎÌð";
-               if (desc) return "ÃϹö¤Î¥Ü¥ë¥È¤â¤·¤¯¤Ï¥Ó¡¼¥à¤òÊü¤Ä¡£";
-#else
-               if (name) return "Nether Bolt";
-               if (desc) return "Fires a bolt or beam of nether.";
-#endif
+       case 9:
+               if (name) return _("地獄の矢", "Nether Bolt");
+               if (desc) return _("地獄のボルトもしくはビームを放つ。", "Fires a bolt or beam of nether.");
     
                {
                        int dice = 8 + (plev - 5) / 4;
@@ -5220,36 +3571,26 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_CLOUD_KILL:
-#ifdef JP
-               if (name) return "»¦Ù¤±À";
-               if (desc) return "¼«Ê¬¤òÃæ¿´¤È¤·¤¿ÆǤεå¤òȯÀ¸¤µ¤»¤ë¡£";
-#else
-               if (name) return "Cloud kill";
-               if (desc) return "Generate a ball of poison centered on you.";
-#endif
+       case 10:
+               if (name) return _("殺戮雲", "Cloud kill");
+               if (desc) return _("自分を中心とした毒の球を発生させる。", "Generate a ball of poison centered on you.");
     
                {
-                       int dam = (30 + plev) * 2;
+                       HIT_POINT dam = (30 + plev) * 2;
                        int rad = plev / 10 + 2;
 
                        if (info) return info_damage(0, 0, dam/2);
 
                        if (cast)
                        {
-                               project(0, rad, py, px, dam, GF_POIS, PROJECT_KILL | PROJECT_ITEM, -1);
+                               project(0, rad, p_ptr->y, p_ptr->x, dam, GF_POIS, PROJECT_KILL | PROJECT_ITEM, -1);
                        }
                }
                break;
 
-       case DEAT_SPEL_GENOCIDE_ONE:
-#ifdef JP
-               if (name) return "¥â¥ó¥¹¥¿¡¼¾ÃÌÇ";
-               if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤò¾Ã¤·µî¤ë¡£·Ð¸³Ãͤ䥢¥¤¥Æ¥à¤Ï¼ê¤ËÆþ¤é¤Ê¤¤¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
-#else
-               if (name) return "Genocide One";
-               if (desc) return "Attempts to vanish a monster.";
-#endif
+       case 11:
+               if (name) return _("モンスター消滅", "Genocide One");
+               if (desc) return _("モンスター1体を消し去る。経験値やアイテムは手に入らない。抵抗されると無効。", "Attempts to vanish a monster.");
     
                {
                        int power = plev + 50;
@@ -5265,14 +3606,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_POISON_BRANDING:
-#ifdef JP
-               if (name) return "ÆǤοÏ";
-               if (desc) return "Éð´ï¤ËÆǤΰÀ­¤ò¤Ä¤±¤ë¡£";
-#else
-               if (name) return "Poison Branding";
-               if (desc) return "Makes current weapon poison branded.";
-#endif
+       case 12:
+               if (name) return _("毒の刃", "Poison Branding");
+               if (desc) return _("武器に毒の属性をつける。", "Makes current weapon poison branded.");
     
                {
                        if (cast)
@@ -5282,14 +3618,10 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_VAMPIRIC_DRAIN:
-#ifdef JP
-               if (name) return "µÛ·ì¥É¥ì¥¤¥ó";
-               if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤ«¤éÀ¸Ì¿ÎϤòµÛ¤¤¤È¤ë¡£µÛ¤¤¤È¤Ã¤¿À¸Ì¿ÎϤˤè¤Ã¤ÆËþÊ¢ÅÙ¤¬¾å¤¬¤ë¡£";
-#else
-               if (name) return "Vampiric Drain";
-               if (desc) return "Absorbs some HP from a monster and gives them to you. You will also gain nutritional sustenance from this.";
-#endif
+       case 13:
+               if (name) return _("吸血ドレイン", "Vampiric Drain");
+               if (desc) return _("モンスター1体から生命力を吸いとる。吸いとった生命力によって満腹度が上がる。", 
+                       "Absorbs some HP from a monster and gives them to you. You will also gain nutritional sustenance from this.");
     
                {
                        int dice = 1;
@@ -5300,7 +3632,7 @@ cptr do_spell(int realm, int spell, int mode)
 
                        if (cast)
                        {
-                               int dam = base + damroll(dice, sides);
+                               HIT_POINT dam = base + damroll(dice, sides);
 
                                if (!get_aim_dir(&dir)) return NULL;
 
@@ -5332,31 +3664,22 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_ANIMATE_DEAD:
-#ifdef JP
-               if (name) return "È¿º²¤Î½Ñ";
-               if (desc) return "¼þ°Ï¤Î»àÂΤä¹ü¤òÀ¸¤­ÊÖ¤¹¡£";
-#else
-               if (name) return "Animate dead";
-               if (desc) return "Resurrects nearby corpse and skeletons. And makes these your pets.";
-#endif
+       case 14:
+               if (name) return _("反魂の術", "Animate dead");
+               if (desc) return _("周囲の死体や骨を生き返す。", "Resurrects nearby corpse and skeletons. And makes these your pets.");
     
                {
                        if (cast)
                        {
-                               animate_dead(0, py, px);
+                               animate_dead(0, p_ptr->y, p_ptr->x);
                        }
                }
                break;
 
-       case DEAT_SPEL_GENOCIDE:
-#ifdef JP
-               if (name) return "Ëõ»¦";
-               if (desc) return "»ØÄꤷ¤¿Ê¸»ú¤Î¥â¥ó¥¹¥¿¡¼¤ò¸½ºß¤Î³¬¤«¤é¾Ã¤·µî¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
-#else
-               if (name) return "Genocide";
-               if (desc) return "Eliminates an entire class of monster, exhausting you.  Powerful or unique monsters may resist.";
-#endif
+       case 15:
+               if (name) return _("抹殺", "Genocide");
+               if (desc) return _("指定した文字のモンスターを現在の階から消し去る。抵抗されると無効。", 
+                       "Eliminates an entire class of monster, exhausting you.  Powerful or unique monsters may resist.");
     
                {
                        int power = plev+50;
@@ -5370,14 +3693,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_BERSERK:
-#ifdef JP
-               if (name) return "¶¸Àï»Î²½";
-               if (desc) return "¶¸Àï»Î²½¤·¡¢¶²Éݤò½üµî¤¹¤ë¡£";
-#else
-               if (name) return "Berserk";
-               if (desc) return "Gives bonus to hit and HP, immunity to fear for a while. But decreases AC.";
-#endif
+       case 16:
+               if (name) return _("狂戦士化", "Berserk");
+               if (desc) return _("狂戦士化し、恐怖を除去する。", "Gives bonus to hit and HP, immunity to fear for a while. But decreases AC.");
     
                {
                        int base = 25;
@@ -5393,14 +3711,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_INVOKE_SPIRITS:
-#ifdef JP
-               if (name) return "°­Î´­";
-               if (desc) return "¥é¥ó¥À¥à¤ÇÍÍ¡¹¤Ê¸ú²Ì¤¬µ¯¤³¤ë¡£";
-#else
-               if (name) return "Invoke Spirits";
-               if (desc) return "Causes random effects.";
-#endif
+       case 17:
+               if (name) return _("悪霊召喚", "Invoke Spirits");
+               if (desc) return _("ランダムで様々な効果が起こる。", "Causes random effects.");
     
                {
                        if (info) return s_random;
@@ -5414,14 +3727,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_DARK_BOLT:
-#ifdef JP
-               if (name) return "°Å¹õ¤ÎÌð";
-               if (desc) return "°Å¹õ¤Î¥Ü¥ë¥È¤â¤·¤¯¤Ï¥Ó¡¼¥à¤òÊü¤Ä¡£";
-#else
-               if (name) return "Dark Bolt";
-               if (desc) return "Fires a bolt or beam of darkness.";
-#endif
+       case 18:
+               if (name) return _("暗黒の矢", "Dark Bolt");
+               if (desc) return _("暗黒のボルトもしくはビームを放つ。", "Fires a bolt or beam of darkness.");
     
                {
                        int dice = 4 + (plev - 5) / 4;
@@ -5438,14 +3746,10 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_BATTLE_FRENZY:
-#ifdef JP
-               if (name) return "¶¸ÍðÀï»Î";
-               if (desc) return "¶¸Àï»Î²½¤·¡¢¶²Éݤò½üµî¤·¡¢²Ã®¤¹¤ë¡£";
-#else
-               if (name) return "Battle Frenzy";
-               if (desc) return "Gives another bonus to hit and HP, immunity to fear for a while. Hastes you. But decreases AC.";
-#endif
+       case 19:
+               if (name) return _("狂乱戦士", "Battle Frenzy");
+               if (desc) return _("狂戦士化し、恐怖を除去し、加速する。", 
+                       "Gives another bonus to hit and HP, immunity to fear for a while. Hastes you. But decreases AC.");
     
                {
                        int b_base = 25;
@@ -5464,14 +3768,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_VAMPIRIC_BRANDING:
-#ifdef JP
-               if (name) return "µÛ·ì¤Î¿Ï";
-               if (desc) return "Éð´ï¤ËµÛ·ì¤Î°À­¤ò¤Ä¤±¤ë¡£";
-#else
-               if (name) return "Vampiric Branding";
-               if (desc) return "Makes current weapon Vampiric.";
-#endif
+       case 20:
+               if (name) return _("吸血の刃", "Vampiric Branding");
+               if (desc) return _("武器に吸血の属性をつける。", "Makes current weapon Vampiric.");
     
                {
                        if (cast)
@@ -5481,17 +3780,13 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_VAMPIRISM_TRUE:
-#ifdef JP
-               if (name) return "¿¿¡¦µÛ·ì";
-               if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤ«¤éÀ¸Ì¿ÎϤòµÛ¤¤¤È¤ë¡£µÛ¤¤¤È¤Ã¤¿À¸Ì¿ÎϤˤè¤Ã¤ÆÂÎÎϤ¬²óÉü¤¹¤ë¡£";
-#else
-               if (name) return "Vampirism True";
-               if (desc) return "Fires 3 bolts. Each of the bolts absorbs some HP from a monster and gives them to you.";
-#endif
+       case 21:
+               if (name) return _("真・吸血", "Vampirism True");
+               if (desc) return _("モンスター1体から生命力を吸いとる。吸いとった生命力によって体力が回復する。", 
+                       "Fires 3 bolts. Each of the bolts absorbs some HP from a monster and gives them to you.");
     
                {
-                       int dam = 100;
+                       HIT_POINT dam = 100;
 
                        if (info) return format("%s3*%d", s_dam, dam);
 
@@ -5513,14 +3808,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_NETHER_WAVE:
-#ifdef JP
-               if (name) return "»à¤Î¸Àº²";
-               if (desc) return "»ë³¦Æâ¤ÎÀ¸Ì¿¤Î¤¢¤ë¥â¥ó¥¹¥¿¡¼¤Ë¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
-#else
-               if (name) return "Nether Wave";
-               if (desc) return "Damages all living monsters in sight.";
-#endif
+       case 22:
+               if (name) return _("死の言魂", "Nether Wave");
+               if (desc) return _("視界内の生命のあるモンスターにダメージを与える。", "Damages all living monsters in sight.");
     
                {
                        int sides = plev * 3;
@@ -5534,17 +3824,12 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_DARKNESS_STORM:
-#ifdef JP
-               if (name) return "°Å¹õ¤ÎÍò";
-               if (desc) return "µðÂç¤Ê°Å¹õ¤Îµå¤òÊü¤Ä¡£";
-#else
-               if (name) return "Darkness Storm";
-               if (desc) return "Fires a huge ball of darkness.";
-#endif
+       case 23:
+               if (name) return _("暗黒の嵐", "Darkness Storm");
+               if (desc) return _("巨大な暗黒の球を放つ。", "Fires a huge ball of darkness.");
     
                {
-                       int dam = 100 + plev * 2;
+                       HIT_POINT dam = 100 + plev * 2;
                        int rad = 4;
 
                        if (info) return info_damage(0, 0, dam);
@@ -5558,14 +3843,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_DEATH_RAY:
-#ifdef JP
-               if (name) return "»à¤Î¸÷Àþ";
-               if (desc) return "»à¤Î¸÷Àþ¤òÊü¤Ä¡£";
-#else
-               if (name) return "Death Ray";
-               if (desc) return "Fires a beam of death.";
-#endif
+       case 24:
+               if (name) return _("死の光線", "Death Ray");
+               if (desc) return _("死の光線を放つ。", "Fires a beam of death.");
     
                {
                        if (cast)
@@ -5577,54 +3857,40 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_RAISE_THE_DEAD:
-#ifdef JP
-               if (name) return "»à¼Ô¾¤´­";
-               if (desc) return "1ÂΤΥ¢¥ó¥Ç¥Ã¥É¤ò¾¤´­¤¹¤ë¡£";
-#else
-               if (name) return "Raise the Dead";
-               if (desc) return "Summons an undead monster.";
-#endif
+       case 25:
+               if (name) return _("死者召喚", "Raise the Dead");
+               if (desc) return _("1体のアンデッドを召喚する。", "Summons an undead monster.");
     
                {
                        if (cast)
                        {
                                int type;
                                bool pet = one_in_(3);
-                               u32b mode = 0L;
+                               u32b flg = 0L;
 
                                type = (plev > 47 ? SUMMON_HI_UNDEAD : SUMMON_UNDEAD);
 
                                if (!pet || (pet && (plev > 24) && one_in_(3)))
-                                       mode |= PM_ALLOW_GROUP;
+                                       flg |= PM_ALLOW_GROUP;
 
-                               if (pet) mode |= PM_FORCE_PET;
-                               else mode |= (PM_ALLOW_UNIQUE | PM_NO_PET);
+                               if (pet) flg |= PM_FORCE_PET;
+                               else flg |= (PM_ALLOW_UNIQUE | PM_NO_PET);
 
-                               if (summon_specific((pet ? -1 : 0), py, px, (plev * 3) / 2, type, mode))
+                               if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, (plev * 3) / 2, type, flg))
                                {
-#ifdef JP
-                                       msg_print("Î䤿¤¤É÷¤¬¤¢¤Ê¤¿¤Î¼þ¤ê¤Ë¿á¤­»Ï¤á¤¿¡£¤½¤ì¤ÏÉåÇÔ½­¤ò±¿¤ó¤Ç¤¤¤ë...");
-#else
-                                       msg_print("Cold winds begin to blow around you, carrying with them the stench of decay...");
-#endif
+                                       msg_print(_("冷たい風があなたの周りに吹き始めた。それは腐敗臭を運んでいる...",
+                                                               "Cold winds begin to blow around you, carrying with them the stench of decay..."));
 
 
                                        if (pet)
                                        {
-#ifdef JP
-                                               msg_print("¸Å¤¨¤Î»à¤»¤ë¼Ô¶¦¤¬¤¢¤Ê¤¿¤Ë»Å¤¨¤ë¤¿¤áÅÚ¤«¤éᴤä¿¡ª");
-#else
-                                               msg_print("Ancient, long-dead forms arise from the ground to serve you!");
-#endif
+                                               msg_print(_("古えの死せる者共があなたに仕えるため土から甦った!",
+                                                                       "Ancient, long-dead forms arise from the ground to serve you!"));
                                        }
                                        else
                                        {
-#ifdef JP
-                                               msg_print("»à¼Ô¤¬á´¤Ã¤¿¡£Ì²¤ê¤ò˸¤²¤ë¤¢¤Ê¤¿¤òȳ¤¹¤ë¤¿¤á¤Ë¡ª");
-#else
-                                               msg_print("'The dead arise... to punish you for disturbing them!'");
-#endif
+                                               msg_print(_("死者が甦った。眠りを妨げるあなたを罰するために!",
+                                                                       "'The dead arise... to punish you for disturbing them!'"));
                                        }
 
                                        chg_virtue(V_UNLIFE, 1);
@@ -5633,14 +3899,10 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_ESOTERIA:
-#ifdef JP
-               if (name) return "»à¼Ô¤ÎÈëÅÁ";
-               if (desc) return "¥¢¥¤¥Æ¥à¤ò1¤Ä¼±Ê̤¹¤ë¡£¥ì¥Ù¥ë¤¬¹â¤¤¤È¥¢¥¤¥Æ¥à¤ÎǽÎϤò´°Á´¤ËÃΤ뤳¤È¤¬¤Ç¤­¤ë¡£";
-#else
-               if (name) return "Esoteria";
-               if (desc) return "Identifies an item. Or *identifies* an item at higher level.";
-#endif
+       case 26:
+               if (name) return _("死者の秘伝", "Esoteria");
+               if (desc) return _("アイテムを1つ識別する。レベルが高いとアイテムの能力を完全に知ることができる。",
+                       "Identifies an item. Or *identifies* an item at higher level.");
     
                {
                        if (cast)
@@ -5657,14 +3919,10 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_POLYMORPH_VAMPIRE:
-#ifdef JP
-               if (name) return "µÛ·ìµ´ÊѲ½";
-               if (desc) return "°ìÄê»þ´Ö¡¢µÛ·ìµ´¤ËÊѲ½¤¹¤ë¡£ÊѲ½¤·¤Æ¤¤¤ë´Ö¤ÏËÜÍè¤Î¼ï²¤ÎǽÎϤò¼º¤¤¡¢Âå¤ï¤ê¤ËµÛ·ìµ´¤È¤·¤Æ¤ÎǽÎϤòÆÀ¤ë¡£";
-#else
-               if (name) return "Polymorph Vampire";
-               if (desc) return "Mimic a vampire for a while. Loses abilities of original race and gets abilities as a vampire.";
-#endif
+       case 27:
+               if (name) return _("吸血鬼変化", "Polymorph Vampire");
+               if (desc) return _("一定時間、吸血鬼に変化する。変化している間は本来の種族の能力を失い、代わりに吸血鬼としての能力を得る。", 
+                       "Mimic a vampire for a while. Loses abilities of original race and gets abilities as a vampire.");
     
                {
                        int base = 10 + plev / 2;
@@ -5678,14 +3936,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_RESTORE_LIFE:
-#ifdef JP
-               if (name) return "À¸Ì¿ÎÏÉü³è";
-               if (desc) return "¼º¤Ã¤¿·Ð¸³Ãͤò²óÉü¤¹¤ë¡£";
-#else
-               if (name) return "Restore Life";
-               if (desc) return "Restore lost experience.";
-#endif
+       case 28:
+               if (name) return _("経験値復活", "Restore Life");
+               if (desc) return _("失った経験値を回復する。", "Restore lost experience.");
     
                {
                        if (cast)
@@ -5695,14 +3948,10 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_MASS_GENOCIDE:
-#ifdef JP
-               if (name) return "¼þÊÕËõ»¦";
-               if (desc) return "¼«Ê¬¤Î¼þ°Ï¤Ë¤¤¤ë¥â¥ó¥¹¥¿¡¼¤ò¸½ºß¤Î³¬¤«¤é¾Ã¤·µî¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
-#else
-               if (name) return "Mass Genocide";
-               if (desc) return "Eliminates all nearby monsters, exhausting you.  Powerful or unique monsters may be able to resist.";
-#endif
+       case 29:
+               if (name) return _("周辺抹殺", "Mass Genocide");
+               if (desc) return _("自分の周囲にいるモンスターを現在の階から消し去る。抵抗されると無効。", 
+                       "Eliminates all nearby monsters, exhausting you.  Powerful or unique monsters may be able to resist.");
     
                {
                        int power = plev + 50;
@@ -5716,17 +3965,13 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DEAT_SPEL_HELLFIRE:
-#ifdef JP
-               if (name) return "ÃϹö¤Î¹å²Ð";
-               if (desc) return "¼Ù°­¤ÊÎϤò»ý¤ÄÊõ¼î¤òÊü¤Ä¡£Á±Îɤʥâ¥ó¥¹¥¿¡¼¤Ë¤ÏÂ礭¤Ê¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
-#else
-               if (name) return "Hellfire";
-               if (desc) return "Fires a powerful ball of evil power. Hurts good monsters greatly.";
-#endif
+       case 30:
+               if (name) return _("地獄の劫火", "Hellfire");
+               if (desc) return _("邪悪な力を持つ宝珠を放つ。善良なモンスターには大きなダメージを与える。", 
+                       "Fires a powerful ball of evil power. Hurts good monsters greatly.");
     
                {
-                       int dam = 666;
+                       HIT_POINT dam = 666;
                        int rad = 3;
 
                        if (info) return info_damage(0, 0, dam);
@@ -5736,23 +3981,15 @@ cptr do_spell(int realm, int spell, int mode)
                                if (!get_aim_dir(&dir)) return NULL;
 
                                fire_ball(GF_HELL_FIRE, dir, dam, rad);
-#ifdef JP
-                               take_hit(DAMAGE_USELIFE, 20 + randint1(30), "ÃϹö¤Î¹å²Ð¤Î¼öʸ¤ò¾§¤¨¤¿ÈèÏ«", -1);
-#else
-                               take_hit(DAMAGE_USELIFE, 20 + randint1(30), "the strain of casting Hellfire", -1);
-#endif
+                               take_hit(DAMAGE_USELIFE, 20 + randint1(30), _("地獄の劫火の呪文を唱えた疲労", "the strain of casting Hellfire"), -1);
                        }
                }
                break;
 
-       case DEAT_SPEL_WRAITHFORM:
-#ifdef JP
-               if (name) return "Í©Âβ½";
-               if (desc) return "°ìÄê»þ´Ö¡¢ÊɤòÄ̤êÈ´¤±¤ë¤³¤È¤¬¤Ç¤­¼õ¤±¤ë¥À¥á¡¼¥¸¤¬·Ú¸º¤µ¤ì¤ëÍ©ÂΤξõÂÖ¤ËÊѿȤ¹¤ë¡£";
-#else
-               if (name) return "Wraithform";
-               if (desc) return "Becomes wraith form which gives ability to pass walls and makes all damages half.";
-#endif
+       case 31:
+               if (name) return _("幽体化", "Wraithform");
+               if (desc) return _("一定時間、壁を通り抜けることができ受けるダメージが軽減される幽体の状態に変身する。", 
+                       "Becomes wraith form which gives ability to pass walls and makes all damages half.");
     
                {
                        int base = plev / 2;
@@ -5765,69 +4002,70 @@ cptr do_spell(int realm, int spell, int mode)
                        }
                }
                break;
+       }
 
-       case TRUM_SPEL_PHASE_DOOR:
-#ifdef JP
-               if (name) return "¥·¥ç¡¼¥È¡¦¥Æ¥ì¥Ý¡¼¥È";
-               if (desc) return "¶áµ÷Î¥¤Î¥Æ¥ì¥Ý¡¼¥È¤ò¤¹¤ë¡£";
-#else
-               if (name) return "Phase Door";
-               if (desc) return "Teleport short distance.";
-#endif
+       return "";
+}
+
+
+/*!
+ * @brief トランプ領域魔法の各処理を行う
+ * @param spell 魔法ID
+ * @param mode 処理内容 (SPELL_NAME / SPELL_DESC / SPELL_INFO / SPELL_CAST)
+ * @return SPELL_NAME / SPELL_DESC / SPELL_INFO 時には文字列ポインタを返す。SPELL_CAST時はNULL文字列を返す。
+ */
+static cptr do_trump_spell(SPELL_IDX spell, BIT_FLAGS mode)
+{
+       bool name = (mode == SPELL_NAME) ? TRUE : FALSE;
+       bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;
+       bool info = (mode == SPELL_INFO) ? TRUE : FALSE;
+       bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;
+       bool fail = (mode == SPELL_FAIL) ? TRUE : FALSE;
+       static const char s_random[] = _("ランダム", "random");
+
+       int dir;
+       int plev = p_ptr->lev;
+
+       switch (spell)
+       {
+       case 0:
+               if (name) return _("ショート・テレポート", "Phase Door");
+               if (desc) return _("近距離のテレポートをする。", "Teleport short distance.");
     
                {
-                       int range = 10;
+                       POSITION range = 10;
 
                        if (info) return info_range(range);
 
                        if (cast)
                        {
-                               teleport_player(range, FALSE);
+                               teleport_player(range, 0L);
                        }
                }
                break;
 
-       case TRUM_SPEL_TRUMP_SPIDERS:
-#ifdef JP
-               if (name) return "ÃØéá¤Î¥«¡¼¥É";
-               if (desc) return "ÃØéá¤ò¾¤´­¤¹¤ë¡£";
-#else
-               if (name) return "Trump Spiders";
-               if (desc) return "Summons spiders.";
-#endif
+       case 1:
+               if (name) return _("蜘蛛のカード", "Trump Spiders");
+               if (desc) return _("蜘蛛を召喚する。", "Summons spiders.");
     
                {
                        if (cast || fail)
                        {
-#ifdef JP
-                               msg_print("¤¢¤Ê¤¿¤ÏÃØéá¤Î¥«¡¼¥É¤Ë½¸Ã椹¤ë...");
-#else
-                               msg_print("You concentrate on the trump of an spider...");
-#endif
-
-                               if (trump_summoning(1, !fail, py, px, 0, SUMMON_SPIDER, PM_ALLOW_GROUP))
+                               msg_print(_("あなたは蜘蛛のカードに集中する...", "You concentrate on the trump of an spider..."));
+                               if (trump_summoning(1, !fail, p_ptr->y, p_ptr->x, 0, SUMMON_SPIDER, PM_ALLOW_GROUP))
                                {
                                        if (fail)
                                        {
-#ifdef JP
-                                               msg_print("¾¤´­¤µ¤ì¤¿ÃØéá¤ÏÅܤäƤ¤¤ë¡ª");
-#else
-                                               msg_print("The summoned spiders get angry!");
-#endif
+                                               msg_print(_("召喚された蜘蛛は怒っている!", "The summoned spiders get angry!"));
                                        }
                                }
                        }
                }
                break;
 
-       case TRUM_SPEL_SHUFFLE:
-#ifdef JP
-               if (name) return "¥·¥ã¥Ã¥Õ¥ë";
-               if (desc) return "¥«¡¼¥É¤ÎÀꤤ¤ò¤¹¤ë¡£";
-#else
-               if (name) return "Shuffle";
-               if (desc) return "Causes random effects.";
-#endif
+       case 2:
+               if (name) return _("シャッフル", "Shuffle");
+               if (desc) return _("カードの占いをする。", "Causes random effects.");
     
                {
                        if (info) return s_random;
@@ -5839,14 +4077,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TRUM_SPEL_RESET_RECALL:
-#ifdef JP
-               if (name) return "¥Õ¥í¥¢¡¦¥ê¥»¥Ã¥È";
-               if (desc) return "ºÇ¿¼³¬¤òÊѹ¹¤¹¤ë¡£";
-#else
-               if (name) return "Reset Recall";
-               if (desc) return "Resets the 'deepest' level for recall spell.";
-#endif
+       case 3:
+               if (name) return _("フロア・リセット", "Reset Recall");
+               if (desc) return _("最深階を変更する。", "Resets the 'deepest' level for recall spell.");
     
                {
                        if (cast)
@@ -5856,35 +4089,25 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TRUM_SPEL_TELEPORT:
-#ifdef JP
-               if (name) return "¥Æ¥ì¥Ý¡¼¥È";
-               if (desc) return "±óµ÷Î¥¤Î¥Æ¥ì¥Ý¡¼¥È¤ò¤¹¤ë¡£";
-#else
-               if (name) return "Teleport";
-               if (desc) return "Teleport long distance.";
-#endif
+       case 4:
+               if (name) return _("テレポート", "Teleport");
+               if (desc) return _("遠距離のテレポートをする。", "Teleport long distance.");
     
                {
-                       int range = plev * 4;
+                       POSITION range = plev * 4;
 
                        if (info) return info_range(range);
 
                        if (cast)
                        {
-                               teleport_player(range, FALSE);
+                               teleport_player(range, 0L);
                        }
                }
                break;
 
-       case TRUM_SPEL_TRUMP_SPYING:
-#ifdef JP
-               if (name) return "´¶ÃΤΥ«¡¼¥É";
-               if (desc) return "°ìÄê»þ´Ö¡¢¥Æ¥ì¥Ñ¥·¡¼Ç½ÎϤòÆÀ¤ë¡£";
-#else
-               if (name) return "Trump Spying";
-               if (desc) return "Gives telepathy for a while.";
-#endif
+       case 5:
+               if (name) return _("感知のカード", "Trump Spying");
+               if (desc) return _("一定時間、テレパシー能力を得る。", "Gives telepathy for a while.");
     
                {
                        int base = 25;
@@ -5899,14 +4122,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TRUM_SPEL_TELEPORT_AWAY:
-#ifdef JP
-               if (name) return "¥Æ¥ì¥Ý¡¼¥È¡¦¥â¥ó¥¹¥¿¡¼";
-               if (desc) return "¥â¥ó¥¹¥¿¡¼¤ò¥Æ¥ì¥Ý¡¼¥È¤µ¤»¤ë¥Ó¡¼¥à¤òÊü¤Ä¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
-#else
-               if (name) return "Teleport Away";
-               if (desc) return "Teleports all monsters on the line away unless resisted.";
-#endif
+       case 6:
+               if (name) return _("テレポート・モンスター", "Teleport Away");
+               if (desc) return _("モンスターをテレポートさせるビームを放つ。抵抗されると無効。", "Teleports all monsters on the line away unless resisted.");
     
                {
                        int power = plev;
@@ -5922,49 +4140,29 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TRUM_SPEL_TRUMP_ANIMALS:
-#ifdef JP
-               if (name) return "ưʪ¤Î¥«¡¼¥É";
-               if (desc) return "1ÂΤÎưʪ¤ò¾¤´­¤¹¤ë¡£";
-#else
-               if (name) return "Trump Animals";
-               if (desc) return "Summons an animal.";
-#endif
+       case 7:
+               if (name) return _("動物のカード", "Trump Animals");
+               if (desc) return _("1体の動物を召喚する。", "Summons an animal.");
     
                {
                        if (cast || fail)
                        {
                                int type = (!fail ? SUMMON_ANIMAL_RANGER : SUMMON_ANIMAL);
-
-#ifdef JP
-                               msg_print("¤¢¤Ê¤¿¤Ïưʪ¤Î¥«¡¼¥É¤Ë½¸Ã椹¤ë...");
-#else
-                               msg_print("You concentrate on the trump of an animal...");
-#endif
-
-                               if (trump_summoning(1, !fail, py, px, 0, type, 0L))
+                               msg_print(_("あなたは動物のカードに集中する...", "You concentrate on the trump of an animal..."));
+                               if (trump_summoning(1, !fail, p_ptr->y, p_ptr->x, 0, type, 0L))
                                {
                                        if (fail)
                                        {
-#ifdef JP
-                                               msg_print("¾¤´­¤µ¤ì¤¿Æ°Êª¤ÏÅܤäƤ¤¤ë¡ª");
-#else
-                                               msg_print("The summoned animal gets angry!");
-#endif
+                                               msg_print(_("召喚された動物は怒っている!", "The summoned animal gets angry!"));
                                        }
                                }
                        }
                }
                break;
 
-       case TRUM_SPEL_TRUMP_REACH:
-#ifdef JP
-               if (name) return "°ÜÆ°¤Î¥«¡¼¥É";
-               if (desc) return "¥¢¥¤¥Æ¥à¤ò¼«Ê¬¤Î­¸µ¤Ø°ÜÆ°¤µ¤»¤ë¡£";
-#else
-               if (name) return "Trump Reach";
-               if (desc) return "Pulls a distant item close to you.";
-#endif
+       case 8:
+               if (name) return _("移動のカード", "Trump Reach");
+               if (desc) return _("アイテムを自分の足元へ移動させる。", "Pulls a distant item close to you.");
     
                {
                        int weight = plev * 15;
@@ -5980,14 +4178,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TRUM_SPEL_TRUMP_KAMIKAZE:
-#ifdef JP
-               if (name) return "¥«¥ß¥«¥¼¤Î¥«¡¼¥É";
-               if (desc) return "Ê£¿ô¤ÎÇúȯ¤¹¤ë¥â¥ó¥¹¥¿¡¼¤ò¾¤´­¤¹¤ë¡£";
-#else
-               if (name) return "Trump Kamikaze";
-               if (desc) return "Summons monsters which explode by itself.";
-#endif
+       case 9:
+               if (name) return _("カミカゼのカード", "Trump Kamikaze");
+               if (desc) return _("複数の爆発するモンスターを召喚する。", "Summons monsters which explode by itself.");
     
                {
                        if (cast || fail)
@@ -6004,8 +4197,8 @@ cptr do_spell(int realm, int spell, int mode)
                                else
                                {
                                        /* Summons near player when failed */
-                                       x = px;
-                                       y = py;
+                                       x = p_ptr->x;
+                                       y = p_ptr->y;
                                }
 
                                if (p_ptr->pclass == CLASS_BEASTMASTER)
@@ -6013,35 +4206,21 @@ cptr do_spell(int realm, int spell, int mode)
                                else
                                        type = SUMMON_KAMIKAZE;
 
-#ifdef JP
-                               msg_print("¤¢¤Ê¤¿¤Ï¥«¥ß¥«¥¼¤Î¥«¡¼¥É¤Ë½¸Ã椹¤ë...");
-#else
-                               msg_print("You concentrate on several trumps at once...");
-#endif
-
+                               msg_print(_("あなたはカミカゼのカードに集中する...", "You concentrate on several trumps at once..."));
                                if (trump_summoning(2 + randint0(plev / 7), !fail, y, x, 0, type, 0L))
                                {
                                        if (fail)
                                        {
-#ifdef JP
-                                               msg_print("¾¤´­¤µ¤ì¤¿¥â¥ó¥¹¥¿¡¼¤ÏÅܤäƤ¤¤ë¡ª");
-#else
-                                               msg_print("The summoned creatures get angry!");
-#endif
+                                               msg_print(_("召喚されたモンスターは怒っている!", "The summoned creatures get angry!"));
                                        }
                                }
                        }
                }
                break;
 
-       case TRUM_SPEL_PHANTASMAL_SERVANT:
-#ifdef JP
-               if (name) return "¸¸Î´­";
-               if (desc) return "1ÂΤÎÍ©Îî¤ò¾¤´­¤¹¤ë¡£";
-#else
-               if (name) return "Phantasmal Servant";
-               if (desc) return "Summons a ghost.";
-#endif
+       case 10:
+               if (name) return _("幻霊召喚", "Phantasmal Servant");
+               if (desc) return _("1体の幽霊を召喚する。", "Summons a ghost.");
     
                {
                        /* Phantasmal Servant is not summoned as enemy when failed */
@@ -6049,26 +4228,17 @@ cptr do_spell(int realm, int spell, int mode)
                        {
                                int summon_lev = plev * 2 / 3 + randint1(plev / 2);
 
-                               if (trump_summoning(1, !fail, py, px, (summon_lev * 3 / 2), SUMMON_PHANTOM, 0L))
+                               if (trump_summoning(1, !fail, p_ptr->y, p_ptr->x, (summon_lev * 3 / 2), SUMMON_PHANTOM, 0L))
                                {
-#ifdef JP
-                                       msg_print("¸æÍѤǤ´¤¶¤¤¤Þ¤¹¤«¡¢¸æ¼ç¿ÍÍÍ¡©");
-#else
-                                       msg_print("'Your wish, master?'");
-#endif
+                                       msg_print(_("御用でございますか、御主人様?", "'Your wish, master?'"));
                                }
                        }
                }
                break;
 
-       case TRUM_SPEL_HASTE_MONSTER:
-#ifdef JP
-               if (name) return "¥¹¥Ô¡¼¥É¡¦¥â¥ó¥¹¥¿¡¼";
-               if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤò²Ã®¤µ¤»¤ë¡£";
-#else
-               if (name) return "Haste Monster";
-               if (desc) return "Hastes a monster.";
-#endif
+       case 11:
+               if (name) return _("スピード・モンスター", "Haste Monster");
+               if (desc) return _("モンスター1体を加速させる。", "Hastes a monster.");
     
                {
                        if (cast)
@@ -6086,68 +4256,45 @@ cptr do_spell(int realm, int spell, int mode)
 
                                if (!result) return NULL;
 
-                               speed_monster(dir);
+                               speed_monster(dir, plev);
                        }
                }
                break;
 
-       case TRUM_SPEL_TELEPORT_LEVEL:
-#ifdef JP
-               if (name) return "¥Æ¥ì¥Ý¡¼¥È¡¦¥ì¥Ù¥ë";
-               if (desc) return "½Ö»þ¤Ë¾å¤«²¼¤Î³¬¤Ë¥Æ¥ì¥Ý¡¼¥È¤¹¤ë¡£";
-#else
-               if (name) return "Teleport Level";
-               if (desc) return "Teleport to up or down stairs in a moment.";
-#endif
+       case 12:
+               if (name) return _("テレポート・レベル", "Teleport Level");
+               if (desc) return _("瞬時に上か下の階にテレポートする。", "Teleport to up or down stairs in a moment.");
     
                {
                        if (cast)
                        {
-#ifdef JP
-                               if (!get_check("ËÜÅö¤Ë¾¤Î³¬¤Ë¥Æ¥ì¥Ý¡¼¥È¤·¤Þ¤¹¤«¡©")) return NULL;
-#else
-                               if (!get_check("Are you sure? (Teleport Level)")) return NULL;
-#endif
+                               if (!get_check(_("本当に他の階にテレポートしますか?", "Are you sure? (Teleport Level)"))) return NULL;
                                teleport_level(0);
                        }
                }
                break;
 
-       case TRUM_SPEL_DIMENSION_DOOR:
-#ifdef JP
-               if (name) return "¼¡¸µ¤ÎÈâ";
-               if (desc) return "ûµ÷Î¥Æâ¤Î»ØÄꤷ¤¿¾ì½ê¤Ë¥Æ¥ì¥Ý¡¼¥È¤¹¤ë¡£";
-#else
-               if (name) return "Dimension Door";
-               if (desc) return "Teleport to given location.";
-#endif
+       case 13:
+               if (name) return _("次元の扉", "Dimension Door");
+               if (desc) return _("短距離内の指定した場所にテレポートする。", "Teleport to given location.");
     
                {
-                       int range = plev / 2 + 10;
+                       POSITION range = plev / 2 + 10;
 
                        if (info) return info_range(range);
 
                        if (cast)
                        {
-#ifdef JP
-                               msg_print("¼¡¸µ¤ÎÈ⤬³«¤¤¤¿¡£ÌÜŪÃϤòÁª¤ó¤Ç²¼¤µ¤¤¡£");
-#else
-                               msg_print("You open a dimensional gate. Choose a destination.");
-#endif
-
+                               msg_print(_("次元の扉が開いた。目的地を選んで下さい。", "You open a dimensional gate. Choose a destination."));
                                if (!dimension_door()) return NULL;
                        }
                }
                break;
 
-       case TRUM_SPEL_WORD_OF_RECALL:
-#ifdef JP
-               if (name) return "µ¢´Ô¤Î¼öʸ";
-               if (desc) return "ÃϾå¤Ë¤¤¤ë¤È¤­¤Ï¥À¥ó¥¸¥ç¥ó¤ÎºÇ¿¼³¬¤Ø¡¢¥À¥ó¥¸¥ç¥ó¤Ë¤¤¤ë¤È¤­¤ÏÃϾå¤Ø¤È°ÜÆ°¤¹¤ë¡£";
-#else
-               if (name) return "Word of Recall";
-               if (desc) return "Recalls player from dungeon to town, or from town to the deepest level of dungeon.";
-#endif
+       case 14:
+               if (name) return _("帰還の呪文", "Word of Recall");
+               if (desc) return _("地上にいるときはダンジョンの最深階へ、ダンジョンにいるときは地上へと移動する。",
+                       "Recalls player from dungeon to town, or from town to the deepest level of dungeon.");
     
                {
                        int base = 15;
@@ -6162,14 +4309,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TRUM_SPEL_BANISH:
-#ifdef JP
-               if (name) return "²øʪÄÉÊü";
-               if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò¥Æ¥ì¥Ý¡¼¥È¤µ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
-#else
-               if (name) return "Banish";
-               if (desc) return "Teleports all monsters in sight away unless resisted.";
-#endif
+       case 15:
+               if (name) return _("怪物追放", "Banish");
+               if (desc) return _("視界内の全てのモンスターをテレポートさせる。抵抗されると無効。", "Teleports all monsters in sight away unless resisted.");
     
                {
                        int power = plev * 4;
@@ -6183,14 +4325,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TRUM_SPEL_SWAP_POSITION:
-#ifdef JP
-               if (name) return "°ÌÃÖ¸ò´¹¤Î¥«¡¼¥É";
-               if (desc) return "1ÂΤΥâ¥ó¥¹¥¿¡¼¤È°ÌÃÖ¤ò¸ò´¹¤¹¤ë¡£";
-#else
-               if (name) return "Swap Position";
-               if (desc) return "Swap positions of you and a monster.";
-#endif
+       case 16:
+               if (name) return _("位置交換のカード", "Swap Position");
+               if (desc) return _("1体のモンスターと位置を交換する。", "Swap positions of you and a monster.");
     
                {
                        if (cast)
@@ -6212,106 +4349,63 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TRUM_SPEL_TRUMP_UNDEAD:
-#ifdef JP
-               if (name) return "¥¢¥ó¥Ç¥Ã¥É¤Î¥«¡¼¥É";
-               if (desc) return "1ÂΤΥ¢¥ó¥Ç¥Ã¥É¤ò¾¤´­¤¹¤ë¡£";
-#else
-               if (name) return "Trump Undead";
-               if (desc) return "Summons an undead monster.";
-#endif
+       case 17:
+               if (name) return _("アンデッドのカード", "Trump Undead");
+               if (desc) return _("1体のアンデッドを召喚する。", "Summons an undead monster.");
     
                {
                        if (cast || fail)
                        {
-#ifdef JP
-                               msg_print("¤¢¤Ê¤¿¤Ï¥¢¥ó¥Ç¥Ã¥É¤Î¥«¡¼¥É¤Ë½¸Ã椹¤ë...");
-#else
-                               msg_print("You concentrate on the trump of an undead creature...");
-#endif
-
-                               if (trump_summoning(1, !fail, py, px, 0, SUMMON_UNDEAD, 0L))
+                               msg_print(_("あなたはアンデッドのカードに集中する...", "You concentrate on the trump of an undead creature..."));
+                               if (trump_summoning(1, !fail, p_ptr->y, p_ptr->x, 0, SUMMON_UNDEAD, 0L))
                                {
                                        if (fail)
                                        {
-#ifdef JP
-                                               msg_print("¾¤´­¤µ¤ì¤¿¥¢¥ó¥Ç¥Ã¥É¤ÏÅܤäƤ¤¤ë¡ª");
-#else
-                                               msg_print("The summoned undead creature gets angry!");
-#endif
+                                               msg_print(_("召喚されたアンデッドは怒っている!", "The summoned undead creature gets angry!"));
                                        }
                                }
                        }
                }
                break;
 
-       case TRUM_SPEL_TRUMP_REPTILES:
-#ifdef JP
-               if (name) return "à¨ÃîÎà¤Î¥«¡¼¥É";
-               if (desc) return "1ÂΤΥҥɥé¤ò¾¤´­¤¹¤ë¡£";
-#else
-               if (name) return "Trump Reptiles";
-               if (desc) return "Summons a hydra.";
-#endif
+       case 18:
+               if (name) return _("爬虫類のカード", "Trump Reptiles");
+               if (desc) return _("1体のヒドラを召喚する。", "Summons a hydra.");
     
                {
                        if (cast || fail)
                        {
-#ifdef JP
-                               msg_print("¤¢¤Ê¤¿¤Ïà¨ÃîÎà¤Î¥«¡¼¥É¤Ë½¸Ã椹¤ë...");
-#else
-                               msg_print("You concentrate on the trump of a reptile...");
-#endif
-
-                               if (trump_summoning(1, !fail, py, px, 0, SUMMON_HYDRA, 0L))
+                               msg_print(_("あなたは爬虫類のカードに集中する...", "You concentrate on the trump of a reptile..."));
+                               if (trump_summoning(1, !fail, p_ptr->y, p_ptr->x, 0, SUMMON_HYDRA, 0L))
                                {
                                        if (fail)
                                        {
-#ifdef JP
-                                               msg_print("¾¤´­¤µ¤ì¤¿à¨ÃîÎà¤ÏÅܤäƤ¤¤ë¡ª");
-#else
-                                               msg_print("The summoned reptile gets angry!");
-#endif
+                                               msg_print(_("召喚された爬虫類は怒っている!", "The summoned reptile gets angry!"));
                                        }
                                }
                        }
                }
                break;
 
-       case TRUM_SPEL_TRUMP_MONSTERS:
-#ifdef JP
-               if (name) return "¥â¥ó¥¹¥¿¡¼¤Î¥«¡¼¥É";
-               if (desc) return "Ê£¿ô¤Î¥â¥ó¥¹¥¿¡¼¤ò¾¤´­¤¹¤ë¡£";
-#else
-               if (name) return "Trump Monsters";
-               if (desc) return "Summons some monsters.";
-#endif
+       case 19:
+               if (name) return _("モンスターのカード", "Trump Monsters");
+               if (desc) return _("複数のモンスターを召喚する。", "Summons some monsters.");
     
                {
                        if (cast || fail)
                        {
                                int type;
-
-#ifdef JP
-                               msg_print("¤¢¤Ê¤¿¤Ï¥â¥ó¥¹¥¿¡¼¤Î¥«¡¼¥É¤Ë½¸Ã椹¤ë...");
-#else
-                               msg_print("You concentrate on several trumps at once...");
-#endif
-
+                               msg_print(_("あなたはモンスターのカードに集中する...", "You concentrate on several trumps at once..."));
                                if (p_ptr->pclass == CLASS_BEASTMASTER)
                                        type = SUMMON_LIVING;
                                else
                                        type = 0;
 
-                               if (trump_summoning((1 + (plev - 15)/ 10), !fail, py, px, 0, type, 0L))
+                               if (trump_summoning((1 + (plev - 15)/ 10), !fail, p_ptr->y, p_ptr->x, 0, type, 0L))
                                {
                                        if (fail)
                                        {
-#ifdef JP
-                                               msg_print("¾¤´­¤µ¤ì¤¿¥â¥ó¥¹¥¿¡¼¤ÏÅܤäƤ¤¤ë¡ª");
-#else
-                                               msg_print("The summoned creatures get angry!");
-#endif
+                                               msg_print(_("召喚されたモンスターは怒っている!", "The summoned creatures get angry!"));
                                        }
                                }
 
@@ -6319,47 +4413,28 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TRUM_SPEL_TRUMP_HOUNDS:
-#ifdef JP
-               if (name) return "¥Ï¥¦¥ó¥É¤Î¥«¡¼¥É";
-               if (desc) return "1¥°¥ë¡¼¥×¤Î¥Ï¥¦¥ó¥É¤ò¾¤´­¤¹¤ë¡£";
-#else
-               if (name) return "Trump Hounds";
-               if (desc) return "Summons a group of hounds.";
-#endif
+       case 20:
+               if (name) return _("ハウンドのカード", "Trump Hounds");
+               if (desc) return _("1グループのハウンドを召喚する。", "Summons a group of hounds.");
     
                {
                        if (cast || fail)
                        {
-#ifdef JP
-                               msg_print("¤¢¤Ê¤¿¤Ï¥Ï¥¦¥ó¥É¤Î¥«¡¼¥É¤Ë½¸Ã椹¤ë...");
-#else
-                               msg_print("You concentrate on the trump of a hound...");
-#endif
-
-                               if (trump_summoning(1, !fail, py, px, 0, SUMMON_HOUND, PM_ALLOW_GROUP))
+                               msg_print(_("あなたはハウンドのカードに集中する...", "You concentrate on the trump of a hound..."));
+                               if (trump_summoning(1, !fail, p_ptr->y, p_ptr->x, 0, SUMMON_HOUND, PM_ALLOW_GROUP))
                                {
                                        if (fail)
                                        {
-#ifdef JP
-                                               msg_print("¾¤´­¤µ¤ì¤¿¥Ï¥¦¥ó¥É¤ÏÅܤäƤ¤¤ë¡ª");
-#else
-                                               msg_print("The summoned hounds get angry!");
-#endif
+                                               msg_print(_("召喚されたハウンドは怒っている!", "The summoned hounds get angry!"));
                                        }
                                }
                        }
                }
                break;
 
-       case TRUM_SPEL_TRUMP_BRANDING:
-#ifdef JP
-               if (name) return "¥È¥é¥ó¥×¤Î¿Ï";
-               if (desc) return "Éð´ï¤Ë¥È¥é¥ó¥×¤Î°À­¤ò¤Ä¤±¤ë¡£";
-#else
-               if (name) return "Trump Branding";
-               if (desc) return "Makes current weapon a Trump weapon.";
-#endif
+       case 21:
+               if (name) return _("トランプの刃", "Trump Branding");
+               if (desc) return _("武器にトランプの属性をつける。", "Makes current weapon a Trump weapon.");
     
                {
                        if (cast)
@@ -6369,14 +4444,10 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TRUM_SPEL_LIVING_TRUMP:
-#ifdef JP
-               if (name) return "¿Í´Ö¥È¥é¥ó¥×";
-               if (desc) return "¥é¥ó¥À¥à¤Ë¥Æ¥ì¥Ý¡¼¥È¤¹¤ëÆÍÁ³ÊÑ°Û¤«¡¢¼«Ê¬¤Î°Õ»×¤Ç¥Æ¥ì¥Ý¡¼¥È¤¹¤ëÆÍÁ³ÊÑ°Û¤¬¿È¤Ë¤Ä¤¯¡£";
-#else
-               if (name) return "Living Trump";
-               if (desc) return "Gives mutation which makes you teleport randomly or makes you able to teleport at will.";
-#endif
+       case 22:
+               if (name) return _("人間トランプ", "Living Trump");
+               if (desc) return _("ランダムにテレポートする突然変異か、自分の意思でテレポートする突然変異が身につく。", 
+                       "Gives mutation which makes you teleport randomly or makes you able to teleport at will.");
     
                {
                        if (cast)
@@ -6393,57 +4464,35 @@ cptr do_spell(int realm, int spell, int mode)
                                /* Gain the mutation */
                                if (gain_random_mutation(mutation))
                                {
-#ifdef JP
-                                       msg_print("¤¢¤Ê¤¿¤ÏÀ¸¤­¤Æ¤¤¤ë¥«¡¼¥É¤ËÊѤï¤Ã¤¿¡£");
-#else
-                                       msg_print("You have turned into a Living Trump.");
-#endif
+                                       msg_print(_("あなたは生きているカードに変わった。", "You have turned into a Living Trump."));
                                }
                        }
                }
                break;
 
-       case TRUM_SPEL_TRUMP_CYBERDEMON:
-#ifdef JP
-               if (name) return "¥µ¥¤¥Ð¡¼¥Ç¡¼¥â¥ó¤Î¥«¡¼¥É";
-               if (desc) return "1ÂΤΥµ¥¤¥Ð¡¼¥Ç¡¼¥â¥ó¤ò¾¤´­¤¹¤ë¡£";
-#else
-               if (name) return "Trump Cyberdemon";
-               if (desc) return "Summons a cyber demon.";
-#endif
+       case 23:
+               if (name) return _("サイバーデーモンのカード", "Trump Cyberdemon");
+               if (desc) return _("1体のサイバーデーモンを召喚する。", "Summons a cyber demon.");
     
                {
                        if (cast || fail)
                        {
-#ifdef JP
-                               msg_print("¤¢¤Ê¤¿¤Ï¥µ¥¤¥Ð¡¼¥Ç¡¼¥â¥ó¤Î¥«¡¼¥É¤Ë½¸Ã椹¤ë...");
-#else
-                               msg_print("You concentrate on the trump of a Cyberdemon...");
-#endif
-
-                               if (trump_summoning(1, !fail, py, px, 0, SUMMON_CYBER, 0L))
+                               msg_print(_("あなたはサイバーデーモンのカードに集中する...", "You concentrate on the trump of a Cyberdemon..."));
+                               if (trump_summoning(1, !fail, p_ptr->y, p_ptr->x, 0, SUMMON_CYBER, 0L))
                                {
                                        if (fail)
                                        {
-#ifdef JP
-                                               msg_print("¾¤´­¤µ¤ì¤¿¥µ¥¤¥Ð¡¼¥Ç¡¼¥â¥ó¤ÏÅܤäƤ¤¤ë¡ª");
-#else
-                                               msg_print("The summoned Cyberdemon gets angry!");
-#endif
+                                               msg_print(_("召喚されたサイバーデーモンは怒っている!", "The summoned Cyberdemon gets angry!"));
                                        }
                                }
                        }
                }
                break;
 
-       case TRUM_SPEL_TRUMP_DIVINATION:
-#ifdef JP
-               if (name) return "ͽ¸«¤Î¥«¡¼¥É";
-               if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¡¢æ«¡¢Èâ¡¢³¬ÃÊ¡¢ºâÊõ¡¢¤½¤·¤Æ¥¢¥¤¥Æ¥à¤ò´¶ÃΤ¹¤ë¡£";
-#else
-               if (name) return "Trump Divination";
-               if (desc) return "Detects all monsters, traps, doors, stairs, treasures and items in your vicinity.";
-#endif
+       case 24:
+               if (name) return _("予見のカード", "Trump Divination");
+               if (desc) return _("近くの全てのモンスター、罠、扉、階段、財宝、そしてアイテムを感知する。",
+                       "Detects all monsters, traps, doors, stairs, treasures and items in your vicinity.");
     
                {
                        int rad = DETECT_RAD_DEFAULT;
@@ -6457,14 +4506,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TRUM_SPEL_TRUMP_LORE:
-#ifdef JP
-               if (name) return "Ãμ±¤Î¥«¡¼¥É";
-               if (desc) return "¥¢¥¤¥Æ¥à¤Î»ý¤ÄǽÎϤò´°Á´¤ËÃΤ롣";
-#else
-               if (name) return "Trump Lore";
-               if (desc) return "*Identifies* an item.";
-#endif
+       case 25:
+               if (name) return _("知識のカード", "Trump Lore");
+               if (desc) return _("アイテムの持つ能力を完全に知る。", "*Identifies* an item.");
     
                {
                        if (cast)
@@ -6474,14 +4518,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TRUM_SPEL_HEAL_MONSTER:
-#ifdef JP
-               if (name) return "²óÉü¥â¥ó¥¹¥¿¡¼";
-               if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤÎÂÎÎϤò²óÉü¤µ¤»¤ë¡£";
-#else
-               if (name) return "Heal Monster";
-               if (desc) return "Heal a monster.";
-#endif
+       case 26:
+               if (name) return _("回復モンスター", "Heal Monster");
+               if (desc) return _("モンスター1体の体力を回復させる。", "Heal a monster.");
     
                {
                        int heal = plev * 10 + 200;
@@ -6508,50 +4547,31 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TRUM_SPEL_TRUMP_DRAGON:
-#ifdef JP
-               if (name) return "¥É¥é¥´¥ó¤Î¥«¡¼¥É";
-               if (desc) return "1ÂΤΥɥ饴¥ó¤ò¾¤´­¤¹¤ë¡£";
-#else
-               if (name) return "Trump Dragon";
-               if (desc) return "Summons a dragon.";
-#endif
+       case 27:
+               if (name) return _("ドラゴンのカード", "Trump Dragon");
+               if (desc) return _("1体のドラゴンを召喚する。", "Summons a dragon.");
     
                {
                        if (cast || fail)
                        {
-#ifdef JP
-                               msg_print("¤¢¤Ê¤¿¤Ï¥É¥é¥´¥ó¤Î¥«¡¼¥É¤Ë½¸Ã椹¤ë...");
-#else
-                               msg_print("You concentrate on the trump of a dragon...");
-#endif
-
-                               if (trump_summoning(1, !fail, py, px, 0, SUMMON_DRAGON, 0L))
+                               msg_print(_("あなたはドラゴンのカードに集中する...", "You concentrate on the trump of a dragon..."));
+                               if (trump_summoning(1, !fail, p_ptr->y, p_ptr->x, 0, SUMMON_DRAGON, 0L))
                                {
                                        if (fail)
                                        {
-#ifdef JP
-                                               msg_print("¾¤´­¤µ¤ì¤¿¥É¥é¥´¥ó¤ÏÅܤäƤ¤¤ë¡ª");
-#else
-                                               msg_print("The summoned dragon gets angry!");
-#endif
+                                               msg_print(_("召喚されたドラゴンは怒っている!", "The summoned dragon gets angry!"));
                                        }
                                }
                        }
                }
                break;
 
-       case TRUM_SPEL_TRUMP_METEOR:
-#ifdef JP
-               if (name) return "ð¨ÀФΥ«¡¼¥É";
-               if (desc) return "¼«Ê¬¤Î¼þÊÕ¤Ëð¨ÀФòÍî¤È¤¹¡£";
-#else
-               if (name) return "Trump Meteor";
-               if (desc) return "Makes meteor balls fall down to nearby random locations.";
-#endif
+       case 28:
+               if (name) return _("隕石のカード", "Trump Meteor");
+               if (desc) return _("自分の周辺に隕石を落とす。", "Makes meteor balls fall down to nearby random locations.");
     
                {
-                       int dam = plev * 2;
+                       HIT_POINT dam = plev * 2;
                        int rad = 2;
 
                        if (info) return info_multi_damage(dam);
@@ -6563,80 +4583,48 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TRUM_SPEL_TRUMP_DEMON:
-#ifdef JP
-               if (name) return "¥Ç¡¼¥â¥ó¤Î¥«¡¼¥É";
-               if (desc) return "1ÂΤΰ­Ëâ¤ò¾¤´­¤¹¤ë¡£";
-#else
-               if (name) return "Trump Demon";
-               if (desc) return "Summons a demon.";
-#endif
+       case 29:
+               if (name) return _("デーモンのカード", "Trump Demon");
+               if (desc) return _("1体の悪魔を召喚する。", "Summons a demon.");
     
                {
                        if (cast || fail)
                        {
-#ifdef JP
-                               msg_print("¤¢¤Ê¤¿¤Ï¥Ç¡¼¥â¥ó¤Î¥«¡¼¥É¤Ë½¸Ã椹¤ë...");
-#else
-                               msg_print("You concentrate on the trump of a demon...");
-#endif
-
-                               if (trump_summoning(1, !fail, py, px, 0, SUMMON_DEMON, 0L))
+                               msg_print(_("あなたはデーモンのカードに集中する...", "You concentrate on the trump of a demon..."));
+                               if (trump_summoning(1, !fail, p_ptr->y, p_ptr->x, 0, SUMMON_DEMON, 0L))
                                {
                                        if (fail)
                                        {
-#ifdef JP
-                                               msg_print("¾¤´­¤µ¤ì¤¿¥Ç¡¼¥â¥ó¤ÏÅܤäƤ¤¤ë¡ª");
-#else
-                                               msg_print("The summoned demon gets angry!");
-#endif
+                                               msg_print(_("召喚されたデーモンは怒っている!", "The summoned demon gets angry!"));
                                        }
                                }
                        }
                }
                break;
 
-       case TRUM_SPEL_TRUMP_GREATER_UNDEAD:
-#ifdef JP
-               if (name) return "ÃϹö¤Î¥«¡¼¥É";
-               if (desc) return "1ÂΤξåµé¥¢¥ó¥Ç¥Ã¥É¤ò¾¤´­¤¹¤ë¡£";
-#else
-               if (name) return "Trump Greater Undead";
-               if (desc) return "Summons a greater undead.";
-#endif
+       case 30:
+               if (name) return _("地獄のカード", "Trump Greater Undead");
+               if (desc) return _("1体の上級アンデッドを召喚する。", "Summons a greater undead.");
     
                {
                        if (cast || fail)
                        {
-#ifdef JP
-                               msg_print("¤¢¤Ê¤¿¤Ï¶¯ÎϤʥ¢¥ó¥Ç¥Ã¥É¤Î¥«¡¼¥É¤Ë½¸Ã椹¤ë...");
-#else
-                               msg_print("You concentrate on the trump of a greater undead being...");
-#endif
+                               msg_print(_("あなたは強力なアンデッドのカードに集中する...", "You concentrate on the trump of a greater undead being..."));
                                /* May allow unique depend on level and dice roll */
-                               if (trump_summoning(1, !fail, py, px, 0, SUMMON_HI_UNDEAD, PM_ALLOW_UNIQUE))
+                               if (trump_summoning(1, !fail, p_ptr->y, p_ptr->x, 0, SUMMON_HI_UNDEAD, PM_ALLOW_UNIQUE))
                                {
                                        if (fail)
                                        {
-#ifdef JP
-                                               msg_print("¾¤´­¤µ¤ì¤¿¾åµé¥¢¥ó¥Ç¥Ã¥É¤ÏÅܤäƤ¤¤ë¡ª");
-#else
-                                               msg_print("The summoned greater undead creature gets angry!");
-#endif
+                                               msg_print(_("召喚された上級アンデッドは怒っている!", "The summoned greater undead creature gets angry!"));
                                        }
                                }
                        }
                }
                break;
 
-       case TRUM_SPEL_TRUMP_ANCIENT_DRAGON:
-#ifdef JP
-               if (name) return "¸ÅÂå¥É¥é¥´¥ó¤Î¥«¡¼¥É";
-               if (desc) return "1ÂΤθÅÂå¥É¥é¥´¥ó¤ò¾¤´­¤¹¤ë¡£";
-#else
-               if (name) return "Trump Ancient Dragon";
-               if (desc) return "Summons an ancient dragon.";
-#endif
+       case 31:
+               if (name) return _("古代ドラゴンのカード", "Trump Ancient Dragon");
+               if (desc) return _("1体の古代ドラゴンを召喚する。", "Summons an ancient dragon.");
     
                {
                        if (cast)
@@ -6648,36 +4636,45 @@ cptr do_spell(int realm, int spell, int mode)
                                else
                                        type = SUMMON_HI_DRAGON;
 
-#ifdef JP
-                               msg_print("¤¢¤Ê¤¿¤Ï¸ÅÂå¥É¥é¥´¥ó¤Î¥«¡¼¥É¤Ë½¸Ã椹¤ë...");
-#else
-                               msg_print("You concentrate on the trump of an ancient dragon...");
-#endif
-
+                               msg_print(_("あなたは古代ドラゴンのカードに集中する...", "You concentrate on the trump of an ancient dragon..."));
                                /* May allow unique depend on level and dice roll */
-                               if (trump_summoning(1, !fail, py, px, 0, type, PM_ALLOW_UNIQUE))
+                               if (trump_summoning(1, !fail, p_ptr->y, p_ptr->x, 0, type, PM_ALLOW_UNIQUE))
                                {
                                        if (fail)
                                        {
-#ifdef JP
-                                               msg_print("¾¤´­¤µ¤ì¤¿¸ÅÂå¥É¥é¥´¥ó¤ÏÅܤäƤ¤¤ë¡ª");
-#else
-                                               msg_print("The summoned ancient dragon gets angry!");
-#endif
+                                               msg_print(_("召喚された古代ドラゴンは怒っている!", "The summoned ancient dragon gets angry!"));
                                        }
                                }
                        }
                }
                break;
+       }
 
-       case ARCA_SPEL_ZAP:
-#ifdef JP
-               if (name) return "ÅÅ·â";
-               if (desc) return "ÅÅ·â¤Î¥Ü¥ë¥È¤â¤·¤¯¤Ï¥Ó¡¼¥à¤òÊü¤Ä¡£";
-#else
-               if (name) return "Zap";
-               if (desc) return "Fires a bolt or beam of lightning.";
-#endif
+       return "";
+}
+
+
+/*!
+ * @brief 秘術領域魔法の各処理を行う
+ * @param spell 魔法ID
+ * @param mode 処理内容 (SPELL_NAME / SPELL_DESC / SPELL_INFO / SPELL_CAST)
+ * @return SPELL_NAME / SPELL_DESC / SPELL_INFO 時には文字列ポインタを返す。SPELL_CAST時はNULL文字列を返す。
+ */
+static cptr do_arcane_spell(SPELL_IDX spell, BIT_FLAGS mode)
+{
+       bool name = (mode == SPELL_NAME) ? TRUE : FALSE;
+       bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;
+       bool info = (mode == SPELL_INFO) ? TRUE : FALSE;
+       bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;
+
+       int dir;
+       int plev = p_ptr->lev;
+
+       switch (spell)
+       {
+       case 0:
+               if (name) return _("電撃", "Zap");
+               if (desc) return _("電撃のボルトもしくはビームを放つ。", "Fires a bolt or beam of lightning.");
     
                {
                        int dice = 3 + (plev - 1) / 5;
@@ -6694,14 +4691,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_WIZARD_LOCK:
-#ifdef JP
-               if (name) return "ËâË¡¤Î»Ü¾û";
-               if (desc) return "Èâ¤Ë¸°¤ò¤«¤±¤ë¡£";
-#else
-               if (name) return "Wizard Lock";
-               if (desc) return "Locks a door.";
-#endif
+       case 1:
+               if (name) return _("魔法の施錠", "Wizard Lock");
+               if (desc) return _("扉に鍵をかける。", "Locks a door.");
     
                {
                        if (cast)
@@ -6713,14 +4705,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_DETECT_INVISIBILITY:
-#ifdef JP
-               if (name) return "Æ©ÌÀÂδ¶ÃÎ";
-               if (desc) return "¶á¤¯¤ÎÆ©ÌÀ¤Ê¥â¥ó¥¹¥¿¡¼¤ò´¶ÃΤ¹¤ë¡£";
-#else
-               if (name) return "Detect Invisibility";
-               if (desc) return "Detects all invisible monsters in your vicinity.";
-#endif
+       case 2:
+               if (name) return _("透明体感知", "Detect Invisibility");
+               if (desc) return _("近くの透明なモンスターを感知する。", "Detects all invisible monsters in your vicinity.");
     
                {
                        int rad = DETECT_RAD_DEFAULT;
@@ -6734,14 +4721,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_DETECT_MONSTERS:
-#ifdef JP
-               if (name) return "¥â¥ó¥¹¥¿¡¼´¶ÃÎ";
-               if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î¸«¤¨¤ë¥â¥ó¥¹¥¿¡¼¤ò´¶ÃΤ¹¤ë¡£";
-#else
-               if (name) return "Detect Monsters";
-               if (desc) return "Detects all monsters in your vicinity unless invisible.";
-#endif
+       case 3:
+               if (name) return _("モンスター感知", "Detect Monsters");
+               if (desc) return _("近くの全ての見えるモンスターを感知する。", "Detects all monsters in your vicinity unless invisible.");
     
                {
                        int rad = DETECT_RAD_DEFAULT;
@@ -6755,35 +4737,25 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_BLINK:
-#ifdef JP
-               if (name) return "¥·¥ç¡¼¥È¡¦¥Æ¥ì¥Ý¡¼¥È";
-               if (desc) return "¶áµ÷Î¥¤Î¥Æ¥ì¥Ý¡¼¥È¤ò¤¹¤ë¡£";
-#else
-               if (name) return "Blink";
-               if (desc) return "Teleport short distance.";
-#endif
+       case 4:
+               if (name) return _("ショート・テレポート", "Blink");
+               if (desc) return _("近距離のテレポートをする。", "Teleport short distance.");
     
                {
-                       int range = 10;
+                       POSITION range = 10;
 
                        if (info) return info_range(range);
 
                        if (cast)
                        {
-                               teleport_player(range, FALSE);
+                               teleport_player(range, 0L);
                        }
                }
                break;
 
-       case ARCA_SPEL_LIGHT_AREA:
-#ifdef JP
-               if (name) return "¥é¥¤¥È¡¦¥¨¥ê¥¢";
-               if (desc) return "¸÷¸»¤¬¾È¤é¤·¤Æ¤¤¤ëÈϰϤ«Éô²°Á´ÂΤò±Êµ×¤ËÌÀ¤ë¤¯¤¹¤ë¡£";
-#else
-               if (name) return "Light Area";
-               if (desc) return "Lights up nearby area and the inside of a room permanently.";
-#endif
+       case 5:
+               if (name) return _("ライト・エリア", "Light Area");
+               if (desc) return _("光源が照らしている範囲か部屋全体を永久に明るくする。", "Lights up nearby area and the inside of a room permanently.");
     
                {
                        int dice = 2;
@@ -6799,14 +4771,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_TRAP_AND_DOOR_DESTRUCTION:
-#ifdef JP
-               if (name) return "櫤ÈÈâ Ç˲õ";
-               if (desc) return "°ìľÀþ¾å¤ÎÁ´¤Æ¤Î櫤ÈÈâ¤òÇ˲õ¤¹¤ë¡£";
-#else
-               if (name) return "Trap & Door Destruction";
-               if (desc) return "Fires a beam which destroy traps and doors.";
-#endif
+       case 6:
+               if (name) return _("罠と扉 破壊", "Trap & Door Destruction");
+               if (desc) return _("一直線上の全ての罠と扉を破壊する。", "Fires a beam which destroy traps and doors.");
     
                {
                        if (cast)
@@ -6818,14 +4785,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_CURE_LIGHT_WOUNDS:
-#ifdef JP
-               if (name) return "·Ú½ý¤Î¼£Ìþ";
-               if (desc) return "²ø²æ¤ÈÂÎÎϤò¾¯¤·²óÉü¤µ¤»¤ë¡£";
-#else
-               if (name) return "Cure Light Wounds";
-               if (desc) return "Heals cut and HP a little.";
-#endif
+       case 7:
+               if (name) return _("軽傷の治癒", "Cure Light Wounds");
+               if (desc) return _("怪我と体力を少し回復させる。", "Heals cut and HP a little.");
     
                {
                        int dice = 2;
@@ -6841,14 +4803,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_DETECT_DOORS_AND_TRAPS:
-#ifdef JP
-               if (name) return "櫤ÈÈâ ´¶ÃÎ";
-               if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î櫤ÈÈâ¤È³¬Ãʤò´¶ÃΤ¹¤ë¡£";
-#else
-               if (name) return "Detect Doors & Traps";
-               if (desc) return "Detects traps, doors, and stairs in your vicinity.";
-#endif
+       case 8:
+               if (name) return _("罠と扉 感知", "Detect Doors & Traps");
+               if (desc) return _("近くの全ての罠と扉と階段を感知する。", "Detects traps, doors, and stairs in your vicinity.");
     
                {
                        int rad = DETECT_RAD_DEFAULT;
@@ -6864,14 +4821,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_PHLOGISTON:
-#ifdef JP
-               if (name) return "dzÁÇ";
-               if (desc) return "¸÷¸»¤ËdzÎÁ¤òÊäµë¤¹¤ë¡£";
-#else
-               if (name) return "Phlogiston";
-               if (desc) return "Adds more turns of light to a lantern or torch.";
-#endif
+       case 9:
+               if (name) return _("燃素", "Phlogiston");
+               if (desc) return _("光源に燃料を補給する。", "Adds more turns of light to a lantern or torch.");
     
                {
                        if (cast)
@@ -6881,14 +4833,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_DETECT_TREASURE:
-#ifdef JP
-               if (name) return "ºâÊõ´¶ÃÎ";
-               if (desc) return "¶á¤¯¤ÎºâÊõ¤ò´¶ÃΤ¹¤ë¡£";
-#else
-               if (name) return "Detect Treasure";
-               if (desc) return "Detects all treasures in your vicinity.";
-#endif
+       case 10:
+               if (name) return _("財宝感知", "Detect Treasure");
+               if (desc) return _("近くの財宝を感知する。", "Detects all treasures in your vicinity.");
     
                {
                        int rad = DETECT_RAD_DEFAULT;
@@ -6903,14 +4850,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_DETECT_ENCHANTMENT:
-#ifdef JP
-               if (name) return "ËâË¡ ´¶ÃÎ";
-               if (desc) return "¶á¤¯¤ÎËâË¡¤¬¤«¤«¤Ã¤¿¥¢¥¤¥Æ¥à¤ò´¶ÃΤ¹¤ë¡£";
-#else
-               if (name) return "Detect Enchantment";
-               if (desc) return "Detects all magical items in your vicinity.";
-#endif
+       case 11:
+               if (name) return _("魔法 感知", "Detect Enchantment");
+               if (desc) return _("近くの魔法がかかったアイテムを感知する。", "Detects all magical items in your vicinity.");
     
                {
                        int rad = DETECT_RAD_DEFAULT;
@@ -6924,14 +4866,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_DETECT_OBJECTS:
-#ifdef JP
-               if (name) return "¥¢¥¤¥Æ¥à´¶ÃÎ";
-               if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î¥¢¥¤¥Æ¥à¤ò´¶ÃΤ¹¤ë¡£";
-#else
-               if (name) return "Detect Objects";
-               if (desc) return "Detects all items in your vicinity.";
-#endif
+       case 12:
+               if (name) return _("アイテム感知", "Detect Objects");
+               if (desc) return _("近くの全てのアイテムを感知する。", "Detects all items in your vicinity.");
     
                {
                        int rad = DETECT_RAD_DEFAULT;
@@ -6945,14 +4882,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_CURE_POISON:
-#ifdef JP
-               if (name) return "²òÆÇ";
-               if (desc) return "ÆǤòÂÎÆ⤫¤é´°Á´¤Ë¼è¤ê½ü¤¯¡£";
-#else
-               if (name) return "Cure Poison";
-               if (desc) return "Cures poison status.";
-#endif
+       case 13:
+               if (name) return _("解毒", "Cure Poison");
+               if (desc) return _("毒を体内から完全に取り除く。", "Cures poison status.");
     
                {
                        if (cast)
@@ -6962,14 +4894,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_RESIST_COLD:
-#ifdef JP
-               if (name) return "ÂÑÎä";
-               if (desc) return "°ìÄê»þ´Ö¡¢Î䵤¤Ø¤ÎÂÑÀ­¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ­¤ËÎßÀѤ¹¤ë¡£";
-#else
-               if (name) return "Resist Cold";
-               if (desc) return "Gives resistance to cold. This resistance can be added to which from equipment for more powerful resistance.";
-#endif
+       case 14:
+               if (name) return _("耐冷", "Resist Cold");
+               if (desc) return _("一定時間、冷気への耐性を得る。装備による耐性に累積する。", "Gives resistance to cold. This resistance can be added to which from equipment for more powerful resistance.");
     
                {
                        int base = 20;
@@ -6983,14 +4910,10 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_RESIST_FIRE:
-#ifdef JP
-               if (name) return "ÂѲÐ";
-               if (desc) return "°ìÄê»þ´Ö¡¢±ê¤Ø¤ÎÂÑÀ­¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ­¤ËÎßÀѤ¹¤ë¡£";
-#else
-               if (name) return "Resist Fire";
-               if (desc) return "Gives resistance to fire. This resistance can be added to which from equipment for more powerful resistance.";
-#endif
+       case 15:
+               if (name) return _("耐火", "Resist Fire");
+               if (desc) return _("一定時間、炎への耐性を得る。装備による耐性に累積する。", 
+                       "Gives resistance to fire. This resistance can be added to which from equipment for more powerful resistance.");
     
                {
                        int base = 20;
@@ -7004,14 +4927,10 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_RESIST_LIGHTNING:
-#ifdef JP
-               if (name) return "ÂÑÅÅ";
-               if (desc) return "°ìÄê»þ´Ö¡¢ÅÅ·â¤Ø¤ÎÂÑÀ­¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ­¤ËÎßÀѤ¹¤ë¡£";
-#else
-               if (name) return "Resist Lightning";
-               if (desc) return "Gives resistance to electricity. This resistance can be added to which from equipment for more powerful resistance.";
-#endif
+       case 16:
+               if (name) return _("耐電", "Resist Lightning");
+               if (desc) return _("一定時間、電撃への耐性を得る。装備による耐性に累積する。", 
+                       "Gives resistance to electricity. This resistance can be added to which from equipment for more powerful resistance.");
     
                {
                        int base = 20;
@@ -7025,14 +4944,10 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_RESIST_ACID:
-#ifdef JP
-               if (name) return "ÂÑ»À";
-               if (desc) return "°ìÄê»þ´Ö¡¢»À¤Ø¤ÎÂÑÀ­¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ­¤ËÎßÀѤ¹¤ë¡£";
-#else
-               if (name) return "Resist Acid";
-               if (desc) return "Gives resistance to acid. This resistance can be added to which from equipment for more powerful resistance.";
-#endif
+       case 17:
+               if (name) return _("耐酸", "Resist Acid");
+               if (desc) return _("一定時間、酸への耐性を得る。装備による耐性に累積する。", 
+                       "Gives resistance to acid. This resistance can be added to which from equipment for more powerful resistance.");
     
                {
                        int base = 20;
@@ -7046,14 +4961,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_CURE_MEDIUM_WOUNDS:
-#ifdef JP
-               if (name) return "½Å½ý¤Î¼£Ìþ";
-               if (desc) return "²ø²æ¤ÈÂÎÎϤòÃæÄøÅÙ²óÉü¤µ¤»¤ë¡£";
-#else
-               if (name) return "Cure Medium Wounds";
-               if (desc) return "Heals cut and HP more.";
-#endif
+       case 18:
+               if (name) return _("重傷の治癒", "Cure Medium Wounds");
+               if (desc) return _("怪我と体力を中程度回復させる。", "Heals cut and HP more.");
     
                {
                        int dice = 4;
@@ -7069,35 +4979,25 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_TELEPORT:
-#ifdef JP
-               if (name) return "¥Æ¥ì¥Ý¡¼¥È";
-               if (desc) return "±óµ÷Î¥¤Î¥Æ¥ì¥Ý¡¼¥È¤ò¤¹¤ë¡£";
-#else
-               if (name) return "Teleport";
-               if (desc) return "Teleport long distance.";
-#endif
+       case 19:
+               if (name) return _("テレポート", "Teleport");
+               if (desc) return _("遠距離のテレポートをする。", "Teleport long distance.");
     
                {
-                       int range = plev * 5;
+                       POSITION range = plev * 5;
 
                        if (info) return info_range(range);
 
                        if (cast)
                        {
-                               teleport_player(range, FALSE);
+                               teleport_player(range, 0L);
                        }
                }
                break;
 
-       case ARCA_SPEL_IDENTIFY:
-#ifdef JP
-               if (name) return "´ÕÄê";
-               if (desc) return "¥¢¥¤¥Æ¥à¤ò¼±Ê̤¹¤ë¡£";
-#else
-               if (name) return "Identify";
-               if (desc) return "Identifies an item.";
-#endif
+       case 20:
+               if (name) return _("鑑定", "Identify");
+               if (desc) return _("アイテムを識別する。", "Identifies an item.");
     
                {
                        if (cast)
@@ -7107,14 +5007,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_STONE_TO_MUD:
-#ifdef JP
-               if (name) return "´äÀÐÍϲò";
-               if (desc) return "ÊɤòÍϤ«¤·¤Æ¾²¤Ë¤¹¤ë¡£";
-#else
-               if (name) return "Stone to Mud";
-               if (desc) return "Turns one rock square to mud.";
-#endif
+       case 21:
+               if (name) return _("岩石溶解", "Stone to Mud");
+               if (desc) return _("壁を溶かして床にする。", "Turns one rock square to mud.");
     
                {
                        int dice = 1;
@@ -7127,19 +5022,14 @@ cptr do_spell(int realm, int spell, int mode)
                        {
                                if (!get_aim_dir(&dir)) return NULL;
 
-                               wall_to_mud(dir);
+                               wall_to_mud(dir, 20 + randint1(30));
                        }
                }
                break;
 
-       case ARCA_SPEL_RAY_OF_LIGHT:
-#ifdef JP
-               if (name) return "Á®¸÷";
-               if (desc) return "¸÷Àþ¤òÊü¤Ä¡£¸÷¤ê¤ò·ù¤¦¥â¥ó¥¹¥¿¡¼¤Ë¸ú²Ì¤¬¤¢¤ë¡£";
-#else
-               if (name) return "Ray of Light";
-               if (desc) return "Fires a beam of light which damages to light-sensitive monsters.";
-#endif
+       case 22:
+               if (name) return _("閃光", "Ray of Light");
+               if (desc) return _("光線を放つ。光りを嫌うモンスターに効果がある。", "Fires a beam of light which damages to light-sensitive monsters.");
     
                {
                        int dice = 6;
@@ -7151,25 +5041,15 @@ cptr do_spell(int realm, int spell, int mode)
                        {
                                if (!get_aim_dir(&dir)) return NULL;
 
-#ifdef JP
-                               msg_print("¸÷Àþ¤¬Êü¤¿¤ì¤¿¡£");
-#else
-                               msg_print("A line of light appears.");
-#endif
-
-                               lite_line(dir);
+                               msg_print(_("光線が放たれた。", "A line of light appears."));
+                               lite_line(dir, damroll(6, 8));
                        }
                }
                break;
 
-       case ARCA_SPEL_SATISFY_HUNGER:
-#ifdef JP
-               if (name) return "¶õÊ¢½¼Â­";
-               if (desc) return "ËþÊ¢¤Ë¤¹¤ë¡£";
-#else
-               if (name) return "Satisfy Hunger";
-               if (desc) return "Satisfies hunger.";
-#endif
+       case 23:
+               if (name) return _("空腹充足", "Satisfy Hunger");
+               if (desc) return _("満腹にする。", "Satisfies hunger.");
     
                {
                        if (cast)
@@ -7179,14 +5059,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_SEE_INVISIBLE:
-#ifdef JP
-               if (name) return "Æ©ÌÀ»ëǧ";
-               if (desc) return "°ìÄê»þ´Ö¡¢Æ©ÌÀ¤Ê¤â¤Î¤¬¸«¤¨¤ë¤è¤¦¤Ë¤Ê¤ë¡£";
-#else
-               if (name) return "See Invisible";
-               if (desc) return "Gives see invisible for a while.";
-#endif
+       case 24:
+               if (name) return _("透明視認", "See Invisible");
+               if (desc) return _("一定時間、透明なものが見えるようになる。", "Gives see invisible for a while.");
     
                {
                        int base = 24;
@@ -7200,60 +5075,37 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_CONJURE_ELEMENTAL:
-#ifdef JP
-               if (name) return "¥¨¥ì¥á¥ó¥¿¥ë¾¤´­";
-               if (desc) return "1ÂΤΥ¨¥ì¥á¥ó¥¿¥ë¤ò¾¤´­¤¹¤ë¡£";
-#else
-               if (name) return "Conjure Elemental";
-               if (desc) return "Summons an elemental.";
-#endif
+       case 25:
+               if (name) return _("エレメンタル召喚", "Conjure Elemental");
+               if (desc) return _("1体のエレメンタルを召喚する。", "Summons an elemental.");
     
                {
                        if (cast)
                        {
-                               if (!summon_specific(-1, py, px, plev, SUMMON_ELEMENTAL, (PM_ALLOW_GROUP | PM_FORCE_PET)))
+                               if (!summon_specific(-1, p_ptr->y, p_ptr->x, plev, SUMMON_ELEMENTAL, (PM_ALLOW_GROUP | PM_FORCE_PET)))
                                {
-#ifdef JP
-                                       msg_print("¥¨¥ì¥á¥ó¥¿¥ë¤Ï¸½¤ì¤Ê¤«¤Ã¤¿¡£");
-#else
-                                       msg_print("No Elementals arrive.");
-#endif
+                                       msg_print(_("エレメンタルは現れなかった。", "No Elementals arrive."));
                                }
                        }
                }
                break;
 
-       case ARCA_SPEL_TELEPORT_LEVEL:
-#ifdef JP
-               if (name) return "¥Æ¥ì¥Ý¡¼¥È¡¦¥ì¥Ù¥ë";
-               if (desc) return "½Ö»þ¤Ë¾å¤«²¼¤Î³¬¤Ë¥Æ¥ì¥Ý¡¼¥È¤¹¤ë¡£";
-#else
-               if (name) return "Teleport Level";
-               if (desc) return "Teleport to up or down stairs in a moment.";
-#endif
+       case 26:
+               if (name) return _("テレポート・レベル", "Teleport Level");
+               if (desc) return _("瞬時に上か下の階にテレポートする。", "Teleport to up or down stairs in a moment.");
     
                {
                        if (cast)
                        {
-#ifdef JP
-                               if (!get_check("ËÜÅö¤Ë¾¤Î³¬¤Ë¥Æ¥ì¥Ý¡¼¥È¤·¤Þ¤¹¤«¡©")) return NULL;
-#else
-                               if (!get_check("Are you sure? (Teleport Level)")) return NULL;
-#endif
+                               if (!get_check(_("本当に他の階にテレポートしますか?", "Are you sure? (Teleport Level)"))) return NULL;
                                teleport_level(0);
                        }
                }
                break;
 
-       case ARCA_SPEL_TELEPORT_AWAY:
-#ifdef JP
-               if (name) return "¥Æ¥ì¥Ý¡¼¥È¡¦¥â¥ó¥¹¥¿¡¼";
-               if (desc) return "¥â¥ó¥¹¥¿¡¼¤ò¥Æ¥ì¥Ý¡¼¥È¤µ¤»¤ë¥Ó¡¼¥à¤òÊü¤Ä¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
-#else
-               if (name) return "Teleport Away";
-               if (desc) return "Teleports all monsters on the line away unless resisted.";
-#endif
+       case 27:
+               if (name) return _("テレポート・モンスター", "Teleport Away");
+               if (desc) return _("モンスターをテレポートさせるビームを放つ。抵抗されると無効。", "Teleports all monsters on the line away unless resisted.");
     
                {
                        int power = plev;
@@ -7269,17 +5121,12 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_ELEMENTAL_BALL:
-#ifdef JP
-               if (name) return "¸µÁǤεå";
-               if (desc) return "±ê¡¢ÅÅ·â¡¢Î䵤¡¢»À¤Î¤É¤ì¤«¤Îµå¤òÊü¤Ä¡£";
-#else
-               if (name) return "Elemental Ball";
-               if (desc) return "Fires a ball of some elements.";
-#endif
+       case 28:
+               if (name) return _("元素の球", "Elemental Ball");
+               if (desc) return _("炎、電撃、冷気、酸のどれかの球を放つ。", "Fires a ball of some elements.");
     
                {
-                       int dam = 75 + plev;
+                       HIT_POINT dam = 75 + plev;
                        int rad = 2;
 
                        if (info) return info_damage(0, 0, dam);
@@ -7303,14 +5150,10 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_DETECTION:
-#ifdef JP
-               if (name) return "Á´´¶ÃÎ";
-               if (desc) return "¶á¤¯¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¡¢æ«¡¢Èâ¡¢³¬ÃÊ¡¢ºâÊõ¡¢¤½¤·¤Æ¥¢¥¤¥Æ¥à¤ò´¶ÃΤ¹¤ë¡£";
-#else
-               if (name) return "Detection";
-               if (desc) return "Detects all monsters, traps, doors, stairs, treasures and items in your vicinity.";
-#endif
+       case 29:
+               if (name) return _("全感知", "Detection");
+               if (desc) return _("近くの全てのモンスター、罠、扉、階段、財宝、そしてアイテムを感知する。", 
+                       "Detects all monsters, traps, doors, stairs, treasures and items in your vicinity.");
     
                {
                        int rad = DETECT_RAD_DEFAULT;
@@ -7324,14 +5167,10 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_WORD_OF_RECALL:
-#ifdef JP
-               if (name) return "µ¢´Ô¤Î¼öʸ";
-               if (desc) return "ÃϾå¤Ë¤¤¤ë¤È¤­¤Ï¥À¥ó¥¸¥ç¥ó¤ÎºÇ¿¼³¬¤Ø¡¢¥À¥ó¥¸¥ç¥ó¤Ë¤¤¤ë¤È¤­¤ÏÃϾå¤Ø¤È°ÜÆ°¤¹¤ë¡£";
-#else
-               if (name) return "Word of Recall";
-               if (desc) return "Recalls player from dungeon to town, or from town to the deepest level of dungeon.";
-#endif
+       case 30:
+               if (name) return _("帰還の呪文", "Word of Recall");
+               if (desc) return _("地上にいるときはダンジョンの最深階へ、ダンジョンにいるときは地上へと移動する。", 
+                       "Recalls player from dungeon to town, or from town to the deepest level of dungeon.");
     
                {
                        int base = 15;
@@ -7346,14 +5185,10 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case ARCA_SPEL_CLAIRVOYANCE:
-#ifdef JP
-               if (name) return "ÀéΤ´ã";
-               if (desc) return "¤½¤Î³¬Á´ÂΤò±Êµ×¤Ë¾È¤é¤·¡¢¥À¥ó¥¸¥ç¥óÆ⤹¤Ù¤Æ¤Î¥¢¥¤¥Æ¥à¤ò´¶ÃΤ¹¤ë¡£¤µ¤é¤Ë¡¢°ìÄê»þ´Ö¥Æ¥ì¥Ñ¥·¡¼Ç½ÎϤòÆÀ¤ë¡£";
-#else
-               if (name) return "Clairvoyance";
-               if (desc) return "Maps and lights whole dungeon level. Knows all objects location. And gives telepathy for a while.";
-#endif
+       case 31:
+               if (name) return _("千里眼", "Clairvoyance");
+               if (desc) return _("その階全体を永久に照らし、ダンジョン内すべてのアイテムを感知する。さらに、一定時間テレパシー能力を得る。", 
+                       "Maps and lights whole dungeon level. Knows all objects location. And gives telepathy for a while.");
     
                {
                        int base = 25;
@@ -7375,15 +5210,31 @@ cptr do_spell(int realm, int spell, int mode)
                        }
                }
                break;
+       }
 
-       case CRAF_SPEL_INFRAVISION:
-#ifdef JP
-               if (name) return "ÀÖ³°Àþ»ëÎÏ";
-               if (desc) return "°ìÄê»þ´Ö¡¢ÀÖ³°Àþ»ëÎϤ¬Áý¶¯¤µ¤ì¤ë¡£";
-#else
-               if (name) return "Infravision";
-               if (desc) return "Gives infravision for a while.";
-#endif
+       return "";
+}
+
+/*!
+ * @brief 匠領域魔法の各処理を行う
+ * @param spell 魔法ID
+ * @param mode 処理内容 (SPELL_NAME / SPELL_DESC / SPELL_INFO / SPELL_CAST)
+ * @return SPELL_NAME / SPELL_DESC / SPELL_INFO 時には文字列ポインタを返す。SPELL_CAST時はNULL文字列を返す。
+ */
+static cptr do_craft_spell(SPELL_IDX spell, BIT_FLAGS mode)
+{
+       bool name = (mode == SPELL_NAME) ? TRUE : FALSE;
+       bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;
+       bool info = (mode == SPELL_INFO) ? TRUE : FALSE;
+       bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;
+
+       int plev = p_ptr->lev;
+
+       switch (spell)
+       {
+       case 0:
+               if (name) return _("赤外線視力", "Infravision");
+               if (desc) return _("一定時間、赤外線視力が増強される。", "Gives infravision for a while.");
     
                {
                        int base = 100;
@@ -7397,14 +5248,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_REGENERATION:
-#ifdef JP
-               if (name) return "²óÉüÎ϶¯²½";
-               if (desc) return "°ìÄê»þ´Ö¡¢²óÉüÎϤ¬Áý¶¯¤µ¤ì¤ë¡£";
-#else
-               if (name) return "Regeneration";
-               if (desc) return "Gives regeneration ability for a while.";
-#endif
+       case 1:
+               if (name) return _("回復力強化", "Regeneration");
+               if (desc) return _("一定時間、回復力が増強される。", "Gives regeneration ability for a while.");
     
                {
                        int base = 80;
@@ -7418,14 +5264,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_SATISFY_HUNGER:
-#ifdef JP
-               if (name) return "¶õÊ¢½¼Â­";
-               if (desc) return "ËþÊ¢¤Ë¤Ê¤ë¡£";
-#else
-               if (name) return "Satisfy Hunger";
-               if (desc) return "Satisfies hunger.";
-#endif
+       case 2:
+               if (name) return _("空腹充足", "Satisfy Hunger");
+               if (desc) return _("満腹になる。", "Satisfies hunger.");
     
                {
                        if (cast)
@@ -7435,14 +5276,10 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_RESIST_COLD:
-#ifdef JP
-               if (name) return "ÂÑÎ䵤";
-               if (desc) return "°ìÄê»þ´Ö¡¢Î䵤¤Ø¤ÎÂÑÀ­¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ­¤ËÎßÀѤ¹¤ë¡£";
-#else
-               if (name) return "Resist Cold";
-               if (desc) return "Gives resistance to cold. This resistance can be added to which from equipment for more powerful resistance.";
-#endif
+       case 3:
+               if (name) return _("耐冷気", "Resist Cold");
+               if (desc) return _("一定時間、冷気への耐性を得る。装備による耐性に累積する。", 
+                       "Gives resistance to cold. This resistance can be added to which from equipment for more powerful resistance.");
     
                {
                        int base = 20;
@@ -7456,14 +5293,10 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_RESIST_FIRE:
-#ifdef JP
-               if (name) return "ÂѲбê";
-               if (desc) return "°ìÄê»þ´Ö¡¢±ê¤Ø¤ÎÂÑÀ­¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ­¤ËÎßÀѤ¹¤ë¡£";
-#else
-               if (name) return "Resist Fire";
-               if (desc) return "Gives resistance to fire. This resistance can be added to which from equipment for more powerful resistance.";
-#endif
+       case 4:
+               if (name) return _("耐火炎", "Resist Fire");
+               if (desc) return _("一定時間、炎への耐性を得る。装備による耐性に累積する。", 
+                       "Gives resistance to fire. This resistance can be added to which from equipment for more powerful resistance.");
     
                {
                        int base = 20;
@@ -7477,14 +5310,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_HEROISM:
-#ifdef JP
-               if (name) return "»Îµ¤¹âÍÈ";
-               if (desc) return "°ìÄê»þ´Ö¡¢¥Ò¡¼¥í¡¼µ¤Ê¬¤Ë¤Ê¤ë¡£";
-#else
-               if (name) return "Heroism";
-               if (desc) return "Removes fear, and gives bonus to hit and 10 more HP for a while.";
-#endif
+       case 5:
+               if (name) return _("士気高揚", "Heroism");
+               if (desc) return _("一定時間、ヒーロー気分になる。", "Removes fear, and gives bonus to hit and 10 more HP for a while.");
     
                {
                        int base = 25;
@@ -7500,14 +5328,10 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_RESIST_LIGHTNING:
-#ifdef JP
-               if (name) return "ÂÑÅÅ·â";
-               if (desc) return "°ìÄê»þ´Ö¡¢ÅÅ·â¤Ø¤ÎÂÑÀ­¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ­¤ËÎßÀѤ¹¤ë¡£";
-#else
-               if (name) return "Resist Lightning";
-               if (desc) return "Gives resistance to electricity. This resistance can be added to which from equipment for more powerful resistance.";
-#endif
+       case 6:
+               if (name) return _("耐電撃", "Resist Lightning");
+               if (desc) return _("一定時間、電撃への耐性を得る。装備による耐性に累積する。",
+                       "Gives resistance to electricity. This resistance can be added to which from equipment for more powerful resistance.");
     
                {
                        int base = 20;
@@ -7521,14 +5345,10 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_RESIST_ACID:
-#ifdef JP
-               if (name) return "ÂÑ»À";
-               if (desc) return "°ìÄê»þ´Ö¡¢»À¤Ø¤ÎÂÑÀ­¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ­¤ËÎßÀѤ¹¤ë¡£";
-#else
-               if (name) return "Resist Acid";
-               if (desc) return "Gives resistance to acid. This resistance can be added to which from equipment for more powerful resistance.";
-#endif
+       case 7:
+               if (name) return _("耐酸", "Resist Acid");
+               if (desc) return _("一定時間、酸への耐性を得る。装備による耐性に累積する。",
+                       "Gives resistance to acid. This resistance can be added to which from equipment for more powerful resistance.");
     
                {
                        int base = 20;
@@ -7542,14 +5362,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_SEE_INVISIBILITY:
-#ifdef JP
-               if (name) return "Æ©ÌÀ»ëǧ";
-               if (desc) return "°ìÄê»þ´Ö¡¢Æ©ÌÀ¤Ê¤â¤Î¤¬¸«¤¨¤ë¤è¤¦¤Ë¤Ê¤ë¡£";
-#else
-               if (name) return "See Invisibility";
-               if (desc) return "Gives see invisible for a while.";
-#endif
+       case 8:
+               if (name) return _("透明視認", "See Invisibility");
+               if (desc) return _("一定時間、透明なものが見えるようになる。", "Gives see invisible for a while.");
     
                {
                        int base = 24;
@@ -7563,38 +5378,25 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_REMOVE_CURSE:
-#ifdef JP
-               if (name) return "²ò¼ö";
-               if (desc) return "¥¢¥¤¥Æ¥à¤Ë¤«¤«¤Ã¤¿¼å¤¤¼ö¤¤¤ò²ò½ü¤¹¤ë¡£";
-#else
-               if (name) return "Remove Curse";
-               if (desc) return "Removes normal curses from equipped items.";
-#endif
+       case 9:
+               if (name) return _("解呪", "Remove Curse");
+               if (desc) return _("アイテムにかかった弱い呪いを解除する。", "Removes normal curses from equipped items.");
     
                {
                        if (cast)
                        {
                                if (remove_curse())
                                {
-#ifdef JP
-                                       msg_print("狼¤Ë¸«¼é¤é¤ì¤Æ¤¤¤ë¤è¤¦¤Êµ¤¤¬¤¹¤ë¡£");
-#else
-                                       msg_print("You feel as if someone is watching over you.");
-#endif
+                                       msg_print(_("誰かに見守られているような気がする。", "You feel as if someone is watching over you."));
                                }
                        }
                }
                break;
 
-       case CRAF_SPEL_RESIST_POISON:
-#ifdef JP
-               if (name) return "ÂÑÆÇ";
-               if (desc) return "°ìÄê»þ´Ö¡¢ÆǤؤÎÂÑÀ­¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ­¤ËÎßÀѤ¹¤ë¡£";
-#else
-               if (name) return "Resist Poison";
-               if (desc) return "Gives resistance to poison. This resistance can be added to which from equipment for more powerful resistance.";
-#endif
+       case 10:
+               if (name) return _("耐毒", "Resist Poison");
+               if (desc) return _("一定時間、毒への耐性を得る。装備による耐性に累積する。",
+                       "Gives resistance to poison. This resistance can be added to which from equipment for more powerful resistance.");
     
                {
                        int base = 20;
@@ -7608,14 +5410,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_BERSERK:
-#ifdef JP
-               if (name) return "¶¸Àï»Î²½";
-               if (desc) return "¶¸Àï»Î²½¤·¡¢¶²Éݤò½üµî¤¹¤ë¡£";
-#else
-               if (name) return "Berserk";
-               if (desc) return "Gives bonus to hit and HP, immunity to fear for a while. But decreases AC.";
-#endif
+       case 11:
+               if (name) return _("狂戦士化", "Berserk");
+               if (desc) return _("狂戦士化し、恐怖を除去する。", "Gives bonus to hit and HP, immunity to fear for a while. But decreases AC.");
     
                {
                        int base = 25;
@@ -7631,14 +5428,10 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_SELF_KNOWLEDGE:
-#ifdef JP
-               if (name) return "¼«¸ÊʬÀÏ";
-               if (desc) return "¸½ºß¤Î¼«Ê¬¤Î¾õÂÖ¤ò´°Á´¤ËÃΤ롣";
-#else
-               if (name) return "Self Knowledge";
-               if (desc) return "Gives you useful info regarding your current resistances, the powers of your weapon and maximum limits of your stats.";
-#endif
+       case 12:
+               if (name) return _("自己分析", "Self Knowledge");
+               if (desc) return _("現在の自分の状態を完全に知る。",
+                       "Gives you useful info regarding your current resistances, the powers of your weapon and maximum limits of your stats.");
     
                {
                        if (cast)
@@ -7648,14 +5441,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_PROTECTION_FROM_EVIL:
-#ifdef JP
-               if (name) return "Âмٰ­·ë³¦";
-               if (desc) return "¼Ù°­¤Ê¥â¥ó¥¹¥¿¡¼¤Î¹¶·â¤òËɤ°¥Ð¥ê¥¢¤òÄ¥¤ë¡£";
-#else
-               if (name) return "Protection from Evil";
-               if (desc) return "Gives aura which protect you from evil monster's physical attack.";
-#endif
+       case 13:
+               if (name) return _("対邪悪結界", "Protection from Evil");
+               if (desc) return _("邪悪なモンスターの攻撃を防ぐバリアを張る。", "Gives aura which protect you from evil monster's physical attack.");
     
                {
                        int base = 3 * plev;
@@ -7670,14 +5458,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_CURE:
-#ifdef JP
-               if (name) return "Ìþ¤·";
-               if (desc) return "ÆÇ¡¢Û¯Û°¾õÂÖ¡¢Éé½ý¤òÁ´²÷¤µ¤»¡¢¸¸³Ð¤òľ¤¹¡£";
-#else
-               if (name) return "Cure";
-               if (desc) return "Heals poison, stun, cut and hallucination completely.";
-#endif
+       case 14:
+               if (name) return _("癒し", "Cure");
+               if (desc) return _("毒、朦朧状態、負傷を全快させ、幻覚を直す。", "Heals poison, stun, cut and hallucination completely.");
     
                {
                        if (cast)
@@ -7690,14 +5473,10 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_MANA_BRANDING:
-#ifdef JP
-               if (name) return "ËâË¡·õ";
-               if (desc) return "°ìÄê»þ´Ö¡¢Éð´ï¤ËÎ䵤¡¢±ê¡¢ÅÅ·â¡¢»À¡¢ÆǤΤ¤¤º¤ì¤«¤Î°À­¤ò¤Ä¤±¤ë¡£Éð´ï¤ò»ý¤¿¤Ê¤¤¤È»È¤¨¤Ê¤¤¡£";
-#else
-               if (name) return "Mana Branding";
-               if (desc) return "Makes current weapon some elemental branded. You must wield weapons.";
-#endif
+       case 15:
+               if (name) return _("魔法剣", "Mana Branding");
+               if (desc) return _("一定時間、武器に冷気、炎、電撃、酸、毒のいずれかの属性をつける。武器を持たないと使えない。",
+                       "Makes current weapon some elemental branded. You must wield weapons.");
     
                {
                        int base = plev / 2;
@@ -7711,14 +5490,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_TELEPATHY:
-#ifdef JP
-               if (name) return "¥Æ¥ì¥Ñ¥·¡¼";
-               if (desc) return "°ìÄê»þ´Ö¡¢¥Æ¥ì¥Ñ¥·¡¼Ç½ÎϤòÆÀ¤ë¡£";
-#else
-               if (name) return "Telepathy";
-               if (desc) return "Gives telepathy for a while.";
-#endif
+       case 16:
+               if (name) return _("テレパシー", "Telepathy");
+               if (desc) return _("一定時間、テレパシー能力を得る。", "Gives telepathy for a while.");
     
                {
                        int base = 25;
@@ -7733,14 +5507,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_STONE_SKIN:
-#ifdef JP
-               if (name) return "È©Àв½";
-               if (desc) return "°ìÄê»þ´Ö¡¢AC¤ò¾å¾º¤µ¤»¤ë¡£";
-#else
-               if (name) return "Stone Skin";
-               if (desc) return "Gives bonus to AC for a while.";
-#endif
+       case 17:
+               if (name) return _("肌石化", "Stone Skin");
+               if (desc) return _("一定時間、ACを上昇させる。", "Gives bonus to AC for a while.");
     
                {
                        int base = 30;
@@ -7755,14 +5524,10 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_RESISTANCE:
-#ifdef JP
-               if (name) return "Á´ÂÑÀ­";
-               if (desc) return "°ìÄê»þ´Ö¡¢»À¡¢ÅÅ·â¡¢±ê¡¢Î䵤¡¢ÆǤËÂФ¹¤ëÂÑÀ­¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ­¤ËÎßÀѤ¹¤ë¡£";
-#else
-               if (name) return "Resistance";
-               if (desc) return "Gives resistance to fire, cold, electricity, acid and poison for a while. These resistances can be added to which from equipment for more powerful resistances.";
-#endif
+       case 18:
+               if (name) return _("全耐性", "Resistance");
+               if (desc) return _("一定時間、酸、電撃、炎、冷気、毒に対する耐性を得る。装備による耐性に累積する。", 
+                       "Gives resistance to fire, cold, electricity, acid and poison for a while. These resistances can be added to which from equipment for more powerful resistances.");
     
                {
                        int base = 20;
@@ -7780,14 +5545,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_HASTE_SELF:
-#ifdef JP
-               if (name) return "¥¹¥Ô¡¼¥É";
-               if (desc) return "°ìÄê»þ´Ö¡¢²Ã®¤¹¤ë¡£";
-#else
-               if (name) return "Haste Self";
-               if (desc) return "Hastes you for a while.";
-#endif
+       case 19:
+               if (name) return _("スピード", "Haste Self");
+               if (desc) return _("一定時間、加速する。", "Hastes you for a while.");
     
                {
                        int base = plev;
@@ -7802,14 +5562,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_WALK_THROUGH_WALL:
-#ifdef JP
-               if (name) return "ÊÉÈ´¤±";
-               if (desc) return "°ìÄê»þ´Ö¡¢È¾Êª¼Á²½¤·ÊɤòÄ̤êÈ´¤±¤é¤ì¤ë¤è¤¦¤Ë¤Ê¤ë¡£";
-#else
-               if (name) return "Walk through Wall";
-               if (desc) return "Gives ability to pass walls for a while.";
-#endif
+       case 20:
+               if (name) return _("壁抜け", "Walk through Wall");
+               if (desc) return _("一定時間、半物質化し壁を通り抜けられるようになる。", "Gives ability to pass walls for a while.");
     
                {
                        int base = plev / 2;
@@ -7823,14 +5578,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_POLISH_SHIELD:
-#ifdef JP
-               if (name) return "½âË᤭";
-               if (desc) return "½â¤ËÈ¿¼Í¤Î°À­¤ò¤Ä¤±¤ë¡£";
-#else
-               if (name) return "Polish Shield";
-               if (desc) return "Makes a shield a shield of reflection.";
-#endif
+       case 21:
+               if (name) return _("盾磨き", "Polish Shield");
+               if (desc) return _("盾に反射の属性をつける。", "Makes a shield a shield of reflection.");
     
                {
                        if (cast)
@@ -7840,46 +5590,29 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_CREATE_GOLEM:
-#ifdef JP
-               if (name) return "¥´¡¼¥ì¥àÀ½Â¤";
-               if (desc) return "1ÂΤΥ´¡¼¥ì¥à¤òÀ½Â¤¤¹¤ë¡£";
-#else
-               if (name) return "Create Golem";
-               if (desc) return "Creates a golem.";
-#endif
+       case 22:
+               if (name) return _("ゴーレム製造", "Create Golem");
+               if (desc) return _("1体のゴーレムを製造する。", "Creates a golem.");
     
                {
                        if (cast)
                        {
-                               if (summon_specific(-1, py, px, plev, SUMMON_GOLEM, PM_FORCE_PET))
+                               if (summon_specific(-1, p_ptr->y, p_ptr->x, plev, SUMMON_GOLEM, PM_FORCE_PET))
                                {
-#ifdef JP
-                                       msg_print("¥´¡¼¥ì¥à¤òºî¤Ã¤¿¡£");
-#else
-                                       msg_print("You make a golem.");
-#endif
+                                       msg_print(_("ゴーレムを作った。", "You make a golem."));
                                }
                                else
                                {
-#ifdef JP
-                                       msg_print("¤¦¤Þ¤¯¥´¡¼¥ì¥à¤òºî¤ì¤Ê¤«¤Ã¤¿¡£");
-#else
-                                       msg_print("No Golems arrive.");
-#endif
+                                       msg_print(_("うまくゴーレムを作れなかった。", "No Golems arrive."));
                                }
                        }
                }
                break;
 
-       case CRAF_SPEL_MAGICAL_ARMOR:
-#ifdef JP
-               if (name) return "ËâË¡¤Î³»";
-               if (desc) return "°ìÄê»þ´Ö¡¢ËâË¡ËɸæÎϤÈAC¤¬¾å¤¬¤ê¡¢º®Íð¤ÈÌÕÌܤÎÂÑÀ­¡¢È¿¼ÍǽÎÏ¡¢ËãáãÃΤ餺¡¢ÉâÍ·¤òÆÀ¤ë¡£";
-#else
-               if (name) return "Magical armor";
-               if (desc) return "Gives resistance to magic, bonus to AC, resistance to confusion, blindness, reflection, free action and levitation for a while.";
-#endif
+       case 23:
+               if (name) return _("魔法の鎧", "Magical armor");
+               if (desc) return _("一定時間、魔法防御力とACが上がり、混乱と盲目の耐性、反射能力、麻痺知らず、浮遊を得る。",
+                       "Gives resistance to magic, bonus to AC, resistance to confusion, blindness, reflection, free action and levitation for a while.");
     
                {
                        int base = 20;
@@ -7893,14 +5626,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_REMOVE_ENCHANTMENT:
-#ifdef JP
-               if (name) return "ÁõÈ÷̵Îϲ½";
-               if (desc) return "Éð´ï¡¦Ëɶñ¤Ë¤«¤±¤é¤ì¤¿¤¢¤é¤æ¤ëËâÎϤò´°Á´¤Ë²ò½ü¤¹¤ë¡£";
-#else
-               if (name) return "Remove Enchantment";
-               if (desc) return "Removes all magics completely from any weapon or armor.";
-#endif
+       case 24:
+               if (name) return _("装備無力化", "Remove Enchantment");
+               if (desc) return _("武器・防具にかけられたあらゆる魔力を完全に解除する。", "Removes all magics completely from any weapon or armor.");
     
                {
                        if (cast)
@@ -7910,38 +5638,24 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_REMOVE_ALL_CURSE:
-#ifdef JP
-               if (name) return "¼ö¤¤Ê´ºÕ";
-               if (desc) return "¥¢¥¤¥Æ¥à¤Ë¤«¤«¤Ã¤¿¶¯ÎϤʼö¤¤¤ò²ò½ü¤¹¤ë¡£";
-#else
-               if (name) return "Remove All Curse";
-               if (desc) return "Removes normal and heavy curse from equipped items.";
-#endif
+       case 25:
+               if (name) return _("呪い粉砕", "Remove All Curse");
+               if (desc) return _("アイテムにかかった強力な呪いを解除する。", "Removes normal and heavy curse from equipped items.");
     
                {
                        if (cast)
                        {
                                if (remove_all_curse())
                                {
-#ifdef JP
-                                       msg_print("狼¤Ë¸«¼é¤é¤ì¤Æ¤¤¤ë¤è¤¦¤Êµ¤¤¬¤¹¤ë¡£");
-#else
-                                       msg_print("You feel as if someone is watching over you.");
-#endif
+                                       msg_print(_("誰かに見守られているような気がする。", "You feel as if someone is watching over you."));
                                }
                        }
                }
                break;
 
-       case CRAF_SPEL_KNOWLEDGE_TRUE:
-#ifdef JP
-               if (name) return "´°Á´¤Ê¤ëÃμ±";
-               if (desc) return "¥¢¥¤¥Æ¥à¤Î»ý¤ÄǽÎϤò´°Á´¤ËÃΤ롣";
-#else
-               if (name) return "Knowledge True";
-               if (desc) return "*Identifies* an item.";
-#endif
+       case 26:
+               if (name) return _("完全なる知識", "Knowledge True");
+               if (desc) return _("アイテムの持つ能力を完全に知る。", "*Identifies* an item.");
     
                {
                        if (cast)
@@ -7951,14 +5665,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_ENCHANT_WEAPON:
-#ifdef JP
-               if (name) return "Éð´ï¶¯²½";
-               if (desc) return "Éð´ï¤ÎÌ¿ÃæΨ½¤Àµ¤È¥À¥á¡¼¥¸½¤Àµ¤ò¶¯²½¤¹¤ë¡£";
-#else
-               if (name) return "Enchant Weapon";
-               if (desc) return "Attempts to increase +to-hit, +to-dam of a weapon.";
-#endif
+       case 27:
+               if (name) return _("武器強化", "Enchant Weapon");
+               if (desc) return _("武器の命中率修正とダメージ修正を強化する。", "Attempts to increase +to-hit, +to-dam of a weapon.");
     
                {
                        if (cast)
@@ -7968,14 +5677,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_ENCHANT_ARMOR:
-#ifdef JP
-               if (name) return "Ëɶñ¶¯²½";
-               if (desc) return "³»¤ÎËɸ潤Àµ¤ò¶¯²½¤¹¤ë¡£";
-#else
-               if (name) return "Enchant Armor";
-               if (desc) return "Attempts to increase +AC of an armor.";
-#endif
+       case 28:
+               if (name) return _("防具強化", "Enchant Armor");
+               if (desc) return _("鎧の防御修正を強化する。", "Attempts to increase +AC of an armor.");
     
                {
                        if (cast)
@@ -7985,14 +5689,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_BRAND_WEAPON:
-#ifdef JP
-               if (name) return "Éð´ï°À­ÉÕÍ¿";
-               if (desc) return "Éð´ï¤Ë¥é¥ó¥À¥à¤Ë°À­¤ò¤Ä¤±¤ë¡£";
-#else
-               if (name) return "Brand Weapon";
-               if (desc) return "Makes current weapon a random ego weapon.";
-#endif
+       case 29:
+               if (name) return _("武器属性付与", "Brand Weapon");
+               if (desc) return _("武器にランダムに属性をつける。", "Makes current weapon a random ego weapon.");
     
                {
                        if (cast)
@@ -8002,14 +5701,10 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRAF_SPEL_LIVING_TRUMP:
-#ifdef JP
-               if (name) return "¿Í´Ö¥È¥é¥ó¥×";
-               if (desc) return "¥é¥ó¥À¥à¤Ë¥Æ¥ì¥Ý¡¼¥È¤¹¤ëÆÍÁ³ÊÑ°Û¤«¡¢¼«Ê¬¤Î°Õ»×¤Ç¥Æ¥ì¥Ý¡¼¥È¤¹¤ëÆÍÁ³ÊÑ°Û¤¬¿È¤Ë¤Ä¤¯¡£";
-#else
-               if (name) return "Living Trump";
-               if (desc) return "Gives mutation which makes you teleport randomly or makes you able to teleport at will.";
-#endif
+       case 30:
+               if (name) return _("人間トランプ", "Living Trump");
+               if (desc) return _("ランダムにテレポートする突然変異か、自分の意思でテレポートする突然変異が身につく。",
+                       "Gives mutation which makes you teleport randomly or makes you able to teleport at will.");
     
                {
                        if (cast)
@@ -8026,24 +5721,16 @@ cptr do_spell(int realm, int spell, int mode)
                                /* Gain the mutation */
                                if (gain_random_mutation(mutation))
                                {
-#ifdef JP
-                                       msg_print("¤¢¤Ê¤¿¤ÏÀ¸¤­¤Æ¤¤¤ë¥«¡¼¥É¤ËÊѤï¤Ã¤¿¡£");
-#else
-                                       msg_print("You have turned into a Living Trump.");
-#endif
+                                       msg_print(_("あなたは生きているカードに変わった。", "You have turned into a Living Trump."));
                                }
                        }
                }
                break;
 
-       case CRAF_SPEL_IMMUNITY:
-#ifdef JP
-               if (name) return "°À­¤Ø¤ÎÌȱÖ";
-               if (desc) return "°ìÄê»þ´Ö¡¢Î䵤¡¢±ê¡¢ÅÅ·â¡¢»À¤Î¤¤¤º¤ì¤«¤ËÂФ¹¤ëÌȱ֤òÆÀ¤ë¡£";
-#else
-               if (name) return "Immunity";
-               if (desc) return "Gives an immunity to fire, cold, electricity or acid for a while.";
-#endif
+       case 31:
+               if (name) return _("属性への免疫", "Immunity");
+               if (desc) return _("一定時間、冷気、炎、電撃、酸のいずれかに対する免疫を得る。",
+                       "Gives an immunity to fire, cold, electricity or acid for a while.");
     
                {
                        int base = 13;
@@ -8056,15 +5743,33 @@ cptr do_spell(int realm, int spell, int mode)
                        }
                }
                break;
+       }
 
-       case DAEM_SPEL_MAGIC_MISSILE:
-#ifdef JP
-               if (name) return "¥Þ¥¸¥Ã¥¯¡¦¥ß¥µ¥¤¥ë";
-               if (desc) return "¼å¤¤ËâË¡¤ÎÌð¤òÊü¤Ä¡£";
-#else
-               if (name) return "Magic Missile";
-               if (desc) return "Fires a weak bolt of magic.";
-#endif
+       return "";
+}
+
+/*!
+ * @brief 悪魔領域魔法の各処理を行う
+ * @param spell 魔法ID
+ * @param mode 処理内容 (SPELL_NAME / SPELL_DESC / SPELL_INFO / SPELL_CAST)
+ * @return SPELL_NAME / SPELL_DESC / SPELL_INFO 時には文字列ポインタを返す。SPELL_CAST時はNULL文字列を返す。
+ */
+static cptr do_daemon_spell(SPELL_IDX spell, BIT_FLAGS mode)
+{
+       bool name = (mode == SPELL_NAME) ? TRUE : FALSE;
+       bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;
+       bool info = (mode == SPELL_INFO) ? TRUE : FALSE;
+       bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;
+       static const char s_dam[] = _("損傷:", "dam ");
+
+       int dir;
+       int plev = p_ptr->lev;
+
+       switch (spell)
+       {
+       case 0:
+               if (name) return _("マジック・ミサイル", "Magic Missile");
+               if (desc) return _("弱い魔法の矢を放つ。", "Fires a weak bolt of magic.");
     
                {
                        int dice = 3 + (plev - 1) / 5;
@@ -8081,14 +5786,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_DETECT_UNLIFE:
-#ifdef JP
-               if (name) return "̵À¸Ì¿´¶ÃÎ";
-               if (desc) return "¶á¤¯¤ÎÀ¸Ì¿¤Î¤Ê¤¤¥â¥ó¥¹¥¿¡¼¤ò´¶ÃΤ¹¤ë¡£";
-#else
-               if (name) return "Detect Unlife";
-               if (desc) return "Detects all nonliving monsters in your vicinity.";
-#endif
+       case 1:
+               if (name) return _("無生命感知", "Detect Unlife");
+               if (desc) return _("近くの生命のないモンスターを感知する。", "Detects all nonliving monsters in your vicinity.");
     
                {
                        int rad = DETECT_RAD_DEFAULT;
@@ -8102,14 +5802,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_EVIL_BLESS:
-#ifdef JP
-               if (name) return "¼Ù¤Ê¤ë½ËÊ¡";
-               if (desc) return "°ìÄê»þ´Ö¡¢Ì¿ÃæΨ¤ÈAC¤Ë¥Ü¡¼¥Ê¥¹¤òÆÀ¤ë¡£";
-#else
-               if (name) return "Evil Bless";
-               if (desc) return "Gives bonus to hit and AC for a few turns.";
-#endif
+       case 2:
+               if (name) return _("邪なる祝福", "Evil Bless");
+               if (desc) return _("一定時間、命中率とACにボーナスを得る。", "Gives bonus to hit and AC for a few turns.");
     
                {
                        int base = 12;
@@ -8123,14 +5818,10 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_RESIST_FIRE:
-#ifdef JP
-               if (name) return "ÂѲбê";
-               if (desc) return "°ìÄê»þ´Ö¡¢±ê¤Ø¤ÎÂÑÀ­¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ­¤ËÎßÀѤ¹¤ë¡£";
-#else
-               if (name) return "Resist Fire";
-               if (desc) return "Gives resistance to fire, cold and electricity for a while. These resistances can be added to which from equipment for more powerful resistances.";
-#endif
+       case 3:
+               if (name) return _("耐火炎", "Resist Fire");
+               if (desc) return _("一定時間、炎への耐性を得る。装備による耐性に累積する。", 
+                       "Gives resistance to fire, cold and electricity for a while. These resistances can be added to which from equipment for more powerful resistances.");
     
                {
                        int base = 20;
@@ -8144,14 +5835,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_HORRIFY:
-#ifdef JP
-               if (name) return "¶²¹²";
-               if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤò¶²Éݤµ¤»¡¢Û¯Û°¤µ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
-#else
-               if (name) return "Horrify";
-               if (desc) return "Attempts to scare and stun a monster.";
-#endif
+       case 4:
+               if (name) return _("恐慌", "Horrify");
+               if (desc) return _("モンスター1体を恐怖させ、朦朧させる。抵抗されると無効。", "Attempts to scare and stun a monster.");
     
                {
                        int power = plev;
@@ -8168,14 +5854,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_NETHER_BOLT:
-#ifdef JP
-               if (name) return "ÃϹö¤ÎÌð";
-               if (desc) return "ÃϹö¤Î¥Ü¥ë¥È¤â¤·¤¯¤Ï¥Ó¡¼¥à¤òÊü¤Ä¡£";
-#else
-               if (name) return "Nether Bolt";
-               if (desc) return "Fires a bolt or beam of nether.";
-#endif
+       case 5:
+               if (name) return _("地獄の矢", "Nether Bolt");
+               if (desc) return _("地獄のボルトもしくはビームを放つ。", "Fires a bolt or beam of nether.");
     
                {
                        int dice = 6 + (plev - 5) / 4;
@@ -8192,38 +5873,25 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_SUMMON_MANES:
-#ifdef JP
-               if (name) return "¸ÅÂå¤Î»àÎ´­";
-               if (desc) return "¸ÅÂå¤Î»àÎî¤ò¾¤´­¤¹¤ë¡£";
-#else
-               if (name) return "Summon Manes";
-               if (desc) return "Summons a manes.";
-#endif
+       case 6:
+               if (name) return _("古代の死霊召喚", "Summon Manes");
+               if (desc) return _("古代の死霊を召喚する。", "Summons a manes.");
     
                {
                        if (cast)
                        {
-                               if (!summon_specific(-1, py, px, (plev * 3) / 2, SUMMON_MANES, (PM_ALLOW_GROUP | PM_FORCE_PET)))
+                               if (!summon_specific(-1, p_ptr->y, p_ptr->x, (plev * 3) / 2, SUMMON_MANES, (PM_ALLOW_GROUP | PM_FORCE_PET)))
                                {
-#ifdef JP
-                                       msg_print("¸ÅÂå¤Î»àÎî¤Ï¸½¤ì¤Ê¤«¤Ã¤¿¡£");
-#else
-                                       msg_print("No Manes arrive.");
-#endif
+                                       msg_print(_("古代の死霊は現れなかった。", "No Manes arrive."));
                                }
                        }
                }
                break;
 
-       case DAEM_SPEL_HELLISH_FLAME:
-#ifdef JP
-               if (name) return "ÃϹö¤Î±ë";
-               if (desc) return "¼Ù°­¤ÊÎϤò»ý¤Ä¥Ü¡¼¥ë¤òÊü¤Ä¡£Á±Îɤʥâ¥ó¥¹¥¿¡¼¤Ë¤ÏÂ礭¤Ê¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
-#else
-               if (name) return "Hellish Flame";
-               if (desc) return "Fires a ball of evil power. Hurts good monsters greatly.";
-#endif
+       case 7:
+               if (name) return _("地獄の焔", "Hellish Flame");
+               if (desc) return _("邪悪な力を持つボールを放つ。善良なモンスターには大きなダメージを与える。",
+                       "Fires a ball of evil power. Hurts good monsters greatly.");
     
                {
                        int dice = 3;
@@ -8250,14 +5918,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_DOMINATE_DEMON:
-#ifdef JP
-               if (name) return "¥Ç¡¼¥â¥ó»ÙÇÛ";
-               if (desc) return "°­Ëâ1ÂΤò̥λ¤¹¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú";
-#else
-               if (name) return "Dominate Demon";
-               if (desc) return "Attempts to charm a demon.";
-#endif
+       case 8:
+               if (name) return _("デーモン支配", "Dominate Demon");
+               if (desc) return _("悪魔1体を魅了する。抵抗されると無効", "Attempts to charm a demon.");
     
                {
                        int power = plev;
@@ -8273,14 +5936,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_VISION:
-#ifdef JP
-               if (name) return "¥Ó¥¸¥ç¥ó";
-               if (desc) return "¼þÊÕ¤ÎÃÏ·Á¤ò´¶ÃΤ¹¤ë¡£";
-#else
-               if (name) return "Vision";
-               if (desc) return "Maps nearby area.";
-#endif
+       case 9:
+               if (name) return _("ビジョン", "Vision");
+               if (desc) return _("周辺の地形を感知する。", "Maps nearby area.");
     
                {
                        int rad = DETECT_RAD_MAP;
@@ -8294,14 +5952,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_RESIST_NETHER:
-#ifdef JP
-               if (name) return "ÂÑÃϹö";
-               if (desc) return "°ìÄê»þ´Ö¡¢ÃϹö¤Ø¤ÎÂÑÀ­¤òÆÀ¤ë¡£";
-#else
-               if (name) return "Resist Nether";
-               if (desc) return "Gives resistance to nether for a while.";
-#endif
+       case 10:
+               if (name) return _("耐地獄", "Resist Nether");
+               if (desc) return _("一定時間、地獄への耐性を得る。", "Gives resistance to nether for a while.");
     
                {
                        int base = 20;
@@ -8315,14 +5968,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_PLASMA_BOLT:
-#ifdef JP
-               if (name) return "¥×¥é¥º¥Þ¡¦¥Ü¥ë¥È";
-               if (desc) return "¥×¥é¥º¥Þ¤Î¥Ü¥ë¥È¤â¤·¤¯¤Ï¥Ó¡¼¥à¤òÊü¤Ä¡£";
-#else
-               if (name) return "Plasma bolt";
-               if (desc) return "Fires a bolt or beam of plasma.";
-#endif
+       case 11:
+               if (name) return _("プラズマ・ボルト", "Plasma bolt");
+               if (desc) return _("プラズマのボルトもしくはビームを放つ。", "Fires a bolt or beam of plasma.");
     
                {
                        int dice = 11 + (plev - 5) / 4;
@@ -8339,17 +5987,12 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_FIRE_BALL:
-#ifdef JP
-               if (name) return "¥Õ¥¡¥¤¥¢¡¦¥Ü¡¼¥ë";
-               if (desc) return "±ê¤Îµå¤òÊü¤Ä¡£";
-#else
-               if (name) return "Fire Ball";
-               if (desc) return "Fires a ball of fire.";
-#endif
+       case 12:
+               if (name) return _("ファイア・ボール", "Fire Ball");
+               if (desc) return _("炎の球を放つ。", "Fires a ball of fire.");
     
                {
-                       int dam = plev + 55;
+                       HIT_POINT dam = plev + 55;
                        int rad = 2;
 
                        if (info) return info_damage(0, 0, dam);
@@ -8363,14 +6006,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_FIRE_BRANDING:
-#ifdef JP
-               if (name) return "±ê¤Î¿Ï";
-               if (desc) return "Éð´ï¤Ë±ê¤Î°À­¤ò¤Ä¤±¤ë¡£";
-#else
-               if (name) return "Fire Branding";
-               if (desc) return "Makes current weapon fire branded.";
-#endif
+       case 13:
+               if (name) return _("炎の刃", "Fire Branding");
+               if (desc) return _("武器に炎の属性をつける。", "Makes current weapon fire branded.");
     
                {
                        if (cast)
@@ -8380,17 +6018,12 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_NETHER_BALL:
-#ifdef JP
-               if (name) return "ÃϹöµå";
-               if (desc) return "Â礭¤ÊÃϹö¤Îµå¤òÊü¤Ä¡£";
-#else
-               if (name) return "Nether Ball";
-               if (desc) return "Fires a huge ball of nether.";
-#endif
+       case 14:
+               if (name) return _("地獄球", "Nether Ball");
+               if (desc) return _("大きな地獄の球を放つ。", "Fires a huge ball of nether.");
     
                {
-                       int dam = plev * 3 / 2 + 100;
+                       HIT_POINT dam = plev * 3 / 2 + 100;
                        int rad = plev / 20 + 2;
 
                        if (info) return info_damage(0, 0, dam);
@@ -8404,72 +6037,46 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_SUMMON_DEMON:
-#ifdef JP
-               if (name) return "¥Ç¡¼¥â¥ó¾¤´­";
-               if (desc) return "°­Ëâ1ÂΤò¾¤´­¤¹¤ë¡£";
-#else
-               if (name) return "Summon Demon";
-               if (desc) return "Summons a demon.";
-#endif
+       case 15:
+               if (name) return _("デーモン召喚", "Summon Demon");
+               if (desc) return _("悪魔1体を召喚する。", "Summons a demon.");
     
                {
                        if (cast)
                        {
                                bool pet = !one_in_(3);
-                               u32b mode = 0L;
+                               u32b flg = 0L;
 
-                               if (pet) mode |= PM_FORCE_PET;
-                               else mode |= PM_NO_PET;
-                               if (!(pet && (plev < 50))) mode |= PM_ALLOW_GROUP;
+                               if (pet) flg |= PM_FORCE_PET;
+                               else flg |= PM_NO_PET;
+                               if (!(pet && (plev < 50))) flg |= PM_ALLOW_GROUP;
 
-                               if (summon_specific((pet ? -1 : 0), py, px, plev*2/3+randint1(plev/2), SUMMON_DEMON, mode))
+                               if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, plev*2/3+randint1(plev/2), SUMMON_DEMON, flg))
                                {
-#ifdef JP
-                                       msg_print("ⲫ¤Î°­½­¤¬½¼Ëþ¤·¤¿¡£");
-#else
-                                       msg_print("The area fills with a stench of sulphur and brimstone.");
-#endif
-
+                                       msg_print(_("硫黄の悪臭が充満した。", "The area fills with a stench of sulphur and brimstone."));
 
                                        if (pet)
                                        {
-#ifdef JP
-                                               msg_print("¡Ö¤´ÍѤǤ´¤¶¤¤¤Þ¤¹¤«¡¢¤´¼ç¿ÍÍÍ¡×");
-#else
-                                               msg_print("'What is thy bidding... Master?'");
-#endif
+                                               msg_print(_("「ご用でございますか、ご主人様」", "'What is thy bidding... Master?'"));
                                        }
                                        else
                                        {
-#ifdef JP
-                                               msg_print("¡ÖÈܤ·¤­¼Ô¤è¡¢²æ¤ÏÆò¤Î²¼Ëͤˤ¢¤é¤º¡ª ¤ªÁ°¤Îº²¤òĺ¤¯¤¾¡ª¡×");
-#else
-                                               msg_print("'NON SERVIAM! Wretch! I shall feast on thy mortal soul!'");
-#endif
+                                               msg_print(_("「卑しき者よ、我は汝の下僕にあらず! お前の魂を頂くぞ!」",
+                                                                       "'NON SERVIAM! Wretch! I shall feast on thy mortal soul!'"));
                                        }
                                }
                                else
                                {
-#ifdef JP
-                                       msg_print("°­Ëâ¤Ï¸½¤ì¤Ê¤«¤Ã¤¿¡£");
-#else
-                                       msg_print("No demons arrive.");
-#endif
+                                       msg_print(_("悪魔は現れなかった。", "No demons arrive."));
                                }
                                break;
                        }
                }
                break;
 
-       case DAEM_SPEL_DEVILISH_EYE:
-#ifdef JP
-               if (name) return "°­Ëâ¤ÎÌÜ";
-               if (desc) return "°ìÄê»þ´Ö¡¢¥Æ¥ì¥Ñ¥·¡¼Ç½ÎϤòÆÀ¤ë¡£";
-#else
-               if (name) return "Devilish Eye";
-               if (desc) return "Gives telepathy for a while.";
-#endif
+       case 16:
+               if (name) return _("悪魔の目", "Devilish Eye");
+               if (desc) return _("一定時間、テレパシー能力を得る。", "Gives telepathy for a while.");
     
                {
                        int base = 30;
@@ -8479,28 +6086,24 @@ cptr do_spell(int realm, int spell, int mode)
 
                        if (cast)
                        {
-                               set_tim_esp(randint1(base) + sides, FALSE);
+                               set_tim_esp(randint1(sides) + base, FALSE);
                        }
                }
                break;
 
-       case DAEM_SPEL_DEVIL_CLOAK:
-#ifdef JP
-               if (name) return "°­Ëâ¤Î¥¯¥í¡¼¥¯";
-               if (desc) return "¶²Éݤò¼è¤ê½ü¤­¡¢°ìÄê»þ´Ö¡¢±ê¤ÈÎ䵤¤ÎÂÑÀ­¡¢±ê¤Î¥ª¡¼¥é¤òÆÀ¤ë¡£ÂÑÀ­¤ÏÁõÈ÷¤Ë¤è¤ëÂÑÀ­¤ËÎßÀѤ¹¤ë¡£";
-#else
-               if (name) return "Devil Cloak";
-               if (desc) return "Removes fear. Gives resistance to fire and cold, and aura of fire. These resistances can be added to which from equipment for more powerful resistances.";
-#endif
+       case 17:
+               if (name) return _("悪魔のクローク", "Devil Cloak");
+               if (desc) return _("恐怖を取り除き、一定時間、炎と冷気の耐性、炎のオーラを得る。耐性は装備による耐性に累積する。", 
+                       "Removes fear. Gives resistance to fire and cold, and aura of fire. These resistances can be added to which from equipment for more powerful resistances.");
     
                {
-                       int base = 20;
+                       TIME_EFFECT base = 20;
 
                        if (info) return info_duration(base, base);
 
                        if (cast)
                        {
-                               int dur = randint1(base) + base;
+                               TIME_EFFECT dur = randint1(base) + base;
                                        
                                set_oppose_fire(dur, FALSE);
                                set_oppose_cold(dur, FALSE);
@@ -8511,17 +6114,13 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_THE_FLOW_OF_LAVA:
-#ifdef JP
-               if (name) return "ÍÏ´äή";
-               if (desc) return "¼«Ê¬¤òÃæ¿´¤È¤·¤¿±ê¤Îµå¤òºî¤ê½Ð¤·¡¢¾²¤òÍÏ´ä¤ËÊѤ¨¤ë¡£";
-#else
-               if (name) return "The Flow of Lava";
-               if (desc) return "Generates a ball of fire centered on you which transforms floors to magma.";
-#endif
+       case 18:
+               if (name) return _("溶岩流", "The Flow of Lava");
+               if (desc) return _("自分を中心とした炎の球を作り出し、床を溶岩に変える。", 
+                       "Generates a ball of fire centered on you which transforms floors to magma.");
     
                {
-                       int dam = (55 + plev) * 2;
+                       HIT_POINT dam = (55 + plev) * 2;
                        int rad = 3;
 
                        if (info) return info_damage(0, 0, dam/2);
@@ -8534,17 +6133,12 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_PLASMA_BALL:
-#ifdef JP
-               if (name) return "¥×¥é¥º¥Þµå";
-               if (desc) return "¥×¥é¥º¥Þ¤Îµå¤òÊü¤Ä¡£";
-#else
-               if (name) return "Plasma Ball";
-               if (desc) return "Fires a ball of plasma.";
-#endif
+       case 19:
+               if (name) return _("プラズマ球", "Plasma Ball");
+               if (desc) return _("プラズマの球を放つ。", "Fires a ball of plasma.");
     
                {
-                       int dam = plev * 3 / 2 + 80;
+                       HIT_POINT dam = plev * 3 / 2 + 80;
                        int rad = 2 + plev / 40;
 
                        if (info) return info_damage(0, 0, dam);
@@ -8558,14 +6152,10 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_POLYMORPH_DEMON:
-#ifdef JP
-               if (name) return "°­ËâÊѲ½";
-               if (desc) return "°ìÄê»þ´Ö¡¢°­Ëâ¤ËÊѲ½¤¹¤ë¡£ÊѲ½¤·¤Æ¤¤¤ë´Ö¤ÏËÜÍè¤Î¼ï²¤ÎǽÎϤò¼º¤¤¡¢Âå¤ï¤ê¤Ë°­Ëâ¤È¤·¤Æ¤ÎǽÎϤòÆÀ¤ë¡£";
-#else
-               if (name) return "Polymorph Demon";
-               if (desc) return "Mimic a demon for a while. Loses abilities of original race and gets abilities as a demon.";
-#endif
+       case 20:
+               if (name) return _("悪魔変化", "Polymorph Demon");
+               if (desc) return _("一定時間、悪魔に変化する。変化している間は本来の種族の能力を失い、代わりに悪魔としての能力を得る。", 
+                       "Mimic a demon for a while. Loses abilities of original race and gets abilities as a demon.");
     
                {
                        int base = 10 + plev / 2;
@@ -8579,14 +6169,10 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_NATHER_WAVE:
-#ifdef JP
-               if (name) return "ÃϹö¤ÎÇÈÆ°";
-               if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤Ë¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£Á±Îɤʥâ¥ó¥¹¥¿¡¼¤ËÆäËÂ礭¤Ê¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
-#else
-               if (name) return "Nather Wave";
-               if (desc) return "Damages all monsters in sight. Hurts good monsters greatly.";
-#endif
+       case 21:
+               if (name) return _("地獄の波動", "Nather Wave");
+               if (desc) return _("視界内の全てのモンスターにダメージを与える。善良なモンスターに特に大きなダメージを与える。", 
+                       "Damages all monsters in sight. Hurts good monsters greatly.");
     
                {
                        int sides1 = plev * 2;
@@ -8602,17 +6188,12 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_KISS_OF_SUCCUBUS:
-#ifdef JP
-               if (name) return "¥µ¥­¥å¥Ð¥¹¤ÎÀÜÊ­";
-               if (desc) return "°ø²Ìº®Íð¤Îµå¤òÊü¤Ä¡£";
-#else
-               if (name) return "Kiss of Succubus";
-               if (desc) return "Fires a ball of nexus.";
-#endif
+       case 22:
+               if (name) return _("サキュバスの接吻", "Kiss of Succubus");
+               if (desc) return _("因果混乱の球を放つ。", "Fires a ball of nexus.");
     
                {
-                       int dam = 100 + plev * 2;
+                       HIT_POINT dam = 100 + plev * 2;
                        int rad = 4;
 
                        if (info) return info_damage(0, 0, dam);
@@ -8625,38 +6206,26 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_DOOM_HAND:
-#ifdef JP
-               if (name) return "ÇËÌǤμê";
-               if (desc) return "ÇËÌǤμê¤òÊü¤Ä¡£¿©¤é¤Ã¤¿¥â¥ó¥¹¥¿¡¼¤Ï¤½¤Î¤È¤­¤ÎHP¤ÎȾʬÁ°¸å¤Î¥À¥á¡¼¥¸¤ò¼õ¤±¤ë¡£";
-#else
-               if (name) return "Doom Hand";
-               if (desc) return "Attempts to make a monster's HP almost half.";
-#endif
+       case 23:
+               if (name) return _("破滅の手", "Doom Hand");
+               if (desc) return _("破滅の手を放つ。食らったモンスターはそのときのHPの半分前後のダメージを受ける。", "Attempts to make a monster's HP almost half.");
     
                {
                        if (cast)
                        {
-                               if (!get_aim_dir(&dir)) return NULL;
-#ifdef JP
-                               else msg_print("<ÇËÌǤμê>¤òÊü¤Ã¤¿¡ª");
-#else
-                               else msg_print("You invoke the Hand of Doom!");
-#endif
-
+                               if (!get_aim_dir(&dir))
+                                       return NULL;
+                               else 
+                                       msg_print(_("<破滅の手>を放った!", "You invoke the Hand of Doom!"));
+                               
                                fire_ball_hide(GF_HAND_DOOM, dir, plev * 2, 0);
                        }
                }
                break;
 
-       case DAEM_SPEL_RAISE_THE_MORALE:
-#ifdef JP
-               if (name) return "»Îµ¤¹âÍÈ";
-               if (desc) return "°ìÄê»þ´Ö¡¢¥Ò¡¼¥í¡¼µ¤Ê¬¤Ë¤Ê¤ë¡£";
-#else
-               if (name) return "Raise the Morale";
-               if (desc) return "Removes fear, and gives bonus to hit and 10 more HP for a while.";
-#endif
+       case 24:
+               if (name) return _("士気高揚", "Raise the Morale");
+               if (desc) return _("一定時間、ヒーロー気分になる。", "Removes fear, and gives bonus to hit and 10 more HP for a while.");
     
                {
                        int base = 25;
@@ -8672,14 +6241,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_IMMORTAL_BODY:
-#ifdef JP
-               if (name) return "ÉÔÌǤÎÆùÂÎ";
-               if (desc) return "°ìÄê»þ´Ö¡¢»þ´ÖµÕž¤Ø¤ÎÂÑÀ­¤òÆÀ¤ë¡£";
-#else
-               if (name) return "Immortal Body";
-               if (desc) return "Gives resistance to time for a while.";
-#endif
+       case 25:
+               if (name) return _("不滅の肉体", "Immortal Body");
+               if (desc) return _("一定時間、時間逆転への耐性を得る。", "Gives resistance to time for a while.");
     
                {
                        int base = 20;
@@ -8693,17 +6257,13 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_INSANITY_CIRCLE:
-#ifdef JP
-               if (name) return "¶¸µ¤¤Î±ß´Ä";
-               if (desc) return "¼«Ê¬¤òÃæ¿´¤È¤·¤¿¥«¥ª¥¹¤Îµå¡¢º®Íð¤Îµå¤òȯÀ¸¤µ¤»¡¢¶á¤¯¤Î¥â¥ó¥¹¥¿¡¼¤ò̥λ¤¹¤ë¡£";
-#else
-               if (name) return "Insanity Circle";
-               if (desc) return "Generate balls of chaos, confusion and charm centered on you.";
-#endif
+       case 26:
+               if (name) return _("狂気の円環", "Insanity Circle");
+               if (desc) return _("自分を中心としたカオスの球、混乱の球を発生させ、近くのモンスターを魅了する。", 
+                       "Generate balls of chaos, confusion and charm centered on you.");
     
                {
-                       int dam = 50 + plev;
+                       HIT_POINT dam = 50 + plev;
                        int power = 20 + plev;
                        int rad = 3 + plev / 20;
 
@@ -8718,14 +6278,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_EXPLODE_PETS:
-#ifdef JP
-               if (name) return "¥Ú¥Ã¥ÈÇúÇË";
-               if (desc) return "Á´¤Æ¤Î¥Ú¥Ã¥È¤ò¶¯À©Åª¤ËÇúÇˤµ¤»¤ë¡£";
-#else
-               if (name) return "Explode Pets";
-               if (desc) return "Makes all pets explode.";
-#endif
+       case 27:
+               if (name) return _("ペット爆破", "Explode Pets");
+               if (desc) return _("全てのペットを強制的に爆破させる。", "Makes all pets explode.");
     
                {
                        if (cast)
@@ -8735,14 +6290,10 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_SUMMON_GREATER_DEMON:
-#ifdef JP
-               if (name) return "¥°¥ì¡¼¥¿¡¼¥Ç¡¼¥â¥ó¾¤´­";
-               if (desc) return "¾åµé¥Ç¡¼¥â¥ó¤ò¾¤´­¤¹¤ë¡£¾¤´­¤¹¤ë¤Ë¤Ï¿Í´Ö('p','h','t'¤Çɽ¤µ¤ì¤ë¥â¥ó¥¹¥¿¡¼)¤Î»àÂΤòÊû¤²¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£";
-#else
-               if (name) return "Summon Greater Demon";
-               if (desc) return "Summons greater demon. It need to sacrifice a corpse of human ('p','h' or 't').";
-#endif
+       case 28:
+               if (name) return _("グレーターデーモン召喚", "Summon Greater Demon");
+               if (desc) return _("上級デーモンを召喚する。召喚するには人間('p','h','t'で表されるモンスター)の死体を捧げなければならない。", 
+                       "Summons greater demon. It need to sacrifice a corpse of human ('p','h' or 't').");
     
                {
                        if (cast)
@@ -8752,17 +6303,12 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_NETHER_STORM:
-#ifdef JP
-               if (name) return "ÃϹöÍò";
-               if (desc) return "ĶµðÂç¤ÊÃϹö¤Îµå¤òÊü¤Ä¡£";
-#else
-               if (name) return "Nether Storm";
-               if (desc) return "Generate a huge ball of nether.";
-#endif
+       case 29:
+               if (name) return _("地獄嵐", "Nether Storm");
+               if (desc) return _("超巨大な地獄の球を放つ。", "Generate a huge ball of nether.");
     
                {
-                       int dam = plev * 15;
+                       HIT_POINT dam = plev * 15;
                        int rad = plev / 5;
 
                        if (info) return info_damage(0, 0, dam);
@@ -8776,17 +6322,13 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case DAEM_SPEL_BLOODY_CURSE:
-#ifdef JP
-               if (name) return "·ì¤Î¼ö¤¤";
-               if (desc) return "¼«Ê¬¤¬¥À¥á¡¼¥¸¤ò¼õ¤±¤ë¤³¤È¤Ë¤è¤Ã¤ÆÂоݤ˼ö¤¤¤ò¤«¤±¡¢¥À¥á¡¼¥¸¤òÍ¿¤¨ÍÍ¡¹¤Ê¸ú²Ì¤ò°ú¤­µ¯¤³¤¹¡£";
-#else
-               if (name) return "Bloody Curse";
-               if (desc) return "Puts blood curse which damages and causes various effects on a monster. You also take damage.";
-#endif
+       case 30:
+               if (name) return _("血の呪い", "Bloody Curse");
+               if (desc) return _("自分がダメージを受けることによって対象に呪いをかけ、ダメージを与え様々な効果を引き起こす。",
+                       "Puts blood curse which damages and causes various effects on a monster. You also take damage.");
     
                {
-                       int dam = 600;
+                       HIT_POINT dam = 600;
                        int rad = 0;
 
                        if (info) return info_damage(0, 0, dam);
@@ -8796,23 +6338,15 @@ cptr do_spell(int realm, int spell, int mode)
                                if (!get_aim_dir(&dir)) return NULL;
 
                                fire_ball_hide(GF_BLOOD_CURSE, dir, dam, rad);
-#ifdef JP
-                               take_hit(DAMAGE_USELIFE, 20 + randint1(30), "·ì¤Î¼ö¤¤", -1);
-#else
-                               take_hit(DAMAGE_USELIFE, 20 + randint1(30), "Blood curse", -1);
-#endif
+                               take_hit(DAMAGE_USELIFE, 20 + randint1(30), _("血の呪い", "Blood curse"), -1);
                        }
                }
                break;
 
-       case DAEM_SPEL_POLYMORPH_DEMONLORD:
-#ifdef JP
-               if (name) return "ËⲦÊѲ½";
-               if (desc) return "°­Ëâ¤Î²¦¤ËÊѲ½¤¹¤ë¡£ÊѲ½¤·¤Æ¤¤¤ë´Ö¤ÏËÜÍè¤Î¼ï²¤ÎǽÎϤò¼º¤¤¡¢Âå¤ï¤ê¤Ë°­Ëâ¤Î²¦¤È¤·¤Æ¤ÎǽÎϤòÆÀ¡¢ÊɤòÇ˲õ¤·¤Ê¤¬¤éÊ⤯¡£";
-#else
-               if (name) return "Polymorph Demonlord";
-               if (desc) return "Mimic a demon lord for a while. Loses abilities of original race and gets great abilities as a demon lord. Even hard walls can't stop your walking.";
-#endif
+       case 31:
+               if (name) return _("魔王変化", "Polymorph Demonlord");
+               if (desc) return _("悪魔の王に変化する。変化している間は本来の種族の能力を失い、代わりに悪魔の王としての能力を得、壁を破壊しながら歩く。",
+                       "Mimic a demon lord for a while. Loses abilities of original race and gets great abilities as a demon lord. Even hard walls can't stop your walking.");
     
                {
                        int base = 15;
@@ -8825,15 +6359,32 @@ cptr do_spell(int realm, int spell, int mode)
                        }
                }
                break;
+       }
 
-       case CRUS_SPEL_PUNISHMENT:
-#ifdef JP
-               if (name) return "Ĩȳ";
-               if (desc) return "ÅÅ·â¤Î¥Ü¥ë¥È¤â¤·¤¯¤Ï¥Ó¡¼¥à¤òÊü¤Ä¡£";
-#else
-               if (name) return "Punishment";
-               if (desc) return "Fires a bolt or beam of lightning.";
-#endif
+       return "";
+}
+
+/*!
+ * @brief 破邪領域魔法の各処理を行う
+ * @param spell 魔法ID
+ * @param mode 処理内容 (SPELL_NAME / SPELL_DESC / SPELL_INFO / SPELL_CAST)
+ * @return SPELL_NAME / SPELL_DESC / SPELL_INFO 時には文字列ポインタを返す。SPELL_CAST時はNULL文字列を返す。
+ */
+static cptr do_crusade_spell(SPELL_IDX spell, BIT_FLAGS mode)
+{
+       bool name = (mode == SPELL_NAME) ? TRUE : FALSE;
+       bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;
+       bool info = (mode == SPELL_INFO) ? TRUE : FALSE;
+       bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;
+
+       int dir;
+       int plev = p_ptr->lev;
+
+       switch (spell)
+       {
+       case 0:
+               if (name) return _("懲罰", "Punishment");
+               if (desc) return _("電撃のボルトもしくはビームを放つ。", "Fires a bolt or beam of lightning.");
     
                {
                        int dice = 3 + (plev - 1) / 5;
@@ -8850,14 +6401,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_DETECT_EVIL:
-#ifdef JP
-               if (name) return "¼Ù°­Â¸ºß´¶ÃÎ";
-               if (desc) return "¶á¤¯¤Î¼Ù°­¤Ê¥â¥ó¥¹¥¿¡¼¤ò´¶ÃΤ¹¤ë¡£";
-#else
-               if (name) return "Detect Evil";
-               if (desc) return "Detects all evil monsters in your vicinity.";
-#endif
+       case 1:
+               if (name) return _("邪悪存在感知", "Detect Evil");
+               if (desc) return _("近くの邪悪なモンスターを感知する。", "Detects all evil monsters in your vicinity.");
     
                {
                        int rad = DETECT_RAD_DEFAULT;
@@ -8871,14 +6417,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_REMOVE_FEAR:
-#ifdef JP
-               if (name) return "¶²Éݽüµî";
-               if (desc) return "¶²Éݤò¼è¤ê½ü¤¯¡£";
-#else
-               if (name) return "Remove Fear";
-               if (desc) return "Removes fear.";
-#endif
+       case 2:
+               if (name) return _("恐怖除去", "Remove Fear");
+               if (desc) return _("恐怖を取り除く。", "Removes fear.");
     
                {
                        if (cast)
@@ -8888,14 +6429,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_SCARE_MONSTER:
-#ifdef JP
-               if (name) return "°Ò°µ";
-               if (desc) return "¥â¥ó¥¹¥¿¡¼1ÂΤò¶²Éݤµ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
-#else
-               if (name) return "Scare Monster";
-               if (desc) return "Attempts to scare a monster.";
-#endif
+       case 3:
+               if (name) return _("威圧", "Scare Monster");
+               if (desc) return _("モンスター1体を恐怖させる。抵抗されると無効。", "Attempts to scare a monster.");
     
                {
                        int power = plev;
@@ -8911,14 +6447,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_SANCTUARY:
-#ifdef JP
-               if (name) return "À»°è";
-               if (desc) return "ÎÙÀܤ·¤¿Á´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò̲¤é¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
-#else
-               if (name) return "Sanctuary";
-               if (desc) return "Attempts to sleep monsters in the adjacent squares.";
-#endif
+       case 4:
+               if (name) return _("聖域", "Sanctuary");
+               if (desc) return _("隣接した全てのモンスターを眠らせる。抵抗されると無効。", "Attempts to sleep monsters in the adjacent squares.");
     
                {
                        int power = plev;
@@ -8932,35 +6463,25 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_PORTAL:
-#ifdef JP
-               if (name) return "Æþ¸ý";
-               if (desc) return "Ãæµ÷Î¥¤Î¥Æ¥ì¥Ý¡¼¥È¤ò¤¹¤ë¡£";
-#else
-               if (name) return "Portal";
-               if (desc) return "Teleport medium distance.";
-#endif
+       case 5:
+               if (name) return _("入口", "Portal");
+               if (desc) return _("中距離のテレポートをする。", "Teleport medium distance.");
     
                {
-                       int range = 25 + plev / 2;
+                       POSITION range = 25 + plev / 2;
 
                        if (info) return info_range(range);
 
                        if (cast)
                        {
-                               teleport_player(range, FALSE);
+                               teleport_player(range, 0L);
                        }
                }
                break;
 
-       case CRUS_SPEL_STAR_DUST:
-#ifdef JP
-               if (name) return "¥¹¥¿¡¼¥À¥¹¥È";
-               if (desc) return "¥¿¡¼¥²¥Ã¥ÈÉÕ¶á¤ËÁ®¸÷¤Î¥Ü¥ë¥È¤òÏ¢¼Í¤¹¤ë¡£";
-#else
-               if (name) return "Star Dust";
-               if (desc) return "Fires many bolts of light near the target.";
-#endif
+       case 6:
+               if (name) return _("スターダスト", "Star Dust");
+               if (desc) return _("ターゲット付近に閃光のボルトを連射する。", "Fires many bolts of light near the target.");
     
                {
                        int dice = 3 + (plev - 1) / 9;
@@ -8976,14 +6497,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_PURIFY:
-#ifdef JP
-               if (name) return "¿ÈÂξô²½";
-               if (desc) return "½ý¡¢ÆÇ¡¢Û¯Û°¤«¤éÁ´²÷¤¹¤ë¡£";
-#else
-               if (name) return "Purify";
-               if (desc) return "Heals all cut, stun and poison status.";
-#endif
+       case 7:
+               if (name) return _("身体浄化", "Purify");
+               if (desc) return _("傷、毒、朦朧から全快する。", "Heals all cut, stun and poison status.");
     
                {
                        if (cast)
@@ -8995,14 +6511,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_SCATTER_EVIL:
-#ifdef JP
-               if (name) return "¼Ù°­Èô¤Ð¤·";
-               if (desc) return "¼Ù°­¤Ê¥â¥ó¥¹¥¿¡¼1ÂΤò¥Æ¥ì¥Ý¡¼¥È¤µ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
-#else
-               if (name) return "Scatter Evil";
-               if (desc) return "Attempts to teleport an evil monster away.";
-#endif
+       case 8:
+               if (name) return _("邪悪飛ばし", "Scatter Evil");
+               if (desc) return _("邪悪なモンスター1体をテレポートさせる。抵抗されると無効。", "Attempts to teleport an evil monster away.");
     
                {
                        int power = MAX_SIGHT * 5;
@@ -9017,14 +6528,10 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_HOLY_ORB:
-#ifdef JP
-               if (name) return "À»¤Ê¤ë¸÷µå";
-               if (desc) return "À»¤Ê¤ëÎϤò¤â¤ÄÊõ¼î¤òÊü¤Ä¡£¼Ù°­¤Ê¥â¥ó¥¹¥¿¡¼¤ËÂФ·¤ÆÂ礭¤Ê¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¤¬¡¢Á±Îɤʥâ¥ó¥¹¥¿¡¼¤Ë¤Ï¸ú²Ì¤¬¤Ê¤¤¡£";
-#else
-               if (name) return "Holy Orb";
-               if (desc) return "Fires a ball with holy power. Hurts evil monsters greatly, but don't effect good monsters.";
-#endif
+       case 9:
+               if (name) return _("聖なる光球", "Holy Orb");
+               if (desc) return _("聖なる力をもつ宝珠を放つ。邪悪なモンスターに対して大きなダメージを与えるが、善良なモンスターには効果がない。", 
+                       "Fires a ball with holy power. Hurts evil monsters greatly, but don't effect good monsters.");
     
                {
                        int dice = 3;
@@ -9051,14 +6558,10 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_EXORCISM:
-#ifdef JP
-               if (name) return "°­Ëâʧ¤¤";
-               if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥¢¥ó¥Ç¥Ã¥ÉµÚ¤Ó°­Ëâ¤Ë¥À¥á¡¼¥¸¤òÍ¿¤¨¡¢¼Ù°­¤Ê¥â¥ó¥¹¥¿¡¼¤ò¶²Éݤµ¤»¤ë¡£";
-#else
-               if (name) return "Exorcism";
-               if (desc) return "Damages all undead and demons in sight, and scares all evil monsters in sight.";
-#endif
+       case 10:
+               if (name) return _("悪魔払い", "Exorcism");
+               if (desc) return _("視界内の全てのアンデッド及び悪魔にダメージを与え、邪悪なモンスターを恐怖させる。", 
+                       "Damages all undead and demons in sight, and scares all evil monsters in sight.");
     
                {
                        int sides = plev;
@@ -9075,38 +6578,24 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_REMOVE_CURSE:
-#ifdef JP
-               if (name) return "²ò¼ö";
-               if (desc) return "¥¢¥¤¥Æ¥à¤Ë¤«¤«¤Ã¤¿¼å¤¤¼ö¤¤¤ò²ò½ü¤¹¤ë¡£";
-#else
-               if (name) return "Remove Curse";
-               if (desc) return "Removes normal curses from equipped items.";
-#endif
+       case 11:
+               if (name) return _("解呪", "Remove Curse");
+               if (desc) return _("アイテムにかかった弱い呪いを解除する。", "Removes normal curses from equipped items.");
     
                {
                        if (cast)
                        {
                                if (remove_curse())
                                {
-#ifdef JP
-                                       msg_print("狼¤Ë¸«¼é¤é¤ì¤Æ¤¤¤ë¤è¤¦¤Êµ¤¤¬¤¹¤ë¡£");
-#else
-                                       msg_print("You feel as if someone is watching over you.");
-#endif
+                                       msg_print(_("誰かに見守られているような気がする。", "You feel as if someone is watching over you."));
                                }
                        }
                }
                break;
 
-       case CRUS_SPEL_SENSE_UNSEEN:
-#ifdef JP
-               if (name) return "Æ©ÌÀ»ëǧ";
-               if (desc) return "°ìÄê»þ´Ö¡¢Æ©ÌÀ¤Ê¤â¤Î¤¬¸«¤¨¤ë¤è¤¦¤Ë¤Ê¤ë¡£";
-#else
-               if (name) return "Sense Unseen";
-               if (desc) return "Gives see invisible for a while.";
-#endif
+       case 12:
+               if (name) return _("透明視認", "Sense Unseen");
+               if (desc) return _("一定時間、透明なものが見えるようになる。", "Gives see invisible for a while.");
     
                {
                        int base = 24;
@@ -9120,14 +6609,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_PROTECTION_FROM_EVIL:
-#ifdef JP
-               if (name) return "Âмٰ­·ë³¦";
-               if (desc) return "¼Ù°­¤Ê¥â¥ó¥¹¥¿¡¼¤Î¹¶·â¤òËɤ°¥Ð¥ê¥¢¤òÄ¥¤ë¡£";
-#else
-               if (name) return "Protection from Evil";
-               if (desc) return "Gives aura which protect you from evil monster's physical attack.";
-#endif
+       case 13:
+               if (name) return _("対邪悪結界", "Protection from Evil");
+               if (desc) return _("邪悪なモンスターの攻撃を防ぐバリアを張る。", "Gives aura which protect you from evil monster's physical attack.");
     
                {
                        int base = 25;
@@ -9137,22 +6621,17 @@ cptr do_spell(int realm, int spell, int mode)
 
                        if (cast)
                        {
-                               set_protevil(randint1(sides) + sides, FALSE);
+                               set_protevil(randint1(sides) + base, FALSE);
                        }
                }
                break;
 
-       case CRUS_SPEL_JUDGMENT_THUNDER:
-#ifdef JP
-               if (name) return "ºÛ¤­¤ÎÍë";
-               if (desc) return "¶¯ÎϤÊÅÅ·â¤Î¥Ü¥ë¥È¤òÊü¤Ä¡£";
-#else
-               if (name) return "Judgment Thunder";
-               if (desc) return "Fires a powerful bolt of lightning.";
-#endif
+       case 14:
+               if (name) return _("裁きの雷", "Judgment Thunder");
+               if (desc) return _("強力な電撃のボルトを放つ。", "Fires a powerful bolt of lightning.");
     
                {
-                       int dam = plev * 5;
+                       HIT_POINT dam = plev * 5;
 
                        if (info) return info_damage(0, 0, dam);
 
@@ -9164,25 +6643,16 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_HOLY_WORD:
-#ifdef JP
-               if (name) return "À»¤Ê¤ë¸æ¸ÀÍÕ";
-               if (desc) return "»ë³¦Æâ¤Î¼Ù°­¤Ê¸ºß¤ËÂ礭¤Ê¥À¥á¡¼¥¸¤òÍ¿¤¨¡¢ÂÎÎϤò²óÉü¤·¡¢ÆÇ¡¢¶²ÉÝ¡¢Û¯Û°¾õÂÖ¡¢Éé½ý¤«¤éÁ´²÷¤¹¤ë¡£";
-#else
-               if (name) return "Holy Word";
-               if (desc) return "Damages all evil monsters in sight, heals HP somewhat, and completely heals poison, fear, stun and cut status.";
-#endif
+       case 15:
+               if (name) return _("聖なる御言葉", "Holy Word");
+               if (desc) return _("視界内の邪悪な存在に大きなダメージを与え、体力を回復し、毒、恐怖、朦朧状態、負傷から全快する。",
+                       "Damages all evil monsters in sight, heals HP somewhat, and completely heals poison, fear, stun and cut status.");
     
                {
                        int dam_sides = plev * 6;
                        int heal = 100;
 
-#ifdef JP
-                       if (info) return format("»:1d%d/²ó%d", dam_sides, heal);
-#else
-                       if (info) return format("dam:d%d/h%d", dam_sides, heal);
-#endif
-
+                       if (info) return format(_("損:1d%d/回%d", "dam:d%d/h%d"), dam_sides, heal);
                        if (cast)
                        {
                                dispel_evil(randint1(dam_sides));
@@ -9195,14 +6665,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_UNBARRING_WAYS:
-#ifdef JP
-               if (name) return "³«¤«¤ì¤¿Æ»";
-               if (desc) return "°ìľÀþ¾å¤ÎÁ´¤Æ¤Î櫤ÈÈâ¤òÇ˲õ¤¹¤ë¡£";
-#else
-               if (name) return "Unbarring Ways";
-               if (desc) return "Fires a beam which destroy traps and doors.";
-#endif
+       case 16:
+               if (name) return _("開かれた道", "Unbarring Ways");
+               if (desc) return _("一直線上の全ての罠と扉を破壊する。", "Fires a beam which destroy traps and doors.");
     
                {
                        if (cast)
@@ -9214,14 +6679,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_ARREST:
-#ifdef JP
-               if (name) return "ÉõËâ";
-               if (desc) return "¼Ù°­¤Ê¥â¥ó¥¹¥¿¡¼¤ÎÆ°¤­¤ò»ß¤á¤ë¡£";
-#else
-               if (name) return "Arrest";
-               if (desc) return "Attempts to paralyze an evil monster.";
-#endif
+       case 17:
+               if (name) return _("封魔", "Arrest");
+               if (desc) return _("邪悪なモンスターの動きを止める。", "Attempts to paralyze an evil monster.");
     
                {
                        int power = plev * 2;
@@ -9236,14 +6696,10 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_HOLY_AURA:
-#ifdef JP
-               if (name) return "À»¤Ê¤ë¥ª¡¼¥é";
-               if (desc) return "°ìÄê»þ´Ö¡¢¼Ù°­¤Ê¥â¥ó¥¹¥¿¡¼¤ò½ý¤Ä¤±¤ëÀ»¤Ê¤ë¥ª¡¼¥é¤òÆÀ¤ë¡£";
-#else
-               if (name) return "Holy Aura";
-               if (desc) return "Gives aura of holy power which injures evil monsters which attacked you for a while.";
-#endif
+       case 18:
+               if (name) return _("聖なるオーラ", "Holy Aura");
+               if (desc) return _("一定時間、邪悪なモンスターを傷つける聖なるオーラを得る。",
+                       "Gives aura of holy power which injures evil monsters which attacked you for a while.");
     
                {
                        int base = 20;
@@ -9257,14 +6713,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_DISPEL_UNDEAD_AND_DEMONS:
-#ifdef JP
-               if (name) return "¥¢¥ó¥Ç¥Ã¥É&°­ËâÂ໶";
-               if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥¢¥ó¥Ç¥Ã¥ÉµÚ¤Ó°­Ëâ¤Ë¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
-#else
-               if (name) return "Dispel Undead & Demons";
-               if (desc) return "Damages all undead and demons in sight.";
-#endif
+       case 19:
+               if (name) return _("アンデッド&悪魔退散", "Dispel Undead & Demons");
+               if (desc) return _("視界内の全てのアンデッド及び悪魔にダメージを与える。", "Damages all undead and demons in sight.");
     
                {
                        int sides = plev * 4;
@@ -9279,14 +6730,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_DISPEL_EVIL:
-#ifdef JP
-               if (name) return "¼Ù°­Â໶";
-               if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¼Ù°­¤Ê¥â¥ó¥¹¥¿¡¼¤Ë¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
-#else
-               if (name) return "Dispel Evil";
-               if (desc) return "Damages all evil monsters in sight.";
-#endif
+       case 20:
+               if (name) return _("邪悪退散", "Dispel Evil");
+               if (desc) return _("視界内の全ての邪悪なモンスターにダメージを与える。", "Damages all evil monsters in sight.");
     
                {
                        int sides = plev * 4;
@@ -9300,14 +6746,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_HOLY_BLADE:
-#ifdef JP
-               if (name) return "À»¤Ê¤ë¿Ï";
-               if (desc) return "Ä̾ï¤ÎÉð´ï¤ËÌǼ٤ΰÀ­¤ò¤Ä¤±¤ë¡£";
-#else
-               if (name) return "Holy Blade";
-               if (desc) return "Makes current weapon especially deadly against evil monsters.";
-#endif
+       case 21:
+               if (name) return _("聖なる刃", "Holy Blade");
+               if (desc) return _("通常の武器に滅邪の属性をつける。", "Makes current weapon especially deadly against evil monsters.");
     
                {
                        if (cast)
@@ -9317,17 +6758,12 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_STAR_BURST:
-#ifdef JP
-               if (name) return "¥¹¥¿¡¼¥Ð¡¼¥¹¥È";
-               if (desc) return "µðÂç¤ÊÁ®¸÷¤Îµå¤òÊü¤Ä¡£";
-#else
-               if (name) return "Star Burst";
-               if (desc) return "Fires a huge ball of powerful light.";
-#endif
+       case 22:
+               if (name) return _("スターバースト", "Star Burst");
+               if (desc) return _("巨大な閃光の球を放つ。", "Fires a huge ball of powerful light.");
     
                {
-                       int dam = 100 + plev * 2;
+                       HIT_POINT dam = 100 + plev * 2;
                        int rad = 4;
 
                        if (info) return info_damage(0, 0, dam);
@@ -9341,56 +6777,38 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_SUMMON_ANGEL:
-#ifdef JP
-               if (name) return "Å·»È¾¤´­";
-               if (desc) return "Å·»È¤ò1Âξ¤´­¤¹¤ë¡£";
-#else
-               if (name) return "Summon Angel";
-               if (desc) return "Summons an angel.";
-#endif
+       case 23:
+               if (name) return _("天使召喚", "Summon Angel");
+               if (desc) return _("天使を1体召喚する。", "Summons an angel.");
     
                {
                        if (cast)
                        {
                                bool pet = !one_in_(3);
-                               u32b mode = 0L;
+                               u32b flg = 0L;
 
-                               if (pet) mode |= PM_FORCE_PET;
-                               else mode |= PM_NO_PET;
-                               if (!(pet && (plev < 50))) mode |= PM_ALLOW_GROUP;
+                               if (pet) flg |= PM_FORCE_PET;
+                               else flg |= PM_NO_PET;
+                               if (!(pet && (plev < 50))) flg |= PM_ALLOW_GROUP;
 
-                               if (summon_specific((pet ? -1 : 0), py, px, (plev * 3) / 2, SUMMON_ANGEL, mode))
+                               if (summon_specific((pet ? -1 : 0), p_ptr->y, p_ptr->x, (plev * 3) / 2, SUMMON_ANGEL, flg))
                                {
                                        if (pet)
                                        {
-#ifdef JP
-                                               msg_print("¡Ö¤´ÍѤǤ´¤¶¤¤¤Þ¤¹¤«¡¢¤´¼ç¿ÍÍÍ¡×");
-#else
-                                               msg_print("'What is thy bidding... Master?'");
-#endif
+                                               msg_print(_("「ご用でございますか、ご主人様」", "'What is thy bidding... Master?'"));
                                        }
                                        else
                                        {
-#ifdef JP
-                                               msg_print("¡Ö²æ¤ÏÆò¤Î²¼Ëͤˤ¢¤é¤º¡ª °­¹Ô¼Ô¤è¡¢²ù¤¤²þ¤á¤è¡ª¡×");
-#else
-                                               msg_print("Mortal! Repent of thy impiousness.");
-#endif
+                                               msg_print(_("「我は汝の下僕にあらず! 悪行者よ、悔い改めよ!」", "Mortal! Repent of thy impiousness."));
                                        }
                                }
                        }
                }
                break;
 
-       case CRUS_SPEL_HEROISM:
-#ifdef JP
-               if (name) return "»Îµ¤¹âÍÈ";
-               if (desc) return "°ìÄê»þ´Ö¡¢¥Ò¡¼¥í¡¼µ¤Ê¬¤Ë¤Ê¤ë¡£";
-#else
-               if (name) return "Heroism";
-               if (desc) return "Removes fear, and gives bonus to hit and 10 more HP for a while.";
-#endif
+       case 24:
+               if (name) return _("士気高揚", "Heroism");
+               if (desc) return _("一定時間、ヒーロー気分になる。", "Removes fear, and gives bonus to hit and 10 more HP for a while.");
     
                {
                        int base = 25;
@@ -9406,38 +6824,25 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_DISPEL_CURSE:
-#ifdef JP
-               if (name) return "¼ö¤¤Â໶";
-               if (desc) return "¥¢¥¤¥Æ¥à¤Ë¤«¤«¤Ã¤¿¶¯ÎϤʼö¤¤¤ò²ò½ü¤¹¤ë¡£";
-#else
-               if (name) return "Dispel Curse";
-               if (desc) return "Removes normal and heavy curse from equipped items.";
-#endif
+       case 25:
+               if (name) return _("呪い退散", "Dispel Curse");
+               if (desc) return _("アイテムにかかった強力な呪いを解除する。", "Removes normal and heavy curse from equipped items.");
     
                {
                        if (cast)
                        {
                                if (remove_all_curse())
                                {
-#ifdef JP
-                                       msg_print("狼¤Ë¸«¼é¤é¤ì¤Æ¤¤¤ë¤è¤¦¤Êµ¤¤¬¤¹¤ë¡£");
-#else
-                                       msg_print("You feel as if someone is watching over you.");
-#endif
+                                       msg_print(_("誰かに見守られているような気がする。", "You feel as if someone is watching over you."));
                                }
                        }
                }
                break;
 
-       case CRUS_SPEL_BANISH_EVIL:
-#ifdef JP
-               if (name) return "¼Ù°­ÄÉÊü";
-               if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¼Ù°­¤Ê¥â¥ó¥¹¥¿¡¼¤ò¥Æ¥ì¥Ý¡¼¥È¤µ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
-#else
-               if (name) return "Banish Evil";
-               if (desc) return "Teleports all evil monsters in sight away unless resisted.";
-#endif
+       case 26:
+               if (name) return _("邪悪追放", "Banish Evil");
+               if (desc) return _("視界内の全ての邪悪なモンスターをテレポートさせる。抵抗されると無効。", 
+                       "Teleports all evil monsters in sight away unless resisted.");
     
                {
                        int power = 100;
@@ -9448,25 +6853,15 @@ cptr do_spell(int realm, int spell, int mode)
                        {
                                if (banish_evil(power))
                                {
-#ifdef JP
-                                       msg_print("¿ÀÀ»¤ÊÎϤ¬¼Ù°­¤òÂǤÁʧ¤Ã¤¿¡ª");
-#else
-                                       msg_print("The holy power banishes evil!");
-#endif
-
+                                       msg_print(_("神聖な力が邪悪を打ち払った!", "The holy power banishes evil!"));
                                }
                        }
                }
                break;
 
-       case CRUS_SPEL_ARMAGEDDON:
-#ifdef JP
-               if (name) return "¥Ï¥ë¥Þ¥²¥É¥ó";
-               if (desc) return "¼þÊդΥ¢¥¤¥Æ¥à¡¢¥â¥ó¥¹¥¿¡¼¡¢ÃÏ·Á¤òÇ˲õ¤¹¤ë¡£";
-#else
-               if (name) return "Armageddon";
-               if (desc) return "Destroy everything in nearby area.";
-#endif
+       case 27:
+               if (name) return _("ハルマゲドン", "Armageddon");
+               if (desc) return _("周辺のアイテム、モンスター、地形を破壊する。", "Destroy everything in nearby area.");
     
                {
                        int base = 12;
@@ -9474,19 +6869,15 @@ cptr do_spell(int realm, int spell, int mode)
 
                        if (cast)
                        {
-                               destroy_area(py, px, base + randint1(sides), FALSE);
+                               destroy_area(p_ptr->y, p_ptr->x, base + randint1(sides), FALSE);
                        }
                }
                break;
 
-       case CRUS_SPEL_AN_EYE_FOR_AN_EYE:
-#ifdef JP
-               if (name) return "ÌܤˤÏÌܤò";
-               if (desc) return "°ìÄê»þ´Ö¡¢¼«Ê¬¤¬¥À¥á¡¼¥¸¤ò¼õ¤±¤¿¤È¤­¤Ë¹¶·â¤ò¹Ô¤Ã¤¿¥â¥ó¥¹¥¿¡¼¤ËÂФ·¤ÆƱÅù¤Î¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
-#else
-               if (name) return "An Eye for an Eye";
-               if (desc) return "Gives special aura for a while. When you are attacked by a monster, the monster are injured with same amount of damage as you take.";
-#endif
+       case 28:
+               if (name) return _("目には目を", "An Eye for an Eye");
+               if (desc) return _("一定時間、自分がダメージを受けたときに攻撃を行ったモンスターに対して同等のダメージを与える。", 
+                       "Gives special aura for a while. When you are attacked by a monster, the monster are injured with same amount of damage as you take.");
     
                {
                        int base = 10;
@@ -9500,17 +6891,12 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_WRATH_OF_THE_GOD:
-#ifdef JP
-               if (name) return "¿À¤ÎÅܤê";
-               if (desc) return "¥¿¡¼¥²¥Ã¥È¤Î¼þ°Ï¤Ëʬ²ò¤Îµå¤ò¿¿ôÍî¤È¤¹¡£";
-#else
-               if (name) return "Wrath of the God";
-               if (desc) return "Drops many balls of disintegration near the target.";
-#endif
+       case 29:
+               if (name) return _("神の怒り", "Wrath of the God");
+               if (desc) return _("ターゲットの周囲に分解の球を多数落とす。", "Drops many balls of disintegration near the target.");
     
                {
-                       int dam = plev * 3 + 25;
+                       HIT_POINT dam = plev * 3 + 25;
                        int rad = 2;
 
                        if (info) return info_multi_damage(dam);
@@ -9522,14 +6908,10 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_DIVINE_INTERVENTION:
-#ifdef JP
-               if (name) return "¿À°Ò";
-               if (desc) return "ÎÙÀܤ¹¤ë¥â¥ó¥¹¥¿¡¼¤ËÀ»¤Ê¤ë¥À¥á¡¼¥¸¤òÍ¿¤¨¡¢»ë³¦Æâ¤Î¥â¥ó¥¹¥¿¡¼¤Ë¥À¥á¡¼¥¸¡¢¸ºÂ®¡¢Û¯Û°¡¢º®Í𡢶²ÉÝ¡¢Ì²¤ê¤òÍ¿¤¨¤ë¡£¤µ¤é¤ËÂÎÎϤò²óÉü¤¹¤ë¡£";
-#else
-               if (name) return "Divine Intervention";
-               if (desc) return "Damages all adjacent monsters with holy power. Damages and attempt to slow, stun, confuse, scare and freeze all monsters in sight. And heals HP.";
-#endif
+       case 30:
+               if (name) return _("神威", "Divine Intervention");
+               if (desc) return _("隣接するモンスターに聖なるダメージを与え、視界内のモンスターにダメージ、減速、朦朧、混乱、恐怖、眠りを与える。さらに体力を回復する。", 
+                       "Damages all adjacent monsters with holy power. Damages and attempt to slow, stun, confuse, scare and freeze all monsters in sight. And heals HP.");
     
                {
                        int b_dam = plev * 11;
@@ -9537,17 +6919,12 @@ cptr do_spell(int realm, int spell, int mode)
                        int heal = 100;
                        int power = plev * 4;
 
-#ifdef JP
-                       if (info) return format("²ó%d/»%d+%d", heal, d_dam, b_dam/2);
-#else
-                       if (info) return format("h%d/dm%d+%d", heal, d_dam, b_dam/2);
-#endif
-
+                       if (info) return format(_("回%d/損%d+%d", "h%d/dm%d+%d"), heal, d_dam, b_dam/2);
                        if (cast)
                        {
-                               project(0, 1, py, px, b_dam, GF_HOLY_FIRE, PROJECT_KILL, -1);
+                               project(0, 1, p_ptr->y, p_ptr->x, b_dam, GF_HOLY_FIRE, PROJECT_KILL, -1);
                                dispel_monsters(d_dam);
-                               slow_monsters();
+                               slow_monsters(plev);
                                stun_monsters(power);
                                confuse_monsters(power);
                                turn_monsters(power);
@@ -9557,14 +6934,10 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case CRUS_SPEL_CRUSADE:
-#ifdef JP
-               if (name) return "À»Àï";
-               if (desc) return "»ë³¦Æâ¤ÎÁ±Îɤʥâ¥ó¥¹¥¿¡¼¤ò¥Ú¥Ã¥È¤Ë¤·¤è¤¦¤È¤·¡¢¤Ê¤é¤Ê¤«¤Ã¤¿¾ì¹çµÚ¤ÓÁ±ÎɤǤʤ¤¥â¥ó¥¹¥¿¡¼¤ò¶²Éݤµ¤»¤ë¡£¤µ¤é¤Ë¿¿ô¤Î²Ã®¤µ¤ì¤¿µ³»Î¤ò¾¤´­¤·¡¢¥Ò¡¼¥í¡¼¡¢½ËÊ¡¡¢²Ã®¡¢Âмٰ­·ë³¦¤òÆÀ¤ë¡£";
-#else
-               if (name) return "Crusade";
-               if (desc) return "Attempts to charm all good monsters in sight, and scare all non-charmed monsters, and summons great number of knights, and gives heroism, bless, speed and protection from evil.";
-#endif
+       case 31:
+               if (name) return _("聖戦", "Crusade");
+               if (desc) return _("視界内の善良なモンスターをペットにしようとし、ならなかった場合及び善良でないモンスターを恐怖させる。さらに多数の加速された騎士を召喚し、ヒーロー、祝福、加速、対邪悪結界を得る。", 
+                       "Attempts to charm all good monsters in sight, and scare all non-charmed monsters, and summons great number of knights, and gives heroism, bless, speed and protection from evil.");
     
                {
                        if (cast)
@@ -9578,11 +6951,11 @@ cptr do_spell(int realm, int spell, int mode)
                                for (i = 0; i < 12; i++)
                                {
                                        int attempt = 10;
-                                       int my, mx;
+                                       POSITION my = 0, mx = 0;
 
                                        while (attempt--)
                                        {
-                                               scatter(&my, &mx, py, px, 4, 0);
+                                               scatter(&my, &mx, p_ptr->y, p_ptr->x, 4, 0);
 
                                                /* Require empty grids */
                                                if (cave_empty_bold2(my, mx)) break;
@@ -9598,26 +6971,44 @@ cptr do_spell(int realm, int spell, int mode)
                        }
                }
                break;
+       }
 
-       case MUSI_SPEL_SONG_OF_HOLDING:
-#ifdef JP
-               if (name) return "ÃÙÆߤβÎ";
-               if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò¸ºÂ®¤µ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
-#else
-               if (name) return "Song of Holding";
-               if (desc) return "Attempts to slow all monsters in sight.";
-#endif
+       return "";
+}
+
+
+/*!
+ * @brief 歌の各処理を行う
+ * @param spell 歌ID
+ * @param mode 処理内容 (SPELL_NAME / SPELL_DESC / SPELL_INFO / SPELL_CAST / SPELL_FAIL / SPELL_CONT / SPELL_STOP)
+ * @return SPELL_NAME / SPELL_DESC / SPELL_INFO 時には文字列ポインタを返す。SPELL_CAST / SPELL_FAIL / SPELL_CONT / SPELL_STOP 時はNULL文字列を返す。
+ */
+static cptr do_music_spell(SPELL_IDX spell, BIT_FLAGS mode)
+{
+       bool name = (mode == SPELL_NAME) ? TRUE : FALSE;
+       bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;
+       bool info = (mode == SPELL_INFO) ? TRUE : FALSE;
+       bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;
+       bool fail = (mode == SPELL_FAIL) ? TRUE : FALSE;
+       bool cont = (mode == SPELL_CONT) ? TRUE : FALSE;
+       bool stop = (mode == SPELL_STOP) ? TRUE : FALSE;
+       static const char s_dam[] = _("損傷:", "dam ");
+
+       int dir;
+       int plev = p_ptr->lev;
+
+       switch (spell)
+       {
+       case 0:
+               if (name) return _("遅鈍の歌", "Song of Holding");
+               if (desc) return _("視界内の全てのモンスターを減速させる。抵抗されると無効。", "Attempts to slow all monsters in sight.");
     
                /* Stop singing before start another */
                if (cast || fail) stop_singing();
 
                if (cast)
                {
-#ifdef JP
-                       msg_print("¤æ¤Ã¤¯¤ê¤È¤·¤¿¥á¥í¥Ç¥£¤ò¸ý¤º¤µ¤ß»Ï¤á¤¿¡¥¡¥¡¥");
-#else
-                       msg_print("You start humming a slow, steady melody...");
-#endif
+                       msg_print(_("ゆっくりとしたメロディを口ずさみ始めた...", "You start humming a slow, steady melody..."));
                        start_singing(spell, MUSIC_SLOW);
                }
 
@@ -9628,30 +7019,21 @@ cptr do_spell(int realm, int spell, int mode)
 
                        if (cont)
                        {
-                               slow_monsters();
+                               slow_monsters(plev);
                        }
                }
                break;
 
-       case MUSI_SPEL_SONG_OF_BLESSING:
-#ifdef JP
-               if (name) return "½ËÊ¡¤Î²Î";
-               if (desc) return "Ì¿ÃæΨ¤ÈAC¤Î¥Ü¡¼¥Ê¥¹¤òÆÀ¤ë¡£";
-#else
-               if (name) return "Song of Blessing";
-               if (desc) return "Gives bonus to hit and AC for a few turns.";
-#endif
+       case 1:
+               if (name) return _("祝福の歌", "Song of Blessing");
+               if (desc) return _("命中率とACのボーナスを得る。", "Gives bonus to hit and AC for a few turns.");
     
                /* Stop singing before start another */
                if (cast || fail) stop_singing();
 
                if (cast)
                {
-#ifdef JP
-                       msg_print("¸·¤«¤Ê¥á¥í¥Ç¥£¤òÁդǻϤ᤿¡¥¡¥¡¥");
-#else
-                       msg_print("The holy power of the Music of the Ainur enters you...");
-#endif
+                       msg_print(_("厳かなメロディを奏で始めた...", "The holy power of the Music of the Ainur enters you..."));
                        start_singing(spell, MUSIC_BLESS);
                }
 
@@ -9659,24 +7041,15 @@ cptr do_spell(int realm, int spell, int mode)
                {
                        if (!p_ptr->blessed)
                        {
-#ifdef JP
-                               msg_print("¹â·é¤Êµ¤Ê¬¤¬¾Ã¤¨¼º¤»¤¿¡£");
-#else
-                               msg_print("The prayer has expired.");
-#endif
+                               msg_print(_("高潔な気分が消え失せた。", "The prayer has expired."));
                        }
                }
 
                break;
 
-       case MUSI_SPEL_WRECKING_NOTE:
-#ifdef JP
-               if (name) return "Êø²õ¤Î²»¿§";
-               if (desc) return "¹ì²»¤Î¥Ü¥ë¥È¤òÊü¤Ä¡£";
-#else
-               if (name) return "Wrecking Note";
-               if (desc) return "Fires a bolt of sound.";
-#endif
+       case 2:
+               if (name) return _("崩壊の音色", "Wrecking Note");
+               if (desc) return _("轟音のボルトを放つ。", "Fires a bolt of sound.");
     
                /* Stop singing before start another */
                if (cast || fail) stop_singing();
@@ -9696,25 +7069,16 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case MUSI_SPEL_STUN_PATTERN:
-#ifdef JP
-               if (name) return "Û¯Û°¤ÎÀûΧ";
-               if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤òÛ¯Û°¤µ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
-#else
-               if (name) return "Stun Pattern";
-               if (desc) return "Attempts to stun all monsters in sight.";
-#endif
+       case 3:
+               if (name) return _("朦朧の旋律", "Stun Pattern");
+               if (desc) return _("視界内の全てのモンスターを朦朧させる。抵抗されると無効。", "Attempts to stun all monsters in sight.");
     
                /* Stop singing before start another */
                if (cast || fail) stop_singing();
 
                if (cast)
                {
-#ifdef JP
-                       msg_print("âÁÏǤµ¤»¤ë¥á¥í¥Ç¥£¤òÁդǻϤ᤿¡¥¡¥¡¥");
-#else
-                       msg_print("You weave a pattern of sounds to bewilder and daze...");
-#endif
+                       msg_print(_("眩惑させるメロディを奏で始めた...", "You weave a pattern of sounds to bewilder and daze..."));
                        start_singing(spell, MUSIC_STUN);
                }
 
@@ -9732,25 +7096,16 @@ cptr do_spell(int realm, int spell, int mode)
 
                break;
 
-       case MUSI_SPEL_FLOW_OF_LIFE:
-#ifdef JP
-               if (name) return "À¸Ì¿¤Îή¤ì";
-               if (desc) return "ÂÎÎϤò¾¯¤·²óÉü¤µ¤»¤ë¡£";
-#else
-               if (name) return "Flow of Life";
-               if (desc) return "Heals HP a little.";
-#endif
+       case 4:
+               if (name) return _("生命の流れ", "Flow of Life");
+               if (desc) return _("体力を少し回復させる。", "Heals HP a little.");
     
                /* Stop singing before start another */
                if (cast || fail) stop_singing();
 
                if (cast)
                {
-#ifdef JP
-                       msg_print("²Î¤òÄ̤·¤ÆÂΤ˳赤¤¬Ìá¤Ã¤Æ¤­¤¿¡¥¡¥¡¥");
-#else
-                       msg_print("Life flows through you as you sing a song of healing...");
-#endif
+                       msg_print(_("歌を通して体に活気が戻ってきた...", "Life flows through you as you sing a song of healing..."));
                        start_singing(spell, MUSIC_L_LIFE);
                }
 
@@ -9768,14 +7123,9 @@ cptr do_spell(int realm, int spell, int mode)
 
                break;
 
-       case MUSI_SPEL_SONG_OF_THE_SUN:
-#ifdef JP
-               if (name) return "ÂÀÍۤβÎ";
-               if (desc) return "¸÷¸»¤¬¾È¤é¤·¤Æ¤¤¤ëÈϰϤ«Éô²°Á´ÂΤò±Êµ×¤ËÌÀ¤ë¤¯¤¹¤ë¡£";
-#else
-               if (name) return "Song of the Sun";
-               if (desc) return "Lights up nearby area and the inside of a room permanently.";
-#endif
+       case 5:
+               if (name) return _("太陽の歌", "Song of the Sun");
+               if (desc) return _("光源が照らしている範囲か部屋全体を永久に明るくする。", "Lights up nearby area and the inside of a room permanently.");
     
                /* Stop singing before start another */
                if (cast || fail) stop_singing();
@@ -9789,36 +7139,22 @@ cptr do_spell(int realm, int spell, int mode)
 
                        if (cast)
                        {
-#ifdef JP
-                               msg_print("¸÷¤êµ±¤¯²Î¤¬ÊÕ¤ê¤ò¾È¤é¤·¤¿¡£");
-#else
-                               msg_print("Your uplifting song brings brightness to dark places...");
-#endif
-
+                               msg_print(_("光り輝く歌が辺りを照らした。", "Your uplifting song brings brightness to dark places..."));
                                lite_area(damroll(dice, sides), rad);
                        }
                }
                break;
 
-       case MUSI_SPEL_SONG_OF_FEAR:
-#ifdef JP
-               if (name) return "¶²ÉݤβÎ";
-               if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò¶²Éݤµ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
-#else
-               if (name) return "Song of Fear";
-               if (desc) return "Attempts to scare all monsters in sight.";
-#endif
+       case 6:
+               if (name) return _("恐怖の歌", "Song of Fear");
+               if (desc) return _("視界内の全てのモンスターを恐怖させる。抵抗されると無効。", "Attempts to scare all monsters in sight.");
     
                /* Stop singing before start another */
                if (cast || fail) stop_singing();
 
                if (cast)
                {
-#ifdef JP
-                       msg_print("¤ª¤É¤í¤ª¤É¤í¤·¤¤¥á¥í¥Ç¥£¤òÁդǻϤ᤿¡¥¡¥¡¥");
-#else
-                       msg_print("You start weaving a fearful pattern...");
-#endif
+                       msg_print(_("おどろおどろしいメロディを奏で始めた...", "You start weaving a fearful pattern..."));
                        start_singing(spell, MUSIC_FEAR);                       
                }
 
@@ -9835,25 +7171,16 @@ cptr do_spell(int realm, int spell, int mode)
 
                break;
 
-       case MUSI_SPEL_HEROIC_BALLAD:
-#ifdef JP
-               if (name) return "À襤¤Î²Î";
-               if (desc) return "¥Ò¡¼¥í¡¼µ¤Ê¬¤Ë¤Ê¤ë¡£";
-#else
-               if (name) return "Heroic Ballad";
-               if (desc) return "Removes fear, and gives bonus to hit and 10 more HP for a while.";
-#endif
+       case 7:
+               if (name) return _("戦いの歌", "Heroic Ballad");
+               if (desc) return _("ヒーロー気分になる。", "Removes fear, and gives bonus to hit and 10 more HP for a while.");
 
                /* Stop singing before start another */
                if (cast || fail) stop_singing();
 
                if (cast)
                {
-#ifdef JP
-                       msg_print("·ã¤·¤¤À襤¤Î²Î¤ò²Î¤Ã¤¿¡¥¡¥¡¥");
-#else
-                       msg_print("You start singing a song of intense fighting...");
-#endif
+                       msg_print(_("激しい戦いの歌を歌った...", "You start singing a song of intense fighting..."));
 
                        (void)hp_player(10);
                        (void)set_afraid(0);
@@ -9868,11 +7195,7 @@ cptr do_spell(int realm, int spell, int mode)
                {
                        if (!p_ptr->hero)
                        {
-#ifdef JP
-                               msg_print("¥Ò¡¼¥í¡¼¤Îµ¤Ê¬¤¬¾Ã¤¨¼º¤»¤¿¡£");
-#else
-                               msg_print("The heroism wears off.");
-#endif
+                               msg_print(_("ヒーローの気分が消え失せた。", "The heroism wears off."));
                                /* Recalculate hitpoints */
                                p_ptr->update |= (PU_HP);
                        }
@@ -9880,29 +7203,19 @@ cptr do_spell(int realm, int spell, int mode)
 
                break;
 
-       case MUSI_SPEL_CLAIRAUDIENCE:
-#ifdef JP
-               if (name) return "ÎîŪÃγÐ";
-               if (desc) return "¶á¤¯¤Îæ«/Èâ/³¬Ãʤò´¶ÃΤ¹¤ë¡£¥ì¥Ù¥ë15¤ÇÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¡¢20¤ÇºâÊõ¤È¥¢¥¤¥Æ¥à¤ò´¶ÃΤǤ­¤ë¤è¤¦¤Ë¤Ê¤ë¡£¥ì¥Ù¥ë25¤Ç¼þÊÕ¤ÎÃÏ·Á¤ò´¶ÃΤ·¡¢40¤Ç¤½¤Î³¬Á´ÂΤò±Êµ×¤Ë¾È¤é¤·¡¢¥À¥ó¥¸¥ç¥óÆâ¤Î¤¹¤Ù¤Æ¤Î¥¢¥¤¥Æ¥à¤ò´¶ÃΤ¹¤ë¡£¤³¤Î¸ú²Ì¤Ï²Î¤¤Â³¤±¤ë¤³¤È¤Ç½ç¤Ëµ¯¤³¤ë¡£";
-#else
-               if (name) return "Clairaudience";
-               if (desc) return "Detects traps, doors and stairs in your vicinity. And detects all monsters at level 15, treasures and items at level 20. Maps nearby area at level 25. Lights and know the whole level at level 40. These effects occurs by turns while this song continues.";
-#endif
+       case 8:
+               if (name) return _("霊的知覚", "Clairaudience");
+               if (desc) return _("近くの罠/扉/階段を感知する。レベル15で全てのモンスター、20で財宝とアイテムを感知できるようになる。レベル25で周辺の地形を感知し、40でその階全体を永久に照らし、ダンジョン内のすべてのアイテムを感知する。この効果は歌い続けることで順に起こる。", 
+                       "Detects traps, doors and stairs in your vicinity. And detects all monsters at level 15, treasures and items at level 20. Maps nearby area at level 25. Lights and know the whole level at level 40. These effects occurs by turns while this song continues.");
     
                /* Stop singing before start another */
                if (cast || fail) stop_singing();
 
                if (cast)
                {
-#ifdef JP
-                       msg_print("ÀŤ«¤Ê²»³Ú¤¬´¶³Ð¤ò¸¦¤®À¡¤Þ¤µ¤»¤¿¡¥¡¥¡¥");
-#else
-                       msg_print("Your quiet music sharpens your sense of hearing...");
-#endif
-
+                       msg_print(_("静かな音楽が感覚を研ぎ澄まさせた...", "Your quiet music sharpens your sense of hearing..."));
                        /* Hack -- Initialize the turn count */
-                       p_ptr->magic_num1[2] = 0;
-
+                       SINGING_COUNT(p_ptr) = 0;
                        start_singing(spell, MUSIC_DETECT);
                }
 
@@ -9913,14 +7226,14 @@ cptr do_spell(int realm, int spell, int mode)
 
                        if (cont)
                        {
-                               int count = p_ptr->magic_num1[2];
+                               int count = SINGING_COUNT(p_ptr);
 
                                if (count >= 19) wiz_lite(FALSE);
                                if (count >= 11)
                                {
                                        map_area(rad);
                                        if (plev > 39 && count < 19)
-                                               p_ptr->magic_num1[2] = count + 1;
+                                               SINGING_COUNT(p_ptr) = count + 1;
                                }
                                if (count >= 6)
                                {
@@ -9930,7 +7243,7 @@ cptr do_spell(int realm, int spell, int mode)
                                        detect_objects_normal(rad);
 
                                        if (plev > 24 && count < 11)
-                                               p_ptr->magic_num1[2] = count + 1;
+                                               SINGING_COUNT(p_ptr) = count + 1;
                                }
                                if (count >= 3)
                                {
@@ -9938,38 +7251,29 @@ cptr do_spell(int realm, int spell, int mode)
                                        detect_monsters_normal(rad);
 
                                        if (plev > 19 && count < 6)
-                                               p_ptr->magic_num1[2] = count + 1;
+                                               SINGING_COUNT(p_ptr) = count + 1;
                                }
                                detect_traps(rad, TRUE);
                                detect_doors(rad);
                                detect_stairs(rad);
 
                                if (plev > 14 && count < 3)
-                                       p_ptr->magic_num1[2] = count + 1;
+                                       SINGING_COUNT(p_ptr) = count + 1;
                        }
                }
 
                break;
 
-       case MUSI_SPEL_SOUL_SHRIEK:
-#ifdef JP
-               if (name) return "º²¤Î²Î";
-               if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ËÂФ·¤ÆÀº¿À¹¶·â¤ò¹Ô¤¦¡£";
-#else
-               if (name) return "Soul Shriek";
-               if (desc) return "Damages all monsters in sight with PSI damages.";
-#endif
+       case 9:
+               if (name) return _("魂の歌", "Soul Shriek");
+               if (desc) return _("視界内の全てのモンスターに対して精神攻撃を行う。", "Damages all monsters in sight with PSI damages.");
 
                /* Stop singing before start another */
                if (cast || fail) stop_singing();
 
                if (cast)
                {
-#ifdef JP
-                       msg_print("Àº¿À¤òDZ¤¸¶Ê¤²¤ë²Î¤ò²Î¤Ã¤¿¡¥¡¥¡¥");
-#else
-                       msg_print("You start singing a song of soul in pain...");
-#endif
+                       msg_print(_("精神を捻じ曲げる歌を歌った...", "You start singing a song of soul in pain..."));
                        start_singing(spell, MUSIC_PSI);
                }
 
@@ -9987,25 +7291,16 @@ cptr do_spell(int realm, int spell, int mode)
 
                break;
 
-       case MUSI_SPEL_SONG_OF_LORE:
-#ifdef JP
-               if (name) return "Ãμ±¤Î²Î";
-               if (desc) return "¼«Ê¬¤Î¤¤¤ë¥Þ¥¹¤ÈÎÙ¤ê¤Î¥Þ¥¹¤ËÍî¤Á¤Æ¤¤¤ë¥¢¥¤¥Æ¥à¤ò´ÕÄꤹ¤ë¡£";
-#else
-               if (name) return "Song of Lore";
-               if (desc) return "Identifies all items which are in the adjacent squares.";
-#endif
+       case 10:
+               if (name) return _("知識の歌", "Song of Lore");
+               if (desc) return _("自分のいるマスと隣りのマスに落ちているアイテムを鑑定する。", "Identifies all items which are in the adjacent squares.");
     
                /* Stop singing before start another */
                if (cast || fail) stop_singing();
 
                if (cast)
                {
-#ifdef JP
-                       msg_print("¤³¤ÎÀ¤³¦¤ÎÃ챤¬Î®¤ì¹þ¤ó¤Ç¤­¤¿¡¥¡¥¡¥");
-#else
-                       msg_print("You recall the rich lore of the world...");
-#endif
+                       msg_print(_("この世界の知識が流れ込んできた...", "You recall the rich lore of the world..."));
                        start_singing(spell, MUSIC_ID);
                }
 
@@ -10015,36 +7310,27 @@ cptr do_spell(int realm, int spell, int mode)
                        if (info) return info_radius(rad);
 
                        /*
-                        * ²Î¤Î³«»Ï»þ¤Ë¤â¸ú²Ìȯư¡§
-                        * MPÉÔ­¤Ç´ÕÄ꤬ȯư¤µ¤ì¤ëÁ°¤Ë²Î¤¬ÃæÃǤ·¤Æ¤·¤Þ¤¦¤Î¤òËɻߡ£
+                        * 歌の開始時にも効果発動:
+                        * MP不足で鑑定が発動される前に歌が中断してしまうのを防止。
                         */
                        if (cont || cast)
                        {
-                               project(0, rad, py, px, 0, GF_IDENTIFY, PROJECT_ITEM, -1);
+                               project(0, rad, p_ptr->y, p_ptr->x, 0, GF_IDENTIFY, PROJECT_ITEM, -1);
                        }
                }
 
                break;
 
-       case MUSI_SPEL_HIDING_TUNE:
-#ifdef JP
-               if (name) return "±£ÆۤβÎ";
-               if (desc) return "±£Ì©¹ÔưǽÎϤò¾å¾º¤µ¤»¤ë¡£";
-#else
-               if (name) return "Hiding Tune";
-               if (desc) return "Gives improved stealth.";
-#endif
+       case 11:
+               if (name) return _("隠遁の歌", "Hiding Tune");
+               if (desc) return _("隠密行動能力を上昇させる。", "Gives improved stealth.");
 
                /* Stop singing before start another */
                if (cast || fail) stop_singing();
 
                if (cast)
                {
-#ifdef JP
-                       msg_print("¤¢¤Ê¤¿¤Î»Ñ¤¬·Ê¿§¤Ë¤È¤±¤³¤ó¤Ç¤¤¤Ã¤¿¡¥¡¥¡¥");
-#else
-                       msg_print("Your song carries you beyond the sight of mortal eyes...");
-#endif
+                       msg_print(_("あなたの姿が景色にとけこんでいった...", "Your song carries you beyond the sight of mortal eyes..."));
                        start_singing(spell, MUSIC_STEALTH);
                }
 
@@ -10052,35 +7338,22 @@ cptr do_spell(int realm, int spell, int mode)
                {
                        if (!p_ptr->tim_stealth)
                        {
-#ifdef JP
-                               msg_print("»Ñ¤¬¤Ï¤Ã¤­¤ê¤È¸«¤¨¤ë¤è¤¦¤Ë¤Ê¤Ã¤¿¡£");
-#else
-                               msg_print("You are no longer hided.");
-#endif
+                               msg_print(_("姿がはっきりと見えるようになった。", "You are no longer hided."));
                        }
                }
 
                break;
 
-       case MUSI_SPEL_ILLUSION_PATTERN:
-#ifdef JP
-               if (name) return "¸¸±Æ¤ÎÀûΧ";
-               if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤òº®Í𤵤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
-#else
-               if (name) return "Illusion Pattern";
-               if (desc) return "Attempts to confuse all monsters in sight.";
-#endif
+       case 12:
+               if (name) return _("幻影の旋律", "Illusion Pattern");
+               if (desc) return _("視界内の全てのモンスターを混乱させる。抵抗されると無効。", "Attempts to confuse all monsters in sight.");
     
                /* Stop singing before start another */
                if (cast || fail) stop_singing();
 
                if (cast)
                {
-#ifdef JP
-                       msg_print("ÊÕ¤ê°ìÌ̤˸¸±Æ¤¬¸½¤ì¤¿¡¥¡¥¡¥");
-#else
-                       msg_print("You weave a pattern of sounds to beguile and confuse...");
-#endif
+                       msg_print(_("辺り一面に幻影が現れた...", "You weave a pattern of sounds to beguile and confuse..."));
                        start_singing(spell, MUSIC_CONF);
                }
 
@@ -10097,25 +7370,16 @@ cptr do_spell(int realm, int spell, int mode)
 
                break;
 
-       case MUSI_SPEL_DOOMCALL:
-#ifdef JP
-               if (name) return "ÇËÌǤ櫤Ó";
-               if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ËÂФ·¤Æ¹ì²»¹¶·â¤ò¹Ô¤¦¡£";
-#else
-               if (name) return "Doomcall";
-               if (desc) return "Damages all monsters in sight with booming sound.";
-#endif
+       case 13:
+               if (name) return _("破滅の叫び", "Doomcall");
+               if (desc) return _("視界内の全てのモンスターに対して轟音攻撃を行う。", "Damages all monsters in sight with booming sound.");
     
                /* Stop singing before start another */
                if (cast || fail) stop_singing();
 
                if (cast)
                {
-#ifdef JP
-                       msg_print("¹ì²»¤¬¶Á¤¤¤¿¡¥¡¥¡¥");
-#else
-                       msg_print("The fury of the Downfall of Numenor lashes out...");
-#endif
+                       msg_print(_("轟音が響いた...", "The fury of the Downfall of Numenor lashes out..."));
                        start_singing(spell, MUSIC_SOUND);
                }
 
@@ -10133,14 +7397,9 @@ cptr do_spell(int realm, int spell, int mode)
 
                break;
 
-       case MUSI_SPEL_FIRIELS_SONG:
-#ifdef JP
-               if (name) return "¥Õ¥£¥ê¥¨¥ë¤Î²Î";
-               if (desc) return "¼þ°Ï¤Î»àÂΤä¹ü¤òÀ¸¤­ÊÖ¤¹¡£";
-#else
-               if (name) return "Firiel's Song";
-               if (desc) return "Resurrects nearby corpse and skeletons. And makes these your pets.";
-#endif
+       case 14:
+               if (name) return _("フィリエルの歌", "Firiel's Song");
+               if (desc) return _("周囲の死体や骨を生き返す。", "Resurrects nearby corpse and skeletons. And makes these your pets.");
     
                {
                        /* Stop singing before start another */
@@ -10148,36 +7407,22 @@ cptr do_spell(int realm, int spell, int mode)
 
                        if (cast)
                        {
-#ifdef JP
-                               msg_print("À¸Ì¿¤ÈÉü³è¤Î¥Æ¡¼¥Þ¤òÁդǻϤ᤿¡¥¡¥¡¥");
-#else
-                               msg_print("The themes of life and revival are woven into your song...");
-#endif
-
-                               animate_dead(0, py, px);
+                               msg_print(_("生命と復活のテーマを奏で始めた...", "The themes of life and revival are woven into your song..."));
+                               animate_dead(0, p_ptr->y, p_ptr->x);
                        }
                }
                break;
 
-       case MUSI_SPEL_FELLOWSHIP_CHANT:
-#ifdef JP
-               if (name) return "ι¤ÎÃç´Ö";
-               if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò̥λ¤¹¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
-#else
-               if (name) return "Fellowship Chant";
-               if (desc) return "Attempts to charm all monsters in sight.";
-#endif
+       case 15:
+               if (name) return _("旅の仲間", "Fellowship Chant");
+               if (desc) return _("視界内の全てのモンスターを魅了する。抵抗されると無効。", "Attempts to charm all monsters in sight.");
 
                /* Stop singing before start another */
                if (cast || fail) stop_singing();
 
                if (cast)
                {
-#ifdef JP
-                       msg_print("°Â¤é¤«¤Ê¥á¥í¥Ç¥£¤òÁդǻϤ᤿¡¥¡¥¡¥");
-#else
-                       msg_print("You weave a slow, soothing melody of imploration...");
-#endif
+                       msg_print(_("安らかなメロディを奏で始めた...", "You weave a slow, soothing melody of imploration..."));
                        start_singing(spell, MUSIC_CHARM);
                }
 
@@ -10195,60 +7440,43 @@ cptr do_spell(int realm, int spell, int mode)
 
                break;
 
-       case MUSI_SPEL_SOUND_OF_DISINTEGRATION:
-#ifdef JP
-               if (name) return "ʬ²ò²»ÇÈ";
-               if (desc) return "Êɤò·¡¤ê¿Ê¤à¡£¼«Ê¬¤Î­¸µ¤Î¥¢¥¤¥Æ¥à¤Ï¾øȯ¤¹¤ë¡£";
-#else
-               if (name) return "Sound of disintegration";
-               if (desc) return "Turns all rocks in the adjacent squares to mud.";
-#endif
+       case 16:
+               if (name) return _("分解音波", "Sound of disintegration");
+               if (desc) return _("壁を掘り進む。自分の足元のアイテムは蒸発する。", "Makes you be able to burrow into walls. Objects under your feet evaporate.");
 
                /* Stop singing before start another */
                if (cast || fail) stop_singing();
 
                if (cast)
                {
-#ifdef JP
-                       msg_print("Ê´ºÕ¤¹¤ë¥á¥í¥Ç¥£¤òÁդǻϤ᤿¡¥¡¥¡¥");
-#else
-                       msg_print("You weave a violent pattern of sounds to break wall.");
-#endif
+                       msg_print(_("粉砕するメロディを奏で始めた...", "You weave a violent pattern of sounds to break wall."));
                        start_singing(spell, MUSIC_WALL);
                }
 
                {
                        /*
-                        * ²Î¤Î³«»Ï»þ¤Ë¤â¸ú²Ìȯư¡§
-                        * MPÉÔ­¤Ç¸ú²Ì¤¬È¯Æ°¤µ¤ì¤ëÁ°¤Ë²Î¤¬ÃæÃǤ·¤Æ¤·¤Þ¤¦¤Î¤òËɻߡ£
+                        * 歌の開始時にも効果発動:
+                        * MP不足で効果が発動される前に歌が中断してしまうのを防止。
                         */
                        if (cont || cast)
                        {
-                               project(0, 0, py, px,
+                               project(0, 0, p_ptr->y, p_ptr->x,
                                        0, GF_DISINTEGRATE, PROJECT_KILL | PROJECT_ITEM | PROJECT_HIDE, -1);
                        }
                }
                break;
 
-       case MUSI_SPEL_FINRODS_RESISTANCE:
-#ifdef JP
-               if (name) return "¸µÁÇÂÑÀ­";
-               if (desc) return "»À¡¢ÅÅ·â¡¢±ê¡¢Î䵤¡¢ÆǤËÂФ¹¤ëÂÑÀ­¤òÆÀ¤ë¡£ÁõÈ÷¤Ë¤è¤ëÂÑÀ­¤ËÎßÀѤ¹¤ë¡£";
-#else
-               if (name) return "Finrod's Resistance";
-               if (desc) return "Gives resistance to fire, cold, electricity, acid and poison. These resistances can be added to which from equipment for more powerful resistances.";
-#endif
+       case 17:
+               if (name) return _("元素耐性", "Finrod's Resistance");
+               if (desc) return _("酸、電撃、炎、冷気、毒に対する耐性を得る。装備による耐性に累積する。", 
+                       "Gives resistance to fire, cold, electricity, acid and poison. These resistances can be added to which from equipment for more powerful resistances.");
     
                /* Stop singing before start another */
                if (cast || fail) stop_singing();
 
                if (cast)
                {
-#ifdef JP
-                       msg_print("¸µÁǤÎÎϤËÂФ¹¤ëǦÂѤβΤò²Î¤Ã¤¿¡£");
-#else
-                       msg_print("You sing a song of perseverance against powers...");
-#endif
+                       msg_print(_("元素の力に対する忍耐の歌を歌った。", "You sing a song of perseverance against powers..."));
                        start_singing(spell, MUSIC_RESIST);
                }
 
@@ -10256,71 +7484,42 @@ cptr do_spell(int realm, int spell, int mode)
                {
                        if (!p_ptr->oppose_acid)
                        {
-#ifdef JP
-                               msg_print("»À¤Ø¤ÎÂÑÀ­¤¬Çö¤ì¤¿µ¤¤¬¤¹¤ë¡£");
-#else
-                               msg_print("You feel less resistant to acid.");
-#endif
+                               msg_print(_("酸への耐性が薄れた気がする。", "You feel less resistant to acid."));
                        }
 
                        if (!p_ptr->oppose_elec)
                        {
-#ifdef JP
-                               msg_print("ÅÅ·â¤Ø¤ÎÂÑÀ­¤¬Çö¤ì¤¿µ¤¤¬¤¹¤ë¡£");
-#else
-                               msg_print("You feel less resistant to elec.");
-#endif
+                               msg_print(_("電撃への耐性が薄れた気がする。", "You feel less resistant to elec."));
                        }
 
                        if (!p_ptr->oppose_fire)
                        {
-#ifdef JP
-                               msg_print("²Ð¤Ø¤ÎÂÑÀ­¤¬Çö¤ì¤¿µ¤¤¬¤¹¤ë¡£");
-#else
-                               msg_print("You feel less resistant to fire.");
-#endif
+                               msg_print(_("火への耐性が薄れた気がする。", "You feel less resistant to fire."));
                        }
 
                        if (!p_ptr->oppose_cold)
                        {
-#ifdef JP
-                               msg_print("Î䵤¤Ø¤ÎÂÑÀ­¤¬Çö¤ì¤¿µ¤¤¬¤¹¤ë¡£");
-#else
-                               msg_print("You feel less resistant to cold.");
-#endif
+                               msg_print(_("冷気への耐性が薄れた気がする。", "You feel less resistant to cold."));
                        }
 
                        if (!p_ptr->oppose_pois)
                        {
-#ifdef JP
-                               msg_print("ÆǤؤÎÂÑÀ­¤¬Çö¤ì¤¿µ¤¤¬¤¹¤ë¡£");
-#else
-                               msg_print("You feel less resistant to pois.");
-#endif
+                               msg_print(_("毒への耐性が薄れた気がする。", "You feel less resistant to pois."));
                        }
                }
 
                break;
 
-       case MUSI_SPEL_HOBBIT_MELODIES:
-#ifdef JP
-               if (name) return "¥Û¥Ó¥Ã¥È¤Î¥á¥í¥Ç¥£";
-               if (desc) return "²Ã®¤¹¤ë¡£";
-#else
-               if (name) return "Hobbit Melodies";
-               if (desc) return "Hastes you.";
-#endif
+       case 18:
+               if (name) return _("ホビットのメロディ", "Hobbit Melodies");
+               if (desc) return _("加速する。", "Hastes you.");
 
                /* Stop singing before start another */
                if (cast || fail) stop_singing();
 
                if (cast)
                {
-#ifdef JP
-                       msg_print("·Ú²÷¤Ê²Î¤ò¸ý¤º¤µ¤ß»Ï¤á¤¿¡¥¡¥¡¥");
-#else
-                       msg_print("You start singing joyful pop song...");
-#endif
+                       msg_print(_("軽快な歌を口ずさみ始めた...", "You start singing joyful pop song..."));
                        start_singing(spell, MUSIC_SPEED);
                }
 
@@ -10328,24 +7527,15 @@ cptr do_spell(int realm, int spell, int mode)
                {
                        if (!p_ptr->fast)
                        {
-#ifdef JP
-                               msg_print("Æ°¤­¤ÎÁÇÁᤵ¤¬¤Ê¤¯¤Ê¤Ã¤¿¤è¤¦¤À¡£");
-#else
-                               msg_print("You feel yourself slow down.");
-#endif
+                               msg_print(_("動きの素早さがなくなったようだ。", "You feel yourself slow down."));
                        }
                }
 
                break;
 
-       case MUSI_SPEL_WORLD_CONTORTION:
-#ifdef JP
-               if (name) return "ÏĤó¤ÀÀ¤³¦";
-               if (desc) return "¶á¤¯¤Î¥â¥ó¥¹¥¿¡¼¤ò¥Æ¥ì¥Ý¡¼¥È¤µ¤»¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
-#else
-               if (name) return "World Contortion";
-               if (desc) return "Teleports all nearby monsters away unless resisted.";
-#endif
+       case 19:
+               if (name) return _("歪んだ世界", "World Contortion");
+               if (desc) return _("近くのモンスターをテレポートさせる。抵抗されると無効。", "Teleports all nearby monsters away unless resisted.");
     
                {
                        int rad = plev / 15 + 1;
@@ -10358,36 +7548,23 @@ cptr do_spell(int realm, int spell, int mode)
 
                        if (cast)
                        {
-#ifdef JP
-                               msg_print("²Î¤¬¶õ´Ö¤òÏĤ᤿¡¥¡¥¡¥");
-#else
-                               msg_print("Reality whirls wildly as you sing a dizzying melody...");
-#endif
-
-                               project(0, rad, py, px, power, GF_AWAY_ALL, PROJECT_KILL, -1);
+                               msg_print(_("歌が空間を歪めた...", "Reality whirls wildly as you sing a dizzying melody..."));
+                               project(0, rad, p_ptr->y, p_ptr->x, power, GF_AWAY_ALL, PROJECT_KILL, -1);
                        }
                }
                break;
 
-       case MUSI_SPEL_DISPELLING_CHANT:
-#ifdef JP
-               if (name) return "Â໶¤Î²Î";
-               if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤Ë¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£¼Ù°­¤Ê¥â¥ó¥¹¥¿¡¼¤ËÆäËÂ礭¤Ê¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
-#else
-               if (name) return "Dispelling chant";
-               if (desc) return "Damages all monsters in sight. Hurts evil monsters greatly.";
-#endif
+       case 20:
+               if (name) return _("退散の歌", "Dispelling chant");
+               if (desc) return _("視界内の全てのモンスターにダメージを与える。邪悪なモンスターに特に大きなダメージを与える。", 
+                       "Damages all monsters in sight. Hurts evil monsters greatly.");
     
                /* Stop singing before start another */
                if (cast || fail) stop_singing();
 
                if (cast)
                {
-#ifdef JP
-                       msg_print("ÂѤ¨¤é¤ì¤Ê¤¤ÉÔ¶¨Ï²»¤¬Å¨¤òÀÕ¤áΩ¤Æ¤¿¡¥¡¥¡¥");
-#else
-                       msg_print("You cry out in an ear-wracking voice...");
-#endif
+                       msg_print(_("耐えられない不協和音が敵を責め立てた...", "You cry out in an ear-wracking voice..."));
                        start_singing(spell, MUSIC_DISPEL);
                }
 
@@ -10405,25 +7582,16 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case MUSI_SPEL_THE_VOICE_OF_SARUMAN:
-#ifdef JP
-               if (name) return "¥µ¥ë¥Þ¥ó¤Î´Å¸À";
-               if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤ò¸ºÂ®¤µ¤»¡¢Ì²¤é¤»¤è¤¦¤È¤¹¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
-#else
-               if (name) return "The Voice of Saruman";
-               if (desc) return "Attempts to slow and sleep all monsters in sight.";
-#endif
+       case 21:
+               if (name) return _("サルマンの甘言", "The Voice of Saruman");
+               if (desc) return _("視界内の全てのモンスターを減速させ、眠らせようとする。抵抗されると無効。", "Attempts to slow and sleep all monsters in sight.");
     
                /* Stop singing before start another */
                if (cast || fail) stop_singing();
 
                if (cast)
                {
-#ifdef JP
-                       msg_print("Í¥¤·¤¯¡¢Ì¥ÎÏŪ¤Ê²Î¤ò¸ý¤º¤µ¤ß»Ï¤á¤¿¡¥¡¥¡¥");
-#else
-                       msg_print("You start humming a gentle and attractive song...");
-#endif
+                       msg_print(_("優しく、魅力的な歌を口ずさみ始めた...", "You start humming a gentle and attractive song..."));
                        start_singing(spell, MUSIC_SARUMAN);
                }
 
@@ -10434,21 +7602,16 @@ cptr do_spell(int realm, int spell, int mode)
 
                        if (cont)
                        {
-                               slow_monsters();
-                               sleep_monsters();
+                               slow_monsters(plev);
+                               sleep_monsters(plev);
                        }
                }
 
                break;
 
-       case MUSI_SPEL_SONG_OF_THE_TEMPEST:
-#ifdef JP
-               if (name) return "Íò¤Î²»¿§";
-               if (desc) return "¹ì²»¤Î¥Ó¡¼¥à¤òÊü¤Ä¡£";
-#else
-               if (name) return "Song of the Tempest";
-               if (desc) return "Fires a beam of sound.";
-#endif
+       case 22:
+               if (name) return _("嵐の音色", "Song of the Tempest");
+               if (desc) return _("轟音のビームを放つ。", "Fires a beam of sound.");
     
                {
                        int dice = 15 + (plev - 1) / 2;
@@ -10468,14 +7631,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case MUSI_SPEL_AMBARKANTA:
-#ifdef JP
-               if (name) return "¤â¤¦°ì¤Ä¤ÎÀ¤³¦";
-               if (desc) return "¸½ºß¤Î³¬¤òºÆ¹½À®¤¹¤ë¡£";
-#else
-               if (name) return "Ambarkanta";
-               if (desc) return "Recreates current dungeon level.";
-#endif
+       case 23:
+               if (name) return _("もう一つの世界", "Ambarkanta");
+               if (desc) return _("現在の階を再構成する。", "Recreates current dungeon level.");
     
                {
                        int base = 15;
@@ -10488,36 +7646,23 @@ cptr do_spell(int realm, int spell, int mode)
 
                        if (cast)
                        {
-#ifdef JP
-                               msg_print("¼þ°Ï¤¬ÊѲ½¤·»Ï¤á¤¿¡¥¡¥¡¥");
-#else
-                               msg_print("You sing of the primeval shaping of Middle-earth...");
-#endif
-
+                               msg_print(_("周囲が変化し始めた...", "You sing of the primeval shaping of Middle-earth..."));
                                alter_reality();
                        }
                }
                break;
 
-       case MUSI_SPEL_WRECKING_PATTERN:
-#ifdef JP
-               if (name) return "Ç˲õ¤ÎÀûΧ";
-               if (desc) return "¼þ°Ï¤Î¥À¥ó¥¸¥ç¥ó¤òÍɤ餷¡¢ÊɤȾ²¤ò¥é¥ó¥À¥à¤ËÆþ¤ìÊѤ¨¤ë¡£";
-#else
-               if (name) return "Wrecking Pattern";
-               if (desc) return "Shakes dungeon structure, and results in random swapping of floors and walls.";
-#endif
+       case 24:
+               if (name) return _("破壊の旋律", "Wrecking Pattern");
+               if (desc) return _("周囲のダンジョンを揺らし、壁と床をランダムに入れ変える。", 
+                       "Shakes dungeon structure, and results in random swapping of floors and walls.");
 
                /* Stop singing before start another */
                if (cast || fail) stop_singing();
 
                if (cast)
                {
-#ifdef JP
-                       msg_print("Ç˲õŪ¤Ê²Î¤¬¶Á¤­¤ï¤¿¤Ã¤¿¡¥¡¥¡¥");
-#else
-                       msg_print("You weave a pattern of sounds to contort and shatter...");
-#endif
+                       msg_print(_("破壊的な歌が響きわたった...", "You weave a pattern of sounds to contort and shatter..."));
                        start_singing(spell, MUSIC_QUAKE);
                }
 
@@ -10528,32 +7673,23 @@ cptr do_spell(int realm, int spell, int mode)
 
                        if (cont)
                        {
-                               earthquake(py, px, 10);
+                               earthquake(p_ptr->y, p_ptr->x, 10);
                        }
                }
 
                break;
 
 
-       case MUSI_SPEL_STATIONARY_SHRIEK:
-#ifdef JP
-               if (name) return "ÄäÂڤβÎ";
-               if (desc) return "»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤òËãá㤵¤»¤è¤¦¤È¤¹¤ë¡£Äñ¹³¤µ¤ì¤ë¤È̵¸ú¡£";
-#else
-               if (name) return "Stationary Shriek";
-               if (desc) return "Attempts to freeze all monsters in sight.";
-#endif
+       case 25:
+               if (name) return _("停滞の歌", "Stationary Shriek");
+               if (desc) return _("視界内の全てのモンスターを麻痺させようとする。抵抗されると無効。", "Attempts to freeze all monsters in sight.");
     
                /* Stop singing before start another */
                if (cast || fail) stop_singing();
 
                if (cast)
                {
-#ifdef JP
-                       msg_print("¤æ¤Ã¤¯¤ê¤È¤·¤¿¥á¥í¥Ç¥£¤òÁդǻϤ᤿¡¥¡¥¡¥");
-#else
-                       msg_print("You weave a very slow pattern which is almost likely to stop...");
-#endif
+                       msg_print(_("ゆっくりとしたメロディを奏で始めた...", "You weave a very slow pattern which is almost likely to stop..."));
                        start_singing(spell, MUSIC_STASIS);
                }
 
@@ -10570,14 +7706,10 @@ cptr do_spell(int realm, int spell, int mode)
 
                break;
 
-       case MUSI_SPEL_ENDURANCE:
-#ifdef JP
-               if (name) return "¼é¤ê¤Î²Î";
-               if (desc) return "¼«Ê¬¤Î¤¤¤ë¾²¤Î¾å¤Ë¡¢¥â¥ó¥¹¥¿¡¼¤¬Ä̤êÈ´¤±¤¿¤ê¾¤´­¤µ¤ì¤¿¤ê¤¹¤ë¤³¤È¤¬¤Ç¤­¤Ê¤¯¤Ê¤ë¥ë¡¼¥ó¤òÉÁ¤¯¡£";
-#else
-               if (name) return "Endurance";
-               if (desc) return "Sets a glyph on the floor beneath you. Monsters cannot attack you if you are on a glyph, but can try to break glyph.";
-#endif
+       case 26:
+               if (name) return _("守りの歌", "Endurance");
+               if (desc) return _("自分のいる床の上に、モンスターが通り抜けたり召喚されたりすることができなくなるルーンを描く。", 
+                       "Sets a glyph on the floor beneath you. Monsters cannot attack you if you are on a glyph, but can try to break glyph.");
     
                {
                        /* Stop singing before start another */
@@ -10585,36 +7717,23 @@ cptr do_spell(int realm, int spell, int mode)
 
                        if (cast)
                        {
-#ifdef JP
-                               msg_print("²Î¤¬¿ÀÀ»¤Ê¾ì¤òºî¤ê½Ð¤·¤¿¡¥¡¥¡¥");
-#else
-                               msg_print("The holy power of the Music is creating sacred field...");
-#endif
-
+                               msg_print(_("歌が神聖な場を作り出した...", "The holy power of the Music is creating sacred field..."));
                                warding_glyph();
                        }
                }
                break;
 
-       case MUSI_SPEL_THE_HEROS_POEM:
-#ifdef JP
-               if (name) return "±Ñͺ¤Î»í";
-               if (desc) return "²Ã®¤·¡¢¥Ò¡¼¥í¡¼µ¤Ê¬¤Ë¤Ê¤ê¡¢»ë³¦Æâ¤ÎÁ´¤Æ¤Î¥â¥ó¥¹¥¿¡¼¤Ë¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
-#else
-               if (name) return "The Hero's Poem";
-               if (desc) return "Hastes you. Gives heroism. Damages all monsters in sight.";
-#endif
+       case 27:
+               if (name) return _("英雄の詩", "The Hero's Poem");
+               if (desc) return _("加速し、ヒーロー気分になり、視界内の全てのモンスターにダメージを与える。", 
+                       "Hastes you. Gives heroism. Damages all monsters in sight.");
     
                /* Stop singing before start another */
                if (cast || fail) stop_singing();
 
                if (cast)
                {
-#ifdef JP
-                       msg_print("±Ñͺ¤Î²Î¤ò¸ý¤º¤µ¤ó¤À¡¥¡¥¡¥");
-#else
-                       msg_print("You chant a powerful, heroic call to arms...");
-#endif
+                       msg_print(_("英雄の歌を口ずさんだ...", "You chant a powerful, heroic call to arms..."));
                        (void)hp_player(10);
                        (void)set_afraid(0);
 
@@ -10628,22 +7747,14 @@ cptr do_spell(int realm, int spell, int mode)
                {
                        if (!p_ptr->hero)
                        {
-#ifdef JP
-                               msg_print("¥Ò¡¼¥í¡¼¤Îµ¤Ê¬¤¬¾Ã¤¨¼º¤»¤¿¡£");
-#else
-                               msg_print("The heroism wears off.");
-#endif
+                               msg_print(_("ヒーローの気分が消え失せた。", "The heroism wears off."));
                                /* Recalculate hitpoints */
                                p_ptr->update |= (PU_HP);
                        }
 
                        if (!p_ptr->fast)
                        {
-#ifdef JP
-                               msg_print("Æ°¤­¤ÎÁÇÁᤵ¤¬¤Ê¤¯¤Ê¤Ã¤¿¤è¤¦¤À¡£");
-#else
-                               msg_print("You feel yourself slow down.");
-#endif
+                               msg_print(_("動きの素早さがなくなったようだ。", "You feel yourself slow down."));
                        }
                }
 
@@ -10660,25 +7771,16 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case MUSI_SPEL_RELIEF_OF_YAVANNA:
-#ifdef JP
-               if (name) return "¥ä¥ô¥¡¥ó¥Ê¤Î½õ¤±";
-               if (desc) return "¶¯ÎϤʲóÉü¤Î²Î¤Ç¡¢Éé½ý¤ÈÛ¯Û°¾õÂÖ¤âÁ´²÷¤¹¤ë¡£";
-#else
-               if (name) return "Relief of Yavanna";
-               if (desc) return "Powerful healing song. Also heals cut and stun completely.";
-#endif
+       case 28:
+               if (name) return _("ヤヴァンナの助け", "Relief of Yavanna");
+               if (desc) return _("強力な回復の歌で、負傷と朦朧状態も全快する。", "Powerful healing song. Also heals cut and stun completely.");
     
                /* Stop singing before start another */
                if (cast || fail) stop_singing();
 
                if (cast)
                {
-#ifdef JP
-                       msg_print("²Î¤òÄ̤·¤ÆÂΤ˳赤¤¬Ìá¤Ã¤Æ¤­¤¿¡¥¡¥¡¥");
-#else
-                       msg_print("Life flows through you as you sing the song...");
-#endif
+                       msg_print(_("歌を通して体に活気が戻ってきた...", "Life flows through you as you sing the song..."));
                        start_singing(spell, MUSIC_H_LIFE);
                }
 
@@ -10698,14 +7800,9 @@ cptr do_spell(int realm, int spell, int mode)
 
                break;
 
-       case MUSI_SPEL_GODDESS_REBIRTH:
-#ifdef JP
-               if (name) return "ºÆÀ¸¤Î²Î";
-               if (desc) return "¤¹¤Ù¤Æ¤Î¥¹¥Æ¡¼¥¿¥¹¤È·Ð¸³Ãͤò²óÉü¤¹¤ë¡£";
-#else
-               if (name) return "Goddess' rebirth";
-               if (desc) return "Restores all stats and experience.";
-#endif
+       case 29:
+               if (name) return _("再生の歌", "Goddess' rebirth");
+               if (desc) return _("すべてのステータスと経験値を回復する。", "Restores all stats and experience.");
     
                {
                        /* Stop singing before start another */
@@ -10713,11 +7810,8 @@ cptr do_spell(int realm, int spell, int mode)
 
                        if (cast)
                        {
-#ifdef JP
-                               msg_print("°Å¹õ¤ÎÃæ¤Ë¸÷¤ÈÈþ¤ò¤Õ¤ê¤Þ¤¤¤¿¡£ÂΤ¬¸µ¤Î³èÎϤò¼è¤êÌᤷ¤¿¡£");
-#else
-                               msg_print("You strewed light and beauty in the dark as you sing. You feel refreshed.");
-#endif
+                               msg_print(_("暗黒の中に光と美をふりまいた。体が元の活力を取り戻した。",
+                                                       "You strewed light and beauty in the dark as you sing. You feel refreshed."));
                                (void)do_res_stat(A_STR);
                                (void)do_res_stat(A_INT);
                                (void)do_res_stat(A_WIS);
@@ -10729,14 +7823,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case MUSI_SPEL_WIZARDRY_OF_SAURON:
-#ifdef JP
-               if (name) return "¥µ¥¦¥í¥ó¤ÎËâ½Ñ";
-               if (desc) return "Èó¾ï¤Ë¶¯ÎϤǤ´¤¯¾®¤µ¤¤¹ì²»¤Îµå¤òÊü¤Ä¡£";
-#else
-               if (name) return "Wizardry of Sauron";
-               if (desc) return "Fires an extremely powerful tiny ball of sound.";
-#endif
+       case 30:
+               if (name) return _("サウロンの魔術", "Wizardry of Sauron");
+               if (desc) return _("非常に強力でごく小さい轟音の球を放つ。", "Fires an extremely powerful tiny ball of sound.");
     
                {
                        int dice = 50 + plev;
@@ -10757,47 +7846,36 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case MUSI_SPEL_FINGOLFINS_CHALLENGE:
-#ifdef JP
-               if (name) return "¥Õ¥£¥ó¥´¥ë¥Õ¥£¥ó¤ÎÄ©Àï";
-               if (desc) return "¥À¥á¡¼¥¸¤ò¼õ¤±¤Ê¤¯¤Ê¤ë¥Ð¥ê¥¢¤òÄ¥¤ë¡£";
-#else
-               if (name) return "Fingolfin's Challenge";
-               if (desc) return "Generates barrier which completely protect you from almost all damages. Takes a few your turns when the barrier breaks.";
-#endif
+       case 31:
+               if (name) return _("フィンゴルフィンの挑戦", "Fingolfin's Challenge");
+               if (desc) return _("ダメージを受けなくなるバリアを張る。", 
+                       "Generates barrier which completely protect you from almost all damages. Takes a few your turns when the barrier breaks.");
     
                /* Stop singing before start another */
                if (cast || fail) stop_singing();
 
                if (cast)
                {
-#ifdef JP
-                               msg_print("¥Õ¥£¥ó¥´¥ë¥Õ¥£¥ó¤Î̽²¦¤Ø¤ÎÄ©Àï¤ò²Î¤Ã¤¿¡¥¡¥¡¥");
-#else
-                               msg_print("You recall the valor of Fingolfin's challenge to the Dark Lord...");
-#endif
+                       msg_print(_("フィンゴルフィンの冥王への挑戦を歌った...",
+                                               "You recall the valor of Fingolfin's challenge to the Dark Lord..."));
 
-                               /* Redraw map */
-                               p_ptr->redraw |= (PR_MAP);
+                       /* Redraw map */
+                       p_ptr->redraw |= (PR_MAP);
                
-                               /* Update monsters */
-                               p_ptr->update |= (PU_MONSTERS);
+                       /* Update monsters */
+                       p_ptr->update |= (PU_MONSTERS);
                
-                               /* Window stuff */
-                               p_ptr->window |= (PW_OVERHEAD | PW_DUNGEON);
+                       /* Window stuff */
+                       p_ptr->window |= (PW_OVERHEAD | PW_DUNGEON);
 
-                               start_singing(spell, MUSIC_INVULN);
+                       start_singing(spell, MUSIC_INVULN);
                }
 
                if (stop)
                {
                        if (!p_ptr->invuln)
                        {
-#ifdef JP
-                               msg_print("̵Ũ¤Ç¤Ï¤Ê¤¯¤Ê¤Ã¤¿¡£");
-#else
-                               msg_print("The invulnerability wears off.");
-#endif
+                               msg_print(_("無敵ではなくなった。", "The invulnerability wears off."));
                                /* Redraw map */
                                p_ptr->redraw |= (PR_MAP);
 
@@ -10810,15 +7888,31 @@ cptr do_spell(int realm, int spell, int mode)
                }
 
                break;
+       }
 
-       case TECH_SPEL_TOBI_IZUNA:
-#ifdef JP
-               if (name) return "ÈôÈÓ¹Ë";
-               if (desc) return "2¥Þ¥¹Î¥¤ì¤¿¤È¤³¤í¤Ë¤¤¤ë¥â¥ó¥¹¥¿¡¼¤ò¹¶·â¤¹¤ë¡£";
-#else
-               if (name) return "Tobi-Izuna";
-               if (desc) return "Attacks a two squares distant monster.";
-#endif
+       return "";
+}
+
+/*!
+ * @brief 剣術の各処理を行う
+ * @param spell 剣術ID
+ * @param mode 処理内容 (SPELL_NAME / SPELL_DESC / SPELL_CAST)
+ * @return SPELL_NAME / SPELL_DESC 時には文字列ポインタを返す。SPELL_CAST時はNULL文字列を返す。
+ */
+static cptr do_hissatsu_spell(SPELL_IDX spell, BIT_FLAGS mode)
+{
+       bool name = (mode == SPELL_NAME) ? TRUE : FALSE;
+       bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;
+       bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;
+
+       int dir;
+       int plev = p_ptr->lev;
+
+       switch (spell)
+       {
+       case 0:
+               if (name) return _("飛飯綱", "Tobi-Izuna");
+               if (desc) return _("2マス離れたところにいるモンスターを攻撃する。", "Attacks a two squares distant monster.");
     
                if (cast)
                {
@@ -10829,14 +7923,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TECH_SPEL_3_WAY_ATTACK:
-#ifdef JP
-               if (name) return "¸Þ·î±«»Â¤ê";
-               if (desc) return "3Êý¸þ¤ËÂФ·¤Æ¹¶·â¤¹¤ë¡£";
-#else
-               if (name) return "3-Way Attack";
-               if (desc) return "Attacks in 3 directions in one time.";
-#endif
+       case 1:
+               if (name) return _("五月雨斬り", "3-Way Attack");
+               if (desc) return _("3方向に対して攻撃する。", "Attacks in 3 directions in one time.");
     
                if (cast)
                {
@@ -10853,62 +7942,43 @@ cptr do_spell(int realm, int spell, int mode)
 
                        if (cdir == 8) return NULL;
 
-                       y = py + ddy_cdd[cdir];
-                       x = px + ddx_cdd[cdir];
+                       y = p_ptr->y + ddy_cdd[cdir];
+                       x = p_ptr->x + ddx_cdd[cdir];
                        if (cave[y][x].m_idx)
                                py_attack(y, x, 0);
                        else
-#ifdef JP
-                               msg_print("¹¶·â¤Ï¶õ¤òÀڤä¿¡£");
-#else
-                               msg_print("You attack the empty air.");
-#endif
-                       y = py + ddy_cdd[(cdir + 7) % 8];
-                       x = px + ddx_cdd[(cdir + 7) % 8];
+                               msg_print(_("攻撃は空を切った。", "You attack the empty air."));
+                       
+                       y = p_ptr->y + ddy_cdd[(cdir + 7) % 8];
+                       x = p_ptr->x + ddx_cdd[(cdir + 7) % 8];
                        if (cave[y][x].m_idx)
                                py_attack(y, x, 0);
                        else
-#ifdef JP
-                               msg_print("¹¶·â¤Ï¶õ¤òÀڤä¿¡£");
-#else
-                               msg_print("You attack the empty air.");
-#endif
-                       y = py + ddy_cdd[(cdir + 1) % 8];
-                       x = px + ddx_cdd[(cdir + 1) % 8];
+                               msg_print(_("攻撃は空を切った。", "You attack the empty air."));
+                       
+                       y = p_ptr->y + ddy_cdd[(cdir + 1) % 8];
+                       x = p_ptr->x + ddx_cdd[(cdir + 1) % 8];
                        if (cave[y][x].m_idx)
                                py_attack(y, x, 0);
                        else
-#ifdef JP
-                               msg_print("¹¶·â¤Ï¶õ¤òÀڤä¿¡£");
-#else
-                               msg_print("You attack the empty air.");
-#endif
+                               msg_print(_("攻撃は空を切った。", "You attack the empty air."));
                }
                break;
 
-       case TECH_SPEL_BOOMERANG:
-#ifdef JP
-               if (name) return "¥Ö¡¼¥á¥é¥ó";
-               if (desc) return "Éð´ï¤ò¼ê¸µ¤ËÌá¤Ã¤Æ¤¯¤ë¤è¤¦¤ËÅꤲ¤ë¡£Ìá¤Ã¤Æ¤³¤Ê¤¤¤³¤È¤â¤¢¤ë¡£";
-#else
-               if (name) return "Boomerang";
-               if (desc) return "Throws current weapon. And it'll return to your hand unless failed.";
-#endif
+       case 2:
+               if (name) return _("ブーメラン", "Boomerang");
+               if (desc) return _("武器を手元に戻ってくるように投げる。戻ってこないこともある。", 
+                       "Throws current weapon. And it'll return to your hand unless failed.");
     
                if (cast)
                {
-                       if (!do_cmd_throw_aux(1, TRUE, 0)) return NULL;
+                       if (!do_cmd_throw_aux(1, TRUE, -1)) return NULL;
                }
                break;
 
-       case TECH_SPEL_BURNING_STRIKE:
-#ifdef JP
-               if (name) return "±ëÎî";
-               if (desc) return "²Ð±êÂÑÀ­¤Î¤Ê¤¤¥â¥ó¥¹¥¿¡¼¤ËÂç¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
-#else
-               if (name) return "Burning Strike";
-               if (desc) return "Attacks a monster with more damage unless it has resistance to fire.";
-#endif
+       case 3:
+               if (name) return _("焔霊", "Burning Strike");
+               if (desc) return _("火炎耐性のないモンスターに大ダメージを与える。", "Attacks a monster with more damage unless it has resistance to fire.");
     
                if (cast)
                {
@@ -10917,31 +7987,22 @@ cptr do_spell(int realm, int spell, int mode)
                        if (!get_rep_dir2(&dir)) return NULL;
                        if (dir == 5) return NULL;
 
-                       y = py + ddy[dir];
-                       x = px + ddx[dir];
+                       y = p_ptr->y + ddy[dir];
+                       x = p_ptr->x + ddx[dir];
 
                        if (cave[y][x].m_idx)
                                py_attack(y, x, HISSATSU_FIRE);
                        else
                        {
-#ifdef JP
-                               msg_print("¤½¤ÎÊý¸þ¤Ë¤Ï¥â¥ó¥¹¥¿¡¼¤Ï¤¤¤Þ¤»¤ó¡£");
-#else
-                               msg_print("There is no monster.");
-#endif
+                               msg_print(_("その方向にはモンスターはいません。", "There is no monster."));
                                return NULL;
                        }
                }
                break;
 
-       case TECH_SPEL_DETECT_FEROCITY:
-#ifdef JP
-               if (name) return "»¦µ¤´¶ÃÎ";
-               if (desc) return "¶á¤¯¤Î»×¹Í¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¥â¥ó¥¹¥¿¡¼¤ò´¶ÃΤ¹¤ë¡£";
-#else
-               if (name) return "Detect Ferocity";
-               if (desc) return "Detects all monsters except mindless in your vicinity.";
-#endif
+       case 4:
+               if (name) return _("殺気感知", "Detect Ferocity");
+               if (desc) return _("近くの思考することができるモンスターを感知する。", "Detects all monsters except mindless in your vicinity.");
     
                if (cast)
                {
@@ -10949,14 +8010,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TECH_SPEL_STRIKE_TO_STUN:
-#ifdef JP
-               if (name) return "¤ß¤ÍÂǤÁ";
-               if (desc) return "Áê¼ê¤Ë¥À¥á¡¼¥¸¤òÍ¿¤¨¤Ê¤¤¤¬¡¢Û¯Û°¤È¤µ¤»¤ë¡£";
-#else
-               if (name) return "Strike to Stun";
-               if (desc) return "Attempts to stun a monster in the adjacent.";
-#endif
+       case 5:
+               if (name) return _("みね打ち", "Strike to Stun");
+               if (desc) return _("相手にダメージを与えないが、朦朧とさせる。", "Attempts to stun a monster in the adjacent.");
     
                if (cast)
                {
@@ -10965,88 +8021,60 @@ cptr do_spell(int realm, int spell, int mode)
                        if (!get_rep_dir2(&dir)) return NULL;
                        if (dir == 5) return NULL;
 
-                       y = py + ddy[dir];
-                       x = px + ddx[dir];
+                       y = p_ptr->y + ddy[dir];
+                       x = p_ptr->x + ddx[dir];
 
                        if (cave[y][x].m_idx)
                                py_attack(y, x, HISSATSU_MINEUCHI);
                        else
                        {
-#ifdef JP
-                               msg_print("¤½¤ÎÊý¸þ¤Ë¤Ï¥â¥ó¥¹¥¿¡¼¤Ï¤¤¤Þ¤»¤ó¡£");
-#else
-                               msg_print("There is no monster.");
-#endif
+                               msg_print(_("その方向にはモンスターはいません。", "There is no monster."));
                                return NULL;
                        }
                }
                break;
 
-       case TECH_SPEL_COUNTER:
-#ifdef JP
-               if (name) return "¥«¥¦¥ó¥¿¡¼";
-               if (desc) return "Áê¼ê¤Ë¹¶·â¤µ¤ì¤¿¤È¤­¤ËÈ¿·â¤¹¤ë¡£È¿·â¤¹¤ë¤¿¤Ó¤ËMP¤ò¾ÃÈñ¡£";
-#else
-               if (name) return "Counter";
-               if (desc) return "Prepares to counterattack. When attack by a monster, strikes back using SP each time.";
-#endif
+       case 6:
+               if (name) return _("カウンター", "Counter");
+               if (desc) return _("相手に攻撃されたときに反撃する。反撃するたびにMPを消費。", 
+                       "Prepares to counterattack. When attack by a monster, strikes back using SP each time.");
     
                if (cast)
                {
                        if (p_ptr->riding)
                        {
-#ifdef JP
-                               msg_print("¾èÇÏÃæ¤Ë¤Ï̵Íý¤À¡£");
-#else
-                               msg_print("You cannot do it when riding.");
-#endif
+                               msg_print(_("乗馬中には無理だ。", "You cannot do it when riding."));
                                return NULL;
                        }
-#ifdef JP
-                       msg_print("Áê¼ê¤Î¹¶·â¤ËÂФ·¤Æ¿È¹½¤¨¤¿¡£");
-#else
-                       msg_print("You prepare to counter blow.");
-#endif
+                       msg_print(_("相手の攻撃に対して身構えた。", "You prepare to counter blow."));
                        p_ptr->counter = TRUE;
                }
                break;
 
-       case TECH_SPEL_HARAINUKE:
-#ifdef JP
-               if (name) return "ʧ¤¤È´¤±";
-               if (desc) return "¹¶·â¤·¤¿¸å¡¢È¿ÂЦ¤ËÈ´¤±¤ë¡£";
-#else
-               if (name) return "Harainuke";
-               if (desc) return "Attacks monster with your weapons normally, then move through counter side of the monster.";
-#endif
+       case 7:
+               if (name) return _("払い抜け", "Harainuke");
+               if (desc) return _("攻撃した後、反対側に抜ける。", 
+                       "Attacks monster with your weapons normally, then move through counter side of the monster.");
     
                if (cast)
                {
-                       int y, x;
+                       POSITION y, x;
 
                        if (p_ptr->riding)
                        {
-#ifdef JP
-                               msg_print("¾èÇÏÃæ¤Ë¤Ï̵Íý¤À¡£");
-#else
-                               msg_print("You cannot do it when riding.");
-#endif
+                               msg_print(_("乗馬中には無理だ。", "You cannot do it when riding."));
                                return NULL;
                        }
        
                        if (!get_rep_dir2(&dir)) return NULL;
        
                        if (dir == 5) return NULL;
-                       y = py + ddy[dir];
-                       x = px + ddx[dir];
+                       y = p_ptr->y + ddy[dir];
+                       x = p_ptr->x + ddx[dir];
        
                        if (!cave[y][x].m_idx)
                        {
-#ifdef JP
-                               msg_print("¤½¤ÎÊý¸þ¤Ë¤Ï¥â¥ó¥¹¥¿¡¼¤Ï¤¤¤Þ¤»¤ó¡£");
-#else
-                               msg_print("There is no monster.");
-#endif
+                               msg_print(_("その方向にはモンスターはいません。", "There is no monster."));
                                return NULL;
                        }
        
@@ -11068,14 +8096,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TECH_SPEL_SERPENTS_TONGUE:
-#ifdef JP
-               if (name) return "¥µ¡¼¥Ú¥ó¥Ä¥¿¥ó";
-               if (desc) return "ÆÇÂÑÀ­¤Î¤Ê¤¤¥â¥ó¥¹¥¿¡¼¤ËÂç¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
-#else
-               if (name) return "Serpent's Tongue";
-               if (desc) return "Attacks a monster with more damage unless it has resistance to poison.";
-#endif
+       case 8:
+               if (name) return _("サーペンツタン", "Serpent's Tongue");
+               if (desc) return _("毒耐性のないモンスターに大ダメージを与える。", "Attacks a monster with more damage unless it has resistance to poison.");
     
                if (cast)
                {
@@ -11084,31 +8107,23 @@ cptr do_spell(int realm, int spell, int mode)
                        if (!get_rep_dir2(&dir)) return NULL;
                        if (dir == 5) return NULL;
 
-                       y = py + ddy[dir];
-                       x = px + ddx[dir];
+                       y = p_ptr->y + ddy[dir];
+                       x = p_ptr->x + ddx[dir];
 
                        if (cave[y][x].m_idx)
                                py_attack(y, x, HISSATSU_POISON);
                        else
                        {
-#ifdef JP
-                               msg_print("¤½¤ÎÊý¸þ¤Ë¤Ï¥â¥ó¥¹¥¿¡¼¤Ï¤¤¤Þ¤»¤ó¡£");
-#else
-                               msg_print("There is no monster.");
-#endif
+                               msg_print(_("その方向にはモンスターはいません。", "There is no monster."));
                                return NULL;
                        }
                }
                break;
 
-       case TECH_SPEL_ZAMMAKEN:
-#ifdef JP
-               if (name) return "»ÂËâ·õÆõ¤ÎÂÀÅá";
-               if (desc) return "À¸Ì¿¤Î¤Ê¤¤¼Ù°­¤Ê¥â¥ó¥¹¥¿¡¼¤ËÂç¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¤¬¡¢Â¾¤Î¥â¥ó¥¹¥¿¡¼¤Ë¤ÏÁ´¤¯¸ú²Ì¤¬¤Ê¤¤¡£";
-#else
-               if (name) return "Zammaken";
-               if (desc) return "Attacks an evil unliving monster with great damage. No effect to other  monsters.";
-#endif
+       case 9:
+               if (name) return _("斬魔剣弐の太刀", "Zammaken");
+               if (desc) return _("生命のない邪悪なモンスターに大ダメージを与えるが、他のモンスターには全く効果がない。", 
+                       "Attacks an evil unliving monster with great damage. No effect to other  monsters.");
     
                if (cast)
                {
@@ -11117,31 +8132,22 @@ cptr do_spell(int realm, int spell, int mode)
                        if (!get_rep_dir2(&dir)) return NULL;
                        if (dir == 5) return NULL;
 
-                       y = py + ddy[dir];
-                       x = px + ddx[dir];
+                       y = p_ptr->y + ddy[dir];
+                       x = p_ptr->x + ddx[dir];
 
                        if (cave[y][x].m_idx)
                                py_attack(y, x, HISSATSU_ZANMA);
                        else
                        {
-#ifdef JP
-                               msg_print("¤½¤ÎÊý¸þ¤Ë¤Ï¥â¥ó¥¹¥¿¡¼¤Ï¤¤¤Þ¤»¤ó¡£");
-#else
-                               msg_print("There is no monster.");
-#endif
+                               msg_print(_("その方向にはモンスターはいません。", "There is no monster."));
                                return NULL;
                        }
                }
                break;
 
-       case TECH_SPEL_WIND_BLAST:
-#ifdef JP
-               if (name) return "ÎöÉ÷·õ";
-               if (desc) return "¹¶·â¤·¤¿Áê¼ê¤ò¸åÊý¤Ø¿á¤­Èô¤Ð¤¹¡£";
-#else
-               if (name) return "Wind Blast";
-               if (desc) return "Attacks an adjacent monster, and blow it away.";
-#endif
+       case 10:
+               if (name) return _("裂風剣", "Wind Blast");
+               if (desc) return _("攻撃した相手を後方へ吹き飛ばす。", "Attacks an adjacent monster, and blow it away.");
     
                if (cast)
                {
@@ -11150,18 +8156,14 @@ cptr do_spell(int realm, int spell, int mode)
                        if (!get_rep_dir2(&dir)) return NULL;
                        if (dir == 5) return NULL;
 
-                       y = py + ddy[dir];
-                       x = px + ddx[dir];
+                       y = p_ptr->y + ddy[dir];
+                       x = p_ptr->x + ddx[dir];
 
                        if (cave[y][x].m_idx)
                                py_attack(y, x, 0);
                        else
                        {
-#ifdef JP
-                               msg_print("¤½¤ÎÊý¸þ¤Ë¤Ï¥â¥ó¥¹¥¿¡¼¤Ï¤¤¤Þ¤»¤ó¡£");
-#else
-                               msg_print("There is no monster.");
-#endif
+                               msg_print(_("その方向にはモンスターはいません。", "There is no monster."));
                                return NULL;
                        }
                        if (d_info[dungeon_type].flags1 & DF1_NO_MELEE)
@@ -11171,9 +8173,9 @@ cptr do_spell(int realm, int spell, int mode)
                        if (cave[y][x].m_idx)
                        {
                                int i;
-                               int ty = y, tx = x;
-                               int oy = y, ox = x;
-                               int m_idx = cave[y][x].m_idx;
+                               POSITION ty = y, tx = x;
+                               POSITION oy = y, ox = x;
+                               MONSTER_IDX m_idx = cave[y][x].m_idx;
                                monster_type *m_ptr = &m_list[m_idx];
                                char m_name[80];
        
@@ -11192,11 +8194,7 @@ cptr do_spell(int realm, int spell, int mode)
                                }
                                if ((ty != oy) || (tx != ox))
                                {
-#ifdef JP
-                                       msg_format("%s¤ò¿á¤­Èô¤Ð¤·¤¿¡ª", m_name);
-#else
-                                       msg_format("You blow %s away!", m_name);
-#endif
+                                       msg_format(_("%sを吹き飛ばした!", "You blow %s away!"), m_name);
                                        cave[oy][ox].m_idx = 0;
                                        cave[ty][tx].m_idx = m_idx;
                                        m_ptr->fy = ty;
@@ -11213,18 +8211,14 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TECH_SPEL_JUDGE:
-#ifdef JP
-               if (name) return "Åá¾¢¤ÎÌÜÍø¤­";
-               if (desc) return "Éð´ï¡¦Ëɶñ¤ò1¤Ä¼±Ê̤¹¤ë¡£¥ì¥Ù¥ë45°Ê¾å¤ÇÉð´ï¡¦Ëɶñ¤ÎǽÎϤò´°Á´¤ËÃΤ뤳¤È¤¬¤Ç¤­¤ë¡£";
-#else
-               if (name) return "Judge";
-               if (desc) return "Identifies a weapon or armor. Or *identifies* these at level 45.";
-#endif
+       case 11:
+               if (name) return _("刀匠の目利き", "Judge");
+               if (desc) return _("武器・防具を1つ識別する。レベル45以上で武器・防具の能力を完全に知ることができる。", 
+                       "Identifies a weapon or armor. Or *identifies* these at level 45.");
     
                if (cast)
                {
-                       if (p_ptr->lev > 44)
+                       if (plev > 44)
                        {
                                if (!identify_fully(TRUE)) return NULL;
                        }
@@ -11235,14 +8229,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TECH_SPEL_ROCK_SMASH:
-#ifdef JP
-               if (name) return "ÇË´ä»Â";
-               if (desc) return "´ä¤ò²õ¤·¡¢´äÀзϤΥâ¥ó¥¹¥¿¡¼¤ËÂç¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
-#else
-               if (name) return "Rock Smash";
-               if (desc) return "Breaks rock. Or greatly damage a monster made by rocks.";
-#endif
+       case 12:
+               if (name) return _("破岩斬", "Rock Smash");
+               if (desc) return _("岩を壊し、岩石系のモンスターに大ダメージを与える。", "Breaks rock. Or greatly damage a monster made by rocks.");
     
                if (cast)
                {
@@ -11251,8 +8240,8 @@ cptr do_spell(int realm, int spell, int mode)
                        if (!get_rep_dir2(&dir)) return NULL;
                        if (dir == 5) return NULL;
 
-                       y = py + ddy[dir];
-                       x = px + ddx[dir];
+                       y = p_ptr->y + ddy[dir];
+                       x = p_ptr->x + ddx[dir];
 
                        if (cave[y][x].m_idx)
                                py_attack(y, x, HISSATSU_HAGAN);
@@ -11267,14 +8256,10 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TECH_SPEL_MIDARE_SETSUGEKKA:
-#ifdef JP
-               if (name) return "Íð¤ìÀã·î²Ö";
-               if (desc) return "¹¶·â²ó¿ô¤¬Áý¤¨¡¢Î䵤ÂÑÀ­¤Î¤Ê¤¤¥â¥ó¥¹¥¿¡¼¤ËÂç¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
-#else
-               if (name) return "Midare-Setsugekka";
-               if (desc) return "Attacks a monster with increased number of attacks and more damage unless it has resistance to cold.";
-#endif
+       case 13:
+               if (name) return _("乱れ雪月花", "Midare-Setsugekka");
+               if (desc) return _("攻撃回数が増え、冷気耐性のないモンスターに大ダメージを与える。", 
+                       "Attacks a monster with increased number of attacks and more damage unless it has resistance to cold.");
     
                if (cast)
                {
@@ -11283,31 +8268,23 @@ cptr do_spell(int realm, int spell, int mode)
                        if (!get_rep_dir2(&dir)) return NULL;
                        if (dir == 5) return NULL;
 
-                       y = py + ddy[dir];
-                       x = px + ddx[dir];
+                       y = p_ptr->y + ddy[dir];
+                       x = p_ptr->x + ddx[dir];
 
                        if (cave[y][x].m_idx)
                                py_attack(y, x, HISSATSU_COLD);
                        else
                        {
-#ifdef JP
-                               msg_print("¤½¤ÎÊý¸þ¤Ë¤Ï¥â¥ó¥¹¥¿¡¼¤Ï¤¤¤Þ¤»¤ó¡£");
-#else
-                               msg_print("There is no monster.");
-#endif
+                               msg_print(_("その方向にはモンスターはいません。", "There is no monster."));
                                return NULL;
                        }
                }
                break;
 
-       case TECH_SPEL_SPOT_AIMING:
-#ifdef JP
-               if (name) return "µÞ½êÆͤ­";
-               if (desc) return "¥â¥ó¥¹¥¿¡¼¤ò°ì·â¤ÇÅݤ¹¹¶·â¤ò·«¤ê½Ð¤¹¡£¼ºÇÔ¤¹¤ë¤È1ÅÀ¤·¤«¥À¥á¡¼¥¸¤òÍ¿¤¨¤é¤ì¤Ê¤¤¡£";
-#else
-               if (name) return "Spot Aiming";
-               if (desc) return "Attempts to kill a monster instantly. If failed cause only 1HP of damage.";
-#endif
+       case 14:
+               if (name) return _("急所突き", "Spot Aiming");
+               if (desc) return _("モンスターを一撃で倒す攻撃を繰り出す。失敗すると1点しかダメージを与えられない。", 
+                       "Attempts to kill a monster instantly. If failed cause only 1HP of damage.");
     
                if (cast)
                {
@@ -11316,31 +8293,23 @@ cptr do_spell(int realm, int spell, int mode)
                        if (!get_rep_dir2(&dir)) return NULL;
                        if (dir == 5) return NULL;
 
-                       y = py + ddy[dir];
-                       x = px + ddx[dir];
+                       y = p_ptr->y + ddy[dir];
+                       x = p_ptr->x + ddx[dir];
 
                        if (cave[y][x].m_idx)
                                py_attack(y, x, HISSATSU_KYUSHO);
                        else
                        {
-#ifdef JP
-                               msg_print("¤½¤ÎÊý¸þ¤Ë¤Ï¥â¥ó¥¹¥¿¡¼¤Ï¤¤¤Þ¤»¤ó¡£");
-#else
-                               msg_print("There is no monster.");
-#endif
+                               msg_print(_("その方向にはモンスターはいません。", "There is no monster."));
                                return NULL;
                        }
                }
                break;
 
-       case TECH_SPEL_MAJINGIRI:
-#ifdef JP
-               if (name) return "Ëâ¿À»Â¤ê";
-               if (desc) return "²ñ¿´¤Î°ì·â¤Ç¹¶·â¤¹¤ë¡£¹¶·â¤¬¤«¤ï¤µ¤ì¤ä¤¹¤¤¡£";
-#else
-               if (name) return "Majingiri";
-               if (desc) return "Attempts to attack with critical hit. But this attack is easy to evade for a monster.";
-#endif
+       case 15:
+               if (name) return _("魔神斬り", "Majingiri");
+               if (desc) return _("会心の一撃で攻撃する。攻撃がかわされやすい。", 
+                       "Attempts to attack with critical hit. But this attack is easy to evade for a monster.");
     
                if (cast)
                {
@@ -11349,31 +8318,23 @@ cptr do_spell(int realm, int spell, int mode)
                        if (!get_rep_dir2(&dir)) return NULL;
                        if (dir == 5) return NULL;
 
-                       y = py + ddy[dir];
-                       x = px + ddx[dir];
+                       y = p_ptr->y + ddy[dir];
+                       x = p_ptr->x + ddx[dir];
 
                        if (cave[y][x].m_idx)
                                py_attack(y, x, HISSATSU_MAJIN);
                        else
                        {
-#ifdef JP
-                               msg_print("¤½¤ÎÊý¸þ¤Ë¤Ï¥â¥ó¥¹¥¿¡¼¤Ï¤¤¤Þ¤»¤ó¡£");
-#else
-                               msg_print("There is no monster.");
-#endif
+                               msg_print(_("その方向にはモンスターはいません。", "There is no monster."));
                                return NULL;
                        }
                }
                break;
 
-       case TECH_SPEL_DESPERATE_ATTACK:
-#ifdef JP
-               if (name) return "¼Î¤Æ¿È";
-               if (desc) return "¶¯ÎϤʹ¶·â¤ò·«¤ê½Ð¤¹¡£¼¡¤Î¥¿¡¼¥ó¤Þ¤Ç¤Î´Ö¡¢¿©¤é¤¦¥À¥á¡¼¥¸¤¬Áý¤¨¤ë¡£";
-#else
-               if (name) return "Desperate Attack";
-               if (desc) return "Attacks with all of your power. But all damages you take will be doubled for one turn.";
-#endif
+       case 16:
+               if (name) return _("捨て身", "Desperate Attack");
+               if (desc) return _("強力な攻撃を繰り出す。次のターンまでの間、食らうダメージが増える。", 
+                       "Attacks with all of your power. But all damages you take will be doubled for one turn.");
     
                if (cast)
                {
@@ -11382,32 +8343,24 @@ cptr do_spell(int realm, int spell, int mode)
                        if (!get_rep_dir2(&dir)) return NULL;
                        if (dir == 5) return NULL;
 
-                       y = py + ddy[dir];
-                       x = px + ddx[dir];
+                       y = p_ptr->y + ddy[dir];
+                       x = p_ptr->x + ddx[dir];
 
                        if (cave[y][x].m_idx)
                                py_attack(y, x, HISSATSU_SUTEMI);
                        else
                        {
-#ifdef JP
-                               msg_print("¤½¤ÎÊý¸þ¤Ë¤Ï¥â¥ó¥¹¥¿¡¼¤Ï¤¤¤Þ¤»¤ó¡£");
-#else
-                               msg_print("There is no monster.");
-#endif
+                               msg_print(_("その方向にはモンスターはいません。", "There is no monster."));
                                return NULL;
                        }
                        p_ptr->sutemi = TRUE;
                }
                break;
 
-       case TECH_SPEL_LIGHTNING_EAGLE:
-#ifdef JP
-               if (name) return "Íë·âÏÉÄÞ»Â";
-               if (desc) return "ÅÅ·âÂÑÀ­¤Î¤Ê¤¤¥â¥ó¥¹¥¿¡¼¤ËÈó¾ï¤ËÂ礭¤¤¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£";
-#else
-               if (name) return "Lightning Eagle";
-               if (desc) return "Attacks a monster with more damage unless it has resistance to electricity.";
-#endif
+       case 17:
+               if (name) return _("雷撃鷲爪斬", "Lightning Eagle");
+               if (desc) return _("電撃耐性のないモンスターに非常に大きいダメージを与える。", 
+                       "Attacks a monster with more damage unless it has resistance to electricity.");
     
                if (cast)
                {
@@ -11416,31 +8369,22 @@ cptr do_spell(int realm, int spell, int mode)
                        if (!get_rep_dir2(&dir)) return NULL;
                        if (dir == 5) return NULL;
 
-                       y = py + ddy[dir];
-                       x = px + ddx[dir];
+                       y = p_ptr->y + ddy[dir];
+                       x = p_ptr->x + ddx[dir];
 
                        if (cave[y][x].m_idx)
                                py_attack(y, x, HISSATSU_ELEC);
                        else
                        {
-#ifdef JP
-                               msg_print("¤½¤ÎÊý¸þ¤Ë¤Ï¥â¥ó¥¹¥¿¡¼¤Ï¤¤¤Þ¤»¤ó¡£");
-#else
-                               msg_print("There is no monster.");
-#endif
+                               msg_print(_("その方向にはモンスターはいません。", "There is no monster."));
                                return NULL;
                        }
                }
                break;
 
-       case TECH_SPEL_RUSH_ATTACK:
-#ifdef JP
-               if (name) return "Æþ¿È";
-               if (desc) return "ÁÇÁ᤯Áê¼ê¤Ë¶á´ó¤ê¹¶·â¤¹¤ë¡£";
-#else
-               if (name) return "Rush Attack";
-               if (desc) return "Steps close to a monster and attacks at a time.";
-#endif
+       case 18:
+               if (name) return _("入身", "Rush Attack");
+               if (desc) return _("素早く相手に近寄り攻撃する。", "Steps close to a monster and attacks at a time.");
     
                if (cast)
                {
@@ -11448,14 +8392,10 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TECH_SPEL_BLOODY_MAELSTROM:
-#ifdef JP
-               if (name) return "ÀÖή±²";
-               if (desc) return "¼«Ê¬¼«¿È¤â½ý¤òºî¤ê¤Ä¤Ä¡¢¤½¤Î½ý¤¬¿¼¤¤¤Û¤ÉÂ礭¤¤°ÒÎϤÇÁ´Êý¸þ¤ÎŨ¤ò¹¶·â¤Ç¤­¤ë¡£À¸¤­¤Æ¤¤¤Ê¤¤¥â¥ó¥¹¥¿¡¼¤Ë¤Ï¸ú²Ì¤¬¤Ê¤¤¡£";
-#else
-               if (name) return "Bloody Maelstrom";
-               if (desc) return "Attacks all adjacent monsters with power corresponding to your cut status. Then increases your cut status. No effect to unliving monsters.";
-#endif
+       case 19:
+               if (name) return _("赤流渦", "Bloody Maelstrom");
+               if (desc) return _("自分自身も傷を作りつつ、その傷が深いほど大きい威力で全方向の敵を攻撃できる。生きていないモンスターには効果がない。", 
+                       "Attacks all adjacent monsters with power corresponding to your cut status. Then increases your cut status. No effect to unliving monsters.");
     
                if (cast)
                {
@@ -11471,8 +8411,8 @@ cptr do_spell(int realm, int spell, int mode)
        
                        for (dir = 0; dir < 8; dir++)
                        {
-                               y = py + ddy_ddd[dir];
-                               x = px + ddx_ddd[dir];
+                               y = p_ptr->y + ddy_ddd[dir];
+                               x = p_ptr->x + ddx_ddd[dir];
                                c_ptr = &cave[y][x];
        
                                /* Get the monster */
@@ -11486,11 +8426,7 @@ cptr do_spell(int realm, int spell, int mode)
                                                char m_name[80];
        
                                                monster_desc(m_name, m_ptr, 0);
-#ifdef JP
-                                               msg_format("%s¤Ë¤Ï¸ú²Ì¤¬¤Ê¤¤¡ª", m_name);
-#else
-                                               msg_format("%s is unharmed!", m_name);
-#endif
+                                               msg_format(_("%sには効果がない!", "%s is unharmed!"), m_name);
                                        }
                                        else py_attack(y, x, HISSATSU_SEKIRYUKA);
                                }
@@ -11498,14 +8434,9 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TECH_SPEL_EARTHQUAKE_BLOW:
-#ifdef JP
-               if (name) return "·ã¿Ì·â";
-               if (desc) return "ÃϿ̤òµ¯¤³¤¹¡£";
-#else
-               if (name) return "Earthquake Blow";
-               if (desc) return "Shakes dungeon structure, and results in random swapping of floors and walls.";
-#endif
+       case 20:
+               if (name) return _("激震撃", "Earthquake Blow");
+               if (desc) return _("地震を起こす。", "Shakes dungeon structure, and results in random swapping of floors and walls.");
     
                if (cast)
                {
@@ -11514,24 +8445,19 @@ cptr do_spell(int realm, int spell, int mode)
                        if (!get_rep_dir2(&dir)) return NULL;
                        if (dir == 5) return NULL;
 
-                       y = py + ddy[dir];
-                       x = px + ddx[dir];
+                       y = p_ptr->y + ddy[dir];
+                       x = p_ptr->x + ddx[dir];
 
                        if (cave[y][x].m_idx)
                                py_attack(y, x, HISSATSU_QUAKE);
                        else
-                               earthquake(py, px, 10);
+                               earthquake(p_ptr->y, p_ptr->x, 10);
                }
                break;
 
-       case TECH_SPEL_CRACK:
-#ifdef JP
-               if (name) return "ÃÏÁö¤ê";
-               if (desc) return "¾×·âÇȤΥӡ¼¥à¤òÊü¤Ä¡£";
-#else
-               if (name) return "Crack";
-               if (desc) return "Fires a beam of shock wave.";
-#endif
+       case 21:
+               if (name) return _("地走り", "Crack");
+               if (desc) return _("衝撃波のビームを放つ。", "Fires a beam of shock wave.");
     
                if (cast)
                {
@@ -11539,11 +8465,7 @@ cptr do_spell(int realm, int spell, int mode)
                        u32b flgs[TR_FLAG_SIZE];
                        object_type *o_ptr;
                        if (!get_aim_dir(&dir)) return NULL;
-#ifdef JP
-                       msg_print("Éð´ï¤òÂ礭¤¯¿¶¤ê²¼¤í¤·¤¿¡£");
-#else
-                       msg_print("You swing your weapon downward.");
-#endif
+                       msg_print(_("武器を大きく振り下ろした。", "You swing your weapon downward."));
                        for (i = 0; i < 2; i++)
                        {
                                int damage;
@@ -11574,35 +8496,22 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TECH_SPEL_WAR_CRY:
-#ifdef JP
-               if (name) return "µ¤Ç÷¤Îͺ¶«¤Ó";
-               if (desc) return "»ë³¦Æâ¤ÎÁ´¥â¥ó¥¹¥¿¡¼¤ËÂФ·¤Æ¹ì²»¤Î¹¶·â¤ò¹Ô¤¦¡£¤µ¤é¤Ë¡¢¶á¤¯¤Ë¤¤¤ë¥â¥ó¥¹¥¿¡¼¤òÅܤ餻¤ë¡£";
-#else
-               if (name) return "War Cry";
-               if (desc) return "Damages all monsters in sight with sound. Aggravate nearby monsters.";
-#endif
+       case 22:
+               if (name) return _("気迫の雄叫び", "War Cry");
+               if (desc) return _("視界内の全モンスターに対して轟音の攻撃を行う。さらに、近くにいるモンスターを怒らせる。", 
+                       "Damages all monsters in sight with sound. Aggravate nearby monsters.");
     
                if (cast)
                {
-#ifdef JP
-                       msg_print("ͺ¶«¤Ó¤ò¤¢¤²¤¿¡ª");
-#else
-                       msg_print("You roar out!");
-#endif
-                       project_hack(GF_SOUND, randint1(p_ptr->lev * 3));
+                       msg_print(_("雄叫びをあげた!", "You roar out!"));
+                       project_hack(GF_SOUND, randint1(plev * 3));
                        aggravate_monsters(0);
                }
                break;
 
-       case TECH_SPEL_MUSOU_SANDAN:
-#ifdef JP
-               if (name) return "̵Áл°ÃÊ";
-               if (desc) return "¶¯ÎϤÊ3Ãʹ¶·â¤ò·«¤ê½Ð¤¹¡£";
-#else
-               if (name) return "Musou-Sandan";
-               if (desc) return "Attacks with powerful 3 strikes.";
-#endif
+       case 23:
+               if (name) return _("無双三段", "Musou-Sandan");
+               if (desc) return _("強力な3段攻撃を繰り出す。", "Attacks with powerful 3 strikes.");
     
                if (cast)
                {
@@ -11613,25 +8522,21 @@ cptr do_spell(int realm, int spell, int mode)
 
                        for (i = 0; i < 3; i++)
                        {
-                               int y, x;
-                               int ny, nx;
-                               int m_idx;
+                               POSITION y, x;
+                               POSITION ny, nx;
+                               MONSTER_IDX m_idx;
                                cave_type *c_ptr;
                                monster_type *m_ptr;
        
-                               y = py + ddy[dir];
-                               x = px + ddx[dir];
+                               y = p_ptr->y + ddy[dir];
+                               x = p_ptr->x + ddx[dir];
                                c_ptr = &cave[y][x];
        
                                if (c_ptr->m_idx)
                                        py_attack(y, x, HISSATSU_3DAN);
                                else
                                {
-#ifdef JP
-                                       msg_print("¤½¤ÎÊý¸þ¤Ë¤Ï¥â¥ó¥¹¥¿¡¼¤Ï¤¤¤Þ¤»¤ó¡£");
-#else
-                                       msg_print("There is no monster.");
-#endif
+                                       msg_print(_("その方向にはモンスターはいません。", "There is no monster."));
                                        return NULL;
                                }
        
@@ -11675,21 +8580,21 @@ cptr do_spell(int realm, int spell, int mode)
                                        /* Move the player */
                                        if (!move_player_effect(y, x, MPE_FORGET_FLOW | MPE_HANDLE_STUFF | MPE_DONT_PICKUP)) break;
                                }
-       
+                               else
+                               {
+                                       break;
+                               }
+
                                /* -more- */
                                if (i < 2) msg_print(NULL);
                        }
                }
                break;
 
-       case TECH_SPEL_VAMPIRES_FANG:
-#ifdef JP
-               if (name) return "µÛ·ìµ´¤Î²ç";
-               if (desc) return "¹¶·â¤·¤¿Áê¼ê¤ÎÂÎÎϤòµÛ¤¤¤È¤ê¡¢¼«Ê¬¤ÎÂÎÎϤò²óÉü¤µ¤»¤ë¡£À¸Ì¿¤ò»ý¤¿¤Ê¤¤¥â¥ó¥¹¥¿¡¼¤Ë¤ÏÄ̤¸¤Ê¤¤¡£";
-#else
-               if (name) return "Vampire's Fang";
-               if (desc) return "Attacks with vampiric strikes which absorbs HP from a monster and gives them to you. No effect to unliving monsters.";
-#endif
+       case 24:
+               if (name) return _("吸血鬼の牙", "Vampire's Fang");
+               if (desc) return _("攻撃した相手の体力を吸いとり、自分の体力を回復させる。生命を持たないモンスターには通じない。", 
+                       "Attacks with vampiric strikes which absorbs HP from a monster and gives them to you. No effect to unliving monsters.");
     
                if (cast)
                {
@@ -11698,68 +8603,51 @@ cptr do_spell(int realm, int spell, int mode)
                        if (!get_rep_dir2(&dir)) return NULL;
                        if (dir == 5) return NULL;
 
-                       y = py + ddy[dir];
-                       x = px + ddx[dir];
+                       y = p_ptr->y + ddy[dir];
+                       x = p_ptr->x + ddx[dir];
 
                        if (cave[y][x].m_idx)
                                py_attack(y, x, HISSATSU_DRAIN);
                        else
                        {
-#ifdef JP
-                                       msg_print("¤½¤ÎÊý¸þ¤Ë¤Ï¥â¥ó¥¹¥¿¡¼¤Ï¤¤¤Þ¤»¤ó¡£");
-#else
-                                       msg_print("There is no monster.");
-#endif
+                                       msg_print(_("その方向にはモンスターはいません。", "There is no monster."));
                                return NULL;
                        }
                }
                break;
 
-       case TECH_SPEL_MOON_DAZZLING:
-#ifdef JP
-               if (name) return "¸¸ÏÇ";
-               if (desc) return "»ë³¦Æâ¤Îµ¯¤­¤Æ¤¤¤ëÁ´¥â¥ó¥¹¥¿¡¼¤ËÛ¯Û°¡¢º®Íð¡¢Ì²¤ê¤òÍ¿¤¨¤è¤¦¤È¤¹¤ë¡£";
-#else
-               if (name) return "Moon Dazzling";
-               if (desc) return "Attempts to stun, confuse and sleep all waking monsters.";
-#endif
+       case 25:
+               if (name) return _("幻惑", "Moon Dazzling");
+               if (desc) return _("視界内の起きている全モンスターに朦朧、混乱、眠りを与えようとする。", "Attempts to stun, confuse and sleep all waking monsters.");
     
                if (cast)
                {
-#ifdef JP
-                       msg_print("Éð´ï¤òÉÔµ¬Â§¤ËÍɤ餷¤¿¡¥¡¥¡¥");
-#else
-                       msg_print("You irregularly wave your weapon...");
-#endif
-                       project_hack(GF_ENGETSU, p_ptr->lev * 4);
-                       project_hack(GF_ENGETSU, p_ptr->lev * 4);
-                       project_hack(GF_ENGETSU, p_ptr->lev * 4);
+                       msg_print(_("武器を不規則に揺らした...", "You irregularly wave your weapon..."));
+                       project_hack(GF_ENGETSU, plev * 4);
+                       project_hack(GF_ENGETSU, plev * 4);
+                       project_hack(GF_ENGETSU, plev * 4);
                }
                break;
 
-       case TECH_SPEL_HUNDRED_SLAUGHTER:
-#ifdef JP
-               if (name) return "É´¿Í»Â¤ê";
-               if (desc) return "Ϣ³¤·¤ÆÆþ¿È¤Ç¥â¥ó¥¹¥¿¡¼¤ò¹¶·â¤¹¤ë¡£¹¶·â¤¹¤ë¤¿¤Ó¤ËMP¤ò¾ÃÈñ¡£MP¤¬¤Ê¤¯¤Ê¤ë¤«¡¢¥â¥ó¥¹¥¿¡¼¤òÅݤ»¤Ê¤«¤Ã¤¿¤éÉ´¿Í»Â¤ê¤Ï½ªÎ»¤¹¤ë¡£";
-#else
-               if (name) return "Hundred Slaughter";
-               if (desc) return "Performs a series of rush attacks. The series continues while killing each monster in a time and SP remains.";
-#endif
+       case 26:
+               if (name) return _("百人斬り", "Hundred Slaughter");
+               if (desc) return _("連続して入身でモンスターを攻撃する。攻撃するたびにMPを消費。MPがなくなるか、モンスターを倒せなかったら百人斬りは終了する。", 
+                       "Performs a series of rush attacks. The series continues while killing each monster in a time and SP remains.");
     
                if (cast)
                {
                        const int mana_cost_per_monster = 8;
-                       bool new = TRUE;
+                       bool is_new = TRUE;
                        bool mdeath;
 
                        do
                        {
                                if (!rush_attack(&mdeath)) break;
-                               if (new)
+                               if (is_new)
                                {
                                        /* Reserve needed mana point */
                                        p_ptr->csp -= technic_info[REALM_HISSATSU - MIN_TECHNIC][26].smana;
-                                       new = FALSE;
+                                       is_new = FALSE;
                                }
                                else
                                        p_ptr->csp -= mana_cost_per_monster;
@@ -11772,62 +8660,44 @@ cptr do_spell(int realm, int spell, int mode)
                        }
                        while (p_ptr->csp > mana_cost_per_monster);
 
-                       if (new) return NULL;
+                       if (is_new) return NULL;
        
                        /* Restore reserved mana */
                        p_ptr->csp += technic_info[REALM_HISSATSU - MIN_TECHNIC][26].smana;
                }
                break;
 
-       case TECH_SPEL_DRAGONIC_FLASH:
-#ifdef JP
-               if (name) return "Å·æÆζÁ®";
-               if (desc) return "»ë³¦Æâ¤Î¾ì½ê¤ò»ØÄꤷ¤Æ¡¢¤½¤Î¾ì½ê¤È¼«Ê¬¤Î´Ö¤Ë¤¤¤ëÁ´¥â¥ó¥¹¥¿¡¼¤ò¹¶·â¤·¡¢¤½¤Î¾ì½ê¤Ë°ÜÆ°¤¹¤ë¡£";
-#else
-               if (name) return "Dragonic Flash";
-               if (desc) return "Runs toward given location while attacking all monsters on the path.";
-#endif
+       case 27:
+               if (name) return _("天翔龍閃", "Dragonic Flash");
+               if (desc) return _("視界内の場所を指定して、その場所と自分の間にいる全モンスターを攻撃し、その場所に移動する。", 
+                       "Runs toward given location while attacking all monsters on the path.");
     
                if (cast)
                {
-                       int y, x;
+                       POSITION y, x;
 
                        if (!tgt_pt(&x, &y)) return NULL;
 
-                       if (!cave_player_teleportable_bold(y, x, FALSE, FALSE) ||
-                           (distance(y, x, py, px) > MAX_SIGHT / 2) ||
-                           !projectable(py, px, y, x))
+                       if (!cave_player_teleportable_bold(y, x, 0L) ||
+                           (distance(y, x, p_ptr->y, p_ptr->x) > MAX_SIGHT / 2) ||
+                           !projectable(p_ptr->y, p_ptr->x, y, x))
                        {
-#ifdef JP
-                               msg_print("¼ºÇÔ¡ª");
-#else
-                               msg_print("You cannot move to that place!");
-#endif
+                               msg_print(_("失敗!", "You cannot move to that place!"));
                                break;
                        }
                        if (p_ptr->anti_tele)
                        {
-#ifdef JP
-                               msg_print("ÉԻ׵ĤÊÎϤ¬¥Æ¥ì¥Ý¡¼¥È¤òËɤ¤¤À¡ª");
-#else
-                               msg_print("A mysterious force prevents you from teleporting!");
-#endif
-       
+                               msg_print(_("不思議な力がテレポートを防いだ!", "A mysterious force prevents you from teleporting!"));
                                break;
                        }
                        project(0, 0, y, x, HISSATSU_ISSEN, GF_ATTACK, PROJECT_BEAM | PROJECT_KILL, -1);
-                       teleport_player_to(y, x, TRUE, FALSE);
+                       teleport_player_to(y, x, 0L);
                }
                break;
 
-       case TECH_SPEL_TWIN_SLASH:
-#ifdef JP
-               if (name) return "Æó½Å¤Î·õ·â";
-               if (desc) return "1¥¿¡¼¥ó¤Ç2ÅÙ¹¶·â¤ò¹Ô¤¦¡£";
-#else
-               if (name) return "Twin Slash";
-               if (desc) return "double attacks at a time.";
-#endif
+       case 28:
+               if (name) return _("二重の剣撃", "Twin Slash");
+               if (desc) return _("1ターンで2度攻撃を行う。", "double attacks at a time.");
     
                if (cast)
                {
@@ -11835,8 +8705,8 @@ cptr do_spell(int realm, int spell, int mode)
        
                        if (!get_rep_dir(&dir, FALSE)) return NULL;
 
-                       y = py + ddy[dir];
-                       x = px + ddx[dir];
+                       y = p_ptr->y + ddy[dir];
+                       x = p_ptr->x + ddx[dir];
 
                        if (cave[y][x].m_idx)
                        {
@@ -11849,24 +8719,15 @@ cptr do_spell(int realm, int spell, int mode)
                        }
                        else
                        {
-#ifdef JP
-       msg_print("¤½¤ÎÊý¸þ¤Ë¤Ï¥â¥ó¥¹¥¿¡¼¤Ï¤¤¤Þ¤»¤ó¡£");
-#else
-                               msg_print("You don't see any monster in this direction");
-#endif
+                               msg_print(_("その方向にはモンスターはいません。", "You don't see any monster in this direction"));
                                return NULL;
                        }
                }
                break;
 
-       case TECH_SPEL_KOFUKU_ZETTOUSEI:
-#ifdef JP
-               if (name) return "¸×ÉúÀäÅáÀª";
-               if (desc) return "¶¯ÎϤʹ¶·â¤ò¹Ô¤¤¡¢¶á¤¯¤Î¾ì½ê¤Ë¤â¸ú²Ì¤¬µÚ¤Ö¡£";
-#else
-               if (name) return "Kofuku-Zettousei";
-               if (desc) return "Performs a powerful attack which even effect nearby monsters.";
-#endif
+       case 29:
+               if (name) return _("虎伏絶刀勢", "Kofuku-Zettousei");
+               if (desc) return _("強力な攻撃を行い、近くの場所にも効果が及ぶ。", "Performs a powerful attack which even effect nearby monsters.");
     
                if (cast)
                {
@@ -11878,23 +8739,15 @@ cptr do_spell(int realm, int spell, int mode)
                        if (!get_rep_dir2(&dir)) return NULL;
                        if (dir == 5) return NULL;
 
-                       y = py + ddy[dir];
-                       x = px + ddx[dir];
+                       y = p_ptr->y + ddy[dir];
+                       x = p_ptr->x + ddx[dir];
 
                        if (d_info[dungeon_type].flags1 & DF1_NO_MELEE)
                        {
-#ifdef JP
-                               msg_print("¤Ê¤¼¤«¹¶·â¤¹¤ë¤³¤È¤¬¤Ç¤­¤Ê¤¤¡£");
-#else
-                               msg_print("Something prevent you from attacking.");
-#endif
+                               msg_print(_("なぜか攻撃することができない。", "Something prevent you from attacking."));
                                return "";
                        }
-#ifdef JP
-                       msg_print("Éð´ï¤òÂ礭¤¯¿¶¤ê²¼¤í¤·¤¿¡£");
-#else
-                       msg_print("You swing your weapon downward.");
-#endif
+                       msg_print(_("武器を大きく振り下ろした。", "You swing your weapon downward."));
                        for (i = 0; i < 2; i++)
                        {
                                int damage;
@@ -11924,14 +8777,10 @@ cptr do_spell(int realm, int spell, int mode)
                }
                break;
 
-       case TECH_SPEL_KEIUN_KININKEN:
-#ifdef JP
-               if (name) return "·Ä±Àµ´Ç¦·õ";
-               if (desc) return "¼«Ê¬¤â¥À¥á¡¼¥¸¤ò¤¯¤é¤¦¤¬¡¢Áê¼ê¤ËÈó¾ï¤ËÂ礭¤Ê¥À¥á¡¼¥¸¤òÍ¿¤¨¤ë¡£¥¢¥ó¥Ç¥Ã¥É¤Ë¤ÏÆä˸ú²Ì¤¬¤¢¤ë¡£";
-#else
-               if (name) return "Keiun-Kininken";
-               if (desc) return "Attacks a monster with extremely powerful damage. But you also takes some damages. Hurts a undead monster greatly.";
-#endif
+       case 30:
+               if (name) return _("慶雲鬼忍剣", "Keiun-Kininken");
+               if (desc) return _("自分もダメージをくらうが、相手に非常に大きなダメージを与える。アンデッドには特に効果がある。", 
+                       "Attacks a monster with extremely powerful damage. But you also takes some damages. Hurts a undead monster greatly.");
     
                if (cast)
                {
@@ -11940,51 +8789,30 @@ cptr do_spell(int realm, int spell, int mode)
                        if (!get_rep_dir2(&dir)) return NULL;
                        if (dir == 5) return NULL;
 
-                       y = py + ddy[dir];
-                       x = px + ddx[dir];
+                       y = p_ptr->y + ddy[dir];
+                       x = p_ptr->x + ddx[dir];
 
                        if (cave[y][x].m_idx)
                                py_attack(y, x, HISSATSU_UNDEAD);
                        else
                        {
-#ifdef JP
-                               msg_print("¤½¤ÎÊý¸þ¤Ë¤Ï¥â¥ó¥¹¥¿¡¼¤Ï¤¤¤Þ¤»¤ó¡£");
-#else
-                               msg_print("There is no monster.");
-#endif
+                               msg_print(_("その方向にはモンスターはいません。", "There is no monster."));
                                return NULL;
                        }
-#ifdef JP
-                       take_hit(DAMAGE_NOESCAPE, 100 + randint1(100), "·Ä±Àµ´Ç¦·õ¤ò»È¤Ã¤¿¾×·â", -1);
-#else
-                       take_hit(DAMAGE_NOESCAPE, 100 + randint1(100), "exhaustion on using Keiun-Kininken", -1);
-#endif
+                       take_hit(DAMAGE_NOESCAPE, 100 + randint1(100), _("慶雲鬼忍剣を使った衝撃", "exhaustion on using Keiun-Kininken"), -1);
                }
                break;
 
-       case TECH_SPEL_HARAKIRI:
-#ifdef JP
-               if (name) return "ÀÚÊ¢";
-               if (desc) return "¡ÖÉð»ÎÆ»¤È¤Ï¡¢»à¤Ì¤³¤È¤È¸«¤Ä¤±¤¿¤ê¡£¡×";
-#else
-               if (name) return "Harakiri";
-               if (desc) return "'Busido is found in death'";
-#endif
+       case 31:
+               if (name) return _("切腹", "Harakiri");
+               if (desc) return _("「武士道とは、死ぬことと見つけたり。」", "'Busido is found in death'");
 
                if (cast)
                {
                        int i;
-#ifdef JP
-       if (!get_check("ËÜÅö¤Ë¼«»¦¤·¤Þ¤¹¤«¡©")) return NULL;
-#else
-                       if (!get_check("Do you really want to commit suicide? ")) return NULL;
-#endif
+                       if (!get_check(_("本当に自殺しますか?", "Do you really want to commit suicide? "))) return NULL;
                                /* Special Verification for suicide */
-#ifdef JP
-       prt("³Îǧ¤Î¤¿¤á '@' ¤ò²¡¤·¤Æ²¼¤µ¤¤¡£", 0, 0);
-#else
-                       prt("Please verify SUICIDE by typing the '@' sign: ", 0, 0);
-#endif
+                       prt(_("確認のため '@' を押して下さい。", "Please verify SUICIDE by typing the '@' sign: "), 0, 0);
        
                        flush();
                        i = inkey();
@@ -11997,13 +8825,8 @@ cptr do_spell(int realm, int spell, int mode)
                        }
                        else
                        {
-#ifdef JP
-                               msg_print("Éð»ÎÆ»¤È¤Ï¡¢»à¤Ì¤³¤È¤È¸«¤Ä¤±¤¿¤ê¡£");
-                               take_hit(DAMAGE_FORCE, 9999, "ÀÚÊ¢", -1);
-#else
-                               msg_print("Meaning of Bushi-do is found in the death.");
+                               msg_print(_("武士道とは、死ぬことと見つけたり。", "Meaning of Bushi-do is found in the death."));
                                take_hit(DAMAGE_FORCE, 9999, "Seppuku", -1);
-#endif
                        }
                }
                break;
@@ -12011,3 +8834,885 @@ cptr do_spell(int realm, int spell, int mode)
 
        return "";
 }
+
+/*!
+ * @brief 呪術領域の武器呪縛の対象にできる武器かどうかを返す。 / An "item_tester_hook" for offer
+ * @param o_ptr オブジェクト構造体の参照ポインタ
+ * @return 呪縛可能な武器ならばTRUEを返す
+ */
+static bool item_tester_hook_weapon_except_bow(object_type *o_ptr)
+{
+       switch (o_ptr->tval)
+       {
+               case TV_SWORD:
+               case TV_HAFTED:
+               case TV_POLEARM:
+               case TV_DIGGING:
+               {
+                       return (TRUE);
+               }
+       }
+
+       return (FALSE);
+}
+
+/*!
+ * @brief 呪術領域の各処理に使える呪われた装備かどうかを返す。 / An "item_tester_hook" for offer
+ * @param o_ptr オブジェクト構造体の参照ポインタ
+ * @return 使える装備ならばTRUEを返す
+ */
+static bool item_tester_hook_cursed(object_type *o_ptr)
+{
+       return (bool)(object_is_cursed(o_ptr));
+}
+
+/*!
+ * @brief 呪術領域魔法の各処理を行う
+ * @param spell 魔法ID
+ * @param mode 処理内容 (SPELL_NAME / SPELL_DESC / SPELL_INFO / SPELL_CAST / SPELL_CONT / SPELL_STOP)
+ * @return SPELL_NAME / SPELL_DESC / SPELL_INFO 時には文字列ポインタを返す。SPELL_CAST / SPELL_CONT / SPELL_STOP 時はNULL文字列を返す。
+ */
+static cptr do_hex_spell(SPELL_IDX spell, BIT_FLAGS mode)
+{
+       bool name = (mode == SPELL_NAME) ? TRUE : FALSE;
+       bool desc = (mode == SPELL_DESC) ? TRUE : FALSE;
+       bool info = (mode == SPELL_INFO) ? TRUE : FALSE;
+       bool cast = (mode == SPELL_CAST) ? TRUE : FALSE;
+       bool cont = (mode == SPELL_CONT) ? TRUE : FALSE;
+       bool stop = (mode == SPELL_STOP) ? TRUE : FALSE;
+
+       bool add = TRUE;
+
+       PLAYER_LEVEL plev = p_ptr->lev;
+       HIT_POINT power;
+
+       switch (spell)
+       {
+       /*** 1st book (0-7) ***/
+       case 0:
+               if (name) return _("邪なる祝福", "Evily blessing");
+               if (desc) return _("祝福により攻撃精度と防御力が上がる。", "Attempts to increase +to_hit of a weapon and AC");
+               if (cast)
+               {
+                       if (!p_ptr->blessed)
+                       {
+                               msg_print(_("高潔な気分になった!", "You feel righteous!"));
+                       }
+               }
+               if (stop)
+               {
+                       if (!p_ptr->blessed)
+                       {
+                               msg_print(_("高潔な気分が消え失せた。", "The prayer has expired."));
+                       }
+               }
+               break;
+
+       case 1:
+               if (name) return _("軽傷の治癒", "Cure light wounds");
+               if (desc) return _("HPや傷を少し回復させる。", "Heals cut and HP a little.");
+               if (info) return info_heal(1, 10, 0);
+               if (cast)
+               {
+                       msg_print(_("気分が良くなってくる。", "You feel better and better."));
+               }
+               if (cast || cont)
+               {
+                       hp_player(damroll(1, 10));
+                       set_cut(p_ptr->cut - 10);
+               }
+               break;
+
+       case 2:
+               if (name) return _("悪魔のオーラ", "Demonic aura");
+               if (desc) return _("炎のオーラを身にまとい、回復速度が速くなる。", "Gives fire aura and regeneration.");
+               if (cast)
+               {
+                       msg_print(_("体が炎のオーラで覆われた。", "You have enveloped by fiery aura!"));
+               }
+               if (stop)
+               {
+                       msg_print(_("炎のオーラが消え去った。", "Fiery aura disappeared."));
+               }
+               break;
+
+       case 3:
+               if (name) return _("悪臭霧", "Stinking mist");
+               if (desc) return _("視界内のモンスターに微弱量の毒のダメージを与える。", "Deals few damages of poison to all monsters in your sight.");
+               power = plev / 2 + 5;
+               if (info) return info_damage(1, power, 0);
+               if (cast || cont)
+               {
+                       project_hack(GF_POIS, randint1(power));
+               }
+               break;
+
+       case 4:
+               if (name) return _("腕力強化", "Extra might");
+               if (desc) return _("術者の腕力を上昇させる。", "Attempts to increase your strength.");
+               if (cast)
+               {
+                       msg_print(_("何だか力が湧いて来る。", "You feel you get stronger."));
+               }
+               break;
+
+       case 5:
+               if (name) return _("武器呪縛", "Curse weapon");
+               if (desc) return _("装備している武器を呪う。", "Curses your weapon.");
+               if (cast)
+               {
+                       OBJECT_IDX item;
+                       cptr q, s;
+                       char o_name[MAX_NLEN];
+                       object_type *o_ptr;
+                       u32b f[TR_FLAG_SIZE];
+
+                       item_tester_hook = item_tester_hook_weapon_except_bow;
+                       q = _("どれを呪いますか?", "Which weapon do you curse?");
+                       s = _("武器を装備していない。", "You wield no weapons.");
+
+                       if (!get_item(&item, q, s, (USE_EQUIP))) return FALSE;
+
+                       o_ptr = &inventory[item];
+                       object_desc(o_name, o_ptr, OD_NAME_ONLY);
+                       object_flags(o_ptr, f);
+
+                       if (!get_check(format(_("本当に %s を呪いますか?", "Do you curse %s, really?"), o_name))) return FALSE;
+
+                       if (!one_in_(3) &&
+                               (object_is_artifact(o_ptr) || have_flag(f, TR_BLESSED)))
+                       {
+                               msg_format(_("%s は呪いを跳ね返した。", "%s resists the effect."), o_name);
+                               if (one_in_(3))
+                               {
+                                       if (o_ptr->to_d > 0)
+                                       {
+                                               o_ptr->to_d -= randint1(3) % 2;
+                                               if (o_ptr->to_d < 0) o_ptr->to_d = 0;
+                                       }
+                                       if (o_ptr->to_h > 0)
+                                       {
+                                               o_ptr->to_h -= randint1(3) % 2;
+                                               if (o_ptr->to_h < 0) o_ptr->to_h = 0;
+                                       }
+                                       if (o_ptr->to_a > 0)
+                                       {
+                                               o_ptr->to_a -= randint1(3) % 2;
+                                               if (o_ptr->to_a < 0) o_ptr->to_a = 0;
+                                       }
+                                       msg_format(_("%s は劣化してしまった。", "Your %s was disenchanted!"), o_name);
+                               }
+                       }
+                       else
+                       {
+                               int curse_rank = 0;
+                               msg_format(_("恐怖の暗黒オーラがあなたの%sを包み込んだ!", "A terrible black aura blasts your %s!"), o_name);
+                               o_ptr->curse_flags |= (TRC_CURSED);
+
+                               if (object_is_artifact(o_ptr) || object_is_ego(o_ptr))
+                               {
+
+                                       if (one_in_(3)) o_ptr->curse_flags |= (TRC_HEAVY_CURSE);
+                                       if (one_in_(666))
+                                       {
+                                               o_ptr->curse_flags |= (TRC_TY_CURSE);
+                                               if (one_in_(666)) o_ptr->curse_flags |= (TRC_PERMA_CURSE);
+
+                                               add_flag(o_ptr->art_flags, TR_AGGRAVATE);
+                                               add_flag(o_ptr->art_flags, TR_VORPAL);
+                                               add_flag(o_ptr->art_flags, TR_VAMPIRIC);
+                                               msg_print(_("血だ!血だ!血だ!", "Blood, Blood, Blood!"));
+                                               curse_rank = 2;
+                                       }
+                               }
+
+                               o_ptr->curse_flags |= get_curse(curse_rank, o_ptr);
+                       }
+
+                       p_ptr->update |= (PU_BONUS);
+                       add = FALSE;
+               }
+               break;
+
+       case 6:
+               if (name) return _("邪悪感知", "Evil detection");
+               if (desc) return _("周囲の邪悪なモンスターを感知する。", "Detects evil monsters.");
+               if (info) return info_range(MAX_SIGHT);
+               if (cast)
+               {
+                       msg_print(_("邪悪な生物の存在を感じ取ろうとした。", "You attend to the presence of evil creatures."));
+               }
+               break;
+
+       case 7:
+               if (name) return _("我慢", "Patience");
+               if (desc) return _("数ターン攻撃を耐えた後、受けたダメージを地獄の業火として周囲に放出する。", 
+                       "Bursts hell fire strongly after patients any damage while few turns.");
+               power = MIN(200, (HEX_REVENGE_POWER(p_ptr) * 2));
+               if (info) return info_damage(0, 0, power);
+               if (cast)
+               {
+                       int a = 3 - (p_ptr->pspeed - 100) / 10;
+                       MAGIC_NUM2 r = 3 + randint1(3) + MAX(0, MIN(3, a));
+
+                       if (HEX_REVENGE_TURN(p_ptr) > 0)
+                       {
+                               msg_print(_("すでに我慢をしている。", "You are already patienting."));
+                               return NULL;
+                       }
+
+                       HEX_REVENGE_TYPE(p_ptr) = 1;
+                       HEX_REVENGE_TURN(p_ptr) = r;
+                       HEX_REVENGE_POWER(p_ptr) = 0;
+                       msg_print(_("じっと耐えることにした。", "You decide to patient all damages."));
+                       add = FALSE;
+               }
+               if (cont)
+               {
+                       int rad = 2 + (power / 50);
+
+                       HEX_REVENGE_TURN(p_ptr)--;
+
+                       if ((HEX_REVENGE_TURN(p_ptr) <= 0) || (power >= 200))
+                       {
+                               msg_print(_("我慢が解かれた!", "Time for end of patioence!"));
+                               if (power)
+                               {
+                                       project(0, rad, p_ptr->y, p_ptr->x, power, GF_HELL_FIRE,
+                                               (PROJECT_STOP | PROJECT_GRID | PROJECT_ITEM | PROJECT_KILL), -1);
+                               }
+                               if (p_ptr->wizard)
+                               {
+                                       msg_format(_("%d点のダメージを返した。", "You return %d damages."), power);
+                               }
+
+                               /* Reset */
+                               HEX_REVENGE_TYPE(p_ptr) = 0;
+                               HEX_REVENGE_TURN(p_ptr) = 0;
+                               HEX_REVENGE_POWER(p_ptr) = 0;
+                       }
+               }
+               break;
+
+       /*** 2nd book (8-15) ***/
+       case 8:
+               if (name) return _("氷の鎧", "Ice armor");
+               if (desc) return _("氷のオーラを身にまとい、防御力が上昇する。", "Gives fire aura and bonus to AC.");
+               if (cast)
+               {
+                       msg_print(_("体が氷の鎧で覆われた。", "You have enveloped by ice armor!"));
+               }
+               if (stop)
+               {
+                       msg_print(_("氷の鎧が消え去った。", "Ice armor disappeared."));
+               }
+               break;
+
+       case 9:
+               if (name) return _("重傷の治癒", "Cure serious wounds");
+               if (desc) return _("体力や傷を多少回復させる。", "Heals cut and HP more.");
+               if (info) return info_heal(2, 10, 0);
+               if (cast)
+               {
+                       msg_print(_("気分が良くなってくる。", "You feel better and better."));
+               }
+               if (cast || cont)
+               {
+                       hp_player(damroll(2, 10));
+                       set_cut((p_ptr->cut / 2) - 10);
+               }
+               break;
+
+       case 10:
+               if (name) return _("薬品吸入", "Inhail potion");
+               if (desc) return _("呪文詠唱を中止することなく、薬の効果を得ることができる。", "Quaffs a potion without canceling of casting a spell.");
+               if (cast)
+               {
+                       CASTING_HEX_FLAGS(p_ptr) |= (1L << HEX_INHAIL);
+                       do_cmd_quaff_potion();
+                       CASTING_HEX_FLAGS(p_ptr) &= ~(1L << HEX_INHAIL);
+                       add = FALSE;
+               }
+               break;
+
+       case 11:
+               if (name) return _("吸血霧", "Vampiric mist");
+               if (desc) return _("視界内のモンスターに微弱量の生命力吸収のダメージを与える。与えたダメージの分、体力が回復する。", 
+                       "Deals few dameges of drain life to all monsters in your sight.");
+               power = (plev / 2) + 5;
+               if (info) return info_damage(1, power, 0);
+               if (cast || cont)
+               {
+                       project_hack(GF_OLD_DRAIN, randint1(power));
+               }
+               break;
+
+       case 12:
+               if (name) return _("魔剣化", "Swords to runeswords");
+               if (desc) return _("武器の攻撃力を上げる。切れ味を得、呪いに応じて与えるダメージが上昇し、善良なモンスターに対するダメージが2倍になる。", 
+                       "Gives vorpal ability to your weapon. Increases damages by your weapon acccording to curse of your weapon.");
+               if (cast)
+               {
+#ifdef JP
+                       msg_print("あなたの武器が黒く輝いた。");
+#else
+                       if (!empty_hands(FALSE))
+                               msg_print("Your weapons glow bright black.");
+                       else
+                               msg_print("Your weapon glows bright black.");
+#endif
+               }
+               if (stop)
+               {
+#ifdef JP
+                       msg_print("武器の輝きが消え去った。");
+#else
+                       msg_format("Brightness of weapon%s disappeared.", (empty_hands(FALSE)) ? "" : "s");
+#endif
+               }
+               break;
+
+       case 13:
+               if (name) return _("混乱の手", "Touch of confusion");
+               if (desc) return _("攻撃した際モンスターを混乱させる。", "Confuses a monster when you attack.");
+               if (cast)
+               {
+                       msg_print(_("あなたの手が赤く輝き始めた。", "Your hands glow bright red."));
+               }
+               if (stop)
+               {
+                       msg_print(_("手の輝きがなくなった。", "Brightness on your hands disappeard."));
+               }
+               break;
+
+       case 14:
+               if (name) return _("肉体強化", "Building up");
+               if (desc) return _("術者の腕力、器用さ、耐久力を上昇させる。攻撃回数の上限を 1 増加させる。", 
+                       "Attempts to increases your strength, dexterity and constitusion.");
+               if (cast)
+               {
+                       msg_print(_("身体が強くなった気がした。", "You feel your body is developed more now."));
+               }
+               break;
+
+       case 15:
+               if (name) return _("反テレポート結界", "Anti teleport barrier");
+               if (desc) return _("視界内のモンスターのテレポートを阻害するバリアを張る。", "Obstructs all teleportations by monsters in your sight.");
+               power = plev * 3 / 2;
+               if (info) return info_power(power);
+               if (cast)
+               {
+                       msg_print(_("テレポートを防ぐ呪いをかけた。", "You feel anyone can not teleport except you."));
+               }
+               break;
+
+       /*** 3rd book (16-23) ***/
+       case 16:
+               if (name) return _("衝撃のクローク", "Cloak of shock");
+               if (desc) return _("電気のオーラを身にまとい、動きが速くなる。", "Gives lightning aura and a bonus to speed.");
+               if (cast)
+               {
+                       msg_print(_("体が稲妻のオーラで覆われた。", "You have enveloped by electrical aura!"));
+               }
+               if (stop)
+               {
+                       msg_print(_("稲妻のオーラが消え去った。", "Electrical aura disappeared."));
+               }
+               break;
+
+       case 17:
+               if (name) return _("致命傷の治癒", "Cure critical wounds");
+               if (desc) return _("体力や傷を回復させる。", "Heals cut and HP greatry.");
+               if (info) return info_heal(4, 10, 0);
+               if (cast)
+               {
+                       msg_print(_("気分が良くなってくる。", "You feel better and better."));
+               }
+               if (cast || cont)
+               {
+                       hp_player(damroll(4, 10));
+                       set_stun(0);
+                       set_cut(0);
+                       set_poisoned(0);
+               }
+               break;
+
+       case 18:
+               if (name) return _("呪力封入", "Recharging");
+               if (desc) return _("魔法の道具に魔力を再充填する。", "Recharges a magic device.");
+               power = plev * 2;
+               if (info) return info_power(power);
+               if (cast)
+               {
+                       if (!recharge(power)) return NULL;
+                       add = FALSE;
+               }
+               break;
+
+       case 19:
+               if (name) return _("死者復活", "Animate Dead");
+               if (desc) return _("死体を蘇らせてペットにする。", "Raises corpses and skeletons from dead.");
+               if (cast)
+               {
+                       msg_print(_("死者への呼びかけを始めた。", "You start to call deads.!"));
+               }
+               if (cast || cont)
+               {
+                       animate_dead(0, p_ptr->y, p_ptr->x);
+               }
+               break;
+
+       case 20:
+               if (name) return _("防具呪縛", "Curse armor");
+               if (desc) return _("装備している防具に呪いをかける。", "Curse a piece of armour that you wielding.");
+               if (cast)
+               {
+                       OBJECT_IDX item;
+                       cptr q, s;
+                       char o_name[MAX_NLEN];
+                       object_type *o_ptr;
+                       u32b f[TR_FLAG_SIZE];
+
+                       item_tester_hook = object_is_armour;
+                       q = _("どれを呪いますか?", "Which piece of armour do you curse?");
+                       s = _("防具を装備していない。", "You wield no piece of armours.");
+
+                       if (!get_item(&item, q, s, (USE_EQUIP))) return FALSE;
+
+                       o_ptr = &inventory[item];
+                       object_desc(o_name, o_ptr, OD_NAME_ONLY);
+                       object_flags(o_ptr, f);
+
+                       if (!get_check(format(_("本当に %s を呪いますか?", "Do you curse %s, really?"), o_name))) return FALSE;
+
+                       if (!one_in_(3) &&
+                               (object_is_artifact(o_ptr) || have_flag(f, TR_BLESSED)))
+                       {
+                               msg_format(_("%s は呪いを跳ね返した。", "%s resists the effect."), o_name);
+                               if (one_in_(3))
+                               {
+                                       if (o_ptr->to_d > 0)
+                                       {
+                                               o_ptr->to_d -= randint1(3) % 2;
+                                               if (o_ptr->to_d < 0) o_ptr->to_d = 0;
+                                       }
+                                       if (o_ptr->to_h > 0)
+                                       {
+                                               o_ptr->to_h -= randint1(3) % 2;
+                                               if (o_ptr->to_h < 0) o_ptr->to_h = 0;
+                                       }
+                                       if (o_ptr->to_a > 0)
+                                       {
+                                               o_ptr->to_a -= randint1(3) % 2;
+                                               if (o_ptr->to_a < 0) o_ptr->to_a = 0;
+                                       }
+                                       msg_format(_("%s は劣化してしまった。", "Your %s was disenchanted!"), o_name);
+                               }
+                       }
+                       else
+                       {
+                               int curse_rank = 0;
+                               msg_format(_("恐怖の暗黒オーラがあなたの%sを包み込んだ!", "A terrible black aura blasts your %s!"), o_name);
+                               o_ptr->curse_flags |= (TRC_CURSED);
+
+                               if (object_is_artifact(o_ptr) || object_is_ego(o_ptr))
+                               {
+
+                                       if (one_in_(3)) o_ptr->curse_flags |= (TRC_HEAVY_CURSE);
+                                       if (one_in_(666))
+                                       {
+                                               o_ptr->curse_flags |= (TRC_TY_CURSE);
+                                               if (one_in_(666)) o_ptr->curse_flags |= (TRC_PERMA_CURSE);
+
+                                               add_flag(o_ptr->art_flags, TR_AGGRAVATE);
+                                               add_flag(o_ptr->art_flags, TR_RES_POIS);
+                                               add_flag(o_ptr->art_flags, TR_RES_DARK);
+                                               add_flag(o_ptr->art_flags, TR_RES_NETHER);
+                                               msg_print(_("血だ!血だ!血だ!", "Blood, Blood, Blood!"));
+                                               curse_rank = 2;
+                                       }
+                               }
+
+                               o_ptr->curse_flags |= get_curse(curse_rank, o_ptr);
+                       }
+
+                       p_ptr->update |= (PU_BONUS);
+                       add = FALSE;
+               }
+               break;
+
+       case 21:
+               if (name) return _("影のクローク", "Cloak of shadow");
+               if (desc) return _("影のオーラを身にまとい、敵に影のダメージを与える。", "Gives aura of shadow.");
+               if (cast)
+               {
+                       object_type *o_ptr = &inventory[INVEN_OUTER];
+
+                       if (!o_ptr->k_idx)
+                       {
+                               msg_print(_("クロークを身につけていない!", "You don't ware any cloak."));
+                               return NULL;
+                       }
+                       else if (!object_is_cursed(o_ptr))
+                       {
+                               msg_print(_("クロークは呪われていない!", "Your cloak is not cursed."));
+                               return NULL;
+                       }
+                       else
+                       {
+                               msg_print(_("影のオーラを身にまとった。", "You have enveloped by shadow aura!"));
+                       }
+               }
+               if (cont)
+               {
+                       object_type *o_ptr = &inventory[INVEN_OUTER];
+
+                       if ((!o_ptr->k_idx) || (!object_is_cursed(o_ptr)))
+                       {
+                               do_spell(REALM_HEX, spell, SPELL_STOP);
+                               CASTING_HEX_FLAGS(p_ptr) &= ~(1L << spell);
+                               CASTING_HEX_NUM(p_ptr)--;
+                               if (!SINGING_SONG_ID(p_ptr)) set_action(ACTION_NONE);
+                       }
+               }
+               if (stop)
+               {
+                       msg_print(_("影のオーラが消え去った。", "Shadow aura disappeared."));
+               }
+               break;
+
+       case 22:
+               if (name) return _("苦痛を魔力に", "Pains to mana");
+               if (desc) return _("視界内のモンスターに精神ダメージ与え、魔力を吸い取る。", "Deals psychic damages to all monsters in sight, and drains some mana.");
+               power = plev * 3 / 2;
+               if (info) return info_damage(1, power, 0);
+               if (cast || cont)
+               {
+                       project_hack(GF_PSI_DRAIN, randint1(power));
+               }
+               break;
+
+       case 23:
+               if (name) return _("目には目を", "Eye for an eye");
+               if (desc) return _("打撃や魔法で受けたダメージを、攻撃元のモンスターにも与える。", "Returns same damage which you got to the monster which damaged you.");
+               if (cast)
+               {
+                       msg_print(_("復讐したい欲望にかられた。", "You wish strongly you want to revenge anything."));
+               }
+               break;
+
+       /*** 4th book (24-31) ***/
+       case 24:
+               if (name) return _("反増殖結界", "Anti multiply barrier");
+               if (desc) return _("その階の増殖するモンスターの増殖を阻止する。", "Obstructs all multiplying by monsters in entire floor.");
+               if (cast)
+               {
+                       msg_print(_("増殖を阻止する呪いをかけた。", "You feel anyone can not already multiply."));
+               }
+               break;
+
+       case 25:
+               if (name) return _("全復活", "Restoration");
+               if (desc) return _("経験値を徐々に復活し、減少した能力値を回復させる。", "Restores experience and status.");
+               if (cast)
+               {
+                       msg_print(_("体が元の活力を取り戻し始めた。", "You feel your lost status starting to return."));
+               }
+               if (cast || cont)
+               {
+                       bool flag = FALSE;
+                       int d = (p_ptr->max_exp - p_ptr->exp);
+                       int r = (p_ptr->exp / 20);
+                       int i;
+
+                       if (d > 0)
+                       {
+                               if (d < r)
+                                       p_ptr->exp = p_ptr->max_exp;
+                               else
+                                       p_ptr->exp += r;
+
+                               /* Check the experience */
+                               check_experience();
+
+                               flag = TRUE;
+                       }
+                       for (i = A_STR; i < 6; i ++)
+                       {
+                               if (p_ptr->stat_cur[i] < p_ptr->stat_max[i])
+                               {
+                                       if (p_ptr->stat_cur[i] < 18)
+                                               p_ptr->stat_cur[i]++;
+                                       else
+                                               p_ptr->stat_cur[i] += 10;
+
+                                       if (p_ptr->stat_cur[i] > p_ptr->stat_max[i])
+                                               p_ptr->stat_cur[i] = p_ptr->stat_max[i];
+
+                                       /* Recalculate bonuses */
+                                       p_ptr->update |= (PU_BONUS);
+
+                                       flag = TRUE;
+                               }
+                       }
+
+                       if (!flag)
+                       {
+                               msg_format(_("%sの呪文の詠唱をやめた。", "Finish casting '%^s'."), do_spell(REALM_HEX, HEX_RESTORE, SPELL_NAME));
+                               CASTING_HEX_FLAGS(p_ptr) &= ~(1L << HEX_RESTORE);
+                               if (cont) CASTING_HEX_NUM(p_ptr)--;
+                               if (CASTING_HEX_NUM(p_ptr)) p_ptr->action = ACTION_NONE;
+
+                               /* Redraw status */
+                               p_ptr->update |= (PU_BONUS | PU_HP | PU_MANA | PU_SPELLS);
+                               p_ptr->redraw |= (PR_EXTRA);
+
+                               return "";
+                       }
+               }
+               break;
+
+       case 26:
+               if (name) return _("呪力吸収", "Drain curse power");
+               if (desc) return _("呪われた武器の呪いを吸収して魔力を回復する。", "Drains curse on your weapon and heals SP a little.");
+               if (cast)
+               {
+                       OBJECT_IDX item;
+                       cptr s, q;
+                       u32b f[TR_FLAG_SIZE];
+                       object_type *o_ptr;
+
+                       item_tester_hook = item_tester_hook_cursed;
+                       q = _("どの装備品から吸収しますか?", "Which cursed equipment do you drain mana from?");
+                       s = _("呪われたアイテムを装備していない。", "You have no cursed equipment.");
+
+                       if (!get_item(&item, q, s, (USE_EQUIP))) return FALSE;
+
+                       o_ptr = &inventory[item];
+                       object_flags(o_ptr, f);
+
+                       p_ptr->csp += (p_ptr->lev / 5) + randint1(p_ptr->lev / 5);
+                       if (have_flag(f, TR_TY_CURSE) || (o_ptr->curse_flags & TRC_TY_CURSE)) p_ptr->csp += randint1(5);
+                       if (p_ptr->csp > p_ptr->msp) p_ptr->csp = p_ptr->msp;
+
+                       if (o_ptr->curse_flags & TRC_PERMA_CURSE)
+                       {
+                               /* Nothing */
+                       }
+                       else if (o_ptr->curse_flags & TRC_HEAVY_CURSE)
+                       {
+                               if (one_in_(7))
+                               {
+                                       msg_print(_("呪いを全て吸い取った。", "Heavy curse vanished away."));
+                                       o_ptr->curse_flags = 0L;
+                               }
+                       }
+                       else if ((o_ptr->curse_flags & (TRC_CURSED)) && one_in_(3))
+                       {
+                               msg_print(_("呪いを全て吸い取った。", "Curse vanished away."));
+                               o_ptr->curse_flags = 0L;
+                       }
+
+                       add = FALSE;
+               }
+               break;
+
+       case 27:
+               if (name) return _("吸血の刃", "Swords to vampires");
+               if (desc) return _("吸血属性で攻撃する。", "Gives vampiric ability to your weapon.");
+               if (cast)
+               {
+#ifdef JP
+                       msg_print("あなたの武器が血を欲している。");
+#else
+                       if (!empty_hands(FALSE))
+                               msg_print("Your weapons want more blood now.");
+                       else
+                               msg_print("Your weapon wants more blood now.");
+#endif
+               }
+               if (stop)
+               {
+#ifdef JP
+                       msg_print("武器の渇望が消え去った。");
+#else
+                       msg_format("Thirsty of weapon%s disappeared.", (empty_hands(FALSE)) ? "" : "s");
+#endif
+               }
+               break;
+
+       case 28:
+               if (name) return _("朦朧の言葉", "Word of stun");
+               if (desc) return _("視界内のモンスターを朦朧とさせる。", "Stuns all monsters in your sight.");
+               power = plev * 4;
+               if (info) return info_power(power);
+               if (cast || cont)
+               {
+                       stun_monsters(power);
+               }
+               break;
+
+       case 29:
+               if (name) return _("影移動", "Moving into shadow");
+               if (desc) return _("モンスターの隣のマスに瞬間移動する。", "Teleports you close to a monster.");
+               if (cast)
+               {
+                       int i, dir;
+                       POSITION y, x;
+                       bool flag;
+
+                       for (i = 0; i < 3; i++)
+                       {
+                               if (!tgt_pt(&x, &y)) return FALSE;
+
+                               flag = FALSE;
+
+                               for (dir = 0; dir < 8; dir++)
+                               {
+                                       int dy = y + ddy_ddd[dir];
+                                       int dx = x + ddx_ddd[dir];
+                                       if (dir == 5) continue;
+                                       if(cave[dy][dx].m_idx) flag = TRUE;
+                               }
+
+                               if (!cave_empty_bold(y, x) || (cave[y][x].info & CAVE_ICKY) ||
+                                       (distance(y, x, p_ptr->y, p_ptr->x) > plev + 2))
+                               {
+                                       msg_print(_("そこには移動できない。", "Can not teleport to there."));
+                                       continue;
+                               }
+                               break;
+                       }
+
+                       if (flag && randint0(plev * plev / 2))
+                       {
+                               teleport_player_to(y, x, 0L);
+                       }
+                       else
+                       {
+                               msg_print(_("おっと!", "Oops!"));
+                               teleport_player(30, 0L);
+                       }
+
+                       add = FALSE;
+               }
+               break;
+
+       case 30:
+               if (name) return _("反魔法結界", "Anti magic barrier");
+               if (desc) return _("視界内のモンスターの魔法を阻害するバリアを張る。", "Obstructs all magic spell of monsters in your sight.");
+               power = plev * 3 / 2;
+               if (info) return info_power(power);
+               if (cast)
+               {
+                       msg_print(_("魔法を防ぐ呪いをかけた。", "You feel anyone can not cast spells except you."));
+               }
+               break;
+
+       case 31:
+               if (name) return _("復讐の宣告", "Revenge sentence");
+               if (desc) return _("数ターン後にそれまで受けたダメージに応じた威力の地獄の劫火の弾を放つ。", 
+                       "Fires  a ball of hell fire to try revenging after few turns.");
+               power = HEX_REVENGE_POWER(p_ptr);
+               if (info) return info_damage(0, 0, power);
+               if (cast)
+               {
+                       MAGIC_NUM2 r;
+                       int a = 3 - (p_ptr->pspeed - 100) / 10;
+                       r = 1 + randint1(2) + MAX(0, MIN(3, a));
+
+                       if (HEX_REVENGE_TURN(p_ptr) > 0)
+                       {
+                               msg_print(_("すでに復讐は宣告済みだ。", "You already pronounced your revenge."));
+                               return NULL;
+                       }
+
+                       HEX_REVENGE_TYPE(p_ptr) = 2;
+                       HEX_REVENGE_TURN(p_ptr) = r;
+                       msg_format(_("あなたは復讐を宣告した。あと %d ターン。", "You pronounce your revenge. %d turns left."), r);
+                       add = FALSE;
+               }
+               if (cont)
+               {
+                       HEX_REVENGE_TURN(p_ptr)--;
+
+                       if (HEX_REVENGE_TURN(p_ptr) <= 0)
+                       {
+                               int dir;
+
+                               if (power)
+                               {
+                                       command_dir = 0;
+
+                                       do
+                                       {
+                                               msg_print(_("復讐の時だ!", "Time to revenge!"));
+                                       }
+                                       while (!get_aim_dir(&dir));
+
+                                       fire_ball(GF_HELL_FIRE, dir, power, 1);
+
+                                       if (p_ptr->wizard)
+                                       {
+                                               msg_format(_("%d点のダメージを返した。", "You return %d damages."), power);
+                                       }
+                               }
+                               else
+                               {
+                                       msg_print(_("復讐する気が失せた。", "You are not a mood to revenge."));
+                               }
+                               HEX_REVENGE_POWER(p_ptr) = 0;
+                       }
+               }
+               break;
+       }
+
+       /* start casting */
+       if ((cast) && (add))
+       {
+               /* add spell */
+               CASTING_HEX_FLAGS(p_ptr) |= 1L << (spell);
+               CASTING_HEX_NUM(p_ptr)++;
+
+               if (p_ptr->action != ACTION_SPELL) set_action(ACTION_SPELL);
+       }
+
+       /* Redraw status */
+       if (!info)
+       {
+               p_ptr->update |= (PU_BONUS | PU_HP | PU_MANA | PU_SPELLS);
+               p_ptr->redraw |= (PR_EXTRA | PR_HP | PR_MANA);
+       }
+
+       return "";
+}
+
+
+/*!
+ * @brief 魔法処理のメインルーチン
+ * @param realm 魔法領域のID
+ * @param spell 各領域の魔法ID
+ * @param mode 求める処理
+ * @return 各領域魔法に各種テキストを求めた場合は文字列参照ポインタ、そうでない場合はNULLポインタを返す。
+ */
+cptr do_spell(REALM_IDX realm, SPELL_IDX spell, BIT_FLAGS mode)
+{
+       switch (realm)
+       {
+       case REALM_LIFE:     return do_life_spell(spell, mode);
+       case REALM_SORCERY:  return do_sorcery_spell(spell, mode);
+       case REALM_NATURE:   return do_nature_spell(spell, mode);
+       case REALM_CHAOS:    return do_chaos_spell(spell, mode);
+       case REALM_DEATH:    return do_death_spell(spell, mode);
+       case REALM_TRUMP:    return do_trump_spell(spell, mode);
+       case REALM_ARCANE:   return do_arcane_spell(spell, mode);
+       case REALM_CRAFT:    return do_craft_spell(spell, mode);
+       case REALM_DAEMON:   return do_daemon_spell(spell, mode);
+       case REALM_CRUSADE:  return do_crusade_spell(spell, mode);
+       case REALM_MUSIC:    return do_music_spell(spell, mode);
+       case REALM_HISSATSU: return do_hissatsu_spell(spell, mode);
+       case REALM_HEX:      return do_hex_spell(spell, mode);
+       }
+
+       return NULL;
+}