summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Rakefile2
-rw-r--r--data/rbot/plugins/dictclient.rb55
-rw-r--r--data/rbot/plugins/games/shiritori.rb63
-rw-r--r--po/ja/rbot.po262
-rw-r--r--po/rbot.pot251
-rw-r--r--po/zh_CN/rbot.po251
6 files changed, 684 insertions, 200 deletions
diff --git a/Rakefile b/Rakefile
index 7dc69e5f..7a6bd81e 100644
--- a/Rakefile
+++ b/Rakefile
@@ -38,7 +38,7 @@ end
desc "Update pot/po files."
task :updatepo do
require 'gettext/utils'
- GetText.update_pofiles("rbot", Dir.glob("{lib,bin}/**/*.{rb,rhtml}"), "rbot")
+ GetText.update_pofiles("rbot", Dir.glob("{lib,bin,data}/**/*.{rb,rhtml}"), "rbot")
end
desc "Create mo-files"
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
diff --git a/po/ja/rbot.po b/po/ja/rbot.po
index 29aa9692..a202d781 100644
--- a/po/ja/rbot.po
+++ b/po/ja/rbot.po
@@ -6,7 +6,7 @@
msgid ""
msgstr ""
"Project-Id-Version: rbot\n"
-"POT-Creation-Date: 2007-07-09 03:58-0400\n"
+"POT-Creation-Date: 2007-07-10 00:57-0400\n"
"PO-Revision-Date: 2007-07-09 01:36-0400\n"
"Last-Translator: Yaohan Chen <yaohan.chen@gmail.com>\n"
"Language-Team: Japanese\n"
@@ -15,10 +15,6 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: lib/rbot/load-gettext.rb:32
-msgid "using ruby-gettext"
-msgstr ""
-
#: lib/rbot/registry.rb:19
msgid ""
"upgrading old-style (rbot 0.9.5 or earlier) plugin registry to new format"
@@ -38,10 +34,6 @@ msgstr ""
msgid "incorrect usage, ask for help using '%{command}'"
msgstr ""
-#: lib/rbot/plugins.rb:400
-msgid "Botmodule loading path cleared"
-msgstr ""
-
#: lib/rbot/plugins.rb:477
msgid "%{count} core module loaded"
msgid_plural "%{count} core modules loaded"
@@ -136,16 +128,8 @@ msgstr ""
msgid "%{user}, you don't have '%{command}' permissions here"
msgstr ""
-#: lib/rbot/config.rb:259
-msgid "Not writing conf.yaml (unchanged)"
-msgstr ""
-
-#: lib/rbot/config.rb:263
-msgid "Writing new conf.yaml ..."
-msgstr ""
-
-#: lib/rbot/config.rb:271
-msgid "Officializing conf.yaml ..."
+#: lib/rbot/config.rb:172
+msgid "%{desc} [valid values are: %{values}]"
msgstr ""
#: lib/rbot/config.rb:304
@@ -458,132 +442,132 @@ msgstr ""
msgid "are you nuts, creating a botuser with a publicly known password?"
msgstr ""
-#: lib/rbot/core/auth.rb:511
+#: lib/rbot/core/auth.rb:510
msgid "failed to create %{user}: %{exception}"
msgstr ""
-#: lib/rbot/core/auth.rb:515
+#: lib/rbot/core/auth.rb:514
msgid "created botuser %{user}"
msgstr ""
-#: lib/rbot/core/auth.rb:523
+#: lib/rbot/core/auth.rb:522
msgid " (queued for destruction)"
msgstr ""
-#: lib/rbot/core/auth.rb:526
+#: lib/rbot/core/auth.rb:525
msgid "I have no botusers other than the default ones"
msgstr ""
-#: lib/rbot/core/auth.rb:527
+#: lib/rbot/core/auth.rb:526
msgid "botuser: %{list}"
msgid_plural "botusers: %{list}"
msgstr[0] ""
-#: lib/rbot/core/auth.rb:534
+#: lib/rbot/core/auth.rb:533
msgid "You can't destroy %{user}"
msgstr ""
-#: lib/rbot/core/auth.rb:545
+#: lib/rbot/core/auth.rb:544
msgid "no such botuser %{user}"
msgstr ""
-#: lib/rbot/core/auth.rb:551
+#: lib/rbot/core/auth.rb:550
msgid "%{user} removed from the destruction queue"
msgstr ""
-#: lib/rbot/core/auth.rb:553
+#: lib/rbot/core/auth.rb:552
msgid "%{user} was not queued for destruction"
msgstr ""
-#: lib/rbot/core/auth.rb:560
+#: lib/rbot/core/auth.rb:559
msgid ""
"%{user} already queued for destruction, use %{highlight}user destroy %{user} "
"<password>%{highlight} to destroy it"
msgstr ""
-#: lib/rbot/core/auth.rb:563
+#: lib/rbot/core/auth.rb:562
msgid ""
"%{user} queued for destruction, use %{highlight}user destroy %{user} "
"<password>%{highlight} to destroy it"
msgstr ""
-#: lib/rbot/core/auth.rb:567
+#: lib/rbot/core/auth.rb:566
msgid "%{user} is not queued for destruction yet"
msgstr ""
-#: lib/rbot/core/auth.rb:569
+#: lib/rbot/core/auth.rb:568
msgid "wrong password for %{user}"
msgstr ""
-#: lib/rbot/core/auth.rb:578 lib/rbot/core/auth.rb:618
+#: lib/rbot/core/auth.rb:577 lib/rbot/core/auth.rb:617
msgid "failed: %{exception}"
msgstr ""
-#: lib/rbot/core/auth.rb:580
+#: lib/rbot/core/auth.rb:579
msgid "botuser %{user} destroyed"
msgstr ""
-#: lib/rbot/core/auth.rb:588
+#: lib/rbot/core/auth.rb:587
msgid "please don't touch the default users"
msgstr ""
-#: lib/rbot/core/auth.rb:597
+#: lib/rbot/core/auth.rb:596
msgid "no such botuser %{source}"
msgstr ""
-#: lib/rbot/core/auth.rb:599
+#: lib/rbot/core/auth.rb:598
msgid "botuser %{dest} exists already"
msgstr ""
-#: lib/rbot/core/auth.rb:620
+#: lib/rbot/core/auth.rb:619
msgid "botuser %{source} copied to %{dest}"
msgstr ""
-#: lib/rbot/core/auth.rb:622
+#: lib/rbot/core/auth.rb:621
msgid "botuser %{source} renamed to %{dest}"
msgstr ""
-#: lib/rbot/core/auth.rb:641
+#: lib/rbot/core/auth.rb:640
msgid "selecting data to export ..."
msgstr ""
-#: lib/rbot/core/auth.rb:657
+#: lib/rbot/core/auth.rb:656
msgid "preparing data for export ..."
msgstr ""
-#: lib/rbot/core/auth.rb:680
+#: lib/rbot/core/auth.rb:679
msgid "failed to prepare data: %{exception}"
msgstr ""
-#: lib/rbot/core/auth.rb:685
+#: lib/rbot/core/auth.rb:684
msgid "exporting to %{file} ..."
msgstr ""
-#: lib/rbot/core/auth.rb:692
+#: lib/rbot/core/auth.rb:691
msgid "failed to export users: %{exception}"
msgstr ""
-#: lib/rbot/core/auth.rb:696 lib/rbot/core/auth.rb:774
+#: lib/rbot/core/auth.rb:695 lib/rbot/core/auth.rb:773
msgid "done"
msgstr ""
-#: lib/rbot/core/auth.rb:713
+#: lib/rbot/core/auth.rb:712
msgid "reading %{file} ..."
msgstr ""
-#: lib/rbot/core/auth.rb:717
+#: lib/rbot/core/auth.rb:716
msgid "failed to import from: %{exception}"
msgstr ""
-#: lib/rbot/core/auth.rb:724
+#: lib/rbot/core/auth.rb:723
msgid "selecting data to import ..."
msgstr ""
-#: lib/rbot/core/auth.rb:734
+#: lib/rbot/core/auth.rb:733
msgid "parsing data from import ..."
msgstr ""
-#: lib/rbot/core/auth.rb:754
+#: lib/rbot/core/auth.rb:753
msgid "failed to parse data: %{exception}"
msgstr ""
@@ -763,3 +747,181 @@ msgid ""
"%{name}: quit, restart, join, part, hide, save, nick, say, action, topic, "
"quiet, talk,version, ping, mode"
msgstr ""
+
+#: data/rbot/plugins/dictclient.rb:52
+msgid "Hostname or hostname:port of the DICT server used to lookup words"
+msgstr "DICT サーバーの hostname か hostname:port です"
+
+#: data/rbot/plugins/dictclient.rb:55
+msgid ""
+"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"
+msgstr ""
+
+#: data/rbot/plugins/dictclient.rb:58
+msgid "Each definition is truncated to this length"
+msgstr ""
+
+#: data/rbot/plugins/dictclient.rb:61
+msgid "Format of headwords; <word> will be replaced with the actual word"
+msgstr ""
+
+#: data/rbot/plugins/dictclient.rb:64
+msgid ""
+"Format of database names; <database> will be replaced with the database name"
+msgstr ""
+
+#: data/rbot/plugins/dictclient.rb:67
+msgid ""
+"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"
+msgstr ""
+
+#: data/rbot/plugins/dictclient.rb:70
+msgid ""
+"Format of match results. <matches> will be replaced with the formatted "
+"headwords, <database> with the formatted database name"
+msgstr ""
+
+#: data/rbot/plugins/dictclient.rb:90
+msgid ""
+"An error occured connecting to the DICT server. Check the dictclient.server "
+"configuration or retry later"
+msgstr ""
+
+#: data/rbot/plugins/dictclient.rb:92
+msgid "A protocol error occured"
+msgstr ""
+
+#: data/rbot/plugins/dictclient.rb:94
+msgid "An error occured"
+msgstr ""
+
+#: data/rbot/plugins/dictclient.rb:116
+msgid ""
+"Many definitions for %{phrase} were found in %{databases}. Use 'define "
+"<phrase> from <database> to view a definition."
+msgstr ""
+
+#: data/rbot/plugins/dictclient.rb:133
+msgid "No definition for %{phrase} found from %{database}."
+msgstr ""
+
+#: data/rbot/plugins/dictclient.rb:154
+msgid "Nothing matched %{query} from %{database} using %{strategy}"
+msgstr ""
+
+#: data/rbot/plugins/dictclient.rb:164
+msgid "Databases: %{list}"
+msgstr ""
+
+#: data/rbot/plugins/dictclient.rb:172
+msgid "Strategies: %{list}"
+msgstr ""
+
+#: data/rbot/plugins/dictclient.rb:179
+msgid ""
+"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"
+msgstr ""
+
+#: data/rbot/plugins/games/shiritori.rb:203
+msgid "%{current_player}, it's your turn. %{previous_word} -> %{current_word}"
+msgstr "%{current_player}様の番です。%{previous_word} -> %{current_word}"
+
+#: data/rbot/plugins/games/shiritori.rb:207
+msgid "No one has given the first word yet. Say the first word to start."
+msgstr "しりとりの始めの言葉を言ってください"
+
+#: data/rbot/plugins/games/shiritori.rb:209
+msgid ""
+"Poor %{current_player} is playing alone! Anyone care to join? %"
+"{previous_word} -> %{current_word}"
+msgstr
+"%{current_player}様は一人で寂しいでしょう。他の人しりとりしませんか?"
+"{previous_word} -> %{current_word}"
+
+#: data/rbot/plugins/games/shiritori.rb:240
+msgid "%{player} took too long and is out of the game. Try again next game!"
+msgstr ""
+"残念ですが%{player}様はタイムアウトで負けです。今度のゲームがんばってね!"
+
+#: data/rbot/plugins/games/shiritori.rb:245
+msgid "%{player} is the last remaining player and the winner! Congratulations!"
+msgstr "%{player}様は勝者です!おめでとうございます!"
+
+#: data/rbot/plugins/games/shiritori.rb:253
+msgid "%{player} took too long and skipped the turn."
+msgstr "%{player}様はタイムアウトで、番を飛びました。"
+
+#: data/rbot/plugins/games/shiritori.rb:281
+msgid "%{player} has given the first word: %{word}"
+msgstr "%{player}様は始めの言葉を決めました:%{word}"
+
+#: data/rbot/plugins/games/shiritori.rb:287
+msgid "Welcome to shiritori, %{speaker}."
+msgstr "しりとりへようこそ、%{speaker}様"
+
+#: data/rbot/plugins/games/shiritori.rb:292
+msgid "The word %{used_word} has been used. Retry from %{word}"
+msgstr ""
+"「%{used_word}」はもう使った言葉なのでダメです。もう一度「%{word}」から続いて"
+"ください"
+
+#: data/rbot/plugins/games/shiritori.rb:297
+msgid ""
+"It's impossible to continue the chain from %{word}. The game has ended. "
+"Thanks a lot, %{player}! :("
+msgstr ""
+"「%{word}」からしりとりが続けられないので、ゲームが終わってしまいました。"
+
+#: data/rbot/plugins/games/shiritori.rb:301
+msgid ""
+"It's impossible to continue the chain from %{bad_word}. Retry from %{word}"
+msgstr ""
+"「%{bad_word}」からしりとりが続けられないのでダメです。もう一度「%{word}」か"
+"ら続いてください"
+
+#: data/rbot/plugins/games/shiritori.rb:306
+msgid ""
+"It's impossible to continue the chain from %{word}. Start with another word."
+msgstr "「%{word}」ではしりごりを始められないのです。他の言葉で始めてください"
+
+#: data/rbot/plugins/games/shiritori.rb:327
+msgid ""
+"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."
+msgstr ""
+"しりとりのゲームです。shiritori <ruleset> => ルールセットを使ってゲームを始め"
+"ます。使えるルールセットは%{rulesets}です。shiritori stop => 今のゲームを止め"
+"ます。"
+
+#: data/rbot/plugins/games/shiritori.rb:398
+msgid "Already playing shiritori here"
+msgstr "今しりとりを遊んでいます"
+
+#: data/rbot/plugins/games/shiritori.rb:409
+msgid "Shiritori has started. Please say the first word"
+msgstr "しりとりが始まりました。始めの言葉を言ってください"
+
+#: data/rbot/plugins/games/shiritori.rb:411
+msgid "couldn't start %{ruleset} shiritori: %{error}"
+msgstr "%{ruleset}のしりとりを始められませんでした。理由は: %{error}"
+
+#: data/rbot/plugins/games/shiritori.rb:415
+msgid "There is no ruleset named %{ruleset}"
+msgstr "「%{ruleset}」というルールスは知りません"
+
+#: data/rbot/plugins/games/shiritori.rb:433
+msgid "Shiritori has stopped. Hope you had fun!"
+msgstr "しりとりのゲームが止まりました"
+
+#: data/rbot/plugins/games/shiritori.rb:436
+msgid "No game to stop here, because no game is being played."
+msgstr "しりとりのゲームをしていません"
diff --git a/po/rbot.pot b/po/rbot.pot
index e6ff3180..900ce303 100644
--- a/po/rbot.pot
+++ b/po/rbot.pot
@@ -7,7 +7,7 @@
msgid ""
msgstr ""
"Project-Id-Version: rbot\n"
-"POT-Creation-Date: 2007-07-09 03:58-0400\n"
+"POT-Creation-Date: 2007-07-10 00:57-0400\n"
"PO-Revision-Date: 2007-07-09 01:24-0400\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -16,10 +16,6 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-#: lib/rbot/load-gettext.rb:32
-msgid "using ruby-gettext"
-msgstr ""
-
#: lib/rbot/registry.rb:19
msgid ""
"upgrading old-style (rbot 0.9.5 or earlier) plugin registry to new format"
@@ -39,10 +35,6 @@ msgstr ""
msgid "incorrect usage, ask for help using '%{command}'"
msgstr ""
-#: lib/rbot/plugins.rb:400
-msgid "Botmodule loading path cleared"
-msgstr ""
-
#: lib/rbot/plugins.rb:477
msgid "%{count} core module loaded"
msgid_plural "%{count} core modules loaded"
@@ -145,16 +137,8 @@ msgstr ""
msgid "%{user}, you don't have '%{command}' permissions here"
msgstr ""
-#: lib/rbot/config.rb:259
-msgid "Not writing conf.yaml (unchanged)"
-msgstr ""
-
-#: lib/rbot/config.rb:263
-msgid "Writing new conf.yaml ..."
-msgstr ""
-
-#: lib/rbot/config.rb:271
-msgid "Officializing conf.yaml ..."
+#: lib/rbot/config.rb:172
+msgid "%{desc} [valid values are: %{values}]"
msgstr ""
#: lib/rbot/config.rb:304
@@ -467,133 +451,133 @@ msgstr ""
msgid "are you nuts, creating a botuser with a publicly known password?"
msgstr ""
-#: lib/rbot/core/auth.rb:511
+#: lib/rbot/core/auth.rb:510
msgid "failed to create %{user}: %{exception}"
msgstr ""
-#: lib/rbot/core/auth.rb:515
+#: lib/rbot/core/auth.rb:514
msgid "created botuser %{user}"
msgstr ""
-#: lib/rbot/core/auth.rb:523
+#: lib/rbot/core/auth.rb:522
msgid " (queued for destruction)"
msgstr ""
-#: lib/rbot/core/auth.rb:526
+#: lib/rbot/core/auth.rb:525
msgid "I have no botusers other than the default ones"
msgstr ""
-#: lib/rbot/core/auth.rb:527
+#: lib/rbot/core/auth.rb:526
msgid "botuser: %{list}"
msgid_plural "botusers: %{list}"
msgstr[0] ""
msgstr[1] ""
-#: lib/rbot/core/auth.rb:534
+#: lib/rbot/core/auth.rb:533
msgid "You can't destroy %{user}"
msgstr ""
-#: lib/rbot/core/auth.rb:545
+#: lib/rbot/core/auth.rb:544
msgid "no such botuser %{user}"
msgstr ""
-#: lib/rbot/core/auth.rb:551
+#: lib/rbot/core/auth.rb:550
msgid "%{user} removed from the destruction queue"
msgstr ""
-#: lib/rbot/core/auth.rb:553
+#: lib/rbot/core/auth.rb:552
msgid "%{user} was not queued for destruction"
msgstr ""
-#: lib/rbot/core/auth.rb:560
+#: lib/rbot/core/auth.rb:559
msgid ""
"%{user} already queued for destruction, use %{highlight}user destroy %{user} "
"<password>%{highlight} to destroy it"
msgstr ""
-#: lib/rbot/core/auth.rb:563
+#: lib/rbot/core/auth.rb:562
msgid ""
"%{user} queued for destruction, use %{highlight}user destroy %{user} "
"<password>%{highlight} to destroy it"
msgstr ""
-#: lib/rbot/core/auth.rb:567
+#: lib/rbot/core/auth.rb:566
msgid "%{user} is not queued for destruction yet"
msgstr ""
-#: lib/rbot/core/auth.rb:569
+#: lib/rbot/core/auth.rb:568
msgid "wrong password for %{user}"
msgstr ""
-#: lib/rbot/core/auth.rb:578 lib/rbot/core/auth.rb:618
+#: lib/rbot/core/auth.rb:577 lib/rbot/core/auth.rb:617
msgid "failed: %{exception}"
msgstr ""
-#: lib/rbot/core/auth.rb:580
+#: lib/rbot/core/auth.rb:579
msgid "botuser %{user} destroyed"
msgstr ""
-#: lib/rbot/core/auth.rb:588
+#: lib/rbot/core/auth.rb:587
msgid "please don't touch the default users"
msgstr ""
-#: lib/rbot/core/auth.rb:597
+#: lib/rbot/core/auth.rb:596
msgid "no such botuser %{source}"
msgstr ""
-#: lib/rbot/core/auth.rb:599
+#: lib/rbot/core/auth.rb:598
msgid "botuser %{dest} exists already"
msgstr ""
-#: lib/rbot/core/auth.rb:620
+#: lib/rbot/core/auth.rb:619
msgid "botuser %{source} copied to %{dest}"
msgstr ""
-#: lib/rbot/core/auth.rb:622
+#: lib/rbot/core/auth.rb:621
msgid "botuser %{source} renamed to %{dest}"
msgstr ""
-#: lib/rbot/core/auth.rb:641
+#: lib/rbot/core/auth.rb:640
msgid "selecting data to export ..."
msgstr ""
-#: lib/rbot/core/auth.rb:657
+#: lib/rbot/core/auth.rb:656
msgid "preparing data for export ..."
msgstr ""
-#: lib/rbot/core/auth.rb:680
+#: lib/rbot/core/auth.rb:679
msgid "failed to prepare data: %{exception}"
msgstr ""
-#: lib/rbot/core/auth.rb:685
+#: lib/rbot/core/auth.rb:684
msgid "exporting to %{file} ..."
msgstr ""
-#: lib/rbot/core/auth.rb:692
+#: lib/rbot/core/auth.rb:691
msgid "failed to export users: %{exception}"
msgstr ""
-#: lib/rbot/core/auth.rb:696 lib/rbot/core/auth.rb:774
+#: lib/rbot/core/auth.rb:695 lib/rbot/core/auth.rb:773
msgid "done"
msgstr ""
-#: lib/rbot/core/auth.rb:713
+#: lib/rbot/core/auth.rb:712
msgid "reading %{file} ..."
msgstr ""
-#: lib/rbot/core/auth.rb:717
+#: lib/rbot/core/auth.rb:716
msgid "failed to import from: %{exception}"
msgstr ""
-#: lib/rbot/core/auth.rb:724
+#: lib/rbot/core/auth.rb:723
msgid "selecting data to import ..."
msgstr ""
-#: lib/rbot/core/auth.rb:734
+#: lib/rbot/core/auth.rb:733
msgid "parsing data from import ..."
msgstr ""
-#: lib/rbot/core/auth.rb:754
+#: lib/rbot/core/auth.rb:753
msgid "failed to parse data: %{exception}"
msgstr ""
@@ -773,3 +757,170 @@ msgid ""
"%{name}: quit, restart, join, part, hide, save, nick, say, action, topic, "
"quiet, talk,version, ping, mode"
msgstr ""
+
+#: data/rbot/plugins/dictclient.rb:52
+msgid "Hostname or hostname:port of the DICT server used to lookup words"
+msgstr ""
+
+#: data/rbot/plugins/dictclient.rb:55
+msgid ""
+"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"
+msgstr ""
+
+#: data/rbot/plugins/dictclient.rb:58
+msgid "Each definition is truncated to this length"
+msgstr ""
+
+#: data/rbot/plugins/dictclient.rb:61
+msgid "Format of headwords; <word> will be replaced with the actual word"
+msgstr ""
+
+#: data/rbot/plugins/dictclient.rb:64
+msgid ""
+"Format of database names; <database> will be replaced with the database name"
+msgstr ""
+
+#: data/rbot/plugins/dictclient.rb:67
+msgid ""
+"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"
+msgstr ""
+
+#: data/rbot/plugins/dictclient.rb:70
+msgid ""
+"Format of match results. <matches> will be replaced with the formatted "
+"headwords, <database> with the formatted database name"
+msgstr ""
+
+#: data/rbot/plugins/dictclient.rb:90
+msgid ""
+"An error occured connecting to the DICT server. Check the dictclient.server "
+"configuration or retry later"
+msgstr ""
+
+#: data/rbot/plugins/dictclient.rb:92
+msgid "A protocol error occured"
+msgstr ""
+
+#: data/rbot/plugins/dictclient.rb:94
+msgid "An error occured"
+msgstr ""
+
+#: data/rbot/plugins/dictclient.rb:116
+msgid ""
+"Many definitions for %{phrase} were found in %{databases}. Use 'define "
+"<phrase> from <database> to view a definition."
+msgstr ""
+
+#: data/rbot/plugins/dictclient.rb:133
+msgid "No definition for %{phrase} found from %{database}."
+msgstr ""
+
+#: data/rbot/plugins/dictclient.rb:154
+msgid "Nothing matched %{query} from %{database} using %{strategy}"
+msgstr ""
+
+#: data/rbot/plugins/dictclient.rb:164
+msgid "Databases: %{list}"
+msgstr ""
+
+#: data/rbot/plugins/dictclient.rb:172
+msgid "Strategies: %{list}"
+msgstr ""
+
+#: data/rbot/plugins/dictclient.rb:179
+msgid ""
+"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"
+msgstr ""
+
+#: data/rbot/plugins/games/shiritori.rb:203
+msgid "%{current_player}, it's your turn. %{previous_word} -> %{current_word}"
+msgstr ""
+
+#: data/rbot/plugins/games/shiritori.rb:207
+msgid "No one has given the first word yet. Say the first word to start."
+msgstr ""
+
+#: data/rbot/plugins/games/shiritori.rb:209
+msgid ""
+"Poor %{current_player} is playing alone! Anyone care to join? %"
+"{previous_word} -> %{current_word}"
+msgstr ""
+
+#: data/rbot/plugins/games/shiritori.rb:240
+msgid "%{player} took too long and is out of the game. Try again next game!"
+msgstr ""
+
+#: data/rbot/plugins/games/shiritori.rb:245
+msgid "%{player} is the last remaining player and the winner! Congratulations!"
+msgstr ""
+
+#: data/rbot/plugins/games/shiritori.rb:253
+msgid "%{player} took too long and skipped the turn."
+msgstr ""
+
+#: data/rbot/plugins/games/shiritori.rb:281
+msgid "%{player} has given the first word: %{word}"
+msgstr ""
+
+#: data/rbot/plugins/games/shiritori.rb:287
+msgid "Welcome to shiritori, %{speaker}."
+msgstr ""
+
+#: data/rbot/plugins/games/shiritori.rb:292
+msgid "The word %{used_word} has been used. Retry from %{word}"
+msgstr ""
+
+#: data/rbot/plugins/games/shiritori.rb:297
+msgid ""
+"It's impossible to continue the chain from %{word}. The game has ended. "
+"Thanks a lot, %{player}! :("
+msgstr ""
+
+#: data/rbot/plugins/games/shiritori.rb:301
+msgid ""
+"It's impossible to continue the chain from %{bad_word}. Retry from %{word}"
+msgstr ""
+
+#: data/rbot/plugins/games/shiritori.rb:306
+msgid ""
+"It's impossible to continue the chain from %{word}. Start with another word."
+msgstr ""
+
+#: data/rbot/plugins/games/shiritori.rb:327
+msgid ""
+"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."
+msgstr ""
+
+#: data/rbot/plugins/games/shiritori.rb:398
+msgid "Already playing shiritori here"
+msgstr ""
+
+#: data/rbot/plugins/games/shiritori.rb:409
+msgid "Shiritori has started. Please say the first word"
+msgstr ""
+
+#: data/rbot/plugins/games/shiritori.rb:411
+msgid "couldn't start %{ruleset} shiritori: %{error}"
+msgstr ""
+
+#: data/rbot/plugins/games/shiritori.rb:415
+msgid "There is no ruleset named %{ruleset}"
+msgstr ""
+
+#: data/rbot/plugins/games/shiritori.rb:433
+msgid "Shiritori has stopped. Hope you had fun!"
+msgstr ""
+
+#: data/rbot/plugins/games/shiritori.rb:436
+msgid "No game to stop here, because no game is being played."
+msgstr ""
diff --git a/po/zh_CN/rbot.po b/po/zh_CN/rbot.po
index a22e9ed1..c9f907b8 100644
--- a/po/zh_CN/rbot.po
+++ b/po/zh_CN/rbot.po
@@ -6,7 +6,7 @@
msgid ""
msgstr ""
"Project-Id-Version: rbot\n"
-"POT-Creation-Date: 2007-07-09 03:58-0400\n"
+"POT-Creation-Date: 2007-07-10 00:57-0400\n"
"PO-Revision-Date: 2007-07-09 01:39-0400\n"
"Last-Translator: Yaohan Chen <yaohan.chen@gmail.com>\n"
"Language-Team: Chinese\n"
@@ -15,10 +15,6 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-#: lib/rbot/load-gettext.rb:32
-msgid "using ruby-gettext"
-msgstr ""
-
#: lib/rbot/registry.rb:19
msgid ""
"upgrading old-style (rbot 0.9.5 or earlier) plugin registry to new format"
@@ -38,10 +34,6 @@ msgstr ""
msgid "incorrect usage, ask for help using '%{command}'"
msgstr ""
-#: lib/rbot/plugins.rb:400
-msgid "Botmodule loading path cleared"
-msgstr ""
-
#: lib/rbot/plugins.rb:477
msgid "%{count} core module loaded"
msgid_plural "%{count} core modules loaded"
@@ -144,16 +136,8 @@ msgstr ""
msgid "%{user}, you don't have '%{command}' permissions here"
msgstr ""
-#: lib/rbot/config.rb:259
-msgid "Not writing conf.yaml (unchanged)"
-msgstr ""
-
-#: lib/rbot/config.rb:263
-msgid "Writing new conf.yaml ..."
-msgstr ""
-
-#: lib/rbot/config.rb:271
-msgid "Officializing conf.yaml ..."
+#: lib/rbot/config.rb:172
+msgid "%{desc} [valid values are: %{values}]"
msgstr ""
#: lib/rbot/config.rb:304
@@ -466,133 +450,133 @@ msgstr ""
msgid "are you nuts, creating a botuser with a publicly known password?"
msgstr ""
-#: lib/rbot/core/auth.rb:511
+#: lib/rbot/core/auth.rb:510
msgid "failed to create %{user}: %{exception}"
msgstr ""
-#: lib/rbot/core/auth.rb:515
+#: lib/rbot/core/auth.rb:514
msgid "created botuser %{user}"
msgstr ""
-#: lib/rbot/core/auth.rb:523
+#: lib/rbot/core/auth.rb:522
msgid " (queued for destruction)"
msgstr ""
-#: lib/rbot/core/auth.rb:526
+#: lib/rbot/core/auth.rb:525
msgid "I have no botusers other than the default ones"
msgstr ""
-#: lib/rbot/core/auth.rb:527
+#: lib/rbot/core/auth.rb:526
msgid "botuser: %{list}"
msgid_plural "botusers: %{list}"
msgstr[0] ""
msgstr[1] ""
-#: lib/rbot/core/auth.rb:534
+#: lib/rbot/core/auth.rb:533
msgid "You can't destroy %{user}"
msgstr ""
-#: lib/rbot/core/auth.rb:545
+#: lib/rbot/core/auth.rb:544
msgid "no such botuser %{user}"
msgstr ""
-#: lib/rbot/core/auth.rb:551
+#: lib/rbot/core/auth.rb:550
msgid "%{user} removed from the destruction queue"
msgstr ""
-#: lib/rbot/core/auth.rb:553
+#: lib/rbot/core/auth.rb:552
msgid "%{user} was not queued for destruction"
msgstr ""
-#: lib/rbot/core/auth.rb:560
+#: lib/rbot/core/auth.rb:559
msgid ""
"%{user} already queued for destruction, use %{highlight}user destroy %{user} "
"<password>%{highlight} to destroy it"
msgstr ""
-#: lib/rbot/core/auth.rb:563
+#: lib/rbot/core/auth.rb:562
msgid ""
"%{user} queued for destruction, use %{highlight}user destroy %{user} "
"<password>%{highlight} to destroy it"
msgstr ""
-#: lib/rbot/core/auth.rb:567
+#: lib/rbot/core/auth.rb:566
msgid "%{user} is not queued for destruction yet"
msgstr ""
-#: lib/rbot/core/auth.rb:569
+#: lib/rbot/core/auth.rb:568
msgid "wrong password for %{user}"
msgstr ""
-#: lib/rbot/core/auth.rb:578 lib/rbot/core/auth.rb:618
+#: lib/rbot/core/auth.rb:577 lib/rbot/core/auth.rb:617
msgid "failed: %{exception}"
msgstr ""
-#: lib/rbot/core/auth.rb:580
+#: lib/rbot/core/auth.rb:579
msgid "botuser %{user} destroyed"
msgstr ""
-#: lib/rbot/core/auth.rb:588
+#: lib/rbot/core/auth.rb:587
msgid "please don't touch the default users"
msgstr ""
-#: lib/rbot/core/auth.rb:597
+#: lib/rbot/core/auth.rb:596
msgid "no such botuser %{source}"
msgstr ""
-#: lib/rbot/core/auth.rb:599
+#: lib/rbot/core/auth.rb:598
msgid "botuser %{dest} exists already"
msgstr ""
-#: lib/rbot/core/auth.rb:620
+#: lib/rbot/core/auth.rb:619
msgid "botuser %{source} copied to %{dest}"
msgstr ""
-#: lib/rbot/core/auth.rb:622
+#: lib/rbot/core/auth.rb:621
msgid "botuser %{source} renamed to %{dest}"
msgstr ""
-#: lib/rbot/core/auth.rb:641
+#: lib/rbot/core/auth.rb:640
msgid "selecting data to export ..."
msgstr ""
-#: lib/rbot/core/auth.rb:657
+#: lib/rbot/core/auth.rb:656
msgid "preparing data for export ..."
msgstr ""
-#: lib/rbot/core/auth.rb:680
+#: lib/rbot/core/auth.rb:679
msgid "failed to prepare data: %{exception}"
msgstr ""
-#: lib/rbot/core/auth.rb:685
+#: lib/rbot/core/auth.rb:684
msgid "exporting to %{file} ..."
msgstr ""
-#: lib/rbot/core/auth.rb:692
+#: lib/rbot/core/auth.rb:691
msgid "failed to export users: %{exception}"
msgstr ""
-#: lib/rbot/core/auth.rb:696 lib/rbot/core/auth.rb:774
+#: lib/rbot/core/auth.rb:695 lib/rbot/core/auth.rb:773
msgid "done"
msgstr ""
-#: lib/rbot/core/auth.rb:713
+#: lib/rbot/core/auth.rb:712
msgid "reading %{file} ..."
msgstr ""
-#: lib/rbot/core/auth.rb:717
+#: lib/rbot/core/auth.rb:716
msgid "failed to import from: %{exception}"
msgstr ""
-#: lib/rbot/core/auth.rb:724
+#: lib/rbot/core/auth.rb:723
msgid "selecting data to import ..."
msgstr ""
-#: lib/rbot/core/auth.rb:734
+#: lib/rbot/core/auth.rb:733
msgid "parsing data from import ..."
msgstr ""
-#: lib/rbot/core/auth.rb:754
+#: lib/rbot/core/auth.rb:753
msgid "failed to parse data: %{exception}"
msgstr ""
@@ -772,3 +756,170 @@ msgid ""
"%{name}: quit, restart, join, part, hide, save, nick, say, action, topic, "
"quiet, talk,version, ping, mode"
msgstr ""
+
+#: data/rbot/plugins/dictclient.rb:52
+msgid "Hostname or hostname:port of the DICT server used to lookup words"
+msgstr ""
+
+#: data/rbot/plugins/dictclient.rb:55
+msgid ""
+"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"
+msgstr ""
+
+#: data/rbot/plugins/dictclient.rb:58
+msgid "Each definition is truncated to this length"
+msgstr ""
+
+#: data/rbot/plugins/dictclient.rb:61
+msgid "Format of headwords; <word> will be replaced with the actual word"
+msgstr ""
+
+#: data/rbot/plugins/dictclient.rb:64
+msgid ""
+"Format of database names; <database> will be replaced with the database name"
+msgstr ""
+
+#: data/rbot/plugins/dictclient.rb:67
+msgid ""
+"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"
+msgstr ""
+
+#: data/rbot/plugins/dictclient.rb:70
+msgid ""
+"Format of match results. <matches> will be replaced with the formatted "
+"headwords, <database> with the formatted database name"
+msgstr ""
+
+#: data/rbot/plugins/dictclient.rb:90
+msgid ""
+"An error occured connecting to the DICT server. Check the dictclient.server "
+"configuration or retry later"
+msgstr ""
+
+#: data/rbot/plugins/dictclient.rb:92
+msgid "A protocol error occured"
+msgstr ""
+
+#: data/rbot/plugins/dictclient.rb:94
+msgid "An error occured"
+msgstr ""
+
+#: data/rbot/plugins/dictclient.rb:116
+msgid ""
+"Many definitions for %{phrase} were found in %{databases}. Use 'define "
+"<phrase> from <database> to view a definition."
+msgstr ""
+
+#: data/rbot/plugins/dictclient.rb:133
+msgid "No definition for %{phrase} found from %{database}."
+msgstr ""
+
+#: data/rbot/plugins/dictclient.rb:154
+msgid "Nothing matched %{query} from %{database} using %{strategy}"
+msgstr ""
+
+#: data/rbot/plugins/dictclient.rb:164
+msgid "Databases: %{list}"
+msgstr ""
+
+#: data/rbot/plugins/dictclient.rb:172
+msgid "Strategies: %{list}"
+msgstr ""
+
+#: data/rbot/plugins/dictclient.rb:179
+msgid ""
+"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"
+msgstr ""
+
+#: data/rbot/plugins/games/shiritori.rb:203
+msgid "%{current_player}, it's your turn. %{previous_word} -> %{current_word}"
+msgstr ""
+
+#: data/rbot/plugins/games/shiritori.rb:207
+msgid "No one has given the first word yet. Say the first word to start."
+msgstr ""
+
+#: data/rbot/plugins/games/shiritori.rb:209
+msgid ""
+"Poor %{current_player} is playing alone! Anyone care to join? %"
+"{previous_word} -> %{current_word}"
+msgstr ""
+
+#: data/rbot/plugins/games/shiritori.rb:240
+msgid "%{player} took too long and is out of the game. Try again next game!"
+msgstr ""
+
+#: data/rbot/plugins/games/shiritori.rb:245
+msgid "%{player} is the last remaining player and the winner! Congratulations!"
+msgstr ""
+
+#: data/rbot/plugins/games/shiritori.rb:253
+msgid "%{player} took too long and skipped the turn."
+msgstr ""
+
+#: data/rbot/plugins/games/shiritori.rb:281
+msgid "%{player} has given the first word: %{word}"
+msgstr ""
+
+#: data/rbot/plugins/games/shiritori.rb:287
+msgid "Welcome to shiritori, %{speaker}."
+msgstr ""
+
+#: data/rbot/plugins/games/shiritori.rb:292
+msgid "The word %{used_word} has been used. Retry from %{word}"
+msgstr ""
+
+#: data/rbot/plugins/games/shiritori.rb:297
+msgid ""
+"It's impossible to continue the chain from %{word}. The game has ended. "
+"Thanks a lot, %{player}! :("
+msgstr ""
+
+#: data/rbot/plugins/games/shiritori.rb:301
+msgid ""
+"It's impossible to continue the chain from %{bad_word}. Retry from %{word}"
+msgstr ""
+
+#: data/rbot/plugins/games/shiritori.rb:306
+msgid ""
+"It's impossible to continue the chain from %{word}. Start with another word."
+msgstr ""
+
+#: data/rbot/plugins/games/shiritori.rb:327
+msgid ""
+"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."
+msgstr ""
+
+#: data/rbot/plugins/games/shiritori.rb:398
+msgid "Already playing shiritori here"
+msgstr ""
+
+#: data/rbot/plugins/games/shiritori.rb:409
+msgid "Shiritori has started. Please say the first word"
+msgstr ""
+
+#: data/rbot/plugins/games/shiritori.rb:411
+msgid "couldn't start %{ruleset} shiritori: %{error}"
+msgstr ""
+
+#: data/rbot/plugins/games/shiritori.rb:415
+msgid "There is no ruleset named %{ruleset}"
+msgstr ""
+
+#: data/rbot/plugins/games/shiritori.rb:433
+msgid "Shiritori has stopped. Hope you had fun!"
+msgstr ""
+
+#: data/rbot/plugins/games/shiritori.rb:436
+msgid "No game to stop here, because no game is being played."
+msgstr ""