Page Menu
Home
Phabricator (Chris)
Search
Configure Global Search
Log In
Files
F104006
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
589 KB
Referenced Files
None
Subscribers
None
View Options
This file is larger than 256 KB, so syntax highlighting was skipped.
diff --git a/Guitar.pro b/Guitar.pro
index 139c1f8..9375ab7 100644
--- a/Guitar.pro
+++ b/Guitar.pro
@@ -1,422 +1,426 @@
QT += core gui widgets svg network
win32:QT += winextras
CONFIG(debug,debug|release):TARGET = Guitard
CONFIG(release,debug|release):TARGET = Guitar
TEMPLATE = app
CONFIG += c++11
DESTDIR = $$PWD/_bin
TRANSLATIONS = $$PWD/src/resources/translations/Guitar_ja.ts
TRANSLATIONS += $$PWD/src/resources/translations/Guitar_ru.ts
+TRANSLATIONS += $$PWD/src/resources/translations/Guitar_zh-CN.ts
+TRANSLATIONS += $$PWD/src/resources/translations/Guitar_zh-TW.ts
DEFINES += APP_GUITAR
DEFINES += HAVE_POSIX_OPENPT
macx:DEFINES += HAVE_SYS_TIME_H
macx:DEFINES += HAVE_UTMPX
gcc:QMAKE_CXXFLAGS += -Wall -Wextra -Werror=return-type -Werror=trigraphs -Wno-switch -Wno-reorder
linux:QMAKE_RPATHDIR += $ORIGIN
macx:QMAKE_RPATHDIR += @executable_path/../Frameworks
linux:QTPLUGIN += ibusplatforminputcontextplugin
#linux:QTPLUGIN += fcitxplatforminputcontextplugin
INCLUDEPATH += $$PWD/src
INCLUDEPATH += $$PWD/src/texteditor
win32:INCLUDEPATH += $$PWD/misc/winpty
win32:LIBS += $$PWD/misc/winpty/winpty.lib
# OpenSSL
linux {
static_link_openssl {
LIBS += $$OPENSSL_LIB_DIR/libssl.a $$OPENSSL_LIB_DIR/libcrypto.a -ldl
} else {
LIBS += -lssl -lcrypto
}
}
haiku:LIBS += -lssl -lcrypto -lnetwork
macx:INCLUDEPATH += /usr/local/include
macx:LIBS += /usr/local/lib/libssl.a /usr/local/lib/libcrypto.a
win32:msvc {
INCLUDEPATH += C:\openssl\include
INCLUDEPATH += $$PWD/../zlib
LIBS += -LC:\openssl\lib
# OpenSSL 1.0
LIBS += -llibeay32 -lssleay32
# OpenSSL 1.1
# LIBS += -llibcrypto -llibssl
}
win32:gcc {
INCLUDEPATH += C:\Qt\Tools\mingw530_32\opt\include
LIBS += -LC:\Qt\Tools\mingw530_32\opt\lib
LIBS += -lcrypto -lssl
}
# execute 'ruby prepare.rb' automatically
prepare.target = prepare
prepare.commands = cd $$PWD && ruby -W0 prepare.rb
QMAKE_EXTRA_TARGETS += prepare
PRE_TARGETDEPS += prepare
# zlib
win32:msvc {
CONFIG(debug, debug|release):LIBS += $$PWD/_bin/libz.lib
CONFIG(release, debug|release):LIBS += $$PWD/_bin/libz.lib
}
win32:gcc {
CONFIG(debug, debug|release):LIBS += $$PWD/_bin/liblibz.a
CONFIG(release, debug|release):LIBS += $$PWD/_bin/liblibz.a
}
!haiku {
use_system_zlib {
unix:LIBS += -lz
} else {
unix:CONFIG(debug, debug|release):LIBS += $$PWD/_bin/libzd.a
unix:CONFIG(release, debug|release):LIBS += $$PWD/_bin/libz.a
}
}
haiku:LIBS += -lz
win32 {
LIBS += -ladvapi32 -lshell32 -luser32 -lws2_32
RC_FILE = win.rc
QMAKE_SUBSYSTEM_SUFFIX=,5.01
}
macx {
QMAKE_INFO_PLIST = Info.plist
ICON += src/resources/Guitar.icns
t.path=Contents/Resources
QMAKE_BUNDLE_DATA += t
}
SOURCES += \
src/AboutDialog.cpp \
src/AbstractProcess.cpp \
src/AbstractSettingForm.cpp \
src/ApplicationGlobal.cpp \
src/AreYouSureYouWantToContinueConnectingDialog.cpp \
src/AvatarLoader.cpp \
src/BasicMainWindow.cpp \
src/BasicRepositoryDialog.cpp \
src/BigDiffWindow.cpp \
src/BlameWindow.cpp \
src/CheckoutDialog.cpp \
src/CherryPickDialog.cpp \
src/ClearButton.cpp \
src/CloneDialog.cpp \
src/CloneFromGitHubDialog.cpp \
src/CommitDialog.cpp \
src/CommitExploreWindow.cpp \
src/CommitPropertyDialog.cpp \
src/CommitViewWindow.cpp \
src/ConfigCredentialHelperDialog.cpp \
src/ConfigSigningDialog.cpp \
src/CreateRepositoryDialog.cpp \
src/DeleteBranchDialog.cpp \
src/DeleteTagsDialog.cpp \
src/DialogHeaderFrame.cpp \
src/DirectoryLineEdit.cpp \
src/DoYouWantToInitDialog.cpp \
src/EditGitIgnoreDialog.cpp \
src/EditRemoteDialog.cpp \
src/EditTagsDialog.cpp \
src/ExperimentDialog.cpp \
src/FileDiffSliderWidget.cpp \
src/FileDiffWidget.cpp \
src/FileHistoryWindow.cpp \
src/FilePropertyDialog.cpp \
src/FileUtil.cpp \
src/FileViewWidget.cpp \
src/FilesListWidget.cpp \
src/FindCommitDialog.cpp \
src/Git.cpp \
src/GitDiff.cpp \
src/GitHubAPI.cpp \
src/GitObjectManager.cpp \
src/GitPack.cpp \
src/GitPackIdxV2.cpp \
src/HyperLinkLabel.cpp \
src/ImageViewWidget.cpp \
src/InputNewTagDialog.cpp \
src/JumpDialog.cpp \
+ src/Languages.cpp \
src/LineEditDialog.cpp \
src/LocalSocketReader.cpp \
src/LogTableWidget.cpp \
src/MainWindow.cpp \
src/MaximizeButton.cpp \
src/MemoryReader.cpp \
src/MenuButton.cpp \
src/MergeDialog.cpp \
src/MyImageViewWidget.cpp \
src/MyProcess.cpp \
src/MySettings.cpp \
src/MyTableWidgetDelegate.cpp \
src/MyTextEditorWidget.cpp \
src/MyToolButton.cpp \
src/ObjectBrowserDialog.cpp \
src/Photoshop.cpp \
src/PushDialog.cpp \
src/ReadOnlyLineEdit.cpp \
src/ReadOnlyPlainTextEdit.cpp \
src/ReflogWindow.cpp \
src/RemoteRepositoriesTableWidget.cpp \
src/RemoteWatcher.cpp \
src/RepositoriesTreeWidget.cpp \
src/RepositoryData.cpp \
src/RepositoryInfoFrame.cpp \
src/RepositoryLineEdit.cpp \
src/RepositoryPropertyDialog.cpp \
src/SearchFromGitHubDialog.cpp \
src/SelectCommandDialog.cpp \
src/SelectGpgKeyDialog.cpp \
src/SelectItemDialog.cpp \
src/SetGlobalUserDialog.cpp \
src/SetGpgSigningDialog.cpp \
src/SetRemoteUrlDialog.cpp \
src/SetUserDialog.cpp \
src/SettingBehaviorForm.cpp \
src/SettingExampleForm.cpp \
src/SettingGeneralForm.cpp \
src/SettingNetworkForm.cpp \
src/SettingProgramsForm.cpp \
src/SettingsDialog.cpp \
src/StatusLabel.cpp \
src/Terminal.cpp \
src/TextEditDialog.cpp \
src/Theme.cpp \
src/WelcomeWizardDialog.cpp \
src/charvec.cpp \
src/common/joinpath.cpp \
src/common/misc.cpp \
src/darktheme/DarkStyle.cpp \
src/darktheme/NinePatch.cpp \
src/darktheme/StandardStyle.cpp \
src/darktheme/TraditionalWindowsStyleTreeControl.cpp \
src/gpg.cpp \
src/gunzip.cpp \
src/main.cpp\
src/texteditor/AbstractCharacterBasedApplication.cpp \
src/texteditor/InputMethodPopup.cpp \
src/texteditor/TextEditorTheme.cpp \
src/texteditor/TextEditorWidget.cpp \
src/texteditor/UnicodeWidth.cpp \
src/texteditor/unicode.cpp \
src/urlencode.cpp \
src/webclient.cpp \
HEADERS += \
src/AboutDialog.h \
src/AbstractProcess.h \
src/AbstractSettingForm.h \
src/ApplicationGlobal.h \
src/AreYouSureYouWantToContinueConnectingDialog.h \
src/AvatarLoader.h \
src/BasicMainWindow.h \
src/BasicRepositoryDialog.h \
src/BigDiffWindow.h \
src/BlameWindow.h \
src/CheckoutDialog.h \
src/CherryPickDialog.h \
src/ClearButton.h \
src/CloneDialog.h \
src/CloneFromGitHubDialog.h \
src/CommitDialog.h \
src/CommitExploreWindow.h \
src/CommitPropertyDialog.h \
src/CommitViewWindow.h \
src/ConfigCredentialHelperDialog.h \
src/ConfigSigningDialog.h \
src/CreateRepositoryDialog.h \
src/Debug.h \
src/DeleteBranchDialog.h \
src/DeleteTagsDialog.h \
src/DialogHeaderFrame.h \
src/DirectoryLineEdit.h \
src/DoYouWantToInitDialog.h \
src/EditGitIgnoreDialog.h \
src/EditRemoteDialog.h \
src/EditTagsDialog.h \
src/ExperimentDialog.h \
src/FileDiffSliderWidget.h \
src/FileDiffWidget.h \
src/FileHistoryWindow.h \
src/FilePropertyDialog.h \
src/FileUtil.h \
src/FilesListWidget.h \
src/FindCommitDialog.h \
src/Git.h \
src/GitDiff.h \
src/GitHubAPI.h \
src/GitObjectManager.h \
src/GitPack.h \
src/GitPackIdxV2.h \
src/HyperLinkLabel.h \
src/ImageViewWidget.h \
src/InputNewTagDialog.h \
src/JumpDialog.h \
+ src/Languages.h \
src/LineEditDialog.h \
src/LocalSocketReader.h \
src/LogTableWidget.h \
src/MainWindow.h \
src/MaximizeButton.h \
src/MemoryReader.h \
src/MenuButton.h \
src/MergeDialog.h \
src/MyImageViewWidget.h \
src/MyProcess.h \
src/MySettings.h \
src/MyTableWidgetDelegate.h \
src/MyTextEditorWidget.h \
src/MyToolButton.h \
src/ObjectBrowserDialog.h \
src/Photoshop.h \
src/PushDialog.h \
src/ReadOnlyLineEdit.h \
src/ReadOnlyPlainTextEdit.h \
src/ReflogWindow.h \
src/RemoteRepositoriesTableWidget.h \
src/RemoteWatcher.h \
src/RepositoriesTreeWidget.h \
src/RepositoryData.h \
src/RepositoryInfoFrame.h \
src/RepositoryLineEdit.h \
src/RepositoryPropertyDialog.h \
src/SearchFromGitHubDialog.h \
src/SelectCommandDialog.h \
src/SelectGpgKeyDialog.h \
src/SelectItemDialog.h \
src/SetGlobalUserDialog.h \
src/SetGpgSigningDialog.h \
src/SetRemoteUrlDialog.h \
src/SetUserDialog.h \
src/SettingBehaviorForm.h \
src/SettingExampleForm.h \
src/SettingGeneralForm.h \
src/SettingNetworkForm.h \
src/SettingProgramsForm.h \
src/SettingsDialog.h \
src/StatusLabel.h \
src/Terminal.h \
src/TextEditDialog.h \
src/Theme.h \
src/WelcomeWizardDialog.h \
src/charvec.h \
src/common/joinpath.h \
src/common/misc.h \
src/darktheme/DarkStyle.h \
src/darktheme/NinePatch.h \
src/darktheme/StandardStyle.h \
src/darktheme/TraditionalWindowsStyleTreeControl.h \
src/gpg.h \
src/gunzip.h \
src/main.h \
src/platform.h \
src/texteditor/AbstractCharacterBasedApplication.h \
src/texteditor/InputMethodPopup.h \
src/texteditor/TextEditorTheme.h \
src/texteditor/TextEditorWidget.h \
src/texteditor/UnicodeWidth.h \
src/texteditor/unicode.h \
src/urlencode.h \
src/webclient.h
HEADERS += src/version.h
FORMS += \
src/AboutDialog.ui \
src/AreYouSureYouWantToContinueConnectingDialog.ui \
src/BigDiffWindow.ui \
src/BlameWindow.ui \
src/CheckoutDialog.ui \
src/CherryPickDialog.ui \
src/CloneDialog.ui \
src/CloneFromGitHubDialog.ui \
src/CommitDialog.ui \
src/CommitExploreWindow.ui \
src/CommitPropertyDialog.ui \
src/CommitViewWindow.ui \
src/ConfigCredentialHelperDialog.ui \
src/ConfigSigningDialog.ui \
src/CreateRepositoryDialog.ui \
src/DeleteBranchDialog.ui \
src/DeleteTagsDialog.ui \
src/DoYouWantToInitDialog.ui \
src/EditGitIgnoreDialog.ui \
src/EditRemoteDialog.ui \
src/EditTagsDialog.ui \
src/ExperimentDialog.ui \
src/FileDiffWidget.ui \
src/FileHistoryWindow.ui \
src/FilePropertyDialog.ui \
src/FindCommitDialog.ui \
src/InputNewTagDialog.ui \
src/JumpDialog.ui \
src/LineEditDialog.ui \
src/MainWindow.ui \
src/MergeDialog.ui \
src/ObjectBrowserDialog.ui \
src/PushDialog.ui \
src/ReflogWindow.ui \
src/RepositoryPropertyDialog.ui \
src/SearchFromGitHubDialog.ui \
src/SelectCommandDialog.ui \
src/SelectGpgKeyDialog.ui \
src/SelectItemDialog.ui \
src/SetGlobalUserDialog.ui \
src/SetGpgSigningDialog.ui \
src/SetRemoteUrlDialog.ui \
src/SetUserDialog.ui \
src/SettingBehaviorForm.ui \
src/SettingExampleForm.ui \
src/SettingGeneralForm.ui \
src/SettingNetworkForm.ui \
src/SettingProgramsForm.ui \
src/SettingsDialog.ui \
src/TextEditDialog.ui \
src/WelcomeWizardDialog.ui
RESOURCES += \
src/resources/resources.qrc
unix {
SOURCES += \
src/unix/UnixProcess.cpp \
src/unix/UnixPtyProcess.cpp
HEADERS += \
src/unix/UnixProcess.h \
src/unix/UnixPtyProcess.h
}
win32 {
SOURCES += \
src/win32/Win32Process.cpp \
src/win32/Win32PtyProcess.cpp \
src/win32/event.cpp \
src/win32/thread.cpp \
src/win32/win32.cpp
HEADERS += \
src/win32/Win32Process.h \
src/win32/Win32PtyProcess.h \
src/win32/event.h \
src/win32/mutex.h \
src/win32/thread.h \
src/win32/win32.h
}
diff --git a/src/GitPack.cpp b/src/GitPack.cpp
index 91eac23..cbe0fe5 100644
--- a/src/GitPack.cpp
+++ b/src/GitPack.cpp
@@ -1,241 +1,249 @@
#include "GitPack.h"
#include "GitPackIdxV2.h"
#include <QDebug>
#include <QFile>
#include <zlib.h>
void GitPack::decodeTree(QByteArray *out)
{
if (out && out->size() > 0) {
QByteArray ba;
uint8_t const *begin = (uint8_t const *)out->data();
uint8_t const *end = begin + out->size();
uint8_t const *ptr = begin;
while (ptr < end) {
int mode = 0;
while (ptr < end) {
int c = *ptr & 0xff;
ptr++;
if (isdigit(c & 0xff)) {
mode = mode * 10 + (c - '0');
} else if (c == ' ') {
break;
}
}
uint8_t const *left = ptr;
while (ptr < end && *ptr) {
ptr++;
}
std::string name(left, ptr);
if (ptr + 20 < end) {
ptr++;
char tmp[100];
sprintf(tmp, "%06u %s ", mode, mode < 100000 ? "tree" : "blob");
char *p = tmp + 12;
for (int i = 0; i < 20; i++) {
sprintf(p, "%02x", ptr[i]);
p += 2;
}
ba.append(tmp, p - tmp);
ba.append('\t');
ba.append(name.c_str(), name.size());
ba.append('\n');
ptr += 20;
} else {
break;
}
}
*out = std::move(ba);
}
}
Git::Object::Type GitPack::stripHeader(QByteArray *out)
{
if (out) {
int n = out->size();
if (n > 0) {
char const *p = out->data();
if (n > 16) n = 16;
for (int i = 0; i < n; i++) {
if (p[i] == 0) {
Git::Object::Type type = Git::Object::Type::UNKNOWN;
if (strncmp(p, "blob ", 5) == 0) {
type = Git::Object::Type::BLOB;
} else if (strncmp(p, "tree ", 5) == 0) {
type = Git::Object::Type::TREE;
} else if (strncmp(p, "commit ", 7) == 0) {
type = Git::Object::Type::COMMIT;
} else if (strncmp(p, "tag ", 4) == 0) {
type = Git::Object::Type::TAG;
}
if (type != Git::Object::Type::UNKNOWN) {
*out = out->mid(i + 1);
}
return type;
}
}
}
}
return Git::Object::Type::UNKNOWN;
}
bool GitPack::decompress(QIODevice *in, size_t expanded_size, QByteArray *out, size_t *consumed, uint32_t *crc)
{
+ qDebug() << Q_FUNC_INFO << expanded_size;
if (consumed) *consumed = 0;
try {
int err;
z_stream d_stream;
d_stream.zalloc = nullptr;
d_stream.zfree = nullptr;
d_stream.opaque = nullptr;
d_stream.avail_in = 0;
err = inflateInit(&d_stream);
if (err != Z_OK) {
throw QString("failed: inflateInit");
}
int flush = Z_NO_FLUSH;
while (1) {
uint8_t ibuf[65536];
uint8_t obuf[65536];
size_t ilen = d_stream.avail_in;
d_stream.next_in = ibuf;
d_stream.next_out = obuf;
d_stream.avail_out = sizeof(obuf);
err = ::inflate(&d_stream, flush);
if (err == Z_BUF_ERROR) {
+ if (flush == Z_FINISH) {
+ throw QString("failed: inflate");
+ }
d_stream.avail_in = in->read((char *)ibuf, sizeof(ibuf));
if (d_stream.avail_in == 0) {
flush = Z_FINISH;
}
continue;
}
ilen -= d_stream.avail_in;
if (consumed) *consumed += ilen;
if (crc) *crc = crc32(*crc, ibuf, ilen);
+ if (ilen > 0 && d_stream.avail_in > 0) {
+ memmove(ibuf, ibuf + ilen, d_stream.avail_in);
+ }
+
size_t n = sizeof(obuf) - d_stream.avail_out;
out->append((char const *)obuf, n);
if (err == Z_STREAM_END) {
break;
}
if (err != Z_OK) {
throw QString("failed: inflate");
}
if (expanded_size > 0 && (size_t)out->size() > expanded_size) {
throw QString("file too large");
}
}
err = inflateEnd(&d_stream);
if (err != Z_OK) {
throw QString("failed: inflateEnd");
}
return true;
} catch (QString const &e) {
qDebug() << e;
}
return false;
}
bool GitPack::seekPackedObject(QIODevice *file, GitPackIdxItem const *item, Info *out)
{
try {
Info info;
auto Read = [&](void *ptr, size_t len){
const auto l = file->read((char *)ptr, len);
if (l < 0 || ((size_t)(l)) != len) {
throw QString("failed to read");
}
info.checksum = crc32(info.checksum, (uint8_t const *)ptr, len);
};
file->seek(0);
uint32_t header[3];
Read(header, sizeof(int32_t) * 3);
if (memcmp(header, "PACK", 4) != 0) throw QString("invalid pack file");
uint32_t version = read_uint32_be(header + 1);
if (version < 2) throw QString("invalid pack file version");
/*int count = */read_uint32_be(header + 2);
file->seek(item->offset);
info.checksum = 0;
// cf. https://github.com/github/git-msysgit/blob/master/builtin/unpack-objects.c
{
size_t size = 0;
char c;
Read(&c, 1);
info.type = (Git::Object::Type)((c >> 4) & 7);
size = c & 0x0f;
int shift = 4;
while (c & 0x80) {
Read(&c, 1);
size |= (c & 0x7f) << shift;
shift += 7;
}
info.expanded_size = size;
}
if (info.type == Git::Object::Type::OFS_DELTA) {
uint64_t offset = 0;
char c;
Read(&c, 1);
offset = c & 0x7f;
while (c & 0x80) {
Read(&c, 1);
offset = ((offset + 1) << 7) | (c & 0x7f);
}
info.offset = offset;
} else if (info.type == Git::Object::Type::REF_DELTA) {
char bin[20];
Read(bin, 20);
char tmp[41];
for (int i = 0; i < 20; i++) {
sprintf(tmp + i * 2, "%02x", bin[i] & 0xff);
}
info.ref_id = QString::fromLatin1(tmp, GIT_ID_LENGTH);
}
*out = info;
return true;
} catch (QString const &e) {
qDebug() << e;
}
return false;
}
bool GitPack::load(QIODevice *file, GitPackIdxItem const *item, Object *out)
{
*out = Object();
try {
seekPackedObject(file, item, out);
if (decompress(file, out->expanded_size, &out->content, &out->packed_size, &out->checksum)) {
out->expanded_size = out->expanded_size;
return true;
}
} catch (QString const &e) {
qDebug() << e;
}
return false;
}
bool GitPack::load(QString const &packfile, GitPackIdxItem const *item, GitPack::Object *out)
{
QFile file(packfile);
if (file.open(QFile::ReadOnly)) {
if (load(&file, item, out)) {
return true;
}
}
return false;
}
diff --git a/src/Languages.cpp b/src/Languages.cpp
new file mode 100644
index 0000000..35476a5
--- /dev/null
+++ b/src/Languages.cpp
@@ -0,0 +1,13 @@
+#include "Languages.h"
+
+Languages::Languages(QObject *parent)
+ : QObject(parent)
+{
+ addLanguage("en" , tr("English"));
+ addLanguage("ja" , tr("Japanese"));
+ addLanguage("ru" , tr("Russian"));
+ addLanguage("zh-CN", tr("Chinese (Simplified)"));
+ addLanguage("zh-TW", tr("Chinese (Traditional/Taiwan)"));
+}
+
+
diff --git a/src/Languages.h b/src/Languages.h
new file mode 100644
index 0000000..be6b4ac
--- /dev/null
+++ b/src/Languages.h
@@ -0,0 +1,28 @@
+#ifndef LANGUAGES_H
+#define LANGUAGES_H
+
+#include <QObject>
+
+class Languages : public QObject {
+ Q_OBJECT
+public:
+ struct Item {
+ QString id;
+ QString description;
+ Item() = default;
+ Item(QString const &id, QString const &description)
+ : id(id)
+ , description(description)
+ {
+ }
+ };
+ QList<Item> items;
+
+ explicit Languages(QObject *parent = nullptr);
+ void addLanguage(QString const &code, QString const &description)
+ {
+ items.push_back(Item(code, description));
+ }
+};
+
+#endif // LANGUAGES_H
diff --git a/src/SelectItemDialog.cpp b/src/SelectItemDialog.cpp
index 7b1c056..ed150e7 100644
--- a/src/SelectItemDialog.cpp
+++ b/src/SelectItemDialog.cpp
@@ -1,53 +1,53 @@
#include "SelectItemDialog.h"
#include "ui_SelectItemDialog.h"
SelectItemDialog::SelectItemDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::SelectItemDialog)
{
ui->setupUi(this);
Qt::WindowFlags flags = windowFlags();
flags &= ~Qt::WindowContextHelpButtonHint;
setWindowFlags(flags);
}
SelectItemDialog::~SelectItemDialog()
{
delete ui;
}
void SelectItemDialog::addItem(QString const &id, QString const &text)
{
auto *item = new QListWidgetItem;
item->setText(text);
item->setData(Qt::UserRole, id);
ui->listWidget->addItem(item);
}
void SelectItemDialog::select(QString const &id)
{
int n = ui->listWidget->count();
for (int i = 0; i < n; i++) {
QListWidgetItem *p = ui->listWidget->item(i);
if (p->data(Qt::UserRole).toString() == id) {
ui->listWidget->setCurrentRow(i);
return;
}
}
}
-SelectItemDialog::Item SelectItemDialog::item() const
+Languages::Item SelectItemDialog::item() const
{
- Item ret;
+ Languages::Item ret;
QListWidgetItem *p = ui->listWidget->currentItem();
if (p) {
ret.id = p->data(Qt::UserRole).toString();
- ret.text = p->text();
+ ret.description = p->text();
}
return ret;
}
void SelectItemDialog::on_listWidget_itemDoubleClicked(QListWidgetItem *)
{
done(Accepted);
}
diff --git a/src/SelectItemDialog.h b/src/SelectItemDialog.h
index 9907b49..de46a8a 100644
--- a/src/SelectItemDialog.h
+++ b/src/SelectItemDialog.h
@@ -1,40 +1,30 @@
#ifndef SELECTITEMDIALOG_H
#define SELECTITEMDIALOG_H
#include <QDialog>
#include <vector>
+#include "Languages.h"
class QListWidgetItem;
namespace Ui {
class SelectItemDialog;
}
class SelectItemDialog : public QDialog {
Q_OBJECT
private:
Ui::SelectItemDialog *ui;
-public:
- struct Item {
- QString id;
- QString text;
- Item() = default;
- Item(QString const &id, QString const &text)
- : id(id)
- , text(text)
- {
- }
- };
public:
explicit SelectItemDialog(QWidget *parent = nullptr);
~SelectItemDialog() override;
void addItem(QString const &id, QString const &text);
- Item item() const;
+ Languages::Item item() const;
void select(QString const &id);
private slots:
void on_listWidget_itemDoubleClicked(QListWidgetItem *);
};
#endif // SELECTITEMDIALOG_H
diff --git a/src/SelectItemDialog.ui b/src/SelectItemDialog.ui
index 8f67a12..7f59bad 100644
--- a/src/SelectItemDialog.ui
+++ b/src/SelectItemDialog.ui
@@ -1,75 +1,75 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>SelectItemDialog</class>
<widget class="QDialog" name="SelectItemDialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
- <width>206</width>
- <height>159</height>
+ <width>456</width>
+ <height>408</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QListWidget" name="listWidget"/>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="pushButton">
<property name="text">
<string>OK</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_2">
<property name="text">
<string>Cancel</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<resources/>
<connections>
<connection>
<sender>pushButton</sender>
<signal>clicked()</signal>
<receiver>SelectItemDialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>25</x>
<y>139</y>
</hint>
<hint type="destinationlabel">
<x>6</x>
<y>137</y>
</hint>
</hints>
</connection>
<connection>
<sender>pushButton_2</sender>
<signal>clicked()</signal>
<receiver>SelectItemDialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>180</x>
<y>131</y>
</hint>
<hint type="destinationlabel">
<x>201</x>
<y>136</y>
</hint>
</hints>
</connection>
</connections>
</ui>
diff --git a/src/SettingGeneralForm.cpp b/src/SettingGeneralForm.cpp
index 837340d..434e735 100644
--- a/src/SettingGeneralForm.cpp
+++ b/src/SettingGeneralForm.cpp
@@ -1,125 +1,120 @@
#include "MySettings.h"
#include "SelectItemDialog.h"
#include "ApplicationGlobal.h"
#include "SettingGeneralForm.h"
#include "ui_SettingGeneralForm.h"
+#include "Languages.h"
#include "common/misc.h"
#include <QFileDialog>
SettingGeneralForm::SettingGeneralForm(QWidget *parent) :
AbstractSettingForm(parent),
ui(new Ui::SettingGeneralForm)
{
ui->setupUi(this);
langs = languages();
- themes.push_back(SelectItemDialog::Item("standard", tr("Standard")));
- themes.push_back(SelectItemDialog::Item("dark", tr("Dark")));
+ themes.push_back(Languages::Item("standard", tr("Standard")));
+ themes.push_back(Languages::Item("dark", tr("Dark")));
updateLanguage();
updateTheme();
}
SettingGeneralForm::~SettingGeneralForm()
{
delete ui;
}
-QList<SelectItemDialog::Item> SettingGeneralForm::languages()
+QList<Languages::Item> SettingGeneralForm::languages()
{
- QList<SelectItemDialog::Item> langs;
- langs.push_back(SelectItemDialog::Item("en", tr("English")));
- langs.push_back(SelectItemDialog::Item("ja", tr("Japanese")));
- langs.push_back(SelectItemDialog::Item("ru", tr("Russian")));
- langs.push_back(SelectItemDialog::Item("zh-CN", tr("Chinese (Simplified)")));
- langs.push_back(SelectItemDialog::Item("zh-TW", tr("Chinese (Taiwan)")));
- return langs;
+ return Languages().items;
}
void SettingGeneralForm::exchange(bool save)
{
if (save) {
settings()->remember_and_restore_window_position = ui->checkBox_save_window_pos->isChecked();
settings()->enable_high_dpi_scaling = ui->checkBox_enable_high_dpi_scaling->isChecked();
} else {
ui->checkBox_save_window_pos->setChecked(settings()->remember_and_restore_window_position);
ui->checkBox_enable_high_dpi_scaling->setChecked(settings()->enable_high_dpi_scaling);
}
}
void SettingGeneralForm::on_pushButton_browse_default_working_dir_clicked()
{
}
void SettingGeneralForm::updateLanguage()
{
QString id = global->language_id;
if (id.isEmpty()) {
id = "en";
}
- for (SelectItemDialog::Item const &item : langs) {
+ for (Languages::Item const &item : langs) {
if (item.id == id) {
- ui->lineEdit_language->setText(item.text);
+ ui->lineEdit_language->setText(item.description);
return;
}
}
}
void SettingGeneralForm::updateTheme()
{
QString id = global->theme_id;
if (id.isEmpty()) {
id = "standard";
}
- for (SelectItemDialog::Item const &item : themes) {
+ for (Languages::Item const &item : themes) {
if (item.id == id) {
- ui->lineEdit_theme->setText(item.text);
+ ui->lineEdit_theme->setText(item.description);
return;
}
}
}
-void SettingGeneralForm::execSelectLanguageDialog(QWidget *parent, QList<SelectItemDialog::Item> const &langs, std::function<void()> const &done)
+void SettingGeneralForm::execSelectLanguageDialog(QWidget *parent, QList<Languages::Item> const &langs, std::function<void()> const &done)
{
SelectItemDialog dlg(parent);
dlg.setWindowTitle(tr("Select Language"));
- for (SelectItemDialog::Item const &item : langs) {
- dlg.addItem(item.id, item.text);
+ for (Languages::Item const &item : langs) {
+ dlg.addItem(item.id, item.description);
}
dlg.select(global->language_id.isEmpty() ? "en" : global->language_id);
if (dlg.exec() == QDialog::Accepted) {
- SelectItemDialog::Item item = dlg.item();
+ Languages::Item item = dlg.item();
global->language_id = item.id;
MySettings s;
s.beginGroup("UI");
s.setValue("Language", global->language_id);
s.endGroup();
done();
}
}
void SettingGeneralForm::on_pushButton_change_language_clicked()
{
execSelectLanguageDialog(this, langs, [&](){updateLanguage();});
}
void SettingGeneralForm::on_pushButton_change_theme_clicked()
{
SelectItemDialog dlg(this);
dlg.setWindowTitle(tr("Select Theme"));
- for (SelectItemDialog::Item const &item : themes) {
- dlg.addItem(item.id, item.text);
+ for (Languages::Item const &item : themes) {
+ dlg.addItem(item.id, item.description);
}
dlg.select(global->theme_id.isEmpty() ? "standard" : global->theme_id);
if (dlg.exec() == QDialog::Accepted) {
- SelectItemDialog::Item item = dlg.item();
+ Languages::Item item = dlg.item();
global->theme_id = item.id;
MySettings s;
s.beginGroup("UI");
s.setValue("Theme", global->theme_id);
s.endGroup();
updateTheme();
}
}
diff --git a/src/SettingGeneralForm.h b/src/SettingGeneralForm.h
index 0400d2c..a9fd30b 100644
--- a/src/SettingGeneralForm.h
+++ b/src/SettingGeneralForm.h
@@ -1,36 +1,36 @@
#ifndef SETTINGGENERALFORM_H
#define SETTINGGENERALFORM_H
#include "AbstractSettingForm.h"
#include "SelectItemDialog.h"
#include <QWidget>
namespace Ui {
class SettingGeneralForm;
}
class SettingGeneralForm : public AbstractSettingForm
{
Q_OBJECT
private:
Ui::SettingGeneralForm *ui;
- QList<SelectItemDialog::Item> langs;
- QList<SelectItemDialog::Item> themes;
+ QList<Languages::Item> langs;
+ QList<Languages::Item> themes;
void updateLanguage();
void updateTheme();
public:
explicit SettingGeneralForm(QWidget *parent = nullptr);
~SettingGeneralForm() override;
void exchange(bool save) override;
- static QList<SelectItemDialog::Item> languages();
- static void execSelectLanguageDialog(QWidget *parent, const QList<SelectItemDialog::Item> &langs, const std::function<void ()> &done);
+ static QList<Languages::Item> languages();
+ static void execSelectLanguageDialog(QWidget *parent, const QList<Languages::Item> &langs, const std::function<void ()> &done);
private slots:
void on_pushButton_browse_default_working_dir_clicked();
void on_pushButton_change_language_clicked();
void on_pushButton_change_theme_clicked();
};
#endif // SETTINGGENERALFORM_H
diff --git a/src/resources/translations/Guitar_ja.qm b/src/resources/translations/Guitar_ja.qm
index b881a92..409739b 100644
Binary files a/src/resources/translations/Guitar_ja.qm and b/src/resources/translations/Guitar_ja.qm differ
diff --git a/src/resources/translations/Guitar_ja.ts b/src/resources/translations/Guitar_ja.ts
index 2715e58..20ad774 100644
--- a/src/resources/translations/Guitar_ja.ts
+++ b/src/resources/translations/Guitar_ja.ts
@@ -1,2751 +1,2986 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="ja_JP">
<context>
<name>AboutDialog</name>
<message>
<location filename="../../AboutDialog.ui" line="14"/>
<source>Dialog</source>
<translation></translation>
</message>
<message>
- <location filename="../../AboutDialog.ui" line="29"/>
- <location filename="../../AboutDialog.ui" line="36"/>
- <location filename="../../AboutDialog.ui" line="43"/>
- <location filename="../../AboutDialog.ui" line="50"/>
+ <location filename="../../AboutDialog.ui" line="34"/>
+ <location filename="../../AboutDialog.ui" line="46"/>
+ <location filename="../../AboutDialog.ui" line="58"/>
+ <location filename="../../AboutDialog.ui" line="70"/>
<source>TextLabel</source>
<translation></translation>
</message>
+ <message>
+ <location filename="../../AboutDialog.ui" line="86"/>
+ <source><a href="https://github.com/soramimi/Guitar">https://github.com/soramimi/Guitar</a></source>
+ <translation></translation>
+ </message>
<message>
<location filename="../../AboutDialog.cpp" line="25"/>
<source>About %1</source>
<translation>%1 について</translation>
</message>
</context>
<context>
<name>AreYouSureYouWantToContinueConnectingDialog</name>
<message>
<location filename="../../AreYouSureYouWantToContinueConnectingDialog.ui" line="14"/>
<source>Unknown Host</source>
<translation>不明なホスト</translation>
</message>
<message>
<location filename="../../AreYouSureYouWantToContinueConnectingDialog.ui" line="20"/>
<source>Are you sure you want to continue connecting (yes/no)?</source>
<translation>接続を続行しますか? (yes/no)?</translation>
</message>
<message>
<location filename="../../AreYouSureYouWantToContinueConnectingDialog.ui" line="52"/>
<source>Continue</source>
<translation>続行</translation>
</message>
<message>
<location filename="../../AreYouSureYouWantToContinueConnectingDialog.ui" line="59"/>
<source>Close</source>
<translation>閉じる</translation>
</message>
</context>
<context>
<name>BasicMainWindow</name>
<message>
- <location filename="../../BasicMainWindow.cpp" line="345"/>
+ <location filename="../../BasicMainWindow.cpp" line="261"/>
+ <source>git command not specified</source>
+ <translation>gitコマンドが指定されていません</translation>
+ </message>
+ <message>
+ <location filename="../../BasicMainWindow.cpp" line="374"/>
<source>The URL is a valid repository</source>
<translation>このURLは有効なリポジトリです</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="346"/>
+ <location filename="../../BasicMainWindow.cpp" line="375"/>
<source>Failed to access the URL</source>
<translation>このURLへのアクセスに失敗しました</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="351"/>
+ <location filename="../../BasicMainWindow.cpp" line="380"/>
<source>Remote Repository</source>
<translation>リモートリポジトリ</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="376"/>
+ <location filename="../../BasicMainWindow.cpp" line="405"/>
<source>&Property</source>
<translation>プロパティ(&P)</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1201"/>
+ <location filename="../../BasicMainWindow.cpp" line="1273"/>
<source>Select %1 command</source>
<translation>%1 コマンドの選択</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1380"/>
+ <location filename="../../BasicMainWindow.cpp" line="1452"/>
<source>Revert all files</source>
<translation>すべてのファイルの変更を破棄</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1520"/>
+ <location filename="../../BasicMainWindow.cpp" line="1610"/>
<source>The folder is not a valid git repository.</source>
<translation>フォルダは有効なGitリポジトリではありません。</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1524"/>
+ <location filename="../../BasicMainWindow.cpp" line="1614"/>
<source>Do you want to initialize it as a git repository ?</source>
<translation>Gitリポジトリとして初期化しますか?</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1525"/>
+ <location filename="../../BasicMainWindow.cpp" line="1615"/>
<source>Initialize Repository</source>
<translation>リポジトリの初期化</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1663"/>
+ <location filename="../../BasicMainWindow.cpp" line="1745"/>
<source>No repository selected</source>
<translation>リポジトリが選択されていません</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1817"/>
+ <location filename="../../BasicMainWindow.cpp" line="1915"/>
<source>Repository Property</source>
<translation>リポジトリのプロパティ</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1817"/>
- <location filename="../../BasicMainWindow.cpp" line="1919"/>
+ <location filename="../../BasicMainWindow.cpp" line="1915"/>
+ <location filename="../../BasicMainWindow.cpp" line="2017"/>
<source>Not a valid git repository</source>
<translation>有効なリポジトリではありません</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1912"/>
- <location filename="../../BasicMainWindow.cpp" line="1919"/>
+ <location filename="../../BasicMainWindow.cpp" line="2010"/>
+ <location filename="../../BasicMainWindow.cpp" line="2017"/>
<source>Open Repository</source>
<translation>リポジトリを開く</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1912"/>
+ <location filename="../../BasicMainWindow.cpp" line="2010"/>
<source>No such folder</source>
<translation>そのようなフォルダはありません</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1912"/>
+ <location filename="../../BasicMainWindow.cpp" line="2010"/>
<source>Remove from bookmark ?</source>
<translation>ブックマークから削除しますか?</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2150"/>
+ <location filename="../../BasicMainWindow.cpp" line="2248"/>
<source>, %1 ahead</source>
<translation></translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2153"/>
+ <location filename="../../BasicMainWindow.cpp" line="2251"/>
<source>, %1 behind</source>
<translation></translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2174"/>
+ <location filename="../../BasicMainWindow.cpp" line="2272"/>
<source>Confirm Remove</source>
<translation>削除の確認</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2174"/>
+ <location filename="../../BasicMainWindow.cpp" line="2272"/>
<source>Are you sure you want to remove the repository from bookmarks ?</source>
<translation>リポジトリをブックマークから削除してよろしいですか?</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2174"/>
+ <location filename="../../BasicMainWindow.cpp" line="2272"/>
<source>(Files will NOT be deleted)</source>
<translation>(ファルは削除されません)</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2204"/>
+ <location filename="../../BasicMainWindow.cpp" line="2302"/>
<source>A file with same name already exists</source>
<translation>同じ名前のファイルが既に存在しています</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2205"/>
- <location filename="../../BasicMainWindow.cpp" line="2210"/>
- <location filename="../../BasicMainWindow.cpp" line="2227"/>
- <location filename="../../BasicMainWindow.cpp" line="2232"/>
+ <location filename="../../BasicMainWindow.cpp" line="2303"/>
+ <location filename="../../BasicMainWindow.cpp" line="2308"/>
+ <location filename="../../BasicMainWindow.cpp" line="2325"/>
+ <location filename="../../BasicMainWindow.cpp" line="2330"/>
<source>Clone</source>
<translation>クローン</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2209"/>
+ <location filename="../../BasicMainWindow.cpp" line="2307"/>
<source>A folder with same name already exists</source>
<translation>同じ名前のフォルダが既に存在しています</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2226"/>
+ <location filename="../../BasicMainWindow.cpp" line="2324"/>
<source>Invalid folder</source>
<translation>無効なフォルダ</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2231"/>
+ <location filename="../../BasicMainWindow.cpp" line="2329"/>
<source>No such folder. Create it now ?</source>
<translation>このフォルダはありません。作成しますか?</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2291"/>
+ <location filename="../../BasicMainWindow.cpp" line="2398"/>
<source>Commit</source>
<translation>コミット</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2291"/>
+ <location filename="../../BasicMainWindow.cpp" line="2398"/>
<source>Commit message can not be omitted.</source>
<translation>コミットメッセージを空にすることはできません。</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2308"/>
+ <location filename="../../BasicMainWindow.cpp" line="2415"/>
<source>Failed to commit</source>
<translation>コミット失敗</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2342"/>
- <location filename="../../BasicMainWindow.cpp" line="2426"/>
+ <location filename="../../BasicMainWindow.cpp" line="2449"/>
+ <location filename="../../BasicMainWindow.cpp" line="2533"/>
<source>Connection refused.</source>
<translation>接続が拒否されました。</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2395"/>
+ <location filename="../../BasicMainWindow.cpp" line="2502"/>
<source>No remote repository is registered.</source>
<translation>リモートリポジトリが登録されていません。</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2417"/>
+ <location filename="../../BasicMainWindow.cpp" line="2524"/>
<source>The current branch %1 has no upstream branch.</source>
<translation>現在のブランチ「%1」には上流ブランチがありません。</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2420"/>
+ <location filename="../../BasicMainWindow.cpp" line="2527"/>
<source>You try push --set-upstream</source>
<translation>--set-upstream を試してください</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2509"/>
+ <location filename="../../BasicMainWindow.cpp" line="2616"/>
<source>Failed to delete the branch '%1'</source>
<translation>ブランチ「%1」の削除に失敗しました</translation>
</message>
<message>
<source>Failed to delete the branch '%1'
</source>
<translation type="vanished">ブランチの削除に失敗しました : '%1'</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2573"/>
+ <location filename="../../BasicMainWindow.cpp" line="2680"/>
<source>Are you sure you want to run the following command ?</source>
<translation>次のコマンドを実行してよろしいですか?</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2594"/>
+ <location filename="../../BasicMainWindow.cpp" line="2701"/>
<source>Reset a file</source>
<translation>ファイルをリセットします</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2608"/>
+ <location filename="../../BasicMainWindow.cpp" line="2715"/>
<source>Unnamed</source>
<translation>無名</translation>
</message>
</context>
<context>
<name>BasicRepositoryDialog</name>
<message>
<location filename="../../BasicRepositoryDialog.cpp" line="66"/>
<source>Name</source>
<translation>名前</translation>
</message>
<message>
<location filename="../../BasicRepositoryDialog.cpp" line="67"/>
<source>Purpose</source>
<translation>用途</translation>
</message>
<message>
<location filename="../../BasicRepositoryDialog.cpp" line="68"/>
<source>URL</source>
<translation></translation>
</message>
</context>
<context>
<name>BigDiffWindow</name>
<message>
<location filename="../../BigDiffWindow.ui" line="14"/>
<source>Diff</source>
<translation>差分</translation>
</message>
</context>
<context>
<name>BlameWindow</name>
<message>
<location filename="../../BlameWindow.ui" line="14"/>
<source>Blame</source>
<translation></translation>
</message>
<message>
<location filename="../../BlameWindow.ui" line="45"/>
<source>Information</source>
<translation>情報</translation>
</message>
<message>
<location filename="../../BlameWindow.ui" line="60"/>
<source>Commit</source>
<translation>コミット</translation>
</message>
<message>
<location filename="../../BlameWindow.ui" line="70"/>
<source>Date</source>
<translation>日付</translation>
</message>
<message>
<location filename="../../BlameWindow.ui" line="90"/>
<source>Message</source>
<translation>メッセージ</translation>
</message>
<message>
<location filename="../../BlameWindow.ui" line="80"/>
<source>Author</source>
<translation>名前</translation>
</message>
<message>
<location filename="../../BlameWindow.ui" line="118"/>
<source>Close</source>
<translation>閉じる</translation>
</message>
</context>
<context>
<name>CheckoutDialog</name>
<message>
<location filename="../../CheckoutDialog.ui" line="14"/>
<source>Checkout</source>
<translation>チェックアウト</translation>
</message>
<message>
<location filename="../../CheckoutDialog.ui" line="20"/>
<location filename="../../CheckoutDialog.ui" line="27"/>
<location filename="../../CheckoutDialog.ui" line="34"/>
<source>RadioButton</source>
<translation></translation>
</message>
<message>
<location filename="../../CheckoutDialog.ui" line="63"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../CheckoutDialog.ui" line="70"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
</context>
+<context>
+ <name>CherryPickDialog</name>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="14"/>
+ <source>Cherry-pick</source>
+ <translation>チェリーピック</translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="20"/>
+ <source>HEAD</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="49"/>
+ <source>Pick</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="78"/>
+ <source>Mainline</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="109"/>
+ <source>Allow empty</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="131"/>
+ <source>OK</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="138"/>
+ <source>Cancel</source>
+ <translation>キャンセル</translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.cpp" line="19"/>
+ <source>Commit</source>
+ <translation>コミット</translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.cpp" line="20"/>
+ <source>Date</source>
+ <translation>日付</translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.cpp" line="21"/>
+ <source>Author</source>
+ <translation>名前</translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.cpp" line="22"/>
+ <source>Message</source>
+ <translation>メッセージ</translation>
+ </message>
+</context>
<context>
<name>CloneDialog</name>
<message>
<location filename="../../CloneDialog.ui" line="14"/>
<location filename="../../CloneDialog.ui" line="103"/>
<source>Clone</source>
<translation>クローン</translation>
</message>
<message>
<location filename="../../CloneDialog.ui" line="22"/>
<source>Remote</source>
<translation>リモート</translation>
</message>
<message>
<location filename="../../CloneDialog.ui" line="39"/>
<source>&Test</source>
<translation>テスト(&T)</translation>
</message>
<message>
<location filename="../../CloneDialog.ui" line="46"/>
<source>Local</source>
<translation>ローカル</translation>
</message>
<message>
<location filename="../../CloneDialog.ui" line="56"/>
<source>Browse</source>
<translation>参照</translation>
</message>
<message>
<location filename="../../CloneDialog.ui" line="83"/>
<source>Open existing local directory...</source>
<translation>既存のフォルダを開く...</translation>
</message>
<message>
<location filename="../../CloneDialog.ui" line="113"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
<message>
<location filename="../../CloneDialog.cpp" line="40"/>
<source>Search</source>
<translation>検索</translation>
</message>
<message>
<location filename="../../CloneDialog.cpp" line="41"/>
<source>GitHub</source>
<translation></translation>
</message>
<message>
- <location filename="../../CloneDialog.cpp" line="108"/>
+ <location filename="../../CloneDialog.cpp" line="113"/>
<source>Checkout into</source>
<translation>ここにチェックアウト</translation>
</message>
<message>
- <location filename="../../CloneDialog.cpp" line="120"/>
+ <location filename="../../CloneDialog.cpp" line="125"/>
<source>Open existing directory</source>
<translation>既存のフォンるだを開く</translation>
</message>
</context>
<context>
<name>CloneFromGitHubDialog</name>
<message>
<location filename="../../CloneFromGitHubDialog.ui" line="14"/>
<source>Clone from GitHub</source>
<translation>GitHubからクローン</translation>
</message>
<message>
<location filename="../../CloneFromGitHubDialog.ui" line="45"/>
<source>ssh</source>
<translation></translation>
</message>
<message>
<location filename="../../CloneFromGitHubDialog.ui" line="55"/>
<source>http</source>
<translation></translation>
</message>
<message>
<location filename="../../CloneFromGitHubDialog.ui" line="95"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../CloneFromGitHubDialog.ui" line="102"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
</context>
<context>
<name>CommitDialog</name>
<message>
<location filename="../../CommitDialog.ui" line="14"/>
<source>Commit</source>
<translation>コミット</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="27"/>
<source>TextLabel</source>
<translation></translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="49"/>
<source>Author</source>
<translation>名前</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="68"/>
<location filename="../../CommitDialog.ui" line="94"/>
<location filename="../../CommitDialog.ui" line="139"/>
<location filename="../../CommitDialog.ui" line="159"/>
<location filename="../../CommitDialog.ui" line="179"/>
<source>---</source>
<translation></translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="75"/>
<location filename="../../CommitDialog.ui" line="166"/>
<source>Mail</source>
<translation>メール</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="111"/>
<source>GPG Signing</source>
<translation>GPG署名</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="126"/>
<source>ID</source>
<translation></translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="146"/>
<source>Name</source>
<translation>名前</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="189"/>
<source>Configure...</source>
<translation>設定...</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="198"/>
<source>Message</source>
<translation>メッセージ</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="223"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="233"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
</context>
<context>
<name>CommitExploreWindow</name>
<message>
<location filename="../../CommitExploreWindow.ui" line="14"/>
<source>Commit Explorer</source>
<translation>コミットエクスプローラー</translation>
</message>
<message>
<location filename="../../CommitExploreWindow.ui" line="65"/>
<source>Commit ID</source>
<translation>コミットID</translation>
</message>
<message>
<location filename="../../CommitExploreWindow.ui" line="82"/>
<source>Date</source>
<translation>日付</translation>
</message>
<message>
<location filename="../../CommitExploreWindow.ui" line="89"/>
<source>Author</source>
<translation>名前</translation>
</message>
<message>
<location filename="../../CommitExploreWindow.cpp" line="78"/>
<source>Commit</source>
<translation>コミット</translation>
</message>
</context>
<context>
<name>CommitPropertyDialog</name>
<message>
<location filename="../../CommitPropertyDialog.ui" line="14"/>
<source>Commit Property</source>
<oldsource>Commit Properties</oldsource>
<translation>コミットのプロパティ</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="46"/>
<source>Date</source>
<translation>日付</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="56"/>
<source>Author</source>
<translation>名前</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="66"/>
<location filename="../../CommitPropertyDialog.ui" line="196"/>
<source>Mail</source>
<translation>メール</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="154"/>
<source>GPG Sign</source>
<translation>GPG署名</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="176"/>
<source>ID</source>
<translation></translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="186"/>
<source>Name</source>
<translation>名前</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="233"/>
<source>Commit ID</source>
<translation>コミットID</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="243"/>
<source>Parent IDs</source>
<translation>親ID</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="265"/>
<source>Files...</source>
<translation>ファイル...</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="285"/>
<source>Explorer</source>
<translation>エクスプローラ</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="305"/>
<source>Checkout</source>
<translation>チェックアウト</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="312"/>
<source>Jump</source>
<translation>移動</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="332"/>
<source>Close</source>
<translation>閉じる</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.cpp" line="60"/>
<source><Unknown></source>
<translation><不明></translation>
</message>
</context>
<context>
<name>CommitViewWindow</name>
<message>
<location filename="../../CommitViewWindow.ui" line="14"/>
<source>Commit View</source>
<translation>コミットビュー</translation>
</message>
<message>
<location filename="../../CommitViewWindow.cpp" line="58"/>
<source>History</source>
<translation>履歴</translation>
</message>
</context>
<context>
<name>ConfigCredentialHelperDialog</name>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="14"/>
<source>Dialog</source>
<translation></translation>
</message>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="26"/>
<source>wincred</source>
<translation></translation>
</message>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="39"/>
<source>winstore</source>
<translation></translation>
</message>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="52"/>
<source>None</source>
<translation>なし</translation>
</message>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="65"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="78"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="91"/>
<source>Other</source>
<translation>その他</translation>
</message>
</context>
<context>
<name>ConfigSigningDialog</name>
<message>
<location filename="../../ConfigSigningDialog.ui" line="14"/>
<source>Signing Policy</source>
<translation>署名ポリシー</translation>
</message>
<message>
<location filename="../../ConfigSigningDialog.ui" line="20"/>
<source>Config commit.gpgsign</source>
<translation>commit.gpgsign の設定</translation>
</message>
<message>
<location filename="../../ConfigSigningDialog.ui" line="32"/>
<source>global</source>
<translation></translation>
</message>
<message>
<location filename="../../ConfigSigningDialog.ui" line="42"/>
<source>local</source>
<translation></translation>
</message>
<message>
<location filename="../../ConfigSigningDialog.ui" line="70"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../ConfigSigningDialog.ui" line="77"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
</context>
<context>
<name>CreateRepositoryDialog</name>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="14"/>
<location filename="../../CreateRepositoryDialog.cpp" line="42"/>
<location filename="../../CreateRepositoryDialog.cpp" line="46"/>
<location filename="../../CreateRepositoryDialog.cpp" line="50"/>
<location filename="../../CreateRepositoryDialog.cpp" line="54"/>
<source>Create Repository</source>
<translation>リポジトリの作成</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="22"/>
<source>Path</source>
<translation>パス</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="32"/>
<source>Browse</source>
<translation>参照</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="54"/>
<source>Bookmark</source>
<translation>ブックマーク</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="63"/>
<location filename="../../CreateRepositoryDialog.ui" line="88"/>
<source>Name</source>
<translation>名前</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="76"/>
<source>Remote</source>
<translation>リモート</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="98"/>
<source>URL</source>
<translation></translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="108"/>
<source>Test</source>
<translation>テスト</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="146"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="153"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.cpp" line="19"/>
<source>A valid git repository already exists there.</source>
<translation>有効なリポジトリが既に存在しています。</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.cpp" line="42"/>
<location filename="../../CreateRepositoryDialog.cpp" line="50"/>
<source>The specified path is not a directory.</source>
<translation>指定されたパスはフォルダではありません。</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.cpp" line="54"/>
<source>Remote name is invalid.</source>
<translation>リモート名が無効です。</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.cpp" line="62"/>
<source>Destination Path</source>
<translation>作成先のパス</translation>
</message>
</context>
<context>
<name>DeleteBranchDialog</name>
<message>
<location filename="../../DeleteBranchDialog.ui" line="14"/>
<source>Delete Branch</source>
<translation>ブランチの削除</translation>
</message>
<message>
<location filename="../../DeleteBranchDialog.ui" line="25"/>
<source>&All branches</source>
<translation>全てのブランチ(&A)</translation>
</message>
<message>
<location filename="../../DeleteBranchDialog.ui" line="45"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../DeleteBranchDialog.ui" line="52"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
<message>
<location filename="../../DeleteBranchDialog.cpp" line="23"/>
<source>Delete Remote Branch</source>
<translation>リモートブランチの削除</translation>
</message>
</context>
<context>
<name>DeleteTagsDialog</name>
<message>
<location filename="../../DeleteTagsDialog.ui" line="14"/>
<source>Delete tags</source>
<translation>タグを削除</translation>
</message>
<message>
<location filename="../../DeleteTagsDialog.ui" line="32"/>
<source>Check all</source>
<translation>全てチェック</translation>
</message>
<message>
<location filename="../../DeleteTagsDialog.ui" line="52"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../DeleteTagsDialog.ui" line="62"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
</context>
<context>
<name>DoYouWantToInitDialog</name>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="14"/>
<source>Init Repository</source>
<translation>リポジトリの初期化</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="20"/>
<source>The folder:</source>
<translation>フォルダ:</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="32"/>
<source>is not a valid git working copy.</source>
<translation>は、有効なGitリポジトリではありません。</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="39"/>
<source>Do you want to init it as a git repository ?</source>
<translation>これをGitリポジトリとして初期化しますか?</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="81"/>
<source>Yes, Please init it.</source>
<translation>はい、初期化します。</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="88"/>
<source>No, Stop it.</source>
<translation>いいえ、初期化しません。</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="140"/>
<source>Please choose option</source>
<translation>選択してください</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.cpp" line="20"/>
<source>Next...</source>
<translation>次へ...</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.cpp" line="26"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
</context>
<context>
<name>EditGitIgnoreDialog</name>
<message>
<location filename="../../EditGitIgnoreDialog.ui" line="14"/>
<source>Edit Git Ignore</source>
<translation>Gitで無視するファイルの編集</translation>
</message>
<message>
<location filename="../../EditGitIgnoreDialog.ui" line="20"/>
<location filename="../../EditGitIgnoreDialog.ui" line="27"/>
<location filename="../../EditGitIgnoreDialog.ui" line="34"/>
<location filename="../../EditGitIgnoreDialog.ui" line="41"/>
<source>RadioButton</source>
<translation></translation>
</message>
<message>
<location filename="../../EditGitIgnoreDialog.ui" line="63"/>
<source>Edit the file</source>
<translation>ファイルを編集する</translation>
</message>
<message>
<location filename="../../EditGitIgnoreDialog.ui" line="83"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../EditGitIgnoreDialog.ui" line="90"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
</context>
<context>
<name>EditRemoteDialog</name>
<message>
<location filename="../../EditRemoteDialog.ui" line="14"/>
<source>Edit Remote</source>
<translation>リモートの編集</translation>
</message>
<message>
<location filename="../../EditRemoteDialog.ui" line="20"/>
<source>Remote</source>
<translation>リモート</translation>
</message>
<message>
<location filename="../../EditRemoteDialog.ui" line="26"/>
<source>Name</source>
<translation>名前</translation>
</message>
<message>
<location filename="../../EditRemoteDialog.ui" line="33"/>
<source>URL</source>
<translation></translation>
</message>
<message>
<location filename="../../EditRemoteDialog.ui" line="53"/>
<source>&Test</source>
<translation>テスト(&T)</translation>
</message>
<message>
<location filename="../../EditRemoteDialog.ui" line="81"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../EditRemoteDialog.ui" line="88"/>
<source>Close</source>
<translation>閉じる</translation>
</message>
</context>
<context>
<name>EditTagsDialog</name>
<message>
<location filename="../../EditTagsDialog.ui" line="14"/>
<source>Edit Tags</source>
<translation>タグの編集</translation>
</message>
<message>
<location filename="../../EditTagsDialog.ui" line="41"/>
<source>Add...</source>
<translation>追加...</translation>
</message>
<message>
<location filename="../../EditTagsDialog.ui" line="48"/>
<source>Delete</source>
<translation>削除</translation>
</message>
<message>
<location filename="../../EditTagsDialog.ui" line="68"/>
<source>Close</source>
<translation>閉じる</translation>
</message>
</context>
<context>
<name>ExperimentDialog</name>
<message>
<location filename="../../ExperimentDialog.ui" line="14"/>
<source>Dialog</source>
<translation></translation>
</message>
</context>
<context>
<name>FileDiffWidget</name>
<message>
<location filename="../../FileDiffWidget.ui" line="14"/>
<source>Dialog</source>
<translation></translation>
</message>
</context>
<context>
<name>FileHistoryWindow</name>
<message>
<location filename="../../FileHistoryWindow.ui" line="14"/>
<source>File History</source>
<translation>ファイルの履歴</translation>
</message>
<message>
<location filename="../../FileHistoryWindow.ui" line="20"/>
<location filename="../../FileHistoryWindow.ui" line="27"/>
<source>TextLabel</source>
<translation></translation>
</message>
<message>
<location filename="../../FileHistoryWindow.cpp" line="111"/>
<source>Commit</source>
<translation>コミット</translation>
</message>
<message>
<location filename="../../FileHistoryWindow.cpp" line="112"/>
<source>Date</source>
<translation>日付</translation>
</message>
<message>
<location filename="../../FileHistoryWindow.cpp" line="113"/>
<source>Author</source>
<translation>名前</translation>
</message>
<message>
<location filename="../../FileHistoryWindow.cpp" line="114"/>
<source>Message</source>
<translation>メッセージ</translation>
</message>
<message>
<source>Description</source>
<translation type="vanished">概要</translation>
</message>
</context>
<context>
<name>FilePropertyDialog</name>
<message>
<location filename="../../FilePropertyDialog.ui" line="14"/>
<source>File Property</source>
<oldsource>File Properties</oldsource>
<translation>ファイルのプロパティ</translation>
</message>
<message>
<location filename="../../FilePropertyDialog.ui" line="78"/>
<source>&Close</source>
<translation>閉じる(&C)</translation>
</message>
</context>
<context>
- <name>FileViewWidget</name>
+ <name>FindCommitDialog</name>
+ <message>
+ <location filename="../../FindCommitDialog.ui" line="14"/>
+ <source>Find Commit</source>
+ <translation>コミットの検索</translation>
+ </message>
<message>
- <location filename="../../FileViewWidget.cpp" line="30"/>
- <source>Form</source>
+ <location filename="../../FindCommitDialog.ui" line="54"/>
+ <source>OK</source>
<translation></translation>
</message>
+ <message>
+ <location filename="../../FindCommitDialog.ui" line="61"/>
+ <source>Cancel</source>
+ <translation>キャンセル</translation>
+ </message>
</context>
<context>
<name>InputNewTagDialog</name>
<message>
<location filename="../../InputNewTagDialog.ui" line="14"/>
<source>Edit tag</source>
<translation>タグの編集</translation>
</message>
<message>
<location filename="../../InputNewTagDialog.ui" line="31"/>
<source>Tag</source>
<translation>タグ</translation>
</message>
<message>
<location filename="../../InputNewTagDialog.ui" line="58"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../InputNewTagDialog.ui" line="65"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
</context>
<context>
<name>JumpDialog</name>
<message>
<location filename="../../JumpDialog.ui" line="14"/>
<source>Jump</source>
<translation>移動</translation>
</message>
<message>
<source>Branches and Tags</source>
<translation type="vanished">ブランチとタグ</translation>
</message>
<message>
<source>&Filter</source>
<translation type="vanished">フィルタ(&F)</translation>
</message>
<message>
<source>Find</source>
<translation type="vanished">検索</translation>
</message>
<message>
<source>&Checkout</source>
<translation type="vanished">チェックアウト(&C)</translation>
</message>
<message>
<location filename="../../JumpDialog.ui" line="20"/>
<source>Branch, Tag or Commit-ID :</source>
<translation>ブランチ、タグ、コミットID</translation>
</message>
<message>
<location filename="../../JumpDialog.ui" line="71"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../JumpDialog.ui" line="81"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
<message>
- <location filename="../../JumpDialog.cpp" line="37"/>
+ <location filename="../../JumpDialog.cpp" line="39"/>
<source>Name</source>
<translation>名前</translation>
</message>
</context>
+<context>
+ <name>Languages</name>
+ <message>
+ <location filename="../../Languages.cpp" line="6"/>
+ <source>English</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../../Languages.cpp" line="7"/>
+ <source>Japanese</source>
+ <translation>日本語</translation>
+ </message>
+ <message>
+ <location filename="../../Languages.cpp" line="8"/>
+ <source>Russian</source>
+ <translation>ロシア語</translation>
+ </message>
+ <message>
+ <location filename="../../Languages.cpp" line="9"/>
+ <source>Chinese (Simplified)</source>
+ <translation>中国語(簡体字)</translation>
+ </message>
+ <message>
+ <location filename="../../Languages.cpp" line="10"/>
+ <source>Chinese (Traditional/Taiwan)</source>
+ <translation>中国語(繁体字/台湾)</translation>
+ </message>
+</context>
<context>
<name>LineEditDialog</name>
<message>
<location filename="../../LineEditDialog.ui" line="14"/>
<source>Dialog</source>
<translation></translation>
</message>
<message>
<location filename="../../LineEditDialog.ui" line="20"/>
<source>TextLabel</source>
<translation></translation>
</message>
<message>
<location filename="../../LineEditDialog.ui" line="45"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../LineEditDialog.ui" line="52"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../../MainWindow.ui" line="14"/>
<source>Guitar</source>
<translation></translation>
</message>
<message>
<location filename="../../MainWindow.ui" line="96"/>
- <location filename="../../MainWindow.ui" line="1352"/>
- <location filename="../../MainWindow.ui" line="1355"/>
+ <location filename="../../MainWindow.ui" line="1421"/>
+ <location filename="../../MainWindow.ui" line="1424"/>
<source>Clone</source>
<translation>クローン</translation>
</message>
<message>
<location filename="../../MainWindow.ui" line="131"/>
- <location filename="../../MainWindow.cpp" line="2201"/>
- <location filename="../../MainWindow.cpp" line="2202"/>
+ <location filename="../../MainWindow.cpp" line="1140"/>
+ <location filename="../../MainWindow.cpp" line="1141"/>
<source>Fetch</source>
<translation>フェッチ</translation>
</message>
<message>
<location filename="../../MainWindow.ui" line="166"/>
<source>Pull</source>
<translation>プル</translation>
</message>
<message>
<location filename="../../MainWindow.ui" line="201"/>
<source>Push</source>
<translation>プッシュ</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="252"/>
- <location filename="../../MainWindow.ui" line="1476"/>
+ <location filename="../../MainWindow.ui" line="303"/>
+ <location filename="../../MainWindow.ui" line="1548"/>
<source>Terminal</source>
<translation>端末</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="287"/>
- <location filename="../../MainWindow.ui" line="1485"/>
+ <location filename="../../MainWindow.ui" line="338"/>
+ <location filename="../../MainWindow.ui" line="1557"/>
<source>Explorer</source>
<translation>エクスプローラ</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="373"/>
+ <location filename="../../MainWindow.ui" line="424"/>
<source>Repository</source>
<translation>リポジトリ</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="380"/>
+ <location filename="../../MainWindow.ui" line="431"/>
<source>Branch Name</source>
<translation>ブランチ名</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="432"/>
- <location filename="../../MainWindow.ui" line="1520"/>
+ <location filename="../../MainWindow.ui" line="483"/>
+ <location filename="../../MainWindow.ui" line="1592"/>
<source>Offline</source>
<translation>オフライン</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="422"/>
- <location filename="../../MainWindow.ui" line="1515"/>
+ <location filename="../../MainWindow.ui" line="473"/>
+ <location filename="../../MainWindow.ui" line="1587"/>
<source>Online</source>
<translation>オンライン</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="748"/>
- <location filename="../../MainWindow.cpp" line="1598"/>
+ <location filename="../../MainWindow.ui" line="799"/>
+ <location filename="../../MainWindow.cpp" line="1853"/>
<source>Unstage</source>
<translation>除外</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="777"/>
+ <location filename="../../MainWindow.ui" line="828"/>
<source>Select all</source>
<translation>全て選択</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="812"/>
- <location filename="../../MainWindow.cpp" line="1468"/>
+ <location filename="../../MainWindow.ui" line="863"/>
+ <location filename="../../MainWindow.cpp" line="1723"/>
<source>Stage</source>
<translation>追加</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="841"/>
- <location filename="../../MainWindow.cpp" line="841"/>
+ <location filename="../../MainWindow.ui" line="892"/>
+ <location filename="../../MainWindow.cpp" line="879"/>
<source>Commit</source>
<translation>コミット</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="972"/>
+ <location filename="../../MainWindow.ui" line="1023"/>
<source>&File</source>
<translation>ファイル(&F)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="983"/>
+ <location filename="../../MainWindow.ui" line="1034"/>
<source>&View</source>
<translation>表示(&V)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="989"/>
+ <location filename="../../MainWindow.ui" line="1040"/>
<source>&Edit</source>
<translation>編集(&E)</translation>
</message>
<message>
<source>Destructive</source>
<translation type="vanished">注意を要するコマンド</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1343"/>
+ <location filename="../../MainWindow.ui" line="1412"/>
<source>Settings</source>
<translation>設定</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1365"/>
- <location filename="../../MainWindow.cpp" line="1332"/>
+ <location filename="../../MainWindow.ui" line="1434"/>
+ <location filename="../../MainWindow.cpp" line="1595"/>
<source>Edit tags...</source>
<translation>タグの編集...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1368"/>
+ <location filename="../../MainWindow.ui" line="1437"/>
<source>Edit tags</source>
<translation>タグの編集</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1490"/>
+ <location filename="../../MainWindow.ui" line="1562"/>
<source>Clean -df</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1495"/>
+ <location filename="../../MainWindow.ui" line="1567"/>
<source>Reset --hard</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1422"/>
+ <location filename="../../MainWindow.ui" line="1494"/>
<source>Create a repository</source>
<translation>リポジトリの作成</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1409"/>
+ <location filename="../../MainWindow.ui" line="1481"/>
<source>Push upstream</source>
<translation>プッシュ upstream</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1431"/>
+ <location filename="../../MainWindow.ui" line="1503"/>
<source>Stop process</source>
<translation>処理の停止</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1436"/>
+ <location filename="../../MainWindow.ui" line="1508"/>
<source>E&xit</source>
<translation>終了(&X)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1439"/>
+ <location filename="../../MainWindow.ui" line="1511"/>
<source>Ctrl+Q</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1444"/>
+ <location filename="../../MainWindow.ui" line="1516"/>
<source>Reflog...</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1449"/>
+ <location filename="../../MainWindow.ui" line="1521"/>
<source>Property...</source>
<translation>プロパティ...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1454"/>
- <location filename="../../MainWindow.ui" line="1457"/>
+ <location filename="../../MainWindow.ui" line="1526"/>
+ <location filename="../../MainWindow.ui" line="1529"/>
<source>Set GPG signing</source>
<translation>GPG署名の指定</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1467"/>
+ <location filename="../../MainWindow.ui" line="1539"/>
<source>Fetch --prune</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1001"/>
+ <location filename="../../MainWindow.ui" line="1055"/>
<source>&Help</source>
<translation>ヘルプ(&H)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="605"/>
+ <location filename="../../MainWindow.ui" line="252"/>
+ <location filename="../../MainWindow.ui" line="1628"/>
+ <location filename="../../MainWindow.cpp" line="1353"/>
+ <source>Status</source>
+ <translation>ステータス</translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="656"/>
<source>...</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1007"/>
+ <location filename="../../MainWindow.ui" line="1061"/>
<source>&Window</source>
<translation>ウィンドウ(&W)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1013"/>
+ <location filename="../../MainWindow.ui" line="1067"/>
<source>&Repository</source>
<translation>リポジトリ(&R)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1017"/>
- <location filename="../../MainWindow.ui" line="1500"/>
+ <location filename="../../MainWindow.ui" line="1071"/>
+ <location filename="../../MainWindow.ui" line="1572"/>
<source>Stash</source>
<translation>素タッシュ</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1040"/>
+ <location filename="../../MainWindow.ui" line="1098"/>
<source>Re&mote</source>
<translation>リモート(&M)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1055"/>
+ <location filename="../../MainWindow.ui" line="1113"/>
<source>&Destructive</source>
<translation>要注意(&D)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1086"/>
+ <location filename="../../MainWindow.ui" line="1125"/>
+ <source>Experimental</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1155"/>
<source>Log</source>
<translation>ログ</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1256"/>
+ <location filename="../../MainWindow.ui" line="1325"/>
<source>&Open existing working copy...</source>
<translation>既存の作業コピーを開く(&O)...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1259"/>
- <location filename="../../MainWindow.cpp" line="1661"/>
+ <location filename="../../MainWindow.ui" line="1328"/>
+ <location filename="../../MainWindow.cpp" line="2027"/>
<source>Add existing working copy</source>
<translation>既存の作業コピーを追加</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1264"/>
- <location filename="../../MainWindow.ui" line="1267"/>
+ <location filename="../../MainWindow.ui" line="1333"/>
+ <location filename="../../MainWindow.ui" line="1336"/>
<source>Refresh</source>
<translation>更新</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1270"/>
+ <location filename="../../MainWindow.ui" line="1339"/>
<source>F5</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1279"/>
+ <location filename="../../MainWindow.ui" line="1348"/>
<source>&Commit</source>
<translation>コミット(&C)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1288"/>
+ <location filename="../../MainWindow.ui" line="1357"/>
<source>&Push</source>
<translation>プッシュ(&P)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1296"/>
+ <location filename="../../MainWindow.ui" line="1365"/>
<source>test</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1299"/>
+ <location filename="../../MainWindow.ui" line="1368"/>
<source>Ctrl+T</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1308"/>
+ <location filename="../../MainWindow.ui" line="1377"/>
<source>Pu&ll</source>
<translation>プル(&L)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1317"/>
+ <location filename="../../MainWindow.ui" line="1386"/>
<source>&Fetch</source>
<translation>フェッチ(&F)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1322"/>
- <location filename="../../MainWindow.ui" line="1325"/>
+ <location filename="../../MainWindow.ui" line="1391"/>
+ <location filename="../../MainWindow.ui" line="1394"/>
<source>Edit global .gitconfig</source>
<translation>グローバル .gitignore を編集</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1330"/>
+ <location filename="../../MainWindow.ui" line="1399"/>
<source>Edit .git/config</source>
<translation>.git/config を編集</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1335"/>
+ <location filename="../../MainWindow.ui" line="1404"/>
<source>Edit .gitignore</source>
<translation>.gitignore を編集</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1340"/>
+ <location filename="../../MainWindow.ui" line="1409"/>
<source>&Settings...</source>
<translation>設定(&S)...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1391"/>
+ <location filename="../../MainWindow.ui" line="1458"/>
+ <source>F4</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1463"/>
<source>&Jump...</source>
<translation>移動(&J)...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1394"/>
+ <location filename="../../MainWindow.ui" line="1466"/>
<source>Ctrl+J</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1399"/>
+ <location filename="../../MainWindow.ui" line="1471"/>
<source>Check&out...</source>
<translation>チェックアウト(&O)...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1404"/>
- <location filename="../../MainWindow.cpp" line="1344"/>
+ <location filename="../../MainWindow.ui" line="1476"/>
+ <location filename="../../MainWindow.cpp" line="1600"/>
<source>Delete branch...</source>
<translation>ブランチの削除...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1505"/>
+ <location filename="../../MainWindow.ui" line="1577"/>
<source>Apply</source>
<translation>適用</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1510"/>
+ <location filename="../../MainWindow.ui" line="1582"/>
<source>Drop</source>
<translation>破棄</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1528"/>
+ <location filename="../../MainWindow.ui" line="1600"/>
<source>Repositories panel</source>
<translation>リポジトリパネル</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1531"/>
+ <location filename="../../MainWindow.ui" line="1603"/>
<source>Ctrl+R</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1414"/>
- <location filename="../../MainWindow.ui" line="1417"/>
+ <location filename="../../MainWindow.ui" line="1608"/>
+ <source>&Find...</source>
+ <translation>検索(&F)...</translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1611"/>
+ <source>Ctrl+F</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1616"/>
+ <source>Find next</source>
+ <translation>次を検索</translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1619"/>
+ <source>F3</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1633"/>
+ <source>Jump to &HEAD</source>
+ <translation>HEADへ移動(&H)</translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1636"/>
+ <source>Ctrl+H</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1641"/>
+ <source>Merge...</source>
+ <translation>マージ...</translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1646"/>
+ <source>Expand commit log</source>
+ <translation>コミットログを展開</translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1649"/>
+ <source>Ctrl+2</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1654"/>
+ <source>Expand file list</source>
+ <translation>ファイルリストを展開</translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1657"/>
+ <source>Ctrl+3</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1662"/>
+ <source>Expand diff view</source>
+ <translation>差分ビューを展開</translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1665"/>
+ <source>Ctrl+4</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1670"/>
+ <source>Sidebar</source>
+ <translation>サイドバー</translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1673"/>
+ <source>F1</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1678"/>
+ <source>Wide</source>
+ <translation>広げる</translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1681"/>
+ <source>F2</source>
+ <translation></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1486"/>
+ <location filename="../../MainWindow.ui" line="1489"/>
<source>Reset HEAD~1</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1462"/>
- <location filename="../../MainWindow.cpp" line="1345"/>
+ <location filename="../../MainWindow.ui" line="1534"/>
+ <location filename="../../MainWindow.cpp" line="1601"/>
<source>Delete remote branch...</source>
<translation>リモートブランチの削除...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1360"/>
+ <location filename="../../MainWindow.ui" line="1429"/>
<source>&About</source>
<translation>Guitarについて(&A)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1373"/>
+ <location filename="../../MainWindow.ui" line="1442"/>
<source>Push all tags</source>
<translation>全てのタグをプッシュ</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1378"/>
+ <location filename="../../MainWindow.ui" line="1447"/>
<source>Set config user</source>
<translation>ユーザー情報を設定</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1386"/>
+ <location filename="../../MainWindow.ui" line="1455"/>
<source>&Log</source>
<translation>ログ(&L)</translation>
</message>
<message>
<source>Unnamed</source>
<translation type="vanished">無名</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="643"/>
+ <location filename="../../MainWindow.cpp" line="679"/>
<source>Default</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="840"/>
+ <location filename="../../MainWindow.cpp" line="878"/>
<source>Graph</source>
<translation>樹形図</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="842"/>
+ <location filename="../../MainWindow.cpp" line="880"/>
<source>Date</source>
<translation>日付</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="843"/>
+ <location filename="../../MainWindow.cpp" line="881"/>
<source>Author</source>
<translation>名前</translation>
</message>
<message>
<source>Description</source>
<translation type="vanished">概要</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="990"/>
- <location filename="../../MainWindow.cpp" line="1119"/>
+ <location filename="../../MainWindow.cpp" line="1029"/>
+ <location filename="../../MainWindow.cpp" line="1199"/>
<source>Uncommited changes</source>
<translation>コミットされていない変更があります</translation>
</message>
<message>
<source>Are you sure you want to remove the repository from bookmarks ?</source>
<translation type="vanished">リポジトリをブックマークから削除してよろしいですか?</translation>
</message>
<message>
<source>(Files will NOT be deleted)</source>
<translation type="vanished">(ファルは削除されません)</translation>
</message>
<message>
<source>Open Repository</source>
<translation type="vanished">リポジトリを開く</translation>
</message>
<message>
<source>No such folder</source>
<translation type="vanished">そのようなフォルダはありません</translation>
</message>
<message>
<source>Not a valid git repository</source>
<translation type="vanished">有効なリポジトリではありません</translation>
</message>
<message>
<source>Commit message can not be omitted.</source>
<translation type="vanished">コミットメッセージを空にすることはできません。</translation>
</message>
<message>
<source>Repository Property</source>
<translation type="vanished">リポジトリのプロパティ</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1222"/>
+ <location filename="../../MainWindow.cpp" line="1457"/>
<source>&Add new group</source>
<translation>新しいグループを追加(&A)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1223"/>
+ <location filename="../../MainWindow.cpp" line="1458"/>
<source>&Delete group</source>
<translation>グループを削除(&D)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1224"/>
+ <location filename="../../MainWindow.cpp" line="1459"/>
<source>&Rename group</source>
<translation>グループ名の変更(&R)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1229"/>
+ <location filename="../../MainWindow.cpp" line="1464"/>
<source>New group</source>
<translation>新しいグループ</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1253"/>
+ <location filename="../../MainWindow.cpp" line="1488"/>
<source>Open &terminal</source>
<translation>端末を開く(&T)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1254"/>
+ <location filename="../../MainWindow.cpp" line="1489"/>
<source>Open command promp&t</source>
<translation>コマンドプロンプトを開く(&T)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1256"/>
+ <location filename="../../MainWindow.cpp" line="1491"/>
<source>&Open</source>
<translation>開く(&O)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1267"/>
+ <location filename="../../MainWindow.cpp" line="1502"/>
<source>Open &folder</source>
<translation>フォルダを開く(&F)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1272"/>
+ <location filename="../../MainWindow.cpp" line="1507"/>
<source>&Remove</source>
<translation>削除(&R)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1315"/>
+ <location filename="../../MainWindow.cpp" line="1550"/>
<source>Copy commit id (7 letters)</source>
<translation>コミットIDをコピー(7文字)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1316"/>
+ <location filename="../../MainWindow.cpp" line="1551"/>
<source>Copy commit id (completely)</source>
<translation>コミットIDをコピー(すべて)</translation>
</message>
<message>
<source>Edit comment...</source>
<translation type="vanished">コメントを編集...</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1330"/>
- <location filename="../../MainWindow.cpp" line="2134"/>
+ <location filename="../../MainWindow.cpp" line="1242"/>
+ <location filename="../../MainWindow.cpp" line="1593"/>
<source>Rebase</source>
<translation>リベース</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1349"/>
+ <location filename="../../MainWindow.cpp" line="1605"/>
<source>Explore</source>
<translation>探索</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1338"/>
<source>Reset HEAD</source>
- <translation>HEADをリセット</translation>
+ <translation type="vanished">HEADをリセット</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="844"/>
+ <location filename="../../MainWindow.cpp" line="882"/>
<source>Message</source>
<translation>メッセージ</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1424"/>
- <location filename="../../MainWindow.cpp" line="1473"/>
- <location filename="../../MainWindow.cpp" line="1599"/>
+ <location filename="../../MainWindow.cpp" line="1679"/>
+ <location filename="../../MainWindow.cpp" line="1728"/>
+ <location filename="../../MainWindow.cpp" line="1854"/>
<source>History</source>
<translation>履歴</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="2092"/>
- <location filename="../../MainWindow.cpp" line="2106"/>
+ <location filename="../../MainWindow.cpp" line="2436"/>
+ <location filename="../../MainWindow.cpp" line="2450"/>
<source>No such commit</source>
<translation>そのようなコミットはありません</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="2204"/>
- <location filename="../../MainWindow.cpp" line="2205"/>
+ <location filename="../../MainWindow.cpp" line="1143"/>
+ <location filename="../../MainWindow.cpp" line="1144"/>
<source>Update</source>
<translation>更新</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="2485"/>
+ <location filename="../../MainWindow.cpp" line="2762"/>
<source>Authentication Failed</source>
<translation>認証が失敗しました</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1333"/>
+ <location filename="../../MainWindow.cpp" line="1596"/>
<source>Revert</source>
<translation>変更を破棄する</translation>
</message>
<message>
<source>Failed to commit</source>
<translation type="vanished">コミット失敗</translation>
</message>
<message>
<source>No remote repository is registered.</source>
<translation type="vanished">リモートリポジトリが登録されていません。</translation>
</message>
<message>
<source>The current branch %1 has no upstream branch.</source>
<translation type="vanished">現在のブランチ「%1」には上流ブランチがありません。</translation>
</message>
<message>
<source>You try push --set-upstream</source>
<translation type="vanished">--set-upstream を試してください</translation>
</message>
<message>
<source>Connection refused.</source>
<translation type="vanished">接続が拒否されました。</translation>
</message>
<message>
<source>&Property</source>
<translation type="vanished">プロパティ(&P)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1320"/>
+ <location filename="../../MainWindow.cpp" line="1567"/>
<source>Checkout/Branch...</source>
<translation>チェックアウト/ブランチ...</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1326"/>
+ <location filename="../../MainWindow.cpp" line="1589"/>
<source>Edit message...</source>
<translation>メッセージの編集...</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1329"/>
+ <location filename="../../MainWindow.cpp" line="1592"/>
<source>Merge</source>
<translation>マージ</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1331"/>
+ <location filename="../../MainWindow.cpp" line="1594"/>
<source>Cherry-pick</source>
<translation>チェリーピック</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1423"/>
- <location filename="../../MainWindow.cpp" line="1472"/>
+ <location filename="../../MainWindow.cpp" line="1678"/>
+ <location filename="../../MainWindow.cpp" line="1727"/>
<source>Untrack</source>
<translation>追跡しない</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1425"/>
- <location filename="../../MainWindow.cpp" line="1474"/>
- <location filename="../../MainWindow.cpp" line="1600"/>
+ <location filename="../../MainWindow.cpp" line="1680"/>
+ <location filename="../../MainWindow.cpp" line="1729"/>
+ <location filename="../../MainWindow.cpp" line="1855"/>
<source>Blame</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1433"/>
+ <location filename="../../MainWindow.cpp" line="1688"/>
<source>Delete selected files.</source>
<translation>選択されたファイルを削除します。</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1444"/>
+ <location filename="../../MainWindow.cpp" line="1699"/>
<source>rm --cached files</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1469"/>
+ <location filename="../../MainWindow.cpp" line="1724"/>
<source>Reset</source>
<translation>リセット</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1470"/>
+ <location filename="../../MainWindow.cpp" line="1725"/>
<source>Ignore</source>
<translation>無視する</translation>
</message>
<message>
<source>Reset a file</source>
<translation type="vanished">ファイルをリセットします</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="2131"/>
+ <location filename="../../MainWindow.cpp" line="1239"/>
<source>Are you sure you want to rebase the commit ?</source>
<translation>コミットをリベースしてよろしいですか?</translation>
</message>
<message>
<source>No repository selected</source>
<translation type="vanished">リポジトリが選択されていません</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1422"/>
- <location filename="../../MainWindow.cpp" line="1471"/>
+ <location filename="../../MainWindow.cpp" line="1677"/>
+ <location filename="../../MainWindow.cpp" line="1726"/>
<source>Delete</source>
<translation>削除</translation>
</message>
<message>
<source>Are you sure you want to run the following command ?</source>
<translation type="vanished">次のコマンドを実行してよろしいですか?</translation>
</message>
<message>
<source>Revert all files</source>
<translation type="vanished">すべてのファイルの変更を破棄</translation>
</message>
<message>
<source>Select %1 command</source>
<translation type="vanished">%1 コマンドの選択</translation>
</message>
<message>
<source>A file with same name already exists</source>
<translation type="vanished">同じ名前のファイルが既に存在しています</translation>
</message>
<message>
<source>A folder with same name already exists</source>
<translation type="vanished">同じ名前のフォルダが既に存在しています</translation>
</message>
<message>
<source>Invalid folder</source>
<translation type="vanished">無効なフォルダ</translation>
</message>
<message>
<source>No such folder. Create it now ?</source>
<translation type="vanished">このフォルダはありません。作成しますか?</translation>
</message>
<message>
<source>The URL is a valid repository</source>
<translation type="vanished">このURLは有効なリポジトリです</translation>
</message>
<message>
<source>Failed to access the URL</source>
<translation type="vanished">このURLへのアクセスに失敗しました</translation>
</message>
<message>
<source>Remote Repository</source>
<translation type="vanished">リモートリポジトリ</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="2092"/>
- <location filename="../../MainWindow.cpp" line="2106"/>
+ <location filename="../../MainWindow.cpp" line="2436"/>
+ <location filename="../../MainWindow.cpp" line="2450"/>
<source>Jump</source>
<translation>移動</translation>
</message>
<message>
<source>That commmit has not foud or not read yet</source>
<translation type="vanished">そのコミットは、見つからないか、まだ読み込まれていません</translation>
</message>
<message>
<source>Failed to delete the branch '%1'
</source>
<translation type="vanished">ブランチの削除に失敗しました : '%1'</translation>
</message>
</context>
<context>
<name>MergeBranchDialog</name>
<message>
- <location filename="../../MergeBranchDialog.ui" line="14"/>
<source>Merge</source>
- <translation>マージ</translation>
+ <translation type="vanished">マージ</translation>
</message>
<message>
- <location filename="../../MergeBranchDialog.ui" line="26"/>
<source>Current branch :</source>
- <translation>現在のブランチ :</translation>
+ <translation type="vanished">現在のブランチ :</translation>
</message>
<message>
- <location filename="../../MergeBranchDialog.ui" line="39"/>
- <source>TextLabel</source>
- <translation></translation>
+ <source>Cancel</source>
+ <translation type="vanished">キャンセル</translation>
+ </message>
+</context>
+<context>
+ <name>MergeDialog</name>
+ <message>
+ <location filename="../../MergeDialog.ui" line="14"/>
+ <source>Merge</source>
+ <translation>マージ</translation>
</message>
<message>
- <location filename="../../MergeBranchDialog.ui" line="62"/>
+ <location filename="../../MergeDialog.ui" line="20"/>
+ <source>Fast Forwarding</source>
+ <translation>ファストフォワーディング</translation>
+ </message>
+ <message>
+ <location filename="../../MergeDialog.ui" line="26"/>
+ <source>Default (--ff)</source>
+ <translation>規定 (--ff)</translation>
+ </message>
+ <message>
+ <location filename="../../MergeDialog.ui" line="33"/>
+ <source>No fast forward (--no-ff)</source>
+ <translation>ファストフォワードしない (--no-ff)</translation>
+ </message>
+ <message>
+ <location filename="../../MergeDialog.ui" line="40"/>
+ <source>Fast forward only (--ff-only)</source>
+ <translation>ファストフォワードのみ (--ff-only)</translation>
+ </message>
+ <message>
+ <location filename="../../MergeDialog.ui" line="50"/>
+ <source>From</source>
+ <translation>元</translation>
+ </message>
+ <message>
+ <location filename="../../MergeDialog.ui" line="77"/>
<source>OK</source>
<translation></translation>
</message>
<message>
- <location filename="../../MergeBranchDialog.ui" line="75"/>
+ <location filename="../../MergeDialog.ui" line="84"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
</context>
<context>
<name>MyImageViewWidget</name>
<message>
<location filename="../../MyImageViewWidget.cpp" line="34"/>
<source>Save as...</source>
<translation>名前を付けて保存...</translation>
</message>
<message>
<location filename="../../MyImageViewWidget.cpp" line="42"/>
<source>Save as</source>
<translation>名前を付けて保存</translation>
</message>
</context>
<context>
<name>MyTextEditorWidget</name>
<message>
<location filename="../../MyTextEditorWidget.cpp" line="35"/>
<source>Save as...</source>
<translation>名前を付けて保存...</translation>
</message>
<message>
<location filename="../../MyTextEditorWidget.cpp" line="36"/>
<source>Copy</source>
<translation>コピー</translation>
</message>
<message>
<location filename="../../MyTextEditorWidget.cpp" line="43"/>
<source>Save as</source>
<translation>名前を付けて保存</translation>
</message>
</context>
<context>
<name>ObjectBrowserDialog</name>
<message>
<location filename="../../ObjectBrowserDialog.ui" line="14"/>
<source>Object Browser</source>
<translation>オブジェクトブラウザ</translation>
</message>
<message>
<location filename="../../ObjectBrowserDialog.ui" line="38"/>
<source>Inspect</source>
<translation>調査</translation>
</message>
<message>
<location filename="../../ObjectBrowserDialog.ui" line="58"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../ObjectBrowserDialog.ui" line="65"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
<message>
<location filename="../../ObjectBrowserDialog.cpp" line="23"/>
<source>ID</source>
<translation></translation>
</message>
<message>
<location filename="../../ObjectBrowserDialog.cpp" line="24"/>
<source>Type</source>
<translation>種類</translation>
</message>
<message>
<location filename="../../ObjectBrowserDialog.cpp" line="119"/>
<source>Object Inspection</source>
<translation>オブジェクトの調査</translation>
</message>
</context>
<context>
<name>PushDialog</name>
<message>
<location filename="../../PushDialog.ui" line="14"/>
<source>Push</source>
<translation>プッシュ</translation>
</message>
<message>
<location filename="../../PushDialog.ui" line="20"/>
<source>push --set-upstream</source>
<translation></translation>
</message>
<message>
<location filename="../../PushDialog.ui" line="26"/>
<source>Remote</source>
<translation>リモート</translation>
</message>
<message>
<location filename="../../PushDialog.ui" line="33"/>
<source>Branch</source>
<translation>ブランチ</translation>
</message>
<message>
<location filename="../../PushDialog.ui" line="64"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../PushDialog.ui" line="71"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
</context>
<context>
<name>RebaseOntoDialog</name>
<message>
<source>Branch</source>
<translation type="vanished">ブランチ</translation>
</message>
<message>
<source>Cancel</source>
<translation type="vanished">キャンセル</translation>
</message>
</context>
<context>
<name>ReflogWindow</name>
<message>
<location filename="../../ReflogWindow.ui" line="14"/>
<source>Reflog</source>
<translation></translation>
</message>
<message>
<location filename="../../ReflogWindow.ui" line="57"/>
<source>Close</source>
<translation>閉じる</translation>
</message>
<message>
<location filename="../../ReflogWindow.cpp" line="35"/>
<source>Commit</source>
<translation>コミット</translation>
</message>
<message>
<location filename="../../ReflogWindow.cpp" line="36"/>
<source>Head</source>
<translation>ヘッド</translation>
</message>
<message>
<location filename="../../ReflogWindow.cpp" line="37"/>
<source>Command</source>
<translation>コマンド</translation>
</message>
<message>
<location filename="../../ReflogWindow.cpp" line="38"/>
<source>Message</source>
<translation>メッセージ</translation>
</message>
<message>
<source>Comment</source>
<translation type="vanished">コメント</translation>
</message>
<message>
<location filename="../../ReflogWindow.cpp" line="98"/>
<source>Checkout</source>
<translation>チェックアウト</translation>
</message>
<message>
<location filename="../../ReflogWindow.cpp" line="99"/>
<source>Explorer</source>
<translation>エクスプローラ</translation>
</message>
</context>
<context>
<name>RemoteRepositoriesTableWidget</name>
<message>
<location filename="../../RemoteRepositoriesTableWidget.cpp" line="27"/>
<source>Copy URL</source>
<translation>URLをコピー</translation>
</message>
</context>
<context>
<name>RepositoryPropertyDialog</name>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="14"/>
<source>Repository Property</source>
<oldsource>Repository Properties</oldsource>
<translation>リポジトリのプロパティ</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="65"/>
<source>TextLabel</source>
<translation></translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="95"/>
<source>Local dir :</source>
<translation>ローカルフォルダ :</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="114"/>
<source>Remote URLs</source>
<translation>リモートURL</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="124"/>
<source>Remote</source>
<translation>リモート</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="130"/>
<source>Add</source>
<translation>追加</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="137"/>
<source>Edit</source>
<translation>編集</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="157"/>
<source>Remove</source>
<translation>削除</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="169"/>
<source>&Remote menu</source>
<translation>リモートメニュー(&R)</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="189"/>
<source>Close</source>
<translation>閉じる</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.cpp" line="131"/>
<source>Confirm Remove</source>
<translation>削除の確認</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.cpp" line="131"/>
<source>Are you sure you want to remove the remote '%1' from the repository '%2' ?</source>
<translation>リポジトリ「%2」からリモート「%1」を削除してよろしいですか?</translation>
</message>
</context>
<context>
<name>SearchFromGitHubDialog</name>
<message>
<location filename="../../SearchFromGitHubDialog.ui" line="14"/>
<source>Search From GitHub</source>
<translation>GitHubから検索</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.ui" line="25"/>
<source>Search</source>
<translation>検索</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.ui" line="78"/>
<source>ssh</source>
<translation></translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.ui" line="88"/>
<source>http</source>
<translation></translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.ui" line="115"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.ui" line="122"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.cpp" line="56"/>
<source>Name</source>
<translation>名前</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.cpp" line="57"/>
<source>Owner</source>
<translation>オーナー</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.cpp" line="58"/>
<source>Score</source>
<translation>スコア</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.cpp" line="59"/>
<source>Description</source>
<translation>概要</translation>
</message>
</context>
<context>
<name>SelectCommandDialog</name>
<message>
<location filename="../../SelectCommandDialog.ui" line="14"/>
<source>Select git command</source>
<translation>git コマンドの選択</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.ui" line="20"/>
<source>TextLabel</source>
<translation></translation>
</message>
<message>
<location filename="../../SelectCommandDialog.ui" line="32"/>
<source>&Browse...</source>
<translation>参照(&B)...</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.ui" line="52"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../SelectCommandDialog.ui" line="59"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.cpp" line="29"/>
<source>Please select the '%1' command you want to use.</source>
<translation>使用したい '%1' コマンドを選択してください。</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.cpp" line="58"/>
<location filename="../../SelectCommandDialog.cpp" line="65"/>
<source>%1 command (%2);;</source>
<translation>%1 コマンド (%2);;</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.cpp" line="60"/>
<source>Executable files (*.exe)</source>
<translation>実行可能ファイル (*.exe)</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.cpp" line="71"/>
<source>%1 command</source>
<translation>%1 コマンド</translation>
</message>
</context>
<context>
<name>SelectGpgKeyDialog</name>
<message>
<location filename="../../SelectGpgKeyDialog.ui" line="14"/>
<source>Select GPG Key</source>
<translation>GPGキーの選択</translation>
</message>
<message>
<location filename="../../SelectGpgKeyDialog.ui" line="57"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../SelectGpgKeyDialog.ui" line="64"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
<message>
<location filename="../../SelectGpgKeyDialog.cpp" line="31"/>
<source>ID</source>
<translation></translation>
</message>
<message>
<location filename="../../SelectGpgKeyDialog.cpp" line="32"/>
<source>Name</source>
<translation>名前</translation>
</message>
<message>
<location filename="../../SelectGpgKeyDialog.cpp" line="33"/>
<source>Mail</source>
<translation>メール</translation>
</message>
</context>
<context>
<name>SelectItemDialog</name>
<message>
<location filename="../../SelectItemDialog.ui" line="14"/>
<source>Dialog</source>
<translation></translation>
</message>
<message>
<location filename="../../SelectItemDialog.ui" line="25"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../SelectItemDialog.ui" line="32"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
</context>
<context>
<name>SetGlobalUserDialog</name>
<message>
<location filename="../../SetGlobalUserDialog.ui" line="14"/>
<source>Global User Setting</source>
<translation>グローバルユーザー設定</translation>
</message>
<message>
<location filename="../../SetGlobalUserDialog.ui" line="31"/>
<source>Name</source>
<translation>名前</translation>
</message>
<message>
<location filename="../../SetGlobalUserDialog.ui" line="41"/>
<source>Mail</source>
<translation>メール</translation>
</message>
<message>
<location filename="../../SetGlobalUserDialog.ui" line="68"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../SetGlobalUserDialog.ui" line="78"/>
<source>Skip</source>
<translation>スキップ</translation>
</message>
</context>
<context>
<name>SetGpgSigningDialog</name>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="14"/>
<source>Set GPG Signing</source>
<translation>GPG署名の指定</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="26"/>
<source>Global</source>
<translation>グローバル</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="39"/>
<location filename="../../SetGpgSigningDialog.cpp" line="29"/>
<source>Repository</source>
<translation>リポジトリ</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="61"/>
<source>ID</source>
<translation></translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="71"/>
<source>Name</source>
<translation>名前</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="81"/>
<source>Mail</source>
<translation>メール</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="93"/>
<source>Select</source>
<translation>選択</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="113"/>
<source>Clear</source>
<translation>消去</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="127"/>
<source>Configure...</source>
<translation>設定...</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="147"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="154"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
</context>
<context>
<name>SetRemoteUrlDialog</name>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="14"/>
<source>Set Remote URL</source>
<translation>リモートURLの設定</translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="20"/>
<source>Current URLs</source>
<translation>現在のURL</translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="30"/>
<source>New URL</source>
<translation>新しいURL</translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="36"/>
<source>Name</source>
<translation>名前</translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="91"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="98"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="43"/>
<source>URL</source>
<translation></translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="63"/>
<source>&Test</source>
<translation>テスト(&T)</translation>
</message>
</context>
<context>
<name>SetUserDialog</name>
<message>
<location filename="../../SetUserDialog.ui" line="14"/>
<source>Set User</source>
<translation>ユーザーの設定</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="20"/>
<source>Global</source>
<translation>グローバル</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="27"/>
<location filename="../../SetUserDialog.cpp" line="31"/>
<source>Repository</source>
<translation>リポジトリ</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="42"/>
<source>Name</source>
<translation>名前</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="52"/>
<source>Mail</source>
<translation>メール</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="66"/>
<source>Get icon from Gravatar</source>
<translation>Gravatarからアイコンを取得</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="122"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="132"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
</context>
<context>
<name>SettingBehaviorForm</name>
<message>
<location filename="../../SettingBehaviorForm.ui" line="14"/>
<source>Behavior</source>
<translation>動作</translation>
</message>
<message>
<location filename="../../SettingBehaviorForm.ui" line="20"/>
- <location filename="../../SettingBehaviorForm.cpp" line="77"/>
+ <location filename="../../SettingBehaviorForm.cpp" line="43"/>
<source>Default working folder</source>
<translation>既定の作業フォルダ</translation>
</message>
<message>
<location filename="../../SettingBehaviorForm.ui" line="29"/>
<source>Browse...</source>
<translation>参照...</translation>
</message>
<message>
<location filename="../../SettingBehaviorForm.ui" line="39"/>
<source>Automatically fetch when opening the repository</source>
<translation>リポジトリを開くとき自動的にフェッチする</translation>
</message>
<message>
<location filename="../../SettingBehaviorForm.ui" line="46"/>
<source>Get committer's icon from gravatar.com</source>
<translation>gravatar.comからアイコンを取得する</translation>
</message>
<message>
<location filename="../../SettingBehaviorForm.ui" line="61"/>
<source>Maximum number of commit item acquisitions</source>
<translation>取得するコミット情報の最大個数</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.ui" line="88"/>
<source>Watch remote changes periodically</source>
<oldsource>Periodically watch remote updates</oldsource>
- <translation>定期的リモートの変更を監視する</translation>
+ <translation type="vanished">定期的リモートの変更を監視する</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.ui" line="108"/>
<source>interval</source>
<oldsource>interval in min:</oldsource>
- <translation>間隔</translation>
+ <translation type="vanished">間隔</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.ui" line="128"/>
+ <location filename="../../SettingBehaviorForm.ui" line="94"/>
<source>GPG signing policy</source>
<oldsource>GPG Signing Policy</oldsource>
<translation>GPG署名ポリシー</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.ui" line="135"/>
+ <location filename="../../SettingBehaviorForm.ui" line="101"/>
<source>Configure...</source>
<translation>設定...</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.cpp" line="38"/>
<source>Disable</source>
- <translation>無効</translation>
+ <translation type="vanished">無効</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.cpp" line="40"/>
<source>1 min</source>
- <translation>1分</translation>
+ <translation type="vanished">1分</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.cpp" line="42"/>
<source>%1 mins</source>
- <translation>%1分</translation>
+ <translation type="vanished">%1分</translation>
</message>
</context>
<context>
<name>SettingExampleForm</name>
<message>
<location filename="../../SettingExampleForm.ui" line="14"/>
<source>Example</source>
<translation></translation>
</message>
<message>
<location filename="../../SettingExampleForm.ui" line="20"/>
<source>Underconstruction</source>
<translation></translation>
</message>
</context>
<context>
<name>SettingGeneralForm</name>
<message>
<location filename="../../SettingGeneralForm.ui" line="14"/>
<source>General</source>
<translation>一般</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="20"/>
<source>Language</source>
<translation>言語</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="31"/>
<source>Change Language...</source>
<translation>言語の変更...</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="54"/>
<source>Change Theme...</source>
<translation>テーマの変更...</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="66"/>
<source>Remember and restore window position</source>
<translation>ウィンドウの位置を記憶し復元する</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="73"/>
<source>Enable high DPI scaling</source>
<translation>高精細画面のスケーリングを行う</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="43"/>
<source>Theme</source>
<translation>テーマ</translation>
</message>
<message>
- <location filename="../../SettingGeneralForm.cpp" line="16"/>
- <source>English</source>
- <translation></translation>
- </message>
- <message>
- <location filename="../../SettingGeneralForm.cpp" line="17"/>
<source>Japanese</source>
- <translation>日本語</translation>
+ <translation type="vanished">日本語</translation>
</message>
<message>
- <location filename="../../SettingGeneralForm.cpp" line="18"/>
<source>Russian</source>
- <translation type="unfinished"></translation>
+ <translation type="vanished">ロシア語</translation>
</message>
<message>
- <location filename="../../SettingGeneralForm.cpp" line="20"/>
+ <location filename="../../SettingGeneralForm.cpp" line="19"/>
<source>Standard</source>
<translation>標準</translation>
</message>
<message>
- <location filename="../../SettingGeneralForm.cpp" line="21"/>
+ <location filename="../../SettingGeneralForm.cpp" line="20"/>
<source>Dark</source>
<translation>ダーク</translation>
</message>
<message>
- <location filename="../../SettingGeneralForm.cpp" line="79"/>
+ <location filename="../../SettingGeneralForm.cpp" line="82"/>
<source>Select Language</source>
<translation>言語の選択</translation>
</message>
<message>
- <location filename="../../SettingGeneralForm.cpp" line="98"/>
+ <location filename="../../SettingGeneralForm.cpp" line="106"/>
<source>Select Theme</source>
<translation>テーマの選択</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="93"/>
<source>(Changes are applied at next run)</source>
<translation>(設定は次の実行時に有効になります)</translation>
</message>
</context>
<context>
<name>SettingNetworkForm</name>
<message>
<location filename="../../SettingNetworkForm.ui" line="14"/>
<source>Network</source>
<translation>ネットワーク</translation>
</message>
<message>
<location filename="../../SettingNetworkForm.ui" line="20"/>
<source>Proxy server</source>
<oldsource>Proxy Server</oldsource>
<translation>プロキシサーバー</translation>
</message>
<message>
<location filename="../../SettingNetworkForm.ui" line="26"/>
<source>No proxy</source>
<oldsource>No Proxy</oldsource>
<translation>プロキシなし</translation>
</message>
<message>
<location filename="../../SettingNetworkForm.ui" line="33"/>
<source>Auto detect</source>
<oldsource>Auto Detect</oldsource>
<translation>自動検出</translation>
</message>
<message>
<location filename="../../SettingNetworkForm.ui" line="40"/>
<source>Manual</source>
<translation>手動</translation>
</message>
</context>
<context>
<name>SettingProgramsForm</name>
<message>
<location filename="../../SettingProgramsForm.ui" line="14"/>
<source>Programs</source>
<translation>プログラム</translation>
</message>
<message>
<location filename="../../SettingProgramsForm.ui" line="20"/>
<source>Git command</source>
<translation>Git コマンド</translation>
</message>
<message>
<location filename="../../SettingProgramsForm.ui" line="29"/>
<location filename="../../SettingProgramsForm.ui" line="48"/>
<location filename="../../SettingProgramsForm.ui" line="67"/>
<source>Browse...</source>
<translation>参照...</translation>
</message>
<message>
<location filename="../../SettingProgramsForm.ui" line="39"/>
<source>File command</source>
<translation>File コマンド</translation>
</message>
<message>
<location filename="../../SettingProgramsForm.ui" line="58"/>
<source>GPG command (option)</source>
<translation>GPGコマンド(オプション)</translation>
</message>
</context>
<context>
<name>SettingsDialog</name>
<message>
<location filename="../../SettingsDialog.ui" line="14"/>
<source>Settings</source>
<translation>設定</translation>
</message>
<message>
<location filename="../../SettingsDialog.ui" line="141"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../SettingsDialog.ui" line="148"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
</context>
<context>
<name>TextEditDialog</name>
<message>
<location filename="../../TextEditDialog.ui" line="14"/>
<source>Dialog</source>
<translation></translation>
</message>
<message>
<location filename="../../TextEditDialog.ui" line="48"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../TextEditDialog.ui" line="58"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
+ <message>
+ <location filename="../../TextEditDialog.cpp" line="29"/>
+ <source>&Close</source>
+ <translation>閉じる(&C)</translation>
+ </message>
+ <message>
+ <location filename="../../TextEditDialog.cpp" line="29"/>
+ <source>Cacnel</source>
+ <translation>キャンセル</translation>
+ </message>
</context>
<context>
<name>WelcomeWizardDialog</name>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="14"/>
<source>Welcome to the Guitar Wizard</source>
<translation>Guitarウィザードへようこそ</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="45"/>
<source>Helper Tools</source>
<translation>ヘルパープログラム</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="61"/>
<location filename="../../WelcomeWizardDialog.ui" line="338"/>
<source>git</source>
<translation></translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="71"/>
<location filename="../../WelcomeWizardDialog.ui" line="88"/>
<location filename="../../WelcomeWizardDialog.ui" line="248"/>
<source>Browse</source>
<translation>参照</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="78"/>
<location filename="../../WelcomeWizardDialog.ui" line="352"/>
<source>file</source>
<translation></translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="120"/>
<source>Global User Information</source>
<translation>グローバルユーザー情報</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="142"/>
<source>git config --global user.name</source>
<translation></translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="152"/>
<source>git config --global user.email</source>
<translation></translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="168"/>
<source>Get icon from Gravatar</source>
<translation>Gravatarからアイコンを取得</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="222"/>
- <location filename="../../WelcomeWizardDialog.cpp" line="155"/>
+ <location filename="../../WelcomeWizardDialog.cpp" line="163"/>
<source>Default Working Folder</source>
<translation>規定の作業フォルダ</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="238"/>
<location filename="../../WelcomeWizardDialog.ui" line="324"/>
<source>folder</source>
<translation>フォルダ</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="280"/>
<source>Ready to play the Guitar !</source>
<translation>Guitarの準備ができました!</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="296"/>
<source>user</source>
<translation>ユーザー</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="310"/>
<source>email</source>
<translation>メール</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="426"/>
- <location filename="../../WelcomeWizardDialog.cpp" line="147"/>
+ <location filename="../../WelcomeWizardDialog.cpp" line="155"/>
<source><< Prev</source>
<translation><< 戻る</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="433"/>
- <location filename="../../WelcomeWizardDialog.cpp" line="148"/>
+ <location filename="../../WelcomeWizardDialog.cpp" line="156"/>
<source>Next >></source>
<translation>次へ >></translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.cpp" line="126"/>
<source>Cancel</source>
<translation>キャンセル</translation>
</message>
<message>
- <location filename="../../WelcomeWizardDialog.cpp" line="145"/>
+ <location filename="../../WelcomeWizardDialog.cpp" line="152"/>
<source>Finish</source>
<translation>完了</translation>
</message>
</context>
</TS>
diff --git a/src/resources/translations/Guitar_ru.qm b/src/resources/translations/Guitar_ru.qm
index 685cba3..9b31be9 100644
Binary files a/src/resources/translations/Guitar_ru.qm and b/src/resources/translations/Guitar_ru.qm differ
diff --git a/src/resources/translations/Guitar_ru.ts b/src/resources/translations/Guitar_ru.ts
index 51ad387..0f5fbcd 100644
--- a/src/resources/translations/Guitar_ru.ts
+++ b/src/resources/translations/Guitar_ru.ts
@@ -1,2645 +1,2982 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="ru_RU">
<context>
<name>AboutDialog</name>
<message>
<location filename="../../AboutDialog.ui" line="14"/>
<source>Dialog</source>
<translation></translation>
</message>
<message>
- <location filename="../../AboutDialog.ui" line="29"/>
- <location filename="../../AboutDialog.ui" line="36"/>
- <location filename="../../AboutDialog.ui" line="43"/>
- <location filename="../../AboutDialog.ui" line="50"/>
+ <location filename="../../AboutDialog.ui" line="34"/>
+ <location filename="../../AboutDialog.ui" line="46"/>
+ <location filename="../../AboutDialog.ui" line="58"/>
+ <location filename="../../AboutDialog.ui" line="70"/>
<source>TextLabel</source>
<translation></translation>
</message>
+ <message>
+ <location filename="../../AboutDialog.ui" line="86"/>
+ <source><a href="https://github.com/soramimi/Guitar">https://github.com/soramimi/Guitar</a></source>
+ <translation type="unfinished"></translation>
+ </message>
<message>
<location filename="../../AboutDialog.cpp" line="25"/>
<source>About %1</source>
<translation>О %1</translation>
</message>
</context>
<context>
<name>AreYouSureYouWantToContinueConnectingDialog</name>
<message>
<location filename="../../AreYouSureYouWantToContinueConnectingDialog.ui" line="14"/>
<source>Unknown Host</source>
<translation>Узел не найден</translation>
</message>
<message>
<location filename="../../AreYouSureYouWantToContinueConnectingDialog.ui" line="20"/>
<source>Are you sure you want to continue connecting (yes/no)?</source>
<translation>Повторить попытку соединения? (Да/нет)?</translation>
</message>
<message>
<location filename="../../AreYouSureYouWantToContinueConnectingDialog.ui" line="52"/>
<source>Continue</source>
<translation>Да, продолжить</translation>
</message>
<message>
<location filename="../../AreYouSureYouWantToContinueConnectingDialog.ui" line="59"/>
<source>Close</source>
<translation>Нет, закрыть</translation>
</message>
</context>
<context>
<name>BasicMainWindow</name>
<message>
- <location filename="../../BasicMainWindow.cpp" line="345"/>
+ <location filename="../../BasicMainWindow.cpp" line="261"/>
+ <source>git command not specified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../BasicMainWindow.cpp" line="374"/>
<source>The URL is a valid repository</source>
<translation>URL ссылается на корректный репозиторий</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="346"/>
+ <location filename="../../BasicMainWindow.cpp" line="375"/>
<source>Failed to access the URL</source>
<translation>Нет доступа по URL</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="351"/>
+ <location filename="../../BasicMainWindow.cpp" line="380"/>
<source>Remote Repository</source>
<translation>Репозиторий-истоник</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="376"/>
+ <location filename="../../BasicMainWindow.cpp" line="405"/>
<source>&Property</source>
<translation>&Свойства</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1201"/>
+ <location filename="../../BasicMainWindow.cpp" line="1273"/>
<source>Select %1 command</source>
<translation>Выбор %1 команды</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1380"/>
+ <location filename="../../BasicMainWindow.cpp" line="1452"/>
<source>Revert all files</source>
<translation>Отменить (Revert) изменения во всех файлах</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1520"/>
+ <location filename="../../BasicMainWindow.cpp" line="1610"/>
<source>The folder is not a valid git repository.</source>
<translation>Папка не является репозиторием Git.</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1524"/>
+ <location filename="../../BasicMainWindow.cpp" line="1614"/>
<source>Do you want to initialize it as a git repository ?</source>
<translation>Инициализировать репозиторий Git?</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1525"/>
+ <location filename="../../BasicMainWindow.cpp" line="1615"/>
<source>Initialize Repository</source>
<translation>Инициализировать репозиторий</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1663"/>
+ <location filename="../../BasicMainWindow.cpp" line="1745"/>
<source>No repository selected</source>
<translation>Репозиторий не выбран</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1817"/>
+ <location filename="../../BasicMainWindow.cpp" line="1915"/>
<source>Repository Property</source>
<translation>Свойства репозитория</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1817"/>
- <location filename="../../BasicMainWindow.cpp" line="1919"/>
+ <location filename="../../BasicMainWindow.cpp" line="1915"/>
+ <location filename="../../BasicMainWindow.cpp" line="2017"/>
<source>Not a valid git repository</source>
<translation>Каталог не является репозиторием Git</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1912"/>
- <location filename="../../BasicMainWindow.cpp" line="1919"/>
+ <location filename="../../BasicMainWindow.cpp" line="2010"/>
+ <location filename="../../BasicMainWindow.cpp" line="2017"/>
<source>Open Repository</source>
<translation>Открыть репозиторий</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1912"/>
+ <location filename="../../BasicMainWindow.cpp" line="2010"/>
<source>No such folder</source>
<translation>Каталог не существует</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1912"/>
+ <location filename="../../BasicMainWindow.cpp" line="2010"/>
<source>Remove from bookmark ?</source>
<translation>Удалить из закладок?</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2150"/>
+ <location filename="../../BasicMainWindow.cpp" line="2248"/>
<source>, %1 ahead</source>
<translation>, %1 впереди</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2153"/>
+ <location filename="../../BasicMainWindow.cpp" line="2251"/>
<source>, %1 behind</source>
<translation>, %1 позади</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2174"/>
+ <location filename="../../BasicMainWindow.cpp" line="2272"/>
<source>Confirm Remove</source>
<translation>Подтвердите удаление</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2174"/>
+ <location filename="../../BasicMainWindow.cpp" line="2272"/>
<source>Are you sure you want to remove the repository from bookmarks ?</source>
<translation>Вы точно хотите удалить репозиторий из закладок?</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2174"/>
+ <location filename="../../BasicMainWindow.cpp" line="2272"/>
<source>(Files will NOT be deleted)</source>
<translation>(Файлы НЕ будут удалены)</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2204"/>
+ <location filename="../../BasicMainWindow.cpp" line="2302"/>
<source>A file with same name already exists</source>
<translation>Существует файл с тем же именем</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2205"/>
- <location filename="../../BasicMainWindow.cpp" line="2210"/>
- <location filename="../../BasicMainWindow.cpp" line="2227"/>
- <location filename="../../BasicMainWindow.cpp" line="2232"/>
+ <location filename="../../BasicMainWindow.cpp" line="2303"/>
+ <location filename="../../BasicMainWindow.cpp" line="2308"/>
+ <location filename="../../BasicMainWindow.cpp" line="2325"/>
+ <location filename="../../BasicMainWindow.cpp" line="2330"/>
<source>Clone</source>
<translation>Клонировать (Clone)</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2209"/>
+ <location filename="../../BasicMainWindow.cpp" line="2307"/>
<source>A folder with same name already exists</source>
<translation>Существует папка с тем же именем</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2226"/>
+ <location filename="../../BasicMainWindow.cpp" line="2324"/>
<source>Invalid folder</source>
<translation>Ошибочный каталог</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2231"/>
+ <location filename="../../BasicMainWindow.cpp" line="2329"/>
<source>No such folder. Create it now ?</source>
<translation>Каталог не существует. Создать?</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2291"/>
+ <location filename="../../BasicMainWindow.cpp" line="2398"/>
<source>Commit</source>
<translation>Фиксировать (Commit)</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2291"/>
+ <location filename="../../BasicMainWindow.cpp" line="2398"/>
<source>Commit message can not be omitted.</source>
<translation>Комментарий к фиксации является обязательным.</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2308"/>
+ <location filename="../../BasicMainWindow.cpp" line="2415"/>
<source>Failed to commit</source>
<translation>Не удалось зафиксировать</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2342"/>
- <location filename="../../BasicMainWindow.cpp" line="2426"/>
+ <location filename="../../BasicMainWindow.cpp" line="2449"/>
+ <location filename="../../BasicMainWindow.cpp" line="2533"/>
<source>Connection refused.</source>
<translation>Отказано в соединении.</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2395"/>
+ <location filename="../../BasicMainWindow.cpp" line="2502"/>
<source>No remote repository is registered.</source>
<translation>Репозиторий источника не зарегистрирован.</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2417"/>
+ <location filename="../../BasicMainWindow.cpp" line="2524"/>
<source>The current branch %1 has no upstream branch.</source>
<translation>Текущая ветвь %1 не содержится в источнике.</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2420"/>
+ <location filename="../../BasicMainWindow.cpp" line="2527"/>
<source>You try push --set-upstream</source>
<translation>Попытайтесь отправить (Push) с опцией --set-upstream</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2509"/>
+ <location filename="../../BasicMainWindow.cpp" line="2616"/>
<source>Failed to delete the branch '%1'</source>
<translation>Не удалось удалить ветвь '%1'</translation>
</message>
<message>
<source>Failed to delete the branch '%1'
</source>
<translation type="vanished">ブランチの削除に失敗しました : '%1'</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2573"/>
+ <location filename="../../BasicMainWindow.cpp" line="2680"/>
<source>Are you sure you want to run the following command ?</source>
<translation>Вы точно хотите выполнить следующую команду?</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2594"/>
+ <location filename="../../BasicMainWindow.cpp" line="2701"/>
<source>Reset a file</source>
<translation>Отбросить изменения (Reset) файла</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2608"/>
+ <location filename="../../BasicMainWindow.cpp" line="2715"/>
<source>Unnamed</source>
<translation>Безымянный</translation>
</message>
</context>
<context>
<name>BasicRepositoryDialog</name>
<message>
<location filename="../../BasicRepositoryDialog.cpp" line="66"/>
<source>Name</source>
<translation>Имя</translation>
</message>
<message>
<location filename="../../BasicRepositoryDialog.cpp" line="67"/>
<source>Purpose</source>
<translation>Назначение</translation>
</message>
<message>
<location filename="../../BasicRepositoryDialog.cpp" line="68"/>
<source>URL</source>
<translation></translation>
</message>
</context>
<context>
<name>BigDiffWindow</name>
<message>
<location filename="../../BigDiffWindow.ui" line="14"/>
<source>Diff</source>
<translation></translation>
</message>
</context>
<context>
<name>BlameWindow</name>
<message>
<location filename="../../BlameWindow.ui" line="14"/>
<source>Blame</source>
<translation></translation>
</message>
<message>
<location filename="../../BlameWindow.ui" line="45"/>
<source>Information</source>
<translation>Информация</translation>
</message>
<message>
<location filename="../../BlameWindow.ui" line="60"/>
<source>Commit</source>
<translation>Фиксация (Commit)</translation>
</message>
<message>
<location filename="../../BlameWindow.ui" line="70"/>
<source>Date</source>
<translation>Дата</translation>
</message>
<message>
<location filename="../../BlameWindow.ui" line="90"/>
<source>Message</source>
<translation>Комментарий</translation>
</message>
<message>
<location filename="../../BlameWindow.ui" line="80"/>
<source>Author</source>
<translation>Автор</translation>
</message>
<message>
<location filename="../../BlameWindow.ui" line="118"/>
<source>Close</source>
<translation>Закрыть</translation>
</message>
</context>
<context>
<name>CheckoutDialog</name>
<message>
<location filename="../../CheckoutDialog.ui" line="14"/>
<source>Checkout</source>
<translation>Проверка (Checkout)</translation>
</message>
<message>
<location filename="../../CheckoutDialog.ui" line="20"/>
<location filename="../../CheckoutDialog.ui" line="27"/>
<location filename="../../CheckoutDialog.ui" line="34"/>
<source>RadioButton</source>
<translation></translation>
</message>
<message>
<location filename="../../CheckoutDialog.ui" line="63"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../CheckoutDialog.ui" line="70"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
</context>
+<context>
+ <name>CherryPickDialog</name>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="14"/>
+ <source>Cherry-pick</source>
+ <translation type="unfinished">Выборочное применение (Cherry-pick)</translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="20"/>
+ <source>HEAD</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="49"/>
+ <source>Pick</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="78"/>
+ <source>Mainline</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="109"/>
+ <source>Allow empty</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="131"/>
+ <source>OK</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="138"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.cpp" line="19"/>
+ <source>Commit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.cpp" line="20"/>
+ <source>Date</source>
+ <translation type="unfinished">Дата</translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.cpp" line="21"/>
+ <source>Author</source>
+ <translation type="unfinished">Автор</translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.cpp" line="22"/>
+ <source>Message</source>
+ <translation type="unfinished">Комментарий</translation>
+ </message>
+</context>
<context>
<name>CloneDialog</name>
<message>
<location filename="../../CloneDialog.ui" line="14"/>
<location filename="../../CloneDialog.ui" line="103"/>
<source>Clone</source>
<translation>Клонировать (Clone)</translation>
</message>
<message>
<location filename="../../CloneDialog.ui" line="22"/>
<source>Remote</source>
<translation>Источник</translation>
</message>
<message>
<location filename="../../CloneDialog.ui" line="39"/>
<source>&Test</source>
<translation>&Тестировать</translation>
</message>
<message>
<location filename="../../CloneDialog.ui" line="46"/>
<source>Local</source>
<translation>Локальный</translation>
</message>
<message>
<location filename="../../CloneDialog.ui" line="56"/>
<source>Browse</source>
<translation>Обзор</translation>
</message>
<message>
<location filename="../../CloneDialog.ui" line="83"/>
<source>Open existing local directory...</source>
<translation>Открыть локальную копию...</translation>
</message>
<message>
<location filename="../../CloneDialog.ui" line="113"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
<message>
<location filename="../../CloneDialog.cpp" line="40"/>
<source>Search</source>
<translation>Поиск</translation>
</message>
<message>
<location filename="../../CloneDialog.cpp" line="41"/>
<source>GitHub</source>
<translation></translation>
</message>
<message>
- <location filename="../../CloneDialog.cpp" line="108"/>
+ <location filename="../../CloneDialog.cpp" line="113"/>
<source>Checkout into</source>
<translation>Проверить в</translation>
</message>
<message>
- <location filename="../../CloneDialog.cpp" line="120"/>
+ <location filename="../../CloneDialog.cpp" line="125"/>
<source>Open existing directory</source>
<translation>Открыть существующий каталог</translation>
</message>
</context>
<context>
<name>CloneFromGitHubDialog</name>
<message>
<location filename="../../CloneFromGitHubDialog.ui" line="14"/>
<source>Clone from GitHub</source>
<translation>Клонировать из GitHub</translation>
</message>
<message>
<location filename="../../CloneFromGitHubDialog.ui" line="45"/>
<source>ssh</source>
<translation></translation>
</message>
<message>
<location filename="../../CloneFromGitHubDialog.ui" line="55"/>
<source>http</source>
<translation></translation>
</message>
<message>
<location filename="../../CloneFromGitHubDialog.ui" line="95"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../CloneFromGitHubDialog.ui" line="102"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
</context>
<context>
<name>CommitDialog</name>
<message>
<location filename="../../CommitDialog.ui" line="14"/>
<source>Commit</source>
<translation>Фиксация (Commit)</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="27"/>
<source>TextLabel</source>
<translation></translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="49"/>
<source>Author</source>
<translation>Автор</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="68"/>
<location filename="../../CommitDialog.ui" line="94"/>
<location filename="../../CommitDialog.ui" line="139"/>
<location filename="../../CommitDialog.ui" line="159"/>
<location filename="../../CommitDialog.ui" line="179"/>
<source>---</source>
<translation></translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="75"/>
<location filename="../../CommitDialog.ui" line="166"/>
<source>Mail</source>
<translation></translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="111"/>
<source>GPG Signing</source>
<translation>Подпись GPG</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="126"/>
<source>ID</source>
<translation></translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="146"/>
<source>Name</source>
<translation>Имя</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="189"/>
<source>Configure...</source>
<translation>Настроить...</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="198"/>
<source>Message</source>
<translation>Комментарий</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="223"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="233"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
</context>
<context>
<name>CommitExploreWindow</name>
<message>
<location filename="../../CommitExploreWindow.ui" line="14"/>
<source>Commit Explorer</source>
<translation>Обзор фиксации</translation>
</message>
<message>
<location filename="../../CommitExploreWindow.ui" line="65"/>
<source>Commit ID</source>
<translation>ID фиксации</translation>
</message>
<message>
<location filename="../../CommitExploreWindow.ui" line="82"/>
<source>Date</source>
<translation>Дата</translation>
</message>
<message>
<location filename="../../CommitExploreWindow.ui" line="89"/>
<source>Author</source>
<translation>Автор</translation>
</message>
<message>
<location filename="../../CommitExploreWindow.cpp" line="78"/>
<source>Commit</source>
<translation>Фиксация (Commit)</translation>
</message>
</context>
<context>
<name>CommitPropertyDialog</name>
<message>
<location filename="../../CommitPropertyDialog.ui" line="14"/>
<source>Commit Property</source>
<oldsource>Commit Properties</oldsource>
<translation>Свойства фиксации</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="46"/>
<source>Date</source>
<translation>Дата</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="56"/>
<source>Author</source>
<translation>Автор</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="66"/>
<location filename="../../CommitPropertyDialog.ui" line="196"/>
<source>Mail</source>
<translation></translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="154"/>
<source>GPG Sign</source>
<translation>Подпись GPG</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="176"/>
<source>ID</source>
<translation></translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="186"/>
<source>Name</source>
<translation>Имя</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="233"/>
<source>Commit ID</source>
<translation>ID фиксации</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="243"/>
<source>Parent IDs</source>
<translation>ID родительских фиксаций</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="265"/>
<source>Files...</source>
<translation>Файлы...</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="285"/>
<source>Explorer</source>
<translation>Обзор</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="305"/>
<source>Checkout</source>
<translation>Проверка (Checkout)</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="312"/>
<source>Jump</source>
<translation>Перейти</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="332"/>
<source>Close</source>
<translation>Закрыть</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.cpp" line="60"/>
<source><Unknown></source>
<translation><Неизвестно></translation>
</message>
</context>
<context>
<name>CommitViewWindow</name>
<message>
<location filename="../../CommitViewWindow.ui" line="14"/>
<source>Commit View</source>
<translation>Просмотр фиксации (Commit)</translation>
</message>
<message>
<location filename="../../CommitViewWindow.cpp" line="58"/>
<source>History</source>
<translation>История</translation>
</message>
</context>
<context>
<name>ConfigCredentialHelperDialog</name>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="14"/>
<source>Dialog</source>
<translation></translation>
</message>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="26"/>
<source>wincred</source>
<translation></translation>
</message>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="39"/>
<source>winstore</source>
<translation></translation>
</message>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="52"/>
<source>None</source>
<translation>Нет</translation>
</message>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="65"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="78"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="91"/>
<source>Other</source>
<translation>Другие</translation>
</message>
</context>
<context>
<name>ConfigSigningDialog</name>
<message>
<location filename="../../ConfigSigningDialog.ui" line="14"/>
<source>Signing Policy</source>
<translation>Политика подписания</translation>
</message>
<message>
<location filename="../../ConfigSigningDialog.ui" line="20"/>
<source>Config commit.gpgsign</source>
<translation>Настройка commit.gpgsign</translation>
</message>
<message>
<location filename="../../ConfigSigningDialog.ui" line="32"/>
<source>global</source>
<translation></translation>
</message>
<message>
<location filename="../../ConfigSigningDialog.ui" line="42"/>
<source>local</source>
<translation></translation>
</message>
<message>
<location filename="../../ConfigSigningDialog.ui" line="70"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../ConfigSigningDialog.ui" line="77"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
</context>
<context>
<name>CreateRepositoryDialog</name>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="14"/>
<location filename="../../CreateRepositoryDialog.cpp" line="42"/>
<location filename="../../CreateRepositoryDialog.cpp" line="46"/>
<location filename="../../CreateRepositoryDialog.cpp" line="50"/>
<location filename="../../CreateRepositoryDialog.cpp" line="54"/>
<source>Create Repository</source>
<translation>Создать репозиторий</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="22"/>
<source>Path</source>
<translation>Путь</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="32"/>
<source>Browse</source>
<translation>Обзор</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="54"/>
<source>Bookmark</source>
<translation>Закладка</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="63"/>
<location filename="../../CreateRepositoryDialog.ui" line="88"/>
<source>Name</source>
<translation>Имя</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="76"/>
<source>Remote</source>
<translation>Источник</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="98"/>
<source>URL</source>
<translation></translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="108"/>
<source>Test</source>
<translation>Тестировать</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="146"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="153"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.cpp" line="19"/>
<source>A valid git repository already exists there.</source>
<translation>Репозиторий Git уже существует.</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.cpp" line="42"/>
<location filename="../../CreateRepositoryDialog.cpp" line="50"/>
<source>The specified path is not a directory.</source>
<translation>Путь не является каталогом.</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.cpp" line="54"/>
<source>Remote name is invalid.</source>
<translation>Имя источника некорректно.</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.cpp" line="62"/>
<source>Destination Path</source>
<translation>Путь назначения</translation>
</message>
</context>
<context>
<name>DeleteBranchDialog</name>
<message>
<location filename="../../DeleteBranchDialog.ui" line="14"/>
<source>Delete Branch</source>
<translation>Удалить ветвь</translation>
</message>
<message>
<location filename="../../DeleteBranchDialog.ui" line="25"/>
<source>&All branches</source>
<translation>Все ветви (&A)</translation>
</message>
<message>
<location filename="../../DeleteBranchDialog.ui" line="45"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../DeleteBranchDialog.ui" line="52"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
<message>
<location filename="../../DeleteBranchDialog.cpp" line="23"/>
<source>Delete Remote Branch</source>
<translation>Удалить ветвь в источнике</translation>
</message>
</context>
<context>
<name>DeleteTagsDialog</name>
<message>
<location filename="../../DeleteTagsDialog.ui" line="14"/>
<source>Delete tags</source>
<translation>Удалить тэги</translation>
</message>
<message>
<location filename="../../DeleteTagsDialog.ui" line="32"/>
<source>Check all</source>
<translation>Проверить все</translation>
</message>
<message>
<location filename="../../DeleteTagsDialog.ui" line="52"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../DeleteTagsDialog.ui" line="62"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
</context>
<context>
<name>DoYouWantToInitDialog</name>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="14"/>
<source>Init Repository</source>
<translation>Создать репозиторий</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="20"/>
<source>The folder:</source>
<translation>Каталог:</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="32"/>
<source>is not a valid git working copy.</source>
<translation>не является репозиторием.</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="39"/>
<source>Do you want to init it as a git repository ?</source>
<translation>Инициализировать репозиторий Git?</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="81"/>
<source>Yes, Please init it.</source>
<translation>Да, инициализировать.</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="88"/>
<source>No, Stop it.</source>
<translation>Нет, отменить.</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="140"/>
<source>Please choose option</source>
<translation>Продолжить</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.cpp" line="20"/>
<source>Next...</source>
<translation>Далее...</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.cpp" line="26"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
</context>
<context>
<name>EditGitIgnoreDialog</name>
<message>
<location filename="../../EditGitIgnoreDialog.ui" line="14"/>
<source>Edit Git Ignore</source>
<translation>Редактировать список игнорирования</translation>
</message>
<message>
<location filename="../../EditGitIgnoreDialog.ui" line="20"/>
<location filename="../../EditGitIgnoreDialog.ui" line="27"/>
<location filename="../../EditGitIgnoreDialog.ui" line="34"/>
<location filename="../../EditGitIgnoreDialog.ui" line="41"/>
<source>RadioButton</source>
<translation></translation>
</message>
<message>
<location filename="../../EditGitIgnoreDialog.ui" line="63"/>
<source>Edit the file</source>
<translation>Редактировать</translation>
</message>
<message>
<location filename="../../EditGitIgnoreDialog.ui" line="83"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../EditGitIgnoreDialog.ui" line="90"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
</context>
<context>
<name>EditRemoteDialog</name>
<message>
<location filename="../../EditRemoteDialog.ui" line="14"/>
<source>Edit Remote</source>
<translation>Свойства источника</translation>
</message>
<message>
<location filename="../../EditRemoteDialog.ui" line="20"/>
<source>Remote</source>
<translation>Источник</translation>
</message>
<message>
<location filename="../../EditRemoteDialog.ui" line="26"/>
<source>Name</source>
<translation>Имя</translation>
</message>
<message>
<location filename="../../EditRemoteDialog.ui" line="33"/>
<source>URL</source>
<translation></translation>
</message>
<message>
<location filename="../../EditRemoteDialog.ui" line="53"/>
<source>&Test</source>
<translation>&Проверить</translation>
</message>
<message>
<location filename="../../EditRemoteDialog.ui" line="81"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../EditRemoteDialog.ui" line="88"/>
<source>Close</source>
<translation>Закрыть</translation>
</message>
</context>
<context>
<name>EditTagsDialog</name>
<message>
<location filename="../../EditTagsDialog.ui" line="14"/>
<source>Edit Tags</source>
<translation>Редактор тэгов</translation>
</message>
<message>
<location filename="../../EditTagsDialog.ui" line="41"/>
<source>Add...</source>
<translation>Добавить...</translation>
</message>
<message>
<location filename="../../EditTagsDialog.ui" line="48"/>
<source>Delete</source>
<translation>Удалить</translation>
</message>
<message>
<location filename="../../EditTagsDialog.ui" line="68"/>
<source>Close</source>
<translation>Закрыть</translation>
</message>
</context>
<context>
<name>ExperimentDialog</name>
<message>
<location filename="../../ExperimentDialog.ui" line="14"/>
<source>Dialog</source>
<translation></translation>
</message>
</context>
<context>
<name>FileDiffWidget</name>
<message>
<location filename="../../FileDiffWidget.ui" line="14"/>
<source>Dialog</source>
<translation></translation>
</message>
</context>
<context>
<name>FileHistoryWindow</name>
<message>
<location filename="../../FileHistoryWindow.ui" line="14"/>
<source>File History</source>
<translation>История файла</translation>
</message>
<message>
<location filename="../../FileHistoryWindow.ui" line="20"/>
<location filename="../../FileHistoryWindow.ui" line="27"/>
<source>TextLabel</source>
<translation></translation>
</message>
<message>
- <location filename="../../FileHistoryWindow.cpp" line="112"/>
+ <location filename="../../FileHistoryWindow.cpp" line="111"/>
<source>Commit</source>
<translation>Фиксация (Commit)</translation>
</message>
<message>
- <location filename="../../FileHistoryWindow.cpp" line="113"/>
+ <location filename="../../FileHistoryWindow.cpp" line="112"/>
<source>Date</source>
<translation>Дата</translation>
</message>
<message>
- <location filename="../../FileHistoryWindow.cpp" line="114"/>
+ <location filename="../../FileHistoryWindow.cpp" line="113"/>
<source>Author</source>
<translation>Автор</translation>
</message>
<message>
- <location filename="../../FileHistoryWindow.cpp" line="115"/>
+ <location filename="../../FileHistoryWindow.cpp" line="114"/>
<source>Message</source>
<translation>Комментарий</translation>
</message>
<message>
<source>Description</source>
<translation type="vanished">概要</translation>
</message>
</context>
<context>
<name>FilePropertyDialog</name>
<message>
<location filename="../../FilePropertyDialog.ui" line="14"/>
<source>File Property</source>
<oldsource>File Properties</oldsource>
<translation>Свойства файла</translation>
</message>
<message>
<location filename="../../FilePropertyDialog.ui" line="78"/>
<source>&Close</source>
<translation>&Закрыть</translation>
</message>
</context>
<context>
- <name>FileViewWidget</name>
+ <name>FindCommitDialog</name>
<message>
- <location filename="../../FileViewWidget.cpp" line="31"/>
- <source>Form</source>
- <translation></translation>
+ <location filename="../../FindCommitDialog.ui" line="14"/>
+ <source>Find Commit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FindCommitDialog.ui" line="54"/>
+ <source>OK</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FindCommitDialog.ui" line="61"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
<name>InputNewTagDialog</name>
<message>
<location filename="../../InputNewTagDialog.ui" line="14"/>
<source>Edit tag</source>
<translation>Редактор тэга</translation>
</message>
<message>
<location filename="../../InputNewTagDialog.ui" line="31"/>
<source>Tag</source>
<translation>Тэг</translation>
</message>
<message>
<location filename="../../InputNewTagDialog.ui" line="58"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../InputNewTagDialog.ui" line="65"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
</context>
<context>
<name>JumpDialog</name>
<message>
<location filename="../../JumpDialog.ui" line="14"/>
<source>Jump</source>
<translation>Перейти</translation>
</message>
<message>
<source>Branches and Tags</source>
<translation type="vanished">ブランチとタグ</translation>
</message>
<message>
<source>&Filter</source>
<translation type="vanished">フィルタ(&F)</translation>
</message>
<message>
<source>Find</source>
<translation type="vanished">検索</translation>
</message>
<message>
<source>&Checkout</source>
<translation type="vanished">チェックアウト(&C)</translation>
</message>
<message>
<location filename="../../JumpDialog.ui" line="20"/>
<source>Branch, Tag or Commit-ID :</source>
<translation>Ветвь, Тэг или ID фиксации :</translation>
</message>
<message>
<location filename="../../JumpDialog.ui" line="71"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../JumpDialog.ui" line="81"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
<message>
- <location filename="../../JumpDialog.cpp" line="38"/>
+ <location filename="../../JumpDialog.cpp" line="39"/>
<source>Name</source>
<translation>Имя</translation>
</message>
</context>
+<context>
+ <name>Languages</name>
+ <message>
+ <location filename="../../Languages.cpp" line="6"/>
+ <source>English</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Languages.cpp" line="7"/>
+ <source>Japanese</source>
+ <translation type="unfinished">Японский</translation>
+ </message>
+ <message>
+ <location filename="../../Languages.cpp" line="8"/>
+ <source>Russian</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Languages.cpp" line="9"/>
+ <source>Chinese (Simplified)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Languages.cpp" line="10"/>
+ <source>Chinese (Traditional/Taiwan)</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
<context>
<name>LineEditDialog</name>
<message>
<location filename="../../LineEditDialog.ui" line="14"/>
<source>Dialog</source>
<translation></translation>
</message>
<message>
<location filename="../../LineEditDialog.ui" line="20"/>
<source>TextLabel</source>
<translation></translation>
</message>
<message>
<location filename="../../LineEditDialog.ui" line="45"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../LineEditDialog.ui" line="52"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../../MainWindow.ui" line="14"/>
<source>Guitar</source>
<translation></translation>
</message>
<message>
<location filename="../../MainWindow.ui" line="96"/>
- <location filename="../../MainWindow.ui" line="1352"/>
- <location filename="../../MainWindow.ui" line="1355"/>
+ <location filename="../../MainWindow.ui" line="1421"/>
+ <location filename="../../MainWindow.ui" line="1424"/>
<source>Clone</source>
<translation>Клонировать</translation>
</message>
<message>
<location filename="../../MainWindow.ui" line="131"/>
- <location filename="../../MainWindow.cpp" line="2197"/>
- <location filename="../../MainWindow.cpp" line="2198"/>
+ <location filename="../../MainWindow.cpp" line="1140"/>
+ <location filename="../../MainWindow.cpp" line="1141"/>
<source>Fetch</source>
<translation>Загрузить</translation>
</message>
<message>
<location filename="../../MainWindow.ui" line="166"/>
<source>Pull</source>
<translation>Обновить</translation>
</message>
<message>
<location filename="../../MainWindow.ui" line="201"/>
<source>Push</source>
<translation>Выгрузить</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="252"/>
- <location filename="../../MainWindow.ui" line="1476"/>
+ <location filename="../../MainWindow.ui" line="303"/>
+ <location filename="../../MainWindow.ui" line="1548"/>
<source>Terminal</source>
<translation>Терминал</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="287"/>
- <location filename="../../MainWindow.ui" line="1485"/>
+ <location filename="../../MainWindow.ui" line="338"/>
+ <location filename="../../MainWindow.ui" line="1557"/>
<source>Explorer</source>
<translation>Обзор</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="373"/>
+ <location filename="../../MainWindow.ui" line="424"/>
<source>Repository</source>
<translation>Репозиторий</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="380"/>
+ <location filename="../../MainWindow.ui" line="431"/>
<source>Branch Name</source>
<translation>Имя ветви</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="432"/>
- <location filename="../../MainWindow.ui" line="1520"/>
+ <location filename="../../MainWindow.ui" line="483"/>
+ <location filename="../../MainWindow.ui" line="1592"/>
<source>Offline</source>
<translation>Офлайн</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="422"/>
- <location filename="../../MainWindow.ui" line="1515"/>
+ <location filename="../../MainWindow.ui" line="473"/>
+ <location filename="../../MainWindow.ui" line="1587"/>
<source>Online</source>
<translation>Онлайн</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="748"/>
- <location filename="../../MainWindow.cpp" line="1594"/>
+ <location filename="../../MainWindow.ui" line="799"/>
+ <location filename="../../MainWindow.cpp" line="1853"/>
<source>Unstage</source>
<translation>Не отслеживать</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="777"/>
+ <location filename="../../MainWindow.ui" line="828"/>
<source>Select all</source>
<translation>Выбрать всё</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="812"/>
- <location filename="../../MainWindow.cpp" line="1464"/>
+ <location filename="../../MainWindow.ui" line="863"/>
+ <location filename="../../MainWindow.cpp" line="1723"/>
<source>Stage</source>
<translation>Отслеживать</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="841"/>
- <location filename="../../MainWindow.cpp" line="841"/>
+ <location filename="../../MainWindow.ui" line="892"/>
+ <location filename="../../MainWindow.cpp" line="879"/>
<source>Commit</source>
<translation>Фиксация</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="972"/>
+ <location filename="../../MainWindow.ui" line="1023"/>
<source>&File</source>
<translation>&Файл</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="983"/>
+ <location filename="../../MainWindow.ui" line="1034"/>
<source>&View</source>
<translation>Вид(&V)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="989"/>
+ <location filename="../../MainWindow.ui" line="1040"/>
<source>&Edit</source>
<translation>Редактировать(&E)</translation>
</message>
<message>
<source>Destructive</source>
<translation type="vanished">注意を要するコマンド</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1343"/>
+ <location filename="../../MainWindow.ui" line="1412"/>
<source>Settings</source>
<translation>Настройки</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1365"/>
- <location filename="../../MainWindow.cpp" line="1328"/>
+ <location filename="../../MainWindow.ui" line="1434"/>
+ <location filename="../../MainWindow.cpp" line="1595"/>
<source>Edit tags...</source>
<translation>Правка тэгов...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1368"/>
+ <location filename="../../MainWindow.ui" line="1437"/>
<source>Edit tags</source>
<translation>Правка тэгов</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1490"/>
+ <location filename="../../MainWindow.ui" line="1562"/>
<source>Clean -df</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1495"/>
+ <location filename="../../MainWindow.ui" line="1567"/>
<source>Reset --hard</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1422"/>
+ <location filename="../../MainWindow.ui" line="1494"/>
<source>Create a repository</source>
<translation>Создание репозитория</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1409"/>
+ <location filename="../../MainWindow.ui" line="1481"/>
<source>Push upstream</source>
<translation>Выгрузить в источник</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1431"/>
+ <location filename="../../MainWindow.ui" line="1503"/>
<source>Stop process</source>
<translation>Остановить</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1436"/>
+ <location filename="../../MainWindow.ui" line="1508"/>
<source>E&xit</source>
<translation>В&ыход</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1439"/>
+ <location filename="../../MainWindow.ui" line="1511"/>
<source>Ctrl+Q</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1444"/>
+ <location filename="../../MainWindow.ui" line="1516"/>
<source>Reflog...</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1449"/>
+ <location filename="../../MainWindow.ui" line="1521"/>
<source>Property...</source>
<translation>Свойства...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1454"/>
- <location filename="../../MainWindow.ui" line="1457"/>
+ <location filename="../../MainWindow.ui" line="1526"/>
+ <location filename="../../MainWindow.ui" line="1529"/>
<source>Set GPG signing</source>
<translation>Настройка подписей GPG</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1467"/>
+ <location filename="../../MainWindow.ui" line="1539"/>
<source>Fetch --prune</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1001"/>
+ <location filename="../../MainWindow.ui" line="1055"/>
<source>&Help</source>
<translation>Помощь (&H)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="605"/>
+ <location filename="../../MainWindow.ui" line="252"/>
+ <location filename="../../MainWindow.ui" line="1628"/>
+ <location filename="../../MainWindow.cpp" line="1353"/>
+ <source>Status</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="656"/>
<source>...</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1007"/>
+ <location filename="../../MainWindow.ui" line="1061"/>
<source>&Window</source>
<translation>Окно(&W)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1013"/>
+ <location filename="../../MainWindow.ui" line="1067"/>
<source>&Repository</source>
<translation>Репозиторий(&R)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1017"/>
- <location filename="../../MainWindow.ui" line="1500"/>
+ <location filename="../../MainWindow.ui" line="1071"/>
+ <location filename="../../MainWindow.ui" line="1572"/>
<source>Stash</source>
<translation>Спрятать</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1040"/>
+ <location filename="../../MainWindow.ui" line="1098"/>
<source>Re&mote</source>
<translation>Источник (&M)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1055"/>
+ <location filename="../../MainWindow.ui" line="1113"/>
<source>&Destructive</source>
<translation>Разрушительные (&D)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1086"/>
+ <location filename="../../MainWindow.ui" line="1125"/>
+ <source>Experimental</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1155"/>
<source>Log</source>
<translation>Журнал</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1256"/>
+ <location filename="../../MainWindow.ui" line="1325"/>
<source>&Open existing working copy...</source>
<translation>Открыть существующий репозиторий (&O)...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1259"/>
- <location filename="../../MainWindow.cpp" line="1657"/>
+ <location filename="../../MainWindow.ui" line="1328"/>
+ <location filename="../../MainWindow.cpp" line="2027"/>
<source>Add existing working copy</source>
<translation>Добавить существующий репозиторий</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1264"/>
- <location filename="../../MainWindow.ui" line="1267"/>
+ <location filename="../../MainWindow.ui" line="1333"/>
+ <location filename="../../MainWindow.ui" line="1336"/>
<source>Refresh</source>
<translation>Обновить</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1270"/>
+ <location filename="../../MainWindow.ui" line="1339"/>
<source>F5</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1279"/>
+ <location filename="../../MainWindow.ui" line="1348"/>
<source>&Commit</source>
<translation>Фиксация (&Commit)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1288"/>
+ <location filename="../../MainWindow.ui" line="1357"/>
<source>&Push</source>
<translation>Выгрузить (&Push)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1296"/>
+ <location filename="../../MainWindow.ui" line="1365"/>
<source>test</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1299"/>
+ <location filename="../../MainWindow.ui" line="1368"/>
<source>Ctrl+T</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1308"/>
+ <location filename="../../MainWindow.ui" line="1377"/>
<source>Pu&ll</source>
<translation>Обновить (Pu&ll)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1317"/>
+ <location filename="../../MainWindow.ui" line="1386"/>
<source>&Fetch</source>
<translation>Загрузить (&Fetch)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1322"/>
- <location filename="../../MainWindow.ui" line="1325"/>
+ <location filename="../../MainWindow.ui" line="1391"/>
+ <location filename="../../MainWindow.ui" line="1394"/>
<source>Edit global .gitconfig</source>
<translation>Прака глобального .gitconfig</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1330"/>
+ <location filename="../../MainWindow.ui" line="1399"/>
<source>Edit .git/config</source>
<translation>Правка .git/config</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1335"/>
+ <location filename="../../MainWindow.ui" line="1404"/>
<source>Edit .gitignore</source>
<translation>Правка .gitignore</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1340"/>
+ <location filename="../../MainWindow.ui" line="1409"/>
<source>&Settings...</source>
<translation>Настройки (&S)...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1391"/>
+ <location filename="../../MainWindow.ui" line="1458"/>
+ <source>F4</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1463"/>
<source>&Jump...</source>
<translation>Переход (&Jump)...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1394"/>
+ <location filename="../../MainWindow.ui" line="1466"/>
<source>Ctrl+J</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1399"/>
+ <location filename="../../MainWindow.ui" line="1471"/>
<source>Check&out...</source>
<translation>Проверка (C&heckout)...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1404"/>
- <location filename="../../MainWindow.cpp" line="1340"/>
+ <location filename="../../MainWindow.ui" line="1476"/>
+ <location filename="../../MainWindow.cpp" line="1600"/>
<source>Delete branch...</source>
<translation>Удалить ветвь...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1505"/>
+ <location filename="../../MainWindow.ui" line="1577"/>
<source>Apply</source>
<translation>Применить</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1510"/>
+ <location filename="../../MainWindow.ui" line="1582"/>
<source>Drop</source>
<translation>Отменить</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1528"/>
+ <location filename="../../MainWindow.ui" line="1600"/>
<source>Repositories panel</source>
<translation>Панель репозиториев</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1531"/>
+ <location filename="../../MainWindow.ui" line="1603"/>
<source>Ctrl+R</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1414"/>
- <location filename="../../MainWindow.ui" line="1417"/>
+ <location filename="../../MainWindow.ui" line="1608"/>
+ <source>&Find...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1611"/>
+ <source>Ctrl+F</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1616"/>
+ <source>Find next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1619"/>
+ <source>F3</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1633"/>
+ <source>Jump to &HEAD</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1636"/>
+ <source>Ctrl+H</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1641"/>
+ <source>Merge...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1646"/>
+ <source>Expand commit log</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1649"/>
+ <source>Ctrl+2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1654"/>
+ <source>Expand file list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1657"/>
+ <source>Ctrl+3</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1662"/>
+ <source>Expand diff view</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1665"/>
+ <source>Ctrl+4</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1670"/>
+ <source>Sidebar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1673"/>
+ <source>F1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1678"/>
+ <source>Wide</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1681"/>
+ <source>F2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1486"/>
+ <location filename="../../MainWindow.ui" line="1489"/>
<source>Reset HEAD~1</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1462"/>
- <location filename="../../MainWindow.cpp" line="1341"/>
+ <location filename="../../MainWindow.ui" line="1534"/>
+ <location filename="../../MainWindow.cpp" line="1601"/>
<source>Delete remote branch...</source>
<translation>Удалить ветвь источника...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1360"/>
+ <location filename="../../MainWindow.ui" line="1429"/>
<source>&About</source>
<translation>&О программе</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1373"/>
+ <location filename="../../MainWindow.ui" line="1442"/>
<source>Push all tags</source>
<translation>Выгрузить все тэги</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1378"/>
+ <location filename="../../MainWindow.ui" line="1447"/>
<source>Set config user</source>
<translation>Выбрать пользователя</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1386"/>
+ <location filename="../../MainWindow.ui" line="1455"/>
<source>&Log</source>
<translation>Журнал (&Log)</translation>
</message>
<message>
<source>Unnamed</source>
<translation type="vanished">無名</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="643"/>
+ <location filename="../../MainWindow.cpp" line="679"/>
<source>Default</source>
<translation>По-умолчанию</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="840"/>
+ <location filename="../../MainWindow.cpp" line="878"/>
<source>Graph</source>
<translation>Граф</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="842"/>
+ <location filename="../../MainWindow.cpp" line="880"/>
<source>Date</source>
<translation>Дата</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="843"/>
+ <location filename="../../MainWindow.cpp" line="881"/>
<source>Author</source>
<translation>Автор</translation>
</message>
<message>
<source>Description</source>
<translation type="vanished">概要</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="990"/>
- <location filename="../../MainWindow.cpp" line="1115"/>
+ <location filename="../../MainWindow.cpp" line="1029"/>
+ <location filename="../../MainWindow.cpp" line="1199"/>
<source>Uncommited changes</source>
<translation>Незафиксированные изменения</translation>
</message>
<message>
<source>Are you sure you want to remove the repository from bookmarks ?</source>
<translation type="vanished">リポジトリをブックマークから削除してよろしいですか?</translation>
</message>
<message>
<source>(Files will NOT be deleted)</source>
<translation type="vanished">(ファルは削除されません)</translation>
</message>
<message>
<source>Open Repository</source>
<translation type="vanished">リポジトリを開く</translation>
</message>
<message>
<source>No such folder</source>
<translation type="vanished">そのようなフォルダはありません</translation>
</message>
<message>
<source>Not a valid git repository</source>
<translation type="vanished">有効なリポジトリではありません</translation>
</message>
<message>
<source>Commit message can not be omitted.</source>
<translation type="vanished">コミットメッセージを空にすることはできません。</translation>
</message>
<message>
<source>Repository Property</source>
<translation type="vanished">リポジトリのプロパティ</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1218"/>
+ <location filename="../../MainWindow.cpp" line="1457"/>
<source>&Add new group</source>
<translation>Новая &группа</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1219"/>
+ <location filename="../../MainWindow.cpp" line="1458"/>
<source>&Delete group</source>
<translation>Удалить &группу</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1220"/>
+ <location filename="../../MainWindow.cpp" line="1459"/>
<source>&Rename group</source>
<translation>Переименовать группу(&R)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1225"/>
+ <location filename="../../MainWindow.cpp" line="1464"/>
<source>New group</source>
<translation>Новая группа</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1249"/>
+ <location filename="../../MainWindow.cpp" line="1488"/>
<source>Open &terminal</source>
<translation>Открыть терминал (&T)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1250"/>
+ <location filename="../../MainWindow.cpp" line="1489"/>
<source>Open command promp&t</source>
<translation>Открыть терминал (&T)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1252"/>
+ <location filename="../../MainWindow.cpp" line="1491"/>
<source>&Open</source>
<translation>Открыть (&Open)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1263"/>
+ <location filename="../../MainWindow.cpp" line="1502"/>
<source>Open &folder</source>
<translation>Открыть каталог (&F)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1268"/>
+ <location filename="../../MainWindow.cpp" line="1507"/>
<source>&Remove</source>
<translation>Удалить (&Remove)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1311"/>
+ <location filename="../../MainWindow.cpp" line="1550"/>
<source>Copy commit id (7 letters)</source>
<translation>Скопируйте ID фиксации(7 символов)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1312"/>
+ <location filename="../../MainWindow.cpp" line="1551"/>
<source>Copy commit id (completely)</source>
<translation>Скопируйте ID фиксации(полностью)</translation>
</message>
<message>
<source>Edit comment...</source>
<translation type="vanished">コメントを編集...</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1326"/>
- <location filename="../../MainWindow.cpp" line="2130"/>
+ <location filename="../../MainWindow.cpp" line="1242"/>
+ <location filename="../../MainWindow.cpp" line="1593"/>
<source>Rebase</source>
<translation>Перебазирование</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1345"/>
+ <location filename="../../MainWindow.cpp" line="1605"/>
<source>Explore</source>
<translation>Обзор</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1334"/>
<source>Reset HEAD</source>
- <translation>Откат HEAD</translation>
+ <translation type="vanished">Откат HEAD</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="844"/>
+ <location filename="../../MainWindow.cpp" line="882"/>
<source>Message</source>
<translation>Комментарий</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1420"/>
- <location filename="../../MainWindow.cpp" line="1469"/>
- <location filename="../../MainWindow.cpp" line="1595"/>
+ <location filename="../../MainWindow.cpp" line="1679"/>
+ <location filename="../../MainWindow.cpp" line="1728"/>
+ <location filename="../../MainWindow.cpp" line="1854"/>
<source>History</source>
<translation>История</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="2088"/>
- <location filename="../../MainWindow.cpp" line="2102"/>
+ <location filename="../../MainWindow.cpp" line="2436"/>
+ <location filename="../../MainWindow.cpp" line="2450"/>
<source>No such commit</source>
<translation>Фиксация не существует</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="2200"/>
- <location filename="../../MainWindow.cpp" line="2201"/>
+ <location filename="../../MainWindow.cpp" line="1143"/>
+ <location filename="../../MainWindow.cpp" line="1144"/>
<source>Update</source>
<translation>Обновить</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="2481"/>
+ <location filename="../../MainWindow.cpp" line="2762"/>
<source>Authentication Failed</source>
<translation>Авторизация не удалась</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1329"/>
+ <location filename="../../MainWindow.cpp" line="1596"/>
<source>Revert</source>
<translation>Отмена (Revert)</translation>
</message>
<message>
<source>Failed to commit</source>
<translation type="vanished">コミット失敗</translation>
</message>
<message>
<source>No remote repository is registered.</source>
<translation type="vanished">リモートリポジトリが登録されていません。</translation>
</message>
<message>
<source>The current branch %1 has no upstream branch.</source>
<translation type="vanished">現在のブランチ「%1」には上流ブランチがありません。</translation>
</message>
<message>
<source>You try push --set-upstream</source>
<translation type="vanished">--set-upstream を試してください</translation>
</message>
<message>
<source>Connection refused.</source>
<translation type="vanished">接続が拒否されました。</translation>
</message>
<message>
<source>&Property</source>
<translation type="vanished">プロパティ(&P)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1316"/>
+ <location filename="../../MainWindow.cpp" line="1567"/>
<source>Checkout/Branch...</source>
<translation>Проверка/ветвь...</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1322"/>
+ <location filename="../../MainWindow.cpp" line="1589"/>
<source>Edit message...</source>
<translation>Правка комментария...</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1325"/>
+ <location filename="../../MainWindow.cpp" line="1592"/>
<source>Merge</source>
<translation>Слияние</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1327"/>
+ <location filename="../../MainWindow.cpp" line="1594"/>
<source>Cherry-pick</source>
<translation>Выборочное применение (Cherry-pick)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1419"/>
- <location filename="../../MainWindow.cpp" line="1468"/>
+ <location filename="../../MainWindow.cpp" line="1678"/>
+ <location filename="../../MainWindow.cpp" line="1727"/>
<source>Untrack</source>
<translation>Не отслеживать</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1421"/>
- <location filename="../../MainWindow.cpp" line="1470"/>
- <location filename="../../MainWindow.cpp" line="1596"/>
+ <location filename="../../MainWindow.cpp" line="1680"/>
+ <location filename="../../MainWindow.cpp" line="1729"/>
+ <location filename="../../MainWindow.cpp" line="1855"/>
<source>Blame</source>
<translation>Обращение</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1429"/>
+ <location filename="../../MainWindow.cpp" line="1688"/>
<source>Delete selected files.</source>
<translation>Удалить выбранные файлы.</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1440"/>
+ <location filename="../../MainWindow.cpp" line="1699"/>
<source>rm --cached files</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1465"/>
+ <location filename="../../MainWindow.cpp" line="1724"/>
<source>Reset</source>
<translation>Откат (Reset)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1466"/>
+ <location filename="../../MainWindow.cpp" line="1725"/>
<source>Ignore</source>
<translation>Игнорировать</translation>
</message>
<message>
<source>Reset a file</source>
<translation type="vanished">ファイルをリセットします</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="2127"/>
+ <location filename="../../MainWindow.cpp" line="1239"/>
<source>Are you sure you want to rebase the commit ?</source>
<translation>Вы уверены, что хотите переместить фиксацию?</translation>
</message>
<message>
<source>No repository selected</source>
<translation type="vanished">リポジトリが選択されていません</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1418"/>
- <location filename="../../MainWindow.cpp" line="1467"/>
+ <location filename="../../MainWindow.cpp" line="1677"/>
+ <location filename="../../MainWindow.cpp" line="1726"/>
<source>Delete</source>
<translation>Удалить</translation>
</message>
<message>
<source>Are you sure you want to run the following command ?</source>
<translation type="vanished">次のコマンドを実行してよろしいですか?</translation>
</message>
<message>
<source>Revert all files</source>
<translation type="vanished">すべてのファイルの変更を破棄</translation>
</message>
<message>
<source>Select %1 command</source>
<translation type="vanished">%1 コマンドの選択</translation>
</message>
<message>
<source>A file with same name already exists</source>
<translation type="vanished">同じ名前のファイルが既に存在しています</translation>
</message>
<message>
<source>A folder with same name already exists</source>
<translation type="vanished">同じ名前のフォルダが既に存在しています</translation>
</message>
<message>
<source>Invalid folder</source>
<translation type="vanished">無効なフォルダ</translation>
</message>
<message>
<source>No such folder. Create it now ?</source>
<translation type="vanished">このフォルダはありません。作成しますか?</translation>
</message>
<message>
<source>The URL is a valid repository</source>
<translation type="vanished">このURLは有効なリポジトリです</translation>
</message>
<message>
<source>Failed to access the URL</source>
<translation type="vanished">このURLへのアクセスに失敗しました</translation>
</message>
<message>
<source>Remote Repository</source>
<translation type="vanished">リモートリポジトリ</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="2088"/>
- <location filename="../../MainWindow.cpp" line="2102"/>
+ <location filename="../../MainWindow.cpp" line="2436"/>
+ <location filename="../../MainWindow.cpp" line="2450"/>
<source>Jump</source>
<translation>Перейти</translation>
</message>
<message>
<source>That commmit has not foud or not read yet</source>
<translation type="vanished">そのコミットは、見つからないか、まだ読み込まれていません</translation>
</message>
<message>
<source>Failed to delete the branch '%1'
</source>
<translation type="vanished">ブランチの削除に失敗しました : '%1'</translation>
</message>
</context>
<context>
<name>MergeBranchDialog</name>
<message>
- <location filename="../../MergeBranchDialog.ui" line="14"/>
<source>Merge</source>
- <translation>Слияние</translation>
+ <translation type="vanished">Слияние</translation>
</message>
<message>
- <location filename="../../MergeBranchDialog.ui" line="26"/>
<source>Current branch :</source>
- <translation>Текущая ветвь :</translation>
+ <translation type="vanished">Текущая ветвь :</translation>
</message>
<message>
- <location filename="../../MergeBranchDialog.ui" line="39"/>
- <source>TextLabel</source>
- <translation></translation>
+ <source>Cancel</source>
+ <translation type="vanished">Отмена</translation>
+ </message>
+</context>
+<context>
+ <name>MergeDialog</name>
+ <message>
+ <location filename="../../MergeDialog.ui" line="14"/>
+ <source>Merge</source>
+ <translation type="unfinished">Слияние</translation>
</message>
<message>
- <location filename="../../MergeBranchDialog.ui" line="62"/>
+ <location filename="../../MergeDialog.ui" line="20"/>
+ <source>Fast Forwarding</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MergeDialog.ui" line="26"/>
+ <source>Default (--ff)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MergeDialog.ui" line="33"/>
+ <source>No fast forward (--no-ff)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MergeDialog.ui" line="40"/>
+ <source>Fast forward only (--ff-only)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MergeDialog.ui" line="50"/>
+ <source>From</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MergeDialog.ui" line="77"/>
<source>OK</source>
- <translation></translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../MergeBranchDialog.ui" line="75"/>
+ <location filename="../../MergeDialog.ui" line="84"/>
<source>Cancel</source>
- <translation>Отмена</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MyImageViewWidget</name>
<message>
- <location filename="../../MyImageViewWidget.cpp" line="35"/>
+ <location filename="../../MyImageViewWidget.cpp" line="34"/>
<source>Save as...</source>
<translation>Сохранить как...</translation>
</message>
<message>
- <location filename="../../MyImageViewWidget.cpp" line="43"/>
+ <location filename="../../MyImageViewWidget.cpp" line="42"/>
<source>Save as</source>
<translation>Сохранить как</translation>
</message>
</context>
<context>
<name>MyTextEditorWidget</name>
<message>
<location filename="../../MyTextEditorWidget.cpp" line="35"/>
<source>Save as...</source>
<translation>Сохранить как...</translation>
</message>
<message>
<location filename="../../MyTextEditorWidget.cpp" line="36"/>
<source>Copy</source>
<translation>Копировать</translation>
</message>
<message>
<location filename="../../MyTextEditorWidget.cpp" line="43"/>
<source>Save as</source>
<translation>Сохранить как</translation>
</message>
</context>
<context>
<name>ObjectBrowserDialog</name>
<message>
<location filename="../../ObjectBrowserDialog.ui" line="14"/>
<source>Object Browser</source>
<translation>Обозреватель объектов</translation>
</message>
<message>
<location filename="../../ObjectBrowserDialog.ui" line="38"/>
<source>Inspect</source>
<translation>Проверка</translation>
</message>
<message>
<location filename="../../ObjectBrowserDialog.ui" line="58"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../ObjectBrowserDialog.ui" line="65"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
<message>
<location filename="../../ObjectBrowserDialog.cpp" line="23"/>
<source>ID</source>
<translation></translation>
</message>
<message>
<location filename="../../ObjectBrowserDialog.cpp" line="24"/>
<source>Type</source>
<translation>Тип</translation>
</message>
<message>
<location filename="../../ObjectBrowserDialog.cpp" line="119"/>
<source>Object Inspection</source>
<translation>Проверка объектов</translation>
</message>
</context>
<context>
<name>PushDialog</name>
<message>
<location filename="../../PushDialog.ui" line="14"/>
<source>Push</source>
<translation>Выгрузить</translation>
</message>
<message>
<location filename="../../PushDialog.ui" line="20"/>
<source>push --set-upstream</source>
<translation>Выгрузить в источник</translation>
</message>
<message>
<location filename="../../PushDialog.ui" line="26"/>
<source>Remote</source>
<translation>Источник</translation>
</message>
<message>
<location filename="../../PushDialog.ui" line="33"/>
<source>Branch</source>
<translation>Ветвь</translation>
</message>
<message>
<location filename="../../PushDialog.ui" line="64"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../PushDialog.ui" line="71"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
</context>
<context>
<name>RebaseOntoDialog</name>
<message>
<source>Branch</source>
<translation type="vanished">ブランチ</translation>
</message>
<message>
<source>Cancel</source>
<translation type="vanished">キャンセル</translation>
</message>
</context>
<context>
<name>ReflogWindow</name>
<message>
<location filename="../../ReflogWindow.ui" line="14"/>
<source>Reflog</source>
<translation></translation>
</message>
<message>
<location filename="../../ReflogWindow.ui" line="57"/>
<source>Close</source>
<translation>Закрыть</translation>
</message>
<message>
<location filename="../../ReflogWindow.cpp" line="35"/>
<source>Commit</source>
<translation>Фиксация (Commit)</translation>
</message>
<message>
<location filename="../../ReflogWindow.cpp" line="36"/>
<source>Head</source>
<translation>Текущая</translation>
</message>
<message>
<location filename="../../ReflogWindow.cpp" line="37"/>
<source>Command</source>
<translation>Команда</translation>
</message>
<message>
<location filename="../../ReflogWindow.cpp" line="38"/>
<source>Message</source>
<translation>Комментарий</translation>
</message>
<message>
<source>Comment</source>
<translation type="vanished">コメント</translation>
</message>
<message>
<location filename="../../ReflogWindow.cpp" line="98"/>
<source>Checkout</source>
<translation>Проверка (Checkout)</translation>
</message>
<message>
<location filename="../../ReflogWindow.cpp" line="99"/>
<source>Explorer</source>
<translation>Обзор</translation>
</message>
</context>
<context>
<name>RemoteRepositoriesTableWidget</name>
<message>
<location filename="../../RemoteRepositoriesTableWidget.cpp" line="27"/>
<source>Copy URL</source>
<translation>Копировать URL</translation>
</message>
</context>
<context>
<name>RepositoryPropertyDialog</name>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="14"/>
<source>Repository Property</source>
<oldsource>Repository Properties</oldsource>
<translation>Свойства репозитория</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="65"/>
<source>TextLabel</source>
<translation></translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="95"/>
<source>Local dir :</source>
<translation>Локальный каталог:</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="114"/>
<source>Remote URLs</source>
<translation>URL источников</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="124"/>
<source>Remote</source>
<translation>Источник</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="130"/>
<source>Add</source>
<translation>Добавить</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="137"/>
<source>Edit</source>
<translation>Редактировать</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="157"/>
<source>Remove</source>
<translation>Удалить</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="169"/>
<source>&Remote menu</source>
<translation>Меню источника (&R)</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="189"/>
<source>Close</source>
<translation>Закрыть</translation>
</message>
<message>
- <location filename="../../RepositoryPropertyDialog.cpp" line="132"/>
+ <location filename="../../RepositoryPropertyDialog.cpp" line="131"/>
<source>Confirm Remove</source>
<translation>Подтвердите удаление</translation>
</message>
<message>
- <location filename="../../RepositoryPropertyDialog.cpp" line="132"/>
+ <location filename="../../RepositoryPropertyDialog.cpp" line="131"/>
<source>Are you sure you want to remove the remote '%1' from the repository '%2' ?</source>
<translation>Вы точно хотите удалить источник '%1' из репозитория '%2' ?</translation>
</message>
</context>
<context>
<name>SearchFromGitHubDialog</name>
<message>
<location filename="../../SearchFromGitHubDialog.ui" line="14"/>
<source>Search From GitHub</source>
<translation>Поиск на GitHub</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.ui" line="25"/>
<source>Search</source>
<translation>Поиск</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.ui" line="78"/>
<source>ssh</source>
<translation></translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.ui" line="88"/>
<source>http</source>
<translation></translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.ui" line="115"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.ui" line="122"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
<message>
- <location filename="../../SearchFromGitHubDialog.cpp" line="58"/>
+ <location filename="../../SearchFromGitHubDialog.cpp" line="56"/>
<source>Name</source>
<translation>Имя</translation>
</message>
<message>
- <location filename="../../SearchFromGitHubDialog.cpp" line="59"/>
+ <location filename="../../SearchFromGitHubDialog.cpp" line="57"/>
<source>Owner</source>
<translation>Владелец</translation>
</message>
<message>
- <location filename="../../SearchFromGitHubDialog.cpp" line="60"/>
+ <location filename="../../SearchFromGitHubDialog.cpp" line="58"/>
<source>Score</source>
<translation>Популярность</translation>
</message>
<message>
- <location filename="../../SearchFromGitHubDialog.cpp" line="61"/>
+ <location filename="../../SearchFromGitHubDialog.cpp" line="59"/>
<source>Description</source>
<translation>Описание</translation>
</message>
</context>
<context>
<name>SelectCommandDialog</name>
<message>
<location filename="../../SelectCommandDialog.ui" line="14"/>
<source>Select git command</source>
<translation>Выбрать команду git</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.ui" line="20"/>
<source>TextLabel</source>
<translation></translation>
</message>
<message>
<location filename="../../SelectCommandDialog.ui" line="32"/>
<source>&Browse...</source>
<translation>&Обзор...</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.ui" line="52"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../SelectCommandDialog.ui" line="59"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.cpp" line="29"/>
<source>Please select the '%1' command you want to use.</source>
<translation>Выберите '%1' команду, которую вы хотите выполнить.</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.cpp" line="58"/>
<location filename="../../SelectCommandDialog.cpp" line="65"/>
<source>%1 command (%2);;</source>
<translation>%1 команда (%2);;</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.cpp" line="60"/>
<source>Executable files (*.exe)</source>
<translation>Исполняемые файлы (*.exe)</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.cpp" line="71"/>
<source>%1 command</source>
<translation>%1 команда</translation>
</message>
</context>
<context>
<name>SelectGpgKeyDialog</name>
<message>
<location filename="../../SelectGpgKeyDialog.ui" line="14"/>
<source>Select GPG Key</source>
<translation>Выбор ключа GPG</translation>
</message>
<message>
<location filename="../../SelectGpgKeyDialog.ui" line="57"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../SelectGpgKeyDialog.ui" line="64"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
<message>
<location filename="../../SelectGpgKeyDialog.cpp" line="31"/>
<source>ID</source>
<translation></translation>
</message>
<message>
<location filename="../../SelectGpgKeyDialog.cpp" line="32"/>
<source>Name</source>
<translation>Имя</translation>
</message>
<message>
<location filename="../../SelectGpgKeyDialog.cpp" line="33"/>
<source>Mail</source>
<translation></translation>
</message>
</context>
<context>
<name>SelectItemDialog</name>
<message>
<location filename="../../SelectItemDialog.ui" line="14"/>
<source>Dialog</source>
<translation></translation>
</message>
<message>
<location filename="../../SelectItemDialog.ui" line="25"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../SelectItemDialog.ui" line="32"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
</context>
<context>
<name>SetGlobalUserDialog</name>
<message>
<location filename="../../SetGlobalUserDialog.ui" line="14"/>
<source>Global User Setting</source>
<translation>Глобальная настройка пользователя</translation>
</message>
<message>
<location filename="../../SetGlobalUserDialog.ui" line="31"/>
<source>Name</source>
<translation>Имя</translation>
</message>
<message>
<location filename="../../SetGlobalUserDialog.ui" line="41"/>
<source>Mail</source>
<translation></translation>
</message>
<message>
<location filename="../../SetGlobalUserDialog.ui" line="68"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../SetGlobalUserDialog.ui" line="78"/>
<source>Skip</source>
<translation>Пропустить</translation>
</message>
</context>
<context>
<name>SetGpgSigningDialog</name>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="14"/>
<source>Set GPG Signing</source>
<translation>Настройка подписей GPG</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="26"/>
<source>Global</source>
<translation>Глобально</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="39"/>
<location filename="../../SetGpgSigningDialog.cpp" line="29"/>
<source>Repository</source>
<translation>Репозиторий</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="61"/>
<source>ID</source>
<translation></translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="71"/>
<source>Name</source>
<translation>Имя</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="81"/>
<source>Mail</source>
<translation></translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="93"/>
<source>Select</source>
<translation>Выбрать</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="113"/>
<source>Clear</source>
<translation>Очистить</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="127"/>
<source>Configure...</source>
<translation>Настроить...</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="147"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="154"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
</context>
<context>
<name>SetRemoteUrlDialog</name>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="14"/>
<source>Set Remote URL</source>
<translation>Установка URL источника</translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="20"/>
<source>Current URLs</source>
<translation>Текущий URL</translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="30"/>
<source>New URL</source>
<translation>Новый URL</translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="36"/>
<source>Name</source>
<translation>Имя</translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="91"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="98"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="43"/>
<source>URL</source>
<translation></translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="63"/>
<source>&Test</source>
<translation>&Тестировать</translation>
</message>
</context>
<context>
<name>SetUserDialog</name>
<message>
<location filename="../../SetUserDialog.ui" line="14"/>
<source>Set User</source>
<translation>Выбрать пользователя</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="20"/>
<source>Global</source>
<translation>Глобально</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="27"/>
<location filename="../../SetUserDialog.cpp" line="31"/>
<source>Repository</source>
<translation>Репозиторий</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="42"/>
<source>Name</source>
<translation>Имя</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="52"/>
<source>Mail</source>
<translation></translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="66"/>
<source>Get icon from Gravatar</source>
<translation>Получить аватар с Gravatar</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="122"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="132"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
</context>
<context>
<name>SettingBehaviorForm</name>
<message>
<location filename="../../SettingBehaviorForm.ui" line="14"/>
<source>Behavior</source>
<translation>Поведение</translation>
</message>
<message>
<location filename="../../SettingBehaviorForm.ui" line="20"/>
- <location filename="../../SettingBehaviorForm.cpp" line="77"/>
+ <location filename="../../SettingBehaviorForm.cpp" line="43"/>
<source>Default working folder</source>
<translation>Рабочий каталог по-умолчанию</translation>
</message>
<message>
<location filename="../../SettingBehaviorForm.ui" line="29"/>
<source>Browse...</source>
<translation>Обзор...</translation>
</message>
<message>
<location filename="../../SettingBehaviorForm.ui" line="39"/>
<source>Automatically fetch when opening the repository</source>
<translation>Автоматически загружать при открытии репозитория</translation>
</message>
<message>
<location filename="../../SettingBehaviorForm.ui" line="46"/>
<source>Get committer's icon from gravatar.com</source>
<translation>Получить аватар коммитера с gravatar.com</translation>
</message>
<message>
<location filename="../../SettingBehaviorForm.ui" line="61"/>
<source>Maximum number of commit item acquisitions</source>
<translation>Максимальное число загружаемых коммитов</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.ui" line="88"/>
<source>Watch remote changes periodically</source>
<oldsource>Periodically watch remote updates</oldsource>
- <translation>Отслеживать изменения в источнике</translation>
+ <translation type="vanished">Отслеживать изменения в источнике</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.ui" line="108"/>
<source>interval</source>
<oldsource>interval in min:</oldsource>
- <translation>интервал</translation>
+ <translation type="vanished">интервал</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.ui" line="128"/>
+ <location filename="../../SettingBehaviorForm.ui" line="94"/>
<source>GPG signing policy</source>
<oldsource>GPG Signing Policy</oldsource>
<translation>Политика подписания</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.ui" line="135"/>
+ <location filename="../../SettingBehaviorForm.ui" line="101"/>
<source>Configure...</source>
<translation>Настроить...</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.cpp" line="38"/>
<source>Disable</source>
- <translation>Выключить</translation>
+ <translation type="vanished">Выключить</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.cpp" line="40"/>
<source>1 min</source>
- <translation>1 минута</translation>
+ <translation type="vanished">1 минута</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.cpp" line="42"/>
<source>%1 mins</source>
- <translation>%1 минут</translation>
+ <translation type="vanished">%1 минут</translation>
</message>
</context>
<context>
<name>SettingExampleForm</name>
<message>
<location filename="../../SettingExampleForm.ui" line="14"/>
<source>Example</source>
<translation></translation>
</message>
<message>
<location filename="../../SettingExampleForm.ui" line="20"/>
<source>Underconstruction</source>
<translation></translation>
</message>
</context>
<context>
<name>SettingGeneralForm</name>
<message>
<location filename="../../SettingGeneralForm.ui" line="14"/>
<source>General</source>
<translation>Общие</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="20"/>
<source>Language</source>
<translation>Язык</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="31"/>
<source>Change Language...</source>
<translation>Изменить язык...</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="54"/>
<source>Change Theme...</source>
<translation>Изменить тему...</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="66"/>
<source>Remember and restore window position</source>
<translation>Помнить позицию и размер окна</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="73"/>
<source>Enable high DPI scaling</source>
<translation>Включить highDPI масштабирование</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="43"/>
<source>Theme</source>
<translation>Тема</translation>
</message>
<message>
- <location filename="../../SettingGeneralForm.cpp" line="16"/>
- <source>English</source>
- <translation></translation>
- </message>
- <message>
- <location filename="../../SettingGeneralForm.cpp" line="17"/>
<source>Japanese</source>
- <translation>Японский</translation>
+ <translation type="vanished">Японский</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.cpp" line="19"/>
<source>Standard</source>
<translation>Стандартная</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.cpp" line="20"/>
<source>Dark</source>
<translation>Тёмная</translation>
</message>
<message>
- <location filename="../../SettingGeneralForm.cpp" line="78"/>
+ <location filename="../../SettingGeneralForm.cpp" line="82"/>
<source>Select Language</source>
<translation>Выбор языка</translation>
</message>
<message>
- <location filename="../../SettingGeneralForm.cpp" line="97"/>
+ <location filename="../../SettingGeneralForm.cpp" line="106"/>
<source>Select Theme</source>
<translation>Выбор темы</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="93"/>
<source>(Changes are applied at next run)</source>
<translation>(Изменения применятся при следующем запуске)</translation>
</message>
</context>
<context>
<name>SettingNetworkForm</name>
<message>
<location filename="../../SettingNetworkForm.ui" line="14"/>
<source>Network</source>
<translation>Сеть</translation>
</message>
<message>
<location filename="../../SettingNetworkForm.ui" line="20"/>
<source>Proxy server</source>
<oldsource>Proxy Server</oldsource>
<translation>Прокси-сервер</translation>
</message>
<message>
<location filename="../../SettingNetworkForm.ui" line="26"/>
<source>No proxy</source>
<oldsource>No Proxy</oldsource>
<translation>Без прокси</translation>
</message>
<message>
<location filename="../../SettingNetworkForm.ui" line="33"/>
<source>Auto detect</source>
<oldsource>Auto Detect</oldsource>
<translation>Авто-определение</translation>
</message>
<message>
<location filename="../../SettingNetworkForm.ui" line="40"/>
<source>Manual</source>
<translation>Вручную</translation>
</message>
</context>
<context>
<name>SettingProgramsForm</name>
<message>
<location filename="../../SettingProgramsForm.ui" line="14"/>
<source>Programs</source>
<translation>Программы</translation>
</message>
<message>
<location filename="../../SettingProgramsForm.ui" line="20"/>
<source>Git command</source>
<translation>путь к git</translation>
</message>
<message>
<location filename="../../SettingProgramsForm.ui" line="29"/>
<location filename="../../SettingProgramsForm.ui" line="48"/>
<location filename="../../SettingProgramsForm.ui" line="67"/>
<source>Browse...</source>
<translation>Обзор...</translation>
</message>
<message>
<location filename="../../SettingProgramsForm.ui" line="39"/>
<source>File command</source>
<translation>путь к file</translation>
</message>
<message>
<location filename="../../SettingProgramsForm.ui" line="58"/>
<source>GPG command (option)</source>
<translation>путь к gpg (опционально)</translation>
</message>
</context>
<context>
<name>SettingsDialog</name>
<message>
<location filename="../../SettingsDialog.ui" line="14"/>
<source>Settings</source>
<translation>Настройки</translation>
</message>
<message>
<location filename="../../SettingsDialog.ui" line="141"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../SettingsDialog.ui" line="148"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
</context>
<context>
<name>TextEditDialog</name>
<message>
<location filename="../../TextEditDialog.ui" line="14"/>
<source>Dialog</source>
<translation></translation>
</message>
<message>
<location filename="../../TextEditDialog.ui" line="48"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../TextEditDialog.ui" line="58"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
+ <message>
+ <location filename="../../TextEditDialog.cpp" line="29"/>
+ <source>&Close</source>
+ <translation type="unfinished">&Закрыть</translation>
+ </message>
+ <message>
+ <location filename="../../TextEditDialog.cpp" line="29"/>
+ <source>Cacnel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>WelcomeWizardDialog</name>
+ <message>
+ <location filename="../../WelcomeWizardDialog.ui" line="14"/>
+ <source>Welcome to the Guitar Wizard</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WelcomeWizardDialog.ui" line="45"/>
+ <source>Helper Tools</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WelcomeWizardDialog.ui" line="61"/>
+ <location filename="../../WelcomeWizardDialog.ui" line="338"/>
+ <source>git</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WelcomeWizardDialog.ui" line="71"/>
+ <location filename="../../WelcomeWizardDialog.ui" line="88"/>
+ <location filename="../../WelcomeWizardDialog.ui" line="248"/>
+ <source>Browse</source>
+ <translation type="unfinished">Обзор</translation>
+ </message>
+ <message>
+ <location filename="../../WelcomeWizardDialog.ui" line="78"/>
+ <location filename="../../WelcomeWizardDialog.ui" line="352"/>
+ <source>file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WelcomeWizardDialog.ui" line="120"/>
+ <source>Global User Information</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WelcomeWizardDialog.ui" line="142"/>
+ <source>git config --global user.name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WelcomeWizardDialog.ui" line="152"/>
+ <source>git config --global user.email</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WelcomeWizardDialog.ui" line="168"/>
+ <source>Get icon from Gravatar</source>
+ <translation type="unfinished">Получить аватар с Gravatar</translation>
+ </message>
+ <message>
+ <location filename="../../WelcomeWizardDialog.ui" line="222"/>
+ <location filename="../../WelcomeWizardDialog.cpp" line="163"/>
+ <source>Default Working Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WelcomeWizardDialog.ui" line="238"/>
+ <location filename="../../WelcomeWizardDialog.ui" line="324"/>
+ <source>folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WelcomeWizardDialog.ui" line="280"/>
+ <source>Ready to play the Guitar !</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WelcomeWizardDialog.ui" line="296"/>
+ <source>user</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WelcomeWizardDialog.ui" line="310"/>
+ <source>email</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WelcomeWizardDialog.ui" line="426"/>
+ <location filename="../../WelcomeWizardDialog.cpp" line="155"/>
+ <source><< Prev</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WelcomeWizardDialog.ui" line="433"/>
+ <location filename="../../WelcomeWizardDialog.cpp" line="156"/>
+ <source>Next >></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WelcomeWizardDialog.cpp" line="126"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WelcomeWizardDialog.cpp" line="152"/>
+ <source>Finish</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
</TS>
diff --git a/src/resources/translations/Guitar_zh-CN.qm b/src/resources/translations/Guitar_zh-CN.qm
index 63ca1e3..4b5d2d8 100644
Binary files a/src/resources/translations/Guitar_zh-CN.qm and b/src/resources/translations/Guitar_zh-CN.qm differ
diff --git a/src/resources/translations/Guitar_zh-CN.ts b/src/resources/translations/Guitar_zh-CN.ts
index edc8a52..79866af 100644
--- a/src/resources/translations/Guitar_zh-CN.ts
+++ b/src/resources/translations/Guitar_zh-CN.ts
@@ -1,2751 +1,2994 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="zh_CN">
<context>
<name>AboutDialog</name>
<message>
<location filename="../../AboutDialog.ui" line="14"/>
<source>Dialog</source>
<translation></translation>
</message>
<message>
- <location filename="../../AboutDialog.ui" line="29"/>
- <location filename="../../AboutDialog.ui" line="36"/>
- <location filename="../../AboutDialog.ui" line="43"/>
- <location filename="../../AboutDialog.ui" line="50"/>
+ <location filename="../../AboutDialog.ui" line="34"/>
+ <location filename="../../AboutDialog.ui" line="46"/>
+ <location filename="../../AboutDialog.ui" line="58"/>
+ <location filename="../../AboutDialog.ui" line="70"/>
<source>TextLabel</source>
<translation></translation>
</message>
+ <message>
+ <location filename="../../AboutDialog.ui" line="86"/>
+ <source><a href="https://github.com/soramimi/Guitar">https://github.com/soramimi/Guitar</a></source>
+ <translation type="unfinished"></translation>
+ </message>
<message>
<location filename="../../AboutDialog.cpp" line="25"/>
<source>About %1</source>
<translation>%1 关于</translation>
</message>
</context>
<context>
<name>AreYouSureYouWantToContinueConnectingDialog</name>
<message>
<location filename="../../AreYouSureYouWantToContinueConnectingDialog.ui" line="14"/>
<source>Unknown Host</source>
<translation>未知主机</translation>
</message>
<message>
<location filename="../../AreYouSureYouWantToContinueConnectingDialog.ui" line="20"/>
<source>Are you sure you want to continue connecting (yes/no)?</source>
<translation>你想继续连接吗?(是/否)?</translation>
</message>
<message>
<location filename="../../AreYouSureYouWantToContinueConnectingDialog.ui" line="52"/>
<source>Continue</source>
<translation>继续</translation>
</message>
<message>
<location filename="../../AreYouSureYouWantToContinueConnectingDialog.ui" line="59"/>
<source>Close</source>
<translation>关闭</translation>
</message>
</context>
<context>
<name>BasicMainWindow</name>
<message>
- <location filename="../../BasicMainWindow.cpp" line="345"/>
+ <location filename="../../BasicMainWindow.cpp" line="261"/>
+ <source>git command not specified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../BasicMainWindow.cpp" line="374"/>
<source>The URL is a valid repository</source>
<translation>此URL是有效的仓库</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="346"/>
+ <location filename="../../BasicMainWindow.cpp" line="375"/>
<source>Failed to access the URL</source>
<translation>无法访问此URL</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="351"/>
+ <location filename="../../BasicMainWindow.cpp" line="380"/>
<source>Remote Repository</source>
<translation>远程仓库</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="376"/>
+ <location filename="../../BasicMainWindow.cpp" line="405"/>
<source>&Property</source>
<translation>属性(&P)</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1201"/>
+ <location filename="../../BasicMainWindow.cpp" line="1273"/>
<source>Select %1 command</source>
<translation>选择 %1 命令</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1380"/>
+ <location filename="../../BasicMainWindow.cpp" line="1452"/>
<source>Revert all files</source>
<translation>放弃所有文件更改</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1520"/>
+ <location filename="../../BasicMainWindow.cpp" line="1610"/>
<source>The folder is not a valid git repository.</source>
<translation>文件夹不是有效的Git仓库。</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1524"/>
+ <location filename="../../BasicMainWindow.cpp" line="1614"/>
<source>Do you want to initialize it as a git repository ?</source>
<translation>是否要将其初始化为Git仓库?</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1525"/>
+ <location filename="../../BasicMainWindow.cpp" line="1615"/>
<source>Initialize Repository</source>
<translation>初始化仓库</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1663"/>
+ <location filename="../../BasicMainWindow.cpp" line="1745"/>
<source>No repository selected</source>
<translation>未选择仓库</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1817"/>
+ <location filename="../../BasicMainWindow.cpp" line="1915"/>
<source>Repository Property</source>
<translation>仓库属性</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1817"/>
- <location filename="../../BasicMainWindow.cpp" line="1919"/>
+ <location filename="../../BasicMainWindow.cpp" line="1915"/>
+ <location filename="../../BasicMainWindow.cpp" line="2017"/>
<source>Not a valid git repository</source>
<translation>不是有效的仓库。</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1912"/>
- <location filename="../../BasicMainWindow.cpp" line="1919"/>
+ <location filename="../../BasicMainWindow.cpp" line="2010"/>
+ <location filename="../../BasicMainWindow.cpp" line="2017"/>
<source>Open Repository</source>
<translation>打开仓库く</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1912"/>
+ <location filename="../../BasicMainWindow.cpp" line="2010"/>
<source>No such folder</source>
<translation>没有这样的文件夹</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1912"/>
+ <location filename="../../BasicMainWindow.cpp" line="2010"/>
<source>Remove from bookmark ?</source>
<translation>是否确实要从书签中删除?</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2150"/>
+ <location filename="../../BasicMainWindow.cpp" line="2248"/>
<source>, %1 ahead</source>
<translation></translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2153"/>
+ <location filename="../../BasicMainWindow.cpp" line="2251"/>
<source>, %1 behind</source>
<translation></translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2174"/>
+ <location filename="../../BasicMainWindow.cpp" line="2272"/>
<source>Confirm Remove</source>
<translation>确认删除</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2174"/>
+ <location filename="../../BasicMainWindow.cpp" line="2272"/>
<source>Are you sure you want to remove the repository from bookmarks ?</source>
<translation>是否确实要从书签中删除仓库?</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2174"/>
+ <location filename="../../BasicMainWindow.cpp" line="2272"/>
<source>(Files will NOT be deleted)</source>
<translation>(文件未被删除)</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2204"/>
+ <location filename="../../BasicMainWindow.cpp" line="2302"/>
<source>A file with same name already exists</source>
<translation>同名的文件已存在</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2205"/>
- <location filename="../../BasicMainWindow.cpp" line="2210"/>
- <location filename="../../BasicMainWindow.cpp" line="2227"/>
- <location filename="../../BasicMainWindow.cpp" line="2232"/>
+ <location filename="../../BasicMainWindow.cpp" line="2303"/>
+ <location filename="../../BasicMainWindow.cpp" line="2308"/>
+ <location filename="../../BasicMainWindow.cpp" line="2325"/>
+ <location filename="../../BasicMainWindow.cpp" line="2330"/>
<source>Clone</source>
<translation>克隆</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2209"/>
+ <location filename="../../BasicMainWindow.cpp" line="2307"/>
<source>A folder with same name already exists</source>
<translation>同名的文件夹已存在</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2226"/>
+ <location filename="../../BasicMainWindow.cpp" line="2324"/>
<source>Invalid folder</source>
<translation>无效文件夹</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2231"/>
+ <location filename="../../BasicMainWindow.cpp" line="2329"/>
<source>No such folder. Create it now ?</source>
<translation>此文件夹不存在。是否要创建?</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2291"/>
+ <location filename="../../BasicMainWindow.cpp" line="2398"/>
<source>Commit</source>
<translation>提交</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2291"/>
+ <location filename="../../BasicMainWindow.cpp" line="2398"/>
<source>Commit message can not be omitted.</source>
<translation>提交消息不能为空。</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2308"/>
+ <location filename="../../BasicMainWindow.cpp" line="2415"/>
<source>Failed to commit</source>
<translation>提交失败</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2342"/>
- <location filename="../../BasicMainWindow.cpp" line="2426"/>
+ <location filename="../../BasicMainWindow.cpp" line="2449"/>
+ <location filename="../../BasicMainWindow.cpp" line="2533"/>
<source>Connection refused.</source>
<translation>连接被拒绝。</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2395"/>
+ <location filename="../../BasicMainWindow.cpp" line="2502"/>
<source>No remote repository is registered.</source>
<translation>远程仓库未注册。</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2417"/>
+ <location filename="../../BasicMainWindow.cpp" line="2524"/>
<source>The current branch %1 has no upstream branch.</source>
<translation>目前的分支「%1」没有上游分支。</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2420"/>
+ <location filename="../../BasicMainWindow.cpp" line="2527"/>
<source>You try push --set-upstream</source>
<translation>请尝试--set-upstream </translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2509"/>
+ <location filename="../../BasicMainWindow.cpp" line="2616"/>
<source>Failed to delete the branch '%1'</source>
<translation>无法删除分支「%1」</translation>
</message>
<message>
<source>Failed to delete the branch '%1'
</source>
<translation type="vanished">无法删除分支: '%1'</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2573"/>
+ <location filename="../../BasicMainWindow.cpp" line="2680"/>
<source>Are you sure you want to run the following command ?</source>
<translation>您确定要运行以下命令吗?</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2594"/>
+ <location filename="../../BasicMainWindow.cpp" line="2701"/>
<source>Reset a file</source>
<translation>重置文件</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2608"/>
+ <location filename="../../BasicMainWindow.cpp" line="2715"/>
<source>Unnamed</source>
<translation>未命名</translation>
</message>
</context>
<context>
<name>BasicRepositoryDialog</name>
<message>
<location filename="../../BasicRepositoryDialog.cpp" line="66"/>
<source>Name</source>
<translation>名称</translation>
</message>
<message>
<location filename="../../BasicRepositoryDialog.cpp" line="67"/>
<source>Purpose</source>
<translation>用途</translation>
</message>
<message>
<location filename="../../BasicRepositoryDialog.cpp" line="68"/>
<source>URL</source>
<translation></translation>
</message>
</context>
<context>
<name>BigDiffWindow</name>
<message>
<location filename="../../BigDiffWindow.ui" line="14"/>
<source>Diff</source>
<translation>差异</translation>
</message>
</context>
<context>
<name>BlameWindow</name>
<message>
<location filename="../../BlameWindow.ui" line="14"/>
<source>Blame</source>
<translation>作者及修订版本信息</translation>
</message>
<message>
<location filename="../../BlameWindow.ui" line="45"/>
<source>Information</source>
<translation>信息</translation>
</message>
<message>
<location filename="../../BlameWindow.ui" line="60"/>
<source>Commit</source>
<translation>提交</translation>
</message>
<message>
<location filename="../../BlameWindow.ui" line="70"/>
<source>Date</source>
<translation>日期</translation>
</message>
<message>
<location filename="../../BlameWindow.ui" line="90"/>
<source>Message</source>
<translation>消息</translation>
</message>
<message>
<location filename="../../BlameWindow.ui" line="80"/>
<source>Author</source>
<translation>作者</translation>
</message>
<message>
<location filename="../../BlameWindow.ui" line="118"/>
<source>Close</source>
<translation>关闭</translation>
</message>
</context>
<context>
<name>CheckoutDialog</name>
<message>
<location filename="../../CheckoutDialog.ui" line="14"/>
<source>Checkout</source>
<translation>检出</translation>
</message>
<message>
<location filename="../../CheckoutDialog.ui" line="20"/>
<location filename="../../CheckoutDialog.ui" line="27"/>
<location filename="../../CheckoutDialog.ui" line="34"/>
<source>RadioButton</source>
<translation></translation>
</message>
<message>
<location filename="../../CheckoutDialog.ui" line="63"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<location filename="../../CheckoutDialog.ui" line="70"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
+<context>
+ <name>CherryPickDialog</name>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="14"/>
+ <source>Cherry-pick</source>
+ <translation type="unfinished">择优拣选</translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="20"/>
+ <source>HEAD</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="49"/>
+ <source>Pick</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="78"/>
+ <source>Mainline</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="109"/>
+ <source>Allow empty</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="131"/>
+ <source>OK</source>
+ <translation type="unfinished">确定</translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="138"/>
+ <source>Cancel</source>
+ <translation type="unfinished">取消</translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.cpp" line="19"/>
+ <source>Commit</source>
+ <translation type="unfinished">提交</translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.cpp" line="20"/>
+ <source>Date</source>
+ <translation type="unfinished">日期</translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.cpp" line="21"/>
+ <source>Author</source>
+ <translation type="unfinished">作者</translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.cpp" line="22"/>
+ <source>Message</source>
+ <translation type="unfinished">消息</translation>
+ </message>
+</context>
<context>
<name>CloneDialog</name>
<message>
<location filename="../../CloneDialog.ui" line="14"/>
<location filename="../../CloneDialog.ui" line="103"/>
<source>Clone</source>
<translation>克隆</translation>
</message>
<message>
<location filename="../../CloneDialog.ui" line="22"/>
<source>Remote</source>
<translation>远程</translation>
</message>
<message>
<location filename="../../CloneDialog.ui" line="39"/>
<source>&Test</source>
<translation>测试(&T)</translation>
</message>
<message>
<location filename="../../CloneDialog.ui" line="46"/>
<source>Local</source>
<translation>本地</translation>
</message>
<message>
<location filename="../../CloneDialog.ui" line="56"/>
<source>Browse</source>
<translation>浏览</translation>
</message>
<message>
<location filename="../../CloneDialog.ui" line="83"/>
<source>Open existing local directory...</source>
<translation>打开现有文件夹く...</translation>
</message>
<message>
<location filename="../../CloneDialog.ui" line="113"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
<location filename="../../CloneDialog.cpp" line="40"/>
<source>Search</source>
<translation>搜索</translation>
</message>
<message>
<location filename="../../CloneDialog.cpp" line="41"/>
<source>GitHub</source>
<translation></translation>
</message>
<message>
- <location filename="../../CloneDialog.cpp" line="108"/>
+ <location filename="../../CloneDialog.cpp" line="113"/>
<source>Checkout into</source>
<translation>检出到</translation>
</message>
<message>
- <location filename="../../CloneDialog.cpp" line="120"/>
+ <location filename="../../CloneDialog.cpp" line="125"/>
<source>Open existing directory</source>
<translation>打开现有文件夹</translation>
</message>
</context>
<context>
<name>CloneFromGitHubDialog</name>
<message>
<location filename="../../CloneFromGitHubDialog.ui" line="14"/>
<source>Clone from GitHub</source>
<translation>从GitHub克隆</translation>
</message>
<message>
<location filename="../../CloneFromGitHubDialog.ui" line="45"/>
<source>ssh</source>
<translation>ssh</translation>
</message>
<message>
<location filename="../../CloneFromGitHubDialog.ui" line="55"/>
<source>http</source>
<translation>http</translation>
</message>
<message>
<location filename="../../CloneFromGitHubDialog.ui" line="95"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<location filename="../../CloneFromGitHubDialog.ui" line="102"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>CommitDialog</name>
<message>
<location filename="../../CommitDialog.ui" line="14"/>
<source>Commit</source>
<translation>提交</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="27"/>
<source>TextLabel</source>
<translation></translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="49"/>
<source>Author</source>
<translation>作者</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="68"/>
<location filename="../../CommitDialog.ui" line="94"/>
<location filename="../../CommitDialog.ui" line="139"/>
<location filename="../../CommitDialog.ui" line="159"/>
<location filename="../../CommitDialog.ui" line="179"/>
<source>---</source>
<translation></translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="75"/>
<location filename="../../CommitDialog.ui" line="166"/>
<source>Mail</source>
<translation>邮箱</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="111"/>
<source>GPG Signing</source>
<translation>GPG签名</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="126"/>
<source>ID</source>
<translation>ID</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="146"/>
<source>Name</source>
<translation>名称</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="189"/>
<source>Configure...</source>
<translation>配置...</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="198"/>
<source>Message</source>
<translation>消息</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="223"/>
<source>OK</source>
<translation></translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="233"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>CommitExploreWindow</name>
<message>
<location filename="../../CommitExploreWindow.ui" line="14"/>
<source>Commit Explorer</source>
<translation>提交浏览器</translation>
</message>
<message>
<location filename="../../CommitExploreWindow.ui" line="65"/>
<source>Commit ID</source>
<translation>提交ID</translation>
</message>
<message>
<location filename="../../CommitExploreWindow.ui" line="82"/>
<source>Date</source>
<translation>日期</translation>
</message>
<message>
<location filename="../../CommitExploreWindow.ui" line="89"/>
<source>Author</source>
<translation>作者</translation>
</message>
<message>
<location filename="../../CommitExploreWindow.cpp" line="78"/>
<source>Commit</source>
<translation>提交</translation>
</message>
</context>
<context>
<name>CommitPropertyDialog</name>
<message>
<location filename="../../CommitPropertyDialog.ui" line="14"/>
<source>Commit Property</source>
<oldsource>Commit Properties</oldsource>
<translation>提交属性</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="46"/>
<source>Date</source>
<translation>日期</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="56"/>
<source>Author</source>
<translation>作者</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="66"/>
<location filename="../../CommitPropertyDialog.ui" line="196"/>
<source>Mail</source>
<translation>邮箱</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="154"/>
<source>GPG Sign</source>
<translation>GPG签名</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="176"/>
<source>ID</source>
<translation>ID</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="186"/>
<source>Name</source>
<translation>名称</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="233"/>
<source>Commit ID</source>
<translation>提交ID</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="243"/>
<source>Parent IDs</source>
<translation>父ID</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="265"/>
<source>Files...</source>
<translation>文件...</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="285"/>
<source>Explorer</source>
<translation>浏览器</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="305"/>
<source>Checkout</source>
<translation>检出</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="312"/>
<source>Jump</source>
<translation>跳转</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="332"/>
<source>Close</source>
<translation>关闭</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.cpp" line="60"/>
<source><Unknown></source>
<translation><未知的></translation>
</message>
</context>
<context>
<name>CommitViewWindow</name>
<message>
<location filename="../../CommitViewWindow.ui" line="14"/>
<source>Commit View</source>
<translation>提交视图</translation>
</message>
<message>
<location filename="../../CommitViewWindow.cpp" line="58"/>
<source>History</source>
<translation>历史</translation>
</message>
</context>
<context>
<name>ConfigCredentialHelperDialog</name>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="14"/>
<source>Dialog</source>
<translation></translation>
</message>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="26"/>
<source>wincred</source>
<translation></translation>
</message>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="39"/>
<source>winstore</source>
<translation></translation>
</message>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="52"/>
<source>None</source>
<translation>无</translation>
</message>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="65"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="78"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="91"/>
<source>Other</source>
<translation>其他</translation>
</message>
</context>
<context>
<name>ConfigSigningDialog</name>
<message>
<location filename="../../ConfigSigningDialog.ui" line="14"/>
<source>Signing Policy</source>
<translation>签名策略</translation>
</message>
<message>
<location filename="../../ConfigSigningDialog.ui" line="20"/>
<source>Config commit.gpgsign</source>
<translation>配置commit.gpgsign</translation>
</message>
<message>
<location filename="../../ConfigSigningDialog.ui" line="32"/>
<source>global</source>
<translation>全局</translation>
</message>
<message>
<location filename="../../ConfigSigningDialog.ui" line="42"/>
<source>local</source>
<translation>局部</translation>
</message>
<message>
<location filename="../../ConfigSigningDialog.ui" line="70"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<location filename="../../ConfigSigningDialog.ui" line="77"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>CreateRepositoryDialog</name>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="14"/>
<location filename="../../CreateRepositoryDialog.cpp" line="42"/>
<location filename="../../CreateRepositoryDialog.cpp" line="46"/>
<location filename="../../CreateRepositoryDialog.cpp" line="50"/>
<location filename="../../CreateRepositoryDialog.cpp" line="54"/>
<source>Create Repository</source>
<translation>创建仓库</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="22"/>
<source>Path</source>
<translation>路径</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="32"/>
<source>Browse</source>
<translation>浏览</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="54"/>
<source>Bookmark</source>
<translation>书签</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="63"/>
<location filename="../../CreateRepositoryDialog.ui" line="88"/>
<source>Name</source>
<translation>名称</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="76"/>
<source>Remote</source>
<translation>远程</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="98"/>
<source>URL</source>
<translation>URL</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="108"/>
<source>Test</source>
<translation>测试</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="146"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="153"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.cpp" line="19"/>
<source>A valid git repository already exists there.</source>
<translation>已存在有效的仓库。</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.cpp" line="42"/>
<location filename="../../CreateRepositoryDialog.cpp" line="50"/>
<source>The specified path is not a directory.</source>
<translation>指定的路径不是文件夹。</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.cpp" line="54"/>
<source>Remote name is invalid.</source>
<translation>远程名称无效。</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.cpp" line="62"/>
<source>Destination Path</source>
<translation>目标路径</translation>
</message>
</context>
<context>
<name>DeleteBranchDialog</name>
<message>
<location filename="../../DeleteBranchDialog.ui" line="14"/>
<source>Delete Branch</source>
<translation>删除分支</translation>
</message>
<message>
<location filename="../../DeleteBranchDialog.ui" line="25"/>
<source>&All branches</source>
<translation>所有分支(&A)</translation>
</message>
<message>
<location filename="../../DeleteBranchDialog.ui" line="45"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<location filename="../../DeleteBranchDialog.ui" line="52"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
<location filename="../../DeleteBranchDialog.cpp" line="23"/>
<source>Delete Remote Branch</source>
<translation>删除远程分支</translation>
</message>
</context>
<context>
<name>DeleteTagsDialog</name>
<message>
<location filename="../../DeleteTagsDialog.ui" line="14"/>
<source>Delete tags</source>
<translation>删除标签</translation>
</message>
<message>
<location filename="../../DeleteTagsDialog.ui" line="32"/>
<source>Check all</source>
<translation>检查所有</translation>
</message>
<message>
<location filename="../../DeleteTagsDialog.ui" line="52"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<location filename="../../DeleteTagsDialog.ui" line="62"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>DoYouWantToInitDialog</name>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="14"/>
<source>Init Repository</source>
<translation>初始化仓库</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="20"/>
<source>The folder:</source>
<translation>文件夹:</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="32"/>
<source>is not a valid git working copy.</source>
<translation>不是有效的Git仓库。</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="39"/>
<source>Do you want to init it as a git repository ?</source>
<translation>您想将其初始化为Git仓库吗?</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="81"/>
<source>Yes, Please init it.</source>
<translation>是,请初始化。</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="88"/>
<source>No, Stop it.</source>
<translation>否,不要初始化。</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="140"/>
<source>Please choose option</source>
<translation>请选择</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.cpp" line="20"/>
<source>Next...</source>
<translation>下一步...</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.cpp" line="26"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>EditGitIgnoreDialog</name>
<message>
<location filename="../../EditGitIgnoreDialog.ui" line="14"/>
<source>Edit Git Ignore</source>
<translation>编辑Git忽略的文件</translation>
</message>
<message>
<location filename="../../EditGitIgnoreDialog.ui" line="20"/>
<location filename="../../EditGitIgnoreDialog.ui" line="27"/>
<location filename="../../EditGitIgnoreDialog.ui" line="34"/>
<location filename="../../EditGitIgnoreDialog.ui" line="41"/>
<source>RadioButton</source>
<translation></translation>
</message>
<message>
<location filename="../../EditGitIgnoreDialog.ui" line="63"/>
<source>Edit the file</source>
<translation>编辑文件</translation>
</message>
<message>
<location filename="../../EditGitIgnoreDialog.ui" line="83"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<location filename="../../EditGitIgnoreDialog.ui" line="90"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>EditRemoteDialog</name>
<message>
<location filename="../../EditRemoteDialog.ui" line="14"/>
<source>Edit Remote</source>
<translation>远程编辑</translation>
</message>
<message>
<location filename="../../EditRemoteDialog.ui" line="20"/>
<source>Remote</source>
<translation>远程</translation>
</message>
<message>
<location filename="../../EditRemoteDialog.ui" line="26"/>
<source>Name</source>
<translation>名称</translation>
</message>
<message>
<location filename="../../EditRemoteDialog.ui" line="33"/>
<source>URL</source>
<translation>URL</translation>
</message>
<message>
<location filename="../../EditRemoteDialog.ui" line="53"/>
<source>&Test</source>
<translation>测试(&T)</translation>
</message>
<message>
<location filename="../../EditRemoteDialog.ui" line="81"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<location filename="../../EditRemoteDialog.ui" line="88"/>
<source>Close</source>
<translation>关闭</translation>
</message>
</context>
<context>
<name>EditTagsDialog</name>
<message>
<location filename="../../EditTagsDialog.ui" line="14"/>
<source>Edit Tags</source>
<translation>编辑标签</translation>
</message>
<message>
<location filename="../../EditTagsDialog.ui" line="41"/>
<source>Add...</source>
<translation>添加...</translation>
</message>
<message>
<location filename="../../EditTagsDialog.ui" line="48"/>
<source>Delete</source>
<translation>删除</translation>
</message>
<message>
<location filename="../../EditTagsDialog.ui" line="68"/>
<source>Close</source>
<translation>关闭</translation>
</message>
</context>
<context>
<name>ExperimentDialog</name>
<message>
<location filename="../../ExperimentDialog.ui" line="14"/>
<source>Dialog</source>
<translation></translation>
</message>
</context>
<context>
<name>FileDiffWidget</name>
<message>
<location filename="../../FileDiffWidget.ui" line="14"/>
<source>Dialog</source>
<translation></translation>
</message>
</context>
<context>
<name>FileHistoryWindow</name>
<message>
<location filename="../../FileHistoryWindow.ui" line="14"/>
<source>File History</source>
<translation>文件历史</translation>
</message>
<message>
<location filename="../../FileHistoryWindow.ui" line="20"/>
<location filename="../../FileHistoryWindow.ui" line="27"/>
<source>TextLabel</source>
<translation></translation>
</message>
<message>
<location filename="../../FileHistoryWindow.cpp" line="111"/>
<source>Commit</source>
<translation>提交</translation>
</message>
<message>
<location filename="../../FileHistoryWindow.cpp" line="112"/>
<source>Date</source>
<translation>日期</translation>
</message>
<message>
<location filename="../../FileHistoryWindow.cpp" line="113"/>
<source>Author</source>
<translation>作者</translation>
</message>
<message>
<location filename="../../FileHistoryWindow.cpp" line="114"/>
<source>Message</source>
<translation>消息</translation>
</message>
<message>
<source>Description</source>
<translation type="vanished">描述</translation>
</message>
</context>
<context>
<name>FilePropertyDialog</name>
<message>
<location filename="../../FilePropertyDialog.ui" line="14"/>
<source>File Property</source>
<oldsource>File Properties</oldsource>
<translation>文件属性</translation>
</message>
<message>
<location filename="../../FilePropertyDialog.ui" line="78"/>
<source>&Close</source>
<translation>关闭(&C)</translation>
</message>
</context>
<context>
- <name>FileViewWidget</name>
+ <name>FindCommitDialog</name>
<message>
- <location filename="../../FileViewWidget.cpp" line="30"/>
- <source>Form</source>
- <translation></translation>
+ <location filename="../../FindCommitDialog.ui" line="14"/>
+ <source>Find Commit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FindCommitDialog.ui" line="54"/>
+ <source>OK</source>
+ <translation type="unfinished">确定</translation>
+ </message>
+ <message>
+ <location filename="../../FindCommitDialog.ui" line="61"/>
+ <source>Cancel</source>
+ <translation type="unfinished">取消</translation>
</message>
</context>
<context>
<name>InputNewTagDialog</name>
<message>
<location filename="../../InputNewTagDialog.ui" line="14"/>
<source>Edit tag</source>
<translation>编辑标签</translation>
</message>
<message>
<location filename="../../InputNewTagDialog.ui" line="31"/>
<source>Tag</source>
<translation>标签</translation>
</message>
<message>
<location filename="../../InputNewTagDialog.ui" line="58"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<location filename="../../InputNewTagDialog.ui" line="65"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>JumpDialog</name>
<message>
<location filename="../../JumpDialog.ui" line="14"/>
<source>Jump</source>
<translation>跳转</translation>
</message>
<message>
<source>Branches and Tags</source>
<translation type="vanished">分支和标签</translation>
</message>
<message>
<source>&Filter</source>
<translation type="vanished">过滤器(&F)</translation>
</message>
<message>
<source>Find</source>
<translation type="vanished">查找</translation>
</message>
<message>
<source>&Checkout</source>
<translation type="vanished">检出(&C)</translation>
</message>
<message>
<location filename="../../JumpDialog.ui" line="20"/>
<source>Branch, Tag or Commit-ID :</source>
<translation>分支,标签,提交ID</translation>
</message>
<message>
<location filename="../../JumpDialog.ui" line="71"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<location filename="../../JumpDialog.ui" line="81"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
- <location filename="../../JumpDialog.cpp" line="37"/>
+ <location filename="../../JumpDialog.cpp" line="39"/>
<source>Name</source>
<translation>名称</translation>
</message>
</context>
+<context>
+ <name>Languages</name>
+ <message>
+ <location filename="../../Languages.cpp" line="6"/>
+ <source>English</source>
+ <translation type="unfinished">英语</translation>
+ </message>
+ <message>
+ <location filename="../../Languages.cpp" line="7"/>
+ <source>Japanese</source>
+ <translation type="unfinished">日语</translation>
+ </message>
+ <message>
+ <location filename="../../Languages.cpp" line="8"/>
+ <source>Russian</source>
+ <translation type="unfinished">俄语</translation>
+ </message>
+ <message>
+ <location filename="../../Languages.cpp" line="9"/>
+ <source>Chinese (Simplified)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Languages.cpp" line="10"/>
+ <source>Chinese (Traditional/Taiwan)</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
<context>
<name>LineEditDialog</name>
<message>
<location filename="../../LineEditDialog.ui" line="14"/>
<source>Dialog</source>
<translation>行编辑</translation>
</message>
<message>
<location filename="../../LineEditDialog.ui" line="20"/>
<source>TextLabel</source>
<translation></translation>
</message>
<message>
<location filename="../../LineEditDialog.ui" line="45"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<location filename="../../LineEditDialog.ui" line="52"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../../MainWindow.ui" line="14"/>
<source>Guitar</source>
<translation>Guitar</translation>
</message>
<message>
<location filename="../../MainWindow.ui" line="96"/>
- <location filename="../../MainWindow.ui" line="1352"/>
- <location filename="../../MainWindow.ui" line="1355"/>
+ <location filename="../../MainWindow.ui" line="1421"/>
+ <location filename="../../MainWindow.ui" line="1424"/>
<source>Clone</source>
<translation>克隆</translation>
</message>
<message>
<location filename="../../MainWindow.ui" line="131"/>
- <location filename="../../MainWindow.cpp" line="2201"/>
- <location filename="../../MainWindow.cpp" line="2202"/>
+ <location filename="../../MainWindow.cpp" line="1140"/>
+ <location filename="../../MainWindow.cpp" line="1141"/>
<source>Fetch</source>
<translation>取出</translation>
</message>
<message>
<location filename="../../MainWindow.ui" line="166"/>
<source>Pull</source>
<translation>拉取</translation>
</message>
<message>
<location filename="../../MainWindow.ui" line="201"/>
<source>Push</source>
<translation>推送</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="252"/>
- <location filename="../../MainWindow.ui" line="1476"/>
+ <location filename="../../MainWindow.ui" line="303"/>
+ <location filename="../../MainWindow.ui" line="1548"/>
<source>Terminal</source>
<translation>终端</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="287"/>
- <location filename="../../MainWindow.ui" line="1485"/>
+ <location filename="../../MainWindow.ui" line="338"/>
+ <location filename="../../MainWindow.ui" line="1557"/>
<source>Explorer</source>
<translation>资源管理器</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="373"/>
+ <location filename="../../MainWindow.ui" line="424"/>
<source>Repository</source>
<translation>仓库</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="380"/>
+ <location filename="../../MainWindow.ui" line="431"/>
<source>Branch Name</source>
<translation>分支名称</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="432"/>
- <location filename="../../MainWindow.ui" line="1520"/>
+ <location filename="../../MainWindow.ui" line="483"/>
+ <location filename="../../MainWindow.ui" line="1592"/>
<source>Offline</source>
<translation>离线</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="422"/>
- <location filename="../../MainWindow.ui" line="1515"/>
+ <location filename="../../MainWindow.ui" line="473"/>
+ <location filename="../../MainWindow.ui" line="1587"/>
<source>Online</source>
<translation>在线</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="748"/>
- <location filename="../../MainWindow.cpp" line="1598"/>
+ <location filename="../../MainWindow.ui" line="799"/>
+ <location filename="../../MainWindow.cpp" line="1853"/>
<source>Unstage</source>
<translation>unstage</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="777"/>
+ <location filename="../../MainWindow.ui" line="828"/>
<source>Select all</source>
<translation>全选</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="812"/>
- <location filename="../../MainWindow.cpp" line="1468"/>
+ <location filename="../../MainWindow.ui" line="863"/>
+ <location filename="../../MainWindow.cpp" line="1723"/>
<source>Stage</source>
<translation>stage</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="841"/>
- <location filename="../../MainWindow.cpp" line="841"/>
+ <location filename="../../MainWindow.ui" line="892"/>
+ <location filename="../../MainWindow.cpp" line="879"/>
<source>Commit</source>
<translation>提交</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="972"/>
+ <location filename="../../MainWindow.ui" line="1023"/>
<source>&File</source>
<translation>文件(&F)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="983"/>
+ <location filename="../../MainWindow.ui" line="1034"/>
<source>&View</source>
<translation>表示(&V)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="989"/>
+ <location filename="../../MainWindow.ui" line="1040"/>
<source>&Edit</source>
<translation>编辑(&E)</translation>
</message>
<message>
<source>Destructive</source>
<translation type="vanished">需要注意的命令</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1343"/>
+ <location filename="../../MainWindow.ui" line="1412"/>
<source>Settings</source>
<translation>设置</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1365"/>
- <location filename="../../MainWindow.cpp" line="1332"/>
+ <location filename="../../MainWindow.ui" line="1434"/>
+ <location filename="../../MainWindow.cpp" line="1595"/>
<source>Edit tags...</source>
<translation>编辑标签...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1368"/>
+ <location filename="../../MainWindow.ui" line="1437"/>
<source>Edit tags</source>
<translation>编辑标签</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1490"/>
+ <location filename="../../MainWindow.ui" line="1562"/>
<source>Clean -df</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1495"/>
+ <location filename="../../MainWindow.ui" line="1567"/>
<source>Reset --hard</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1422"/>
+ <location filename="../../MainWindow.ui" line="1494"/>
<source>Create a repository</source>
<translation>创建仓库</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1409"/>
+ <location filename="../../MainWindow.ui" line="1481"/>
<source>Push upstream</source>
<translation>推送到上游</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1431"/>
+ <location filename="../../MainWindow.ui" line="1503"/>
<source>Stop process</source>
<translation>停止处理</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1436"/>
+ <location filename="../../MainWindow.ui" line="1508"/>
<source>E&xit</source>
<translation>退出(&X)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1439"/>
+ <location filename="../../MainWindow.ui" line="1511"/>
<source>Ctrl+Q</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1444"/>
+ <location filename="../../MainWindow.ui" line="1516"/>
<source>Reflog...</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1449"/>
+ <location filename="../../MainWindow.ui" line="1521"/>
<source>Property...</source>
<translation>属性...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1454"/>
- <location filename="../../MainWindow.ui" line="1457"/>
+ <location filename="../../MainWindow.ui" line="1526"/>
+ <location filename="../../MainWindow.ui" line="1529"/>
<source>Set GPG signing</source>
<translation>设置GPG签名</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1467"/>
+ <location filename="../../MainWindow.ui" line="1539"/>
<source>Fetch --prune</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1001"/>
+ <location filename="../../MainWindow.ui" line="1055"/>
<source>&Help</source>
<translation>帮助(&H)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="605"/>
+ <location filename="../../MainWindow.ui" line="252"/>
+ <location filename="../../MainWindow.ui" line="1628"/>
+ <location filename="../../MainWindow.cpp" line="1353"/>
+ <source>Status</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="656"/>
<source>...</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1007"/>
+ <location filename="../../MainWindow.ui" line="1061"/>
<source>&Window</source>
<translation>窗口(&W)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1013"/>
+ <location filename="../../MainWindow.ui" line="1067"/>
<source>&Repository</source>
<translation>仓库(&R)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1017"/>
- <location filename="../../MainWindow.ui" line="1500"/>
+ <location filename="../../MainWindow.ui" line="1071"/>
+ <location filename="../../MainWindow.ui" line="1572"/>
<source>Stash</source>
<translation>贮存</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1040"/>
+ <location filename="../../MainWindow.ui" line="1098"/>
<source>Re&mote</source>
<translation>远程(&M)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1055"/>
+ <location filename="../../MainWindow.ui" line="1113"/>
<source>&Destructive</source>
<translation>注意(&D)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1086"/>
+ <location filename="../../MainWindow.ui" line="1125"/>
+ <source>Experimental</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1155"/>
<source>Log</source>
<translation>日志</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1256"/>
+ <location filename="../../MainWindow.ui" line="1325"/>
<source>&Open existing working copy...</source>
<translation>打开现有工作副本(&O)...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1259"/>
- <location filename="../../MainWindow.cpp" line="1661"/>
+ <location filename="../../MainWindow.ui" line="1328"/>
+ <location filename="../../MainWindow.cpp" line="2027"/>
<source>Add existing working copy</source>
<translation>添加现有工作副本</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1264"/>
- <location filename="../../MainWindow.ui" line="1267"/>
+ <location filename="../../MainWindow.ui" line="1333"/>
+ <location filename="../../MainWindow.ui" line="1336"/>
<source>Refresh</source>
<translation>刷新</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1270"/>
+ <location filename="../../MainWindow.ui" line="1339"/>
<source>F5</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1279"/>
+ <location filename="../../MainWindow.ui" line="1348"/>
<source>&Commit</source>
<translation>提交(&C)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1288"/>
+ <location filename="../../MainWindow.ui" line="1357"/>
<source>&Push</source>
<translation>推送(&P)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1296"/>
+ <location filename="../../MainWindow.ui" line="1365"/>
<source>test</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1299"/>
+ <location filename="../../MainWindow.ui" line="1368"/>
<source>Ctrl+T</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1308"/>
+ <location filename="../../MainWindow.ui" line="1377"/>
<source>Pu&ll</source>
<translation>拉取(&L)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1317"/>
+ <location filename="../../MainWindow.ui" line="1386"/>
<source>&Fetch</source>
<translation>取出(&F)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1322"/>
- <location filename="../../MainWindow.ui" line="1325"/>
+ <location filename="../../MainWindow.ui" line="1391"/>
+ <location filename="../../MainWindow.ui" line="1394"/>
<source>Edit global .gitconfig</source>
<translation>编辑全局.gitignore</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1330"/>
+ <location filename="../../MainWindow.ui" line="1399"/>
<source>Edit .git/config</source>
<translation>编辑.git/config</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1335"/>
+ <location filename="../../MainWindow.ui" line="1404"/>
<source>Edit .gitignore</source>
<translation>编辑.gitignore</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1340"/>
+ <location filename="../../MainWindow.ui" line="1409"/>
<source>&Settings...</source>
<translation>设置(&S)...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1391"/>
+ <location filename="../../MainWindow.ui" line="1458"/>
+ <source>F4</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1463"/>
<source>&Jump...</source>
<translation>跳转(&J)...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1394"/>
+ <location filename="../../MainWindow.ui" line="1466"/>
<source>Ctrl+J</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1399"/>
+ <location filename="../../MainWindow.ui" line="1471"/>
<source>Check&out...</source>
<translation>检出(&O)...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1404"/>
- <location filename="../../MainWindow.cpp" line="1344"/>
+ <location filename="../../MainWindow.ui" line="1476"/>
+ <location filename="../../MainWindow.cpp" line="1600"/>
<source>Delete branch...</source>
<translation>删除分支...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1505"/>
+ <location filename="../../MainWindow.ui" line="1577"/>
<source>Apply</source>
<translation>应用</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1510"/>
+ <location filename="../../MainWindow.ui" line="1582"/>
<source>Drop</source>
<translation>丢弃</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1528"/>
+ <location filename="../../MainWindow.ui" line="1600"/>
<source>Repositories panel</source>
<translation>仓库面板</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1531"/>
+ <location filename="../../MainWindow.ui" line="1603"/>
<source>Ctrl+R</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1414"/>
- <location filename="../../MainWindow.ui" line="1417"/>
+ <location filename="../../MainWindow.ui" line="1608"/>
+ <source>&Find...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1611"/>
+ <source>Ctrl+F</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1616"/>
+ <source>Find next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1619"/>
+ <source>F3</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1633"/>
+ <source>Jump to &HEAD</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1636"/>
+ <source>Ctrl+H</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1641"/>
+ <source>Merge...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1646"/>
+ <source>Expand commit log</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1649"/>
+ <source>Ctrl+2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1654"/>
+ <source>Expand file list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1657"/>
+ <source>Ctrl+3</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1662"/>
+ <source>Expand diff view</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1665"/>
+ <source>Ctrl+4</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1670"/>
+ <source>Sidebar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1673"/>
+ <source>F1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1678"/>
+ <source>Wide</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1681"/>
+ <source>F2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1486"/>
+ <location filename="../../MainWindow.ui" line="1489"/>
<source>Reset HEAD~1</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1462"/>
- <location filename="../../MainWindow.cpp" line="1345"/>
+ <location filename="../../MainWindow.ui" line="1534"/>
+ <location filename="../../MainWindow.cpp" line="1601"/>
<source>Delete remote branch...</source>
<translation>删除远程分支...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1360"/>
+ <location filename="../../MainWindow.ui" line="1429"/>
<source>&About</source>
<translation>关于Guitar(&A)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1373"/>
+ <location filename="../../MainWindow.ui" line="1442"/>
<source>Push all tags</source>
<translation>推送所有标签</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1378"/>
+ <location filename="../../MainWindow.ui" line="1447"/>
<source>Set config user</source>
<translation>设置用户信息</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1386"/>
+ <location filename="../../MainWindow.ui" line="1455"/>
<source>&Log</source>
<translation>日志(&L)</translation>
</message>
<message>
<source>Unnamed</source>
<translation type="vanished">未命名</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="643"/>
+ <location filename="../../MainWindow.cpp" line="679"/>
<source>Default</source>
<translation>缺省</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="840"/>
+ <location filename="../../MainWindow.cpp" line="878"/>
<source>Graph</source>
<translation>树形图</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="842"/>
+ <location filename="../../MainWindow.cpp" line="880"/>
<source>Date</source>
<translation>日期</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="843"/>
+ <location filename="../../MainWindow.cpp" line="881"/>
<source>Author</source>
<translation>作者</translation>
</message>
<message>
<source>Description</source>
<translation type="vanished">描述</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="990"/>
- <location filename="../../MainWindow.cpp" line="1119"/>
+ <location filename="../../MainWindow.cpp" line="1029"/>
+ <location filename="../../MainWindow.cpp" line="1199"/>
<source>Uncommited changes</source>
<translation>未提交的更改</translation>
</message>
<message>
<source>Are you sure you want to remove the repository from bookmarks ?</source>
<translation type="vanished">确定要从书签中删除仓库吗?</translation>
</message>
<message>
<source>(Files will NOT be deleted)</source>
<translation type="vanished">(该文件未被删除。)</translation>
</message>
<message>
<source>Open Repository</source>
<translation type="vanished">打开仓库く</translation>
</message>
<message>
<source>No such folder</source>
<translation type="vanished">没有这样的文件夹。</translation>
</message>
<message>
<source>Not a valid git repository</source>
<translation type="vanished">不是有效的仓库</translation>
</message>
<message>
<source>Commit message can not be omitted.</source>
<translation type="vanished">提交消息不能为空。</translation>
</message>
<message>
<source>Repository Property</source>
<translation type="vanished">仓库属性</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1222"/>
+ <location filename="../../MainWindow.cpp" line="1457"/>
<source>&Add new group</source>
<translation>添加新组(&A)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1223"/>
+ <location filename="../../MainWindow.cpp" line="1458"/>
<source>&Delete group</source>
<translation>删除组(&D)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1224"/>
+ <location filename="../../MainWindow.cpp" line="1459"/>
<source>&Rename group</source>
<translation>重命名组(&R)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1229"/>
+ <location filename="../../MainWindow.cpp" line="1464"/>
<source>New group</source>
<translation>新建组</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1253"/>
+ <location filename="../../MainWindow.cpp" line="1488"/>
<source>Open &terminal</source>
<translation>打开终端(&T)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1254"/>
+ <location filename="../../MainWindow.cpp" line="1489"/>
<source>Open command promp&t</source>
<translation>打开命令提示符(&T)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1256"/>
+ <location filename="../../MainWindow.cpp" line="1491"/>
<source>&Open</source>
<translation>打开く(&O)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1267"/>
+ <location filename="../../MainWindow.cpp" line="1502"/>
<source>Open &folder</source>
<translation>打开文件夹(&F)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1272"/>
+ <location filename="../../MainWindow.cpp" line="1507"/>
<source>&Remove</source>
<translation>删除(&R)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1315"/>
+ <location filename="../../MainWindow.cpp" line="1550"/>
<source>Copy commit id (7 letters)</source>
<translation>复制提交ID(7个字母)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1316"/>
+ <location filename="../../MainWindow.cpp" line="1551"/>
<source>Copy commit id (completely)</source>
<translation>复制提交ID(全部)</translation>
</message>
<message>
<source>Edit comment...</source>
<translation type="vanished">编辑注释...</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1330"/>
- <location filename="../../MainWindow.cpp" line="2134"/>
+ <location filename="../../MainWindow.cpp" line="1242"/>
+ <location filename="../../MainWindow.cpp" line="1593"/>
<source>Rebase</source>
<translation>重新设置基线</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1349"/>
+ <location filename="../../MainWindow.cpp" line="1605"/>
<source>Explore</source>
<translation>浏览</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1338"/>
<source>Reset HEAD</source>
- <translation>重置HEAD</translation>
+ <translation type="vanished">重置HEAD</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="844"/>
+ <location filename="../../MainWindow.cpp" line="882"/>
<source>Message</source>
<translation>消息</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1424"/>
- <location filename="../../MainWindow.cpp" line="1473"/>
- <location filename="../../MainWindow.cpp" line="1599"/>
+ <location filename="../../MainWindow.cpp" line="1679"/>
+ <location filename="../../MainWindow.cpp" line="1728"/>
+ <location filename="../../MainWindow.cpp" line="1854"/>
<source>History</source>
<translation>历史</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="2092"/>
- <location filename="../../MainWindow.cpp" line="2106"/>
+ <location filename="../../MainWindow.cpp" line="2436"/>
+ <location filename="../../MainWindow.cpp" line="2450"/>
<source>No such commit</source>
<translation>没有这样的提交</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="2204"/>
- <location filename="../../MainWindow.cpp" line="2205"/>
+ <location filename="../../MainWindow.cpp" line="1143"/>
+ <location filename="../../MainWindow.cpp" line="1144"/>
<source>Update</source>
<translation>更新</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="2485"/>
+ <location filename="../../MainWindow.cpp" line="2762"/>
<source>Authentication Failed</source>
<translation>认证失败</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1333"/>
+ <location filename="../../MainWindow.cpp" line="1596"/>
<source>Revert</source>
<translation>放弃更改</translation>
</message>
<message>
<source>Failed to commit</source>
<translation type="vanished">提交失败</translation>
</message>
<message>
<source>No remote repository is registered.</source>
<translation type="vanished">远程仓库未注册。</translation>
</message>
<message>
<source>The current branch %1 has no upstream branch.</source>
<translation type="vanished">目前的分支「%1」没有上游分支。</translation>
</message>
<message>
<source>You try push --set-upstream</source>
<translation type="vanished">请尝试--set-upstream</translation>
</message>
<message>
<source>Connection refused.</source>
<translation type="vanished">连接被拒绝。</translation>
</message>
<message>
<source>&Property</source>
<translation type="vanished">属性(&P)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1320"/>
+ <location filename="../../MainWindow.cpp" line="1567"/>
<source>Checkout/Branch...</source>
<translation>检出/分支...</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1326"/>
+ <location filename="../../MainWindow.cpp" line="1589"/>
<source>Edit message...</source>
<translation>编辑消息...</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1329"/>
+ <location filename="../../MainWindow.cpp" line="1592"/>
<source>Merge</source>
<translation>合并</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1331"/>
+ <location filename="../../MainWindow.cpp" line="1594"/>
<source>Cherry-pick</source>
<translation>择优拣选</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1423"/>
- <location filename="../../MainWindow.cpp" line="1472"/>
+ <location filename="../../MainWindow.cpp" line="1678"/>
+ <location filename="../../MainWindow.cpp" line="1727"/>
<source>Untrack</source>
<translation>不跟踪</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1425"/>
- <location filename="../../MainWindow.cpp" line="1474"/>
- <location filename="../../MainWindow.cpp" line="1600"/>
+ <location filename="../../MainWindow.cpp" line="1680"/>
+ <location filename="../../MainWindow.cpp" line="1729"/>
+ <location filename="../../MainWindow.cpp" line="1855"/>
<source>Blame</source>
<translation>作者及版本修订信息</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1433"/>
+ <location filename="../../MainWindow.cpp" line="1688"/>
<source>Delete selected files.</source>
<translation>删除所选文件。</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1444"/>
+ <location filename="../../MainWindow.cpp" line="1699"/>
<source>rm --cached files</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1469"/>
+ <location filename="../../MainWindow.cpp" line="1724"/>
<source>Reset</source>
<translation>重置</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1470"/>
+ <location filename="../../MainWindow.cpp" line="1725"/>
<source>Ignore</source>
<translation>忽略</translation>
</message>
<message>
<source>Reset a file</source>
<translation type="vanished">重置文件</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="2131"/>
+ <location filename="../../MainWindow.cpp" line="1239"/>
<source>Are you sure you want to rebase the commit ?</source>
<translation>是否确实要将该提交重新设置为基线?</translation>
</message>
<message>
<source>No repository selected</source>
<translation type="vanished">没有选择仓库</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1422"/>
- <location filename="../../MainWindow.cpp" line="1471"/>
+ <location filename="../../MainWindow.cpp" line="1677"/>
+ <location filename="../../MainWindow.cpp" line="1726"/>
<source>Delete</source>
<translation>删除</translation>
</message>
<message>
<source>Are you sure you want to run the following command ?</source>
<translation type="vanished">确定要运行以下命令吗??</translation>
</message>
<message>
<source>Revert all files</source>
<translation type="vanished">放弃所有文件更改</translation>
</message>
<message>
<source>Select %1 command</source>
<translation type="vanished">选择「%1」命令</translation>
</message>
<message>
<source>A file with same name already exists</source>
<translation type="vanished">同名的文件已存在</translation>
</message>
<message>
<source>A folder with same name already exists</source>
<translation type="vanished">同名的文件夹已存在</translation>
</message>
<message>
<source>Invalid folder</source>
<translation type="vanished">文件夹无效</translation>
</message>
<message>
<source>No such folder. Create it now ?</source>
<translation type="vanished">此文件夹不存在。是否要创建?</translation>
</message>
<message>
<source>The URL is a valid repository</source>
<translation type="vanished">此URL是有效的仓库</translation>
</message>
<message>
<source>Failed to access the URL</source>
<translation type="vanished">无法访问此URL</translation>
</message>
<message>
<source>Remote Repository</source>
<translation type="vanished">远程仓库</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="2092"/>
- <location filename="../../MainWindow.cpp" line="2106"/>
+ <location filename="../../MainWindow.cpp" line="2436"/>
+ <location filename="../../MainWindow.cpp" line="2450"/>
<source>Jump</source>
<translation>跳转</translation>
</message>
<message>
<source>That commmit has not foud or not read yet</source>
<translation type="vanished">未找到或尚未读取到提交</translation>
</message>
<message>
<source>Failed to delete the branch '%1'
</source>
<translation type="vanished">无法删除分支 : '%1'</translation>
</message>
</context>
<context>
<name>MergeBranchDialog</name>
<message>
- <location filename="../../MergeBranchDialog.ui" line="14"/>
<source>Merge</source>
- <translation>合并</translation>
+ <translation type="vanished">合并</translation>
</message>
<message>
- <location filename="../../MergeBranchDialog.ui" line="26"/>
<source>Current branch :</source>
- <translation>目前的分支 :</translation>
+ <translation type="vanished">目前的分支 :</translation>
</message>
<message>
- <location filename="../../MergeBranchDialog.ui" line="39"/>
- <source>TextLabel</source>
- <translation></translation>
+ <source>OK</source>
+ <translation type="vanished">确定</translation>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation type="vanished">取消</translation>
+ </message>
+</context>
+<context>
+ <name>MergeDialog</name>
+ <message>
+ <location filename="../../MergeDialog.ui" line="14"/>
+ <source>Merge</source>
+ <translation type="unfinished">合并</translation>
+ </message>
+ <message>
+ <location filename="../../MergeDialog.ui" line="20"/>
+ <source>Fast Forwarding</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MergeDialog.ui" line="26"/>
+ <source>Default (--ff)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MergeDialog.ui" line="33"/>
+ <source>No fast forward (--no-ff)</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../MergeBranchDialog.ui" line="62"/>
+ <location filename="../../MergeDialog.ui" line="40"/>
+ <source>Fast forward only (--ff-only)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MergeDialog.ui" line="50"/>
+ <source>From</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MergeDialog.ui" line="77"/>
<source>OK</source>
- <translation>确定</translation>
+ <translation type="unfinished">确定</translation>
</message>
<message>
- <location filename="../../MergeBranchDialog.ui" line="75"/>
+ <location filename="../../MergeDialog.ui" line="84"/>
<source>Cancel</source>
- <translation>取消</translation>
+ <translation type="unfinished">取消</translation>
</message>
</context>
<context>
<name>MyImageViewWidget</name>
<message>
<location filename="../../MyImageViewWidget.cpp" line="34"/>
<source>Save as...</source>
<translation>另存为...</translation>
</message>
<message>
<location filename="../../MyImageViewWidget.cpp" line="42"/>
<source>Save as</source>
<translation>另存为</translation>
</message>
</context>
<context>
<name>MyTextEditorWidget</name>
<message>
<location filename="../../MyTextEditorWidget.cpp" line="35"/>
<source>Save as...</source>
<translation>另存为...</translation>
</message>
<message>
<location filename="../../MyTextEditorWidget.cpp" line="36"/>
<source>Copy</source>
<translation>复制</translation>
</message>
<message>
<location filename="../../MyTextEditorWidget.cpp" line="43"/>
<source>Save as</source>
<translation>另存为</translation>
</message>
</context>
<context>
<name>ObjectBrowserDialog</name>
<message>
<location filename="../../ObjectBrowserDialog.ui" line="14"/>
<source>Object Browser</source>
<translation>对象浏览器</translation>
</message>
<message>
<location filename="../../ObjectBrowserDialog.ui" line="38"/>
<source>Inspect</source>
<translation>检查</translation>
</message>
<message>
<location filename="../../ObjectBrowserDialog.ui" line="58"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<location filename="../../ObjectBrowserDialog.ui" line="65"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
<location filename="../../ObjectBrowserDialog.cpp" line="23"/>
<source>ID</source>
<translation></translation>
</message>
<message>
<location filename="../../ObjectBrowserDialog.cpp" line="24"/>
<source>Type</source>
<translation>类型</translation>
</message>
<message>
<location filename="../../ObjectBrowserDialog.cpp" line="119"/>
<source>Object Inspection</source>
<translation>对象检查</translation>
</message>
</context>
<context>
<name>PushDialog</name>
<message>
<location filename="../../PushDialog.ui" line="14"/>
<source>Push</source>
<translation>推送</translation>
</message>
<message>
<location filename="../../PushDialog.ui" line="20"/>
<source>push --set-upstream</source>
<translation>push --set-upstream</translation>
</message>
<message>
<location filename="../../PushDialog.ui" line="26"/>
<source>Remote</source>
<translation>远程</translation>
</message>
<message>
<location filename="../../PushDialog.ui" line="33"/>
<source>Branch</source>
<translation>分支</translation>
</message>
<message>
<location filename="../../PushDialog.ui" line="64"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<location filename="../../PushDialog.ui" line="71"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>RebaseOntoDialog</name>
<message>
<source>Branch</source>
<translation type="vanished">分支</translation>
</message>
<message>
<source>Cancel</source>
<translation type="vanished">取消</translation>
</message>
</context>
<context>
<name>ReflogWindow</name>
<message>
<location filename="../../ReflogWindow.ui" line="14"/>
<source>Reflog</source>
<translation>参考日志</translation>
</message>
<message>
<location filename="../../ReflogWindow.ui" line="57"/>
<source>Close</source>
<translation>关闭</translation>
</message>
<message>
<location filename="../../ReflogWindow.cpp" line="35"/>
<source>Commit</source>
<translation>提交</translation>
</message>
<message>
<location filename="../../ReflogWindow.cpp" line="36"/>
<source>Head</source>
<translation></translation>
</message>
<message>
<location filename="../../ReflogWindow.cpp" line="37"/>
<source>Command</source>
<translation>命令</translation>
</message>
<message>
<location filename="../../ReflogWindow.cpp" line="38"/>
<source>Message</source>
<translation>消息</translation>
</message>
<message>
<source>Comment</source>
<translation type="vanished">注释</translation>
</message>
<message>
<location filename="../../ReflogWindow.cpp" line="98"/>
<source>Checkout</source>
<translation>检出</translation>
</message>
<message>
<location filename="../../ReflogWindow.cpp" line="99"/>
<source>Explorer</source>
<translation>浏览器</translation>
</message>
</context>
<context>
<name>RemoteRepositoriesTableWidget</name>
<message>
<location filename="../../RemoteRepositoriesTableWidget.cpp" line="27"/>
<source>Copy URL</source>
<translation>复制URL</translation>
</message>
</context>
<context>
<name>RepositoryPropertyDialog</name>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="14"/>
<source>Repository Property</source>
<oldsource>Repository Properties</oldsource>
<translation>仓库属性</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="65"/>
<source>TextLabel</source>
<translation></translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="95"/>
<source>Local dir :</source>
<translation>本地目录 :</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="114"/>
<source>Remote URLs</source>
<translation>远程URL</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="124"/>
<source>Remote</source>
<translation>远程</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="130"/>
<source>Add</source>
<translation>添加</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="137"/>
<source>Edit</source>
<translation>编辑</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="157"/>
<source>Remove</source>
<translation>删除</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="169"/>
<source>&Remote menu</source>
<translation>远程菜单(&R)</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="189"/>
<source>Close</source>
<translation>关闭</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.cpp" line="131"/>
<source>Confirm Remove</source>
<translation>确认删除</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.cpp" line="131"/>
<source>Are you sure you want to remove the remote '%1' from the repository '%2' ?</source>
<translation>确定要从仓库「%2」中删除远程「%1」吗?</translation>
</message>
</context>
<context>
<name>SearchFromGitHubDialog</name>
<message>
<location filename="../../SearchFromGitHubDialog.ui" line="14"/>
<source>Search From GitHub</source>
<translation>从GitHub搜索</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.ui" line="25"/>
<source>Search</source>
<translation>搜索</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.ui" line="78"/>
<source>ssh</source>
<translation>ssh</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.ui" line="88"/>
<source>http</source>
<translation>http</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.ui" line="115"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.ui" line="122"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.cpp" line="56"/>
<source>Name</source>
<translation>名称</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.cpp" line="57"/>
<source>Owner</source>
<translation>所有者</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.cpp" line="58"/>
<source>Score</source>
<translation>范围</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.cpp" line="59"/>
<source>Description</source>
<translation>描述</translation>
</message>
</context>
<context>
<name>SelectCommandDialog</name>
<message>
<location filename="../../SelectCommandDialog.ui" line="14"/>
<source>Select git command</source>
<translation>选择git命令</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.ui" line="20"/>
<source>TextLabel</source>
<translation></translation>
</message>
<message>
<location filename="../../SelectCommandDialog.ui" line="32"/>
<source>&Browse...</source>
<translation>浏览(&B)...</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.ui" line="52"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.ui" line="59"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.cpp" line="29"/>
<source>Please select the '%1' command you want to use.</source>
<translation>请选择想用的'%1' 命令。</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.cpp" line="58"/>
<location filename="../../SelectCommandDialog.cpp" line="65"/>
<source>%1 command (%2);;</source>
<translation>%1 命令 (%2);;</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.cpp" line="60"/>
<source>Executable files (*.exe)</source>
<translation>可执行文件 (*.exe)</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.cpp" line="71"/>
<source>%1 command</source>
<translation>%1 命令</translation>
</message>
</context>
<context>
<name>SelectGpgKeyDialog</name>
<message>
<location filename="../../SelectGpgKeyDialog.ui" line="14"/>
<source>Select GPG Key</source>
<translation>选择GPG密钥</translation>
</message>
<message>
<location filename="../../SelectGpgKeyDialog.ui" line="57"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<location filename="../../SelectGpgKeyDialog.ui" line="64"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
<location filename="../../SelectGpgKeyDialog.cpp" line="31"/>
<source>ID</source>
<translation></translation>
</message>
<message>
<location filename="../../SelectGpgKeyDialog.cpp" line="32"/>
<source>Name</source>
<translation>名称</translation>
</message>
<message>
<location filename="../../SelectGpgKeyDialog.cpp" line="33"/>
<source>Mail</source>
<translation>电子邮件</translation>
</message>
</context>
<context>
<name>SelectItemDialog</name>
<message>
<location filename="../../SelectItemDialog.ui" line="14"/>
<source>Dialog</source>
<translation></translation>
</message>
<message>
<location filename="../../SelectItemDialog.ui" line="25"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<location filename="../../SelectItemDialog.ui" line="32"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>SetGlobalUserDialog</name>
<message>
<location filename="../../SetGlobalUserDialog.ui" line="14"/>
<source>Global User Setting</source>
<translation>全局用户设置</translation>
</message>
<message>
<location filename="../../SetGlobalUserDialog.ui" line="31"/>
<source>Name</source>
<translation>名称</translation>
</message>
<message>
<location filename="../../SetGlobalUserDialog.ui" line="41"/>
<source>Mail</source>
<translation>邮箱</translation>
</message>
<message>
<location filename="../../SetGlobalUserDialog.ui" line="68"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<location filename="../../SetGlobalUserDialog.ui" line="78"/>
<source>Skip</source>
<translation>跳过</translation>
</message>
</context>
<context>
<name>SetGpgSigningDialog</name>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="14"/>
<source>Set GPG Signing</source>
<translation>设置GPG签名</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="26"/>
<source>Global</source>
<translation>全局</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="39"/>
<location filename="../../SetGpgSigningDialog.cpp" line="29"/>
<source>Repository</source>
<translation>仓库</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="61"/>
<source>ID</source>
<translation>ID</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="71"/>
<source>Name</source>
<translation>名称</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="81"/>
<source>Mail</source>
<translation>邮箱</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="93"/>
<source>Select</source>
<translation>选择</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="113"/>
<source>Clear</source>
<translation>清除</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="127"/>
<source>Configure...</source>
<translation>配置...</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="147"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="154"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>SetRemoteUrlDialog</name>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="14"/>
<source>Set Remote URL</source>
<translation>设置远程URL</translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="20"/>
<source>Current URLs</source>
<translation>当前URL</translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="30"/>
<source>New URL</source>
<translation>新URL</translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="36"/>
<source>Name</source>
<translation>名称</translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="91"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="98"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="43"/>
<source>URL</source>
<translation>URL</translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="63"/>
<source>&Test</source>
<translation>测试(&T)</translation>
</message>
</context>
<context>
<name>SetUserDialog</name>
<message>
<location filename="../../SetUserDialog.ui" line="14"/>
<source>Set User</source>
<translation>设置用户</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="20"/>
<source>Global</source>
<translation>全局</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="27"/>
<location filename="../../SetUserDialog.cpp" line="31"/>
<source>Repository</source>
<translation>仓库</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="42"/>
<source>Name</source>
<translation>名称</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="52"/>
<source>Mail</source>
<translation>邮箱</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="66"/>
<source>Get icon from Gravatar</source>
<translation>从Gravatar获取图标</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="122"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="132"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>SettingBehaviorForm</name>
<message>
<location filename="../../SettingBehaviorForm.ui" line="14"/>
<source>Behavior</source>
<translation>行为</translation>
</message>
<message>
<location filename="../../SettingBehaviorForm.ui" line="20"/>
- <location filename="../../SettingBehaviorForm.cpp" line="77"/>
+ <location filename="../../SettingBehaviorForm.cpp" line="43"/>
<source>Default working folder</source>
<translation>默认工作文件夹</translation>
</message>
<message>
<location filename="../../SettingBehaviorForm.ui" line="29"/>
<source>Browse...</source>
<translation>浏览...</translation>
</message>
<message>
<location filename="../../SettingBehaviorForm.ui" line="39"/>
<source>Automatically fetch when opening the repository</source>
<translation>打开仓库时自动获取</translation>
</message>
<message>
<location filename="../../SettingBehaviorForm.ui" line="46"/>
<source>Get committer's icon from gravatar.com</source>
<translation>从gravatar.com获取图标</translation>
</message>
<message>
<location filename="../../SettingBehaviorForm.ui" line="61"/>
<source>Maximum number of commit item acquisitions</source>
<translation>要获取的最大提交信息数</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.ui" line="88"/>
<source>Watch remote changes periodically</source>
<oldsource>Periodically watch remote updates</oldsource>
- <translation>定期监视远程更改</translation>
+ <translation type="vanished">定期监视远程更改</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.ui" line="108"/>
<source>interval</source>
<oldsource>interval in min:</oldsource>
- <translation>间隔</translation>
+ <translation type="vanished">间隔</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.ui" line="128"/>
+ <location filename="../../SettingBehaviorForm.ui" line="94"/>
<source>GPG signing policy</source>
<oldsource>GPG Signing Policy</oldsource>
<translation>GPG签名策略</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.ui" line="135"/>
+ <location filename="../../SettingBehaviorForm.ui" line="101"/>
<source>Configure...</source>
<translation>配置...</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.cpp" line="38"/>
<source>Disable</source>
- <translation>禁用</translation>
+ <translation type="vanished">禁用</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.cpp" line="40"/>
<source>1 min</source>
- <translation>1分</translation>
+ <translation type="vanished">1分</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.cpp" line="42"/>
<source>%1 mins</source>
- <translation>%1分</translation>
+ <translation type="vanished">%1分</translation>
</message>
</context>
<context>
<name>SettingExampleForm</name>
<message>
<location filename="../../SettingExampleForm.ui" line="14"/>
<source>Example</source>
<translation>示例</translation>
</message>
<message>
<location filename="../../SettingExampleForm.ui" line="20"/>
<source>Underconstruction</source>
<translation>注意</translation>
</message>
</context>
<context>
<name>SettingGeneralForm</name>
<message>
<location filename="../../SettingGeneralForm.ui" line="14"/>
<source>General</source>
<translation>常规</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="20"/>
<source>Language</source>
<translation>语言</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="31"/>
<source>Change Language...</source>
<translation>选择语言...</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="54"/>
<source>Change Theme...</source>
<translation>选择主题...</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="66"/>
<source>Remember and restore window position</source>
<translation>记住并恢复窗口位置</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="73"/>
<source>Enable high DPI scaling</source>
<translation>启用高清屏幕缩放</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="43"/>
<source>Theme</source>
<translation>主题</translation>
</message>
<message>
- <location filename="../../SettingGeneralForm.cpp" line="16"/>
<source>English</source>
- <translation>英语</translation>
+ <translation type="vanished">英语</translation>
</message>
<message>
- <location filename="../../SettingGeneralForm.cpp" line="17"/>
<source>Japanese</source>
- <translation>日语</translation>
+ <translation type="vanished">日语</translation>
</message>
<message>
- <location filename="../../SettingGeneralForm.cpp" line="18"/>
<source>Russian</source>
- <translation>俄语</translation>
+ <translation type="vanished">俄语</translation>
</message>
<message>
- <location filename="../../SettingGeneralForm.cpp" line="20"/>
+ <location filename="../../SettingGeneralForm.cpp" line="19"/>
<source>Standard</source>
<translation>标准</translation>
</message>
<message>
- <location filename="../../SettingGeneralForm.cpp" line="21"/>
+ <location filename="../../SettingGeneralForm.cpp" line="20"/>
<source>Dark</source>
<translation>暗</translation>
</message>
<message>
- <location filename="../../SettingGeneralForm.cpp" line="79"/>
+ <location filename="../../SettingGeneralForm.cpp" line="82"/>
<source>Select Language</source>
<translation>选择语言</translation>
</message>
<message>
- <location filename="../../SettingGeneralForm.cpp" line="98"/>
+ <location filename="../../SettingGeneralForm.cpp" line="106"/>
<source>Select Theme</source>
<translation>选择主题</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="93"/>
<source>(Changes are applied at next run)</source>
<translation>(该设置将在下次运行时生效)</translation>
</message>
</context>
<context>
<name>SettingNetworkForm</name>
<message>
<location filename="../../SettingNetworkForm.ui" line="14"/>
<source>Network</source>
<translation>网络</translation>
</message>
<message>
<location filename="../../SettingNetworkForm.ui" line="20"/>
<source>Proxy server</source>
<oldsource>Proxy Server</oldsource>
<translation>代理服务器</translation>
</message>
<message>
<location filename="../../SettingNetworkForm.ui" line="26"/>
<source>No proxy</source>
<oldsource>No Proxy</oldsource>
<translation>无代理</translation>
</message>
<message>
<location filename="../../SettingNetworkForm.ui" line="33"/>
<source>Auto detect</source>
<oldsource>Auto Detect</oldsource>
<translation>自动检测</translation>
</message>
<message>
<location filename="../../SettingNetworkForm.ui" line="40"/>
<source>Manual</source>
<translation>手动</translation>
</message>
</context>
<context>
<name>SettingProgramsForm</name>
<message>
<location filename="../../SettingProgramsForm.ui" line="14"/>
<source>Programs</source>
<translation>程序</translation>
</message>
<message>
<location filename="../../SettingProgramsForm.ui" line="20"/>
<source>Git command</source>
<translation>Git命令</translation>
</message>
<message>
<location filename="../../SettingProgramsForm.ui" line="29"/>
<location filename="../../SettingProgramsForm.ui" line="48"/>
<location filename="../../SettingProgramsForm.ui" line="67"/>
<source>Browse...</source>
<translation>浏览...</translation>
</message>
<message>
<location filename="../../SettingProgramsForm.ui" line="39"/>
<source>File command</source>
<translation>File命令</translation>
</message>
<message>
<location filename="../../SettingProgramsForm.ui" line="58"/>
<source>GPG command (option)</source>
<translation>GPG命令(选项)</translation>
</message>
</context>
<context>
<name>SettingsDialog</name>
<message>
<location filename="../../SettingsDialog.ui" line="14"/>
<source>Settings</source>
<translation>设置</translation>
</message>
<message>
<location filename="../../SettingsDialog.ui" line="141"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<location filename="../../SettingsDialog.ui" line="148"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>TextEditDialog</name>
<message>
<location filename="../../TextEditDialog.ui" line="14"/>
<source>Dialog</source>
<translation></translation>
</message>
<message>
<location filename="../../TextEditDialog.ui" line="48"/>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<location filename="../../TextEditDialog.ui" line="58"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
+ <message>
+ <location filename="../../TextEditDialog.cpp" line="29"/>
+ <source>&Close</source>
+ <translation type="unfinished">关闭(&C)</translation>
+ </message>
+ <message>
+ <location filename="../../TextEditDialog.cpp" line="29"/>
+ <source>Cacnel</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>WelcomeWizardDialog</name>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="14"/>
<source>Welcome to the Guitar Wizard</source>
<translation>欢迎来到Guitar向导</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="45"/>
<source>Helper Tools</source>
<translation>助手工具</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="61"/>
<location filename="../../WelcomeWizardDialog.ui" line="338"/>
<source>git</source>
<translation>git</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="71"/>
<location filename="../../WelcomeWizardDialog.ui" line="88"/>
<location filename="../../WelcomeWizardDialog.ui" line="248"/>
<source>Browse</source>
<translation>浏览</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="78"/>
<location filename="../../WelcomeWizardDialog.ui" line="352"/>
<source>file</source>
<translation>文件</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="120"/>
<source>Global User Information</source>
<translation>全局用户信息</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="142"/>
<source>git config --global user.name</source>
<translation>git config --global user.name</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="152"/>
<source>git config --global user.email</source>
<translation>git config --global user.email</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="168"/>
<source>Get icon from Gravatar</source>
<translation>从Gravatar获取图标</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="222"/>
- <location filename="../../WelcomeWizardDialog.cpp" line="155"/>
+ <location filename="../../WelcomeWizardDialog.cpp" line="163"/>
<source>Default Working Folder</source>
<translation>默认工作文件夹</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="238"/>
<location filename="../../WelcomeWizardDialog.ui" line="324"/>
<source>folder</source>
<translation>文件夹</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="280"/>
<source>Ready to play the Guitar !</source>
<translation>Guitar已就绪!</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="296"/>
<source>user</source>
<translation>用户</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="310"/>
<source>email</source>
<translation>邮箱</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="426"/>
- <location filename="../../WelcomeWizardDialog.cpp" line="147"/>
+ <location filename="../../WelcomeWizardDialog.cpp" line="155"/>
<source><< Prev</source>
<translation><< 上一步</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="433"/>
- <location filename="../../WelcomeWizardDialog.cpp" line="148"/>
+ <location filename="../../WelcomeWizardDialog.cpp" line="156"/>
<source>Next >></source>
<translation>下一步 >></translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.cpp" line="126"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
- <location filename="../../WelcomeWizardDialog.cpp" line="145"/>
+ <location filename="../../WelcomeWizardDialog.cpp" line="152"/>
<source>Finish</source>
<translation>结束</translation>
</message>
</context>
</TS>
diff --git a/src/resources/translations/Guitar_zh-TW.qm b/src/resources/translations/Guitar_zh-TW.qm
index 89ac819..e923cd7 100644
Binary files a/src/resources/translations/Guitar_zh-TW.qm and b/src/resources/translations/Guitar_zh-TW.qm differ
diff --git a/src/resources/translations/Guitar_zh-TW.ts b/src/resources/translations/Guitar_zh-TW.ts
index de1f2d2..69b0f49 100644
--- a/src/resources/translations/Guitar_zh-TW.ts
+++ b/src/resources/translations/Guitar_zh-TW.ts
@@ -1,2751 +1,2994 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="zh_TW">
<context>
<name>AboutDialog</name>
<message>
<location filename="../../AboutDialog.ui" line="14"/>
<source>Dialog</source>
<translation></translation>
</message>
<message>
- <location filename="../../AboutDialog.ui" line="29"/>
- <location filename="../../AboutDialog.ui" line="36"/>
- <location filename="../../AboutDialog.ui" line="43"/>
- <location filename="../../AboutDialog.ui" line="50"/>
+ <location filename="../../AboutDialog.ui" line="34"/>
+ <location filename="../../AboutDialog.ui" line="46"/>
+ <location filename="../../AboutDialog.ui" line="58"/>
+ <location filename="../../AboutDialog.ui" line="70"/>
<source>TextLabel</source>
<translation></translation>
</message>
+ <message>
+ <location filename="../../AboutDialog.ui" line="86"/>
+ <source><a href="https://github.com/soramimi/Guitar">https://github.com/soramimi/Guitar</a></source>
+ <translation type="unfinished"></translation>
+ </message>
<message>
<location filename="../../AboutDialog.cpp" line="25"/>
<source>About %1</source>
<translation>%1 關於</translation>
</message>
</context>
<context>
<name>AreYouSureYouWantToContinueConnectingDialog</name>
<message>
<location filename="../../AreYouSureYouWantToContinueConnectingDialog.ui" line="14"/>
<source>Unknown Host</source>
<translation>未知主機</translation>
</message>
<message>
<location filename="../../AreYouSureYouWantToContinueConnectingDialog.ui" line="20"/>
<source>Are you sure you want to continue connecting (yes/no)?</source>
<translation>您想要繼續連接嗎?(是/否)?</translation>
</message>
<message>
<location filename="../../AreYouSureYouWantToContinueConnectingDialog.ui" line="52"/>
<source>Continue</source>
<translation>繼續</translation>
</message>
<message>
<location filename="../../AreYouSureYouWantToContinueConnectingDialog.ui" line="59"/>
<source>Close</source>
<translation>關閉</translation>
</message>
</context>
<context>
<name>BasicMainWindow</name>
<message>
- <location filename="../../BasicMainWindow.cpp" line="345"/>
+ <location filename="../../BasicMainWindow.cpp" line="261"/>
+ <source>git command not specified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../BasicMainWindow.cpp" line="374"/>
<source>The URL is a valid repository</source>
<translation>此URL是一個有效的儲存庫</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="346"/>
+ <location filename="../../BasicMainWindow.cpp" line="375"/>
<source>Failed to access the URL</source>
<translation>無法存取此URL</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="351"/>
+ <location filename="../../BasicMainWindow.cpp" line="380"/>
<source>Remote Repository</source>
<translation>遠端儲存庫</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="376"/>
+ <location filename="../../BasicMainWindow.cpp" line="405"/>
<source>&Property</source>
<translation>內容(&P)</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1201"/>
+ <location filename="../../BasicMainWindow.cpp" line="1273"/>
<source>Select %1 command</source>
<translation>選擇 %1 指令</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1380"/>
+ <location filename="../../BasicMainWindow.cpp" line="1452"/>
<source>Revert all files</source>
<translation>放棄所有檔案更動</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1520"/>
+ <location filename="../../BasicMainWindow.cpp" line="1610"/>
<source>The folder is not a valid git repository.</source>
<translation>此資料夾不是一個有效的Git儲存庫。</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1524"/>
+ <location filename="../../BasicMainWindow.cpp" line="1614"/>
<source>Do you want to initialize it as a git repository ?</source>
<translation>是否要將其初始化為git儲存庫?</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1525"/>
+ <location filename="../../BasicMainWindow.cpp" line="1615"/>
<source>Initialize Repository</source>
<translation>初始化儲存庫</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1663"/>
+ <location filename="../../BasicMainWindow.cpp" line="1745"/>
<source>No repository selected</source>
<translation>未選擇儲存庫</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1817"/>
+ <location filename="../../BasicMainWindow.cpp" line="1915"/>
<source>Repository Property</source>
<translation>儲存庫內容</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1817"/>
- <location filename="../../BasicMainWindow.cpp" line="1919"/>
+ <location filename="../../BasicMainWindow.cpp" line="1915"/>
+ <location filename="../../BasicMainWindow.cpp" line="2017"/>
<source>Not a valid git repository</source>
<translation>不是有效的git儲存庫。</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1912"/>
- <location filename="../../BasicMainWindow.cpp" line="1919"/>
+ <location filename="../../BasicMainWindow.cpp" line="2010"/>
+ <location filename="../../BasicMainWindow.cpp" line="2017"/>
<source>Open Repository</source>
<translation>打開儲存庫</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1912"/>
+ <location filename="../../BasicMainWindow.cpp" line="2010"/>
<source>No such folder</source>
<translation>沒有此資料夾</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="1912"/>
+ <location filename="../../BasicMainWindow.cpp" line="2010"/>
<source>Remove from bookmark ?</source>
<translation>是否將其從書籤中刪除?</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2150"/>
+ <location filename="../../BasicMainWindow.cpp" line="2248"/>
<source>, %1 ahead</source>
<translation></translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2153"/>
+ <location filename="../../BasicMainWindow.cpp" line="2251"/>
<source>, %1 behind</source>
<translation></translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2174"/>
+ <location filename="../../BasicMainWindow.cpp" line="2272"/>
<source>Confirm Remove</source>
<translation>確定刪除</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2174"/>
+ <location filename="../../BasicMainWindow.cpp" line="2272"/>
<source>Are you sure you want to remove the repository from bookmarks ?</source>
<translation>確定要將此儲存庫從書籤中刪除?</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2174"/>
+ <location filename="../../BasicMainWindow.cpp" line="2272"/>
<source>(Files will NOT be deleted)</source>
<translation>(檔案將不會被刪除)</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2204"/>
+ <location filename="../../BasicMainWindow.cpp" line="2302"/>
<source>A file with same name already exists</source>
<translation>已有相同名稱的檔案存在</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2205"/>
- <location filename="../../BasicMainWindow.cpp" line="2210"/>
- <location filename="../../BasicMainWindow.cpp" line="2227"/>
- <location filename="../../BasicMainWindow.cpp" line="2232"/>
+ <location filename="../../BasicMainWindow.cpp" line="2303"/>
+ <location filename="../../BasicMainWindow.cpp" line="2308"/>
+ <location filename="../../BasicMainWindow.cpp" line="2325"/>
+ <location filename="../../BasicMainWindow.cpp" line="2330"/>
<source>Clone</source>
<translation>複製</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2209"/>
+ <location filename="../../BasicMainWindow.cpp" line="2307"/>
<source>A folder with same name already exists</source>
<translation>已有相同名稱的資料夾存在</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2226"/>
+ <location filename="../../BasicMainWindow.cpp" line="2324"/>
<source>Invalid folder</source>
<translation>無效的資料夾</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2231"/>
+ <location filename="../../BasicMainWindow.cpp" line="2329"/>
<source>No such folder. Create it now ?</source>
<translation>此資料夾並不存在。是否建立?</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2291"/>
+ <location filename="../../BasicMainWindow.cpp" line="2398"/>
<source>Commit</source>
<translation>提交</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2291"/>
+ <location filename="../../BasicMainWindow.cpp" line="2398"/>
<source>Commit message can not be omitted.</source>
<translation>提交訊息不能為空白。</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2308"/>
+ <location filename="../../BasicMainWindow.cpp" line="2415"/>
<source>Failed to commit</source>
<translation>提交失敗</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2342"/>
- <location filename="../../BasicMainWindow.cpp" line="2426"/>
+ <location filename="../../BasicMainWindow.cpp" line="2449"/>
+ <location filename="../../BasicMainWindow.cpp" line="2533"/>
<source>Connection refused.</source>
<translation>連線被拒。</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2395"/>
+ <location filename="../../BasicMainWindow.cpp" line="2502"/>
<source>No remote repository is registered.</source>
<translation>遠端儲存庫尚未被註冊。</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2417"/>
+ <location filename="../../BasicMainWindow.cpp" line="2524"/>
<source>The current branch %1 has no upstream branch.</source>
<translation>目前的分支「%1」沒有上游分支。</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2420"/>
+ <location filename="../../BasicMainWindow.cpp" line="2527"/>
<source>You try push --set-upstream</source>
<translation>請嘗試使用 push --set-upstream </translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2509"/>
+ <location filename="../../BasicMainWindow.cpp" line="2616"/>
<source>Failed to delete the branch '%1'</source>
<translation>無法刪除分支「%1」</translation>
</message>
<message>
<source>Failed to delete the branch '%1'
</source>
<translation type="vanished">無法刪除分支: '%1'</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2573"/>
+ <location filename="../../BasicMainWindow.cpp" line="2680"/>
<source>Are you sure you want to run the following command ?</source>
<translation>您確定要執行以下指令嗎?</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2594"/>
+ <location filename="../../BasicMainWindow.cpp" line="2701"/>
<source>Reset a file</source>
<translation>重置文件</translation>
</message>
<message>
- <location filename="../../BasicMainWindow.cpp" line="2608"/>
+ <location filename="../../BasicMainWindow.cpp" line="2715"/>
<source>Unnamed</source>
<translation>未命名</translation>
</message>
</context>
<context>
<name>BasicRepositoryDialog</name>
<message>
<location filename="../../BasicRepositoryDialog.cpp" line="66"/>
<source>Name</source>
<translation>名稱</translation>
</message>
<message>
<location filename="../../BasicRepositoryDialog.cpp" line="67"/>
<source>Purpose</source>
<translation>用途</translation>
</message>
<message>
<location filename="../../BasicRepositoryDialog.cpp" line="68"/>
<source>URL</source>
<translation>網址</translation>
</message>
</context>
<context>
<name>BigDiffWindow</name>
<message>
<location filename="../../BigDiffWindow.ui" line="14"/>
<source>Diff</source>
<translation>差異</translation>
</message>
</context>
<context>
<name>BlameWindow</name>
<message>
<location filename="../../BlameWindow.ui" line="14"/>
<source>Blame</source>
<translation>作者與修訂版本訊息</translation>
</message>
<message>
<location filename="../../BlameWindow.ui" line="45"/>
<source>Information</source>
<translation>資訊</translation>
</message>
<message>
<location filename="../../BlameWindow.ui" line="60"/>
<source>Commit</source>
<translation>提交</translation>
</message>
<message>
<location filename="../../BlameWindow.ui" line="70"/>
<source>Date</source>
<translation>日期</translation>
</message>
<message>
<location filename="../../BlameWindow.ui" line="90"/>
<source>Message</source>
<translation>訊息</translation>
</message>
<message>
<location filename="../../BlameWindow.ui" line="80"/>
<source>Author</source>
<translation>作者</translation>
</message>
<message>
<location filename="../../BlameWindow.ui" line="118"/>
<source>Close</source>
<translation>關閉</translation>
</message>
</context>
<context>
<name>CheckoutDialog</name>
<message>
<location filename="../../CheckoutDialog.ui" line="14"/>
<source>Checkout</source>
<translation>簽出</translation>
</message>
<message>
<location filename="../../CheckoutDialog.ui" line="20"/>
<location filename="../../CheckoutDialog.ui" line="27"/>
<location filename="../../CheckoutDialog.ui" line="34"/>
<source>RadioButton</source>
<translation>單選按鈕</translation>
</message>
<message>
<location filename="../../CheckoutDialog.ui" line="63"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../CheckoutDialog.ui" line="70"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
+<context>
+ <name>CherryPickDialog</name>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="14"/>
+ <source>Cherry-pick</source>
+ <translation type="unfinished">擇優挑選</translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="20"/>
+ <source>HEAD</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="49"/>
+ <source>Pick</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="78"/>
+ <source>Mainline</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="109"/>
+ <source>Allow empty</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="131"/>
+ <source>OK</source>
+ <translation type="unfinished">確定</translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.ui" line="138"/>
+ <source>Cancel</source>
+ <translation type="unfinished">取消</translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.cpp" line="19"/>
+ <source>Commit</source>
+ <translation type="unfinished">提交</translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.cpp" line="20"/>
+ <source>Date</source>
+ <translation type="unfinished">日期</translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.cpp" line="21"/>
+ <source>Author</source>
+ <translation type="unfinished">作者</translation>
+ </message>
+ <message>
+ <location filename="../../CherryPickDialog.cpp" line="22"/>
+ <source>Message</source>
+ <translation type="unfinished">訊息</translation>
+ </message>
+</context>
<context>
<name>CloneDialog</name>
<message>
<location filename="../../CloneDialog.ui" line="14"/>
<location filename="../../CloneDialog.ui" line="103"/>
<source>Clone</source>
<translation>複製</translation>
</message>
<message>
<location filename="../../CloneDialog.ui" line="22"/>
<source>Remote</source>
<translation>遠端</translation>
</message>
<message>
<location filename="../../CloneDialog.ui" line="39"/>
<source>&Test</source>
<translation>測試(&T)</translation>
</message>
<message>
<location filename="../../CloneDialog.ui" line="46"/>
<source>Local</source>
<translation>本地</translation>
</message>
<message>
<location filename="../../CloneDialog.ui" line="56"/>
<source>Browse</source>
<translation>瀏覽</translation>
</message>
<message>
<location filename="../../CloneDialog.ui" line="83"/>
<source>Open existing local directory...</source>
<translation>打開現有的本地資料夾...</translation>
</message>
<message>
<location filename="../../CloneDialog.ui" line="113"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
<location filename="../../CloneDialog.cpp" line="40"/>
<source>Search</source>
<translation>搜尋</translation>
</message>
<message>
<location filename="../../CloneDialog.cpp" line="41"/>
<source>GitHub</source>
<translation></translation>
</message>
<message>
- <location filename="../../CloneDialog.cpp" line="108"/>
+ <location filename="../../CloneDialog.cpp" line="113"/>
<source>Checkout into</source>
<translation>簽出至</translation>
</message>
<message>
- <location filename="../../CloneDialog.cpp" line="120"/>
+ <location filename="../../CloneDialog.cpp" line="125"/>
<source>Open existing directory</source>
<translation>打開現有的資料夾</translation>
</message>
</context>
<context>
<name>CloneFromGitHubDialog</name>
<message>
<location filename="../../CloneFromGitHubDialog.ui" line="14"/>
<source>Clone from GitHub</source>
<translation>從GitHub複製</translation>
</message>
<message>
<location filename="../../CloneFromGitHubDialog.ui" line="45"/>
<source>ssh</source>
<translation>ssh</translation>
</message>
<message>
<location filename="../../CloneFromGitHubDialog.ui" line="55"/>
<source>http</source>
<translation>http</translation>
</message>
<message>
<location filename="../../CloneFromGitHubDialog.ui" line="95"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../CloneFromGitHubDialog.ui" line="102"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>CommitDialog</name>
<message>
<location filename="../../CommitDialog.ui" line="14"/>
<source>Commit</source>
<translation>提交</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="27"/>
<source>TextLabel</source>
<translation>文字標籤</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="49"/>
<source>Author</source>
<translation>作者</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="68"/>
<location filename="../../CommitDialog.ui" line="94"/>
<location filename="../../CommitDialog.ui" line="139"/>
<location filename="../../CommitDialog.ui" line="159"/>
<location filename="../../CommitDialog.ui" line="179"/>
<source>---</source>
<translation></translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="75"/>
<location filename="../../CommitDialog.ui" line="166"/>
<source>Mail</source>
<translation>電子郵件</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="111"/>
<source>GPG Signing</source>
<translation>GPG簽名</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="126"/>
<source>ID</source>
<translation>ID</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="146"/>
<source>Name</source>
<translation>名稱</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="189"/>
<source>Configure...</source>
<translation>設定...</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="198"/>
<source>Message</source>
<translation>訊息</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="223"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../CommitDialog.ui" line="233"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>CommitExploreWindow</name>
<message>
<location filename="../../CommitExploreWindow.ui" line="14"/>
<source>Commit Explorer</source>
<translation>提交瀏覽器</translation>
</message>
<message>
<location filename="../../CommitExploreWindow.ui" line="65"/>
<source>Commit ID</source>
<translation>提交ID</translation>
</message>
<message>
<location filename="../../CommitExploreWindow.ui" line="82"/>
<source>Date</source>
<translation>日期</translation>
</message>
<message>
<location filename="../../CommitExploreWindow.ui" line="89"/>
<source>Author</source>
<translation>作者</translation>
</message>
<message>
<location filename="../../CommitExploreWindow.cpp" line="78"/>
<source>Commit</source>
<translation>提交</translation>
</message>
</context>
<context>
<name>CommitPropertyDialog</name>
<message>
<location filename="../../CommitPropertyDialog.ui" line="14"/>
<source>Commit Property</source>
<oldsource>Commit Properties</oldsource>
<translation>提交內容</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="46"/>
<source>Date</source>
<translation>日期</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="56"/>
<source>Author</source>
<translation>作者</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="66"/>
<location filename="../../CommitPropertyDialog.ui" line="196"/>
<source>Mail</source>
<translation>電子郵件</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="154"/>
<source>GPG Sign</source>
<translation>GPG簽名</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="176"/>
<source>ID</source>
<translation>ID</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="186"/>
<source>Name</source>
<translation>名稱</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="233"/>
<source>Commit ID</source>
<translation>提交ID</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="243"/>
<source>Parent IDs</source>
<translation>父層ID</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="265"/>
<source>Files...</source>
<translation>檔案...</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="285"/>
<source>Explorer</source>
<translation>瀏覽器</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="305"/>
<source>Checkout</source>
<translation>簽出</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="312"/>
<source>Jump</source>
<translation>移至</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.ui" line="332"/>
<source>Close</source>
<translation>關閉</translation>
</message>
<message>
<location filename="../../CommitPropertyDialog.cpp" line="60"/>
<source><Unknown></source>
<translation><未知的></translation>
</message>
</context>
<context>
<name>CommitViewWindow</name>
<message>
<location filename="../../CommitViewWindow.ui" line="14"/>
<source>Commit View</source>
<translation>提交線圖</translation>
</message>
<message>
<location filename="../../CommitViewWindow.cpp" line="58"/>
<source>History</source>
<translation>歷史</translation>
</message>
</context>
<context>
<name>ConfigCredentialHelperDialog</name>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="14"/>
<source>Dialog</source>
<translation>對話框</translation>
</message>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="26"/>
<source>wincred</source>
<translation>wincred</translation>
</message>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="39"/>
<source>winstore</source>
<translation>winstore</translation>
</message>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="52"/>
<source>None</source>
<translation>無</translation>
</message>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="65"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="78"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
<location filename="../../ConfigCredentialHelperDialog.ui" line="91"/>
<source>Other</source>
<translation>其他</translation>
</message>
</context>
<context>
<name>ConfigSigningDialog</name>
<message>
<location filename="../../ConfigSigningDialog.ui" line="14"/>
<source>Signing Policy</source>
<translation>簽名政策</translation>
</message>
<message>
<location filename="../../ConfigSigningDialog.ui" line="20"/>
<source>Config commit.gpgsign</source>
<translation>設定commit.gpgsign</translation>
</message>
<message>
<location filename="../../ConfigSigningDialog.ui" line="32"/>
<source>global</source>
<translation>全域</translation>
</message>
<message>
<location filename="../../ConfigSigningDialog.ui" line="42"/>
<source>local</source>
<translation>本地</translation>
</message>
<message>
<location filename="../../ConfigSigningDialog.ui" line="70"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../ConfigSigningDialog.ui" line="77"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>CreateRepositoryDialog</name>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="14"/>
<location filename="../../CreateRepositoryDialog.cpp" line="42"/>
<location filename="../../CreateRepositoryDialog.cpp" line="46"/>
<location filename="../../CreateRepositoryDialog.cpp" line="50"/>
<location filename="../../CreateRepositoryDialog.cpp" line="54"/>
<source>Create Repository</source>
<translation>建立儲存庫</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="22"/>
<source>Path</source>
<translation>路徑</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="32"/>
<source>Browse</source>
<translation>瀏覽</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="54"/>
<source>Bookmark</source>
<translation>書籤</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="63"/>
<location filename="../../CreateRepositoryDialog.ui" line="88"/>
<source>Name</source>
<translation>名稱</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="76"/>
<source>Remote</source>
<translation>遠端</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="98"/>
<source>URL</source>
<translation>URL</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="108"/>
<source>Test</source>
<translation>測試</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="146"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.ui" line="153"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.cpp" line="19"/>
<source>A valid git repository already exists there.</source>
<translation>已存在有效的儲存庫。</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.cpp" line="42"/>
<location filename="../../CreateRepositoryDialog.cpp" line="50"/>
<source>The specified path is not a directory.</source>
<translation>指定的路徑不是資料夾。</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.cpp" line="54"/>
<source>Remote name is invalid.</source>
<translation>遠端名稱無效。</translation>
</message>
<message>
<location filename="../../CreateRepositoryDialog.cpp" line="62"/>
<source>Destination Path</source>
<translation>目標路徑</translation>
</message>
</context>
<context>
<name>DeleteBranchDialog</name>
<message>
<location filename="../../DeleteBranchDialog.ui" line="14"/>
<source>Delete Branch</source>
<translation>刪除分支</translation>
</message>
<message>
<location filename="../../DeleteBranchDialog.ui" line="25"/>
<source>&All branches</source>
<translation>所有分支(&A)</translation>
</message>
<message>
<location filename="../../DeleteBranchDialog.ui" line="45"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../DeleteBranchDialog.ui" line="52"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
<location filename="../../DeleteBranchDialog.cpp" line="23"/>
<source>Delete Remote Branch</source>
<translation>刪除遠端分支</translation>
</message>
</context>
<context>
<name>DeleteTagsDialog</name>
<message>
<location filename="../../DeleteTagsDialog.ui" line="14"/>
<source>Delete tags</source>
<translation>刪除標籤</translation>
</message>
<message>
<location filename="../../DeleteTagsDialog.ui" line="32"/>
<source>Check all</source>
<translation>全部檢查</translation>
</message>
<message>
<location filename="../../DeleteTagsDialog.ui" line="52"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../DeleteTagsDialog.ui" line="62"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>DoYouWantToInitDialog</name>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="14"/>
<source>Init Repository</source>
<translation>初始化儲存庫</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="20"/>
<source>The folder:</source>
<translation>資料夾:</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="32"/>
<source>is not a valid git working copy.</source>
<translation>不是有效的git儲存庫。</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="39"/>
<source>Do you want to init it as a git repository ?</source>
<translation>您想要將其初始化為git儲存庫嗎?</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="81"/>
<source>Yes, Please init it.</source>
<translation>是,請初始化。</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="88"/>
<source>No, Stop it.</source>
<translation>否,不要初始化。</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.ui" line="140"/>
<source>Please choose option</source>
<translation>請選擇選項</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.cpp" line="20"/>
<source>Next...</source>
<translation>下一步...</translation>
</message>
<message>
<location filename="../../DoYouWantToInitDialog.cpp" line="26"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>EditGitIgnoreDialog</name>
<message>
<location filename="../../EditGitIgnoreDialog.ui" line="14"/>
<source>Edit Git Ignore</source>
<translation>編輯Git忽略檔案</translation>
</message>
<message>
<location filename="../../EditGitIgnoreDialog.ui" line="20"/>
<location filename="../../EditGitIgnoreDialog.ui" line="27"/>
<location filename="../../EditGitIgnoreDialog.ui" line="34"/>
<location filename="../../EditGitIgnoreDialog.ui" line="41"/>
<source>RadioButton</source>
<translation>單選按鈕</translation>
</message>
<message>
<location filename="../../EditGitIgnoreDialog.ui" line="63"/>
<source>Edit the file</source>
<translation>編輯文件</translation>
</message>
<message>
<location filename="../../EditGitIgnoreDialog.ui" line="83"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../EditGitIgnoreDialog.ui" line="90"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>EditRemoteDialog</name>
<message>
<location filename="../../EditRemoteDialog.ui" line="14"/>
<source>Edit Remote</source>
<translation>遠端編輯</translation>
</message>
<message>
<location filename="../../EditRemoteDialog.ui" line="20"/>
<source>Remote</source>
<translation>遠端</translation>
</message>
<message>
<location filename="../../EditRemoteDialog.ui" line="26"/>
<source>Name</source>
<translation>名稱</translation>
</message>
<message>
<location filename="../../EditRemoteDialog.ui" line="33"/>
<source>URL</source>
<translation>URL</translation>
</message>
<message>
<location filename="../../EditRemoteDialog.ui" line="53"/>
<source>&Test</source>
<translation>測試(&T)</translation>
</message>
<message>
<location filename="../../EditRemoteDialog.ui" line="81"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../EditRemoteDialog.ui" line="88"/>
<source>Close</source>
<translation>關閉</translation>
</message>
</context>
<context>
<name>EditTagsDialog</name>
<message>
<location filename="../../EditTagsDialog.ui" line="14"/>
<source>Edit Tags</source>
<translation>編輯標籤</translation>
</message>
<message>
<location filename="../../EditTagsDialog.ui" line="41"/>
<source>Add...</source>
<translation>新增...</translation>
</message>
<message>
<location filename="../../EditTagsDialog.ui" line="48"/>
<source>Delete</source>
<translation>刪除</translation>
</message>
<message>
<location filename="../../EditTagsDialog.ui" line="68"/>
<source>Close</source>
<translation>關閉</translation>
</message>
</context>
<context>
<name>ExperimentDialog</name>
<message>
<location filename="../../ExperimentDialog.ui" line="14"/>
<source>Dialog</source>
<translation>對話框</translation>
</message>
</context>
<context>
<name>FileDiffWidget</name>
<message>
<location filename="../../FileDiffWidget.ui" line="14"/>
<source>Dialog</source>
<translation>對話框</translation>
</message>
</context>
<context>
<name>FileHistoryWindow</name>
<message>
<location filename="../../FileHistoryWindow.ui" line="14"/>
<source>File History</source>
<translation>檔案歷史紀錄</translation>
</message>
<message>
<location filename="../../FileHistoryWindow.ui" line="20"/>
<location filename="../../FileHistoryWindow.ui" line="27"/>
<source>TextLabel</source>
<translation>文字標籤</translation>
</message>
<message>
<location filename="../../FileHistoryWindow.cpp" line="111"/>
<source>Commit</source>
<translation>提交</translation>
</message>
<message>
<location filename="../../FileHistoryWindow.cpp" line="112"/>
<source>Date</source>
<translation>日期</translation>
</message>
<message>
<location filename="../../FileHistoryWindow.cpp" line="113"/>
<source>Author</source>
<translation>作者</translation>
</message>
<message>
<location filename="../../FileHistoryWindow.cpp" line="114"/>
<source>Message</source>
<translation>訊息</translation>
</message>
<message>
<source>Description</source>
<translation type="vanished">描述</translation>
</message>
</context>
<context>
<name>FilePropertyDialog</name>
<message>
<location filename="../../FilePropertyDialog.ui" line="14"/>
<source>File Property</source>
<oldsource>File Properties</oldsource>
<translation>檔案內容</translation>
</message>
<message>
<location filename="../../FilePropertyDialog.ui" line="78"/>
<source>&Close</source>
<translation>關閉(&C)</translation>
</message>
</context>
<context>
- <name>FileViewWidget</name>
+ <name>FindCommitDialog</name>
<message>
- <location filename="../../FileViewWidget.cpp" line="30"/>
- <source>Form</source>
- <translation></translation>
+ <location filename="../../FindCommitDialog.ui" line="14"/>
+ <source>Find Commit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FindCommitDialog.ui" line="54"/>
+ <source>OK</source>
+ <translation type="unfinished">確定</translation>
+ </message>
+ <message>
+ <location filename="../../FindCommitDialog.ui" line="61"/>
+ <source>Cancel</source>
+ <translation type="unfinished">取消</translation>
</message>
</context>
<context>
<name>InputNewTagDialog</name>
<message>
<location filename="../../InputNewTagDialog.ui" line="14"/>
<source>Edit tag</source>
<translation>編輯標籤</translation>
</message>
<message>
<location filename="../../InputNewTagDialog.ui" line="31"/>
<source>Tag</source>
<translation>標籤</translation>
</message>
<message>
<location filename="../../InputNewTagDialog.ui" line="58"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../InputNewTagDialog.ui" line="65"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>JumpDialog</name>
<message>
<location filename="../../JumpDialog.ui" line="14"/>
<source>Jump</source>
<translation>移至</translation>
</message>
<message>
<source>Branches and Tags</source>
<translation type="vanished">分支與標籤</translation>
</message>
<message>
<source>&Filter</source>
<translation type="vanished">篩選器(&F)</translation>
</message>
<message>
<source>Find</source>
<translation type="vanished">尋找</translation>
</message>
<message>
<source>&Checkout</source>
<translation type="vanished">簽出(&C)</translation>
</message>
<message>
<location filename="../../JumpDialog.ui" line="20"/>
<source>Branch, Tag or Commit-ID :</source>
<translation>分支,標籤,提交ID</translation>
</message>
<message>
<location filename="../../JumpDialog.ui" line="71"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../JumpDialog.ui" line="81"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
- <location filename="../../JumpDialog.cpp" line="37"/>
+ <location filename="../../JumpDialog.cpp" line="39"/>
<source>Name</source>
<translation>名稱</translation>
</message>
</context>
+<context>
+ <name>Languages</name>
+ <message>
+ <location filename="../../Languages.cpp" line="6"/>
+ <source>English</source>
+ <translation type="unfinished">英文</translation>
+ </message>
+ <message>
+ <location filename="../../Languages.cpp" line="7"/>
+ <source>Japanese</source>
+ <translation type="unfinished">日語</translation>
+ </message>
+ <message>
+ <location filename="../../Languages.cpp" line="8"/>
+ <source>Russian</source>
+ <translation type="unfinished">俄文</translation>
+ </message>
+ <message>
+ <location filename="../../Languages.cpp" line="9"/>
+ <source>Chinese (Simplified)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Languages.cpp" line="10"/>
+ <source>Chinese (Traditional/Taiwan)</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
<context>
<name>LineEditDialog</name>
<message>
<location filename="../../LineEditDialog.ui" line="14"/>
<source>Dialog</source>
<translation>對話框</translation>
</message>
<message>
<location filename="../../LineEditDialog.ui" line="20"/>
<source>TextLabel</source>
<translation>文字標籤</translation>
</message>
<message>
<location filename="../../LineEditDialog.ui" line="45"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../LineEditDialog.ui" line="52"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../../MainWindow.ui" line="14"/>
<source>Guitar</source>
<translation>Guitar</translation>
</message>
<message>
<location filename="../../MainWindow.ui" line="96"/>
- <location filename="../../MainWindow.ui" line="1352"/>
- <location filename="../../MainWindow.ui" line="1355"/>
+ <location filename="../../MainWindow.ui" line="1421"/>
+ <location filename="../../MainWindow.ui" line="1424"/>
<source>Clone</source>
<translation>複製</translation>
</message>
<message>
<location filename="../../MainWindow.ui" line="131"/>
- <location filename="../../MainWindow.cpp" line="2201"/>
- <location filename="../../MainWindow.cpp" line="2202"/>
+ <location filename="../../MainWindow.cpp" line="1140"/>
+ <location filename="../../MainWindow.cpp" line="1141"/>
<source>Fetch</source>
<translation>提取</translation>
</message>
<message>
<location filename="../../MainWindow.ui" line="166"/>
<source>Pull</source>
<translation>拉取</translation>
</message>
<message>
<location filename="../../MainWindow.ui" line="201"/>
<source>Push</source>
<translation>推送</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="252"/>
- <location filename="../../MainWindow.ui" line="1476"/>
+ <location filename="../../MainWindow.ui" line="303"/>
+ <location filename="../../MainWindow.ui" line="1548"/>
<source>Terminal</source>
<translation>終端機</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="287"/>
- <location filename="../../MainWindow.ui" line="1485"/>
+ <location filename="../../MainWindow.ui" line="338"/>
+ <location filename="../../MainWindow.ui" line="1557"/>
<source>Explorer</source>
<translation>檔案總管</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="373"/>
+ <location filename="../../MainWindow.ui" line="424"/>
<source>Repository</source>
<translation>儲存庫</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="380"/>
+ <location filename="../../MainWindow.ui" line="431"/>
<source>Branch Name</source>
<translation>分支名稱</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="432"/>
- <location filename="../../MainWindow.ui" line="1520"/>
+ <location filename="../../MainWindow.ui" line="483"/>
+ <location filename="../../MainWindow.ui" line="1592"/>
<source>Offline</source>
<translation>離線</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="422"/>
- <location filename="../../MainWindow.ui" line="1515"/>
+ <location filename="../../MainWindow.ui" line="473"/>
+ <location filename="../../MainWindow.ui" line="1587"/>
<source>Online</source>
<translation>在线</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="748"/>
- <location filename="../../MainWindow.cpp" line="1598"/>
+ <location filename="../../MainWindow.ui" line="799"/>
+ <location filename="../../MainWindow.cpp" line="1853"/>
<source>Unstage</source>
<translation>取消暫存變更</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="777"/>
+ <location filename="../../MainWindow.ui" line="828"/>
<source>Select all</source>
<translation>全選</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="812"/>
- <location filename="../../MainWindow.cpp" line="1468"/>
+ <location filename="../../MainWindow.ui" line="863"/>
+ <location filename="../../MainWindow.cpp" line="1723"/>
<source>Stage</source>
<translation>暫存變更</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="841"/>
- <location filename="../../MainWindow.cpp" line="841"/>
+ <location filename="../../MainWindow.ui" line="892"/>
+ <location filename="../../MainWindow.cpp" line="879"/>
<source>Commit</source>
<translation>提交</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="972"/>
+ <location filename="../../MainWindow.ui" line="1023"/>
<source>&File</source>
<translation>檔案(&F)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="983"/>
+ <location filename="../../MainWindow.ui" line="1034"/>
<source>&View</source>
<translation>檢視(&V)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="989"/>
+ <location filename="../../MainWindow.ui" line="1040"/>
<source>&Edit</source>
<translation>編輯(&E)</translation>
</message>
<message>
<source>Destructive</source>
<translation type="vanished">需要注意的指令</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1343"/>
+ <location filename="../../MainWindow.ui" line="1412"/>
<source>Settings</source>
<translation>設定</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1365"/>
- <location filename="../../MainWindow.cpp" line="1332"/>
+ <location filename="../../MainWindow.ui" line="1434"/>
+ <location filename="../../MainWindow.cpp" line="1595"/>
<source>Edit tags...</source>
<translation>編輯標籤...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1368"/>
+ <location filename="../../MainWindow.ui" line="1437"/>
<source>Edit tags</source>
<translation>編輯標籤</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1490"/>
+ <location filename="../../MainWindow.ui" line="1562"/>
<source>Clean -df</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1495"/>
+ <location filename="../../MainWindow.ui" line="1567"/>
<source>Reset --hard</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1422"/>
+ <location filename="../../MainWindow.ui" line="1494"/>
<source>Create a repository</source>
<translation>建立儲存庫</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1409"/>
+ <location filename="../../MainWindow.ui" line="1481"/>
<source>Push upstream</source>
<translation>推送至上游</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1431"/>
+ <location filename="../../MainWindow.ui" line="1503"/>
<source>Stop process</source>
<translation>停止處理</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1436"/>
+ <location filename="../../MainWindow.ui" line="1508"/>
<source>E&xit</source>
<translation>離開(&X)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1439"/>
+ <location filename="../../MainWindow.ui" line="1511"/>
<source>Ctrl+Q</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1444"/>
+ <location filename="../../MainWindow.ui" line="1516"/>
<source>Reflog...</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1449"/>
+ <location filename="../../MainWindow.ui" line="1521"/>
<source>Property...</source>
<translation>內容...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1454"/>
- <location filename="../../MainWindow.ui" line="1457"/>
+ <location filename="../../MainWindow.ui" line="1526"/>
+ <location filename="../../MainWindow.ui" line="1529"/>
<source>Set GPG signing</source>
<translation>設定GPG簽名</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1467"/>
+ <location filename="../../MainWindow.ui" line="1539"/>
<source>Fetch --prune</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1001"/>
+ <location filename="../../MainWindow.ui" line="1055"/>
<source>&Help</source>
<translation>說明(&H)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="605"/>
+ <location filename="../../MainWindow.ui" line="252"/>
+ <location filename="../../MainWindow.ui" line="1628"/>
+ <location filename="../../MainWindow.cpp" line="1353"/>
+ <source>Status</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="656"/>
<source>...</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1007"/>
+ <location filename="../../MainWindow.ui" line="1061"/>
<source>&Window</source>
<translation>視窗(&W)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1013"/>
+ <location filename="../../MainWindow.ui" line="1067"/>
<source>&Repository</source>
<translation>儲存庫(&R)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1017"/>
- <location filename="../../MainWindow.ui" line="1500"/>
+ <location filename="../../MainWindow.ui" line="1071"/>
+ <location filename="../../MainWindow.ui" line="1572"/>
<source>Stash</source>
<translation>擱置</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1040"/>
+ <location filename="../../MainWindow.ui" line="1098"/>
<source>Re&mote</source>
<translation>遠端(&M)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1055"/>
+ <location filename="../../MainWindow.ui" line="1113"/>
<source>&Destructive</source>
<translation>注意(&D)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1086"/>
+ <location filename="../../MainWindow.ui" line="1125"/>
+ <source>Experimental</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1155"/>
<source>Log</source>
<translation>日誌</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1256"/>
+ <location filename="../../MainWindow.ui" line="1325"/>
<source>&Open existing working copy...</source>
<translation>打開所有工作副本(&O)...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1259"/>
- <location filename="../../MainWindow.cpp" line="1661"/>
+ <location filename="../../MainWindow.ui" line="1328"/>
+ <location filename="../../MainWindow.cpp" line="2027"/>
<source>Add existing working copy</source>
<translation>新增所有工作副本</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1264"/>
- <location filename="../../MainWindow.ui" line="1267"/>
+ <location filename="../../MainWindow.ui" line="1333"/>
+ <location filename="../../MainWindow.ui" line="1336"/>
<source>Refresh</source>
<translation>更新</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1270"/>
+ <location filename="../../MainWindow.ui" line="1339"/>
<source>F5</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1279"/>
+ <location filename="../../MainWindow.ui" line="1348"/>
<source>&Commit</source>
<translation>提交(&C)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1288"/>
+ <location filename="../../MainWindow.ui" line="1357"/>
<source>&Push</source>
<translation>推送(&P)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1296"/>
+ <location filename="../../MainWindow.ui" line="1365"/>
<source>test</source>
<translation>測試</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1299"/>
+ <location filename="../../MainWindow.ui" line="1368"/>
<source>Ctrl+T</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1308"/>
+ <location filename="../../MainWindow.ui" line="1377"/>
<source>Pu&ll</source>
<translation>拉取(&L)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1317"/>
+ <location filename="../../MainWindow.ui" line="1386"/>
<source>&Fetch</source>
<translation>提取(&F)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1322"/>
- <location filename="../../MainWindow.ui" line="1325"/>
+ <location filename="../../MainWindow.ui" line="1391"/>
+ <location filename="../../MainWindow.ui" line="1394"/>
<source>Edit global .gitconfig</source>
<translation>編輯全域.gitignore</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1330"/>
+ <location filename="../../MainWindow.ui" line="1399"/>
<source>Edit .git/config</source>
<translation>編輯.git/config</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1335"/>
+ <location filename="../../MainWindow.ui" line="1404"/>
<source>Edit .gitignore</source>
<translation>編輯.gitignore</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1340"/>
+ <location filename="../../MainWindow.ui" line="1409"/>
<source>&Settings...</source>
<translation>設定(&S)...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1391"/>
+ <location filename="../../MainWindow.ui" line="1458"/>
+ <source>F4</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1463"/>
<source>&Jump...</source>
<translation>移至(&J)...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1394"/>
+ <location filename="../../MainWindow.ui" line="1466"/>
<source>Ctrl+J</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1399"/>
+ <location filename="../../MainWindow.ui" line="1471"/>
<source>Check&out...</source>
<translation>簽出(&O)...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1404"/>
- <location filename="../../MainWindow.cpp" line="1344"/>
+ <location filename="../../MainWindow.ui" line="1476"/>
+ <location filename="../../MainWindow.cpp" line="1600"/>
<source>Delete branch...</source>
<translation>刪除分支...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1505"/>
+ <location filename="../../MainWindow.ui" line="1577"/>
<source>Apply</source>
<translation>套用</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1510"/>
+ <location filename="../../MainWindow.ui" line="1582"/>
<source>Drop</source>
<translation>丟棄</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1528"/>
+ <location filename="../../MainWindow.ui" line="1600"/>
<source>Repositories panel</source>
<translation>儲存庫面板</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1531"/>
+ <location filename="../../MainWindow.ui" line="1603"/>
<source>Ctrl+R</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1414"/>
- <location filename="../../MainWindow.ui" line="1417"/>
+ <location filename="../../MainWindow.ui" line="1608"/>
+ <source>&Find...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1611"/>
+ <source>Ctrl+F</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1616"/>
+ <source>Find next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1619"/>
+ <source>F3</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1633"/>
+ <source>Jump to &HEAD</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1636"/>
+ <source>Ctrl+H</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1641"/>
+ <source>Merge...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1646"/>
+ <source>Expand commit log</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1649"/>
+ <source>Ctrl+2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1654"/>
+ <source>Expand file list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1657"/>
+ <source>Ctrl+3</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1662"/>
+ <source>Expand diff view</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1665"/>
+ <source>Ctrl+4</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1670"/>
+ <source>Sidebar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1673"/>
+ <source>F1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1678"/>
+ <source>Wide</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1681"/>
+ <source>F2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MainWindow.ui" line="1486"/>
+ <location filename="../../MainWindow.ui" line="1489"/>
<source>Reset HEAD~1</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1462"/>
- <location filename="../../MainWindow.cpp" line="1345"/>
+ <location filename="../../MainWindow.ui" line="1534"/>
+ <location filename="../../MainWindow.cpp" line="1601"/>
<source>Delete remote branch...</source>
<translation>刪除遠端分支...</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1360"/>
+ <location filename="../../MainWindow.ui" line="1429"/>
<source>&About</source>
<translation>關於Guitar(&A)</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1373"/>
+ <location filename="../../MainWindow.ui" line="1442"/>
<source>Push all tags</source>
<translation>推送所有標籤</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1378"/>
+ <location filename="../../MainWindow.ui" line="1447"/>
<source>Set config user</source>
<translation>設定使用者訊息</translation>
</message>
<message>
- <location filename="../../MainWindow.ui" line="1386"/>
+ <location filename="../../MainWindow.ui" line="1455"/>
<source>&Log</source>
<translation>日誌(&L)</translation>
</message>
<message>
<source>Unnamed</source>
<translation type="vanished">未命名</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="643"/>
+ <location filename="../../MainWindow.cpp" line="679"/>
<source>Default</source>
<translation>預設</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="840"/>
+ <location filename="../../MainWindow.cpp" line="878"/>
<source>Graph</source>
<translation>線圖</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="842"/>
+ <location filename="../../MainWindow.cpp" line="880"/>
<source>Date</source>
<translation>日期</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="843"/>
+ <location filename="../../MainWindow.cpp" line="881"/>
<source>Author</source>
<translation>作者</translation>
</message>
<message>
<source>Description</source>
<translation type="vanished">描述</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="990"/>
- <location filename="../../MainWindow.cpp" line="1119"/>
+ <location filename="../../MainWindow.cpp" line="1029"/>
+ <location filename="../../MainWindow.cpp" line="1199"/>
<source>Uncommited changes</source>
<translation>未提交的變更</translation>
</message>
<message>
<source>Are you sure you want to remove the repository from bookmarks ?</source>
<translation type="vanished">確定將此儲存庫從書籤中刪除嗎?</translation>
</message>
<message>
<source>(Files will NOT be deleted)</source>
<translation type="vanished">(此文件將不會被刪除)</translation>
</message>
<message>
<source>Open Repository</source>
<translation type="vanished">開啟儲存庫</translation>
</message>
<message>
<source>No such folder</source>
<translation type="vanished">沒有此資料夾。</translation>
</message>
<message>
<source>Not a valid git repository</source>
<translation type="vanished">不是有效的儲存庫</translation>
</message>
<message>
<source>Commit message can not be omitted.</source>
<translation type="vanished">提交訊息不能為空白。</translation>
</message>
<message>
<source>Repository Property</source>
<translation type="vanished">儲存庫內容</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1222"/>
+ <location filename="../../MainWindow.cpp" line="1457"/>
<source>&Add new group</source>
<translation>新增群組(&A)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1223"/>
+ <location filename="../../MainWindow.cpp" line="1458"/>
<source>&Delete group</source>
<translation>刪除群組(&D)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1224"/>
+ <location filename="../../MainWindow.cpp" line="1459"/>
<source>&Rename group</source>
<translation>重新命名群組(&R)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1229"/>
+ <location filename="../../MainWindow.cpp" line="1464"/>
<source>New group</source>
<translation>新群組</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1253"/>
+ <location filename="../../MainWindow.cpp" line="1488"/>
<source>Open &terminal</source>
<translation>開啟終端機(&T)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1254"/>
+ <location filename="../../MainWindow.cpp" line="1489"/>
<source>Open command promp&t</source>
<translation>開啟命令提示字元(&T)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1256"/>
+ <location filename="../../MainWindow.cpp" line="1491"/>
<source>&Open</source>
<translation>開啟(&O)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1267"/>
+ <location filename="../../MainWindow.cpp" line="1502"/>
<source>Open &folder</source>
<translation>打開資料夾(&F)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1272"/>
+ <location filename="../../MainWindow.cpp" line="1507"/>
<source>&Remove</source>
<translation>刪除(&R)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1315"/>
+ <location filename="../../MainWindow.cpp" line="1550"/>
<source>Copy commit id (7 letters)</source>
<translation>複製提交ID(7個字母)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1316"/>
+ <location filename="../../MainWindow.cpp" line="1551"/>
<source>Copy commit id (completely)</source>
<translation>複製提交ID(全部)</translation>
</message>
<message>
<source>Edit comment...</source>
<translation type="vanished">編輯提交訊息...</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1330"/>
- <location filename="../../MainWindow.cpp" line="2134"/>
+ <location filename="../../MainWindow.cpp" line="1242"/>
+ <location filename="../../MainWindow.cpp" line="1593"/>
<source>Rebase</source>
<translation>Rebase</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1349"/>
+ <location filename="../../MainWindow.cpp" line="1605"/>
<source>Explore</source>
<translation>瀏覽</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1338"/>
<source>Reset HEAD</source>
- <translation>重置HEAD</translation>
+ <translation type="vanished">重置HEAD</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="844"/>
+ <location filename="../../MainWindow.cpp" line="882"/>
<source>Message</source>
<translation>訊息</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1424"/>
- <location filename="../../MainWindow.cpp" line="1473"/>
- <location filename="../../MainWindow.cpp" line="1599"/>
+ <location filename="../../MainWindow.cpp" line="1679"/>
+ <location filename="../../MainWindow.cpp" line="1728"/>
+ <location filename="../../MainWindow.cpp" line="1854"/>
<source>History</source>
<translation>歷史紀錄</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="2092"/>
- <location filename="../../MainWindow.cpp" line="2106"/>
+ <location filename="../../MainWindow.cpp" line="2436"/>
+ <location filename="../../MainWindow.cpp" line="2450"/>
<source>No such commit</source>
<translation>沒有這樣的提交</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="2204"/>
- <location filename="../../MainWindow.cpp" line="2205"/>
+ <location filename="../../MainWindow.cpp" line="1143"/>
+ <location filename="../../MainWindow.cpp" line="1144"/>
<source>Update</source>
<translation>更新</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="2485"/>
+ <location filename="../../MainWindow.cpp" line="2762"/>
<source>Authentication Failed</source>
<translation>認證失敗</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1333"/>
+ <location filename="../../MainWindow.cpp" line="1596"/>
<source>Revert</source>
<translation>放棄變更</translation>
</message>
<message>
<source>Failed to commit</source>
<translation type="vanished">提交失敗</translation>
</message>
<message>
<source>No remote repository is registered.</source>
<translation type="vanished">遠端儲存庫尚未被註冊。</translation>
</message>
<message>
<source>The current branch %1 has no upstream branch.</source>
<translation type="vanished">目前的分支「%1」沒有上游分支。</translation>
</message>
<message>
<source>You try push --set-upstream</source>
<translation type="vanished">請嘗試使用 push --set-upstream</translation>
</message>
<message>
<source>Connection refused.</source>
<translation type="vanished">連線被拒絕</translation>
</message>
<message>
<source>&Property</source>
<translation type="vanished">內容(&P)</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1320"/>
+ <location filename="../../MainWindow.cpp" line="1567"/>
<source>Checkout/Branch...</source>
<translation>簽出/分支...</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1326"/>
+ <location filename="../../MainWindow.cpp" line="1589"/>
<source>Edit message...</source>
<translation>編輯訊息...</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1329"/>
+ <location filename="../../MainWindow.cpp" line="1592"/>
<source>Merge</source>
<translation>合併</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1331"/>
+ <location filename="../../MainWindow.cpp" line="1594"/>
<source>Cherry-pick</source>
<translation>擇優挑選</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1423"/>
- <location filename="../../MainWindow.cpp" line="1472"/>
+ <location filename="../../MainWindow.cpp" line="1678"/>
+ <location filename="../../MainWindow.cpp" line="1727"/>
<source>Untrack</source>
<translation>不追蹤</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1425"/>
- <location filename="../../MainWindow.cpp" line="1474"/>
- <location filename="../../MainWindow.cpp" line="1600"/>
+ <location filename="../../MainWindow.cpp" line="1680"/>
+ <location filename="../../MainWindow.cpp" line="1729"/>
+ <location filename="../../MainWindow.cpp" line="1855"/>
<source>Blame</source>
<translation>作者及版本修訂訊息</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1433"/>
+ <location filename="../../MainWindow.cpp" line="1688"/>
<source>Delete selected files.</source>
<translation>刪除選擇的檔案。</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1444"/>
+ <location filename="../../MainWindow.cpp" line="1699"/>
<source>rm --cached files</source>
<translation></translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1469"/>
+ <location filename="../../MainWindow.cpp" line="1724"/>
<source>Reset</source>
<translation>重置</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1470"/>
+ <location filename="../../MainWindow.cpp" line="1725"/>
<source>Ignore</source>
<translation>忽略</translation>
</message>
<message>
<source>Reset a file</source>
<translation type="vanished">重置檔案</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="2131"/>
+ <location filename="../../MainWindow.cpp" line="1239"/>
<source>Are you sure you want to rebase the commit ?</source>
<translation></translation>
</message>
<message>
<source>No repository selected</source>
<translation type="vanished">沒有選擇儲存庫</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="1422"/>
- <location filename="../../MainWindow.cpp" line="1471"/>
+ <location filename="../../MainWindow.cpp" line="1677"/>
+ <location filename="../../MainWindow.cpp" line="1726"/>
<source>Delete</source>
<translation>刪除</translation>
</message>
<message>
<source>Are you sure you want to run the following command ?</source>
<translation type="vanished">確定要執行以下指令嗎?</translation>
</message>
<message>
<source>Revert all files</source>
<translation type="vanished">放棄所有變更</translation>
</message>
<message>
<source>Select %1 command</source>
<translation type="vanished">選擇「%1」指令</translation>
</message>
<message>
<source>A file with same name already exists</source>
<translation type="vanished">已有相同檔案名稱</translation>
</message>
<message>
<source>A folder with same name already exists</source>
<translation type="vanished">已有相同的資料夾名稱</translation>
</message>
<message>
<source>Invalid folder</source>
<translation type="vanished">資料夾無效</translation>
</message>
<message>
<source>No such folder. Create it now ?</source>
<translation type="vanished">此資料夾不存在,是否要建立?</translation>
</message>
<message>
<source>The URL is a valid repository</source>
<translation type="vanished">此URL是有效的儲存庫</translation>
</message>
<message>
<source>Failed to access the URL</source>
<translation type="vanished">無法存取此URL</translation>
</message>
<message>
<source>Remote Repository</source>
<translation type="vanished">遠端儲存庫</translation>
</message>
<message>
- <location filename="../../MainWindow.cpp" line="2092"/>
- <location filename="../../MainWindow.cpp" line="2106"/>
+ <location filename="../../MainWindow.cpp" line="2436"/>
+ <location filename="../../MainWindow.cpp" line="2450"/>
<source>Jump</source>
<translation>移至</translation>
</message>
<message>
<source>That commmit has not foud or not read yet</source>
<translation type="vanished">未找到或尚未讀取到此提交</translation>
</message>
<message>
<source>Failed to delete the branch '%1'
</source>
<translation type="vanished">無法刪除分支:'%1'</translation>
</message>
</context>
<context>
<name>MergeBranchDialog</name>
<message>
- <location filename="../../MergeBranchDialog.ui" line="14"/>
<source>Merge</source>
- <translation>合併</translation>
+ <translation type="vanished">合併</translation>
</message>
<message>
- <location filename="../../MergeBranchDialog.ui" line="26"/>
<source>Current branch :</source>
- <translation>目前分支:</translation>
+ <translation type="vanished">目前分支:</translation>
</message>
<message>
- <location filename="../../MergeBranchDialog.ui" line="39"/>
- <source>TextLabel</source>
- <translation></translation>
+ <source>OK</source>
+ <translation type="vanished">確定</translation>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation type="vanished">取消</translation>
+ </message>
+</context>
+<context>
+ <name>MergeDialog</name>
+ <message>
+ <location filename="../../MergeDialog.ui" line="14"/>
+ <source>Merge</source>
+ <translation type="unfinished">合併</translation>
+ </message>
+ <message>
+ <location filename="../../MergeDialog.ui" line="20"/>
+ <source>Fast Forwarding</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MergeDialog.ui" line="26"/>
+ <source>Default (--ff)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MergeDialog.ui" line="33"/>
+ <source>No fast forward (--no-ff)</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../MergeBranchDialog.ui" line="62"/>
+ <location filename="../../MergeDialog.ui" line="40"/>
+ <source>Fast forward only (--ff-only)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MergeDialog.ui" line="50"/>
+ <source>From</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MergeDialog.ui" line="77"/>
<source>OK</source>
- <translation>確定</translation>
+ <translation type="unfinished">確定</translation>
</message>
<message>
- <location filename="../../MergeBranchDialog.ui" line="75"/>
+ <location filename="../../MergeDialog.ui" line="84"/>
<source>Cancel</source>
- <translation>取消</translation>
+ <translation type="unfinished">取消</translation>
</message>
</context>
<context>
<name>MyImageViewWidget</name>
<message>
<location filename="../../MyImageViewWidget.cpp" line="34"/>
<source>Save as...</source>
<translation>另存為...</translation>
</message>
<message>
<location filename="../../MyImageViewWidget.cpp" line="42"/>
<source>Save as</source>
<translation>另存為</translation>
</message>
</context>
<context>
<name>MyTextEditorWidget</name>
<message>
<location filename="../../MyTextEditorWidget.cpp" line="35"/>
<source>Save as...</source>
<translation>另存為...</translation>
</message>
<message>
<location filename="../../MyTextEditorWidget.cpp" line="36"/>
<source>Copy</source>
<translation>複製</translation>
</message>
<message>
<location filename="../../MyTextEditorWidget.cpp" line="43"/>
<source>Save as</source>
<translation>另存為</translation>
</message>
</context>
<context>
<name>ObjectBrowserDialog</name>
<message>
<location filename="../../ObjectBrowserDialog.ui" line="14"/>
<source>Object Browser</source>
<translation>物件瀏覽器</translation>
</message>
<message>
<location filename="../../ObjectBrowserDialog.ui" line="38"/>
<source>Inspect</source>
<translation>檢查</translation>
</message>
<message>
<location filename="../../ObjectBrowserDialog.ui" line="58"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../ObjectBrowserDialog.ui" line="65"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
<location filename="../../ObjectBrowserDialog.cpp" line="23"/>
<source>ID</source>
<translation></translation>
</message>
<message>
<location filename="../../ObjectBrowserDialog.cpp" line="24"/>
<source>Type</source>
<translation>類型</translation>
</message>
<message>
<location filename="../../ObjectBrowserDialog.cpp" line="119"/>
<source>Object Inspection</source>
<translation>物件檢查</translation>
</message>
</context>
<context>
<name>PushDialog</name>
<message>
<location filename="../../PushDialog.ui" line="14"/>
<source>Push</source>
<translation>推送</translation>
</message>
<message>
<location filename="../../PushDialog.ui" line="20"/>
<source>push --set-upstream</source>
<translation>push --set-upstream</translation>
</message>
<message>
<location filename="../../PushDialog.ui" line="26"/>
<source>Remote</source>
<translation>遠端</translation>
</message>
<message>
<location filename="../../PushDialog.ui" line="33"/>
<source>Branch</source>
<translation>分支</translation>
</message>
<message>
<location filename="../../PushDialog.ui" line="64"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../PushDialog.ui" line="71"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>RebaseOntoDialog</name>
<message>
<source>Branch</source>
<translation type="vanished">分支</translation>
</message>
<message>
<source>Cancel</source>
<translation type="vanished">取消</translation>
</message>
</context>
<context>
<name>ReflogWindow</name>
<message>
<location filename="../../ReflogWindow.ui" line="14"/>
<source>Reflog</source>
<translation></translation>
</message>
<message>
<location filename="../../ReflogWindow.ui" line="57"/>
<source>Close</source>
<translation>關閉</translation>
</message>
<message>
<location filename="../../ReflogWindow.cpp" line="35"/>
<source>Commit</source>
<translation>提交</translation>
</message>
<message>
<location filename="../../ReflogWindow.cpp" line="36"/>
<source>Head</source>
<translation></translation>
</message>
<message>
<location filename="../../ReflogWindow.cpp" line="37"/>
<source>Command</source>
<translation>指令</translation>
</message>
<message>
<location filename="../../ReflogWindow.cpp" line="38"/>
<source>Message</source>
<translation>訊息</translation>
</message>
<message>
<source>Comment</source>
<translation type="vanished">備註</translation>
</message>
<message>
<location filename="../../ReflogWindow.cpp" line="98"/>
<source>Checkout</source>
<translation>簽出</translation>
</message>
<message>
<location filename="../../ReflogWindow.cpp" line="99"/>
<source>Explorer</source>
<translation>瀏覽器</translation>
</message>
</context>
<context>
<name>RemoteRepositoriesTableWidget</name>
<message>
<location filename="../../RemoteRepositoriesTableWidget.cpp" line="27"/>
<source>Copy URL</source>
<translation>複製網址</translation>
</message>
</context>
<context>
<name>RepositoryPropertyDialog</name>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="14"/>
<source>Repository Property</source>
<oldsource>Repository Properties</oldsource>
<translation>儲存庫內容</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="65"/>
<source>TextLabel</source>
<translation></translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="95"/>
<source>Local dir :</source>
<translation>本地資料夾 :</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="114"/>
<source>Remote URLs</source>
<translation>遠端網址</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="124"/>
<source>Remote</source>
<translation>遠端</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="130"/>
<source>Add</source>
<translation>新增</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="137"/>
<source>Edit</source>
<translation>編輯</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="157"/>
<source>Remove</source>
<translation>移除</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="169"/>
<source>&Remote menu</source>
<translation>遠端選單(&R)</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.ui" line="189"/>
<source>Close</source>
<translation>關閉</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.cpp" line="131"/>
<source>Confirm Remove</source>
<translation>確定移除</translation>
</message>
<message>
<location filename="../../RepositoryPropertyDialog.cpp" line="131"/>
<source>Are you sure you want to remove the remote '%1' from the repository '%2' ?</source>
<translation>確定要從儲存庫「%2」中移除遠端「%1」嗎?</translation>
</message>
</context>
<context>
<name>SearchFromGitHubDialog</name>
<message>
<location filename="../../SearchFromGitHubDialog.ui" line="14"/>
<source>Search From GitHub</source>
<translation>從GitHub搜尋</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.ui" line="25"/>
<source>Search</source>
<translation>搜尋</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.ui" line="78"/>
<source>ssh</source>
<translation>ssh</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.ui" line="88"/>
<source>http</source>
<translation>http</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.ui" line="115"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.ui" line="122"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.cpp" line="56"/>
<source>Name</source>
<translation>名稱</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.cpp" line="57"/>
<source>Owner</source>
<translation>擁有者</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.cpp" line="58"/>
<source>Score</source>
<translation>範圍</translation>
</message>
<message>
<location filename="../../SearchFromGitHubDialog.cpp" line="59"/>
<source>Description</source>
<translation>描述</translation>
</message>
</context>
<context>
<name>SelectCommandDialog</name>
<message>
<location filename="../../SelectCommandDialog.ui" line="14"/>
<source>Select git command</source>
<translation>選擇git指令</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.ui" line="20"/>
<source>TextLabel</source>
<translation></translation>
</message>
<message>
<location filename="../../SelectCommandDialog.ui" line="32"/>
<source>&Browse...</source>
<translation>瀏覽(&B)...</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.ui" line="52"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.ui" line="59"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.cpp" line="29"/>
<source>Please select the '%1' command you want to use.</source>
<translation>請選擇想使用的'%1' 指令。</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.cpp" line="58"/>
<location filename="../../SelectCommandDialog.cpp" line="65"/>
<source>%1 command (%2);;</source>
<translation>%1 指令 (%2);;</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.cpp" line="60"/>
<source>Executable files (*.exe)</source>
<translation>執行檔 (*.exe)</translation>
</message>
<message>
<location filename="../../SelectCommandDialog.cpp" line="71"/>
<source>%1 command</source>
<translation>%1 指令</translation>
</message>
</context>
<context>
<name>SelectGpgKeyDialog</name>
<message>
<location filename="../../SelectGpgKeyDialog.ui" line="14"/>
<source>Select GPG Key</source>
<translation>選擇GPG金鑰</translation>
</message>
<message>
<location filename="../../SelectGpgKeyDialog.ui" line="57"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../SelectGpgKeyDialog.ui" line="64"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
<location filename="../../SelectGpgKeyDialog.cpp" line="31"/>
<source>ID</source>
<translation></translation>
</message>
<message>
<location filename="../../SelectGpgKeyDialog.cpp" line="32"/>
<source>Name</source>
<translation>名稱</translation>
</message>
<message>
<location filename="../../SelectGpgKeyDialog.cpp" line="33"/>
<source>Mail</source>
<translation>電子郵件</translation>
</message>
</context>
<context>
<name>SelectItemDialog</name>
<message>
<location filename="../../SelectItemDialog.ui" line="14"/>
<source>Dialog</source>
<translation></translation>
</message>
<message>
<location filename="../../SelectItemDialog.ui" line="25"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../SelectItemDialog.ui" line="32"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>SetGlobalUserDialog</name>
<message>
<location filename="../../SetGlobalUserDialog.ui" line="14"/>
<source>Global User Setting</source>
<translation>全域使用者設定</translation>
</message>
<message>
<location filename="../../SetGlobalUserDialog.ui" line="31"/>
<source>Name</source>
<translation>名稱</translation>
</message>
<message>
<location filename="../../SetGlobalUserDialog.ui" line="41"/>
<source>Mail</source>
<translation>電子郵件</translation>
</message>
<message>
<location filename="../../SetGlobalUserDialog.ui" line="68"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../SetGlobalUserDialog.ui" line="78"/>
<source>Skip</source>
<translation>略過</translation>
</message>
</context>
<context>
<name>SetGpgSigningDialog</name>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="14"/>
<source>Set GPG Signing</source>
<translation>設定GPG簽名</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="26"/>
<source>Global</source>
<translation>全域</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="39"/>
<location filename="../../SetGpgSigningDialog.cpp" line="29"/>
<source>Repository</source>
<translation>儲存庫</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="61"/>
<source>ID</source>
<translation>ID</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="71"/>
<source>Name</source>
<translation>名稱</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="81"/>
<source>Mail</source>
<translation>電子郵件</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="93"/>
<source>Select</source>
<translation>選擇</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="113"/>
<source>Clear</source>
<translation>清除</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="127"/>
<source>Configure...</source>
<translation>設定...</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="147"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../SetGpgSigningDialog.ui" line="154"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>SetRemoteUrlDialog</name>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="14"/>
<source>Set Remote URL</source>
<translation>設定遠端網址</translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="20"/>
<source>Current URLs</source>
<translation>目前網址</translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="30"/>
<source>New URL</source>
<translation>新網址</translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="36"/>
<source>Name</source>
<translation>名稱</translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="91"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="98"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="43"/>
<source>URL</source>
<translation>網址</translation>
</message>
<message>
<location filename="../../SetRemoteUrlDialog.ui" line="63"/>
<source>&Test</source>
<translation>測試(&T)</translation>
</message>
</context>
<context>
<name>SetUserDialog</name>
<message>
<location filename="../../SetUserDialog.ui" line="14"/>
<source>Set User</source>
<translation>設定使用者</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="20"/>
<source>Global</source>
<translation>全域</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="27"/>
<location filename="../../SetUserDialog.cpp" line="31"/>
<source>Repository</source>
<translation>儲存庫</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="42"/>
<source>Name</source>
<translation>名稱</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="52"/>
<source>Mail</source>
<translation>電子郵件</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="66"/>
<source>Get icon from Gravatar</source>
<translation>從Gravatar獲得圖案</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="122"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../SetUserDialog.ui" line="132"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>SettingBehaviorForm</name>
<message>
<location filename="../../SettingBehaviorForm.ui" line="14"/>
<source>Behavior</source>
<translation>行為</translation>
</message>
<message>
<location filename="../../SettingBehaviorForm.ui" line="20"/>
- <location filename="../../SettingBehaviorForm.cpp" line="77"/>
+ <location filename="../../SettingBehaviorForm.cpp" line="43"/>
<source>Default working folder</source>
<translation>預設工作資料夾</translation>
</message>
<message>
<location filename="../../SettingBehaviorForm.ui" line="29"/>
<source>Browse...</source>
<translation>瀏覽...</translation>
</message>
<message>
<location filename="../../SettingBehaviorForm.ui" line="39"/>
<source>Automatically fetch when opening the repository</source>
<translation>開啟儲存庫時自動fetch</translation>
</message>
<message>
<location filename="../../SettingBehaviorForm.ui" line="46"/>
<source>Get committer's icon from gravatar.com</source>
<translation>從Gravatar獲得圖案</translation>
</message>
<message>
<location filename="../../SettingBehaviorForm.ui" line="61"/>
<source>Maximum number of commit item acquisitions</source>
<translation>最大獲取的提交數量</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.ui" line="88"/>
<source>Watch remote changes periodically</source>
<oldsource>Periodically watch remote updates</oldsource>
- <translation>定期檢查遠端的變更</translation>
+ <translation type="vanished">定期檢查遠端的變更</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.ui" line="108"/>
<source>interval</source>
<oldsource>interval in min:</oldsource>
- <translation>間隔</translation>
+ <translation type="vanished">間隔</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.ui" line="128"/>
+ <location filename="../../SettingBehaviorForm.ui" line="94"/>
<source>GPG signing policy</source>
<oldsource>GPG Signing Policy</oldsource>
<translation>GPG簽名政策</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.ui" line="135"/>
+ <location filename="../../SettingBehaviorForm.ui" line="101"/>
<source>Configure...</source>
<translation>設定...</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.cpp" line="38"/>
<source>Disable</source>
- <translation>停用</translation>
+ <translation type="vanished">停用</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.cpp" line="40"/>
<source>1 min</source>
- <translation>1分</translation>
+ <translation type="vanished">1分</translation>
</message>
<message>
- <location filename="../../SettingBehaviorForm.cpp" line="42"/>
<source>%1 mins</source>
- <translation>%1分</translation>
+ <translation type="vanished">%1分</translation>
</message>
</context>
<context>
<name>SettingExampleForm</name>
<message>
<location filename="../../SettingExampleForm.ui" line="14"/>
<source>Example</source>
<translation>範例</translation>
</message>
<message>
<location filename="../../SettingExampleForm.ui" line="20"/>
<source>Underconstruction</source>
<translation>正在施工</translation>
</message>
</context>
<context>
<name>SettingGeneralForm</name>
<message>
<location filename="../../SettingGeneralForm.ui" line="14"/>
<source>General</source>
<translation>一般設定</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="20"/>
<source>Language</source>
<translation>語言</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="31"/>
<source>Change Language...</source>
<translation>選擇語言...</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="54"/>
<source>Change Theme...</source>
<translation>選擇主題...</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="66"/>
<source>Remember and restore window position</source>
<translation>記住並恢復視窗位置</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="73"/>
<source>Enable high DPI scaling</source>
<translation>啟用高解析度螢幕縮放</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="43"/>
<source>Theme</source>
<translation>主題</translation>
</message>
<message>
- <location filename="../../SettingGeneralForm.cpp" line="16"/>
<source>English</source>
- <translation>英文</translation>
+ <translation type="vanished">英文</translation>
</message>
<message>
- <location filename="../../SettingGeneralForm.cpp" line="17"/>
<source>Japanese</source>
- <translation>日語</translation>
+ <translation type="vanished">日語</translation>
</message>
<message>
- <location filename="../../SettingGeneralForm.cpp" line="18"/>
<source>Russian</source>
- <translation>俄文</translation>
+ <translation type="vanished">俄文</translation>
</message>
<message>
- <location filename="../../SettingGeneralForm.cpp" line="20"/>
+ <location filename="../../SettingGeneralForm.cpp" line="19"/>
<source>Standard</source>
<translation>標準</translation>
</message>
<message>
- <location filename="../../SettingGeneralForm.cpp" line="21"/>
+ <location filename="../../SettingGeneralForm.cpp" line="20"/>
<source>Dark</source>
<translation>暗</translation>
</message>
<message>
- <location filename="../../SettingGeneralForm.cpp" line="79"/>
+ <location filename="../../SettingGeneralForm.cpp" line="82"/>
<source>Select Language</source>
<translation>選擇語言</translation>
</message>
<message>
- <location filename="../../SettingGeneralForm.cpp" line="98"/>
+ <location filename="../../SettingGeneralForm.cpp" line="106"/>
<source>Select Theme</source>
<translation>選擇主題</translation>
</message>
<message>
<location filename="../../SettingGeneralForm.ui" line="93"/>
<source>(Changes are applied at next run)</source>
<translation>(此設定必須下次執行時才會套用)</translation>
</message>
</context>
<context>
<name>SettingNetworkForm</name>
<message>
<location filename="../../SettingNetworkForm.ui" line="14"/>
<source>Network</source>
<translation>網路</translation>
</message>
<message>
<location filename="../../SettingNetworkForm.ui" line="20"/>
<source>Proxy server</source>
<oldsource>Proxy Server</oldsource>
<translation>代理伺服器</translation>
</message>
<message>
<location filename="../../SettingNetworkForm.ui" line="26"/>
<source>No proxy</source>
<oldsource>No Proxy</oldsource>
<translation>無代理伺服器</translation>
</message>
<message>
<location filename="../../SettingNetworkForm.ui" line="33"/>
<source>Auto detect</source>
<oldsource>Auto Detect</oldsource>
<translation>自動偵測</translation>
</message>
<message>
<location filename="../../SettingNetworkForm.ui" line="40"/>
<source>Manual</source>
<translation>手動</translation>
</message>
</context>
<context>
<name>SettingProgramsForm</name>
<message>
<location filename="../../SettingProgramsForm.ui" line="14"/>
<source>Programs</source>
<translation>程式</translation>
</message>
<message>
<location filename="../../SettingProgramsForm.ui" line="20"/>
<source>Git command</source>
<translation>Git指令</translation>
</message>
<message>
<location filename="../../SettingProgramsForm.ui" line="29"/>
<location filename="../../SettingProgramsForm.ui" line="48"/>
<location filename="../../SettingProgramsForm.ui" line="67"/>
<source>Browse...</source>
<translation>瀏覽...</translation>
</message>
<message>
<location filename="../../SettingProgramsForm.ui" line="39"/>
<source>File command</source>
<translation>檔案總管指令</translation>
</message>
<message>
<location filename="../../SettingProgramsForm.ui" line="58"/>
<source>GPG command (option)</source>
<translation>GPG指令(可選)</translation>
</message>
</context>
<context>
<name>SettingsDialog</name>
<message>
<location filename="../../SettingsDialog.ui" line="14"/>
<source>Settings</source>
<translation>設定</translation>
</message>
<message>
<location filename="../../SettingsDialog.ui" line="141"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../SettingsDialog.ui" line="148"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
</context>
<context>
<name>TextEditDialog</name>
<message>
<location filename="../../TextEditDialog.ui" line="14"/>
<source>Dialog</source>
<translation></translation>
</message>
<message>
<location filename="../../TextEditDialog.ui" line="48"/>
<source>OK</source>
<translation>確定</translation>
</message>
<message>
<location filename="../../TextEditDialog.ui" line="58"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
+ <message>
+ <location filename="../../TextEditDialog.cpp" line="29"/>
+ <source>&Close</source>
+ <translation type="unfinished">關閉(&C)</translation>
+ </message>
+ <message>
+ <location filename="../../TextEditDialog.cpp" line="29"/>
+ <source>Cacnel</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>WelcomeWizardDialog</name>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="14"/>
<source>Welcome to the Guitar Wizard</source>
<translation>歡迎使用Guitar設定精靈</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="45"/>
<source>Helper Tools</source>
<translation>助手工具</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="61"/>
<location filename="../../WelcomeWizardDialog.ui" line="338"/>
<source>git</source>
<translation>git</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="71"/>
<location filename="../../WelcomeWizardDialog.ui" line="88"/>
<location filename="../../WelcomeWizardDialog.ui" line="248"/>
<source>Browse</source>
<translation>瀏覽</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="78"/>
<location filename="../../WelcomeWizardDialog.ui" line="352"/>
<source>file</source>
<translation>檔案</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="120"/>
<source>Global User Information</source>
<translation>全域使用者訊息</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="142"/>
<source>git config --global user.name</source>
<translation>git config --global user.name</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="152"/>
<source>git config --global user.email</source>
<translation>git config --global user.email</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="168"/>
<source>Get icon from Gravatar</source>
<translation>從Gravatar獲得圖案</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="222"/>
- <location filename="../../WelcomeWizardDialog.cpp" line="155"/>
+ <location filename="../../WelcomeWizardDialog.cpp" line="163"/>
<source>Default Working Folder</source>
<translation>預設工作資料夾</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="238"/>
<location filename="../../WelcomeWizardDialog.ui" line="324"/>
<source>folder</source>
<translation>資料夾</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="280"/>
<source>Ready to play the Guitar !</source>
<translation>Guitar已就緒!</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="296"/>
<source>user</source>
<translation>使用者</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="310"/>
<source>email</source>
<translation>電子郵件</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="426"/>
- <location filename="../../WelcomeWizardDialog.cpp" line="147"/>
+ <location filename="../../WelcomeWizardDialog.cpp" line="155"/>
<source><< Prev</source>
<translation><< 上一步</translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.ui" line="433"/>
- <location filename="../../WelcomeWizardDialog.cpp" line="148"/>
+ <location filename="../../WelcomeWizardDialog.cpp" line="156"/>
<source>Next >></source>
<translation>下一步 >></translation>
</message>
<message>
<location filename="../../WelcomeWizardDialog.cpp" line="126"/>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
- <location filename="../../WelcomeWizardDialog.cpp" line="145"/>
+ <location filename="../../WelcomeWizardDialog.cpp" line="152"/>
<source>Finish</source>
<translation>完成</translation>
</message>
</context>
</TS>
diff --git a/src/texteditor/AbstractCharacterBasedApplication.cpp b/src/texteditor/AbstractCharacterBasedApplication.cpp
index b7302d6..7264900 100644
--- a/src/texteditor/AbstractCharacterBasedApplication.cpp
+++ b/src/texteditor/AbstractCharacterBasedApplication.cpp
@@ -1,2607 +1,2612 @@
#include <memory>
#include <memory>
#include "AbstractCharacterBasedApplication.h"
#include "UnicodeWidth.h"
#include "unicode.h"
#include <QApplication>
#include <QClipboard>
#include <QDebug>
#include <QFile>
#include <QTextCodec>
#include <memory>
using WriteMode = AbstractCharacterBasedApplication::WriteMode;
using FormattedLine = AbstractCharacterBasedApplication::FormattedLine;
class EsccapeSequence {
private:
int offset = 0;
unsigned char data[100];
int color_fg = -1;
int color_bg = -1;
public:
bool isActive() const
{
return offset > 0;
}
void write(char c)
{
if (c == 0x1b) {
data[0] = c;
offset = 1;
return;
}
data[offset] = c;
if (offset > 0) {
if (c == 'm') {
if (data[1] == '[' && isdigit(data[2]) && isdigit(data[3])) {
data[offset] = 0;
if (data[2] == '3') {
color_fg = atoi((char const *)data + 3);
if (color_fg == 9) {
color_fg = -1;
}
}
if (data[2] == '4') {
color_bg = atoi((char const *)data + 3);
if (color_bg == 9) {
color_bg = -1;
}
}
}
offset = 0;
return;
}
if (offset + 1 < (int)sizeof(data)) {
offset++;
}
}
}
int fg_color_code() const
{
return color_fg == 9 ? -1 : color_fg;
}
int bg_color_code() const
{
return color_bg == 9 ? -1 : color_bg;
}
};
struct AbstractCharacterBasedApplication::Private {
bool is_changed = false;
bool is_quit_enabled = false;
bool is_open_enabled = false;
bool is_save_enabled = false;
bool is_toggle_selection_anchor_enabled = true;
bool is_read_only = false;
bool is_terminal_mode = false;
bool is_cursor_visible = true;
State state = State::Normal;
int header_line = 1;
int footer_line = 1;
int screen_width = 80;
int screen_height = 24;
bool auto_layout = false;
QString recently_used_path;
bool show_line_number = true;
int left_margin = AbstractCharacterBasedApplication::LEFT_MARGIN;
QString dialog_title;
QString dialog_value;
std::vector<Character> screen;
std::vector<uint8_t> line_flags;
int parsed_row_index = -1;
int parsed_col_index = -1;
bool parsed_for_edit = false;
QByteArray parsed_line;
std::vector<AbstractCharacterBasedApplication::Char> prepared_current_line;
QList<Document::CharAttr_> syntax_table;
bool dialog_mode = false;
DialogHandler dialog_handler;
bool is_painting_suppressed = false;
int valid_line_index = -1;
int line_margin = 3;
WriteMode write_mode = WriteMode::Insert;
QTextCodec *text_codec = nullptr;
Qt::KeyboardModifiers keyboard_modifiers = Qt::KeyboardModifier::NoModifier;
bool ctrl_modifier = false;
bool shift_modifier = false;
EsccapeSequence escape_sequence;
bool cursor_moved_by_mouse = false;
};
AbstractCharacterBasedApplication::AbstractCharacterBasedApplication()
: m(new Private)
{
}
AbstractCharacterBasedApplication::~AbstractCharacterBasedApplication()
{
delete m;
}
void AbstractCharacterBasedApplication::setModifierKeys(Qt::KeyboardModifiers keymod)
{
m->keyboard_modifiers = keymod;
m->ctrl_modifier = m->keyboard_modifiers & Qt::ControlModifier;
m->shift_modifier = m->keyboard_modifiers & Qt::ShiftModifier;
}
void AbstractCharacterBasedApplication::clearShiftModifier()
{
m->shift_modifier = false;
}
bool AbstractCharacterBasedApplication::isControlModifierPressed() const
{
return m->ctrl_modifier;
}
bool AbstractCharacterBasedApplication::isShiftModifierPressed() const
{
return m->shift_modifier;
}
void AbstractCharacterBasedApplication::setTextCodec(QTextCodec *codec)
{
m->text_codec = codec;
clearParsedLine();
invalidateArea();
makeBuffer();
}
void AbstractCharacterBasedApplication::setAutoLayout(bool f)
{
m->auto_layout = f;
layoutEditor();
}
void AbstractCharacterBasedApplication::showHeader(bool f)
{
m->header_line = f ? 1 : 0;
layoutEditor();
}
void AbstractCharacterBasedApplication::showFooter(bool f)
{
m->footer_line = f ? 1 : 0;
layoutEditor();
}
void AbstractCharacterBasedApplication::showLineNumber(bool show, int left_margin)
{
m->show_line_number = show;
m->left_margin = left_margin;
}
void AbstractCharacterBasedApplication::setCursorVisible(bool show)
{
m->is_cursor_visible = show;
}
bool AbstractCharacterBasedApplication::isCursorVisible()
{
return m->is_cursor_visible;
}
void AbstractCharacterBasedApplication::retrieveLastText(std::vector<char> *out, int maxlen) const
{
const_cast<AbstractCharacterBasedApplication *>(this)->document()->retrieveLastText(out, maxlen);
}
bool AbstractCharacterBasedApplication::isChanged() const
{
return m->is_changed;
}
void AbstractCharacterBasedApplication::setChanged(bool f)
{
m->is_changed = f;
}
int AbstractCharacterBasedApplication::leftMargin_() const
{
return m->left_margin;
}
void AbstractCharacterBasedApplication::setRecentlyUsedPath(QString const &path)
{
m->recently_used_path = path;
}
QString AbstractCharacterBasedApplication::recentlyUsedPath()
{
return m->recently_used_path;
}
std::vector<AbstractCharacterBasedApplication::Character> *AbstractCharacterBasedApplication::screen()
{
return &m->screen;
}
const std::vector<AbstractCharacterBasedApplication::Character> *AbstractCharacterBasedApplication::screen() const
{
return &m->screen;
}
std::vector<uint8_t> *AbstractCharacterBasedApplication::line_flags()
{
return &m->line_flags;
}
void AbstractCharacterBasedApplication::makeBuffer()
{
int w = screenWidth();
int h = screenHeight();
int size = w * h;
m->screen.resize(size);
std::fill(m->screen.begin(), m->screen.end(), Character());
m->line_flags.resize(h);
}
void AbstractCharacterBasedApplication::layoutEditor()
{
makeBuffer();
editor_cx->viewport_org_x = leftMargin_();
editor_cx->viewport_org_y = m->header_line;
editor_cx->viewport_width = screenWidth() - cx()->viewport_org_x;
editor_cx->viewport_height = screenHeight() - (m->header_line + m->footer_line);
}
void AbstractCharacterBasedApplication::initEditor()
{
editor_cx = std::make_shared<TextEditorContext>();
layoutEditor();
}
bool AbstractCharacterBasedApplication::isLineNumberVisible() const
{
return m->show_line_number;
}
int AbstractCharacterBasedApplication::charWidth(uint32_t c)
{
return UnicodeWidth::width(UnicodeWidth::type(c));
}
QList<FormattedLine> AbstractCharacterBasedApplication::formatLine(Document::Line const &line, int tab_span, int anchor_a, int anchor_b) const
{
QByteArray ba;
if (m->text_codec) {
ba = m->text_codec->toUnicode(line.text).toUtf8();
} else {
ba = line.text;
}
std::vector<ushort> vec;
vec.reserve(ba.size() + 100);
size_t len = ba.size();
QList<FormattedLine> res;
int col = 0;
int col_start = col;
bool flag_a = false;
bool flag_b = false;
auto Color = [&](size_t offset, size_t *next_offset){
int i = findSyntax(&m->syntax_table, offset);
if (i < m->syntax_table.size() && m->syntax_table[i].offset <= offset) {
if (next_offset) {
if (i + 1 < m->syntax_table.size()) {
*next_offset = m->syntax_table[i + 1].offset;
} else {
*next_offset = -1;
}
}
static int color[] = {
0x000000,
0x0000ff,
0x00ff00,
0x00ffff,
0xff0000,
0xff00ff,
0xffff00,
0xffffff,
};
i = m->syntax_table[i].color;
if (i >= 0 && i < 8) {
return color[i];
}
}
if (next_offset) {
*next_offset = -1;
}
return 0;
};
auto Flush = [&](size_t offset, size_t *next_offset){
if (!vec.empty()) {
int atts = 0;
atts |= Color(offset, next_offset);
if (anchor_a >= 0 || anchor_b >= 0) {
if ((anchor_a < 0 || col_start >= anchor_a) && (anchor_b == -1 || col_start < anchor_b)) {
atts |= FormattedLine::Selected;
}
}
ushort const *left = &vec[0];
ushort const *right = left + vec.size();
while (left < right && (right[-1] == '\r' || right[-1] == '\n')) right--;
if (left < right) {
res.push_back(FormattedLine(QString::fromUtf16(left, right - left), atts));
}
vec.clear();
} else {
*next_offset = -1;
}
col_start = col;
};
size_t offset = 0;
size_t next_offset = -1;
if (len > 0) {
{
size_t o = line.byte_offset;
int i = findSyntax(&m->syntax_table, o);
if (i < m->syntax_table.size() && m->syntax_table[i].offset <= o) {
if (i + 1 < m->syntax_table.size()) {
o = m->syntax_table[i + 1].offset;
if (o != (size_t)-1) {
next_offset = o;
}
}
}
}
utf8 u8(ba.data(), len);
u8.to_utf32([&](uint32_t c){
if (line.byte_offset + u8.offset() == next_offset) {
Flush(line.byte_offset + offset, &next_offset);
offset += u8.offset();
}
if (c == '\t') {
do {
vec.push_back(' ');
col++;
} while (col % tab_span != 0);
} else if (c < ' ') {
// nop
} else {
int cw = charWidth(c);
if (c < 0xffff) {
vec.push_back(c);
} else {
int a = c >> 16;
if (a > 0 && a <= 0x20) {
a--;
int b = c & 0x03ff;
a = (a << 6) | ((c >> 10) & 0x003f);
a |= 0xd800;
b |= 0xdc00;
vec.push_back(a);
vec.push_back(b);
}
}
col += cw;
}
if ((anchor_a >= 0 || anchor_b >= 0) && anchor_a != anchor_b) {
if (!flag_a && col >= anchor_a) {
Flush(line.byte_offset + offset, &next_offset);
flag_a = true;
}
if (!flag_b && col >= anchor_b) {
Flush(line.byte_offset + offset, &next_offset);
flag_b = true;
}
}
return true;
});
}
Flush(line.byte_offset + offset, &next_offset);
return res;
}
QByteArray AbstractCharacterBasedApplication::fetchLine(int row) const
{
QByteArray line;
int lines = documentLines();
if (row >= 0 && row < lines) {
line = cx()->engine->document.lines[row].text;
}
return line;
}
void AbstractCharacterBasedApplication::fetchCurrentLine() const
{
int row = cx()->current_row;
m->parsed_line = fetchLine(row);
m->parsed_row_index = row;
}
void AbstractCharacterBasedApplication::clearParsedLine()
{
m->parsed_row_index = -1;
m->parsed_for_edit = false;
m->parsed_line.clear();
}
int AbstractCharacterBasedApplication::cursorX() const
{
return cx()->current_col - cx()->scroll_col_pos;
}
int AbstractCharacterBasedApplication::cursorY() const
{
return cx()->current_row - cx()->scroll_row_pos;
}
int AbstractCharacterBasedApplication::screenWidth() const
{
return m->screen_width;
}
int AbstractCharacterBasedApplication::screenHeight() const
{
return m->screen_height;
}
void AbstractCharacterBasedApplication::setScreenSize(int w, int h, bool update_layout)
{
m->screen_width = w;
m->screen_height = h;
if (update_layout) {
layoutEditor();
}
}
bool AbstractCharacterBasedApplication::isPaintingSuppressed() const
{
return m->is_painting_suppressed;
}
void AbstractCharacterBasedApplication::setPaintingSuppressed(bool f)
{
m->is_painting_suppressed = f;
}
void AbstractCharacterBasedApplication::commitLine(std::vector<Char> const &vec)
{
if (isReadOnly()) return;
QByteArray ba;
if (!vec.empty()){
std::vector<uint32_t> v;
for (Char const &c : vec) {
v.push_back(c.unicode);
}
utf32 u32(&v[0], v.size());
u32.to_utf8([&](char c, int pos){
(void)pos;
ba.push_back(c);
return true;
});
}
if (m->parsed_row_index == 0 && engine()->document.lines.empty()) {
Document::Line newline;
engine()->document.lines.push_back(newline);
}
Document::Line *line = &engine()->document.lines[m->parsed_row_index];
if (m->parsed_row_index == 0) {
line->byte_offset = 0;
line->line_number = (line->type == Document::Line::Unknown) ? 0 : 1;
}
line->text = ba;
if (m->valid_line_index > m->parsed_row_index) {
m->valid_line_index = m->parsed_row_index;
}
int y = m->parsed_row_index - cx()->scroll_row_pos + cx()->viewport_org_y;
if (y >= 0 && y < (int)m->line_flags.size()) {
m->line_flags[y] |= LineChanged;
}
}
void AbstractCharacterBasedApplication::parseLine(std::vector<Char> *vec, int increase_hint, bool force)
{
if (force) {
clearParsedLine();
}
if (force || !m->parsed_for_edit) {
fetchCurrentLine();
m->parsed_col_index = internalParseLine(m->parsed_line, vec ? vec : &m->prepared_current_line, increase_hint);
m->parsed_for_edit = true;
} else {
if (vec) {
*vec = m->prepared_current_line;
}
}
}
int AbstractCharacterBasedApplication::parseLine2(int row, std::vector<Char> *vec) const
{
QByteArray line = fetchLine(row);
int index = internalParseLine(line, vec, 0);
return index;
}
QByteArray AbstractCharacterBasedApplication::parsedLine() const
{
return m->parsed_line;
}
bool AbstractCharacterBasedApplication::isCurrentLineWritable() const
{
if (isReadOnly()) return false;
int row = cx()->current_row;
if (row >= 0 && row < cx()->engine->document.lines.size()) {
if (cx()->engine->document.lines[row].type != Document::Line::Unknown) {
return true;
}
}
return false;
}
int AbstractCharacterBasedApplication::editorViewportWidth() const
{
return cx()->viewport_width;
}
int AbstractCharacterBasedApplication::editorViewportHeight() const
{
return cx()->viewport_height;
}
int AbstractCharacterBasedApplication::print(int x, int y, QString const &text, const AbstractCharacterBasedApplication::Option &opt)
{
CharAttr attr = opt.char_attr;
if (opt.char_attr.flags & CharAttr::Selected) {
attr.index = CharAttr::Invert;
}
if (opt.char_attr.flags & CharAttr::CurrentLine) {
attr.index = CharAttr::Hilite;
}
const int screen_w = screenWidth();
const int screen_h = screenHeight();
int x_start = 0;
int y_start = 0;
int x_limit = screen_w;
int y_limit = screen_h;
if (!opt.clip.isNull()) {
x_start = opt.clip.x();
y_start = opt.clip.y();
x_limit = x_start + opt.clip.width();
y_limit = y_start + opt.clip.height();
}
if (y >= y_start && y < y_limit) {
bool changed = false;
int x2 = x;
int y2 = y;
if (text.isEmpty()) {
changed = true; // set changed flag if text is empty
} else {
for (int i = 0; i < text.size(); i++) {
ushort c = text.utf16()[i];
if (c < ' ' || c == 0x7f) continue;
int cw = charWidth(c);
if (x2 + cw > x_limit) {
break;
}
for (int j = 0; j < cw; j++) {
if (x2 >= x_start && x2 < screen_w) {
int o = y2 * screen_w + x2;
CharAttr a;
if (j == 0) {
a = attr;
} else {
c = -1;
}
if (c != m->screen[o].c || a != m->screen[o].a) {
m->screen[o].c = c;
m->screen[o].a = a;
changed = true;
}
}
x2++;
}
}
}
if (changed) {
m->line_flags[y] |= LineChanged;
}
x = x2;
}
return x;
}
void AbstractCharacterBasedApplication::initEngine(std::shared_ptr<TextEditorContext> const &cx)
{
cx->engine = std::make_shared<TextEditorEngine>();
}
TextEditorContext *AbstractCharacterBasedApplication::cx()
{
if (dialog_cx) {
if (!dialog_cx->engine) {
initEngine(dialog_cx);
}
return dialog_cx.get();
}
if (!editor_cx->engine) {
initEngine(editor_cx);
}
return editor_cx.get();
}
const TextEditorContext *AbstractCharacterBasedApplication::cx() const
{
return const_cast<AbstractCharacterBasedApplication *>(this)->cx();
}
TextEditorEnginePtr AbstractCharacterBasedApplication::engine()
{
Q_ASSERT(cx()->engine);
return cx()->engine;
}
void AbstractCharacterBasedApplication::setTextEditorEngine(TextEditorEnginePtr const &e)
{
cx()->engine = e;
}
void AbstractCharacterBasedApplication::setDocument(QList<Document::Line> const *source)
{
document()->lines = *source;
}
void AbstractCharacterBasedApplication::openFile(QString const &path)
{
document()->lines.clear();
QFile file(path);
if (file.open(QFile::ReadOnly)) {
size_t offset = 0;
QString line;
unsigned int linenum = 0;
while (!file.atEnd()) {
linenum++;
Document::Line line(file.readLine());
line.byte_offset = offset;
line.type = Document::Line::Normal;
line.line_number = linenum;
document()->lines.push_back(line);
offset += line.text.size();
}
int n = line.size();
if (n > 0) {
ushort const *p = line.utf16();
ushort c = p[n - 1];
if (c == '\r' || c == '\n') {
document()->lines.push_back(Document::Line(QByteArray()));
}
}
m->valid_line_index = (int)document()->lines.size();
setRecentlyUsedPath(path);
}
scrollToTop();
}
void AbstractCharacterBasedApplication::saveFile(QString const &path)
{
QFile file(path);
if (file.open(QFile::WriteOnly)) {
for (Document::Line const &line : document()->lines) {
file.write(line.text);
}
}
}
void AbstractCharacterBasedApplication::pressEnter()
{
deleteIfSelected();
if (isDialogMode()) {
closeDialog(true);
} else {
writeNewLine();
}
}
void AbstractCharacterBasedApplication::pressEscape()
{
if (isTerminalMode()) {
m->escape_sequence.write(0x1b);
return;
}
if (isDialogMode()) {
closeDialog(false);
return;
}
deselect();
updateVisibility(false, false, false);
}
AbstractCharacterBasedApplication::State AbstractCharacterBasedApplication::state() const
{
return m->state;
}
Document *AbstractCharacterBasedApplication::document()
{
return &engine()->document;
}
int AbstractCharacterBasedApplication::documentLines() const
{
return const_cast<AbstractCharacterBasedApplication *>(this)->document()->lines.size();
}
bool AbstractCharacterBasedApplication::isSingleLineMode() const
{
return cx()->single_line;
}
void AbstractCharacterBasedApplication::setLineMargin(int n)
{
m->line_margin = n;
}
void AbstractCharacterBasedApplication::ensureCurrentLineVisible()
{
int margin = (cx()->viewport_height >= 6 && !isSingleLineMode()) ? m->line_margin : 0;
int pos = cx()->scroll_row_pos;
int top = cx()->current_row - margin;
int bottom = cx()->current_row + 1 - editorViewportHeight() + margin;
if (pos > top) pos = top;
if (pos < bottom) pos = bottom;
if (pos < 0) pos = 0;
if (cx()->scroll_row_pos != pos) {
cx()->scroll_row_pos = pos;
invalidateArea();
}
}
int AbstractCharacterBasedApplication::decideColumnScrollPos() const
{
int x = cx()->current_col;
int w = editorViewportWidth() - RIGHT_MARGIN;
if (w < 0) w = 0;
return x > w ? (cx()->current_col - w) : 0;
}
int AbstractCharacterBasedApplication::calcVisualWidth(const Document::Line &line) const
{
QList<FormattedLine> lines = formatLine(line, cx()->tab_span);
int x = 0;
for (FormattedLine const &line : lines) {
if (line.text.isEmpty()) continue;
ushort const *ptr = line.text.utf16();
ushort const *end = ptr + line.text.size();
while (1) {
int c = -1;
if (ptr < end) {
c = *ptr;
ptr++;
}
if (c == -1 || c == '\r' || c == '\n') {
break;
}
if (c == '\t') {
x += cx()->tab_span;
x -= x % cx()->tab_span;
} else {
x += charWidth(c);
}
}
}
return x;
}
void AbstractCharacterBasedApplication::clearRect(int x, int y, int w, int h)
{
int scr_w = screenWidth();
int scr_h = screenHeight();
int y0 = y;
int y1 = y + h;
if (y0 < 0) y0 = 0;
if (y1 > scr_h) y1 = scr_h;
int x0 = x;
int x1 = x + w;
if (x0 < 0) x0 = 0;
if (x1 > scr_w) x1 = scr_w;
for (int y = y0; y < y1; y++) {
for (int x = x0; x < x1; x++) {
int o = y * scr_w + x;
m->screen[o] = Character();
}
}
}
int AbstractCharacterBasedApplication::calcIndexToColumn(const std::vector<Char> &vec, int index) const
{
int col = 0;
for (int i = 0; i < index; i++) {
uint32_t c = vec.at(i).unicode;
if (c == '\t') {
col += cx()->tab_span;
col -= col % cx()->tab_span;
} else {
col += charWidth(c);
}
}
return col;
}
void AbstractCharacterBasedApplication::savePos()
{
TextEditorContext *p = editor_cx.get();
if (p) {
p->saved_row = p->current_row;
p->saved_col = p->current_col;
p->saved_col_hint = p->current_col_hint;
}
}
void AbstractCharacterBasedApplication::restorePos()
{
TextEditorContext *p = editor_cx.get();
if (p) {
p->current_row = p->saved_row;
p->current_col = p->saved_col;
p->current_col_hint = p->saved_col_hint;
}
}
void AbstractCharacterBasedApplication::setCursorRow(int row, bool auto_scroll, bool by_mouse)
{
if (cx()->current_row == row) return;
if (isShiftModifierPressed()) {
if (selection_anchor_0.enabled == SelectionAnchor::No) {
setSelectionAnchor(SelectionAnchor::EnabledEasy, true, auto_scroll);
selection_anchor_1 = selection_anchor_0;
}
} else if (selection_anchor_0.enabled == SelectionAnchor::EnabledEasy) {
setSelectionAnchor(SelectionAnchor::No, false, auto_scroll);
}
cx()->current_row = row;
if (selection_anchor_0.enabled != SelectionAnchor::No) {
setSelectionAnchor(selection_anchor_0.enabled, true, auto_scroll);
}
m->cursor_moved_by_mouse = by_mouse;
}
void AbstractCharacterBasedApplication::setCursorCol(int col, bool auto_scroll, bool by_mouse)
{
if (cx()->current_col == col) {
cx()->current_col_hint = col;
return;
}
if (isShiftModifierPressed()) {
if (selection_anchor_0.enabled == SelectionAnchor::No) {
setSelectionAnchor(SelectionAnchor::EnabledEasy, true, auto_scroll);
selection_anchor_1 = selection_anchor_0;
}
} else if (selection_anchor_0.enabled == SelectionAnchor::EnabledEasy) {
setSelectionAnchor(SelectionAnchor::No, false, auto_scroll);
}
cx()->current_col = col;
cx()->current_col_hint = col;
if (selection_anchor_0.enabled != SelectionAnchor::No) {
setSelectionAnchor(selection_anchor_0.enabled, true, auto_scroll);
}
m->cursor_moved_by_mouse = by_mouse;
}
void AbstractCharacterBasedApplication::setCursorPos(int row, int col)
{
setCursorRow(row, false);
setCursorCol(col, false);
}
void AbstractCharacterBasedApplication::setCursorColByIndex(std::vector<Char> const &vec, int col_index)
{
int col = calcIndexToColumn(vec, col_index);
setCursorCol(col);
}
int AbstractCharacterBasedApplication::nextTabStop(int x) const
{
x += cx()->tab_span;
x -= x % cx()->tab_span;
return x;
}
void AbstractCharacterBasedApplication::editSelected(EditOperation op, std::vector<Char> *cutbuffer)
{
if (isReadOnly() && op == EditOperation::Cut) {
op = EditOperation::Copy;
}
SelectionAnchor a = selection_anchor_0;
SelectionAnchor b = selection_anchor_1;
if (!a.enabled) return;
if (!b.enabled) return;
if (a == b) return;
auto UpdateVisibility = [&](){
updateVisibility(false, false, false);
};
if (cutbuffer) {
cutbuffer->clear();
}
std::list<std::vector<Char>> cutlist;
if (a.row > b.row) {
std::swap(a, b);
} else if (a.row == b.row) {
if (a.col > b.col) {
std::swap(a, b);
}
}
int curr_row = cx()->current_row;
int curr_col = cx()->current_col;
cx()->current_row = b.row;
cx()->current_col = b.col;
if (a.row == b.row) {
std::vector<Char> vec1;
parseLine(&vec1, 0, true);
auto begin = vec1.begin() + calcColumnToIndex(a.col);
auto end = vec1.begin() + calcColumnToIndex(b.col);
if (cutbuffer) {
std::vector<Char> cut;
cut.insert(cut.end(), begin, end);
cutlist.push_back(std::move(cut));
}
if (op == EditOperation::Cut) {
vec1.erase(begin, end);
commitLine(vec1);
UpdateVisibility();
}
} else {
std::vector<Char> vec1;
parseLine(&vec1, 0, true);
{
auto begin = vec1.begin();
auto end = vec1.begin() + calcColumnToIndex(b.col);
if (cutbuffer) {
std::vector<Char> cut;
cut.insert(cut.end(), begin, end);
cutlist.push_back(std::move(cut));
}
if (op == EditOperation::Cut) {
vec1.erase(begin, end);
commitLine(vec1);
UpdateVisibility();
}
}
int n = b.row - a.row;
for (int i = 0; i < n; i++) {
QList<Document::Line> *lines = &cx()->engine->document.lines;
if (cutbuffer && i > 0) {
cx()->current_row = b.row - i;
cx()->current_col = 0;
std::vector<Char> cut;
parseLine(&cut, 0, true);
cutlist.push_back(std::move(cut));
}
if (op == EditOperation::Cut) {
lines->erase(lines->begin() + b.row - i);
}
}
cx()->current_row = a.row;
cx()->current_col = a.col;
int index = calcColumnToIndex(a.col);
std::vector<Char> vec2;
parseLine(&vec2, 0, true);
if (cutbuffer) {
std::vector<Char> cut;
cut.insert(cut.end(), vec2.begin() + index, vec2.end());
cutlist.push_back(std::move(cut));
}
if (op == EditOperation::Cut) {
vec2.resize(index);
vec2.insert(vec2.end(), vec1.begin(), vec1.end());
commitLine(vec2);
UpdateVisibility();
}
}
if (cutbuffer) {
size_t size = 0;
for (std::vector<Char> const &v : cutlist) {
size += v.size();
}
cutbuffer->reserve(size);
for (auto it = cutlist.rbegin(); it != cutlist.rend(); it++) {
std::vector<Char> const &v = *it;
cutbuffer->insert(cutbuffer->end(), v.begin(), v.end());
}
}
-
if (op == EditOperation::Cut) {
deselect();
setCursorPos(a.row, a.col);
invalidateArea(a.row - cx()->scroll_row_pos);
} else {
cx()->current_row = curr_row;
cx()->current_col = curr_col;
invalidateArea(curr_row - cx()->scroll_row_pos);
}
clearParsedLine();
UpdateVisibility();
}
void AbstractCharacterBasedApplication::edit_(EditOperation op)
{
- std::vector<Char> u32buf;
- editSelected(op, &u32buf);
- if (u32buf.empty()) return;
+ std::vector<Char> cutbuf;
+ editSelected(op, &cutbuf);
+ if (cutbuf.empty()) return;
+
+ std::vector<uint32_t> u32buf;
+ u32buf.reserve(cutbuf.size());
+ for (Char const &c : cutbuf) {
+ u32buf.push_back(c.unicode);
+ }
std::vector<ushort> u16buf;
u16buf.reserve(1024);
- utf32(&u32buf[0].unicode, u32buf.size()).to_utf16([&](uint16_t c){
+ utf32(u32buf.data(), u32buf.size()).to_utf16([&](uint16_t c){
u16buf.push_back(c);
return true;
});
if (!u16buf.empty()) {
QString s = QString::fromUtf16(&u16buf[0], u16buf.size());
qApp->clipboard()->setText(s);
}
}
bool AbstractCharacterBasedApplication::deleteIfSelected()
{
if (selection_anchor_0.enabled && selection_anchor_1.enabled) {
if (selection_anchor_0 != selection_anchor_1) {
editSelected(EditOperation::Cut, nullptr);
return true;
}
}
return false;
}
void AbstractCharacterBasedApplication::doDelete()
{
if (isReadOnly()) return;
if (isTerminalMode()) return;
if (deleteIfSelected()) {
return;
}
parseLine(nullptr, 0, false);
std::vector<Char> *vec = &m->prepared_current_line;
int index = m->parsed_col_index;
int c = -1;
if (index >= 0 && index < (int)vec->size()) {
c = (*vec)[index].unicode;
}
if (c == '\n' || c == '\r' || c == -1) {
if (index == 0) {
m->parsed_row_index--;
}
invalidateAreaBelowTheCurrentLine();
if (isSingleLineMode()) {
// nop
} else {
if (c != -1) {
vec->erase(vec->begin() + index);
if (c == '\r' && index < (int)vec->size() && (*vec)[index].unicode == '\n') {
vec->erase(vec->begin() + index);
}
}
if (vec->empty()) {
clearParsedLine();
if (cx()->current_row + 1 < (int)cx()->engine->document.lines.size()) {
cx()->engine->document.lines.erase(cx()->engine->document.lines.begin() + cx()->current_row);
}
} else {
commitLine(*vec);
setCursorColByIndex(*vec, index);
if (index == (int)vec->size()) {
int nextrow = cx()->current_row + 1;
int lines = documentLines();
if (nextrow < lines) {
Document::Line *ba1 = &cx()->engine->document.lines[cx()->current_row];
Document::Line const &ba2 = cx()->engine->document.lines[nextrow];
ba1->text.append(ba2.text);
cx()->engine->document.lines.erase(cx()->engine->document.lines.begin() + nextrow);
}
}
}
clearParsedLine();
updateVisibility(true, true, true);
}
} else {
vec->erase(vec->begin() + index);
commitLine(*vec);
setCursorColByIndex(*vec, index);
updateVisibility(true, true, true);
}
}
void AbstractCharacterBasedApplication::doBackspace()
{
if (isReadOnly()) return;
if (isTerminalMode()) return;
if (deleteIfSelected()) {
return ;
}
if (cx()->current_row > 0 || cx()->current_col > 0) {
setPaintingSuppressed(true);
moveCursorLeft();
doDelete();
setPaintingSuppressed(false);
updateVisibility(true, true, true);
}
}
bool AbstractCharacterBasedApplication::isDialogMode()
{
return m->dialog_mode;
}
void AbstractCharacterBasedApplication::setDialogOption(QString const &title, QString const &value, DialogHandler const &handler)
{
m->dialog_title = title;
m->dialog_value = value;
m->dialog_handler = handler;
}
void AbstractCharacterBasedApplication::setDialogMode(bool f)
{
if (f) {
if (!dialog_cx) {
int y = screenHeight() - 2;
dialog_cx = std::make_shared<TextEditorContext>();
dialog_cx->engine = std::make_shared<TextEditorEngine>();
dialog_cx->single_line = true;
dialog_cx->viewport_org_x = 0;
dialog_cx->viewport_org_y = y + 1;
dialog_cx->viewport_width = screenWidth();
dialog_cx->viewport_height = 1;
}
dialog_cx->engine->document.lines.push_back(Document::Line(m->dialog_value.toUtf8()));
editor_cx->viewport_height = screenHeight() - m->header_line - 2;
m->dialog_mode = true;
clearParsedLine();
moveCursorEnd();
} else {
dialog_cx.reset();
m->dialog_mode = false;
layoutEditor();
clearParsedLine();
updateVisibility(true, true, true);
}
}
void AbstractCharacterBasedApplication::execDialog(QString const &dialog_title, QString const &dialog_value, DialogHandler const &handler)
{
setDialogOption(dialog_title, dialog_value, handler);
setDialogMode(true);
}
void AbstractCharacterBasedApplication::closeDialog(bool result)
{
if (isDialogMode()) {
deselect();
QString line;
if (!dialog_cx->engine->document.lines.empty()) {
Document::Line const &l = dialog_cx->engine->document.lines.front();
line = QString::fromUtf8(l.text);
}
setDialogMode(false);
if (m->dialog_handler) {
m->dialog_handler(result, line);
}
return;
}
}
int AbstractCharacterBasedApplication::internalParseLine(QByteArray const &parsed_line, std::vector<Char> *vec, int increase_hint) const
{
vec->clear();
int index = -1;
int col = 0;
int len = parsed_line.size();
if (len > 0) {
vec->reserve(len + increase_hint);
char const *src = parsed_line.data();
utf8 u8(src, len);
while (1) {
int n = 0;
uint32_t c = u8.next();
if (c == 0) {
n = 1;
} else {
if (c == '\t') {
int z = nextTabStop(col);
n = z - col;
} else {
n = charWidth(c);
}
}
if (col <= cx()->current_col && col + n > cx()->current_col) {
index = (int)vec->size();
}
if (c == 0) break;
col += n;
vec->push_back(Char(c, 0));
}
}
return index;
}
int AbstractCharacterBasedApplication::calcColumnToIndex(int column)
{
int index = 0;
if (column > 0) {
fetchCurrentLine();
int col = 0;
int len = m->parsed_line.size();
if (len > 0) {
char const *src = m->parsed_line.data();
utf8 u8(src, len);
while (1) {
uint32_t c = u8.next();
int n = 0;
if (c == '\r' || c == '\n' || c == 0) {
break;
}
if (c == '\t') {
int z = nextTabStop(col);
n = z - col;
} else {
n = charWidth(c);
}
col += n;
index++;
if (col >= column) {
break;
}
}
}
}
return index;
}
void AbstractCharacterBasedApplication::invalidateArea(int top_y)
{
int y0 = cx()->viewport_org_y;
int y1 = cx()->viewport_height + y0;
top_y += y0;
if (y0 < top_y) y0 = top_y;
int n = m->line_flags.size();
if (y0 < 0) y0 = 0;
if (y1 > n) y1 = n;
for (int y = y0; y < y1; y++) {
m->line_flags[y] |= LineChanged;
}
}
void AbstractCharacterBasedApplication::invalidateAreaBelowTheCurrentLine()
{
int y;
y = m->parsed_row_index;
if (m->valid_line_index > y) {
m->valid_line_index = y;
}
y = m->parsed_row_index - cx()->scroll_row_pos;
invalidateArea(y);
}
int AbstractCharacterBasedApplication::scrollBottomLimit() const
{
return documentLines() - editorViewportHeight() / 2;
}
void AbstractCharacterBasedApplication::writeCR()
{
deleteIfSelected();
setCursorCol(0);
clearParsedLine();
updateVisibility(true, true, true);
}
void AbstractCharacterBasedApplication::moveCursorOut()
{
setCursorRow(-1);
}
void AbstractCharacterBasedApplication::moveCursorHome()
{
fetchCurrentLine();
QString line = m->parsed_line;
ushort const *ptr = line.utf16();
ushort const *end = ptr + line.size();
int x = 0;
while (1) {
int c = -1;
if (ptr < end) {
c = *ptr;
ptr++;
}
if (c == ' ') {
x++;
} else if (c == '\t') {
x = nextTabStop(x);
} else {
break;
}
}
if (x == cx()->current_col) {
x = 0;
}
setCursorCol(x);
clearParsedLine();
updateVisibility(true, true, true);
}
void AbstractCharacterBasedApplication::moveCursorEnd()
{
fetchCurrentLine();
QByteArray line = m->parsed_line;
int col = calcVisualWidth(Document::Line(line));
setCursorCol(col);
clearParsedLine();
updateVisibility(true, true, true);
}
void AbstractCharacterBasedApplication::scrollUp()
{
if (cx()->scroll_row_pos > 0) {
cx()->scroll_row_pos--;
invalidateArea();
clearParsedLine();
updateVisibility(false, false, true);
}
}
void AbstractCharacterBasedApplication::scrollDown()
{
int limit = scrollBottomLimit();
if (cx()->scroll_row_pos < limit) {
cx()->scroll_row_pos++;
invalidateArea();
clearParsedLine();
updateVisibility(false, false, true);
}
}
void AbstractCharacterBasedApplication::moveCursorUp()
{
if (isSingleLineMode()) {
// nop
} else if (cx()->current_row > 0) {
setCursorRow(cx()->current_row - 1);
clearParsedLine();
updateVisibility(true, false, true);
}
}
void AbstractCharacterBasedApplication::moveCursorDown()
{
if (isSingleLineMode()) {
// nop
} else if (cx()->current_row + 1 < (int)document()->lines.size()) {
setCursorRow(cx()->current_row + 1);
clearParsedLine();
updateVisibility(true, false, true);
}
}
void AbstractCharacterBasedApplication::scrollToTop()
{
if (isSingleLineMode()) return;
setCursorRow(0);
setCursorCol(0);
cx()->scroll_row_pos = 0;
invalidateArea();
clearParsedLine();
updateVisibility(true, false, true);
}
void AbstractCharacterBasedApplication::moveCursorLeft()
{
if (!isShiftModifierPressed() && selection_anchor_0.enabled && selection_anchor_1.enabled) { // 選択領域があったら
if (selection_anchor_0 != selection_anchor_1) {
SelectionAnchor a = std::min(selection_anchor_0, selection_anchor_1);
deselect();
setCursorRow(a.row);
setCursorCol(a.col);
updateVisibility(true, true, true);
return;
}
}
if (cx()->current_col == 0) {
if (isSingleLineMode()) {
// nop
} else {
if (cx()->current_row > 0) {
setCursorRow(cx()->current_row - 1);
clearParsedLine();
moveCursorEnd();
}
}
return;
}
int col = 0;
int newcol = 0;
int index;
for (index = 0; index < (int)m->prepared_current_line.size(); index++) {
uint32_t c = m->prepared_current_line[index].unicode;
if (c == '\r' || c == '\n') {
break;
}
newcol = col;
if (c == '\t') {
col = nextTabStop(col);
} else {
col += charWidth(c);
}
if (col >= cx()->current_col) {
break;
}
}
m->parsed_col_index = index;
setCursorCol(newcol);
updateVisibility(true, true, true);
}
void AbstractCharacterBasedApplication::moveCursorRight()
{
if (!isShiftModifierPressed() && selection_anchor_0.enabled && selection_anchor_1.enabled) { // 選択領域があったら
if (selection_anchor_0 != selection_anchor_1) {
SelectionAnchor a = std::max(selection_anchor_0, selection_anchor_1);
deselect();
setCursorRow(a.row);
setCursorCol(a.col);
updateVisibility(true, true, true);
return;
}
}
int col = 0;
int i = 0;
while (1) {
int c = -1;
if (i < (int)m->prepared_current_line.size()) {
c = m->prepared_current_line[i].unicode;
}
if (c == '\r' || c == '\n' || c == -1) {
if (!isSingleLineMode()) {
int nextrow = cx()->current_row + 1;
int lines = document()->lines.size();
if (nextrow < lines) {
setCursorPos(nextrow, 0);
clearParsedLine();
updateVisibility(true, true, true);
return;
}
}
break;
}
if (c == '\t') {
col = nextTabStop(col);
} else {
col += charWidth(c);
}
if (col > cx()->current_col) {
break;
}
i++;
}
if (col != cx()->current_col) {
setCursorCol(col);
clearParsedLine();
updateVisibility(true, true, true);
}
}
void AbstractCharacterBasedApplication::movePageUp()
{
if (!isSingleLineMode()) {
int step = editorViewportHeight();
setCursorRow(cx()->current_row - step);
cx()->scroll_row_pos -= step;
if (cx()->current_row < 0) {
cx()->current_row = 0;
}
if (cx()->scroll_row_pos < 0) {
cx()->scroll_row_pos = 0;
}
invalidateArea();
clearParsedLine();
updateVisibility(true, false, true);
}
}
void AbstractCharacterBasedApplication::movePageDown()
{
if (!isSingleLineMode()) {
int limit = documentLines();
if (limit > 0) {
limit--;
int step = editorViewportHeight();
setCursorRow(cx()->current_row + step);
cx()->scroll_row_pos += step;
if (cx()->current_row > limit) {
cx()->current_row = limit;
}
limit = scrollBottomLimit();
if (cx()->scroll_row_pos > limit) {
cx()->scroll_row_pos = limit;
}
} else {
setCursorRow(0);
cx()->scroll_row_pos = 0;
}
invalidateArea();
clearParsedLine();
updateVisibility(true, false, true);
}
}
void AbstractCharacterBasedApplication::scrollRight()
{
if (cx()->scroll_col_pos > 0) {
cx()->scroll_col_pos--;
} else {
cx()->scroll_col_pos = 0;
}
invalidateArea();
clearParsedLine();
updateVisibility(true, true, true);
}
void AbstractCharacterBasedApplication::scrollLeft()
{
cx()->scroll_col_pos++;
invalidateArea();
clearParsedLine();
updateVisibility(true, true, true);
}
void AbstractCharacterBasedApplication::addNewLineToBottom()
{
int row = cx()->engine->document.lines.size();
if (cx()->current_row >= row) {
setCursorPos(row, 0);
cx()->engine->document.lines.push_back(Document::Line(QByteArray()));
}
}
void AbstractCharacterBasedApplication::appendNewLine(std::vector<Char> *vec)
{
if (isSingleLineMode()) return;
vec->emplace_back('\r', 0);
vec->emplace_back('\n', 0);
}
void AbstractCharacterBasedApplication::writeNewLine()
{
if (isReadOnly()) return;
if (isSingleLineMode()) return;
if (!isCurrentLineWritable()) return;
invalidateAreaBelowTheCurrentLine();
std::vector<Char> curr_line;
parseLine(&curr_line, 0, false);
int index = m->parsed_col_index;
if (index < 0) {
addNewLineToBottom();
index = 0;
}
std::vector<Char> next_line;
// split line
next_line.insert(next_line.end(), curr_line.begin() + index, curr_line.end());
// shrink current line
curr_line.resize(index);
// append new line code
appendNewLine(&curr_line);
// next line index
cx()->current_row = m->parsed_row_index + 1;
// commit current line
commitLine(curr_line);
// insert next line
m->parsed_row_index = cx()->current_row;
engine()->document.lines.insert(engine()->document.lines.begin() + m->parsed_row_index, Document::Line(QByteArray()));
// commit next line
commitLine(next_line);
setCursorColByIndex(next_line, 0);
clearParsedLine();
updateVisibility(true, true, true);
}
void AbstractCharacterBasedApplication::makeColumnPosList(std::vector<int> *out)
{
out->clear();
std::vector<Char> const *line = &m->prepared_current_line;
int x = 0;
while (1) {
size_t index = out->size();
out->push_back(x);
int n;
int c = -1;
if (index < line->size()) {
c = line->at(index).unicode;
}
if (c == '\r' || c == '\n' || c == -1) {
break;
}
if (c == '\t') {
int z = nextTabStop(x);
n = z - x;
} else {
n = charWidth(c);
}
x += n;
}
}
void AbstractCharacterBasedApplication::updateCursorPos(bool auto_scroll)
{
if (!cx()->engine) {
return;
}
parseLine(&m->prepared_current_line, 0, false);
int index = 0;
int char_span = 0;
int col = cx()->current_col_hint;
{
std::vector<int> pts;
makeColumnPosList(&pts);
if (pts.size() > 1) {
int newcol = pts.back();
int newindex = pts.size() - 1;
for (size_t i = 0; i + 1 < pts.size(); i++) {
int x = pts[i];
if (x <= col && col < pts[i + 1]) {
char_span = pts[i + 1] - pts[i];
newindex = i;
newcol = x;
break;
}
}
index = newindex;
col = newcol;
} else if (!pts.empty()) {
col = pts.back();
} else {
col = 0;
}
}
m->parsed_col_index = index;
cx()->current_col = col;
if (char_span < 1) {
char_span = 1;
}
cx()->current_char_span = char_span;
if (auto_scroll) {
int pos = decideColumnScrollPos();
if (cx()->scroll_col_pos != pos) {
cx()->scroll_col_pos = pos;
invalidateArea();
}
}
}
void AbstractCharacterBasedApplication::printInvertedBar(int x, int y, char const *text, int padchar)
{
int w = screenWidth();
int o = w * y;
for (int i = 0; i < w; i++) {
m->screen[o + i].c = 0;
}
AbstractCharacterBasedApplication::Option opt;
opt.char_attr = CharAttr::Invert;
print(x, y, text, opt);
for (int i = 0; i < w; i++) {
if (m->screen[o + i].c == 0) {
m->screen[o + i].c = padchar;
}
m->screen[o + i].a = opt.char_attr;
}
}
QString AbstractCharacterBasedApplication::statusLine() const
{
QString text = "[%1:%2]";
text = text.arg(cx()->current_row + 1).arg(cx()->current_col + 1);
return text;
}
int AbstractCharacterBasedApplication::printArea(TextEditorContext const *cx, const SelectionAnchor *sel_a, const SelectionAnchor *sel_b)
{
int end_of_line_y = -1;
if (cx) {
int height = cx->viewport_height;
QRect clip(cx->viewport_org_x, cx->viewport_org_y, cx->viewport_width, height);
int row = cx->scroll_row_pos;
for (int i = 0; i < height; i++) {
if (row < 0) continue;
int y = cx->viewport_org_y + i;
if (row < (int)cx->engine->document.lines.size()) {
if (i < height) {
int x = cx->viewport_org_x - cx->scroll_col_pos;
Document::Line const &line = cx->engine->document.lines[row];
int anchor_a = -1;
int anchor_b = -1;
if (sel_a && sel_a->enabled && sel_b && sel_b->enabled) {
SelectionAnchor a = *sel_a;
SelectionAnchor b = *sel_b;
if (a.row > b.row) {
std::swap(a, b);
} else if (a.row == b.row) {
if (a.col > b.col) {
std::swap(a, b);
}
}
if (row > a.row && row < b.row) {
anchor_a = 0;
} else {
if (row == a.row) {
anchor_a = a.col;
}
if (row == b.row) {
anchor_b = b.col;
}
}
}
QList<FormattedLine> lines = formatLine(line, cx->tab_span, anchor_a, anchor_b);
for (FormattedLine const &line : lines) {
AbstractCharacterBasedApplication::Option opt;
if (line.atts & FormattedLine::StyleID) {
opt.char_attr.color = QColor(line.atts & 0xff, (line.atts >> 8) & 0xff, (line.atts >> 16) & 0xff);
}
opt.clip = clip;
if (line.isSelected()) {
opt.char_attr.flags |= CharAttr::Selected;
}
x = print(x, y, line.text, opt);
}
int end_x = clip.x() + clip.width();
if (x < end_x) {
if (x < clip.left()) {
x = clip.left();
}
if (x < end_x) {
clearRect(x, y, end_x - x, 1);
}
}
}
} else {
if (end_of_line_y < 0) {
end_of_line_y = i;
}
clearRect(cx->viewport_org_x, y, cx->viewport_width, 1);
if (y >= 0 && y < (int)m->line_flags.size()) {
m->line_flags[y] |= LineChanged;
}
}
row++;
}
}
return end_of_line_y;
}
void AbstractCharacterBasedApplication::paintLineNumbers(std::function<void(int, QString, Document::Line const *line)> const &draw)
{
auto Line = [&](int index)->Document::Line &{
return editor_cx->engine->document.lines[index];
};
int rightpadding = 2;
int left_margin = editor_cx->viewport_org_x;
int num = 1;
size_t offset = 0;
for (int i = 0; i < editor_cx->viewport_height; i++) {
char tmp[100];
Q_ASSERT(left_margin < (int)sizeof(tmp));
memset(tmp, ' ', left_margin);
tmp[left_margin] = 0;
int row = editor_cx->scroll_row_pos + i;
Document::Line *line = nullptr;
if (row < (int)editor_cx->engine->document.lines.size()) {
if (m->valid_line_index < 0) {
m->valid_line_index = 0;
Document::Line *p = &Line(0);
if (p->type != Document::Line::Unknown) {
p->byte_offset = offset;
p->line_number = num;
offset += p->text.size();
num++;
}
}
line = &Line(row);
if (row >= m->valid_line_index) {
{
Document::Line const &line = Line(m->valid_line_index);
offset = line.byte_offset;
num = line.line_number;
}
while (m->valid_line_index <= row) {
Document::Line const &line = Line(m->valid_line_index);
if (line.type != Document::Line::Unknown) {
offset += line.text.size();
num++;
}
m->valid_line_index++;
if (m->valid_line_index < editor_cx->engine->document.lines.size()) {
Document::Line *p = &Line(m->valid_line_index);
p->byte_offset = offset;
p->line_number = num;
}
}
}
if (left_margin > 1) {
unsigned int linenum = -1;
if (row < m->valid_line_index) {
#if 1
linenum = line->line_number;
#else
linenum = line->byte_offset;
#endif
}
if (linenum != (unsigned int)-1 && line->type != Document::Line::Unknown) {
sprintf(tmp, "%*u ", left_margin - rightpadding, linenum);
}
}
}
int y = editor_cx->viewport_org_y + i;
draw(y, tmp, line);
}
}
bool AbstractCharacterBasedApplication::isAutoLayout() const
{
return m->auto_layout;
}
void AbstractCharacterBasedApplication::preparePaintScreen()
{
if (m->header_line > 0) {
char const *line = "Hello, world\xe3\x81\x82\xe3\x81\x84\xe3\x81\x86";
printInvertedBar(0, 0, line, ' ');
}
if (m->show_line_number) {
Option opt_normal;
paintLineNumbers([&](int y, QString text, Document::Line const *line){
(void)line;
print(0, y, text + '|', opt_normal);
});
}
SelectionAnchor anchor_a;
SelectionAnchor anchor_b;
auto MakeSelectionAnchor = [&](){
if (selection_anchor_0.enabled != SelectionAnchor::No) {
anchor_a = selection_anchor_0;
#if 0
anchor_b.row = cx()->current_row;
anchor_b.col = cx()->current_col;
anchor_b.enabled = selection_anchor_0.enabled;
#else
anchor_b = selection_anchor_1;
#endif
}
};
if (isDialogMode()) {
printArea(editor_cx.get(), &anchor_a, &anchor_b);
std::string text = m->dialog_title.toStdString();
text = ' ' + text + ' ';
int y = screenHeight() - 2;
printInvertedBar(3, y, text.c_str(), '-');
MakeSelectionAnchor();
printArea(dialog_cx.get(), &anchor_a, &anchor_b);
} else {
MakeSelectionAnchor();
editor_cx->bottom_line_y = printArea(editor_cx.get(), &anchor_a, &anchor_b);
if (m->footer_line > 0) {
QString line = statusLine();
int y = screenHeight() - 1;
printInvertedBar(0, y, line.toStdString().c_str(), ' ');
}
}
}
void AbstractCharacterBasedApplication::onQuit()
{
if (!m->is_quit_enabled) return;
if (!isDialogMode()) {
m->state = State::Exit;
}
}
void AbstractCharacterBasedApplication::onOpenFile()
{
if (isReadOnly()) return;
if (!m->is_open_enabled) return;
if (!isDialogMode()) {
execDialog("Open File", recentlyUsedPath(), [&](bool ok, QString const &text){
if (ok) {
openFile(text);
}
});
}
}
void AbstractCharacterBasedApplication::onSaveFile()
{
if (!m->is_save_enabled) return;
if (!isDialogMode()) {
execDialog("Save File", recentlyUsedPath(), [&](bool ok, QString const &text){
if (ok) {
saveFile(text);
}
});
}
}
void AbstractCharacterBasedApplication::setNormalTextEditorMode(bool f)
{
m->is_quit_enabled = f;
m->is_open_enabled = f;
m->is_save_enabled = f;
setTerminalMode(!f);
}
SelectionAnchor AbstractCharacterBasedApplication::currentAnchor(SelectionAnchor::Enabled enabled)
{
SelectionAnchor a;
a.row = cx()->current_row;
a.col = cx()->current_col;
a.enabled = enabled;
return a;
}
void AbstractCharacterBasedApplication::deselect()
{
selection_anchor_0.enabled = SelectionAnchor::No;
selection_anchor_1.enabled = SelectionAnchor::No;
}
bool AbstractCharacterBasedApplication::isSelectionAnchorEnabled() const
{
return selection_anchor_0.enabled != SelectionAnchor::No;
}
void AbstractCharacterBasedApplication::setToggleSelectionAnchorEnabled(bool f)
{
m->is_toggle_selection_anchor_enabled = f;
}
void AbstractCharacterBasedApplication::setReadOnly(bool f)
{
m->is_read_only = f;
}
bool AbstractCharacterBasedApplication::isReadOnly() const
{
return m->is_read_only && !m->is_terminal_mode;
}
void AbstractCharacterBasedApplication::setSelectionAnchor(SelectionAnchor::Enabled enabled, bool update_anchor, bool auto_scroll)
{
if (update_anchor) {
selection_anchor_0 = currentAnchor(enabled);
} else {
selection_anchor_0.enabled = enabled;
}
clearParsedLine();
updateVisibility(false, false, auto_scroll);
}
void AbstractCharacterBasedApplication::toggleSelectionAnchor()
{
if (!m->is_toggle_selection_anchor_enabled) return;
setSelectionAnchor(isSelectionAnchorEnabled() ? SelectionAnchor::No : SelectionAnchor::EnabledHard, true, true);
selection_anchor_1 = selection_anchor_0;
}
void AbstractCharacterBasedApplication::editPaste()
{
if (isReadOnly()) return;
if (isTerminalMode()) return;
setPaintingSuppressed(true);
QString str = qApp->clipboard()->text();
utf16(str.utf16(), str.size()).to_utf32([&](uint32_t c){
write(c, false);
return true;
});
setPaintingSuppressed(false);
updateVisibility(true, true, true);
}
void AbstractCharacterBasedApplication::editCopy()
{
edit_(EditOperation::Copy);
}
void AbstractCharacterBasedApplication::editCut()
{
if (isReadOnly()) return;
if (isTerminalMode()) return;
edit_(EditOperation::Cut);
}
void AbstractCharacterBasedApplication::setWriteMode(WriteMode wm)
{
m->write_mode = wm;
}
bool AbstractCharacterBasedApplication::isInsertMode() const
{
return m->write_mode == WriteMode::Insert && !isTerminalMode();
}
bool AbstractCharacterBasedApplication::isOverwriteMode() const
{
return m->write_mode == WriteMode::Overwrite || isTerminalMode();
}
void AbstractCharacterBasedApplication::setTerminalMode(bool f)
{
m->is_terminal_mode = f;
if (isTerminalMode()) {
showHeader(false);
showFooter(false);
showLineNumber(false, 0);
setLineMargin(0);
setWriteMode(WriteMode::Overwrite);
setReadOnly(true);
}
layoutEditor();
}
bool AbstractCharacterBasedApplication::isTerminalMode() const
{
return m->is_terminal_mode;
}
bool AbstractCharacterBasedApplication::isBottom() const
{
if (cx()->current_row == m->parsed_row_index) {
if (m->parsed_col_index == (int)m->prepared_current_line.size()) {
return true;
}
}
return false;
}
void AbstractCharacterBasedApplication::moveToTop()
{
if (isSingleLineMode()) return;
deselect();
cx()->current_row = 0;
cx()->current_col = 0;
cx()->current_col_hint = 0;
cx()->scroll_row_pos = 0;
scrollToTop();
invalidateArea();
clearParsedLine();
updateVisibility(true, false, true);
}
void AbstractCharacterBasedApplication::logicalMoveToBottom()
{
deselect();
cx()->current_row = documentLines();
cx()->current_col = 0;
if (cx()->current_row > 0) {
cx()->current_row = cx()->current_row - 1;
clearParsedLine();
fetchCurrentLine();
int col = calcVisualWidth(Document::Line(m->parsed_line));
cx()->current_col = col;
cx()->current_col_hint = col;
}
cx()->scroll_row_pos = scrollBottomLimit();
}
void AbstractCharacterBasedApplication::moveToBottom()
{
if (isSingleLineMode()) return;
logicalMoveToBottom();
invalidateArea();
clearParsedLine();
updateVisibility(true, false, true);
}
int AbstractCharacterBasedApplication::findSyntax(QList<Document::CharAttr_> const *list, size_t offset)
{
int lo = 0;
int hi = list->size();
while (lo + 1 < hi) {
int mid = (lo + hi) / 2;
Document::CharAttr_ const *a = &list->at(mid);
if (offset == a->offset) {
return mid;
}
if (offset < a->offset) {
hi = mid;
} else {
lo = mid;
}
}
return lo;
}
void AbstractCharacterBasedApplication::insertSyntax(QList<Document::CharAttr_> *list, size_t offset, Document::CharAttr_ const &a)
{
int i = findSyntax(list, offset);
int n = list->size();
if (i < n) {
if (list->at(i).offset == offset) {
(*list)[i] = a;
} else {
if (i < n) {
if (a.offset < list->at(i).offset) {
if (list->at(i).color == a.color) {
(*list)[i].offset = offset;
return;
}
}
}
if (list->at(i).color == a.color) {
return;
}
if (list->at(i).offset < a.offset) {
i++;
}
list->insert(list->begin() + i, a);
while (++i < n) {
(*list)[i].offset++;
}
}
} else {
list->push_back(a);
}
}
void AbstractCharacterBasedApplication::internalWrite(const ushort *begin, const ushort *end)
{
deleteIfSelected();
clearShiftModifier();
if (cx()->engine->document.lines.isEmpty()) {
Document::Line line;
line.type = Document::Line::Normal;
line.line_number = 1;
cx()->engine->document.lines.push_back(line);
}
if (!isCurrentLineWritable()) return;
int len = end - begin;
parseLine(nullptr, len, false);
int index = m->parsed_col_index;
if (index < 0) {
addNewLineToBottom();
index = 0;
}
std::vector<Char> *vec = &m->prepared_current_line;
auto WriteChar = [&](ushort c){
if (isInsertMode()) {
vec->insert(vec->begin() + index, Char(c, 0));
} else if (isOverwriteMode()) {
if (index < (int)vec->size()) {
uint32_t d = vec->at(index).unicode;
if (d == '\n' || d == '\r') {
vec->insert(vec->begin() + index, Char(c, 0));
} else {
vec->at(index) = Char(c, 0);
}
} else {
vec->emplace_back(c, 0);
}
}
Document::CharAttr_ a;
a.offset = index;
a.color = m->escape_sequence.fg_color_code();
insertSyntax(&m->syntax_table, index, a);
};
ushort const *ptr = begin;
while (ptr < end) {
ushort c = *ptr;
ptr++;
if (c >= 0xd800 && c < 0xdc00) {
if (ptr < end) {
ushort d = *ptr;
if (d >= 0xdc00 && d < 0xe000) {
ptr++;
int u = 0x10000 + (c - 0xd800) * 0x400 + (d - 0xdc00);
WriteChar(u);
index++;
}
}
} else {
WriteChar(c);
index++;
}
}
m->parsed_col_index = index;
commitLine(*vec);
setCursorColByIndex(*vec, index);
updateVisibility(true, true, true);
}
void AbstractCharacterBasedApplication::pressLetterWithControl(int c)
{
if (c < 0 || c > 0x7f) {
return;
}
if (c < 0x40) {
c += 0x40;
}
c = toupper(c);
switch (c) {
case 'A':
toggleSelectionAnchor();
break;
case 'Q':
onQuit();
break;
case 'O':
onOpenFile();
break;
case 'S':
onSaveFile();
break;
case 'X':
editCut();
break;
case 'C':
editCopy();
break;
case 'V':
editPaste();
break;
}
}
void AbstractCharacterBasedApplication::write(uint32_t c, bool by_keyboard)
{
if (isTerminalMode()) {
if (c == '\r') {
setCursorCol(0);
clearParsedLine();
updateVisibility(true, true, true);
return;
}
if (m->cursor_moved_by_mouse) {
moveToBottom();
}
if (c == 0x1b || m->escape_sequence.isActive()) {
m->escape_sequence.write(c);
return;
}
}
bool ok = !(isTerminalMode() && by_keyboard);
if (c < 0x20) {
if (c == 0x08) {
if (ok) {
doBackspace();
}
} else if (c == 0x09) {
if (ok) {
ushort u = c;
internalWrite(&u, &u + 1);
}
} else if (c == 0x0a) {
if (ok) {
pressEnter();
}
} else if (c == 0x0d) {
if (ok) {
writeCR();
}
} else if (c == 0x1b) {
pressEscape();
} else if (c >= 1 && c <= 26) {
pressLetterWithControl(c);
}
} else if (c == 0x7f) {
if (ok) {
doDelete();
}
} else if (c < 0x10000) {
if (ok) {
ushort u = c;
internalWrite(&u, &u + 1);
}
} else if (c >= 0x10000 && c <= 0x10ffff) {
if (ok) {
ushort t[2];
t[0] = (c - 0x10000) / 0x400 + 0xd800;
t[1] = (c - 0x10000) % 0x400 + 0xdc00;
internalWrite(t, t + 2);
}
} else {
switch (c) {
case EscapeCode::Up:
if (ok) moveCursorUp();
break;
case EscapeCode::Down:
if (ok) moveCursorDown();
break;
case EscapeCode::Right:
if (ok) moveCursorRight();
break;
case EscapeCode::Left:
if (ok) moveCursorLeft();
break;
case EscapeCode::Home:
if (ok) moveCursorHome();
break;
case EscapeCode::End:
if (ok) moveCursorEnd();
break;
case EscapeCode::PageUp:
if (ok) movePageUp();
break;
case EscapeCode::PageDown:
if (ok) movePageDown();
break;
case EscapeCode::Insert:
clearShiftModifier();
break;
case EscapeCode::Delete:
clearShiftModifier();
if (ok) doDelete();
break;
}
}
}
void AbstractCharacterBasedApplication::write(char const *ptr, int len, bool by_keyboard)
{
if (isReadOnly()) return;
char const *begin = ptr;
char const *end = begin + (len < 0 ? strlen(ptr) : len);
char const *left = begin;
char const *right = begin;
while (1) {
int c = -1;
if (right < end) {
c = *right & 0xff;
}
if (c == '\n' || c == '\r' || c < 0) {
utf8 src(left, right);
while (1) {
int d = src.next();
if (d == 0) break;
write(d, by_keyboard);
}
if (c < 0) break;
right++;
if (c == '\r') {
c = isInsertMode() ? '\n' : '\r';
if (right < end && *right == '\n') {
c = '\n';
right++;
}
write(c, by_keyboard);
} else if (c == '\n') {
write('\n', by_keyboard);
}
left = right;
} else {
right++;
}
}
}
void AbstractCharacterBasedApplication::write(std::string const &text)
{
if (!text.empty()) {
write(text.c_str(), text.size(), false);
}
}
void AbstractCharacterBasedApplication::write_(char const *ptr, bool by_keyboard)
{
write(ptr, -1, by_keyboard);
}
void AbstractCharacterBasedApplication::write_(QString const &text, bool by_keyboard)
{
if (isReadOnly()) return;
if (text.size() == 1) {
ushort c = text.at(0).unicode();
write(c, by_keyboard);
return;
}
int len = text.size();
if (len > 0) {
ushort const *begin = text.utf16();
ushort const *end = begin + len;
ushort const *left = begin;
ushort const *right = begin;
while (1) {
int c = -1;
if (right < end) {
c = *right;
}
if (c < 0x20) {
if (left < right) {
internalWrite(left, right);
}
if (c == -1) break;
right++;
if (c == '\n' || c == '\r') {
if (c == '\r') {
if (right < end && *right == '\n') {
right++;
}
}
writeNewLine();
} else {
write(c, by_keyboard);
}
left = right;
} else {
right++;
}
}
}
}
void AbstractCharacterBasedApplication::write(QKeyEvent *e)
{
setModifierKeys(e->modifiers());
int c = e->key();
if (c == Qt::Key_Backspace) {
write(0x08, true);
} else if (c == Qt::Key_Delete) {
write(0x7f, true);
} else if (c == Qt::Key_Up) {
if (isControlModifierPressed()) {
scrollUp();
} else {
write(EscapeCode::Up, true);
}
} else if (c == Qt::Key_Down) {
if (isControlModifierPressed()) {
scrollDown();
} else {
write(EscapeCode::Down, true);
}
} else if (c == Qt::Key_Left) {
write(EscapeCode::Left, true);
} else if (c == Qt::Key_Right) {
write(EscapeCode::Right, true);
} else if (c == Qt::Key_PageUp) {
write(EscapeCode::PageUp, true);
} else if (c == Qt::Key_PageDown) {
write(EscapeCode::PageDown, true);
} else if (c == Qt::Key_Home) {
if (isControlModifierPressed()) {
moveToTop();
} else {
write(EscapeCode::Home, true);
}
} else if (c == Qt::Key_End) {
if (isControlModifierPressed()) {
moveToBottom();
} else {
write(EscapeCode::End, true);
}
} else if (c == Qt::Key_Return || c == Qt::Key_Enter) {
write('\n', true);
} else if (c == Qt::Key_Escape) {
write(0x1b, true);
} else if (isControlModifierPressed()) {
if (QChar(c).isLetter()) {
c = QChar(c).toUpper().unicode();
if (c >= 0x40 && c < 0x60) {
write(c - 0x40, true);
}
}
} else {
QString text = e->text();
write_(text, true);
}
}
void Document::retrieveLastText(std::vector<char> *out, int maxlen) const
{
int remain = maxlen;
int i = lines.size();
while (i > 0 && remain > 0) {
i--;
QByteArray const &data = lines[i].text;
int n = data.size();
if (n > remain) {
n = remain;
}
char const *p = data.data() + data.size() - n;
out->insert(out->begin(), p, p + n);
remain -= n;
}
}
//AbstractCharacterBasedApplication::Char::operator unsigned int() const
//{
// qDebug();
// return 'A';
//}
File Metadata
Details
Attached
Mime Type
text/x-diff
Expires
Sat, Feb 7, 2:26 PM (10 h, 4 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
55931
Default Alt Text
(589 KB)
Attached To
Mode
R77 Guitar
Attached
Detach File
Event Timeline
Log In to Comment