mirror of
https://github.com/chylex/Nextcloud-Desktop.git
synced 2026-04-06 16:34:18 +02:00
Compare commits
20 Commits
v2.5.0-alp
...
v2.5.0-alp
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
107baf2947 | ||
|
|
40d432ecdd | ||
|
|
1753ce651b | ||
|
|
104f8c9ba2 | ||
|
|
7a776dbb6a | ||
|
|
3a7a6b0b9e | ||
|
|
d7792dc951 | ||
|
|
1434fa5139 | ||
|
|
252484e875 | ||
|
|
94535a75d9 | ||
|
|
91044fee81 | ||
|
|
47aa1ade71 | ||
|
|
7ba48849c6 | ||
|
|
ce1aa6af53 | ||
|
|
7aded05f40 | ||
|
|
f7b5665bce | ||
|
|
1a4ce88afb | ||
|
|
11ae820db1 | ||
|
|
46077f0de2 | ||
|
|
b9323bd191 |
@@ -5,7 +5,7 @@ set( MIRALL_VERSION_YEAR 2018 )
|
||||
set( MIRALL_SOVERSION 0 )
|
||||
|
||||
if ( NOT DEFINED MIRALL_VERSION_SUFFIX )
|
||||
set( MIRALL_VERSION_SUFFIX "git") #e.g. beta1, beta2, rc1
|
||||
set( MIRALL_VERSION_SUFFIX "alpha1") #e.g. beta1, beta2, rc1
|
||||
endif( NOT DEFINED MIRALL_VERSION_SUFFIX )
|
||||
|
||||
if( NOT DEFINED MIRALL_VERSION_BUILD )
|
||||
|
||||
2
binary
2
binary
Submodule binary updated: 39bfc426e5...09f12de312
@@ -407,6 +407,8 @@ Section "${APPLICATION_NAME}" SEC_APPLICATION
|
||||
File "${IMAGEFORMATS_DLL_PATH}\qgif.dll"
|
||||
File "${IMAGEFORMATS_DLL_PATH}\qjpeg.dll"
|
||||
File "${IMAGEFORMATS_DLL_PATH}\qico.dll"
|
||||
File "${IMAGEFORMATS_DLL_PATH}\qsvg.dll"
|
||||
; PNG is built in Qt
|
||||
|
||||
SetOutPath "$INSTDIR\sqldrivers"
|
||||
File "${SQLITE_DLL_PATH}\qsqlite.dll"
|
||||
@@ -424,6 +426,7 @@ Section "${APPLICATION_NAME}" SEC_APPLICATION
|
||||
File "${QT_DLL_PATH}\Qt5Gui.dll"
|
||||
File "${QT_DLL_PATH}\Qt5Network.dll"
|
||||
File "${QT_DLL_PATH}\Qt5PrintSupport.dll"
|
||||
File "${QT_DLL_PATH}\Qt5Svg.dll"
|
||||
File "${QT_DLL_PATH}\Qt5Qml.dll"
|
||||
File "${QT_DLL_PATH}\Qt5Sql.dll"
|
||||
File "${QT_DLL_PATH}\Qt5WebKit.dll"
|
||||
|
||||
@@ -7,7 +7,7 @@ if(SPHINX_FOUND)
|
||||
set(SPHINX_MAN_DIR "${CMAKE_CURRENT_BINARY_DIR}/man1")
|
||||
install(DIRECTORY ${SPHINX_MAN_DIR} DESTINATION ${CMAKE_INSTALL_MANDIR} OPTIONAL)
|
||||
add_custom_target( doc-man ${SPHINX_EXECUTABLE}
|
||||
-c ${CMAKE_SOURCE_DIR}/doc -b man
|
||||
-c ${CMAKE_BINARY_DIR}/doc -b man
|
||||
-d ${SPHINX_CACHE_DIR}/man
|
||||
${CMAKE_CURRENT_SOURCE_DIR}
|
||||
${SPHINX_MAN_DIR} )
|
||||
|
||||
@@ -8,121 +8,7 @@ GenericName=Folder Sync
|
||||
Icon=@APPLICATION_EXECUTABLE@
|
||||
Keywords=@APPLICATION_NAME@;syncing;file;sharing;
|
||||
X-GNOME-Autostart-Delay=3
|
||||
MimeType=application/x-@APPLICATION_EXECUTABLE@
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
|
||||
# Translations
|
||||
|
||||
MimeType=application/x-@APPLICATION_EXECUTABLE@;
|
||||
|
||||
# Translations
|
||||
Comment[oc]=@APPLICATION_NAME@ sincronizacion del client
|
||||
@@ -212,7 +98,9 @@ Comment[lo]=@APPLICATION_NAME@ ການປະສານຂໍ້ມູນຄອ
|
||||
GenericName[lo]=ໂຟນເດີຊິງ
|
||||
Name[lo]=@APPLICATION_NAME@ ຊິງຄອມພິວເຕີລູກຂ່າຍ
|
||||
Icon[lo]=@APPLICATION_EXECUTABLE@
|
||||
Comment[mk]=@APPLICATION_NAME@ десктор клиент за синхронизација
|
||||
GenericName[mk]=Папка за синхронизација
|
||||
Name[mk]=@APPLICATION_NAME@ десктор клиент за синхронизација
|
||||
Icon[mk]=@APPLICATION_EXECUTABLE@
|
||||
Comment[hu_HU]=@APPLICATION_NAME@ asztali szinkronizációs kliens
|
||||
GenericName[hu_HU]=Mappaszinkronizálás
|
||||
|
||||
@@ -162,7 +162,7 @@ IFACEMETHODIMP OCContextMenu::QueryContextMenu(HMENU hMenu, UINT indexMenu, UINT
|
||||
|
||||
MENUITEMINFO mii = { sizeof(mii) };
|
||||
mii.fMask = MIIM_ID | MIIM_FTYPE | MIIM_STRING | MIIM_STATE;
|
||||
mii.wID = indexSubMenu;
|
||||
mii.wID = idCmdFirst + indexSubMenu;
|
||||
mii.fType = MFT_STRING;
|
||||
mii.dwTypeData = &item.title[0];
|
||||
mii.fState = disabled ? MFS_DISABLED : MFS_ENABLED;
|
||||
@@ -192,7 +192,7 @@ IFACEMETHODIMP OCContextMenu::InvokeCommand(LPCMINVOKECOMMANDINFO pici)
|
||||
// check the identifier offset.
|
||||
|
||||
auto offset = LOWORD(pici->lpVerb);
|
||||
if (offset < m_info.menuItems.size())
|
||||
if (offset >= m_info.menuItems.size())
|
||||
return E_FAIL;
|
||||
|
||||
command = m_info.menuItems[offset].command;
|
||||
|
||||
@@ -1962,6 +1962,25 @@ void SyncJournalDb::clearFileTable()
|
||||
query.exec();
|
||||
}
|
||||
|
||||
void SyncJournalDb::markVirtualFileForDownloadRecursively(const QByteArray &path)
|
||||
{
|
||||
QMutexLocker lock(&_mutex);
|
||||
if (!checkConnect())
|
||||
return;
|
||||
|
||||
static_assert(ItemTypeVirtualFile == 4 && ItemTypeVirtualFileDownload == 5, "");
|
||||
SqlQuery query("UPDATE metadata SET type=5 WHERE " IS_PREFIX_PATH_OF("?1", "path") " AND type=4;", _db);
|
||||
query.bindValue(1, path);
|
||||
query.exec();
|
||||
|
||||
// We also must make sure we do not read the files from the database (same logic as in avoidReadFromDbOnNextSync)
|
||||
// This includes all the parents up to the root, but also all the directory within the selected dir.
|
||||
static_assert(ItemTypeDirectory == 2, "");
|
||||
query.prepare("UPDATE metadata SET md5='_invalid_' WHERE (" IS_PREFIX_PATH_OF("?1", "path") " OR " IS_PREFIX_PATH_OR_EQUAL("path", "?1") ") AND type == 2;");
|
||||
query.bindValue(1, path);
|
||||
query.exec();
|
||||
}
|
||||
|
||||
void SyncJournalDb::commit(const QString &context, bool startTrans)
|
||||
{
|
||||
QMutexLocker lock(&_mutex);
|
||||
|
||||
@@ -245,6 +245,12 @@ public:
|
||||
*/
|
||||
void clearFileTable();
|
||||
|
||||
/**
|
||||
* Set the 'ItemTypeVirtualFileDownload' to all the files that have the ItemTypeVirtualFile flag
|
||||
* within the directory specified path path
|
||||
*/
|
||||
void markVirtualFileForDownloadRecursively(const QByteArray &path);
|
||||
|
||||
private:
|
||||
int getFileRecordCount();
|
||||
bool updateDatabaseStructure();
|
||||
|
||||
@@ -175,6 +175,25 @@ static void _csync_merge_algorithm_visitor(csync_file_stat_t *cur, CSYNC * ctx)
|
||||
cur->instruction = CSYNC_INSTRUCTION_NEW;
|
||||
break;
|
||||
}
|
||||
|
||||
/* If a virtual file is supposed to be downloaded, the local tree
|
||||
* will see "foo.owncloud" NONE while the remote might see "foo".
|
||||
* In the common case of remote NEW we don't want to trigger the REMOVE
|
||||
* that would normally be done for foo.owncloud since the download for
|
||||
* "foo" will take care of it.
|
||||
* If it was removed remotely, or moved remotely, the REMOVE is what we want.
|
||||
*/
|
||||
if (cur->type == ItemTypeVirtualFileDownload
|
||||
&& ctx->current == LOCAL_REPLICA
|
||||
&& cur->path.endsWith(ctx->virtual_file_suffix)) {
|
||||
auto actualOther = other_tree->findFile(cur->path.left(cur->path.size() - ctx->virtual_file_suffix.size()));
|
||||
if (actualOther
|
||||
&& (actualOther->instruction == CSYNC_INSTRUCTION_NEW
|
||||
|| actualOther->instruction == CSYNC_INSTRUCTION_CONFLICT)) {
|
||||
cur->instruction = CSYNC_INSTRUCTION_NONE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
cur->instruction = CSYNC_INSTRUCTION_REMOVE;
|
||||
break;
|
||||
case CSYNC_INSTRUCTION_EVAL_RENAME: {
|
||||
|
||||
@@ -519,11 +519,16 @@ void Folder::downloadVirtualFile(const QString &_relativepath)
|
||||
_journal.getFileRecord(relativepath, &record);
|
||||
if (!record.isValid())
|
||||
return;
|
||||
record._type = ItemTypeVirtualFileDownload;
|
||||
_journal.setFileRecord(record);
|
||||
|
||||
// Make sure we go over that file during the discovery
|
||||
_journal.avoidReadFromDbOnNextSync(relativepath);
|
||||
if (record._type == ItemTypeVirtualFile) {
|
||||
record._type = ItemTypeVirtualFileDownload;
|
||||
_journal.setFileRecord(record);
|
||||
// Make sure we go over that file during the discovery
|
||||
_journal.avoidReadFromDbOnNextSync(relativepath);
|
||||
} else if (record._type == ItemTypeDirectory) {
|
||||
_journal.markVirtualFileForDownloadRecursively(relativepath);
|
||||
} else {
|
||||
qCWarning(lcFolder) << "Invalid existing record " << record._type << " for file " << _relativepath;
|
||||
}
|
||||
|
||||
// Schedule a sync (Folder man will start the sync in a few ms)
|
||||
slotScheduleThisFolder();
|
||||
|
||||
@@ -242,6 +242,9 @@ public:
|
||||
*/
|
||||
void registerFolderWatcher();
|
||||
|
||||
/** new files are downloaded as virtual files */
|
||||
bool useVirtualFiles() { return _definition.useVirtualFiles; }
|
||||
|
||||
signals:
|
||||
void syncStateChange();
|
||||
void syncStarted();
|
||||
|
||||
@@ -81,8 +81,7 @@ ShareDialog::ShareDialog(QPointer<AccountState> accountState,
|
||||
}
|
||||
|
||||
// Set filename
|
||||
QFileInfo lPath(_localPath);
|
||||
QString fileName = lPath.fileName();
|
||||
QString fileName = QFileInfo(_sharePath).fileName();
|
||||
_ui->label_name->setText(tr("%1").arg(fileName));
|
||||
QFont f(_ui->label_name->font());
|
||||
f.setPointSize(f.pointSize() * 1.4);
|
||||
|
||||
@@ -382,7 +382,7 @@ void SocketApi::processShareRequest(const QString &localFile, SocketListener *li
|
||||
return;
|
||||
}
|
||||
|
||||
auto &remotePath = fileData.accountRelativePath;
|
||||
auto &remotePath = fileData.serverRelativePath;
|
||||
|
||||
// Can't share root folder
|
||||
if (remotePath == "/") {
|
||||
@@ -560,7 +560,7 @@ void SocketApi::command_COPY_PUBLIC_LINK(const QString &localFile, SocketListene
|
||||
return;
|
||||
|
||||
AccountPtr account = fileData.folder->accountState()->account();
|
||||
auto job = new GetOrCreatePublicLinkShare(account, fileData.accountRelativePath, [](const QString &url) { copyUrlToClipboard(url); }, this);
|
||||
auto job = new GetOrCreatePublicLinkShare(account, fileData.serverRelativePath, [](const QString &url) { copyUrlToClipboard(url); }, this);
|
||||
job->run();
|
||||
}
|
||||
|
||||
@@ -579,7 +579,7 @@ void SocketApi::fetchPrivateLinkUrlHelper(const QString &localFile, const std::f
|
||||
|
||||
fetchPrivateLinkUrl(
|
||||
fileData.folder->accountState()->account(),
|
||||
fileData.accountRelativePath,
|
||||
fileData.serverRelativePath,
|
||||
record.numericFileId(),
|
||||
this,
|
||||
targetFun);
|
||||
@@ -611,7 +611,7 @@ void SocketApi::command_DOWNLOAD_VIRTUAL_FILE(const QString &filesArg, SocketLis
|
||||
auto suffix = QStringLiteral(APPLICATION_DOTVIRTUALFILE_SUFFIX);
|
||||
|
||||
for (const auto &file : files) {
|
||||
if (!file.endsWith(suffix))
|
||||
if (!file.endsWith(suffix) && !QFileInfo(file).isDir())
|
||||
continue;
|
||||
QString relativePath;
|
||||
auto folder = FolderMan::instance()->folderForPath(file, &relativePath);
|
||||
@@ -703,8 +703,11 @@ SocketApi::FileData SocketApi::FileData::get(const QString &localFile)
|
||||
if (!data.folder)
|
||||
return data;
|
||||
|
||||
data.accountRelativePath = QDir(data.folder->remotePath()).filePath(data.folderRelativePath);
|
||||
|
||||
data.serverRelativePath = QDir(data.folder->remotePath()).filePath(data.folderRelativePath);
|
||||
QString virtualFileExt = QStringLiteral(APPLICATION_DOTVIRTUALFILE_SUFFIX);
|
||||
if (data.serverRelativePath.endsWith(virtualFileExt)) {
|
||||
data.serverRelativePath.chop(virtualFileExt.size());
|
||||
}
|
||||
return data;
|
||||
}
|
||||
|
||||
@@ -761,7 +764,7 @@ void SocketApi::command_GET_MENU_ITEMS(const QString &argument, OCC::SocketListe
|
||||
auto virtualFileSuffix = QStringLiteral(APPLICATION_DOTVIRTUALFILE_SUFFIX);
|
||||
bool hasVirtualFile = false;
|
||||
for (const auto &file : files) {
|
||||
if (file.endsWith(virtualFileSuffix))
|
||||
if (file.endsWith(virtualFileSuffix) || (folder->useVirtualFiles() && QFileInfo(file).isDir()))
|
||||
hasVirtualFile = true;
|
||||
}
|
||||
if (hasVirtualFile)
|
||||
|
||||
@@ -80,9 +80,12 @@ private:
|
||||
SyncJournalFileRecord journalRecord() const;
|
||||
|
||||
Folder *folder;
|
||||
// Absolute path of the file locally. (May be a virtual file)
|
||||
QString localPath;
|
||||
// Relative path of the file locally, as in the DB. (May be a virtual file)
|
||||
QString folderRelativePath;
|
||||
QString accountRelativePath;
|
||||
// Path of the file on the server (In case of virtual file, it points to the actual file)
|
||||
QString serverRelativePath;
|
||||
};
|
||||
|
||||
void broadcastMessage(const QString &msg, bool doWait = false);
|
||||
|
||||
@@ -359,17 +359,6 @@ void PropagateDownloadFile::start()
|
||||
return;
|
||||
}
|
||||
|
||||
// If we want to download something that used to be a virtual file,
|
||||
// wipe the virtual file and proceed with a normal download
|
||||
if (_item->_type == ItemTypeVirtualFileDownload) {
|
||||
auto virtualFile = propagator()->addVirtualFileSuffix(_item->_file);
|
||||
auto fn = propagator()->getFilePath(virtualFile);
|
||||
qCDebug(lcPropagateDownload) << "Downloading file that used to be a virtual file" << fn;
|
||||
QFile::remove(fn);
|
||||
propagator()->_journal->deleteFileRecord(virtualFile);
|
||||
_item->_type = ItemTypeFile;
|
||||
}
|
||||
|
||||
if (_deleteExisting) {
|
||||
deleteExistingFolder();
|
||||
|
||||
@@ -917,6 +906,17 @@ void PropagateDownloadFile::downloadFinished()
|
||||
if (_conflictRecord.isValid())
|
||||
propagator()->_journal->setConflictRecord(_conflictRecord);
|
||||
|
||||
// If we downloaded something that used to be a virtual file,
|
||||
// wipe the virtual file and its db entry now that we're done.
|
||||
if (_item->_type == ItemTypeVirtualFileDownload) {
|
||||
auto virtualFile = propagator()->addVirtualFileSuffix(_item->_file);
|
||||
auto fn = propagator()->getFilePath(virtualFile);
|
||||
qCDebug(lcPropagateDownload) << "Download of previous virtual file finished" << fn;
|
||||
QFile::remove(fn);
|
||||
propagator()->_journal->deleteFileRecord(virtualFile);
|
||||
_item->_type = ItemTypeFile;
|
||||
}
|
||||
|
||||
updateMetadata(isConflict);
|
||||
}
|
||||
|
||||
|
||||
@@ -497,7 +497,7 @@ void PropagateUploadFileNG::abort(PropagatorJob::AbortType abortType)
|
||||
{
|
||||
abortNetworkJobs(
|
||||
abortType,
|
||||
[this, abortType](AbstractNetworkJob *job) {
|
||||
[abortType](AbstractNetworkJob *job) {
|
||||
return abortType != AbortType::Asynchronous || !qobject_cast<MoveJob *>(job);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -330,14 +330,14 @@ private slots:
|
||||
fakeFolder.localModifier().remove("A/a6.owncloud");
|
||||
QVERIFY(fakeFolder.syncOnce());
|
||||
QVERIFY(itemInstruction(completeSpy, "A/a1", CSYNC_INSTRUCTION_NEW));
|
||||
QVERIFY(itemInstruction(completeSpy, "A/a1.owncloud", CSYNC_INSTRUCTION_REMOVE));
|
||||
QVERIFY(itemInstruction(completeSpy, "A/a1.owncloud", CSYNC_INSTRUCTION_NONE));
|
||||
QVERIFY(itemInstruction(completeSpy, "A/a2", CSYNC_INSTRUCTION_NEW));
|
||||
QVERIFY(itemInstruction(completeSpy, "A/a2.owncloud", CSYNC_INSTRUCTION_REMOVE));
|
||||
QVERIFY(itemInstruction(completeSpy, "A/a2.owncloud", CSYNC_INSTRUCTION_NONE));
|
||||
QVERIFY(itemInstruction(completeSpy, "A/a3.owncloud", CSYNC_INSTRUCTION_REMOVE));
|
||||
QVERIFY(itemInstruction(completeSpy, "A/a4.owncloud", CSYNC_INSTRUCTION_REMOVE));
|
||||
QVERIFY(itemInstruction(completeSpy, "A/a4m", CSYNC_INSTRUCTION_NEW));
|
||||
QVERIFY(itemInstruction(completeSpy, "A/a4.owncloud", CSYNC_INSTRUCTION_REMOVE));
|
||||
QVERIFY(itemInstruction(completeSpy, "A/a5", CSYNC_INSTRUCTION_CONFLICT));
|
||||
QVERIFY(itemInstruction(completeSpy, "A/a5.owncloud", CSYNC_INSTRUCTION_REMOVE));
|
||||
QVERIFY(itemInstruction(completeSpy, "A/a5.owncloud", CSYNC_INSTRUCTION_NONE));
|
||||
QVERIFY(itemInstruction(completeSpy, "A/a6", CSYNC_INSTRUCTION_CONFLICT));
|
||||
QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
|
||||
QCOMPARE(dbRecord(fakeFolder, "A/a1")._type, ItemTypeFile);
|
||||
@@ -354,6 +354,60 @@ private slots:
|
||||
QVERIFY(!dbRecord(fakeFolder, "A/a6.owncloud").isValid());
|
||||
}
|
||||
|
||||
void testVirtualFileDownloadResume()
|
||||
{
|
||||
FakeFolder fakeFolder{ FileInfo() };
|
||||
SyncOptions syncOptions;
|
||||
syncOptions._newFilesAreVirtual = true;
|
||||
fakeFolder.syncEngine().setSyncOptions(syncOptions);
|
||||
QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
|
||||
QSignalSpy completeSpy(&fakeFolder.syncEngine(), SIGNAL(itemCompleted(const SyncFileItemPtr &)));
|
||||
|
||||
auto cleanup = [&]() {
|
||||
completeSpy.clear();
|
||||
fakeFolder.syncJournal().wipeErrorBlacklist();
|
||||
};
|
||||
cleanup();
|
||||
|
||||
auto triggerDownload = [&](const QByteArray &path) {
|
||||
auto &journal = fakeFolder.syncJournal();
|
||||
SyncJournalFileRecord record;
|
||||
journal.getFileRecord(path + ".owncloud", &record);
|
||||
if (!record.isValid())
|
||||
return;
|
||||
record._type = ItemTypeVirtualFileDownload;
|
||||
journal.setFileRecord(record);
|
||||
journal.avoidReadFromDbOnNextSync(record._path);
|
||||
};
|
||||
|
||||
// Create a virtual file for remote files
|
||||
fakeFolder.remoteModifier().mkdir("A");
|
||||
fakeFolder.remoteModifier().insert("A/a1");
|
||||
QVERIFY(fakeFolder.syncOnce());
|
||||
QVERIFY(fakeFolder.currentLocalState().find("A/a1.owncloud"));
|
||||
cleanup();
|
||||
|
||||
// Download by changing the db entry
|
||||
triggerDownload("A/a1");
|
||||
fakeFolder.serverErrorPaths().append("A/a1", 500);
|
||||
QVERIFY(!fakeFolder.syncOnce());
|
||||
QVERIFY(itemInstruction(completeSpy, "A/a1", CSYNC_INSTRUCTION_NEW));
|
||||
QVERIFY(itemInstruction(completeSpy, "A/a1.owncloud", CSYNC_INSTRUCTION_NONE));
|
||||
QVERIFY(fakeFolder.currentLocalState().find("A/a1.owncloud"));
|
||||
QVERIFY(!fakeFolder.currentLocalState().find("A/a1"));
|
||||
QCOMPARE(dbRecord(fakeFolder, "A/a1.owncloud")._type, ItemTypeVirtualFileDownload);
|
||||
QVERIFY(!dbRecord(fakeFolder, "A/a1").isValid());
|
||||
cleanup();
|
||||
|
||||
fakeFolder.serverErrorPaths().clear();
|
||||
QVERIFY(fakeFolder.syncOnce());
|
||||
QVERIFY(itemInstruction(completeSpy, "A/a1", CSYNC_INSTRUCTION_NEW));
|
||||
QVERIFY(itemInstruction(completeSpy, "A/a1.owncloud", CSYNC_INSTRUCTION_NONE));
|
||||
QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
|
||||
QCOMPARE(dbRecord(fakeFolder, "A/a1")._type, ItemTypeFile);
|
||||
QVERIFY(!dbRecord(fakeFolder, "A/a1.owncloud").isValid());
|
||||
}
|
||||
|
||||
// Check what might happen if an older sync client encounters virtual files
|
||||
void testOldVersion1()
|
||||
{
|
||||
@@ -431,6 +485,105 @@ private slots:
|
||||
QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
|
||||
QVERIFY(!dbRecord(fakeFolder, "A/a1.owncloud").isValid());
|
||||
}
|
||||
|
||||
void testDownloadRecursive()
|
||||
{
|
||||
FakeFolder fakeFolder{ FileInfo() };
|
||||
SyncOptions syncOptions;
|
||||
syncOptions._newFilesAreVirtual = true;
|
||||
fakeFolder.syncEngine().setSyncOptions(syncOptions);
|
||||
QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
|
||||
|
||||
// Create a virtual file for remote files
|
||||
fakeFolder.remoteModifier().mkdir("A");
|
||||
fakeFolder.remoteModifier().mkdir("A/Sub");
|
||||
fakeFolder.remoteModifier().mkdir("A/Sub/SubSub");
|
||||
fakeFolder.remoteModifier().mkdir("A/Sub2");
|
||||
fakeFolder.remoteModifier().mkdir("B");
|
||||
fakeFolder.remoteModifier().mkdir("B/Sub");
|
||||
fakeFolder.remoteModifier().insert("A/a1");
|
||||
fakeFolder.remoteModifier().insert("A/a2");
|
||||
fakeFolder.remoteModifier().insert("A/Sub/a3");
|
||||
fakeFolder.remoteModifier().insert("A/Sub/a4");
|
||||
fakeFolder.remoteModifier().insert("A/Sub/SubSub/a5");
|
||||
fakeFolder.remoteModifier().insert("A/Sub2/a6");
|
||||
fakeFolder.remoteModifier().insert("B/b1");
|
||||
fakeFolder.remoteModifier().insert("B/Sub/b2");
|
||||
QVERIFY(fakeFolder.syncOnce());
|
||||
QVERIFY(fakeFolder.currentLocalState().find("A/a1.owncloud"));
|
||||
QVERIFY(fakeFolder.currentLocalState().find("A/a2.owncloud"));
|
||||
QVERIFY(fakeFolder.currentLocalState().find("A/Sub/a3.owncloud"));
|
||||
QVERIFY(fakeFolder.currentLocalState().find("A/Sub/a4.owncloud"));
|
||||
QVERIFY(fakeFolder.currentLocalState().find("A/Sub/SubSub/a5.owncloud"));
|
||||
QVERIFY(fakeFolder.currentLocalState().find("A/Sub2/a6.owncloud"));
|
||||
QVERIFY(fakeFolder.currentLocalState().find("B/b1.owncloud"));
|
||||
QVERIFY(fakeFolder.currentLocalState().find("B/Sub/b2.owncloud"));
|
||||
QVERIFY(!fakeFolder.currentLocalState().find("A/a1"));
|
||||
QVERIFY(!fakeFolder.currentLocalState().find("A/a2"));
|
||||
QVERIFY(!fakeFolder.currentLocalState().find("A/Sub/a3"));
|
||||
QVERIFY(!fakeFolder.currentLocalState().find("A/Sub/a4"));
|
||||
QVERIFY(!fakeFolder.currentLocalState().find("A/Sub/SubSub/a5"));
|
||||
QVERIFY(!fakeFolder.currentLocalState().find("A/Sub2/a6"));
|
||||
QVERIFY(!fakeFolder.currentLocalState().find("B/b1"));
|
||||
QVERIFY(!fakeFolder.currentLocalState().find("B/Sub/b2"));
|
||||
|
||||
|
||||
// Download All file in the directory A/Sub
|
||||
// (as in Folder::downloadVirtualFile)
|
||||
fakeFolder.syncJournal().markVirtualFileForDownloadRecursively("A/Sub");
|
||||
|
||||
QVERIFY(fakeFolder.syncOnce());
|
||||
QVERIFY(fakeFolder.currentLocalState().find("A/a1.owncloud"));
|
||||
QVERIFY(fakeFolder.currentLocalState().find("A/a2.owncloud"));
|
||||
QVERIFY(!fakeFolder.currentLocalState().find("A/Sub/a3.owncloud"));
|
||||
QVERIFY(!fakeFolder.currentLocalState().find("A/Sub/a4.owncloud"));
|
||||
QVERIFY(!fakeFolder.currentLocalState().find("A/Sub/SubSub/a5.owncloud"));
|
||||
QVERIFY(fakeFolder.currentLocalState().find("A/Sub2/a6.owncloud"));
|
||||
QVERIFY(fakeFolder.currentLocalState().find("B/b1.owncloud"));
|
||||
QVERIFY(fakeFolder.currentLocalState().find("B/Sub/b2.owncloud"));
|
||||
QVERIFY(!fakeFolder.currentLocalState().find("A/a1"));
|
||||
QVERIFY(!fakeFolder.currentLocalState().find("A/a2"));
|
||||
QVERIFY(fakeFolder.currentLocalState().find("A/Sub/a3"));
|
||||
QVERIFY(fakeFolder.currentLocalState().find("A/Sub/a4"));
|
||||
QVERIFY(fakeFolder.currentLocalState().find("A/Sub/SubSub/a5"));
|
||||
QVERIFY(!fakeFolder.currentLocalState().find("A/Sub2/a6"));
|
||||
QVERIFY(!fakeFolder.currentLocalState().find("B/b1"));
|
||||
QVERIFY(!fakeFolder.currentLocalState().find("B/Sub/b2"));
|
||||
|
||||
// Add a file in a subfolder that was downloaded
|
||||
// Currently, this continue to add it as a virtual file.
|
||||
fakeFolder.remoteModifier().insert("A/Sub/SubSub/a7");
|
||||
QVERIFY(fakeFolder.syncOnce());
|
||||
QVERIFY(fakeFolder.currentLocalState().find("A/Sub/SubSub/a7.owncloud"));
|
||||
QVERIFY(!fakeFolder.currentLocalState().find("A/Sub/SubSub/a7"));
|
||||
|
||||
// Now download all files in "A"
|
||||
fakeFolder.syncJournal().markVirtualFileForDownloadRecursively("A");
|
||||
QVERIFY(fakeFolder.syncOnce());
|
||||
QVERIFY(!fakeFolder.currentLocalState().find("A/a1.owncloud"));
|
||||
QVERIFY(!fakeFolder.currentLocalState().find("A/a2.owncloud"));
|
||||
QVERIFY(!fakeFolder.currentLocalState().find("A/Sub/a3.owncloud"));
|
||||
QVERIFY(!fakeFolder.currentLocalState().find("A/Sub/a4.owncloud"));
|
||||
QVERIFY(!fakeFolder.currentLocalState().find("A/Sub/SubSub/a5.owncloud"));
|
||||
QVERIFY(!fakeFolder.currentLocalState().find("A/Sub2/a6.owncloud"));
|
||||
QVERIFY(!fakeFolder.currentLocalState().find("A/Sub/SubSub/a7.owncloud"));
|
||||
QVERIFY(fakeFolder.currentLocalState().find("B/b1.owncloud"));
|
||||
QVERIFY(fakeFolder.currentLocalState().find("B/Sub/b2.owncloud"));
|
||||
QVERIFY(fakeFolder.currentLocalState().find("A/a1"));
|
||||
QVERIFY(fakeFolder.currentLocalState().find("A/a2"));
|
||||
QVERIFY(fakeFolder.currentLocalState().find("A/Sub/a3"));
|
||||
QVERIFY(fakeFolder.currentLocalState().find("A/Sub/a4"));
|
||||
QVERIFY(fakeFolder.currentLocalState().find("A/Sub/SubSub/a5"));
|
||||
QVERIFY(fakeFolder.currentLocalState().find("A/Sub2/a6"));
|
||||
QVERIFY(fakeFolder.currentLocalState().find("A/Sub/SubSub/a7"));
|
||||
QVERIFY(!fakeFolder.currentLocalState().find("B/b1"));
|
||||
QVERIFY(!fakeFolder.currentLocalState().find("B/Sub/b2"));
|
||||
|
||||
// Now download remaining files in "B"
|
||||
fakeFolder.syncJournal().markVirtualFileForDownloadRecursively("B");
|
||||
QVERIFY(fakeFolder.syncOnce());
|
||||
QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
|
||||
}
|
||||
};
|
||||
|
||||
QTEST_GUILESS_MAIN(TestSyncVirtualFiles)
|
||||
|
||||
@@ -591,12 +591,12 @@
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="137"/>
|
||||
<source>Quit</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Surt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="138"/>
|
||||
<source>Continue</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Continua</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="253"/>
|
||||
@@ -1414,7 +1414,7 @@ Note that this selects only what pool upgrades are taken from, and that there ar
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.cpp" line="186"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Cancel·lar</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
||||
@@ -591,12 +591,12 @@
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="137"/>
|
||||
<source>Quit</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Ukončit</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="138"/>
|
||||
<source>Continue</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Pokračovat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="253"/>
|
||||
@@ -1417,7 +1417,7 @@ Note that this selects only what pool upgrades are taken from, and that there ar
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.cpp" line="186"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Zrušit</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
||||
@@ -576,27 +576,27 @@
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="122"/>
|
||||
<source>Continuing will mean <b>deleting these settings</b>.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Fortsetzen bedeutet <b>das diese Einstellungen gelöscht werden</b>.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="124"/>
|
||||
<source>Continuing will mean <b>ignoring these settings</b>.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Fortsetzen bedeutet <b>das diese Einstellungen ignoriert werden</b>.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="130"/>
|
||||
<source>Some settings were configured in newer versions of this client and use features that are not available in this version.<br><br>%1<br><br>The current configuration file was already backed up to <i>%2</i>.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Einige Einstellungen wurden in neueren Versionen dieses Programms eingestellt und nutzen Funktionen die in dieser Version nicht verfügbar sind. <br><br>%1<br><br> Die aktuelle Konfigurations-Datei wurde bereits an folgenden Ort gesichert: <i>%2</i></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="137"/>
|
||||
<source>Quit</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Beenden</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="138"/>
|
||||
<source>Continue</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Fortsetzen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="253"/>
|
||||
@@ -1324,17 +1324,17 @@ Wenn diese Synchronisation fortgesetzt wird, werden Dateien eventuell von älter
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.ui" line="89"/>
|
||||
<source>&Channel</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>&Channel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.ui" line="106"/>
|
||||
<source>stable</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Stabil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.ui" line="111"/>
|
||||
<source>beta</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Beta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.ui" line="179"/>
|
||||
@@ -1406,24 +1406,25 @@ Wenn diese Synchronisation fortgesetzt wird, werden Dateien eventuell von älter
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.cpp" line="171"/>
|
||||
<source>Change update channel?</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Update-Kanal verändern?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.cpp" line="172"/>
|
||||
<source>The update channel determines which client updates will be offered for installation. The "stable" channel contains only upgrades that are considered reliable, while the versions in the "beta" channel may contain newer features and bugfixes, but have not yet been tested thoroughly.
|
||||
|
||||
Note that this selects only what pool upgrades are taken from, and that there are no downgrades: So going back from the beta channel to the stable channel usually cannot be done immediately and means waiting for a stable version that is newer than the currently installed beta version.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Der Update-Kanal legt fest welche Programm-Updates zur Installation angeboten werden. Der "Stabil"-Kanal enthält nur Upgrades die als verlässlich betrachtet werden, während Versionen im "Beta"-Kanal neuer Funktionen und Fehlerbehebungen enthalten können, die bisher noch nicht komplett bzw. ausführlich genug getestet werden konnten.
|
||||
Beachten Sie, das dies nur bestimmt von welchem Bereich Sie Upgrades erhalten und das es keine Downgrade-Möglichkeiten gibt: Einen "Schritt zurück" vom Beta-Kanal zum Stabilen-Kanal kann normalerweise nicht unverzüglich erfolgen und bedeutet Wartezeiten auf eine Stabile-Version, die dann neuer ist als die jeweils aktuell installierte Beta-Version.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.cpp" line="185"/>
|
||||
<source>Change update channel</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Update-Kanal ändern</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.cpp" line="186"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Abbrechen</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -3558,7 +3559,7 @@ Dies ist ein neuer experimenteller Modus.Wenn du dich dafür entscheidest, diese
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="857"/>
|
||||
<source>Using virtual files but suffix is not set</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Virtuelle Dateien werden genutzt, aber die Dateiendung ist nicht definiert.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/libsync/syncengine.cpp" line="869"/>
|
||||
|
||||
@@ -591,12 +591,12 @@
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="137"/>
|
||||
<source>Quit</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Έξοδος</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="138"/>
|
||||
<source>Continue</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Συνέχεια</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="253"/>
|
||||
@@ -1419,7 +1419,7 @@ Note that this selects only what pool upgrades are taken from, and that there ar
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.cpp" line="186"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Ακύρωση</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
||||
@@ -591,12 +591,12 @@
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="137"/>
|
||||
<source>Quit</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Salir</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="138"/>
|
||||
<source>Continue</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Continuar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="253"/>
|
||||
@@ -1423,7 +1423,7 @@ Note that this selects only what pool upgrades are taken from, and that there ar
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.cpp" line="186"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Cancelar</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
||||
@@ -591,12 +591,12 @@
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="137"/>
|
||||
<source>Quit</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Salir</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="138"/>
|
||||
<source>Continue</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Continuar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="253"/>
|
||||
@@ -1410,7 +1410,7 @@ Note that this selects only what pool upgrades are taken from, and that there ar
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.cpp" line="186"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Cancelar</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
||||
@@ -591,12 +591,12 @@
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="137"/>
|
||||
<source>Quit</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Lõpeta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="138"/>
|
||||
<source>Continue</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Jätka</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="253"/>
|
||||
@@ -1410,7 +1410,7 @@ Note that this selects only what pool upgrades are taken from, and that there ar
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.cpp" line="186"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Loobu</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
||||
@@ -591,12 +591,12 @@
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="137"/>
|
||||
<source>Quit</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Irten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="138"/>
|
||||
<source>Continue</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Jarraitu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="253"/>
|
||||
@@ -1410,7 +1410,7 @@ Note that this selects only what pool upgrades are taken from, and that there ar
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.cpp" line="186"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Ezeztatu</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
||||
@@ -591,12 +591,12 @@
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="137"/>
|
||||
<source>Quit</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>خروج</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="138"/>
|
||||
<source>Continue</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>ادامه</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="253"/>
|
||||
@@ -1419,7 +1419,7 @@ Note that this selects only what pool upgrades are taken from, and that there ar
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.cpp" line="186"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>لغو</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
||||
@@ -591,12 +591,12 @@
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="137"/>
|
||||
<source>Quit</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Lopeta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="138"/>
|
||||
<source>Continue</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Jatka</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="253"/>
|
||||
@@ -1412,7 +1412,7 @@ Note that this selects only what pool upgrades are taken from, and that there ar
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.cpp" line="186"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Peruuta</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
||||
@@ -591,12 +591,12 @@
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="137"/>
|
||||
<source>Quit</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Quitter</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="138"/>
|
||||
<source>Continue</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Continuer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="253"/>
|
||||
@@ -1420,7 +1420,7 @@ Note that this selects only what pool upgrades are taken from, and that there ar
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.cpp" line="186"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Anuler</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
||||
@@ -591,12 +591,12 @@
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="137"/>
|
||||
<source>Quit</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Saír</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="138"/>
|
||||
<source>Continue</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Continuar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="253"/>
|
||||
@@ -1410,7 +1410,7 @@ Note that this selects only what pool upgrades are taken from, and that there ar
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.cpp" line="186"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Cancelar</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
||||
@@ -591,12 +591,12 @@
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="137"/>
|
||||
<source>Quit</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Kilépés</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="138"/>
|
||||
<source>Continue</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Folytatás</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="253"/>
|
||||
@@ -1411,7 +1411,7 @@ Note that this selects only what pool upgrades are taken from, and that there ar
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.cpp" line="186"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Mégsee</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
||||
@@ -591,12 +591,12 @@
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="137"/>
|
||||
<source>Quit</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Esci</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="138"/>
|
||||
<source>Continue</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Continua</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="253"/>
|
||||
@@ -1415,7 +1415,7 @@ Note that this selects only what pool upgrades are taken from, and that there ar
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.cpp" line="186"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Annulla</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
||||
@@ -591,12 +591,12 @@
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="137"/>
|
||||
<source>Quit</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>終了</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="138"/>
|
||||
<source>Continue</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>続ける</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="253"/>
|
||||
@@ -1417,7 +1417,7 @@ Note that this selects only what pool upgrades are taken from, and that there ar
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.cpp" line="186"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>キャンセル</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
||||
@@ -591,12 +591,12 @@
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="137"/>
|
||||
<source>Quit</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Avslutt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="138"/>
|
||||
<source>Continue</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Fortsett</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="253"/>
|
||||
@@ -1418,7 +1418,7 @@ Note that this selects only what pool upgrades are taken from, and that there ar
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.cpp" line="186"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Avbryt</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
||||
@@ -591,12 +591,12 @@
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="137"/>
|
||||
<source>Quit</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Afsluiten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="138"/>
|
||||
<source>Continue</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Verder</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="253"/>
|
||||
@@ -1419,7 +1419,7 @@ Note that this selects only what pool upgrades are taken from, and that there ar
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.cpp" line="186"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Annuleren</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
||||
@@ -591,12 +591,12 @@
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="137"/>
|
||||
<source>Quit</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Wyjdź</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="138"/>
|
||||
<source>Continue</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Kontynuuj </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="253"/>
|
||||
@@ -1415,7 +1415,7 @@ Note that this selects only what pool upgrades are taken from, and that there ar
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.cpp" line="186"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Anuluj</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
||||
@@ -591,12 +591,12 @@
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="137"/>
|
||||
<source>Quit</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Sair</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="138"/>
|
||||
<source>Continue</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Continuar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="253"/>
|
||||
@@ -1419,7 +1419,7 @@ Note that this selects only what pool upgrades are taken from, and that there ar
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.cpp" line="186"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Cancelar</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
||||
@@ -576,27 +576,27 @@
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="122"/>
|
||||
<source>Continuing will mean <b>deleting these settings</b>.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Continuar significa <b>excluir essas configurações</b>.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="124"/>
|
||||
<source>Continuing will mean <b>ignoring these settings</b>.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Continuar significa <b>ignorar essas configurações</b>.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="130"/>
|
||||
<source>Some settings were configured in newer versions of this client and use features that are not available in this version.<br><br>%1<br><br>The current configuration file was already backed up to <i>%2</i>.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Algumas configurações foram realizadas em versões mais recentes deste cliente e usam recursos que não estão disponíveis nesta versão.<br><br>%1<br><br>O arquivo de configuração atual já foi feito backup em <i>%2</i>.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="137"/>
|
||||
<source>Quit</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Sair</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="138"/>
|
||||
<source>Continue</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Continuar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="253"/>
|
||||
@@ -1322,17 +1322,17 @@ Continuar a sincronização como normal fará com que todos os seus arquivos sej
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.ui" line="89"/>
|
||||
<source>&Channel</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>&Canal</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.ui" line="106"/>
|
||||
<source>stable</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>estável</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.ui" line="111"/>
|
||||
<source>beta</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>beta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.ui" line="179"/>
|
||||
@@ -1405,24 +1405,25 @@ Continuar a sincronização como normal fará com que todos os seus arquivos sej
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.cpp" line="171"/>
|
||||
<source>Change update channel?</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Alterar canal de atualização?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.cpp" line="172"/>
|
||||
<source>The update channel determines which client updates will be offered for installation. The "stable" channel contains only upgrades that are considered reliable, while the versions in the "beta" channel may contain newer features and bugfixes, but have not yet been tested thoroughly.
|
||||
|
||||
Note that this selects only what pool upgrades are taken from, and that there are no downgrades: So going back from the beta channel to the stable channel usually cannot be done immediately and means waiting for a stable version that is newer than the currently installed beta version.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>O canal de atualização determina quais atualizações de cliente serão oferecidas para instalação. O canal "estável" contém apenas atualizações consideradas confiáveis, enquanto as versões no canal "beta" podem conter recursos e correções de bugs mais recentes, mas ainda não foram totalmente testados.
|
||||
Observe que isso seleciona apenas de qual conjunto de atualizações são retiradas e que não há rebaixamentos: Portanto, voltar do canal beta para o canal estável geralmente não pode ser feito imediatamente e significa esperar por uma versão estável que seja mais recente do que a versão beta atualmente instalada.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.cpp" line="185"/>
|
||||
<source>Change update channel</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Alterar canal de atualização</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.cpp" line="186"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Cancelar</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
||||
@@ -591,12 +591,12 @@
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="137"/>
|
||||
<source>Quit</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Выход</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="138"/>
|
||||
<source>Continue</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Продолжить</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="253"/>
|
||||
@@ -1421,7 +1421,7 @@ Note that this selects only what pool upgrades are taken from, and that there ar
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.cpp" line="186"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Отмена</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
||||
@@ -591,12 +591,12 @@
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="137"/>
|
||||
<source>Quit</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Koniec</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="138"/>
|
||||
<source>Continue</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Pokračovať</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="253"/>
|
||||
@@ -1410,7 +1410,7 @@ Note that this selects only what pool upgrades are taken from, and that there ar
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.cpp" line="186"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Zrušiť</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
||||
@@ -591,12 +591,12 @@
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="137"/>
|
||||
<source>Quit</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Končaj</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="138"/>
|
||||
<source>Continue</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Nadaljuj</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="253"/>
|
||||
@@ -1419,7 +1419,7 @@ Note that this selects only what pool upgrades are taken from, and that there ar
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.cpp" line="186"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Prekliči</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
||||
@@ -591,12 +591,12 @@
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="137"/>
|
||||
<source>Quit</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Напусти</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="138"/>
|
||||
<source>Continue</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Настави</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="253"/>
|
||||
@@ -1410,7 +1410,7 @@ Note that this selects only what pool upgrades are taken from, and that there ar
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.cpp" line="186"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Откажи</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
||||
@@ -591,12 +591,12 @@
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="137"/>
|
||||
<source>Quit</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Avsluta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="138"/>
|
||||
<source>Continue</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Fortsätt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="253"/>
|
||||
@@ -1414,7 +1414,7 @@ Note that this selects only what pool upgrades are taken from, and that there ar
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.cpp" line="186"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Avbryt</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
||||
@@ -576,27 +576,27 @@
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="122"/>
|
||||
<source>Continuing will mean <b>deleting these settings</b>.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>กำลังทำต่อหมายถึง <b>กำลังลบการตั้งค่าเหล่านี้</b></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="124"/>
|
||||
<source>Continuing will mean <b>ignoring these settings</b>.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>กำลังทำต่อหมายถึง <b>กำลังละเว้นการตั้งค่าเหล่านี้</b></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="130"/>
|
||||
<source>Some settings were configured in newer versions of this client and use features that are not available in this version.<br><br>%1<br><br>The current configuration file was already backed up to <i>%2</i>.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>การตั้งค่าบางอย่างได้ถูกกำหนดค่าในเวอร์ชันที่ใหม่กว่าของไคลเอ็นต์นี้และเปิดใช้คุณลักษณะที่ไม่สามารถใช้ได้ในเวอร์ชันนี้ <br><br>%1<br><br>ไฟล์การตั้งค่าปัจจุบันได้ถูกสำรองข้อมูลไปที่ <i>%2</i> แล้ว</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="137"/>
|
||||
<source>Quit</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>ออก</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="138"/>
|
||||
<source>Continue</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>ดำเนินการต่อ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="253"/>
|
||||
@@ -1324,17 +1324,17 @@ Continuing the sync as normal will cause all your files to be overwritten by an
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.ui" line="89"/>
|
||||
<source>&Channel</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>และช่องทาง</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.ui" line="106"/>
|
||||
<source>stable</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>รุ่นเสถียร</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.ui" line="111"/>
|
||||
<source>beta</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>รุ่นเบต้า</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.ui" line="179"/>
|
||||
@@ -1406,24 +1406,26 @@ Continuing the sync as normal will cause all your files to be overwritten by an
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.cpp" line="171"/>
|
||||
<source>Change update channel?</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>เปลี่ยนช่องทางการอัพเดท?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.cpp" line="172"/>
|
||||
<source>The update channel determines which client updates will be offered for installation. The "stable" channel contains only upgrades that are considered reliable, while the versions in the "beta" channel may contain newer features and bugfixes, but have not yet been tested thoroughly.
|
||||
|
||||
Note that this selects only what pool upgrades are taken from, and that there are no downgrades: So going back from the beta channel to the stable channel usually cannot be done immediately and means waiting for a stable version that is newer than the currently installed beta version.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>กำหนดช่องทางอัพเดทการติดตั้งใดสำหรับไคลเอ็นต์ "รุ่นเสถียร" จะอัพเกรดที่เชื่อถือได้จาก "รุ่นเบต้า" อาจมีคุณลักษณะใหม่และการแก้ไขปัญหาแต่ยังไม่ได้รับการทดสอบอย่างละเอียด
|
||||
|
||||
โปรดทราบว่าการเลือกนี้จะไม่สามารถดาวน์เกรดจากรุ่นเบต้าไปยังรุ่นเสถียรได้ ต้องรอให้รุ่นเสถียรใหม่กว่ารุ่นเบต้าก่อนถึงจะอัพเกรดเป็นรุ่นเสถียรได้</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.cpp" line="185"/>
|
||||
<source>Change update channel</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>ตกลง</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.cpp" line="186"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>ยกเลิก</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
||||
@@ -591,12 +591,12 @@
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="137"/>
|
||||
<source>Quit</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Çıkış</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="138"/>
|
||||
<source>Continue</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Devam et</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="253"/>
|
||||
@@ -1410,7 +1410,7 @@ Note that this selects only what pool upgrades are taken from, and that there ar
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.cpp" line="186"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>İptal</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
||||
@@ -591,12 +591,12 @@
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="137"/>
|
||||
<source>Quit</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Вийти</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="138"/>
|
||||
<source>Continue</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Продовжити</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="253"/>
|
||||
@@ -1410,7 +1410,7 @@ Note that this selects only what pool upgrades are taken from, and that there ar
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.cpp" line="186"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Скасувати</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
||||
@@ -591,12 +591,12 @@
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="137"/>
|
||||
<source>Quit</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>退出</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="138"/>
|
||||
<source>Continue</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>继续</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="253"/>
|
||||
@@ -1419,7 +1419,7 @@ Note that this selects only what pool upgrades are taken from, and that there ar
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.cpp" line="186"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>取消</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
||||
@@ -591,12 +591,12 @@
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="137"/>
|
||||
<source>Quit</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>離開</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="138"/>
|
||||
<source>Continue</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>繼續</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/gui/application.cpp" line="253"/>
|
||||
@@ -1410,7 +1410,7 @@ Note that this selects only what pool upgrades are taken from, and that there ar
|
||||
<message>
|
||||
<location filename="../src/gui/generalsettings.cpp" line="186"/>
|
||||
<source>Cancel</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>取消</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
||||
Reference in New Issue
Block a user