The unified diff between revisions [83b5270b..] and [5587f68e..] is displayed below. It can also be downloaded as a raw diff.
#
#
# add_file "contrib/usher.cc"
# content [8cb23c92752ea67f7858372494985d2d6204afaf]
#
# add_file "po/ja.po"
# content [a3ec19a708293db5a8a1247f2c1dafaf367e6827]
#
# add_file "sqlite/analyze.c"
# content [43a2d91242bdd71b6c299378f6b11e896ee5e43d]
#
# add_file "sqlite/complete.c"
# content [641713ef01657f74037840abb9c0a4552c07b0d0]
#
# add_file "sqlite/vdbefifo.c"
# content [9efb94c8c3f4c979ebd0028219483f88e57584f5]
#
# add_file "tests/t_restriction_with_exclude_iprint.at"
# content [4a5f81447a9aef3715473d174138a2ad610d7d00]
#
# patch "AUTHORS"
# from [87106004cb5e54910ebdd29989f7c83baf707bd1]
# to [f735fbbf50cbfa0258a4fc76d70b4781fd06c60a]
#
# patch "ChangeLog"
# from [a8f0f6c5ccc10b4f16e1776741a2ed08326fdd34]
# to [0f79b1bab4944e0d171410d02195b6e0aa344b39]
#
# patch "Makefile.am"
# from [7a233d22f09d1b0d6eb2f010fdbb0cf97461af6c]
# to [f64733542ba308ba4047d2e7cfc8a18f95d0eb4c]
#
# patch "database.cc"
# from [83c0e4fe4b672da030bc50966c118ac0c2c98017]
# to [4a6486b38a02fec9b281ae4a665f209bb9f3440e]
#
# patch "netcmd.cc"
# from [75a0d51313f112ec54f83d29eca1d1077d2547bb]
# to [38e6b3a85549ed7c7e5f109623d9ea1b802fc340]
#
# patch "netcmd.hh"
# from [8bea78d5e3429c65cc158c90450a7473528ceb07]
# to [87007edfa58287e177df2f3246b28eaa5c5f6146]
#
# patch "netsync.cc"
# from [6e37489151e0809548e293eb4d0495b8921cebfe]
# to [5d53bf85b20e88af400ccea87f1233eefdfd5daa]
#
# patch "po/LINGUAS"
# from [02e7af15c4d5ffa79b9f5cb01a42e5c264c050ab]
# to [a82820f5b13863f931834a13a478efa99a9fb19d]
#
# patch "sanity.hh"
# from [4b60e04581e65bb1426c17f8807b37ec0e7775d8]
# to [2c8cee0f678668a356de29a5c61fb3eed8c87b74]
#
# patch "schema_migration.cc"
# from [38c6a6d8a82751cc80ff017b0a7f863d0b50eac6]
# to [282f8216d2face69303858b84939b3f01ffdd6c6]
#
# patch "sqlite/alter.c"
# from [03041f2464e22532601254f87cb49997fa21dcdf]
# to [26d755f2143719dd3f5b8aaf6cbe3c7f95332528]
#
# patch "sqlite/attach.c"
# from [3615dbe960cbee4aa5ea300b8a213dad36527b0f]
# to [4b21689700a72ae281fa85dbaff06b2a62bd49ee]
#
# patch "sqlite/auth.c"
# from [18c5a0befe20f3a58a41e3ddd78f372faeeefe1f]
# to [31e2304bef67f44d635655f44234387ea7d21454]
#
# patch "sqlite/btree.c"
# from [d2e09ebf755bfd665727133361b22c6a915b12d7]
# to [236126155d5607da945d33514218cbec762d887e]
#
# patch "sqlite/btree.h"
# from [41a71ce027db9ddee72cb43df2316bbe3a1d92af]
# to [1ed561263ca0e335bc3e81d761c9d5ff8c22f61e]
#
# patch "sqlite/build.c"
# from [593d8fda0576a72e6f1fbf8f1a61db110dde9264]
# to [74653e045581bfbadb8b35a0cb38a62f4a2c850e]
#
# patch "sqlite/callback.c"
# from [0910b611e0c158f107ee3ff86f8a371654971e2b]
# to [9a1162c8f9dae9fad6d548339669aacb5f6cf76b]
#
# patch "sqlite/date.c"
# from [2134ef4388256e8247405178df8a61bd60dc180a]
# to [7444b0900a28da77e57e3337a636873cff0ae940]
#
# patch "sqlite/delete.c"
# from [4b68127f55971c7fb459146e0b6cf3bd70cfffe9]
# to [16a0e19460b14d219f39ff5c7a9eef808aa1969c]
#
# patch "sqlite/expr.c"
# from [6d7058944c5f4b7e4304be3fe63ada91dac221a1]
# to [b8dbd5a30e80b83b0c1e137dcfcd687bd5d2b76c]
#
# patch "sqlite/func.c"
# from [f208d71f741d47b63277530939f552815af8ce35]
# to [f63d417248808ff2632a3b576536abffcc21d858]
#
# patch "sqlite/insert.c"
# from [8c0868a975fe37366ed92e1b976853be96284607]
# to [484c73bc1309f283a31baa0e114f3ee980536397]
#
# patch "sqlite/keywordhash.h"
# from [9f753ca12591e9ac7d627850e28217bf1fb96c26]
# to [32380a4bfe997d18e3ecd5b85fd948cf7b52aec8]
#
# patch "sqlite/main.c"
# from [16ab37b7b3aa57bcfb6b687474b2553c67b1a7fe]
# to [422014201f22aa17b96c76650163178a91a825af]
#
# patch "sqlite/opcodes.c"
# from [09ba45fa2716974a205f0514fda43e0d52c50ecc]
# to [8b23c96979492cba740a2e3c67f6646e8b323b12]
#
# patch "sqlite/opcodes.h"
# from [c350694b63ef80daafa7d04f71a6d921aa4935e2]
# to [1848e78f249e09e0b773754679d6584412f8900f]
#
# patch "sqlite/os.h"
# from [c4b34bd4d6fea51a420f337468b907f4edecb161]
# to [c51f2747f7bd1840447e2c7d26db749604626814]
#
# patch "sqlite/os_common.h"
# from [0e7f428ba0a6c40a61bc56c4e96f493231301b73]
# to [1ff88c7e7e6bd3e5f85443106c91cc26a4f8600b]
#
# patch "sqlite/os_unix.c"
# from [45540d7ee5095566da6685d584598edee5be857c]
# to [c86cf43b7ca9200e6fb7bc202ad2cc7da2f69367]
#
# patch "sqlite/os_unix.h"
# from [39a393252e69e72b06715c9958df05ddbc4aa971]
# to [5768d56d28240d3fe4537fac08cc85e4fb52279e]
#
# patch "sqlite/os_win.c"
# from [fe7b99cfcfb61d9bf54493ddf5857885a657fb89]
# to [ed03a35b2894f9b99840415f941a9f8594dea756]
#
# patch "sqlite/pager.c"
# from [841a2cdddd4275de36cda26ed9dc54ae942660ce]
# to [adbb27f13ac75cd5bc29a3d84803e0cab1edfa88]
#
# patch "sqlite/pager.h"
# from [0d9153d6269d60d04af3dd84a0cc0a96253cf4a4]
# to [17b13225abd93c1e9f470060f40a21b9edb5a164]
#
# patch "sqlite/parse.c"
# from [6671523c392fcf8287c08e5896cc2513987fc5cb]
# to [9f03b15f12e12a7952705f50d01e3ac97bb81e34]
#
# patch "sqlite/parse.h"
# from [55c238b9c97ae9a71722f2fabf3e0d23660e4e63]
# to [c3a865a73a9e4988142a3008f99d3cc91fdf77b4]
#
# patch "sqlite/pragma.c"
# from [5ea2ba0e43f6a83968a936b071b77bd4516d11f0]
# to [6d773e25e8af13ef0820531ad2793417f8a8959d]
#
# patch "sqlite/prepare.c"
# from [d53602d2f8e097225ae7c76ec764ae68f759ba47]
# to [fc098db25d2a121affb08686cf04833fd50452d4]
#
# patch "sqlite/printf.c"
# from [3d20b21cfecadacecac3fb7274e746cb81d3d357]
# to [bd421c1ad5e01013c89af63c60eab02852ccd15e]
#
# patch "sqlite/select.c"
# from [28b752e58955c7920711fbdbfdcd369a2bd09448]
# to [9ef1dddd436e1ea86a6bf64ae0ed71bf4a0b894f]
#
# patch "sqlite/sqlite3.h"
# from [97fec5750fa71f8b162c9571a7e08413de9886ed]
# to [d1ab08a3d92270801782adad0dad0f31d6df7761]
#
# patch "sqlite/sqliteInt.h"
# from [0722b47bae7acb182bf43be3585537027c63f741]
# to [e78a7c53a97a2e5d8d6370b6836b2921124ac26f]
#
# patch "sqlite/tokenize.c"
# from [4b45f8c000202c877bcc567688c2ec21a01984b3]
# to [e1faf5637f3f4f90933785a0ecf64595f3ac3530]
#
# patch "sqlite/update.c"
# from [e96c7b342cd8903c672162f4cf84d2c737943347]
# to [c2716c2115533ffae3d08bf8853aaba4f970f37e]
#
# patch "sqlite/util.c"
# from [96008b52604d08b9cc57ed37350149d6ac8a1bf3]
# to [55caaffbb2716f9928ab452d20f3e9cbbeab872d]
#
# patch "sqlite/vdbe.c"
# from [c2511f392598928254504e3b2c5ec47f4fef2b53]
# to [de007d59f036fcd1b89a7d4172aa0d028e8689eb]
#
# patch "sqlite/vdbe.h"
# from [75e466d84d362b0c4498978a9d6b1e6bd32ecf3b]
# to [c8e105979fc7aaf5b8004e9621904e3bd096dfa2]
#
# patch "sqlite/vdbeInt.h"
# from [4312faf41630a6c215924b6c7c2f39ebb1af8ffb]
# to [3dd2a29c7b0a55404c35f93caae81fb42f4cb70a]
#
# patch "sqlite/vdbeapi.c"
# from [3f858d2236df0d127249a6a166e0e25b5de650ed]
# to [85bbe1d0243a89655433d60711b4bd71979b59cd]
#
# patch "sqlite/vdbeaux.c"
# from [c99e32abeba4b7522e3922afff2c32ff4bd17eb5]
# to [57a6ced8417bdc6f06c391d9c560ecbbed644ef3]
#
# patch "sqlite/vdbemem.c"
# from [48a64ae95a9edc6e8d940300dad15d70d1670398]
# to [fea0744936008831daa17cdc75056c3ca1469690]
#
# patch "sqlite/where.c"
# from [3a9a2258ab3364655e9ea215ad5ae7bf41813f54]
# to [1cc55c9aa142c7ef09b427f5fd0bf0488e365fc4]
#
# patch "tests/t_log_brief.at"
# from [41e612ccf6a0320c64b89a7cf39996d466b3f07c]
# to [659ab85957e702aba713117d071bea86bd74aebf]
#
# patch "testsuite.at"
# from [9843a5c53ec471614fc6d5ef5dfcf16fc6995608]
# to [4405c8c3584fd8462446135258c4bb1f1c7d41fd]
#
# patch "ui.cc"
# from [77a48bddc373a115f5ec6cc0077afa17a2a762d0]
# to [2c9b65e320b66d6b104bee5885723c4f97f36e8b]
#
# patch "ui.hh"
# from [d5866bba3cc59b130fb56ba40e0780801d4314f9]
# to [13817f413857ee072ca9ed1aa5dc90e51aaa0069]
#
============================================================
--- contrib/usher.cc 8cb23c92752ea67f7858372494985d2d6204afaf
+++ contrib/usher.cc 8cb23c92752ea67f7858372494985d2d6204afaf
@@ -0,0 +1,508 @@
+// Timothy Brownawell <tbrownaw@gmail.com>
+// GPL v2
+//
+// This is an "usher" to allow multiple monotone servers to work from
+// the same port. It asks the client for the pattern it wants to sync,
+// and then looks up the matching server in a table. It then forwards
+// the connection to that server. All servers using the same usher need
+// to have the same server key.
+//
+// This requires cooperation from the client, which means it only works
+// for recent (post-0.22) clients.
+//
+// Usage: usher <port-number> <server-file>
+//
+// <port-number> is the local port to listen on
+// <server-file> is a file containing lines of
+// stem ip-address port-number
+//
+// A request for a pattern starting with "stem" will be directed to the
+// server at <ip-address>:<port-number>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <string.h>
+#include <signal.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#include <errno.h>
+
+#include <string>
+#include <list>
+#include <iostream>
+#include <fstream>
+
+int listenport = 5253;
+
+char const netsync_version = 5;
+
+char const * const greeting = " Hello! This is the monotone usher at localhost. What would you like?";
+
+char const * const errmsg = "!Sorry, I don't know where to find that.";
+
+
+#undef max
+#define max(x,y) ((x) > (y) ? (x) : (y))
+
+struct errstr
+{
+ std::string name;
+ int err;
+ errstr(std::string const & s, int e): name(s), err(e) {}
+};
+
+int tosserr(int ret, std::string const & name)
+{
+ if (ret == -1)
+ throw errstr(name, errno);
+ if (ret < 0)
+ throw errstr(name, ret);
+ return ret;
+}
+
+struct record
+{
+ std::string stem;
+ std::string addr;
+ int port;
+};
+
+std::list<record> servers;
+
+bool get_server(std::string const & reply, std::string & addr, int & port)
+{
+ std::list<record>::iterator i;
+ for (i = servers.begin(); i != servers.end(); ++i) {
+ if (reply.find(i->stem) == 0)
+ break;
+ }
+ if (i == servers.end()) {
+ std::cerr<<"no server found for "<<reply<<"\n";
+ return false;
+ }
+ port = i->port;
+ addr = i->addr;
+// std::cerr<<"server for "<<reply<<" is "<<addr<<":"<<port<<"\n";
+ return true;
+}
+
+// packet format is:
+// byte version
+// byte cmd {100 if we send, 101 if we receive}
+// uleb128 {size of everything after this}
+// uleb128 {size of everything after this}
+// string
+
+// uleb128 is
+// byte 0x80 | <low 7 bits>
+// byte 0x80 | <next 7 bits>
+// ...
+// byte 0xff & <remaining bits>
+//
+// the high bit says that this byte is not the last
+
+void make_packet(std::string const & msg, char * & pkt, int & size)
+{
+ size = msg.size();
+ char const * txt = msg.c_str();
+ char header[6];
+ header[0] = netsync_version;
+ header[1] = 100;
+ int headersize;
+ if (size >= 128) {
+ header[2] = 0x80 | (0x7f & (char)(size+2));
+ header[3] = (char)((size+2)>>7);
+ header[4] = 0x80 | (0x7f & (char)(size));
+ header[5] = (char)(size>>7);
+ headersize = 6;
+ } else if (size >= 127) {
+ header[2] = 0x80 | (0x7f & (char)(size+1));
+ header[3] = (char)((size+1)>>7);
+ header[4] = (char)(size);
+ headersize = 5;
+ } else {
+ header[2] = (char)(size+1);
+ header[3] = (char)(size);
+ headersize = 4;
+ }
+ pkt = new char[headersize + size];
+ memcpy(pkt, header, headersize);
+ memcpy(pkt + headersize, txt, size);
+ size += headersize;
+}
+
+struct buffer
+{
+ static int const buf_size = 2048;
+ static int const buf_reset_size = 1024;
+ char * ptr;
+ int readpos;
+ int writepos;
+ buffer(): readpos(0), writepos(0)
+ {
+ ptr = new char[buf_size];
+ }
+ ~buffer(){delete[] ptr;}
+ buffer(buffer const & b)
+ {
+ ptr = new char[buf_size];
+ memcpy(ptr, b.ptr, buf_size);
+ readpos = b.readpos;
+ writepos = b.writepos;
+ }
+ bool canread(){return writepos > readpos;}
+ bool canwrite(){return writepos < buf_size;}
+ void getread(char *& p, int & n)
+ {
+ p = ptr + readpos;
+ n = writepos - readpos;
+ }
+ void getwrite(char *& p, int & n)
+ {
+ p = ptr + writepos;
+ n = buf_size - writepos;
+ }
+ void fixread(int n)
+ {
+ if (n < 0) throw errstr("negative read\n", 0);
+ readpos += n;
+ if (readpos == writepos) {
+ readpos = writepos = 0;
+ } else if (readpos > buf_reset_size) {
+ memcpy(ptr, ptr+readpos, writepos-readpos);
+ writepos -= readpos;
+ readpos = 0;
+ }
+ }
+ void fixwrite(int n)
+ {
+ if (n < 0) throw errstr("negative write\n", 0);
+ writepos += n;
+ }
+};
+
+struct sock
+{
+ int *s;
+ operator int(){return s[0];}
+ sock(int ss)
+ {
+ s = new int[2];
+ s[0] = ss;
+ s[1] = 1;
+ }
+ sock(sock const & ss){s = ss.s; s[1]++;}
+ ~sock(){if (s[1]--) return; ::close(s[0]); delete[] s;}
+ sock operator=(int ss){s[0]=ss;}
+ void close()
+ {
+ if (s[0] == -1) return;
+ tosserr(shutdown(s[0], SHUT_RDWR), "shutdown()");
+ while (::close(s[0]) < 0) {
+ if (errno != EINTR) throw errstr("close()", 0);
+ }
+ s[0]=-1;
+ }
+ bool read_to(buffer & buf)
+ {
+ char *p;
+ int n;
+ buf.getwrite(p, n);
+ n = read(s[0], p, n);
+ if (n < 1) {
+ close();
+ return false;
+ } else
+ buf.fixwrite(n);
+ return true;
+ }
+ bool write_from(buffer & buf)
+ {
+ char *p;
+ int n;
+ buf.getread(p, n);
+ n = write(s[0], p, n);
+ if (n < 1) {
+ close();
+ return false;
+ } else
+ buf.fixread(n);
+ return true;
+ }
+};
+
+sock start(int port)
+{
+ sock s = tosserr(socket(AF_INET, SOCK_STREAM, 0), "socket()");
+ int yes = 1;
+ tosserr(setsockopt(s, SOL_SOCKET, SO_REUSEADDR,
+ &yes, sizeof(yes)), "setsockopt");
+ sockaddr_in a;
+ memset (&a, 0, sizeof (a));
+ a.sin_port = htons(port);
+ a.sin_family = AF_INET;
+ tosserr(bind(s, (sockaddr *) &a, sizeof(a)), "bind");
+ listen(s, 10);
+ return s;
+}
+
+sock make_outgoing(int port, std::string const & address)
+{
+ sock s = tosserr(socket(AF_INET, SOCK_STREAM, 0), "socket()");
+
+ struct sockaddr_in a;
+ memset(&a, 0, sizeof(a));
+ a.sin_family = AF_INET;
+ a.sin_port = htons(port);
+
+ if (!inet_aton(address.c_str(), (in_addr *) &a.sin_addr.s_addr))
+ throw errstr("bad ip address format", 0);
+
+ tosserr(connect(s, (sockaddr *) &a, sizeof (a)), "connect()");
+ return s;
+}
+
+bool extract_reply(buffer & buf, std::string & out)
+{
+ char *p;
+ int n;
+ buf.getread(p, n);
+ if (n < 4) return false;
+ int b = 2;
+ unsigned int psize = p[b];
+ ++b;
+ if (psize >=128) {
+ psize = psize - 128 + ((unsigned int)(p[b])<<7);
+ ++b;
+ }
+ if (n < b+psize) return false;
+ unsigned int size = p[b];
+ ++b;
+ if (size >=128) {
+ size = size - 128 + ((unsigned int)(p[b])<<7);
+ ++b;
+ }
+ if (n < b+size) return false;
+ out.clear();
+ out.append(p+b, size);
+ buf.fixread(b + size);
+}
+
+struct channel
+{
+ sock client;
+ sock server;
+ bool have_routed;
+ bool no_server;
+ buffer cbuf;
+ buffer sbuf;
+ channel(sock & c): client(c), server(-1),
+ have_routed(false), no_server(false)
+ {
+ char * dat;
+ int size;
+ make_packet(greeting, dat, size);
+ char *p;
+ int n;
+ sbuf.getwrite(p, n);
+ if (n < size) size = n;
+ memcpy(p, dat, size);
+ sbuf.fixwrite(size);
+ delete[] dat;
+
+ client.write_from(sbuf);
+ }
+ bool is_finished()
+ {
+ return (client == -1) && (server == -1);
+ }
+ void add_to_select(int & maxfd, fd_set & rd, fd_set & wr, fd_set & er)
+ {
+ int c = client;
+ int s = server;
+
+ if (c > 0) {
+ FD_SET(c, &er);
+ if (cbuf.canwrite())
+ FD_SET(c, &rd);
+ if (sbuf.canread())
+ FD_SET(c, &wr);
+ maxfd = max(maxfd, c);
+ }
+ if (s > 0) {
+ FD_SET(s, &er);
+ if (sbuf.canwrite())
+ FD_SET(s, &rd);
+ if (cbuf.canread())
+ FD_SET(s, &wr);
+ maxfd = max(maxfd, s);
+ }
+ }
+ bool process_selected(fd_set & rd, fd_set & wr, fd_set & er)
+ {
+ int c = client;
+ int s = server;
+/* NB: read oob data before normal reads */
+ if (c > 0 && FD_ISSET(c, &er)) {
+ char d;
+ errno = 0;
+ if (recv(c, &d, 1, MSG_OOB) < 1)
+ client.close(), c = -1;
+ else
+ send(s, &d, 1, MSG_OOB);
+ }
+ if (s > 0 && FD_ISSET(s, &er)) {
+ char d;
+ errno = 0;
+ if (recv(s, &d, 1, MSG_OOB) < 1)
+ server.close(), s = -1;
+ else
+ send(c, &d, 1, MSG_OOB);
+ }
+
+ char *p=0;
+ int n;
+
+ if (c > 0 && FD_ISSET(c, &rd)) {
+ if (!client.read_to(cbuf)) c = -1;
+ if (!have_routed) {
+ std::string reply;
+ if (extract_reply(cbuf, reply)) {
+ int port;
+ std::string addr;
+ if (get_server(reply, addr, port)) {
+ try {
+ server = make_outgoing(port, addr);
+ have_routed = true;
+ s = server;
+ } catch (errstr & e) {
+ std::cerr<<"cannot contact server "<<addr<<": "<<e.name<<"\n";
+ no_server = true;
+ }
+ } else {
+ char * dat;
+ int size;
+ sbuf.getwrite(p, n);
+ make_packet(errmsg, dat, size);
+ if (n < size) size = n;
+ memcpy(p, dat, size);
+ sbuf.fixwrite(size);
+ delete[] dat;
+ no_server = true;
+ }
+ }
+ }
+ }
+ if (s > 0 && FD_ISSET(s, &rd)) {
+ if (!server.read_to(sbuf)) s = -1;
+ }
+
+ if (c > 0 && FD_ISSET(c, &wr)) {
+ if (!client.write_from(sbuf)) c = -1;
+ }
+ if (s > 0 && FD_ISSET(s, &wr)) {
+ if (!server.write_from(cbuf)) s = -1;
+ }
+
+ // close sockets we have nothing more to send to
+ if (c < 0 && !cbuf.canread()) {
+ server.close(), s = -1;
+ }
+ if ((no_server || have_routed && s < 0) && !sbuf.canread()) {
+ client.close(), c = -1;
+ }
+ }
+};
+
+int main (int argc, char **argv)
+{
+ if (argc != 3) {
+ fprintf (stderr, "Usage\n\tusher <listen-port> <config-file>\n");
+ exit (1);
+ }
+
+ record rec;
+ std::ifstream cf(argv[2]);
+ int pos = 0;
+ while(cf) {
+ if (pos == 0)
+ cf>>rec.stem;
+ else if (pos == 1)
+ cf>>rec.addr;
+ else if (pos == 2)
+ cf>>rec.port;
+ else if (pos == 3) {
+ pos = 0;
+ servers.push_back(rec);
+ }
+ ++pos;
+ }
+
+ signal (SIGPIPE, SIG_IGN);
+
+ sock h(-1);
+ try {
+ h = start(atoi(argv[1]));
+ } catch (errstr & s) {
+ std::cerr<<s.name<<"\n";
+ exit (1);
+ }
+
+ std::list<channel> channels;
+
+ for (;;) {
+ fd_set rd, wr, er;
+ FD_ZERO (&rd);
+ FD_ZERO (&wr);
+ FD_ZERO (&er);
+ FD_SET (h, &rd);
+ int nfds = h;
+ channel *newchan = 0;
+
+ for (std::list<channel>::iterator i = channels.begin();
+ i != channels.end(); ++i)
+ i->add_to_select(nfds, rd, wr, er);
+
+ int r = select(nfds+1, &rd, &wr, &er, NULL);
+
+ if (r == -1 && errno == EINTR)
+ continue;
+ if (r < 0) {
+ perror ("select()");
+ exit (1);
+ }
+ if (FD_ISSET(h, &rd)) {
+ try {
+ struct sockaddr_in client_address;
+ unsigned int l = sizeof(client_address);
+ memset(&client_address, 0, l);
+ sock cli = tosserr(accept(h, (struct sockaddr *)
+ &client_address, &l), "accept()");
+// std::cerr<<"connect from "<<inet_ntoa(client_address.sin_addr)<<"\n";
+ newchan = new channel(cli);
+ } catch(errstr & s) {
+ std::cerr<<"During new connection: "<<s.name<<"\n";
+ }
+ }
+ std::list<std::list<channel>::iterator> finished;
+ for (std::list<channel>::iterator i = channels.begin();
+ i != channels.end(); ++i) {
+ i->process_selected(rd, wr, er);
+ if (i->is_finished())
+ finished.push_back(i);
+ }
+ for (std::list<std::list<channel>::iterator>::iterator i = finished.begin();
+ i != finished.end(); ++i)
+ channels.erase(*i);
+ if (newchan) {
+ channels.push_back(*newchan);
+ delete newchan;
+ newchan = 0;
+ }
+ }
+ return 0;
+}
============================================================
--- po/ja.po a3ec19a708293db5a8a1247f2c1dafaf367e6827
+++ po/ja.po a3ec19a708293db5a8a1247f2c1dafaf367e6827
@@ -0,0 +1,4461 @@
+# ja.po for monotone
+# Copyright (C) 2005 Graydon Hoare <graydon@pobox.com>
+# This file is distributed under the same license as the monotone package.
+# Satoru SATOH <ss@gnome.gr.jp>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: monotone 0.19\n"
+"Report-Msgid-Bugs-To: monotone-devel@nongnu.org\n"
+"POT-Creation-Date: 2005-08-08 20:24-0700\n"
+"PO-Revision-Date: 2005-09-18 14:55+0900\n"
+"Last-Translator: Satoru SATOH <ss@gnome.gr.jp>\n"
+"Language-Team: Japanese <gnome-translation@gnome.gr.jp>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: app_state.cc:58
+#, c-format
+msgid "initializing from directory %s\n"
+msgstr "ディレクトリ %s から初期化中\n"
+
+#: app_state.cc:59
+#, c-format
+msgid "found working copy directory %s\n"
+msgstr "作業コピーディレクトリ %s を発見\n"
+
+#: app_state.cc:61
+#, c-format
+msgid "cannot change to directory to %s\n"
+msgstr "ディレクトリ %s へ移動できません\n"
+
+#: app_state.cc:69
+#, c-format
+msgid "branch name is '%s'\n"
+msgstr "ブランチ名は '%s' です\n"
+
+#: app_state.cc:75
+#, c-format
+msgid "relative directory is '%s'\n"
+msgstr "相対ディレクトリは '%s' です\n"
+
+#: app_state.cc:82
+#, c-format
+msgid "setting dump path to %s\n"
+msgstr "ダンプパスを %s に設定しています\n"
+
+#: app_state.cc:93
+#, c-format
+msgid "working copy directory required but not found%s%s"
+msgstr "必要な作業コピーディレクトリがみつかりませんでした: %s%s"
+
+#: app_state.cc:101
+msgid "invalid directory ''"
+msgstr "無効なディレクトリ ''"
+
+#: app_state.cc:105
+#, c-format
+msgid "cannot change to initial directory %s\n"
+msgstr "初期ディレクトリ %s へ移動できません\n"
+
+#: app_state.cc:109
+#, c-format
+msgid "create working copy in %s\n"
+msgstr "%s 内に作業コピーを作成\n"
+
+#: app_state.cc:120
+#, c-format
+msgid "could not create directory: %s: %s\n"
+msgstr "ディレクトリを作成できませんでした: %s: %s\n"
+
+#: app_state.cc:125
+#, c-format
+msgid "cannot change to new directory %s\n"
+msgstr "新しいディレクトリ %s へ移動できません\n"
+
+#: app_state.cc:134
+#, c-format
+msgid "monotone book-keeping directory '%s' already exists in '%s'\n"
+msgstr "monotone book-keeping ディレクトリ '%s' は既に '%s' 内にあります\n"
+
+#: app_state.cc:137
+#, c-format
+msgid "creating book-keeping directory '%s' for working copy in '%s'\n"
+msgstr "作業コピー用の book-keeping ディレクトリ '%s' を '%s' 内に作成しています\n"
+
+#: app_state.cc:159
+#, c-format
+msgid "'%s' prefixed to '%s'\n"
+msgstr "'%s' は '%s' の前に付きます\n"
+
+#: app_state.cc:178
+#, c-format
+msgid "'%s' ignored by restricted path set\n"
+msgstr "'%s' は制限パスセットによって無視されました\n"
+
+#: app_state.cc:183
+#, c-format
+msgid "unknown path '%s'\n"
+msgstr "不明なパス '%s'\n"
+
+#: app_state.cc:185
+#, c-format
+msgid "'%s' added to restricted path set\n"
+msgstr "'%s' を制限パスセットに追加しました\n"
+
+#: app_state.cc:226
+#, c-format
+msgid "checking restricted path set for '%s'\n"
+msgstr "'%s' について制限パスセットをチェックしています\n"
+
+#: app_state.cc:233
+#, c-format
+msgid "path '%s' found in restricted path set; '%s' included\n"
+msgstr "パス '%s' は制限パスセットに入っています; '%s' が含まれています\n"
+
+#: app_state.cc:239
+#, c-format
+msgid "path '%s' not found in restricted path set; '%s' excluded\n"
+msgstr "パス '%s' は制限パスセットに入っていません; '%s' は除外されています\n"
+
+#: app_state.cc:298
+#, c-format
+msgid "search root '%s' does not exist\n"
+msgstr "検索ルート '%s' は存在しません\n"
+
+#: app_state.cc:300
+#, c-format
+msgid "search root '%s' is not a directory\n"
+msgstr "検索ルート '%s' はディレクトリではありません\n"
+
+#: app_state.cc:301
+#, c-format
+msgid "set search root to %s\n"
+msgstr "検索ルートを %s に設定\n"
+
+#: app_state.cc:332
+msgid "negative depth not allowed\n"
+msgstr "深さの値を負にすることはできません\n"
+
+#: app_state.cc:340
+msgid "negative or zero last not allowed\n"
+msgstr "最終値を負または零にすることはできません\n"
+
+#: app_state.cc:449
+#, c-format
+msgid "Failed to read options file %s"
+msgstr "オプションファイル '%s' の解析に失敗"
+
+#: app_state.cc:466
+#, c-format
+msgid "Failed to write options file %s"
+msgstr "オプションファイル '%s' の書き込みに失敗"
+
+#: basic_io.cc:26
+#, c-format
+msgid "error in %s:%d:%d:E: %s"
+msgstr "エラー %s:%d:%d:E: %s"
+
+#: basic_io.cc:27
+#, c-format
+msgid "%s:%d:%d:E: %s"
+msgstr "%s:%d:%d:E: %s"
+
+#: cert.cc:49
+msgid "cert ok\n"
+msgstr "証明 OK\n"
+
+#: cert.cc:56
+#, c-format
+msgid "ignoring bad signature by '%s' on '%s'\n"
+msgstr "'%s' による '%s' への不正な署名を無視します\n"
+
+#: cert.cc:64
+#, c-format
+msgid "ignoring unknown signature by '%s' on '%s'\n"
+msgstr "'%s' による '%s' への不明な署名を無視します\n"
+
+#: cert.cc:121
+#, c-format
+msgid "trust function liked %d signers of %s cert on manifest %s\n"
+msgstr "信頼関数 liked %d, %s 証明の署名, マニフェスト %s\n"
+
+#: cert.cc:127
+#, c-format
+msgid "trust function disliked %d signers of %s cert on manifest %s\n"
+msgstr "信頼関数 disliked %d, %s 証明の署名, マニフェスト %s\n"
+
+#: cert.cc:174
+#, c-format
+msgid "trust function liked %d signers of %s cert on revision %s\n"
+msgstr "信頼関数 liked %d, %s 証明の署名, リビジョン %s\n"
+
+#: cert.cc:180
+#, c-format
+msgid "trust function disliked %d signers of %s cert on revision %s\n"
+msgstr "信頼関数 disliked %d, %s 証明の署名, リビジョン %s\n"
+
+#: cert.cc:269
+#, c-format
+msgid "calculated cert hash '%s' does not match '%s'"
+msgstr "計算した証明ハッシュ '%s' は '%s' と一致しません"
+
+#: cert.cc:302
+#, c-format
+msgid "[%s@%s:%s]"
+msgstr "[%s@%s:%s]"
+
+#: cert.cc:303
+#, c-format
+msgid "cert: signable text %s\n"
+msgstr "証明: 署名テキスト %s\n"
+
+#: cert.cc:364 keys.cc:480
+#, c-format
+msgid "no private key '%s' found in database or get_priv_key hook"
+msgstr "秘密鍵 '%s' はデータベース内にも get_priv_key フック内にもみつかりません"
+
+#: cert.cc:373
+#, c-format
+msgid "mismatch between private key '%s' in database and get_priv_key hook"
+msgstr "秘密鍵 '%s' はデータベース内のものとも get_priv_key フック内のもの"
+"とも一致しません"
+
+#: cert.cc:477
+msgid "no branch found for empty revision, please provide a branch name"
+msgstr "リビジョンが空のブランチはありません. ブランチ名を指定して下さい"
+
+#: cert.cc:486
+#, c-format
+msgid "no branch certs found for revision %s, please provide a branch name"
+msgstr ""
+"リビジョン %s のブランチ証明がみつかりません. ブランチ名を指定して下さい"
+
+#: cert.cc:490
+#, c-format
+msgid ""
+"multiple branch certs found for revision %s, please provide a branch name"
+msgstr "リビジョン %s のブランチ証明は複数あります. ブランチ名を指定して下さい"
+
+#: cert.cc:507 rcs_import.cc:1234 revision.cc:1586 revision.cc:1618
+msgid "no unique private key for cert construction"
+msgstr "証明構築のための固有の秘密鍵がありません"
+
+#: cert.cc:622
+#, c-format
+msgid "no default author name for branch '%s'"
+msgstr "ブランチ '%s' についてデフォルトの作者 (author) 名がありません"
+
+#: change_set.cc:290
+#, c-format
+msgid "tid %d: parent %d, type %s, name %s\n"
+msgstr "tid %d: 親 %d、タイプ %s、名前 %s\n"
+
+#: change_set.cc:316
+#, c-format
+msgid "%d -> %d\n"
+msgstr "%d -> %d\n"
+
+#: change_set.cc:1540
+msgid "concatenating change sets\n"
+msgstr "変更セットを結合しています\n"
+
+#: change_set.cc:1563
+#, c-format
+msgid "concatenating %d and %d deltas\n"
+msgstr "%d と %d の差分を結合しています\n"
+
+#: change_set.cc:1573
+#, c-format
+msgid "processing delta on %s\n"
+msgstr "%s の差分を処理しています\n"
+
+#: change_set.cc:1577
+#, c-format
+msgid "delta on %s in first changeset renamed to %s\n"
+msgstr "最初の変更セット内の %s についての差分は %s への名称変更です\n"
+
+#: change_set.cc:1582
+#, c-format
+msgid "discarding delta [%s]->[%s] for deleted file '%s'\n"
+msgstr "差分 [%s]->[%s] (対象は削除されたファイル '%s') を破棄しています\n"
+
+#: change_set.cc:1600
+#, c-format
+msgid "fusing deltas on %s : %s -> %s and %s -> %s\n"
+msgstr "%s の差分を融合中: %s -> %s と %s -> %s\n"
+
+#: change_set.cc:1614
+#, c-format
+msgid "delta on %s in second changeset copied forward\n"
+msgstr "第二の変更セット内の %s の差分のコピーを転送しました\n"
+
+#: change_set.cc:1628
+msgid "finished concatenation\n"
+msgstr "結合終了\n"
+
+#: change_set.cc:1734 change_set.cc:1741
+#, c-format
+msgid "delete of %s dominates rename to %s\n"
+msgstr "%s の削除は %s への名称変更を決定付けます\n"
+
+#: change_set.cc:1751
+#, c-format
+msgid "unable to resolve file conflict '%s' -> '%s' vs. '%s'"
+msgstr "ファイルの競合 '%s' -> '%s' 対 '%s' を解決できません"
+
+#: change_set.cc:1755
+#, c-format
+msgid "unable to resolve dir conflict '%s' -> '%s' vs. '%s'"
+msgstr "ディレクトリの競合 '%s' -> '%s' 対 '%s' を解決できません"
+
+#: change_set.cc:1760
+#, c-format
+msgid "illegal conflict resolution '%s', wanted '%s' or '%s'\n"
+msgstr "不法な競合の解決 '%s'. '%s' または '%s' であるべきです\n"
+
+#: change_set.cc:1816
+#, c-format
+msgid "tid %d (%s) clobbered tid %d (%s)\n"
+msgstr "tid %d (%s) は tid %d (%s) を上書きします\n"
+
+#: change_set.cc:1852
+#, c-format
+msgid "skipping common change on %s (tid %d)\n"
+msgstr "%s (tid %d) への共通の変更をスキップします\n"
+
+#: change_set.cc:1857
+#, c-format
+msgid "skipping neutral change of %s -> %s (tid %d)\n"
+msgstr "中立の変更 %s -> %s (tid %d) をスキップします\n"
+
+#: change_set.cc:1864
+#, c-format
+msgid "propagating change on %s -> %s (tid %d)\n"
+msgstr "変更を伝播しています: %s -> %s (tid %d)\n"
+
+#: change_set.cc:1880
+msgid "conflict detected, resolved in A's favour\n"
+msgstr "競合を検出. A フレーバで解決\n"
+
+#: change_set.cc:1886
+msgid "conflict detected, resolved in B's favour\n"
+msgstr "競合を検出. B フレーバで解決\n"
+
+#: change_set.cc:2053
+#, c-format
+msgid "reusing merge resolution '%s' : '%s' -> '%s'\n"
+msgstr "統合解決案 '%s' を再利用 : '%s' -> '%s'\n"
+
+#: change_set.cc:2062
+#, c-format
+msgid "merge of '%s' : '%s' vs. '%s' (no common ancestor) failed"
+msgstr "'%s' の統合に失敗: '%s' と '%s' が対立 (共通の祖先なし)"
+
+#: change_set.cc:2069
+#, c-format
+msgid "merge of '%s' : '%s' -> '%s' vs '%s' failed"
+msgstr "'%s' の統合に失敗: '%s' -> '%s' と '%s' が対立"
+
+#: change_set.cc:2073
+#, c-format
+msgid "merge of '%s' : '%s' -> '%s' vs '%s' resolved to '%s'\n"
+msgstr "'%s' の統合: '%s' -> '%s' と '%s' の対立を '%s' に解決\n"
+
+#: change_set.cc:2131
+#, c-format
+msgid "skipping delta '%s'->'%s' on deleted file '%s'\n"
+msgstr "差分 '%s'->'%s' (対象=削除されたファイル '%s') をスキップしています\n"
+
+#: change_set.cc:2139
+#, c-format
+msgid "merge is copying delta '%s' : '%s' -> '%s'\n"
+msgstr "統合は差分 '%s' : '%s' -> '%s' のコピーです\n"
+
+#: change_set.cc:2163
+#, c-format
+msgid "propagating new file addition delta on '%s' : '%s' -> '%s'\n"
+msgstr "'%s' の新規ファイル追加差分を伝えています: '%s' -> '%s'\n"
+
+#: change_set.cc:2175
+#, c-format
+msgid "skipping new file addition delta on '%s' : '' -> '%s'\n"
+msgstr "'%s' の新規ファイル追加差分をスキップしています: '' -> '%s'\n"
+
+#: change_set.cc:2183
+#, c-format
+msgid "skipping common delta '%s' : '%s' -> '%s'\n"
+msgstr "共通の差分 '%s' をスキップしています: '%s' -> '%s'\n"
+
+#: change_set.cc:2189
+#, c-format
+msgid "skipping neutral delta on '%s' : %s -> %s\n"
+msgstr "中立の差分 '%s' をスキップしています: '%s' -> '%s'\n"
+
+#: change_set.cc:2197
+#, c-format
+msgid "propagating unperturbed delta on '%s' : '%s' -> '%s'\n"
+msgstr "'%s' の摂動を受けない差分を伝えています: '%s' -> '%s'\n"
+
+#: change_set.cc:2207
+#, c-format
+msgid "merging delta '%s' : '%s' -> '%s' vs. '%s'\n"
+msgstr "差分 '%s' を統合しています: '%s' -> '%s' 対 '%s'\n"
+
+#: change_set.cc:2220
+#, c-format
+msgid "resolved merge to '%s' : '%s' -> '%s'\n"
+msgstr "'%s' への統合を解決しました: '%s' -> '%s'\n"
+
+#: change_set.cc:2249
+msgid "merging change sets\n"
+msgstr "変更セットを統合中\n"
+
+#: change_set.cc:2311
+msgid "finished merge\n"
+msgstr "統合終了\n"
+
+#: change_set.cc:2330
+msgid "inverting change set\n"
+msgstr "変更セットを反転\n"
+
+#: change_set.cc:2360
+#, c-format
+msgid "converted 'delete %s' to 'add as %s' in inverse\n"
+msgstr "'%s の削除' を '%s の追加' (逆向き)に変換しました\n"
+
+#: change_set.cc:2369
+#, c-format
+msgid "converted add %s to delete in inverse\n"
+msgstr "%s の追加を削除(逆向き)に変換しました\n"
+
+#: change_set.cc:2379
+#, c-format
+msgid "converting delta %s -> %s on %s\n"
+msgstr "差分 %s -> %s (対象=%s) を変換しています\n"
+
+#: change_set.cc:2381
+#, c-format
+msgid "inverse is delta %s -> %s on %s\n"
+msgstr "逆向きの差分は %s -> %s (対象=%s) です\n"
+
+#: change_set.cc:2443
+#, c-format
+msgid "moving %s -> %s\n"
+msgstr "移動中 %s -> %s\n"
+
+#: change_set.cc:2492
+#, c-format
+msgid "moving file %s -> %s\n"
+msgstr "ファイルを移動中 %s -> %s\n"
+
+#: change_set.cc:2500
+#, c-format
+msgid "moving dir %s -> %s\n"
+msgstr "ディレクトリを移動中 %s -> %s\n"
+
+#: change_set.cc:2978
+#, c-format
+msgid "[begin changeset %s]\n"
+msgstr "[変更セット %s 開始]\n"
+
+#: change_set.cc:2983
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: change_set.cc:2984
+#, c-format
+msgid "[end changeset %s]\n"
+msgstr "[変更セット %s 終了]\n"
+
+#: change_set.cc:3016
+msgid "beginning disjoint_merge_test\n"
+msgstr "disjoint_merge_test 開始\n"
+
+#: change_set.cc:3034
+msgid "finished disjoint_merge_test\n"
+msgstr "disjoint_merge_test 終了\n"
+
+#: change_set.cc:3106 change_set.cc:3191 change_set.cc:3236
+#, c-format
+msgid "informative failure: %s\n"
+msgstr "情報の十分な失敗: %s\n"
+
+#: change_set.cc:3110 change_set.cc:3195 change_set.cc:3240
+#, c-format
+msgid "runtime error: %s\n"
+msgstr "実行時エラー: %s\n"
+
+#: change_set.cc:3117
+msgid "STARTING invert_change_test\n"
+msgstr "invert_change_test 開始\n"
+
+#: change_set.cc:3151
+msgid "ENDING invert_change_test\n"
+msgstr "invert_change_test 終了中\n"
+
+#: change_set.cc:3260
+#, c-format
+msgid "%s:%d"
+msgstr "%s:%d"
+
+#: change_set.cc:3262
+#, c-format
+msgid "BEGINNING concatenation test %s\n"
+msgstr "結合テスト %s 開始\n"
+
+#: change_set.cc:3267
+#, c-format
+msgid "FINISHING concatenation test %s\n"
+msgstr "結合テスト %s 終了中\n"
+
+#: change_set.cc:3322
+#, c-format
+msgid "RUNNING bad_concatenate_change_test %s\n"
+msgstr "bad_concatenate_change_test %s 実行中\n"
+
+#: change_set.cc:3330
+msgid "skipping change_set printing, one or both are not sane\n"
+msgstr "change_set 表示をスキップ. 妥当でないものが一つ以上あります\n"
+
+#: change_set.cc:3335
+msgid "concat change_set is insane\n"
+msgstr "change_set の結合は妥当ではありません\n"
+
+#: change_set.cc:3338
+msgid "Checking combined change set\n"
+msgstr "複合変更セットをチェックしています\n"
+
+#: change_set.cc:3345
+msgid "combined_concat is insane\n"
+msgstr "combined_concat は妥当ではありません\n"
+
+#: change_set.cc:3351
+#, c-format
+msgid "RUNNING bad_concatenate_change_test %s again backwards\n"
+msgstr "再度逆行して bad_concatenate_change_test %s を実行中\n"
+
+#: commands.cc:133
+#, c-format
+msgid "expanding command '%s'\n"
+msgstr "コマンド '%s' を展開中\n"
+
+#: commands.cc:150
+#, c-format
+msgid "expanded command to '%s'\n"
+msgstr "コマンドを '%s' に展開\n"
+
+#: commands.cc:155
+#, c-format
+msgid "command '%s' has multiple ambiguous expansions: \n"
+msgstr "コマンド '%s' には曖昧な表現が複数含まれています: \n"
+
+#: commands.cc:234
+#, c-format
+msgid "executing %s command\n"
+msgstr "%s コマンドを実行中\n"
+
+#: commands.cc:240
+#, c-format
+msgid "unknown command '%s'\n"
+msgstr "不明なコマンド '%s'\n"
+
+#: commands.cc:287
+#, c-format
+msgid "pid file '%s' already exists"
+msgstr "PID ファイル '%s' は既に存在しています"
+
+#: commands.cc:362
+msgid "edit of log message failed"
+msgstr "ログメッセージの編集に失敗しました"
+
+#: commands.cc:370
+#, c-format
+msgid ""
+"note: branch '%s' has multiple heads\n"
+"note: perhaps consider 'monotone merge'"
+msgstr ""
+"注意: ブランチ '%s' には複数のヘッドがあります\n"
+"注意: ’monotone merge' を実行した方がよいかもしれません"
+
+#: commands.cc:428 commands.cc:3617
+#, c-format
+msgid "no such revision '%s'"
+msgstr "リビジョン '%s' は存在しません"
+
+#: commands.cc:435
+#, c-format
+msgid "expanding selection '%s'\n"
+msgstr "セレクション '%s' を展開中\n"
+
+#: commands.cc:443
+#, c-format
+msgid "no match for selection '%s'"
+msgstr "セレクション '%s' に一致するものがありません"
+
+#: commands.cc:446
+#, c-format
+msgid "selection '%s' has multiple ambiguous expansions: \n"
+msgstr "セレクション '%s' には複数の曖昧な展開がありえます: \n"
+
+#: commands.cc:453 commands.cc:482 commands.cc:511
+#, c-format
+msgid "expanded to '%s'\n"
+msgstr "'%s' に展開\n"
+
+#: commands.cc:462 commands.cc:491
+msgid "non-hex digits in id"
+msgstr "ID 内に十六進数が含まれていません"
+
+#: commands.cc:471 commands.cc:500
+#, c-format
+msgid "partial id '%s' does not have a unique expansion"
+msgstr "'%s' を含む ID は複数あり、一つの ID に展開することはできません"
+
+#: commands.cc:474 commands.cc:503
+#, c-format
+msgid "partial id '%s' has multiple ambiguous expansions: \n"
+msgstr "'%s' だけでは曖昧であり、展開できる ID は複数あります: \n"
+
+#: commands.cc:481 commands.cc:510
+#, c-format
+msgid "expanding partial id '%s'\n"
+msgstr "部分 ID '%s' を展開しています\n"
+
+#: commands.cc:537
+#, c-format
+msgid "warning: no public key '%s' found in database\n"
+msgstr "警告: 公開鍵 '%s' はデータベース内に存在しません\n"
+
+#: commands.cc:646
+msgid "no keys found\n"
+msgstr "鍵がみつかりませんでした\n"
+
+#: commands.cc:648
+#, c-format
+msgid "no keys found matching '%s'\n"
+msgstr "'%s' に一致する鍵はみつかりませんでした\n"
+
+#: commands.cc:660 commands.cc:1438 commands.cc:1492 commands.cc:2976
+#, c-format
+msgid "no revision %s found in database"
+msgstr "リビジョン %s はデータベース内にみつかりませんでした"
+
+#: commands.cc:666
+#, c-format
+msgid "revision %s already has children. We cannot kill it."
+msgstr "リビジョン %s は既に子を持っていて、削除できません"
+
+#: commands.cc:806
+#, c-format
+msgid "key '%s' already exists in database"
+msgstr "鍵 '%s' は既にデータベース内にあります"
+
+#: commands.cc:810
+#, c-format
+msgid "generating key-pair '%s'\n"
+msgstr "鍵ペア '%s' を生成しています\n"
+
+#: commands.cc:812
+#, c-format
+msgid "storing key-pair '%s' in database\n"
+msgstr "鍵ペア '%s' をデータベースに保存しています\n"
+
+#: commands.cc:829
+#, c-format
+msgid "dropping public key '%s' from database\n"
+msgstr "公開鍵 '%s' をデータベースから破棄しています\n"
+
+#: commands.cc:836
+#, c-format
+msgid ""
+"dropping private key '%s' from database\n"
+"\n"
+msgstr ""
+"秘密鍵 '%s' をデータベースから破棄しています\n"
+"\n"
+
+#: commands.cc:837
+msgid "the private key data may not have been erased from the"
+msgstr "秘密鍵データはデータベースから削除されていないかも"
+
+#: commands.cc:838
+msgid "database. it is recommended that you use 'db dump' and"
+msgstr "しれません. 'db dump' と 'db load' で確認することを"
+
+#: commands.cc:839
+msgid "'db load' to be sure."
+msgstr "お勧めします."
+
+#: commands.cc:845
+#, c-format
+msgid "public or private key '%s' does not exist in database"
+msgstr "公開または秘密鍵 '%s' はデータベース内に存在しません"
+
+#: commands.cc:861
+#, c-format
+msgid "key '%s' does not exist in database"
+msgstr "鍵 '%s' はデータベース内にありません"
+
+#: commands.cc:868
+msgid "passphrase changed\n"
+msgstr "パスフレーズを変更しました\n"
+
+#: commands.cc:894
+msgid "no unique private key found, and no key specified"
+msgstr "固有の秘密鍵がみつからず、かつ鍵が指定されていません"
+
+#: commands.cc:988
+msgid "need --branch argument for approval"
+msgstr "承認には --branch 引数が必要です"
+
+#: commands.cc:1007
+#, c-format
+msgid "revision %s has %d changesets, cannot invert\n"
+msgstr "リビジョン %s には %d 個の変更セットがあり、反転できません\n"
+
+#: commands.cc:1011
+msgid "need --branch argument for disapproval"
+msgstr "不可とするには --branch 引数が必要です"
+
+#: commands.cc:1034
+#, c-format
+msgid "disapproval of revision %s"
+msgstr "リビジョン %s を不可とする"
+
+#: commands.cc:1050
+msgid "edit comment failed"
+msgstr "コメント編集に失敗"
+
+#: commands.cc:1053
+msgid "empty comment"
+msgstr "空のコメント"
+
+#: commands.cc:1170
+#, c-format
+msgid "cannot find file %s revision %s"
+msgstr "ファイル %s リビジョン %s を発見できませんでした"
+
+#: commands.cc:1211 commands.cc:2378
+msgid "empty log message"
+msgstr "空のログメッセージ"
+
+#: commands.cc:1246
+msgid "ancestor file id does not exist"
+msgstr "祖先のファイル ID は存在しません"
+
+#: commands.cc:1249
+msgid "left file id does not exist"
+msgstr "左ファイル ID は存在しません"
+
+#: commands.cc:1252
+msgid "right file id does not exist"
+msgstr "右ファイル ID は存在しません"
+
+#: commands.cc:1263
+msgid "merge failed"
+msgstr "統合失敗"
+
+#: commands.cc:1370
+#, c-format
+msgid "no file version %s found in database"
+msgstr "バージョン %s のファイルはデータベース内にはありませんでした"
+
+#: commands.cc:1382
+#, c-format
+msgid "no file '%s' found in revision '%s'\n"
+msgstr "ファイル '%s' はリビジョン '%s' にはありませんでした\n"
+
+#: commands.cc:1387
+#, c-format
+msgid "dumping file %s\n"
+msgstr "ファイル %s をダンプ中\n"
+
+#: commands.cc:1411
+#, c-format
+msgid "no manifest version %s found in database"
+msgstr "マニフェストバージョン %s はデータベース内にはありませんでした"
+
+#: commands.cc:1415
+#, c-format
+msgid "dumping manifest %s\n"
+msgstr "マニフェスト %s をダンプ中\n"
+
+#: commands.cc:1442
+#, c-format
+msgid "dumping revision %s\n"
+msgstr "リビジョン %s をダンプ中\n"
+
+#: commands.cc:1468 commands.cc:1480
+msgid "need --branch argument for branch-based checkout"
+msgstr "ブランチを基準にしたチェックアウトには --branch 引数が必要です"
+
+#: commands.cc:1483
+#, c-format
+msgid "branch %s is empty"
+msgstr "ブランチ %s は空です"
+
+#: commands.cc:1484
+#, c-format
+msgid "branch %s has multiple heads"
+msgstr "ブランチ %s には複数のヘッド(最新版)が存在しています"
+
+#: commands.cc:1505
+#, c-format
+msgid "found %d %s branch certs on revision %s\n"
+msgstr "%d %s ブランチ証明をリビジョン %s でみつけました\n"
+
+#: commands.cc:1510
+#, c-format
+msgid "revision %s is not a member of branch %s\n"
+msgstr "リビジョン %s はブランチ %s には属していません\n"
+
+#: commands.cc:1526
+#, c-format
+msgid "no manifest %s found in database"
+msgstr "マニフェスト %s はデータベース内にはありませんでした"
+
+#: commands.cc:1528
+#, c-format
+msgid "checking out revision %s to directory %s\n"
+msgstr "リビジョン %s をディレクトリ %s にチェックアウト中\n"
+
+#: commands.cc:1534
+#, c-format
+msgid "no file %s found in database for %s"
+msgstr "ファイル %s (対象=%s)はデータベース内にはありませんでした"
+
+#: commands.cc:1538 commands.cc:3505
+#, c-format
+msgid "writing file %s to %s\n"
+msgstr "ファイル %s を %s に書き込み中\n"
+
+#: commands.cc:1559 commands.cc:3210
+msgid "please specify a branch, with --branch=BRANCH"
+msgstr "--branch=BRANCH というようにブランチを指定して下さい"
+
+#: commands.cc:1564 commands.cc:3214 commands.cc:3284 commands.cc:3287
+#, c-format
+msgid "branch '%s' is empty\n"
+msgstr "ブランチ '%s' は空です\n"
+
+#: commands.cc:1566
+#, c-format
+msgid "branch '%s' is currently merged:\n"
+msgstr "ブランチ '%s' は現在統合済みです:\n"
+
+#: commands.cc:1568
+#, c-format
+msgid "branch '%s' is currently unmerged:\n"
+msgstr "ブランチ '%s' は現在未統合です:\n"
+
+#: commands.cc:1607
+#, c-format
+msgid "no epoch for branch %s\n"
+msgstr "ブランチ %s は epoch を持ちません\n"
+
+#: commands.cc:1807 commands.cc:1809 commands.cc:1872
+#, c-format
+msgid "no such manifest %s"
+msgstr "マニフェスト %s は存在しません"
+
+#: commands.cc:1832 commands.cc:1834 commands.cc:1891
+#, c-format
+msgid "no such file %s"
+msgstr "ファイル %s は存在しません"
+
+#: commands.cc:1854
+#, c-format
+msgid "no such revision %s"
+msgstr "リビジョン %s は存在しません"
+
+#: commands.cc:1923
+#, c-format
+msgid "public key '%s' does not exist in database"
+msgstr "公開鍵 '%s' はデータベース内に存在しません"
+
+#: commands.cc:1939
+#, c-format
+msgid "public and private key '%s' do not exist in database"
+msgstr "公開または秘密鍵 '%s' はデータベース内に存在しません"
+
+#: commands.cc:1956
+msgid "no packets found on stdin"
+msgstr "標準入力にパケットをみつけることができませんでした"
+
+#: commands.cc:1958
+msgid "read 1 packet\n"
+msgstr "1 パケット読み込み\n"
+
+#: commands.cc:1960
+#, c-format
+msgid "read %d packets\n"
+msgstr "%d パケット読み込み\n"
+
+#: commands.cc:1999
+#, c-format
+msgid "setting default server to %s\n"
+msgstr "デフォルトのサーバーを %s に設定しています\n"
+
+#: commands.cc:2005
+msgid "no hostname given"
+msgstr "ホスト名を指定して下さい"
+
+#: commands.cc:2007
+msgid "no server given and no default server set"
+msgstr "サーバが未指定であり、デフォルトのサーバーも設定されていません"
+
+#: commands.cc:2011
+#, c-format
+msgid "using default server address: %s\n"
+msgstr "デフォルトのサーバーアドレスを利用: %s\n"
+
+#: commands.cc:2023
+#, c-format
+msgid "setting default branch include pattern to '%s'\n"
+msgstr "ブランチ名に含めるデフォルトパターンを '%s' に設定しています\n"
+
+#: commands.cc:2029
+#, c-format
+msgid "setting default branch exclude pattern to '%s'\n"
+msgstr "ブランチ名に含めないデフォルトパターンを '%s' に設定しています\n"
+
+#: commands.cc:2035
+msgid "no branch pattern given"
+msgstr "ブランチ名を指定して下さい"
+
+#: commands.cc:2037
+msgid "no branch pattern given and no default pattern set"
+msgstr "ブランチパターンが未指定、かつデフォルトパターンも設定されていません"
+
+#: commands.cc:2041
+#, c-format
+msgid "using default branch include pattern: '%s'\n"
+msgstr "ブランチ名に含めるデフォルトのパターンを利用: '%s'\n"
+
+#: commands.cc:2049
+#, c-format
+msgid "excluding: %s\n"
+msgstr "除外: %s\n"
+
+#: commands.cc:2061 commands.cc:2090 commands.cc:2107
+msgid "could not guess default signing key"
+msgstr "デフォルトの署名鍵を推測できませんでした"
+
+#: commands.cc:2076
+msgid "doing anonymous pull; use -kKEYNAME if you need authentication\n"
+msgstr "匿名 pull を実行中. 認証が必要な場合は -kKEYNAME を使って下さい\n"
+
+#: commands.cc:2111
+msgid ""
+"need permission to store persistent passphrase (see hook persist_phrase_ok())"
+msgstr ""
+"永続的にパスフレーズを保存しておきたいのなら権限が必要です (フック "
+"persist_phrase_ok() を参照して下さい)"
+
+#: commands.cc:2210
+#, c-format
+msgid "file '%s' not found"
+msgstr "ファイル '%s' がみつかりません"
+
+#: commands.cc:2278 work.cc:114
+#, c-format
+msgid "registering %s file in working copy\n"
+msgstr "作業コピー内の %s ファイルを登録中\n"
+
+#: commands.cc:2307
+#, c-format
+msgid "failed to parse date string '%s': %s"
+msgstr "データ文字列 '%s' の解析に失敗: %s"
+
+#: commands.cc:2311
+#, c-format
+msgid "failed to parse date string '%s'"
+msgstr "データ文字列 '%s' の解析に失敗"
+
+#: commands.cc:2335
+msgid "no changes to commit\n"
+msgstr "コミットすべき変更がありません\n"
+
+#: commands.cc:2346
+#, c-format
+msgid "beginning commit on branch '%s'\n"
+msgstr "ブランチ '%s' についてコミット開始\n"
+
+#: commands.cc:2347
+#, c-format
+msgid "new manifest %s\n"
+msgstr "新規マニフェスト %s\n"
+
+#: commands.cc:2348
+#, c-format
+msgid "new revision %s\n"
+msgstr "新規リビジョン %s\n"
+
+#: commands.cc:2352
+msgid "--message and --message-file are mutually exclusive"
+msgstr "--message と --message-file を同時に指定することはできません"
+
+#: commands.cc:2355
+msgid ""
+"MT/log is non-empty and --message supplied\n"
+"perhaps move or delete MT/log,\n"
+"or remove --message from the command line?"
+msgstr ""
+"MT/log は空ではなく、 --message が指定されています.\n"
+"もしかしたら MT/log を移動/削除したか、コマンド\n"
+"行から --message を削除したのではありませんか?"
+
+#: commands.cc:2360
+msgid ""
+"MT/log is non-empty and --message-file supplied\n"
+"perhaps move or delete MT/log,\n"
+"or remove --message-file from the command line?"
+msgstr ""
+"MT/log は空ではなく、 --message-file が指定されています.\n"
+"もしかしたら MT/log を移動/削除したか、コマンド\n"
+"行から --message-file を削除したのではありませんか?"
+
+#: commands.cc:2390
+#, c-format
+msgid "revision %s already in database\n"
+msgstr "リビジョン %s は既にデータベース内に存在しています\n"
+
+#: commands.cc:2395
+#, c-format
+msgid "inserting new revision %s\n"
+msgstr "新規リビジョン %s を挿入中\n"
+
+#: commands.cc:2404
+#, c-format
+msgid "skipping manifest %s, already in database\n"
+msgstr "既にデータベースにあるマニフェスト %s をスキップしています\n"
+
+#: commands.cc:2408
+#, c-format
+msgid "inserting manifest delta %s -> %s\n"
+msgstr "マニフェスト差分 %s -> %s を挿入中\n"
+
+#: commands.cc:2419
+#, c-format
+msgid "inserting full manifest %s\n"
+msgstr "完全マニフェスト %s を挿入中\n"
+
+#: commands.cc:2432
+#, c-format
+msgid "skipping file delta %s, already in database\n"
+msgstr "既にデータベースにあるファイル差分 %s をスキップしています\n"
+
+#: commands.cc:2438
+#, c-format
+msgid "inserting delta %s -> %s\n"
+msgstr "差分 %s -> %s を挿入中\n"
+
+#: commands.cc:2448 commands.cc:2465
+#, c-format
+msgid "file '%s' modified during commit, aborting"
+msgstr "ファイル '%s' は commit 前に変更されました. 中止します"
+
+#: commands.cc:2458
+#, c-format
+msgid "inserting full version %s\n"
+msgstr "完全なバージョン %s を挿入中\n"
+
+#: commands.cc:2492
+#, c-format
+msgid "committed revision %s\n"
+msgstr "リビジョン %s をコミット\n"
+
+#: commands.cc:2498
+msgid ""
+"note: this revision creates divergence\n"
+"note: you may (or may not) wish to run 'monotone merge'"
+msgstr ""
+"注意: このリビジョンによって分岐が生じます\n"
+"注意: 分岐を望まないなら 'monotone merge' を実行して下さい"
+
+#: commands.cc:2607
+#, c-format
+msgid "--- %s\t%s\n"
+msgstr "--- %s\t%s\n"
+
+#: commands.cc:2608
+#, c-format
+msgid "+++ %s\t%s\n"
+msgstr "+++ %s\t%s\n"
+
+#: commands.cc:2609
+#, c-format
+msgid "@@ -0,0 +1,%d @@\n"
+msgstr "@@ -0,0 +1,%d @@\n"
+
+#: commands.cc:2695 commands.cc:2711 commands.cc:2715
+#, c-format
+msgid "revision %s does not exist"
+msgstr "リビジョン %s は存在しません"
+
+#: commands.cc:2699
+msgid "current revision has no ancestor"
+msgstr "現在のリビジョンには祖先がありません"
+
+#: commands.cc:2742
+#, c-format
+msgid "no common ancestor for %s and %s"
+msgstr "%s と %s には共通の祖先がありません"
+
+#: commands.cc:2748
+msgid "concatenating un-committed changeset to composite\n"
+msgstr "合成のためにコミットされていない変更セットを連結しています\n"
+
+#: commands.cc:2774
+msgid "# no changes"
+msgstr "# 変更点なし"
+
+#: commands.cc:2902
+#, c-format
+msgid "updating %s to %s\n"
+msgstr "%s を %s に更新中\n"
+
+#: commands.cc:2951
+msgid "this working directory is a new project; cannot update"
+msgstr "この作業ディレクトリは新規のプロジェクトです; 更新できません"
+
+#: commands.cc:2958
+msgid ""
+"your request matches no descendents of the current revision\n"
+"in fact, it doesn't even match the current revision\n"
+"maybe you want --revision=<rev on other branch>"
+msgstr ""
+"現在のリビジョンにもその子孫にもご希望に沿うものはありません.\n"
+"もしかしたら --revision=<他のブランチのリビジョン> としたいのでは\n"
+"ありませんか?"
+
+#: commands.cc:2963
+msgid "multiple update candidates:\n"
+msgstr "複数の更新候補:\n"
+
+#: commands.cc:2966
+#, c-format
+msgid " %s\n"
+msgstr " %s\n"
+
+#: commands.cc:2967
+msgid "choose one with 'monotone update <id>'\n"
+msgstr "'monotone update <id>' として一つ選択\n"
+
+#: commands.cc:2968
+msgid "multiple candidates remain after selection"
+msgstr "選択より後ろに複数の候補が残っています"
+
+#: commands.cc:2983
+#, c-format
+msgid "already up to date at %s\n"
+msgstr "%s は既に最新です\n"
+
+#: commands.cc:2987
+#, c-format
+msgid "selected update target %s\n"
+msgstr "選択された更新ターゲット %s\n"
+
+#: commands.cc:2999
+#, c-format
+msgid ""
+"revision %s is not a member of branch %s\n"
+"try again with explicit --branch\n"
+msgstr ""
+"リビジョン %s はブランチ %s に属していません\n"
+"明示的に --branch を指定して再試行して下さい\n"
+
+#: commands.cc:3014
+#, c-format
+msgid "updating along chosen edge %s -> %s\n"
+msgstr "選択した先端 %s -> %s に従って更新中\n"
+
+#: commands.cc:3025
+#, c-format
+msgid "merging working copy with chosen edge %s -> %s\n"
+msgstr "作業コピーを選択した先端 %s -> %s と統合中\n"
+
+#: commands.cc:3074
+#, c-format
+msgid "updated to base revision %s\n"
+msgstr "ベースリビジョン %s に更新\n"
+
+#: commands.cc:3140
+#, c-format
+msgid "common ancestor %s found\n"
+msgstr "共通の祖先 %s を発見\n"
+
+#: commands.cc:3141
+msgid "trying 3-way merge\n"
+msgstr "3 方向統合を試行中\n"
+
+#: commands.cc:3151
+msgid "no common ancestor found, synthesizing edges\n"
+msgstr "共通の祖先がありませんでしたので、先端同士を同期中\n"
+
+#: commands.cc:3215
+#, c-format
+msgid "branch '%s' is merged\n"
+msgstr "ブランチ '%s' を統合\n"
+
+#: commands.cc:3221
+#, c-format
+msgid "starting with revision 1 / %d\n"
+msgstr "リビジョン 1 / %d について作業開始\n"
+
+#: commands.cc:3225
+#, c-format
+msgid "merging with revision %d / %d\n"
+msgstr "リビジョン %d / %d について統合中\n"
+
+#: commands.cc:3226 commands.cc:3227 commands.cc:3294 commands.cc:3378
+#: commands.cc:3379
+#, c-format
+msgid "[source] %s\n"
+msgstr "[元] %s\n"
+
+#: commands.cc:3239
+#, c-format
+msgid ""
+"merge of %s\n"
+" and %s\n"
+msgstr ""
+"%s と\n"
+" %s の統合\n"
+
+#: commands.cc:3244 commands.cc:3331 commands.cc:3398
+#, c-format
+msgid "[merged] %s\n"
+msgstr "[統合済み] %s\n"
+
+#: commands.cc:3247
+msgid "note: your working copies have not been updated\n"
+msgstr "注意: 作業コピーは更新されていません\n"
+
+#: commands.cc:3285 commands.cc:3288
+#, c-format
+msgid "branch '%s' is not merged\n"
+msgstr "ブランチ '%s' は統合されていません\n"
+
+#: commands.cc:3293
+#, c-format
+msgid "propagating %s -> %s\n"
+msgstr "伝播中 %s -> %s\n"
+
+#: commands.cc:3295
+#, c-format
+msgid "[target] %s\n"
+msgstr "[先] %s\n"
+
+#: commands.cc:3300
+#, c-format
+msgid "branch '%s' is up-to-date with respect to branch '%s'\n"
+msgstr "ブランチ '%s' はブランチ '%s' に対して最新です\n"
+
+#: commands.cc:3302
+msgid "no action taken\n"
+msgstr "何もしません\n"
+
+#: commands.cc:3306
+#, c-format
+msgid "no merge necessary; putting %s in branch '%s'\n"
+msgstr "統合は必要ありません. %s をブランチ '%s' 内に取り込み中\n"
+
+#: commands.cc:3323
+#, c-format
+msgid ""
+"propagate from branch '%s' (head %s)\n"
+" to branch '%s' (head %s)\n"
+msgstr ""
+"ブランチ '%s' (ヘッド %s) から伝播\n"
+"ブランチ '%s' (ヘッド %s) へ\n"
+
+#: commands.cc:3360 commands.cc:3362
+#, c-format
+msgid "%s is not an ancestor of %s"
+msgstr "%s は %s の祖先ではありません"
+
+#: commands.cc:3371
+#, c-format
+msgid "%s and %s are the same revision, aborting"
+msgstr "%s と %s は同じリビジョンです. 中止します"
+
+#: commands.cc:3373 commands.cc:3375
+#, c-format
+msgid "%s is already an ancestor of %s"
+msgstr "%s は既に %s の祖先となっています"
+
+#: commands.cc:3389
+#, c-format
+msgid ""
+"explicit_merge of %s\n"
+" and %s\n"
+" using ancestor %s\n"
+" to branch '%s'\n"
+msgstr ""
+"%s と %s の explicit_merge\n"
+"祖先 %s をブランチ '%s' に使用\n"
+
+#: commands.cc:3411
+msgid "non-hex digits in partial id"
+msgstr "部分 ID に十六進数が含まれていません"
+
+#: commands.cc:3497
+#, c-format
+msgid "reverting %s from %s to %s\n"
+msgstr "%s を %s から %s へ戻しています\n"
+
+#: commands.cc:3501
+#, c-format
+msgid "no file version %s found in database for %s"
+msgstr "バージョン %s のファイルはデータベース内にみつかりません (対象: %s)"
+
+#: commands.cc:3616
+#, c-format
+msgid "no revision for file '%s' in database"
+msgstr "ファイル '%s' に対するリビジョンはデータベース内にみつかりませんでした"
+
+#: commands.cc:3619
+#, c-format
+msgid "annotate file file_path '%s'\n"
+msgstr "注釈ファイル file_path '%s'\n"
+
+#: commands.cc:3628
+#, c-format
+msgid "No such file '%s' in revision %s\n"
+msgstr "ファイル '%s' はリビジョン %s 内にはありません\n"
+
+#: commands.cc:3630
+#, c-format
+msgid "annotate for file_id %s\n"
+msgstr "file_id %s に対する注釈\n"
+
+#: commands.cc:3696
+#, c-format
+msgid "revision %s does not exist in db, skipping\n"
+msgstr "リビジョン %s は db 内にありません. スキップします\n"
+
+#: commands.cc:3729
+#, c-format
+msgid "revision '%s' in '%s' maps to '%s' in %s\n"
+msgstr "リビジョン '%s' ('%s' 内) を '%s' (%s 内) にマップ\n"
+
+#: commands.cc:3877
+#, c-format
+msgid "no var with name %s in domain %s"
+msgstr "%s という変数はドメイン %s 内にはありません"
+
+#: database.cc:82
+#, c-format
+msgid ""
+"database schemas do not match: wanted %s, got %s. try migrating database"
+msgstr ""
+"データベーススキーマの不一致: 期待した %s ではなく %s を取得. データベースを"
+"統合してみて下さい"
+
+#: database.cc:139
+#, c-format
+msgid "database %s is a directory\n"
+msgstr "データベース %s はディレクトリです\n"
+
+#: database.cc:146
+#, c-format
+msgid "unable to probe database version in file %s"
+msgstr "ファイル %s 内のデータベースバージョンを検出できませんでした"
+
+#: database.cc:153
+#, c-format
+msgid "database %s is not an sqlite version 3 file, try dump and reload"
+msgstr ""
+"データベース %s は SQLite バージョン 3 のファイルではありません. ダンプした"
+"後、再度読み込んでみて下さい"
+
+#: database.cc:169
+#, c-format
+msgid "sqlite error [%d]: %s"
+msgstr "SQLite エラー [%d]: %s"
+
+#: database.cc:177
+msgid "no database specified"
+msgstr "データベース未指定"
+
+#: database.cc:182
+#, c-format
+msgid "database %s does not exist"
+msgstr "データベース %s は存在しません"
+
+#: database.cc:184
+#, c-format
+msgid "database %s is a directory"
+msgstr "データベース %s はディレクトリです"
+
+#: database.cc:213
+#, c-format
+msgid "could not initialize database: %s: already exists"
+msgstr "データベースを初期化できませんでした: %s: 既に存在しています"
+
+#: database.cc:218
+#, c-format
+msgid ""
+"existing (possibly stale) journal file '%s' has same stem as new database '%"
+"s'"
+msgstr ""
+"既存の (おそらく古い) ジャーナルファイル '%s' は新しいデータベース '%s' と同"
+"じ幹を持っています"
+
+#: database.cc:243
+#, c-format
+msgid "INSERT INTO %s VALUES("
+msgstr "INSERT INTO %s VALUES("
+
+#: database.cc:334 database.cc:435 database.cc:452
+msgid "need database name"
+msgstr "データベース名が必要です"
+
+#: database.cc:336
+#, c-format
+msgid "cannot create %s; it already exists\n"
+msgstr "%s を作成できません; 既に存在しています\n"
+
+#: database.cc:530
+msgid "statement cache statistics\n"
+msgstr "ステートメントキャッシュ統計\n"
+
+#: database.cc:531
+#, c-format
+msgid "prepared %d statements\n"
+msgstr "%d 個のプリペアードステートメント\n"
+
+#: database.cc:536
+#, c-format
+msgid "%d executions of %s\n"
+msgstr "%d 実行 (%s)\n"
+
+#: database.cc:593
+#, c-format
+msgid "prepared statement %s\n"
+msgstr "プリペアードステートメント %s\n"
+
+#: database.cc:597
+#, c-format
+msgid "multiple statements in query: %s\n"
+msgstr "クエリ中に複数のステートメント: %s\n"
+
+#: database.cc:603
+#, c-format
+msgid "wanted %d columns got %d in query: %s\n"
+msgstr "%d 列要求しましたが得たのは %d 列です: %s\n"
+
+#: database.cc:609
+#, c-format
+msgid "binding %d parameters for %s\n"
+msgstr "%d 変数を %s にバインド\n"
+
+#: database.cc:623
+#, c-format
+msgid "binding %d with value '%s'\n"
+msgstr "%d を値 '%s' にバインド\n"
+
+#: database.cc:639
+#, c-format
+msgid "null result in query: %s\n"
+msgstr "クエリ中に結果 null が含まれています: %s\n"
+
+#: database.cc:657
+#, c-format
+msgid "wanted %d rows got %s in query: %s\n"
+msgstr "%d 行要求しましたが得たのは %s です: %s\n"
+
+#: database.cc:853
+#, c-format
+msgid "%08.8x%08.8x%08.8x%08.8x%08.8x"
+msgstr "%08.8x%08.8x%08.8x%08.8x%08.8x"
+
+#: database.cc:865
+#, c-format
+msgid "version cache expiring %s\n"
+msgstr "バージョンキャッシュの有効期限が切れています: %s\n"
+
+#: database.cc:887
+#, c-format
+msgid "version cache hit on %s\n"
+msgstr "バージョンキャッシュヒット: %s\n"
+
+#: database.cc:932
+#, c-format
+msgid "reconstructing %s in %s\n"
+msgstr "%s (%s 内)を再構築中\n"
+
+#: database.cc:986
+#, c-format
+msgid "inserting edge: %s <- %s\n"
+msgstr "先端を挿入: %s <- %s\n"
+
+#: database.cc:990
+#, c-format
+msgid "skipping merge edge %s <- %s\n"
+msgstr "先端の統合 %s <- %s をスキップしています\n"
+
+#: database.cc:1036
+#, c-format
+msgid "following delta %s -> %s\n"
+msgstr "続く差分 %s -> %s\n"
+
+#: database.cc:1400
+#, c-format
+msgid "Killing revision %s locally\n"
+msgstr "ローカルにリビジョン %s を削除しています\n"
+
+#: database.cc:1412
+#, c-format
+msgid "Deleting all references to branch %s\n"
+msgstr "ブランチ %s へのすべての参照を削除しています\n"
+
+#: database.cc:1425
+#, c-format
+msgid "Deleting all references to tag %s\n"
+msgstr "タグ %s へのすべてのリファレンスを削除しています\n"
+
+#: database.cc:1575 database.cc:1587
+#, c-format
+msgid "another key with name '%s' already exists"
+msgstr "'%s' という名前の他の鍵が既に存在しています"
+
+#: database.cc:2166
+#, c-format
+msgid "WHERE id GLOB '%s*'"
+msgstr "WHERE id GLOB '%s*'"
+
+#: database.cc:2184
+#, c-format
+msgid "WHERE name='%s' AND unbase64(value) glob '%s'"
+msgstr "WHERE name='%s' AND unbase64(value) glob '%s'"
+
+#: database.cc:2190
+#, c-format
+msgid "WHERE name='%s'"
+msgstr "WHERE name='%s'"
+
+#: database.cc:2199
+#, c-format
+msgid " WHERE (name='%s' OR name='%s' OR name='%s')"
+msgstr " WHERE (name='%s' OR name='%s' OR name='%s')"
+
+#: database.cc:2203
+#, c-format
+msgid " AND unbase64(value) glob '*%s*'"
+msgstr " AND unbase64(value) glob '*%s*'"
+
+#: database.cc:2212
+#, c-format
+msgid "SELECT id FROM revision_certs WHERE name='%s' AND "
+msgstr "SELECT id FROM revision_certs WHERE name='%s' AND "
+
+#: database.cc:2216
+#, c-format
+msgid "unbase64(value) <= X'%s'"
+msgstr "unbase64(value) <= X'%s'"
+
+#: database.cc:2219
+#, c-format
+msgid "unbase64(value) > X'%s'"
+msgstr "unbase64(value) > X'%s'"
+
+#: database.cc:2222
+#, c-format
+msgid "unbase64(value) glob '%s%s%s'"
+msgstr "unbase64(value) glob '%s%s%s'"
+
+#: database.cc:2238
+#, c-format
+msgid "SELECT id FROM %s"
+msgstr "SELECT id FROM %s"
+
+#: database.cc:2248
+#, c-format
+msgid " (name='%s' OR name='%s' OR name='%s')"
+msgstr " (name='%s' OR name='%s' OR name='%s')"
+
+#: database.cc:2258
+#, c-format
+msgid " (name='%s')"
+msgstr " (name='%s')"
+
+#: database.cc:2261
+#, c-format
+msgid " AND (unbase64(value) GLOB '%s%s%s')"
+msgstr " AND (unbase64(value) GLOB '%s%s%s')"
+
+#: database.cc:2263
+#, c-format
+msgid " AND (id IN %s)"
+msgstr " AND (id IN %s)"
+
+#: diff_patch.cc:209
+#, c-format
+msgid "exchanging preserved extent [%d+%d] with changed extent [%d+%d]\n"
+msgstr ""
+"前に確保したエクステント [%d+%d] を変更されたエクステント [%d+%d] に置き換え"
+"ています\n"
+
+#: diff_patch.cc:300
+#, c-format
+msgid "conflicting edits: %s %d[%d] '%s' vs. %s %d[%d] '%s'\n"
+msgstr "競合する編集箇所: %s %d[%d] '%s' 対 %s %d[%d] '%s'\n"
+
+#: diff_patch.cc:328
+#, c-format
+msgid "conflicting edits: [%s %d %d] vs. [%s %d %d]\n"
+msgstr "競合する編集箇所: [%s %d %d] 対 [%s %d %d]\n"
+
+#: diff_patch.cc:376
+#, c-format
+msgid "calculating left edit script on %d -> %d lines\n"
+msgstr "%d -> %d 行について左側を編集するスクリプトを計算中\n"
+
+#: diff_patch.cc:384
+#, c-format
+msgid "calculating right edit script on %d -> %d lines\n"
+msgstr "%d -> %d 行について右側を編集するスクリプトを計算中\n"
+
+#: diff_patch.cc:392
+#, c-format
+msgid "calculating left extents on %d edits\n"
+msgstr "%d 編集箇所について左エクステントを計算しています\n"
+
+#: diff_patch.cc:397
+#, c-format
+msgid "calculating right extents on %d edits\n"
+msgstr "%d 編集箇所について右エクステントを計算しています\n"
+
+#: diff_patch.cc:402
+#, c-format
+msgid "normalizing %d right extents\n"
+msgstr "%d 右エクステントを正規化しています\n"
+
+#: diff_patch.cc:405
+#, c-format
+msgid "normalizing %d left extents\n"
+msgstr "%d 左エクステントを正規化しています\n"
+
+#: diff_patch.cc:411
+msgid "conflicting prefixes\n"
+msgstr "競合するプレフィクス\n"
+
+#: diff_patch.cc:417
+msgid "conflicting suffixes\n"
+msgstr "競合するサフィックス\n"
+
+#: diff_patch.cc:421
+#, c-format
+msgid "merging %d left, %d right extents\n"
+msgstr "%d 左, %d 右エクステントを統合中\n"
+
+#: diff_patch.cc:452
+msgid "conflict detected. no merge.\n"
+msgstr "競合を検出、統合しません\n"
+
+#: diff_patch.cc:472
+#, c-format
+msgid "recording successful merge of %s <-> %s into %s\n"
+msgstr "%s <-> %s から %s への成功した統合を記録中\n"
+
+#: diff_patch.cc:528
+#, c-format
+msgid "trying to merge %s <-> %s (ancestor: %s)\n"
+msgstr "%s <-> %s (祖先: %s) の統合を試しています\n"
+
+#: diff_patch.cc:533 diff_patch.cc:634
+msgid "files are identical\n"
+msgstr "ファイルは全く同じです\n"
+
+#: diff_patch.cc:575
+msgid "internal 3-way merged ok\n"
+msgstr "内部三方向統合 OK\n"
+
+#: diff_patch.cc:589
+msgid "help required for 3-way merge\n"
+msgstr "内部三方向統合には手助けが必要です\n"
+
+#: diff_patch.cc:590
+#, c-format
+msgid "[ancestor] %s\n"
+msgstr "[祖先] %s\n"
+
+#: diff_patch.cc:591 diff_patch.cc:646
+#, c-format
+msgid "[ left] %s\n"
+msgstr "[ 左] %s\n"
+
+#: diff_patch.cc:592 diff_patch.cc:647
+#, c-format
+msgid "[ right] %s\n"
+msgstr "[ 右] %s\n"
+
+#: diff_patch.cc:593 diff_patch.cc:648
+#, c-format
+msgid "[ merged] %s\n"
+msgstr "[ 統合済み] %s\n"
+
+#: diff_patch.cc:602
+msgid "lua merge3 hook merged ok\n"
+msgstr "lua merge3 フック統合 OK\n"
+
+#: diff_patch.cc:629
+#, c-format
+msgid "trying to merge %s <-> %s\n"
+msgstr "%s <-> %s の統合を試しています\n"
+
+#: diff_patch.cc:645
+msgid "help required for 2-way merge\n"
+msgstr "二方向統合には手助けが必要です\n"
+
+#: diff_patch.cc:656
+msgid "lua merge2 hook merged ok\n"
+msgstr "lua merge2 フック統合 OK\n"
+
+#: diff_patch.cc:687
+#, c-format
+msgid "temporarily recording merge of %s <-> %s into %s\n"
+msgstr "一時的に %s <-> %s から %s への統合を記録しています\n"
+
+#: diff_patch.cc:704
+#, c-format
+msgid "file %s does not exist in working copy"
+msgstr "ファイル %s は作業コピー中にはありません"
+
+#: diff_patch.cc:708
+#, c-format
+msgid "file %s in working copy has id %s, wanted %s"
+msgstr "作業コピー内のファイル %s の ID は %s ですが、欲しいのは %s です"
+
+#: file_io.cc:38
+#, c-format
+msgid "initial path is %s\n"
+msgstr "初期パスは %s です\n"
+
+#: file_io.cc:51
+#, c-format
+msgid "searching for '%s' directory with root '%s'\n"
+msgstr "'%s' ディレクトリを '%s' を起点に検索中\n"
+
+#: file_io.cc:65
+#, c-format
+msgid "'%s' not found in '%s' with '%s' removed\n"
+msgstr "'%s' は '%s' 内('%s' 削除)にはありません\n"
+
+#: file_io.cc:72
+#, c-format
+msgid "search for '%s' ended at '%s' with '%s' removed\n"
+msgstr "'%s' を検索、'%s' で停止、'%s' を削除\n"
+
+#: file_io.cc:77
+#, c-format
+msgid "'%s' does not exist\n"
+msgstr "'%s' は存在しません\n"
+
+#: file_io.cc:83
+#, c-format
+msgid "'%s' is not a directory\n"
+msgstr "'%s' はディレクトリではありません\n"
+
+#: file_io.cc:90
+#, c-format
+msgid "problems with '%s' (missing '.' or '..')\n"
+msgstr "'%s' について問題があります ('.' または '..' がありません)\n"
+
+#: file_io.cc:116
+msgid "Searching for home directory\n"
+msgstr "ホームディレクトリを検索中\n"
+
+#: file_io.cc:122
+msgid "Home directory from MONOTONE_HOME\n"
+msgstr "MONOTONE_HOME をホームディレクトリとして使います\n"
+
+#: file_io.cc:132
+msgid "Home directory from HOME\n"
+msgstr "HOME をホームディレクトリとして使います\n"
+
+#: file_io.cc:139
+msgid "Home directory from USERPROFILE\n"
+msgstr "USERPROFILE をホームディレクトリとして使います\n"
+
+#: file_io.cc:148
+msgid "Home directory from HOMEDRIVE+HOMEPATH\n"
+msgstr "HOMEDRIVE+HOMEPATH をホームディレクトリとして使います\n"
+
+#: file_io.cc:152
+msgid ""
+"could not find home directory (tried MONOTONE_HOME, HOME (if cygwin/mingw), "
+"USERPROFILE, HOMEDRIVE/HOMEPATH"
+msgstr ""
+"ホームディレクトリをみつけることができませんでした (MONOTONE_HOME, HOME "
+"cygwin/mingw の場合), USERPROFILE, HOMEDRIVE/HOMEPATH について試しました"
+
+#: file_io.cc:160
+#, c-format
+msgid "could not find home directory for uid %d"
+msgstr "UID %d のホームディレクトリをみつけることができませんでした"
+
+#: file_io.cc:205
+#, c-format
+msgid "could not find home directory for user %s"
+msgstr "ユーザー %s のホームディレクトリをみつけることができませんでした"
+
+#: file_io.cc:268
+#, c-format
+msgid "expected file '%s', but it is a directory."
+msgstr "'%s' は期待していたファイルではなく、ディレクトリです"
+
+#: file_io.cc:295 file_io.cc:303
+#, c-format
+msgid "file to delete '%s' does not exist"
+msgstr "削除するファイル '%s' は存在しません"
+
+#: file_io.cc:311 file_io.cc:319
+#, c-format
+msgid "directory to delete '%s' does not exist"
+msgstr "削除するディレクトリ '%s' は存在しません"
+
+#: file_io.cc:328 file_io.cc:340
+#, c-format
+msgid "rename source file '%s' does not exist"
+msgstr "名称変更する元のファイル '%s' は存在しません"
+
+#: file_io.cc:330 file_io.cc:342
+#, c-format
+msgid "rename target file '%s' already exists"
+msgstr "名称変更する予定のファイル '%s' は既に存在しています"
+
+#: file_io.cc:352 file_io.cc:364
+#, c-format
+msgid "rename source dir '%s' does not exist"
+msgstr "名称変更する元のディレクトリ '%s' は存在しません"
+
+#: file_io.cc:354 file_io.cc:366
+#, c-format
+msgid "rename target dir '%s' already exists"
+msgstr "名称変更する予定のディレクトリ '%s' は既に存在しています"
+
+#: file_io.cc:419
+msgid "Cannot read standard input multiple times"
+msgstr "標準入力を何度も読み込むことはできません"
+
+#: file_io.cc:510
+#, c-format
+msgid "file '%s' does not exist"
+msgstr "ファイル '%s' は存在しません"
+
+#: file_io.cc:551
+#, c-format
+msgid "removing %s failed"
+msgstr "%s の削除に失敗"
+
+#: file_io.cc:642
+#, c-format
+msgid "ignoring book keeping entry %s\n"
+msgstr "ブックキープエントリ %s を無視します\n"
+
+#: file_io.cc:661
+#, c-format
+msgid "caught runtime error %s constructing file path for %s\n"
+msgstr "%s についてファイルパス作成中に実行時エラー %s 発生\n"
+
+#: file_io.cc:693
+#, c-format
+msgid "no such file or directory: %s"
+msgstr "そのようなファイルまたはディレクトリはありません: %s"
+
+#: keys.cc:42
+#, c-format
+msgid "running arc4 process on %d bytes of data\n"
+msgstr "データ %d バイト目について arc4 プロセスを実行中\n"
+
+#: keys.cc:80
+msgid "got empty passphrase from get_passphrase() hook"
+msgstr "get_passphrase() フックは空のパスフレーズを返しました"
+
+#: keys.cc:96
+msgid "empty passphrase not allowed"
+msgstr "パスフレーズは空にできません"
+
+#: keys.cc:108
+msgid "empty passphrases not allowed, try again\n"
+msgstr "パスフレーズは空にできません. 再度試して下さい\n"
+
+#: keys.cc:109 keys.cc:116
+msgid "too many failed passphrases\n"
+msgstr "パスフレーズについて失敗が多すぎます\n"
+
+#: keys.cc:115
+msgid "passphrases do not match, try again\n"
+msgstr "パスフレーズが不一致. 再度試して下さい\n"
+
+#: keys.cc:122
+msgid "no passphrase given"
+msgstr "パスフレーズを指定して下さい"
+
+#: keys.cc:184
+#, c-format
+msgid "generated %d-byte public key\n"
+msgstr "%d バイトの公開鍵を生成\n"
+
+#: keys.cc:185
+#, c-format
+msgid "generated %d-byte (encrypted) private key\n"
+msgstr "%d バイトの暗号化された秘密鍵を生成しました\n"
+
+#: keys.cc:205 keys.cc:261
+#, c-format
+msgid "building signer from %d-byte decrypted private key\n"
+msgstr "%d バイトの復号化された秘密鍵から署名を作成中\n"
+
+#: keys.cc:254
+#, c-format
+msgid "base64-decoding %d-byte private key\n"
+msgstr "%d バイト秘密鍵の base64 デコード\n"
+
+#: keys.cc:298
+#, c-format
+msgid "produced %d-byte signature\n"
+msgstr "%d バイトの署名を作成\n"
+
+#: keys.cc:326
+#, c-format
+msgid "building verifier for %d-byte pub key\n"
+msgstr "%d バイトの公開鍵について識別子を構築中\n"
+
+#: keys.cc:348
+#, c-format
+msgid "checking %d-byte (%d decoded) signature\n"
+msgstr "%d バイト (%d デコード)の署名を検証中\n"
+
+#: keys.cc:482
+#, c-format
+msgid "no public key '%s' found in database"
+msgstr "データベース内に公開鍵 '%s' はありません"
+
+#: keys.cc:493
+#, c-format
+msgid "passphrase for '%s' is incorrect"
+msgstr "'%s' に対するパスフレーズが間違っています"
+
+#: lua.cc:79
+#, c-format
+msgid "%s\n"
+msgstr "%s\n"
+
+#: lua.cc:91
+msgid "lua istable() failed\n"
+msgstr "lua istable() 失敗\n"
+
+#: lua.cc:97
+msgid "lua stack top > 0 failed\n"
+msgstr "lua スタック top > 0 失敗\n"
+
+#: lua.cc:111
+msgid "lua isfunction() failed in get_fn\n"
+msgstr "lua get_fn 内で isfunction() 失敗\n"
+
+#: lua.cc:123
+msgid "lua istable() failed in get_tab\n"
+msgstr "lua get_tab 内で isfunction() 失敗\n"
+
+#: lua.cc:135
+msgid "lua isstring() failed in get_str\n"
+msgstr "lua get_str 内で isstring() 失敗\n"
+
+#: lua.cc:147
+msgid "lua isnumber() failed in get_num\n"
+msgstr "lua get_num 内で isnumber() 失敗\n"
+
+#: lua.cc:159
+msgid "lua isboolean() failed in get_bool\n"
+msgstr "lua get_bool 内で isboolean() 失敗\n"
+
+#: lua.cc:172
+msgid "lua isstring() failed in extract_str\n"
+msgstr "lua extract_str 内で isstring() 失敗\n"
+
+#: lua.cc:185
+msgid "lua isnumber() failed in extract_int\n"
+msgstr "lua extract_int 内で isnumber() 失敗\n"
+
+#: lua.cc:198
+msgid "lua isnumber() failed in extract_double\n"
+msgstr "lua extract_double 内で isnumber() 失敗\n"
+
+#: lua.cc:212
+msgid "lua isboolean() failed in extract_bool\n"
+msgstr "lua extract_bool 内で isboolean() 失敗\n"
+
+#: lua.cc:228
+msgid "lua istable() failed in begin\n"
+msgstr "lua begin のところで istable() 失敗\n"
+
+#: lua.cc:242
+msgid "lua istable() failed in next\n"
+msgstr "lua next のところで istable() 失敗\n"
+
+#: lua.cc:329
+msgid "lua stack top >= count failed\n"
+msgstr "lua スタック top >= count に失敗\n"
+
+#: lua.cc:501
+msgid "guess_binary called with an invalid parameter"
+msgstr "guess_binary 呼出し時の変数が不適切です"
+
+#: lua.cc:510
+msgid "Include called with an invalid parameter"
+msgstr "Include 呼出し時の変数が不適切です"
+
+#: lua.cc:525
+msgid "IncludeDir called with an invalid parameter"
+msgstr "IncludeDir 呼出し時の変数が不適切です"
+
+#: lua.cc:528
+#, c-format
+msgid "Directory '%s' does not exists"
+msgstr "ディレクトリ '%s' は存在しません"
+
+#: lua.cc:529
+#, c-format
+msgid "'%s' is not a directory"
+msgstr "'%s' はディレクトリではありません"
+
+#: lua.cc:548 lua.cc:675
+#, c-format
+msgid "lua error while loading rcfile '%s'"
+msgstr "初期化ファイル '%s' を読み込み中に lua のエラー"
+
+#: lua.cc:672 lua.cc:685
+#, c-format
+msgid "opening rcfile '%s' ...\n"
+msgstr "初期化ファイル '%s' を開いています...\n"
+
+#: lua.cc:676 lua.cc:688
+#, c-format
+msgid "'%s' is ok\n"
+msgstr "'%s' OK\n"
+
+#: lua.cc:687
+#, c-format
+msgid "lua error while loading '%s'"
+msgstr "lua '%s' を読み込み中にエラー"
+
+#: lua.cc:692
+#, c-format
+msgid "rcfile '%s' does not exist"
+msgstr "初期化ファイル '%s' は存在しません"
+
+#: lua.cc:693
+#, c-format
+msgid "skipping nonexistent rcfile '%s'\n"
+msgstr "存在しない初期化ファイル '%s' をスキップしています\n"
+
+#: manifest.cc:55
+#, c-format
+msgid "scanning file %s\n"
+msgstr "ファイル %s を走査中\n"
+
+#: manifest.cc:188
+#, c-format
+msgid "missing %s"
+msgstr "%s がみつかりません"
+
+#: manifest.cc:201
+#, c-format
+msgid ""
+"%d missing files\n"
+"to restore consistency, on each missing file run either\n"
+"'monotone drop FILE' to remove it permanently, or\n"
+"'monotone revert FILE' to restore it\n"
+msgstr ""
+"一貫性を保つために必要な\n"
+"ファイルが %d 個みつかりません。各々のファイルについて\n"
+"'monotone drop FILE' として恒久的にファイルを削除するか、\n"
+"'monotone revert FILE' として復活させて下さい。\n"
+
+#: merkle_tree.cc:281
+#, c-format
+msgid "node level is %d, exceeds maximum %d"
+msgstr "ノードレベル %d は最大制限 %d を越えています"
+
+#: merkle_tree.cc:317
+#, c-format
+msgid "mismatched node hash value %s, expected %s"
+msgstr "一致しないノードハッシュ値 %s、期待されるのは %s です"
+
+#: monotone.cc:197
+#, c-format
+msgid "problem parsing arguments from file %s: %s"
+msgstr "ファイル %s からの引数を解析中に問題発生: %s"
+
+#: monotone.cc:206
+#, c-format
+msgid "weird error when stuffing arguments read from %s: %s\n"
+msgstr "%s から引数群を読み取り中に予期せぬエラー発生: %s\n"
+
+#: monotone.cc:257
+#, c-format
+msgid "command line: %s\n"
+msgstr "コマンド行: %s\n"
+
+#: monotone.cc:260
+#, c-format
+msgid "set locale: LC_CTYPE=%s, LC_MESSAGES=%s\n"
+msgstr "ロカール設定: LC_CTYPE=%s, LC_MESSAGES=%s\n"
+
+#: monotone.cc:452
+#, c-format
+msgid "syntax error near the \"%s\" option: %s"
+msgstr "\"%s\" オプションの側に構文エラー: %s"
+
+#: monotone.cc:491
+#, c-format
+msgid "monotone %s doesn't use the option %s"
+msgstr "monotone %s: オプション %s は指定できません"
+
+#: monotone.cc:513
+#, c-format
+msgid "Removed 'hidden' from option # %d\n"
+msgstr "オプション # %d から 'hidden' を削除\n"
+
+#: monotone.cc:519 monotone.cc:530
+#, c-format
+msgid "Added 'hidden' to option # %d\n"
+msgstr "オプション # %d に 'hidden' を追加\n"
+
+#: netcmd.cc:42
+#, c-format
+msgid "unknown item type 0x%x for '%s'"
+msgstr "不明な項目タイプ 0x%x ('%s' に対して)"
+
+#: netcmd.cc:89
+#, c-format
+msgid "protocol version mismatch: wanted '%d' got '%d'"
+msgstr ""
+"プロトコルバージョンの不一致: 期待したのは '%d' ですが得たのは '%d' です"
+
+#: netcmd.cc:113
+#, c-format
+msgid "unknown netcmd code 0x%x"
+msgstr "不明な netcmd コード 0x%x"
+
+#: netcmd.cc:124
+#, c-format
+msgid "oversized payload of '%d' bytes"
+msgstr "'%d' バイトの長さ超過のペイロード"
+
+#: netcmd.cc:153
+#, c-format
+msgid ""
+"bad HMAC checksum (got %s, wanted %s)\n"
+"this suggests data was corrupted in transit\n"
+msgstr ""
+"不正な HMAC チェックサム (計算値 %s / 期待値 %s)\n"
+"これは転送中にデータが壊れたことを示唆しています\n"
+
+#: netcmd.cc:230 netcmd.cc:276
+#, c-format
+msgid "unknown role specifier %d"
+msgstr "不明なロール指定子 %d"
+
+#: netcmd.cc:632
+msgid "checking i/o round trip on error_cmd\n"
+msgstr "error_cmd の I/O ラウンドトリップをチェック中\n"
+
+#: netcmd.cc:640
+#, c-format
+msgid "errmsg_cmd test done, buffer was %d bytes\n"
+msgstr "errmsg_cmd テスト完了 (バッファ %d バイト)\n"
+
+#: netcmd.cc:645
+msgid "checking i/o round trip on bye_cmd\n"
+msgstr "bye_cmd の I/O ラウンドトリップをチェック中\n"
+
+#: netcmd.cc:649
+#, c-format
+msgid "bye_cmd test done, buffer was %d bytes\n"
+msgstr "bye_cmd テスト完了 (バッファ %d バイト)\n"
+
+#: netcmd.cc:654
+msgid "checking i/o round trip on hello_cmd\n"
+msgstr "hello_cmd の I/O ラウンドトリップをチェック中\n"
+
+#: netcmd.cc:666
+#, c-format
+msgid "hello_cmd test done, buffer was %d bytes\n"
+msgstr "hello_cmd テスト完了 (バッファ %d バイト)\n"
+
+#: netcmd.cc:671
+msgid "checking i/o round trip on anonymous_cmd\n"
+msgstr "anonymous_cmd の I/O ラウンドトリップをチェック中\n"
+
+#: netcmd.cc:688
+#, c-format
+msgid "anonymous_cmd test done, buffer was %d bytes\n"
+msgstr "anonymous_cmd テスト完了 (バッファ %d バイト)\n"
+
+#: netcmd.cc:693
+msgid "checking i/o round trip on auth_cmd\n"
+msgstr "auth_cmd の I/O ラウンドトリップをチェック中\n"
+
+#: netcmd.cc:718
+#, c-format
+msgid "auth_cmd test done, buffer was %d bytes\n"
+msgstr "auth_cmd テスト完了 (バッファ %d バイト)\n"
+
+#: netcmd.cc:723
+msgid "checking i/o round trip on confirm_cmd\n"
+msgstr "confirm_cmd の I/O ラウンドトリップをチェック中\n"
+
+#: netcmd.cc:729
+#, c-format
+msgid "confirm_cmd test done, buffer was %d bytes\n"
+msgstr "confirm_cmd テスト完了 (バッファ %d バイト)\n"
+
+#: netcmd.cc:734
+msgid "checking i/o round trip on refine_cmd\n"
+msgstr "refine_cmd の I/O ラウンドトリップをチェック中\n"
+
+#: netcmd.cc:752
+#, c-format
+msgid "refine_cmd test done, buffer was %d bytes\n"
+msgstr "refine_cmd テスト完了 (バッファ %d バイト)\n"
+
+#: netcmd.cc:757
+msgid "checking i/o round trip on done_cmd\n"
+msgstr "done_cmd の I/O ラウンドトリップをチェック中\n"
+
+#: netcmd.cc:768
+#, c-format
+msgid "done_cmd test done, buffer was %d bytes\n"
+msgstr "done_cmd テスト完了 (バッファ %d バイト)\n"
+
+#: netcmd.cc:773
+msgid "checking i/o round trip on send_data_cmd\n"
+msgstr "send_data_cmd の I/O ラウンドトリップをチェック中\n"
+
+#: netcmd.cc:784
+#, c-format
+msgid "send_data_cmd test done, buffer was %d bytes\n"
+msgstr "send_data_cmd テスト完了 (バッファ %d バイト)\n"
+
+#: netcmd.cc:789
+msgid "checking i/o round trip on send_delta_cmd\n"
+msgstr "send_delta_cmd の I/O ラウンドトリップをチェック中\n"
+
+#: netcmd.cc:802
+#, c-format
+msgid "send_delta_cmd test done, buffer was %d bytes\n"
+msgstr "send_delta_cmd テスト完了 (バッファ %d バイト)\n"
+
+#: netcmd.cc:807
+msgid "checking i/o round trip on data_cmd\n"
+msgstr "data_cmd の I/O ラウンドトリップをチェック中\n"
+
+#: netcmd.cc:818
+#, c-format
+msgid "data_cmd test done, buffer was %d bytes\n"
+msgstr "data_cmd テスト完了 (バッファ %d バイト)\n"
+
+#: netcmd.cc:823
+msgid "checking i/o round trip on delta_cmd\n"
+msgstr "delta_cmd の I/O ラウンドトリップをチェック中\n"
+
+#: netcmd.cc:838
+#, c-format
+msgid "delta_cmd test done, buffer was %d bytes\n"
+msgstr "delta_cmd テスト完了 (バッファ %d バイト)\n"
+
+#: netcmd.cc:843
+msgid "checking i/o round trip on nonexistant_cmd\n"
+msgstr "nonexistant_cmd の I/O ラウンドトリップをチェック中\n"
+
+#: netcmd.cc:854
+#, c-format
+msgid "nonexistant_cmd test done, buffer was %d bytes\n"
+msgstr "nonexistant_cmd テスト完了 (バッファ %d バイト)\n"
+
+#: netcmd.cc:860
+#, c-format
+msgid "bad decode exception: '%s'\n"
+msgstr "不正なデコードの例外: '%s'\n"
+
+#: netio.hh:37
+#, c-format
+msgid "need %d bytes to decode %s at %d, only have %d"
+msgstr "%d バイト必要 (%s のデコード、位置 %d) ですが %d しかありません"
+
+#: netio.hh:65
+#, c-format
+msgid "uleb128 decode for '%s' into %d-byte datum overflowed"
+msgstr "'%s' について uleb128 デコード; %d バイトオーバーフロー"
+
+#: netio.hh:85
+#, c-format
+msgid "ran out of bytes reading uleb128 value for '%s' at pos %d"
+msgstr "'%s' について uleb128 値を読み込み中にポジション %d でデータ欠損"
+
+#: netio.hh:161
+#, c-format
+msgid "decoding variable length string of %d bytes for '%s', maximum is %d"
+msgstr "%d バイトの可変長文字列 ('%s' について; 最大長 %d) をデコード中"
+
+#: netio.hh:196
+#, c-format
+msgid "expected %s to end at %d, have %d bytes"
+msgstr "予想 %s、終端 %d、読み込み %d バイト"
+
+#: netsync.cc:211
+#, c-format
+msgid "check of '%s' failed"
+msgstr "'%s' のチェックに失敗しました"
+
+#: netsync.cc:703
+msgid "all epochs processed, opening database valve\n"
+msgstr "すべての epoch を処理しました. データベースバルブを開いています\n"
+
+#: netsync.cc:791
+msgid "dropping outgoing netcmd (because we're in error unwind mode)\n"
+msgstr "外向きの netcmd を破棄しています (エラーから回避不能なため)\n"
+
+#: netsync.cc:815
+#, c-format
+msgid "error: %s\n"
+msgstr "エラー: %s\n"
+
+#: netsync.cc:823
+#, c-format
+msgid "analyzing %d entries in manifest\n"
+msgstr "マニフェスト内の %d エントリを解析中\n"
+
+#: netsync.cc:867
+#, c-format
+msgid "revision %s is attached via database\n"
+msgstr "リビジョン %s はデータベースを介して添付されています\n"
+
+#: netsync.cc:872
+#, c-format
+msgid "checking attachment of %s in ancestry\n"
+msgstr "系統内の %s の添付を検証中\n"
+
+#: netsync.cc:879
+#, c-format
+msgid "checking attachment of %s in parent %s\n"
+msgstr "%s の添付(親 %s 内)を検証中\n"
+
+#: netsync.cc:883
+#, c-format
+msgid "revision %s is attached via parent %s\n"
+msgstr "リビジョン %s は親 %s を介して添付されています\n"
+
+#: netsync.cc:889
+#, c-format
+msgid "decided that revision %s %s attached\n"
+msgstr "添付のリビジョン %s %s を決定\n"
+
+#: netsync.cc:956
+#, c-format
+msgid "not requesting (in reverse) initial manifest %s as we already have it\n"
+msgstr ""
+"既に持っている初期マニフェスト %s については(逆向きに)リクエストしません\n"
+
+#: netsync.cc:959
+#, c-format
+msgid "requesting (in reverse) initial manifest data %s\n"
+msgstr "初期マニフェストデータ %s を(逆向きに)リクエストしています\n"
+
+#: netsync.cc:969
+#, c-format
+msgid ""
+"not requesting (in reverse) manifest delta to %s as we already have it\n"
+msgstr ""
+"既に持っている %s のマニフェスト差分については(逆向きに)リクエストしません\n"
+
+#: netsync.cc:972
+#, c-format
+msgid "requesting (in reverse) manifest delta %s -> %s\n"
+msgstr "マニフェスト差分 %s -> %s を(逆向きに)リクエストしています\n"
+
+#: netsync.cc:999
+#, c-format
+msgid "not requesting (in reverse) initial file %s as we already have it\n"
+msgstr ""
+"既に持っている初期化ファイル %s については(逆向きに)リクエストしません\n"
+
+#: netsync.cc:1002
+#, c-format
+msgid "requesting (in reverse) initial file data %s\n"
+msgstr "初期化ファイルデータ %s を(逆向きに)リクエストしています\n"
+
+#: netsync.cc:1012
+#, c-format
+msgid "not requesting (in reverse) file delta to %s as we already have it\n"
+msgstr "既に持っている %s へのファイル差分は(逆向きに)リクエストしません\n"
+
+#: netsync.cc:1015
+#, c-format
+msgid "requesting (in reverse) file delta %s -> %s on %s\n"
+msgstr "ファイル差分 %s -> %s (対象: %s)を(逆向きに)リクエストしています\n"
+
+#: netsync.cc:1047
+#, c-format
+msgid "visiting revision '%s' for forward deltas\n"
+msgstr "前向きの差分についてリビジョン '%s' を見ています\n"
+
+#: netsync.cc:1075
+#, c-format
+msgid "not requesting forward manifest delta to '%s' as we already have it\n"
+msgstr ""
+"既に持っている '%s' への前向きのマニフェスト差分についてはリクエストしませ"
+"ん\n"
+
+#: netsync.cc:1081
+#, c-format
+msgid "requesting full manifest data %s\n"
+msgstr "完全なマニフェストデータ %s をリクエストしています\n"
+
+#: netsync.cc:1086
+#, c-format
+msgid "requesting forward manifest delta %s -> %s\n"
+msgstr "前向きのマニフェスト差分 %s -> %s をリクエストしています\n"
+
+#: netsync.cc:1100
+#, c-format
+msgid ""
+"not requesting forward delta %s -> %s on file %s as we already have it\n"
+msgstr ""
+"既に持っている前向きの差分 %s -> %s (対象ファイル %s) についてはリクエストし"
+"ません\n"
+
+#: netsync.cc:1106
+#, c-format
+msgid "requesting full file data %s\n"
+msgstr "完全なファイルデータ %s をリクエストしています\n"
+
+#: netsync.cc:1112
+#, c-format
+msgid "requesting forward delta %s -> %s on file %s\n"
+msgstr "前方向の差分 %s -> %s (対象ファイル %s) をリクエストしています\n"
+
+#: netsync.cc:1142
+#, c-format
+msgid "analyzing %d ancestry edges\n"
+msgstr "%d ancestry の端を解析中\n"
+
+#: netsync.cc:1198
+#, c-format
+msgid "Dropping branch certs for unwanted branch %s"
+msgstr "希望しないブランチ %s のブランチ証明を削除中"
+
+#: netsync.cc:1253
+#, c-format
+msgid "isolated %d heads\n"
+msgstr "孤立した %d ヘッド\n"
+
+#: netsync.cc:1280
+#, c-format
+msgid "requesting attached ancestry of revision '%s'\n"
+msgstr "リビジョン '%s' に付随する系統をリクエスト中\n"
+
+#: netsync.cc:1285
+#, c-format
+msgid "requesting detached ancestry of revision '%s'\n"
+msgstr "リビジョン '%s' から遊離した系統をリクエスト中\n"
+
+#: netsync.cc:1319
+#, c-format
+msgid "read %d bytes from fd %d (peer %s)\n"
+msgstr "%d バイト読み込み: fd %d (ピーア %s)\n"
+
+#: netsync.cc:1322
+msgid "in error unwind mode, so throwing them into the bit bucket\n"
+msgstr "エラー復帰モードなので、これらをビットバケット中に捨てます\n"
+
+#: netsync.cc:1354
+#, c-format
+msgid "wrote %d bytes to fd %d (peer %s)\n"
+msgstr "%d バイト書き込み: fd %d (ピーア %s)\n"
+
+#: netsync.cc:1362
+msgid "finished flushing output queue in error unwind mode, disconnecting\n"
+msgstr "エラー復帰モードで出力キューフラッシュ完了、切断中\n"
+
+#: netsync.cc:1376
+msgid "queueing 'bye' command\n"
+msgstr "'bye' コマンドをキューに追加しています\n"
+
+#: netsync.cc:1386
+msgid "queueing 'error' command\n"
+msgstr "'error' コマンドをキューに追加しています\n"
+
+#: netsync.cc:1399
+#, c-format
+msgid "queueing 'done' command for %s level %s\n"
+msgstr "'%s' (レベル %s) について 'done' コマンドをキューに追加しています\n"
+
+#: netsync.cc:1475
+#, c-format
+msgid "queueing request for refinement of %s node '%s', level %d\n"
+msgstr "%s ノード '%s', レベル %d の微調整リクエストをキューに追加しています\n"
+
+#: netsync.cc:1493
+#, c-format
+msgid "not queueing request for %s '%s' as we are in pure source role\n"
+msgstr ""
+"純粋なソースの役割を果しているので %s '%s' のリクエストはキューに追加しませ"
+"ん\n"
+
+#: netsync.cc:1500
+#, c-format
+msgid "not queueing request for %s '%s' as we already requested it\n"
+msgstr "既にリクエスト済みの %s '%s' はキューに追加しません\n"
+
+#: netsync.cc:1505
+#, c-format
+msgid "queueing request for data of %s item '%s'\n"
+msgstr "%s 項目 '%s' のデータについてリクエストをキューに追加しています\n"
+
+#: netsync.cc:1529
+#, c-format
+msgid ""
+"not queueing request for %s delta '%s' -> '%s' as we are in pure source "
+"role\n"
+msgstr ""
+"純粋なソースの役割を果しているので %s 差分 '%s' -> '%s' についてリクエストを"
+"キューに追加しません\n"
+
+#: netsync.cc:1536
+#, c-format
+msgid ""
+"not queueing request for %s delta '%s' -> '%s' as we already requested the "
+"target\n"
+msgstr ""
+"既にリクエスト済みなので %s 差分 '%s' -> '%s' についてリクエストをキューに追"
+"加しません\n"
+
+#: netsync.cc:1541
+#, c-format
+msgid "queueing request for contents of %s delta '%s' -> '%s'\n"
+msgstr ""
+"%s 差分 '%s' -> '%s' の内容についてリクエストをキューに追加しています\n"
+
+#: netsync.cc:1561
+#, c-format
+msgid "not queueing %s data for '%s' as we are in pure sink role\n"
+msgstr ""
+"純粋なシンクの役割を果しているので %s データ (対象: '%s' )をキューに追加しま"
+"せん\n"
+
+#: netsync.cc:1566
+#, c-format
+msgid "queueing %d bytes of data for %s item '%s'\n"
+msgstr "%d バイト (%s 項目 '%s' のデータ)をキューに追加しています\n"
+
+#: netsync.cc:1591
+#, c-format
+msgid "not queueing %s delta '%s' -> '%s' as we are in pure sink role\n"
+msgstr ""
+"純粋なシンクの役割を果しているので %s 差分 '%s' -> '%s' をキューに追加しませ"
+"ん\n"
+
+#: netsync.cc:1596
+#, c-format
+msgid "queueing %s delta '%s' -> '%s'\n"
+msgstr "%s 差分 '%s' -> '%s' をキューに追加しています\n"
+
+#: netsync.cc:1614
+#, c-format
+msgid ""
+"not queueing note of nonexistence of %s item '%s' as we are in pure sink "
+"role\n"
+msgstr ""
+"純粋なシンクの役割を果しているので %s 項目 '%s' がないことについてノートを"
+"キューに追加しません\n"
+
+#: netsync.cc:1619
+#, c-format
+msgid "queueing note of nonexistance of %s item '%s'\n"
+msgstr "%s 項目 '%s' がないことについてノートをキューに追加しています\n"
+
+#: netsync.cc:1631
+msgid "received 'bye' netcmd\n"
+msgstr "'bye' netcmd を受信\n"
+
+#: netsync.cc:1639
+#, c-format
+msgid "received network error: %s\n"
+msgstr "ネットワークエラーを受信: %s\n"
+
+#: netsync.cc:1656
+#, c-format
+msgid "received 'done' for empty %s level %d, marking as complete\n"
+msgstr "空の %s レベル %d について 'done' 受信, 完了としてマーク\n"
+
+#: netsync.cc:1678
+#, c-format
+msgid ""
+"received 'done' for %s level %d, which had refinements; sending echo of done "
+"for level %d\n"
+msgstr ""
+"微調整を含んでいた %s レベル %d について 'done' 受信;レベル %d の各 'done' に"
+"ついて送信\n"
+
+#: netsync.cc:1711
+#, c-format
+msgid "server key has name %s, hash %s\n"
+msgstr "サーバー鍵の名前 %s、ハッシュ %s\n"
+
+#: netsync.cc:1719 netsync.cc:1721
+msgid "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n"
+msgstr "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n"
+
+#: netsync.cc:1720
+msgid "@ WARNING: SERVER IDENTIFICATION HAS CHANGED @\n"
+msgstr "@ 警告: サーバー ID が変更されました @\n"
+
+#: netsync.cc:1722
+msgid "IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY\n"
+msgstr "誰か何か悪いことをしている可能性があります\n"
+
+#: netsync.cc:1723
+msgid "it is also possible that the server key has just been changed\n"
+msgstr "または単にサーバーの鍵が変更されたのかもしれません\n"
+
+#: netsync.cc:1724
+#, c-format
+msgid "remote host sent key %s\n"
+msgstr "リモートホストは鍵 %s を送信\n"
+
+#: netsync.cc:1725
+#, c-format
+msgid "I expected %s\n"
+msgstr "期待値 %s\n"
+
+#: netsync.cc:1726
+#, c-format
+msgid "'monotone unset %s %s' overrides this check\n"
+msgstr "'monotone unset %s %s' とするとこのチェックは上書きされます\n"
+
+#: netsync.cc:1728
+msgid "server key changed"
+msgstr "サーバー鍵が変更されました"
+
+#: netsync.cc:1733
+#, c-format
+msgid "first time connecting to server %s\n"
+msgstr "サーバー %s への初めての接続\n"
+
+#: netsync.cc:1734
+msgid "I'll assume it's really them, but you might want to double-check\n"
+msgstr "偽物でないとは思いますが、鍵の指紋を二重チェックして\n"
+
+#: netsync.cc:1735
+#, c-format
+msgid "their key's fingerprint: %s\n"
+msgstr "確かめることができます: %s\n"
+
+#: netsync.cc:1740
+#, c-format
+msgid "saving public key for %s to database\n"
+msgstr "%s の公開鍵をデータベースに保存中\n"
+
+#: netsync.cc:1747
+#, c-format
+msgid "received 'hello' netcmd from server '%s' with nonce '%s'\n"
+msgstr "サーバー '%s' から nonce '%s' と一緒に 'hello' netcmd を受信\n"
+
+#: netsync.cc:1828
+msgid "rejected attempt at anonymous connection for write\n"
+msgstr "匿名接続からの書き込みを拒否\n"
+
+#: netsync.cc:1835
+msgid "rejected attempt at anonymous connection while running as sink\n"
+msgstr "シンクとして実行中の匿名接続からの書き込みを拒否\n"
+
+#: netsync.cc:1852
+#, c-format
+msgid "anonymous access to branch '%s' denied by server"
+msgstr "ブランチ '%s' への匿名アクセスはサーバーによって拒否されました"
+
+#: netsync.cc:1857
+#, c-format
+msgid "allowed anonymous read permission for '%s' excluding '%s'\n"
+msgstr "'%s' ('%s' を除く)への匿名読み込みを許可しました\n"
+
+#: netsync.cc:1889
+msgid "detected replay attack in auth netcmd\n"
+msgstr "auth netcmd 中に繰り返し攻撃を検出\n"
+
+#: netsync.cc:1910
+#, c-format
+msgid "remote public key hash '%s' is unknown\n"
+msgstr "リモートの公開鍵ハッシュ '%s' は不明なものです\n"
+
+#: netsync.cc:1926
+#, c-format
+msgid ""
+"denied '%s' read permission for '%s' excluding '%s' while running as pure "
+"sink\n"
+msgstr ""
+"純粋シンクとして実行中の '%s' の読み込み権限 ('%s' について; '%s' を除く) を拒否しました\n"
+
+#: netsync.cc:1942
+#, c-format
+msgid ""
+"denied '%s' read permission for '%s' excluding '%s' because of branch '%s'\n"
+msgstr ""
+"'%s' の読み込み権限 ('%s' について; '%s' を除く)をブランチ '%s' のために拒否しました\n"
+
+#: netsync.cc:1944
+#, c-format
+msgid "access to branch '%s' denied by server"
+msgstr "ブランチ '%s' へのアクセスはサーバーによって拒否されました"
+
+#: netsync.cc:1952
+#, c-format
+msgid "allowed '%s' read permission for '%s' excluding '%s'\n"
+msgstr "'%s' の '%s' ('%s' を除く)への匿名での読み込みを許可しました\n"
+
+#: netsync.cc:1961
+#, c-format
+msgid ""
+"denied '%s' write permission for '%s' excluding '%s' while running as pure "
+"source\n"
+msgstr ""
+"純粋ソースとして実行中の '%s' の書き込み権限 ('%s' について; '%s' を除く) を拒否しました\n"
+
+#: netsync.cc:1969
+#, c-format
+msgid "denied '%s' write permission for '%s' excluding '%s'\n"
+msgstr "'%s' の '%s' ('%s' を除く)への書き込みを拒否しました\n"
+
+#: netsync.cc:1975
+#, c-format
+msgid "allowed '%s' write permission for '%s' excluding '%s'\n"
+msgstr "'%s' の書き込み権限 ('%s' について; '%s' を除く) を許可\n"
+
+#: netsync.cc:1990
+msgid "client signature OK, accepting authentication\n"
+msgstr "クライアント署名 OK、認証完了\n"
+
+#: netsync.cc:2012
+msgid "bad client signature\n"
+msgstr "不正なクライアント署名\n"
+
+#: netsync.cc:2027
+#, c-format
+msgid ""
+"received 'confirm' netcmd from server '%s' for pattern '%s' exclude '%s' in %"
+"s mode\n"
+msgstr ""
+"サーバー '%s' からパターン '%s' ('%s' を除く; %s モード)への 'confirm' netcmd を受信\n"
+
+#: netsync.cc:2043
+msgid "server signature OK, accepting authentication\n"
+msgstr "サーバー署名 OK、認証完了\n"
+
+#: netsync.cc:2048
+msgid "bad server signature\n"
+msgstr "不正なサーバー署名\n"
+
+#: netsync.cc:2053
+msgid "unknown server key\n"
+msgstr "不明なサーバー鍵\n"
+
+#: netsync.cc:2122
+#, c-format
+msgid "epoch with hash '%s' does not exist in our database"
+msgstr "こちらのデータベースにはハッシュ '%s' の epoch は含まれていません"
+
+#: netsync.cc:2132
+#, c-format
+msgid "public key '%s' is also called '%s'\n"
+msgstr "公開鍵 '%s' の別名は '%s' です\n"
+
+#: netsync.cc:2137
+#, c-format
+msgid "public key '%s' does not exist in our database"
+msgstr "こちらのデータベースには公開鍵 '%s' は含まれていません"
+
+#: netsync.cc:2151
+#, c-format
+msgid "revision '%s' does not exist in our database"
+msgstr "こちらのデータベースにはリビジョン '%s' は含まれていません"
+
+#: netsync.cc:2165
+#, c-format
+msgid "manifest '%s' does not exist in our database"
+msgstr "こちらのデータベースにはマニフェスト '%s' は含まれていません"
+
+#: netsync.cc:2179
+#, c-format
+msgid "file '%s' does not exist in our database"
+msgstr "こちらのデータベースにはファイル '%s' は含まれていません"
+
+#: netsync.cc:2193
+#, c-format
+msgid "cert '%s' does not exist in our database"
+msgstr "こちらのデータベースには証明 '%s' は含まれていません"
+
+#: netsync.cc:2212
+#, c-format
+msgid "received 'refine' netcmd on %s node '%s', level %d\n"
+msgstr "%s ノード '%s'、レベル %d で 'refine' netcmd を受信\n"
+
+# CHECKED1
+#: netsync.cc:2217
+#, c-format
+msgid "no corresponding %s merkle node for prefix '%s', level %d\n"
+msgstr ""
+"相当する %s merkle ノード(対象: プレフィクス '%s'、レベル %d)を持っています\n"
+
+#: netsync.cc:2227
+#, c-format
+msgid ""
+"(#0) they have an empty slot %d (in a %s node '%s', level %d, we do not "
+"have)\n"
+msgstr ""
+"(#0) こちらにはない空のスロット %d (%s ノード '%s' 内, レベル %d) を持ってい"
+"ます\n"
+
+#: netsync.cc:2239
+#, c-format
+msgid ""
+"(#0) they have a live leaf at slot %d (in a %s node '%s', level %d, we do "
+"not have)\n"
+msgstr ""
+"(#0) こちらにはないスロット %d (%s ノード '%s' 内, レベル %d) に生きたリーフ"
+"を持っています\n"
+
+#: netsync.cc:2241
+#, c-format
+msgid "(#0) requesting their %s leaf %s\n"
+msgstr "(#0) %s リーフ %s をリクエストしています\n"
+
+#: netsync.cc:2248
+#, c-format
+msgid ""
+"(#0) they have a dead leaf at slot %d (in a %s node '%s', level %d, we do "
+"not have)\n"
+msgstr ""
+"(#0) こちらにはないスロット %d (%s ノード '%s 内, レベル %d) に死んだリーフが"
+"あります\n"
+
+#: netsync.cc:2256
+#, c-format
+msgid ""
+"(#0) they have a subtree at slot %d (in a %s node '%s', level %d, we do not "
+"have)\n"
+msgstr ""
+"(#0) こちらにはないスロット %d (%s ノード '%s' 内, レベル %d) にサブツリーを"
+"持っています\n"
+
+#: netsync.cc:2272
+#, c-format
+msgid "found corresponding %s merkle node for prefix '%s', level %d\n"
+msgstr ""
+"相当する %s merkle ノード (対象: プレフィクス '%s', レベル %d)をみつけまし"
+"た\n"
+
+#: netsync.cc:2286
+#, c-format
+msgid ""
+"(#1) they have an empty slot %d in %s node '%s', level %d, and so do we\n"
+msgstr ""
+"(#1) こちらにもある空のスロット %d (%s ノード '%s' 内, レベル %d)を持っていま"
+"す\n"
+
+#: netsync.cc:2293
+#, c-format
+msgid ""
+"(#2) they have an empty slot %d in %s node '%s', level %d, we have a live "
+"leaf\n"
+msgstr ""
+"(#2) こちら側では生きたリーフのある空のスロット %d (%s ノード '%s' 内, レベ"
+"ル %d) を持っています\n"
+
+#: netsync.cc:2307
+#, c-format
+msgid ""
+"(#3) they have an empty slot %d in %s node '%s', level %d, we have a dead "
+"leaf\n"
+msgstr ""
+"(#3) こちら側では死んだリーフのある空のスロット %d (%s ノード '%s' 内, レベ"
+"ル %d) を持っています\n"
+
+#: netsync.cc:2314
+#, c-format
+msgid ""
+"(#4) they have an empty slot %d in %s node '%s', level %d, we have a "
+"subtree\n"
+msgstr ""
+"(#4) こちらではサブツリーのある空のスロット %d (%s ノード '%s' 内, レベル %"
+"d) を持っています\n"
+
+#: netsync.cc:2341
+#, c-format
+msgid ""
+"(#5) they have a live leaf at slot %d in %s node '%s', level %d, we have "
+"nothing\n"
+msgstr ""
+"(#5) こちらにはないスロット %d (%s ノード '%s' 内, レベル %d) に生きたリーフ"
+"を持っています\n"
+
+#: netsync.cc:2352
+#, c-format
+msgid "(#6) they have a live leaf at slot %d in %s node '%s', and so do we\n"
+msgstr ""
+"(#6) こちらにもあるスロット %d (%s ノード '%s' 内) に生きたリーフを持っていま"
+"す\n"
+
+#: netsync.cc:2362
+#, c-format
+msgid "(#6) we both have live %s leaf '%s'\n"
+msgstr "(#6) 両方とも生きた %s リーフ '%s' を持っています\n"
+
+#: netsync.cc:2378
+#, c-format
+msgid ""
+"(#7) they have a live leaf at slot %d in %s node %s, level %d, we have a "
+"dead one\n"
+msgstr ""
+"(#7) こちら側では生きていない、生きたリーフをスロット %d (%s ノード %s、レベ"
+"ル %d) に持っています\n"
+
+#: netsync.cc:2388
+#, c-format
+msgid "(#7) it's the same %s leaf '%s', but ours is dead\n"
+msgstr "(#7) 同じ %s リーフ '%s' ですがこちらのものは死んでいます\n"
+
+#: netsync.cc:2401
+#, c-format
+msgid ""
+"(#8) they have a live leaf in slot %d of %s node '%s', level %d, we have a "
+"subtree\n"
+msgstr ""
+"(#8) こちらではサブツリーを持つ、生きたリーフをスロット %d (%s ノード %s、レ"
+"ベル %d) に持っています\n"
+
+#: netsync.cc:2410
+#, c-format
+msgid ""
+"(#8) we have a copy of their live leaf '%s' in slot %d of %s node '%s', "
+"level %d\n"
+msgstr ""
+"(#8) 生きたリーフ '%s' (スロット %d, %s ノード '%s'、レベル %d) のコピーを"
+"持っています\n"
+
+#: netsync.cc:2414
+#, c-format
+msgid ""
+"(#8) requesting a copy of their live leaf '%s' in slot %d of %s node '%s', "
+"level %d\n"
+msgstr ""
+"(#8) 生きたリーフ '%s' (スロット %d, %s ノード '%s'、レベル %d) のコピーをリ"
+"クエストしています\n"
+
+#: netsync.cc:2419
+#, c-format
+msgid ""
+"(#8) sending our subtree for refinement, in slot %d of %s node '%s', level %"
+"d\n"
+msgstr ""
+"(#8) 再調整のためにスロット %d (%s ノード '%s', レベル %d)のサブツリーを送信"
+"しています\n"
+
+#: netsync.cc:2442
+#, c-format
+msgid ""
+"(#9) they have a dead leaf at slot %d in %s node '%s', level %d, we have "
+"nothing\n"
+msgstr ""
+"(#9) こちらにはない、死んだリーフをスロット %d (%s ノード '%s' 内、レベル %"
+"d) に持っています\n"
+
+#: netsync.cc:2449
+#, c-format
+msgid ""
+"(#10) they have a dead leaf at slot %d in %s node '%s', level %d, we have a "
+"live one\n"
+msgstr ""
+"(#10) こちらでは生きている、死んだリーフをスロット %d (%s ノード '%s' 内、レ"
+"ベル %d)に持っています\n"
+
+#: netsync.cc:2459
+#, c-format
+msgid "(#10) we both have %s leaf %s, theirs is dead\n"
+msgstr ""
+"(#10) 双方とも %s リーフ %s を持っていますが、彼らのものは死んでいます\n"
+
+#: netsync.cc:2475
+#, c-format
+msgid ""
+"(#11) they have a dead leaf at slot %d in %s node '%s', level %d, so do we\n"
+msgstr ""
+"(#11) こちらにもある、死んだリーフをスロット %d (%s ノード '%s' 内、レ