Add a curses terminal interface as an alternative to QT #666
|
@ -68,8 +68,8 @@ cd PyBitmessage && python src/bitmessagemain.py
|
||||||
```
|
```
|
||||||
|
|
||||||
##Creating a package for installation
|
##Creating a package for installation
|
||||||
If you really want, you can make a package for PyBitmessage which you may
|
If you really want, you can make a package for PyBitmessage, which you may
|
||||||
install yourself or distribute to friends. This isn't reccomended, since
|
install yourself or distribute to friends. This isn't recommended, since
|
||||||
PyBitmessage is in Beta, and subject to frequent change.
|
PyBitmessage is in Beta, and subject to frequent change.
|
||||||
|
|
||||||
####Linux
|
####Linux
|
||||||
|
@ -78,7 +78,7 @@ First off, since PyBitmessage uses something nifty called
|
||||||
[packagemonkey](https://github.com/fuzzgun/packagemonkey), go ahead and get
|
[packagemonkey](https://github.com/fuzzgun/packagemonkey), go ahead and get
|
||||||
that installed. You may have to build it from source.
|
that installed. You may have to build it from source.
|
||||||
|
|
||||||
Next, edit the generate.sh script. To your liking.
|
Next, edit the generate.sh script to your liking.
|
||||||
|
|
||||||
Now, run the appropriate script for the type of package you'd like to make
|
Now, run the appropriate script for the type of package you'd like to make
|
||||||
```
|
```
|
||||||
|
|
|
@ -4,7 +4,7 @@ PyBitmessage
|
||||||
Bitmessage is a P2P communications protocol used to send encrypted messages to
|
Bitmessage is a P2P communications protocol used to send encrypted messages to
|
||||||
another person or to many subscribers. It is decentralized and trustless,
|
another person or to many subscribers. It is decentralized and trustless,
|
||||||
meaning that you need-not inherently trust any entities like root certificate
|
meaning that you need-not inherently trust any entities like root certificate
|
||||||
authorities. It uses strong authentication which means that the sender of a
|
authorities. It uses strong authentication, which means that the sender of a
|
||||||
message cannot be spoofed, and it aims to hide "non-content" data, like the
|
message cannot be spoofed, and it aims to hide "non-content" data, like the
|
||||||
sender and receiver of messages, from passive eavesdroppers like those running
|
sender and receiver of messages, from passive eavesdroppers like those running
|
||||||
warrantless wiretapping programs.
|
warrantless wiretapping programs.
|
||||||
|
|
6
arch.sh
6
arch.sh
|
@ -24,14 +24,14 @@ sed -i 's/-'${PREV_VERSION}'.so/-'${VERSION}'.so/g' debian/*.links
|
||||||
make clean
|
make clean
|
||||||
rm -f archpackage/*.gz
|
rm -f archpackage/*.gz
|
||||||
|
|
||||||
# having the root directory called name-version seems essential
|
# Having the root directory called name-version seems essential
|
||||||
mv ../${APP} ../${APP}-${VERSION}
|
mv ../${APP} ../${APP}-${VERSION}
|
||||||
tar -cvzf ${SOURCE} ../${APP}-${VERSION} --exclude-vcs
|
tar -cvzf ${SOURCE} ../${APP}-${VERSION} --exclude-vcs
|
||||||
|
|
||||||
# rename the root directory without the version number
|
# Rename the root directory without the version number
|
||||||
mv ../${APP}-${VERSION} ../${APP}
|
mv ../${APP}-${VERSION} ../${APP}
|
||||||
|
|
||||||
# calculate the MD5 checksum
|
# Calculate the MD5 checksum
|
||||||
CHECKSM=$(md5sum ${SOURCE})
|
CHECKSM=$(md5sum ${SOURCE})
|
||||||
sed -i "s/md5sums[^)]*)/md5sums=(${CHECKSM%% *})/g" archpackage/PKGBUILD
|
sed -i "s/md5sums[^)]*)/md5sums=(${CHECKSM%% *})/g" archpackage/PKGBUILD
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,7 @@ sed -i 's/-'${PREV_VERSION}'.so/-'${VERSION}'.so/g' debian/*.links
|
||||||
make clean
|
make clean
|
||||||
make
|
make
|
||||||
|
|
||||||
# change the parent directory name to debian format
|
# Change the parent directory name to Debian format
|
||||||
mv ../${APP} ../${DIR}
|
mv ../${APP} ../${DIR}
|
||||||
|
|
||||||
# Create a source archive
|
# Create a source archive
|
||||||
|
@ -38,9 +38,9 @@ make source
|
||||||
# Build the package
|
# Build the package
|
||||||
dpkg-buildpackage -F
|
dpkg-buildpackage -F
|
||||||
|
|
||||||
# sign files
|
# Sign files
|
||||||
gpg -ba ../${APP}_${VERSION}-1_${ARCH_TYPE}.deb
|
gpg -ba ../${APP}_${VERSION}-1_${ARCH_TYPE}.deb
|
||||||
gpg -ba ../${APP}_${VERSION}.orig.tar.gz
|
gpg -ba ../${APP}_${VERSION}.orig.tar.gz
|
||||||
|
|
||||||
# restore the parent directory name
|
# Restore the parent directory name
|
||||||
mv ../${DIR} ../${APP}
|
mv ../${DIR} ../${APP}
|
||||||
|
|
|
@ -21,13 +21,13 @@ sed -i "s/|${PREV_VERSION}|/|${VERSION}|/g" puppypackage/*.specs
|
||||||
sed -i 's/VERSION='${PREV_VERSION}'/VERSION='${VERSION}'/g' puppypackage/pinstall.sh puppypackage/puninstall.sh
|
sed -i 's/VERSION='${PREV_VERSION}'/VERSION='${VERSION}'/g' puppypackage/pinstall.sh puppypackage/puninstall.sh
|
||||||
sed -i 's/-'${PREV_VERSION}'.so/-'${VERSION}'.so/g' debian/*.links
|
sed -i 's/-'${PREV_VERSION}'.so/-'${VERSION}'.so/g' debian/*.links
|
||||||
|
|
||||||
# create the source code in the SOURCES directory
|
# Create the source code in the SOURCES directory
|
||||||
make clean
|
make clean
|
||||||
mkdir -p ~/ebuild
|
mkdir -p ~/ebuild
|
||||||
rm -f ${SOURCE}
|
rm -f ${SOURCE}
|
||||||
mv ../${APP} ../${APP}-${VERSION}
|
mv ../${APP} ../${APP}-${VERSION}
|
||||||
tar -cvzf ${SOURCE} ../${APP}-${VERSION} --exclude-vcs
|
tar -cvzf ${SOURCE} ../${APP}-${VERSION} --exclude-vcs
|
||||||
|
|
||||||
# rename the root directory without the version number
|
# Rename the root directory without the version number
|
||||||
mv ../${APP}-${VERSION} ../${APP}
|
mv ../${APP}-${VERSION} ../${APP}
|
||||||
|
|
||||||
|
|
12
rpm.sh
12
rpm.sh
|
@ -24,25 +24,25 @@ sed -i 's/-'${PREV_VERSION}'.so/-'${VERSION}'.so/g' debian/*.links
|
||||||
sudo yum groupinstall "Development Tools"
|
sudo yum groupinstall "Development Tools"
|
||||||
sudo yum install rpmdevtools
|
sudo yum install rpmdevtools
|
||||||
|
|
||||||
# setup the rpmbuild directory tree
|
# Setup the rpmbuild directory tree
|
||||||
rpmdev-setuptree
|
rpmdev-setuptree
|
||||||
|
|
||||||
# create the source code in the SOURCES directory
|
# Create the source code in the SOURCES directory
|
||||||
make clean
|
make clean
|
||||||
mkdir -p ~/rpmbuild/SOURCES
|
mkdir -p ~/rpmbuild/SOURCES
|
||||||
rm -f ${SOURCE}
|
rm -f ${SOURCE}
|
||||||
|
|
||||||
# having the root directory called name-version seems essential
|
# Having the root directory called name-version seems essential
|
||||||
mv ../${APP} ../${APP}-${VERSION}
|
mv ../${APP} ../${APP}-${VERSION}
|
||||||
tar -cvzf ${SOURCE} ../${APP}-${VERSION} --exclude-vcs
|
tar -cvzf ${SOURCE} ../${APP}-${VERSION} --exclude-vcs
|
||||||
|
|
||||||
# rename the root directory without the version number
|
# Rename the root directory without the version number
|
||||||
mv ../${APP}-${VERSION} ../${APP}
|
mv ../${APP}-${VERSION} ../${APP}
|
||||||
|
|
||||||
# copy the spec file into the SPECS directory
|
# Copy the spec file into the SPECS directory
|
||||||
cp -f rpmpackage/${APP}.spec ~/rpmbuild/SPECS
|
cp -f rpmpackage/${APP}.spec ~/rpmbuild/SPECS
|
||||||
|
|
||||||
# build
|
# Build
|
||||||
cd ~/rpmbuild/SPECS
|
cd ~/rpmbuild/SPECS
|
||||||
rpmbuild -ba ${APP}.spec
|
rpmbuild -ba ${APP}.spec
|
||||||
cd ${CURRDIR}
|
cd ${CURRDIR}
|
||||||
|
|
|
@ -34,6 +34,7 @@ import hashlib
|
||||||
from pyelliptic.openssl import OpenSSL
|
from pyelliptic.openssl import OpenSSL
|
||||||
import pickle
|
import pickle
|
||||||
import platform
|
import platform
|
||||||
|
import textwrap
|
||||||
import debug
|
import debug
|
||||||
from debug import logger
|
from debug import logger
|
||||||
import subprocess
|
import subprocess
|
||||||
|
@ -771,7 +772,7 @@ class MyForm(QtGui.QMainWindow):
|
||||||
|
|
||||||
if shared.config.has_section(fromAddress):
|
if shared.config.has_section(fromAddress):
|
||||||
fromLabel = shared.config.get(fromAddress, 'label')
|
fromLabel = shared.config.get(fromAddress, 'label')
|
||||||
if fromLabel == '':
|
else:
|
||||||
fromLabel = fromAddress
|
fromLabel = fromAddress
|
||||||
|
|
||||||
toLabel = ''
|
toLabel = ''
|
||||||
|
@ -2250,6 +2251,8 @@ class MyForm(QtGui.QMainWindow):
|
||||||
self.settingsDialogInstance.ui.checkBoxWillinglySendToMobile.isChecked()))
|
self.settingsDialogInstance.ui.checkBoxWillinglySendToMobile.isChecked()))
|
||||||
shared.config.set('bitmessagesettings', 'useidenticons', str(
|
shared.config.set('bitmessagesettings', 'useidenticons', str(
|
||||||
self.settingsDialogInstance.ui.checkBoxUseIdenticons.isChecked()))
|
self.settingsDialogInstance.ui.checkBoxUseIdenticons.isChecked()))
|
||||||
|
shared.config.set('bitmessagesettings', 'replybelow', str(
|
||||||
|
self.settingsDialogInstance.ui.checkBoxReplyBelow.isChecked()))
|
||||||
|
|
||||||
lang_ind = int(self.settingsDialogInstance.ui.languageComboBox.currentIndex())
|
lang_ind = int(self.settingsDialogInstance.ui.languageComboBox.currentIndex())
|
||||||
if not languages[lang_ind] == 'other':
|
if not languages[lang_ind] == 'other':
|
||||||
|
@ -2613,6 +2616,28 @@ class MyForm(QtGui.QMainWindow):
|
||||||
# We could also select upwards, but then our problem would be with the topmost message.
|
# We could also select upwards, but then our problem would be with the topmost message.
|
||||||
# self.ui.tableWidgetInbox.clearSelection() manages to mark the message as read again.
|
# self.ui.tableWidgetInbox.clearSelection() manages to mark the message as read again.
|
||||||
|
|
||||||
|
# Format predefined text on message reply.
|
||||||
|
def quoted_text(self, message):
|
||||||
|
if not shared.safeConfigGetBoolean('bitmessagesettings', 'replybelow'):
|
||||||
|
return '\n\n------------------------------------------------------\n' + message
|
||||||
|
|
||||||
|
quoteWrapper = textwrap.TextWrapper(replace_whitespace = False,
|
||||||
|
initial_indent = '> ',
|
||||||
|
subsequent_indent = '> ',
|
||||||
|
break_long_words = False,
|
||||||
|
break_on_hyphens = False)
|
||||||
|
def quote_line(line):
|
||||||
|
# Do quote empty lines.
|
||||||
|
if line == '' or line.isspace():
|
||||||
|
return '> '
|
||||||
|
# Quote already quoted lines, but do not wrap them.
|
||||||
|
elif line[0:2] == '> ':
|
||||||
|
return '> ' + line
|
||||||
|
# Wrap and quote lines/paragraphs new to this message.
|
||||||
|
else:
|
||||||
|
return quoteWrapper.fill(line)
|
||||||
|
return '\n'.join([quote_line(l) for l in message.splitlines()]) + '\n\n'
|
||||||
|
|
||||||
def on_action_InboxReply(self):
|
def on_action_InboxReply(self):
|
||||||
currentInboxRow = self.ui.tableWidgetInbox.currentRow()
|
currentInboxRow = self.ui.tableWidgetInbox.currentRow()
|
||||||
toAddressAtCurrentInboxRow = str(self.ui.tableWidgetInbox.item(
|
toAddressAtCurrentInboxRow = str(self.ui.tableWidgetInbox.item(
|
||||||
|
@ -2655,7 +2680,8 @@ class MyForm(QtGui.QMainWindow):
|
||||||
else:
|
else:
|
||||||
self.ui.comboBoxSendFrom.setCurrentIndex(0)
|
self.ui.comboBoxSendFrom.setCurrentIndex(0)
|
||||||
|
|
||||||
self.ui.textEditMessage.setText('\n\n------------------------------------------------------\n' + unicode(messageAtCurrentInboxRow, 'utf-8)'))
|
quotedText = self.quoted_text(unicode(messageAtCurrentInboxRow, 'utf-8'))
|
||||||
|
self.ui.textEditMessage.setText(quotedText)
|
||||||
if self.ui.tableWidgetInbox.item(currentInboxRow, 2).text()[0:3] in ['Re:', 'RE:']:
|
if self.ui.tableWidgetInbox.item(currentInboxRow, 2).text()[0:3] in ['Re:', 'RE:']:
|
||||||
self.ui.lineEditSubject.setText(
|
self.ui.lineEditSubject.setText(
|
||||||
self.ui.tableWidgetInbox.item(currentInboxRow, 2).text())
|
self.ui.tableWidgetInbox.item(currentInboxRow, 2).text())
|
||||||
|
@ -3318,9 +3344,11 @@ class settingsDialog(QtGui.QDialog):
|
||||||
shared.safeConfigGetBoolean('bitmessagesettings', 'willinglysendtomobile'))
|
shared.safeConfigGetBoolean('bitmessagesettings', 'willinglysendtomobile'))
|
||||||
self.ui.checkBoxUseIdenticons.setChecked(
|
self.ui.checkBoxUseIdenticons.setChecked(
|
||||||
shared.safeConfigGetBoolean('bitmessagesettings', 'useidenticons'))
|
shared.safeConfigGetBoolean('bitmessagesettings', 'useidenticons'))
|
||||||
|
self.ui.checkBoxReplyBelow.setChecked(
|
||||||
|
shared.safeConfigGetBoolean('bitmessagesettings', 'replybelow'))
|
||||||
|
|
||||||
global languages
|
global languages
|
||||||
languages = ['system','en','eo','fr','de','es','ru','no','ar','zh_cn','en_pirate','other']
|
languages = ['system','en','eo','fr','de','es','ru','no','ar','zh_cn','ja','en_pirate','other']
|
||||||
user_countrycode = str(shared.config.get('bitmessagesettings', 'userlocale'))
|
user_countrycode = str(shared.config.get('bitmessagesettings', 'userlocale'))
|
||||||
if user_countrycode in languages:
|
if user_countrycode in languages:
|
||||||
curr_index = languages.index(user_countrycode)
|
curr_index = languages.index(user_countrycode)
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
# Form implementation generated from reading ui file 'settings.ui'
|
# Form implementation generated from reading ui file 'settings.ui'
|
||||||
#
|
#
|
||||||
# Created: Mon Jan 20 14:26:31 2014
|
# Created: Wed Apr 30 18:35:41 2014
|
||||||
# by: PyQt4 UI code generator 4.10.3
|
# by: PyQt4 UI code generator 4.10.3
|
||||||
#
|
#
|
||||||
# WARNING! All changes made in this file will be lost!
|
# WARNING! All changes made in this file will be lost!
|
||||||
|
@ -26,7 +26,7 @@ except AttributeError:
|
||||||
class Ui_settingsDialog(object):
|
class Ui_settingsDialog(object):
|
||||||
def setupUi(self, settingsDialog):
|
def setupUi(self, settingsDialog):
|
||||||
settingsDialog.setObjectName(_fromUtf8("settingsDialog"))
|
settingsDialog.setObjectName(_fromUtf8("settingsDialog"))
|
||||||
settingsDialog.resize(521, 399)
|
settingsDialog.resize(521, 413)
|
||||||
self.gridLayout = QtGui.QGridLayout(settingsDialog)
|
self.gridLayout = QtGui.QGridLayout(settingsDialog)
|
||||||
self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
|
self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
|
||||||
self.buttonBox = QtGui.QDialogButtonBox(settingsDialog)
|
self.buttonBox = QtGui.QDialogButtonBox(settingsDialog)
|
||||||
|
@ -72,6 +72,9 @@ class Ui_settingsDialog(object):
|
||||||
self.checkBoxUseIdenticons = QtGui.QCheckBox(self.tabUserInterface)
|
self.checkBoxUseIdenticons = QtGui.QCheckBox(self.tabUserInterface)
|
||||||
self.checkBoxUseIdenticons.setObjectName(_fromUtf8("checkBoxUseIdenticons"))
|
self.checkBoxUseIdenticons.setObjectName(_fromUtf8("checkBoxUseIdenticons"))
|
||||||
self.formLayout.setWidget(7, QtGui.QFormLayout.LabelRole, self.checkBoxUseIdenticons)
|
self.formLayout.setWidget(7, QtGui.QFormLayout.LabelRole, self.checkBoxUseIdenticons)
|
||||||
|
self.checkBoxReplyBelow = QtGui.QCheckBox(self.tabUserInterface)
|
||||||
|
self.checkBoxReplyBelow.setObjectName(_fromUtf8("checkBoxReplyBelow"))
|
||||||
|
self.formLayout.setWidget(8, QtGui.QFormLayout.LabelRole, self.checkBoxReplyBelow)
|
||||||
self.groupBox = QtGui.QGroupBox(self.tabUserInterface)
|
self.groupBox = QtGui.QGroupBox(self.tabUserInterface)
|
||||||
self.groupBox.setObjectName(_fromUtf8("groupBox"))
|
self.groupBox.setObjectName(_fromUtf8("groupBox"))
|
||||||
self.formLayout_2 = QtGui.QFormLayout(self.groupBox)
|
self.formLayout_2 = QtGui.QFormLayout(self.groupBox)
|
||||||
|
@ -91,8 +94,9 @@ class Ui_settingsDialog(object):
|
||||||
self.languageComboBox.addItem(_fromUtf8(""))
|
self.languageComboBox.addItem(_fromUtf8(""))
|
||||||
self.languageComboBox.addItem(_fromUtf8(""))
|
self.languageComboBox.addItem(_fromUtf8(""))
|
||||||
self.languageComboBox.addItem(_fromUtf8(""))
|
self.languageComboBox.addItem(_fromUtf8(""))
|
||||||
|
self.languageComboBox.addItem(_fromUtf8(""))
|
||||||
self.formLayout_2.setWidget(0, QtGui.QFormLayout.LabelRole, self.languageComboBox)
|
self.formLayout_2.setWidget(0, QtGui.QFormLayout.LabelRole, self.languageComboBox)
|
||||||
self.formLayout.setWidget(8, QtGui.QFormLayout.FieldRole, self.groupBox)
|
self.formLayout.setWidget(9, QtGui.QFormLayout.FieldRole, self.groupBox)
|
||||||
self.tabWidgetSettings.addTab(self.tabUserInterface, _fromUtf8(""))
|
self.tabWidgetSettings.addTab(self.tabUserInterface, _fromUtf8(""))
|
||||||
self.tabNetworkSettings = QtGui.QWidget()
|
self.tabNetworkSettings = QtGui.QWidget()
|
||||||
self.tabNetworkSettings.setObjectName(_fromUtf8("tabNetworkSettings"))
|
self.tabNetworkSettings.setObjectName(_fromUtf8("tabNetworkSettings"))
|
||||||
|
@ -392,6 +396,7 @@ class Ui_settingsDialog(object):
|
||||||
self.PortableModeDescription.setText(_translate("settingsDialog", "In Portable Mode, messages and config files are stored in the same directory as the program rather than the normal application-data folder. This makes it convenient to run Bitmessage from a USB thumb drive.", None))
|
self.PortableModeDescription.setText(_translate("settingsDialog", "In Portable Mode, messages and config files are stored in the same directory as the program rather than the normal application-data folder. This makes it convenient to run Bitmessage from a USB thumb drive.", None))
|
||||||
self.checkBoxWillinglySendToMobile.setText(_translate("settingsDialog", "Willingly include unencrypted destination address when sending to a mobile device", None))
|
self.checkBoxWillinglySendToMobile.setText(_translate("settingsDialog", "Willingly include unencrypted destination address when sending to a mobile device", None))
|
||||||
self.checkBoxUseIdenticons.setText(_translate("settingsDialog", "Use Identicons", None))
|
self.checkBoxUseIdenticons.setText(_translate("settingsDialog", "Use Identicons", None))
|
||||||
|
self.checkBoxReplyBelow.setText(_translate("settingsDialog", "Reply below Quote", None))
|
||||||
self.groupBox.setTitle(_translate("settingsDialog", "Interface Language", None))
|
self.groupBox.setTitle(_translate("settingsDialog", "Interface Language", None))
|
||||||
self.languageComboBox.setItemText(0, _translate("settingsDialog", "System Settings", "system"))
|
self.languageComboBox.setItemText(0, _translate("settingsDialog", "System Settings", "system"))
|
||||||
self.languageComboBox.setItemText(1, _translate("settingsDialog", "English", "en"))
|
self.languageComboBox.setItemText(1, _translate("settingsDialog", "English", "en"))
|
||||||
|
@ -399,12 +404,13 @@ class Ui_settingsDialog(object):
|
||||||
self.languageComboBox.setItemText(3, _translate("settingsDialog", "Français", "fr"))
|
self.languageComboBox.setItemText(3, _translate("settingsDialog", "Français", "fr"))
|
||||||
self.languageComboBox.setItemText(4, _translate("settingsDialog", "Deutsch", "de"))
|
self.languageComboBox.setItemText(4, _translate("settingsDialog", "Deutsch", "de"))
|
||||||
self.languageComboBox.setItemText(5, _translate("settingsDialog", "Españl", "es"))
|
self.languageComboBox.setItemText(5, _translate("settingsDialog", "Españl", "es"))
|
||||||
self.languageComboBox.setItemText(6, _translate("settingsDialog", "русский язык", "ru"))
|
self.languageComboBox.setItemText(6, _translate("settingsDialog", "русский", "ru"))
|
||||||
self.languageComboBox.setItemText(7, _translate("settingsDialog", "Norsk", "no"))
|
self.languageComboBox.setItemText(7, _translate("settingsDialog", "Norsk", "no"))
|
||||||
self.languageComboBox.setItemText(8, _translate("settingsDialog", "العربية", "ar"))
|
self.languageComboBox.setItemText(8, _translate("settingsDialog", "العربية", "ar"))
|
||||||
self.languageComboBox.setItemText(9, _translate("settingsDialog", "简体中文", "zh_cn"))
|
self.languageComboBox.setItemText(9, _translate("settingsDialog", "简体中文", "zh_cn"))
|
||||||
self.languageComboBox.setItemText(10, _translate("settingsDialog", "Pirate English", "en_pirate"))
|
self.languageComboBox.setItemText(10, _translate("settingsDialog", "日本語", "ja"))
|
||||||
self.languageComboBox.setItemText(11, _translate("settingsDialog", "Other (set in keys.dat)", "other"))
|
self.languageComboBox.setItemText(11, _translate("settingsDialog", "Pirate English", "en_pirate"))
|
||||||
|
self.languageComboBox.setItemText(12, _translate("settingsDialog", "Other (set in keys.dat)", "other"))
|
||||||
self.tabWidgetSettings.setTabText(self.tabWidgetSettings.indexOf(self.tabUserInterface), _translate("settingsDialog", "User Interface", None))
|
self.tabWidgetSettings.setTabText(self.tabWidgetSettings.indexOf(self.tabUserInterface), _translate("settingsDialog", "User Interface", None))
|
||||||
self.groupBox1.setTitle(_translate("settingsDialog", "Listening port", None))
|
self.groupBox1.setTitle(_translate("settingsDialog", "Listening port", None))
|
||||||
self.label.setText(_translate("settingsDialog", "Listen for connections on port:", None))
|
self.label.setText(_translate("settingsDialog", "Listen for connections on port:", None))
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>521</width>
|
<width>521</width>
|
||||||
<height>399</height>
|
<height>413</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
|
@ -105,7 +105,14 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="8" column="1">
|
<item row="8" column="0">
|
||||||
|
<widget class="QCheckBox" name="checkBoxReplyBelow">
|
||||||
|
<property name="text">
|
||||||
|
<string>Reply below Quote</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="9" column="1">
|
||||||
<widget class="QGroupBox" name="groupBox">
|
<widget class="QGroupBox" name="groupBox">
|
||||||
<property name="title">
|
<property name="title">
|
||||||
<string>Interface Language</string>
|
<string>Interface Language</string>
|
||||||
|
@ -151,7 +158,7 @@
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string comment="ru">русский язык</string>
|
<string comment="ru">русский</string>
|
||||||
</property>
|
</property>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
|
@ -169,6 +176,11 @@
|
||||||
<string comment="zh_cn">简体中文</string>
|
<string comment="zh_cn">简体中文</string>
|
||||||
</property>
|
</property>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string comment="ja">日本語</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string comment="en_pirate">Pirate English</string>
|
<string comment="en_pirate">Pirate English</string>
|
||||||
|
|
|
@ -22,26 +22,37 @@ class outgoingSynSender(threading.Thread):
|
||||||
self.streamNumber = streamNumber
|
self.streamNumber = streamNumber
|
||||||
self.selfInitiatedConnections = selfInitiatedConnections
|
self.selfInitiatedConnections = selfInitiatedConnections
|
||||||
|
|
||||||
|
def _getPeer(self):
|
||||||
|
# If the user has specified a trusted peer then we'll only
|
||||||
|
# ever connect to that. Otherwise we'll pick a random one from
|
||||||
|
# the known nodes
|
||||||
|
shared.knownNodesLock.acquire()
|
||||||
|
if shared.trustedPeer:
|
||||||
|
peer = shared.trustedPeer
|
||||||
|
shared.knownNodes[self.streamNumber][peer] = time.time()
|
||||||
|
else:
|
||||||
|
peer, = random.sample(shared.knownNodes[self.streamNumber], 1)
|
||||||
|
shared.knownNodesLock.release()
|
||||||
|
|
||||||
|
return peer
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
while shared.safeConfigGetBoolean('bitmessagesettings', 'dontconnect'):
|
while shared.safeConfigGetBoolean('bitmessagesettings', 'dontconnect'):
|
||||||
time.sleep(2)
|
time.sleep(2)
|
||||||
while shared.safeConfigGetBoolean('bitmessagesettings', 'sendoutgoingconnections'):
|
while shared.safeConfigGetBoolean('bitmessagesettings', 'sendoutgoingconnections'):
|
||||||
while len(self.selfInitiatedConnections[self.streamNumber]) >= 8: # maximum number of outgoing connections = 8
|
maximumConnections = 1 if shared.trustedPeer else 8 # maximum number of outgoing connections = 8
|
||||||
|
while len(self.selfInitiatedConnections[self.streamNumber]) >= maximumConnections:
|
||||||
time.sleep(10)
|
time.sleep(10)
|
||||||
if shared.shutdown:
|
if shared.shutdown:
|
||||||
break
|
break
|
||||||
random.seed()
|
random.seed()
|
||||||
shared.knownNodesLock.acquire()
|
peer = self._getPeer()
|
||||||
peer, = random.sample(shared.knownNodes[self.streamNumber], 1)
|
|
||||||
shared.knownNodesLock.release()
|
|
||||||
shared.alreadyAttemptedConnectionsListLock.acquire()
|
shared.alreadyAttemptedConnectionsListLock.acquire()
|
||||||
while peer in shared.alreadyAttemptedConnectionsList or peer.host in shared.connectedHostsList:
|
while peer in shared.alreadyAttemptedConnectionsList or peer.host in shared.connectedHostsList:
|
||||||
shared.alreadyAttemptedConnectionsListLock.release()
|
shared.alreadyAttemptedConnectionsListLock.release()
|
||||||
# print 'choosing new sample'
|
# print 'choosing new sample'
|
||||||
random.seed()
|
random.seed()
|
||||||
shared.knownNodesLock.acquire()
|
peer = self._getPeer()
|
||||||
peer, = random.sample(shared.knownNodes[self.streamNumber], 1)
|
|
||||||
shared.knownNodesLock.release()
|
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
# Clear out the shared.alreadyAttemptedConnectionsList every half
|
# Clear out the shared.alreadyAttemptedConnectionsList every half
|
||||||
# hour so that this program will again attempt a connection
|
# hour so that this program will again attempt a connection
|
||||||
|
|
|
@ -147,9 +147,9 @@ class receiveDataThread(threading.Thread):
|
||||||
with shared.printLock:
|
with shared.printLock:
|
||||||
print 'remoteCommand', repr(remoteCommand.replace('\x00', '')), ' from', self.peer
|
print 'remoteCommand', repr(remoteCommand.replace('\x00', '')), ' from', self.peer
|
||||||
|
|
||||||
if remoteCommand == 'version\x00\x00\x00\x00\x00':
|
if remoteCommand == 'version\x00\x00\x00\x00\x00' and not self.connectionIsOrWasFullyEstablished:
|
||||||
self.recversion(self.data[24:self.payloadLength + 24])
|
self.recversion(self.data[24:self.payloadLength + 24])
|
||||||
elif remoteCommand == 'verack\x00\x00\x00\x00\x00\x00':
|
elif remoteCommand == 'verack\x00\x00\x00\x00\x00\x00' and not self.connectionIsOrWasFullyEstablished:
|
||||||
self.recverack()
|
self.recverack()
|
||||||
elif remoteCommand == 'addr\x00\x00\x00\x00\x00\x00\x00\x00' and self.connectionIsOrWasFullyEstablished:
|
elif remoteCommand == 'addr\x00\x00\x00\x00\x00\x00\x00\x00' and self.connectionIsOrWasFullyEstablished:
|
||||||
self.recaddr(self.data[24:self.payloadLength + 24])
|
self.recaddr(self.data[24:self.payloadLength + 24])
|
||||||
|
@ -237,7 +237,12 @@ class receiveDataThread(threading.Thread):
|
||||||
self.connectionFullyEstablished()
|
self.connectionFullyEstablished()
|
||||||
|
|
||||||
def connectionFullyEstablished(self):
|
def connectionFullyEstablished(self):
|
||||||
|
if self.connectionIsOrWasFullyEstablished:
|
||||||
|
# there is no reason to run this function a second time
|
||||||
|
return
|
||||||
self.connectionIsOrWasFullyEstablished = True
|
self.connectionIsOrWasFullyEstablished = True
|
||||||
|
# Command the corresponding sendDataThread to set its own connectionIsOrWasFullyEstablished variable to True also
|
||||||
|
self.sendDataThreadQueue.put((0, 'connectionIsOrWasFullyEstablished', 'no data'))
|
||||||
if not self.initiatedConnection:
|
if not self.initiatedConnection:
|
||||||
shared.clientHasReceivedIncomingConnections = True
|
shared.clientHasReceivedIncomingConnections = True
|
||||||
shared.UISignalQueue.put(('setStatusIcon', 'green'))
|
shared.UISignalQueue.put(('setStatusIcon', 'green'))
|
||||||
|
@ -301,8 +306,9 @@ class receiveDataThread(threading.Thread):
|
||||||
self.sendinvMessageToJustThisOnePeer(
|
self.sendinvMessageToJustThisOnePeer(
|
||||||
numberOfObjectsInInvMessage, payload)
|
numberOfObjectsInInvMessage, payload)
|
||||||
|
|
||||||
# Self explanatory. Notice that there is also a broadcastinv function for
|
# Used to send a big inv message when the connection with a node is
|
||||||
# broadcasting invs to everyone in our stream.
|
# first fully established. Notice that there is also a broadcastinv
|
||||||
|
# function for broadcasting invs to everyone in our stream.
|
||||||
def sendinvMessageToJustThisOnePeer(self, numberOfObjects, payload):
|
def sendinvMessageToJustThisOnePeer(self, numberOfObjects, payload):
|
||||||
payload = encodeVarint(numberOfObjects) + payload
|
payload = encodeVarint(numberOfObjects) + payload
|
||||||
headerData = '\xe9\xbe\xb4\xd9' # magic bits, slighly different from Bitcoin's magic bits.
|
headerData = '\xe9\xbe\xb4\xd9' # magic bits, slighly different from Bitcoin's magic bits.
|
||||||
|
@ -313,6 +319,14 @@ class receiveDataThread(threading.Thread):
|
||||||
print 'Sending huge inv message with', numberOfObjects, 'objects to just this one peer'
|
print 'Sending huge inv message with', numberOfObjects, 'objects to just this one peer'
|
||||||
self.sendDataThreadQueue.put((0, 'sendRawData', headerData + payload))
|
self.sendDataThreadQueue.put((0, 'sendRawData', headerData + payload))
|
||||||
|
|
||||||
|
def _sleepForTimingAttackMitigation(self, sleepTime):
|
||||||
|
# We don't need to do the timing attack mitigation if we are
|
||||||
|
# only connected to the trusted peer because we can trust the
|
||||||
|
# peer not to attack
|
||||||
|
if sleepTime > 0 and doTimingAttackMitigation and shared.trustedPeer == None:
|
||||||
|
with shared.printLock:
|
||||||
|
print 'Timing attack mitigation: Sleeping for', sleepTime, 'seconds.'
|
||||||
|
time.sleep(sleepTime)
|
||||||
|
|
||||||
# We have received a broadcast message
|
# We have received a broadcast message
|
||||||
def recbroadcast(self, data):
|
def recbroadcast(self, data):
|
||||||
|
@ -341,10 +355,7 @@ class receiveDataThread(threading.Thread):
|
||||||
|
|
||||||
sleepTime = lengthOfTimeWeShouldUseToProcessThisMessage - \
|
sleepTime = lengthOfTimeWeShouldUseToProcessThisMessage - \
|
||||||
(time.time() - self.messageProcessingStartTime)
|
(time.time() - self.messageProcessingStartTime)
|
||||||
if sleepTime > 0 and doTimingAttackMitigation:
|
self._sleepForTimingAttackMitigation(sleepTime)
|
||||||
with shared.printLock:
|
|
||||||
print 'Timing attack mitigation: Sleeping for', sleepTime, 'seconds.'
|
|
||||||
time.sleep(sleepTime)
|
|
||||||
|
|
||||||
# We have received a msg message.
|
# We have received a msg message.
|
||||||
def recmsg(self, data):
|
def recmsg(self, data):
|
||||||
|
@ -373,10 +384,7 @@ class receiveDataThread(threading.Thread):
|
||||||
|
|
||||||
sleepTime = lengthOfTimeWeShouldUseToProcessThisMessage - \
|
sleepTime = lengthOfTimeWeShouldUseToProcessThisMessage - \
|
||||||
(time.time() - self.messageProcessingStartTime)
|
(time.time() - self.messageProcessingStartTime)
|
||||||
if sleepTime > 0 and doTimingAttackMitigation:
|
self._sleepForTimingAttackMitigation(sleepTime)
|
||||||
with shared.printLock:
|
|
||||||
print 'Timing attack mitigation: Sleeping for', sleepTime, 'seconds.'
|
|
||||||
time.sleep(sleepTime)
|
|
||||||
|
|
||||||
# We have received a pubkey
|
# We have received a pubkey
|
||||||
def recpubkey(self, data):
|
def recpubkey(self, data):
|
||||||
|
@ -387,11 +395,7 @@ class receiveDataThread(threading.Thread):
|
||||||
lengthOfTimeWeShouldUseToProcessThisMessage = .1
|
lengthOfTimeWeShouldUseToProcessThisMessage = .1
|
||||||
sleepTime = lengthOfTimeWeShouldUseToProcessThisMessage - \
|
sleepTime = lengthOfTimeWeShouldUseToProcessThisMessage - \
|
||||||
(time.time() - self.pubkeyProcessingStartTime)
|
(time.time() - self.pubkeyProcessingStartTime)
|
||||||
if sleepTime > 0 and doTimingAttackMitigation:
|
self._sleepForTimingAttackMitigation(sleepTime)
|
||||||
with shared.printLock:
|
|
||||||
print 'Timing attack mitigation: Sleeping for', sleepTime, 'seconds.'
|
|
||||||
time.sleep(sleepTime)
|
|
||||||
|
|
||||||
|
|
||||||
# We have received an inv message
|
# We have received an inv message
|
||||||
def recinv(self, data):
|
def recinv(self, data):
|
||||||
|
@ -665,7 +669,10 @@ class receiveDataThread(threading.Thread):
|
||||||
print 'knownNodes currently has', len(shared.knownNodes[self.streamNumber]), 'nodes for this stream.'
|
print 'knownNodes currently has', len(shared.knownNodes[self.streamNumber]), 'nodes for this stream.'
|
||||||
|
|
||||||
|
|
||||||
# Send a big addr message to our peer
|
# Send a huge addr message to our peer. This is only used
|
||||||
|
# when we fully establish a connection with a
|
||||||
|
# peer (with the full exchange of version and verack
|
||||||
|
# messages).
|
||||||
def sendaddr(self):
|
def sendaddr(self):
|
||||||
addrsInMyStream = {}
|
addrsInMyStream = {}
|
||||||
addrsInChildStreamLeft = {}
|
addrsInChildStreamLeft = {}
|
||||||
|
@ -750,58 +757,68 @@ class receiveDataThread(threading.Thread):
|
||||||
if len(data) < 83:
|
if len(data) < 83:
|
||||||
# This version message is unreasonably short. Forget it.
|
# This version message is unreasonably short. Forget it.
|
||||||
return
|
return
|
||||||
elif not self.verackSent:
|
if self.verackSent:
|
||||||
self.remoteProtocolVersion, = unpack('>L', data[:4])
|
"""
|
||||||
if self.remoteProtocolVersion <= 1:
|
We must have already processed the remote node's version message.
|
||||||
shared.broadcastToSendDataQueues((0, 'shutdown', self.peer))
|
There might be a time in the future when we Do want to process
|
||||||
with shared.printLock:
|
a new version message, like if the remote node wants to update
|
||||||
print 'Closing connection to old protocol version 1 node: ', self.peer
|
the streams in which they are interested. But for now we'll
|
||||||
return
|
ignore this version message
|
||||||
# print 'remoteProtocolVersion', self.remoteProtocolVersion
|
"""
|
||||||
self.myExternalIP = socket.inet_ntoa(data[40:44])
|
return
|
||||||
# print 'myExternalIP', self.myExternalIP
|
self.remoteProtocolVersion, = unpack('>L', data[:4])
|
||||||
self.remoteNodeIncomingPort, = unpack('>H', data[70:72])
|
if self.remoteProtocolVersion <= 1:
|
||||||
# print 'remoteNodeIncomingPort', self.remoteNodeIncomingPort
|
shared.broadcastToSendDataQueues((0, 'shutdown', self.peer))
|
||||||
useragentLength, lengthOfUseragentVarint = decodeVarint(
|
|
||||||
data[80:84])
|
|
||||||
readPosition = 80 + lengthOfUseragentVarint
|
|
||||||
useragent = data[readPosition:readPosition + useragentLength]
|
|
||||||
readPosition += useragentLength
|
|
||||||
numberOfStreamsInVersionMessage, lengthOfNumberOfStreamsInVersionMessage = decodeVarint(
|
|
||||||
data[readPosition:])
|
|
||||||
readPosition += lengthOfNumberOfStreamsInVersionMessage
|
|
||||||
self.streamNumber, lengthOfRemoteStreamNumber = decodeVarint(
|
|
||||||
data[readPosition:])
|
|
||||||
with shared.printLock:
|
with shared.printLock:
|
||||||
print 'Remote node useragent:', useragent, ' stream number:', self.streamNumber
|
print 'Closing connection to old protocol version 1 node: ', self.peer
|
||||||
|
return
|
||||||
|
# print 'remoteProtocolVersion', self.remoteProtocolVersion
|
||||||
|
self.myExternalIP = socket.inet_ntoa(data[40:44])
|
||||||
|
# print 'myExternalIP', self.myExternalIP
|
||||||
|
self.remoteNodeIncomingPort, = unpack('>H', data[70:72])
|
||||||
|
# print 'remoteNodeIncomingPort', self.remoteNodeIncomingPort
|
||||||
|
useragentLength, lengthOfUseragentVarint = decodeVarint(
|
||||||
|
data[80:84])
|
||||||
|
readPosition = 80 + lengthOfUseragentVarint
|
||||||
|
useragent = data[readPosition:readPosition + useragentLength]
|
||||||
|
readPosition += useragentLength
|
||||||
|
numberOfStreamsInVersionMessage, lengthOfNumberOfStreamsInVersionMessage = decodeVarint(
|
||||||
|
data[readPosition:])
|
||||||
|
readPosition += lengthOfNumberOfStreamsInVersionMessage
|
||||||
|
self.streamNumber, lengthOfRemoteStreamNumber = decodeVarint(
|
||||||
|
data[readPosition:])
|
||||||
|
with shared.printLock:
|
||||||
|
print 'Remote node useragent:', useragent, ' stream number:', self.streamNumber
|
||||||
|
|
||||||
if self.streamNumber != 1:
|
if self.streamNumber != 1:
|
||||||
shared.broadcastToSendDataQueues((0, 'shutdown', self.peer))
|
shared.broadcastToSendDataQueues((0, 'shutdown', self.peer))
|
||||||
with shared.printLock:
|
with shared.printLock:
|
||||||
print 'Closed connection to', self.peer, 'because they are interested in stream', self.streamNumber, '.'
|
print 'Closed connection to', self.peer, 'because they are interested in stream', self.streamNumber, '.'
|
||||||
return
|
return
|
||||||
shared.connectedHostsList[
|
shared.connectedHostsList[
|
||||||
self.peer.host] = 1 # We use this data structure to not only keep track of what hosts we are connected to so that we don't try to connect to them again, but also to list the connections count on the Network Status tab.
|
self.peer.host] = 1 # We use this data structure to not only keep track of what hosts we are connected to so that we don't try to connect to them again, but also to list the connections count on the Network Status tab.
|
||||||
# If this was an incoming connection, then the sendData thread
|
# If this was an incoming connection, then the sendData thread
|
||||||
# doesn't know the stream. We have to set it.
|
# doesn't know the stream. We have to set it.
|
||||||
if not self.initiatedConnection:
|
if not self.initiatedConnection:
|
||||||
shared.broadcastToSendDataQueues((
|
self.sendDataThreadQueue.put((0, 'setStreamNumber', self.streamNumber))
|
||||||
0, 'setStreamNumber', (self.peer, self.streamNumber)))
|
if data[72:80] == shared.eightBytesOfRandomDataUsedToDetectConnectionsToSelf:
|
||||||
if data[72:80] == shared.eightBytesOfRandomDataUsedToDetectConnectionsToSelf:
|
shared.broadcastToSendDataQueues((0, 'shutdown', self.peer))
|
||||||
shared.broadcastToSendDataQueues((0, 'shutdown', self.peer))
|
with shared.printLock:
|
||||||
with shared.printLock:
|
print 'Closing connection to myself: ', self.peer
|
||||||
print 'Closing connection to myself: ', self.peer
|
return
|
||||||
return
|
|
||||||
self.sendDataThreadQueue.put((0, 'setRemoteProtocolVersion', self.remoteProtocolVersion))
|
|
||||||
|
|
||||||
shared.knownNodesLock.acquire()
|
# The other peer's protocol version is of interest to the sendDataThread but we learn of it
|
||||||
shared.knownNodes[self.streamNumber][shared.Peer(self.peer.host, self.remoteNodeIncomingPort)] = int(time.time())
|
# in this version message. Let us inform the sendDataThread.
|
||||||
shared.needToWriteKnownNodesToDisk = True
|
self.sendDataThreadQueue.put((0, 'setRemoteProtocolVersion', self.remoteProtocolVersion))
|
||||||
shared.knownNodesLock.release()
|
|
||||||
|
|
||||||
self.sendverack()
|
shared.knownNodesLock.acquire()
|
||||||
if self.initiatedConnection == False:
|
shared.knownNodes[self.streamNumber][shared.Peer(self.peer.host, self.remoteNodeIncomingPort)] = int(time.time())
|
||||||
self.sendversion()
|
shared.needToWriteKnownNodesToDisk = True
|
||||||
|
shared.knownNodesLock.release()
|
||||||
|
|
||||||
|
self.sendverack()
|
||||||
|
if self.initiatedConnection == False:
|
||||||
|
self.sendversion()
|
||||||
|
|
||||||
# Sends a version message
|
# Sends a version message
|
||||||
def sendversion(self):
|
def sendversion(self):
|
||||||
|
|
|
@ -25,6 +25,7 @@ class sendDataThread(threading.Thread):
|
||||||
self.data = ''
|
self.data = ''
|
||||||
self.objectHashHolderInstance = objectHashHolder(self.sendDataThreadQueue)
|
self.objectHashHolderInstance = objectHashHolder(self.sendDataThreadQueue)
|
||||||
self.objectHashHolderInstance.start()
|
self.objectHashHolderInstance.start()
|
||||||
|
self.connectionIsOrWasFullyEstablished = False
|
||||||
|
|
||||||
|
|
||||||
def setup(
|
def setup(
|
||||||
|
@ -71,16 +72,6 @@ class sendDataThread(threading.Thread):
|
||||||
if data == self.peer or data == 'all':
|
if data == self.peer or data == 'all':
|
||||||
with shared.printLock:
|
with shared.printLock:
|
||||||
print 'sendDataThread (associated with', self.peer, ') ID:', id(self), 'shutting down now.'
|
print 'sendDataThread (associated with', self.peer, ') ID:', id(self), 'shutting down now.'
|
||||||
|
|
||||||
try:
|
|
||||||
self.sock.shutdown(socket.SHUT_RDWR)
|
|
||||||
self.sock.close()
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
shared.sendDataQueues.remove(self.sendDataThreadQueue)
|
|
||||||
with shared.printLock:
|
|
||||||
print 'len of sendDataQueues', len(shared.sendDataQueues)
|
|
||||||
|
|
||||||
break
|
break
|
||||||
# When you receive an incoming connection, a sendDataThread is
|
# When you receive an incoming connection, a sendDataThread is
|
||||||
# created even though you don't yet know what stream number the
|
# created even though you don't yet know what stream number the
|
||||||
|
@ -89,12 +80,9 @@ class sendDataThread(threading.Thread):
|
||||||
# will continue on with the connection and will set the
|
# will continue on with the connection and will set the
|
||||||
# streamNumber of this send data thread here:
|
# streamNumber of this send data thread here:
|
||||||
elif command == 'setStreamNumber':
|
elif command == 'setStreamNumber':
|
||||||
peerInMessage, specifiedStreamNumber = data
|
self.streamNumber = data
|
||||||
if peerInMessage == self.peer:
|
with shared.printLock:
|
||||||
with shared.printLock:
|
print 'setting the stream number in the sendData thread (ID:', id(self), ') to', self.streamNumber
|
||||||
print 'setting the stream number in the sendData thread (ID:', id(self), ') to', specifiedStreamNumber
|
|
||||||
|
|
||||||
self.streamNumber = specifiedStreamNumber
|
|
||||||
elif command == 'setRemoteProtocolVersion':
|
elif command == 'setRemoteProtocolVersion':
|
||||||
specifiedRemoteProtocolVersion = data
|
specifiedRemoteProtocolVersion = data
|
||||||
with shared.printLock:
|
with shared.printLock:
|
||||||
|
@ -103,6 +91,9 @@ class sendDataThread(threading.Thread):
|
||||||
elif command == 'advertisepeer':
|
elif command == 'advertisepeer':
|
||||||
self.objectHashHolderInstance.holdPeer(data)
|
self.objectHashHolderInstance.holdPeer(data)
|
||||||
elif command == 'sendaddr':
|
elif command == 'sendaddr':
|
||||||
|
if not self.connectionIsOrWasFullyEstablished:
|
||||||
|
# not sending addr because we haven't sent and heard a verack from the remote node yet
|
||||||
|
return
|
||||||
numberOfAddressesInAddrMessage = len(
|
numberOfAddressesInAddrMessage = len(
|
||||||
data)
|
data)
|
||||||
payload = ''
|
payload = ''
|
||||||
|
@ -127,17 +118,13 @@ class sendDataThread(threading.Thread):
|
||||||
self.lastTimeISentData = int(time.time())
|
self.lastTimeISentData = int(time.time())
|
||||||
except:
|
except:
|
||||||
print 'sendaddr: self.sock.sendall failed'
|
print 'sendaddr: self.sock.sendall failed'
|
||||||
try:
|
|
||||||
self.sock.shutdown(socket.SHUT_RDWR)
|
|
||||||
self.sock.close()
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
shared.sendDataQueues.remove(self.sendDataThreadQueue)
|
|
||||||
print 'sendDataThread thread (ID:', str(id(self)) + ') ending now. Was connected to', self.peer
|
|
||||||
break
|
break
|
||||||
elif command == 'advertiseobject':
|
elif command == 'advertiseobject':
|
||||||
self.objectHashHolderInstance.holdHash(data)
|
self.objectHashHolderInstance.holdHash(data)
|
||||||
elif command == 'sendinv':
|
elif command == 'sendinv':
|
||||||
|
if not self.connectionIsOrWasFullyEstablished:
|
||||||
|
# not sending inv because we haven't sent and heard a verack from the remote node yet
|
||||||
|
return
|
||||||
payload = ''
|
payload = ''
|
||||||
for hash in data:
|
for hash in data:
|
||||||
if hash not in self.someObjectsOfWhichThisRemoteNodeIsAlreadyAware:
|
if hash not in self.someObjectsOfWhichThisRemoteNodeIsAlreadyAware:
|
||||||
|
@ -153,13 +140,6 @@ class sendDataThread(threading.Thread):
|
||||||
self.lastTimeISentData = int(time.time())
|
self.lastTimeISentData = int(time.time())
|
||||||
except:
|
except:
|
||||||
print 'sendinv: self.sock.sendall failed'
|
print 'sendinv: self.sock.sendall failed'
|
||||||
try:
|
|
||||||
self.sock.shutdown(socket.SHUT_RDWR)
|
|
||||||
self.sock.close()
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
shared.sendDataQueues.remove(self.sendDataThreadQueue)
|
|
||||||
print 'sendDataThread thread (ID:', str(id(self)) + ') ending now. Was connected to', self.peer
|
|
||||||
break
|
break
|
||||||
elif command == 'pong':
|
elif command == 'pong':
|
||||||
self.someObjectsOfWhichThisRemoteNodeIsAlreadyAware.clear() # To save memory, let us clear this data structure from time to time. As its function is to help us keep from sending inv messages to peers which sent us the same inv message mere seconds earlier, it will be fine to clear this data structure from time to time.
|
self.someObjectsOfWhichThisRemoteNodeIsAlreadyAware.clear() # To save memory, let us clear this data structure from time to time. As its function is to help us keep from sending inv messages to peers which sent us the same inv message mere seconds earlier, it will be fine to clear this data structure from time to time.
|
||||||
|
@ -174,29 +154,26 @@ class sendDataThread(threading.Thread):
|
||||||
self.lastTimeISentData = int(time.time())
|
self.lastTimeISentData = int(time.time())
|
||||||
except:
|
except:
|
||||||
print 'send pong failed'
|
print 'send pong failed'
|
||||||
try:
|
|
||||||
self.sock.shutdown(socket.SHUT_RDWR)
|
|
||||||
self.sock.close()
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
shared.sendDataQueues.remove(self.sendDataThreadQueue)
|
|
||||||
print 'sendDataThread thread', self, 'ending now. Was connected to', self.peer
|
|
||||||
break
|
break
|
||||||
elif command == 'sendRawData':
|
elif command == 'sendRawData':
|
||||||
try:
|
try:
|
||||||
self.sock.sendall(data)
|
self.sock.sendall(data)
|
||||||
self.lastTimeISentData = int(time.time())
|
self.lastTimeISentData = int(time.time())
|
||||||
except:
|
except:
|
||||||
try:
|
|
||||||
self.sock.shutdown(socket.SHUT_RDWR)
|
|
||||||
self.sock.close()
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
shared.sendDataQueues.remove(self.sendDataThreadQueue)
|
|
||||||
print 'Sending of data to', self.peer, 'failed. sendDataThread thread', self, 'ending now.'
|
print 'Sending of data to', self.peer, 'failed. sendDataThread thread', self, 'ending now.'
|
||||||
break
|
break
|
||||||
|
elif command == 'connectionIsOrWasFullyEstablished':
|
||||||
|
self.connectionIsOrWasFullyEstablished = True
|
||||||
else:
|
else:
|
||||||
with shared.printLock:
|
with shared.printLock:
|
||||||
print 'sendDataThread ID:', id(self), 'ignoring command', command, 'because the thread is not in stream', deststream
|
print 'sendDataThread ID:', id(self), 'ignoring command', command, 'because the thread is not in stream', deststream
|
||||||
|
|
||||||
|
try:
|
||||||
|
self.sock.shutdown(socket.SHUT_RDWR)
|
||||||
|
self.sock.close()
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
shared.sendDataQueues.remove(self.sendDataThreadQueue)
|
||||||
|
with shared.printLock:
|
||||||
|
print 'Number of queues remaining in sendDataQueues:', len(shared.sendDataQueues)
|
||||||
self.objectHashHolderInstance.close()
|
self.objectHashHolderInstance.close()
|
||||||
|
|
|
@ -39,6 +39,11 @@ class singleListener(threading.Thread):
|
||||||
return sock
|
return sock
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
|
# If there is a trusted peer then we don't want to accept
|
||||||
|
# incoming connections so we'll just abandon the thread
|
||||||
|
if shared.trustedPeer:
|
||||||
|
return
|
||||||
|
|
||||||
while shared.safeConfigGetBoolean('bitmessagesettings', 'dontconnect'):
|
while shared.safeConfigGetBoolean('bitmessagesettings', 'dontconnect'):
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
helper_bootstrap.dns()
|
helper_bootstrap.dns()
|
||||||
|
|
|
@ -11,16 +11,16 @@ def createDefaultKnownNodes(appdata):
|
||||||
############## Stream 1 ################
|
############## Stream 1 ################
|
||||||
stream1 = {}
|
stream1 = {}
|
||||||
|
|
||||||
stream1[shared.Peer('176.31.246.114', 8444)] = int(time.time())
|
#stream1[shared.Peer('2604:2000:1380:9f:82e:148b:2746:d0c7', 8080)] = int(time.time())
|
||||||
stream1[shared.Peer('109.229.197.133', 8444)] = int(time.time())
|
stream1[shared.Peer('68.33.0.104', 8444)] = int(time.time())
|
||||||
stream1[shared.Peer('174.3.101.111', 8444)] = int(time.time())
|
stream1[shared.Peer('97.77.34.35', 8444)] = int(time.time())
|
||||||
stream1[shared.Peer('90.188.238.79', 7829)] = int(time.time())
|
stream1[shared.Peer('71.232.195.131', 8444)] = int(time.time())
|
||||||
stream1[shared.Peer('184.75.69.2', 8444)] = int(time.time())
|
stream1[shared.Peer('192.241.231.39', 8444)] = int(time.time())
|
||||||
stream1[shared.Peer('60.225.209.243', 8444)] = int(time.time())
|
stream1[shared.Peer('75.66.0.116', 8444)] = int(time.time())
|
||||||
stream1[shared.Peer('5.145.140.218', 8444)] = int(time.time())
|
stream1[shared.Peer('182.169.23.102', 8444)] = int(time.time())
|
||||||
stream1[shared.Peer('5.19.255.216', 8444)] = int(time.time())
|
stream1[shared.Peer('75.95.134.9', 8444)] = int(time.time())
|
||||||
stream1[shared.Peer('193.159.162.189', 8444)] = int(time.time())
|
stream1[shared.Peer('46.236.100.108', 48444)] = int(time.time())
|
||||||
stream1[shared.Peer('86.26.15.171', 8444)] = int(time.time())
|
stream1[shared.Peer('66.108.53.42', 8080)] = int(time.time())
|
||||||
|
|
||||||
############# Stream 2 #################
|
############# Stream 2 #################
|
||||||
stream2 = {}
|
stream2 = {}
|
||||||
|
|
|
@ -12,6 +12,17 @@ from namecoin import ensureNamecoinOptions
|
||||||
|
|
||||||
storeConfigFilesInSameDirectoryAsProgramByDefault = False # The user may de-select Portable Mode in the settings if they want the config files to stay in the application data folder.
|
storeConfigFilesInSameDirectoryAsProgramByDefault = False # The user may de-select Portable Mode in the settings if they want the config files to stay in the application data folder.
|
||||||
|
|
||||||
|
def _loadTrustedPeer():
|
||||||
|
try:
|
||||||
|
trustedPeer = shared.config.get('bitmessagesettings', 'trustedpeer')
|
||||||
|
except ConfigParser.Error:
|
||||||
|
# This probably means the trusted peer wasn't specified so we
|
||||||
|
# can just leave it as None
|
||||||
|
return
|
||||||
|
|
||||||
|
host, port = trustedPeer.split(':')
|
||||||
|
shared.trustedPeer = shared.Peer(host, int(port))
|
||||||
|
|
||||||
def loadConfig():
|
def loadConfig():
|
||||||
if shared.appdata:
|
if shared.appdata:
|
||||||
shared.config.read(shared.appdata + 'keys.dat')
|
shared.config.read(shared.appdata + 'keys.dat')
|
||||||
|
@ -90,6 +101,7 @@ def loadConfig():
|
||||||
shared.config.set('bitmessagesettings', 'userlocale', 'system')
|
shared.config.set('bitmessagesettings', 'userlocale', 'system')
|
||||||
shared.config.set('bitmessagesettings', 'useidenticons', 'True')
|
shared.config.set('bitmessagesettings', 'useidenticons', 'True')
|
||||||
shared.config.set('bitmessagesettings', 'identiconsuffix', ''.join(random.choice("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz") for x in range(12))) # a twelve character pseudo-password to salt the identicons
|
shared.config.set('bitmessagesettings', 'identiconsuffix', ''.join(random.choice("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz") for x in range(12))) # a twelve character pseudo-password to salt the identicons
|
||||||
|
shared.config.set('bitmessagesettings', 'replybelow', 'False')
|
||||||
|
|
||||||
#start:UI setting to stop trying to send messages after X days/months
|
#start:UI setting to stop trying to send messages after X days/months
|
||||||
shared.config.set(
|
shared.config.set(
|
||||||
|
@ -122,6 +134,8 @@ def loadConfig():
|
||||||
with open(shared.appdata + 'keys.dat', 'wb') as configfile:
|
with open(shared.appdata + 'keys.dat', 'wb') as configfile:
|
||||||
shared.config.write(configfile)
|
shared.config.write(configfile)
|
||||||
|
|
||||||
|
_loadTrustedPeer()
|
||||||
|
|
||||||
def isOurOperatingSystemLimitedToHavingVeryFewHalfOpenConnections():
|
def isOurOperatingSystemLimitedToHavingVeryFewHalfOpenConnections():
|
||||||
try:
|
try:
|
||||||
VER_THIS=StrictVersion(platform.version())
|
VER_THIS=StrictVersion(platform.version())
|
||||||
|
|
|
@ -92,6 +92,18 @@ namecoinDefaultRpcPort = "8336"
|
||||||
# binary distributions vs source distributions.
|
# binary distributions vs source distributions.
|
||||||
frozen = getattr(sys,'frozen', None)
|
frozen = getattr(sys,'frozen', None)
|
||||||
|
|
||||||
|
# If the trustedpeer option is specified in keys.dat then this will
|
||||||
|
# contain a Peer which will be connected to instead of using the
|
||||||
|
# addresses advertised by other peers. The client will only connect to
|
||||||
|
# this peer and the timing attack mitigation will be disabled in order
|
||||||
|
# to download data faster. The expected use case is where the user has
|
||||||
|
# a fast connection to a trusted server where they run a BitMessage
|
||||||
|
# daemon permanently. If they then run a second instance of the client
|
||||||
|
# on a local machine periodically when they want to check for messages
|
||||||
|
# it will sync with the network a lot faster without compromising
|
||||||
|
# security.
|
||||||
|
trustedPeer = None
|
||||||
|
|
||||||
def isInSqlInventory(hash):
|
def isInSqlInventory(hash):
|
||||||
queryreturn = sqlQuery('''select hash from inventory where hash=?''', hash)
|
queryreturn = sqlQuery('''select hash from inventory where hash=?''', hash)
|
||||||
return queryreturn != []
|
return queryreturn != []
|
||||||
|
|
|
@ -5,17 +5,17 @@
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/addaddressdialog.py" line="62"/>
|
<location filename="../bitmessageqt/addaddressdialog.py" line="62"/>
|
||||||
<source>Add new entry</source>
|
<source>Add new entry</source>
|
||||||
<translation type="unfinished">Neuen Eintrag erstellen</translation>
|
<translation>Neuen Eintrag erstellen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/addaddressdialog.py" line="63"/>
|
<location filename="../bitmessageqt/addaddressdialog.py" line="63"/>
|
||||||
<source>Label</source>
|
<source>Label</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Name oder Bezeichnung</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/addaddressdialog.py" line="64"/>
|
<location filename="../bitmessageqt/addaddressdialog.py" line="64"/>
|
||||||
<source>Address</source>
|
<source>Address</source>
|
||||||
<translation type="unfinished">Adresse</translation>
|
<translation>Adresse</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
@ -153,7 +153,7 @@
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/__init__.py" line="850"/>
|
<location filename="../bitmessageqt/__init__.py" line="850"/>
|
||||||
<source>Problem: The work demanded by the recipient is more difficult than you are willing to do. %1</source>
|
<source>Problem: The work demanded by the recipient is more difficult than you are willing to do. %1</source>
|
||||||
<translation>Problem: Die vom Empfänger geforderte Arbeit ist schwerer als Sie bereit sind zu berechnen. %1</translation>
|
<translation>Problem: Die vom Empfänger geforderte Arbeit ist schwerer als Sie bereit sind, zu berechnen. %1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/__init__.py" line="853"/>
|
<location filename="../bitmessageqt/__init__.py" line="853"/>
|
||||||
|
@ -686,7 +686,7 @@ p, li { white-space: pre-wrap; }
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/bitmessageui.py" line="601"/>
|
<location filename="../bitmessageqt/bitmessageui.py" line="601"/>
|
||||||
<source>The Address book is useful for adding names or labels to other people's Bitmessage addresses so that you can recognize them more easily in your inbox. You can add entries here using the 'Add' button, or from your inbox by right-clicking on a message.</source>
|
<source>The Address book is useful for adding names or labels to other people's Bitmessage addresses so that you can recognize them more easily in your inbox. You can add entries here using the 'Add' button, or from your inbox by right-clicking on a message.</source>
|
||||||
<translation>Das Adressbuch ist nützlich um die Bitmessage-Adressen anderer Personen Namen oder Beschreibungen zuzuordnen, so dass Sie sie einfacher im Posteingang erkennen können. Sie können Adressen über "Hinzufügen" eintragen, oder über einen Rechtsklick auf eine Nachricht im Posteingang.</translation>
|
<translation>Das Adressbuch ist nützlich, um die Bitmessage-Adressen anderer Personen Namen oder Beschreibungen zuzuordnen, sodass Sie sie einfacher im Posteingang erkennen können. Sie können Adressen über "Neuen Eintrag erstellen" hinzufügen, oder über einen Rechtsklick auf eine Nachricht im Posteingang.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/bitmessageui.py" line="614"/>
|
<location filename="../bitmessageqt/bitmessageui.py" line="614"/>
|
||||||
|
@ -946,7 +946,7 @@ p, li { white-space: pre-wrap; }
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/__init__.py" line="2998"/>
|
<location filename="../bitmessageqt/__init__.py" line="2998"/>
|
||||||
<source>Set avatar...</source>
|
<source>Set avatar...</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Avatar wählen...</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/__init__.py" line="1359"/>
|
<location filename="../bitmessageqt/__init__.py" line="1359"/>
|
||||||
|
@ -966,7 +966,7 @@ p, li { white-space: pre-wrap; }
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/__init__.py" line="1519"/>
|
<location filename="../bitmessageqt/__init__.py" line="1519"/>
|
||||||
<source>Inventory lookups per second: %1</source>
|
<source>Inventory lookups per second: %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Inventory lookups pro Sekunde: %1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/__init__.py" line="2286"/>
|
<location filename="../bitmessageqt/__init__.py" line="2286"/>
|
||||||
|
@ -981,12 +981,12 @@ p, li { white-space: pre-wrap; }
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/__init__.py" line="3005"/>
|
<location filename="../bitmessageqt/__init__.py" line="3005"/>
|
||||||
<source>Do you really want to remove this avatar?</source>
|
<source>Do you really want to remove this avatar?</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Wollen Sie diesen Avatar wirklich entfernen?</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/__init__.py" line="3013"/>
|
<location filename="../bitmessageqt/__init__.py" line="3013"/>
|
||||||
<source>You have already set an avatar for this address. Do you really want to overwrite it?</source>
|
<source>You have already set an avatar for this address. Do you really want to overwrite it?</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Sie haben bereits einen Avatar für diese Adresse gewählt. Wollen Sie ihn wirklich überschreiben?</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/__init__.py" line="3287"/>
|
<location filename="../bitmessageqt/__init__.py" line="3287"/>
|
||||||
|
@ -1040,7 +1040,7 @@ p, li { white-space: pre-wrap; }
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/bitmessageui.py" line="627"/>
|
<location filename="../bitmessageqt/bitmessageui.py" line="627"/>
|
||||||
<source>Inventory lookups per second: 0</source>
|
<source>Inventory lookups per second: 0</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Inventory lookups pro Sekunde: 0</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
@ -1130,7 +1130,7 @@ Die Zufallszahlen-Option ist standard, jedoch haben deterministische Adressen ei
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/newaddressdialog.py" line="190"/>
|
<location filename="../bitmessageqt/newaddressdialog.py" line="190"/>
|
||||||
<source> (best if this is the first of many addresses you will create)</source>
|
<source> (best if this is the first of many addresses you will create)</source>
|
||||||
<translation>(zum generieren der erste Adresse empfohlen)</translation>
|
<translation>(Zum Generieren der ersten Adresse empfohlen)</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/newaddressdialog.py" line="191"/>
|
<location filename="../bitmessageqt/newaddressdialog.py" line="191"/>
|
||||||
|
@ -1145,7 +1145,7 @@ Die Zufallszahlen-Option ist standard, jedoch haben deterministische Adressen ei
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/newaddressdialog.py" line="181"/>
|
<location filename="../bitmessageqt/newaddressdialog.py" line="181"/>
|
||||||
<source>Address version number: 4</source>
|
<source>Address version number: 4</source>
|
||||||
<translation type="unfinished">Adress-Versionsnummer: 4</translation>
|
<translation>Adress-Versionsnummer: 4</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
@ -1275,7 +1275,7 @@ Die Zufallszahlen-Option ist standard, jedoch haben deterministische Adressen ei
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/help.py" line="47"/>
|
<location filename="../bitmessageqt/help.py" line="47"/>
|
||||||
<source>As Bitmessage is a collaborative project, help can be found online in the Bitmessage Wiki:</source>
|
<source>As Bitmessage is a collaborative project, help can be found online in the Bitmessage Wiki:</source>
|
||||||
<translation>Bei Bitmessage handelt es sich um ein kollaboratives Projekt, Hilfe finden Sie online in Bitmessage-Wiki:</translation>
|
<translation>Bitmessage ist ein kollaboratives Projekt. Hilfe finden Sie online im Bitmessage-Wiki:</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
@ -1293,7 +1293,7 @@ Die Zufallszahlen-Option ist standard, jedoch haben deterministische Adressen ei
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/iconglossary.py" line="84"/>
|
<location filename="../bitmessageqt/iconglossary.py" line="84"/>
|
||||||
<source>You have made at least one connection to a peer using an outgoing connection but you have not yet received any incoming connections. Your firewall or home router probably isn't configured to forward incoming TCP connections to your computer. Bitmessage will work just fine but it would help the Bitmessage network if you allowed for incoming connections and will help you be a better-connected node.</source>
|
<source>You have made at least one connection to a peer using an outgoing connection but you have not yet received any incoming connections. Your firewall or home router probably isn't configured to forward incoming TCP connections to your computer. Bitmessage will work just fine but it would help the Bitmessage network if you allowed for incoming connections and will help you be a better-connected node.</source>
|
||||||
<translation>Sie haben mindestes eine Verbindung mit einem Netzwerkteilnehmer über eine ausgehende Verbindung, aber Sie haben noch keine eingehende Verbindung. Ihre Firewall oder Router ist vermutlich nicht richtig konfiguriert um eingehende TCP-Verbindungen an Ihren Computer weiterzuleiten. Bittmessage wird gut funktionieren, jedoch helfen Sie dem Netzwerk, wenn Sie eingehende Verbindungen erlauben. Es hilft auch Ihnen schneller und mehr Verbindungen ins Netzwerk aufzubauen.</translation>
|
<translation>Sie haben mindestes eine Verbindung mit einem Netzwerkteilnehmer über eine ausgehende Verbindung, aber Sie haben noch keine eingehende Verbindung. Ihre Firewall oder Ihr Router ist vermutlich nicht richtig konfiguriert, um eingehende TCP-Verbindungen an Ihren Computer weiterzuleiten. Bitmessage wird gut funktionieren, jedoch helfen Sie dem Netzwerk, wenn Sie eingehende Verbindungen erlauben. Es hilft auch Ihnen schneller und mehr Verbindungen ins Netzwerk aufzubauen.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/iconglossary.py" line="85"/>
|
<location filename="../bitmessageqt/iconglossary.py" line="85"/>
|
||||||
|
@ -1336,7 +1336,7 @@ Die Zufallszahlen-Option ist standard, jedoch haben deterministische Adressen ei
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/newchandialog.py" line="104"/>
|
<location filename="../bitmessageqt/newchandialog.py" line="104"/>
|
||||||
<source><html><head/><body><p>A chan exists when a group of people share the same decryption keys. The keys and bitmessage address used by a chan are generated from a human-friendly word or phrase (the chan name). To send a message to everyone in the chan, send a normal person-to-person message to the chan address.</p><p>Chans are experimental and completely unmoderatable.</p></body></html></source>
|
<source><html><head/><body><p>A chan exists when a group of people share the same decryption keys. The keys and bitmessage address used by a chan are generated from a human-friendly word or phrase (the chan name). To send a message to everyone in the chan, send a normal person-to-person message to the chan address.</p><p>Chans are experimental and completely unmoderatable.</p></body></html></source>
|
||||||
<translation><html><head/><body><p>Ein Chan existiert, wenn eine Gruppe von Leuten sich den gleichen Entschlüsselungscode teilen. Die Schlüssel und Bitmessage-Adressen werden basierend auf einem lesbaren Wort oder Satz generiert (Dem Chan-Namen). Um eine Nachricht an den Chan zu senden, senden Sie eine normale Person-zu-Person-Nachricht an die Chan-Adresse.</p><p>Chans sind experimentell and völlig unmoderierbar.</p><br></body></html></translation>
|
<translation><html><head/><body><p>Ein Chan existiert, wenn eine Gruppe von Leuten sich den gleichen Entschlüsselungscode teilen. Die Schlüssel und Bitmessage-Adressen werden basierend auf einem lesbaren Wort oder Satz generiert (dem Chan-Namen). Um eine Nachricht an den Chan zu senden, senden Sie eine normale Person-zu-Person-Nachricht an die Chan-Adresse.</p><p>Chans sind experimentell und völlig unmoderierbar.</p><br></body></html></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/newchandialog.py" line="106"/>
|
<location filename="../bitmessageqt/newchandialog.py" line="106"/>
|
||||||
|
@ -1346,7 +1346,7 @@ Die Zufallszahlen-Option ist standard, jedoch haben deterministische Adressen ei
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/newchandialog.py" line="101"/>
|
<location filename="../bitmessageqt/newchandialog.py" line="101"/>
|
||||||
<source><html><head/><body><p>Enter a name for your chan. If you choose a sufficiently complex chan name (like a strong and unique passphrase) and none of your friends share it publicly then the chan will be secure and private. If you and someone else both create a chan with the same chan name then it is currently very likely that they will be the same chan.</p></body></html></source>
|
<source><html><head/><body><p>Enter a name for your chan. If you choose a sufficiently complex chan name (like a strong and unique passphrase) and none of your friends share it publicly then the chan will be secure and private. If you and someone else both create a chan with the same chan name then it is currently very likely that they will be the same chan.</p></body></html></source>
|
||||||
<translation><html><head/><body><p>Geben Sie einen Namen für Ihren Chan ein. Wenn Sie einen ausreichend komplexen Chan-Namen wählen (Wie einen starkes und einzigartigen Kennwortsatz) und keiner Ihrer Freunde ihn öffentlich weitergibt, wird der Chan sicher und privat bleiben. Wenn eine andere Person einen Chan mit dem gleichen Namen erzeugt, werden diese zu einem Chan.</p><br></body></html></translation>
|
<translation><html><head/><body><p>Geben Sie einen Namen für Ihren Chan ein. Wenn Sie einen ausreichend komplexen Chan-Namen wählen (wie einen starken, einzigartigen Kennwortsatz) und keiner Ihrer Freunde ihn öffentlich weitergibt, wird der Chan sicher und privat bleiben. Wenn eine andere Person einen Chan mit dem gleichen Namen erzeugt, werden diese zu einem Chan.</p><br></body></html></translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
@ -1369,7 +1369,7 @@ Die Zufallszahlen-Option ist standard, jedoch haben deterministische Adressen ei
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/regenerateaddresses.py" line="117"/>
|
<location filename="../bitmessageqt/regenerateaddresses.py" line="117"/>
|
||||||
<source>Number of addresses to make based on your passphrase:</source>
|
<source>Number of addresses to make based on your passphrase:</source>
|
||||||
<translation>Anzahl der Adressen die basierend auf diesem Kennwortsatz erzeugt werden sollen:</translation>
|
<translation>Anzahl der Adressen, die basierend auf diesem Kennwortsatz erzeugt werden sollen:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/regenerateaddresses.py" line="108"/>
|
<location filename="../bitmessageqt/regenerateaddresses.py" line="108"/>
|
||||||
|
@ -1384,7 +1384,7 @@ Die Zufallszahlen-Option ist standard, jedoch haben deterministische Adressen ei
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/regenerateaddresses.py" line="119"/>
|
<location filename="../bitmessageqt/regenerateaddresses.py" line="119"/>
|
||||||
<source>Stream number:</source>
|
<source>Stream number:</source>
|
||||||
<translation>Stream Nummer:</translation>
|
<translation>Stream-Nummer:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/regenerateaddresses.py" line="120"/>
|
<location filename="../bitmessageqt/regenerateaddresses.py" line="120"/>
|
||||||
|
@ -1394,7 +1394,7 @@ Die Zufallszahlen-Option ist standard, jedoch haben deterministische Adressen ei
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/regenerateaddresses.py" line="121"/>
|
<location filename="../bitmessageqt/regenerateaddresses.py" line="121"/>
|
||||||
<source>Spend several minutes of extra computing time to make the address(es) 1 or 2 characters shorter</source>
|
<source>Spend several minutes of extra computing time to make the address(es) 1 or 2 characters shorter</source>
|
||||||
<translation>Verwenden Sie einige Minuten extra Rechenleistung um die Adresse(n) ein bis zwei Zeichen kürzer zu machen</translation>
|
<translation>Verwenden Sie einige Minuten extra Rechenleistung, um die Adresse(n) ein bis zwei Zeichen kürzer zu machen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/regenerateaddresses.py" line="122"/>
|
<location filename="../bitmessageqt/regenerateaddresses.py" line="122"/>
|
||||||
|
@ -1404,12 +1404,12 @@ Die Zufallszahlen-Option ist standard, jedoch haben deterministische Adressen ei
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/regenerateaddresses.py" line="123"/>
|
<location filename="../bitmessageqt/regenerateaddresses.py" line="123"/>
|
||||||
<source>If you have previously made deterministic addresses but lost them due to an accident (like hard drive failure), you can regenerate them here. If you used the random number generator to make your addresses then this form will be of no use to you.</source>
|
<source>If you have previously made deterministic addresses but lost them due to an accident (like hard drive failure), you can regenerate them here. If you used the random number generator to make your addresses then this form will be of no use to you.</source>
|
||||||
<translation>Wenn Sie bereits deterministische Adressen erstellt haben, aber diese durch einen Unfall wie eine defekte Festplatte verloren haben, können Sie sie hier regenerieren. Wenn Sie den Zufallsgenerator verwendet haben um Ihre Adressen erstmals zu erstellen, kann dieses Formular Ihnen nicht helfen.</translation>
|
<translation>Wenn Sie bereits deterministische Adressen erstellt haben, aber diese durch einen Unfall (zum Beispiel durch eine defekte Festplatte) verloren haben, können Sie sie hier regenerieren. Dies funktioniert nur dann, wenn Sie bei der erstmaligen Erstellung Ihrer Adressen nicht den Zufallsgenerator verwendet haben.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/regenerateaddresses.py" line="118"/>
|
<location filename="../bitmessageqt/regenerateaddresses.py" line="118"/>
|
||||||
<source>Address version number:</source>
|
<source>Address version number:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Adress-Versionsnummer:</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
@ -1427,7 +1427,7 @@ Die Zufallszahlen-Option ist standard, jedoch haben deterministische Adressen ei
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/settings.py" line="386"/>
|
<location filename="../bitmessageqt/settings.py" line="386"/>
|
||||||
<source>Start Bitmessage in the tray (don't show main window)</source>
|
<source>Start Bitmessage in the tray (don't show main window)</source>
|
||||||
<translation>Bitmessage minimiert starten (Zeigt das Hauptfenster nicht an)</translation>
|
<translation>Bitmessage minimiert starten (zeigt das Hauptfenster nicht an)</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/settings.py" line="387"/>
|
<location filename="../bitmessageqt/settings.py" line="387"/>
|
||||||
|
@ -1442,12 +1442,12 @@ Die Zufallszahlen-Option ist standard, jedoch haben deterministische Adressen ei
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/settings.py" line="389"/>
|
<location filename="../bitmessageqt/settings.py" line="389"/>
|
||||||
<source>Run in Portable Mode</source>
|
<source>Run in Portable Mode</source>
|
||||||
<translation>In portablem Modus arbeiten</translation>
|
<translation>Im portablen Modus arbeiten</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/settings.py" line="390"/>
|
<location filename="../bitmessageqt/settings.py" line="390"/>
|
||||||
<source>In Portable Mode, messages and config files are stored in the same directory as the program rather than the normal application-data folder. This makes it convenient to run Bitmessage from a USB thumb drive.</source>
|
<source>In Portable Mode, messages and config files are stored in the same directory as the program rather than the normal application-data folder. This makes it convenient to run Bitmessage from a USB thumb drive.</source>
|
||||||
<translation>Im portablen Modus werden Nachrichten und Konfigurationen im gleichen Ordner abgelegt, wie sich das Programm selbst befindet anstelle im normalen Anwendungsdaten-Ordner. Das macht es möglich Bitmessage auf einem USB-Stick zu betreiben.</translation>
|
<translation>Im portablen Modus werden Nachrichten und Konfigurationen im gleichen Ordner abgelegt, in dem sich das Programm selbst befindet (anstatt im normalen Anwendungsdaten-Ordner). Das macht es möglich, Bitmessage auf einem USB-Stick zu betreiben.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/settings.py" line="404"/>
|
<location filename="../bitmessageqt/settings.py" line="404"/>
|
||||||
|
@ -1522,7 +1522,7 @@ Die Zufallszahlen-Option ist standard, jedoch haben deterministische Adressen ei
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/settings.py" line="422"/>
|
<location filename="../bitmessageqt/settings.py" line="422"/>
|
||||||
<source>When someone sends you a message, their computer must first complete some work. The difficulty of this work, by default, is 1. You may raise this default for new addresses you create by changing the values here. Any new addresses you create will require senders to meet the higher difficulty. There is one exception: if you add a friend or acquaintance to your address book, Bitmessage will automatically notify them when you next send a message that they need only complete the minimum amount of work: difficulty 1. </source>
|
<source>When someone sends you a message, their computer must first complete some work. The difficulty of this work, by default, is 1. You may raise this default for new addresses you create by changing the values here. Any new addresses you create will require senders to meet the higher difficulty. There is one exception: if you add a friend or acquaintance to your address book, Bitmessage will automatically notify them when you next send a message that they need only complete the minimum amount of work: difficulty 1. </source>
|
||||||
<translation>Wenn jemand Ihnen eine Nachricht schickt, muss der absendende Computer erst einige Arbeit verrichten. Die Schwierigkeit dieser Arbeit ist standardmäßig 1. Sie können diesen Wert für alle neuen Adressen, die Sie generieren hier ändern. Es gibt eine Ausnahme: Wenn Sie einen Freund oder Bekannten in Ihr Adressbuch übernehmen, wird Bitmessage ihn mit der nächsten Nachricht automatisch informieren, dass er nur noch die minimale Arbeit verrichten muss: Schwierigkeit 1.</translation>
|
<translation>Wenn jemand Ihnen eine Nachricht schickt, muss der absendende Computer erst einige Arbeit verrichten. Die Schwierigkeit dieser Arbeit ist standardmäßig 1. Sie können diesen Wert für alle neuen Adressen, die Sie generieren, hier ändern. Es gibt eine Ausnahme: Wenn Sie einen Freund oder Bekannten in Ihr Adressbuch übernehmen, wird Bitmessage ihn mit der nächsten Nachricht automatisch informieren, dass er nur noch die minimale Arbeit verrichten muss: Schwierigkeit 1.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/settings.py" line="419"/>
|
<location filename="../bitmessageqt/settings.py" line="419"/>
|
||||||
|
@ -1537,12 +1537,12 @@ Die Zufallszahlen-Option ist standard, jedoch haben deterministische Adressen ei
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/settings.py" line="423"/>
|
<location filename="../bitmessageqt/settings.py" line="423"/>
|
||||||
<source>The 'Small message difficulty' mostly only affects the difficulty of sending small messages. Doubling this value makes it almost twice as difficult to send a small message but doesn't really affect large messages.</source>
|
<source>The 'Small message difficulty' mostly only affects the difficulty of sending small messages. Doubling this value makes it almost twice as difficult to send a small message but doesn't really affect large messages.</source>
|
||||||
<translation>Die "Schwierigkeit für kurze Nachrichten" trifft nur auf das senden kurzen Nachrichten zu. Verdoppelung des Wertes macht es fast doppelt so schwer kurze Nachrichten zu senden, aber hat keinen Effekt bei langen Nachrichten.</translation>
|
<translation>Die "Schwierigkeit für kurze Nachrichten" trifft nur auf das Senden kurzer Nachrichten zu. Verdoppelung dieses Wertes macht es fast doppelt so schwer, kurze Nachrichten zu senden, aber hat keinen Effekt bei langen Nachrichten.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/settings.py" line="420"/>
|
<location filename="../bitmessageqt/settings.py" line="420"/>
|
||||||
<source>The 'Total difficulty' affects the absolute amount of work the sender must complete. Doubling this value doubles the amount of work.</source>
|
<source>The 'Total difficulty' affects the absolute amount of work the sender must complete. Doubling this value doubles the amount of work.</source>
|
||||||
<translation>Die "Gesammtschwierigkeit" beeinflusst die absolute menge Arbeit die ein Sender verrichten muss. Verdoppelung dieses Wertes verdoppelt die Menge der Arbeit.</translation>
|
<translation>Die "Gesamtschwierigkeit" beeinflusst die absolute Menge Arbeit, die ein Sender verrichten muss. Verdoppelung dieses Wertes verdoppelt die Menge der Arbeit.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/settings.py" line="424"/>
|
<location filename="../bitmessageqt/settings.py" line="424"/>
|
||||||
|
@ -1557,7 +1557,7 @@ Die Zufallszahlen-Option ist standard, jedoch haben deterministische Adressen ei
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/settings.py" line="426"/>
|
<location filename="../bitmessageqt/settings.py" line="426"/>
|
||||||
<source>Maximum acceptable total difficulty:</source>
|
<source>Maximum acceptable total difficulty:</source>
|
||||||
<translation>Maximale akzeptierte Gesammtschwierigkeit:</translation>
|
<translation>Maximale akzeptierte Gesamtschwierigkeit:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/settings.py" line="427"/>
|
<location filename="../bitmessageqt/settings.py" line="427"/>
|
||||||
|
@ -1572,7 +1572,7 @@ Die Zufallszahlen-Option ist standard, jedoch haben deterministische Adressen ei
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/settings.py" line="414"/>
|
<location filename="../bitmessageqt/settings.py" line="414"/>
|
||||||
<source>Listen for incoming connections when using proxy</source>
|
<source>Listen for incoming connections when using proxy</source>
|
||||||
<translation>Auf eingehende Verdindungen warten, auch wenn eine Proxy-Server verwendet wird</translation>
|
<translation>Auf eingehende Verdindungen warten, auch wenn ein Proxy-Server verwendet wird</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/settings.py" line="391"/>
|
<location filename="../bitmessageqt/settings.py" line="391"/>
|
||||||
|
@ -1582,7 +1582,7 @@ Die Zufallszahlen-Option ist standard, jedoch haben deterministische Adressen ei
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/settings.py" line="429"/>
|
<location filename="../bitmessageqt/settings.py" line="429"/>
|
||||||
<source><html><head/><body><p>Bitmessage can utilize a different Bitcoin-based program called Namecoin to make addresses human-friendly. For example, instead of having to tell your friend your long Bitmessage address, you can simply tell him to send a message to <span style=" font-style:italic;">test. </span></p><p>(Getting your own Bitmessage address into Namecoin is still rather difficult).</p><p>Bitmessage can use either namecoind directly or a running nmcontrol instance.</p></body></html></source>
|
<source><html><head/><body><p>Bitmessage can utilize a different Bitcoin-based program called Namecoin to make addresses human-friendly. For example, instead of having to tell your friend your long Bitmessage address, you can simply tell him to send a message to <span style=" font-style:italic;">test. </span></p><p>(Getting your own Bitmessage address into Namecoin is still rather difficult).</p><p>Bitmessage can use either namecoind directly or a running nmcontrol instance.</p></body></html></source>
|
||||||
<translation><html><head/><body><p>Bitmessage kann ein anderes Bitcoin basiertes Programm namens Namecoin nutzen um Adressen leserlicher zu machen. Zum Beispiel: Anstelle Ihrem Bekannten Ihre lange Bitmessage-Adresse vorzulesen, können Sie ihm einfach sagen, er soll eine Nachricht an <span style=" font-style:italic;">test </span>senden.</p><p> (Ihre Bitmessage-Adresse in Namecoin zu speichern ist noch sehr umständlich)</p><p>Bitmessage kann direkt namecoind verwenden, oder eine nmcontrol Instanz.</p></body></html></translation>
|
<translation><html><head/><body><p>Bitmessage kann ein anderes Bitcoin basiertes Programm namens Namecoin nutzen, um Adressen leserlicher zu machen. Zum Beispiel: Anstelle Ihrem Bekannten Ihre lange Bitmessage-Adresse vorzulesen, können Sie ihm einfach sagen, er soll eine Nachricht an <span style=" font-style:italic;">test </span>senden.</p><p> (Ihre Bitmessage-Adresse in Namecoin zu speichern ist noch sehr umständlich)</p><p>Bitmessage kann direkt namecoind verwenden, oder eine nmcontrol Instanz.</p></body></html></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/settings.py" line="430"/>
|
<location filename="../bitmessageqt/settings.py" line="430"/>
|
||||||
|
|
33
src/translations/bitmessage_ja.pro
Normal file
33
src/translations/bitmessage_ja.pro
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
SOURCES = ../addresses.py\
|
||||||
|
../bitmessagemain.py\
|
||||||
|
../class_addressGenerator.py\
|
||||||
|
../class_outgoingSynSender.py\
|
||||||
|
../class_receiveDataThread.py\
|
||||||
|
../class_sendDataThread.py\
|
||||||
|
../class_singleCleaner.py\
|
||||||
|
../class_singleListener.py\
|
||||||
|
../class_singleWorker.py\
|
||||||
|
../class_sqlThread.py\
|
||||||
|
../helper_bitcoin.py\
|
||||||
|
../helper_bootstrap.py\
|
||||||
|
../helper_generic.py\
|
||||||
|
../helper_inbox.py\
|
||||||
|
../helper_sent.py\
|
||||||
|
../helper_startup.py\
|
||||||
|
../shared.py\
|
||||||
|
../bitmessageqt/__init__.py\
|
||||||
|
../bitmessageqt/about.py\
|
||||||
|
../bitmessageqt/bitmessageui.py\
|
||||||
|
../bitmessageqt/connect.py\
|
||||||
|
../bitmessageqt/help.py\
|
||||||
|
../bitmessageqt/iconglossary.py\
|
||||||
|
../bitmessageqt/newaddressdialog.py\
|
||||||
|
../bitmessageqt/newchandialog.py\
|
||||||
|
../bitmessageqt/newsubscriptiondialog.py\
|
||||||
|
../bitmessageqt/regenerateaddresses.py\
|
||||||
|
../bitmessageqt/settings.py\
|
||||||
|
../bitmessageqt/specialaddressbehavior.py
|
||||||
|
|
||||||
|
|
||||||
|
TRANSLATIONS = bitmessage_ja.ts
|
||||||
|
CODECFORTR = UTF-8
|
BIN
src/translations/bitmessage_ja.qm
Normal file
BIN
src/translations/bitmessage_ja.qm
Normal file
Binary file not shown.
1463
src/translations/bitmessage_ja.ts
Normal file
1463
src/translations/bitmessage_ja.ts
Normal file
|
@ -0,0 +1,1463 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!DOCTYPE TS>
|
||||||
|
<TS version="2.0" language="ja_JP" sourcelanguage="en">
|
||||||
|
<context>
|
||||||
|
<name>MainWindow</name>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="91"/>
|
||||||
|
<source>One of your addresses, %1, is an old version 1 address. Version 1 addresses are no longer supported. May we delete it now?</source>
|
||||||
|
<translation>%1は古いバージョン1のアドレスです。バージョン1のアドレスはサポートが終了しています。すぐに削除しますか?</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="163"/>
|
||||||
|
<source>Reply</source>
|
||||||
|
<translatorcomment>.</translatorcomment>
|
||||||
|
<translation>返信</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="165"/>
|
||||||
|
<source>Add sender to your Address Book</source>
|
||||||
|
<translation>送信元をアドレス帳に追加</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="269"/>
|
||||||
|
<source>Move to Trash</source>
|
||||||
|
<translation>ゴミ箱へ移動</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="169"/>
|
||||||
|
<source>View HTML code as formatted text</source>
|
||||||
|
<translation>HTMLコードを整形したテキストで表示</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="171"/>
|
||||||
|
<source>Save message as...</source>
|
||||||
|
<translation>形式を選択してメッセージを保存</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="173"/>
|
||||||
|
<source>Mark Unread</source>
|
||||||
|
<translation>未読にする</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="573"/>
|
||||||
|
<source>New</source>
|
||||||
|
<translation>新規</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="292"/>
|
||||||
|
<source>Enable</source>
|
||||||
|
<translation>有効</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="294"/>
|
||||||
|
<source>Disable</source>
|
||||||
|
<translation>無効</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="290"/>
|
||||||
|
<source>Copy address to clipboard</source>
|
||||||
|
<translation>アドレスをコピー</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="200"/>
|
||||||
|
<source>Special address behavior...</source>
|
||||||
|
<translation>アドレスの特別な動作</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="218"/>
|
||||||
|
<source>Send message to this address</source>
|
||||||
|
<translation>このアドレスへ送信</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="222"/>
|
||||||
|
<source>Subscribe to this address</source>
|
||||||
|
<translation>このアドレスを購読</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="224"/>
|
||||||
|
<source>Add New Address</source>
|
||||||
|
<translation>アドレスを追加</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="288"/>
|
||||||
|
<source>Delete</source>
|
||||||
|
<translation>削除</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="271"/>
|
||||||
|
<source>Copy destination address to clipboard</source>
|
||||||
|
<translation>宛先アドレスをコピー</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="273"/>
|
||||||
|
<source>Force send</source>
|
||||||
|
<translation>強制的に送信</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="600"/>
|
||||||
|
<source>Add new entry</source>
|
||||||
|
<translation>新しい項目を追加</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="398"/>
|
||||||
|
<source>Since startup on %1</source>
|
||||||
|
<translation>起動日時 %1</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="632"/>
|
||||||
|
<source>Waiting on their encryption key. Will request it again soon.</source>
|
||||||
|
<translation>暗号化キーを待っています。再度リクエストします。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="635"/>
|
||||||
|
<source>Encryption key request queued.</source>
|
||||||
|
<translation>暗号鍵のリクエストはキューに入りました。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="638"/>
|
||||||
|
<source>Queued.</source>
|
||||||
|
<translation>キューに入りました。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="641"/>
|
||||||
|
<source>Message sent. Waiting on acknowledgement. Sent at %1</source>
|
||||||
|
<translation>メッセージは送信されました。確認街です。送信先: %1</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="644"/>
|
||||||
|
<source>Message sent. Sent at %1</source>
|
||||||
|
<translation>メッセージは送信されました。送信先: %1</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="647"/>
|
||||||
|
<source>Need to do work to send message. Work is queued.</source>
|
||||||
|
<translation>送信のために処理を行う必要があります。処理はキューに入りました。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="650"/>
|
||||||
|
<source>Acknowledgement of the message received %1</source>
|
||||||
|
<translation>メッセージの確認を受け取りました %1</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="653"/>
|
||||||
|
<source>Broadcast queued.</source>
|
||||||
|
<translation>Broadcastがキューに入りました。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="656"/>
|
||||||
|
<source>Broadcast on %1</source>
|
||||||
|
<translation>Broadcast: %1</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="659"/>
|
||||||
|
<source>Problem: The work demanded by the recipient is more difficult than you are willing to do. %1</source>
|
||||||
|
<translation>問題: 受信者が要求している処理は現在あなたが設定しているよりも高い難易度です。 %1</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="662"/>
|
||||||
|
<source>Problem: The recipient's encryption key is no good. Could not encrypt message. %1</source>
|
||||||
|
<translation>問題: 受信者の暗号鍵は正当でない物です。メッセージを暗号化できません。 %1</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="665"/>
|
||||||
|
<source>Forced difficulty override. Send should start soon.</source>
|
||||||
|
<translation>難易度を強制上書きしました。まもなく送信されます。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="668"/>
|
||||||
|
<source>Unknown status: %1 %2</source>
|
||||||
|
<translation>不明なステータス: %1 %2</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1344"/>
|
||||||
|
<source>Not Connected</source>
|
||||||
|
<translation>未接続</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="821"/>
|
||||||
|
<source>Show Bitmessage</source>
|
||||||
|
<translation>Bitmessageを表示</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="556"/>
|
||||||
|
<source>Send</source>
|
||||||
|
<translation>送る</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="836"/>
|
||||||
|
<source>Subscribe</source>
|
||||||
|
<translation>購読</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="597"/>
|
||||||
|
<source>Address Book</source>
|
||||||
|
<translation>アドレス帳</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="622"/>
|
||||||
|
<source>Quit</source>
|
||||||
|
<translation>終了</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1130"/>
|
||||||
|
<source>You may manage your keys by editing the keys.dat file stored in the same directory as this program. It is important that you back up this file.</source>
|
||||||
|
<translation>プログラムを同じディレクトリに保存されているkeys.datファイルを編集することで鍵を管理できます。ファイルをバックアップしておくことも重要です。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1134"/>
|
||||||
|
<source>You may manage your keys by editing the keys.dat file stored in
|
||||||
|
%1
|
||||||
|
It is important that you back up this file.</source>
|
||||||
|
<translation>%1に保存されているkeys.datファイルを編集することで鍵を管理できます。ファイルをバックアップしておくことも重要です。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1141"/>
|
||||||
|
<source>Open keys.dat?</source>
|
||||||
|
<translation>keys.datを開きますか?</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1138"/>
|
||||||
|
<source>You may manage your keys by editing the keys.dat file stored in the same directory as this program. It is important that you back up this file. Would you like to open the file now? (Be sure to close Bitmessage before making any changes.)</source>
|
||||||
|
<translation>プログラムを同じディレクトリに保存されているkeys.datファイルを編集することで鍵を管理できます。ファイルをバックアップしておくことも重要です。すぐにファイルを開きますか?(必ず編集する前にBitmessageを終了してください)</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1141"/>
|
||||||
|
<source>You may manage your keys by editing the keys.dat file stored in
|
||||||
|
%1
|
||||||
|
It is important that you back up this file. Would you like to open the file now? (Be sure to close Bitmessage before making any changes.)</source>
|
||||||
|
<translation>%1に保存されているkeys.datファイルを編集することで鍵を管理できます。ファイルをバックアップしておくことも重要です。すぐにファイルを開きますか?(必ず編集する前にBitmessageを終了してください)</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1147"/>
|
||||||
|
<source>Delete trash?</source>
|
||||||
|
<translation>ゴミ箱を空にしますか?</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1147"/>
|
||||||
|
<source>Are you sure you want to delete all trashed messages?</source>
|
||||||
|
<translation>ゴミ箱内のメッセージを全て削除してもよろしいですか?</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1158"/>
|
||||||
|
<source>bad passphrase</source>
|
||||||
|
<translation>不正なパスフレーズ</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1158"/>
|
||||||
|
<source>You must type your passphrase. If you don't have one then this is not the form for you.</source>
|
||||||
|
<translation>パスフレーズを入力してください。パスフレーズがない場合は入力する必要はありません。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1197"/>
|
||||||
|
<source>Chan name needed</source>
|
||||||
|
<translation>Chan名が必要です</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1197"/>
|
||||||
|
<source>You didn't enter a chan name.</source>
|
||||||
|
<translation>chan名が入力されていません。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1217"/>
|
||||||
|
<source>Address already present</source>
|
||||||
|
<translation>アドレスは既に表示されています</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1217"/>
|
||||||
|
<source>Could not add chan because it appears to already be one of your identities.</source>
|
||||||
|
<translation>chanを追加できません。既にアドレス一覧に含まれています。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1222"/>
|
||||||
|
<source>Success</source>
|
||||||
|
<translation>成功</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1192"/>
|
||||||
|
<source>Successfully created chan. To let others join your chan, give them the chan name and this Bitmessage address: %1. This address also appears in 'Your Identities'.</source>
|
||||||
|
<translation>chanの作成に成功しました。他の人がchanに参加できるようにするには、chanの名前とBitmessageアドレスを伝えてください: %1 アドレスは「アドレス一覧」に表示されます。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1201"/>
|
||||||
|
<source>Address too new</source>
|
||||||
|
<translation>アドレスが新しすぎます</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1201"/>
|
||||||
|
<source>Although that Bitmessage address might be valid, its version number is too new for us to handle. Perhaps you need to upgrade Bitmessage.</source>
|
||||||
|
<translation>このBitmessageアドレスは正当ですが、バージョン番号が現在使用中の物より新しいです。Bitmessageをアップデートしてください。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1205"/>
|
||||||
|
<source>Address invalid</source>
|
||||||
|
<translation>アドレスが不正です</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1205"/>
|
||||||
|
<source>That Bitmessage address is not valid.</source>
|
||||||
|
<translation>このBitmessageアドレスは不正です。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1213"/>
|
||||||
|
<source>Address does not match chan name</source>
|
||||||
|
<translation>アドレスがchan名と一致しません</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1213"/>
|
||||||
|
<source>Although the Bitmessage address you entered was valid, it doesn't match the chan name.</source>
|
||||||
|
<translation>このBitmessageアドレスは正当ですが、chan名と一致していません。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1222"/>
|
||||||
|
<source>Successfully joined chan. </source>
|
||||||
|
<translation>chanに参加しました。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1265"/>
|
||||||
|
<source>Processed %1 person-to-person messages.</source>
|
||||||
|
<translation>%1 通の1対1のメッセージを処理しました。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1270"/>
|
||||||
|
<source>Processed %1 broadcast messages.</source>
|
||||||
|
<translation>%1 件のBroadcastメッセージを処理しました。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1275"/>
|
||||||
|
<source>Processed %1 public keys.</source>
|
||||||
|
<translation>%1 件の公開鍵を処理しました。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1319"/>
|
||||||
|
<source>Total Connections: %1</source>
|
||||||
|
<translation>接続数: %1</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1338"/>
|
||||||
|
<source>Connection lost</source>
|
||||||
|
<translation>接続が切断されました</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1379"/>
|
||||||
|
<source>Connected</source>
|
||||||
|
<translation>接続済み</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1425"/>
|
||||||
|
<source>Message trashed</source>
|
||||||
|
<translation>メッセージが削除されました</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1559"/>
|
||||||
|
<source>Error: Bitmessage addresses start with BM- Please check %1</source>
|
||||||
|
<translation>エラー: Bitmessageアドレスは「BM-」で始まります。確認してください %1</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1562"/>
|
||||||
|
<source>Error: The address %1 is not typed or copied correctly. Please check it.</source>
|
||||||
|
<translation>エラー: アドレス %1 は正しく入力、またはコピーされていません。確認して下さい。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1565"/>
|
||||||
|
<source>Error: The address %1 contains invalid characters. Please check it.</source>
|
||||||
|
<translation>エラー: アドレス %1 は不正な文字を含んでいます。確認して下さい。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1568"/>
|
||||||
|
<source>Error: The address version in %1 is too high. Either you need to upgrade your Bitmessage software or your acquaintance is being clever.</source>
|
||||||
|
<translation>エラー: アドレスのバージョン %1 は現在使用中の物より新しいです。Bitmessageをアップデートする必要があるか、連絡先がより賢いです。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1571"/>
|
||||||
|
<source>Error: Some data encoded in the address %1 is too short. There might be something wrong with the software of your acquaintance.</source>
|
||||||
|
<translation>エラー: アドレス %1 でエンコードされたデータが短すぎます。連絡先のソフトウェアが何かしら誤っている可能性があります。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1574"/>
|
||||||
|
<source>Error: Some data encoded in the address %1 is too long. There might be something wrong with the software of your acquaintance.</source>
|
||||||
|
<translation>エラー: アドレス %1 でエンコードされたデータが長すぎます。連絡先のソフトウェアが何かしら誤っている可能性があります。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1577"/>
|
||||||
|
<source>Error: Something is wrong with the address %1.</source>
|
||||||
|
<translation>エラー: アドレス %1 には何かしら誤りがあります。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1644"/>
|
||||||
|
<source>Error: You must specify a From address. If you don't have one, go to the 'Your Identities' tab.</source>
|
||||||
|
<translation>エラー: 送信元アドレスを指定してください。まだ作成していない場合には「アドレス一覧」のタブを開いてください。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1588"/>
|
||||||
|
<source>Sending to your address</source>
|
||||||
|
<translation>アドレスへ送信中</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1588"/>
|
||||||
|
<source>Error: One of the addresses to which you are sending a message, %1, is yours. Unfortunately the Bitmessage client cannot process its own messages. Please try running a second client on a different computer or within a VM.</source>
|
||||||
|
<translation>エラー: 送信先アドレス %1 は自分自身のアドレスです。Bitmessageクライアントは自分自身へのメッセージを処理できません。別のPCか仮想マシン上でクライアントを立ち上げてください。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1594"/>
|
||||||
|
<source>Address version number</source>
|
||||||
|
<translation>アドレスのバージョン番号</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1594"/>
|
||||||
|
<source>Concerning the address %1, Bitmessage cannot understand address version numbers of %2. Perhaps upgrade Bitmessage to the latest version.</source>
|
||||||
|
<translation>アドレス %1 に接続。%2 のバージョン番号は処理できません。Bitmessageを最新のバージョンへアップデートしてください。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1598"/>
|
||||||
|
<source>Stream number</source>
|
||||||
|
<translation>ストリーム番号</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1598"/>
|
||||||
|
<source>Concerning the address %1, Bitmessage cannot handle stream numbers of %2. Perhaps upgrade Bitmessage to the latest version.</source>
|
||||||
|
<translation>アドレス %1 に接続。%2 のストリーム番号は処理できません。Bitmessageを最新のバージョンへアップデートしてください。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1603"/>
|
||||||
|
<source>Warning: You are currently not connected. Bitmessage will do the work necessary to send the message but it won't send until you connect.</source>
|
||||||
|
<translation>警告: 接続されていません。Bitmessageはメッセージの処理を行いますが、ネットワークに接続するまで送信はされません。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1640"/>
|
||||||
|
<source>Your 'To' field is empty.</source>
|
||||||
|
<translation>宛先が指定されていません。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1695"/>
|
||||||
|
<source>Work is queued.</source>
|
||||||
|
<translation>処理がキューに入りました。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1717"/>
|
||||||
|
<source>Right click one or more entries in your address book and select 'Send message to this address'.</source>
|
||||||
|
<translation>アドレス帳から一つ、または複数のアドレスを右クリックして「このアドレスへ送信」を選んでください。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1728"/>
|
||||||
|
<source>Fetched address from namecoin identity.</source>
|
||||||
|
<translation>namecoin IDからアドレスを取得。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1805"/>
|
||||||
|
<source>Work is queued. %1</source>
|
||||||
|
<translation>処理がキューに入りました。 %1</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1874"/>
|
||||||
|
<source>New Message</source>
|
||||||
|
<translation>新規メッセージ</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="1874"/>
|
||||||
|
<source>From </source>
|
||||||
|
<translation>送信元</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="3282"/>
|
||||||
|
<source>Address is valid.</source>
|
||||||
|
<translation>アドレスが不正です。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="2230"/>
|
||||||
|
<source>The address you entered was invalid. Ignoring it.</source>
|
||||||
|
<translation>入力されたアドレスは不正です。無視されました。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="2440"/>
|
||||||
|
<source>Error: You cannot add the same address to your address book twice. Try renaming the existing one if you want.</source>
|
||||||
|
<translation>エラー: 同じアドレスを複数アドレス帳に追加する事はできません。既存の項目をリネームしてください。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="2610"/>
|
||||||
|
<source>Error: You cannot add the same address to your subsciptions twice. Perhaps rename the existing one if you want.</source>
|
||||||
|
<translation>エラー: 同じアドレスを複数購読リストに追加する事はできません。既存の項目をリネームしてください。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="2046"/>
|
||||||
|
<source>Restart</source>
|
||||||
|
<translation>再開</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="2040"/>
|
||||||
|
<source>You must restart Bitmessage for the port number change to take effect.</source>
|
||||||
|
<translation>ポート番号の変更を有効にするにはBitmessageを再起動してください。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="2046"/>
|
||||||
|
<source>Bitmessage will use your proxy from now on but you may want to manually restart Bitmessage now to close existing connections (if any).</source>
|
||||||
|
<translation>プロキシの設定を有効にするには手動でBitmessageを再起動してください。既に接続がある場合は切断されます。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="2227"/>
|
||||||
|
<source>Error: You cannot add the same address to your list twice. Perhaps rename the existing one if you want.</source>
|
||||||
|
<translation>エラー: 同じアドレスを複数リストに追加する事はできません。既存の項目をリネームしてください。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="2280"/>
|
||||||
|
<source>Passphrase mismatch</source>
|
||||||
|
<translation>パスフレーズが一致しません</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="2280"/>
|
||||||
|
<source>The passphrase you entered twice doesn't match. Try again.</source>
|
||||||
|
<translation>再度入力されたパスフレーズが一致しません。再入力してください。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="2283"/>
|
||||||
|
<source>Choose a passphrase</source>
|
||||||
|
<translation>パスフレーズを選択してください</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="2283"/>
|
||||||
|
<source>You really do need a passphrase.</source>
|
||||||
|
<translation>パスフレーズが必要です。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="2306"/>
|
||||||
|
<source>All done. Closing user interface...</source>
|
||||||
|
<translation>完了しました。ユーザーインターフェースを閉じています。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="2380"/>
|
||||||
|
<source>Address is gone</source>
|
||||||
|
<translation>アドレスが無効になりました</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="2380"/>
|
||||||
|
<source>Bitmessage cannot find your address %1. Perhaps you removed it?</source>
|
||||||
|
<translation>アドレス %1 が見つかりません。既に削除していませんか?</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="2384"/>
|
||||||
|
<source>Address disabled</source>
|
||||||
|
<translation>アドレスが無効になりました</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="2384"/>
|
||||||
|
<source>Error: The address from which you are trying to send is disabled. You'll have to enable it on the 'Your Identities' tab before using it.</source>
|
||||||
|
<translation>エラー: 送信しようとしたアドレスは無効になっています。使用する前に「アドレス一覧」で有効にしてください。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="2437"/>
|
||||||
|
<source>Entry added to the Address Book. Edit the label to your liking.</source>
|
||||||
|
<translation>アドレス帳に項目が追加されました。ラベルは自由に編集できます。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="2502"/>
|
||||||
|
<source>Moved items to trash. There is no user interface to view your trash, but it is still on disk if you are desperate to get it back.</source>
|
||||||
|
<translation>アイテムをゴミ箱へ移動。ゴミ箱の内容を表示する画面はありませんが、もし元に戻したくなった場合に備えてディスク上に残されます。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="2476"/>
|
||||||
|
<source>Save As...</source>
|
||||||
|
<translation>形式を選択して保存</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="2485"/>
|
||||||
|
<source>Write error.</source>
|
||||||
|
<translation>書き込みエラー。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="2596"/>
|
||||||
|
<source>No addresses selected.</source>
|
||||||
|
<translation>アドレスが未選択です。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="3063"/>
|
||||||
|
<source>Options have been disabled because they either aren't applicable or because they haven't yet been implemented for your operating system.</source>
|
||||||
|
<translation>現在のOS上で未実装、または実装できないためオプションは無効化されました。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="3204"/>
|
||||||
|
<source>Testing...</source>
|
||||||
|
<translation>テスト中</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="3245"/>
|
||||||
|
<source>This is a chan address. You cannot use it as a pseudo-mailing list.</source>
|
||||||
|
<translation>chanアドレスは仮想メーリングリストのアドレスには使用できません。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="3264"/>
|
||||||
|
<source>The address should start with ''BM-''</source>
|
||||||
|
<translation>アドレスは「BM-」から始まります</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="3267"/>
|
||||||
|
<source>The address is not typed or copied correctly (the checksum failed).</source>
|
||||||
|
<translation>このアドレスは正しく入力、またはコピーされていません。(チェックサムが一致しません)。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="3270"/>
|
||||||
|
<source>The version number of this address is higher than this software can support. Please upgrade Bitmessage.</source>
|
||||||
|
<translation>このアドレスのバージョン番号はこのプログラムのサポート範囲外です。Bitmessageをアップデートしてください。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="3273"/>
|
||||||
|
<source>The address contains invalid characters.</source>
|
||||||
|
<translation>入力されたアドレスは不正な文字を含んでいます。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="3276"/>
|
||||||
|
<source>Some data encoded in the address is too short.</source>
|
||||||
|
<translation>このアドレスでエンコードされたデータが短すぎます。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="3279"/>
|
||||||
|
<source>Some data encoded in the address is too long.</source>
|
||||||
|
<translation>このアドレスでエンコードされたデータが長過ぎます。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/__init__.py" line="3324"/>
|
||||||
|
<source>You are using TCP port %1. (This can be changed in the settings).</source>
|
||||||
|
<translation>使用中のポート %1 (設定で変更できます)。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="524"/>
|
||||||
|
<source>Bitmessage</source>
|
||||||
|
<translation></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="557"/>
|
||||||
|
<source>Search</source>
|
||||||
|
<translation>検索</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="558"/>
|
||||||
|
<source>All</source>
|
||||||
|
<translation>全て</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="565"/>
|
||||||
|
<source>To</source>
|
||||||
|
<translation>宛先</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="567"/>
|
||||||
|
<source>From</source>
|
||||||
|
<translation>送信元</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="569"/>
|
||||||
|
<source>Subject</source>
|
||||||
|
<translation>題名</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="562"/>
|
||||||
|
<source>Message</source>
|
||||||
|
<translation>メッセージ</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="539"/>
|
||||||
|
<source>Received</source>
|
||||||
|
<translation>受信日時</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="540"/>
|
||||||
|
<source>Inbox</source>
|
||||||
|
<translation>受信箱</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="541"/>
|
||||||
|
<source>Load from Address book</source>
|
||||||
|
<translation>アドレス帳から読み込み</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="542"/>
|
||||||
|
<source>Fetch Namecoin ID</source>
|
||||||
|
<translation>namecoin IDを取得</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="543"/>
|
||||||
|
<source>Message:</source>
|
||||||
|
<translation>メッセージ:</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="544"/>
|
||||||
|
<source>Subject:</source>
|
||||||
|
<translation>題名:</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="545"/>
|
||||||
|
<source>Send to one or more specific people</source>
|
||||||
|
<translation>一人、または複数のユーザーへ送信</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="546"/>
|
||||||
|
<source><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
|
||||||
|
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
|
||||||
|
p, li { white-space: pre-wrap; }
|
||||||
|
</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:9pt; font-weight:400; font-style:normal;">
|
||||||
|
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html></source>
|
||||||
|
<translation></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="551"/>
|
||||||
|
<source>To:</source>
|
||||||
|
<translation>宛先:</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="552"/>
|
||||||
|
<source>From:</source>
|
||||||
|
<translation>送信元:</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="553"/>
|
||||||
|
<source>Broadcast to everyone who is subscribed to your address</source>
|
||||||
|
<translation>自分のアドレスを購読しているユーザー全員へ配信する</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="555"/>
|
||||||
|
<source>Be aware that broadcasts are only encrypted with your address. Anyone who knows your address can read them.</source>
|
||||||
|
<translation>broadcastはあなたのアドレスのみで暗号化されます。あなたのアドレスを知っている人は全て読むことができます。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="571"/>
|
||||||
|
<source>Status</source>
|
||||||
|
<translation>状態</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="572"/>
|
||||||
|
<source>Sent</source>
|
||||||
|
<translation>送信済み</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="576"/>
|
||||||
|
<source>Label (not shown to anyone)</source>
|
||||||
|
<translation>ラベル(他の人からは見えません)</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="605"/>
|
||||||
|
<source>Address</source>
|
||||||
|
<translation>アドレス</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="580"/>
|
||||||
|
<source>Stream</source>
|
||||||
|
<translation>ストリーム</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="581"/>
|
||||||
|
<source>Your Identities</source>
|
||||||
|
<translation>アドレス一覧</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="582"/>
|
||||||
|
<source>Here you can subscribe to 'broadcast messages' that are sent by other users. Messages will appear in your Inbox. Addresses here override those on the Blacklist tab.</source>
|
||||||
|
<translation>他のユーザが送信した「broadcastメッセージ」を購読できます。メッセージは受信箱に表示されます。このリストのアドレスはブラックリストより優先されます。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="583"/>
|
||||||
|
<source>Add new Subscription</source>
|
||||||
|
<translation>購読先を追加</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="586"/>
|
||||||
|
<source>Label</source>
|
||||||
|
<translation>ラベル</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="589"/>
|
||||||
|
<source>Subscriptions</source>
|
||||||
|
<translation>購読リスト</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="590"/>
|
||||||
|
<source>The Address book is useful for adding names or labels to other people's Bitmessage addresses so that you can recognize them more easily in your inbox. You can add entries here using the 'Add' button, or from your inbox by right-clicking on a message.</source>
|
||||||
|
<translation>アドレス帳は他のユーザのBitmessageアドレスにラベルや名前をつけることで受信箱を見やすくします。「追加」ボタンを押すか受信箱でメッセージを右クリックしてください。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="603"/>
|
||||||
|
<source>Name or Label</source>
|
||||||
|
<translation>名前、ラベル</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="598"/>
|
||||||
|
<source>Use a Blacklist (Allow all incoming messages except those on the Blacklist)</source>
|
||||||
|
<translation>ブラックリストを使用(全てのメッセージを受信してブラックリストと一致する物だけ除外)</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="599"/>
|
||||||
|
<source>Use a Whitelist (Block all incoming messages except those on the Whitelist)</source>
|
||||||
|
<translation>ホワイトリストを使用(全てのメッセージを受信拒否してホワイトリストと一致する物だけ許可)</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="606"/>
|
||||||
|
<source>Blacklist</source>
|
||||||
|
<translation>ブラックリスト</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="608"/>
|
||||||
|
<source>Stream #</source>
|
||||||
|
<translation>ストリーム #</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="610"/>
|
||||||
|
<source>Connections</source>
|
||||||
|
<translation>接続</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="611"/>
|
||||||
|
<source>Total connections: 0</source>
|
||||||
|
<translation>接続数: 0</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="612"/>
|
||||||
|
<source>Since startup at asdf:</source>
|
||||||
|
<translation>起動してから asdf:</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="613"/>
|
||||||
|
<source>Processed 0 person-to-person message.</source>
|
||||||
|
<translation>0 通の1対1のメッセージを処理しました。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="614"/>
|
||||||
|
<source>Processed 0 public key.</source>
|
||||||
|
<translation>0 件の公開鍵を処理しました。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="615"/>
|
||||||
|
<source>Processed 0 broadcast.</source>
|
||||||
|
<translation>0 件のBroadcastメッセージを処理しました。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="616"/>
|
||||||
|
<source>Network Status</source>
|
||||||
|
<translation>ネットワークの状態</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="617"/>
|
||||||
|
<source>File</source>
|
||||||
|
<translation>ファイル</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="627"/>
|
||||||
|
<source>Settings</source>
|
||||||
|
<translation>設定</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="624"/>
|
||||||
|
<source>Help</source>
|
||||||
|
<translation>ヘルプ</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="620"/>
|
||||||
|
<source>Import keys</source>
|
||||||
|
<translation>鍵をインポート</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="621"/>
|
||||||
|
<source>Manage keys</source>
|
||||||
|
<translation>鍵を管理</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="623"/>
|
||||||
|
<source>Ctrl+Q</source>
|
||||||
|
<translation>Ctrrl+Q</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="625"/>
|
||||||
|
<source>F1</source>
|
||||||
|
<translation></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="626"/>
|
||||||
|
<source>About</source>
|
||||||
|
<translation>概要</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="628"/>
|
||||||
|
<source>Regenerate deterministic addresses</source>
|
||||||
|
<translatorcomment>「決定論的アドレス」ともヤクセルが</translatorcomment>
|
||||||
|
<translation>deterministicアドレスを再生成</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="629"/>
|
||||||
|
<source>Delete all trashed messages</source>
|
||||||
|
<translation>ゴミ箱のメッセージを全て削除する</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/bitmessageui.py" line="630"/>
|
||||||
|
<source>Join / Create chan</source>
|
||||||
|
<translation>chanに参加 / 作成</translation>
|
||||||
|
</message>
|
||||||
|
</context>
|
||||||
|
<context>
|
||||||
|
<name>NewAddressDialog</name>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/newaddressdialog.py" line="173"/>
|
||||||
|
<source>Create new Address</source>
|
||||||
|
<translation>新しいアドレスを作成</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/newaddressdialog.py" line="174"/>
|
||||||
|
<source>Here you may generate as many addresses as you like. Indeed, creating and abandoning addresses is encouraged. You may generate addresses by using either random numbers or by using a passphrase. If you use a passphrase, the address is called a "deterministic" address.
|
||||||
|
The 'Random Number' option is selected by default but deterministic addresses have several pros and cons:</source>
|
||||||
|
<translation>複数のアドレスを生成できます。アドレスを自由に生成、破棄することができます。アドレスは乱数かパスフレーズを使って生成できます。もしパスフレーズを使う場合、アドレスはdeterministicアドレスになります。デフォルトでは乱数による生成が選択されますが、deterministicアドレスにも長所と短所があります:</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/newaddressdialog.py" line="176"/>
|
||||||
|
<source><html><head/><body><p><span style=" font-weight:600;">Pros:<br/></span>You can recreate your addresses on any computer from memory. <br/>You need-not worry about backing up your keys.dat file as long as you can remember your passphrase. <br/><span style=" font-weight:600;">Cons:<br/></span>You must remember (or write down) your passphrase if you expect to be able to recreate your keys if they are lost. <br/>You must remember the address version number and the stream number along with your passphrase. <br/>If you choose a weak passphrase and someone on the Internet can brute-force it, they can read your messages and send messages as you.</p></body></html></source>
|
||||||
|
<translation><html><head/><body><p><span style=" font-weight:600;">長所:<br/></span>記憶を頼りにアドレスを再生成できます。<br/>keys.datファイルのバックアップの心配をしないでも、パスフレーズを覚えておけばよくなります。<br/><span style=" font-weight:600;">短所:<br/></span>アドレスの暗号鍵を紛失した場合に備えてアドレスを再生成出来るようにしたい場合、パスフレーズを覚えて(もしくは書き留めて)必要があります。<br/>パスフレーズを覚えておくのに加えて、アドレスのバージョン番号とストリーム番号も覚えておく必要があります。<br/>弱いパスフレーズを設定すると、ネット上の誰かがブルートフォース攻撃を行ってあなたの送信メッセージ、受信メッセージを読んでしまう可能性があります。</p></body></html></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/newaddressdialog.py" line="177"/>
|
||||||
|
<source>Use a random number generator to make an address</source>
|
||||||
|
<translation>アドレスの生成に乱数ジェネレーターを使う</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="newaddressdialog.py" line="169"/>
|
||||||
|
<source>Use a passpharase to make addresses</source>
|
||||||
|
<translation type="obsolete">Use yee passpharase to make arrddresses</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/newaddressdialog.py" line="179"/>
|
||||||
|
<source>Spend several minutes of extra computing time to make the address(es) 1 or 2 characters shorter</source>
|
||||||
|
<translation>アドレスを1、2文字短くするために数分間追加の計算処理を行う</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/newaddressdialog.py" line="180"/>
|
||||||
|
<source>Make deterministic addresses</source>
|
||||||
|
<translation>deterministicアドレスを作る</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/newaddressdialog.py" line="181"/>
|
||||||
|
<source>Address version number: 3</source>
|
||||||
|
<translation>アドレスのバージョン番号: 3</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/newaddressdialog.py" line="182"/>
|
||||||
|
<source>In addition to your passphrase, you must remember these numbers:</source>
|
||||||
|
<translation>パスフレーズに加えて、これらの値を覚えておいてください:</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/newaddressdialog.py" line="183"/>
|
||||||
|
<source>Passphrase</source>
|
||||||
|
<translation>パスフレーズ</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/newaddressdialog.py" line="184"/>
|
||||||
|
<source>Number of addresses to make based on your passphrase:</source>
|
||||||
|
<translation>パスフレーズから生成されたアドレスの数:</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/newaddressdialog.py" line="185"/>
|
||||||
|
<source>Stream number: 1</source>
|
||||||
|
<translation>ストリーム数: 1</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/newaddressdialog.py" line="186"/>
|
||||||
|
<source>Retype passphrase</source>
|
||||||
|
<translation>パスフレーズを再入力</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/newaddressdialog.py" line="187"/>
|
||||||
|
<source>Randomly generate address</source>
|
||||||
|
<translation>ランダムなアドレスを生成する</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/newaddressdialog.py" line="188"/>
|
||||||
|
<source>Label (not shown to anyone except you)</source>
|
||||||
|
<translation>ラベル(他の人からは見えません)</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/newaddressdialog.py" line="189"/>
|
||||||
|
<source>Use the most available stream</source>
|
||||||
|
<translation>最も有効なストリームを使う</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/newaddressdialog.py" line="190"/>
|
||||||
|
<source> (best if this is the first of many addresses you will create)</source>
|
||||||
|
<translation>(もしこれから複数のアドレスを生成するのであれば、最初の一つに最適です。)</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/newaddressdialog.py" line="191"/>
|
||||||
|
<source>Use the same stream as an existing address</source>
|
||||||
|
<translation>既存のアドレスと同じストリームを利用する</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/newaddressdialog.py" line="192"/>
|
||||||
|
<source>(saves you some bandwidth and processing power)</source>
|
||||||
|
<translation>(帯域と処理能力を節約する)</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/newaddressdialog.py" line="178"/>
|
||||||
|
<source>Use a passphrase to make addresses</source>
|
||||||
|
<translation>アドレスの作成にパスフレーズを使う</translation>
|
||||||
|
</message>
|
||||||
|
</context>
|
||||||
|
<context>
|
||||||
|
<name>NewSubscriptionDialog</name>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/newsubscriptiondialog.py" line="57"/>
|
||||||
|
<source>Add new entry</source>
|
||||||
|
<translation>新しい項目を追加</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/newsubscriptiondialog.py" line="58"/>
|
||||||
|
<source>Label</source>
|
||||||
|
<translation>ラベル</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/newsubscriptiondialog.py" line="59"/>
|
||||||
|
<source>Address</source>
|
||||||
|
<translation>アドレス</translation>
|
||||||
|
</message>
|
||||||
|
</context>
|
||||||
|
<context>
|
||||||
|
<name>SpecialAddressBehaviorDialog</name>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/specialaddressbehavior.py" line="59"/>
|
||||||
|
<source>Special Address Behavior</source>
|
||||||
|
<translation>アドレスの特別な動作</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/specialaddressbehavior.py" line="60"/>
|
||||||
|
<source>Behave as a normal address</source>
|
||||||
|
<translation>通常のアドレスにする</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/specialaddressbehavior.py" line="61"/>
|
||||||
|
<source>Behave as a pseudo-mailing-list address</source>
|
||||||
|
<translation>仮想メーリングリストとして使用する</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/specialaddressbehavior.py" line="62"/>
|
||||||
|
<source>Mail received to a pseudo-mailing-list address will be automatically broadcast to subscribers (and thus will be public).</source>
|
||||||
|
<translation>仮想メーリングリストのアドレスが受信したアドレスは自動的に購読するユーザーに配信(公開)されます。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/specialaddressbehavior.py" line="63"/>
|
||||||
|
<source>Name of the pseudo-mailing-list:</source>
|
||||||
|
<translation>仮想メーリングリストの名前:</translation>
|
||||||
|
</message>
|
||||||
|
</context>
|
||||||
|
<context>
|
||||||
|
<name>aboutDialog</name>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/about.py" line="58"/>
|
||||||
|
<source>PyBitmessage</source>
|
||||||
|
<translation></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/about.py" line="59"/>
|
||||||
|
<source>version ?</source>
|
||||||
|
<translation>Version ?</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/about.py" line="57"/>
|
||||||
|
<source>About</source>
|
||||||
|
<translation>概要</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/about.py" line="60"/>
|
||||||
|
<source>Copyright © 2013 Jonathan Warren</source>
|
||||||
|
<translation></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/about.py" line="61"/>
|
||||||
|
<source><html><head/><body><p>Distributed under the MIT/X11 software license; see <a href="http://www.opensource.org/licenses/mit-license.php"><span style=" text-decoration: underline; color:#0000ff;">http://www.opensource.org/licenses/mit-license.php</span></a></p></body></html></source>
|
||||||
|
<translation></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/about.py" line="62"/>
|
||||||
|
<source>This is Beta software.</source>
|
||||||
|
<translation>このソフトウェアはベータ版です。</translation>
|
||||||
|
</message>
|
||||||
|
</context>
|
||||||
|
<context>
|
||||||
|
<name>connectDialog</name>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/connect.py" line="56"/>
|
||||||
|
<source>Bitmessage</source>
|
||||||
|
<translation></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/connect.py" line="57"/>
|
||||||
|
<source>Bitmessage won't connect to anyone until you let it. </source>
|
||||||
|
<translation>Bitmessageはあなたが操作しない限りどこへも接続しません。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/connect.py" line="58"/>
|
||||||
|
<source>Connect now</source>
|
||||||
|
<translation>接続</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/connect.py" line="59"/>
|
||||||
|
<source>Let me configure special network settings first</source>
|
||||||
|
<translation>最初に特別なネットワークの設定を行ってください</translation>
|
||||||
|
</message>
|
||||||
|
</context>
|
||||||
|
<context>
|
||||||
|
<name>helpDialog</name>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/help.py" line="45"/>
|
||||||
|
<source>Help</source>
|
||||||
|
<translation>ヘルプ</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/help.py" line="46"/>
|
||||||
|
<source><a href="http://Bitmessage.org/wiki/PyBitmessage_Help">http://Bitmessage.org/wiki/PyBitmessage_Help</a></source>
|
||||||
|
<translation><a href="http://Bitmessage.org/wiki/PyBitmessage_Help">http://Bitmessage.org/wiki/PyBitmessage_Help</a></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/help.py" line="47"/>
|
||||||
|
<source>As Bitmessage is a collaborative project, help can be found online in the Bitmessage Wiki:</source>
|
||||||
|
<translation>Bitmessageは協働プロジェクトです。ヘルプはBitmessage Wikiを参照してください:</translation>
|
||||||
|
</message>
|
||||||
|
</context>
|
||||||
|
<context>
|
||||||
|
<name>iconGlossaryDialog</name>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/iconglossary.py" line="82"/>
|
||||||
|
<source>Icon Glossary</source>
|
||||||
|
<translation>アイコン一覧</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/iconglossary.py" line="83"/>
|
||||||
|
<source>You have no connections with other peers. </source>
|
||||||
|
<translation>他のpeerへ接続されていません。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="iconglossary.py" line="75"/>
|
||||||
|
<source>You have made at least one connection to a peer using an outgoing connection but you have not yet received any incoming connections. Your firewall or home router probably isn't configured to foward incoming TCP connections to your computer. Bitmessage will work just fine but it would help the Bitmessage network if you allowed for incoming connections and will help you be a better-connected node.</source>
|
||||||
|
<translation type="obsolete">Yee have made least one connection to a peer pirate usin' outgoing connection but yee not yet received any incoming connections. Yee firewall, witches nest, or home router probably shant configured to foward incoming TCP connections to yee computer. Bitmessage be workin' just fine but it help fellow pirates if yee allowed for incoming connections and will help yee be a better-connected node matey.</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/iconglossary.py" line="85"/>
|
||||||
|
<source>You are using TCP port ?. (This can be changed in the settings).</source>
|
||||||
|
<translation>使用中のポート ? (設定で変更できます)。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/iconglossary.py" line="86"/>
|
||||||
|
<source>You do have connections with other peers and your firewall is correctly configured.</source>
|
||||||
|
<translation>ファイアーウォールを適切に設定し、他のpeerへ接続してください。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/iconglossary.py" line="84"/>
|
||||||
|
<source>You have made at least one connection to a peer using an outgoing connection but you have not yet received any incoming connections. Your firewall or home router probably isn't configured to forward incoming TCP connections to your computer. Bitmessage will work just fine but it would help the Bitmessage network if you allowed for incoming connections and will help you be a better-connected node.</source>
|
||||||
|
<translation>発信接続のために1つ以上のピアへ接続を行っていますが、まだ着信接続を受け取っていません。ファイアーウォールかホームルーターが外部からこのコンピューターへのTCP接続を受け取れるように設定されていないかも知れません。Bitmessageは正常に動作しますが、外部からの接続を許可してより良く接続されたノードになることはBitmessageネットワークへの助けになります。</translation>
|
||||||
|
</message>
|
||||||
|
</context>
|
||||||
|
<context>
|
||||||
|
<name>newChanDialog</name>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/newchandialog.py" line="97"/>
|
||||||
|
<source>Dialog</source>
|
||||||
|
<translation>ダイアログ</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/newchandialog.py" line="98"/>
|
||||||
|
<source>Create a new chan</source>
|
||||||
|
<translation>新しいchanを作成</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/newchandialog.py" line="103"/>
|
||||||
|
<source>Join a chan</source>
|
||||||
|
<translation>chanに参加</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/newchandialog.py" line="100"/>
|
||||||
|
<source>Create a chan</source>
|
||||||
|
<translation>chanを作成</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/newchandialog.py" line="101"/>
|
||||||
|
<source><html><head/><body><p>Enter a name for your chan. If you choose a sufficiently complex chan name (like a strong and unique passphrase) and none of your friends share it publicly then the chan will be secure and private. If you and someone else both create a chan with the same chan name then it is currently very likely that they will be the same chan.</p></body></html></source>
|
||||||
|
<translation><html><head/><body><p>chan名を入力してください。(強くて一意のパスフレーズのように)十分に複雑なchan名を選び、あなたの友人たちがそれを他人に教えない限りchanはセキュアでプライベートです。あなたと他の誰かが同じ名前のchanを作成した場合、現状では同じchanになる可能性が非常に高い。</p></body></html></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/newchandialog.py" line="105"/>
|
||||||
|
<source>Chan name:</source>
|
||||||
|
<translation>Chan名:</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/newchandialog.py" line="104"/>
|
||||||
|
<source><html><head/><body><p>A chan exists when a group of people share the same decryption keys. The keys and bitmessage address used by a chan are generated from a human-friendly word or phrase (the chan name). To send a message to everyone in the chan, send a normal person-to-person message to the chan address.</p><p>Chans are experimental and completely unmoderatable.</p></body></html></source>
|
||||||
|
<translation><html><head/><body><p>chanは人々のグループに復号鍵を共有されることで存在します。chanで使われる鍵とBitmessageアドレスは読みやすい単語、またはフレーズ(chan名)から生成されます。chanに居る人たちへメッセージを送るには、通常の一対一のメッセージをchanアドレスへ送ります。</p><p>chansは実験的機能で、内容を管理するモデレーターを設けることはできません。</p></body></html></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/newchandialog.py" line="106"/>
|
||||||
|
<source>Chan bitmessage address:</source>
|
||||||
|
<translation>chanのbitmessageアドレス:</translation>
|
||||||
|
</message>
|
||||||
|
</context>
|
||||||
|
<context>
|
||||||
|
<name>regenerateAddressesDialog</name>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/regenerateaddresses.py" line="104"/>
|
||||||
|
<source>Regenerate Existing Addresses</source>
|
||||||
|
<translation>既存のアドレスを再生成する</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/regenerateaddresses.py" line="105"/>
|
||||||
|
<source>Regenerate existing addresses</source>
|
||||||
|
<translation>既存のアドレスを再生成する</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/regenerateaddresses.py" line="106"/>
|
||||||
|
<source>Passphrase</source>
|
||||||
|
<translation>パスフレーズ</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/regenerateaddresses.py" line="107"/>
|
||||||
|
<source>Number of addresses to make based on your passphrase:</source>
|
||||||
|
<translation>パスフレーズから生成されたアドレスの数:</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/regenerateaddresses.py" line="108"/>
|
||||||
|
<source>Address version Number:</source>
|
||||||
|
<translation>アドレスのバージョン番号:</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/regenerateaddresses.py" line="109"/>
|
||||||
|
<source>3</source>
|
||||||
|
<translation></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/regenerateaddresses.py" line="110"/>
|
||||||
|
<source>Stream number:</source>
|
||||||
|
<translation>ストリーム数:</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/regenerateaddresses.py" line="111"/>
|
||||||
|
<source>1</source>
|
||||||
|
<translation></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/regenerateaddresses.py" line="112"/>
|
||||||
|
<source>Spend several minutes of extra computing time to make the address(es) 1 or 2 characters shorter</source>
|
||||||
|
<translation>アドレスを1、2文字短くするために数分間追加の計算処理を行う</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/regenerateaddresses.py" line="113"/>
|
||||||
|
<source>You must check (or not check) this box just like you did (or didn't) when you made your addresses the first time.</source>
|
||||||
|
<translation>もしあなたが初めてアドレスを作ったのであればこのボックスをチェックする必要があります。(そうでない場合はしないでください)。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/regenerateaddresses.py" line="114"/>
|
||||||
|
<source>If you have previously made deterministic addresses but lost them due to an accident (like hard drive failure), you can regenerate them here. If you used the random number generator to make your addresses then this form will be of no use to you.</source>
|
||||||
|
<translation>もし以前にdeterministicアドレスを作ったことがあり、何かしらのトラブル(ハードディスクの故障のような)でそれを紛失していた場合、ここで再生成することができます。もし乱数でアドレスを作っていたのであればこのフォームは再生成には使えません。</translation>
|
||||||
|
</message>
|
||||||
|
</context>
|
||||||
|
<context>
|
||||||
|
<name>settingsDialog</name>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/settings.py" line="335"/>
|
||||||
|
<source>Settings</source>
|
||||||
|
<translation>設定</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/settings.py" line="340"/>
|
||||||
|
<source>Start Bitmessage on user login</source>
|
||||||
|
<translation>ユーザのログイン時にBitmessageを起動</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/settings.py" line="336"/>
|
||||||
|
<source>Start Bitmessage in the tray (don't show main window)</source>
|
||||||
|
<translation>Bitmessageをトレイ内で起動する(メインウィンドウを表示しない)</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/settings.py" line="338"/>
|
||||||
|
<source>Minimize to tray</source>
|
||||||
|
<translation>タスクトレイへ最小化</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/settings.py" line="337"/>
|
||||||
|
<source>Show notification when message received</source>
|
||||||
|
<translation>メッセージの受信時に通知する</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/settings.py" line="341"/>
|
||||||
|
<source>Run in Portable Mode</source>
|
||||||
|
<translation>ポータブルモードで実行</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/settings.py" line="339"/>
|
||||||
|
<source>In Portable Mode, messages and config files are stored in the same directory as the program rather than the normal application-data folder. This makes it convenient to run Bitmessage from a USB thumb drive.</source>
|
||||||
|
<translation>ポータブルモード時、メッセージと設定ファイルは通常のアプリケーションデータのフォルダではなく同じディレクトリに保存されます。これによりBitmessageをUSBドライブから実行できます。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/settings.py" line="344"/>
|
||||||
|
<source>User Interface</source>
|
||||||
|
<translation>ユーザインターフェース</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/settings.py" line="345"/>
|
||||||
|
<source>Listening port</source>
|
||||||
|
<translation>リスニングポート</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/settings.py" line="346"/>
|
||||||
|
<source>Listen for connections on port:</source>
|
||||||
|
<translation>接続を待つポート:</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/settings.py" line="347"/>
|
||||||
|
<source>Proxy server / Tor</source>
|
||||||
|
<translation>プロキシサーバー/Tor</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/settings.py" line="348"/>
|
||||||
|
<source>Type:</source>
|
||||||
|
<translation>タイプ:</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/settings.py" line="349"/>
|
||||||
|
<source>none</source>
|
||||||
|
<translation>無し</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/settings.py" line="350"/>
|
||||||
|
<source>SOCKS4a</source>
|
||||||
|
<translation>SOCKS4a</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/settings.py" line="351"/>
|
||||||
|
<source>SOCKS5</source>
|
||||||
|
<translation>SOCKS5</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/settings.py" line="352"/>
|
||||||
|
<source>Server hostname:</source>
|
||||||
|
<translation>サーバーホスト名:</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/settings.py" line="371"/>
|
||||||
|
<source>Port:</source>
|
||||||
|
<translation>ポート:</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/settings.py" line="354"/>
|
||||||
|
<source>Authentication</source>
|
||||||
|
<translation>認証</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/settings.py" line="372"/>
|
||||||
|
<source>Username:</source>
|
||||||
|
<translation>ユーザー名:</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/settings.py" line="356"/>
|
||||||
|
<source>Pass:</source>
|
||||||
|
<translation>パス:</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/settings.py" line="358"/>
|
||||||
|
<source>Network Settings</source>
|
||||||
|
<translation>ネットワーク設定</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/settings.py" line="359"/>
|
||||||
|
<source>When someone sends you a message, their computer must first complete some work. The difficulty of this work, by default, is 1. You may raise this default for new addresses you create by changing the values here. Any new addresses you create will require senders to meet the higher difficulty. There is one exception: if you add a friend or acquaintance to your address book, Bitmessage will automatically notify them when you next send a message that they need only complete the minimum amount of work: difficulty 1. </source>
|
||||||
|
<translation>誰かがあなたにメッセージを送る時、相手のコンピューターはいくらか計算処理を行います。処理の難易度はデフォルトでは1です。この値を変更すると新しいアドレスではこのデフォルト値を引き上げることができます。その場合、新しいアドレスはメッセージの送信者により高い難易度を要求します。例外もあります: 友人や知り合いをアドレス帳に登録すると、Bitmessageは次にメッセージを送る際、自動的に要求される処理の難易度を最低限の1で済むように通知します。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/settings.py" line="360"/>
|
||||||
|
<source>Total difficulty:</source>
|
||||||
|
<translation>全体の難易度:</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/settings.py" line="361"/>
|
||||||
|
<source>Small message difficulty:</source>
|
||||||
|
<translation>小さいメッセージの難易度:</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/settings.py" line="362"/>
|
||||||
|
<source>The 'Small message difficulty' mostly only affects the difficulty of sending small messages. Doubling this value makes it almost twice as difficult to send a small message but doesn't really affect large messages.</source>
|
||||||
|
<translation>「小さいメッセージの難易度」は小さいメッセージを行う時にだけ影響します。この値を二倍にすれば小さなメッセージに必要な処理の難易度は二倍になりますが、実際にはデータ量の多いメッセージには影響しません。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/settings.py" line="363"/>
|
||||||
|
<source>The 'Total difficulty' affects the absolute amount of work the sender must complete. Doubling this value doubles the amount of work.</source>
|
||||||
|
<translation>「全体の難易度」は完全に全てのメッセージに影響します。この値を二倍にすると処理量も二倍になります。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/settings.py" line="364"/>
|
||||||
|
<source>Demanded difficulty</source>
|
||||||
|
<translation>要求される難易度</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/settings.py" line="342"/>
|
||||||
|
<source>Willingly include unencrypted destination address when sending to a mobile device</source>
|
||||||
|
<translation>携帯端末にメッセージを送る時は暗号化されていないアドレスを許可する</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/settings.py" line="343"/>
|
||||||
|
<source>Override automatic language localization (use countycode or language code, e.g. 'en_US' or 'en'):</source>
|
||||||
|
<translation>自動的に設定された言語・地域を上書きする(国コード、または言語コードを入力。例:「en_US」または「en」):</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/settings.py" line="357"/>
|
||||||
|
<source>Listen for incoming connections when using proxy</source>
|
||||||
|
<translation>プロキシ使用時に外部からの接続を待機する</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/settings.py" line="365"/>
|
||||||
|
<source>Here you may set the maximum amount of work you are willing to do to send a message to another person. Setting these values to 0 means that any value is acceptable.</source>
|
||||||
|
<translation>ここでは他のユーザーへメッセージを送る際に行うことを許可する処理量の上限を設定します。0を設定するとどんな量でも許容します。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/settings.py" line="366"/>
|
||||||
|
<source>Maximum acceptable total difficulty:</source>
|
||||||
|
<translation>許可する難易度の上限:</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/settings.py" line="367"/>
|
||||||
|
<source>Maximum acceptable small message difficulty:</source>
|
||||||
|
<translation>小さなメッセージに許可する難易度の上限:</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/settings.py" line="368"/>
|
||||||
|
<source>Max acceptable difficulty</source>
|
||||||
|
<translation>許可する最大の難易度</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/settings.py" line="369"/>
|
||||||
|
<source><html><head/><body><p>Bitmessage can utilize a different Bitcoin-based program called Namecoin to make addresses human-friendly. For example, instead of having to tell your friend your long Bitmessage address, you can simply tell him to send a message to <span style=" font-style:italic;">test. </span></p><p>(Getting your own Bitmessage address into Namecoin is still rather difficult).</p><p>Bitmessage can use either namecoind directly or a running nmcontrol instance.</p></body></html></source>
|
||||||
|
<translation><html><head/><body><p>Bitmessageはアドレスを読みやすくするため、NamecoinというBitcoinベースの別のプログラムを利用できます。例えば、あなたの友人に長いBitmessageアドレスを伝える代わりに、単純に<span style=" font-style:italic;">テスト</span>でメッセージを送るよう伝えることができます。</p><p>(Bitmessageアドレスを独自にNamecoinにするのはかなり難しいです)。</p><p>Bitmessageは直接namecoindを使うか、nmcontrolインスタンスを使うことができます。</p></body></html></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/settings.py" line="370"/>
|
||||||
|
<source>Host:</source>
|
||||||
|
<translation>ホスト:</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/settings.py" line="373"/>
|
||||||
|
<source>Password:</source>
|
||||||
|
<translation>パスワード:</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/settings.py" line="374"/>
|
||||||
|
<source>Test</source>
|
||||||
|
<translation>テスト</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/settings.py" line="375"/>
|
||||||
|
<source>Connect to:</source>
|
||||||
|
<translation>接続先:</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/settings.py" line="376"/>
|
||||||
|
<source>Namecoind</source>
|
||||||
|
<translation>Namecoind</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/settings.py" line="377"/>
|
||||||
|
<source>NMControl</source>
|
||||||
|
<translation>NMControl</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../bitmessageqt/settings.py" line="378"/>
|
||||||
|
<source>Namecoin integration</source>
|
||||||
|
<translation>Namecoin連携</translation>
|
||||||
|
</message>
|
||||||
|
</context>
|
||||||
|
</TS>
|
|
@ -1,11 +1,12 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<!DOCTYPE TS><TS version="2.0" language="ru" sourcelanguage="en">
|
<!DOCTYPE TS>
|
||||||
|
<TS version="2.0" language="ru" sourcelanguage="en">
|
||||||
<context>
|
<context>
|
||||||
<name>AddAddressDialog</name>
|
<name>AddAddressDialog</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/addaddressdialog.py" line="62"/>
|
<location filename="../bitmessageqt/addaddressdialog.py" line="62"/>
|
||||||
<source>Add new entry</source>
|
<source>Add new entry</source>
|
||||||
<translation type="unfinished">Добавить новую запись</translation>
|
<translation>Добавить новую запись</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/addaddressdialog.py" line="63"/>
|
<location filename="../bitmessageqt/addaddressdialog.py" line="63"/>
|
||||||
|
@ -1239,7 +1240,7 @@ The 'Random Number' option is selected by default but deterministic ad
|
||||||
<source>version ?</source>
|
<source>version ?</source>
|
||||||
<translation>версия ?</translation>
|
<translation>версия ?</translation>
|
||||||
</message>
|
</message>
|
||||||
<message encoding="UTF-8">
|
<message utf8="true">
|
||||||
<location filename="../bitmessageqt/about.py" line="60"/>
|
<location filename="../bitmessageqt/about.py" line="60"/>
|
||||||
<source>Copyright © 2013 Jonathan Warren</source>
|
<source>Copyright © 2013 Jonathan Warren</source>
|
||||||
<translation type="obsolete">Копирайт © 2013 Джонатан Уоррен</translation>
|
<translation type="obsolete">Копирайт © 2013 Джонатан Уоррен</translation>
|
||||||
|
@ -1256,7 +1257,7 @@ The 'Random Number' option is selected by default but deterministic ad
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/about.py" line="69"/>
|
<location filename="../bitmessageqt/about.py" line="69"/>
|
||||||
<source><html><head/><body><p>Copyright © 2012-2013 Jonathan Warren<br/>Copyright © 2013 The Bitmessage Developers</p></body></html></source>
|
<source><html><head/><body><p>Copyright © 2012-2013 Jonathan Warren<br/>Copyright © 2013 The Bitmessage Developers</p></body></html></source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
|
@ -1672,7 +1673,7 @@ The 'Random Number' option is selected by default but deterministic ad
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/settings.py" line="397"/>
|
<location filename="../bitmessageqt/settings.py" line="397"/>
|
||||||
<source>Français</source>
|
<source>Français</source>
|
||||||
<comment>fr</comment>
|
<comment>fr</comment>
|
||||||
<translation>Francais</translation>
|
<translation>Francais</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -1684,13 +1685,13 @@ The 'Random Number' option is selected by default but deterministic ad
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/settings.py" line="353"/>
|
<location filename="../bitmessageqt/settings.py" line="353"/>
|
||||||
<source>Español</source>
|
<source>Español</source>
|
||||||
<comment>es</comment>
|
<comment>es</comment>
|
||||||
<translation type="obsolete">Espanol</translation>
|
<translation type="obsolete">Espanol</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/settings.py" line="354"/>
|
<location filename="../bitmessageqt/settings.py" line="354"/>
|
||||||
<source>Русский</source>
|
<source>Ð ÑÑÑкий</source>
|
||||||
<comment>ru</comment>
|
<comment>ru</comment>
|
||||||
<translation type="obsolete">Русский</translation>
|
<translation type="obsolete">Русский</translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -1713,13 +1714,13 @@ The 'Random Number' option is selected by default but deterministic ad
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/settings.py" line="399"/>
|
<location filename="../bitmessageqt/settings.py" line="399"/>
|
||||||
<source>Españl</source>
|
<source>Españl</source>
|
||||||
<comment>es</comment>
|
<comment>es</comment>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/settings.py" line="400"/>
|
<location filename="../bitmessageqt/settings.py" line="400"/>
|
||||||
<source>русский язык</source>
|
<source>ÑÑÑÑкий ÑзÑк</source>
|
||||||
<comment>ru</comment>
|
<comment>ru</comment>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
|
|
Binary file not shown.
|
@ -862,7 +862,7 @@ It is important that you back up this file. Would you like to open the file now?
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/__init__.py" line="2750"/>
|
<location filename="../bitmessageqt/__init__.py" line="2750"/>
|
||||||
<source>Moved items to trash. There is no user interface to view your trash, but it is still on disk if you are desperate to get it back.</source>
|
<source>Moved items to trash. There is no user interface to view your trash, but it is still on disk if you are desperate to get it back.</source>
|
||||||
<translation>已经移动项目到回收站。没有图形化的界面可以查看您的回收站,不过如果您还想找回的化它还在您的硬盘上。</translation>
|
<translation>已经移动项目到回收站。没有图形化的界面可以查看您的回收站,不过如果您还想找回的话它还在您的硬盘上。</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/__init__.py" line="2730"/>
|
<location filename="../bitmessageqt/__init__.py" line="2730"/>
|
||||||
|
@ -882,7 +882,7 @@ It is important that you back up this file. Would you like to open the file now?
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/__init__.py" line="3063"/>
|
<location filename="../bitmessageqt/__init__.py" line="3063"/>
|
||||||
<source>Do you really want to remove this avatar?</source>
|
<source>Do you really want to remove this avatar?</source>
|
||||||
<translation>您真的想一处这个头像么?</translation>
|
<translation>您真的想移除这个头像么?</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../bitmessageqt/__init__.py" line="3071"/>
|
<location filename="../bitmessageqt/__init__.py" line="3071"/>
|
||||||
|
@ -984,6 +984,95 @@ It is important that you back up this file. Would you like to open the file now?
|
||||||
<source>Message sent. Waiting for acknowledgement. Sent at %1</source>
|
<source>Message sent. Waiting for acknowledgement. Sent at %1</source>
|
||||||
<translation>消息已经发送. 正在等待回执. 发送于 %1</translation>
|
<translation>消息已经发送. 正在等待回执. 发送于 %1</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../class_singleWorker.py" line="361"/>
|
||||||
|
<source>Error! Could not find sender address (your address) in the keys.dat file.</source>
|
||||||
|
<translation>错误! 无法在文件 keys.dat 中找到发送者地址(你的地址)</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../class_singleWorker.py" line="426"/>
|
||||||
|
<source>Doing work necessary to send broadcast...</source>
|
||||||
|
<translation>正在做一些必须的工作来发送广播.</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../class_singleWorker.py" line="443"/>
|
||||||
|
<source>Broadcast sent on %1</source>
|
||||||
|
<translation>广播发送于 %1</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../class_singleWorker.py" line="485"/>
|
||||||
|
<source>Encryption key was requested earlier.</source>
|
||||||
|
<translation>已在更早的时候得到加密密钥.</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../class_singleWorker.py" line="523"/>
|
||||||
|
<source>Sending a request for the recipient's encryption key.</source>
|
||||||
|
<translation>正在请求收件人的加密密钥.</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../class_singleWorker.py" line="564"/>
|
||||||
|
<source>Looking up the receiver's public key</source>
|
||||||
|
<translation>正在查找收件人的公钥.</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../class_singleWorker.py" line="619"/>
|
||||||
|
<source>Problem: Destination is a mobile device who requests that the destination be included in the message but this is disallowed in your settings. %1</source>
|
||||||
|
<translation>错误: 目标是一个移动设备, 要求不加密目标地址, 但是你的设置中不允许这么做. %1</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../class_singleWorker.py" line="636"/>
|
||||||
|
<source>Doing work necessary to send message.
|
||||||
|
There is no required difficulty for version 2 addresses like this.</source>
|
||||||
|
<translation>正在做一些必要的工作来发送消息.
|
||||||
|
这里要求的难度不像第2版的地址那样.</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../class_singleWorker.py" line="648"/>
|
||||||
|
<source>Doing work necessary to send message.
|
||||||
|
Receiver's required difficulty: %1 and %2</source>
|
||||||
|
<translation>正在做一些必要的工作来发送消息.
|
||||||
|
接收者要求的难度为: %1 和 %2</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../class_singleWorker.py" line="657"/>
|
||||||
|
<source>Problem: The work demanded by the recipient (%1 and %2) is more difficult than you are willing to do.</source>
|
||||||
|
<translation>错误: 收件人要求的做工量(%1 和 %2)大于我们的最大接受做工量. </translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../class_singleWorker.py" line="669"/>
|
||||||
|
<source>Problem: You are trying to send a message to yourself or a chan but your encryption key could not be found in the keys.dat file. Could not encrypt message. %1</source>
|
||||||
|
<translation>错误: 你正在尝试发送消息到你自身或者一个频道, 但是你的加密密钥无法在文件keys.dat中找到. 无法加密消息. %1</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../class_singleWorker.py" line="681"/>
|
||||||
|
<source>Doing work necessary to send message.</source>
|
||||||
|
<translation>正在做一些必要的工作来发送消息.</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../class_singleWorker.py" line="831"/>
|
||||||
|
<source>Message sent. Sent on %1</source>
|
||||||
|
<translation>消息已经发送. 发送于 %1</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../class_singleWorker.py" line="835"/>
|
||||||
|
<source>Message sent. Waiting for acknowledgement. Sent on %1</source>
|
||||||
|
<translation>消息已经发送. 正在等待回执. 发送于 %1</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../class_singleWorker.py" line="904"/>
|
||||||
|
<source>Doing work necessary to request encryption key.</source>
|
||||||
|
<translation>正在做一些必要的工作来请求加密密钥.</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../class_singleWorker.py" line="928"/>
|
||||||
|
<source>Broacasting the public key request. This program will auto-retry if they are offline.</source>
|
||||||
|
<translation>正在广播公钥请求. 如果他们不在线, 这一过程将自动重试.</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../class_singleWorker.py" line="929"/>
|
||||||
|
<source>Sending public key request. Waiting for reply. Requested at %1</source>
|
||||||
|
<translation>正在发送公钥请求. 等待回应中. 请求于 %1</translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>NewAddressDialog</name>
|
<name>NewAddressDialog</name>
|
||||||
|
|
Reference in New Issue
Block a user