Kono Yo no Hate de Koi wo Utau Shoujo YU-NO:speaker tags.txt

From TLWiki
Jump to: navigation, search

Speaker Tags[edit]

This is a listing of all speaker tags that occur in the script files. These will be globally substituted during the rebuilding process to ensure consistency. The listing is formatted as Python code and is identical to the messubs.py file that mesrebuild.py uses.

Translations are not final and are open to debate.

Currently, we are explicitly using "Takuya" over the user-inputted name. This is done for a few reasons.

  • The name-input screen is hard-coded to double-byte characters (although it should be possible to change this)
  • The word-wrapping code in mesrebuild.py cannot know in advance what the protag name is. The best it can do is use the maximum length that can be inputted. As a result of this, if you enter in a shorter name, lines containing that name will appear shorter (wrap prematurely) compared to lines that don't contain the name in the text box.
  • For the voice patch, it makes no sense to use a name other than Takuya (and many people will probably be playing the game in this manner).
  • The Special Disc scenario uses "Takuya" regardless of any name you choose.

Note to anyone using the tools to build their own scripts The YU-NO mestools package contains a messubs.py file that is untranslated, so when you download an updated version of the tool, either not overwrite the messubs.py file or copy the code below into the messubs.py file afterwards.

# Global substitution dictionary for mesrebuild.py

# This file is merely included from mesrebuild.py, it is not to be used by
# itself.

import re

# global substitutions to apply to all text lines
# mainly useful for the "who's speaking" tags
# format: <input_string>: <output_string>

