summaryrefslogtreecommitdiff
path: root/data
diff options
context:
space:
mode:
Diffstat (limited to 'data')
-rw-r--r--data/rbot/plugins/dictclient.rb55
-rw-r--r--data/rbot/plugins/games/shiritori.rb63
2 files changed, 69 insertions, 49 deletions
diff --git a/data/rbot/plugins/dictclient.rb b/data/rbot/plugins/dictclient.rb
index 53c1f7c0..2cd782ce 100644
--- a/data/rbot/plugins/dictclient.rb
+++ b/data/rbot/plugins/dictclient.rb
@@ -49,25 +49,25 @@ end
class DictClientPlugin < Plugin
BotConfig.register BotConfigStringValue.new('dictclient.server',
:default => 'dict.org',
- :desc => 'Hostname or hostname:port of the DICT server used to lookup words')
+ :desc => _('Hostname or hostname:port of the DICT server used to lookup words'))
BotConfig.register BotConfigIntegerValue.new('dictclient.max_defs_before_collapse',
:default => 4,
- :desc => 'When multiple databases reply a number of definitions that above this limit, only the database names will be listed. Otherwise, the full definitions from each database are replied')
+ :desc => _('When multiple databases reply a number of definitions that above this limit, only the database names will be listed. Otherwise, the full definitions from each database are replied'))
BotConfig.register BotConfigIntegerValue.new('dictclient.max_length_per_def',
:default => 200,
- :desc => 'Each definition is truncated to this length')
+ :desc => _('Each definition is truncated to this length'))
BotConfig.register BotConfigStringValue.new('dictclient.headword_format',
:default => "#{Bold}<headword>#{Bold}",
- :desc => 'Format of headwords; <word> will be replaced with the actual word')
+ :desc => _('Format of headwords; <word> will be replaced with the actual word'))
BotConfig.register BotConfigStringValue.new('dictclient.database_format',
:default => "#{Underline}<database>#{Underline}",
- :desc => 'Format of database names; <database> will be replaced with the database name')
+ :desc => _('Format of database names; <database> will be replaced with the database name'))
BotConfig.register BotConfigStringValue.new('dictclient.definition_format',
:default => '<headword>: <definition> -<database>',
- :desc => 'Format of definitions. <word> will be replaced with the formatted headword, <def> will be replaced with the truncated definition, and <database> with the formatted database name')
+ :desc => _('Format of definitions. <word> will be replaced with the formatted headword, <def> will be replaced with the truncated definition, and <database> with the formatted database name'))
BotConfig.register BotConfigStringValue.new('dictclient.match_format',
:default => '<matches>––<database>',
- :desc => 'Format of match results. <matches> will be replaced with the formatted headwords, <database> with the formatted database name')
+ :desc => _('Format of match results. <matches> will be replaced with the formatted headwords, <database> with the formatted database name'))
def initialize
super
@@ -87,11 +87,11 @@ class DictClientPlugin < Plugin
ret = yield dict
dict.disconnect
rescue ConnectError
- m.reply 'An error occured connecting to the DICT server. Check the dictclient.server configuration or retry later' if m
+ m.reply _('An error occured connecting to the DICT server. Check the dictclient.server configuration or retry later') if m
rescue ProtocolError
- m.reply 'A protocol error occured' if m
+ m.reply _('A protocol error occured') if m
rescue DICTError
- m.reply 'An error occured' if m
+ m.reply _('An error occured') if m
end
ret
end
@@ -113,10 +113,10 @@ class DictClientPlugin < Plugin
# the number of definitions is above dictclient.max_defs_before_collapse
if results.any? {|r| r.database != results[0].database} &&
results.length > @bot.config['dictclient.max_defs_before_collapse']
- "Definitions for #{format_headword phrase} were found in #{
- results.collect {|r| r.database}.uniq.collect {|d|
- format_database d}.join ', '
- }. Specify database to view full result."
+ _("Many definitions for %{phrase} were found in %{databases}. Use 'define <phrase> from <database> to view a definition.") %
+ { :phrase => format_headword(phrase),
+ :databases => results.collect {|r| r.database}.uniq.
+ collect {|d| format_database d}.join(', ') }
# otherwise display the definitions
else
results.collect {|r|
@@ -130,8 +130,9 @@ class DictClientPlugin < Plugin
}.join ' '
end
else
- "No definition for #{format_headword phrase} found from #{
- format_database params[:database]}."
+ _("No definition for %{phrase} found from %{database}.") %
+ { :phrase => format_headword(phrase),
+ :database => format_database(params[:database]) }
end
)
end
@@ -150,30 +151,32 @@ class DictClientPlugin < Plugin
)
}.join ' '
else
- "Nothing matched for #{format_headword phrase
- } from #{format_database params[:database]} using #{params[:strategy]}"
+ _("Nothing matched %{query} from %{database} using %{strategy}") %
+ { :query => format_headword(phrase),
+ :database => format_database(params[:database]),
+ :strategy => params[:strategy] }
end
)
end
def cmd_databases(m, params)
with_dict(m) do |d|
- m.reply "Databases: #{
- d.show_db.collect {|db, d|"#{format_database db}: #{d}"}.join '; '
- }"
+ m.reply _("Databases: %{list}") % {
+ :list => d.show_db.collect {|db, des| "#{format_database db}: #{des}"}.join('; ')
+ }
end
end
def cmd_strategies(m, params)
with_dict(m) do |d|
- m.reply "Strategies: #{
- d.show_strat.collect {|s, d| "#{s}: #{d}"}.join '; '
- }"
+ m.reply _("Strategies: %{list}") % {
+ :list => d.show_strat.collect {|s, des| "#{s}: #{des}"}.join('; ')
+ }
end
end
def help(plugin, topic='')
- "define <phrase> [from <database>] => Show definition of a phrase; match <phrase> [using <strategy>] [from <database>] => Show matching phrases; dictclient databases => List databases; dictclient strategies => List strategies"
+ _("define <phrase> [from <database>] => Show definition of a phrase; match <phrase> [using <strategy>] [from <database>] => Show matching phrases; dictclient databases => List databases; dictclient strategies => List strategies")
end
end
@@ -189,4 +192,4 @@ plugin.map 'match *phrase [using :strategy] [from :database]',
:strategy => DICT::DEFAULT_MATCH_STRATEGY }
plugin.map 'dictclient databases', :action => 'cmd_databases'
-plugin.map 'dictclient strategies', :action => 'cmd_strategies' \ No newline at end of file
+plugin.map 'dictclient strategies', :action => 'cmd_strategies'
diff --git a/data/rbot/plugins/games/shiritori.rb b/data/rbot/plugins/games/shiritori.rb
index 0e53ad2e..250ff838 100644
--- a/data/rbot/plugins/games/shiritori.rb
+++ b/data/rbot/plugins/games/shiritori.rb
@@ -45,7 +45,7 @@ class WordlistDictionary < Dictionary
def initialize(words)
super()
@words = words
- debug "Created dictionary with #{@words.length} words"
+ # debug "Created dictionary with #{@words.length} words"
end
# whether string s is a word
@@ -120,7 +120,7 @@ class Shiritori
# TODO optionally allow used words
# TODO ruby2 unicode
if len(s) < @overlap_lengths.min || !@dictionary.has_word?(s)
- debug "#{s} is too short or not in dictionary"
+ # debug "#{s} is too short or not in dictionary"
:ignore
elsif @used_words.empty?
if !@check_continuable || continuable_from?(s)
@@ -171,6 +171,10 @@ class ShiritoriGame
@ruleset[:allow_reuse])
end
+ def say(s)
+ @say.call(s)
+ end
+
# Whether the players must take turns
# * when there is only one player, turns are not enforced
# * when time_limit > 0, new players can join at any time, but existing players must
@@ -195,13 +199,17 @@ class ShiritoriGame
# announce the current word, and player if take_turns?
def announce
- if take_turns?
- @say.call "#{current_player}, it's your turn. #{previous_word} -> #{current_word}"
+ say (if take_turns?
+ _("%{current_player}, it's your turn. %{previous_word} -> %{current_word}") %
+ { :current_player => current_player, :previous_word => previous_word,
+ :current_word => current_word }
elsif @players.empty?
- @say.call "No one has given the first word yet. Say the first word to start."
+ _("No one has given the first word yet. Say the first word to start.")
else
- @say.call "Poor #{current_player} is playing alone! Anyone care to join? #{previous_word} -> #{current_word}"
- end
+ _("Poor %{current_player} is playing alone! Anyone care to join? %{previous_word} -> %{current_word}") %
+ { :current_player => current_player, :previous_word => previous_word,
+ :current_word => current_word }
+ end)
end
# create/reschedule timer
def restart_timer
@@ -229,18 +237,21 @@ class ShiritoriGame
# handle when turn time limit goes out
def time_out
if @ruleset[:lose_when_timeout]
- @say.call "#{current_player} took too long and is out of the game. Try again next game!"
+ say _("%{player} took too long and is out of the game. Try again next game!") %
+ { :player => current_player }
if @players.length == 2
# 2 players before, and one should remain now
# since the game is ending, save the trouble of removing and booting the player
- @say.call "#{@players[1]} is the last remaining player and the winner! Congratulations!"
+ say _("%{player} is the last remaining player and the winner! Congratulations!") %
+ {:player => @players.last}
die
else
@booted_players << @players.shift
announce
end
else
- @say.call "#{current_player} took too long and skipped the turn."
+ say _("%{player} took too long and skipped the turn.") %
+ {:player => current_player}
next_player
end
end
@@ -267,28 +278,32 @@ class ShiritoriGame
case @game.process @ruleset[:normalize].call(message)
when :start
@players << speaker
- m.reply "#{speaker} has given the first word: #{current_word}"
+ m.reply _("%{player} has given the first word: %{word}") %
+ {:player => speaker, :word => current_word}
when :next
if !@players.include?(speaker)
# A new player
@players.unshift speaker
- m.reply "Welcome to shiritori, #{speaker}."
+ m.reply _("Welcome to shiritori, %{speaker}.") %
+ {:player => speaker}
end
next_player
when :used
- m.reply "The word #{message} has been used. Retry from #{current_word}"
+ m.reply _("The word %{used_word} has been used. Retry from %{word}") %
+ {:used_word => message, :word => current_word}
when :end
# TODO respect shiritori.end_when_uncontinuable setting
if @ruleset[:end_when_uncontinuable]
- m.reply "It's impossible to continue the chain from #{message}. The game has ended. Thanks a lot, #{speaker}! :("
+ m.reply _("It's impossible to continue the chain from %{word}. The game has ended. Thanks a lot, %{player}! :(") %
+ {:word => message, :player => speaker}
die
else
- m.reply "It's impossible to continue the chain from #{message}. Retry from #{current_word}"
+ m.reply _("It's impossible to continue the chain from %{bad_word}. Retry from %{word}") % {:bad_word => message, :word => current_word}
end
when :start_end
# when the first word is uncontinuable, the game doesn't stop, as presumably
# someone wanted to play
- m.reply "It's impossible to continue the chain from #{message}. Start with another word."
+ m.reply _("It's impossible to continue the chain from %{word}. Start with another word.") % {:word => message}
end
end
@@ -309,7 +324,8 @@ end
# shiritori plugin for rbot
class ShiritoriPlugin < Plugin
def help(plugin, topic="")
- "A game in which each player must continue the previous player's word, by using its last one or few characters/letters of the word to start a new word. 'shiritori <ruleset>' => Play shiritori with a set of rules. Available rulesets: #{@rulesets.keys.join ', '}. 'shiritori stop' => Stop the current shiritori game."
+ _("A game in which each player must continue the previous player's word, by using its last one or few characters/letters of the word to start a new word. 'shiritori <ruleset>' => Play shiritori with a set of rules. Available rulesets: %{rulesets}. 'shiritori stop' => Stop the current shiritori game.") %
+ {:rulesets => @rulesets.keys.join(', ')}
end
def initialize()
@@ -379,7 +395,7 @@ class ShiritoriPlugin < Plugin
# start shiritori in a channel
def cmd_shiritori(m, params)
if @games.has_key?( m.channel )
- m.reply "Already playing shiritori here"
+ m.reply _("Already playing shiritori here")
@games[m.channel].announce
else
ruleset = params[:ruleset].downcase
@@ -390,12 +406,13 @@ class ShiritoriPlugin < Plugin
@bot.timer,
lambda {|msg| m.reply msg},
lambda {remove_game m.channel} )
- m.reply "Shiritori has started. Please say the first word"
+ m.reply _("Shiritori has started. Please say the first word")
rescue => e
- m.reply "couldn't start #{ruleset} shiritori: #{e}"
+ m.reply _("couldn't start %{ruleset} shiritori: %{error}") %
+ {:ruleset => ruleset, :error => e}
end
else
- m.reply "There is no defined ruleset named #{ruleset}"
+ m.reply _("There is no ruleset named %{ruleset}") % {:ruleset => ruleset}
end
end
end
@@ -413,10 +430,10 @@ class ShiritoriPlugin < Plugin
if @games.has_key? m.channel
# TODO display statistics
@games[m.channel].die
- m.reply "Shiritori has stopped. Hope you had fun!"
+ m.reply _("Shiritori has stopped. Hope you had fun!")
else
# TODO display statistics
- m.reply "No game to stop here, because no game is being played."
+ m.reply _("No game to stop here, because no game is being played.")
end
end