global_subs = {
"\protag": "Takuya",
"【\protag】": "【Takuya】",
"【\protag・亜由美】": "【Takuya & Ayumi】",
"【\protag・澪】": "【Takuya & Mio】",
"【\protag・絵里子】": "【Takuya & Eriko】",
"【たくや】": "【Takuya】",
"【やせた男】": "【Skinny Man】",
"【アイリア】": "【Illia】",
"【アナウンス】": "【Announcement】",
"【アマリリス】": "【Amaryllis】",
"【アマンダ】": "【Amanda】",
"【ウェイトレス】": "【Waitress】",
"【ウエイトレス】": "【Waitress】",
"【オヤジ】": "【Pops】",
"【カエル君】": "【Mr. Frog】",
"【キャスター】": "【Newscaster】",
"【クンクン】": "【Kun-kun】",
"【サラ】": "【Sala】",
"【セーレス】": "【Sayless】",
"【ボーイ】": "【Bellboy】",
"【ユーノ】": "【Yu-no】",
"【不良番長】": "【Gang Leader】",
"【亜由美】": "【Ayumi】",
"【亜由美の声】": "【Ayumi's voice】",
"【人物A】": "【Person A】",
"【人物B】": "【Person B】",
"【人物C】": "【Person C】",
"【作業者】": "【Worker】",
"【作業者たち】": "【Workers】",
"【作業者A】": "【Worker A】",
"【作業者B】": "【Worker B】",
"【作業者C】": "【Worker C】",
"【別の女性の声】": "【Other Woman's voice】",
"【北条】": "【Houjou】",
"【受付嬢】": "【Receptionist】",
"【営業マン】": "【Account Manager】",
"【声】": "【Voice】",
"【声A】": "【Voice A】",
"【声B】": "【Voice B】",
"【声C】": "【Voice C】",
"【太った男】": "【Fat Man】",
"【女】": "【Woman】",
"【女の声】": "【Woman's voice】",
"【女子学生】": "【Female Student】",
"【女学生】": "【Female Student】",
"【女守衛】": "【Female Guard】",
"【女店員】": "【Saleswoman】",
"【女性】": "【Woman】",
"【女性の声】": "【Female voice】",
"【女性の客】": "【Female Customer】",
"【女性キャスター】": "【Female Newscaster】",
"【女性A】": "【Woman A】",
"【女性B】": "【Woman B】",
"【女性C】": "【Woman C】",
"【女A】": "【Woman A】",
"【女B】": "【Woman B】",
"【女C】": "【Woman C】",
"【子犬】": "【Puppy】",
"【学生】": "【Student】",
"【学生たち】": "【Students】",
"【学生A】": "【Student A】",
"【学生B】": "【Student B】",
"【学生C】": "【Student C】",
"【小動物】": "【Small Animal】",
"【工事の人】": "【Construction Worker】",
"【工事の人A】": "【Construction Worker A】",
"【工事の人B】": "【Construction Worker B】",
"【工事の人C】": "【Construction Worker C】",
"【左側の生き物】": "【Creature on the left】",
"【広大】": "【Koudai】",
"【店員】": "【Employee】",    # from the cafe, F25_05.MST
"【所行】": "【Chief】",    # this is a typo, Z64_02.MST, page170
"【所長】": "【Chief】",
"【手を差し伸べる女性】": "【Woman extending her hand】",
"【掲示板前の学生】": "【Student by the bulletin board】",
"【支店長】": "【Branch Manager】",
"【放送】": "【Broadcast】",
"【放送の声】": "【Broadcast voice】",
"【澪】": "【Mio】",
"【澪の声】": "【Mio's voice】",
"【男】": "【Man】",
"【男の声】": "【Man's voice】",
"【男の声A】": "【Man's voice A】",
"【男の声B】": "【Man's voice B】",
"【男子学生】": "【Male Student】",
"【男性の声】": "【Male voice】",
"【男性A】": "【Male A】",
"【男性B】": "【Male B】",
"【男性C】": "【Male C】",
"【男1】": "【Man 1】",
"【男2】": "【Man 2】",
"【男A】": "【Man A】",
"【男B】": "【Man B】",
"【男C】": "【Man C】",
"【男D】": "【Man D】",
"【目の前の人物】": "【Person before me】",
"【目の前の女】": "【Woman before me】",
"【目の前の女性】": "【Woman before me】",
"【目の前の男】": "【Man before me】",
"【神奈】": "【Kanna】",
"【結城】": "【Yuuki】",
"【絵里子】": "【Eriko】",
"【絵里子の声】": "【Eriko's voice】",
"【美月】": "【Mitsuki】",
"【美月の声】": "【Mitsuki's voice】",
"【美月・\protag】": "【Mitsuki & Takuya】",
"【老婆】": "【Old Woman】",
"【老婆の声】": "【Old Woman's voice】",
"【豊富】": "【Toyotomi】",
"【豊富の声】": "【Toyotomi's voice】",
"【赤ん坊】": "【Baby】",
"【近衛兵】": "【Imperial Guard】",
"【近衛兵の声】": "【Imperial Guard's voice】",
"【近衛兵全員】": "【Imperial Guardsmen】",
"【近衛兵A】": "【Imperial Guard A】",
"【近衛兵B】": "【Imperial Guard B】",
"【近衛兵C】": "【Imperial Guard C】",
"【酔っぱらい】": "【Drunkard】",
"【隣の女】": "【Nearby Woman】",
"【香織】": "【Kaori】",
"【龍蔵寺】": "【Ryuuzouji】",

# Regular expressions
re_kokun  = re.compile(r'コクン。*')
re_nico2  = re.compile(r'ニコニコッ。*')
re_nico   = re.compile(r'ニコッ。*')
re_purun  = re.compile(r'プルンプルン。*')
re_ellip6 = re.compile(r'‥{6,}。*')
re_ellip4 = re.compile(r'‥{4,5}。*')
re_ellip2 = re.compile(r'‥{1,3}。*')
re_quote  = re.compile(r'[「『」』]')

def apply_subs(s):

	# Dictionary substitutions
	for sub in global_subs:
		s = s.replace(sub,global_subs[sub])
	# Specific substitutions
	if s.find('【Sayless】') == 0 or s.find('【Woman before me】') == 0:
		s = re_kokun.sub('*nod*',s)
		s = re_nico2.sub('*smile* *smile*',s)
		s = re_nico.sub('*smile*',s)
		s = re_purun.sub('*shake*',s)
	# Grammar substitutions
	s = re_ellip6.sub('............',s)
	s = re_ellip4.sub('........',s)
	s = re_ellip2.sub('...',s)
	s = re_quote.sub('"',s)
	s = s.replace('(','(')
	s = s.replace(')',')')
	s = s.replace('[','[')
	s = s.replace(']',']')
	s = s.replace('!','!')
	s = s.replace('?','?')
	s = s.replace('--','―')
	s = s.replace('】','】 ')  # a space after the speaker tag looks better w/ a proportional font 
	return s