From 0a3169b808cf2b84ae7c77fd6cb0a7b0aa9a8df3 Mon Sep 17 00:00:00 2001 From: Tannin Date: Thu, 26 Sep 2013 19:10:44 +0200 Subject: - plugin tooltip now only lists the masters that aren't enabled (if any) --- src/pluginlist.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/pluginlist.h') diff --git a/src/pluginlist.h b/src/pluginlist.h index b1f1cc0e..3442a9f7 100644 --- a/src/pluginlist.h +++ b/src/pluginlist.h @@ -185,7 +185,7 @@ private: QString m_OriginName; bool m_IsMaster; std::set m_Masters; - mutable bool m_MasterUnset; + mutable std::set m_MasterUnset; }; friend bool ByName(const ESPInfo& LHS, const ESPInfo& RHS); -- cgit v1.3.1 From cffd9eb4e21f0ddcddca68d8eb0f1c80c8ac6ae1 Mon Sep 17 00:00:00 2001 From: Tannin Date: Sat, 5 Oct 2013 14:20:48 +0200 Subject: - hook.dll now doesn't inject to certain applications (currently steam, chrome and firefox) - versioning system improved. Will now report "downgrades" for mods and support a different versioning system (requires manual switch) - updates can now be ignored until a new version is uploaded - new splash screen - bugfix: a few memory leaks (shouldn't account for much) - bugfix: result of GetModuleHandle wasn't zero-terminated in some cases --- src/categories.cpp | 7 ++++ src/categories.h | 4 ++ src/downloadmanager.cpp | 1 + src/installationmanager.cpp | 6 +-- src/main.cpp | 97 ++++++++++++++++++++++++-------------------- src/mainwindow.cpp | 87 +++++++++++++++++++++++++++------------ src/mainwindow.h | 4 ++ src/modinfo.cpp | 30 ++++++++++++-- src/modinfo.h | 49 ++++++++++++++++++++++ src/modinfodialog.cpp | 11 +---- src/modlist.cpp | 34 ++++++++++------ src/modlistsortproxy.cpp | 2 +- src/modlistview.cpp | 4 +- src/nexusinterface.cpp | 10 +++++ src/nexusinterface.h | 1 + src/nxmaccessmanager.cpp | 8 ++++ src/nxmaccessmanager.h | 2 + src/organizer.pro | 7 +++- src/pluginlist.cpp | 4 ++ src/pluginlist.h | 2 + src/profile.cpp | 3 +- src/selfupdater.cpp | 2 - src/shared/gameinfo.cpp | 7 ++++ src/shared/gameinfo.h | 4 +- src/shared/leaktrace.cpp | 1 + src/shared/shared.pro | 10 ++++- src/spawn.cpp | 4 +- src/spawn.h | 4 +- src/splash.png | Bin 103422 -> 260807 bytes 29 files changed, 296 insertions(+), 109 deletions(-) (limited to 'src/pluginlist.h') diff --git a/src/categories.cpp b/src/categories.cpp index 62ba3ca5..c084c238 100644 --- a/src/categories.cpp +++ b/src/categories.cpp @@ -43,6 +43,7 @@ QString CategoryFactory::categoriesFilePath() CategoryFactory::CategoryFactory() { + atexit(&cleanup); reset(); QFile categoryFile(categoriesFilePath()); @@ -124,6 +125,12 @@ void CategoryFactory::setParents() } } +void CategoryFactory::cleanup() +{ + delete s_Instance; + s_Instance = NULL; +} + void CategoryFactory::saveCategories() { diff --git a/src/categories.h b/src/categories.h index 75698149..31fccd6d 100644 --- a/src/categories.h +++ b/src/categories.h @@ -180,6 +180,8 @@ private: void setParents(); + static void cleanup(); + private: static CategoryFactory *s_Instance; @@ -188,6 +190,8 @@ private: std::map m_IDMap; std::map m_NexusMap; +private: + }; diff --git a/src/downloadmanager.cpp b/src/downloadmanager.cpp index bbb34ccc..b965d598 100644 --- a/src/downloadmanager.cpp +++ b/src/downloadmanager.cpp @@ -162,6 +162,7 @@ DownloadManager::~DownloadManager() for (QVector::iterator iter = m_ActiveDownloads.begin(); iter != m_ActiveDownloads.end(); ++iter) { delete *iter; } + m_ActiveDownloads.clear(); } diff --git a/src/installationmanager.cpp b/src/installationmanager.cpp index 378eb38a..87efecf1 100644 --- a/src/installationmanager.cpp +++ b/src/installationmanager.cpp @@ -46,6 +46,7 @@ along with Mod Organizer. If not, see . #include #include #include +#include using namespace MOBase; @@ -678,8 +679,7 @@ bool InstallationManager::install(const QString &fileName, GuessedValue this->m_CurrentArchive->close(); }); - DirectoryTree *filesTree = archiveOpen ? createFilesTree() : NULL; - + QScopedPointer filesTree(archiveOpen ? createFilesTree() : NULL); IPluginInstaller::EInstallResult installResult = IPluginInstaller::RESULT_NOTATTEMPTED; std::sort(m_Installers.begin(), m_Installers.end(), [] (IPluginInstaller *LHS, IPluginInstaller *RHS) { @@ -704,7 +704,7 @@ bool InstallationManager::install(const QString &fileName, GuessedValue (filesTree != NULL) && (installer->isArchiveSupported(*filesTree))) { installResult = installerSimple->install(modName, *filesTree, version, modID); if (installResult == IPluginInstaller::RESULT_SUCCESS) { - mapToArchive(filesTree); + mapToArchive(filesTree.data()); // the simple installer only prepares the installation, the rest works the same for all installers if (!doInstall(modName, modID, version, newestVersion, categoryID)) { installResult = IPluginInstaller::RESULT_FAILED; diff --git a/src/main.cpp b/src/main.cpp index 5a694121..c4431ac4 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -18,6 +18,11 @@ along with Mod Organizer. If not, see . */ +#ifdef LEAK_CHECK_WITH_VLD +#include +#include +#endif // LEAK_CHECK_WITH_VLD + #include #include #include @@ -430,61 +435,65 @@ int main(int argc, char *argv[]) application.setStyleFile(settings.value("Settings/style", "").toString()); - // set up main window and its data structures - MainWindow mainWindow(argv[0], settings); - QObject::connect(&mainWindow, SIGNAL(styleChanged(QString)), &application, SLOT(setStyleFile(QString))); - QObject::connect(&instance, SIGNAL(messageSent(QString)), &mainWindow, SLOT(externalMessage(QString))); + int res = 1; + { // scope to control lifetime of mainwindow + // set up main window and its data structures + MainWindow mainWindow(argv[0], settings); + QObject::connect(&mainWindow, SIGNAL(styleChanged(QString)), &application, SLOT(setStyleFile(QString))); + QObject::connect(&instance, SIGNAL(messageSent(QString)), &mainWindow, SLOT(externalMessage(QString))); - mainWindow.setExecutablesList(executablesList); - mainWindow.readSettings(); + mainWindow.setExecutablesList(executablesList); + mainWindow.readSettings(); - QString selectedProfileName = QString::fromUtf8(settings.value("selected_profile", "").toByteArray()); + QString selectedProfileName = QString::fromUtf8(settings.value("selected_profile", "").toByteArray()); - { // see if there is a profile on the command line - int profileIndex = arguments.indexOf("-p", 1); - if ((profileIndex != -1) && (profileIndex < arguments.size() - 1)) { - qDebug("profile overwritten on command line"); - selectedProfileName = arguments.at(profileIndex + 1); + { // see if there is a profile on the command line + int profileIndex = arguments.indexOf("-p", 1); + if ((profileIndex != -1) && (profileIndex < arguments.size() - 1)) { + qDebug("profile overwritten on command line"); + selectedProfileName = arguments.at(profileIndex + 1); + } + arguments.removeAt(profileIndex); + arguments.removeAt(profileIndex); + } + qDebug("configured profile: %s", qPrintable(selectedProfileName)); + + // if we have a command line parameter, it is either a nxm link or + // a binary to start + if ((arguments.size() > 1) && (!isNxmLink(arguments.at(1)))) { + QString exeName = arguments.at(1); + qDebug("starting %s from command line", qPrintable(exeName)); + arguments.removeFirst(); // remove application name (ModOrganizer.exe) + arguments.removeFirst(); // remove binary name + // pass the remaining parameters to the binary + mainWindow.spawnProgram(exeName, arguments.join(" "), selectedProfileName, QDir()); + return 0; } - arguments.removeAt(profileIndex); - arguments.removeAt(profileIndex); - } - qDebug("configured profile: %s", qPrintable(selectedProfileName)); - - // if we have a command line parameter, it is either a nxm link or - // a binary to start - if ((arguments.size() > 1) && (!isNxmLink(arguments.at(1)))) { - QString exeName = arguments.at(1); - qDebug("starting %s from command line", qPrintable(exeName)); - arguments.removeFirst(); // remove application name (ModOrganizer.exe) - arguments.removeFirst(); // remove binary name - // pass the remaining parameters to the binary - mainWindow.spawnProgram(exeName, arguments.join(" "), selectedProfileName, QDir()); - return 0; - } - mainWindow.createFirstProfile(); + mainWindow.createFirstProfile(); - if (selectedProfileName.length() != 0) { - if (!mainWindow.setCurrentProfile(selectedProfileName)) { + if (selectedProfileName.length() != 0) { + if (!mainWindow.setCurrentProfile(selectedProfileName)) { + mainWindow.setCurrentProfile(1); + qWarning("failed to set profile: %s", + selectedProfileName.toUtf8().constData()); + } + } else { mainWindow.setCurrentProfile(1); - qWarning("failed to set profile: %s", - selectedProfileName.toUtf8().constData()); } - } else { - mainWindow.setCurrentProfile(1); - } - qDebug("displaying main window"); - mainWindow.show(); + qDebug("displaying main window"); + mainWindow.show(); - if ((arguments.size() > 1) && - (isNxmLink(arguments.at(1)))) { - qDebug("starting download from command line: %s", qPrintable(arguments.at(1))); - mainWindow.externalMessage(arguments.at(1)); + if ((arguments.size() > 1) && + (isNxmLink(arguments.at(1)))) { + qDebug("starting download from command line: %s", qPrintable(arguments.at(1))); + mainWindow.externalMessage(arguments.at(1)); + } + splash.finish(&mainWindow); + res = application.exec(); } - splash.finish(&mainWindow); - return application.exec(); + return res; } catch (const std::exception &e) { reportError(e.what()); return 1; diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 24772db1..1ea35d74 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -139,8 +139,8 @@ MainWindow::MainWindow(const QString &exeName, QSettings &initSettings, QWidget : QMainWindow(parent), ui(new Ui::MainWindow), m_Tutorial(this, "MainWindow"), m_ExeName(exeName), m_OldProfileIndex(-1), m_DirectoryStructure(new DirectoryEntry(L"data", NULL, 0)), - m_ModList(NexusInterface::instance()), m_ModListGroupingProxy(NULL), m_ModListSortProxy(NULL), - m_OldExecutableIndex(-1), m_GamePath(ToQString(GameInfo::instance().getGameDirectory())), + m_ModList(this), m_ModListGroupingProxy(NULL), m_ModListSortProxy(NULL), + m_PluginList(this), m_OldExecutableIndex(-1), m_GamePath(ToQString(GameInfo::instance().getGameDirectory())), m_DownloadManager(NexusInterface::instance(), this), m_InstallationManager(this), m_Translator(NULL), m_TranslatorQt(NULL), m_Updater(NexusInterface::instance(), this), m_CategoryFactory(CategoryFactory::instance()), @@ -149,7 +149,7 @@ MainWindow::MainWindow(const QString &exeName, QSettings &initSettings, QWidget m_GameInfo(new GameInfoImpl()) { ui->setupUi(this); - this->setWindowTitle(ToQString(GameInfo::instance().getGameName()).append(" Mod Organizer v").append(m_Updater.getVersion().canonicalString())); + this->setWindowTitle(ToQString(GameInfo::instance().getGameName()) + " Mod Organizer v" + m_Updater.getVersion().displayString()); m_RefreshProgress = new QProgressBar(statusBar()); m_RefreshProgress->setTextVisible(true); @@ -255,7 +255,7 @@ MainWindow::MainWindow(const QString &exeName, QSettings &initSettings, QWidget connect(&m_Updater, SIGNAL(updateAvailable()), this, SLOT(updateAvailable())); connect(&m_Updater, SIGNAL(motdAvailable(QString)), this, SLOT(motdReceived(QString))); - connect(ExitProxy::instance(), SIGNAL(exit()), this, SLOT(close())); +// connect(ExitProxy::instance(), SIGNAL(exit()), this, SLOT(close())); connect(NexusInterface::instance()->getAccessManager(), SIGNAL(loginSuccessful(bool)), this, SLOT(loginSuccessful(bool))); connect(NexusInterface::instance()->getAccessManager(), SIGNAL(loginFailed(QString)), this, SLOT(loginFailed(QString))); @@ -412,7 +412,7 @@ void MainWindow::actionToToolButton(QAction *&sourceAction) button->setToolButtonStyle(ui->toolBar->toolButtonStyle()); button->setToolTip(sourceAction->toolTip()); button->setShortcut(sourceAction->shortcut()); - QMenu *buttonMenu = new QMenu(sourceAction->text()); + QMenu *buttonMenu = new QMenu(sourceAction->text(), button); button->setMenu(buttonMenu); QAction *newAction = ui->toolBar->insertWidget(sourceAction, button); newAction->setObjectName(sourceAction->objectName()); @@ -1499,6 +1499,8 @@ void MainWindow::updateTo(QTreeWidgetItem *subTree, const std::wstring &director updateTo(directoryChild, temp.str(), **current, conflictsOnly); if (directoryChild->childCount() != 0) { subTree->addChild(directoryChild); + } else { + delete directoryChild; } } } @@ -3069,7 +3071,6 @@ void MainWindow::openExplorer_clicked() ::ShellExecuteW(NULL, L"explore", ToWString(modInfo->absolutePath()).c_str(), NULL, NULL, SW_SHOWNORMAL); } - void MainWindow::information_clicked() { try { @@ -3079,7 +3080,6 @@ void MainWindow::information_clicked() } } - void MainWindow::syncOverwrite() { ModInfo::Ptr modInfo = ModInfo::getByIndex(m_ContextRow); @@ -3091,7 +3091,6 @@ void MainWindow::syncOverwrite() } } - void MainWindow::createModFromOverwrite() { GuessedValue name; @@ -3125,14 +3124,12 @@ void MainWindow::createModFromOverwrite() refreshModList(); } - void MainWindow::cancelModListEditor() { ui->modList->setEnabled(false); ui->modList->setEnabled(true); } - void MainWindow::on_modList_doubleClicked(const QModelIndex &index) { if (!index.isValid()) { @@ -3155,7 +3152,6 @@ void MainWindow::on_modList_doubleClicked(const QModelIndex &index) } } - bool MainWindow::addCategories(QMenu *menu, int targetID) { ModInfo::Ptr modInfo = ModInfo::getByIndex(m_ContextRow); @@ -3210,7 +3206,6 @@ void MainWindow::saveCategoriesFromMenu(QMenu *menu, int modRow) } } - void MainWindow::saveCategories() { QMenu *menu = qobject_cast(sender()); @@ -3254,8 +3249,6 @@ void MainWindow::saveCategories() refreshFilters(); } - - void MainWindow::savePrimaryCategory() { QMenu *menu = qobject_cast(sender()); @@ -3280,7 +3273,6 @@ void MainWindow::savePrimaryCategory() } } - void MainWindow::checkModsForUpdates() { statusBar()->show(); @@ -3298,6 +3290,45 @@ void MainWindow::checkModsForUpdates() } } +void MainWindow::changeVersioningScheme() { + if (QMessageBox::question(this, tr("Continue?"), + tr("This will try to change the versioning scheme so that the newest version is interpreted as an update to " + "the installed version."), + QMessageBox::Yes | QMessageBox::Cancel) == QMessageBox::Yes) { + + ModInfo::Ptr info = ModInfo::getByIndex(m_ContextRow); + + bool success = false; + + static VersionInfo::VersionScheme schemes[] = { VersionInfo::SCHEME_REGULAR, VersionInfo::SCHEME_DECIMALMARK, VersionInfo::SCHEME_NUMBERSANDLETTERS }; + + for (int i = 0; i < sizeof(schemes) / sizeof(VersionInfo::VersionScheme) && !success; ++i) { + VersionInfo verOld(info->getVersion().canonicalString(), schemes[i]); + VersionInfo verNew(info->getNewestVersion().canonicalString(), schemes[i]); + if (verOld < verNew) { + info->setVersion(verOld); + info->setNewestVersion(verNew); + success = true; + } + } + if (!success) { + QMessageBox::information(this, tr("Sorry"), + tr("I don't know a versioning scheme where %1 is newer than %2.").arg(info->getNewestVersion().canonicalString()).arg(info->getVersion().canonicalString()), + QMessageBox::Ok); + } + } +} + +void MainWindow::ignoreUpdate() { + ModInfo::Ptr info = ModInfo::getByIndex(m_ContextRow); + info->ignoreUpdate(true); +} + +void MainWindow::unignoreUpdate() +{ + ModInfo::Ptr info = ModInfo::getByIndex(m_ContextRow); + info->ignoreUpdate(false); +} void MainWindow::addPrimaryCategoryCandidates(QMenu *primaryCategoryMenu, ModInfo::Ptr info) { @@ -3319,7 +3350,6 @@ void MainWindow::addPrimaryCategoryCandidates(QMenu *primaryCategoryMenu, ModInf } } - void MainWindow::addPrimaryCategoryCandidates() { QMenu *menu = qobject_cast(sender()); @@ -3333,7 +3363,6 @@ void MainWindow::addPrimaryCategoryCandidates() addPrimaryCategoryCandidates(menu, modInfo); } - void MainWindow::enableVisibleMods() { if (QMessageBox::question(NULL, tr("Confirm"), tr("Really enable all visible mods?"), @@ -3342,7 +3371,6 @@ void MainWindow::enableVisibleMods() } } - void MainWindow::disableVisibleMods() { if (QMessageBox::question(NULL, tr("Confirm"), tr("Really disable all visible mods?"), @@ -3351,7 +3379,6 @@ void MainWindow::disableVisibleMods() } } - void MainWindow::exportModListCSV() { SelectionDialog selection(tr("Choose what to export")); @@ -3406,7 +3433,6 @@ void MainWindow::exportModListCSV() } } - void addMenuAsPushButton(QMenu *menu, QMenu *subMenu) { QPushButton *pushBtn = new QPushButton(subMenu->title()); @@ -3416,13 +3442,13 @@ void addMenuAsPushButton(QMenu *menu, QMenu *subMenu) menu->addAction(action); } - void MainWindow::on_modList_customContextMenuRequested(const QPoint &pos) { try { QTreeView *modList = findChild("modList"); - m_ContextRow = mapToModel(&m_ModList, modList->indexAt(pos)).row(); + QModelIndex index = mapToModel(&m_ModList, modList->indexAt(pos)); + m_ContextRow = index.row(); QMenu menu; @@ -3461,6 +3487,17 @@ void MainWindow::on_modList_customContextMenuRequested(const QPoint &pos) connect(primaryCategoryMenu, SIGNAL(aboutToHide()), this, SLOT(savePrimaryCategory())); addMenuAsPushButton(&menu, primaryCategoryMenu); + menu.addSeparator(); + if (info->downgradeAvailable()) { + menu.addAction(tr("Change versioning scheme"), this, SLOT(changeVersioningScheme())); + } + if (info->updateIgnored()) { + menu.addAction(tr("Un-ignore update"), this, SLOT(unignoreUpdate())); + } else { + menu.addAction(tr("Ignore update"), this, SLOT(ignoreUpdate())); + } + menu.addSeparator(); + menu.addAction(tr("Rename Mod..."), this, SLOT(renameMod_clicked())); menu.addAction(tr("Remove Mod..."), this, SLOT(removeMod_clicked())); menu.addAction(tr("Reinstall Mod"), this, SLOT(reinstallMod_clicked())); @@ -4207,9 +4244,9 @@ void MainWindow::on_actionEndorseMO_triggered() void MainWindow::updateDownloadListDelegate() { if (ui->compactBox->isChecked()) { - ui->downloadView->setItemDelegate(new DownloadListWidgetCompactDelegate(&m_DownloadManager, ui->downloadView)); + ui->downloadView->setItemDelegate(new DownloadListWidgetCompactDelegate(&m_DownloadManager, ui->downloadView, ui->downloadView)); } else { - ui->downloadView->setItemDelegate(new DownloadListWidgetDelegate(&m_DownloadManager, ui->downloadView)); + ui->downloadView->setItemDelegate(new DownloadListWidgetDelegate(&m_DownloadManager, ui->downloadView, ui->downloadView)); } DownloadListSortProxy *sortProxy = new DownloadListSortProxy(&m_DownloadManager, ui->downloadView); @@ -4267,7 +4304,7 @@ void MainWindow::nxmUpdatesAvailable(const std::vector &modIDs, QVariant us } else { std::vector info = ModInfo::getByModID(result["id"].toInt()); for (auto iter = info.begin(); iter != info.end(); ++iter) { - (*iter)->setNewestVersion(VersionInfo(result["version"].toString())); + (*iter)->setNewestVersion(result["version"].toString()); (*iter)->setNexusDescription(result["description"].toString()); if (NexusInterface::instance()->getAccessManager()->loggedIn() && result.contains("voted_by_user")) { diff --git a/src/mainwindow.h b/src/mainwindow.h index 80dca172..dfec5f49 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -466,6 +466,10 @@ private slots: void removeFromToolbar(); void overwriteClosed(int); + void changeVersioningScheme(); + void ignoreUpdate(); + void unignoreUpdate(); + private slots: // ui slots // actions void on_actionAdd_Profile_triggered(); diff --git a/src/modinfo.cpp b/src/modinfo.cpp index 7632a86e..1479f7b4 100644 --- a/src/modinfo.cpp +++ b/src/modinfo.cpp @@ -303,10 +303,11 @@ ModInfoRegular::ModInfoRegular(const QDir &path, DirectoryEntry **directoryStruc QString metaFileName = path.absoluteFilePath("meta.ini"); QSettings metaFile(metaFileName, QSettings::IniFormat); - m_Notes = metaFile.value("notes", "").toString(); - m_NexusID = metaFile.value("modid", -1).toInt(); + m_Notes = metaFile.value("notes", "").toString(); + m_NexusID = metaFile.value("modid", -1).toInt(); m_Version.parse(metaFile.value("version", "").toString()); - m_NewestVersion = metaFile.value("newestVersion", "").toString(); + m_NewestVersion = metaFile.value("newestVersion", "").toString(); + m_IgnoredVersion = metaFile.value("ignoredVersion", "").toString(); m_InstallationFile = metaFile.value("installationFile", "").toString(); m_NexusDescription = metaFile.value("nexusDescription", "").toString(); m_LastNexusQuery = QDateTime::fromString(metaFile.value("lastNexusQuery", "").toString(), Qt::ISODate); @@ -377,6 +378,7 @@ void ModInfoRegular::saveMeta() temp.erase(m_PrimaryCategory); metaFile.setValue("category", QString("%1").arg(m_PrimaryCategory) + "," + SetJoin(temp, ",")); metaFile.setValue("newestVersion", m_NewestVersion.canonicalString()); + metaFile.setValue("ignoredVersion", m_IgnoredVersion.canonicalString()); metaFile.setValue("version", m_Version.canonicalString()); metaFile.setValue("modid", m_NexusID); metaFile.setValue("notes", m_Notes); @@ -396,10 +398,22 @@ void ModInfoRegular::saveMeta() bool ModInfoRegular::updateAvailable() const { + if (m_IgnoredVersion.isValid() && (m_IgnoredVersion == m_NewestVersion)) { + return false; + } return m_NewestVersion.isValid() && (m_Version < m_NewestVersion); } +bool ModInfoRegular::downgradeAvailable() const +{ + if (m_IgnoredVersion.isValid() && (m_IgnoredVersion == m_NewestVersion)) { + return false; + } + return m_NewestVersion.isValid() && (m_NewestVersion < m_Version); +} + + void ModInfoRegular::nxmDescriptionAvailable(int, QVariant, QVariant resultData) { QVariantMap result = resultData.toMap(); @@ -576,6 +590,16 @@ QString ModInfoRegular::absolutePath() const return m_Path; } +void ModInfoRegular::ignoreUpdate(bool ignore) +{ + if (ignore) { + m_IgnoredVersion = m_NewestVersion; + } else { + m_IgnoredVersion.clear(); + } + m_MetaInfoChanged = true; +} + std::vector ModInfoRegular::getFlags() const { diff --git a/src/modinfo.h b/src/modinfo.h index 7e217de7..3b83d207 100644 --- a/src/modinfo.h +++ b/src/modinfo.h @@ -192,6 +192,22 @@ public: **/ virtual bool updateAvailable() const = 0; + /** + * @return true if the update currently available is ignored + */ + virtual bool updateIgnored() const = 0; + + /** + * @brief test if the "newest" version of the mod is older than the installed version + * + * test if there is a newer version of the mod. This does NOT cause + * information to be retrieved from the nexus, it will only test version information already + * available locally. Use checkAllForUpdate() to update this version information + * + * @return true if the newest version is older than the installed one + **/ + virtual bool downgradeAvailable() const = 0; + /** * @brief request an update of nexus description for this mod. * @@ -309,6 +325,11 @@ public: **/ virtual MOBase::VersionInfo getNewestVersion() const = 0; + /** + * @brief ignore the newest version for updates + */ + virtual void ignoreUpdate(bool ignore) = 0; + /** * @brief getter for the nexus mod id * @@ -494,6 +515,22 @@ public: **/ bool updateAvailable() const; + /** + * @return true if the current update is being ignored + */ + virtual bool updateIgnored() const { return m_IgnoredVersion == m_NewestVersion; } + + /** + * @brief test if there is a newer version of the mod + * + * test if there is a newer version of the mod. This does NOT cause + * information to be retrieved from the nexus, it will only test version information already + * available locally. Use checkAllForUpdate() to update this version information + * + * @return true if there is a newer version + **/ + bool downgradeAvailable() const; + /** * @brief request an update of nexus description for this mod. * @@ -620,6 +657,11 @@ public: **/ MOBase::VersionInfo getNewestVersion() const { return m_NewestVersion; } + /** + * @brief ignore the newest version for updates + */ + void ignoreUpdate(bool ignore); + /** * @brief getter for the installation file * @@ -746,6 +788,7 @@ private: bool m_MetaInfoChanged; MOBase::VersionInfo m_NewestVersion; + MOBase::VersionInfo m_IgnoredVersion; EEndorsedState m_EndorsedState; @@ -767,10 +810,13 @@ class ModInfoBackup : public ModInfoRegular public: virtual bool updateAvailable() const { return false; } + virtual bool updateIgnored() const { return false; } + virtual bool downgradeAvailable() const { return false; } virtual bool updateNXMInfo() { return false; } virtual void setNexusID(int) {} virtual void endorse(bool) {} virtual int getFixedPriority() const { return -1; } + virtual void ignoreUpdate(bool) {} virtual bool canBeUpdated() const { return false; } virtual bool canBeEnabled() const { return false; } virtual std::vector getIniTweaks() const { return std::vector(); } @@ -798,12 +844,15 @@ class ModInfoOverwrite : public ModInfo public: virtual bool updateAvailable() const { return false; } + virtual bool updateIgnored() const { return false; } + virtual bool downgradeAvailable() const { return false; } virtual bool updateNXMInfo() { return false; } virtual void setCategory(int, bool) {} virtual bool setName(const QString&) { return false; } virtual void setNotes(const QString&) {} virtual void setNexusID(int) {} virtual void setNewestVersion(const MOBase::VersionInfo&) {} + virtual void ignoreUpdate(bool) {} virtual void setNexusDescription(const QString&) {} virtual void setIsEndorsed(bool) {} virtual void setNeverEndorse() {} diff --git a/src/modinfodialog.cpp b/src/modinfodialog.cpp index 75e7e499..b4ae57ea 100644 --- a/src/modinfodialog.cpp +++ b/src/modinfodialog.cpp @@ -76,7 +76,6 @@ ModInfoDialog::ModInfoDialog(ModInfo::Ptr modInfo, const DirectoryEntry *directo m_UTF8Codec = QTextCodec::codecForName("utf-8"); QListWidget *textFileList = findChild("textFileList"); - QListWidget *iniFileList = findChild("iniFileList"); QListWidget *iniTweaksList = findChild("iniTweaksList"); QListWidget *activeESPList = findChild("activeESPList"); QListWidget *inactiveESPList = findChild("inactiveESPList"); @@ -707,7 +706,7 @@ QString ModInfoDialog::getFileCategory(int categoryID) void ModInfoDialog::updateVersionColor() { // QPalette versionColor; - if (m_ModInfo->getVersion() < m_ModInfo->getNewestVersion()) { + if (m_ModInfo->getVersion() != m_ModInfo->getNewestVersion()) { ui->versionEdit->setStyleSheet("color: red"); // versionColor.setColor(QPalette::Text, Qt::red); ui->versionEdit->setToolTip(tr("Current Version: %1").arg(m_ModInfo->getNewestVersion().canonicalString())); @@ -758,13 +757,7 @@ void ModInfoDialog::modDetailsUpdated(bool success) ui->descriptionView->setHtml(tr("(description incomplete, please visit nexus)")); } - QString version = m_ModInfo->getNewestVersion().canonicalString(); - - if (!version.isEmpty()) { - m_ModInfo->setNewestVersion(version); - - updateVersionColor(); - } + updateVersionColor(); } } diff --git a/src/modlist.cpp b/src/modlist.cpp index b5a7182e..7367b2ae 100644 --- a/src/modlist.cpp +++ b/src/modlist.cpp @@ -143,13 +143,16 @@ QVariant ModList::data(const QModelIndex &modelIndex, int role) const } else if (column == COL_NAME) { return modInfo->name(); } else if (column == COL_VERSION) { - QString version = modInfo->getVersion().canonicalString(); - if (version.isEmpty() && modInfo->canBeUpdated()) { - version = "?"; - } else if (version[0] == 'd') { - version.remove(0, 1); + VersionInfo verInfo = modInfo->getVersion(); + if (role == Qt::EditRole) { + return verInfo.canonicalString(); + } else { + QString version = verInfo.displayString(); + if (version.isEmpty() && modInfo->canBeUpdated()) { + version = "?"; + } + return version; } - return version; } else if (column == COL_PRIORITY) { int priority = modInfo->getFixedPriority(); if (priority != INT_MIN) { @@ -241,17 +244,18 @@ QVariant ModList::data(const QModelIndex &modelIndex, int role) const result.setItalic(true); } } else if (column == COL_VERSION) { - if (modInfo->updateAvailable()) { + if (modInfo->updateAvailable() || modInfo->downgradeAvailable()) { result.setWeight(QFont::Bold); } } return result; } else if (role == Qt::DecorationRole) { if (column == COL_VERSION) { - if (modInfo->updateAvailable() && - modInfo->getNewestVersion().isValid()) { + if (modInfo->updateAvailable()) { return QIcon(":/MO/gui/update_available"); - } else if (modInfo->getVersion().isVersionDate()) { + } else if (modInfo->downgradeAvailable()) { + return QIcon(":/MO/gui/warning"); + } else if (modInfo->getVersion().scheme() == VersionInfo::SCHEME_DATE) { return QIcon(":/MO/gui/version_date"); } } @@ -264,7 +268,7 @@ QVariant ModList::data(const QModelIndex &modelIndex, int role) const } else if (column == COL_VERSION) { if (!modInfo->getNewestVersion().isValid()) { return QVariant(); - } else if (modInfo->updateAvailable()) { + } else if (modInfo->updateAvailable() || modInfo->downgradeAvailable()) { return QBrush(Qt::red); } else { return QBrush(Qt::darkGreen); @@ -291,7 +295,13 @@ QVariant ModList::data(const QModelIndex &modelIndex, int role) const return QString(); } } else if (column == COL_VERSION) { - return tr("installed version: %1, newest version: %2").arg(modInfo->getVersion().canonicalString()).arg(modInfo->getNewestVersion().canonicalString()); + QString text = tr("installed version: %1, newest version: %2").arg(modInfo->getVersion().displayString()).arg(modInfo->getNewestVersion().displayString()); + if (modInfo->downgradeAvailable()) { + text += "
" + tr("The newest version on Nexus seems to be older than the one you have installed. This could either mean the version you have has been withdrawn " + "(i.e. due to a bug) or the author uses a non-standard versioning scheme and that newest version is actually newer. " + "Either way you may want to \"upgrade\"."); + } + return text; } else if (column == COL_CATEGORY) { const std::set &categories = modInfo->getCategories(); std::wostringstream categoryString; diff --git a/src/modlistsortproxy.cpp b/src/modlistsortproxy.cpp index 53c03c6a..c7c3ab28 100644 --- a/src/modlistsortproxy.cpp +++ b/src/modlistsortproxy.cpp @@ -211,7 +211,7 @@ bool ModListSortProxy::filterMatches(ModInfo::Ptr info, bool enabled) const if (enabled) return false; } break; case CategoryFactory::CATEGORY_SPECIAL_UPDATEAVAILABLE: { - if (!info->updateAvailable()) return false; + if (!info->updateAvailable() && !info->downgradeAvailable()) return false; } break; case CategoryFactory::CATEGORY_SPECIAL_NOCATEGORY: { if (info->getCategories().size() > 0) return false; diff --git a/src/modlistview.cpp b/src/modlistview.cpp index 44228d5b..1a4f6266 100644 --- a/src/modlistview.cpp +++ b/src/modlistview.cpp @@ -4,7 +4,7 @@ #include -class ModListViewStyle: public QProxyStyle{ +class ModListViewStyle: public QProxyStyle { public: ModListViewStyle(QStyle *style, int indentation); @@ -37,7 +37,7 @@ void ModListViewStyle::drawPrimitive(PrimitiveElement element, const QStyleOptio ModListView::ModListView(QWidget *parent) : QTreeView(parent) { - setStyle(new ModListViewStyle(style(), indentation())); +// setStyle(new ModListViewStyle(style(), indentation())); } void ModListView::dragEnterEvent(QDragEnterEvent *event) diff --git a/src/nexusinterface.cpp b/src/nexusinterface.cpp index cd78ca4c..bee0bb44 100644 --- a/src/nexusinterface.cpp +++ b/src/nexusinterface.cpp @@ -68,6 +68,7 @@ void NexusBridge::nxmDescriptionAvailable(int modID, QVariant userData, QVariant std::set::iterator iter = m_RequestIDs.find(requestID); if (iter != m_RequestIDs.end()) { m_RequestIDs.erase(iter); + emit descriptionAvailable(modID, userData, resultData); } } @@ -142,6 +143,7 @@ QAtomicInt NexusInterface::NXMRequestInfo::s_NextID(0); NexusInterface::NexusInterface() : m_NMMVersion() { + atexit(&cleanup); m_AccessManager = new NXMAccessManager(this); m_DiskCache = new QNetworkDiskCache(this); @@ -149,6 +151,13 @@ NexusInterface::NexusInterface() } +void NexusInterface::cleanup() +{ + delete NexusInterface::s_Instance; + NexusInterface::s_Instance = NULL; +} + + NXMAccessManager *NexusInterface::getAccessManager() { return m_AccessManager; @@ -405,6 +414,7 @@ void NexusInterface::downloadRequestedNXM(const QString &url) emit requestNXMDownload(url); } +#include void NexusInterface::requestFinished(std::list::iterator iter) { diff --git a/src/nexusinterface.h b/src/nexusinterface.h index 0c304a71..0b53f9d0 100644 --- a/src/nexusinterface.h +++ b/src/nexusinterface.h @@ -294,6 +294,7 @@ private: NexusInterface(); void nextRequest(); void requestFinished(std::list::iterator iter); + static void cleanup(); private: diff --git a/src/nxmaccessmanager.cpp b/src/nxmaccessmanager.cpp index d83ffa61..a05b8a6c 100644 --- a/src/nxmaccessmanager.cpp +++ b/src/nxmaccessmanager.cpp @@ -44,6 +44,14 @@ NXMAccessManager::NXMAccessManager(QObject *parent) { } +NXMAccessManager::~NXMAccessManager() +{ + if (m_LoginReply != NULL) { + m_LoginReply->deleteLater(); + m_LoginReply = NULL; + } +} + QNetworkReply *NXMAccessManager::createRequest( QNetworkAccessManager::Operation operation, const QNetworkRequest &request, diff --git a/src/nxmaccessmanager.h b/src/nxmaccessmanager.h index b0c43978..1d8d36ab 100644 --- a/src/nxmaccessmanager.h +++ b/src/nxmaccessmanager.h @@ -37,6 +37,8 @@ public: explicit NXMAccessManager(QObject *parent); + ~NXMAccessManager(); + bool loggedIn() const; void login(const QString &username, const QString &password); diff --git a/src/organizer.pro b/src/organizer.pro index e89b6e99..a9353361 100644 --- a/src/organizer.pro +++ b/src/organizer.pro @@ -183,7 +183,6 @@ INCLUDEPATH += ../shared ../archive ../uibase ../bsatk ../esptk "$(BOOSTPATH)" LIBS += -L"$(BOOSTPATH)/stage/lib" - CONFIG(debug, debug|release) { OUTDIR = $$OUT_PWD/debug DSTDIR = $$PWD/../../outputd @@ -294,6 +293,12 @@ OTHER_FILES += \ INCLUDEPATH += "$(ZLIBPATH)" "$(ZLIBPATH)/build" "$(BOOSTPATH)" LIBS += -L"$(ZLIBPATH)/build" -lzlibstatic + +# leak detection with vld +#INCLUDEPATH += "E:/Visual Leak Detector/include" +#LIBS += -L"E:/Visual Leak Detector/lib/Win32" +#DEFINES += LEAK_CHECK_WITH_VLD + #SOURCES += modeltest.cpp #HEADERS += modeltest.h #DEFINES += TEST_MODELS diff --git a/src/pluginlist.cpp b/src/pluginlist.cpp index 39cca6af..e730d3f4 100644 --- a/src/pluginlist.cpp +++ b/src/pluginlist.cpp @@ -90,6 +90,10 @@ PluginList::PluginList(QObject *parent) } +PluginList::~PluginList() +{ +} + QString PluginList::getColumnName(int column) { diff --git a/src/pluginlist.h b/src/pluginlist.h index 3442a9f7..60c9be95 100644 --- a/src/pluginlist.h +++ b/src/pluginlist.h @@ -53,6 +53,8 @@ public: **/ PluginList(QObject *parent = NULL); + ~PluginList(); + /** * @brief does a complete refresh of the list * diff --git a/src/profile.cpp b/src/profile.cpp index 07f7010e..3da12d7d 100644 --- a/src/profile.cpp +++ b/src/profile.cpp @@ -185,7 +185,7 @@ void Profile::writeModlistNow(bool onlyOnTimer) const QString fileName = getModlistFileName(); if (QFile::exists(fileName)) { - shellDelete(QStringList(fileName)); + shellDelete(QStringList(fileName), false, QApplication::activeModalWidget()); } if (!file.copy(fileName)) { @@ -238,6 +238,7 @@ void Profile::createTweakedIniFile() if (error) { reportError(tr("failed to create tweaked ini: %1").arg(getCurrentErrorStringA().c_str())); } + qDebug("%s saved", qPrintable(QDir::toNativeSeparators(tweakedIni))); } diff --git a/src/selfupdater.cpp b/src/selfupdater.cpp index 421fbeab..bdace814 100644 --- a/src/selfupdater.cpp +++ b/src/selfupdater.cpp @@ -126,7 +126,6 @@ void SelfUpdater::startUpdate() void SelfUpdater::download(const QString &downloadLink, const QString &fileName) { - qDebug("download: %s", downloadLink.toUtf8().constData()); QNetworkAccessManager *accessManager = m_Interface->getAccessManager(); QUrl dlUrl(downloadLink); QNetworkRequest request(dlUrl); @@ -324,7 +323,6 @@ void SelfUpdater::nxmDescriptionAvailable(int, QVariant, QVariant resultData, in if (m_NewestVersion.isEmpty()) { QTimer::singleShot(5000, this, SLOT(testForUpdate())); } - VersionInfo currentVersion(m_MOVersion); VersionInfo newestVersion(m_NewestVersion); diff --git a/src/shared/gameinfo.cpp b/src/shared/gameinfo.cpp index 6b53450d..f74e52b4 100644 --- a/src/shared/gameinfo.cpp +++ b/src/shared/gameinfo.cpp @@ -40,6 +40,13 @@ GameInfo* GameInfo::s_Instance = NULL; GameInfo::GameInfo(const std::wstring &omoDirectory, const std::wstring &gameDirectory) : m_GameDirectory(gameDirectory), m_OrganizerDirectory(omoDirectory) { + atexit(&cleanup); +} + + +void GameInfo::cleanup() { + delete GameInfo::s_Instance; + GameInfo::s_Instance = NULL; } diff --git a/src/shared/gameinfo.h b/src/shared/gameinfo.h index 3e022ef4..14f52f05 100644 --- a/src/shared/gameinfo.h +++ b/src/shared/gameinfo.h @@ -176,9 +176,11 @@ private: static bool identifyGame(const std::wstring &omoDirectory, const std::wstring &searchPath); std::wstring getSpecialPath(LPCWSTR name) const; + static void cleanup(); + private: - static GameInfo* s_Instance; + static GameInfo *s_Instance; std::wstring m_MyGamesDirectory; diff --git a/src/shared/leaktrace.cpp b/src/shared/leaktrace.cpp index 83ed4fd0..c3721557 100644 --- a/src/shared/leaktrace.cpp +++ b/src/shared/leaktrace.cpp @@ -114,6 +114,7 @@ static struct __TraceData { } std::map m_Traces; + } __trace; diff --git a/src/shared/shared.pro b/src/shared/shared.pro index ab0bd8a0..992fd7f2 100644 --- a/src/shared/shared.pro +++ b/src/shared/shared.pro @@ -13,9 +13,17 @@ CONFIG += staticlib INCLUDEPATH += ../bsatk "$(BOOSTPATH)" + +# only for custom leak detection +#DEFINES += TRACE_LEAKS +#LIBS += -lDbgHelp + + CONFIG(debug, debug|release) { - LIBS += -L$$OUT_PWD/../bsatk/debug + LIBS += -L$$OUT_PWD/../bsatk/debug LIBS += -lDbgHelp + QMAKE_CXXFLAGS_DEBUG -= -Zi + QMAKE_CXXFLAGS += -Z7 } else { LIBS += -L$$OUT_PWD/../bsatk/release } diff --git a/src/spawn.cpp b/src/spawn.cpp index ab43b687..5639a78c 100644 --- a/src/spawn.cpp +++ b/src/spawn.cpp @@ -156,7 +156,7 @@ HANDLE startBinary(const QFileInfo &binary, const QString &arguments, const QStr return processHandle; } - +/* ExitProxy *ExitProxy::s_Instance = NULL; ExitProxy *ExitProxy::instance() @@ -170,4 +170,4 @@ ExitProxy *ExitProxy::instance() void ExitProxy::emitExit() { emit exit(); -} +}*/ diff --git a/src/spawn.h b/src/spawn.h index e0d1f958..48320fea 100644 --- a/src/spawn.h +++ b/src/spawn.h @@ -31,7 +31,7 @@ along with Mod Organizer. If not, see . * @brief a dirty little trick so we can issue a clean restart from startBinary * @note unused */ -class ExitProxy : public QObject { +/*class ExitProxy : public QObject { Q_OBJECT public: static ExitProxy *instance(); @@ -42,7 +42,7 @@ private: ExitProxy() {} private: static ExitProxy *s_Instance; -}; +};*/ /** diff --git a/src/splash.png b/src/splash.png index 45ace8f8..0137bf72 100644 Binary files a/src/splash.png and b/src/splash.png differ -- cgit v1.3.1 From b47c89661e603336abd98d5ecd0a82f6743cab18 Mon Sep 17 00:00:00 2001 From: Tannin Date: Wed, 16 Oct 2013 23:04:03 +0200 Subject: - plugin (esp/esm) list is now exposed to plugins (read-only functionality right now) - integrated fomod installer now supports file dependencies - bugfix: integrated fomod installer crashed if the installer had no optiosn´´ns MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/mainwindow.cpp | 5 +++++ src/mainwindow.h | 23 +---------------------- src/pluginlist.cpp | 40 ++++++++++++++++++++++++++++++++++++++++ src/pluginlist.h | 9 ++++++++- 4 files changed, 54 insertions(+), 23 deletions(-) (limited to 'src/pluginlist.h') diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index b7a0fc2f..de6f20cf 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -2095,6 +2095,11 @@ IDownloadManager *MainWindow::downloadManager() return &m_DownloadManager; } +IPluginList *MainWindow::pluginList() +{ + return &m_PluginList; +} + HANDLE MainWindow::startApplication(const QString &executable, const QStringList &args, const QString &cwd, const QString &profile) { QFileInfo binary; diff --git a/src/mainwindow.h b/src/mainwindow.h index dc8d20c8..a96e5fcf 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -84,28 +84,6 @@ private: } }; -public: - - typedef boost::signals2::signal SignalAboutToRunApplication; - -public: - - struct SignalCombinerAnd - { - typedef bool result_type; - template - bool operator()(InputIterator first, InputIterator last) const - { - while (first != last) { - if (!(*first)) { - return false; - } - ++first; - } - return true; - } - }; - typedef boost::signals2::signal SignalAboutToRunApplication; public: @@ -158,6 +136,7 @@ public: virtual QStringList listDirectories(const QString &directoryName) const; virtual QStringList findFiles(const QString &path, const std::function &filter) const; virtual MOBase::IDownloadManager *downloadManager(); + virtual MOBase::IPluginList *pluginList(); virtual HANDLE startApplication(const QString &executable, const QStringList &args = QStringList(), const QString &cwd = "", const QString &profile = ""); virtual bool onAboutToRun(const std::function &func); diff --git a/src/pluginlist.cpp b/src/pluginlist.cpp index 55f8a39e..74aa6ff3 100644 --- a/src/pluginlist.cpp +++ b/src/pluginlist.cpp @@ -571,6 +571,46 @@ void PluginList::refreshLoadOrder() } } +IPluginList::PluginState PluginList::state(const QString &name) const +{ + auto iter = m_ESPsByName.find(name.toLower()); + if (iter == m_ESPsByName.end()) { + return IPluginList::STATE_MISSING; + } else { + return m_ESPs[iter->second].m_Enabled ? IPluginList::STATE_ACTIVE : IPluginList::STATE_INACTIVE; + } +} + +int PluginList::priority(const QString &name) const +{ + auto iter = m_ESPsByName.find(name.toLower()); + if (iter == m_ESPsByName.end()) { + return -1; + } else { + return m_ESPs[iter->second].m_Priority; + } +} + +int PluginList::loadOrder(const QString &name) const +{ + auto iter = m_ESPsByName.find(name.toLower()); + if (iter == m_ESPsByName.end()) { + return -1; + } else { + return m_ESPs[iter->second].m_LoadOrder; + } +} + +bool PluginList::isMaster(const QString &name) const +{ + auto iter = m_ESPsByName.find(name.toLower()); + if (iter == m_ESPsByName.end()) { + return false; + } else { + return m_ESPs[iter->second].m_IsMaster; + } +} + void PluginList::updateIndices() { diff --git a/src/pluginlist.h b/src/pluginlist.h index 60c9be95..2ad54d6d 100644 --- a/src/pluginlist.h +++ b/src/pluginlist.h @@ -25,12 +25,13 @@ along with Mod Organizer. If not, see . #include #include #include +#include /** * @brief model representing the plugins (.esp/.esm) in the current virtual data folder **/ -class PluginList : public QAbstractTableModel +class PluginList : public QAbstractTableModel, public MOBase::IPluginList { Q_OBJECT @@ -134,6 +135,12 @@ public: void refreshLoadOrder(); +public: + virtual PluginState state(const QString &name) const; + virtual int priority(const QString &name) const; + virtual int loadOrder(const QString &name) const; + virtual bool isMaster(const QString &name) const; + public: // implementation of the QAbstractTableModel interface virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; -- cgit v1.3.1 From d1594798e6e78bb329e744a72e92d3f292f38a20 Mon Sep 17 00:00:00 2001 From: Tannin Date: Fri, 1 Nov 2013 14:59:25 +0100 Subject: - added a new diagnosis to detect potential problems in regards to esp vs. asset ordering (not fully functional yet) - new plugin interfaces to the mod list - plugins can now query the origin (mod) of a esp/esm - bugfix: potential access to profile before one was activated - bugfix: regression in previous (not-yet-released) commit prevented changes to bsa list from being saved --- src/mainwindow.cpp | 18 +++++++++++++--- src/mainwindow.h | 4 +++- src/modlist.cpp | 40 +++++++++++++++++++++++++++++++++++ src/modlist.h | 15 ++++++++++++- src/pluginlist.cpp | 9 ++++++++ src/pluginlist.h | 1 + src/problemsdialog.ui | 58 +++++++++++++++++++++++++-------------------------- 7 files changed, 110 insertions(+), 35 deletions(-) (limited to 'src/pluginlist.h') diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 967a3842..774c99f5 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -246,7 +246,7 @@ MainWindow::MainWindow(const QString &exeName, QSettings &initSettings, QWidget connect(ui->espFilterEdit, SIGNAL(textChanged(QString)), this, SLOT(espFilterChanged(QString))); connect(&m_PluginList, SIGNAL(saveTimer()), this, SLOT(savePluginList())); - connect(ui->bsaList, SIGNAL(itemsMoved()), this, SLOT(on_bsaList_itemMoved())); + connect(ui->bsaList, SIGNAL(itemsMoved()), this, SLOT(bsaList_itemMoved())); connect(ui->bsaWarning, SIGNAL(linkActivated(QString)), this, SLOT(linkClicked(QString))); @@ -1673,7 +1673,7 @@ void MainWindow::refreshSaveList() void MainWindow::refreshLists() { - if (m_DirectoryStructure->isPopulated()) { + if ((m_CurrentProfile != NULL) && m_DirectoryStructure->isPopulated()) { refreshESPList(); refreshBSAList(); } // no point in refreshing lists if no files have been added to the directory tree @@ -2104,6 +2104,11 @@ IPluginList *MainWindow::pluginList() return &m_PluginList; } +IModList *MainWindow::modList() +{ + return &m_ModList; +} + HANDLE MainWindow::startApplication(const QString &executable, const QStringList &args, const QString &cwd, const QString &profile) { QFileInfo binary; @@ -4650,13 +4655,19 @@ void MainWindow::on_bsaList_customContextMenuRequested(const QPoint &pos) menu.exec(ui->bsaList->mapToGlobal(pos)); } -void MainWindow::on_bsaList_itemMoved() +void MainWindow::bsaList_itemMoved() { saveArchiveList(); m_CheckBSATimer.start(500); } +void MainWindow::on_bsaList_itemChanged(QTreeWidgetItem*, int) +{ + saveArchiveList(); + m_CheckBSATimer.start(500); +} + void MainWindow::on_actionProblems_triggered() { // QString problemDescription; @@ -4836,3 +4847,4 @@ void MainWindow::on_showHiddenBox_toggled(bool checked) { m_DownloadManager.setShowHidden(checked); } + diff --git a/src/mainwindow.h b/src/mainwindow.h index 93a6af80..cf97d4f9 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -137,6 +137,7 @@ public: virtual QStringList findFiles(const QString &path, const std::function &filter) const; virtual MOBase::IDownloadManager *downloadManager(); virtual MOBase::IPluginList *pluginList(); + virtual MOBase::IModList *modList(); virtual HANDLE startApplication(const QString &executable, const QStringList &args = QStringList(), const QString &cwd = "", const QString &profile = ""); virtual bool onAboutToRun(const std::function &func); @@ -510,7 +511,7 @@ private slots: // ui slots void on_actionEndorseMO_triggered(); void on_bsaList_customContextMenuRequested(const QPoint &pos); - void on_bsaList_itemMoved(); + void bsaList_itemMoved(); void on_btnRefreshData_clicked(); void on_categoriesList_customContextMenuRequested(const QPoint &pos); void on_compactBox_toggled(bool checked); @@ -531,6 +532,7 @@ private slots: // ui slots void on_categoriesList_itemSelectionChanged(); void on_linkButton_pressed(); void on_showHiddenBox_toggled(bool checked); + void on_bsaList_itemChanged(QTreeWidgetItem *item, int column); }; #endif // MAINWINDOW_H diff --git a/src/modlist.cpp b/src/modlist.cpp index 0fdcf6fa..541e1e6e 100644 --- a/src/modlist.cpp +++ b/src/modlist.cpp @@ -551,6 +551,46 @@ void ModList::changeModPriority(int sourceIndex, int newPriority) emit modorder_changed(); } +IModList::ModState ModList::state(const QString &name) const +{ + unsigned int modIndex = ModInfo::getIndex(name); + if (modIndex == UINT_MAX) { + return IModList::STATE_MISSING; + } else { + ModInfo::Ptr modInfo = ModInfo::getByIndex(modIndex); + if (modInfo->canBeEnabled()) { + return m_Profile->modEnabled(modIndex) ? IModList::STATE_ACTIVE : IModList::STATE_INACTIVE; + } else { + return IModList::STATE_NOTOPTIONAL; + } + } +} + +int ModList::priority(const QString &name) const +{ + unsigned int modIndex = ModInfo::getIndex(name); + if (modIndex == UINT_MAX) { + return -1; + } else { + return m_Profile->getModPriority(modIndex); + } +} + +bool ModList::setPriority(const QString &name, int newPriority) +{ + if ((newPriority < 0) || (newPriority >= static_cast(m_Profile->numRegularMods()))) { + return false; + } + + unsigned int modIndex = ModInfo::getIndex(name); + if (modIndex == UINT_MAX) { + return false; + } else { + m_Profile->setModPriority(modIndex, newPriority); + notifyChange(modIndex); + return true; + } +} bool ModList::dropURLs(const QMimeData *mimeData, int row, const QModelIndex &parent) { diff --git a/src/modlist.h b/src/modlist.h index 7e76d677..cdaa24ca 100644 --- a/src/modlist.h +++ b/src/modlist.h @@ -26,6 +26,8 @@ along with Mod Organizer. If not, see . #include "modinfo.h" #include "profile.h" +#include + #include #include #include @@ -41,7 +43,7 @@ along with Mod Organizer. If not, see . * This is used in a view in the main window of MO. It combines general information about * the mods from ModInfo with status information from the Profile **/ -class ModList : public QAbstractItemModel +class ModList : public QAbstractItemModel, public MOBase::IModList { Q_OBJECT @@ -92,6 +94,17 @@ public: void changeModPriority(int sourceIndex, int newPriority); +public: + + /// \copydoc MOBase::IModList::state + virtual ModState state(const QString &name) const; + + /// \copydoc MOBase::IModList::priority + virtual int priority(const QString &name) const; + + /// \copydoc MOBase::IModList::setPriority + virtual bool setPriority(const QString &name, int newPriority); + public: // implementation of virtual functions of QAbstractItemModel virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; diff --git a/src/pluginlist.cpp b/src/pluginlist.cpp index 74aa6ff3..456d29ee 100644 --- a/src/pluginlist.cpp +++ b/src/pluginlist.cpp @@ -611,6 +611,15 @@ bool PluginList::isMaster(const QString &name) const } } +QString PluginList::origin(const QString &name) const +{ + auto iter = m_ESPsByName.find(name.toLower()); + if (iter == m_ESPsByName.end()) { + return false; + } else { + return m_ESPs[iter->second].m_OriginName; + } +} void PluginList::updateIndices() { diff --git a/src/pluginlist.h b/src/pluginlist.h index 2ad54d6d..4da7be4b 100644 --- a/src/pluginlist.h +++ b/src/pluginlist.h @@ -140,6 +140,7 @@ public: virtual int priority(const QString &name) const; virtual int loadOrder(const QString &name) const; virtual bool isMaster(const QString &name) const; + virtual QString origin(const QString &name) const; public: // implementation of the QAbstractTableModel interface diff --git a/src/problemsdialog.ui b/src/problemsdialog.ui index b194bf31..d3a0d959 100644 --- a/src/problemsdialog.ui +++ b/src/problemsdialog.ui @@ -49,54 +49,52 @@ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:7.8pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"><br /></p></body></html> - - - Qt::Horizontal - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Close + + + + - buttonBox - accepted() + closeButton + clicked() ProblemsDialog accept() - 248 - 254 - - - 157 - 274 - - - - - buttonBox - rejected() - ProblemsDialog - reject() - - - 316 - 260 + 526 + 354 286 - 274 + 187 -- cgit v1.3.1 From f010c22a3b2ec31bc4ebc3f577ac4455c5de5dfb Mon Sep 17 00:00:00 2001 From: Tannin Date: Wed, 6 Nov 2013 18:35:27 +0100 Subject: - diagnosis plugins can now request to be re-evaluated - main application now contains means for plugins to react on some changes (to be extended) - plugins can now retrieve more information about a mod - user-agent sent to nexus now automatically contains the current MO version - included updated russian translation - problems dialog now refreshes itself after a fix was applied - fixed new esp/asset ordering diagnosis. May be fully functional now - bugfix: restoring locked load order could leave MO in an endless loop (not sure if this fix is correct yet) - bugfix: plugin list was not visually updated after some changes - bugfix: nmm importer threw away mod ordering --- src/downloadlistwidget.ui | 4 +- src/main.cpp | 2 +- src/mainwindow.cpp | 9 +- src/mainwindow.ui | 57 +- src/modinfo.cpp | 9 + src/modinfo.h | 1 + src/modinfodialog.ui | 33 +- src/modlist.cpp | 49 +- src/modlist.h | 21 +- src/nexusinterface.cpp | 15 +- src/nexusinterface.h | 1 + src/organizer_ru.qm | Bin 53312 -> 188628 bytes src/organizer_ru.ts | 3256 ++++++++++++++++++++--------------------- src/overwriteinfodialog.cpp | 4 +- src/overwriteinfodialog.h | 100 +- src/pluginlist.cpp | 28 +- src/pluginlist.h | 10 +- src/problemsdialog.cpp | 31 +- src/problemsdialog.h | 4 + src/settingsdialog.ui | 2 +- src/shared/directoryentry.cpp | 2 +- src/version.rc | 4 +- 22 files changed, 1838 insertions(+), 1804 deletions(-) (limited to 'src/pluginlist.h') diff --git a/src/downloadlistwidget.ui b/src/downloadlistwidget.ui index 01b2ee07..106ac922 100644 --- a/src/downloadlistwidget.ui +++ b/src/downloadlistwidget.ui @@ -7,7 +7,7 @@ 0 0 315 - 75 + 81 @@ -78,7 +78,7 @@ - 0 + 0 diff --git a/src/main.cpp b/src/main.cpp index 90cf9e0e..5053d21d 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -140,7 +140,7 @@ bool bootstrap() QObject::tr("The current user account doesn't have the required access rights to run " "Mod Organizer. The neccessary changes can be made automatically (the MO directory " "will be made writable for the current user account). You will be asked to run " - "\"helper.exe\" with administrative rights)."), + "\"helper.exe\" with administrative rights."), QMessageBox::Yes | QMessageBox::Cancel) == QMessageBox::Yes) { if (!Helper::init(GameInfo::instance().getOrganizerDirectory())) { return false; diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 774c99f5..f726757c 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -487,6 +487,7 @@ void MainWindow::updateProblemsButton() ui->actionProblems->setIconText(tr("Problems")); ui->actionProblems->setToolTip(tr("There are potential problems with your setup")); } else { + ui->actionProblems->setEnabled(false); ui->actionProblems->setIconText(tr("No Problems")); ui->actionProblems->setToolTip(tr("Everything seems to be in order")); } @@ -983,6 +984,7 @@ bool MainWindow::registerPlugin(QObject *plugin) IPluginDiagnose *diagnose = qobject_cast(plugin); if (diagnose != NULL) { m_DiagnosisPlugins.push_back(diagnose); + diagnose->onInvalidated([&] () { this->updateProblemsButton(); }); } } { // tool plugins @@ -2178,7 +2180,7 @@ QString MainWindow::fullDescription(unsigned int key) const { switch (key) { case PROBLEM_PLUGINSNOTLOADED: { - QString result = tr("The following Plugins could not be loaded. The reason may be missing dependencies (i.e. python) or an outdated version:
    "); + QString result = tr("The following plugins could not be loaded. The reason may be missing dependencies (i.e. python) or an outdated version:") + "
      "; foreach (const QString &plugin, m_UnloadedPlugins) { result += "
    • " + plugin + "
    • "; } @@ -2985,8 +2987,9 @@ void MainWindow::unendorse_clicked() void MainWindow::overwriteClosed(int) { - QDialog *dialog = this->findChild("__overwriteDialog"); + OverwriteInfoDialog *dialog = this->findChild("__overwriteDialog"); if (dialog != NULL) { + m_ModList.modInfoChanged(dialog->modInfo()); dialog->deleteLater(); } } @@ -2994,6 +2997,7 @@ void MainWindow::overwriteClosed(int) void MainWindow::displayModInformation(ModInfo::Ptr modInfo, unsigned int index, int tab) { + m_ModList.modInfoAboutToChange(modInfo); std::vector flags = modInfo->getFlags(); if (std::find(flags.begin(), flags.end(), ModInfo::FLAG_OVERWRITE) != flags.end()) { QDialog *dialog = this->findChild("__overwriteDialog"); @@ -3019,6 +3023,7 @@ void MainWindow::displayModInformation(ModInfo::Ptr modInfo, unsigned int index, dialog.exec(); modInfo->saveMeta(); emit modInfoDisplayed(); + m_ModList.modInfoChanged(modInfo); } if (m_CurrentProfile->modEnabled(index)) { diff --git a/src/mainwindow.ui b/src/mainwindow.ui index 73ca868e..bc7dc212 100644 --- a/src/mainwindow.ui +++ b/src/mainwindow.ui @@ -31,7 +31,16 @@ 4 - + + 6 + + + 6 + + + 6 + + 6 @@ -577,7 +586,7 @@ p, li { white-space: pre-wrap; } QTabWidget::Rounded - 1 + 0 @@ -721,7 +730,16 @@ p, li { white-space: pre-wrap; } Archives - + + 6 + + + 6 + + + 6 + + 6 @@ -801,7 +819,16 @@ BSAs checked here are loaded in such a way that your installation order is obeye Data - + + 6 + + + 6 + + + 6 + + 6 @@ -871,7 +898,16 @@ BSAs checked here are loaded in such a way that your installation order is obeye Saves - + + 6 + + + 6 + + + 6 + + 6 @@ -900,7 +936,16 @@ p, li { white-space: pre-wrap; } Downloads - + + 2 + + + 2 + + + 2 + + 2 diff --git a/src/modinfo.cpp b/src/modinfo.cpp index faf8c95b..f436eba8 100644 --- a/src/modinfo.cpp +++ b/src/modinfo.cpp @@ -827,6 +827,15 @@ ModInfoOverwrite::ModInfoOverwrite() } +bool ModInfoOverwrite::isEmpty() const +{ + QDirIterator iter(absolutePath(), QDir::NoDotAndDotDot | QDir::Files | QDir::Dirs); + if (!iter.hasNext()) return true; + iter.next(); + if ((iter.fileName() == "meta.ini") && !iter.hasNext()) return true; + return false; +} + QString ModInfoOverwrite::absolutePath() const { return QDir::fromNativeSeparators(ToQString(GameInfo::instance().getOverwriteDir())); diff --git a/src/modinfo.h b/src/modinfo.h index 71c8de55..6de0275b 100644 --- a/src/modinfo.h +++ b/src/modinfo.h @@ -866,6 +866,7 @@ public: virtual void setNeverEndorse() {} virtual bool remove() { return false; } virtual void endorse(bool) {} + virtual bool isEmpty() const; virtual QString name() const { return "Overwrite"; } virtual QString notes() const { return ""; } virtual QDateTime creationTime() const { return m_StartupTime; } diff --git a/src/modinfodialog.ui b/src/modinfodialog.ui index 7e06745d..2fdbe5f3 100644 --- a/src/modinfodialog.ui +++ b/src/modinfodialog.ui @@ -209,7 +209,7 @@ 0 0 - 676 + 668 126 @@ -217,17 +217,22 @@ Images located in the mod. - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">This lists all the images (.jpg and .png) in the mod directory, like screenshots and such. Click one to get a larger view.</span></p></body></html> + This lists all the images (.jpg and .png) in the mod directory, like screenshots and such. Click one to get a larger view. 0 - + + 0 + + + 0 + + + 0 + + 0 @@ -254,14 +259,10 @@ p, li { white-space: pre-wrap; } List of esps and esms that can not be loaded by the game. - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">List of esps and esms contained in this plugin that currently can not be loaded by the game. They will not even appear in the esp-list in the main MO-window.</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">They usually contain optional functionality, see the readme.</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Most mods do not have optional esps, so chances are good you are looking at an empty list.</span></p></body></html> + List of esps and esms contained in this plugin that currently can not be loaded by the game. They will not even appear in the esp-list in the main MO-window. +They usually contain optional functionality, see the readme. + +Most mods do not have optional esps, so chances are good you are looking at an empty list. @@ -659,7 +660,7 @@ p, li { white-space: pre-wrap; } <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:7.8pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"><br /></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"><br /></p></body></html> diff --git a/src/modlist.cpp b/src/modlist.cpp index 541e1e6e..446946dc 100644 --- a/src/modlist.cpp +++ b/src/modlist.cpp @@ -551,19 +551,49 @@ void ModList::changeModPriority(int sourceIndex, int newPriority) emit modorder_changed(); } -IModList::ModState ModList::state(const QString &name) const +void ModList::modInfoAboutToChange(ModInfo::Ptr info) { - unsigned int modIndex = ModInfo::getIndex(name); - if (modIndex == UINT_MAX) { - return IModList::STATE_MISSING; + m_ChangeInfo.name = info->name(); + m_ChangeInfo.state = state(info->name()); +} + +void ModList::modInfoChanged(ModInfo::Ptr info) +{ + if (info->name() == m_ChangeInfo.name) { + IModList::ModStates newState = state(info->name()); + if (m_ChangeInfo.state != newState) { + m_ModStateChanged(info->name(), newState); + } } else { + qCritical("modInfoChanged not called after modInfoAboutToChange"); + } +} + +IModList::ModStates ModList::state(const QString &name) const +{ + ModStates result; + unsigned int modIndex = ModInfo::getIndex(name); + if (modIndex != UINT_MAX) { + result |= IModList::STATE_EXISTS; ModInfo::Ptr modInfo = ModInfo::getByIndex(modIndex); + if (modInfo->isEmpty()) { + result |= IModList::STATE_EMPTY; + } + if (modInfo->endorsedState() == ModInfo::ENDORSED_TRUE) { + result |= IModList::STATE_ENDORSED; + } + if (modInfo->isValid()) { + result |= IModList::STATE_VALID; + } if (modInfo->canBeEnabled()) { - return m_Profile->modEnabled(modIndex) ? IModList::STATE_ACTIVE : IModList::STATE_INACTIVE; + if (m_Profile->modEnabled(modIndex)) { + result |= IModList::STATE_ACTIVE; + } } else { - return IModList::STATE_NOTOPTIONAL; + result |= IModList::STATE_ESSENTIAL; } } + return result; } int ModList::priority(const QString &name) const @@ -592,6 +622,13 @@ bool ModList::setPriority(const QString &name, int newPriority) } } + +bool ModList::onModStateChanged(const std::function &func) +{ + auto conn = m_ModStateChanged.connect(func); + return conn.connected(); +} + bool ModList::dropURLs(const QMimeData *mimeData, int row, const QModelIndex &parent) { QStringList source; diff --git a/src/modlist.h b/src/modlist.h index cdaa24ca..8cab7f3e 100644 --- a/src/modlist.h +++ b/src/modlist.h @@ -32,7 +32,7 @@ along with Mod Organizer. If not, see . #include #include #include - +#include #include #include #include @@ -61,6 +61,8 @@ public: COL_LASTCOLUMN = COL_PRIORITY }; + typedef boost::signals2::signal SignalModStateChanged; + public: /** @@ -94,10 +96,13 @@ public: void changeModPriority(int sourceIndex, int newPriority); + void modInfoAboutToChange(ModInfo::Ptr info); + void modInfoChanged(ModInfo::Ptr info); + public: /// \copydoc MOBase::IModList::state - virtual ModState state(const QString &name) const; + virtual ModStates state(const QString &name) const; /// \copydoc MOBase::IModList::priority virtual int priority(const QString &name) const; @@ -105,6 +110,9 @@ public: /// \copydoc MOBase::IModList::setPriority virtual bool setPriority(const QString &name, int newPriority); + /// \copydoc MOBase::IModList::onModStateChanged + virtual bool onModStateChanged(const std::function &func); + public: // implementation of virtual functions of QAbstractItemModel virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; @@ -245,6 +253,11 @@ private: unsigned int categoryOrder; }; + struct TModInfoChange { + QString name; + QFlags state; + }; + private: Profile *m_Profile; @@ -258,6 +271,10 @@ private: bool m_DropOnItems; + TModInfoChange m_ChangeInfo; + + SignalModStateChanged m_ModStateChanged; + }; #endif // MODLIST_H diff --git a/src/nexusinterface.cpp b/src/nexusinterface.cpp index 936ff400..6a4ae046 100644 --- a/src/nexusinterface.cpp +++ b/src/nexusinterface.cpp @@ -22,8 +22,10 @@ along with Mod Organizer. If not, see . #include "utility.h" #include "json.h" #include "selectiondialog.h" +#include #include #include +#include using QtJson::Json; @@ -148,6 +150,13 @@ NexusInterface::NexusInterface() m_DiskCache = new QNetworkDiskCache(this); connect(m_AccessManager, SIGNAL(requestNXMDownload(QString)), this, SLOT(downloadRequestedNXM(QString))); + + + VS_FIXEDFILEINFO version = GetFileVersion(ToWString(QApplication::applicationFilePath())); + + m_MOVersion = VersionInfo(version.dwFileVersionMS >> 16, + version.dwFileVersionMS & 0xFFFF, + version.dwFileVersionLS >> 16); } @@ -396,8 +405,10 @@ void NexusInterface::nextRequest() QNetworkRequest request(url); request.setHeader(QNetworkRequest::ContentTypeHeader, "application/xml"); -#pragma message("automatically insert the correct version number") - request.setRawHeader("User-Agent", QString("Mod Organizer v1.0.5 (compatible to Nexus Client v%1)").arg(m_NMMVersion).toUtf8()); + request.setRawHeader("User-Agent", + QString("Mod Organizer v%1 (compatible to Nexus Client v%2)") + .arg(m_MOVersion.displayString()) + .arg(m_NMMVersion).toUtf8()); info.m_Reply = m_AccessManager->get(request); diff --git a/src/nexusinterface.h b/src/nexusinterface.h index 0b53f9d0..03226d8e 100644 --- a/src/nexusinterface.h +++ b/src/nexusinterface.h @@ -307,6 +307,7 @@ private: std::list m_ActiveRequest; QQueue m_RequestQueue; + MOBase::VersionInfo m_MOVersion; QString m_NMMVersion; }; diff --git a/src/organizer_ru.qm b/src/organizer_ru.qm index 1bae65a6..5921c2dc 100644 Binary files a/src/organizer_ru.qm and b/src/organizer_ru.qm differ diff --git a/src/organizer_ru.ts b/src/organizer_ru.ts index 2204198c..9b7b8101 100644 --- a/src/organizer_ru.ts +++ b/src/organizer_ru.ts @@ -1,4 +1,3 @@ - @@ -11,26 +10,26 @@ This is a list of esps and esms that were active when the save game was created. - Это ŃпиŃок ESP и ESM, которые были активны во время Ńоздания Ńейва. + Это ŃпиŃок esp и esm, которые были активны во время Ńоздания Ńохранения. - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">This is a list of esps and esms that were active when the save game was created.</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">For each esp, the right column contains the mod (or mods) that can be enabled to make the missing esps/esms available.</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">If you hit Ok, all the mods selected in the right columns and all missing esps that have become available will be activated.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">This is a list of esps and esms that were active when the save game was created.</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">For each esp, the right column contains the mod (or mods) that can be enabled to make the missing esps/esms available.</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">If you hit Ok, all the mods selected in the right columns and all missing esps that have become available will be activated.</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Это ŃпиŃок ESP и ESM, которые были активны, когда Ńейв был Ńоздан..</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Для каждого ESP, правый Ńтолбец Ńодержит мод (или моды), которые могŃŃ‚ быть включены, чтобы неактивные ESP / ESM Ńтали активными.</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Đ•Ńли вы нажмете ОК, вŃе моды, выбранные в правой колонке бŃĐ´ŃŃ‚ активированы..</span></p></body></html> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Это ŃпиŃок ESP и ESM, которые были активны, когда Ńейв был Ńоздан..</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Для каждого ESP, правый Ńтолбец Ńодержит мод (или моды), которые могŃŃ‚ быть включены, чтобы неактивные ESP / ESM Ńтали активными.</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Đ•Ńли вы нажмете ОК, вŃе моды, выбранные в правой колонке бŃĐ´ŃŃ‚ активированы..</span></p></body></html> @@ -45,7 +44,7 @@ p, li { white-space: pre-wrap; } not found - Не найдено + не найдено @@ -73,8 +72,9 @@ p, li { white-space: pre-wrap; } Components of this package. -If there is a component called "00 Core" it is usually required. Options are ordered by priority as set up by the author. - Компоненты этого пакета.Đ•Ńли еŃть компонент который называетŃŃŹ "00 Core", значит так надо. Параметры отŃортированы по приоритетноŃти Ńозданной автором. +If there is a component called "00 Core" it is usually required. Options are ordered by priority as set up by the author. + Компоненты этого пакета. +Đ•Ńли еŃть компонент, называемый "00 Core", то это обычно необходимо. Опции Ńпорядочены по приоритетŃ, ŃŃŃ‚Đ°Đ˝ĐľĐ˛Đ»ĐµĐ˝Đ˝ĐľĐĽŃ Đ°Đ˛Ń‚ĐľŃ€ĐľĐĽ. @@ -91,7 +91,7 @@ If there is a component called "00 Core" it is usually required. Optio Opens a Dialog that allows custom modifications. - Открывает диалоговое окно, которое позволяет выбрать пользовательŃкие модификации. + Открывает диалог, позволяющий выбрать пользовательŃкие модификации. @@ -101,7 +101,7 @@ If there is a component called "00 Core" it is usually required. Optio Ok - ОК + Ок @@ -129,7 +129,7 @@ If there is a component called "00 Core" it is usually required. Optio Internal ID for the category. The categories a mod belongs to are stored by this ID. It is recommended you use new IDs for categories you add instead of re-using existing ones. - Đ’Đ˝Ńтренний ID категории. Категории мода хранятŃŃŹ в иŃтории под этим ID. Это рекомендŃетŃŃŹ иŃпользовать при Ńоздании новых ID для категорий, чтобы повторно иŃпользовать Ńже ŃŃщеŃтвŃющие. + Đ’Đ˝Ńтренний ID категории. Категории мода хранятŃŃŹ в иŃтории под этим ID. РекомендŃетŃŃŹ иŃпользовать новые ID для добавляемых вами категорий, вмеŃто повторного иŃпользования ŃŃщеŃтвŃющих. @@ -154,20 +154,20 @@ If there is a component called "00 Core" it is usually required. Optio - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">You can match one or multiple nexus categories to a internal ID. Whenever you download a mod from a Nexus Page, Mod Organizer will try to resolve the category defined on the Nexus to one available in MO.</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">To find out a category id used by the nexus, visit the categories list of the nexus page and hover over the links there.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">You can match one or multiple nexus categories to a internal ID. Whenever you download a mod from a Nexus Page, Mod Organizer will try to resolve the category defined on the Nexus to one available in MO.</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">To find out a category id used by the nexus, visit the categories list of the nexus page and hover over the links there.</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Đ’Ń‹ можете задать ŃоответŃтвие Ń ĐľĐ´Đ˝ĐľĐą или неŃкольким категориям Ń Đ˛Đ˝Ńтренними ID. Каждый раз, когда вы загрŃжаете мод ŃĐľ Ńтраницы Nexus, МО автоматичеŃки поŃтараетŃŃŹ задать ŃоответŃтвие, как на Nexus.</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Чтобы Ńзнать идентификатор категории иŃпользŃемого ŃоответŃтвия, поŃетите ŃпиŃок категорий на Ńтранице Связь и наведите ĐşŃŃ€Ńор ĐĽŃ‹Ńи на Đ˝ŃжнŃŃŽ ŃŃылкŃ.</span></p></body></html> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Đ’Ń‹ можете задать ĐľĐ´Đ˝Ń Đ¸Đ»Đ¸ неŃколько категорий Nexus внŃŃ‚Ń€ĐµĐ˝Đ˝ĐµĐĽŃ ID. Каждый раз, когда вы загрŃжаете мод ŃĐľ Ńтраницы Nexus, МО поŃтараетŃŃŹ автоматичеŃки задать ĐĽĐľĐ´Ń ĐşĐ°Ń‚ĐµĐłĐľŃ€Đ¸ŃŽ, приŃвоеннŃŃŽ ĐµĐĽŃ Đ˝Đ° Nexus.</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Чтобы Ńзнать ID категории, иŃпользŃемой на Nexus, перейдите в ŃпиŃок категорий Nexus и наведите ĐşŃŃ€Ńор ĐĽŃ‹Ńи на Đ˝ŃжнŃŃŽ ŃŃылкŃ.</span></p></body></html> @@ -199,7 +199,7 @@ p, li { white-space: pre-wrap; } - This feature may not work unless you're logged in with Nexus + This feature may not work unless you're logged in with Nexus Эта Ń„Ńнкция может не работать, еŃли вход выполнен Ń Nexus @@ -225,14 +225,10 @@ p, li { white-space: pre-wrap; } DirectoryRefresher - - failed to read %1: %2 - Не ŃдалоŃŃŚ прочитать %1: %2 - failed to read bsa: %1 - + не ŃдалоŃŃŚ прочитать bsa: %1 @@ -245,73 +241,63 @@ p, li { white-space: pre-wrap; } Filetime - Ждите + Дата модификации Done - Готово + Выполнено - Information missing, please select "Query Info" from the context menu to re-retrieve. - Đнформация отŃŃŃ‚ŃтвŃет, пожалŃĐąŃта, выберите ĐżŃнкт "Справочная информация" из контекŃтного меню. + Information missing, please select "Query Info" from the context menu to re-retrieve. + Đнформация отŃŃŃ‚ŃтвŃет, пожалŃĐąŃта, выберите ĐżŃнкт "Справочная информация" из контекŃтного меню. DownloadListWidget - + Placeholder Заполнитель - - 0 - - - - - KB - - - - + + - Done - Double Click to install Готово - двойной щелчок для ŃŃтановки. + - Paused - Double Click to resume - + ПаŃза - двойной клик для продолжения + - Installed - Double Click to re-install ĐŁŃтановлено - двойной клик для переŃŃтановки + - Uninstalled - Double Click to re-install - + Удалено - двойной клик для переŃŃтановки DownloadListWidgetCompact - + Placeholder Заполнитель - + Done Готово @@ -319,120 +305,120 @@ p, li { white-space: pre-wrap; } DownloadListWidgetCompactDelegate - + + Paused + ПриоŃтановлено + + + + Fetching Info 1 + Đзвлечение информации 1 + + + + Fetching Info 2 + Đзвлечение информации 2 + + + Installed ĐŁŃтановлено - + Uninstalled - + Удалено - + Done Готово - - - - + + + + Are you sure? Đ’Ń‹ Ńверены? - + This will remove all finished downloads from this list and from disk. Это Ńдалит вŃе готовые загрŃзки из этого ŃпиŃка и Ń Đ´Đ¸Ńка. - + This will remove all installed downloads from this list and from disk. Это Ńдалит вŃе ŃŃтановленные загрŃзки из этого ŃпиŃка и Ń Đ´Đ¸Ńка. - + This will permanently remove all finished downloads from this list (but NOT from disk). - + Это полноŃтью Ńдалит вŃе заверŃенные загрŃзки из этого ŃпиŃка (но НЕ Ń Đ´Đ¸Ńка). - + This will permanently remove all installed downloads from this list (but NOT from disk). - + Это полноŃтью Ńдалит вŃе ŃŃтановленные загрŃзки из этого ŃпиŃка (но НЕ Ń Đ´Đ¸Ńка). - + Install ĐŁŃтановка - + Query Info Справочная информация - + Delete - + Удалить - + Remove from View - - - - - Remove - Удаление + Скрыть от проŃмотра - + Cancel Отмена - - Paused - - - - - Fetching Info 1 - - - - - Fetching Info 2 - - - - + Pause ПаŃза - + + Remove + Удаление + + + Resume Возобновить - + Delete Installed... - + Удалить ŃŃтановленное... - + Delete All... - + Удалить вŃе... - + Remove Installed... Отменить ŃŃŃ‚Đ°Đ˝ĐľĐ˛ĐşŃ - + Remove All... Удалить вŃе @@ -440,100 +426,100 @@ p, li { white-space: pre-wrap; } DownloadListWidgetDelegate - - - - + + Fetching Info 1 + Đзвлечение информации 1 + + + + Fetching Info 2 + Đзвлечение информации 2 + + + + + + Are you sure? Đ’Ń‹ Ńверены? - + This will remove all finished downloads from this list and from disk. Это Ńдалит вŃе готовые загрŃзки из этого ŃпиŃка и Ń Đ´Đ¸Ńка. - + This will remove all installed downloads from this list and from disk. Это Ńдалит вŃе ŃŃтановленные загрŃзки из этого лиŃта и Ń Đ´Đ¸Ńка. - + This will remove all finished downloads from this list (but NOT from disk). - + Это Ńдалит вŃе готовые загрŃзки из этого ŃпиŃка (но НЕ Ń Đ´Đ¸Ńка). - + This will remove all installed downloads from this list (but NOT from disk). - + Это Ńдалит вŃе ŃŃтановленные загрŃзки из этого ŃпиŃка (но НЕ Ń Đ´Đ¸Ńка). - + Install ĐŁŃтановить - + Query Info Справочная информация - + Delete - + Удалить - + Remove from View - - - - - Remove - Удалить + Скрыть от проŃмотра - + Cancel Отмена - - Fetching Info 1 - - - - - Fetching Info 2 - + + Pause + ПаŃза - Pause - ПаŃза + Remove + Удалить - + Resume Возобновить - + Delete Installed... - + Удалить ŃŃтановленное... - + Delete All... - + Удалить вŃе... - + Remove Installed... Удалить ŃŃтановленные - + Remove All... Удалить вŃе @@ -541,109 +527,103 @@ p, li { white-space: pre-wrap; } DownloadManager - - failed to rename "%1" to "%2" - Не ŃдалоŃŃŚ переименовать "%1" в "%2" + + failed to rename "%1" to "%2" + не ŃдалоŃŃŚ переименовать "%1" в "%2" - + Download again? Скачать Ńнова - + A file with the same name has already been downloaded. Do you want to download it again? The new file will receive a different name. Файл Ń Ń‚Đ°ĐşĐ¸ĐĽ именем загрŃжен. Đ’Ń‹ хотите загрŃзить его Ńнова? ĐŁ него бŃдет Đ´Ń€Ńгое имя. - + failed to download %1: could not open output file: %2 - ĐžŃибка загрŃзки %1: не ŃдалоŃŃŚ открыть входящий файл: %2 - - - - - - - - - - - - - + не ŃдалоŃŃŚ загрŃзить %1: не ŃдалоŃŃŚ открыть выходной файл: %2 + + + + + + + + + + + + invalid index - Неверный Đ¸Đ˝Đ´ĐµĐşŃ + неверный Đ¸Đ˝Đ´ĐµĐşŃ - + failed to delete %1 - Не ŃдалоŃŃŚ Ńдалить %1 + не ŃдалоŃŃŚ Ńдалить %1 - + failed to delete meta file for %1 - Не ŃдалоŃŃŚ Ńдалить мета файл %1 + не ŃдалоŃŃŚ Ńдалить мета-файл %1 - - - - - - + + + + + invalid index %1 - Неверный Đ¸Đ˝Đ´ĐµĐşŃ %1 + неверный Đ¸Đ˝Đ´ĐµĐşŃ %1 - + Please enter the nexus mod id - Выберите ID мода Ń Nexus + ПожалŃĐąŃта, введите ID мода на Nexus - + Mod ID: ID мода: - invalid alphabetical index %1 - НедейŃтвительный алфавитный Ńказатель %1 - - - + Information updated Đнформация обновлена - - + + No matching file found on Nexus! Maybe this file is no longer available or it was renamed? Нет ŃоответŃтвŃющих модов на Nexus! Возможно фал был Ńдален или переименован? - + No file on Nexus matches the selected file by name. Please manually choose the correct one. Нет ŃоответŃтвŃющих фалов на Nexus. Выберите файл врŃчнŃŃŽ. - + No download server available. Please try again later. Сервер недоŃŃ‚Ńпен. ПопробŃйте позже. - + Failed to request file info from nexus: %1 Не ŃдалоŃŃŚ полŃчить информацию Đľ файле: %1 - + Download failed: %1 (%2) ЗагрŃзка не ŃдалаŃŃŚ: %1 (%2) - + failed to re-open %1 - Не ŃдалоŃŃŚ открыть %1 + не ŃдалоŃŃŚ повторно открыть %1 @@ -720,14 +700,16 @@ p, li { white-space: pre-wrap; } Allow the Steam AppID to be used for this executable to be changed. - РазреŃить Steam AppID. Для иŃпользования иŃполняемый файл бŃдет изменен. + РазреŃить изменение Steam AppID, иŃпользŃемого для этого иŃполняемого файла. Allow the Steam AppID to be used for this executable to be changed. Every game/tool distributed through Steam has a unique ID. MO needs to know this ID to start those programs directly, otherwise the program is started by steam and then MO will not work. By default, MO will use the AppID for the game. Right now the only case I know of where this needs to be overwritten is for the Skyrim Creation Kit which has its own AppID. This overwrite is already preconfigured. - РазреŃить Steam AppID, который бŃдет иŃпользоватьŃŃŹ для изменения иŃполняемого файла. Каждая игра\инŃтрŃмент раcпроŃтраняетŃŃŹ через Steam и имеет Ńникальный ID. MO необходимо знать этот ID, что бы активировать игрŃ\инŃтрŃмент, иначе придетŃŃŹ запŃŃкать через Steam. По Ńмолчанию MO бŃдет иŃпользовать AppID для игры\инŃтрŃмента.Возможны проблемы Ń ID Ńоздаваемыми в Skyrim Creation Kit. + РазреŃить изменение Steam AppID, который бŃдет иŃпользоватьŃŃŹ для иŃполняемого файла. +Каждая игра/инŃтрŃмент раŃпроŃтраняемые через Steam имеют Ńвой Ńникальный ID. MO необходимо знать этот ID для прямого запŃŃка этих программ, иначе они бŃĐ´ŃŃ‚ запŃщены через Steam и MO работать не бŃдет. По Ńмолчанию MO бŃдет иŃпользовать AppID для игры. +Đ’ данный момент единŃтвенный ŃĐ»Ńчай, где это должно быть перезапиŃано это Skyrim Creation Kit, который имеет Ńвой ŃобŃтвенный AppID. Эта замена Ńже предварительно ŃконфигŃрирована. @@ -744,7 +726,9 @@ Right now the only case I know of where this needs to be overwritten is for the Steam AppID to use for this executable that differs from the games AppID. Every game/tool distributed through Steam has a unique ID. MO needs to know this ID to start those programs directly, otherwise the program is started by steam and then MO will not work. By default, MO will use the AppID for the game (usually 72850). Right now the only case I know of where this needs to be overwritten is for the Skyrim Creation Kit which has its own AppID (usually 202480). This overwrite is already preconfigured. - Steam AppID, который бŃдет иŃпользоватьŃŃŹ для изменения иŃполняемого файла. Каждая игра\инŃтрŃмент раcпроŃтраняетŃŃŹ через Steam и имеет Ńникальный ID. MO необходимо знать этот ID, что бы активировать игрŃ\инŃтрŃмент, иначе придетŃŃŹ запŃŃкать через Steam. По Ńмолчанию MO бŃдет иŃпользовать AppID для игры\инŃтрŃмента.Возможны проблемы Ń ID Ńоздаваемыми в Skyrim Creation Kit. + Steam AppID, иŃпользŃемый для этого иŃполняемого файла, отличающийŃŃŹ от AppID Đ´Ń€Ńгих игр. +Каждая игра/инŃтрŃмент раŃпроŃтраняемые через Steam имеют Ńвой Ńникальный ID. MO необходимо знать этот ID для прямого запŃŃка этих программ, иначе они бŃĐ´ŃŃ‚ запŃщены через Steam и MO работать не бŃдет. По Ńмолчанию MO бŃдет иŃпользовать AppID для игры (обычно 72850). +Đ’ данный момент единŃтвенный ŃĐ»Ńчай, где он должен быть перезапиŃан, это для Skyrim Creation Kit, который имеет Ńвой ŃобŃтвенный AppID (обычно 202480). Эта замена Ńже предварительно ŃконфигŃрирована. @@ -794,12 +778,12 @@ Right now the only case I know of where this needs to be overwritten is for the Java (32-bit) required - + ТребŃетŃŃŹ Java (32-bit) MO requires 32-bit java to run this application. If you already have it installed, select javaw.exe from that installation as the binary. - + MO требŃет 32-bit java для запŃŃка этого приложения. Đ•Ńли он Ń Đ˛Đ°Ń Ńже ŃŃтановлен, выберете javaw.exe для этой ŃŃтановки как иŃполняемый файл. @@ -813,8 +797,8 @@ Right now the only case I know of where this needs to be overwritten is for the - Really remove "%1" from executables? - ДейŃтвительно Ńдалить "%1" иŃполняемых? + Really remove "%1" from executables? + ДейŃтвительно Ńдалить "%1" иŃполняемых? @@ -843,7 +827,7 @@ Right now the only case I know of where this needs to be overwritten is for the Search term - ПоиŃĐş терминала + ПоиŃĐş термина @@ -893,8 +877,8 @@ Right now the only case I know of where this needs to be overwritten is for the - <a href="#">Link</a> - <a href="#">ŃŃылка</a> + <a href="#">Link</a> + <a href="#">СŃылка</a> @@ -916,58 +900,6 @@ Right now the only case I know of where this needs to be overwritten is for the Cancel Отмена - - ModuleConfig.xml missing - ModuleConfig.xml отŃŃŃ‚ŃтвŃет - - - failed to parse info.xml: %1 (%2) (line %3, column %4) - не ŃдалоŃŃŚ проанализировать info.xml: %1 (%2) (Ńтрока %3, Ńтолбец %4) - - - unsupported order type %1 - не поддерживаемый тип порядка %1 - - - unsupported group type %1 - не поддерживаемый тип грŃппы %1 - - - This component is required - Этот компонент необходим - - - It is recommended you enable this component - РекомендŃетŃŃŹ включить этот компонент - - - Optional component - Дополнительный компонент - - - This component is not usable in combination with other installed plugins - Этот компонент не может ŃочетатьŃŃŹ Ń Đ´Ń€Ńгими ŃŃтановленными плагинами. - - - You may be experiencing instability in combination with other installed plugins - МогŃŃ‚ наблюдатьŃŃŹ неŃтабильноŃть в Ńочетании Ń Đ´Ń€Ńгими ŃŃтановленными плагинами. - - - None - Ни один - - - Select one or more of these options: - Выберите один или неŃколько из ŃледŃющих вариантов: - - - failed to parse ModuleConfig.xml: %1 - не ŃдаетŃŃŹ проанализировать ModuleConfig.xml: %1 - - - Install - ĐŁŃтановить - InstallDialog @@ -993,7 +925,7 @@ Right now the only case I know of where this needs to be overwritten is for the - Pick a name for the mod. This is also used as a directory name, so please don't use characters that are illegal in file names. + Pick a name for the mod. This is also used as a directory name, so please don't use characters that are illegal in file names. Выбери имя для мода. Это также иŃпользŃетŃŃŹ в качеŃтве имени каталога, поэтомŃ, пожалŃĐąŃта, не иŃпользŃйте Ńимволы, которые запрещены в именах файлов. @@ -1008,16 +940,16 @@ Right now the only case I know of where this needs to be overwritten is for the - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">This displays the content of the archive. &lt;data&gt; represents the base directory which will map to the game's data directory. You can change the base directory via the right-click context menu and you can move around files via drag&amp;drop</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">This displays the content of the archive. &lt;data&gt; represents the base directory which will map to the game's data directory. You can change the base directory via the right-click context menu and you can move around files via drag&amp;drop</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Это показывает Ńодержимое архива. <data> предŃтавляет базовый каталог, в котором бŃĐ´ŃŃ‚ ŃопоŃтавлены Ń Đ´Đ°Đ˝Đ˝Ń‹ĐĽĐ¸ каталога игры. Đ’Ń‹ можете изменить базовый каталог Ń ĐżĐľĐĽĐľŃ‰ŃŚŃŽ правой кнопкой ĐĽŃ‹Ńи через контекŃтное меню, и можете перемещатьŃŃŹ по файлам Ń ĐżĐľĐĽĐľŃ‰ŃŚŃŽ drag&drop.</span></p></body></html> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Отображает Ńодержимое архива. &lt;data&gt; предŃтавляет базовый каталог, данные в котором бŃĐ´ŃŃ‚ ŃопоŃтавлены Ń Đ´Đ°Đ˝Đ˝Ń‹ĐĽĐ¸ каталога игры. Đ’Ń‹ можете изменить базовый каталог нажатием правой кнопки ĐĽŃ‹Ńи, через контекŃтное меню, а также можете перемещатьŃŃŹ по файлам Ń ĐżĐľĐĽĐľŃ‰ŃŚŃŽ drag&amp;drop</span></p></body></html> @@ -1027,59 +959,20 @@ p, li { white-space: pre-wrap; } OK - + OK Cancel Отмена - - Looks good - Выглядит хороŃĐľ - - - No problem detected - Проблем не обнарŃжено - - - No game data on top level - Нет данных игры Ńровнем выŃе - - - There is no esp/esm file or asset directory (textures, meshes, interface, ...) on the top level. - СŃщеŃтвŃющий ESP / ESM файла или каталога не имеет текŃŃ‚Ńры textures, meshes, interface, ... Ńровнем выŃе. - - - Enter a directory name - Введите имя каталога - - - A directory with that name exists - Каталог Ń Ń‚Đ°ĐşĐ¸ĐĽ именем не ŃŃщеŃтвŃет - - - Set data directory - Набор данных каталога - - - Unset data directory - Отключенный каталог данных - - - Create directory... - Создать директорию... - - - &Open - &Открыть - InstallationManager - mo_archive.dll not loaded: "%1" - mo_archive.dll не загрŃжен: "%1" + + archive.dll not loaded: "%1" + archive.dll не загрŃжен: "%1" @@ -1092,158 +985,91 @@ p, li { white-space: pre-wrap; } Пароль - Directory exists - Каталог ŃŃщеŃтвŃет - - - This mod seems to be installed already. Do you want to add files from this archive (overwriting existing ones) or do you want to completely replace the existing files (old files are deleted)? - Этот мод, кажетŃŃŹ, Ńже ŃŃтановлен. Đ’Ń‹ хотите перезапиŃать ŃŃщеŃтвŃющие или вы хотите полноŃтью заменить ŃŃщеŃтвŃющие файлы (Ńтарые файлы ŃдаляютŃŃŹ)? - - - Add Files - Добавить файлы - - - Replace - Заменить - - - - - + + + Extracting files Đзвлечение файлов - Preparing installer - Подготовка Đş ŃŃтановке - - - Installation as fomod failed: %1 - ĐŁŃтановка в fomod не ŃдалаŃŃŚ: %1 - - - failed to start %1 - Не ŃдалоŃŃŚ начать %1 - - - Running external installer. -Note: This installer will not be aware of other installed mods! - ЗапŃŃĐş внеŃней ŃŃтановки. -Внимание: ДрŃгих запŃщенных программ ŃŃтановки не должно быть! - - - Force Close - Закрыть принŃдительно - - - Confirm - Подтвердить - - - installation failed (errorcode %1) - ĐŁŃтановка не ŃдалаŃŃŚ (errorcode %1) - - - - File format "%1" not supported - Формат файла "%1" не поддерживаетŃŃŹ - - - failed to open archive "%1": %2 - Не ŃдалоŃŃŚ открыть архив "%1": %2 - - - - archive.dll not loaded: "%1" - - - - + failed to create backup - + не ŃдалоŃŃŚ Ńоздать резервнŃŃŽ копию - + Mod Name - + ĐĐĽŃŹ мода - + Name ĐĐĽŃŹ - + Invalid name - + НедопŃŃтимое имя - + The name you entered is invalid, please enter a different one. - - - - Installer missing - ĐŁŃтановщик отŃŃŃ‚ŃтвŃет - - - This package contains a scripted installer. To use this installer you need the optional "NCC"-package and the .net runtime. Do you want to continue, treating this as a manual installer? - Этот пакет Ńодержит Ńценарии ŃŃтановки. Для иŃпользования этой ŃŃтановки необходимо дополнительно «NCC» пакет и .net runtime. Đ’Ń‹ хотите иŃпользовать это в качеŃтве ŃŃтановки? + Введенное вами имя недопŃŃтимо, пожалŃĐąŃта введите Đ´Ń€Ńгое. - Please install NCC - ĐŁŃтановите NCC + + File format "%1" not supported + Формат файла "%1" не поддерживаетŃŃŹ - + None of the available installer plugins were able to handle that archive - + Не один из Đ´ĐľŃŃ‚Ńпных плагинов-ŃŃтановщиков не Ńмог проŃмотреть этот архив - + no error - ĐžŃибки отŃŃŃ‚ŃтвŃŃŽŃ‚ + ĐľŃибки отŃŃŃ‚ŃтвŃŃŽŃ‚ - + 7z.dll not found 7z.dll не найден - - 7z.dll isn't valid + + 7z.dll isn't valid 7z.dll поврежден - + archive not found - Đрхив не найден + архив не найден - + failed to open archive - ĐžŃибка открытия архива + не ŃдалоŃŃŚ открыть архив - + unsupported archive type - Не поддерживаемый тип архива + не поддерживаемый тип архива - + internal library error - Đ’Đ˝Ńтренняя ĐľŃибка библиотеки + внŃтренняя ĐľŃибка библиотеки - + archive invalid - Đрхив поврежден + архив поврежден - + unknown archive error - НеизвеŃтная ĐľŃибка архива + неизвеŃтная ĐľŃибка архива @@ -1255,8 +1081,8 @@ Note: This installer will not be aware of other installed mods! - This dialog should disappear automatically if the application/game is done. Click unlock if it didn't. - Это окно должно закрытьŃŃŹ автоматичеŃки еŃли игра запŃщена. Нажмите ĐşĐ˝ĐľĐżĐşŃ "Разблокировать" еŃли этого не произоŃло. + This dialog should disappear automatically if the application/game is done. Click unlock if it didn't. + Этот диалог должен закрытьŃŃŹ автоматичеŃки еŃли игра/приложение запŃщены. Нажмите разблокировать, еŃли этого не произоŃло. @@ -1274,7 +1100,7 @@ Note: This installer will not be aware of other installed mods! failed to write log to %1: %2 - Не ŃдалоŃŃŚ произвеŃти запиŃŃŚ в жŃрнал %1: %2 + не ŃдалоŃŃŚ произвеŃти запиŃŃŚ в жŃрнал %1: %2 @@ -1282,12 +1108,12 @@ Note: This installer will not be aware of other installed mods! an error occured: %1 - + произоŃла ĐľŃибка: %1 an error occured - + произоŃла ĐľŃибка @@ -1301,148 +1127,169 @@ Note: This installer will not be aware of other installed mods! Profile - + Профиль Pick a module collection - + Выберете набор модŃлей - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Create profiles here. Each profile contains its own list of active mods and esps. This way you can quickly switch between setups for different play throughs.</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Please note that right now your esp load order is not kept seperate for different profiles.</span></p></body></html> - +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Create profiles here. Each profile contains its own list of active mods and esps. This way you can quickly switch between setups for different play throughs.</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Please note that right now your esp load order is not kept seperate for different profiles.</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Создать профили здеŃŃŚ. Каждый профиль включает Ńвой ŃобŃтвенный ŃпиŃок активных модов и esp. Таким образом, вы можете быŃтро переключатьŃŃŹ ĐĽĐµĐ¶Đ´Ń ŃŃтановками для различных прохождений игры.</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Обратите внимание, что порядок загрŃзки esp одинаков для вŃех профилей.</span></p></body></html> Refresh list - + Обновить ŃпиŃок Refresh list. This is usually not necessary unless you modified data outside the program. - + Обновить ŃпиŃок. Обычно в этом нет необходимоŃти, пока вы не измените данные вне программы. List of available mods. - + СпиŃок Đ´ĐľŃŃ‚Ńпных модов. - This is a list of installed mods. Use the checkboxes to activate/deactivate mods and drag & drop mods to change their "installation" orders. - + This is a list of installed mods. Use the checkboxes to activate/deactivate mods and drag & drop mods to change their "installation" orders. + Это ŃпиŃок ŃŃтановленных модов. ĐŃпользŃйте флажки, для включения/отключения модов и перетаŃкивание модов, для изменения их порядка ŃŃтановки. Filter - + Фильтр No groups - + Без грŃппировки Nexus IDs - Nexus IDs + Nexus IDs - + Namefilter - + Фильтр по имени Pick a program to run. - + Выберете ĐżŃ€ĐľĐłŃ€Đ°ĐĽĐĽŃ Đ´Đ»ŃŹ запŃŃка. - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Choose the program to run. Once you start using ModOrganizer, you should always run your game and tools from here or through shortcuts created here, otherwise mods installed through MO will not be visible.</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">You can add new Tools to this list, but I can't promise tools I haven't tested will work.</span></p></body></html> - +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Choose the program to run. Once you start using ModOrganizer, you should always run your game and tools from here or through shortcuts created here, otherwise mods installed through MO will not be visible.</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">You can add new Tools to this list, but I can't promise tools I haven't tested will work.</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Выберете ĐżŃ€ĐľĐłŃ€Đ°ĐĽĐĽŃ Đ´Đ»ŃŹ запŃŃка. Как только вы начинаете иŃпользовать ModOrganizer, вы вŃегда должны запŃŃкать игры и инŃтрŃменты из него или через Ńозданные в нем ярлыки, в противном ŃĐ»Ńчае, ŃŃтановленные через MO моды отображатьŃŃŹ не бŃĐ´ŃŃ‚.</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Đ’Ń‹ можете добавить новые инŃтрŃменты в этот ŃпиŃок, но работоŃпоŃобноŃть их вŃех не гарантированна.</span></p></body></html> Run program - + ЗапŃŃтить ĐżŃ€ĐľĐłŃ€Đ°ĐĽĐĽŃ - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Run the selected program with ModOrganizer enabled.</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Run the selected program with ModOrganizer enabled.</span></p></body></html> - +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">ЗапŃŃтить выбраннŃŃŽ ĐżŃ€ĐľĐłŃ€Đ°ĐĽĐĽŃ Ń ĐżĐľĐ´Đ´ĐµŃ€Đ¶ĐşĐľĐą ModOrganizer.</span></p></body></html> Run - + ЗапŃŃтить Create a shortcut in your start menu or on the desktop to the specified program - + Создать ярлык для выбранной программы, в меню ĐźŃŃĐş или на рабочем Ńтоле. - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">This creates a start menu shortcut that directly starts the selected program with the MO active.</span></p></body></html> - +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">This creates a start menu shortcut that directly starts the selected program with the MO active.</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Создает ярлык в меню ĐźŃŃĐş, который запŃŃкает выбраннŃŃŽ ĐżŃ€ĐľĐłŃ€Đ°ĐĽĐĽŃ Ń Đ°ĐşŃ‚Đ¸Đ˛Đ˝Ń‹ĐĽ MO.</span></p></body></html> Shortcut - - - - Save - Сохранить + Ярлык List of available esp/esm files - + СпиŃок Đ´ĐľŃŃ‚Ńпных esp/esm файлов - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">This list contains the esps and esms contained in the active mods. These require their own load order. Use drag&amp;drop to modify this load order. Please note that MO will only save the load order for mods that are active/checked.<br />There is a great tool named &quot;BOSS&quot; to automatically sort these files.</span></p></body></html> - +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">This list contains the esps and esms contained in the active mods. These require their own load order. Use drag&amp;drop to modify this load order. Please note that MO will only save the load order for mods that are active/checked.<br />There is a great tool named &quot;BOSS&quot; to automatically sort these files.</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Этот ŃпиŃок Ńодержит esp и esm файлы активных модов. Для них требŃетŃŃŹ определенный порядок загрŃзки. ĐŃпользŃйте перетаŃкивание для изменения порядка загрŃзки. Обратите внимание, что MO Ńохранит порядок загрŃзки только для активными/проверенных модов.<br />СŃщеŃтвŃет замечательная Ńтилита, называющаяŃŃŹ &quot;BOSS&quot; , которая автоматичеŃки ŃортирŃет эти файлы.</span></p></body></html> List of available BS Archives. Archives not checked here are not managed by MO and ignore installation order. - + СпиŃок Đ´ĐľŃŃ‚Ńпных BSA. Они не отмечены здеŃŃŚ, не ŃправляютŃŃŹ Ń ĐżĐľĐĽĐľŃ‰ŃŚŃŽ MO и игнорирŃŃŽŃ‚ порядок ŃŃтановки. - BSA files are archives (comparable to .zip files) that contain data assets (meshes, textures, ...) to be used by the game. As such they "compete" with loose files in your data directory over which is loaded. + BSA files are archives (comparable to .zip files) that contain data assets (meshes, textures, ...) to be used by the game. As such they "compete" with loose files in your data directory over which is loaded. By default, BSAs that share their base name with an enabled ESP (i.e. plugin.esp and plugin.bsa) are automatically loaded and will have precedence over all loose files, the installation order you set up to the left is then ignored! BSAs checked here are loaded in such a way that your installation order is obeyed properly. - + BSA файлы - архивы (ŃопоŃтавимы Ń Ń„Đ°ĐąĐ»Đ°ĐĽĐ¸ .zip) которые Ńодержат иŃпользŃемые игрой данные (meshes, textures, ...). Как таковые они "конкŃрирŃŃŽŃ‚" Ń ĐľŃ‚Đ´ĐµĐ»ŃŚĐ˝Ń‹ĐĽĐ¸ файлами в папке Data, поверх которых загрŃжены. +По Ńмолчанию, BSA, Ń ĐşĐľŃ‚ĐľŃ€Ń‹Ń… имя Ńовпадает Ń Đ¸ĐĽĐµĐ˝ĐµĐĽ ESP (Ń‚.е. plugin.esp и plugin.bsa) бŃĐ´ŃŃ‚ автоматичеŃки загрŃжены и бŃĐ´ŃŃ‚ иметь приоритет над вŃеми отдельными файлами и ŃŃтановленный вами Ńлева порядок ŃŃтановки бŃдет проигнорирован! + +BSA, отмеченные здеŃŃŚ, загрŃжаютŃŃŹ так, чтобы порядок ŃŃтановки ŃоблюдалŃŃŹ должным образом. @@ -1458,1030 +1305,1035 @@ BSAs checked here are loaded in such a way that your installation order is obeye - <html><head/><body><p>Marked Archives (<img src=":/MO/gui/resources/dialog-warning_16.png"/>) are still loaded on Skyrim but the <a href="http://forums.bethsoft.com/topic/1354395-update-bsas-and-you/"><span style=" text-decoration: underline; color:#0000ff;">regular file override</span></a> mechanism will apply: Loose files override BSAs, no matter the mod/plugin priority.</p></body></html> - + <html><head/><body><p>Marked Archives (<img src=":/MO/gui/resources/dialog-warning_16.png"/>) are still loaded on Skyrim but the <a href="http://forums.bethsoft.com/topic/1354395-update-bsas-and-you/"><span style=" text-decoration: underline; color:#0000ff;">regular file override</span></a> mechanism will apply: Loose files override BSAs, no matter the mod/plugin priority.</p></body></html> + <html><head/><body><p>Помеченые архивы (<img src=":/MO/gui/resources/dialog-warning_16.png"/>) вŃе еще загрŃжаютŃŃŹ в Skyrim, но <a href="http://forums.bethsoft.com/topic/1354395-update-bsas-and-you/"><span style=" text-decoration: underline; color:#0000ff;">применяетŃŃŹ обычный</span></a> механизм: Отдельные файлы перезапиŃывают BSAs, вне завиŃимоŃти от приоритета мода/плагина.</p></body></html> Data - + Данные refresh data-directory overview - + обновить обзор каталога Data Refresh the overview. This may take a moment. - + Обновление обзора. Это может занять некоторое время. - - + + Refresh - + Обновить This is an overview of your data directory as visible to the game (and tools). - + Это обзор ваŃего каталога данных так, как он бŃдет видим игре (и инŃтрŃментам). Filter the above list so that only conflicts are displayed. - + Отфильтровать выŃеприведенный ŃпиŃок так, чтобы отображалиŃŃŚ только конфликты. Show only conflicts - + Показать только конфликты Saves - + Сохранения - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">This is a list of all savegames for this game. Hover over a list entry to get detailed information about the save including a list of esps/esms that were used at the time this save was created but aren't active now.</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">If you click &quot;Fix Mods...&quot; in the context menu, MO will try to activate all mods and esps to fix those missing esps. It will not disable anything!</span></p></body></html> - +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">This is a list of all savegames for this game. Hover over a list entry to get detailed information about the save including a list of esps/esms that were used at the time this save was created but aren't active now.</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">If you click &quot;Fix Mods...&quot; in the context menu, MO will try to activate all mods and esps to fix those missing esps. It will not disable anything!</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">СпиŃок вŃех Ńохранений игры. Наведите Ńказатель ĐĽŃ‹Ńи на элемент ŃпиŃка, чтобы полŃчить подробнŃŃŽ информацию Đľ Ńохранении, включающем ŃпиŃок esp/esm, которые иŃпользовалиŃŃŚ во время Ńоздания Ńохранения, но не активны в наŃтоящее время.</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Đ•Ńли вы выберете в контекŃтном меню ĐżŃнкт &quot;ĐŃправить моды...&quot;, MO попытаетŃŃŹ подключить вŃе моды и esp, чтобы иŃправить эти отŃŃŃ‚ŃтвŃющие esp. Это ничего не отключит!</span></p></body></html> Downloads - + ЗагрŃзки This is a list of mods you downloaded from Nexus. Double click one to install it. - + СпиŃок модов, загрŃженных Ń Nexus. Двойной клик для ŃŃтановки. - + Compact - + Упаковать - + Tool Bar - + Панель инŃтрŃментов - + Install Mod - + ĐŁŃтановить мод - + Install &Mod - + ĐŁŃтановить &мод - + Install a new mod from an archive - + ĐŁŃтановить новый мод из архива - + Ctrl+M - + Ctrl+M - + Profiles - + Профили - + &Profiles - + &Профили - + Configure Profiles - + НаŃтройка профилей - + Ctrl+P - + Ctrl+P - + Executables - + Программы - + &Executables - + &Программы - + Configure the executables that can be started through Mod Organizer - + НаŃтройка программ, которые могŃŃ‚ быть запŃщены через Mod Organizer - + Ctrl+E - + Ctrl+E + - Tools - + ĐĐ˝ŃтрŃменты - + &Tools - + &ĐĐ˝ŃтрŃменты - + Ctrl+I - + Ctrl+I - + Settings - + НаŃтройки - + &Settings - + &НаŃтройки - + Configure settings and workarounds - + НаŃтройка параметров и ŃпоŃобов обхода - + Ctrl+S - + Ctrl+S - + Nexus - + Nexus - + Search nexus network for more mods - + ПоиŃĐş дополнительных модов на Nexus - + Ctrl+N - + Ctrl+N - - + + Update - + Обновление - + Mod Organizer is up-to-date - + Mod Organizer обновлен - - + + No Problems - + Проблем не обнарŃжено - + This button will be highlighted if MO discovered potential problems in your setup and provide tips on how to fix them. !Work in progress! Right now this has very limited functionality - + Эта кнопка бŃдет подŃвечена, еŃли MO обнарŃĐ» возможные проблемы в ваŃей ŃŃтановке и имеютŃŃŹ Ńоветы по их иŃправлению. + +!Đ’ разработке! +Прямо ŃĐµĐąŃ‡Đ°Ń ŃŤŃ‚ĐľŃ‚ Ń„Ńнкционал Ńильно ограничен - - + + Help - + Справка - + Ctrl+H - + Ctrl+H - + Endorse MO - + Одобрить MO - - + + Endorse Mod Organizer - + Одобрить Mod Organizer - + Toolbar - + Панель инŃтрŃментов - + Desktop - + Рабочий Ńтол - + Start Menu - + Меню ĐźŃŃĐş - + Problems - + Проблемы - + There are potential problems with your setup - + Đ•Ńть возможные проблемы Ń Đ˛Đ°Ńей ŃŃтановкой - + Everything seems to be in order - + КажетŃŃŹ вŃŃ‘ в порядке - + Help on UI - + Справка по интерфейŃŃ - + Documentation Wiki - + Wiki-докŃментация - + Report Issue - + Сообщить Đľ проблеме - + Tutorials - + Уроки - - failed to save load order: %1 - + + failed to save archives order, do you have write access to "%1"? + не ŃдалоŃŃŚ Ńохранить порядок архивов, Ń Đ˛Đ°Ń Đ¸ĐĽĐµĐµŃ‚ŃŃŹ Đ´ĐľŃŃ‚ŃĐż на запиŃŃŚ Đş "%1"? - - failed to save archives order, do you have write access to "%1"? - + + failed to save load order: %1 + не ŃдалоŃŃŚ Ńохранить порядок загрŃзки: %1 - + Name ĐĐĽŃŹ - + Please enter a name for the new profile - + Введите имя нового профиля - + failed to create profile: %1 - + не ŃдалоŃŃŚ Ńоздать профиль: %1 - + Show tutorial? - + Показать Ńрок? - - You are starting Mod Organizer for the first time. Do you want to show a tutorial of its basic features? If you choose no you can always start the tutorial from the "Help"-menu. - + + You are starting Mod Organizer for the first time. Do you want to show a tutorial of its basic features? If you choose no you can always start the tutorial from the "Help"-menu. + Đ’Ń‹ запŃŃтили Mod Organizer впервые. Đ’Ń‹ хотите проŃмотреть Ńроки по ĐľŃновным возможноŃтям? Đ’ ŃĐ»Ńчае отказа вы вŃегда можете открыть Ńроки из меню "Помощь". - + Downloads in progress - + ЗагрŃзки в процеŃŃе - + There are still downloads in progress, do you really want to quit? - + ЗагрŃзки вŃŃ‘ ещё в процеŃŃе, вы правда хотите выйти? - + failed to read savegame: %1 - + не ŃдалоŃŃŚ прочеŃть Ńохранение: %1 + + + + Plugin "%1" failed: %2 + Плагин "%1" не ŃдалоŃŃŚ: %2 - - Plugin "%1" failed: %2 - + + Plugin "%1" failed + Плагин "%1" не ŃдалоŃŃŚ - - Failed to start "%1" - + + failed to init plugin %1: %2 + не ŃдалоŃŃŚ инициализировать плагин %1: %2 + + + + Failed to start "%1" + Не ŃдалоŃŃŚ запŃŃтить "%1" - + Waiting - + Ожидание - - Please press OK once you're logged into steam. - + + Please press OK once you're logged into steam. + Нажмите OK как только вы войдете в Steam. - - "%1" not found - + + "%1" not found + "%1" не найден - + Start Steam? - + ЗапŃŃтить Steam? - + Steam is required to be running already to correctly start the game. Should MO try to start steam now? - + ТребŃетŃŃŹ запŃщенный Steam, для корректного запŃŃка игры. Должен ли MO попытатьŃŃŹ запŃŃтить Steam ŃейчаŃ? - + Also in: <br> - + Также в: <br> - + No conflict - + Конфликтов нет - + <Edit...> - + <Правка...> - + This bsa is enabled in the ini file so it may be required! - + Этот bsa подключен через ini, так что он может быть необходим! - + This archive will still be loaded since there is a plugin of the same name but its files will not follow installation order! - + Этот архив вŃе равно бŃдет загрŃжен, так как еŃть плагин Ń ĐľĐ´Đ˝ĐľĐ¸ĐĽĐµĐ˝Đ˝Ń‹ĐĽ названием, но его файлы не бŃĐ´ŃŃ‚ Ńледовать ĐżĐľŃ€ŃŹĐ´ĐşŃ ŃŃтановки! - + Activating Network Proxy - + Подключение Ńетевого прокŃи - - + + Installation successful - + ĐŁŃтановка заверŃена - - + + Configure Mod - + НаŃтройка мода - - + + This mod contains ini tweaks. Do you want to configure them now? - + Этот мод включает наŃтройки ini. Đ’Ń‹ хотите наŃтроить их ŃейчаŃ? - - - mod "%1" not found - + + + mod "%1" not found + мод "%1" не найден - - + + Installation cancelled - + ĐŁŃтановка отменена - - + + The mod was not installed completely. - + Мод не был ŃŃтановлен полноŃтью. - + Some plugins could not be loaded - + Некоторые плагины не могŃŃ‚ быть загрŃжены - + The following Plugins could not be loaded. The reason may be missing dependencies (i.e. python) or an outdated version:<ul> - + СледŃющие плагины не могŃŃ‚ быть загрŃжены. Причина может быть в отŃŃŃ‚ŃтвŃющих завиŃимоŃтях (таких как python) или в ŃŃтаревŃей верŃии:<ul> - + Choose Mod - + Выберете мод - + Mod Archive - + Đрхив мода - + Start Tutorial? - + Начать обŃчение? - - You're about to start a tutorial. For technical reasons it's not possible to end the tutorial early. Continue? - + + You're about to start a tutorial. For technical reasons it's not possible to end the tutorial early. Continue? + Đ’Ń‹ ŃобираетеŃŃŚ открыть обŃчение. По техничеŃким причинам бŃдет невозможно Đ´ĐľŃрочно закончить обŃчение. Продолжить? - - + + Download started - + ЗагрŃзка начата - + failed to update mod list: %1 - + не ŃдалоŃŃŚ обновить ŃпиŃок модов: %1 - + failed to spawn notepad.exe: %1 - + не ŃдалоŃŃŚ вызвать notepad.exe: %1 - + failed to open %1 - + не ŃдалоŃŃŚ открыть %1 - + failed to change origin name: %1 - - - - - Multiple esps activated, please check that they don't conflict. - + не ŃдалоŃŃŚ изменить оригинальное имя: %1 - - - Create Mod... - - - - - This will move all files from overwrite into a new, regular mod. -Please enter a name: - - - - - A mod with this name already exists - - - - - <All> - - - - + <Checked> - - - - - Plugin "%1" failed - + <Подключен> - - failed to init plugin %1: %2 - - - - - - Description missing - - - - + <Unchecked> - + <Отключен> - + <Update> - + <Обновлен> - + <No category> - + <Без категории> - + <Conflicted> - + <КонфликтŃет> - + failed to rename mod: %1 - + не ŃдалоŃŃŚ переименовать мод: %1 - + Overwrite? - + ПерезапиŃать? - - This will replace the existing mod "%1". Continue? - + + This will replace the existing mod "%1". Continue? + Это заменит ŃŃщеŃтвŃющий мод "%1". Продолжить? - - failed to remove mod "%1" - + + failed to remove mod "%1" + не ŃдалоŃŃŚ Ńдалить мод "%1" - - - - failed to rename "%1" to "%2" - Не ŃдалоŃŃŚ переименовать "%1" в "%2" + + + + failed to rename "%1" to "%2" + не ŃдалоŃŃŚ переименовать "%1" в "%2" - - - + + Multiple esps activated, please check that they don't conflict. + Подключено неŃколько esp, выберете из них не конфликтŃющие. + + + + + Confirm - Подтвердить + Подтверждение - + Remove the following mods?<br><ul>%1</ul> - + Удалить ŃледŃющие моды?<br><ul>%1</ul> - + failed to remove mod: %1 - + не ŃдалоŃŃŚ Ńдалить мод: %1 - - + + Failed - + НеŃдача - + Installation file no longer exists - + ĐŁŃтановочный файл больŃе не ŃŃщеŃтвŃет - - Mods installed with old versions of MO can't be reinstalled in this way. - + + Mods installed with old versions of MO can't be reinstalled in this way. + Моды, ŃŃтановленные Ń Đ¸Ńпользованием Ńтарых верŃий MO не могŃŃ‚ быть переŃтановленны таким образом. - - + + You need to be logged in with Nexus to endorse - + Đ’Ń‹ должны быть авторизированы на Nexus, чтобы одобрять. - - + + Extract BSA - + Đзвлечь BSA - + This mod contains at least one BSA. Do you want to unpack it? -(This removes the BSA after completion. If you don't know about BSAs, just select no) - +(This removes the BSA after completion. If you don't know about BSAs, just select no) + Этот мод включает как минимŃĐĽ один BSA. Đ’Ń‹ хотите раŃпаковать их? +(Это Ńдалит BSA поŃле заверŃения. Đ•Ńли вы не знаете ничего Đľ BSAs, проŃто откажитеŃŃŚ) - - - + + + failed to read %1: %2 - Не ŃдалоŃŃŚ прочитать %1: %2 + не ŃдалоŃŃŚ прочеŃть %1: %2 - - + + This archive contains invalid hashes. Some files may be broken. - + Đрхив Ńодержит неверные хеŃи. Некоторые файлы могŃŃ‚ быть иŃпорчены. - + Nexus ID for this Mod is unknown - + Nexus ID для этого мода неизвеŃтен + + + + + Create Mod... + Создать мод... + + + + This will move all files from overwrite into a new, regular mod. +Please enter a name: + Это перемеŃтит вŃе файлы от перезапиŃи в новый, отдельный мод. +ПожалŃĐąŃта, введите имя: + + + + A mod with this name already exists + Мод Ń Ń‚Đ°ĐşĐ¸ĐĽ именем Ńже ŃŃщеŃтвŃет - + Really enable all visible mods? - + ДейŃтвительно подключить вŃе видимые моды? - + Really disable all visible mods? - + ДейŃтвительно отключить вŃе видимые моды? - + Choose what to export - + Выберете, что ŃŤĐşŃпортировать - + Everything - + Đ’ŃŃ‘ - + All installed mods are included in the list - + Đ’Ńе ŃŃтановленные моды, включенные в ŃпиŃок - + Active Mods - + Đктивные моды - + Only active (checked) mods from your current profile are included - + Включены вŃе активные (подключенные) моды ваŃего текŃщего профиля - + Visible - + Видимые - + All mods visible in the mod list are included - + Включены вŃе моды, видимые в ŃпиŃке модов - + export failed: %1 - + ŃŤĐşŃпорт не ŃдалŃŃŹ: %1 - + Install Mod... - + ĐŁŃтановить мод... - + Enable all visible - + Включить вŃе видимые - + Disable all visible - + Отключить вŃе видимые - + Check all for update - + Проверить вŃе на обновления - + Export to csv... - + Đ­ĐşŃпорт в csv... - + Sync to Mods... - + Синхронизировать Ń ĐĽĐľĐ´Đ°ĐĽĐ¸... - + Restore Backup - + Đ’ĐľŃŃтановить из резервной копии - + Remove Backup... - + Удалить резервнŃŃŽ копию... - + Set Category - + Задать категорию - + Primary Category - + ĐžŃновная категория - + Rename Mod... - + Переименовать мод... - + Remove Mod... - + Удалить мод... - + Reinstall Mod - + ПереŃŃтановить мод - + Un-Endorse - + Отменить одобрение - - + + Endorse - + Одобрить - - Won't endorse - + + Won't endorse + Не одобрять - + Endorsement state unknown - + СтатŃŃ ĐľĐ´ĐľĐ±Ń€ĐµĐ˝Đ¸ŃŹ неизвеŃтен - + Ignore missing data - + Đгнорировать отŃŃŃ‚ŃтвŃющие данные - + Visit on Nexus - + Перейти на Nexus - + Open in explorer - + Открыть в проводнике - + Information... - + Đнформация... - - + + Exception: - + ĐŃключение: - - + + Unknown exception - + НеизвеŃтное иŃключение - + + <All> + <Đ’Ńе> + + + <Multiple> - + <НеŃколько> - + Fix Mods... - + ĐŃправить моды... - - + + failed to remove %1 - + не ŃдалоŃŃŚ Ńдалить %1 - - + + failed to create %1 - + не ŃдалоŃŃŚ Ńоздать %1 - - Can't change download directory while downloads are in progress! - + + Can't change download directory while downloads are in progress! + Нельзя изменить каталог для загрŃзок, когда загрŃзки ещё не заверŃены! - + Download failed - + ЗагрŃзка не ŃдалаŃŃŚ - + failed to write to file %1 - + ĐľŃибка запиŃи в файл %1 - + %1 written - + %1 запиŃан - + Select binary - + Выбрать иŃполняемый файл - + Binary - Двоичный + ĐŃполняемый файл - + Enter Name - + Введите имя - + Please enter a name for the executable - + Введите название для программы - + Not an executable - + Не являетŃŃŹ иŃполняемым - + This is not a recognized executable. - + Это неверный иŃполняемый файл. - - + + Replace file? - + Заменить файл? - + There already is a hidden version of this file. Replace it? - + Уже ŃŃщеŃтвŃет Ńкрытая верŃия этого файла. Заменить? - - + + File operation failed - + Операция Ń Ń„Đ°ĐąĐ»ĐľĐĽ не ŃдалаŃŃŚ - - - Failed to remove "%1". Maybe you lack the required file permissions? - + + + Failed to remove "%1". Maybe you lack the required file permissions? + Не ŃдалоŃŃŚ Ńдалить "%1". Может быть, вам не хватает необходимых прав Đ´ĐľŃŃ‚Ńпа Đş файлŃ? - + There already is a visible version of this file. Replace it? - + Видимая верŃия этого файла Ńже ŃŃщеŃтвŃет. Заменить? - + Update available - + ДоŃŃ‚Ńпно обновление - + Open/Execute - + Открыть/Выполнить - + Add as Executable - + Добавить как иŃполняемый - + Un-Hide - + Показать - + Hide - + Скрыть - + Write To File... - + ЗапиŃать в файл... - + Do you want to endorse Mod Organizer on %1 now? - + Đ’Ń‹ хотите одобрить Mod Organizer на %1 ŃейчаŃ? - - Unlock load order - - - - - Lock load order - - - - + Request to Nexus failed: %1 - + Đ—Đ°ĐżŃ€ĐľŃ Đ˝Đ° Nexus не ŃдалŃŃŹ: %1 - - + + login successful - + ŃŃпеŃный вход - + login failed: %1. Trying to download anyway - + вход не ŃдалŃŃŹ: %1. ПытаюŃŃŚ загрŃзить вŃŃ‘ равно - + login failed: %1 - + войти не ŃдалоŃŃŚ: %1 - + login failed: %1. You need to log-in with Nexus to update MO. - + войти не ŃдалоŃŃŚ: %1. Вам Đ˝Ńжно войти на Nexus, чтобы обновить MO. - + Error - + ĐžŃибка - + failed to extract %1 (errorcode %2) - + не ŃдалоŃŃŚ извлечь %1 (код ĐľŃибки %2) - + Extract... - + РаŃпаковка... - + Edit Categories... - + Đзменить категории... - + Enable all - + Включить вŃе - + Disable all - + Отключить вŃе + + + + Unlock load order + Разблокировать порядок загрŃзки + + + + Lock load order + Заблокировать порядок загрŃзки @@ -2492,10 +2344,6 @@ Please enter a name: Placeholder Заполнитель - - Please install NCC - ĐŁŃтановите NCC - ModInfo @@ -2503,11 +2351,7 @@ Please enter a name: invalid index %1 - Неверный Đ¸Đ˝Đ´ĐµĐşŃ %1 - - - invalid mod id %1 - неверный ID мода %1 + неверный Đ¸Đ˝Đ´ĐµĐşŃ %1 @@ -2515,7 +2359,7 @@ Please enter a name: This is the backup of a mod - + Это резервная копия мода @@ -2538,7 +2382,7 @@ Please enter a name: A list of text-files in the mod directory like readmes. - СпиŃок текŃтовых файлов в каталоге мода, ознакомительных. + СпиŃок текŃтовых файлов в каталоге мода, таких как ридми. @@ -2554,7 +2398,7 @@ Please enter a name: This is a list of .ini files in the mod. - Это ŃпиŃок INI - фалов мода. + Это ŃпиŃок .ini-файлов мода. @@ -2583,16 +2427,16 @@ Please enter a name: - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">This lists all the images (.jpg and .png) in the mod directory, like screenshots and such. Click one to get a larger view.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">This lists all the images (.jpg and .png) in the mod directory, like screenshots and such. Click one to get a larger view.</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Это ŃпиŃок вŃех изображений (. JPG и. PNG) в каталоге мода, такие как ŃкринŃоты и Ń‚.Đż. Нажмите на один из них, что бы Ńвеличить.</span></p></body></html> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Это ŃпиŃок вŃех изображений (.jpg и .png) в каталоге мода, таких как ŃкринŃоты и Ń‚.Đż. Нажмите на любое, для Ńвеличения.</span></p></body></html> @@ -2603,26 +2447,26 @@ p, li { white-space: pre-wrap; } List of esps and esms that can not be loaded by the game. - СпиŃок ESP и ESM которые не могŃŃ‚ быть включены в игрŃ. + СпиŃок esp и esm, которые не могŃŃ‚ быть загрŃжены игрой. - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">List of esps and esms contained in this plugin that currently can not be loaded by the game. They will not even appear in the esp-list in the main MO-window.</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">They usually contain optional functionality, see the readme.</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Most mods do not have optional esps, so chances are good you are looking at an empty list.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">List of esps and esms contained in this plugin that currently can not be loaded by the game. They will not even appear in the esp-list in the main MO-window.</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">They usually contain optional functionality, see the readme.</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Most mods do not have optional esps, so chances are good you are looking at an empty list.</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">СпиŃок ESP и ESM Ńодержащие в паллагине, которые не могŃŃ‚ быть включены в игрŃ. они так же не бŃĐ´ŃŃ‚ отображены в ŃпиŃке ESP и ESM мода.</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Они обычно Ńодержат дополнительные Ń„Ńнкции. См. ReadME.</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">БольŃинŃтво модов не имеют дополнительные ESP. ĐźĐľŃŤŃ‚ĐľĐĽŃ Đ˛Ń‹ можете Ńвидеть ĐżŃŃтой ŃпиŃок</span></p></body></html> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">СпиŃок esp и esm, ŃодержащихŃŃŹ в плагине, которые не могŃŃ‚ быть загрŃжены в игрŃ. Они так же не бŃĐ´ŃŃ‚ отображены в ŃпиŃке esp, в главном окне MO.</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Они обычно Ńодержат опциональный Ń„Ńнкционал, Ńмотрите докŃментацию.</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">БольŃинŃтво модов не Ńодержат дополнительных esp, ĐżĐľŃŤŃ‚ĐľĐĽŃ Đ˛Ń‹ можете Ńвидеть ĐżŃŃтой ŃпиŃок</span></p></body></html> @@ -2631,8 +2475,8 @@ p, li { white-space: pre-wrap; } - The selected esp (in the lower list) will be pushed into a subdirectory of the mod and will thus become "invisible" to the game. It can then no longer be activated. - Выбранный ESP (в нижнем ŃпиŃке) бŃдет перемещены в подкаталог мода и, таким образом, ŃтанŃŃ‚ "невидимыми" для игры. Затем они больŃе не бŃĐ´ŃŃ‚ активированы. + The selected esp (in the lower list) will be pushed into a subdirectory of the mod and will thus become "invisible" to the game. It can then no longer be activated. + Выбранный ESP (в нижнем ŃпиŃке) бŃдет перемещены в подкаталог мода и, таким образом, ŃтанŃŃ‚ "невидимыми" для игры. Затем они больŃе не бŃĐ´ŃŃ‚ активированы. @@ -2641,8 +2485,8 @@ p, li { white-space: pre-wrap; } - This moves a esp to the esp directory so it can be enabled in the main window. Please note that the ESP merely becomes "available", it will not necessarily be loaded! That is configured in the main window of omo. - Перемещает ESP в каталог Data. Он может быть включен в главном окне. Обратите внимание, что ESP проŃто ŃтановитŃŃŹ "Đ´ĐľŃŃ‚Ńпным", это не обязательно бŃдет включен! Это наŃтраиваетŃŃŹ в главном окне OMO. + This moves a esp to the esp directory so it can be enabled in the main window. Please note that the ESP merely becomes "available", it will not necessarily be loaded! That is configured in the main window of omo. + Перемещает esp в каталог Ń Đ´Ń€Ńгими esp так, что он может быть подключен в главном окне. Обратите внимание, что ESP проŃто ŃтановитŃŃŹ "Đ´ĐľŃŃ‚Ńпным", но не бŃдет загрŃжен! Это наŃтраиваетŃŃŹ в главном окне MO. @@ -2652,7 +2496,7 @@ p, li { white-space: pre-wrap; } These are the mod files that are in the (virtual) data directory of your game and will thus be selecteable in the esp list in the main window. - Это моды который находятŃŃŹ в каталоге игры (виртŃальном). Они могŃŃ‚ быть включены в главном окне. + Это файлы модов которые находятŃŃŹ в (виртŃальном)каталоге данных ваŃей игры и могŃŃ‚ быть выбираемыми в ŃпиŃке esp, в главном окне. @@ -2703,7 +2547,7 @@ p, li { white-space: pre-wrap; } Primary Category - + ĐžŃновная категория @@ -2722,29 +2566,29 @@ p, li { white-space: pre-wrap; } - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Mod ID for this mod on Nexus. This is filled in automatically if you downloaded and installed the mod from inside MO. Otherwise you can enter it manually. To find the correct id, find the mod on nexus. The URL will look like this: </span><a href=" http://www.skyrimnexus.com/downloads/file.php?id=1334"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://skyrim.nexusmods.com/downloads/file.php?id=1334</span></a><a href="http://www.skyrimnexus.com/downloads/file.php?id=1334"><span style=" font-size:8pt; color:#000000;">. In this example, 1334 is the id you're looking for. Besides: The above is the link to Mod Organizer on the Nexus. Why not go there now and endorse?</span></a></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Mod ID for this mod on Nexus. This is filled in automatically if you downloaded and installed the mod from inside MO. Otherwise you can enter it manually. To find the correct id, find the mod on nexus. The URL will look like this: </span><a href=" http://www.skyrimnexus.com/downloads/file.php?id=1334"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://skyrim.nexusmods.com/downloads/file.php?id=1334</span></a><a href="http://www.skyrimnexus.com/downloads/file.php?id=1334"><span style=" font-size:8pt; color:#000000;">. In this example, 1334 is the id you're looking for. Besides: The above is the link to Mod Organizer on the Nexus. Why not go there now and endorse?</span></a></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">ID этого мода на Nexus. ЗаполняетŃŃŹ автоматичеŃки, еŃли Ńкачали и ŃŃтановили мод МО. Đначе вы можете ввеŃти его врŃчнŃŃŽ. Чтобы найти правильный ID, Đ˝Ńжно найти иŃточник. URL бŃдет выглядеть ŃледŃющим образом: </span><a href=" http://www.skyrimnexus.com/downloads/file.php?id=1334"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://skyrim.nexusmods.com/downloads/file.php?id=1334</span></a><a href="http://www.skyrimnexus.com/downloads/file.php?id=1334"><span style=" font-size:8pt; color:#000000;">. Đ’ этом примере, вы ищите ID 1334. Кроме того: выŃе еŃть ŃŃылка на Mod Organizer на Nexus. ĐźĐľŃ‡ĐµĐĽŃ Đ±Ń‹ не пойти Ń‚Ńда b yt ghjdthbnm?</span></a></p></body></html> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">ID этого мода на Nexus. ЗаполняетŃŃŹ автоматичеŃки, еŃли Ńкачали и ŃŃтановили мод из МО. Đ’ противном ŃĐ»Ńчае вы можете ввеŃти его врŃчнŃŃŽ. Чтобы найти правильный ID, Đ˝Ńжно найти мод на Nexus. URL бŃдет выглядеть ŃледŃющим образом: </span><a href=" http://www.skyrimnexus.com/downloads/file.php?id=1334"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://skyrim.nexusmods.com/downloads/file.php?id=1334</span></a><a href="http://www.skyrimnexus.com/downloads/file.php?id=1334"><span style=" font-size:8pt; color:#000000;">. Đ’ этом примере, 1334 - ID, который вы ищете. Кроме того: Đ’Ń‹Ńе еŃть ŃŃылка на Mod Organizer на Nexus. ĐźĐľŃ‡ĐµĐĽŃ Đ±Ń‹ не перейти по ней и не одобрить?</span></a></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Installed Version of the Mod. The tooltip will contain the current version available on nexus. The installed version is only set if you installed the mod through MO.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Installed Version of the Mod. The tooltip will contain the current version available on nexus. The installed version is only set if you installed the mod through MO.</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">ĐŁŃтановленная верŃия мода. Đ’ подŃказке бŃдет ŃодержатьŃŃŹ текŃщая верŃия ŃŃылка. ĐŁŃтановленная верŃия ŃŃтанавливаетŃŃŹ только еŃли вы ŃŃтановили мод через МО</span></p></body></html> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">ĐŁŃтановленная верŃия мода. ПодŃказка бŃдет Ńодержать текŃщŃŃŽ верŃию, Đ´ĐľŃŃ‚ŃпнŃŃŽ на Nexus. ĐŁŃтановленная верŃия ŃŃтановитŃŃŹ только еŃли вы ŃŃтановили мод через МО.</span></p></body></html> @@ -2754,12 +2598,12 @@ p, li { white-space: pre-wrap; } Refresh - + Обновить информацию Refresh all information from Nexus. - + Обновить вŃŃŽ информацию Ń Nexus @@ -2768,51 +2612,28 @@ p, li { white-space: pre-wrap; } - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"><br /></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"><br /></p></body></html> - - - - Files - Файлы - - - List of files currently uploaded on nexus. Double click to download. - СпиŃок файлов загрŃжаемых Ń Nexus. Двойной клик для загрŃзки - - - Type - Тип - - - Name - ĐĐĽŃŹ - - - Size (kB) - Размер (KB) +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"><br /></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"><br /></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"><br /></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"><br /></p></body></html> Endorse - + Одобрить Notes - - - - Endorsements are an important motivation for authors. Please don't forget to endorse mods you like. - Не забŃдте поблагодарить автора. - - - Have you endorsed this yet? - Поблагодарить? + Примечания @@ -2826,23 +2647,28 @@ p, li { white-space: pre-wrap; } - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">This is a modifiable directory view of the mod directory. You can move around files using drag &amp; drop and rename them (double click).</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Changes happen immediately on disc, so do</span><span style=" font-size:8pt; font-weight:600;"> be careful</span><span style=" font-size:8pt;">.</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">This is a modifiable directory view of the mod directory. You can move around files using drag &amp; drop and rename them (double click).</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Changes happen immediately on disc, so do</span><span style=" font-size:8pt; font-weight:600;"> be careful</span><span style=" font-size:8pt;">.</span></p></body></html> - +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Это обзор модифицирŃемого каталога папки мода. Đ’Ń‹ можете перемещать файлы, иŃпользŃŃŹ перетаŃкивание и переименовывать их двойным кликом.</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Đзменения проиŃходят непоŃредŃтвенно на диŃке, так что</span><span style=" font-size:8pt; font-weight:600;"> бŃдьте ĐľŃторожныl</span><span style=" font-size:8pt;">.</span></p></body></html> Previous - + ПредыдŃщий Next - Вперед + Вперед @@ -2852,22 +2678,22 @@ p, li { white-space: pre-wrap; } &Delete - + &Удалить &Rename - + &Переименовать &Hide - + &Скрыть &Unhide - + &Показать @@ -2877,184 +2703,184 @@ p, li { white-space: pre-wrap; } &New Folder - + &Новая папка Save changes? - + Сохранить изменения? + + + + + Save changes to "%1"? + Сохранить изменения в "%1"? File Exists - + Файл Ńже ŃŃщеŃтвŃет A file with that name exists, please enter a new one - + Файл Ń Ń‚Đ°ĐşĐ¸ĐĽ именем Ńже ŃŃщеŃтвŃет, Ńкажите Đ´Ń€Ńгое failed to move file - + не ŃдалоŃŃŚ перемеŃтить файл - failed to create directory "optional" - + failed to create directory "optional" + не ŃдалоŃŃŚ Ńоздать ĐżĐ°ĐżĐşŃ "optional" Info requested, please wait - - - - - (description incomplete, please visit nexus) - - - - - Current Version: %1 - - - - - No update available - + Đнформация запроŃена, пожалŃĐąŃта, подождите Main - - - - - - Save changes to "%1"? - + Главное Update - + Обновление Optional - + Опционально Old - + Старые Misc - + Разное Unknown - + НеизвеŃтно - - <a href="%1">Visit on Nexus</a> - + + Current Version: %1 + ТекŃщая верŃия: %1 - - - Confirm - Подтвердить + + No update available + Нет Đ´ĐľŃŃ‚Ńпных обновлений + + + + (description incomplete, please visit nexus) + (опиŃание не заверŃено, Ńмотрите на nexus) + + + + <a href="%1">Visit on Nexus</a> + <a href="%1">Перейти на Nexus</a> Failed to delete %1 - + Не ŃдалоŃŃŚ Ńдалить %1 - Are sure you want to delete "%1"? - + + Confirm + Подтверждение + + + + Are sure you want to delete "%1"? + Đ’Ń‹ Ńверены, что хотите Ńдалить "%1"? Are sure you want to delete the selected files? - + Đ’Ń‹ Ńверены, что хотите Ńдалить выбранные файлы? New Folder - + Новая папка - Failed to create "%1" - + Failed to create "%1" + Не ŃдалоŃŃŚ Ńоздать "%1" Replace file? - + Заменить файл? There already is a hidden version of this file. Replace it? - + Скрытая верŃия этого файла Ńже ŃŃщеŃтвŃет. Заменить? File operation failed - + Не ŃдалаŃŃŚ операция Ń Ń„Đ°ĐąĐ»ĐľĐĽ - Failed to remove "%1". Maybe you lack the required file permissions? - + Failed to remove "%1". Maybe you lack the required file permissions? + Не ŃдалоŃŃŚ Ńдалить "%1". Может быть, вам не хватает необходимых прав Đ´ĐľŃŃ‚Ńпа Đş файлŃ? failed to rename %1 to %2 - + не ŃдалоŃŃŚ переименовать %1 в %2 There already is a visible version of this file. Replace it? - + Видимая верŃия этого файла Ńже ŃŃщеŃтвŃет. Заменить? Un-Hide - + Показать Hide - + Скрыть ModInfoOverwrite - - - Overwrite - - This pseudo mod contains files from the virtual data tree that got modified (i.e. by the construction kit) - + Этот ĐżŃевдо-мод Ńодержит файлы из виртŃального древа данных, которые были изменены (в Construction Kit и Đ´Ń€Ńгих программах) + + + + Overwrite + Замена @@ -3062,180 +2888,176 @@ p, li { white-space: pre-wrap; } failed to write %1/meta.ini: %2 - + не ŃдалоŃŃŚ запиŃать %1/meta.ini: %2 %1 contains no esp/esm and no asset (textures, meshes, interface, ...) directory - + %1 не Ńодержит ни esp/esm, ни папок реŃŃŃ€Ńов (textures, meshes, interface, ...) Categories: <br> - + Категории: <br> ModList - - - Confirm - Подтвердить - Overwrite - + Замена This entry contains files that have been created inside the virtual data tree (i.e. by the construction kit) - + Эта запиŃŃŚ включает файлы, которые были Ńозданы внŃтри виртŃального древа (Ń ĐżĐľĐĽĐľŃ‰ŃŚŃŽ Construction Kit и Đ´Ń€. программ) Backup - + Резервная копия No valid game data - + Неверные игровые данные Not endorsed yet - + Еще не одобрено Overwrites files - + Заменяет файлы Overwritten files - + Замененные файлы Overwrites & Overwritten - + Заменяет и заменяетŃŃŹ Redundant - - - - - Category of the mod. - - - - - Id of the mod as used on Nexus. - - - - - Emblemes to highlight things that might require attention. - + Đзбыточные - - Categories: <br> - + + invalid + неверные installed version: %1, newest version: %2 - - - - Name - ĐĐĽŃŹ - - - - Version - ВерŃия - - - - Version of the mod (if available) - + ŃŃтановленная верŃия: %1, новейŃая верŃия: %2 - - Priority - - - - - invalid - + + Categories: <br> + Категории: <br> Invalid name - + НедопŃŃтимое имя drag&drop failed: %1 - + перетаŃкивание не ŃдалоŃŃŚ: %1 + + + + Confirm + Подтверждение + + + + Are you sure you want to remove "%1"? + Đ’Ń‹ дейŃтвительно хотите Ńдалить "%1"? Flags - + Флаги Mod Name - + ĐĐĽŃŹ мода + + + + Version + ВерŃия + + + + Priority + Приоритет Category - + Категория Nexus ID - + Nexus ID Installation - + ĐŁŃтановка unknown - + неизвеŃтный Name of your mods - + ĐĐĽŃŹ ваŃих модов + + + + Version of the mod (if available) + ВерŃия мода (еŃли Đ´ĐľŃŃ‚Ńпно) - Installation priority of your mod. The higher, the more "important" it is and thus overwrites files from mods with lower priority. - + Installation priority of your mod. The higher, the more "important" it is and thus overwrites files from mods with lower priority. + Приоритет ŃŃтановки для ваŃих модов. Файлы модов Ń Đ±ĐľĐ»ŃŚŃим приоритетом перезапиŃŃŃ‚ файлы модов Ń ĐĽĐµĐ˝ŃŚŃим приоритетом. - - Time this mod was installed - + + Category of the mod. + Категория мода. - - Are you sure you want to remove "%1"? - + + Id of the mod as used on Nexus. + ID мода, иŃпользŃемый на Nexus. + + + + Emblemes to highlight things that might require attention. + Выделяет подŃветкой вещи, которые могŃŃ‚ потребовать внимания. + + + + Time this mod was installed + Время, когда мод был ŃŃтановлен. @@ -3243,12 +3065,12 @@ p, li { white-space: pre-wrap; } Message of the Day - + Сообщение дня OK - + OK @@ -3256,12 +3078,12 @@ p, li { white-space: pre-wrap; } Overwrites - + Заменяет not implemented - + не реализовано @@ -3269,37 +3091,30 @@ p, li { white-space: pre-wrap; } timeout - + задержка Please check your password - - - - - NexusDialog - - Mod ID - ID мода + Проверьте Đ˛Đ°Ń ĐżĐ°Ń€ĐľĐ»ŃŚ NexusInterface - Failed to guess mod id for "%1", please pick the correct one - + Failed to guess mod id for "%1", please pick the correct one + Не ŃдалоŃŃŚ опознать id мода "%1", пожалŃĐąŃта, выберете правильный empty response - + ĐżŃŃтой ответ invalid response - + неверный ответ @@ -3307,22 +3122,22 @@ p, li { white-space: pre-wrap; } Overwrite - + Замена You can use drag&drop to move files and directories to regular mods. - + Đ’Ń‹ можете иŃпользовать перетаŃкивание, для перемещения папок и файлов в раŃпакованные моды. &Delete - + &Удалить &Rename - + &Переименовать @@ -3332,130 +3147,114 @@ p, li { white-space: pre-wrap; } &New Folder - + &Новая папка - Failed to delete "%1" - + Failed to delete "%1" + Не ŃдалоŃŃŚ Ńдалить "%1" Confirm - Подтвердить + Подтверждение - Are sure you want to delete "%1"? - + Are sure you want to delete "%1"? + Đ’Ń‹ Ńверены, что хотите Ńдалить "%1"? Are sure you want to delete the selected files? - + Đ’Ń‹ дейŃтвительно хотите Ńдалить выбранные файлы? New Folder - + Новая папка - Failed to create "%1" - + Failed to create "%1" + Не ŃдалоŃŃŚ Ńоздать "%1" PluginList - + + Name + ĐĐĽŃŹ + + + + Priority + Приоритет + + + Mod Index - + ĐĐ˝Đ´ĐµĐşŃ ĐĽĐľĐ´Đ° - - + + unknown - + неизвеŃтно - + Name of your mods - + Đмена ваŃих модов - - Load priority of your mod. The higher, the more "important" it is and thus overwrites data from plugins with lower priority. - + + Load priority of your mod. The higher, the more "important" it is and thus overwrites data from plugins with lower priority. + Приоритет загрŃзки ваŃих модов. Моды Ń Đ±ĐľĐ»ŃŚŃим приоритетом перезапиŃŃŃ‚ данные модов Ń ĐĽĐµĐ˝ŃŚŃим приоритетом. - + The modindex determins the formids of objects originating from this mods. - + ĐĐ˝Đ´ĐµĐşŃ ĐĽĐľĐ´Đ° определяющий id форм объектов, проиŃходящих из этих модов. - + esp not found: %1 - + esp не найден: %1 - - - Confirm - Подтвердить - - - - Really enable all plugins? - - - - - Really disable all plugins? - - - - + The file containing locked plugin indices is broken - + Файл, Ńодержащий индекŃŃ‹ заблокированного плагина, не работает. - + failed to open output file: %1 - + не ŃдалоŃŃŚ открыть выходной файл: %1 Some of your plugins have invalid names! These plugins can not be loaded by the game. Please see mo_interface.log for a list of affected plugins and rename them. - - - - - failed to restore load order for %1 - + Некоторые из ваŃих плагинов имеют неверные имена. Эти плагины не могŃŃ‚ быть загрŃжены игрой. Смотрите mo_interface.log для полŃчения ŃпиŃка таких плагинов и переименŃйте их. - This plugin can't be disabled (enforced by the game) - + This plugin can't be disabled (enforced by the game) + Этот плагин не может быть отключен (грŃзитŃŃŹ игрой принŃдительно) Origin: %1 - + ĐŃточник: %1 - - Name - ĐĐĽŃŹ - - - - Priority - + + failed to restore load order for %1 + не ŃдалоŃŃŚ воŃŃтановить порядок загрŃзки для %1 @@ -3463,31 +3262,35 @@ p, li { white-space: pre-wrap; } Problems - + Проблемы - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:7.8pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"><br /></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:7.8pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"><br /></p></body></html> - +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:7.8pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"><br /></p></body></html> fix - + иŃправить Fix - + ĐŃправить No guided fix - + Не Ńправляемое иŃправление @@ -3495,27 +3298,27 @@ p, li { white-space: pre-wrap; } invalid profile name %1 - + неверное имя профиля %1 failed to create %1 - + не ŃдалоŃŃŚ Ńоздать %1 - failed to open "%1" for writing - + failed to open "%1" for writing + не ŃдалоŃŃŚ открыть "%1" для запиŃи failed to update tweaked ini file, wrong settings may be used: %1 - + не ŃдалоŃŃŚ обновить наŃтроенный ini-файл, вероятно иŃпользŃŃŽŃ‚ŃŃŹ ĐľŃибочные наŃтройки: %1 failed to create tweaked ini: %1 - + не ŃдалоŃŃŚ Ńоздать наŃтроенный ini: %1 @@ -3524,43 +3327,43 @@ p, li { white-space: pre-wrap; } invalid index %1 - Неверный Đ¸Đ˝Đ´ĐµĐşŃ %1 + неверный Đ¸Đ˝Đ´ĐµĐşŃ %1 - Overwrite directory couldn't be parsed - + Overwrite directory couldn't be parsed + Замена каталога не может быть обработана invalid priority %1 - + неверный приоритет %1 failed to parse ini file (%1) - + не ŃдалоŃŃŚ обработать ini файл (%1) failed to parse ini file (%1): %2 - + не ŃдалоŃŃŚ обработать ini файл (%1): %2 - failed to modify "%1" - + failed to modify "%1" + не ŃдалоŃŃŚ изменить "%1" - + Delete savegames? - + Удалить Ńохранения? - - Do you want to delete local savegames? (If you select "No", the save games will show up again if you re-enable local savegames) - + + Do you want to delete local savegames? (If you select "No", the save games will show up again if you re-enable local savegames) + Đ’Ń‹ хотите Ńдалить локальные Ńохранения? (При отрицательном выборе Ńохранения отобразятŃŃŹ Ńнова, еŃли повторно включить локальные Ńохранения) @@ -3568,27 +3371,27 @@ p, li { white-space: pre-wrap; } Dialog - + Диалог Please enter a name for the new profile - + Введите имя нового профиля If checked, the new profile will use the default game settings. - + Đ•Ńли отмечено, новый профиль бŃдет иŃпользовать наŃтройки игры по Ńмолчанию. - If checked, the new profile will use the default game settings instead of the "global" settings. Global settings are the settings you configure when running the game launcher directly, without MO. - + If checked, the new profile will use the default game settings instead of the "global" settings. Global settings are the settings you configure when running the game launcher directly, without MO. + Đ•Ńли отмечено, новый профиль бŃдет иŃпользовать наŃтройки игры по Ńмолчанию, вмеŃто общих наŃтроек. Общие наŃтройки, это наŃтройки, которые вы ŃŃтановили, когда запŃŃтили лаŃнчер игры напрямŃŃŽ, без MO. Default Game Settings - + НаŃтройки игры по Ńмолчанию @@ -3596,109 +3399,122 @@ p, li { white-space: pre-wrap; } Profiles - + Профили List of Profiles - + СпиŃок профилей - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">This is the list of profiles. Each Profile contains its own list and installation order of enabled mods (from a shared pool), a configuration of enabled esps/esms, a copy of the games ini-file and an optional savegame filter.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Note</span> For technical reasons it's currently not possible to have seperate load-orders for esps. This means you can't load moda.esp before modb.esp in one profile and the other way around in another.</p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">This is the list of profiles. Each Profile contains its own list and installation order of enabled mods (from a shared pool), a configuration of enabled esps/esms, a copy of the games ini-file and an optional savegame filter.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Note</span> For technical reasons it's currently not possible to have seperate load-orders for esps. This means you can't load moda.esp before modb.esp in one profile and the other way around in another.</p></body></html> - +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Это ŃпиŃок профилей. Каждый профиль Ńодержит Ńвой ŃобŃтвенный ŃпиŃок и порядок ŃŃтановки подключенных модов (из общего ĐżŃла), наŃтройки подключенных esps/esms, копии игровых ini-файлов и опциональный фильтр Ńохранений.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Примечание</span> По техничеŃким причинам невозможно иметь отдельные порядки загрŃзки для esp. Это означает, что вы не Ńможете загрŃзить moda.esp пере modb.esp в одном профиле и иным образом в Đ´Ń€Ńгом профиле.</p></body></html> If checked, savegames are local to this profile and will not appear when starting with a different profile. - + Đ•Ńли отмечено, Ńохранения бŃĐ´ŃŃ‚ локальными для этого профиля и не бŃĐ´ŃŃ‚ отображены для Đ´Ń€Ńгих профилей. Local Savegames - + Локальные Ńохранения This ensures data files from mods are actually used. You want to enable this unless you use a different tool for Archive Invalidation. - + Это гарантирŃет иŃпользование файлов данных из модов. Вам Đ˝Ńжно включить это, еŃли вы не иŃпользŃете Đ´Ń€Ńгих инŃтрŃментов для инвалидации. - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">The games Oblivion, Fallout 3 and Fallout NV contain a bug which prevents texture and mesh replacers (that is: all modifications to meshes and textures already in game) from working.</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">The Mod Organizer uses a workaround called &quot;BSA redirection&quot; (google is your friend) to fix this issue reliably and without further work. Simply activate and forget.</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">With Skyrim this bug seems to be fixed to a degree but whether a mod becomes active still depends on file dates. Therefore, it still makes sense to activate this.</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">The games Oblivion, Fallout 3 and Fallout NV contain a bug which prevents texture and mesh replacers (that is: all modifications to meshes and textures already in game) from working.</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">The Mod Organizer uses a workaround called &quot;BSA redirection&quot; (google is your friend) to fix this issue reliably and without further work. Simply activate and forget.</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">With Skyrim this bug seems to be fixed to a degree but whether a mod becomes active still depends on file dates. Therefore, it still makes sense to activate this.</span></p></body></html> - +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Đгры Oblivion, Fallout 3 и Fallout NV Ńодержат баг, который делает неработоŃпоŃобными текŃŃ‚Ńры и модели реплейŃеров (то еŃть: вŃе изменения моделей и текŃŃ‚ŃŃ€ в игре).</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Mod Organizer иŃпользŃет ŃпоŃоб обхода, называемый &quot;BSA redirection&quot; (google в помощь), чтобы реŃить ŃŤŃ‚Ń ĐżŃ€ĐľĐ±Đ»ĐµĐĽŃ Đ˝Đ°Đ´ĐµĐ¶Đ˝Đľ и без дальнейŃей возни. ПроŃто подключить и забыть.</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Đ’ Скайрим, кажетŃŃŹ, этот баг иŃправлен в извеŃтной Ńтепени, но бŃдет ли мод активным, завиŃит по ĐżŃ€ĐµĐ¶Đ˝ĐµĐĽŃ ĐľŃ‚ даты модификации файлов. ĐźĐľŃŤŃ‚ĐľĐĽŃ Đ˛ŃŃ‘ ещё еŃть ŃĐĽŃ‹ŃĐ» включить это.</span></p></body></html> Automatic Archive Invalidation - + ĐвтоматичеŃкая инвалидадция Create a new profile from scratch - + Создать новый профиль Â«Ń Đ˝Ńля» Create - + Создать Clone the selected profile - + Клонировать выбранный профиль This creates a new profile with the same settings and active mods as the selected one. - + Это ŃоздаŃŃ‚ новый профиль Ń Ń‚Đ°ĐşĐ¸ĐĽĐ¸ же наŃтройками и активными модами, как Ń Đ˛Ń‹Đ±Ń€Đ°Đ˝Đ˝ĐľĐłĐľ. Copy - + Копировать Delete the selected Profile. This can not be un-done! - + Удалить выбранный профиль. Это нельзя бŃдет отменить! Remove - + Удалить Rename - + Переименовать Transfer save games to the selected profile. - + Передать Ńохранения в выбранный профиль. Transfer Saves - + Передать Ńохранения @@ -3707,14 +3523,14 @@ p, li { white-space: pre-wrap; } - Archive invalidation isn't required for this game. - + Archive invalidation isn't required for this game. + Đнвалидация не требŃетŃŃŹ для этой игры. failed to create profile: %1 - + не ŃдалоŃŃŚ Ńоздать профиль: %1 @@ -3724,42 +3540,42 @@ p, li { white-space: pre-wrap; } Please enter a name for the new profile - + Введите имя нового профиля failed to copy profile: %1 - + не ŃдалоŃŃŚ Ńкопировать профиль: %1 Confirm - Подтвердить + Подтверждение Are you sure you want to remove this profile? - + Đ’Ń‹ дейŃтвительно хотите Ńдалить этот профиль? Rename Profile - + Переименовать профиль New Name - + Новое имя failed to change archive invalidation state: %1 - + не ŃдалоŃŃŚ изменить режим инвалидации: %1 failed to determine if invalidation is active: %1 - + не ŃдалоŃŃŚ определить активноŃть инвалидации: %1 @@ -3767,7 +3583,7 @@ p, li { white-space: pre-wrap; } Failed to save custom categories - + Не ŃдалоŃŃŚ Ńохранить пользовательŃкие категории @@ -3775,301 +3591,311 @@ p, li { white-space: pre-wrap; } invalid index %1 - Неверный Đ¸Đ˝Đ´ĐµĐşŃ %1 + неверный Đ¸Đ˝Đ´ĐµĐşŃ %1 invalid category id %1 - + неверный id категории %1 + + + + invalid field name "%1" + неверное имя поля "%1" + + + + invalid type for "%1" (should be integer) + неверный тип для "%1" (должно быть целое) + + + + invalid type for "%1" (should be string) + неверный тип для "%1" (должна быть Ńтрока) + + + + invalid type for "%1" (should be float) + неверный тип для "%1" (должно быть Ń ĐżĐ»Đ°Đ˛Đ°ŃŽŃ‰ĐµĐą запятой) + + + + no fields set up yet! + ŃŃтановленных полей ещё нет! + + + + field not set "%1" + поле не ŃŃтановлено "%1" + + + + invalid character in field "%1" + неверный Ńимвол в поле "%1" + + + + empty field name + ĐżŃŃтое имя поля + + + + invalid game type %1 + неверный тип игры %1 helper failed - + Ńбой помощника failed to determine account name - + не ŃдалоŃŃŚ определить имя аккаŃнта invalid 7-zip32.dll: %1 - + неверный 7-zip32.dll: %1 failed to open %1: %2 - + не ŃдалоŃŃŚ открыть %1: %2 %1 not found - + %1 не найден Failed to delete %1 - + Не ŃдалоŃŃŚ Ńдалить %1 Failed to deactivate script extender loading - + Не ŃдалоŃŃŚ отключить загрŃĐ·ĐşŃ Ń€Đ°ŃŃирителя Ńкриптов Failed to remove %1: %2 - + Не ŃдалоŃŃŚ Ńдалить %1: %2 Failed to rename %1 to %2 - + Не ŃдалоŃŃŚ переименовать %1 в %2 Failed to deactivate proxy-dll loading - + Не ŃдалоŃŃŚ отключить загрŃĐ·ĐşŃ proxy-dll Failed to copy %1 to %2 - + Не ŃдалоŃŃŚ Ńкопировать %1 в %2 Failed to set up script extender loading - + Не ŃдалоŃŃŚ ŃŃтановить загрŃĐ·ĐşŃ Ń€Đ°ŃŃирителя Ńкриптов Failed to delete old proxy-dll %1 - + Не ŃдалоŃŃŚ Ńдалить Ńтарый proxy-dll %1 Failed to overwrite %1 - + Не ŃдалоŃŃŚ заменить %1 Failed to set up proxy-dll loading - - - - - "%1" is missing - + Не ŃдалоŃŃŚ ŃŃтановить загрŃĐ·ĐşŃ proxy-dll Permissions required - + ТребŃŃŽŃ‚ŃŃŹ права Đ´ĐľŃŃ‚Ńпа + + + + The current user account doesn't have the required access rights to run Mod Organizer. The neccessary changes can be made automatically (the MO directory will be made writable for the current user account). You will be asked to run "helper.exe" with administrative rights). + ТекŃщий аккаŃнт пользователя не имеет необходимых прав для запŃŃка Mod Organizer. Необходимые изменения могŃŃ‚ быть Ńделаны автоматичеŃки (каталог MO бŃдет ŃŃтановлен запиŃываемым для текŃщего аккаŃнта пользователя). Вам бŃдет предложено запŃŃтить "helper.exe" Ń ĐżŃ€Đ°Đ˛Đ°ĐĽĐ¸ админиŃтратора. Woops - - - - - The current user account doesn't have the required access rights to run Mod Organizer. The neccessary changes can be made automatically (the MO directory will be made writable for the current user account). You will be asked to run "helper.exe" with administrative rights). - + ĐŁĐżŃ ModOrganizer has crashed! Should a diagnostic file be created? If you send me this file (%1) to sherb@gmx.net, the bug is a lot more likely to be fixed. Please include a short description of what you were doing when the crash happened - + Mod Organizer выŃел из Ńтроя! ĐťŃжно ли Ńоздать диагноŃтичеŃкий файл? Đ•Ńли вы выŃлите файл (%1) по адреŃŃ sherb@gmx.net, ĐľŃибка Ń Đ˝Đ°ĐĽĐ˝ĐľĐłĐľ больŃей вероятноŃтью бŃдет иŃправлена. ПожалŃĐąŃта, добавьте краткое опиŃание Ńвоих дейŃтвий, перед тем, как произоŃла ĐľŃибка ModOrganizer has crashed! Unfortunately I was not able to write a diagnostic file: %1 - + ModOrganizer выŃел из Ńтроя! Đš Ńожалению не ŃдалоŃŃŚ запиŃать диагноŃтичеŃкий файл: %1 - + Mod Organizer - + Mod Organizer An instance of Mod Organizer is already running - + ДрŃгой экземпляр Mod Organizer Ńже запŃщен - No game identified in "%1". The directory is required to contain the game binary and its launcher. - + No game identified in "%1". The directory is required to contain the game binary and its launcher. + Đгра не обнарŃжена в "%1". ТребŃетŃŃŹ, чтобы папка Ńодержала иŃполняемые файлы игры. Please select the game to manage - + Выберете Đ¸ĐłŃ€Ń Đ´Đ»ŃŹ Ńправления - - Please use "Help" from the toolbar to get usage instructions to all elements - + + Please use "Help" from the toolbar to get usage instructions to all elements + ĐŃпользŃйте ĐżŃнкт "Справка" на панели инŃтрŃментов, чтобы полŃчить инŃтрŃкции по иŃпользованию вŃех элементов. - - + + <Manage...> - + <Управлять...> - + failed to parse profile %1: %2 - + не ŃдалоŃŃŚ обработать профиль %1: %2 - + - failed to find "%1" - + failed to find "%1" + не ŃдалоŃŃŚ найти "%1" + + + + encoding error, please report this as a bug and include the file mo_interface.log! + ĐľŃибка кодирования, пожалŃĐąŃта Ńообщите об этом баге, включив файл mo_interface.log! failed to access %1 - + не ŃдалоŃŃŚ полŃчить Đ´ĐľŃŃ‚ŃĐż Đş %1 failed to set file time %1 - + не ŃдалоŃŃŚ изменить Đ´Đ°Ń‚Ń ĐĽĐľĐ´Đ¸Ń„Đ¸ĐşĐ°Ń†Đ¸Đ¸ для %1 failed to create %1 - + не ŃдалоŃŃŚ Ńоздать %1 + + + + "%1" is missing + "%1" отŃŃŃ‚ŃтвŃет Before you can use ModOrganizer, you need to create at least one profile. ATTENTION: Run the game at least once before creating a profile! - + Перед тем, как иŃпользовать Mod Organizer, вам Đ˝Ńжно Ńоздать хотя бы один профиль. Đ’ĐťĐĐśĐĐťĐĐ•: Перед Ńозданием профиля запŃŃтите Đ¸ĐłŃ€Ń Ń…ĐľŃ‚ŃŹ бы один раз! Error - + ĐžŃибка wrong file format - + неверный формат файла failed to open %1 - + не ŃдалоŃŃŚ открыть %1 - + Script Extender - + Script Extender - + Proxy DLL - + Proxy DLL - failed to spawn "%1" - + failed to spawn "%1" + не ŃдалоŃŃŚ вызвать "%1" Elevation required - + ТребŃетŃŃŹ повыŃение прав This process requires elevation to run. This is a potential security risk so I highly advice you to investigate if -"%1" +"%1" can be installed to work without elevation. Start elevated anyway? (you will be asked if you want to allow ModOrganizer.exe to make changes to the system) - + Этот процеŃŃ Ń‚Ń€ĐµĐ±Ńет повыŃения прав на запŃŃĐş. +Это потенциальный риŃĐş для безопаŃноŃти, ĐżĐľŃŤŃ‚ĐľĐĽŃ Đ˝Đ°Ńтоятельно рекомендŃетŃŃŹ изŃчить +"%1" + на возможноŃть ŃŃтановки без повыŃения прав. + +ЗапŃŃтить Ń ĐżĐľĐ˛Ń‹Ńенными правами в любом ŃĐ»Ńчае? (бŃдет выведен Đ·Đ°ĐżŃ€ĐľŃ Đľ разреŃении ModOrganizer.exe Ńделать изменения в ŃиŃтеме) - failed to spawn "%1": %2 - + failed to spawn "%1": %2 + не ŃдалоŃŃŚ вызвать "%1": %2 - "%1" doesn't exist - + "%1" doesn't exist + "%1" не ŃŃщеŃтвŃет - failed to inject dll into "%1": %2 - + failed to inject dll into "%1": %2 + не ŃдалоŃŃŚ подключить dll Đş "%1": %2 - failed to run "%1" - - - - - invalid field name "%1" - - - - - invalid type for "%1" (should be integer) - - - - - invalid type for "%1" (should be string) - - - - - invalid type for "%1" (should be float) - - - - - no fields set up yet! - - - - - field not set "%1" - - - - - invalid character in field "%1" - - - - - empty field name - - - - - invalid game type %1 - + failed to run "%1" + не ŃдалоŃŃŚ запŃŃтить "%1" @@ -4077,22 +3903,22 @@ Start elevated anyway? (you will be asked if you want to allow ModOrganizer.exe Mod Exists - + Мод ŃŃщеŃтвŃет This mod seems to be installed already. Do you want to add files from this archive (overwriting existing ones) or do you want to completely replace the existing files (old files are deleted)? Alternatively you can install this mod under a different name. - + КажетŃŃŹ, что этот мод Ńже ŃŃтановлен. Đ’Ń‹ хотите добавить файлы из архива (Ń ĐżĐµŃ€ĐµĐ·Đ°ĐżĐ¸ŃŃŚŃŽ Ńже ŃŃщеŃтвŃющих) или вам Đ˝Ńжно полноŃтью заменить ŃŃщеŃтвŃющие файлы (Ńтарые бŃĐ´ŃŃ‚ Ńдалены)? Как вариант, вы можете ŃŃтановить этот мод под Đ´Ń€Ńгим именем. Keep Backup - + ĐžŃтавить резервнŃŃŽ копию Merge - + Объединить @@ -4102,7 +3928,7 @@ Start elevated anyway? (you will be asked if you want to allow ModOrganizer.exe Rename - + Переименовать @@ -4115,7 +3941,7 @@ Start elevated anyway? (you will be asked if you want to allow ModOrganizer.exe Remember selection - + Запомнить выбор @@ -4123,27 +3949,27 @@ Start elevated anyway? (you will be asked if you want to allow ModOrganizer.exe Save # - + Сохранение â„– Character - + ПерŃонаж Level - + Уровень Location - + МеŃтоположение Date - + Дата @@ -4151,7 +3977,7 @@ Start elevated anyway? (you will be asked if you want to allow ModOrganizer.exe Missing ESPs - + ОтŃŃŃ‚ŃтвŃющие ESP @@ -4159,17 +3985,17 @@ Start elevated anyway? (you will be asked if you want to allow ModOrganizer.exe Dialog - + Диалог Copy To Clipboard - + Копировать в бŃфер обмена Save As... - + Сохранить как... @@ -4179,17 +4005,17 @@ Start elevated anyway? (you will be asked if you want to allow ModOrganizer.exe Save CSV - + Сохранить CSV Text Files - + ТекŃтовые файлы - failed to open "%1" for writing - + failed to open "%1" for writing + не ŃдалоŃŃŚ открыть "%1" для запиŃи @@ -4197,7 +4023,7 @@ Start elevated anyway? (you will be asked if you want to allow ModOrganizer.exe Select - + Выбрать @@ -4214,8 +4040,8 @@ Start elevated anyway? (you will be asked if you want to allow ModOrganizer.exe SelfUpdater - archive.dll not loaded: "%1" - + archive.dll not loaded: "%1" + archive.dll не загрŃжен: "%1" @@ -4223,95 +4049,95 @@ Start elevated anyway? (you will be asked if you want to allow ModOrganizer.exe Update - + Обновление An update is available (newest version: %1), do you want to install it? - + ДоŃŃ‚Ńпно обновление (поŃледняя верŃия: %1). Đ’Ń‹ хотите ŃŃтановить его? Download in progress - + ЗагрŃзка в процеŃŃе Download failed: %1 - + ЗагрŃзка не ŃдалаŃŃŚ: %1 Failed to install update: %1 - + Не ŃдалоŃŃŚ ŃŃтановить обновление: %1 - failed to open archive "%1": %2 - Не ŃдалоŃŃŚ открыть архив "%1": %2 + failed to open archive "%1": %2 + не ŃдалоŃŃŚ открыть архив "%1": %2 failed to move outdated files: %1. Please update manually. - + не ŃдалоŃŃŚ перемеŃтить ŃŃтаревŃие файлы: %1. ПожалŃĐąŃта, обновите врŃчнŃŃŽ. Update installed, Mod Organizer will now be restarted. - + Обновление ŃŃтановлено, Mod Organizer бŃдет перезапŃщен. Error - + ĐžŃибка Failed to parse response. Please report this as a bug and include the file mo_interface.log. - + Не ŃдалоŃŃŚ обработать запроŃ. ПожалŃĐąŃта, Ńообщите об этом баге, включив в Ńообщение файл mo_interface.log. No incremental update available for this version, the complete package needs to be downloaded (%1 kB) - + Нет дополнительных обновлений для этой верŃии, необходимо загрŃзить полный пакет (%1 kB) no file for update found. Please update manually. - - - - - No download server available. Please try again later. - Сервер недоŃŃ‚Ńпен. ПопробŃйте позже. + не найдено файла для обновления. ПожалŃĐąŃта, обновите врŃчнŃŃŽ. Failed to retrieve update information: %1 - + Не ŃдалоŃŃŚ полŃчить Ńведения об обновлении: %1 + + + + No download server available. Please try again later. + Нет Đ´ĐľŃŃ‚Ńпных для загрŃзки Ńерверов. ПожалŃĐąŃта, попробŃйте позже. Settings - - setting for invalid plugin "%1" requested - + + setting for invalid plugin "%1" requested + запроŃена наŃтройка для недейŃтвительного плагина "%1" - - invalid setting "%1" requested for plugin "%2" - + + invalid setting "%1" requested for plugin "%2" + неверная наŃтройка "%1" запроŃена для плагина "%2" - + Confirm - Подтвердить + Подтверждение - + Changing the mod directory affects all your profiles! Mods not present (or named differently) in the new location will be disabled in all profiles. There is no way to undo this unless you backed up your profiles manually. Proceed? - + Đзменение каталога для модов отразитŃŃŹ на вŃех ваŃих профилях. Нельзя бŃдет отменить это, еŃли только вы не Ńохранили резервные копии ваŃих профилей врŃчнŃŃŽ. Продолжить? @@ -4319,169 +4145,178 @@ Start elevated anyway? (you will be asked if you want to allow ModOrganizer.exe Settings - + НаŃтройки General - + Общие Language - + Язык The display language - + ĐŃпользŃемый язык - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">The display language. This will only displaye languages for which you have a translation installed.</span></p></body></html> - +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">The display language. This will only displaye languages for which you have a translation installed.</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">ĐŃпользŃемый язык. Đ‘ŃĐ´ŃŃ‚ отображены языки, локализация на которые имеетŃŃŹ.</span></p></body></html> Style - + Стиль graphical style - + графичеŃкий Ńтиль graphical style of the MO user interface - + графичеŃкий Ńтиль пользовательŃкого интерфейŃа MO Log Level - + Уровень жŃрналирования - Decides the amount of data printed to "ModOrganizer.log" - + Decides the amount of data printed to "ModOrganizer.log" + Определяет количеŃтво данных, выводимых в "ModOrganizer.log" - Decides the amount of data printed to "ModOrganizer.log". -"Debug" produces very useful information for finding problems. There is usually no noteworthy performance impact but the file may become rather large. If this is a problem you may prefer the "Info" level for regluar use. On the "Error" level the log file usually remains empty. - + Decides the amount of data printed to "ModOrganizer.log". +"Debug" produces very useful information for finding problems. There is usually no noteworthy performance impact but the file may become rather large. If this is a problem you may prefer the "Info" level for regluar use. On the "Error" level the log file usually remains empty. + Определяет количеŃтво данных, выводимых в "ModOrganizer.log". +"Отладка" позволяет полŃчить очень полезнŃŃŽ для поиŃка проблем информацию. Влияния на производительноŃть не замечено, однако размер лога может быть довольно больŃим. Đ•Ńли это проблема, то вы можете предпочеŃть для обычного иŃпользования Ńровень "Đнформация". На Ńровне "ĐžŃибка" лог обычно ĐľŃтаетŃŃŹ ĐżŃŃтым. Debug - + Отладка Info - + Đнформация Error - + ĐžŃибка Advanced - + ПродвинŃтый Directory where downloads are stored. - + Каталог, в котором хранятŃŃŹ загрŃзки. Mod Directory - + Каталог модов Directory where mods are stored. - + Каталог, в котором хранятŃŃŹ моды. - Directory where mods are stored. Please note that changing this will break all associations of profiles with mods that don't exist in the new location (with the same name). - + Directory where mods are stored. Please note that changing this will break all associations of profiles with mods that don't exist in the new location (with the same name). + Каталог, в котором хранятŃŃŹ моды. Đмейте ввидŃ, эти изменения нарŃŃат вŃе аŃŃоциации профилей Ń Đ˝ĐµŃŃщеŃтвŃющими в новом раŃположении модами (Ń Ń‚ĐµĐĽ же именем). Download Directory - + Каталог для загрŃзки Cache Directory - + Каталог кэŃа Reset stored information from dialogs. - + ĐˇĐ±Ń€ĐľŃ Ń…Ń€Đ°Đ˝Đ¸ĐĽĐľĐą информации Đľ диалогах. - This will make all dialogs show up again where you checked the "Remember selection"-box. - + This will make all dialogs show up again where you checked the "Remember selection"-box. + ЗаŃтавит Ńнова появитьŃŃŹ вŃе диалоги, в которых вы ранее отмечали флажок "Запомнить выбор". Reset Dialogs - + СброŃить диалоги Modify the categories available to arrange your mods. - + Đзменение категорий, Đ´ĐľŃŃ‚Ńпных для Ńпорядочивания ваŃих модов. Configure Mod Categories - + НаŃтроить категории модов Nexus - + Nexus Allows automatic log-in when the Nexus-Page for the game is clicked. - + Позволяет автоматичеŃки входить, кликнŃв на Nexus-ŃŃ‚Ń€Đ°Đ˝Đ¸Ń†Ń Đ¸ĐłŃ€Ń‹. - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Allows automatic log-in when the Nexus-Page for the game is clicked. Please note that the obfuscation with which the password is stored in modorganizer.ini is not very strong. If you're worried someone might steal your password, don't store it here.</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Allows automatic log-in when the Nexus-Page for the game is clicked. Please note that the obfuscation with which the password is stored in modorganizer.ini is not very strong. If you're worried someone might steal your password, don't store it here.</span></p></body></html> - +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Позволяет автоматичеŃки входить, кликнŃв на Nexus-ŃŃ‚Ń€Đ°Đ˝Đ¸Ń†Ń Đ¸ĐłŃ€Ń‹. Обратите внимание, что Ńифрование Ń ĐşĐľŃ‚ĐľŃ€Ń‹ĐĽ пароль хранитŃŃŹ в файле modorganizer.ini не очень Ńильное. Đ•Ńли вы беŃпокоитеŃŃŚ, что кто-нибŃĐ´ŃŚ может ŃкраŃть Đ˛Đ°Ń ĐżĐ°Ń€ĐľĐ»ŃŚ, не храните его здеŃŃŚ.</span></p></body></html> If checked and if correct credentials are entered below, log-in to Nexus (for browsing and downloading) is automatic. - + Đ•Ńли отмечено и данные ниже введены правильно, входит на Nexus (для проŃмотра и загрŃзки) автоматичеŃки. Automatically Log-In to Nexus - + ĐвтоматичеŃкий вход на Nexus @@ -4493,220 +4328,244 @@ p, li { white-space: pre-wrap; } Password Пароль + + + Disable automatic internet features + Отключить автоматичеŃкие возможноŃти интернет + + + + Disable automatic internet features. This does not affect features that are explicitly invoked by the user (like checking mods for updates, endorsing, opening the web browser) + Отключает автоматичеŃкие возможноŃти интернет. Это не подейŃтвŃет на Ń„Ńнкции, которые явно вызваны пользователем (проверка модов на обновления, одобрение, открытие в браŃзере) + + + + Offline Mode + Đвтономный режим + + + + Use a proxy for network connections. + ĐŃпользовать прокŃи для Ńоединения Ń Ńетью + + + + Use a proxy for network connections. This uses the system-wide settings which can be configured in Internet Explorer. Please note that MO will start up a few seconds slower on some systems when using a proxy. + ĐŃпользовать прокŃи для Ńоединения Ń Ńетью. ĐŃпользŃŃŽŃ‚ŃŃŹ ŃиŃтемные параметры, наŃтраиваемые в Internet Explorer. Обратите внимание, что MO запŃŃтитŃŃŹ на неŃколько ŃекŃнд медленнее на некоторых ŃиŃтемах, когда иŃпользŃетŃŃŹ прокŃи. + + + + Use HTTP Proxy (Uses System Settings) + ĐŃпользовать HTTP Proxy (ĐŃпользŃŃŽŃ‚ŃŃŹ ŃиŃтемные наŃтройки) + + + + Known Servers (Dynamically updated every download) + ĐзвеŃтные Ńерверы (ДинамичеŃки обновляетŃŃŹ при каждой загрŃзке) + + + + Preferred Servers (Drag & Drop) + Предпочитаемые Ńерверы (ĐŃпользŃйте перетаŃкивание) + Plugins - + Плагины Author: - + Đвтор: Version: - + ВерŃия: Description: - + ОпиŃание: Key - + КлавиŃа Value - + Значение Workarounds - + СпоŃобы обхода Steam App ID - + ID приложения Steam The Steam AppID for your game - + ID в Steam для ваŃей игры - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">The Steam App ID is required to directly start some games. For Skyrim, if this is not set or wrong, the &quot;Mod Organizer&quot; load mechanism may not work properly.</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">The preset for this is the App ID of the &quot;regular&quot; version so in most cases, you should be set.</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">If you think you have a different version (GotY or something), follow these steps to get to the id:</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">1. Navigate to the game library in steam</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">2. right-click on the game you need the id for and choose </span><span style=" font-size:8pt; font-weight:600;">Create desktop shortcut</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">3. right-click on the newly created shortcut on your desktop and select </span><span style=" font-size:8pt; font-weight:600;">Properties</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">4. in the URL-field you should see something like this: </span><span style=" font-size:8pt; font-style:italic;">steam://rungameid/22380</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">22380 is the id you're looking for.</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">The Steam App ID is required to directly start some games. For Skyrim, if this is not set or wrong, the &quot;Mod Organizer&quot; load mechanism may not work properly.</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">The preset for this is the App ID of the &quot;regular&quot; version so in most cases, you should be set.</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">If you think you have a different version (GotY or something), follow these steps to get to the id:</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">1. Navigate to the game library in steam</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">2. right-click on the game you need the id for and choose </span><span style=" font-size:8pt; font-weight:600;">Create desktop shortcut</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">3. right-click on the newly created shortcut on your desktop and select </span><span style=" font-size:8pt; font-weight:600;">Properties</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">4. in the URL-field you should see something like this: </span><span style=" font-size:8pt; font-style:italic;">steam://rungameid/22380</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">22380 is the id you're looking for.</span></p></body></html> - +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">ID приложения в Steam необходим для прямого запŃŃка некоторых игр. Для Skyrim, еŃли он не ŃŃтановлен или неверен, механизм загрŃзки &quot;Mod Organizer&quot; может работать неправильно.</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">ПредŃŃтановленный ID в больŃинŃтве ŃĐ»Ńчаев должен быть ŃŃтановлен.</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Đ•Ńли вы Đ´Ńмаете, что Ń Đ˛Đ°Ń Đ´Ń€Ńгая верŃия (GotY или Đ´Ń€Ńгое), ŃледŃйте ŃледŃющей инŃтрŃкции по ŃŃтановке id:</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">1. Перейдите в Đ±Đ¸Đ±Đ»Đ¸ĐľŃ‚ĐµĐşŃ Đ¸ĐłŃ€ Steam.</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">2. Сделайте правый клик по игре, id которой Đ˝Ńжен и выберете </span><span style=" font-size:8pt; font-weight:600;">Создать ярлык на рабочем Ńтоле</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">3. Сделайте правый клик на Ńозданном на рабочем Ńтоле ярлыке и выберете </span><span style=" font-size:8pt; font-weight:600;">СвойŃтва</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">4. в поле URL вы должны Ńвидеть что-то вроде: </span><span style=" font-size:8pt; font-style:italic;">steam://rungameid/22380</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">22380 это и еŃть id, который вам Đ˝Ńжен.</span></p></body></html> Load Mechanism - + Механизм загрŃзки Select loading mechanism. See help for details. - + Выберете механизм загрŃзки. Смотрите ŃĐżŃ€Đ°Đ˛ĐşŃ Đ´Đ»ŃŹ подробноŃтей. + + + + Mod Organizer needs a dll to be injected into the game so all mods are visible to it. +There are several means to do this: +*Mod Organizer* (default) In this mode the Mod Organizer itself injects the dll. The disadvantage is that you always have to start the game through MO or a link created by it. +*Script Extender* In this mode, MO is installed as a Script Extender (obse, fose, nvse, skse) plugin. +*Proxy DLL* In this mode, MO replaces one of the game's dlls with one that loads MO (and the original dll of course). This will ONLY work with Steam games and it has only been tested with Skyrim. Please use this only if the other mechanisms don't work. + +If you use the Steam version of Oblivion the default will NOT work. In this case, please install obse and use "Script Extender" as the load mechanism. Also you can then not start Oblivion from MO. Instead, use MO only to set up your mods, then quit and start Oblivion through Steam. + Mod Organizer необходимо подключить dll Đş игре, чтобы вŃе моды были видны в ней. +Đ•Ńть неŃколько ŃпоŃобов Ńделать это: +*Mod Organizer* (по Ńмолчанию) Đ’ этом режиме Mod Organizer Ńам подключает dll. НедоŃтатком этого являетŃŃŹ то, что вам необходимо вŃегда начинать Đ¸ĐłŃ€Ń Ń‡ĐµŃ€ĐµĐ· MO или Ńозданный им ярлык. +*Script Extender* Đ’ этом режиме, MO ŃŃтановлен как плагин Script Extender (obse, fose, nvse, skse). +*Proxy DLL* Đ’ этом режиме MO заменяет ĐľĐ´Đ˝Ń Đ¸Đ· игровых dll игры Ńвоей, которая загрŃжает MO и оригинальнŃŃŽ игрŃ. Это работает только Ń Đ¸ĐłŃ€Đ°ĐĽĐ¸ Steam и теŃтировалоŃŃŚ только на Skyrim. ĐŃпользŃйте этот ŃпоŃоб только еŃли Đ´Ń€Ńгие не работают. + +Đ•Ńли вы иŃпользŃете Steam-верŃию Oblivion , ŃпоŃоб по Ńмолчанию не работает. Đ’ этом ŃĐ»Ńчае ŃŃтановите obse и иŃпользŃйте "Script Extender" как механизм загрŃзки. Также поŃле этого вы не Ńможете запŃŃтить Oblivion из MO, вмеŃто этого иŃпользŃйте MO только для наŃтройки модов и запŃŃкайте Đ¸ĐłŃ€Ń Ń‡ĐµŃ€ĐµĐ· Steam. NMM Version - + ВерŃия NMM The Version of Nexus Mod Manager to impersonate. - + ВерŃия Nexus Mod Manager для предŃтавления. Mod Organizer uses an API provided by the Nexus to provide features like checking for updates and downloading files. Unfortunately this API has not been made available officially to third party tools like MO so we have to impersonate the Nexus Mod Manager to be allowed in. -On top of this Nexus has used the client identification to lock out outdated versions of NMM to force users to update. This means that MO also needs to impersonate the new version of NMM even if MO doesn't need an update. Therefore you can configure the version to identify as here. -Please note that MO does identify itself as MO to the webserver, it's not lying about what it is. It is merely adding a "compatible" NMM version to the user agent. +On top of this Nexus has used the client identification to lock out outdated versions of NMM to force users to update. This means that MO also needs to impersonate the new version of NMM even if MO doesn't need an update. Therefore you can configure the version to identify as here. +Please note that MO does identify itself as MO to the webserver, it's not lying about what it is. It is merely adding a "compatible" NMM version to the user agent. -tl;dr-version: If Nexus-features don't work, insert the current version number of NMM here and try again. - - - - - These are workarounds for problems with Mod Organizer. Please make sure you read the help text before changing anything here. - +tl;dr-version: If Nexus-features don't work, insert the current version number of NMM here and try again. + Mod Organizer иŃпользŃет API Nexus , для предоŃтавления таких возможноŃтей, как проверка обновлений и загрŃзка файлов. Đš Ńожалению этот API не был Ńделан официально Đ´ĐľŃŃ‚Ńпным прочим Ńтилитам, вроде MO, так что Đ˝Ńжно предŃтавлятьŃŃŹ как Nexus Mod Manager, чтобы полŃчить Đ´ĐľŃŃ‚ŃĐż. +Помимо этого Nexus иŃпользŃет идентификатор верŃий, чтобы блокировать ŃŃтаревŃии верŃии NMM и принŃдительно заŃтавить пользователей обновитьŃŃŹ. Это значит, что MO также Đ˝Ńжно предŃтавлятьŃŃŹ поŃледней верŃией NMM, даже еŃли MO не Đ˝ŃждаетŃŃŹ в обновлении. ĐźĐľŃŤŃ‚ĐľĐĽŃ Đ˛Ń‹ можете наŃтроить здеŃŃŚ также и верŃию для идентификации. +Обратите внимание, что MO идентифицирŃет Ńебя вебŃĐµŃ€Đ˛ĐµŃ€Ń ĐşĐ°Đş MO, он не подделывает данные Đľ Ńебе. Он вŃего лиŃŃŚ добавляетŃŃŹ как "ŃовмеŃтимая" Ń NMM верŃия, в поле user agent. + +tl;dr-верŃия: Đ•Ńли возможноŃти Nexus не работают, вŃтавьте здеŃŃŚ текŃщŃŃŽ верŃию NMM и повторите попыткŃ. Enforces that inactive ESPs and ESMs are never loaded. - - - - - Disable automatic internet features - - - - - Disable automatic internet features. This does not affect features that are explicitly invoked by the user (like checking mods for updates, endorsing, opening the web browser) - - - - - Offline Mode - - - - - Use a proxy for network connections. - - - - - Use a proxy for network connections. This uses the system-wide settings which can be configured in Internet Explorer. Please note that MO will start up a few seconds slower on some systems when using a proxy. - - - - - Use HTTP Proxy (Uses System Settings) - - - - - Known Servers (Dynamically updated every download) - - - - - Preferred Servers (Drag & Drop) - - - - - Mod Organizer needs a dll to be injected into the game so all mods are visible to it. -There are several means to do this: -*Mod Organizer* (default) In this mode the Mod Organizer itself injects the dll. The disadvantage is that you always have to start the game through MO or a link created by it. -*Script Extender* In this mode, MO is installed as a Script Extender (obse, fose, nvse, skse) plugin. -*Proxy DLL* In this mode, MO replaces one of the game's dlls with one that loads MO (and the original dll of course). This will ONLY work with Steam games and it has only been tested with Skyrim. Please use this only if the other mechanisms don't work. - -If you use the Steam version of Oblivion the default will NOT work. In this case, please install obse and use "Script Extender" as the load mechanism. Also you can then not start Oblivion from MO. Instead, use MO only to set up your mods, then quit and start Oblivion through Steam. - + ОбеŃпечивает то, что неактивные ESP и ESM не бŃĐ´ŃŃ‚ загрŃжены. - It seems that the Games occasionally load ESP or ESM files even if they haven't been activated as plugins. -I don't yet know what the circumstances are, but user reports imply it is in some cases unwanted. If this is checked, ESPs and ESMs not checked in the List are invisible to the game and can not be loaded. - + It seems that the Games occasionally load ESP or ESM files even if they haven't been activated as plugins. +I don't yet know what the circumstances are, but user reports imply it is in some cases unwanted. If this is checked, ESPs and ESMs not checked in the List are invisible to the game and can not be loaded. + КажетŃŃŹ, что иногда игры загрŃжают ESP и ESM файлы, даже еŃли они не были не подключены как плагины +ОбŃтоятельŃтва этого пока не извеŃтны, но отчеты пользователей подразŃмевают, что это в ряде ŃĐ»Ńчаев нежелательно. Đ•Ńли этот флажок отмечен, не отмеченные в ŃпиŃке ESP и ESM не бŃĐ´ŃŃ‚ видимы в ŃпиŃке и не бŃĐ´ŃŃ‚ загрŃжены. Hide inactive ESPs/ESMs - + Скрыть неактивные ESPs/ESMs If checked, files (i.e. esps, esms and bsas) belonging to the core game can not be disabled in the UI. (default: on) - + Đ•Ńли отмечено, файлы (Ń‚.е. esp, esm и bsa) принадлежащие ĐľŃновной игре не ŃмогŃŃ‚ быть отключены из интерфейŃа. (по Ńмолчанию: вкл) If checked, files (i.e. esps, esms and bsas) belonging to the core game can not be disabled in the UI. (default: on) Uncheck this if you want to use Mod Organizer with total conversions (like Nehrim) but be aware that the game will crash if required files are not enabled. - + Đ•Ńли отмечено, файлы (Ń‚.е. esp, esm и bsa) принадлежащие ĐľŃновной игре не ŃмогŃŃ‚ быть отключены из интерфейŃа. (по Ńмолчанию: вкл) +Снимите флажок, еŃли вы ŃобираетеŃŃŚ иŃпользовать Mod Organizer Ń Ń‚ĐľŃ‚Đ°Đ»ŃŚĐ˝Ń‹ĐĽĐ¸ конверŃиями (как Nehrim) , но бŃдьте ĐľŃторожны, игра может вылететь, еŃли требŃемые файлы бŃĐ´ŃŃ‚ отключены. Force-enable game files - + ПринŃдительно подключить файлы игры For Skyrim, this can be used instead of Archive Invalidation. It should make AI redundant for all Profiles. For the other games this is not a sufficient replacement for AI! - + Для Скайрим это может быть иŃпользовано вмеŃто инвалидации. Это должно Ńделать AI избыточным для вŃех профилей. +Для Đ´Ń€Ńгих игр недоŃтаточно замены для AI! Back-date BSAs - + Back-date BSAs + + + + These are workarounds for problems with Mod Organizer. Please make sure you read the help text before changing anything here. + Это ŃпоŃобы обхода проблем Ń Mod Organizer. УбедитеŃŃŚ, что вы прочли ŃправкŃ, перед тем, как делать какие-либо изменения здеŃŃŚ. Select download directory - + Выберете каталог для загрŃзок Select mod directory - + Выберете каталог для модов Select cache directory - + Выберете каталог для кеŃа Confirm? - + Подтвердить? - This will make all dialogs show up again where you checked the "Remember selection"-box. Continue? - + This will make all dialogs show up again where you checked the "Remember selection"-box. Continue? + Это позволить Ńнова отобразить вŃе диалоги, для которых вы ранее выбрали флажок "Запомнить выбор". @@ -4714,7 +4573,7 @@ For the other games this is not a sufficient replacement for AI! Quick Install - + БыŃтрая ŃŃтановка @@ -4725,17 +4584,17 @@ For the other games this is not a sufficient replacement for AI! Opens a Dialog that allows custom modifications. - Открывает диалоговое окно, которое позволяет выбрать пользовательŃкие модификации. + Открывает диалог, позволяющий выбрать пользовательŃкие модификации. Manual - + Đ ŃководŃтво OK - + OK @@ -4748,18 +4607,18 @@ For the other games this is not a sufficient replacement for AI! SHM error: %1 - + ĐžŃибка SHM: %1 failed to connect to running instance: %1 - + не ŃдалоŃŃŚ подключитьŃŃŹ Đş запŃŃ‰ĐµĐ˝Đ˝ĐľĐĽŃ ŃŤĐşĐ·ĐµĐĽĐżĐ»ŃŹŃ€Ń: %1 failed to receive data from secondary instance: %1 - + не ŃдалоŃŃŚ полŃчить данные из вторичного экземпляра: %1 @@ -4767,7 +4626,7 @@ For the other games this is not a sufficient replacement for AI! Sync Overwrite - + Синхронизация замены @@ -4777,22 +4636,22 @@ For the other games this is not a sufficient replacement for AI! Sync To - + Синхронизация Ń - <don't sync> - + <don't sync> + <не Ńинхронизировать> failed to remove %1 - + не ŃдалоŃŃŚ Ńдалить %1 failed to move %1 to %2 - + не ŃдалоŃŃŚ перемеŃтить %1 в %2 @@ -4800,17 +4659,17 @@ For the other games this is not a sufficient replacement for AI! Dialog - + Диалог Global Characters - + Общие Ńимволы This is a list of characters in the global location. - + Это ŃпиŃок перŃонажей в общем меŃтораŃположении. @@ -4822,7 +4681,14 @@ On Windows Vista/Windows 7: On Windows XP: C:\Documents and Settings[UserName]\My Documents\My Games\Skyrim\Saves - + СпиŃок перŃонажей в общем меŃтораŃположении. + +На Windows Vista/Windows 7: +C:\Users\[UserName]\Documents\My Games\Skyrim\Saves + +На Windows XP: +C:\Documents and Settings[UserName]\My Documents\My Games\Skyrim\Saves + @@ -4835,27 +4701,35 @@ On Windows XP: C:\Documents and Settings[UserName]\My Documents\My Games\Skyrim\Saves - + СпиŃок Ńохранений Ń Đ˛Ń‹Đ±Ń€Đ°Đ˝Đ˝Ń‹ĐĽ перŃонажем в общем меŃтораŃположении. + +На Windows Vista/Windows 7: +C:\Users\[UserName]\Documents\My Games\Skyrim\Saves + +На Windows XP: +C:\Documents and Settings[UserName]\My Documents\My Games\Skyrim\Saves + + Move -> - + ПеремеŃтить -> Copy -> - + Скопировать -> <- Move - + <- ПеремеŃтить <- Copy - + <- Скопировать @@ -4865,17 +4739,17 @@ On Windows XP: Profile Characters - + ПерŃонажи профиля Overwrite - + ПерепиŃать - Overwrite the file "%1" - + Overwrite the file "%1" + ПерезапиŃать файл "%1" @@ -4883,23 +4757,23 @@ On Windows XP: Confirm - Подтвердить + Подтверждение - Copy all save games of character "%1" to the profile? - + Copy all save games of character "%1" to the profile? + Скопировать вŃе игры Ń ĐżĐµŃ€Ńонажем "%1" в профиль? - Move all save games of character "%1" to the global location? Please be aware that this will mess up the running number of save games. - + Move all save games of character "%1" to the global location? Please be aware that this will mess up the running number of save games. + ПеремеŃтить вŃе Ńохранения Ń ĐżĐµŃ€Ńонажем "%1" в общее меŃтораŃположение? Đмейте ввидŃ, что это запŃтает текŃщŃŃŽ Đ˝Ńмерацию Ńохранений. - Copy all save games of character "%1" to the global location? Please be aware that this will mess up the running number of save games. - + Copy all save games of character "%1" to the global location? Please be aware that this will mess up the running number of save games. + Скопировать вŃе Ńохранения Ń ĐżĐµŃ€Ńонажем "%1" в общее меŃтораŃположение? Đмейте ввидŃ, что это запŃтает текŃщŃŃŽ Đ˝Ńмерацию Ńохранений. diff --git a/src/overwriteinfodialog.cpp b/src/overwriteinfodialog.cpp index e215146f..2ba81633 100644 --- a/src/overwriteinfodialog.cpp +++ b/src/overwriteinfodialog.cpp @@ -72,7 +72,8 @@ private: OverwriteInfoDialog::OverwriteInfoDialog(ModInfo::Ptr modInfo, QWidget *parent) : QDialog(parent), ui(new Ui::OverwriteInfoDialog), m_FileSystemModel(NULL), - m_DeleteAction(NULL), m_RenameAction(NULL), m_OpenAction(NULL) + m_DeleteAction(NULL), m_RenameAction(NULL), m_OpenAction(NULL), + m_ModInfo(modInfo) { ui->setupUi(this); @@ -101,7 +102,6 @@ OverwriteInfoDialog::~OverwriteInfoDialog() delete ui; } - bool OverwriteInfoDialog::recursiveDelete(const QModelIndex &index) { for (int childRow = 0; childRow < m_FileSystemModel->rowCount(index); ++childRow) { diff --git a/src/overwriteinfodialog.h b/src/overwriteinfodialog.h index a60e0571..34e86219 100644 --- a/src/overwriteinfodialog.h +++ b/src/overwriteinfodialog.h @@ -17,51 +17,55 @@ You should have received a copy of the GNU General Public License along with Mod Organizer. If not, see . */ -#ifndef OVERWRITEINFODIALOG_H -#define OVERWRITEINFODIALOG_H - -#include "modinfo.h" -#include -#include - -namespace Ui { -class OverwriteInfoDialog; -} - -class OverwriteInfoDialog : public QDialog -{ - Q_OBJECT - -public: - - explicit OverwriteInfoDialog(ModInfo::Ptr modInfo, QWidget *parent = 0); - ~OverwriteInfoDialog(); - -private: - - void openFile(const QModelIndex &index); - bool recursiveDelete(const QModelIndex &index); - void deleteFile(const QModelIndex &index); - -private slots: - - void deleteTriggered(); - void renameTriggered(); - void openTriggered(); - void createDirectoryTriggered(); - - void on_filesView_customContextMenuRequested(const QPoint &pos); - -private: - - Ui::OverwriteInfoDialog *ui; - QFileSystemModel *m_FileSystemModel; - QModelIndexList m_FileSelection; - QAction *m_DeleteAction; - QAction *m_RenameAction; - QAction *m_OpenAction; - QAction *m_NewFolderAction; - -}; - -#endif // OVERWRITEINFODIALOG_H +#ifndef OVERWRITEINFODIALOG_H +#define OVERWRITEINFODIALOG_H + +#include "modinfo.h" +#include +#include + +namespace Ui { +class OverwriteInfoDialog; +} + +class OverwriteInfoDialog : public QDialog +{ + Q_OBJECT + +public: + + explicit OverwriteInfoDialog(ModInfo::Ptr modInfo, QWidget *parent = 0); + ~OverwriteInfoDialog(); + + ModInfo::Ptr modInfo() const { return m_ModInfo; } + +private: + + void openFile(const QModelIndex &index); + bool recursiveDelete(const QModelIndex &index); + void deleteFile(const QModelIndex &index); + +private slots: + + void deleteTriggered(); + void renameTriggered(); + void openTriggered(); + void createDirectoryTriggered(); + + void on_filesView_customContextMenuRequested(const QPoint &pos); + +private: + + Ui::OverwriteInfoDialog *ui; + QFileSystemModel *m_FileSystemModel; + QModelIndexList m_FileSelection; + QAction *m_DeleteAction; + QAction *m_RenameAction; + QAction *m_OpenAction; + QAction *m_NewFolderAction; + + ModInfo::Ptr m_ModInfo; + +}; + +#endif // OVERWRITEINFODIALOG_H diff --git a/src/pluginlist.cpp b/src/pluginlist.cpp index 456d29ee..b0228849 100644 --- a/src/pluginlist.cpp +++ b/src/pluginlist.cpp @@ -199,10 +199,11 @@ void PluginList::refresh(const QString &profileName, const DirectoryEntry &baseD readLockedOrderFrom(lockedOrderFile); - refreshLoadOrder(); - emit layoutChanged(); + refreshLoadOrder(); emit dataChanged(this->index(0, 0), this->index(m_ESPs.size(), 1)); + + m_Refreshed(); } @@ -534,6 +535,7 @@ void PluginList::syncLoadOrder() void PluginList::refreshLoadOrder() { + emit layoutAboutToBeChanged(); syncLoadOrder(); // set priorities according to locked load order std::map lockedLoadOrder; @@ -550,9 +552,9 @@ void PluginList::refreshLoadOrder() // find the location to insert at while ((targetPrio < static_cast(m_ESPs.size() - 1)) && (m_ESPs[m_ESPsByPriority[targetPrio]].m_LoadOrder < iter->first)) { - if (QString::compare(m_ESPs[m_ESPsByPriority[targetPrio]].m_Name, iter->second) != 0) { +// if (QString::compare(m_ESPs[m_ESPsByPriority[targetPrio]].m_Name, iter->second) != 0) { ++targetPrio; - } +// } } if (static_cast(targetPrio) >= m_ESPs.size()) { @@ -569,6 +571,7 @@ void PluginList::refreshLoadOrder() } } } + emit layoutChanged(); } IPluginList::PluginState PluginList::state(const QString &name) const @@ -621,6 +624,12 @@ QString PluginList::origin(const QString &name) const } } +bool PluginList::onRefreshed(const std::function &callback) +{ + auto conn = m_Refreshed.connect(callback); + return conn.connected(); +} + void PluginList::updateIndices() { m_ESPsByName.clear(); @@ -743,10 +752,11 @@ QVariant PluginList::data(const QModelIndex &modelIndex, int role) const } -bool PluginList::setData(const QModelIndex &index, const QVariant &value, int role) +bool PluginList::setData(const QModelIndex &modIndex, const QVariant &value, int role) { if (role == Qt::CheckStateRole) { - m_ESPs[index.row()].m_Enabled = value.toInt() == Qt::Checked; + m_ESPs[modIndex.row()].m_Enabled = value.toInt() == Qt::Checked; + emit dataChanged(modIndex, modIndex); refreshLoadOrder(); startSaveTime(); @@ -829,14 +839,17 @@ void PluginList::setPluginPriority(int row, int &newPriority) for (int i = oldPriority + 1; i <= newPriorityTemp; ++i) { --m_ESPs.at(m_ESPsByPriority.at(i)).m_Priority; } + emit dataChanged(index(oldPriority + 1, 0), index(newPriorityTemp, columnCount())); } else { for (int i = newPriorityTemp; i < oldPriority; ++i) { ++m_ESPs.at(m_ESPsByPriority.at(i)).m_Priority; } + emit dataChanged(index(newPriorityTemp, 0), index(oldPriority - 1, columnCount())); ++newPriority; } m_ESPs.at(row).m_Priority = newPriorityTemp; + emit dataChanged(index(row, 0), index(row, columnCount())); } catch (const std::out_of_range&) { reportError(tr("failed to restore load order for %1").arg(m_ESPs[row].m_Name)); } @@ -868,9 +881,9 @@ void PluginList::changePluginPriority(std::vector rows, int newPriority) for (std::vector::const_iterator iter = rows.begin(); iter != rows.end(); ++iter) { setPluginPriority(*iter, newPriority); } - refreshLoadOrder(); emit layoutChanged(); + refreshLoadOrder(); startSaveTime(); } @@ -958,7 +971,6 @@ bool PluginList::eventFilter(QObject *obj, QEvent *event) int newPriority = m_ESPs[idx.row()].m_Priority + diff; if ((newPriority >= 0) && (newPriority < rowCount())) { setPluginPriority(idx.row(), newPriority); - emit dataChanged(this->index(idx.row(), 0), this->index(idx.row(), this->columnCount() - 1)); } } refreshLoadOrder(); diff --git a/src/pluginlist.h b/src/pluginlist.h index 4da7be4b..2af5a0df 100644 --- a/src/pluginlist.h +++ b/src/pluginlist.h @@ -20,12 +20,13 @@ along with Mod Organizer. If not, see . #ifndef PLUGINLIST_H #define PLUGINLIST_H +#include +#include #include #include #include +#include #include -#include -#include /** @@ -45,6 +46,8 @@ public: COL_LASTCOLUMN = COL_MODINDEX }; + typedef boost::signals2::signal SignalRefreshed; + public: /** @@ -141,6 +144,7 @@ public: virtual int loadOrder(const QString &name) const; virtual bool isMaster(const QString &name) const; virtual QString origin(const QString &name) const; + virtual bool onRefreshed(const std::function &callback); public: // implementation of the QAbstractTableModel interface @@ -240,6 +244,8 @@ private: mutable QTimer m_SaveTimer; + SignalRefreshed m_Refreshed; + }; #endif // PLUGINLIST_H diff --git a/src/problemsdialog.cpp b/src/problemsdialog.cpp index d5700381..edb34f39 100644 --- a/src/problemsdialog.cpp +++ b/src/problemsdialog.cpp @@ -10,11 +10,26 @@ using namespace MOBase; ProblemsDialog::ProblemsDialog(std::vector diagnosePlugins, QWidget *parent) - : QDialog(parent), ui(new Ui::ProblemsDialog) + : QDialog(parent), ui(new Ui::ProblemsDialog), m_DiagnosePlugins(diagnosePlugins) { ui->setupUi(this); - foreach (IPluginDiagnose *diagnose, diagnosePlugins) { + runDiagnosis(); + + connect(ui->problemsWidget, SIGNAL(itemSelectionChanged()), this, SLOT(selectionChanged())); + connect(ui->descriptionText, SIGNAL(anchorClicked(QUrl)), this, SLOT(urlClicked(QUrl))); +} + + +ProblemsDialog::~ProblemsDialog() +{ + delete ui; +} + +void ProblemsDialog::runDiagnosis() +{ + ui->problemsWidget->clear(); + foreach (IPluginDiagnose *diagnose, m_DiagnosePlugins) { std::vector activeProblems = diagnose->activeProblems(); foreach (unsigned int key, activeProblems) { QTreeWidgetItem *newItem = new QTreeWidgetItem(); @@ -26,7 +41,7 @@ ProblemsDialog::ProblemsDialog(std::vector diagnosePl ui->problemsWidget->addTopLevelItem(newItem); if (diagnose->hasGuidedFix(key)) { - newItem->setText(1, tr("fix")); + newItem->setText(1, tr("Fix")); QPushButton *fixButton = new QPushButton(tr("Fix")); connect(fixButton, SIGNAL(clicked()), this, SLOT(startFix())); ui->problemsWidget->setItemWidget(newItem, 1, fixButton); @@ -35,17 +50,8 @@ ProblemsDialog::ProblemsDialog(std::vector diagnosePl } } } - connect(ui->problemsWidget, SIGNAL(itemSelectionChanged()), this, SLOT(selectionChanged())); - connect(ui->descriptionText, SIGNAL(anchorClicked(QUrl)), this, SLOT(urlClicked(QUrl))); -} - - -ProblemsDialog::~ProblemsDialog() -{ - delete ui; } - bool ProblemsDialog::hasProblems() const { return ui->problemsWidget->topLevelItemCount() != 0; @@ -62,6 +68,7 @@ void ProblemsDialog::startFix() { IPluginDiagnose *plugin = reinterpret_cast(ui->problemsWidget->currentItem()->data(1, Qt::UserRole).value()); plugin->startGuidedFix(ui->problemsWidget->currentItem()->data(1, Qt::UserRole + 1).toUInt()); + runDiagnosis(); } void ProblemsDialog::urlClicked(const QUrl &url) diff --git a/src/problemsdialog.h b/src/problemsdialog.h index 050785f4..24a69cdf 100644 --- a/src/problemsdialog.h +++ b/src/problemsdialog.h @@ -21,6 +21,9 @@ public: ~ProblemsDialog(); bool hasProblems() const; +private: + + void runDiagnosis(); private slots: @@ -31,6 +34,7 @@ private slots: private: Ui::ProblemsDialog *ui; + std::vector m_DiagnosePlugins; }; #endif // PROBLEMSDIALOG_H diff --git a/src/settingsdialog.ui b/src/settingsdialog.ui index e7bd0fa3..39d49a39 100644 --- a/src/settingsdialog.ui +++ b/src/settingsdialog.ui @@ -652,7 +652,7 @@ Please note that MO does identify itself as MO to the webserver, it's not lying tl;dr-version: If Nexus-features don't work, insert the current version number of NMM here and try again. - 009.009.009; + 009.009.009 Qt::AlignCenter diff --git a/src/shared/directoryentry.cpp b/src/shared/directoryentry.cpp index dde8a69e..685e14a9 100644 --- a/src/shared/directoryentry.cpp +++ b/src/shared/directoryentry.cpp @@ -494,7 +494,7 @@ static bool SupportOptimizedFind() static bool DirCompareByName(const DirectoryEntry *lhs, const DirectoryEntry *rhs) { - return wcsicmp(lhs->getName().c_str(), rhs->getName().c_str()) < 0; + return _wcsicmp(lhs->getName().c_str(), rhs->getName().c_str()) < 0; } diff --git a/src/version.rc b/src/version.rc index 55de3798..ab144909 100644 --- a/src/version.rc +++ b/src/version.rc @@ -1,7 +1,7 @@ #include "Winver.h" -#define VER_FILEVERSION 1,0,7,0 -#define VER_FILEVERSION_STR "1,0,7,0\0" +#define VER_FILEVERSION 1,0,8,0 +#define VER_FILEVERSION_STR "1,0,8,0\0" VS_VERSION_INFO VERSIONINFO FILEVERSION VER_FILEVERSION -- cgit v1.3.1 From c6101e34e1e142a3442c3a4543ea22dabd31fa33 Mon Sep 17 00:00:00 2001 From: Tannin Date: Mon, 18 Nov 2013 20:17:14 +0100 Subject: - archive.dll now supports querying the crc value of files - esptk now determines if a esp is a dummy (without records) - hook.dll no longer creates a log file if noone wrote to it - nexus id and installtime columns are now hidden by default - modlist can now be refreshed without saving first (so plugins can replace the modlist.txt as a whole) - plugins can now query more details about virtualised files - added style options "plastique" and "cleanlooks" - "overwrite" is no longer listed with a creation time - a warning will now be displayed if the user has too many plugins active - a warning will now be displayed if mods with scripts have an installation order that doesn't match the corresponding esp load order - nmm importer now has select all/deselect all buttons - nmm importer no longer tries to unpack missing files from archives (won't work anyway) - initial support for importing from nmm 0.5 alpha - removed some broken warning suppresions - python runner now works with bundled python - extended qbs build system (still fails to build the main gui application) - implemented a nsis-based installer --- src/installationmanager.cpp | 2 -- src/main.cpp | 2 +- src/mainwindow.cpp | 50 ++++++++++++++++++++++++++++++++++++++++++--- src/mainwindow.h | 5 ++++- src/moapplication.cpp | 29 ++++++++++++++++++-------- src/moapplication.h | 2 ++ src/modinfodialog.ui | 33 ++++++++++-------------------- src/modlist.cpp | 7 ++++++- src/modlist.h | 4 ++++ src/organizer.qbs | 44 ++++++++++++++++++++++++++++----------- src/pluginlist.cpp | 21 +++++++++++++++++++ src/pluginlist.h | 7 +++++++ src/settings.cpp | 3 +++ src/shared/shared.qbs | 14 ++++++++----- 14 files changed, 167 insertions(+), 56 deletions(-) (limited to 'src/pluginlist.h') diff --git a/src/installationmanager.cpp b/src/installationmanager.cpp index 6b430eea..a8571ec9 100644 --- a/src/installationmanager.cpp +++ b/src/installationmanager.cpp @@ -506,7 +506,6 @@ bool InstallationManager::ensureValidModName(GuessedValue &name) const return true; } - bool InstallationManager::doInstall(GuessedValue &modName, int modID, const QString &version, const QString &newestVersion, int categoryID) { @@ -528,7 +527,6 @@ bool InstallationManager::doInstall(GuessedValue &modName, int modID, m_InstallationProgress.setValue(0); m_InstallationProgress.setWindowModality(Qt::WindowModal); m_InstallationProgress.show(); - if (!m_CurrentArchive->extract(ToWString(QDir::toNativeSeparators(targetDirectory)).c_str(), new MethodCallback(this, &InstallationManager::updateProgress), new MethodCallback(this, &InstallationManager::updateProgressFile), diff --git a/src/main.cpp b/src/main.cpp index 5053d21d..8b74ba83 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -60,7 +60,6 @@ along with Mod Organizer. If not, see . #include "selectiondialog.h" #include "moapplication.h" #include "tutorialmanager.h" -#include #include #include #include @@ -156,6 +155,7 @@ bool bootstrap() // verify the hook-dll exists QString dllName = qApp->applicationDirPath() + "/" + ToQString(AppConfig::hookDLLName()); + HMODULE dllMod = ::LoadLibraryW(ToWString(dllName).c_str()); if (dllMod == NULL) { throw windows_error("hook.dll is missing or invalid"); diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index f726757c..a8026b68 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -188,8 +188,13 @@ MainWindow::MainWindow(const QString &exeName, QSettings &initSettings, QWidget ui->modList->header()->installEventFilter(&m_ModList); if (initSettings.contains("mod_list_state")) { ui->modList->header()->restoreState(initSettings.value("mod_list_state").toByteArray()); + } else { + // hide these columns by default + ui->modList->header()->setSectionHidden(ModList::COL_MODID, true); + ui->modList->header()->setSectionHidden(ModList::COL_INSTALLTIME, true); } - ui->modList->header()->setSectionHidden(0, false); // prevent the name-column from being hidden + + ui->modList->header()->setSectionHidden(ModList::COL_NAME, false); // prevent the name-column from being hidden ui->modList->installEventFilter(&m_ModList); // set up plugin list @@ -1364,10 +1369,12 @@ void MainWindow::startExeAction() } -void MainWindow::refreshModList() +void MainWindow::refreshModList(bool saveChanges) { // don't lose changes! - m_CurrentProfile->writeModlistNow(true); + if (saveChanges) { + m_CurrentProfile->writeModlistNow(true); + } ModInfo::updateFromDisc(m_Settings.getModDirectory(), &m_DirectoryStructure); m_CurrentProfile->refreshModStatus(); @@ -2096,6 +2103,32 @@ QStringList MainWindow::findFiles(const QString &path, const std::function MainWindow::findFileInfos(const QString &path, const std::function &filter) const +{ + QList result; + DirectoryEntry *dir = m_DirectoryStructure->findSubDirectoryRecursive(ToWString(path)); + if (dir != NULL) { + std::vector files = dir->getFiles(); + foreach (FileEntry::Ptr file, files) { + FileInfo info; + info.filePath = ToQString(file->getFullPath()); + bool fromArchive = false; + info.origins.append(ToQString(m_DirectoryStructure->getOriginByID(file->getOrigin(fromArchive)).getName())); + info.archive = fromArchive ? ToQString(file->getArchive()) : ""; + foreach (int idx, file->getAlternatives()) { + info.origins.append(ToQString(m_DirectoryStructure->getOriginByID(idx).getName())); + } + + if (filter(info)) { + result.append(info); + } + } + } else { + qWarning("directory %s not found", qPrintable(path)); + } + return result; +} + IDownloadManager *MainWindow::downloadManager() { return &m_DownloadManager; @@ -2161,6 +2194,9 @@ std::vector MainWindow::activeProblems() const if (m_UnloadedPlugins.size() != 0) { problems.push_back(PROBLEM_PLUGINSNOTLOADED); } + if (m_PluginList.enabledCount() > 256) { + problems.push_back(PROBLEM_TOOMANYPLUGINS); + } return problems; } @@ -2170,6 +2206,9 @@ QString MainWindow::shortDescription(unsigned int key) const case PROBLEM_PLUGINSNOTLOADED: { return tr("Some plugins could not be loaded"); } break; + case PROBLEM_TOOMANYPLUGINS: { + return tr("Too many esps and esms enabled"); + } break; default: { return tr("Description missing"); } break; @@ -2187,6 +2226,10 @@ QString MainWindow::fullDescription(unsigned int key) const result += "
        "; return result; } break; + case PROBLEM_TOOMANYPLUGINS: { + return tr("The game doesn't allow more than 256 active plugins (including the official ones) to be loaded. You have to disable some unused plugins or " + "merge some plugins into one. You can find a guide here: http://wiki.step-project.com/Guide:Merging_Plugins"); + } break; default: { return tr("Description missing"); } break; @@ -3195,6 +3238,7 @@ void MainWindow::syncOverwrite() modInfo->testValid(); refreshDirectoryStructure(); } + } void MainWindow::createModFromOverwrite() diff --git a/src/mainwindow.h b/src/mainwindow.h index cf97d4f9..dfd2e571 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -98,7 +98,6 @@ public: void refreshBSAList(); void refreshDataTree(); void refreshSaveList(); - void refreshModList(); void setExecutablesList(const ExecutablesList &executablesList); @@ -135,11 +134,14 @@ public: virtual QString resolvePath(const QString &fileName) const; virtual QStringList listDirectories(const QString &directoryName) const; virtual QStringList findFiles(const QString &path, const std::function &filter) const; + virtual QList findFileInfos(const QString &path, const std::function &filter) const; + virtual MOBase::IDownloadManager *downloadManager(); virtual MOBase::IPluginList *pluginList(); virtual MOBase::IModList *modList(); virtual HANDLE startApplication(const QString &executable, const QStringList &args = QStringList(), const QString &cwd = "", const QString &profile = ""); virtual bool onAboutToRun(const std::function &func); + virtual void refreshModList(bool saveChanges = true); virtual std::vector activeProblems() const; virtual QString shortDescription(unsigned int key) const; @@ -274,6 +276,7 @@ private: private: static const unsigned int PROBLEM_PLUGINSNOTLOADED = 1; + static const unsigned int PROBLEM_TOOMANYPLUGINS = 2; private: diff --git a/src/moapplication.cpp b/src/moapplication.cpp index ba23808b..7e3104db 100644 --- a/src/moapplication.cpp +++ b/src/moapplication.cpp @@ -23,12 +23,15 @@ along with Mod Organizer. If not, see . #include #include #include +#include +#include MOApplication::MOApplication(int argc, char **argv) : QApplication(argc, argv) { connect(&m_StyleWatcher, SIGNAL(fileChanged(QString)), SLOT(updateStyle(QString))); + m_DefaultStyle = style()->objectName(); } @@ -42,11 +45,12 @@ bool MOApplication::setStyleFile(const QString &styleName) // set new stylesheet or clear it if (styleName.length() != 0) { QString styleSheetName = applicationDirPath() + "/" + MOBase::ToQString(AppConfig::stylesheetsPath()) + "/" + styleName; - if (!QFile::exists(styleSheetName)) { - return false; + if (QFile::exists(styleSheetName)) { + m_StyleWatcher.addPath(styleSheetName); + updateStyle(styleSheetName); + } else { + updateStyle(styleName); } - m_StyleWatcher.addPath(styleSheetName); - updateStyle(styleSheetName); } else { setStyleSheet(""); } @@ -74,11 +78,18 @@ bool MOApplication::notify(QObject *receiver, QEvent *event) void MOApplication::updateStyle(const QString &fileName) { - QFile file(fileName); - if (file.open(QFile::ReadOnly)) { - setStyleSheet(file.readAll()); + if (fileName == "Plastique") { + setStyle(new QPlastiqueStyle); + setStyleSheet(""); + } else if (fileName == "Cleanlooks") { + setStyle(new QCleanlooksStyle); + setStyleSheet(""); } else { - qDebug("no stylesheet"); + setStyle(m_DefaultStyle); + if (QFile::exists(fileName)) { + setStyleSheet(QString("file:///%1").arg(fileName)); + } else { + qWarning("invalid stylesheet: %s", qPrintable(fileName)); + } } - file.close(); } diff --git a/src/moapplication.h b/src/moapplication.h index dd7f5eab..645b9144 100644 --- a/src/moapplication.h +++ b/src/moapplication.h @@ -43,6 +43,8 @@ private slots: private: QFileSystemWatcher m_StyleWatcher; + QString m_DefaultStyle; + }; diff --git a/src/modinfodialog.ui b/src/modinfodialog.ui index 2fdbe5f3..d0039a95 100644 --- a/src/modinfodialog.ui +++ b/src/modinfodialog.ui @@ -209,7 +209,7 @@ 0 0 - 668 + 676 126 @@ -223,16 +223,7 @@ 0 - - 0 - - - 0 - - - 0 - - + 0 @@ -293,7 +284,7 @@ Most mods do not have optional esps, so chances are good you are looking at an e - + :/MO/gui/resources/go-up.png:/MO/gui/resources/go-up.png @@ -322,7 +313,7 @@ Most mods do not have optional esps, so chances are good you are looking at an e - + :/MO/gui/resources/go-down.png:/MO/gui/resources/go-down.png @@ -525,9 +516,9 @@ Most mods do not have optional esps, so chances are good you are looking at an e - + - + Primary Category @@ -542,7 +533,7 @@ Most mods do not have optional esps, so chances are good you are looking at an e - + :/MO/gui/resources/internet-web-browser.png:/MO/gui/resources/internet-web-browser.png @@ -634,7 +625,7 @@ p, li { white-space: pre-wrap; } - + :/MO/gui/refresh:/MO/gui/refresh @@ -660,7 +651,7 @@ p, li { white-space: pre-wrap; } <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:7.8pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"><br /></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"><br /></p></body></html> @@ -696,7 +687,7 @@ p, li { white-space: pre-wrap; } Endorse - + :/MO/gui/icon_favorite:/MO/gui/icon_favorite @@ -791,8 +782,6 @@ p, li { white-space: pre-wrap; } - - - + diff --git a/src/modlist.cpp b/src/modlist.cpp index eac02372..b35d6ad2 100644 --- a/src/modlist.cpp +++ b/src/modlist.cpp @@ -186,7 +186,12 @@ QVariant ModList::data(const QModelIndex &modelIndex, int role) const return QVariant(); } } else if (column == COL_INSTALLTIME) { - return modInfo->creationTime(); + // display installation time for mods that can be updated + if (modInfo->canBeUpdated()) { + return modInfo->creationTime(); + } else { + return QVariant(); + } } else { return tr("invalid"); } diff --git a/src/modlist.h b/src/modlist.h index 8cab7f3e..cc5955d0 100644 --- a/src/modlist.h +++ b/src/modlist.h @@ -275,6 +275,10 @@ private: SignalModStateChanged m_ModStateChanged; + + // QAbstractItemModel interface + + // IModList interface }; #endif // MODLIST_H diff --git a/src/organizer.qbs b/src/organizer.qbs index fdfb914c..2b7f45fc 100644 --- a/src/organizer.qbs +++ b/src/organizer.qbs @@ -3,21 +3,41 @@ import qbs.base 1.0 Application { name: 'Organizer' - Depends { name: 'Qt.core' } - Depends { name: 'Qt.gui' } - Depends { name: 'Qt.network' } - Depends { name: 'Qt.declarative' } - Depends { name: 'UIBase' } + Depends { name: "Qt"; submodules: ["core", "gui", "network", "declarative"] } Depends { name: 'Shared' } + Depends { name: 'UIBase' } Depends { name: 'cpp' } - cpp.defines: [] - cpp.includePaths: [ '../shared', '../archive', '../uibase', qbs.getenv("BOOSTPATH") ] + cpp.defines: [ 'UNICODE', '_UNICODE' ] + cpp.libraryPaths: [ qbs.getenv('BOOSTPATH') + '/stage/lib' ] + cpp.includePaths: [ '../shared', '../archive', '../bsatk', '../esptk', '../uibase', qbs.getenv("BOOSTPATH") ] // '../bsatk', '../esptk', - files: [ - '*.cpp', - '*.h', - '*.ui' - ] + cpp.staticLibraries: [ 'shell32', 'user32', 'Version', 'shlwapi' ] + //LIBS += -lmo_shared -luibase -lshell32 -lole32 -luser32 -ladvapi32 -lgdi32 -lPsapi -lVersion -lbsatk -lshlwapi + + Group { + name: 'Headers' + files: [ '*.h' ] + } + + Group { + name: 'Sources' + files: [ '*.cpp' ] + } + + Group { + name: 'UI Files' + files: [ '*.ui' ] + } + + Group { + name: 'ESP Toolkit' + files: [ '../esptk/*.h', '../esptk/*.cpp' ] + } } + +// /nologo /c + + +// /Zi -GR -W3 diff --git a/src/pluginlist.cpp b/src/pluginlist.cpp index b0228849..8eeed76e 100644 --- a/src/pluginlist.cpp +++ b/src/pluginlist.cpp @@ -499,6 +499,17 @@ bool PluginList::saveLoadOrder(DirectoryEntry &directoryStructure) return true; } +int PluginList::enabledCount() const +{ + int enabled = 0; + foreach (auto info, m_ESPs) { + if (info.m_Enabled) { + ++enabled; + } + } + return enabled; +} + bool PluginList::isESPLocked(int index) const { return m_LockedOrder.find(m_ESPs.at(index).m_Name.toLower()) != m_LockedOrder.end(); @@ -713,6 +724,8 @@ QVariant PluginList::data(const QModelIndex &modelIndex, int role) const return QIcon(":/MO/gui/warning"); } else if (m_LockedOrder.find(m_ESPs[index].m_Name.toLower()) != m_LockedOrder.end()) { return QIcon(":/MO/gui/locked"); + } else if (m_ESPs[index].m_IsDummy && m_ESPs[index].m_Enabled) { + return QIcon(":/MO/gui/edit_clear"); } else { return QVariant(); } @@ -723,6 +736,8 @@ QVariant PluginList::data(const QModelIndex &modelIndex, int role) const if (m_ESPs[index].m_IsMaster) { result.setItalic(true); result.setWeight(QFont::Bold); + } else if (m_ESPs[index].m_IsDummy) { + result.setItalic(true); } return result; } else if (role == Qt::TextAlignmentRole) { @@ -744,6 +759,10 @@ QVariant PluginList::data(const QModelIndex &modelIndex, int role) const m_ESPs[index].m_MasterUnset.begin(), m_ESPs[index].m_MasterUnset.end(), std::inserter(enabledMasters, enabledMasters.end())); text += "
        " + tr("Enabled Masters") + ": " + SetJoin(enabledMasters, ", "); + if (m_ESPs[index].m_IsDummy) { + text += "
        This file is a dummy! It exists only so the bsa with the same name gets loaded. With MO you don't need this: " + "If you enable the archive with the same name in the \"Archive\" tab you can disable this plugin."; + } return text; } } else { @@ -1009,6 +1028,7 @@ PluginList::ESPInfo::ESPInfo(const QString &name, bool enabled, FILETIME time, c try { ESP::File file(ToWString(fullPath)); m_IsMaster = file.isMaster(); + m_IsDummy = file.isDummy(); std::set masters = file.masters(); for (auto iter = masters.begin(); iter != masters.end(); ++iter) { m_Masters.insert(QString(iter->c_str())); @@ -1016,5 +1036,6 @@ PluginList::ESPInfo::ESPInfo(const QString &name, bool enabled, FILETIME time, c } catch (const std::exception &e) { qCritical("failed to parse esp file %s: %s", qPrintable(fullPath), e.what()); m_IsMaster = false; + m_IsDummy = false; } } diff --git a/src/pluginlist.h b/src/pluginlist.h index 2af5a0df..2f1a3f5f 100644 --- a/src/pluginlist.h +++ b/src/pluginlist.h @@ -126,6 +126,12 @@ public: **/ bool saveLoadOrder(MOShared::DirectoryEntry &directoryStructure); + /** + * @return number of enabled plugins in the list + */ + int enabledCount() const; + + QString getName(int index) const { return m_ESPs.at(index).m_Name; } int getPriority(int index) const { return m_ESPs.at(index).m_Priority; } bool isESPLocked(int index) const; @@ -198,6 +204,7 @@ private: FILETIME m_Time; QString m_OriginName; bool m_IsMaster; + bool m_IsDummy; std::set m_Masters; mutable std::set m_MasterUnset; }; diff --git a/src/settings.cpp b/src/settings.cpp index 36a4f1f8..144049aa 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -422,6 +422,9 @@ void Settings::addLanguages(QComboBox *languageBox) void Settings::addStyles(QComboBox *styleBox) { styleBox->addItem("None", ""); + styleBox->addItem("Plastique", "Plastique"); + styleBox->addItem("Cleanlooks", "Cleanlooks"); + QDirIterator langIter(QCoreApplication::applicationDirPath() + "/" + ToQString(AppConfig::stylesheetsPath()), QStringList("*.qss"), QDir::Files); while (langIter.hasNext()) { langIter.next(); diff --git a/src/shared/shared.qbs b/src/shared/shared.qbs index 44b7539f..1fa471a0 100644 --- a/src/shared/shared.qbs +++ b/src/shared/shared.qbs @@ -1,16 +1,20 @@ import qbs.base 1.0 -Application { - name: 'Shared' +StaticLibrary { + name: { + print(qbs.getenv("BOOSTPATH") + "/stage/lib") + return 'Shared' + } Depends { name: 'cpp' } Depends { name: 'BSAToolkit' } cpp.defines: [] - cpp.libraryPaths: [ qbs.getenv("BOOSTPATH") ] - cpp.includePaths: [ 'bsatk', qbs.getenv("BOOSTPATH") ] + cpp.libraryPaths: [ qbs.getenv("BOOSTPATH") + "/stage/lib" ] + cpp.includePaths: [ '../bsatk', qbs.getenv("BOOSTPATH") ] files: [ '*.h', - '*.cpp' + '*.cpp', + '*.inc' ] } -- cgit v1.3.1 From 14ac234daf1680b0685f6bea3e74aa09dfcf38ef Mon Sep 17 00:00:00 2001 From: Tannin Date: Sat, 14 Dec 2013 13:23:13 +0100 Subject: - plugin list now highlights plugins with attached ini files - bugfix: opening nexus through the globe icon used the nmm.nexusmods.com url --- src/mainwindow.cpp | 2 +- src/pluginlist.cpp | 23 +++++++++++++++++------ src/pluginlist.h | 4 ++-- src/resources.qrc | 1 + src/resources/mail-attachment.png | Bin 0 -> 649 bytes src/shared/directoryentry.cpp | 4 ++-- src/shared/directoryentry.h | 9 ++++----- src/shared/util.cpp | 3 --- 8 files changed, 27 insertions(+), 19 deletions(-) create mode 100644 src/resources/mail-attachment.png (limited to 'src/pluginlist.h') diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 17f2de09..3a543e0b 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -4031,7 +4031,7 @@ void MainWindow::on_actionNexus_triggered() ::ShellExecuteW(NULL, L"open", nxmPath.c_str(), (std::wstring(L"reg ") + GameInfo::instance().getGameShortName() + L" \"" + executable + L"\"").c_str(), NULL, SW_SHOWNORMAL); - ::ShellExecuteW(NULL, L"open", GameInfo::instance().getNexusPage().c_str(), NULL, NULL, SW_SHOWNORMAL); + ::ShellExecuteW(NULL, L"open", GameInfo::instance().getNexusPage(false).c_str(), NULL, NULL, SW_SHOWNORMAL); ui->tabWidget->setCurrentIndex(4); } diff --git a/src/pluginlist.cpp b/src/pluginlist.cpp index 8eeed76e..20d4d357 100644 --- a/src/pluginlist.cpp +++ b/src/pluginlist.cpp @@ -146,7 +146,11 @@ void PluginList::refresh(const QString &profileName, const DirectoryEntry &baseD bool archive = false; try { FilesOrigin &origin = baseDirectory.getOriginByID(current->getOrigin(archive)); - m_ESPs.push_back(ESPInfo(filename, forceEnabled, current->getFileTime(), ToQString(origin.getName()), ToQString(current->getFullPath()))); + + QString iniPath = QFileInfo(filename).baseName() + ".ini"; + bool hasIni = baseDirectory.findFile(ToWString(iniPath)).get() != NULL; + + m_ESPs.push_back(ESPInfo(filename, forceEnabled, current->getFileTime(), ToQString(origin.getName()), ToQString(current->getFullPath()), hasIni)); } catch (const std::exception &e) { reportError(tr("failed to update esp info for file %1 (source id: %2), error: %3").arg(filename).arg(current->getOrigin(archive)).arg(e.what())); } @@ -724,7 +728,9 @@ QVariant PluginList::data(const QModelIndex &modelIndex, int role) const return QIcon(":/MO/gui/warning"); } else if (m_LockedOrder.find(m_ESPs[index].m_Name.toLower()) != m_LockedOrder.end()) { return QIcon(":/MO/gui/locked"); - } else if (m_ESPs[index].m_IsDummy && m_ESPs[index].m_Enabled) { + } else if (m_ESPs[index].m_HasIni) { + return QIcon(":/MO/gui/attachment"); + } else if (m_ESPs[index].m_IsDummy && m_ESPs[index].m_Enabled && !m_ESPs[index].m_HasIni) { return QIcon(":/MO/gui/edit_clear"); } else { return QVariant(); @@ -759,7 +765,10 @@ QVariant PluginList::data(const QModelIndex &modelIndex, int role) const m_ESPs[index].m_MasterUnset.begin(), m_ESPs[index].m_MasterUnset.end(), std::inserter(enabledMasters, enabledMasters.end())); text += "
        " + tr("Enabled Masters") + ": " + SetJoin(enabledMasters, ", "); - if (m_ESPs[index].m_IsDummy) { + if (m_ESPs[index].m_HasIni) { + text += "
        There is an ini file connected to this esp. Its settings will be added to your game settings, overwriting " + "in case of conflicts."; + } else if (m_ESPs[index].m_IsDummy) { text += "
        This file is a dummy! It exists only so the bsa with the same name gets loaded. With MO you don't need this: " "If you enable the archive with the same name in the \"Archive\" tab you can disable this plugin."; } @@ -1021,9 +1030,11 @@ bool PluginList::eventFilter(QObject *obj, QEvent *event) } -PluginList::ESPInfo::ESPInfo(const QString &name, bool enabled, FILETIME time, const QString &originName, const QString &fullPath) - : m_Name(name), m_Enabled(enabled), m_ForceEnabled(enabled), m_Removed(false), m_Priority(0), - m_LoadOrder(-1), m_Time(time), m_OriginName(originName) +PluginList::ESPInfo::ESPInfo(const QString &name, bool enabled, FILETIME time, + const QString &originName, const QString &fullPath, + bool hasIni) + : m_Name(name), m_Enabled(enabled), m_ForceEnabled(enabled), m_Removed(false), + m_Priority(0), m_LoadOrder(-1), m_Time(time), m_OriginName(originName), m_HasIni(hasIni) { try { ESP::File file(ToWString(fullPath)); diff --git a/src/pluginlist.h b/src/pluginlist.h index 2f1a3f5f..64c914df 100644 --- a/src/pluginlist.h +++ b/src/pluginlist.h @@ -131,7 +131,6 @@ public: */ int enabledCount() const; - QString getName(int index) const { return m_ESPs.at(index).m_Name; } int getPriority(int index) const { return m_ESPs.at(index).m_Priority; } bool isESPLocked(int index) const; @@ -193,7 +192,7 @@ private: struct ESPInfo { - ESPInfo(const QString &name, bool enabled, FILETIME time, const QString &originName, const QString &fullPath); + ESPInfo(const QString &name, bool enabled, FILETIME time, const QString &originName, const QString &fullPath, bool hasIni); QString m_Name; QString m_FullPath; bool m_Enabled; @@ -205,6 +204,7 @@ private: QString m_OriginName; bool m_IsMaster; bool m_IsDummy; + bool m_HasIni; std::set m_Masters; mutable std::set m_MasterUnset; }; diff --git a/src/resources.qrc b/src/resources.qrc index 3f27e2cc..1582a3f2 100644 --- a/src/resources.qrc +++ b/src/resources.qrc @@ -51,5 +51,6 @@ resources/accessories-text-editor.png resources/x-office-calendar.png resources/dialog-warning_16.png + resources/mail-attachment.png diff --git a/src/resources/mail-attachment.png b/src/resources/mail-attachment.png new file mode 100644 index 00000000..529bb7f5 Binary files /dev/null and b/src/resources/mail-attachment.png differ diff --git a/src/shared/directoryentry.cpp b/src/shared/directoryentry.cpp index 685e14a9..a232ea19 100644 --- a/src/shared/directoryentry.cpp +++ b/src/shared/directoryentry.cpp @@ -759,7 +759,7 @@ DirectoryEntry *DirectoryEntry::findSubDirectoryRecursive(const std::wstring &pa } -const FileEntry::Ptr DirectoryEntry::findFile(const std::wstring &name) +const FileEntry::Ptr DirectoryEntry::findFile(const std::wstring &name) const { auto iter = m_Files.find(name); if (iter != m_Files.end()) { @@ -840,7 +840,7 @@ FileEntry::Ptr FileRegister::createFile(const std::wstring &name, DirectoryEntry } -FileEntry::Ptr FileRegister::getFile(FileEntry::Index index) +FileEntry::Ptr FileRegister::getFile(FileEntry::Index index) const { auto iter = m_Files.find(index); if (iter != m_Files.end()) { diff --git a/src/shared/directoryentry.h b/src/shared/directoryentry.h index 1ad9816c..22f00a74 100644 --- a/src/shared/directoryentry.h +++ b/src/shared/directoryentry.h @@ -168,7 +168,7 @@ public: bool indexValid(FileEntry::Index index) const; FileEntry::Ptr createFile(const std::wstring &name, DirectoryEntry *parent); - FileEntry::Ptr getFile(FileEntry::Index index); + FileEntry::Ptr getFile(FileEntry::Index index) const; void removeFile(FileEntry::Index index); void removeOrigin(FileEntry::Index index, int originID); @@ -233,11 +233,10 @@ public: * @param name name of the file * @return fileentry object for the file or NULL if no file matches */ - const FileEntry::Ptr findFile(const std::wstring &name); + const FileEntry::Ptr findFile(const std::wstring &name) const; - /** search through this directory and all subdirectories for a file by the specified name. - if directory is not NULL, the referenced variable will be set to true if the path refers to a directory. - the returned pointer is NULL in that case */ + /** search through this directory and all subdirectories for a file by the specified name (relative path). + if directory is not NULL, the referenced variable will be set to the path containing the file */ const FileEntry::Ptr searchFile(const std::wstring &path, const DirectoryEntry **directory) const; void insertFile(const std::wstring &filePath, FilesOrigin &origin, FILETIME fileTime); diff --git a/src/shared/util.cpp b/src/shared/util.cpp index 4378e03c..22657e6c 100644 --- a/src/shared/util.cpp +++ b/src/shared/util.cpp @@ -69,7 +69,6 @@ std::string ToString(const std::wstring &source, bool utf8) ::WideCharToMultiByte(CP_UTF8, 0, source.c_str(), -1, buffer, MAX_PATH, NULL, NULL); } else { ::WideCharToMultiByte(GetACP(), 0, source.c_str(), -1, buffer, MAX_PATH, NULL, NULL); -// wcstombs(buffer, source.c_str(), MAX_PATH); } return std::string(buffer); } @@ -80,9 +79,7 @@ std::wstring ToWString(const std::string &source, bool utf8) if (utf8) { ::MultiByteToWideChar(CP_UTF8, 0, source.c_str(), -1, buffer, MAX_PATH); } else { - // codepage encoding ::MultiByteToWideChar(GetACP(), 0, source.c_str(), -1, buffer, MAX_PATH); -// mbstowcs(buffer, source.c_str(), MAX_PATH); } return std::wstring(buffer); } -- cgit v1.3.1 From e597823337c858f2985c615ee5147f47567991ee Mon Sep 17 00:00:00 2001 From: Tannin Date: Thu, 23 Jan 2014 00:05:46 +0100 Subject: - boss integration - plugin list can now also display multiple flags for a file (like the mod list) - changed some compiler&linker settings to produce smaller binaries --- src/ModOrganizer.pro | 3 +- src/aboutdialog.cpp | 2 + src/icondelegate.cpp | 30 +-- src/icondelegate.h | 5 +- src/lockeddialog.cpp | 104 ++++++----- src/lockeddialog.h | 96 +++++----- src/logbuffer.cpp | 3 +- src/main.cpp | 5 +- src/mainwindow.cpp | 26 ++- src/mainwindow.h | 1 + src/mainwindow.ui | 82 +++++++-- src/modflagicondelegate.cpp | 50 +++++ src/modflagicondelegate.h | 18 ++ src/organizer.pro | 32 ++-- src/pdll.h | 402 +++++++++++++++++++++++++++++++++++++++++ src/pluginflagicondelegate.cpp | 24 +++ src/pluginflagicondelegate.h | 17 ++ src/pluginlist.cpp | 270 +++++++++++++++++++++++---- src/pluginlist.h | 95 +++++++++- src/pluginlistsortproxy.cpp | 5 - src/profile.cpp | 34 +--- src/resources.qrc | 2 +- src/safewritefile.cpp | 48 +++++ src/safewritefile.h | 51 ++++++ 24 files changed, 1179 insertions(+), 226 deletions(-) create mode 100644 src/modflagicondelegate.cpp create mode 100644 src/modflagicondelegate.h create mode 100644 src/pdll.h create mode 100644 src/pluginflagicondelegate.cpp create mode 100644 src/pluginflagicondelegate.h create mode 100644 src/safewritefile.cpp create mode 100644 src/safewritefile.h (limited to 'src/pluginlist.h') diff --git a/src/ModOrganizer.pro b/src/ModOrganizer.pro index dbf6ab6e..05b05855 100644 --- a/src/ModOrganizer.pro +++ b/src/ModOrganizer.pro @@ -13,11 +13,12 @@ SUBDIRS = bsatk \ nxmhandler \ BossDummy \ pythonRunner \ + boss_modified \ esptk plugins.depends = pythonRunner hookdll.depends = shared -organizer.depends = shared uibase plugins +organizer.depends = shared uibase plugins boss_modified CONFIG(debug, debug|release) { DESTDIR = outputd diff --git a/src/aboutdialog.cpp b/src/aboutdialog.cpp index c7f95640..a8f9b4db 100644 --- a/src/aboutdialog.cpp +++ b/src/aboutdialog.cpp @@ -44,6 +44,8 @@ AboutDialog::AboutDialog(const QString &version, QWidget *parent) addLicense("7-zip", LICENSE_LGPL3); addLicense("ZLib", LICENSE_ZLIB); addLicense("NIF File Format Library", LICENSE_BSD3); + addLicense("BOSS (modified)", LICENSE_GPL3); + addLicense("Alphanum Algorithm", LICENSE_ZLIB); ui->nameLabel->setText(QString("%1 %2").arg(ui->nameLabel->text()).arg(version)); #ifdef HGID diff --git a/src/icondelegate.cpp b/src/icondelegate.cpp index 2540e1d5..048b09f9 100644 --- a/src/icondelegate.cpp +++ b/src/icondelegate.cpp @@ -29,38 +29,17 @@ IconDelegate::IconDelegate(QObject *parent) } -QIcon IconDelegate::getFlagIcon(ModInfo::EFlag flag) const -{ - switch (flag) { - case ModInfo::FLAG_BACKUP: return QIcon(":/MO/gui/emblem_backup"); - case ModInfo::FLAG_INVALID: return QIcon(":/MO/gui/emblem_problem"); - case ModInfo::FLAG_NOTENDORSED: return QIcon(":/MO/gui/emblem_notendorsed"); - case ModInfo::FLAG_NOTES: return QIcon(":/MO/gui/emblem_notes"); - case ModInfo::FLAG_CONFLICT_OVERWRITE: return QIcon(":/MO/gui/emblem_conflict_overwrite"); - case ModInfo::FLAG_CONFLICT_OVERWRITTEN: return QIcon(":/MO/gui/emblem_conflict_overwritten"); - case ModInfo::FLAG_CONFLICT_MIXED: return QIcon(":/MO/gui/emblem_conflict_mixed"); - case ModInfo::FLAG_CONFLICT_REDUNDANT: return QIcon(":MO/gui/emblem_conflict_redundant"); - default: return QIcon(); - } -} - - void IconDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { QStyledItemDelegate::paint(painter, option, index); - QVariant modid = index.data(Qt::UserRole + 1); - if (!modid.isValid()) { - return; - } - ModInfo::Ptr info = ModInfo::getByIndex(modid.toInt()); - std::vector flags = info->getFlags(); + + QList icons = getIcons(index); int x = 4; painter->save(); painter->translate(option.rect.topLeft()); - for (auto iter = flags.begin(); iter != flags.end(); ++iter) { - QIcon temp = getFlagIcon(*iter); - painter->drawPixmap(x, 2, 16, 16, temp.pixmap(QSize(16, 16))); + for (auto iter = icons.begin(); iter != icons.end(); ++iter) { + painter->drawPixmap(x, 2, 16, 16, iter->pixmap(QSize(16, 16))); x += 20; } @@ -70,6 +49,7 @@ void IconDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, QSize IconDelegate::sizeHint(const QStyleOptionViewItem&, const QModelIndex &modelIndex) const { + int count = getNumIcons(modelIndex); unsigned int index = modelIndex.data(Qt::UserRole + 1).toInt(); if (index < ModInfo::getNumMods()) { ModInfo::Ptr info = ModInfo::getByIndex(index); diff --git a/src/icondelegate.h b/src/icondelegate.h index dd9f9dfc..cf292443 100644 --- a/src/icondelegate.h +++ b/src/icondelegate.h @@ -34,13 +34,16 @@ public: virtual void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const; virtual QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const; + signals: public slots: private: - QIcon getFlagIcon(ModInfo::EFlag flag) const; + virtual QList getIcons(const QModelIndex &index) const = 0; + virtual size_t getNumIcons(const QModelIndex &index) const = 0; + private: diff --git a/src/lockeddialog.cpp b/src/lockeddialog.cpp index 4c19c615..065d9270 100644 --- a/src/lockeddialog.cpp +++ b/src/lockeddialog.cpp @@ -17,51 +17,59 @@ You should have received a copy of the GNU General Public License along with Mod Organizer. If not, see . */ -#include "lockeddialog.h" -#include "ui_lockeddialog.h" -#include - - -LockedDialog::LockedDialog(QWidget *parent) : - QDialog(parent), - ui(new Ui::LockedDialog), m_UnlockClicked(false) -{ - ui->setupUi(this); - - this->setWindowFlags(this->windowFlags() | Qt::ToolTip | Qt::FramelessWindowHint); - - if (parent != NULL) { - QPoint position = parent->mapToGlobal(QPoint(parent->width() / 2, parent->height() / 2)); - position.rx() -= this->width() / 2; - position.ry() -= this->height() / 2; - move(position); - } -} - -LockedDialog::~LockedDialog() -{ - delete ui; -} - - -void LockedDialog::setProcessName(const QString &name) -{ - ui->processLabel->setText(name); -} - - -void LockedDialog::resizeEvent(QResizeEvent *event) -{ - QWidget *par = parentWidget(); - if (par != NULL) { - QPoint position = par->mapToGlobal(QPoint(par->width() / 2, par->height() / 2)); - position.rx() -= event->size().width() / 2; - position.ry() -= event->size().height() / 2; - move(position); - } -} - -void LockedDialog::on_unlockButton_clicked() -{ - m_UnlockClicked = true; -} +#include "lockeddialog.h" +#include "ui_lockeddialog.h" +#include + + +LockedDialog::LockedDialog(QWidget *parent, const QString &text, bool unlockButton) + : QDialog(parent) + , ui(new Ui::LockedDialog) + , m_UnlockClicked(false) +{ + ui->setupUi(this); + + this->setWindowFlags(this->windowFlags() | Qt::ToolTip | Qt::FramelessWindowHint); + + if (parent != NULL) { + QPoint position = parent->mapToGlobal(QPoint(parent->width() / 2, parent->height() / 2)); + position.rx() -= this->width() / 2; + position.ry() -= this->height() / 2; + move(position); + } + + if (text.length() > 0) { + ui->label->setText(text); + } + if (!unlockButton) { + ui->unlockButton->hide(); + } +} + +LockedDialog::~LockedDialog() +{ + delete ui; +} + + +void LockedDialog::setProcessName(const QString &name) +{ + ui->processLabel->setText(name); +} + + +void LockedDialog::resizeEvent(QResizeEvent *event) +{ + QWidget *par = parentWidget(); + if (par != NULL) { + QPoint position = par->mapToGlobal(QPoint(par->width() / 2, par->height() / 2)); + position.rx() -= event->size().width() / 2; + position.ry() -= event->size().height() / 2; + move(position); + } +} + +void LockedDialog::on_unlockButton_clicked() +{ + m_UnlockClicked = true; +} diff --git a/src/lockeddialog.h b/src/lockeddialog.h index 5be398bc..0f3b29b0 100644 --- a/src/lockeddialog.h +++ b/src/lockeddialog.h @@ -17,51 +17,51 @@ You should have received a copy of the GNU General Public License along with Mod Organizer. If not, see . */ -#ifndef LOCKEDDIALOG_H -#define LOCKEDDIALOG_H - -#include - -namespace Ui { - class LockedDialog; -} - -/** - * a small borderless dialog displayed while the Mod Organizer UI is locked - * The dialog contains only a label and a button to force the UI to be unlocked - * - * The UI gets locked while running external applications since they may modify the - * data on which Mod Organizer works. After the UI is unlocked (manually or after the - * external application closed) MO will refresh all of its data sources - **/ -class LockedDialog : public QDialog -{ - Q_OBJECT - -public: - explicit LockedDialog(QWidget *parent = 0); - ~LockedDialog(); - - /** - * @brief see if the user clicked the unlock-button - * - * @return true if the user clicked the unlock button - **/ - bool unlockClicked() const { return m_UnlockClicked; } - - void setProcessName(const QString &name); - -protected: - - virtual void resizeEvent(QResizeEvent *event); - -private slots: - - void on_unlockButton_clicked(); - -private: - Ui::LockedDialog *ui; - bool m_UnlockClicked; -}; - -#endif // LOCKEDDIALOG_H +#ifndef LOCKEDDIALOG_H +#define LOCKEDDIALOG_H + +#include + +namespace Ui { + class LockedDialog; +} + +/** + * a small borderless dialog displayed while the Mod Organizer UI is locked + * The dialog contains only a label and a button to force the UI to be unlocked + * + * The UI gets locked while running external applications since they may modify the + * data on which Mod Organizer works. After the UI is unlocked (manually or after the + * external application closed) MO will refresh all of its data sources + **/ +class LockedDialog : public QDialog +{ + Q_OBJECT + +public: + explicit LockedDialog(QWidget *parent = 0, const QString &text = "", bool unlockButton = true); + ~LockedDialog(); + + /** + * @brief see if the user clicked the unlock-button + * + * @return true if the user clicked the unlock button + **/ + bool unlockClicked() const { return m_UnlockClicked; } + + void setProcessName(const QString &name); + +protected: + + virtual void resizeEvent(QResizeEvent *event); + +private slots: + + void on_unlockButton_clicked(); + +private: + Ui::LockedDialog *ui; + bool m_UnlockClicked; +}; + +#endif // LOCKEDDIALOG_H diff --git a/src/logbuffer.cpp b/src/logbuffer.cpp index 4f72e551..689d2b55 100644 --- a/src/logbuffer.cpp +++ b/src/logbuffer.cpp @@ -21,6 +21,7 @@ along with Mod Organizer. If not, see . #include "report.h" #include #include +#include #include QScopedPointer LogBuffer::s_Instance; @@ -124,8 +125,6 @@ char LogBuffer::msgTypeID(QtMsgType type) } } -#include - void LogBuffer::log(QtMsgType type, const char *message) { QMutexLocker guard(&s_Mutex); diff --git a/src/main.cpp b/src/main.cpp index 8b74ba83..05d68ec7 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -119,7 +119,8 @@ bool bootstrap() QDir::fromNativeSeparators(ToQString(gameInfo.getDownloadDir())), QDir::fromNativeSeparators(ToQString(gameInfo.getOverwriteDir())), QDir::fromNativeSeparators(ToQString(gameInfo.getLogDir())), - QDir::fromNativeSeparators(ToQString(gameInfo.getTutorialDir())) + QDir::fromNativeSeparators(ToQString(gameInfo.getTutorialDir())), + QDir::fromNativeSeparators(ToQString(gameInfo.getOrganizerDirectory()) + "/boss") }; static const int NUM_DIRECTORIES = sizeof(dirNames) / sizeof(QString); @@ -284,7 +285,7 @@ int main(int argc, char *argv[]) SetUnhandledExceptionFilter(MyUnhandledExceptionFilter); - LogBuffer::init(20, QtDebugMsg, application.applicationDirPath() + "/logs/mo_interface.log"); + LogBuffer::init(200, QtDebugMsg, application.applicationDirPath() + "/logs/mo_interface.log"); qDebug("Working directory: %s", qPrintable(QDir::toNativeSeparators(QDir::currentPath()))); qDebug("MO at: %s", qPrintable(QDir::toNativeSeparators(application.applicationDirPath()))); diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 582bc283..0f98989c 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -48,7 +48,8 @@ along with Mod Organizer. If not, see . #include "filedialogmemory.h" #include "questionboxmemory.h" #include "tutorialmanager.h" -#include "icondelegate.h" +#include "modflagicondelegate.h" +#include "pluginflagicondelegate.h" #include "credentialsdialog.h" #include "selectiondialog.h" #include "csvbuilder.h" @@ -104,6 +105,7 @@ along with Mod Organizer. If not, see . #include #include #include +#include #ifdef TEST_MODELS @@ -186,7 +188,7 @@ MainWindow::MainWindow(const QString &exeName, QSettings &initSettings, QWidget ui->modList->setModel(m_ModListSortProxy); ui->modList->sortByColumn(ModList::COL_PRIORITY, Qt::AscendingOrder); - ui->modList->setItemDelegateForColumn(ModList::COL_FLAGS, new IconDelegate(ui->modList)); + ui->modList->setItemDelegateForColumn(ModList::COL_FLAGS, new ModFlagIconDelegate(ui->modList)); //ui->modList->setAcceptDrops(true); ui->modList->header()->installEventFilter(&m_ModList); if (initSettings.contains("mod_list_state")) { @@ -206,6 +208,7 @@ MainWindow::MainWindow(const QString &exeName, QSettings &initSettings, QWidget ui->espList->setModel(m_PluginListSortProxy); ui->espList->sortByColumn(PluginList::COL_PRIORITY, Qt::AscendingOrder); + ui->espList->setItemDelegateForColumn(PluginList::COL_FLAGS, new PluginFlagIconDelegate(ui->espList)); if (initSettings.contains("plugin_list_state")) { ui->espList->header()->restoreState(initSettings.value("plugin_list_state").toByteArray()); } @@ -1314,6 +1317,8 @@ HANDLE MainWindow::spawnBinaryDirect(const QFileInfo &binary, const QString &arg QCoreApplication::processEvents(); } + m_CurrentProfile->writeModlistNow(true); + // TODO: should also pass arguments if (m_AboutToRun(binary.absoluteFilePath())) { return startBinary(binary, arguments, profileName, m_Settings.logLevel(), currentDirectory, true); @@ -1778,7 +1783,7 @@ void MainWindow::refreshESPList() m_CurrentProfile->getLoadOrderFileName(), m_CurrentProfile->getLockedOrderFileName()); } catch (const std::exception &e) { - reportError(tr("Failed to refresh list of esps: %s").arg(e.what())); + reportError(tr("Failed to refresh list of esps: %1").arg(e.what())); } } @@ -5123,3 +5128,18 @@ void MainWindow::on_showHiddenBox_toggled(bool checked) m_DownloadManager.setShowHidden(checked); } +void MainWindow::on_bossButton_clicked() +{ + try { + LockedDialog dialog(this, tr("BOSS working"), false); + dialog.show(); + qApp->processEvents(); + m_PluginList.bossSort(); + + savePluginList(); + dialog.hide(); + } catch (const std::exception &e) { + reportError(tr("failed to run boss: %1").arg(e.what())); + ui->bossButton->setEnabled(false); + } +} diff --git a/src/mainwindow.h b/src/mainwindow.h index c01ce767..b247b924 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -564,6 +564,7 @@ private slots: // ui slots void on_linkButton_pressed(); void on_showHiddenBox_toggled(bool checked); void on_bsaList_itemChanged(QTreeWidgetItem *item, int column); + void on_bossButton_clicked(); }; #endif // MAINWINDOW_H diff --git a/src/mainwindow.ui b/src/mainwindow.ui index 5c89a7e0..f3bb425c 100644 --- a/src/mainwindow.ui +++ b/src/mainwindow.ui @@ -31,7 +31,16 @@ 4 - + + 6 + + + 6 + + + 6 + + 6 @@ -705,14 +714,25 @@ p, li { white-space: pre-wrap; } - - - - - - Namefilter - - + + + + + + + + Namefilter + + + + + + + Sort + + + + @@ -721,7 +741,16 @@ p, li { white-space: pre-wrap; } Archives - + + 6 + + + 6 + + + 6 + + 6 @@ -801,7 +830,16 @@ BSAs checked here are loaded in such a way that your installation order is obeye Data - + + 6 + + + 6 + + + 6 + + 6 @@ -871,7 +909,16 @@ BSAs checked here are loaded in such a way that your installation order is obeye Saves - + + 6 + + + 6 + + + 6 + + 6 @@ -900,7 +947,16 @@ p, li { white-space: pre-wrap; } Downloads - + + 2 + + + 2 + + + 2 + + 2 diff --git a/src/modflagicondelegate.cpp b/src/modflagicondelegate.cpp new file mode 100644 index 00000000..db69eb52 --- /dev/null +++ b/src/modflagicondelegate.cpp @@ -0,0 +1,50 @@ +#include "modflagicondelegate.h" +#include + + +ModFlagIconDelegate::ModFlagIconDelegate(QObject *parent) + : IconDelegate(parent) +{ +} + +QList ModFlagIconDelegate::getIcons(const QModelIndex &index) const +{ + QList result; + QVariant modid = index.data(Qt::UserRole + 1); + if (modid.isValid()) { + ModInfo::Ptr info = ModInfo::getByIndex(modid.toInt()); + std::vector flags = info->getFlags(); + + for (auto iter = flags.begin(); iter != flags.end(); ++iter) { + result.append(getFlagIcon(*iter)); + } + } + return result; +} + +QIcon ModFlagIconDelegate::getFlagIcon(ModInfo::EFlag flag) const +{ + switch (flag) { + case ModInfo::FLAG_BACKUP: return QIcon(":/MO/gui/emblem_backup"); + case ModInfo::FLAG_INVALID: return QIcon(":/MO/gui/emblem_problem"); + case ModInfo::FLAG_NOTENDORSED: return QIcon(":/MO/gui/emblem_notendorsed"); + case ModInfo::FLAG_NOTES: return QIcon(":/MO/gui/emblem_notes"); + case ModInfo::FLAG_CONFLICT_OVERWRITE: return QIcon(":/MO/gui/emblem_conflict_overwrite"); + case ModInfo::FLAG_CONFLICT_OVERWRITTEN: return QIcon(":/MO/gui/emblem_conflict_overwritten"); + case ModInfo::FLAG_CONFLICT_MIXED: return QIcon(":/MO/gui/emblem_conflict_mixed"); + case ModInfo::FLAG_CONFLICT_REDUNDANT: return QIcon(":MO/gui/emblem_conflict_redundant"); + default: return QIcon(); + } +} + +size_t ModFlagIconDelegate::getNumIcons(const QModelIndex &index) const +{ + unsigned int modIdx = index.data(Qt::UserRole + 1).toInt(); + if (modIdx < ModInfo::getNumMods()) { + ModInfo::Ptr info = ModInfo::getByIndex(modIdx); + return info->getFlags().size(); + } else { + return 0; + } +} + diff --git a/src/modflagicondelegate.h b/src/modflagicondelegate.h new file mode 100644 index 00000000..800e2741 --- /dev/null +++ b/src/modflagicondelegate.h @@ -0,0 +1,18 @@ +#ifndef MODFLAGICONDELEGATE_H +#define MODFLAGICONDELEGATE_H + +#include "icondelegate.h" + +class ModFlagIconDelegate : public IconDelegate +{ +public: + explicit ModFlagIconDelegate(QObject *parent = 0); +private: + virtual QList getIcons(const QModelIndex &index) const; + virtual size_t getNumIcons(const QModelIndex &index) const; + + QIcon getFlagIcon(ModInfo::EFlag flag) const; + +}; + +#endif // MODFLAGICONDELEGATE_H diff --git a/src/organizer.pro b/src/organizer.pro index fd72dea3..9a9d0da3 100644 --- a/src/organizer.pro +++ b/src/organizer.pro @@ -81,7 +81,10 @@ SOURCES += \ previewgenerator.cpp \ previewdialog.cpp \ aboutdialog.cpp \ - json.cpp + json.cpp \ + safewritefile.cpp \ + modflagicondelegate.cpp \ + pluginflagicondelegate.cpp HEADERS += \ @@ -152,7 +155,11 @@ HEADERS += \ previewgenerator.h \ previewdialog.h \ aboutdialog.h \ - json.h + json.h \ + safewritefile.h\ + pdll.h \ + modflagicondelegate.h \ + pluginflagicondelegate.h FORMS += \ transfersavesdialog.ui \ @@ -185,24 +192,28 @@ FORMS += \ previewdialog.ui \ aboutdialog.ui -INCLUDEPATH += ../shared ../archive ../uibase ../bsatk ../esptk "$(BOOSTPATH)" +INCLUDEPATH += ../shared ../archive ../uibase ../bsatk ../esptk ../boss_modified/boss-api "$(BOOSTPATH)" LIBS += -L"$(BOOSTPATH)/stage/lib" CONFIG(debug, debug|release) { OUTDIR = $$OUT_PWD/debug DSTDIR = $$PWD/../../outputd - LIBS += -L$$OUT_PWD/../shared/debug -L$$OUT_PWD/../bsatk/debug - LIBS += -L$$OUT_PWD/../uibase/debug - LIBS += -lDbgHelp + LIBS += -L$$OUT_PWD/../shared/debug + LIBS += -L$$OUT_PWD/../bsatk/debug + LIBS += -L$$OUT_PWD/../uibase/debug + LIBS += -L$$OUT_PWD/../boss_modified/debug + LIBS += -lDbgHelp } else { OUTDIR = $$OUT_PWD/release DSTDIR = $$PWD/../../output - LIBS += -L$$OUT_PWD/../shared/release -L$$OUT_PWD/../bsatk/release + LIBS += -L$$OUT_PWD/../shared/release + LIBS += -L$$OUT_PWD/../bsatk/release LIBS += -L$$OUT_PWD/../uibase/release - QMAKE_CXXFLAGS += /Zi + LIBS += -L$$OUT_PWD/../boss_modified/release + QMAKE_CXXFLAGS += /Zi /GL # QMAKE_CXXFLAGS -= -O2 - QMAKE_LFLAGS += /DEBUG + QMAKE_LFLAGS += /DEBUG /LTCG /OPT:REF /OPT:ICF } #QMAKE_CXXFLAGS_WARN_ON -= -W3 @@ -299,9 +310,6 @@ OTHER_FILES += \ tutorials/tutorial_window_installer.js \ tutorials/tutorials_installdialog.qml -INCLUDEPATH += "$(ZLIBPATH)" "$(ZLIBPATH)/build" "$(BOOSTPATH)" -LIBS += -L"$(ZLIBPATH)/build" -lzlibstatic - # leak detection with vld #INCLUDEPATH += "E:/Visual Leak Detector/include" diff --git a/src/pdll.h b/src/pdll.h new file mode 100644 index 00000000..6e1d06f3 --- /dev/null +++ b/src/pdll.h @@ -0,0 +1,402 @@ +//////////////////////////////////////////////////////////////////////////////////////////////////// +// Class: PDll // +// Authors: MicHael Galkovsky // +// Date: April 14, 1998 // +// Company: Pervasive Software // +// Purpose: Base class to wrap dynamic use of dll // +////////////////////////////////////////////////////////////////////////////////////////////// + +#if !defined (_PDLL_H_) +#define _PDLL_H_ + +#include +#include + +#include +#include +#include + + +#define FUNC_LOADED 3456 + +//function declarations according to the number of parameters +//define the type +//declare a variable of that type +//declare a member function by the same name as the dll function +//check for dll handle +//if this is the first call to the function then try to load it +//if not then if the function was loaded successfully make a call to it +//otherwise return a NULL cast to the return parameter. + +#define DECLARE_FUNCTION0(CallType, retVal, FuncName) \ + typedef retVal (CallType* TYPE_##FuncName)(); \ + TYPE_##FuncName m_##FuncName; \ + short m_is##FuncName; \ + retVal FuncName() \ + { \ + if (m_dllHandle) \ + { \ + if (FUNC_LOADED != m_is##FuncName) \ + {\ + m_##FuncName = NULL; \ + m_##FuncName = (TYPE_##FuncName)GetProcAddress(m_dllHandle, #FuncName); \ + m_is##FuncName = FUNC_LOADED;\ + }\ + if (NULL != m_##FuncName) \ + return m_##FuncName(); \ + else \ + return (retVal)NULL; \ + } \ + else \ + return (retVal)NULL; \ + } + +#define DECLARE_FUNCTION1(CallType,retVal, FuncName, Param1) \ + typedef retVal (CallType* TYPE_##FuncName)(Param1); \ + TYPE_##FuncName m_##FuncName; \ + short m_is##FuncName;\ + retVal FuncName(Param1 p1) \ + { \ + if (m_dllHandle) \ + { \ + if (FUNC_LOADED != m_is##FuncName) \ + {\ + m_##FuncName = NULL; \ + m_##FuncName = (TYPE_##FuncName)GetProcAddress(m_dllHandle, #FuncName); \ + m_is##FuncName = FUNC_LOADED;\ + }\ + if (NULL != m_##FuncName) \ + return m_##FuncName(p1); \ + else \ + return (retVal)NULL; \ + } \ + else \ + return (retVal)NULL; \ + } + +#define DECLARE_FUNCTION2(CallType,retVal, FuncName, Param1, Param2) \ + typedef retVal (CallType* TYPE_##FuncName)(Param1, Param2); \ + TYPE_##FuncName m_##FuncName; \ + short m_is##FuncName;\ + retVal FuncName (Param1 p1, Param2 p2) \ + {\ + if (m_dllHandle)\ + {\ + if (FUNC_LOADED != m_is##FuncName) \ + {\ + m_##FuncName = NULL; \ + m_##FuncName = (TYPE_##FuncName)GetProcAddress(m_dllHandle, #FuncName); \ + m_is##FuncName = FUNC_LOADED;\ + }\ + if (NULL != m_##FuncName) \ + return m_##FuncName(p1, p2); \ + else \ + return (retVal)NULL; \ + } \ + else\ + return (retVal)NULL; \ + } + +#define DECLARE_FUNCTION3(CallType,retVal, FuncName, Param1, Param2, Param3) \ + typedef retVal (CallType* TYPE_##FuncName)(Param1, Param2, Param3); \ + TYPE_##FuncName m_##FuncName; \ + short m_is##FuncName;\ + retVal FuncName (Param1 p1, Param2 p2, Param3 p3) \ + {\ + if (m_dllHandle)\ + {\ + if (FUNC_LOADED != m_is##FuncName) \ + {\ + m_##FuncName = NULL; \ + m_##FuncName = (TYPE_##FuncName)GetProcAddress(m_dllHandle, #FuncName); \ + m_is##FuncName = FUNC_LOADED; \ + }\ + if (NULL != m_##FuncName) \ + return m_##FuncName(p1, p2, p3);\ + else \ + return (retVal)NULL; \ + } \ + else\ + return (retVal)NULL; \ + } + +#define DECLARE_FUNCTION4(CallType,retVal, FuncName, Param1, Param2, Param3, Param4) \ + typedef retVal (CallType* TYPE_##FuncName)(Param1, Param2, Param3, Param4); \ + TYPE_##FuncName m_##FuncName; \ + short m_is##FuncName;\ + retVal FuncName (Param1 p1, Param2 p2, Param3 p3, Param4 p4) \ + {\ + if (m_dllHandle)\ + {\ + if (FUNC_LOADED != m_is##FuncName) \ + {\ + m_##FuncName = NULL; \ + m_##FuncName = (TYPE_##FuncName)GetProcAddress(m_dllHandle, #FuncName); \ + m_is##FuncName = FUNC_LOADED;\ + }\ + if (NULL != m_##FuncName) \ + return m_##FuncName(p1, p2, p3, p4);\ + else \ + return (retVal)NULL; \ + } \ + else\ + return (retVal)NULL; \ + } + +#define DECLARE_FUNCTION5(CallType,retVal, FuncName, Param1, Param2, Param3, Param4, Param5) \ + typedef retVal (CallType* TYPE_##FuncName)(Param1, Param2, Param3, Param4, Param5); \ + TYPE_##FuncName m_##FuncName; \ + short m_is##FuncName; \ + retVal FuncName (Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5) \ + {\ + if (m_dllHandle)\ + {\ + if (FUNC_LOADED != m_is##FuncName) \ + {\ + m_##FuncName = NULL; \ + m_##FuncName = (TYPE_##FuncName)GetProcAddress(m_dllHandle, #FuncName); \ + m_is##FuncName = FUNC_LOADED;\ + }\ + if (NULL != m_##FuncName) \ + return m_##FuncName(p1, p2, p3, p4, p5);\ + else \ + return (retVal)NULL; \ + } \ + else\ + return (retVal)NULL; \ + } + +#define DECLARE_FUNCTION6(CallType,retVal, FuncName, Param1, Param2, Param3, Param4, Param5, Param6) \ + typedef retVal (CallType* TYPE_##FuncName)(Param1, Param2, Param3, Param4, Param5, Param6); \ + TYPE_##FuncName m_##FuncName; \ + short m_is##FuncName;\ + retVal FuncName (Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6) \ + {\ + if (m_dllHandle)\ + {\ + if (FUNC_LOADED != m_is##FuncName) \ + {\ + m_##FuncName = NULL; \ + m_##FuncName = (TYPE_##FuncName)GetProcAddress(m_dllHandle, #FuncName); \ + m_is##FuncName = FUNC_LOADED;\ + }\ + if (NULL != m_##FuncName) \ + return m_##FuncName(p1, p2, p3, p4, p5, p6);\ + else \ + return (retVal)NULL; \ + } \ + else\ + return (retVal)NULL; \ + } + +#define DECLARE_FUNCTION7(CallType,retVal, FuncName, Param1, Param2, Param3, Param4, Param5, Param6, Param7) \ + typedef retVal (CallType* TYPE_##FuncName)(Param1, Param2, Param3, Param4, Param5, Param6, Param7); \ + TYPE_##FuncName m_##FuncName; \ + short m_is##FuncName;\ + retVal FuncName (Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7) \ + {\ + if (m_dllHandle)\ + {\ + if (FUNC_LOADED != m_is##FuncName) \ + {\ + m_##FuncName = NULL; \ + m_##FuncName = (TYPE_##FuncName)GetProcAddress(m_dllHandle, #FuncName); \ + m_is##FuncName = FUNC_LOADED;\ + }\ + if (NULL != m_##FuncName) \ + return m_##FuncName(p1, p2, p3, p4, p5, p6, p7);\ + else \ + return (retVal)NULL; \ + } \ + else\ + return (retVal)NULL; \ + } + +#define DECLARE_FUNCTION8(CallType,retVal, FuncName, Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8) \ + typedef retVal (CallType* TYPE_##FuncName)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8); \ + TYPE_##FuncName m_##FuncName; \ + short m_is##FuncName;\ + retVal FuncName (Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8) \ + {\ + if (m_dllHandle)\ + {\ + if (FUNC_LOADED != m_is##FuncName) \ + {\ + m_##FuncName = NULL; \ + m_##FuncName = (TYPE_##FuncName)GetProcAddress(m_dllHandle, #FuncName); \ + m_is##FuncName = FUNC_LOADED;\ + }\ + if (NULL != m_##FuncName) \ + return m_##FuncName(p1, p2, p3, p4, p5, p6, p7, p8);\ + else \ + return (retVal)NULL; \ + }\ + else\ + return (retVal)NULL; \ + } + +#define DECLARE_FUNCTION9(CallType,retVal, FuncName, Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9) \ + typedef retVal (CallType* TYPE_##FuncName)(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9); \ + TYPE_##FuncName m_##FuncName; \ + short m_is##FuncName; \ + retVal FuncName (Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8, Param9 p9) \ + {\ + if (m_dllHandle)\ + {\ + if (FUNC_NAME != m_is##FuncName) \ + {\ + m_##FuncName = NULL; \ + m_##FuncName = (TYPE_##FuncName)GetProcAddress(m_dllHandle, #FuncName); \ + m_is##FuncName = FUNC_LOADED;\ + }\ + if (NULL != m_##FuncName) \ + return m_##FuncName(p1, p2, p3, p4, p5, p6, p7, p8, p9);\ + else \ + return (retVal)NULL; \ + }\ + else\ + return (retVal)NULL; \ + } + +#define DECLARE_FUNCTION10(CallType,retVal, FuncName, Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10) \ + typedef retVal (CallType* TYPE_##FuncName)FuncName(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8, Param9, Param10); \ + TYPE_##FuncName m_##FuncName; \ + short m_is##FuncName;\ + retVal FuncName (Param1 p1, Param2 p2, Param3 p3, Param4 p4, Param5 p5, Param6 p6, Param7 p7, Param8 p8, Param9 p9, Param10 p10) \ + {\ + if (m_dllHandle)\ + {\ + if (FUNC_LOADED != m_is##FuncName) \ + {\ + m_##FuncName = NULL; \ + m_##FuncName = (TYPE_##FuncName)GetProcAddress(m_dllHandle, #FuncName); \ + m_is##FuncName = FUNC_LOADED;\ + }\ + if (NULL != m_##FuncName) \ + return m_##FuncName(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10);\ + else \ + return (retVal)NULL; \ + }\ + else \ + return (retVal)NULL;\ + } + +//declare constructors and LoadFunctions +#define DECLARE_CLASS(ClassName) \ + public: \ + ClassName (LPCTSTR name){LoadDll(name);} \ + ClassName () {PDLL();} + +class PDLL +{ +protected: + HINSTANCE m_dllHandle; +private: + LPTSTR m_dllName; + int m_refCount; + +public: + + PDLL() + { + m_dllHandle = NULL; + m_dllName = NULL; + m_refCount = 0; + } + + //A NULL here means the name has already been set + void LoadDll(LPCTSTR name, bool showMsg = true) + { + if (name) + SetDllName(name); + + //try to load + m_dllHandle = LoadLibrary(m_dllName); + + if (m_dllHandle == NULL && showMsg) + { + std::ostringstream message; + message << "failed to load dll: " << ::GetLastError(); + throw std::runtime_error(message.str().c_str()); + } + } + + bool SetDllName(LPCTSTR newName) + { + bool retVal = false; + + //we allow name resets only if the current DLL handle is invalid + //once they've hooked into a DLL, the name cannot be changed + if (!m_dllHandle) + { + if (m_dllName) + { + delete []m_dllName; + m_dllName = NULL; + } + + //They may be setting this null (e.g., uninitialize) + if (newName) + { + m_dllName = new TCHAR[_tcslen(newName) + 1]; + _tcscpy(m_dllName, newName); + } + retVal = true; + } + return retVal; + } + + virtual bool Initialize(short showMsg = 1) + { + + bool retVal = false; + + //Add one to our internal reference counter + m_refCount++; + + if (m_refCount == 1 && m_dllName) //if this is first time, load the DLL + { + //we are assuming the name is already set + LoadDll(NULL, showMsg); + retVal = (m_dllHandle != NULL); + } + return retVal; + } + + virtual void Uninitialize(void) + { + //If we're already completely unintialized, early exit + if (!m_refCount) + return; + //if this is the last time this instance has been unitialized, + //then do a full uninitialization + m_refCount--; + + if (m_refCount < 1) + { + if (m_dllHandle) + { + FreeLibrary(m_dllHandle); + m_dllHandle = NULL; + } + + SetDllName(NULL); //clear out the name & free memory + } + } + + virtual ~PDLL() + { + //force this to be a true uninitialize + m_refCount = 1; + Uninitialize(); + + //free name + if (m_dllName) + { + delete [] m_dllName; + m_dllName = NULL; + } + } + +}; +#endif diff --git a/src/pluginflagicondelegate.cpp b/src/pluginflagicondelegate.cpp new file mode 100644 index 00000000..6c0bb29e --- /dev/null +++ b/src/pluginflagicondelegate.cpp @@ -0,0 +1,24 @@ +#include "pluginflagicondelegate.h" +#include "pluginlist.h" +#include + + +PluginFlagIconDelegate::PluginFlagIconDelegate(QObject *parent) + : IconDelegate(parent) +{ +} + +QList PluginFlagIconDelegate::getIcons(const QModelIndex &index) const +{ + QList result; + foreach (const QVariant &var, index.data(Qt::UserRole + 1).toList()) { + result.append(var.value()); + } + return result; +} + +size_t PluginFlagIconDelegate::getNumIcons(const QModelIndex &index) const +{ + return index.data(Qt::UserRole + 1).toList().count(); +} + diff --git a/src/pluginflagicondelegate.h b/src/pluginflagicondelegate.h new file mode 100644 index 00000000..554e968b --- /dev/null +++ b/src/pluginflagicondelegate.h @@ -0,0 +1,17 @@ +#ifndef PLUGINFLAGICONDELEGATE_H +#define PLUGINFLAGICONDELEGATE_H + +#include "icondelegate.h" + +class PluginFlagIconDelegate : public IconDelegate +{ +public: + PluginFlagIconDelegate(QObject *parent = NULL); + + // IconDelegate interface +private: + virtual QList getIcons(const QModelIndex &index) const; + virtual size_t getNumIcons(const QModelIndex &index) const; +}; + +#endif // PLUGINFLAGICONDELEGATE_H diff --git a/src/pluginlist.cpp b/src/pluginlist.cpp index 85137390..c2e14182 100644 --- a/src/pluginlist.cpp +++ b/src/pluginlist.cpp @@ -20,8 +20,10 @@ along with Mod Organizer. If not, see . #include "pluginlist.h" #include "report.h" #include "inject.h" -#include #include "settings.h" +#include "safewritefile.h" +#include "scopeguard.h" +#include #include #include #include @@ -39,7 +41,6 @@ along with Mod Organizer. If not, see . #include #include -#include #include #include #include @@ -74,8 +75,10 @@ bool ByDate(const PluginList::ESPInfo& LHS, const PluginList::ESPInfo& RHS) { } PluginList::PluginList(QObject *parent) - : QAbstractTableModel(parent), - m_FontMetrics(QFont()), m_SaveTimer(this) + : QAbstractTableModel(parent) + , m_FontMetrics(QFont()) + , m_SaveTimer(this) + , m_BOSS(NULL) { m_SaveTimer.setSingleShot(true); connect(&m_SaveTimer, SIGNAL(timeout()), this, SIGNAL(saveTimer())); @@ -92,6 +95,12 @@ PluginList::PluginList(QObject *parent) PluginList::~PluginList() { + if (m_BOSS != NULL) { + m_BOSS->DestroyBossDb(m_BOSSDB); + m_BOSS->CleanUpAPI(); + delete m_BOSS; + m_BOSS = NULL; + } } @@ -101,6 +110,7 @@ QString PluginList::getColumnName(int column) case COL_NAME: return tr("Name"); case COL_PRIORITY: return tr("Priority"); case COL_MODINDEX: return tr("Mod Index"); + case COL_FLAGS: return tr("Flags"); default: return tr("unknown"); } } @@ -205,7 +215,7 @@ void PluginList::refresh(const QString &profileName, const DirectoryEntry &baseD emit layoutChanged(); refreshLoadOrder(); - emit dataChanged(this->index(0, 0), this->index(m_ESPs.size(), 1)); + emit dataChanged(this->index(0, 0), this->index(m_ESPs.size(), columnCount())); m_Refreshed(); } @@ -375,18 +385,16 @@ void PluginList::readLockedOrderFrom(const QString &fileName) } + void PluginList::writePlugins(const QString &fileName, bool writeUnchecked) const { - QFile file(fileName); - if (!file.open(QIODevice::WriteOnly)) { - throw MyException(tr("failed to open output file: %1").arg(fileName)); - } + SafeWriteFile file(fileName); QTextCodec *textCodec = writeUnchecked ? m_Utf8Codec : m_LocalCodec; - file.resize(0); + file->resize(0); - file.write(textCodec->fromUnicode("# This file was automatically generated by Mod Organizer.\r\n")); + file->write(textCodec->fromUnicode("# This file was automatically generated by Mod Organizer.\r\n")); bool invalidFileNames = false; int writtenCount = 0; @@ -398,36 +406,34 @@ void PluginList::writePlugins(const QString &fileName, bool writeUnchecked) cons invalidFileNames = true; qCritical("invalid plugin name %s", m_ESPs[priority].m_Name.toUtf8().constData()); } else { - file.write(textCodec->fromUnicode(m_ESPs[priority].m_Name)); + file->write(textCodec->fromUnicode(m_ESPs[priority].m_Name)); } - file.write("\r\n"); + file->write("\r\n"); ++writtenCount; } } - file.close(); if (invalidFileNames) { reportError(tr("Some of your plugins have invalid names! These plugins can not be loaded by the game. " "Please see mo_interface.log for a list of affected plugins and rename them.")); } + file.commit(); + qDebug("%s saved", QDir::toNativeSeparators(fileName).toUtf8().constData()); } void PluginList::writeLockedOrder(const QString &fileName) const { - QFile file(fileName); - if (!file.open(QIODevice::WriteOnly)) { - throw MyException(tr("failed to open output file: %1").arg(fileName)); - } + SafeWriteFile file(fileName); - file.resize(0); - file.write(QString("# This file was automatically generated by Mod Organizer.\r\n").toUtf8()); + file->resize(0); + file->write(QString("# This file was automatically generated by Mod Organizer.\r\n").toUtf8()); for (auto iter = m_LockedOrder.begin(); iter != m_LockedOrder.end(); ++iter) { - file.write(QString("%1|%2\r\n").arg(iter->first).arg(iter->second).toUtf8()); + file->write(QString("%1|%2\r\n").arg(iter->first).arg(iter->second).toUtf8()); } - file.close(); + file.commit(); } @@ -590,6 +596,175 @@ void PluginList::refreshLoadOrder() emit layoutChanged(); } + +class boss_exception : public std::runtime_error { +public: + boss_exception(const std::string &message) : std::runtime_error(message) {} +}; + +#define THROW_BOSS_ERROR(obj) \ + uint8_t *message; \ + obj->GetLastErrorDetails(&message); \ + throw boss_exception(std::string(reinterpret_cast(message))); + +#define U8(text) reinterpret_cast(text) + + +void outputBossLog(const QString &filename) +{ + QFile file(filename); + if (file.open(QIODevice::ReadOnly)) { + while (!file.atEnd()) { + QByteArray line = file.readLine().trimmed(); + if (line.length() < 1) + continue; + + int endFirstWord = line.indexOf(':'); + if (endFirstWord < 0) { + endFirstWord = 0; + } + QString firstWord = line.mid(0, endFirstWord); + if (firstWord == "DEBUG") { + qDebug("(boss) %s", line.mid(endFirstWord + 2).constData()); + } else { + qWarning("(boss) %s", line.mid(endFirstWord + 2).constData()); + } + } + } + file.resize(0); +} + + +void PluginList::initBoss() +{ + m_BOSS = new BossDLL(TEXT("dlls\\boss.dll")); + + if (!m_BOSS->IsCompatibleVersion(2,1,1)) { + throw MyException(tr("BOSS dll incompatible")); + } + uint8_t *versionString; + if (m_BOSS->GetVersionString(&versionString) != BossDLL::RESULT_OK) { + THROW_BOSS_ERROR(m_BOSS) + } + qDebug("using boss version %s", versionString); + + m_TempFile.open(); m_TempFile.close(); // yeah, stupid, but open is required to generate the name + m_BOSS->SetLoggerOutput(m_TempFile.fileName().toLocal8Bit().constData(), 4); + + if (m_BOSS->CreateBossDb(&m_BOSSDB, BossDLL::SKYRIM, NULL) != BossDLL::RESULT_OK) { + uint8_t *message; + m_BOSS->GetLastErrorDetails(&message); + std::string messageCopy(reinterpret_cast(message)); + delete m_BOSS; + m_BOSS = NULL; + throw boss_exception(messageCopy); + } + qApp->processEvents(); + + QString masterlistName = QDir::toNativeSeparators(qApp->applicationDirPath() + "/boss/masterlist.txt"); + + uint32_t res = m_BOSS->UpdateMasterlist(m_BOSSDB, U8(masterlistName.toUtf8().constData())); + qApp->processEvents(); + if (res == BossDLL::RESULT_OK) { + qDebug("boss masterlist updated"); + } else if (res == BossDLL::RESULT_NO_UPDATE_NECESSARY) { + qDebug("boss masterlist already up-to-date"); + } else { + THROW_BOSS_ERROR(m_BOSS) + } + if (m_BOSS->Load(m_BOSSDB, + U8(masterlistName.toUtf8().constData()), + U8(QDir::toNativeSeparators(qApp->applicationDirPath() + "/boss/userlist.txt").toUtf8().constData())) != BossDLL::RESULT_OK) { + THROW_BOSS_ERROR(m_BOSS) + } +} + +void PluginList::convertPluginListForBoss(boost::ptr_vector &inputPlugins, std::vector &activePlugins) +{ + foreach (int idx, m_ESPsByPriority) { + QString fileName = m_ESPs[idx].m_Name; + QByteArray name = fileName.toUtf8(); + + uint8_t *nameU8 = new uint8_t[name.length() + 1]; + memcpy(nameU8, name.constData(), name.length() + 1); + if (m_ESPs[idx].m_Enabled) { + activePlugins.push_back(nameU8); + } + inputPlugins.push_back(nameU8); + } + if (m_BOSS->SetActivePluginsDumb(m_BOSSDB, &activePlugins[0], activePlugins.size()) != BossDLL::RESULT_OK) { + THROW_BOSS_ERROR(m_BOSS) + } +} + +void PluginList::applyBOSSSorting(uint8_t **pluginList, size_t size, int &priority, bool recognized, const char *extension) +{ + for (size_t i= 0; i < size; ++i) { + QString name = QString::fromUtf8(reinterpret_cast(pluginList[i])).toLower(); + if (name.endsWith(extension)) { + auto iter = m_ESPsByName.find(name); + if (iter == m_ESPsByName.end()) { + throw MyException("boss returned invalid data"); + } + BossMessage *message; + size_t numMessages = 0; + m_BOSS->GetPluginMessages(m_BOSSDB, pluginList[i], &message, &numMessages); + m_ESPs[iter->second].m_BOSSMessages.clear(); + for (size_t im = 0; im < numMessages; ++im) { + m_ESPs[iter->second].m_BOSSMessages.append(QString::fromUtf8(reinterpret_cast(message[im].message))); + } + m_ESPs[iter->second].m_Priority = priority++; + m_ESPs[iter->second].m_BOSSUnrecognized = !recognized; + } + } +} + +void PluginList::bossSort() +{ + if (m_BOSS == NULL) { + // first run, check boss compatibility and update + initBoss(); + } + + // create a boss-compatible representation of our current mod list. + boost::ptr_vector inputPlugins; + std::vector activePlugins; + convertPluginListForBoss(inputPlugins, activePlugins); + + // sort mods in-memory + uint8_t **sortedPlugins; + uint8_t **unrecognizedPlugins; + size_t sizeSorted, sizeUnrecognized; + + if (m_BOSS->SortCustomMods(m_BOSSDB, + inputPlugins.c_array(), inputPlugins.size(), + &sortedPlugins, &sizeSorted, + &unrecognizedPlugins, &sizeUnrecognized) != BossDLL::RESULT_OK) { + THROW_BOSS_ERROR(m_BOSS) + } + + // output the log from boss to our own log to make it visible + outputBossLog(m_TempFile.fileName()); + + qDebug("%d sorted, %d unrecognized", sizeSorted, sizeUnrecognized); + + emit layoutAboutToBeChanged(); + + int priority = 0; + applyBOSSSorting(sortedPlugins, sizeSorted, priority, true, "esm"); + applyBOSSSorting(unrecognizedPlugins, sizeUnrecognized, priority, false, "esm"); + applyBOSSSorting(sortedPlugins, sizeSorted, priority, true, "esp"); + applyBOSSSorting(unrecognizedPlugins, sizeUnrecognized, priority, false, "esp"); + + // inform view of the changed data + updateIndices(); + emit layoutChanged(); + syncLoadOrder(); + + emit dataChanged(this->index(0, 0), this->index(m_ESPs.size(), columnCount())); + m_Refreshed(); +} + IPluginList::PluginState PluginList::state(const QString &name) const { auto iter = m_ESPsByName.find(name.toLower()); @@ -670,7 +845,7 @@ int PluginList::rowCount(const QModelIndex &parent) const int PluginList::columnCount(const QModelIndex &) const { - return 3; + return COL_LASTCOLUMN + 1; } @@ -724,18 +899,6 @@ QVariant PluginList::data(const QModelIndex &modelIndex, int role) const return QVariant(); } break; } - } else if ((role == Qt::DecorationRole) && (modelIndex.column() == 0)) { - if (m_ESPs[index].m_MasterUnset.size() > 0) { - return QIcon(":/MO/gui/warning"); - } else if (m_LockedOrder.find(m_ESPs[index].m_Name.toLower()) != m_LockedOrder.end()) { - return QIcon(":/MO/gui/locked"); - } else if (m_ESPs[index].m_HasIni) { - return QIcon(":/MO/gui/attachment"); - } else if (m_ESPs[index].m_IsDummy && m_ESPs[index].m_Enabled && !m_ESPs[index].m_HasIni) { - return QIcon(":/MO/gui/edit_clear"); - } else { - return QVariant(); - } } else if ((role == Qt::CheckStateRole) && (modelIndex.column() == 0)) { return m_ESPs[index].m_Enabled ? Qt::Checked : Qt::Unchecked; } else if (role == Qt::FontRole) { @@ -754,8 +917,15 @@ QVariant PluginList::data(const QModelIndex &modelIndex, int role) const return QVariant(Qt::AlignHCenter | Qt::AlignVCenter); } } else if (role == Qt::ToolTipRole) { + QString toolTip; + if (!m_ESPs[index].m_BOSSMessages.isEmpty()) { + toolTip += m_ESPs[index].m_BOSSMessages.join("
        ") + "

        "; + } + if (m_ESPs[index].m_BOSSUnrecognized) { + toolTip += "Not recognized by BOSS
        "; + } if (m_ESPs[index].m_ForceEnabled) { - return tr("This plugin can't be disabled (enforced by the game)"); + toolTip += tr("This plugin can't be disabled (enforced by the game)"); } else { QString text = tr("Origin: %1").arg(m_ESPs[index].m_OriginName); if (m_ESPs[index].m_MasterUnset.size() > 0) { @@ -773,8 +943,30 @@ QVariant PluginList::data(const QModelIndex &modelIndex, int role) const text += "
        This file is a dummy! It exists only so the bsa with the same name gets loaded. With MO you don't need this: " "If you enable the archive with the same name in the \"Archive\" tab you can disable this plugin."; } - return text; + toolTip += text; + } + return toolTip; + } else if (role == Qt::UserRole + 1) { + QVariantList result; + if (m_ESPs[index].m_MasterUnset.size() > 0) { + result.append(QIcon(":/MO/gui/warning")); + } + if (m_LockedOrder.find(m_ESPs[index].m_Name.toLower()) != m_LockedOrder.end()) { + result.append(QIcon(":/MO/gui/locked")); } + if (!m_ESPs[index].m_BOSSMessages.isEmpty()) { + result.append(QIcon(":/MO/gui/information")); + } + if (m_ESPs[index].m_BOSSUnrecognized) { + result.append(QIcon(":/MO/gui/help")); + } + if (m_ESPs[index].m_HasIni) { + result.append(QIcon(":/MO/gui/attachment")); + } + if (m_ESPs[index].m_IsDummy && m_ESPs[index].m_Enabled && !m_ESPs[index].m_HasIni) { + result.append(QIcon(":/MO/gui/edit_clear")); + } + return result; } else { return QVariant(); } @@ -784,7 +976,6 @@ QVariant PluginList::data(const QModelIndex &modelIndex, int role) const bool PluginList::setData(const QModelIndex &modIndex, const QVariant &value, int role) { if (role == Qt::CheckStateRole) { -qDebug("uncheck plugin"); m_ESPs[modIndex.row()].m_Enabled = value.toInt() == Qt::Checked; emit dataChanged(modIndex, modIndex); @@ -1036,7 +1227,8 @@ PluginList::ESPInfo::ESPInfo(const QString &name, bool enabled, FILETIME time, const QString &originName, const QString &fullPath, bool hasIni) : m_Name(name), m_Enabled(enabled), m_ForceEnabled(enabled), m_Removed(false), - m_Priority(0), m_LoadOrder(-1), m_Time(time), m_OriginName(originName), m_HasIni(hasIni) + m_Priority(0), m_LoadOrder(-1), m_Time(time), m_OriginName(originName), m_HasIni(hasIni), + m_BOSSUnrecognized(false) { try { ESP::File file(ToWString(fullPath)); diff --git a/src/pluginlist.h b/src/pluginlist.h index 64c914df..bb7428d0 100644 --- a/src/pluginlist.h +++ b/src/pluginlist.h @@ -25,8 +25,12 @@ along with Mod Organizer. If not, see . #include #include #include +#include #include +#include #include +#include +#include /** @@ -40,6 +44,7 @@ public: enum EColumn { COL_NAME, + COL_FLAGS, COL_PRIORITY, COL_MODINDEX, @@ -143,6 +148,8 @@ public: void refreshLoadOrder(); + void bossSort(); + public: virtual PluginState state(const QString &name) const; virtual int priority(const QString &name) const; @@ -162,6 +169,7 @@ public: // implementation of the QAbstractTableModel interface virtual Qt::DropActions supportedDropActions() const { return Qt::MoveAction; } virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent); + void applyBOSSSorting(uint8_t **pluginList, size_t size, int &priority, bool recognized, const char *extension); public slots: /** @@ -194,7 +202,6 @@ private: ESPInfo(const QString &name, bool enabled, FILETIME time, const QString &originName, const QString &fullPath, bool hasIni); QString m_Name; - QString m_FullPath; bool m_Enabled; bool m_ForceEnabled; bool m_Removed; @@ -207,12 +214,91 @@ private: bool m_HasIni; std::set m_Masters; mutable std::set m_MasterUnset; + QStringList m_BOSSMessages; + bool m_BOSSUnrecognized; }; friend bool ByName(const ESPInfo& LHS, const ESPInfo& RHS); friend bool ByDate(const ESPInfo& LHS, const ESPInfo& RHS); friend bool ByPriority(const ESPInfo& LHS, const ESPInfo& RHS); + + class BossDLL : public PDLL { + DECLARE_CLASS(BossDLL) + + DECLARE_FUNCTION3(__cdecl, uint32_t, CreateBossDb, boss_db*, const uint32_t, const uint8_t*) + DECLARE_FUNCTION1(__cdecl, void, DestroyBossDb, boss_db) + DECLARE_FUNCTION0(__cdecl, void, CleanUpAPI) + + DECLARE_FUNCTION7(__cdecl, uint32_t, SortCustomMods, boss_db, uint8_t**, size_t, uint8_t***, size_t*, uint8_t***, size_t*) + DECLARE_FUNCTION3(__cdecl, uint32_t, SetActivePluginsDumb, boss_db, uint8_t**, const size_t) + + DECLARE_FUNCTION3(__cdecl, uint32_t, GetActivePluginsDumb , boss_db, uint8_t***, size_t*) + + DECLARE_FUNCTION2(__cdecl, uint32_t, UpdateMasterlist, boss_db, const uint8_t*) + DECLARE_FUNCTION3(__cdecl, uint32_t, Load, boss_db, const uint8_t*, const uint8_t*) + + DECLARE_FUNCTION2(__cdecl, void, SetLoggerOutput, const char*, uint8_t) + DECLARE_FUNCTION1(__cdecl, uint32_t, GetLastErrorDetails, uint8_t**) + + DECLARE_FUNCTION1(__cdecl, uint32_t, GetVersionString, uint8_t**) + DECLARE_FUNCTION3(__cdecl, bool, IsCompatibleVersion, const uint32_t, const uint32_t, const uint32_t) + + DECLARE_FUNCTION4(__cdecl, uint32_t, GetPluginMessages, boss_db, const uint8_t*, BossMessage**, size_t*) + + enum ResultCode { + RESULT_OK = 0, + RESULT_NO_MASTER_FILE = 1, + RESULT_FILE_READ_FAIL = 2, + RESULT_FILE_WRITE_FAIL = 3, + RESULT_FILE_NOT_UTF8 = 4, + RESULT_FILE_NOT_FOUND = 5, + RESULT_FILE_PARSE_FAIL = 6, + RESULT_CONDITION_EVAL_FAIL = 7, + RESULT_REGEX_EVAL_FAIL = 8, + RESULT_NO_GAME_DETECTED = 9, + RESULT_ENCODING_CONVERSION_FAIL = 10, + RESULT_FIND_ONLINE_MASTERLIST_REVISION_FAIL = 11, + RESULT_FIND_ONLINE_MASTERLIST_DATE_FAIL = 12, + RESULT_READ_UPDATE_FILE_LIST_FAIL = 13, + RESULT_FILE_CRC_MISMATCH = 14, + RESULT_FS_FILE_MOD_TIME_READ_FAIL = 15, + RESULT_FS_FILE_MOD_TIME_WRITE_FAIL = 16, + RESULT_FS_FILE_RENAME_FAIL = 17, + RESULT_FS_FILE_DELETE_FAIL = 18, + RESULT_FS_CREATE_DIRECTORY_FAIL = 19, + RESULT_FS_ITER_DIRECTORY_FAIL = 20, + RESULT_CURL_INIT_FAIL = 21, + RESULT_CURL_SET_ERRBUFF_FAIL = 22, + RESULT_CURL_SET_OPTION_FAIL = 23, + RESULT_CURL_SET_PROXY_FAIL = 24, + RESULT_CURL_SET_PROXY_TYPE_FAIL = 25, + RESULT_CURL_SET_PROXY_AUTH_FAIL = 26, + RESULT_CURL_SET_PROXY_AUTH_TYPE_FAIL = 27, + RESULT_CURL_PERFORM_FAIL = 28, + RESULT_CURL_USER_CANCEL = 29, + RESULT_GUI_WINDOW_INIT_FAIL = 30, + RESULT_NO_UPDATE_NECESSARY = 31, + RESULT_LO_MISMATCH = 32, + RESULT_NO_MEM = 33, + RESULT_INVALID_ARGS = 34, + RESULT_NETWORK_FAIL = 35, + RESULT_NO_INTERNET_CONNECTION = 36, + RESULT_NO_TAG_MAP = 37, + RESULT_PLUGINS_FULL = 38, + RESULT_PLUGIN_BEFORE_MASTER = 39, + RESULT_INVALID_SYNTAX = 40 + }; + + enum GameIDs { + AUTODETECT = 0, + OBLIVION = 1, + SKYRIM = 3, + FALLOUT3 = 4, + FALLOUTNV = 5 + }; + }; + private: void syncLoadOrder(); @@ -230,6 +316,9 @@ private: void testMasters(); + void initBoss(); + void convertPluginListForBoss(boost::ptr_vector &inputPlugins, std::vector &activePlugins); + private: std::vector m_ESPs; @@ -253,6 +342,10 @@ private: SignalRefreshed m_Refreshed; + BossDLL *m_BOSS; + boss_db m_BOSSDB; + QTemporaryFile m_TempFile; + }; #endif // PLUGINLIST_H diff --git a/src/pluginlistsortproxy.cpp b/src/pluginlistsortproxy.cpp index 5bff24f5..8412fa27 100644 --- a/src/pluginlistsortproxy.cpp +++ b/src/pluginlistsortproxy.cpp @@ -125,11 +125,6 @@ bool PluginListSortProxy::lessThan(const QModelIndex &left, return plugins->getPriority(left.row()) < plugins->getPriority(right.row()); } break; default: { - static bool first = true; - if (first) { - qCritical("invalid sort column %d", left.column()); - first = false; - } return plugins->getPriority(left.row()) < plugins->getPriority(right.row()); } break; } diff --git a/src/profile.cpp b/src/profile.cpp index e075a4e6..c1f1025e 100644 --- a/src/profile.cpp +++ b/src/profile.cpp @@ -23,6 +23,7 @@ along with Mod Organizer. If not, see . #include "windows_error.h" #include "dummybsa.h" #include "modinfo.h" +#include "safewritefile.h" #include #include #include @@ -149,15 +150,10 @@ void Profile::writeModlistNow(bool onlyOnTimer) const #pragma message("right now, this is doing unnecessary saves. Need a flag that says that mod priority, enabled-state or name of a mod has changed") try { - QTemporaryFile file; - - if (!file.open()) { - reportError(tr("failed to open temporary file")); - return; - } + QString fileName = getModlistFileName(); + SafeWriteFile file(fileName); - file.resize(0); - file.write(QString("# This file was automatically generated by Mod Organizer.\r\n").toUtf8()); + file->write(QString("# This file was automatically generated by Mod Organizer.\r\n").toUtf8()); if (m_ModStatus.empty()) { return; } @@ -169,29 +165,17 @@ void Profile::writeModlistNow(bool onlyOnTimer) const ModInfo::Ptr modInfo = ModInfo::getByIndex(index); if (modInfo->getFixedPriority() == INT_MIN) { if (m_ModStatus[index].m_Enabled) { - file.write("+"); + file->write("+"); } else { - file.write("-"); + file->write("-"); } - file.write(modInfo->name().toUtf8()); - file.write("\r\n"); + file->write(modInfo->name().toUtf8()); + file->write("\r\n"); } } } - file.close(); - - - QString fileName = getModlistFileName(); - - if (QFile::exists(fileName)) { - shellDeleteQuiet(fileName); - } - - if (!file.copy(fileName)) { - reportError(tr("failed to open \"%1\" for writing").arg(fileName)); - return; - } + file.commit(); qDebug("%s saved", QDir::toNativeSeparators(fileName).toUtf8().constData()); } catch (const std::exception &e) { diff --git a/src/resources.qrc b/src/resources.qrc index 1582a3f2..73921f64 100644 --- a/src/resources.qrc +++ b/src/resources.qrc @@ -18,7 +18,7 @@ resources/contact-new.png resources/preferences-system.png resources/application-x-executable.png - resources/dialog-information.png + resources/dialog-information.png resources/emblem-readonly.png resources/go-next_16.png resources/go-previous_16.png diff --git a/src/safewritefile.cpp b/src/safewritefile.cpp new file mode 100644 index 00000000..6df8c2b8 --- /dev/null +++ b/src/safewritefile.cpp @@ -0,0 +1,48 @@ +/* +Copyright (C) 2014 Sebastian Herbord. All rights reserved. + +This file is part of Mod Organizer. + +Mod Organizer is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Mod Organizer is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Mod Organizer. If not, see . +*/ + + +#include "safewritefile.h" +#include + + +using namespace MOBase; + + +SafeWriteFile::SafeWriteFile(const QString &fileName) +: m_FileName(fileName) +{ + if (!m_TempFile.open()) { + throw MyException(QObject::tr("failed to open temporary file")); + } +} + + +QFile *SafeWriteFile::operator->() { + Q_ASSERT(m_TempFile.isOpen()); + return &m_TempFile; +} + + +void SafeWriteFile::commit() { + shellDeleteQuiet(m_FileName); + m_TempFile.rename(m_FileName); + m_TempFile.setAutoRemove(false); + m_TempFile.close(); +} diff --git a/src/safewritefile.h b/src/safewritefile.h new file mode 100644 index 00000000..56bd7744 --- /dev/null +++ b/src/safewritefile.h @@ -0,0 +1,51 @@ +/* +Copyright (C) 2014 Sebastian Herbord. All rights reserved. + +This file is part of Mod Organizer. + +Mod Organizer is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Mod Organizer is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Mod Organizer. If not, see . +*/ + + +#ifndef SAFEWRITEFILE_H +#define SAFEWRITEFILE_H + + +#include +#include +#include + +/** + * @brief a wrapper for QFile that ensures the file is only actually (over-)written if writing was successful + */ +class SafeWriteFile { +public: + SafeWriteFile(const QString &fileName); + + QFile *operator->(); + + void commit(); + +private: + QString m_FileName; + QTemporaryFile m_TempFile; +}; + + +#endif // SAFEWRITEFILE_H + + + + + -- cgit v1.3.1 From de984a4ef8b4720f73db5b80b018b358cbe12f8a Mon Sep 17 00:00:00 2001 From: Tannin Date: Thu, 23 Jan 2014 21:14:44 +0100 Subject: - information from boss no longer gets lost as soon as the plugin list gets refreshed - bugfix: modified boss dll missed one file on sorting --- src/lockeddialog.ui | 9 ++++++--- src/pluginlist.cpp | 43 +++++++++++++++++++++++++------------------ src/pluginlist.h | 5 +++++ 3 files changed, 36 insertions(+), 21 deletions(-) (limited to 'src/pluginlist.h') diff --git a/src/lockeddialog.ui b/src/lockeddialog.ui index 623e8da1..2175f8ac 100644 --- a/src/lockeddialog.ui +++ b/src/lockeddialog.ui @@ -6,14 +6,14 @@ 0 0 - 236 - 110 + 317 + 151
        Locked - + @@ -22,6 +22,9 @@ MO is locked while the executable is running. + + Qt::AlignCenter + true diff --git a/src/pluginlist.cpp b/src/pluginlist.cpp index c2e14182..e04b8bb0 100644 --- a/src/pluginlist.cpp +++ b/src/pluginlist.cpp @@ -699,7 +699,7 @@ void PluginList::convertPluginListForBoss(boost::ptr_vector &inputPlugi void PluginList::applyBOSSSorting(uint8_t **pluginList, size_t size, int &priority, bool recognized, const char *extension) { - for (size_t i= 0; i < size; ++i) { + for (size_t i = 0; i < size; ++i) { QString name = QString::fromUtf8(reinterpret_cast(pluginList[i])).toLower(); if (name.endsWith(extension)) { auto iter = m_ESPsByName.find(name); @@ -709,12 +709,13 @@ void PluginList::applyBOSSSorting(uint8_t **pluginList, size_t size, int &priori BossMessage *message; size_t numMessages = 0; m_BOSS->GetPluginMessages(m_BOSSDB, pluginList[i], &message, &numMessages); - m_ESPs[iter->second].m_BOSSMessages.clear(); + BossInfo newInfo; for (size_t im = 0; im < numMessages; ++im) { - m_ESPs[iter->second].m_BOSSMessages.append(QString::fromUtf8(reinterpret_cast(message[im].message))); + newInfo.m_BOSSMessages.append(QString::fromUtf8(reinterpret_cast(message[im].message))); } + newInfo.m_BOSSUnrecognized = !recognized; + m_BossInfo[name] = newInfo; m_ESPs[iter->second].m_Priority = priority++; - m_ESPs[iter->second].m_BOSSUnrecognized = !recognized; } } } @@ -735,7 +736,6 @@ void PluginList::bossSort() uint8_t **sortedPlugins; uint8_t **unrecognizedPlugins; size_t sizeSorted, sizeUnrecognized; - if (m_BOSS->SortCustomMods(m_BOSSDB, inputPlugins.c_array(), inputPlugins.size(), &sortedPlugins, &sizeSorted, @@ -917,12 +917,16 @@ QVariant PluginList::data(const QModelIndex &modelIndex, int role) const return QVariant(Qt::AlignHCenter | Qt::AlignVCenter); } } else if (role == Qt::ToolTipRole) { + QString name = m_ESPs[index].m_Name.toLower(); + auto bossInfoIter = m_BossInfo.find(name); QString toolTip; - if (!m_ESPs[index].m_BOSSMessages.isEmpty()) { - toolTip += m_ESPs[index].m_BOSSMessages.join("
        ") + "

        "; - } - if (m_ESPs[index].m_BOSSUnrecognized) { - toolTip += "Not recognized by BOSS
        "; + if (bossInfoIter != m_BossInfo.end()) { + if (!bossInfoIter->second.m_BOSSMessages.isEmpty()) { + toolTip += bossInfoIter->second.m_BOSSMessages.join("
        ") + "

        "; + } + if (bossInfoIter->second.m_BOSSUnrecognized) { + toolTip += "Not recognized by BOSS
        "; + } } if (m_ESPs[index].m_ForceEnabled) { toolTip += tr("This plugin can't be disabled (enforced by the game)"); @@ -948,17 +952,21 @@ QVariant PluginList::data(const QModelIndex &modelIndex, int role) const return toolTip; } else if (role == Qt::UserRole + 1) { QVariantList result; + QString nameLower = m_ESPs[index].m_Name.toLower(); if (m_ESPs[index].m_MasterUnset.size() > 0) { result.append(QIcon(":/MO/gui/warning")); } - if (m_LockedOrder.find(m_ESPs[index].m_Name.toLower()) != m_LockedOrder.end()) { + if (m_LockedOrder.find(nameLower) != m_LockedOrder.end()) { result.append(QIcon(":/MO/gui/locked")); } - if (!m_ESPs[index].m_BOSSMessages.isEmpty()) { - result.append(QIcon(":/MO/gui/information")); - } - if (m_ESPs[index].m_BOSSUnrecognized) { - result.append(QIcon(":/MO/gui/help")); + auto bossInfoIter = m_BossInfo.find(nameLower); + if (bossInfoIter != m_BossInfo.end()) { + if (!bossInfoIter->second.m_BOSSMessages.isEmpty()) { + result.append(QIcon(":/MO/gui/information")); + } + if (bossInfoIter->second.m_BOSSUnrecognized) { + result.append(QIcon(":/MO/gui/help")); + } } if (m_ESPs[index].m_HasIni) { result.append(QIcon(":/MO/gui/attachment")); @@ -1227,8 +1235,7 @@ PluginList::ESPInfo::ESPInfo(const QString &name, bool enabled, FILETIME time, const QString &originName, const QString &fullPath, bool hasIni) : m_Name(name), m_Enabled(enabled), m_ForceEnabled(enabled), m_Removed(false), - m_Priority(0), m_LoadOrder(-1), m_Time(time), m_OriginName(originName), m_HasIni(hasIni), - m_BOSSUnrecognized(false) + m_Priority(0), m_LoadOrder(-1), m_Time(time), m_OriginName(originName), m_HasIni(hasIni) { try { ESP::File file(ToWString(fullPath)); diff --git a/src/pluginlist.h b/src/pluginlist.h index bb7428d0..f8c69e11 100644 --- a/src/pluginlist.h +++ b/src/pluginlist.h @@ -214,6 +214,9 @@ private: bool m_HasIni; std::set m_Masters; mutable std::set m_MasterUnset; + }; + + struct BossInfo { QStringList m_BOSSMessages; bool m_BOSSUnrecognized; }; @@ -332,6 +335,8 @@ private: std::map m_ESPLoadOrder; std::map m_LockedOrder; + std::map m_BossInfo; // maps esp names to boss information + QString m_CurrentProfile; QFontMetrics m_FontMetrics; -- cgit v1.3.1 From 48704877ca1dc44b9215ec834e93f34fd953b2fb Mon Sep 17 00:00:00 2001 From: Tannin Date: Sun, 2 Feb 2014 00:09:03 +0100 Subject: - bugfix: upon moving files between mods, an attempt was made to access origins for both, even if one (or both) mods weren't active - bugfix: plugin-list should now deal with nested "layoutAboutToBeChanged" calls gracefully. May be the reason of a bug. --- src/mainwindow.cpp | 20 ++++++++++++-------- src/pluginlist.cpp | 17 +++++++++-------- src/pluginlist.h | 38 ++++++++++++++++++++++++++++++++++++-- 3 files changed, 57 insertions(+), 18 deletions(-) (limited to 'src/pluginlist.h') diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index cc7fbb09..88806cfd 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -2849,17 +2849,21 @@ void MainWindow::fileMoved(const QString &filePath, const QString &oldOriginName const FileEntry::Ptr filePtr = m_DirectoryStructure->findFile(ToWString(filePath)); if (filePtr.get() != NULL) { try { - FilesOrigin &oldOrigin = m_DirectoryStructure->getOriginByName(ToWString(oldOriginName)); - FilesOrigin &newOrigin = m_DirectoryStructure->getOriginByName(ToWString(newOriginName)); + if (m_DirectoryStructure->originExists(ToWString(newOriginName))) { + FilesOrigin &newOrigin = m_DirectoryStructure->getOriginByName(ToWString(newOriginName)); - QString fullNewPath = ToQString(newOrigin.getPath()) + "\\" + filePath; - WIN32_FIND_DATAW findData; - ::FindFirstFileW(ToWString(fullNewPath).c_str(), &findData); + QString fullNewPath = ToQString(newOrigin.getPath()) + "\\" + filePath; + WIN32_FIND_DATAW findData; + ::FindFirstFileW(ToWString(fullNewPath).c_str(), &findData); - filePtr->addOrigin(newOrigin.getID(), findData.ftCreationTime, L""); - filePtr->removeOrigin(oldOrigin.getID()); + filePtr->addOrigin(newOrigin.getID(), findData.ftCreationTime, L""); + } + if (m_DirectoryStructure->originExists(ToWString(oldOriginName))) { + FilesOrigin &oldOrigin = m_DirectoryStructure->getOriginByName(ToWString(oldOriginName)); + filePtr->removeOrigin(oldOrigin.getID()); + } } catch (const std::exception &e) { - reportError(tr("Failed to move \"%1\" from mod \"%2\" to \"%3\": %4").arg(filePath).arg(oldOriginName).arg(newOriginName).arg(e.what())); + reportError(tr("failed to move \"%1\" from mod \"%2\" to \"%3\": %4").arg(filePath).arg(oldOriginName).arg(newOriginName).arg(e.what())); } } else { // this is probably not an error, the specified path is likely a directory diff --git a/src/pluginlist.cpp b/src/pluginlist.cpp index e04b8bb0..f5e0f1eb 100644 --- a/src/pluginlist.cpp +++ b/src/pluginlist.cpp @@ -132,7 +132,8 @@ void PluginList::refresh(const QString &profileName, const DirectoryEntry &baseD const QString &pluginsFile, const QString &loadOrderFile, const QString &lockedOrderFile) { - emit layoutAboutToBeChanged(); + ChangeBracket layoutChange(this); + m_ESPsByName.clear(); m_ESPsByPriority.clear(); m_ESPs.clear(); @@ -213,7 +214,8 @@ void PluginList::refresh(const QString &profileName, const DirectoryEntry &baseD readLockedOrderFrom(lockedOrderFile); - emit layoutChanged(); + layoutChange.finish(); + refreshLoadOrder(); emit dataChanged(this->index(0, 0), this->index(m_ESPs.size(), columnCount())); @@ -557,7 +559,7 @@ void PluginList::syncLoadOrder() void PluginList::refreshLoadOrder() { - emit layoutAboutToBeChanged(); + ChangeBracket layoutChange(this); syncLoadOrder(); // set priorities according to locked load order std::map lockedLoadOrder; @@ -593,7 +595,6 @@ void PluginList::refreshLoadOrder() } } } - emit layoutChanged(); } @@ -748,7 +749,7 @@ void PluginList::bossSort() qDebug("%d sorted, %d unrecognized", sizeSorted, sizeUnrecognized); - emit layoutAboutToBeChanged(); + ChangeBracket layoutChange(this); int priority = 0; applyBOSSSorting(sortedPlugins, sizeSorted, priority, true, "esm"); @@ -758,7 +759,7 @@ void PluginList::bossSort() // inform view of the changed data updateIndices(); - emit layoutChanged(); + layoutChange.finish(); syncLoadOrder(); emit dataChanged(this->index(0, 0), this->index(m_ESPs.size(), columnCount())); @@ -1089,7 +1090,7 @@ void PluginList::setPluginPriority(int row, int &newPriority) void PluginList::changePluginPriority(std::vector rows, int newPriority) { - emit layoutAboutToBeChanged(); + ChangeBracket layoutChange(this); // sort rows to insert by their old priority (ascending) and insert them move them in that order const std::vector &esp = m_ESPs; std::sort(rows.begin(), rows.end(), @@ -1111,7 +1112,7 @@ void PluginList::changePluginPriority(std::vector rows, int newPriority) setPluginPriority(*iter, newPriority); } - emit layoutChanged(); + layoutChange.finish(); refreshLoadOrder(); startSaveTime(); diff --git a/src/pluginlist.h b/src/pluginlist.h index f8c69e11..95f90e09 100644 --- a/src/pluginlist.h +++ b/src/pluginlist.h @@ -33,13 +33,46 @@ along with Mod Organizer. If not, see . #include + +template +class ChangeBracket { +public: + ChangeBracket(C *model) + : m_Model(nullptr) + { + QVariant var = model->property("__aboutToChange"); + bool aboutToChange = var.isValid() && var.toBool(); + if (!aboutToChange) { + model->layoutAboutToBeChanged(); + model->setProperty("__aboutToChange", true); + m_Model = model; + } + } + ~ChangeBracket() { + finish(); + } + + void finish() { + if (m_Model != nullptr) { + m_Model->layoutChanged(); + m_Model->setProperty("__aboutToChange", false); + m_Model = nullptr; + } + } + +private: + C *m_Model; +}; + + + /** * @brief model representing the plugins (.esp/.esm) in the current virtual data folder **/ class PluginList : public QAbstractTableModel, public MOBase::IPluginList { Q_OBJECT - + friend class ChangeBracket; public: enum EColumn { @@ -225,7 +258,6 @@ private: friend bool ByDate(const ESPInfo& LHS, const ESPInfo& RHS); friend bool ByPriority(const ESPInfo& LHS, const ESPInfo& RHS); - class BossDLL : public PDLL { DECLARE_CLASS(BossDLL) @@ -353,4 +385,6 @@ private: }; + + #endif // PLUGINLIST_H -- cgit v1.3.1 From 7aadb476376db1d23ad333abb439639552bb6e19 Mon Sep 17 00:00:00 2001 From: Tannin Date: Fri, 7 Feb 2014 21:05:48 +0100 Subject: - archives.txt is now written using the "safe"-write mechanism - added the whole boss fork to the repository - bugfix: boss db is now always re-initialised because otherwise there might have been differing results between runs - bugfix: locked load order was ignored by integrated boss - bugfix: archive list wasn't written back on all changes that affected it - bugfix: CreateFile-hook didn't reroute files created with OPEN_ALWAYS to overwrite directory - bugfix: NtQueryDirectoryFile-hook didn't return the correct status code when searching for a file that doesn't exist --- src/mainwindow.cpp | 35 +- src/organizer_cs.ts | 1428 ++++++++++++++++++++++++++--------------------- src/organizer_de.ts | 1428 ++++++++++++++++++++++++++--------------------- src/organizer_es.ts | 1432 ++++++++++++++++++++++++++--------------------- src/organizer_fr.ts | 1426 ++++++++++++++++++++++++++--------------------- src/organizer_ru.ts | 1436 +++++++++++++++++++++++++++--------------------- src/organizer_tr.ts | 1432 ++++++++++++++++++++++++++--------------------- src/organizer_zh_CN.ts | 1428 ++++++++++++++++++++++++++--------------------- src/organizer_zh_TW.ts | 1428 ++++++++++++++++++++++++++--------------------- src/pluginlist.cpp | 136 +++-- src/pluginlist.h | 7 +- src/version.rc | 4 +- 12 files changed, 6512 insertions(+), 5108 deletions(-) (limited to 'src/pluginlist.h') diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index b6a744aa..d83d4d06 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -58,6 +58,7 @@ along with Mod Organizer. If not, see . #include "problemsdialog.h" #include "previewdialog.h" #include "aboutdialog.h" +#include "safewritefile.h" #include #include #include @@ -623,22 +624,18 @@ void MainWindow::createHelpWidget() void MainWindow::saveArchiveList() { if (m_ArchivesInit) { - QFile archiveFile(m_CurrentProfile->getArchivesFileName()); - if (archiveFile.open(QIODevice::WriteOnly | QIODevice::Truncate)) { - for (int i = 0; i < ui->bsaList->topLevelItemCount(); ++i) { - QTreeWidgetItem *tlItem = ui->bsaList->topLevelItem(i); - for (int j = 0; j < tlItem->childCount(); ++j) { - QTreeWidgetItem *item = tlItem->child(j); - if (item->checkState(0) == Qt::Checked) { - archiveFile.write(item->text(0).toUtf8().append("\r\n")); - } + SafeWriteFile archiveFile(m_CurrentProfile->getArchivesFileName()); + for (int i = 0; i < ui->bsaList->topLevelItemCount(); ++i) { + QTreeWidgetItem *tlItem = ui->bsaList->topLevelItem(i); + for (int j = 0; j < tlItem->childCount(); ++j) { + QTreeWidgetItem *item = tlItem->child(j); + if (item->checkState(0) == Qt::Checked) { + archiveFile->write(item->text(0).toUtf8().append("\r\n")); } } - } else { - reportError(tr("failed to save archives order, do you have write access " - "to \"%1\"?").arg(m_CurrentProfile->getArchivesFileName())); } - archiveFile.close(); + archiveFile.commit(); + qDebug("%s saved", qPrintable(QDir::toNativeSeparators(m_CurrentProfile->getArchivesFileName()))); } else { qWarning("archive list not initialised"); } @@ -701,18 +698,13 @@ bool MainWindow::saveCurrentLists() return false; } - // save plugin list try { savePluginList(); + saveArchiveList(); } catch (const std::exception &e) { reportError(tr("failed to save load order: %1").arg(e.what())); } - // save only if the file doesn't exist at all, changes made in the ui are saved immediately - if (!QFile::exists(m_CurrentProfile->getArchivesFileName())) { - saveArchiveList(); - } - return true; } @@ -2709,6 +2701,8 @@ void MainWindow::modorder_changed() m_DirectoryStructure->getOriginByName(ToWString(modInfo->name())).setPriority(priority); } } + refreshBSAList(); + saveArchiveList(); m_DirectoryStructure->getFileRegister()->sortOrigins(); } @@ -3003,8 +2997,9 @@ void MainWindow::modlistChanged(const QModelIndex &index, int role) MessageDialog::showMessage(tr("Multiple esps activated, please check that they don't conflict."), this); } m_PluginList.refreshLoadOrder(); - // immediately save plugin list + // immediately save affected lists savePluginList(); + saveArchiveList(); } } } diff --git a/src/organizer_cs.ts b/src/organizer_cs.ts index f78313bd..08f8d70e 100644 --- a/src/organizer_cs.ts +++ b/src/organizer_cs.ts @@ -1,6 +1,50 @@ + + AboutDialog + + + + About + + + + + Revision: + + + + + Used Software + + + + + Credits + + + + + Translators + + + + + Others + + + + + Close + + + + + No license + + + ActivateModsDialog @@ -239,25 +283,30 @@ p, li { white-space: pre-wrap; } DownloadList - + Name JmĂ©no - + Filetime ÄŚas stáhnutĂ­ - + Done Hotovo - + Information missing, please select "Query Info" from the context menu to re-retrieve. Info chybĂ­, oznaÄŤte "ZĂ­skat Info" z kontextovĂ©ho menu pro pokus naÄŤtenĂ­ z Nexusu. + + + pending download + + DownloadListWidget @@ -310,125 +359,135 @@ p, li { white-space: pre-wrap; } DownloadListWidgetCompactDelegate - + Installed NainstalovanĂ© - + Uninstalled - + Done Hotovo - - - - + + + + Are you sure? Jsi si jistĂ˝? - + This will remove all finished downloads from this list and from disk. TĂ­mto vymaĹľeš všechny dokonÄŤenĂ© stáhnutĂ­ se seznamu i z disku. - + This will remove all installed downloads from this list and from disk. TĂ­mto vymaĹľeš jenom nainstalovanĂ© stáhnutĂ­ se seznamu i z disku. - + This will permanently remove all finished downloads from this list (but NOT from disk). - + This will permanently remove all installed downloads from this list (but NOT from disk). - + Install Instaluj - + Query Info ZĂ­skej Info - + Delete - + Un-Hide OdekrĂ˝t - + Remove from View - + Remove Odstranit - + Cancel Zrušit - + + < mod %1 file %2 > + + + + + Pending + + + + Paused - + Fetching Info 1 - + Fetching Info 2 - + Pause Pauza - + Resume PokraÄŤuj - + Delete Installed... - + Delete All... - + Remove Installed... OdstraĹ uĹľ nainstalovanĂ©... - + Remove All... OdstraĹ všechny... @@ -436,68 +495,78 @@ p, li { white-space: pre-wrap; } DownloadListWidgetDelegate - - - - + + + + Are you sure? Jsi si jistĂ˝? - + This will remove all finished downloads from this list and from disk. TĂ­mto vymaĹľeš všechny dokonÄŤenĂ© stáhnutĂ­ se seznamu i z disku. - + This will remove all installed downloads from this list and from disk. TĂ­mto vymaĹľeš jenom nainstalovanĂ© stáhnutĂ­ se seznamu i z disku. - + This will remove all finished downloads from this list (but NOT from disk). - + This will remove all installed downloads from this list (but NOT from disk). - + Install Instaluj - + Query Info ZĂ­skej Info - + Delete - + Un-Hide OdekrĂ˝t - + Remove from View - + Remove OdstraniĹĄ - + Cancel Zrušit + + + < mod %1 file %2 > + + + + + Pending + + Fetching Info 1 @@ -509,32 +578,32 @@ p, li { white-space: pre-wrap; } - + Pause Pauza - + Resume PokraÄŤuj - + Delete Installed... - + Delete All... - + Remove Installed... Odstranit uĹľ nainstalovanĂ©... - + Remove All... Odstranit všechny... @@ -547,75 +616,76 @@ p, li { white-space: pre-wrap; } NezdaĹ™ilo se pĹ™ejmenovat "%1" na "%2" - + Download again? Stáhnout znovu? - + A file with the same name has already been downloaded. Do you want to download it again? The new file will receive a different name. Soubor se stejnĂ˝m jmĂ©nem uĹľ byl stáhnutĂ˝. Chcete ho stáhnout znovu? NovĂ˝ soubor bude pojmenován jinak. - + failed to download %1: could not open output file: %2 StahovánĂ­ zlyhalo %1: nemoĹľno otevřít vĂ˝slednĂ­ soubor: %2 - + Wrong Game - + The download link is for a mod for "%1" but this instance of MO has been set up for "%2". - - - - - - - - - - - - - - + + + + + + + + + + + + + + + invalid index neplatnĂ˝ index - + failed to delete %1 odstránÄ›nĂ­ zlyhalo %1 - + failed to delete meta file for %1 odstránÄ›nĂ­ meta souboru zlyhalo pro %1 - - - - - - + + + + + + invalid index %1 neplatnĂ˝ index %1 - + Please enter the nexus mod id ProsĂ­m zadej Nexus mod ID - + Mod ID: Mod ID: @@ -624,38 +694,43 @@ p, li { white-space: pre-wrap; } neplatnĂ˝ alfabetickĂ˝ index %1 - + Information updated Info aktualizovanĂ© - - + + No matching file found on Nexus! Maybe this file is no longer available or it was renamed? ŽádnĂ˝ pĹ™islouchajĂ­cĂ­ soubor nenalezen na Nexusu! MoĹľná uĹľ nenĂ­ k dispozici nebo byl pĹ™ejmenovanĂ˝? - + No file on Nexus matches the selected file by name. Please manually choose the correct one. ŽádnĂ˝ soubor na Nexusu nezodpovedá pĹ™esnĂ©mu jmĂ©nu. Zvolte ruÄŤne ten správnĂ˝. - + No download server available. Please try again later. - + Failed to request file info from nexus: %1 Zlyhalo zĂ­skánĂ­ info z Nexusu %1 - + + Download failed. Server reported: %1 + + + + Download failed: %1 (%2) StahovánĂ­ zlyhalo: %1 (%2) - + failed to re-open %1 zlyhalo znovu-otevĹ™enĂ­ %1 @@ -765,7 +840,7 @@ KaĹľdá hra/aplikace distribuovaná skrz Steammá unikátnĂ­ ID. MO potĹ™ebuje v - + If checked, MO will be closed once the specified executable is run. Pokud je zaškrtnutĂ©, MO se ukonÄŤĂ­ hned po spuštÄ›nĂ­ Spouštěče. @@ -782,7 +857,7 @@ KaĹľdá hra/aplikace distribuovaná skrz Steammá unikátnĂ­ ID. MO potĹ™ebuje v - + Add PĹ™idat @@ -798,47 +873,64 @@ KaĹľdá hra/aplikace distribuovaná skrz Steammá unikátnĂ­ ID. MO potĹ™ebuje v Odstranit - + + Close + + + + Select a binary Vyber binárnĂ­ soubor - + Executable (%1) SpuštÄ›nĂ­ (%1) - + Java (32-bit) required - + MO requires 32-bit java to run this application. If you already have it installed, select javaw.exe from that installation as the binary. - + Select a directory Vyber ZloĹľku - + Confirm Potvrdit - + Really remove "%1" from executables? Opravdu odstranit "%1" ze seznamu SpouštÄ›nĂ­? - + Modify UloĹľ - + + + Save Changes? + + + + + + You made changes to the current executable, do you want to save them? + + + + MO must be kept running or this application will not work correctly. MO musĂ­ beĹľet, aby tahle aplikace pracovala správnÄ›. @@ -1296,7 +1388,7 @@ Poznámka: Instalátor nerozpoznává uĹľ nainstalovanĂ© mody! MO je uzamÄŤenĂ˝ pokud aplikace/hra běží. - + Unlock Odemkni @@ -1304,7 +1396,7 @@ Poznámka: Instalátor nerozpoznává uĹľ nainstalovanĂ© mody! LogBuffer - + failed to write log to %1: %2 nezdaĹ™il se zápis do logu %1: %2 @@ -1325,23 +1417,23 @@ Poznámka: Instalátor nerozpoznává uĹľ nainstalovanĂ© mody! MainWindow - - + + Categories Kategorie - + Profile Profil - + Pick a module collection Vyber kolekci modulĹŻ - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1356,44 +1448,44 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">ProsĂ­m mÄ›jte na pamÄ›ti, Ĺľe v souÄŤasnosti poradĂ­ esp se neukladá pro rĹŻznĂ© profily.</span></p></body></html> - + Refresh list ZnovunaÄŤĂ­st seznam - + Refresh list. This is usually not necessary unless you modified data outside the program. ObnovĂ­ seznam. Tohle obvykle nenĂ­ zapotĹ™ebĂ­, jedine Ĺľe by jste mÄ›nili obsah dat mimo program MO. - + List of available mods. - + This is a list of installed mods. Use the checkboxes to activate/deactivate mods and drag & drop mods to change their "installation" orders. - + Filter Filter - + No groups - + Nexus IDs Nexus ID - - - + + + Namefilter @@ -1402,12 +1494,12 @@ p, li { white-space: pre-wrap; } Start - + Pick a program to run. Vyber program na spuštÄ›nĂ­. - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1422,12 +1514,12 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">MĹŻĹľeš pĹ™idávat rĹŻznĂ© nástroje, ale neruÄŤĂ­m, Ĺľe ty kterĂ© jsem netestoval poběží správnÄ›.</span></p></body></html> - + Run program Spustit program - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1440,17 +1532,17 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Spusti vybranĂ˝ program s nastavenĂ­m ModOrganizeru.</span></p></body></html> - + Run Spustit - + Create a shortcut in your start menu or on the desktop to the specified program - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1463,7 +1555,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Tohle vytvoří odkaz v menu Start, kterĂ˝ přímo bude spouštÄ›t zvolenĂ˝ program pĹ™es MO.</span></p></body></html> - + Shortcut @@ -1488,12 +1580,12 @@ p, li { white-space: pre-wrap; } UloĹľit - + List of available esp/esm files Seznam dostupnĂ˝ch esp/esm souborĹŻ - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1510,12 +1602,12 @@ p, li { white-space: pre-wrap; } DĹ®LEĹ˝ITÉ: MĹŻĹľete mÄ›nit poĹ™adĂ­ BSA souborĹŻ tady, ale soubory modĹŻ ako takĂ˝ch má vyšší prioritu a pĹ™epíše konflikty, kterĂ© by vznikly zde! - + List of available BS Archives. Archives not checked here are not managed by MO and ignore installation order. Seznam BS archivĹŻ, kterĂ© jsou k dispozici. Archivy, kterĂ© jsou zde neni oznaÄŤeny nebudou naÄŤteny do hry. - + BSA files are archives (comparable to .zip files) that contain data assets (meshes, textures, ...) to be used by the game. As such they "compete" with loose files in your data directory over which is loaded. By default, BSAs that share their base name with an enabled ESP (i.e. plugin.esp and plugin.bsa) are automatically loaded and will have precedence over all loose files, the installation order you set up to the left is then ignored! @@ -1526,66 +1618,71 @@ By default, BSAs that share their base name with an enabled ESP (i.e. plugin.esp BSAs checked here are loaded in such a way that your installation order is obeyed properly. - - + + File Soubor - + <html><head/><body><p>Marked Archives (<img src=":/MO/gui/warning_16"/>) are still loaded on Skyrim but the <a href="http://forums.bethsoft.com/topic/1354395-update-bsas-and-you/"><span style=" text-decoration: underline; color:#0000ff;">regular file override</span></a> mechanism will apply: Loose files override BSAs, no matter the mod/plugin priority.</p></body></html> - + Mod Mod - + Data Data - + + Sort + + + + refresh data-directory overview znovunaÄŤti data - + Refresh the overview. This may take a moment. Obnov náhled. Tohle mĹŻĹľe chvĂ­li trvat. - - - + + + Refresh ZnovunaÄŤĂ­st - + This is an overview of your data directory as visible to the game (and tools). Tohle je náhled tvĂ© data struktury, kterou naÄŤte hra (i nástroje). - - + + Filter the above list so that only conflicts are displayed. PĹ™efiltruje seznam nahoĹ™e tak, Ĺľe budou zobrazeny pouze konflikty. - + Show only conflicts UkaĹľ jenom konflikty - + Saves UloĹľenĂ© pozice - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1602,160 +1699,160 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Pokud kliknete &quot;Fixni Mody...&quot; v kontext menu, MO se pokusĂ­ aktivovat všechny mody a esp soubory, kterĂ© byli v pozici používány. Nic se však nevypne!</span></p></body></html> - + Downloads StáhnutĂ© - + This is a list of mods you downloaded from Nexus. Double click one to install it. Tohle je seznam modĹŻ, kterĂ© jsi stánul z Nexusu. Dvojklik nainstaluje mod. - + Compact KompaktnĂ­ - + Show Hidden - + Tool Bar Panel nástrojĂş - + Install Mod Instaluj mod - + Install &Mod Instaluj &Mod - + Install a new mod from an archive Instaluj novĂ˝ mod z archĂ­vu - + Ctrl+M Ctrl+M - + Profiles Profily - + &Profiles &Profily - + Configure Profiles Nastav profily - + Ctrl+P Ctrl+P - + Executables SpouštÄ›nĂ­ - + &Executables &SpouštÄ›nĂ­ - + Configure the executables that can be started through Mod Organizer Konfigurace spouštÄ›nĂ­, kterĂ© lze použít pro naÄŤtenĂ­ modĹŻ z MO - + Ctrl+E Ctrl+E - - + + Tools - + &Tools - + Ctrl+I Ctrl+I - + Settings NastavenĂ­ - + &Settings &NastavenĂ­ - + Configure settings and workarounds Konfigurace a nastavenĂ­ programu a rĹŻznĂ˝ch Ĺ™ešenĂ­ - + Ctrl+S Ctrl+S - + Nexus Nexus - + Search nexus network for more mods Prohledat mody na nexusu - + Ctrl+N Ctrl+N - - + + Update - + Mod Organizer is up-to-date Verze Mod Organizer u je aktuálnĂ­ - - + + No Problems ŽádnĂ© problĂ©my - + This button will be highlighted if MO discovered potential problems in your setup and provide tips on how to fix them. !Work in progress! @@ -1766,54 +1863,54 @@ Right now this has very limited functionality V souÄŤasnosti má omezenou funkcionalitu - - + + Help Pomoc - + Ctrl+H - + Endorse MO - - + + Endorse Mod Organizer - + Toolbar - + Desktop - + Start Menu - + Problems ProblĂ©my - + There are potential problems with your setup ExistujĂ­ potenciálnĂ­ problĂ©my s programem - + Everything seems to be in order Všechno se jevĂ­ v pořádku @@ -1830,22 +1927,22 @@ V souÄŤasnosti má omezenou funkcionalitu <li>dotNet nenĂ­ nainstalován nebo je neaktuálnĂ­. Tohle vyĹľaduje NCC. NajdÄ›te ho zde: <a href="%1">%1</a></li> - + Help on UI Pomoc s programem - + Documentation Wiki Dokumentace wiki - + Report Issue Nahlásit chybu - + Tutorials @@ -1854,425 +1951,426 @@ V souÄŤasnosti má omezenou funkcionalitu poĹ™adĂ­ naÄŤtenĂ­ se nezdaĹ™ilo uloĹľit - + failed to save load order: %1 zlyhalo uloĹľenĂ­ poĹ™adĂ­ naÄŤtenĂ­: %1 - + failed to save archives order, do you have write access to "%1"? zlyhal zápis poĹ™adĂ­ archivĹŻ, máte administrátorsky povoleno zapisovat na "%1"? - + + About + + + + + About Qt + + + + Name JmĂ©no - + Please enter a name for the new profile ProsĂ­m zadej jmĂ©no pro novĂ˝ profil - + failed to create profile: %1 Zlyhalo vytvoĹ™enĂ­ profilu: %1 - + Show tutorial? - + You are starting Mod Organizer for the first time. Do you want to show a tutorial of its basic features? If you choose no you can always start the tutorial from the "Help"-menu. - + Downloads in progress ProbĂ­há stahovánĂ­ - + There are still downloads in progress, do you really want to quit? Pořád probĂ­há stahovánĂ­, urÄŤitÄ› chcete skonÄŤit (zruší stahovánĂ­)? - + failed to read savegame: %1 nezdaĹ™ilo se naÄŤĂ­st pozici: %1 - + Plugin "%1" failed: %2 - + Plugin error - + It appears the plugin "%1" failed to load last startup and caused MO to crash. Do you want to disable it? (Please note: If this is the first time you see this message for this plugin you may want to give it another try. The plugin may be able to recover from the problem) - + Failed to start "%1" Zlyhal start "%1" - + Waiting ÄŚekánĂ­ - + Please press OK once you're logged into steam. Stiskni OK aĹľ budeš pĹ™ihlášen do Steamu. - "%1" not found - "%1" nenalezeno + "%1" nenalezeno - + Start Steam? Spustit Steam? - + Steam is required to be running already to correctly start the game. Should MO try to start steam now? Steam by mÄ›l běžet aby se podaĹ™ilo spustit hru. Má se MO pokusit spustit steam teÄŹ? - + Also in: <br> TakĂ© v: <br> - + No conflict ŽádnĂ© konflikty - + <Edit...> <Edit...> - - Failed to refresh list of esps: %s - - - - + This bsa is enabled in the ini file so it may be required! Tenhle BSA soubor je aktivován v ini souboru, tak zĹ™ejmÄ› je vyĹľadován! - + This archive will still be loaded since there is a plugin of the same name but its files will not follow installation order! Tento archĂ­v se stejnÄ› naÄŤte, protoĹľe existuje plugin se stejnĂ˝m jmĂ©nem ale jeho soubory nebudou zodpovĂ­dat poĹ™adĂ­ nainstalovánĂ­! - + Activating Network Proxy - - + + Installation successful Instalace Ăşspěšná - - + + Configure Mod Konfigurace Modu - - + + This mod contains ini tweaks. Do you want to configure them now? Tenhle mod obsahuje ini Ăşpravy. Chcete je nastavovat teÄŹ? - - + + mod "%1" not found mod "%1" nenalezen - - + + Installation cancelled Instalace zrušena - - + + The mod was not installed completely. Tento mod se nenainstaloval Ăşplne. - + Some plugins could not be loaded - + Too many esps and esms enabled - - + + Description missing - + The game doesn't allow more than 255 active plugins (including the official ones) to be loaded. You have to disable some unused plugins or merge some plugins into one. You can find a guide here: <a href="http://wiki.step-project.com/Guide:Merging_Plugins">http://wiki.step-project.com/Guide:Merging_Plugins</a> - + Choose Mod Vyber Mod - + Mod Archive ArchĂ­v Modu - + Start Tutorial? - + You're about to start a tutorial. For technical reasons it's not possible to end the tutorial early. Continue? - - + + Download started StahovánĂ­ zaÄŤalo - + failed to update mod list: %1 nezdaĹ™ilo se aktualizovat seznam modĹŻ: %1 - + failed to spawn notepad.exe: %1 zlyhalo otevĹ™enĂ­ notepad.exe: %1 - + failed to open %1 - + failed to change origin name: %1 NezdaĹ™ilo se zmÄ›nit pĹŻvodnĂ­ jmĂ©no: %1 - + Multiple esps activated, please check that they don't conflict. - - + + Create Mod... - + A mod with this name already exists - + Continue? - + The versioning scheme decides which version is considered newer than another. This function will guess the versioning scheme under the assumption that the installed version is outdated. - + + Sorry - + I don't know a versioning scheme where %1 is newer than %2. - + <All> <Všechny> - + <Checked> <AktivovanĂ©> - + Plugin "%1" failed - + failed to init plugin %1: %2 - + The following plugins could not be loaded. The reason may be missing dependencies (i.e. python) or an outdated version: - - Failed to move "%1" from mod "%2" to "%3": %4 - - - - + <Unchecked> <NeaktivovanĂ©> - + <Update> <Aktualizace> - + <No category> <Bez kategorie> - + <Conflicted> - + <Not Endorsed> - + failed to rename mod: %1 NezdaĹ™ilo se pĹ™ejmenovat mod: %1 - + Overwrite? - + This will replace the existing mod "%1". Continue? - + failed to remove mod "%1" - - - + + + failed to rename "%1" to "%2" NezdaĹ™ilo se pĹ™ejmenovat "%1" na "%2" - - - + + + + Confirm Potvrdit - + Remove the following mods?<br><ul>%1</ul> - + failed to remove mod: %1 NezdaĹ™ilo se odstranit mod: %1 - - + + Failed ZlyhánĂ­ - + Installation file no longer exists InstalaÄŤnĂ­ soubor jiĹľ neexistuje - + Mods installed with old versions of MO can't be reinstalled in this way. Mody nainstalovány staršími verzemi MO nemĹŻĹľou bĂ˝t pĹ™einstalovány tĂ­mto spĹŻsobem. - - + + You need to be logged in with Nexus to endorse - - + + Extract BSA Extrakce BSA - + This mod contains at least one BSA. Do you want to unpack it? (This removes the BSA after completion. If you don't know about BSAs, just select no) Tento mod obsahuje alespoĹ jeden BSA soubor. Chcete rozpakovat i jeho obsah? (BSA se po ĂşspěšnĂ©m rozpakovánĂ­ odstránĂ­. Pokud nevĂ­te, co je BSA, zvolte moĹľnost Ne) - - - + + + failed to read %1: %2 - - + + This archive contains invalid hashes. Some files may be broken. Tento archiv má neplatnĂ© identifikaÄŤnĂ­ souÄŤty. NekterĂ© soubory mohou bĂ˝t poškozeny. - + Nexus ID for this Mod is unknown Nexus ID pro tento Mod nenĂ­ známo @@ -2285,92 +2383,92 @@ This function will guess the versioning scheme under the assumption that the ins Zvol Prioritu - + Really enable all visible mods? Opravdu aktivovat všechny zobrazenĂ© mody? - + Really disable all visible mods? Opravdu deaktivovat všechny zobrazenĂ© mody? - + Choose what to export - + Everything - + All installed mods are included in the list - + Active Mods - + Only active (checked) mods from your current profile are included - + Visible - + All mods visible in the mod list are included - + export failed: %1 - + Install Mod... Instaluj Mod... - + Enable all visible Aktivuj všechny v seznamu - + Disable all visible Deaktivuj všechny v seznamu - + Check all for update Skontroluj všechny pro aktualizaci - + Export to csv... - + Sync to Mods... Synchronizuj s Mody... - + Restore Backup - + Remove Backup... @@ -2379,312 +2477,362 @@ This function will guess the versioning scheme under the assumption that the ins OznaÄŤ Kategorii - + Primary Category - + Change versioning scheme - + Un-ignore update - + Ignore update - + Rename Mod... PĹ™ejmenuj Mod... - + Remove Mod... Odstranit Mod... - + Reinstall Mod PĹ™einstaluj Mod - + Un-Endorse - - + + Endorse - + Won't endorse - + Endorsement state unknown - + Ignore missing data - + Visit on Nexus Navštiv na Nexusu - + Open in explorer OtevĹ™i v prohlĂ­ĹľeÄŤi - + Information... Informace... - - + + Exception: VĂ˝nimky: - - + + Unknown exception Neznámá vĂ˝nimka - + <Multiple> - + + Really delete "%1"? + + + + Fix Mods... Oprav Mody... - - + + Delete + + + + + failed to remove %1 - - + + failed to create %1 - + Can't change download directory while downloads are in progress! NenĂ­ moĹľnĂ© zmÄ›nit cĂ­l pro stahovánĂ­ kdyĹľ probĂ­há stahovánĂ­! - + Download failed StahovánĂ­ zlyhalo - + failed to write to file %1 NezdaĹ™il se zápis do souboru %1 - + %1 written %1 zapsáno - + Select binary Vyber binárnĂ­ soubor - + Binary Soubor - + Enter Name Zadej jmĂ©no - + Please enter a name for the executable ProsĂ­m zadej jmĂ©no pro spouštÄ›nĂ­ - + Not an executable NenĂ­ spustitelnĂ˝ - + This is not a recognized executable. Tenhle soubor nenĂ­ rozpoznán jako spustitelnĂ˝. - - + + Replace file? Nahradit soubor? - + There already is a hidden version of this file. Replace it? UĹľ existuje skrytá verze tohto souboru. Nahradit? - - + + File operation failed Operace se souborem zlyhala - - + + Failed to remove "%1". Maybe you lack the required file permissions? NepodaĹ™ilo se odstranit "%1". MoĹľná nejsou k dispozici poĹľadována práva? - + There already is a visible version of this file. Replace it? UĹľ existuje viditelná verze tohto souboru. Nahradit? - + + file not found: %1 + soubor nenalezen: %1 + + + + failed to generate preview for %1 + + + + + Sorry, can't preview anything. This function currently does not support extracting from bsas. + + + + Update available Aktualizace k dispozici - + Open/Execute Otevřít/Spustit - + Add as Executable PĹ™idat SpouštenĂ­ - + + Preview + + + + Un-Hide OdekrĂ˝t - + Hide SkrĂ˝t - + Write To File... Zápis do souboru... - + Do you want to endorse Mod Organizer on %1 now? - + Remove - + Unlock load order - + Lock load order - + + BOSS working + + + + + failed to run boss: %1 + + + + Request to Nexus failed: %1 - + + Executable "%1" not found + + + + + Failed to refresh list of esps: %1 + + + + This will move all files from overwrite into a new, regular mod. Please enter a name: - + Add/Remove Categories - + Replace Categories - - + + login successful - + login failed: %1. Trying to download anyway pĹ™ihlášenĂ­ zlyhalo: %1. Pokouším se beztak stahovat - + login failed: %1 pĹ™ihlášenĂ­ zlyhalo: %1 - + login failed: %1. You need to log-in with Nexus to update MO. pĹ™ihlášenĂ­ zlyhalo: %1. Na aktualizaci MO je potĹ™ebnĂ© pĹ™ihlášenĂ­ k Nexusu. - + Error Chyba - + failed to extract %1 (errorcode %2) zlyhala extrakce %1 (errorcode %2) - + Extract... Extrakce... - + Edit Categories... Editovat Kategorie... - + Enable all - + Disable all @@ -2731,58 +2879,58 @@ Please enter a name: Informace o modu - + Textfiles TextovĂ© soubory - + A list of text-files in the mod directory. Seznam textovĂ˝ch souborĹŻ obsaĹľenĂ˝ch v modu. - + A list of text-files in the mod directory like readmes. Seznam textovĂ˝ch souborĹŻ obsaĹľenĂ˝ch v modu, například readme. - - + + Save UloĹľit - + INI-Files INI soubory - + This is a list of .ini files in the mod. Tohle je seznam .ini souborĹŻ v modu. - + This is a list of .ini files in the mod. These are usually used to configure the behaviour of mods if there are configurable parameters. Tohle je seznam .ini souborĹŻ v modu. DajĂ­ se upravovat pro zmenu konfigurace a chovánĂ­ modu, pokud umoĹľĹuje takovĂ© parametry. - + Save changes to the file. UloĹľit zmÄ›ny do souboru. - + Save changes to the file. This overwrites the original. There is no automatic backup! UloĹľit zmÄ›ny do souboru.Tohle pĹ™epíše pĹŻvodnĂ­ soubor. Nevytváří se žádná automatická záloha! - + Images Obrázky - + Images located in the mod. Obrázky obsaĹľenĂ© v modu. @@ -2799,13 +2947,13 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Tohle je seznam všech obrázkĹŻ (.jpg a.png) obsaĹľenĂ˝ch v modu, jako naříklad screenshoty. KliknutĂ­m na jeden ho zvÄ›tšíš.</span></p></body></html> - - + + Optional ESPs VolitelnĂ© ESP - + List of esps and esms that can not be loaded by the game. Seznam souborĹŻ .esp a .esm, kterĂ© nebudou naÄŤteni do hry. @@ -2828,12 +2976,12 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">VÄ›tšina modĹŻ nemá volitelnĂ© esp, tak s nejvyšší pravdÄ›podobnostĂ­ bĂ˝va tenhle seznam prázdnĂ˝.</span></p></body></html> - + This lists all the images (.jpg and .png) in the mod directory, like screenshots and such. Click one to get a larger view. - + List of esps and esms contained in this plugin that currently can not be loaded by the game. They will not even appear in the esp-list in the main MO-window. They usually contain optional functionality, see the readme. @@ -2841,103 +2989,103 @@ Most mods do not have optional esps, so chances are good you are looking at an e - + Make the selected mod in the lower list unavailable. Znepřístupni oznaÄŤenĂ˝ mod v seznamu dolĹŻ. - + The selected esp (in the lower list) will be pushed into a subdirectory of the mod and will thus become "invisible" to the game. It can then no longer be activated. OznaÄŤenĂ˝ soubor esp (v seznamu dolĹŻ) bude pĹ™emĂ­stÄ›n do podadresáře modu a tak se stane "neviditelnĂ˝m" pro hru. V takovem stavu se nedá aktivovat. - + Move a file to the data directory. PĹ™esuĹ soubor mezi Data. - + This moves a esp to the esp directory so it can be enabled in the main window. Please note that the ESP merely becomes "available", it will not necessarily be loaded! That is configured in the main window of omo. PĹ™esune soubor esp do adresáře, kde má bĂ˝t, aby mohl bĂ˝t aktivován. ProsĂ­m berte na vÄ›domĂ­, Ĺľe tato akce jenom soubor "zpĹ™istupnĂ­", nedÄ›lá ho automaticky aktivnĂ­m. To se pak aktivuje v hlavnĂ­m oknu mezi esp. - + ESPs in the data directory and thus visible to the game. ESP soubory mezi Data a tedy přístupnĂ© pro hru. - + These are the mod files that are in the (virtual) data directory of your game and will thus be selecteable in the esp list in the main window. Tady jsou soubory modu, kterĂ© se nacházejĂ­ ve (virtuálnĂ­m) data adresáři hry a proto je bude moĹľnĂ© aktivovat v seznamu esp v hlavnĂ­m oknÄ›. - + Available ESPs ESP k dispozici - + Conflicts Konflikty - + The following conflicted files are provided by this mod KonfliktnĂ­ soubory, kterĂ© budou pĹ™ebity tĂ­mhle modem - - + + File Soubor - + Overwritten Mods PĹ™epsanĂ© mody - + The following conflicted files are provided by other mods KonfliktnĂ­ soubory, kterĂ© další mody pĹ™ebijou - + Providing Mod Mod pĹŻvodu - + Non-Conflicted files NekonfliktnĂ­ soubory - + Categories Kategorie - + Primary Category - + Nexus Info Nexus Info - + Mod ID Mod ID - + Mod ID for this mod on Nexus. Mod ID tohodle modu na Nexusu. - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -2950,7 +3098,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Mod ID pro tenhle mod na Nexusu. VyplĹuje se automaticky pokud ste soubor i stáhli i nainstalovali přímo skrz MO. Jinak ho mĹŻĹľete zadat ruÄŤne. Správne ID naleznete u modu na Nexusu. Adresa bude vypadat takhle: </span><a href=" http://www.skyrimnexus.com/downloads/file.php?id=1334"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://skyrim.nexusmods.com/downloads/file.php?id=1334</span></a><a href="http://www.skyrimnexus.com/downloads/file.php?id=1334"><span style=" font-size:8pt; color:#000000;">. V takovem případe 1334 je Mod ID. Mimo jinĂ© odkaz je přímo na Mod Organizer tak proÄŤ rovnou nejĂ­t zadat Endorse?</span></a></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -2963,32 +3111,32 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Nainstalovaná verze modu. Bublina ukáže ÄŤĂ­slo nejaktuálnÄ›jší verzi modu na Nexusu. ÄŚĂ­slo verze se nastavĂ­ samo jenom pokud byl mod nainstalován skrz MO.</span></p></body></html> - + Version Verze - + Refresh ZnovunaÄŤĂ­st - + Refresh all information from Nexus. - + Description Popis - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:7.8pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"><br /></p></body></html> @@ -3008,7 +3156,7 @@ p, li { white-space: pre-wrap; } Druh - + Name JmĂ©no @@ -3017,12 +3165,12 @@ p, li { white-space: pre-wrap; } Velikost (kB) - + Endorse - + Notes @@ -3035,17 +3183,17 @@ p, li { white-space: pre-wrap; } UĹľ jste tenhle mod endorsovali? - + Filetree Struktura souborĹŻ - + A directory view of this mod ZloĹľkovĂ˝ náhled na mod - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -3060,53 +3208,53 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Zmeny se okamĹľite dejĂ­ pĹ™imo na disku, takĹľe</span><span style=" font-size:8pt; font-weight:600;">buÄŹte opatrnĂ­</span><span style=" font-size:8pt;">.</span></p></body></html> - + Previous - + Next Další - + Close Zavřít - + &Delete &Smazat - + &Rename &PĹ™ejmenovat - + &Hide &SkrĂ˝t - + &Unhide &OdekrĂ˝t - + &Open &Otevřít - + &New Folder &Nová SloĹľka - - + + Save changes? UloĹľit zmÄ›ny? @@ -3115,28 +3263,28 @@ p, li { white-space: pre-wrap; } UloĹľit zmÄ›ny v "%1"? - + File Exists Soubor existuje - + A file with that name exists, please enter a new one Soubor s rovnakĂ˝m názvem existuje, prosĂ­m zadejte jinĂ© jmĂ©no - + failed to move file zlyhalo pĹ™esunutĂ­ souboru - + failed to create directory "optional" zlyhalo vytvoĹ™enĂ­ zloĹľky "optional" - - + + Info requested, please wait Info vyžádáno, prosĂ­m poÄŤkejte @@ -3146,53 +3294,53 @@ p, li { white-space: pre-wrap; } (popis chybĂ­, prosĂ­m navštivte nexus pro kompletnĂ­ zobrazenĂ­) - + (description incomplete, please visit nexus) (popis chybĂ­, prosĂ­m navštivte nexus pro kompletnĂ­ zobrazenĂ­) - + Current Version: %1 SouÄŤasná verze: %1 - + No update available ŽádnĂ˝ update nenĂ­ k dispozici - + Main HlavnĂ­ - - + + Save changes to "%1"? - + Update Update - + Optional VolitelnĂ© - + Old StarĂ© - + Misc JinĂ© - + Unknown NeznámĂ© @@ -3201,13 +3349,13 @@ p, li { white-space: pre-wrap; } poĹľadavka zlyhala: %1 - + <a href="%1">Visit on Nexus</a> <a href="%1">Navštivte na Nexusu</a> - - + + Confirm Potvrdit @@ -3224,98 +3372,98 @@ p, li { white-space: pre-wrap; } VĂ˝nimka: %1 - + Failed to delete %1 Zlyhalo vymazánĂ­ %1 - + Are sure you want to delete "%1"? Jsi si jistĂ˝, Ĺľe chceš vymazat "%1"? - + Are sure you want to delete the selected files? Jsi si jistĂ˝, Ĺľe chceš vymazat oznaÄŤenĂ© soubory? - - + + New Folder Nová zloĹľka - + Failed to create "%1" Zlyhalo vytvoĹ™enĂ­ "%1" - - + + Replace file? Nahradit soubor? - + There already is a hidden version of this file. Replace it? UĹľ existuje skrytá verze tohto souboru. Nahradit? - - + + File operation failed Operace se souborem zlyhala - - + + Failed to remove "%1". Maybe you lack the required file permissions? NepodaĹ™ilo se odstranit "%1". MoĹľná nejsou k dispozici poĹľadována práva? - - + + failed to rename %1 to %2 NezdaĹ™ilo se pĹ™ejmenovat %1 na %2 - + There already is a visible version of this file. Replace it? UĹľ existuje viditelná verze tohto souboru. Nahradit? - + Un-Hide OdekrĂ˝t - + Hide SkrĂ˝t - + Please enter a name - - + + Error Chyba - + Invalid name. Must be a valid file name - + A tweak by that name exists - + Create Tweak @@ -3451,8 +3599,9 @@ p, li { white-space: pre-wrap; } - installed version: %1, newest version: %2 - nainstalovaná verze: %1, nejnovjší verze: %2 + installed version: "%1", newest version: "%2" + installed version: %1, newest version: %2 + nainstalovaná verze: %1, nejnovjší verze: %2 Name @@ -3653,17 +3802,17 @@ p, li { white-space: pre-wrap; } NexusInterface - + Failed to guess mod id for "%1", please pick the correct one - + empty response prázdná odozva - + invalid response neplatná odozva @@ -4662,85 +4811,93 @@ V souÄŤasnosti má omezenou funkcionalitu esp nenalezeno: %1 - + Mod Index - - + + Flags + + + + + unknown - + Name of your mods - + Load priority of your mod. The higher, the more "important" it is and thus overwrites data from plugins with lower priority. - + The modindex determins the formids of objects originating from this mods. - + failed to update esp info for file %1 (source id: %2), error: %3 - + esp not found: %1 - + Confirm Potvrdit - + Really enable all plugins? - + Really disable all plugins? - + The file containing locked plugin indices is broken - - failed to open output file: %1 - zlyhalo otevĹ™enĂ­ vĂ˝stupnĂ­ho souboru: %1 + zlyhalo otevĹ™enĂ­ vĂ˝stupnĂ­ho souboru: %1 - + Some of your plugins have invalid names! These plugins can not be loaded by the game. Please see mo_interface.log for a list of affected plugins and rename them. NÄ›kterĂ© vaše pluginy majĂ­ neplatnĂ© názvy! Tyhle pluginy nemĹŻĹľou bĂ˝t naÄŤteny hrou. ProsĂ­m nahlĂ©dnÄ›te do souboru mo_interface.log pro kompletnĂ­ seznam pluginĹŻ a pĹ™ejmenujte je. - + + BOSS dll incompatible + + + + Missing Masters - + Enabled Masters - + failed to restore load order for %1 @@ -4753,17 +4910,17 @@ V souÄŤasnosti má omezenou funkcionalitu max - + This plugin can't be disabled (enforced by the game) Tenhle plugin nemĹŻĹľe bĂ˝t deaktivován (vyĹľaduje to hra) - + Origin: %1 PĹŻvodnĂ­ mod: %1 - + Name JmĂ©no @@ -4772,7 +4929,7 @@ V souÄŤasnosti má omezenou funkcionalitu JmĂ©na vašich modĹŻ - + Priority Priorita @@ -4789,6 +4946,19 @@ V souÄŤasnosti má omezenou funkcionalitu Tento index pĹ™iraÄŹuje ID vÄ›cem, kouzlĹŻm,... kterĂ© pĹ™idáva mod. Ich id bude "xxyyyyyy" kde "xx" je index, kterĂ˝m je "yyyyyy" determinováno podle samotnĂ©ho modu. + + PreviewDialog + + + Preview + + + + + Close + + + ProblemsDialog @@ -4834,82 +5004,72 @@ p, li { white-space: pre-wrap; } Zlyhalo uplatnÄ›nĂ­ zmÄ›n v ini - + invalid profile name %1 - + failed to create %1 - - failed to open temporary file - - - - - failed to open "%1" for writing - - - - + failed to write mod list: %1 - + failed to update tweaked ini file, wrong settings may be used: %1 - + failed to create tweaked ini: %1 - - - - - + + + + + invalid index %1 NeplatnĂ˝ index %1 - + Overwrite directory couldn't be parsed - + invalid priority %1 neplatná priorita %1 - + failed to parse ini file (%1) - + failed to parse ini file (%1): %2 zlyhalo rozebránĂ­ ini souboru (%1): %2 - - + + failed to modify "%1" - + Delete savegames? - + Do you want to delete local savegames? (If you select "No", the save games will show up again if you re-enable local savegames) @@ -5286,12 +5446,12 @@ p, li { white-space: pre-wrap; } Zlyhalo nastavenĂ­ proxy-dll naÄŤĂ­tánĂ­ - + "%1" is missing "%1" chybĂ­ - + Permissions required ChybĂ­ oprávnÄ›nĂ­ @@ -5300,8 +5460,8 @@ p, li { white-space: pre-wrap; } UĹľivatelskĂ˝ účet nemá dostateÄŤná oprávnÄ›nĂ­ pro spuštÄ›nĂ­ Mod Organizeru. NevyhnutnĂ© zmeny se mĹŻĹľou udÄ›lat automaticky (adresář MO se nastavĂ­ ako pĹ™episovatelnĂ˝ pro souÄŤasnĂ©ho uĹľivatele). Budete požádáni spustit "mo_helper.exe" s administrátorskĂ˝mi právami). - - + + Woops Hups @@ -5310,66 +5470,66 @@ p, li { white-space: pre-wrap; } ModOrganizer havaroval! Má se vytvoĹ™it diagnostickĂ˝ soubor? Pokud mi tento soubor pošlete (sherb@gmx.net), bude omnoho vyšší šance, Ĺľe chybu opravĂ­m. - + The current user account doesn't have the required access rights to run Mod Organizer. The neccessary changes can be made automatically (the MO directory will be made writable for the current user account). You will be asked to run "helper.exe" with administrative rights. - + ModOrganizer has crashed! Should a diagnostic file be created? If you send me this file (%1) to sherb@gmx.net, the bug is a lot more likely to be fixed. Please include a short description of what you were doing when the crash happened - + ModOrganizer has crashed! Unfortunately I was not able to write a diagnostic file: %1 ModOrganizer havaroval! NaneštÄ›stĂ­, nezdaĹ™ilo se ani vytvoĹ™it diagnostickĂ˝ soubor: %1 - - + + Mod Organizer Mod Organizer - + An instance of Mod Organizer is already running Jedna instance Mod Organizeru uĹľ běží - + No game identified in "%1". The directory is required to contain the game binary and its launcher. Žádná hra nebyla nalezena v "%1". Je potĹ™ebnĂ©, aby adresář obsahoval binár hry a spouštěč. - - + + Please select the game to manage ProsĂ­m vyberte hru, kterou chcete spravovat - + Please select the game edition you have (MO can't start the game correctly if this is set incorrectly!) - + Please use "Help" from the toolbar to get usage instructions to all elements ProsĂ­m pouĹľijte "Pomoc" z panelu nástrojĂş pro instrukce ke všem elementĹŻm - - + + <Manage...> <Manage...> - + failed to parse profile %1: %2 NezdaĹ™ilo se rozebrat profil %1: %2 - - + + failed to find "%1" NepodaĹ™ilo sa najĂ­t "%1" @@ -5378,17 +5538,17 @@ p, li { white-space: pre-wrap; } Chyba kĂłdovánĂ­, prosĂ­m nahlaste tuto chybu a poskytnÄ›te záznamovĂ˝ soubor mo_interface.log! - + failed to access %1 zlyhal přístup k %1 - + failed to set file time %1 nepodaĹ™ilo se nastavit ÄŤas souboru %1 - + failed to create %1 NepodaĹ™ilo se vytvoĹ™it %1 @@ -5424,12 +5584,12 @@ p, li { white-space: pre-wrap; } nepodaĹ™ilo se otevřít %1 - + Script Extender Skript Extender - + Proxy DLL Proxy DLL @@ -5454,22 +5614,22 @@ Start elevated anyway? (you will be asked if you want to allow ModOrganizer.exe - + failed to spawn "%1": %2 nepodaĹ™ilo se vytvoĹ™it "%1": %2 - + "%1" doesn't exist "%1" neexistuje - + failed to inject dll into "%1": %2 nepodaĹ™ilo se vsunout dll do "%1": %2 - + failed to run "%1" nepodaĹ™ilo se spustit "%1" @@ -5530,6 +5690,11 @@ Start elevated anyway? (you will be asked if you want to allow ModOrganizer.exe invalid game type %1 + + + failed to open temporary file + + QueryOverwriteDialog @@ -5764,18 +5929,18 @@ Start elevated anyway? (you will be asked if you want to allow ModOrganizer.exe AdministrátorskĂ© práva jsou poĹľadovány na tuhle zmÄ›nu. - - + + attempt to store setting for unknown plugin "%1" - + Confirm Potvrdit - + Changing the mod directory affects all your profiles! Mods not present (or named differently) in the new location will be disabled in all profiles. There is no way to undo this unless you backed up your profiles manually. Proceed? Zmena adresáře modu zmÄ›nĂ­ všechny tvoje profily! NenalezenĂ© mody (nebo pĹ™ejmenovanĂ©) v novĂ© lokaci budou deaktivovány ve všech profilech. NenĂ­ moĹľnosĹĄ návratu pokud si nezazálohujete profily ruÄŤnÄ›. PokraÄŤovat? @@ -5948,52 +6113,57 @@ p, li { white-space: pre-wrap; } Konfigurovat Kategorie ModĹŻ - + Disable automatic internet features - + Disable automatic internet features. This does not affect features that are explicitly invoked by the user (like checking mods for updates, endorsing, opening the web browser) - + Offline Mode - + Use a proxy for network connections. - + Use a proxy for network connections. This uses the system-wide settings which can be configured in Internet Explorer. Please note that MO will start up a few seconds slower on some systems when using a proxy. - + Use HTTP Proxy (Uses System Settings) - - Known Servers (Dynamically updated every download) + + Associate with "Download with manager" links + + + + + Known Servers (updated on download) - + Preferred Servers (Drag & Drop) - + Blacklisted Plugins (use <del> to remove): - + Mod Organizer needs a dll to be injected into the game so all mods are visible to it. There are several means to do this: *Mod Organizer* (default) In this mode the Mod Organizer itself injects the dll. The disadvantage is that you always have to start the game through MO or a link created by it. @@ -6042,12 +6212,12 @@ p, li { white-space: pre-wrap; } Automaticky pĹ™ihlásit do Nexusu - + Username PĹ™ihlasovacĂ­ jmĂ©no - + Password Heslo @@ -6064,52 +6234,52 @@ p, li { white-space: pre-wrap; } Preferuj externĂ­ prohlĂ­ĹľeÄŤ - + Plugins - + Author: - + Version: - + Description: - + Key - + Value - + Workarounds ĹešenĂ­ - + Steam App ID Steam App ID - + The Steam AppID for your game Steam AppID pro vaši hru - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -6136,12 +6306,12 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">22380 je id, kterĂ© hledáte.</span></p></body></html> - + Load Mechanism Mechanizmus spuštÄ›nĂ­ - + Select loading mechanism. See help for details. Vyberte mechanizmus pouĹľit pro spuštÄ›nĂ­. Pro vĂ­c detailĹŻ ÄŤti NápovÄ›du. @@ -6166,17 +6336,17 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Proxy DLL</span><span style=" font-size:8pt;"> V tomhle mĂłdu, MO nahradĂ­ jedno dll samotnĂ© hry takovĂ˝m, kterĂ© naÄŤte MO (a takĂ© pĹŻvodnĂ­ obsah dll samozĹ™ejmÄ›). Tohle bude fungovat POUZE pro SteamovĂ© verze her a bylo testováno pouze u Skyrimu. VyhnÄ›te se tĂ©hle metĂłde pokud funguje jedna z pĹ™edchozĂ­ch.</span></p></body></html> - + NMM Version - + The Version of Nexus Mod Manager to impersonate. - + Mod Organizer uses an API provided by the Nexus to provide features like checking for updates and downloading files. Unfortunately this API has not been made available officially to third party tools like MO so we have to impersonate the Nexus Mod Manager to be allowed in. On top of this Nexus has used the client identification to lock out outdated versions of NMM to force users to update. This means that MO also needs to impersonate the new version of NMM even if MO doesn't need an update. Therefore you can configure the version to identify as here. Please note that MO does identify itself as MO to the webserver, it's not lying about what it is. It is merely adding a "compatible" NMM version to the user agent. @@ -6185,53 +6355,53 @@ tl;dr-version: If Nexus-features don't work, insert the current version num - + Enforces that inactive ESPs and ESMs are never loaded. ZabezpeÄŤĂ­, aby se neaktivnĂ­ ESP a ESM vĹŻbec nezobrazovali. - + It seems that the Games occasionally load ESP or ESM files even if they haven't been activated as plugins. I don't yet know what the circumstances are, but user reports imply it is in some cases unwanted. If this is checked, ESPs and ESMs not checked in the List are invisible to the game and can not be loaded. Zdá se, Ĺľe hry obÄŤasnÄ› naÄŤtou ESP nebo ESM soubory i kdyĹľ nebyli oznaÄŤeny ako aktivnĂ­ pluginy. NevĂ­m za jakĂ˝ch podmĂ­nek se to stává, ale uĹľivatelĂ© říkaj, Ĺľe v nÄ›kterĂ˝ch případech je to neĹľelanĂ©. Pokud je tohle oznaÄŤeno, ESP a ESM soubory kterĂ© v seznamu nejsou oznaÄŤeny, nemĹŻĹľou bĂ˝t za žádnĂ˝ch okolnostĂ­ naÄŤtenĂ© ve hĹ™e. - + Hide inactive ESPs/ESMs SkrĂ˝t neaktivnĂ­ ESP/ESM - + If checked, files (i.e. esps, esms and bsas) belonging to the core game can not be disabled in the UI. (default: on) - + If checked, files (i.e. esps, esms and bsas) belonging to the core game can not be disabled in the UI. (default: on) Uncheck this if you want to use Mod Organizer with total conversions (like Nehrim) but be aware that the game will crash if required files are not enabled. - + Force-enable game files - - + + For Skyrim, this can be used instead of Archive Invalidation. It should make AI redundant for all Profiles. For the other games this is not a sufficient replacement for AI! Pro Skyrim, tohle je moĹľnĂ© použít mĂ­sto Invalidace ArchĂ­vu. Pro všechny profily bude IA nepotĹ™ebná. Pro ostatnĂ© hry tohle nenĂ­ dostateÄŤná náhrada Invalidace ArchĂ­vu! - + Back-date BSAs Uprav dátumy BSA - + These are workarounds for problems with Mod Organizer. Please make sure you read the help text before changing anything here. @@ -6240,27 +6410,27 @@ Pro ostatnĂ© hry tohle nenĂ­ dostateÄŤná náhrada Invalidace ArchĂ­vu! Tohle jsou rĹŻznĂ© náhradnĂ© Ĺ™ešenĂ­ problĂ©mu s používanĂ­m modĹŻ. Obvykle nejsou potĹ™ebnĂ©. ProsĂ­m urÄŤite si projdÄ›te NápovÄ›du pĹ™edtĂ­m neĹľ zde neco pomÄ›nĂ­te. - + Select download directory Vyber adresář pro stahovánĂ­ - + Select mod directory Vyber adresář pro mody - + Select cache directory Vyber adresář pro cache - + Confirm? Potvrdit? - + This will make all dialogs show up again where you checked the "Remember selection"-box. Continue? Znovu se budou zobrazovat všechny vĂ˝zvy, u kterĂ˝ch jste oznaÄŤili "Zapamatovat tuto odpovÄ›d provĹľdy". PokraÄŤovat? diff --git a/src/organizer_de.ts b/src/organizer_de.ts index 3d227137..306ce0ef 100644 --- a/src/organizer_de.ts +++ b/src/organizer_de.ts @@ -1,6 +1,50 @@ + + AboutDialog + + + + About + + + + + Revision: + + + + + Used Software + + + + + Credits + + + + + Translators + + + + + Others + + + + + Close + Schliessen + + + + No license + + + ActivateModsDialog @@ -239,25 +283,30 @@ p, li { white-space: pre-wrap; } DownloadList - + Name Name - + Filetime Ă„nderungsdatum - + Done Fertig - + Information missing, please select "Query Info" from the context menu to re-retrieve. Informationen unvollständig, bitte clicke im KontextmenĂĽ "Info abfragen" um diese erneut abzurufen. + + + pending download + + DownloadListWidget @@ -310,125 +359,135 @@ p, li { white-space: pre-wrap; } DownloadListWidgetCompactDelegate - - - - + + + + Are you sure? Sind sie sicher? - + This will remove all finished downloads from this list and from disk. Entfernt alle abgeschlossenen Downloads aus der Liste und von der Festplatte. - + This will remove all installed downloads from this list and from disk. Entfernt alle installierten Downloads aus der Liste und von der Festplatte. - + Install Installieren - + Query Info Info abfragen - + Remove Entfernen - + Cancel Abbrechen - + + < mod %1 file %2 > + + + + + Pending + + + + Paused - + Fetching Info 1 - + Fetching Info 2 - + Installed - + Uninstalled - + Done Fertig - + This will permanently remove all finished downloads from this list (but NOT from disk). - + This will permanently remove all installed downloads from this list (but NOT from disk). - + Delete - + Un-Hide Sichtbar machen - + Remove from View - + Pause Pausieren - + Resume Fortsetzen - + Delete Installed... - + Delete All... - + Remove Installed... Installierte entfernen... - + Remove All... Alle löschen... @@ -436,68 +495,78 @@ p, li { white-space: pre-wrap; } DownloadListWidgetDelegate - - - - + + + + Are you sure? Sind sie sicher? - + This will remove all finished downloads from this list and from disk. Entfernt alle abgeschlossenen Downloads aus der Liste und von der Festplatte. - + This will remove all installed downloads from this list and from disk. Entfernt alle installierten Downloads aus der Liste und von der Festplatte. - + This will remove all finished downloads from this list (but NOT from disk). - + This will remove all installed downloads from this list (but NOT from disk). - + Install Installieren - + Query Info Info abfragen - + Delete - + Un-Hide Sichtbar machen - + Remove from View - + Remove Entfernen - + Cancel Abbrechen + + + < mod %1 file %2 > + + + + + Pending + + Fetching Info 1 @@ -509,32 +578,32 @@ p, li { white-space: pre-wrap; } - + Pause Pausieren - + Resume Fortsetzen - + Delete Installed... - + Delete All... - + Remove Installed... Installierte entfernen... - + Remove All... Alle löschen... @@ -542,12 +611,12 @@ p, li { white-space: pre-wrap; } DownloadManager - - - - - - + + + + + + invalid index %1 ungĂĽltiger index %1 @@ -556,30 +625,31 @@ p, li { white-space: pre-wrap; } Löschen der Datei ist fehlgeschlagen - + failed to delete %1 konnte %1 nicht löschen - + failed to delete meta file for %1 konnte meta-informationen fĂĽr %1 nicht löschen - - - - - - - - - - - - - - + + + + + + + + + + + + + + + invalid index ungĂĽltiger Index @@ -589,32 +659,32 @@ p, li { white-space: pre-wrap; } - + Download again? - + A file with the same name has already been downloaded. Do you want to download it again? The new file will receive a different name. - + Wrong Game - + The download link is for a mod for "%1" but this instance of MO has been set up for "%2". - + Please enter the nexus mod id Bitte gib die Nexus Mod ID ein - + Mod ID: Mod ID: @@ -623,33 +693,38 @@ p, li { white-space: pre-wrap; } ungĂĽltiger alphabetischer index %1 - + Information updated Informationen aktualisiert - - + + No matching file found on Nexus! Maybe this file is no longer available or it was renamed? Keine passende Datei auf Nexus gefunden! Ist die Datei vielleicht nicht mehr verfĂĽgbar? - + No file on Nexus matches the selected file by name. Please manually choose the correct one. Keine Datei mit diesem Namen auf Nexus gefunden. Bitte wähle die passende händisch aus. - + No download server available. Please try again later. - + Failed to request file info from nexus: %1 Konnte Datei-Informationen nicht von Nexus abrufen: %1 - + + Download failed. Server reported: %1 + + + + Download failed: %1 (%2) Download fehlgeschlagen: %1 (%2) @@ -658,7 +733,7 @@ p, li { white-space: pre-wrap; } Abfrage von Dateiinformationen von Nexus fehlgeschlagen! - + failed to re-open %1 Ă–ffnen von %1 fehlgeschlagen @@ -667,7 +742,7 @@ p, li { white-space: pre-wrap; } konnte Antwort von Nexus nicht interpretieren - + failed to download %1: could not open output file: %2 Download von %1 fehlgeschlagen: Konnte Ausgabedatei %2 nicht öffnen @@ -781,7 +856,7 @@ Momentan ist der einzige bekannte Fall in dem dies benötigt wird der Skyrim Cre - + If checked, MO will be closed once the specified executable is run. Wenn ausgewählt, wird MO geschlossen sobald das Programm gestartet wird. @@ -798,7 +873,7 @@ Momentan ist der einzige bekannte Fall in dem dies benötigt wird der Skyrim Cre - + Add Neu @@ -814,42 +889,59 @@ Momentan ist der einzige bekannte Fall in dem dies benötigt wird der Skyrim Cre Entfernen - + + Close + Schliessen + + + Select a binary AusfĂĽhrbare Datei wählen - + Executable (%1) AusfĂĽhrbare Datei (%1) - + Java (32-bit) required - + MO requires 32-bit java to run this application. If you already have it installed, select javaw.exe from that installation as the binary. - + Select a directory Wähle ein Verzeichnis - + Confirm Bestätigen - + Really remove "%1" from executables? Die ausfĂĽhrbare Datei "%1" löschen? - + + + Save Changes? + + + + + + You made changes to the current executable, do you want to save them? + + + + MO must be kept running or this application will not work correctly. MO muss aktiv bleiben sonst funktioniert diese Anwendung nicht korrekt. @@ -858,7 +950,7 @@ Momentan ist der einzige bekannte Fall in dem dies benötigt wird der Skyrim Cre AusfĂĽhrbare Datei (*.exe, *.bat) - + Modify Ă„ndern @@ -1303,7 +1395,7 @@ p, li { white-space: pre-wrap; } MO ist gesperrt während das Programm ausgefĂĽhrt wird. - + Unlock Entsperren @@ -1311,7 +1403,7 @@ p, li { white-space: pre-wrap; } LogBuffer - + failed to write log to %1: %2 konnte Protokoll nicht nach %1 schreiben: %2 @@ -1332,23 +1424,23 @@ p, li { white-space: pre-wrap; } MainWindow - - + + Categories Kategorien - + Profile Profil - + Pick a module collection Wähle eine Modul-Kollektion - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1363,44 +1455,44 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Beachten Sie, dass derzeit die ESP Ladefolge nicht getrennt fĂĽr verschiedene Profile gespeichert wird.</span></p></body></html> - + Refresh list Liste aktualisieren - + Refresh list. This is usually not necessary unless you modified data outside the program. Liste aktualisieren. Dies ist normalerweise nicht notwendig, es sei denn Sie haben Daten auĂźerhalb von MO verändert. - + List of available mods. - + This is a list of installed mods. Use the checkboxes to activate/deactivate mods and drag & drop mods to change their "installation" orders. - + Filter Filter - + No groups - + Nexus IDs Nexus IDs - - - + + + Namefilter @@ -1409,12 +1501,12 @@ p, li { white-space: pre-wrap; } AusfĂĽhren - + Pick a program to run. Wähle das auszufĂĽhrende Programm. - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1429,12 +1521,12 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Sie können weitere Programme dieser Liste hinzufĂĽgen, aber ich kann nicht garantieren, dass von mir nicht getestete Anwendungen vollständig funktionieren..</span></p></body></html> - + Run program AusfĂĽhren - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1447,17 +1539,17 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Das ausgewählte Programm durch Mod Organiser ausfĂĽhren.</span></p></body></html> - + Run Starten - + Create a shortcut in your start menu or on the desktop to the specified program - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1470,7 +1562,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Erstellt einen Eintrag im StartmenĂĽ, der direkt das gewählte Programm durch Mod Organsier ausfĂĽhrt.</span></p></body></html> - + Shortcut @@ -1495,12 +1587,12 @@ p, li { white-space: pre-wrap; } Speichern - + List of available esp/esm files Liste der verfĂĽgbaren ESP / ESM Dateien - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1517,12 +1609,12 @@ p, li { white-space: pre-wrap; } WICHTIG: Sie können die Ladereihenfolge der BSAs hier ändern aber die Installationsreihenfolge hat Vorrang vor der Reihenfolge hier! - + List of available BS Archives. Archives not checked here are not managed by MO and ignore installation order. Liste der BS Archive. Archive die hier nicht markiert sind werden nicht von MO verwaltet und beachten daher nicht die gewählte Installationsreihenfolge. - + BSA files are archives (comparable to .zip files) that contain data assets (meshes, textures, ...) to be used by the game. As such they "compete" with loose files in your data directory over which is loaded. By default, BSAs that share their base name with an enabled ESP (i.e. plugin.esp and plugin.bsa) are automatically loaded and will have precedence over all loose files, the installation order you set up to the left is then ignored! @@ -1530,66 +1622,71 @@ BSAs checked here are loaded in such a way that your installation order is obeye - - + + File Datei - + <html><head/><body><p>Marked Archives (<img src=":/MO/gui/warning_16"/>) are still loaded on Skyrim but the <a href="http://forums.bethsoft.com/topic/1354395-update-bsas-and-you/"><span style=" text-decoration: underline; color:#0000ff;">regular file override</span></a> mechanism will apply: Loose files override BSAs, no matter the mod/plugin priority.</p></body></html> - + Mod Mod - + Data Data - + + Sort + + + + refresh data-directory overview Data-Verzeichnis ĂĽbersicht neu laden - + Refresh the overview. This may take a moment. Lädt die Ăśbersicht neu. Dies kann einen Augenblick dauern. - - - + + + Refresh Neu laden - + This is an overview of your data directory as visible to the game (and tools). Dies ist eine Ăśbersicht des "data"-verzeichnisses so wie es das Spiel zu sehen bekommt. - - + + Filter the above list so that only conflicts are displayed. Obere Liste filtern um nur Konflikte anzuzeigen. - + Show only conflicts Nur Konflikte anzeigen - + Saves Spielstände - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1606,160 +1703,160 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Wenn Sie im KontextmenĂĽ auf &quot;Mods reparieren...&quot; klicken, wird Mod Organiser versuchen die entsprechenden Mods und ESPs zu aktivieren. Es werden dabei kein Eintrag deaktiviert!</span></p></body></html> - + Downloads Downloads - + This is a list of mods you downloaded from Nexus. Double click one to install it. Dies ist eine Liste der Mods die von Nexus heruntergeladen wurden. Doppelklicken Sie um zu installieren. - + Compact Kompakt - + Show Hidden - + Tool Bar Werkzeugleiste - + Install Mod Mod installieren - + Install &Mod &Mod installieren - + Install a new mod from an archive Installiert eine Mod aus einem Archiv - + Ctrl+M Ctrl+M - + Profiles Profile - + &Profiles &Profile - + Configure Profiles Profile konfigurieren - + Ctrl+P Ctrl+P - + Executables Programme - + &Executables Programm&e - + Configure the executables that can be started through Mod Organizer Konfigurieren der Programme die von Mod Organiser gestartet werden können - + Ctrl+E Ctrl+E - - + + Tools - + &Tools - + Ctrl+I Ctrl+I - + Settings Einstellungen - + &Settings Ein&stellungen - + Configure settings and workarounds Einstellungen und Workarounds verwalten - + Ctrl+S Ctrl+S - + Nexus Nexus - + Search nexus network for more mods Durchsuche die passende Seite des Nexus-Netzwerks nach weiteren Mods - + Ctrl+N Ctrl+N - - + + Update Aktualisierung - + Mod Organizer is up-to-date Mod Organizer ist auf dem neuesten Stand - - + + No Problems Keine Probleme - + This button will be highlighted if MO discovered potential problems in your setup and provide tips on how to fix them. !Work in progress! @@ -1768,54 +1865,54 @@ Right now this has very limited functionality Diese Funktion ist noch in arbeit und ist sehr eingeschränkt. - - + + Help Hilfe - + Ctrl+H Ctrl+H - + Endorse MO - - + + Endorse Mod Organizer - + Toolbar - + Desktop - + Start Menu - + Problems Probleme - + There are potential problems with your setup Es bestehen möglicherweise Probleme mit Ihrer Konfiguration - + Everything seems to be in order Alles in bester Ordnung @@ -1832,22 +1929,22 @@ Diese Funktion ist noch in arbeit und ist sehr eingeschränkt. <li>dotNet ist nicht installiert oder veraltet. Dies wird benötigt um NCC nutzen zu können. Laden Sie die korrekte Version von <a href="%1">%1</a> herunter</li> - + Help on UI Hilfe zur Oberfläche - + Documentation Wiki Wiki Dokumentation - + Report Issue Fehler melden - + Tutorials @@ -1856,425 +1953,426 @@ Diese Funktion ist noch in arbeit und ist sehr eingeschränkt. Ladereihenfolge konnte nicht gespeichert werden - + failed to save load order: %1 Reihenfolge konnt nicht gespeichert werden: %1 - + failed to save archives order, do you have write access to "%1"? - + + About + + + + + About Qt + + + + Name Name - + Please enter a name for the new profile Bitte geben Sie einen Namen fĂĽr das neue Profil an - + failed to create profile: %1 Erstellen des Profils fehlgeschlagen: %1 - + Show tutorial? - + You are starting Mod Organizer for the first time. Do you want to show a tutorial of its basic features? If you choose no you can always start the tutorial from the "Help"-menu. - + Downloads in progress Download in Bearbeitung - + There are still downloads in progress, do you really want to quit? Es gibt noch unfertige Downloads, wollen Sie wirklich das Programm beenden? - + failed to read savegame: %1 Spielstand konnte nicht gelesen werden: %1 - + Plugin "%1" failed: %2 - + Plugin error - + It appears the plugin "%1" failed to load last startup and caused MO to crash. Do you want to disable it? (Please note: If this is the first time you see this message for this plugin you may want to give it another try. The plugin may be able to recover from the problem) - + Failed to start "%1" - + Waiting Warte - + Please press OK once you're logged into steam. Bitte drĂĽcken sie OK sobald sie bei Steam angemeldet sind. - "%1" not found - "%1" nicht gefunden + "%1" nicht gefunden - + Start Steam? - + Steam is required to be running already to correctly start the game. Should MO try to start steam now? Steam muss laufen um das Spiel korrekt zu starten. Soll MO versuchen Steam zu starten? - + Also in: <br> Auch in: <br> - + No conflict Keine Konflikte - + <Edit...> <Bearbeiten...> - - Failed to refresh list of esps: %s - - - - + This bsa is enabled in the ini file so it may be required! Dieses Archiv ist in der ini Konfiguration gelistet, daher ist es möglicherweise erforderlich! - + This archive will still be loaded since there is a plugin of the same name but its files will not follow installation order! Dieses Archiv wird vom Spiel geladen werden da ein Plugin mit dem selben Namen aktiv ist aber die enthaltenen Dateien werden sich nicht an Ihre Installations-Reihenfolge halten! - + Activating Network Proxy - - + + Installation successful Installation erfolgreich - - + + Configure Mod Mod konfigurieren - - + + This mod contains ini tweaks. Do you want to configure them now? Diese Mod enthält Anpassungen fĂĽr die Ini datei. Wollen Sie diese nun konfigurieren? - - + + mod "%1" not found mod "%1" nicht gefunden - - + + Installation cancelled Installation abgebrochen - - + + The mod was not installed completely. Die mod wurde nicht erfolgreich installiert. - + Some plugins could not be loaded - + Too many esps and esms enabled - - + + Description missing - + The game doesn't allow more than 255 active plugins (including the official ones) to be loaded. You have to disable some unused plugins or merge some plugins into one. You can find a guide here: <a href="http://wiki.step-project.com/Guide:Merging_Plugins">http://wiki.step-project.com/Guide:Merging_Plugins</a> - + Choose Mod Mod wählen - + Mod Archive Mod Archiv - + Start Tutorial? - + You're about to start a tutorial. For technical reasons it's not possible to end the tutorial early. Continue? - - + + Download started Download gestartet - + failed to update mod list: %1 Aktualisieren der Modliste fehlgeschlagen: %1 - + failed to spawn notepad.exe: %1 notepad.exe konnte nicht aufgerufen werden: %1 - + failed to open %1 %1 konnte nicht geöffnet werden - + failed to change origin name: %1 konnte den Namen der Dateiquelle nicht ändern: %1 - + Multiple esps activated, please check that they don't conflict. - - + + Create Mod... - + A mod with this name already exists - + Continue? - + The versioning scheme decides which version is considered newer than another. This function will guess the versioning scheme under the assumption that the installed version is outdated. - + + Sorry - + I don't know a versioning scheme where %1 is newer than %2. - + <All> <Alle> - + <Checked> <Markierte> - + Plugin "%1" failed - + failed to init plugin %1: %2 - + The following plugins could not be loaded. The reason may be missing dependencies (i.e. python) or an outdated version: - - Failed to move "%1" from mod "%2" to "%3": %4 - - - - + <Unchecked> <Nicht markierte> - + <Update> <Update> - + <No category> <Ohne Kategorie> - + <Conflicted> - + <Not Endorsed> - + failed to rename mod: %1 konnte die Mod nicht umbenennen: %1 - + Overwrite? - + This will replace the existing mod "%1". Continue? - + failed to remove mod "%1" - - - + + + failed to rename "%1" to "%2" - - - + + + + Confirm Bestätigen - + Remove the following mods?<br><ul>%1</ul> - + failed to remove mod: %1 konnte die mod nicht entfernen: %1 - - + + Failed Fehlgeschlagen - + Installation file no longer exists Installationsdatei existiert nicht mehr - + Mods installed with old versions of MO can't be reinstalled in this way. Mods die mit alten Versionen von MO installiert wurden können nicht auf diese Weise neu-installiert werden. - - + + You need to be logged in with Nexus to endorse - - + + Extract BSA BSA extrahieren - + This mod contains at least one BSA. Do you want to unpack it? (This removes the BSA after completion. If you don't know about BSAs, just select no) Diese mod enthält mindestens eine BSA datei. Soll sie entpackt werden? (Das BSA wird danach gelöscht. Wenn Sie nicht wissen was BSAs sind wählen Sie am besten \"nein\") - - - + + + failed to read %1: %2 - - + + This archive contains invalid hashes. Some files may be broken. Dieses Archiv enthält ungĂĽltige PrĂĽfsummen. Einige Dateien sind evtl. defekt. - + Nexus ID for this Mod is unknown Nexus ID fĂĽr diese Mod unbekannt @@ -2287,92 +2385,92 @@ This function will guess the versioning scheme under the assumption that the ins Priorität wählen - + Really enable all visible mods? Alle angezeigten Mods aktivieren? - + Really disable all visible mods? Alle angezeigten Mods deaktivieren? - + Choose what to export - + Everything - + All installed mods are included in the list - + Active Mods - + Only active (checked) mods from your current profile are included - + Visible - + All mods visible in the mod list are included - + export failed: %1 - + Install Mod... Mod installieren... - + Enable all visible Alle sichtbaren aktvieren - + Disable all visible Alle sichtbaren deaktvieren - + Check all for update Alle auf Aktualisierungen ĂĽberprĂĽfen - + Export to csv... - + Sync to Mods... Mods synchronisieren... - + Restore Backup - + Remove Backup... @@ -2381,312 +2479,362 @@ This function will guess the versioning scheme under the assumption that the ins Kategorie festlegen - + Primary Category - + Change versioning scheme - + Un-ignore update - + Ignore update - + Rename Mod... Mod umbenennen... - + Remove Mod... Mod entfernen... - + Reinstall Mod Mod neu installieren - + Un-Endorse - - + + Endorse - + Won't endorse - + Endorsement state unknown - + Ignore missing data - + Visit on Nexus Auf Nexus besuchen - + Open in explorer In Explorer öffnen - + Information... Informationen... - - + + Exception: Ausnahme: - - + + Unknown exception Unbekannte Ausnahme - + <Multiple> - + + Really delete "%1"? + + + + Fix Mods... Mods reparieren... - - + + Delete + + + + + failed to remove %1 %1 konnte nicht entfernt werden - - + + failed to create %1 %1 konnte nicht erstellt werden - + Can't change download directory while downloads are in progress! Das download verzeichnis kann nicht geändert werden solange Downloads laufen! - + Download failed Download fehlgeschlagen - + failed to write to file %1 Speichern in Datei "%1" fehlgeschlagen - + %1 written "%1" gespeichert - + Select binary Binary wählen - + Binary AusfĂĽhrbare Datei - + Enter Name Namen eingeben - + Please enter a name for the executable Bitte geben Sie einen Namen fĂĽr die Anwendungsdatei ein - + Not an executable Datei ist nicht ausfĂĽhrbar - + This is not a recognized executable. - - + + Replace file? Datei ersetzen? - + There already is a hidden version of this file. Replace it? Es existiert bereits eine versteckte Variante von dieser Datei. Soll diese ersetzt werden? - - + + File operation failed Dateioperation fehlgeschlagen - - + + Failed to remove "%1". Maybe you lack the required file permissions? Konnte "%1" nicht löschen. Fehlen Ihnen evtl. die nötigen Berechtigungen? - + There already is a visible version of this file. Replace it? Es existiert bereits eine sichtbare Variante dieser Datei. Soll diese ersetzt werden? - + + file not found: %1 + Datei nicht gefunden: %1 + + + + failed to generate preview for %1 + + + + + Sorry, can't preview anything. This function currently does not support extracting from bsas. + + + + Update available Aktualisierung verfĂĽgbar - + Open/Execute Ă–ffnen/AusfĂĽhren - + Add as Executable Als Anwendung hinzufĂĽgen - + + Preview + + + + Un-Hide Sichtbar machen - + Hide Verstecken - + Write To File... In Datei speichern... - + Do you want to endorse Mod Organizer on %1 now? - + Remove - + Unlock load order - + Lock load order - + + BOSS working + + + + + failed to run boss: %1 + + + + Request to Nexus failed: %1 - + + Executable "%1" not found + + + + + Failed to refresh list of esps: %1 + + + + This will move all files from overwrite into a new, regular mod. Please enter a name: - + Add/Remove Categories - + Replace Categories - - + + login successful - + login failed: %1. Trying to download anyway login fehlgeschlagen: %1. Der Download scheitert vermutlich - + login failed: %1 login fehlgeschlagen: %1 - + login failed: %1. You need to log-in with Nexus to update MO. - + Error Fehler - + failed to extract %1 (errorcode %2) konnte "%1" nicht extrahieren (fehlercode %2) - + Extract... Extrahieren... - + Edit Categories... - + Enable all - + Disable all @@ -2729,58 +2877,58 @@ Please enter a name: Mod Informationen - + Textfiles Textdateien - + A list of text-files in the mod directory. Liste mit Textdateien im Modverzeichnis. - + A list of text-files in the mod directory like readmes. Eine Liste mit Textdateien im Modverzeichnis, z.B. Readme. - + INI-Files INI Dateien - + This is a list of .ini files in the mod. Liste mit .ini Dateien im Mod. - + This is a list of .ini files in the mod. These are usually used to configure the behaviour of mods if there are configurable parameters. Eine Liste mit Textdateien im Modverzeichnis. Die Dateien werden ĂĽblicherweise dazu verwendet um das Verhalten und Parameter der mods zu konfigurieren. - + Save changes to the file. Ă„nderungen an der Datei speichern. - + Save changes to the file. This overwrites the original. There is no automatic backup! Ă„nderungen der Datei speichern. Dies ĂĽberschreibt das Original - es gibt keine automatische Sicherung! - - + + Save Speichern - + Images Bilder - + Images located in the mod. Bilder im Modverzeichnis. @@ -2797,13 +2945,13 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Listet alle Bilder (*.jpg, *.png) im Modverzeichnis auf, bspw. Screenshots. Klicken fĂĽr eine größere Ansicht.</span></p></body></html> - - + + Optional ESPs Optionale ESPs - + List of esps and esms that can not be loaded by the game. Liste mit ESP und ESM Dateien die vom Spiel nicht geladen werden können. @@ -2826,12 +2974,12 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Die meisten Mods haben keine optionalen ESPs, wahrscheinlich sehen Sie also eine leere Liste vor sich..</span></p></body></html> - + This lists all the images (.jpg and .png) in the mod directory, like screenshots and such. Click one to get a larger view. - + List of esps and esms contained in this plugin that currently can not be loaded by the game. They will not even appear in the esp-list in the main MO-window. They usually contain optional functionality, see the readme. @@ -2839,103 +2987,103 @@ Most mods do not have optional esps, so chances are good you are looking at an e - + Make the selected mod in the lower list unavailable. Den unten ausgewählten Mod als nicht verfĂĽgbar markieren. - + The selected esp (in the lower list) will be pushed into a subdirectory of the mod and will thus become "invisible" to the game. It can then no longer be activated. Die in der unteren Liste ausgewählte ESP wird in ein Unterverzeichnis des Mods verschoben und so fĂĽr das Spiel unsichtbar. Sie kann nicht mehr im Spiel aktiviert werden. - + Move a file to the data directory. Datei in das Datenverzeichnis verschieben. - + This moves a esp to the esp directory so it can be enabled in the main window. Please note that the ESP merely becomes "available", it will not necessarily be loaded! That is configured in the main window of omo. Verschiebt ein ESP in das ESP Verzeichnis damit es im Hauptfenster aktiviert werden kann. Bitte beachten Sie, dass das ESP nur "verfĂĽgbar" wird, es wird nicht zwangsläufig geladen! Das Laden der ESP wird im Hauptfenster von MO eingestellt. - + ESPs in the data directory and thus visible to the game. ESPs im Datenverzeichnis und fĂĽr das Spiel sichtbar. - + These are the mod files that are in the (virtual) data directory of your game and will thus be selecteable in the esp list in the main window. Dies Mod Dateien sind im (virtuellen) Datenverzeichnis des Spiels und somit in der ESP Liste des Hauptfenster auswählbar. - + Available ESPs VerfĂĽgbare ESPs - + Conflicts Konflikte - + The following conflicted files are provided by this mod Die folgenden konfliktbehafteten Dateien werden von dieser Mod bereitgestellt - - + + File Datei - + Overwritten Mods Ăśberschriebene Mods - + The following conflicted files are provided by other mods Die folgenden konfliktbehafteten Dateien werden von anderen Mods bereitgestellt - + Providing Mod Bereitstellende Mod - + Non-Conflicted files Konfliktfreie Dateien - + Categories Kategorien - + Primary Category - + Nexus Info Nexus Info - + Mod ID Mod ID - + Mod ID for this mod on Nexus. ID dieser mod auf Nexus. - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -2953,7 +3101,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">ModID fĂĽr den Mod auf Nexus. Um die korrekte Id zu finden, einfach den Mod auf Nexus aufrufen. Die URL sieht so aus:<a href=" http://www.skyrimnexus.com/downloads/file.php?id=1334"><span style=" text-decoration: underline; color:#0000ff;">http://www.skyrimnexus.com/downloads/file.php?id=1334</span></a><a href="http://www.skyrimnexus.com/downloads/file.php?id=1334"><span style=" color:#000000;">. In diesem Beispiel ist 1334 die gesuchte Id. Zufällig ist das genau der Link zu Mod Organiser im Nexus. Warum nicht einfach mal anklicken und ein Endorsement hinzufĂĽgen?</span></a></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -2966,32 +3114,32 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Installierte Version des Mods. Der Tooltip zeigt die auf Nexus verfĂĽgbare Version. Die installierte Versionsnummer kann nur angezeigt werden wenn der Mod durch MO installiert wurde.</span></p></body></html> - + Version Version - + Refresh Neu laden - + Refresh all information from Nexus. - + Description Beschreibung - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:7.8pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"><br /></p></body></html> @@ -2999,12 +3147,12 @@ p, li { white-space: pre-wrap; } about:blank - + Endorse - + Notes @@ -3025,7 +3173,7 @@ p, li { white-space: pre-wrap; } Typ - + Name Name @@ -3046,17 +3194,17 @@ p, li { white-space: pre-wrap; } Schon ein "endorsement" vergeben? - + Filetree Verzeichnisbaum - + A directory view of this mod Verzeichnisansicht des Mods - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -3071,53 +3219,53 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Veränderungen werden sofort auf der Platte ausgefĂĽhrt, also</span><span style=" font-size:8pt; font-weight:600;"> vorsichtig sein!</span><span style=" font-size:8pt;">.</span></p></body></html> - + Previous - + Next Weiter - + Close Schliessen - + &Delete &Löschen - + &Rename &Umbenennen - + &Hide - + &Unhide - + &Open &Ă–ffnen - + &New Folder &Neuer Ordner - - + + Save changes? Ă„nderungen speichern? @@ -3126,28 +3274,28 @@ p, li { white-space: pre-wrap; } Ă„nderungen an "%1" speichern? - + File Exists Datei existiert bereits - + A file with that name exists, please enter a new one Eine Datei mit diesem Namen existiert bereits, bitte wählen Sie einen anderen Namen - + failed to move file Verschieben der Datei fehlgeschlagen - + failed to create directory "optional" Erstellen des Verzeichnis "optional" fehlgeschlagen - - + + Info requested, please wait Information wird abgerufen, bitte warten @@ -3164,32 +3312,32 @@ p, li { white-space: pre-wrap; } (Beschreibung unvollständig. Bitte besuche die Nexus-Seite) - + Main Primär - + Update Aktualisierung - + Optional Optional - + Old Alt - + Misc Sonstiges - + Unknown Unbekannt @@ -3198,18 +3346,18 @@ p, li { white-space: pre-wrap; } Anfrage fehlgeschlagen - + (description incomplete, please visit nexus) - + <a href="%1">Visit on Nexus</a> <a href="%1">Auf Nexus öffnen</a> - - + + Confirm Bestätigen @@ -3222,114 +3370,114 @@ p, li { white-space: pre-wrap; } Download gestartet - + Failed to delete %1 "%1" konnte nicht gelöscht werden - + Are sure you want to delete "%1"? Sind Sie sicher, dass Sie "%1" löschen wollen? - + Are sure you want to delete the selected files? Sind Sie sicher, dass Sie die ausgewählten Dateien löschen wollen? - - + + New Folder Neuer Ordner - + Failed to create "%1" "%1" konnte nicht erstellt werden - - + + Replace file? Datei ersetzen? - + There already is a hidden version of this file. Replace it? Es existiert bereits eine versteckte Variante von dieser Datei. Soll diese ersetzt werden? - - + + File operation failed Dateioperation fehlgeschlagen - - + + Failed to remove "%1". Maybe you lack the required file permissions? Konnte "%1" nicht löschen. Fehlen Ihnen evtl. die nötigen Berechtigungen? - - + + failed to rename %1 to %2 konnte "%1" nicht in "%2" umbenennen - + There already is a visible version of this file. Replace it? Es existiert bereits eine sichtbare Variante dieser Datei. Soll diese ersetzt werden? - + Un-Hide Sichtbar machen - + Hide Verstecken - + Please enter a name - - + + Error Fehler - + Invalid name. Must be a valid file name - + A tweak by that name exists - + Create Tweak - + Current Version: %1 Aktuelle Version: %1 - - + + Save changes to "%1"? - + No update available Keine neue Version verfĂĽgbar @@ -3401,8 +3549,9 @@ p, li { white-space: pre-wrap; } - installed version: %1, newest version: %2 - installierte Version: %1, neueste Version: %2 + installed version: "%1", newest version: "%2" + installed version: %1, newest version: %2 + installierte Version: %1, neueste Version: %2 %1 contains no esp/esm and no asset (textures, meshes, interface, ...) directory @@ -3724,17 +3873,17 @@ p, li { white-space: pre-wrap; } NexusInterface - + Failed to guess mod id for "%1", please pick the correct one - + empty response leere Antwort - + invalid response ungĂĽltige Antwort @@ -4759,85 +4908,93 @@ Diese Funktion ist noch in arbeit und ist sehr eingeschränkt. PluginList - + Mod Index - - + + Flags + + + + + unknown - + Name of your mods - + Load priority of your mod. The higher, the more "important" it is and thus overwrites data from plugins with lower priority. - + The modindex determins the formids of objects originating from this mods. - + failed to update esp info for file %1 (source id: %2), error: %3 - + esp not found: %1 ESP nicht gefunden: %1 - + Confirm Bestätigen - + Really enable all plugins? - + Really disable all plugins? - + The file containing locked plugin indices is broken - - failed to open output file: %1 - konnte die Ausgabedatei nicht öffnen: %1 + konnte die Ausgabedatei nicht öffnen: %1 - + Some of your plugins have invalid names! These plugins can not be loaded by the game. Please see mo_interface.log for a list of affected plugins and rename them. Einige Ihrer Plugins haben ungĂĽltige Namen! Diese Plugins können nicht vom Spiel geladen werden. Die Datei mo_interface.log enthält eine Liste der betroffenen Plugins. Bitte benennen Sie diese um. - + + BOSS dll incompatible + + + + Missing Masters - + Enabled Masters - + failed to restore load order for %1 @@ -4850,17 +5007,17 @@ Diese Funktion ist noch in arbeit und ist sehr eingeschränkt. max - + This plugin can't be disabled (enforced by the game) Dieses Plugin kann nicht deaktiviert werden (vom Spiel benötigt) - + Origin: %1 Ursprung: %1 - + Name Name @@ -4869,7 +5026,7 @@ Diese Funktion ist noch in arbeit und ist sehr eingeschränkt. Namen Ihrer Mods - + Priority Priorität @@ -4888,6 +5045,19 @@ Diese Funktion ist noch in arbeit und ist sehr eingeschränkt. Dieser Index legt die ID von Gegenständen, ZaubersprĂĽchen, etc. fest, die mit dem Mod eingefĂĽhrt werden. Die ID wird "xxyyyyyy" sein, wobei "xx" dieser Index ist und "yyyyyy" vom Mod selbst bestimmt wird. + + PreviewDialog + + + Preview + + + + + Close + Schliessen + + ProblemsDialog @@ -4933,82 +5103,72 @@ p, li { white-space: pre-wrap; } konnte Ini Anpassungen nicht anwenden - + invalid profile name %1 - + failed to create %1 %1 konnte nicht erstellt werden - - failed to open temporary file - - - - - failed to open "%1" for writing - - - - + failed to write mod list: %1 - + failed to update tweaked ini file, wrong settings may be used: %1 - + failed to create tweaked ini: %1 - + Overwrite directory couldn't be parsed - + invalid priority %1 UngĂĽltige Priorität %1 - + failed to parse ini file (%1) - + failed to parse ini file (%1): %2 Konnte ini-datei (%1) nicht auslesen: %2 - - + + failed to modify "%1" - + Delete savegames? - + Do you want to delete local savegames? (If you select "No", the save games will show up again if you re-enable local savegames) - - - - - + + + + + invalid index %1 ungĂĽltiger index %1 @@ -5385,7 +5545,7 @@ p, li { white-space: pre-wrap; } UngĂĽltige 7-zip32.dll: %1 - + "%1" is missing "%1" fehlt @@ -5394,8 +5554,8 @@ p, li { white-space: pre-wrap; } "%1" konnte nicht erstellt werden, haben Sie die nötigen Schreibrechte fĂĽr das Installations Verzeichnis? - - + + Please select the game to manage Bitte wählen Sie ein Spiel zum Verwalten aus @@ -5404,7 +5564,7 @@ p, li { white-space: pre-wrap; } UngĂĽltiges Profil %1 - + Permissions required Berechtigungen erforderlich @@ -5413,8 +5573,8 @@ p, li { white-space: pre-wrap; } Der aktuelle Benutzeraccount hat die erforderlichen Berechtigungen nicht um Mod Organizer auszufĂĽhren. The notwendigen Ă„nderungen können automatisch durchgefĂĽhrt werden (der aktuelle Benutzeraccount erhält Schreibzugriff auf das ModOrganizer Verzeichnis). Sie werden aufgefordert werden "mo_helper.exe" mit erhöhten Privilegien auszufĂĽhren. - - + + Woops Oha @@ -5423,32 +5583,32 @@ p, li { white-space: pre-wrap; } ModOrganizer ist abgestĂĽrzt! Soll eine Diagnosedatei geschrieben werden? Wenn sie mir diese Datei per eMail (sherb@gmx.net) schicken kann dieser Fehler vermutlich eher behoben werden. - + The current user account doesn't have the required access rights to run Mod Organizer. The neccessary changes can be made automatically (the MO directory will be made writable for the current user account). You will be asked to run "helper.exe" with administrative rights. - + ModOrganizer has crashed! Should a diagnostic file be created? If you send me this file (%1) to sherb@gmx.net, the bug is a lot more likely to be fixed. Please include a short description of what you were doing when the crash happened - + ModOrganizer has crashed! Unfortunately I was not able to write a diagnostic file: %1 ModOrganizer ist abgestĂĽrzt! Leider konnte keine Diagnosedatei geschrieben werden: %1 - + An instance of Mod Organizer is already running Mod Organizer läuft bereits - + No game identified in "%1". The directory is required to contain the game binary and its launcher. Es wurde kein Spiel in "%1" gefunden. Das Verzeichnis muss das Anwendungsdatei des Spiels und des Launchers enthalten. - + Please select the game edition you have (MO can't start the game correctly if this is set incorrectly!) @@ -5457,7 +5617,7 @@ p, li { white-space: pre-wrap; } "%1" nicht gefunden - + Please use "Help" from the toolbar to get usage instructions to all elements Bitte verwenden Sie die "Hilfe" Funktion um Hinweise zu Nutzung aller Elemete zu bekommen @@ -5470,19 +5630,19 @@ p, li { white-space: pre-wrap; } UngĂĽltige Priorität %1 - - + + failed to find "%1" Konnte "%1" nicht finden - - + + <Manage...> <Verwalten...> - + failed to parse profile %1: %2 Konnte Profil %1 nicht verarbeiten: %2 @@ -5491,17 +5651,17 @@ p, li { white-space: pre-wrap; } Kodierungsfehler! Bitte melden Sie dies als Bug und fĂĽgen Sie die Datei mo_interface.log bei! - + failed to access %1 Auf %1 konnte nicht zugegriffen werden - + failed to set file time %1 Konnte Dateizeit nicht setzen %1 - + failed to create %1 %1 konnte nicht erstellt werden @@ -5556,22 +5716,22 @@ Start elevated anyway? (you will be asked if you want to allow ModOrganizer.exe - + failed to spawn "%1": %2 "%1" konnte nicht erzeugt werden: %2 - + "%1" doesn't exist "%1" existiert nicht - + failed to inject dll into "%1": %2 Konnte dll nicht in "%1" einspeisen: %2 - + failed to run "%1" "%1" konnte nicht ausgefĂĽhrt werden @@ -5657,18 +5817,18 @@ Start elevated anyway? (you will be asked if you want to allow ModOrganizer.exe Englisch - - + + Mod Organizer Mod Organizer - + Script Extender Script Extender - + Proxy DLL Proxy DLL @@ -5751,6 +5911,11 @@ Start elevated anyway? (you will be asked if you want to allow ModOrganizer.exe invalid game type %1 + + + failed to open temporary file + + QueryOverwriteDialog @@ -5986,18 +6151,18 @@ Start elevated anyway? (you will be asked if you want to allow ModOrganizer.exe Admistratorrechte sind erforderlich um dies zu ändern. - - + + attempt to store setting for unknown plugin "%1" - + Confirm Bestätigen - + Changing the mod directory affects all your profiles! Mods not present (or named differently) in the new location will be disabled in all profiles. There is no way to undo this unless you backed up your profiles manually. Proceed? @@ -6124,42 +6289,47 @@ p, li { white-space: pre-wrap; } Cache-Verzeichnis - + Disable automatic internet features - + Disable automatic internet features. This does not affect features that are explicitly invoked by the user (like checking mods for updates, endorsing, opening the web browser) - + Offline Mode - + Use a proxy for network connections. - + Use a proxy for network connections. This uses the system-wide settings which can be configured in Internet Explorer. Please note that MO will start up a few seconds slower on some systems when using a proxy. - + Use HTTP Proxy (Uses System Settings) - - Known Servers (Dynamically updated every download) + + Associate with "Download with manager" links + + + + + Known Servers (updated on download) - + Preferred Servers (Drag & Drop) @@ -6231,52 +6401,52 @@ p, li { white-space: pre-wrap; } Standardbrowser vorziehen - + Plugins - + Author: - + Version: - + Description: - + Key - + Value - + Blacklisted Plugins (use <del> to remove): - + Workarounds Workarounds - + Load Mechanism Lademechanismus - + Mod Organizer needs a dll to be injected into the game so all mods are visible to it. There are several means to do this: *Mod Organizer* (default) In this mode the Mod Organizer itself injects the dll. The disadvantage is that you always have to start the game through MO or a link created by it. @@ -6287,17 +6457,17 @@ If you use the Steam version of Oblivion the default will NOT work. In this case - + NMM Version - + The Version of Nexus Mod Manager to impersonate. - + Mod Organizer uses an API provided by the Nexus to provide features like checking for updates and downloading files. Unfortunately this API has not been made available officially to third party tools like MO so we have to impersonate the Nexus Mod Manager to be allowed in. On top of this Nexus has used the client identification to lock out outdated versions of NMM to force users to update. This means that MO also needs to impersonate the new version of NMM even if MO doesn't need an update. Therefore you can configure the version to identify as here. Please note that MO does identify itself as MO to the webserver, it's not lying about what it is. It is merely adding a "compatible" NMM version to the user agent. @@ -6306,53 +6476,53 @@ tl;dr-version: If Nexus-features don't work, insert the current version num - + Enforces that inactive ESPs and ESMs are never loaded. Stellt sicher, dass inaktive ESP und ESM Dateien nie geladen werden. - + It seems that the Games occasionally load ESP or ESM files even if they haven't been activated as plugins. I don't yet know what the circumstances are, but user reports imply it is in some cases unwanted. If this is checked, ESPs and ESMs not checked in the List are invisible to the game and can not be loaded. Manche Spiele scheinen gelegentlich ESP oder ESM Dateien zu laden auch wenn sie nicht als Plugins aktiviert wurden. Wenn der Haken aktiviert wurde, sind ESP und ESM Dateien die nicht ausgewählt wurden fĂĽr das Spiel unsichtbar und können nicht geladen werden. - + Hide inactive ESPs/ESMs Inaktive ESP / ESM ausblenden - + If checked, files (i.e. esps, esms and bsas) belonging to the core game can not be disabled in the UI. (default: on) - + If checked, files (i.e. esps, esms and bsas) belonging to the core game can not be disabled in the UI. (default: on) Uncheck this if you want to use Mod Organizer with total conversions (like Nehrim) but be aware that the game will crash if required files are not enabled. - + Force-enable game files - - + + For Skyrim, this can be used instead of Archive Invalidation. It should make AI redundant for all Profiles. For the other games this is not a sufficient replacement for AI! FĂĽr Skyrim kann dies als Alternative zur Archiv Invalidierung verwendet werden. Damit erĂĽbrigt sich AI fĂĽr alle Profile. FĂĽr die anderen Spiele ist dies KEIN hinreichender Ersatz fĂĽr AI! - + Back-date BSAs BSAs zurĂĽckdatieren - + These are workarounds for problems with Mod Organizer. Please make sure you read the help text before changing anything here. @@ -6365,7 +6535,7 @@ FĂĽr die anderen Spiele ist dies KEIN hinreichender Ersatz fĂĽr AI!Lade-Methode - + Select loading mechanism. See help for details. Lade-Mechanismus auswählen. Siehe Hilfe fĂĽr mehr Details. @@ -6390,17 +6560,17 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Proxy DLL</span><span style=" font-size:8pt;"> In diesem Modus ersetzt MO eine der dll Dateien des Spiels mit einer eigenen Version, die MO lädt (und die originale dll natĂĽrlich). Dies funktioniert NUR mit Steam Versionen und wurde bisher nur mit Skyrim getestet. Bitte verwenden Sie diesen Modus nur, wenn keine der anderen Varianten funktioniert.</span></p></body></html> - + Steam App ID Steam AppID - + The Steam AppID for your game Die Steam AppID fĂĽr Ihr Spiel - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -6469,37 +6639,37 @@ p, li { white-space: pre-wrap; } Automatisch in Nexus anmelden - + Username Nutzername - + Password Kennwort - + Select download directory Download-Verzeichnis wählen - + Select mod directory Mod-Verzeichnis wählen - + Select cache directory Cache-Verzeichnis wählen - + Confirm? - + This will make all dialogs show up again where you checked the "Remember selection"-box. Continue? diff --git a/src/organizer_es.ts b/src/organizer_es.ts index bb1543ce..0a19f56f 100644 --- a/src/organizer_es.ts +++ b/src/organizer_es.ts @@ -1,6 +1,50 @@ + + AboutDialog + + + + About + + + + + Revision: + + + + + Used Software + + + + + Credits + + + + + Translators + + + + + Others + + + + + Close + Cerrar + + + + No license + + + ActivateModsDialog @@ -232,25 +276,30 @@ p, li { white-space: pre-wrap; } DownloadList - + Name Nombre - + Filetime - + Done - + Information missing, please select "Query Info" from the context menu to re-retrieve. + + + pending download + + DownloadListWidget @@ -303,125 +352,135 @@ p, li { white-space: pre-wrap; } DownloadListWidgetCompactDelegate - - - - + + + + Are you sure? Estas seguro? - + This will remove all finished downloads from this list and from disk. Esto limpiara todas las descargas finalizadas del disco y la lista. - + This will remove all installed downloads from this list and from disk. - + Install Instalar - + Query Info - + Remove - + Cancel Cancelar - + + < mod %1 file %2 > + + + + + Pending + + + + Paused - + Fetching Info 1 - + Fetching Info 2 - + Installed - + Uninstalled - + Done - + This will permanently remove all finished downloads from this list (but NOT from disk). - + This will permanently remove all installed downloads from this list (but NOT from disk). - + Delete - + Un-Hide - + Remove from View - + Pause - + Resume - + Delete Installed... - + Delete All... - + Remove Installed... - + Remove All... Quitar todos... @@ -429,68 +488,78 @@ p, li { white-space: pre-wrap; } DownloadListWidgetDelegate - - - - + + + + Are you sure? Estas seguro? - + This will remove all finished downloads from this list and from disk. Esto limpiara todas las descargas finalizadas del disco y la lista. - + This will remove all installed downloads from this list and from disk. - + This will remove all finished downloads from this list (but NOT from disk). - + This will remove all installed downloads from this list (but NOT from disk). - + Install Instalar - + Query Info - + Delete - + Un-Hide - + Remove from View - + Remove Quitar - + Cancel Cancelar + + + < mod %1 file %2 > + + + + + Pending + + Fetching Info 1 @@ -502,32 +571,32 @@ p, li { white-space: pre-wrap; } - + Pause - + Resume - + Delete Installed... - + Delete All... - + Remove Installed... - + Remove All... Quitar todos... @@ -540,78 +609,83 @@ p, li { white-space: pre-wrap; } - + Download again? - + A file with the same name has already been downloaded. Do you want to download it again? The new file will receive a different name. - + failed to download %1: could not open output file: %2 error en la descarga %1: no se puede abrir el fichero de destino: %2 - + Wrong Game - + The download link is for a mod for "%1" but this instance of MO has been set up for "%2". - + failed to delete %1 - + failed to delete meta file for %1 - - - - - - + + + + + + invalid index %1 indice invalido %1 - + Information updated - - + + No matching file found on Nexus! Maybe this file is no longer available or it was renamed? - + No file on Nexus matches the selected file by name. Please manually choose the correct one. - + No download server available. Please try again later. - + Failed to request file info from nexus: %1 - + + Download failed. Server reported: %1 + + + + Download failed: %1 (%2) @@ -620,30 +694,31 @@ p, li { white-space: pre-wrap; } error borrando el fichero - - - - - - - - - - - - - - + + + + + + + + + + + + + + + invalid index indice invalido - + Please enter the nexus mod id - + Mod ID: @@ -652,7 +727,7 @@ p, li { white-space: pre-wrap; } Fallo la peticion de fichero de Nexus! - + failed to re-open %1 error reabriendo %1 @@ -764,7 +839,7 @@ Right now the only case I know of where this needs to be overwritten is for the - + If checked, MO will be closed once the specified executable is run. Si esta seleccionado, MO se cerrada automaticamente al ejecutar el fichero. @@ -781,7 +856,7 @@ Right now the only case I know of where this needs to be overwritten is for the - + Add Añadir @@ -797,42 +872,59 @@ Right now the only case I know of where this needs to be overwritten is for the Quitar - + + Close + Cerrar + + + Select a binary Selecciona el fichero - + Executable (%1) - + Java (32-bit) required - + MO requires 32-bit java to run this application. If you already have it installed, select javaw.exe from that installation as the binary. - + Select a directory - + Confirm Confirma - + Really remove "%1" from executables? - + + + Save Changes? + + + + + + You made changes to the current executable, do you want to save them? + + + + MO must be kept running or this application will not work correctly. @@ -841,7 +933,7 @@ Right now the only case I know of where this needs to be overwritten is for the Ejecutable (*.exe *.bat) - + Modify Modificar @@ -1203,7 +1295,7 @@ p, li { white-space: pre-wrap; } MO esta bloqueado mientras se ejecute el programa. - + Unlock Desbloqueado @@ -1211,7 +1303,7 @@ p, li { white-space: pre-wrap; } LogBuffer - + failed to write log to %1: %2 @@ -1232,23 +1324,23 @@ p, li { white-space: pre-wrap; } MainWindow - - + + Categories Categorias - + Profile Perfil - + Pick a module collection Selecciona un perfil para cargarlo - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1259,44 +1351,44 @@ p, li { white-space: pre-wrap; } Por favor observa que las prioridades no son guardadas para cada perfil. - + Refresh list Recargar lista - + Refresh list. This is usually not necessary unless you modified data outside the program. Recargar lista. Esto es normalmente no necesario, a no ser que hayas modificado algo desde fuera del programa. - + List of available mods. - + This is a list of installed mods. Use the checkboxes to activate/deactivate mods and drag & drop mods to change their "installation" orders. - + Filter Filtro - + No groups - + Nexus IDs Nexus IDs - - - + + + Namefilter @@ -1305,12 +1397,12 @@ Por favor observa que las prioridades no son guardadas para cada perfil.Iniciar - + Pick a program to run. Selecciona el programa a iniciar. - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1320,12 +1412,12 @@ p, li { white-space: pre-wrap; } - + Run program Iniciar el programa - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1334,17 +1426,17 @@ p, li { white-space: pre-wrap; } Iniciar el programa seleccionado con ModOrganizer activado. - + Run Iniciar - + Create a shortcut in your start menu or on the desktop to the specified program - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1353,7 +1445,7 @@ p, li { white-space: pre-wrap; } - + Shortcut @@ -1362,12 +1454,12 @@ p, li { white-space: pre-wrap; } Guardar la lista de prioridades de carga. - + List of available esp/esm files Listado de ficheros esp/esm disponibles - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1376,12 +1468,12 @@ p, li { white-space: pre-wrap; } - + List of available BS Archives. Archives not checked here are not managed by MO and ignore installation order. - + BSA files are archives (comparable to .zip files) that contain data assets (meshes, textures, ...) to be used by the game. As such they "compete" with loose files in your data directory over which is loaded. By default, BSAs that share their base name with an enabled ESP (i.e. plugin.esp and plugin.bsa) are automatically loaded and will have precedence over all loose files, the installation order you set up to the left is then ignored! @@ -1389,66 +1481,71 @@ BSAs checked here are loaded in such a way that your installation order is obeye - - + + File Fichero - + <html><head/><body><p>Marked Archives (<img src=":/MO/gui/warning_16"/>) are still loaded on Skyrim but the <a href="http://forums.bethsoft.com/topic/1354395-update-bsas-and-you/"><span style=" text-decoration: underline; color:#0000ff;">regular file override</span></a> mechanism will apply: Loose files override BSAs, no matter the mod/plugin priority.</p></body></html> - + Mod Mod - + Data Datos - + + Sort + + + + refresh data-directory overview refresca la vista del directorio de datos - + Refresh the overview. This may take a moment. Refresca toda la vista. Esto puede tomar un tiempo. - - - + + + Refresh Recargar - + This is an overview of your data directory as visible to the game (and tools). Esta es una visiĂłn general del directorio de datos como visible para el juego (y herramientas). - - + + Filter the above list so that only conflicts are displayed. Filrar la lista superior por conflictos. - + Show only conflicts Monstrar solo los conflictos - + Saves Part. Guardadas - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1459,160 +1556,160 @@ p, li { white-space: pre-wrap; } - + Downloads Descargas - + This is a list of mods you downloaded from Nexus. Double click one to install it. Esta es la lista de los mods que has descargado desde Nexus. Doble Click para instalar. - + Compact - + Show Hidden - + Tool Bar Tool Bar - + Install Mod Instalar Mod - + Install &Mod Instalar &Mod - + Install a new mod from an archive Instalar un nuevo Mod desde un archivo - + Ctrl+M Ctrl+M - + Profiles Perfiles - + &Profiles &Perfiles - + Configure Profiles Configurar los perfiles - + Ctrl+P Ctrl+P - + Executables Ejecutables - + &Executables &Ejecutables - + Configure the executables that can be started through Mod Organizer Configura el ejecutable que sera iniciado desde Mod Orgenizer - + Ctrl+E Ctrl+E - - + + Tools - + &Tools - + Ctrl+I Ctrl+I - + Settings Configuracion - + &Settings &Configuracion - + Configure settings and workarounds Configuraciones y modos - + Ctrl+S Ctrl+S - + Nexus Nexus - + Search nexus network for more mods Buscar en la red de Nexus mas Mods - + Ctrl+N Ctrl+N - - + + Update - + Mod Organizer is up-to-date Mod Organizer esta actualizado - - + + No Problems - + This button will be highlighted if MO discovered potential problems in your setup and provide tips on how to fix them. !Work in progress! @@ -1620,496 +1717,497 @@ Right now this has very limited functionality - - + + Help Ayuda - + Ctrl+H Ctrl+H - + Endorse MO - - + + Endorse Mod Organizer - + Toolbar - + Desktop - + Start Menu - + Problems - + There are potential problems with your setup - + Everything seems to be in order - + Help on UI - + Documentation Wiki - + Report Issue - + Tutorials - + failed to save load order: %1 Fallo guardando el orden de carga: %1 - + failed to save archives order, do you have write access to "%1"? - + + About + + + + + About Qt + + + + Name Nombre - + Please enter a name for the new profile Por favor introduzca un nombre para el nuevo perfil - + failed to create profile: %1 Fallo al crear el perfil: %1 - + Show tutorial? - + You are starting Mod Organizer for the first time. Do you want to show a tutorial of its basic features? If you choose no you can always start the tutorial from the "Help"-menu. - + Downloads in progress Descarga en progreso - + There are still downloads in progress, do you really want to quit? Aun hay descargas en progreso, estas seguro que quieres salir? - + failed to read savegame: %1 Fallo al leer la partida guardada: %1 - + Plugin "%1" failed: %2 - + Plugin error - + It appears the plugin "%1" failed to load last startup and caused MO to crash. Do you want to disable it? (Please note: If this is the first time you see this message for this plugin you may want to give it another try. The plugin may be able to recover from the problem) - + Failed to start "%1" - + Waiting - + Please press OK once you're logged into steam. - "%1" not found - "%1" no encontrado + "%1" no encontrado - + Start Steam? - + Steam is required to be running already to correctly start the game. Should MO try to start steam now? - + Also in: <br> - + No conflict Sin conflictos - + <Edit...> <Editar...> - - Failed to refresh list of esps: %s - - - - + This bsa is enabled in the ini file so it may be required! - + This archive will still be loaded since there is a plugin of the same name but its files will not follow installation order! - + Activating Network Proxy - - + + Installation successful Instalacion completada - - + + Configure Mod Configurar Mod - - + + This mod contains ini tweaks. Do you want to configure them now? Este mod contiene modificaciones del Ini. Quieres configurarlas ahora? - - + + mod "%1" not found - - + + Installation cancelled - - + + The mod was not installed completely. - + Some plugins could not be loaded - + Too many esps and esms enabled - - + + Description missing - + The game doesn't allow more than 255 active plugins (including the official ones) to be loaded. You have to disable some unused plugins or merge some plugins into one. You can find a guide here: <a href="http://wiki.step-project.com/Guide:Merging_Plugins">http://wiki.step-project.com/Guide:Merging_Plugins</a> - + Choose Mod Seleccione Mod - + Mod Archive Fichero Mod - + Start Tutorial? - + You're about to start a tutorial. For technical reasons it's not possible to end the tutorial early. Continue? - - + + Download started Descarga comenzada - + failed to update mod list: %1 Fallo al actualizar la lista de Mods: %1 - + failed to spawn notepad.exe: %1 Fallo al cargar el Bloc de notas: %1 - + failed to open %1 Fallo al abrir %1 - + failed to change origin name: %1 fallo al cambiar el nombre original del fichero %1 - + Multiple esps activated, please check that they don't conflict. - - + + Create Mod... - + A mod with this name already exists - + Continue? - + The versioning scheme decides which version is considered newer than another. This function will guess the versioning scheme under the assumption that the installed version is outdated. - + + Sorry - + I don't know a versioning scheme where %1 is newer than %2. - + <All> <Todos> - + <Checked> <Marcado> - + Plugin "%1" failed - + failed to init plugin %1: %2 - + The following plugins could not be loaded. The reason may be missing dependencies (i.e. python) or an outdated version: - - Failed to move "%1" from mod "%2" to "%3": %4 - - - - + <Unchecked> <Desmarcado> - + <Update> <Actualizacion> - + <No category> - + <Conflicted> - + <Not Endorsed> - + failed to rename mod: %1 fallo al cambiar el nombre al mod: %1 - + Overwrite? - + This will replace the existing mod "%1". Continue? - + failed to remove mod "%1" - - - + + + failed to rename "%1" to "%2" - - - + + + + Confirm Confirma - + Remove the following mods?<br><ul>%1</ul> - + failed to remove mod: %1 - - + + Failed - + Installation file no longer exists - + Mods installed with old versions of MO can't be reinstalled in this way. - - + + You need to be logged in with Nexus to endorse - - + + Extract BSA - + This mod contains at least one BSA. Do you want to unpack it? (This removes the BSA after completion. If you don't know about BSAs, just select no) - - - + + + failed to read %1: %2 - - + + This archive contains invalid hashes. Some files may be broken. - + Nexus ID for this Mod is unknown @@ -2122,92 +2220,92 @@ This function will guess the versioning scheme under the assumption that the ins Selecciona Prioridad - + Really enable all visible mods? - + Really disable all visible mods? - + Choose what to export - + Everything - + All installed mods are included in the list - + Active Mods - + Only active (checked) mods from your current profile are included - + Visible - + All mods visible in the mod list are included - + export failed: %1 - + Install Mod... Instalar Mod... - + Enable all visible Activar todos los visibles - + Disable all visible Desactivar todos los visibles - + Check all for update Buscar Actualizaciones - + Export to csv... - + Sync to Mods... - + Restore Backup - + Remove Backup... @@ -2216,312 +2314,362 @@ This function will guess the versioning scheme under the assumption that the ins Definir Categoria - + Primary Category - + Change versioning scheme - + Un-ignore update - + Ignore update - + Rename Mod... Cambiar nombre... - + Remove Mod... Quitar Mod... - + Reinstall Mod - + Un-Endorse - - + + Endorse - + Won't endorse - + Endorsement state unknown - + Ignore missing data - + Visit on Nexus - + Open in explorer - + Information... Informacion... - - + + Exception: - - + + Unknown exception - + <Multiple> - + + Really delete "%1"? + + + + Fix Mods... Activar Mods faltantes... - - + + Delete + + + + + failed to remove %1 Fallo eliminando %1 - - + + failed to create %1 - + Can't change download directory while downloads are in progress! - + Download failed - + failed to write to file %1 Fallo de escritura en el fichero %1 - + %1 written %1 escrito - + Select binary - + Binary Fichero - + Enter Name - + Please enter a name for the executable - + Not an executable - + This is not a recognized executable. - - + + Replace file? - + There already is a hidden version of this file. Replace it? - - + + File operation failed - - + + Failed to remove "%1". Maybe you lack the required file permissions? - + There already is a visible version of this file. Replace it? - + + file not found: %1 + fichero no encontrado: %1 + + + + failed to generate preview for %1 + + + + + Sorry, can't preview anything. This function currently does not support extracting from bsas. + + + + Update available Disponible actualizaciĂłn - + Open/Execute - + Add as Executable - + + Preview + + + + Un-Hide - + Hide - + Write To File... Escribir al fichero... - + Do you want to endorse Mod Organizer on %1 now? - + Remove - + Unlock load order - + Lock load order - + + BOSS working + + + + + failed to run boss: %1 + + + + Request to Nexus failed: %1 - + + Executable "%1" not found + + + + + Failed to refresh list of esps: %1 + + + + This will move all files from overwrite into a new, regular mod. Please enter a name: - + Add/Remove Categories - + Replace Categories - - + + login successful - + login failed: %1. Trying to download anyway - + login failed: %1 - + login failed: %1. You need to log-in with Nexus to update MO. - + Error Error - + failed to extract %1 (errorcode %2) - + Extract... - + Edit Categories... - + Enable all - + Disable all @@ -2564,58 +2712,58 @@ Please enter a name: Informacion del Mod - + Textfiles Fich. Texto - + A list of text-files in the mod directory. El listado de ficheros de texto en el directorio del mod. - + A list of text-files in the mod directory like readmes. El listado de ficheros de texto en el directorio del mod como ayudas e informacion. - + INI-Files Fich. INI - + This is a list of .ini files in the mod. Esta es la lista de ficheros INI que incluye el mod. - + This is a list of .ini files in the mod. These are usually used to configure the behaviour of mods if there are configurable parameters. Esta es la lista de ficheros INI que incluye el mod. Normalmente son usados para configurar algunos aspectos o parametros del mod. - + Save changes to the file. Grabar cambios al fichero. - + Save changes to the file. This overwrites the original. There is no automatic backup! Grabar cambios al fichero. Esto sobreescribe el original. No se realizan backups! - - + + Save Guardar - + Images Imagenes - + Images located in the mod. Imagenes incluidas en el mod. @@ -2628,13 +2776,13 @@ p, li { white-space: pre-wrap; } Esto muestra el listado de fotos (jpg y png) incluidas con el Mod, por ejemplo capturas de pantallas. Pulsa para verlas en grande. - - + + Optional ESPs ESPs Opcionales - + List of esps and esms that can not be loaded by the game. Listado de ESPs y ESMs que no se cargaran con el juego. @@ -2653,12 +2801,12 @@ Normalmente son ficheros extras o modificaciones, mira el fich. texto del mod pa Muchos mods no tienen ESPs extras, en estos casos veras una lista vacia. - + This lists all the images (.jpg and .png) in the mod directory, like screenshots and such. Click one to get a larger view. - + List of esps and esms contained in this plugin that currently can not be loaded by the game. They will not even appear in the esp-list in the main MO-window. They usually contain optional functionality, see the readme. @@ -2666,103 +2814,103 @@ Most mods do not have optional esps, so chances are good you are looking at an e - + Make the selected mod in the lower list unavailable. marca este fichero seleccionado en la lista de abajo no disponible. - + The selected esp (in the lower list) will be pushed into a subdirectory of the mod and will thus become "invisible" to the game. It can then no longer be activated. El esp seleccionado (en la lista de abajo) es el que sera colocado en el subdirectorio del mod y sera invisible para el juego. Este no podra ser activado. - + Move a file to the data directory. Error moviendo fichero al directorio de datos. - + This moves a esp to the esp directory so it can be enabled in the main window. Please note that the ESP merely becomes "available", it will not necessarily be loaded! That is configured in the main window of omo. Esto mueve un esp al directorio esp, por lo que se puede habilitar en la ventana principal. Tenga en cuenta que el ESP sĂłlo se convierte en "disponible", no necesariamente se cargará! Está configurado en la ventana principal de omo. - + ESPs in the data directory and thus visible to the game. ESPs en el directorio de datos y visibles por el juego. - + These are the mod files that are in the (virtual) data directory of your game and will thus be selecteable in the esp list in the main window. Estos son los archivos mod que se encuentran en el directorio de datos (virtual) de su juego y asĂ­ será selecteable en la lista de esp en la ventana principal. - + Available ESPs ESPs Disponibles - + Conflicts - + The following conflicted files are provided by this mod - - + + File Fichero - + Overwritten Mods - + The following conflicted files are provided by other mods - + Providing Mod - + Non-Conflicted files - + Categories Categorias - + Primary Category - + Nexus Info Inf. Nexus - + Mod ID ID del MOD - + Mod ID for this mod on Nexus. ID del Mod en Nexus. - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -2776,7 +2924,7 @@ p, li { white-space: pre-wrap; } - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -2785,41 +2933,41 @@ p, li { white-space: pre-wrap; } - + Version Version - + Refresh Recargar - + Refresh all information from Nexus. - + Description Descripcion - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:7.8pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"><br /></p></body></html> - + Endorse - + Notes @@ -2840,7 +2988,7 @@ p, li { white-space: pre-wrap; } Tipo - + Name Nombre @@ -2862,17 +3010,17 @@ p, li { white-space: pre-wrap; } Tamaño - + Filetree Contenido - + A directory view of this mod Ficheros que contiene este mod - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -2882,43 +3030,43 @@ p, li { white-space: pre-wrap; } - + Previous - + Next - + Close Cerrar - + File Exists Existe el fichero - + A file with that name exists, please enter a new one Un fichero con ese nombre ya existe, por favor selecciona otro nombre - + failed to move file Error al mover el fichero - + failed to create directory "optional" Error al crear el directorio "optional" - - + + Info requested, please wait Informacion solicitada, por favor espere @@ -2935,159 +3083,159 @@ p, li { white-space: pre-wrap; } (descripcion incompleta, por favor visita nexus) - + &Delete &Delete - + &Rename &Rename - + &Open &Open - + &New Folder &New Folder - - + + Save changes? Grabar cambios? - + Current Version: %1 Version actual: %1 - + No update available Sin actualizacion - + Main Principal - + &Hide - + &Unhide - - + + Save changes to "%1"? - + Update Actualizacion - + Optional Opcional - + Old Antiguo - + Misc Misc - + Unknown Desconocido - + (description incomplete, please visit nexus) - - + + Replace file? - + There already is a hidden version of this file. Replace it? - - + + File operation failed - - + + Failed to remove "%1". Maybe you lack the required file permissions? - - + + failed to rename %1 to %2 - + There already is a visible version of this file. Replace it? - + Un-Hide - + Hide - + Please enter a name - - + + Error Error - + Invalid name. Must be a valid file name - + A tweak by that name exists - + Create Tweak @@ -3096,13 +3244,13 @@ p, li { white-space: pre-wrap; } peticion fallada - + <a href="%1">Visit on Nexus</a> - - + + Confirm Confirma @@ -3115,28 +3263,28 @@ p, li { white-space: pre-wrap; } Descarga comenzada - + Failed to delete %1 Error borrando %1 - + Are sure you want to delete "%1"? Estas seguro de querer borrar "%1"? - + Are sure you want to delete the selected files? Etas seguro de querer borrar los ficheros seleccionados? - - + + New Folder Nueva Carpeta - + Failed to create "%1" Fallo al crear "%1" @@ -3212,8 +3360,9 @@ p, li { white-space: pre-wrap; } - installed version: %1, newest version: %2 - version instalada: %1, nueva version: %2 + installed version: "%1", newest version: "%2" + installed version: %1, newest version: %2 + version instalada: %1, nueva version: %2 %1 contains no esp/esm and no asset (textures, meshes, interface, ...) directory @@ -3471,17 +3620,17 @@ p, li { white-space: pre-wrap; } NexusInterface - + Failed to guess mod id for "%1", please pick the correct one - + empty response - + invalid response @@ -4123,85 +4272,89 @@ Activar Mods faltantes en el menu contextual del raton intentara activar los mod PluginList - + Mod Index - - + + Flags + + + + + unknown - + Name of your mods - + Load priority of your mod. The higher, the more "important" it is and thus overwrites data from plugins with lower priority. - + The modindex determins the formids of objects originating from this mods. - + failed to update esp info for file %1 (source id: %2), error: %3 - + esp not found: %1 ESP no encontrado: %1 - + Confirm Confirma - + Really enable all plugins? - + Really disable all plugins? - + The file containing locked plugin indices is broken - - - failed to open output file: %1 + + Some of your plugins have invalid names! These plugins can not be loaded by the game. Please see mo_interface.log for a list of affected plugins and rename them. - - Some of your plugins have invalid names! These plugins can not be loaded by the game. Please see mo_interface.log for a list of affected plugins and rename them. + + BOSS dll incompatible - + Missing Masters - + Enabled Masters - + failed to restore load order for %1 @@ -4214,17 +4367,17 @@ Activar Mods faltantes en el menu contextual del raton intentara activar los mod max - + This plugin can't be disabled (enforced by the game) - + Origin: %1 - + Name Nombre @@ -4233,7 +4386,7 @@ Activar Mods faltantes en el menu contextual del raton intentara activar los mod Nombres de tus Mods - + Priority Prioridad @@ -4254,6 +4407,19 @@ Activar Mods faltantes en el menu contextual del raton intentara activar los mod Indice Mod + + PreviewDialog + + + Preview + + + + + Close + Cerrar + + ProblemsDialog @@ -4299,82 +4465,72 @@ p, li { white-space: pre-wrap; } fallo al aplicar las modificaciones al ini - + invalid profile name %1 - + failed to create %1 - - failed to open temporary file - - - - - failed to open "%1" for writing - - - - + failed to write mod list: %1 - + failed to update tweaked ini file, wrong settings may be used: %1 - + failed to create tweaked ini: %1 - + Overwrite directory couldn't be parsed - + invalid priority %1 prioridad invalida %1 - + failed to parse ini file (%1) - + failed to parse ini file (%1): %2 - - + + failed to modify "%1" - + Delete savegames? - + Do you want to delete local savegames? (If you select "No", the save games will show up again if you re-enable local savegames) - - - - - + + + + + invalid index %1 indice invalido %1 @@ -4759,12 +4915,12 @@ p, li { white-space: pre-wrap; } Fallo al configurar la carga por proxy-dll - + "%1" is missing "%1" no encontrado - + Permissions required Se requieren permisos @@ -4773,44 +4929,44 @@ p, li { white-space: pre-wrap; } La cuenta de usuario actual no tiene los derechos de acceso necesarios para ejecutar el Mod Organizer. Los cambios necesarios pueden hacerse automáticamente (el directorio de MO se harán escritura para la cuenta de usuario actual). Se le pedirá a ejecutar "mo_helper.exe" con derechos de administrador). - - + + Woops - + The current user account doesn't have the required access rights to run Mod Organizer. The neccessary changes can be made automatically (the MO directory will be made writable for the current user account). You will be asked to run "helper.exe" with administrative rights. - + ModOrganizer has crashed! Should a diagnostic file be created? If you send me this file (%1) to sherb@gmx.net, the bug is a lot more likely to be fixed. Please include a short description of what you were doing when the crash happened - + ModOrganizer has crashed! Unfortunately I was not able to write a diagnostic file: %1 - + An instance of Mod Organizer is already running Ya se está ejecutando una instancia de Mod Organizer - + No game identified in "%1". The directory is required to contain the game binary and its launcher. - - + + Please select the game to manage Por favor seleccione el juego - + Please select the game edition you have (MO can't start the game correctly if this is set incorrectly!) @@ -4823,7 +4979,7 @@ p, li { white-space: pre-wrap; } "%1" no encontrado - + Please use "Help" from the toolbar to get usage instructions to all elements Por favor utilice "Ayuda" en la barra superior para obtener informacion sobre todos los elementos @@ -4836,19 +4992,19 @@ p, li { white-space: pre-wrap; } prioridad invalida %1 - - + + failed to find "%1" fallo al encontrar %1 - - + + <Manage...> <Definir...> - + failed to parse profile %1: %2 no se pudo analizar el perfil % 1: %2 @@ -4861,17 +5017,17 @@ p, li { white-space: pre-wrap; } Esto tomara un momento - + failed to access %1 Fallo al acceder %1 - + failed to set file time %1 Fallo al definir la hora al fihcero %1 - + failed to create %1 Fallo al crear %1 @@ -4910,18 +5066,18 @@ p, li { white-space: pre-wrap; } Ingles - - + + Mod Organizer Mod Organizer - + Script Extender Script Extender - + Proxy DLL Proxy DLL @@ -4946,22 +5102,22 @@ Start elevated anyway? (you will be asked if you want to allow ModOrganizer.exe - + failed to spawn "%1": %2 Fallo al crear "%1": %2 - + "%1" doesn't exist "%1% no existe - + failed to inject dll into "%1": %2 Fallo al injectar la dll en "%1": %2 - + failed to run "%1" Fallo al abrir %1 @@ -5049,6 +5205,11 @@ Start elevated anyway? (you will be asked if you want to allow ModOrganizer.exe invalid game type %1 + + + failed to open temporary file + + QueryOverwriteDialog @@ -5280,18 +5441,18 @@ Start elevated anyway? (you will be asked if you want to allow ModOrganizer.exe Derechos administrativos necesarios para cambiar esto. - - + + attempt to store setting for unknown plugin "%1" - + Confirm Confirma - + Changing the mod directory affects all your profiles! Mods not present (or named differently) in the new location will be disabled in all profiles. There is no way to undo this unless you backed up your profiles manually. Proceed? @@ -5318,19 +5479,19 @@ Start elevated anyway? (you will be asked if you want to allow ModOrganizer.exe El idioma del programa. Esto solo mostrara los idiomas instalados. - + Enforces that inactive ESPs and ESMs are never loaded. Se asegura que no se cargan nunca los ESPs y ESMs inactivos. - + It seems that the Games occasionally load ESP or ESM files even if they haven't been activated as plugins. I don't yet know what the circumstances are, but user reports imply it is in some cases unwanted. If this is checked, ESPs and ESMs not checked in the List are invisible to the game and can not be loaded. Parece que los juegos ocasionalmente cargan archivos ESP o ESM, incluso si ellos todavĂ­a no se ha activado como plugins. No, pero sabe cuáles son las circunstancias, pero informes de usuario implican en algunos casos no deseados. Si esto se comprueba, ESPs ESMs no marcadas en la lista son invisibles para el juego y no se pueden cargar. - + Hide inactive ESPs/ESMs Ocultar ESPs/ESMs inactivos @@ -5348,72 +5509,77 @@ p, li { white-space: pre-wrap; } - + Disable automatic internet features - + Disable automatic internet features. This does not affect features that are explicitly invoked by the user (like checking mods for updates, endorsing, opening the web browser) - + Offline Mode - + Use a proxy for network connections. - + Use a proxy for network connections. This uses the system-wide settings which can be configured in Internet Explorer. Please note that MO will start up a few seconds slower on some systems when using a proxy. - + Use HTTP Proxy (Uses System Settings) - - Known Servers (Dynamically updated every download) - - - - + Preferred Servers (Drag & Drop) - + Workarounds Soluciones - + Load Mechanism Mecamismo de carga - + Select loading mechanism. See help for details. Selecciona la forma de cargar. Mira la ayuda para detalles. - + Steam App ID Steam App ID - + + Associate with "Download with manager" links + + + + + Known Servers (updated on download) + + + + The Steam AppID for your game El AppID de tu juego - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5588,12 +5754,12 @@ p, li { white-space: pre-wrap; } Inicio automatico en Nexus - + Username Usuario - + Password Contraseña @@ -5602,42 +5768,42 @@ p, li { white-space: pre-wrap; } Manejar enlaces NXM - + Plugins - + Author: - + Version: - + Description: - + Key - + Value - + Blacklisted Plugins (use <del> to remove): - + Mod Organizer needs a dll to be injected into the game so all mods are visible to it. There are several means to do this: *Mod Organizer* (default) In this mode the Mod Organizer itself injects the dll. The disadvantage is that you always have to start the game through MO or a link created by it. @@ -5648,17 +5814,17 @@ If you use the Steam version of Oblivion the default will NOT work. In this case - + NMM Version - + The Version of Nexus Mod Manager to impersonate. - + Mod Organizer uses an API provided by the Nexus to provide features like checking for updates and downloading files. Unfortunately this API has not been made available officially to third party tools like MO so we have to impersonate the Nexus Mod Manager to be allowed in. On top of this Nexus has used the client identification to lock out outdated versions of NMM to force users to update. This means that MO also needs to impersonate the new version of NMM even if MO doesn't need an update. Therefore you can configure the version to identify as here. Please note that MO does identify itself as MO to the webserver, it's not lying about what it is. It is merely adding a "compatible" NMM version to the user agent. @@ -5667,36 +5833,36 @@ tl;dr-version: If Nexus-features don't work, insert the current version num - + If checked, files (i.e. esps, esms and bsas) belonging to the core game can not be disabled in the UI. (default: on) - + If checked, files (i.e. esps, esms and bsas) belonging to the core game can not be disabled in the UI. (default: on) Uncheck this if you want to use Mod Organizer with total conversions (like Nehrim) but be aware that the game will crash if required files are not enabled. - + Force-enable game files - - + + For Skyrim, this can be used instead of Archive Invalidation. It should make AI redundant for all Profiles. For the other games this is not a sufficient replacement for AI! Para Skyrim, puede utilizarse en lugar de invalidaciĂłn de archivo. Debe despedir AI para todos los perfiles. Para los otros juegos no es un sustituto suficiente AI! - + Back-date BSAs Back-date BSAs - + These are workarounds for problems with Mod Organizer. Please make sure you read the help text before changing anything here. @@ -5705,27 +5871,27 @@ Para los otros juegos no es un sustituto suficiente AI! Estas son soluciones para problemas con Mod Organizer. Normalmente no son necesarios. Por favor, asegĂşrese de leer el texto de ayuda antes de cambiar cualquier cosa aquĂ­. - + Select download directory - + Select mod directory - + Select cache directory - + Confirm? - + This will make all dialogs show up again where you checked the "Remember selection"-box. Continue? diff --git a/src/organizer_fr.ts b/src/organizer_fr.ts index 2ddc1097..c283cb71 100644 --- a/src/organizer_fr.ts +++ b/src/organizer_fr.ts @@ -1,6 +1,50 @@ + + AboutDialog + + + + About + + + + + Revision: + + + + + Used Software + + + + + Credits + + + + + Translators + + + + + Others + + + + + Close + Fermer + + + + No license + + + ActivateModsDialog @@ -240,25 +284,30 @@ p, li { white-space: pre-wrap; } DownloadList - + Name Nom - + Filetime Date du fichier - + Done TerminĂ© - + Information missing, please select "Query Info" from the context menu to re-retrieve. Information manquante, veuillez sĂ©lectionner "Demander info" dans le menu contextuel pour rĂ©cupĂ©rer. + + + pending download + + DownloadListWidget @@ -311,125 +360,135 @@ p, li { white-space: pre-wrap; } DownloadListWidgetCompactDelegate - - - - + + + + Are you sure? ĂŠtes-vous certain? - + This will remove all finished downloads from this list and from disk. Ceci supprimera tous les tĂ©lĂ©chargements complĂ©tĂ©s de la liste et du disque. - + This will remove all installed downloads from this list and from disk. Ceci supprimera tous les tĂ©lĂ©chargements installĂ©s de cette liste et du disque. - + Install Installer - + Query Info Demander info - + Remove Supprimer - + Cancel Annuler - + + < mod %1 file %2 > + + + + + Pending + + + + Paused - + Fetching Info 1 - + Fetching Info 2 - + Installed - + Uninstalled - + Done TerminĂ© - + This will permanently remove all finished downloads from this list (but NOT from disk). - + This will permanently remove all installed downloads from this list (but NOT from disk). - + Delete - + Un-Hide - + Remove from View - + Pause Interrompre - + Resume Reprendre - + Delete Installed... - + Delete All... - + Remove Installed... Supprimer installĂ©... - + Remove All... Supprimer tout... @@ -437,68 +496,78 @@ p, li { white-space: pre-wrap; } DownloadListWidgetDelegate - - - - + + + + Are you sure? ĂŠtes-vous certain? - + This will remove all finished downloads from this list and from disk. Ceci supprimera tous les tĂ©lĂ©chargements complĂ©tĂ©s de la liste et du disque. - + This will remove all installed downloads from this list and from disk. Ceci supprimera tous les tĂ©lĂ©chargements installĂ©s de la liste et du disque. - + This will remove all finished downloads from this list (but NOT from disk). - + This will remove all installed downloads from this list (but NOT from disk). - + Install Installer - + Query Info Demander info - + Delete - + Un-Hide - + Remove from View - + Remove Supprimer - + Cancel Annuler + + + < mod %1 file %2 > + + + + + Pending + + Fetching Info 1 @@ -510,32 +579,32 @@ p, li { white-space: pre-wrap; } - + Pause Interrompre - + Resume Reprendre - + Delete Installed... - + Delete All... - + Remove Installed... Supprimer installĂ©... - + Remove All... Supprimer tout... @@ -548,78 +617,83 @@ p, li { white-space: pre-wrap; } - + Download again? - + A file with the same name has already been downloaded. Do you want to download it again? The new file will receive a different name. - + failed to download %1: could not open output file: %2 impossible de tĂ©lĂ©charger %1: impossible d'Ă©crire le fichier %2 - + Wrong Game - + The download link is for a mod for "%1" but this instance of MO has been set up for "%2". - + failed to delete %1 impossible de supprimer %1 - + failed to delete meta file for %1 impossible de supprimer le mĂ©ta fichier pour %1 - - - - - - + + + + + + invalid index %1 index invalide %1 - + Information updated Information mise Ă  jour - - + + No matching file found on Nexus! Maybe this file is no longer available or it was renamed? Aucun fichier correspondant trouvĂ© sur Nexus! Peut-ĂŞtre ce fichier n'est-il plus disponible ou a Ă©tĂ© renommĂ©? - + No file on Nexus matches the selected file by name. Please manually choose the correct one. Aucun fichier sur Nexus ne correspond au nom du fichier sĂ©lectionnĂ©. Veuillez s'il-vous-plaĂ®t sĂ©lectionner le bon manuellement. - + No download server available. Please try again later. - + Failed to request file info from nexus: %1 Impossible de demander l'info du fichier sur Nexus: %1 - + + Download failed. Server reported: %1 + + + + Download failed: %1 (%2) TĂ©lĂ©chargement Ă©chouĂ©: %1 (%2) @@ -628,30 +702,31 @@ p, li { white-space: pre-wrap; } impossible de supprimer le fichier - - - - - - - - - - - - - - + + + + + + + + + + + + + + + invalid index index invalide - + Please enter the nexus mod id Veuillez entre l'ID Nexus du mod - + Mod ID: ID du mod: @@ -668,7 +743,7 @@ p, li { white-space: pre-wrap; } TĂ©lĂ©chargement Ă©chouĂ© - + failed to re-open %1 impossible d'ouvrir Ă  nouveau %1 @@ -776,7 +851,7 @@ Right now the only case I know of where this needs to be overwritten is for the - + If checked, MO will be closed once the specified executable is run. Si cochĂ©e, MO sera fermĂ© une fois que le programme sĂ©lectionnĂ© sera dĂ©marrĂ©. @@ -793,7 +868,7 @@ Right now the only case I know of where this needs to be overwritten is for the - + Add Ajouter @@ -809,42 +884,59 @@ Right now the only case I know of where this needs to be overwritten is for the Supprimer - + + Close + Fermer + + + Select a binary Choisir un programme - + Executable (%1) - + Java (32-bit) required - + MO requires 32-bit java to run this application. If you already have it installed, select javaw.exe from that installation as the binary. - + Select a directory - + Confirm Confirmer - + Really remove "%1" from executables? - + + + Save Changes? + + + + + + You made changes to the current executable, do you want to save them? + + + + MO must be kept running or this application will not work correctly. @@ -853,7 +945,7 @@ Right now the only case I know of where this needs to be overwritten is for the Programme (*.exe *.bat) - + Modify Modifier @@ -1206,7 +1298,7 @@ p, li { white-space: pre-wrap; } MO est vĂ©rouillĂ© pendant que le programme s'exĂ©cute. - + Unlock DĂ©vĂ©rouiller @@ -1214,7 +1306,7 @@ p, li { white-space: pre-wrap; } LogBuffer - + failed to write log to %1: %2 @@ -1235,23 +1327,23 @@ p, li { white-space: pre-wrap; } MainWindow - - + + Categories CatĂ©gories - + Profile Profil - + Pick a module collection Choisissez un profil - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1266,44 +1358,44 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Veuillez noter que pour l'instant, l'ordre de chargement des ESPs est commun Ă  tous les profils.</span></p></body></html> - + Refresh list Actualiser la liste - + Refresh list. This is usually not necessary unless you modified data outside the program. Actualiser la liste. Normalement inutile Ă  moins que vous n'ayez modifiĂ© des donnĂ©es Ă  l'extĂ©rieur du programme. - + List of available mods. - + This is a list of installed mods. Use the checkboxes to activate/deactivate mods and drag & drop mods to change their "installation" orders. - + Filter Flitre - + No groups - + Nexus IDs IDs Nexus - - - + + + Namefilter @@ -1312,12 +1404,12 @@ p, li { white-space: pre-wrap; } Lancement - + Pick a program to run. Choisissez un programme Ă  lancer. - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1332,12 +1424,12 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Vous pouvez ajouter d'autres outils Ă  la liste, mais je ne peut garantir que les outils que je n'ai pas testĂ© fonctionneront.</span></p></body></html> - + Run program Lancer le programme - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1350,17 +1442,17 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">ExĂ©cuter le programme sĂ©lectionnĂ© avec ModOrganizer actif.</span></p></body></html> - + Run Lancer - + Create a shortcut in your start menu or on the desktop to the specified program - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1373,7 +1465,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">CrĂ©e un raccourci dans le menu DĂ©marrer qui lance directement le programme sĂ©lectionnĂ© avec MO actif.</span></p></body></html> - + Shortcut @@ -1398,12 +1490,12 @@ p, li { white-space: pre-wrap; } Enregistrer - + List of available esp/esm files Liste des fichiers ESP/ESM disponibles - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1416,12 +1508,12 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Cette liste contient tous les ESPs et ESMs contenus dans les mods actifs. Ceux-ci requièrent leur propre ordre de chargement. Utilisez le glisser-dĂ©poser pour modifier cet ordre. Veuillez noter que MO enregistre l'ordre de chargement seulement pour les mods actif/cochĂ©s.<br />Il y a un excellent outil nommĂ© &quot;BOSS&quot; qui classe automatiquement ces fichiers.</span></p></body></html> - + List of available BS Archives. Archives not checked here are not managed by MO and ignore installation order. - + BSA files are archives (comparable to .zip files) that contain data assets (meshes, textures, ...) to be used by the game. As such they "compete" with loose files in your data directory over which is loaded. By default, BSAs that share their base name with an enabled ESP (i.e. plugin.esp and plugin.bsa) are automatically loaded and will have precedence over all loose files, the installation order you set up to the left is then ignored! @@ -1429,66 +1521,71 @@ BSAs checked here are loaded in such a way that your installation order is obeye - - + + File Fichier - + <html><head/><body><p>Marked Archives (<img src=":/MO/gui/warning_16"/>) are still loaded on Skyrim but the <a href="http://forums.bethsoft.com/topic/1354395-update-bsas-and-you/"><span style=" text-decoration: underline; color:#0000ff;">regular file override</span></a> mechanism will apply: Loose files override BSAs, no matter the mod/plugin priority.</p></body></html> - + Mod Mod - + Data DATA - + + Sort + + + + refresh data-directory overview Actualiser la vue d'ensemble du dossier DATA - + Refresh the overview. This may take a moment. Actualiser la vue d'ensemble. Ceci peut demander un moment. - - - + + + Refresh Actualiser - + This is an overview of your data directory as visible to the game (and tools). Ceci est une vue d'ensemble du dossier DATA tel qu'il apparaĂ®t pour le jeu (et les outils). - - + + Filter the above list so that only conflicts are displayed. Filtrer la liste ci-dessus pour afficher seulement les conflits. - + Show only conflicts Afficher seulement les conflits - + Saves Sauvegardes - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1505,160 +1602,160 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Si vous cliquez &quot;RĂ©parer Mods...&quot; dans le menu contextuel, MO tentera d'activer tous les mods, ESPs et ESMs nĂ©cessaires pour rĂ©soudre le problème. Rien ne sera dĂ©sactivĂ©!</span></p></body></html> - + Downloads TĂ©lĂ©chargements - + This is a list of mods you downloaded from Nexus. Double click one to install it. Ceci est une liste de mods que vous avez tĂ©lĂ©chargĂ© de Nexus. Double-cliquez en un pour l'installer. - + Compact - + Show Hidden - + Tool Bar Barre d'outils - + Install Mod Installer mod - + Install &Mod Installer &mod - + Install a new mod from an archive Installer un nouveau mod Ă  partir d'une archive - + Ctrl+M Ctrl+M - + Profiles Profils - + &Profiles &Profils - + Configure Profiles Configurer les profils - + Ctrl+P Ctrl+P - + Executables Programmes - + &Executables Programm&es - + Configure the executables that can be started through Mod Organizer Configure les programmes pouvant ĂŞtre lancĂ©s via Mod Organizer - + Ctrl+E Ctrl+E - - + + Tools - + &Tools - + Ctrl+I Ctrl+H - + Settings RĂ©glages - + &Settings RĂ©glage&s - + Configure settings and workarounds Configurer les rĂ©glages et solutions de rechange - + Ctrl+S Ctrl+S - + Nexus Nexus - + Search nexus network for more mods Effectuer une recherche sur Nexus pour plus de mods - + Ctrl+N Ctrl+N - - + + Update - + Mod Organizer is up-to-date Mod Organizer est Ă  jour - - + + No Problems - + This button will be highlighted if MO discovered potential problems in your setup and provide tips on how to fix them. !Work in progress! @@ -1666,496 +1763,497 @@ Right now this has very limited functionality - - + + Help Aide - + Ctrl+H Ctrl+H - + Endorse MO - - + + Endorse Mod Organizer - + Toolbar - + Desktop - + Start Menu - + Problems - + There are potential problems with your setup - + Everything seems to be in order - + Help on UI - + Documentation Wiki - + Report Issue - + Tutorials - + failed to save load order: %1 impossible d'enregistrer l'ordre de chargement: %1 - + failed to save archives order, do you have write access to "%1"? - + + About + + + + + About Qt + + + + Name Nom - + Please enter a name for the new profile Veuillez inscrire un nom pour le nouveau profil - + failed to create profile: %1 impossible de crĂ©er le profil: %1 - + Show tutorial? - + You are starting Mod Organizer for the first time. Do you want to show a tutorial of its basic features? If you choose no you can always start the tutorial from the "Help"-menu. - + Downloads in progress TĂ©lĂ©chargements en cours - + There are still downloads in progress, do you really want to quit? Il encore des tĂ©lĂ©chargements en cours, voulez-vous vraiment quitter? - + failed to read savegame: %1 impossible de lire la sauvegarde: %1 - + Plugin "%1" failed: %2 - + Plugin error - + It appears the plugin "%1" failed to load last startup and caused MO to crash. Do you want to disable it? (Please note: If this is the first time you see this message for this plugin you may want to give it another try. The plugin may be able to recover from the problem) - + Failed to start "%1" - + Waiting Attente - + Please press OK once you're logged into steam. Veuillez cliquer OK une fois connectĂ© Ă  steam. - "%1" not found - "%1" introuvable + "%1" introuvable - + Start Steam? - + Steam is required to be running already to correctly start the game. Should MO try to start steam now? - + Also in: <br> - + No conflict Aucun conflit - + <Edit...> <Modifier...> - - Failed to refresh list of esps: %s - - - - + This bsa is enabled in the ini file so it may be required! - + This archive will still be loaded since there is a plugin of the same name but its files will not follow installation order! - + Activating Network Proxy - - + + Installation successful Installation rĂ©ussie - - + + Configure Mod Configurer mod - - + + This mod contains ini tweaks. Do you want to configure them now? Ce mod contient des ajustement pour les fichiers ini. DĂ©sirez-vous les configurer maintenant? - - + + mod "%1" not found - - + + Installation cancelled - - + + The mod was not installed completely. - + Some plugins could not be loaded - + Too many esps and esms enabled - - + + Description missing - + The game doesn't allow more than 255 active plugins (including the official ones) to be loaded. You have to disable some unused plugins or merge some plugins into one. You can find a guide here: <a href="http://wiki.step-project.com/Guide:Merging_Plugins">http://wiki.step-project.com/Guide:Merging_Plugins</a> - + Choose Mod Choisir mod - + Mod Archive Archive de mod - + Start Tutorial? - + You're about to start a tutorial. For technical reasons it's not possible to end the tutorial early. Continue? - - + + Download started TĂ©lĂ©chargement commencĂ© - + failed to update mod list: %1 impossible de mettre Ă  jour la liste de mods: %1 - + failed to spawn notepad.exe: %1 impossible de lancer notepad.exe: %1 - + failed to open %1 impossible d'ouvrir %1 - + failed to change origin name: %1 impossible de changer le nom d'origine: %1 - + Multiple esps activated, please check that they don't conflict. - - + + Create Mod... - + A mod with this name already exists - + Continue? - + The versioning scheme decides which version is considered newer than another. This function will guess the versioning scheme under the assumption that the installed version is outdated. - + + Sorry - + I don't know a versioning scheme where %1 is newer than %2. - + <All> <Tous> - + <Checked> <CochĂ©s> - + Plugin "%1" failed - + failed to init plugin %1: %2 - + The following plugins could not be loaded. The reason may be missing dependencies (i.e. python) or an outdated version: - - Failed to move "%1" from mod "%2" to "%3": %4 - - - - + <Unchecked> <DĂ©cochĂ©s> - + <Update> <Rafraichir> - + <No category> - + <Conflicted> - + <Not Endorsed> - + failed to rename mod: %1 impossible de renommer le mod: %1 - + Overwrite? - + This will replace the existing mod "%1". Continue? - + failed to remove mod "%1" - - - + + + failed to rename "%1" to "%2" - - - + + + + Confirm Confirmer - + Remove the following mods?<br><ul>%1</ul> - + failed to remove mod: %1 - - + + Failed - + Installation file no longer exists - + Mods installed with old versions of MO can't be reinstalled in this way. - - + + You need to be logged in with Nexus to endorse - - + + Extract BSA - + This mod contains at least one BSA. Do you want to unpack it? (This removes the BSA after completion. If you don't know about BSAs, just select no) - - - + + + failed to read %1: %2 Échec de lecture %1: %2 - - + + This archive contains invalid hashes. Some files may be broken. - + Nexus ID for this Mod is unknown @@ -2168,92 +2266,92 @@ This function will guess the versioning scheme under the assumption that the ins Choisir prioritĂ© - + Really enable all visible mods? - + Really disable all visible mods? - + Choose what to export - + Everything - + All installed mods are included in the list - + Active Mods - + Only active (checked) mods from your current profile are included - + Visible - + All mods visible in the mod list are included - + export failed: %1 - + Install Mod... Installer mod... - + Enable all visible Activer tous les mods visibles - + Disable all visible DĂ©sactiver tous les mods visibles - + Check all for update VĂ©rifier toutes les mises Ă  jour - + Export to csv... - + Sync to Mods... - + Restore Backup - + Remove Backup... @@ -2262,312 +2360,362 @@ This function will guess the versioning scheme under the assumption that the ins Assigner catĂ©gorie - + Primary Category - + Change versioning scheme - + Un-ignore update - + Ignore update - + Rename Mod... Renommer mod... - + Remove Mod... Supprimer mod... - + Reinstall Mod - + Un-Endorse - - + + Endorse - + Won't endorse - + Endorsement state unknown - + Ignore missing data - + Visit on Nexus - + Open in explorer - + Information... Information... - - + + Exception: - - + + Unknown exception - + <Multiple> - + + Really delete "%1"? + + + + Fix Mods... RĂ©parer mods... - - + + Delete + + + + + failed to remove %1 Impossible de supprimer %1 - - + + failed to create %1 impossible de crĂ©er %1 - + Can't change download directory while downloads are in progress! - + Download failed - + failed to write to file %1 impossible d'Ă©crire dans le fichier %1 - + %1 written %1 Ă©crit - + Select binary - + Binary Programme - + Enter Name - + Please enter a name for the executable - + Not an executable - + This is not a recognized executable. - - + + Replace file? - + There already is a hidden version of this file. Replace it? - - + + File operation failed - - + + Failed to remove "%1". Maybe you lack the required file permissions? - + There already is a visible version of this file. Replace it? - + + file not found: %1 + fichier introuvable: %1 + + + + failed to generate preview for %1 + + + + + Sorry, can't preview anything. This function currently does not support extracting from bsas. + + + + Update available Mise Ă  jour disponible - + Open/Execute - + Add as Executable - + + Preview + + + + Un-Hide - + Hide - + Write To File... Écriture du fichier... - + Do you want to endorse Mod Organizer on %1 now? - + Remove Supprimer - + Unlock load order - + Lock load order - + + BOSS working + + + + + failed to run boss: %1 + + + + Request to Nexus failed: %1 - + + Executable "%1" not found + + + + + Failed to refresh list of esps: %1 + + + + This will move all files from overwrite into a new, regular mod. Please enter a name: - + Add/Remove Categories - + Replace Categories - - + + login successful - + login failed: %1. Trying to download anyway - + login failed: %1 - + login failed: %1. You need to log-in with Nexus to update MO. - + Error Erreur - + failed to extract %1 (errorcode %2) - + Extract... - + Edit Categories... - + Enable all - + Disable all @@ -2610,58 +2758,58 @@ Please enter a name: Info sur le mod - + Textfiles Fichiers texte - + A list of text-files in the mod directory. Une liste des fichiers texte de ce mod. - + A list of text-files in the mod directory like readmes. Une liste des fichiers texte de ce mod, comme les lisez-moi. - + INI-Files Fichiers INI - + This is a list of .ini files in the mod. Ceci est une liste des fichiers .ini prĂ©sents dans le mod. - + This is a list of .ini files in the mod. These are usually used to configure the behaviour of mods if there are configurable parameters. Ceci est une liste des fichiers .ini prĂ©sents dans le mod. Ils sont gĂ©nĂ©ralement utilisĂ©s pour configurer le comportement du mod lorsqu'il y a des paramètres configurables. - + Save changes to the file. Enregistre les changements au fichier. - + Save changes to the file. This overwrites the original. There is no automatic backup! Enregistrer les changements au fichier. Ceci Ă©crase l'original. Il n'y a pas de copie de sauvegarde automatique! - - + + Save Enregistrer - + Images Images - + Images located in the mod. Images prĂ©sentes dans le mod. @@ -2678,13 +2826,13 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Ceci est la liste de toutes les images (.jpg et .png) prĂ©sentes dans le dossier du mod, telles captures d'Ă©cran et autres. Cliquez-en une pour une vue aggrandie.</span></p></body></html> - - + + Optional ESPs ESPs optionnels - + List of esps and esms that can not be loaded by the game. Liste des esps et esms ne pouvant pas ĂŞtre chargĂ©s par le jeu. @@ -2707,12 +2855,12 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">La plupart des mods ne contenant pas d'esps optionnels, il est très probable que cette liste soit vide.</span></p></body></html> - + This lists all the images (.jpg and .png) in the mod directory, like screenshots and such. Click one to get a larger view. - + List of esps and esms contained in this plugin that currently can not be loaded by the game. They will not even appear in the esp-list in the main MO-window. They usually contain optional functionality, see the readme. @@ -2720,103 +2868,103 @@ Most mods do not have optional esps, so chances are good you are looking at an e - + Make the selected mod in the lower list unavailable. Rendre le mod sĂ©lectionnĂ© dans la liste du bas non-disponible. - + The selected esp (in the lower list) will be pushed into a subdirectory of the mod and will thus become "invisible" to the game. It can then no longer be activated. L'ESP sĂ©lectionnĂ© (dans la liste infĂ©rieure) sera poussĂ© dans un sous-dossier du mod et deviendra ainsi "invisible" pour le jeu. Il ne pourra alors plus ĂŞtre activĂ©. - + Move a file to the data directory. DĂ©placer un fichier vers le dossier DATA. - + This moves a esp to the esp directory so it can be enabled in the main window. Please note that the ESP merely becomes "available", it will not necessarily be loaded! That is configured in the main window of omo. Ceci dĂ©place un ESP vers le rĂ©pertoire DATA afin qu'il puisse ĂŞtre activĂ© dans la fenĂŞtre principale. Veuillez noter que l'ESP devient simplement "disponible", il ne sera pas nĂ©cessairement chargĂ©. CelĂ  doit ĂŞtre configurĂ© dans la fenĂŞtre principale de MO. - + ESPs in the data directory and thus visible to the game. ESPs dans le dossier DATA et donc visibles par le jeu. - + These are the mod files that are in the (virtual) data directory of your game and will thus be selecteable in the esp list in the main window. Ce sont les mods qui se trouvent dans le rĂ©pertoire DATA (virtuel) de votre jeu et qu'il sera donc possible de sĂ©lectionner dans la fenĂŞtre principale. - + Available ESPs ESPs disponibles - + Conflicts - + The following conflicted files are provided by this mod - - + + File Fichier - + Overwritten Mods - + The following conflicted files are provided by other mods - + Providing Mod - + Non-Conflicted files - + Categories CatĂ©gories - + Primary Category - + Nexus Info Info de Nexus - + Mod ID ID du mod - + Mod ID for this mod on Nexus. ID de ce mod sur Nexus. - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -2834,7 +2982,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">ID de ce mod sur Nexus. Rempli automatiquement si vous tĂ©lĂ©chargez et installez un mod Ă  partir de MO. Sinon, vous pouvez l'inscrire manuellement. Pour connaĂ®tre le bon ID, trouvez le mod sur Nexus. L'URL ressemblera Ă  ceci: <a href=" http://www.skyrimnexus.com/downloads/file.php?id=1334"><span style=" text-decoration: underline; color:#0000ff;">http://www.skyrimnexus.com/downloads/file.php?id=1334</span></a><a href="http://www.skyrimnexus.com/downloads/file.php?id=1334"><span style=" color:#000000;">. Dans cet example, 1334 est l'ID que vous cherchez. En passant: Ce lien est celui de Mod Organizer sur le Nexus. Pourquoi ne pas le visiter et lui donner votre aval?</span></a></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -2847,32 +2995,32 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Version du mod installĂ©e La bulle contient la version courrante disponible sur Nexus. La version installĂ© n'est rĂ©glĂ©e que si vous installez le mod avec MO.</span></p></body></html> - + Version Version - + Refresh Actualiser - + Refresh all information from Nexus. - + Description Description - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:7.8pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"><br /></p></body></html> @@ -2892,7 +3040,7 @@ p, li { white-space: pre-wrap; } Type - + Name Nom @@ -2901,12 +3049,12 @@ p, li { white-space: pre-wrap; } Taille (kB) - + Endorse - + Notes @@ -2919,17 +3067,17 @@ p, li { white-space: pre-wrap; } Avez-vous donnĂ© votre aval Ă  ce mod? - + Filetree Arborescence - + A directory view of this mod Une vue du dossier de ce mod - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -2944,70 +3092,70 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Les changements sont immĂ©diatement appliquĂ©s sur le disque, alors</span><span style=" font-size:8pt; font-weight:600;"> soyez prudent</span><span style=" font-size:8pt;">.</span></p></body></html> - + Previous - + Next - + Close Fermer - + &Delete Again, english accelerator not applicable. French would use S&upprimer for this one. Supprimer - + &Rename &Renommer - + &Open &Ouvrir - + &New Folder &Nouveau dossier - - + + Save changes? Enregistrer les changements? - + File Exists Un fichier du mĂŞme nom existe - + A file with that name exists, please enter a new one Un fichier ainsi nommĂ© existe dĂ©jĂ , veuillez entrer un nouveau nom - + failed to move file impossible de dĂ©placer le fchier - + failed to create directory "optional" Impossible de crĂ©er le dossier "optional" - - + + Info requested, please wait Info demandĂ©e, veuillez patienter @@ -3017,133 +3165,133 @@ p, li { white-space: pre-wrap; } (description incomplète, veuillez vĂ©rifier sur Nexus) - + Current Version: %1 Version courante: %1 - + No update available Aucune mise-Ă -jour disponible - + Main Principal - + &Hide - + &Unhide - - + + Save changes to "%1"? - + Update Mise-Ă -jour - + Optional Optionnel - + Old Ancien - + Misc Divers - + Unknown Inconnu - + (description incomplete, please visit nexus) - - + + Replace file? - + There already is a hidden version of this file. Replace it? - - + + File operation failed - - + + Failed to remove "%1". Maybe you lack the required file permissions? - - + + failed to rename %1 to %2 - + There already is a visible version of this file. Replace it? - + Un-Hide - + Hide - + Please enter a name - - + + Error Erreur - + Invalid name. Must be a valid file name - + A tweak by that name exists - + Create Tweak @@ -3152,13 +3300,13 @@ p, li { white-space: pre-wrap; } la requĂŞte Ă  Ă©chouĂ©e - + <a href="%1">Visit on Nexus</a> <a href="%1">Visiter sur Nexus</a> - - + + Confirm Confirmer @@ -3171,28 +3319,28 @@ p, li { white-space: pre-wrap; } TĂ©lĂ©chargement commencĂ© - + Failed to delete %1 impossible d'effacer %1 - + Are sure you want to delete "%1"? Voulez-vous vraiment supprimer "%1"? - + Are sure you want to delete the selected files? Voulez-vous vraiment supprimer les fichiers sĂ©lectionnĂ©s? - - + + New Folder Nouveau dossier - + Failed to create "%1" Impossible de crĂ©er "%1" @@ -3239,8 +3387,9 @@ p, li { white-space: pre-wrap; } - installed version: %1, newest version: %2 - Version installĂ©e: %1, dernière version: %2 + installed version: "%1", newest version: "%2" + installed version: %1, newest version: %2 + Version installĂ©e: %1, dernière version: %2 %1 contains no esp/esm and no asset (textures, meshes, interface, ...) directory @@ -3511,17 +3660,17 @@ p, li { white-space: pre-wrap; } NexusInterface - + Failed to guess mod id for "%1", please pick the correct one - + empty response - + invalid response @@ -4242,85 +4391,89 @@ p, li { white-space: pre-wrap; } PluginList - + Mod Index - - + + Flags + + + + + unknown - + Name of your mods - + Load priority of your mod. The higher, the more "important" it is and thus overwrites data from plugins with lower priority. - + The modindex determins the formids of objects originating from this mods. - + failed to update esp info for file %1 (source id: %2), error: %3 - + esp not found: %1 ESP introuvable: %1 - + Confirm Confirmer - + Really enable all plugins? - + Really disable all plugins? - + The file containing locked plugin indices is broken - - - failed to open output file: %1 + + Some of your plugins have invalid names! These plugins can not be loaded by the game. Please see mo_interface.log for a list of affected plugins and rename them. - - Some of your plugins have invalid names! These plugins can not be loaded by the game. Please see mo_interface.log for a list of affected plugins and rename them. + + BOSS dll incompatible - + Missing Masters - + Enabled Masters - + failed to restore load order for %1 @@ -4333,17 +4486,17 @@ p, li { white-space: pre-wrap; } max - + This plugin can't be disabled (enforced by the game) - + Origin: %1 - + Name Nom @@ -4352,7 +4505,7 @@ p, li { white-space: pre-wrap; } Les noms de vos mods - + Priority PrioritĂ© @@ -4369,6 +4522,19 @@ p, li { white-space: pre-wrap; } Cet index dĂ©termine l'ID des items, sorts, ... introduits par le mod. Leur ID sera "xxyyyyyy", oĂą "xx" est cet index et "yyyyyy" est dĂ©terminĂ© par le mod lui-mĂŞme. + + PreviewDialog + + + Preview + + + + + Close + Fermer + + ProblemsDialog @@ -4414,82 +4580,72 @@ p, li { white-space: pre-wrap; } impossible d'appliquer les ajustements aux fichiers ini - + invalid profile name %1 - + failed to create %1 impossible de crĂ©er %1 - - failed to open temporary file - - - - - failed to open "%1" for writing - - - - + failed to write mod list: %1 - + failed to update tweaked ini file, wrong settings may be used: %1 - + failed to create tweaked ini: %1 - + Overwrite directory couldn't be parsed - + invalid priority %1 prioritĂ© invalide %1 - + failed to parse ini file (%1) - + failed to parse ini file (%1): %2 - - + + failed to modify "%1" - + Delete savegames? - + Do you want to delete local savegames? (If you select "No", the save games will show up again if you re-enable local savegames) - - - - - + + + + + invalid index %1 index invalide %1 @@ -4866,12 +5022,12 @@ p, li { white-space: pre-wrap; } Impossible de mettre en place le chargement via DLL par procuration - + "%1" is missing "%1" manquant - + Permissions required Permissions requises @@ -4880,50 +5036,50 @@ p, li { white-space: pre-wrap; } Le compte d'usager actuel n'a pas les accès requis pour lancer Mod Organizer. Les changements nĂ©cessaires peuvent ĂŞtre effectuĂ©s automatiquement (le dossier de MO sera rendu inscriptible pour le compte d'usager actuel). Vous devrez accepter que "mo_helper.exe" soit lancĂ© avec les permissions administrateur. - - + + Woops - + The current user account doesn't have the required access rights to run Mod Organizer. The neccessary changes can be made automatically (the MO directory will be made writable for the current user account). You will be asked to run "helper.exe" with administrative rights. - + ModOrganizer has crashed! Should a diagnostic file be created? If you send me this file (%1) to sherb@gmx.net, the bug is a lot more likely to be fixed. Please include a short description of what you were doing when the crash happened - + ModOrganizer has crashed! Unfortunately I was not able to write a diagnostic file: %1 - - + + Mod Organizer Mod Organizer - + An instance of Mod Organizer is already running Une copie du Mod Organizer tourne dĂ©jĂ  - + No game identified in "%1". The directory is required to contain the game binary and its launcher. - - + + Please select the game to manage Veuillez choisir le jeu Ă  gĂ©rer - + Please select the game edition you have (MO can't start the game correctly if this is set incorrectly!) @@ -4932,39 +5088,39 @@ p, li { white-space: pre-wrap; } "%1" introuvable - + Please use "Help" from the toolbar to get usage instructions to all elements Veuillez utiliser l'aide dans la barre d'outil pour obtenir des instructions Ă  propos de tous les Ă©lĂ©ments - - + + <Manage...> <GĂ©rer...> - + failed to parse profile %1: %2 impossible d'analyser le profil %1: %2 - - + + failed to find "%1" impossible de trouver "%1" - + failed to access %1 impossible d'accĂ©der Ă  %1 - + failed to set file time %1 impossible de changer la date du fichier %1 - + failed to create %1 impossible de crĂ©er %1 @@ -5003,12 +5159,12 @@ p, li { white-space: pre-wrap; } Français - + Script Extender Extenseur de script - + Proxy DLL DLL par procuration @@ -5033,22 +5189,22 @@ Start elevated anyway? (you will be asked if you want to allow ModOrganizer.exe - + failed to spawn "%1": %2 impossible de lancer "%1": %2 - + "%1" doesn't exist "%1" inexistant - + failed to inject dll into "%1": %2 impossible d'injecter le DLL dans "%1": %2 - + failed to run "%1" impossible de lancer "%1" @@ -5107,6 +5263,11 @@ Start elevated anyway? (you will be asked if you want to allow ModOrganizer.exe invalid game type %1 + + + failed to open temporary file + + QueryOverwriteDialog @@ -5342,18 +5503,18 @@ Start elevated anyway? (you will be asked if you want to allow ModOrganizer.exe Les droits administrateur sont requis pour changer ceci. - - + + attempt to store setting for unknown plugin "%1" - + Confirm Confirmer - + Changing the mod directory affects all your profiles! Mods not present (or named differently) in the new location will be disabled in all profiles. There is no way to undo this unless you backed up your profiles manually. Proceed? @@ -5506,52 +5667,57 @@ p, li { white-space: pre-wrap; } Configurer les catĂ©gories de mod - + Disable automatic internet features - + Disable automatic internet features. This does not affect features that are explicitly invoked by the user (like checking mods for updates, endorsing, opening the web browser) - + Offline Mode - + Use a proxy for network connections. - + Use a proxy for network connections. This uses the system-wide settings which can be configured in Internet Explorer. Please note that MO will start up a few seconds slower on some systems when using a proxy. - + Use HTTP Proxy (Uses System Settings) - - Known Servers (Dynamically updated every download) + + Associate with "Download with manager" links + + + + + Known Servers (updated on download) - + Preferred Servers (Drag & Drop) - + Blacklisted Plugins (use <del> to remove): - + Mod Organizer needs a dll to be injected into the game so all mods are visible to it. There are several means to do this: *Mod Organizer* (default) In this mode the Mod Organizer itself injects the dll. The disadvantage is that you always have to start the game through MO or a link created by it. @@ -5596,12 +5762,12 @@ p, li { white-space: pre-wrap; } Connexion automatique Ă  Nexus - + Username Nom d'usager - + Password Mot de passe @@ -5610,52 +5776,52 @@ p, li { white-space: pre-wrap; } GĂ©rer les liens NXM - + Plugins - + Author: - + Version: - + Description: - + Key - + Value - + Workarounds Solutions alternatives - + Steam App ID ID d'application Steam - + The Steam AppID for your game L'AppID Steam de votre jeu - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5682,12 +5848,12 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">22380 est l'App ID que vous cherchez.</span></p></body></html> - + Load Mechanism Chargement MO - + Select loading mechanism. See help for details. Choisir la mĂ©thode de chargement. Voir l'aide pour les dĂ©tails. @@ -5712,17 +5878,17 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">DLL par procuration</span><span style=" font-size:8pt;"> Dans ce mode, MO remplace l'un des DLL du jeu par une version qui charge MO (ainsi que le DLL orginal, bien sur). Ceci fonctionnera SEULEMENT avec les jeux STEAM et n'a Ă©tĂ© testĂ© qu'avec Skyrim. N'utilisez cette mĂ©thode que si les autres ne fonctionnent pas.</span></p></body></html> - + NMM Version - + The Version of Nexus Mod Manager to impersonate. - + Mod Organizer uses an API provided by the Nexus to provide features like checking for updates and downloading files. Unfortunately this API has not been made available officially to third party tools like MO so we have to impersonate the Nexus Mod Manager to be allowed in. On top of this Nexus has used the client identification to lock out outdated versions of NMM to force users to update. This means that MO also needs to impersonate the new version of NMM even if MO doesn't need an update. Therefore you can configure the version to identify as here. Please note that MO does identify itself as MO to the webserver, it's not lying about what it is. It is merely adding a "compatible" NMM version to the user agent. @@ -5731,53 +5897,53 @@ tl;dr-version: If Nexus-features don't work, insert the current version num - + Enforces that inactive ESPs and ESMs are never loaded. Garantie que les ESPs et ESMs inactifs ne soient jamais chargĂ©s. - + It seems that the Games occasionally load ESP or ESM files even if they haven't been activated as plugins. I don't yet know what the circumstances are, but user reports imply it is in some cases unwanted. If this is checked, ESPs and ESMs not checked in the List are invisible to the game and can not be loaded. Il semble que les jeux chargent parfois des fichiers ESP ou ESM mĂŞme s'ils ne sont pas activĂ©s. Je n'en connais pas encore les circonstances, mais les rapports des usagers impliquent que dans certains cas, ce comportement est indĂ©sirable. Si vous cochez ceci, les ESPs et ESMs qui ne sotn pas cochĂ©s seront invisible pour le jeu et ne pourront pas ĂŞtre chargĂ©s. - + Hide inactive ESPs/ESMs Cacher les ESPs et ESMs inactifs - + If checked, files (i.e. esps, esms and bsas) belonging to the core game can not be disabled in the UI. (default: on) - + If checked, files (i.e. esps, esms and bsas) belonging to the core game can not be disabled in the UI. (default: on) Uncheck this if you want to use Mod Organizer with total conversions (like Nehrim) but be aware that the game will crash if required files are not enabled. - + Force-enable game files - - + + For Skyrim, this can be used instead of Archive Invalidation. It should make AI redundant for all Profiles. For the other games this is not a sufficient replacement for AI! Pour Skyrim, ceci peut ĂŞtre utilisĂ© au lieu de l'invalidation des archives. Ça devrait rendre l'invalidation redondante pour tous les profils. Pour les autres jeux, ceci ne suffit pas Ă  remplacer l'invalidation des archives! - + Back-date BSAs Antidater les BSAs - + These are workarounds for problems with Mod Organizer. Please make sure you read the help text before changing anything here. @@ -5786,27 +5952,27 @@ Pour les autres jeux, ceci ne suffit pas Ă  remplacer l'invalidation des ar Ici se trouvent des solutions alternatives Ă  certains problèmes rencontrĂ©s avec Mod Organizer. Elles ne sont normalement pas nĂ©cessaires. Soyez sĂ»r d'avoir lu le texte d'aide avant de modifier quoi que ce soit sur cette page. - + Select download directory - + Select mod directory - + Select cache directory - + Confirm? - + This will make all dialogs show up again where you checked the "Remember selection"-box. Continue? diff --git a/src/organizer_ru.ts b/src/organizer_ru.ts index b94688b0..2a75ce82 100644 --- a/src/organizer_ru.ts +++ b/src/organizer_ru.ts @@ -1,6 +1,50 @@ + + AboutDialog + + + + About + + + + + Revision: + + + + + Used Software + + + + + Credits + + + + + Translators + + + + + Others + + + + + Close + Закрыть + + + + No license + + + ActivateModsDialog @@ -235,25 +279,30 @@ p, li { white-space: pre-wrap; } DownloadList - + Name ĐĐĽŃŹ - + Filetime Дата модификации - + Done Выполнено - + Information missing, please select "Query Info" from the context menu to re-retrieve. Đнформация отŃŃŃ‚ŃтвŃет, пожалŃĐąŃта, выберите ĐżŃнкт "Справочная информация" из контекŃтного меню. + + + pending download + + DownloadListWidget @@ -306,131 +355,151 @@ p, li { white-space: pre-wrap; } DownloadListWidgetCompactDelegate - + + < mod %1 file %2 > + + + + + Pending + + + + Paused ПриоŃтановлено - + Fetching Info 1 Đзвлечение информации 1 - + Fetching Info 2 Đзвлечение информации 2 - + Installed ĐŁŃтановлено - + Uninstalled Удалено - + Done Готово - - - - + + + + Are you sure? Đ’Ń‹ Ńверены? - + This will remove all finished downloads from this list and from disk. Это Ńдалит вŃе готовые загрŃзки из этого ŃпиŃка и Ń Đ´Đ¸Ńка. - + This will remove all installed downloads from this list and from disk. Это Ńдалит вŃе ŃŃтановленные загрŃзки из этого ŃпиŃка и Ń Đ´Đ¸Ńка. - + This will permanently remove all finished downloads from this list (but NOT from disk). Это полноŃтью Ńдалит вŃе заверŃенные загрŃзки из этого ŃпиŃка (но НЕ Ń Đ´Đ¸Ńка). - + This will permanently remove all installed downloads from this list (but NOT from disk). Это полноŃтью Ńдалит вŃе ŃŃтановленные загрŃзки из этого ŃпиŃка (но НЕ Ń Đ´Đ¸Ńка). - + Install ĐŁŃтановка - + Query Info Справочная информация - + Delete Удалить - + Un-Hide Показать - + Remove from View Скрыть от проŃмотра - + Cancel Отмена - + Pause ПаŃза - + Remove Удаление - + Resume Возобновить - + Delete Installed... Удалить ŃŃтановленное... - + Delete All... Удалить вŃе... - + Remove Installed... Отменить ŃŃŃ‚Đ°Đ˝ĐľĐ˛ĐşŃ - + Remove All... Удалить вŃе DownloadListWidgetDelegate + + + < mod %1 file %2 > + + + + + Pending + + Fetching Info 1 @@ -442,95 +511,95 @@ p, li { white-space: pre-wrap; } Đзвлечение информации 2 - - - - + + + + Are you sure? Đ’Ń‹ Ńверены? - + This will remove all finished downloads from this list and from disk. Это Ńдалит вŃе готовые загрŃзки из этого ŃпиŃка и Ń Đ´Đ¸Ńка. - + This will remove all installed downloads from this list and from disk. Это Ńдалит вŃе ŃŃтановленные загрŃзки из этого лиŃта и Ń Đ´Đ¸Ńка. - + This will remove all finished downloads from this list (but NOT from disk). Это Ńдалит вŃе готовые загрŃзки из этого ŃпиŃка (но НЕ Ń Đ´Đ¸Ńка). - + This will remove all installed downloads from this list (but NOT from disk). Это Ńдалит вŃе ŃŃтановленные загрŃзки из этого ŃпиŃка (но НЕ Ń Đ´Đ¸Ńка). - + Install ĐŁŃтановить - + Query Info Справочная информация - + Delete Удалить - + Un-Hide Показать - + Remove from View Скрыть от проŃмотра - + Cancel Отмена - + Pause ПаŃза - + Remove Удалить - + Resume Возобновить - + Delete Installed... Удалить ŃŃтановленное... - + Delete All... Удалить вŃе... - + Remove Installed... Удалить ŃŃтановленные - + Remove All... Удалить вŃе @@ -543,111 +612,117 @@ p, li { white-space: pre-wrap; } не ŃдалоŃŃŚ переименовать "%1" в "%2" - + Download again? Скачать Ńнова - + A file with the same name has already been downloaded. Do you want to download it again? The new file will receive a different name. Файл Ń Ń‚Đ°ĐşĐ¸ĐĽ именем загрŃжен. Đ’Ń‹ хотите загрŃзить его Ńнова? ĐŁ него бŃдет Đ´Ń€Ńгое имя. - + failed to download %1: could not open output file: %2 не ŃдалоŃŃŚ загрŃзить %1: не ŃдалоŃŃŚ открыть выходной файл: %2 - + Wrong Game - + The download link is for a mod for "%1" but this instance of MO has been set up for "%2". - - - - - - - - - - - - - - + + + + + + + + + + + + + + + invalid index неверный Đ¸Đ˝Đ´ĐµĐşŃ - + failed to delete %1 не ŃдалоŃŃŚ Ńдалить %1 - + failed to delete meta file for %1 не ŃдалоŃŃŚ Ńдалить мета-файл %1 - - - - - - + + + + + + invalid index %1 неверный Đ¸Đ˝Đ´ĐµĐşŃ %1 - + Please enter the nexus mod id ПожалŃĐąŃта, введите ID мода на Nexus - + Mod ID: ID мода: - + Information updated Đнформация обновлена - - + + No matching file found on Nexus! Maybe this file is no longer available or it was renamed? Нет ŃоответŃтвŃющих модов на Nexus! Возможно фал был Ńдален или переименован? - + No file on Nexus matches the selected file by name. Please manually choose the correct one. Нет ŃоответŃтвŃющих фалов на Nexus. Выберите файл врŃчнŃŃŽ. - + No download server available. Please try again later. Сервер недоŃŃ‚Ńпен. ПопробŃйте позже. - + Failed to request file info from nexus: %1 Не ŃдалоŃŃŚ полŃчить информацию Đľ файле: %1 - + + Download failed. Server reported: %1 + + + + Download failed: %1 (%2) ЗагрŃзка не ŃдалаŃŃŚ: %1 (%2) - + failed to re-open %1 не ŃдалоŃŃŚ повторно открыть %1 @@ -759,7 +834,7 @@ Right now the only case I know of where this needs to be overwritten is for the - + If checked, MO will be closed once the specified executable is run. Đ•Ńли активно, MO бŃдет закрыт поŃле работы иŃполняемого файла. @@ -776,7 +851,7 @@ Right now the only case I know of where this needs to be overwritten is for the - + Add Добавить @@ -792,47 +867,64 @@ Right now the only case I know of where this needs to be overwritten is for the Удалить - + + Close + Закрыть + + + Select a binary Указать двоичный - + Executable (%1) ĐŃполняемые (%1) - + Java (32-bit) required ТребŃетŃŃŹ Java (32-bit) - + MO requires 32-bit java to run this application. If you already have it installed, select javaw.exe from that installation as the binary. MO требŃет 32-bit java для запŃŃка этого приложения. Đ•Ńли он Ń Đ˛Đ°Ń Ńже ŃŃтановлен, выберете javaw.exe для этой ŃŃтановки как иŃполняемый файл. - + Select a directory Укажите директорию - + Confirm Подтвердить - + Really remove "%1" from executables? ДейŃтвительно Ńдалить "%1" иŃполняемых? - + Modify Đзменить - + + + Save Changes? + + + + + + You made changes to the current executable, do you want to save them? + + + + MO must be kept running or this application will not work correctly. MO должна быть запŃщена или приложение не Ńможет работать правильно @@ -1116,7 +1208,7 @@ p, li { white-space: pre-wrap; } MO заблокирован, Ń‚.Đş иŃполняемый файл запŃщен. - + Unlock Разблокировать @@ -1124,7 +1216,7 @@ p, li { white-space: pre-wrap; } LogBuffer - + failed to write log to %1: %2 не ŃдалоŃŃŚ произвеŃти запиŃŃŚ в жŃрнал %1: %2 @@ -1145,23 +1237,23 @@ p, li { white-space: pre-wrap; } MainWindow - - + + Categories Категории - + Profile Профиль - + Pick a module collection Выберете набор модŃлей - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1176,54 +1268,54 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Обратите внимание, что порядок загрŃзки esp одинаков для вŃех профилей.</span></p></body></html> - + Refresh list Обновить ŃпиŃок - + Refresh list. This is usually not necessary unless you modified data outside the program. Обновить ŃпиŃок. Обычно в этом нет необходимоŃти, пока вы не измените данные вне программы. - + List of available mods. СпиŃок Đ´ĐľŃŃ‚Ńпных модов. - + This is a list of installed mods. Use the checkboxes to activate/deactivate mods and drag & drop mods to change their "installation" orders. Это ŃпиŃок ŃŃтановленных модов. ĐŃпользŃйте флажки, для включения/отключения модов и перетаŃкивание модов, для изменения их порядка ŃŃтановки. - + Filter Фильтр - + No groups Без грŃппировки - + Nexus IDs Nexus IDs - - - + + + Namefilter Фильтр по имени - + Pick a program to run. Выберете ĐżŃ€ĐľĐłŃ€Đ°ĐĽĐĽŃ Đ´Đ»ŃŹ запŃŃка. - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1238,12 +1330,12 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Đ’Ń‹ можете добавить новые инŃтрŃменты в этот ŃпиŃок, но работоŃпоŃобноŃть их вŃех не гарантированна.</span></p></body></html> - + Run program ЗапŃŃтить ĐżŃ€ĐľĐłŃ€Đ°ĐĽĐĽŃ - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1256,17 +1348,17 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">ЗапŃŃтить выбраннŃŃŽ ĐżŃ€ĐľĐłŃ€Đ°ĐĽĐĽŃ Ń ĐżĐľĐ´Đ´ĐµŃ€Đ¶ĐşĐľĐą ModOrganizer.</span></p></body></html> - + Run ЗапŃŃтить - + Create a shortcut in your start menu or on the desktop to the specified program Создать ярлык для выбранной программы, в меню ĐźŃŃĐş или на рабочем Ńтоле. - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1279,17 +1371,17 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Создает ярлык в меню ĐźŃŃĐş, который запŃŃкает выбраннŃŃŽ ĐżŃ€ĐľĐłŃ€Đ°ĐĽĐĽŃ Ń Đ°ĐşŃ‚Đ¸Đ˛Đ˝Ń‹ĐĽ MO.</span></p></body></html> - + Shortcut Ярлык - + List of available esp/esm files СпиŃок Đ´ĐľŃŃ‚Ńпных esp/esm файлов - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1302,12 +1394,17 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Этот ŃпиŃок Ńодержит esp и esm файлы активных модов. Для них требŃетŃŃŹ определенный порядок загрŃзки. ĐŃпользŃйте перетаŃкивание для изменения порядка загрŃзки. Обратите внимание, что MO Ńохранит порядок загрŃзки только для активными/проверенных модов.<br />СŃщеŃтвŃет замечательная Ńтилита, называющаяŃŃŹ &quot;BOSS&quot; , которая автоматичеŃки ŃортирŃет эти файлы.</span></p></body></html> - + + Sort + + + + List of available BS Archives. Archives not checked here are not managed by MO and ignore installation order. СпиŃок Đ´ĐľŃŃ‚Ńпных BSA. Они не отмечены здеŃŃŚ, не ŃправляютŃŃŹ Ń ĐżĐľĐĽĐľŃ‰ŃŚŃŽ MO и игнорирŃŃŽŃ‚ порядок ŃŃтановки. - + BSA files are archives (comparable to .zip files) that contain data assets (meshes, textures, ...) to be used by the game. As such they "compete" with loose files in your data directory over which is loaded. By default, BSAs that share their base name with an enabled ESP (i.e. plugin.esp and plugin.bsa) are automatically loaded and will have precedence over all loose files, the installation order you set up to the left is then ignored! @@ -1318,18 +1415,18 @@ BSAs checked here are loaded in such a way that your installation order is obeye BSA, отмеченные здеŃŃŚ, загрŃжаютŃŃŹ так, чтобы порядок ŃŃтановки ŃоблюдалŃŃŹ должным образом. - - + + File Файл - + <html><head/><body><p>Marked Archives (<img src=":/MO/gui/warning_16"/>) are still loaded on Skyrim but the <a href="http://forums.bethsoft.com/topic/1354395-update-bsas-and-you/"><span style=" text-decoration: underline; color:#0000ff;">regular file override</span></a> mechanism will apply: Loose files override BSAs, no matter the mod/plugin priority.</p></body></html> - + Mod Мод @@ -1338,50 +1435,50 @@ BSA, отмеченные здеŃŃŚ, загрŃжаютŃŃŹ так, чтобы <html><head/><body><p>Помеченые архивы (<img src=":/MO/gui/resources/dialog-warning_16.png"/>) вŃе еще загрŃжаютŃŃŹ в Skyrim, но <a href="http://forums.bethsoft.com/topic/1354395-update-bsas-and-you/"><span style=" text-decoration: underline; color:#0000ff;">применяетŃŃŹ обычный</span></a> механизм: Отдельные файлы перезапиŃывают BSAs, вне завиŃимоŃти от приоритета мода/плагина.</p></body></html> - + Data Данные - + refresh data-directory overview обновить обзор каталога Data - + Refresh the overview. This may take a moment. Обновление обзора. Это может занять некоторое время. - - - + + + Refresh Обновить - + This is an overview of your data directory as visible to the game (and tools). Это обзор ваŃего каталога данных так, как он бŃдет видим игре (и инŃтрŃментам). - - + + Filter the above list so that only conflicts are displayed. Отфильтровать выŃеприведенный ŃпиŃок так, чтобы отображалиŃŃŚ только конфликты. - + Show only conflicts Показать только конфликты - + Saves Сохранения - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1398,160 +1495,160 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Đ•Ńли вы выберете в контекŃтном меню ĐżŃнкт &quot;ĐŃправить моды...&quot;, MO попытаетŃŃŹ подключить вŃе моды и esp, чтобы иŃправить эти отŃŃŃ‚ŃтвŃющие esp. Это ничего не отключит!</span></p></body></html> - + Downloads ЗагрŃзки - + This is a list of mods you downloaded from Nexus. Double click one to install it. СпиŃок модов, загрŃженных Ń Nexus. Двойной клик для ŃŃтановки. - + Compact Упаковать - + Show Hidden - + Tool Bar Панель инŃтрŃментов - + Install Mod ĐŁŃтановить мод - + Install &Mod ĐŁŃтановить &мод - + Install a new mod from an archive ĐŁŃтановить новый мод из архива - + Ctrl+M Ctrl+M - + Profiles Профили - + &Profiles &Профили - + Configure Profiles НаŃтройка профилей - + Ctrl+P Ctrl+P - + Executables Программы - + &Executables &Программы - + Configure the executables that can be started through Mod Organizer НаŃтройка программ, которые могŃŃ‚ быть запŃщены через Mod Organizer - + Ctrl+E Ctrl+E - - + + Tools ĐĐ˝ŃтрŃменты - + &Tools &ĐĐ˝ŃтрŃменты - + Ctrl+I Ctrl+I - + Settings НаŃтройки - + &Settings &НаŃтройки - + Configure settings and workarounds НаŃтройка параметров и ŃпоŃобов обхода - + Ctrl+S Ctrl+S - + Nexus Nexus - + Search nexus network for more mods ПоиŃĐş дополнительных модов на Nexus - + Ctrl+N Ctrl+N - - + + Update Обновление - + Mod Organizer is up-to-date Mod Organizer обновлен - - + + No Problems Проблем не обнарŃжено - + This button will be highlighted if MO discovered potential problems in your setup and provide tips on how to fix them. !Work in progress! @@ -1562,256 +1659,260 @@ Right now this has very limited functionality Прямо ŃĐµĐąŃ‡Đ°Ń ŃŤŃ‚ĐľŃ‚ Ń„Ńнкционал Ńильно ограничен - - + + Help Справка - + Ctrl+H Ctrl+H - + Endorse MO Одобрить MO - - + + Endorse Mod Organizer Одобрить Mod Organizer - + Toolbar Панель инŃтрŃментов - + Desktop Рабочий Ńтол - + Start Menu Меню ĐźŃŃĐş - + Problems Проблемы - + There are potential problems with your setup Đ•Ńть возможные проблемы Ń Đ˛Đ°Ńей ŃŃтановкой - + Everything seems to be in order КажетŃŃŹ вŃŃ‘ в порядке - + Help on UI Справка по интерфейŃŃ - + Documentation Wiki Wiki-докŃментация - + Report Issue Сообщить Đľ проблеме - + Tutorials Уроки - + + About + + + + + About Qt + + + + failed to save archives order, do you have write access to "%1"? не ŃдалоŃŃŚ Ńохранить порядок архивов, Ń Đ˛Đ°Ń Đ¸ĐĽĐµĐµŃ‚ŃŃŹ Đ´ĐľŃŃ‚ŃĐż на запиŃŃŚ Đş "%1"? - + failed to save load order: %1 не ŃдалоŃŃŚ Ńохранить порядок загрŃзки: %1 - + Name ĐĐĽŃŹ - + Please enter a name for the new profile Введите имя нового профиля - + failed to create profile: %1 не ŃдалоŃŃŚ Ńоздать профиль: %1 - + Show tutorial? Показать Ńрок? - + You are starting Mod Organizer for the first time. Do you want to show a tutorial of its basic features? If you choose no you can always start the tutorial from the "Help"-menu. Đ’Ń‹ запŃŃтили Mod Organizer впервые. Đ’Ń‹ хотите проŃмотреть Ńроки по ĐľŃновным возможноŃтям? Đ’ ŃĐ»Ńчае отказа вы вŃегда можете открыть Ńроки из меню "Помощь". - + Downloads in progress ЗагрŃзки в процеŃŃе - + There are still downloads in progress, do you really want to quit? ЗагрŃзки вŃŃ‘ ещё в процеŃŃе, вы правда хотите выйти? - + failed to read savegame: %1 не ŃдалоŃŃŚ прочеŃть Ńохранение: %1 - + Plugin "%1" failed: %2 Плагин "%1" не ŃдалоŃŃŚ: %2 - + Plugin "%1" failed Плагин "%1" не ŃдалоŃŃŚ - + failed to init plugin %1: %2 не ŃдалоŃŃŚ инициализировать плагин %1: %2 - + Plugin error - + It appears the plugin "%1" failed to load last startup and caused MO to crash. Do you want to disable it? (Please note: If this is the first time you see this message for this plugin you may want to give it another try. The plugin may be able to recover from the problem) - + Failed to start "%1" Не ŃдалоŃŃŚ запŃŃтить "%1" - + Waiting Ожидание - + Please press OK once you're logged into steam. Нажмите OK как только вы войдете в Steam. - "%1" not found - "%1" не найден + "%1" не найден - + Start Steam? ЗапŃŃтить Steam? - + Steam is required to be running already to correctly start the game. Should MO try to start steam now? ТребŃетŃŃŹ запŃщенный Steam, для корректного запŃŃка игры. Должен ли MO попытатьŃŃŹ запŃŃтить Steam ŃейчаŃ? - + Also in: <br> Также в: <br> - + No conflict Конфликтов нет - + <Edit...> <Правка...> - - Failed to refresh list of esps: %s - - - - + This bsa is enabled in the ini file so it may be required! Этот bsa подключен через ini, так что он может быть необходим! - + This archive will still be loaded since there is a plugin of the same name but its files will not follow installation order! Этот архив вŃе равно бŃдет загрŃжен, так как еŃть плагин Ń ĐľĐ´Đ˝ĐľĐ¸ĐĽĐµĐ˝Đ˝Ń‹ĐĽ названием, но его файлы не бŃĐ´ŃŃ‚ Ńледовать ĐżĐľŃ€ŃŹĐ´ĐşŃ ŃŃтановки! - + Activating Network Proxy Подключение Ńетевого прокŃи - - + + Installation successful ĐŁŃтановка заверŃена - - + + Configure Mod НаŃтройка мода - - + + This mod contains ini tweaks. Do you want to configure them now? Этот мод включает наŃтройки ini. Đ’Ń‹ хотите наŃтроить их ŃейчаŃ? - - + + mod "%1" not found мод "%1" не найден - - + + Installation cancelled ĐŁŃтановка отменена - - + + The mod was not installed completely. Мод не был ŃŃтановлен полноŃтью. - + Some plugins could not be loaded Некоторые плагины не могŃŃ‚ быть загрŃжены @@ -1820,207 +1921,203 @@ Right now this has very limited functionality СледŃющие плагины не могŃŃ‚ быть загрŃжены. Причина может быть в отŃŃŃ‚ŃтвŃющих завиŃимоŃтях (таких как python) или в ŃŃтаревŃей верŃии:<ul> - + Too many esps and esms enabled - - + + Description missing - + The following plugins could not be loaded. The reason may be missing dependencies (i.e. python) or an outdated version: - + Choose Mod Выберете мод - + Mod Archive Đрхив мода - + Start Tutorial? Начать обŃчение? - + You're about to start a tutorial. For technical reasons it's not possible to end the tutorial early. Continue? Đ’Ń‹ ŃобираетеŃŃŚ открыть обŃчение. По техничеŃким причинам бŃдет невозможно Đ´ĐľŃрочно закончить обŃчение. Продолжить? - - + + Download started ЗагрŃзка начата - + failed to update mod list: %1 не ŃдалоŃŃŚ обновить ŃпиŃок модов: %1 - + failed to spawn notepad.exe: %1 не ŃдалоŃŃŚ вызвать notepad.exe: %1 - + failed to open %1 не ŃдалоŃŃŚ открыть %1 - + failed to change origin name: %1 не ŃдалоŃŃŚ изменить оригинальное имя: %1 - - Failed to move "%1" from mod "%2" to "%3": %4 - - - - + <Checked> <Подключен> - + <Unchecked> <Отключен> - + <Update> <Обновлен> - + <No category> <Без категории> - + <Conflicted> <КонфликтŃет> - + <Not Endorsed> - + failed to rename mod: %1 не ŃдалоŃŃŚ переименовать мод: %1 - + Overwrite? ПерезапиŃать? - + This will replace the existing mod "%1". Continue? Это заменит ŃŃщеŃтвŃющий мод "%1". Продолжить? - + failed to remove mod "%1" не ŃдалоŃŃŚ Ńдалить мод "%1" - - - + + + failed to rename "%1" to "%2" не ŃдалоŃŃŚ переименовать "%1" в "%2" - + Multiple esps activated, please check that they don't conflict. Подключено неŃколько esp, выберете из них не конфликтŃющие. - - - + + + + Confirm Подтверждение - + Remove the following mods?<br><ul>%1</ul> Удалить ŃледŃющие моды?<br><ul>%1</ul> - + failed to remove mod: %1 не ŃдалоŃŃŚ Ńдалить мод: %1 - - + + Failed НеŃдача - + Installation file no longer exists ĐŁŃтановочный файл больŃе не ŃŃщеŃтвŃет - + Mods installed with old versions of MO can't be reinstalled in this way. Моды, ŃŃтановленные Ń Đ¸Ńпользованием Ńтарых верŃий MO не могŃŃ‚ быть переŃтановленны таким образом. - - + + You need to be logged in with Nexus to endorse Đ’Ń‹ должны быть авторизированы на Nexus, чтобы одобрять. - - + + Extract BSA Đзвлечь BSA - + This mod contains at least one BSA. Do you want to unpack it? (This removes the BSA after completion. If you don't know about BSAs, just select no) Этот мод включает как минимŃĐĽ один BSA. Đ’Ń‹ хотите раŃпаковать их? (Это Ńдалит BSA поŃле заверŃения. Đ•Ńли вы не знаете ничего Đľ BSAs, проŃто откажитеŃŃŚ) - - - + + + failed to read %1: %2 не ŃдалоŃŃŚ прочеŃть %1: %2 - - + + This archive contains invalid hashes. Some files may be broken. Đрхив Ńодержит неверные хеŃи. Некоторые файлы могŃŃ‚ быть иŃпорчены. - + Nexus ID for this Mod is unknown Nexus ID для этого мода неизвеŃтен - - + + Create Mod... Создать мод... @@ -2031,118 +2128,119 @@ Please enter a name: ПожалŃĐąŃта, введите имя: - + A mod with this name already exists Мод Ń Ń‚Đ°ĐşĐ¸ĐĽ именем Ńже ŃŃщеŃтвŃет - + Continue? - + The versioning scheme decides which version is considered newer than another. This function will guess the versioning scheme under the assumption that the installed version is outdated. - + + Sorry - + I don't know a versioning scheme where %1 is newer than %2. - + Really enable all visible mods? ДейŃтвительно подключить вŃе видимые моды? - + Really disable all visible mods? ДейŃтвительно отключить вŃе видимые моды? - + Choose what to export Выберете, что ŃŤĐşŃпортировать - + Everything Đ’ŃŃ‘ - + All installed mods are included in the list Đ’Ńе ŃŃтановленные моды, включенные в ŃпиŃок - + Active Mods Đктивные моды - + Only active (checked) mods from your current profile are included Включены вŃе активные (подключенные) моды ваŃего текŃщего профиля - + Visible Видимые - + All mods visible in the mod list are included Включены вŃе моды, видимые в ŃпиŃке модов - + export failed: %1 ŃŤĐşŃпорт не ŃдалŃŃŹ: %1 - + Install Mod... ĐŁŃтановить мод... - + Enable all visible Включить вŃе видимые - + Disable all visible Отключить вŃе видимые - + Check all for update Проверить вŃе на обновления - + Export to csv... Đ­ĐşŃпорт в csv... - + Sync to Mods... Синхронизировать Ń ĐĽĐľĐ´Đ°ĐĽĐ¸... - + Restore Backup Đ’ĐľŃŃтановить из резервной копии - + Remove Backup... Удалить резервнŃŃŽ копию... @@ -2151,325 +2249,375 @@ This function will guess the versioning scheme under the assumption that the ins Задать категорию - + + Executable "%1" not found + + + + + Failed to refresh list of esps: %1 + + + + The game doesn't allow more than 255 active plugins (including the official ones) to be loaded. You have to disable some unused plugins or merge some plugins into one. You can find a guide here: <a href="http://wiki.step-project.com/Guide:Merging_Plugins">http://wiki.step-project.com/Guide:Merging_Plugins</a> - + This will move all files from overwrite into a new, regular mod. Please enter a name: - + Add/Remove Categories - + Replace Categories - + Primary Category ĐžŃновная категория - + Change versioning scheme - + Un-ignore update - + Ignore update - + Rename Mod... Переименовать мод... - + Remove Mod... Удалить мод... - + Reinstall Mod ПереŃŃтановить мод - + Un-Endorse Отменить одобрение - - + + Endorse Одобрить - + Won't endorse Не одобрять - + Endorsement state unknown СтатŃŃ ĐľĐ´ĐľĐ±Ń€ĐµĐ˝Đ¸ŃŹ неизвеŃтен - + Ignore missing data Đгнорировать отŃŃŃ‚ŃтвŃющие данные - + Visit on Nexus Перейти на Nexus - + Open in explorer Открыть в проводнике - + Information... Đнформация... - - + + Exception: ĐŃключение: - - + + Unknown exception НеизвеŃтное иŃключение - + <All> <Đ’Ńе> - + <Multiple> <НеŃколько> - + + Really delete "%1"? + + + + Fix Mods... ĐŃправить моды... - - + + Delete + Удалить + + + + failed to remove %1 не ŃдалоŃŃŚ Ńдалить %1 - - + + failed to create %1 не ŃдалоŃŃŚ Ńоздать %1 - + Can't change download directory while downloads are in progress! Нельзя изменить каталог для загрŃзок, когда загрŃзки ещё не заверŃены! - + Download failed ЗагрŃзка не ŃдалаŃŃŚ - + failed to write to file %1 ĐľŃибка запиŃи в файл %1 - + %1 written %1 запиŃан - + Select binary Выбрать иŃполняемый файл - + Binary ĐŃполняемый файл - + Enter Name Введите имя - + Please enter a name for the executable Введите название для программы - + Not an executable Не являетŃŃŹ иŃполняемым - + This is not a recognized executable. Это неверный иŃполняемый файл. - - + + Replace file? Заменить файл? - + There already is a hidden version of this file. Replace it? Уже ŃŃщеŃтвŃет Ńкрытая верŃия этого файла. Заменить? - - + + File operation failed Операция Ń Ń„Đ°ĐąĐ»ĐľĐĽ не ŃдалаŃŃŚ - - + + Failed to remove "%1". Maybe you lack the required file permissions? Не ŃдалоŃŃŚ Ńдалить "%1". Может быть, вам не хватает необходимых прав Đ´ĐľŃŃ‚Ńпа Đş файлŃ? - + There already is a visible version of this file. Replace it? Видимая верŃия этого файла Ńже ŃŃщеŃтвŃет. Заменить? - + + file not found: %1 + + + + + failed to generate preview for %1 + + + + + Sorry, can't preview anything. This function currently does not support extracting from bsas. + + + + Update available ДоŃŃ‚Ńпно обновление - + Open/Execute Открыть/Выполнить - + Add as Executable Добавить как иŃполняемый - + + Preview + + + + Un-Hide Показать - + Hide Скрыть - + Write To File... ЗапиŃать в файл... - + Do you want to endorse Mod Organizer on %1 now? Đ’Ń‹ хотите одобрить Mod Organizer на %1 ŃейчаŃ? - + Request to Nexus failed: %1 Đ—Đ°ĐżŃ€ĐľŃ Đ˝Đ° Nexus не ŃдалŃŃŹ: %1 - - + + login successful ŃŃпеŃный вход - + login failed: %1. Trying to download anyway вход не ŃдалŃŃŹ: %1. ПытаюŃŃŚ загрŃзить вŃŃ‘ равно - + login failed: %1 войти не ŃдалоŃŃŚ: %1 - + login failed: %1. You need to log-in with Nexus to update MO. войти не ŃдалоŃŃŚ: %1. Вам Đ˝Ńжно войти на Nexus, чтобы обновить MO. - + Error ĐžŃибка - + failed to extract %1 (errorcode %2) не ŃдалоŃŃŚ извлечь %1 (код ĐľŃибки %2) - + Extract... РаŃпаковка... - + Edit Categories... Đзменить категории... - + Remove - + Enable all Включить вŃе - + Disable all Отключить вŃе - + Unlock load order Разблокировать порядок загрŃзки - + Lock load order Заблокировать порядок загрŃзки + + + BOSS working + + + + + failed to run boss: %1 + + MessageDialog @@ -2505,58 +2653,58 @@ Please enter a name: Đнформация Đľ моде - + Textfiles ТекŃтовые файлы - + A list of text-files in the mod directory. СпиŃок текŃтовых файлов в каталоге мода. - + A list of text-files in the mod directory like readmes. СпиŃок текŃтовых файлов в каталоге мода, таких как ридми. - - + + Save Сохранить - + INI-Files INI - файлы - + This is a list of .ini files in the mod. Это ŃпиŃок .ini-файлов мода. - + This is a list of .ini files in the mod. These are usually used to configure the behaviour of mods if there are configurable parameters. Это ŃпиŃок INI - файлов мода. Они иŃпользŃŃŽŃ‚ŃŃŹ для кофигŃрации поведения модов, еŃли это возможно. - + Save changes to the file. Сохранить изменения в файле. - + Save changes to the file. This overwrites the original. There is no automatic backup! Сохранить изменения в файле. Это перезапиŃет ранее Ńозданный. Перед перезапиŃŃŚŃŽ файла Ńделайте копию. - + Images Đзображение - + Images located in the mod. Đзображения мода. @@ -2573,13 +2721,13 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Это ŃпиŃок вŃех изображений (.jpg и .png) в каталоге мода, таких как ŃкринŃоты и Ń‚.Đż. Нажмите на любое, для Ńвеличения.</span></p></body></html> - - + + Optional ESPs Дополнительный ESP - + List of esps and esms that can not be loaded by the game. СпиŃок esp и esm, которые не могŃŃ‚ быть загрŃжены игрой. @@ -2602,12 +2750,12 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">БольŃинŃтво модов не Ńодержат дополнительных esp, ĐżĐľŃŤŃ‚ĐľĐĽŃ Đ˛Ń‹ можете Ńвидеть ĐżŃŃтой ŃпиŃок</span></p></body></html> - + This lists all the images (.jpg and .png) in the mod directory, like screenshots and such. Click one to get a larger view. - + List of esps and esms contained in this plugin that currently can not be loaded by the game. They will not even appear in the esp-list in the main MO-window. They usually contain optional functionality, see the readme. @@ -2615,103 +2763,103 @@ Most mods do not have optional esps, so chances are good you are looking at an e - + Make the selected mod in the lower list unavailable. Сделать выбранный мод недоŃŃ‚Ńпным. - + The selected esp (in the lower list) will be pushed into a subdirectory of the mod and will thus become "invisible" to the game. It can then no longer be activated. Выбранный ESP (в нижнем ŃпиŃке) бŃдет перемещены в подкаталог мода и, таким образом, ŃтанŃŃ‚ "невидимыми" для игры. Затем они больŃе не бŃĐ´ŃŃ‚ активированы. - + Move a file to the data directory. ПеремеŃтить файл в каталог Data. - + This moves a esp to the esp directory so it can be enabled in the main window. Please note that the ESP merely becomes "available", it will not necessarily be loaded! That is configured in the main window of omo. Перемещает esp в каталог Ń Đ´Ń€Ńгими esp так, что он может быть подключен в главном окне. Обратите внимание, что ESP проŃто ŃтановитŃŃŹ "Đ´ĐľŃŃ‚Ńпным", но не бŃдет загрŃжен! Это наŃтраиваетŃŃŹ в главном окне MO. - + ESPs in the data directory and thus visible to the game. ESP в каталоге Data и виден для игры. - + These are the mod files that are in the (virtual) data directory of your game and will thus be selecteable in the esp list in the main window. Это файлы модов которые находятŃŃŹ в (виртŃальном)каталоге данных ваŃей игры и могŃŃ‚ быть выбираемыми в ŃпиŃке esp, в главном окне. - + Available ESPs ДоŃŃ‚Ńпные ESP - + Conflicts Конфликты - + The following conflicted files are provided by this mod Данные конфликты вызваны этим модом. - - + + File Файл - + Overwritten Mods Моды перезапиŃаны - + The following conflicted files are provided by other mods Конфликтные файлы Đ´Ń€Ńгих модов. - + Providing Mod ОбеŃпечение мода - + Non-Conflicted files Не конфликтные файлы - + Categories Категории - + Primary Category ĐžŃновная категория - + Nexus Info Đнформация Nexus. - + Mod ID ID мода - + Mod ID for this mod on Nexus. ID мода на Nexus. - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -2724,7 +2872,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">ID этого мода на Nexus. ЗаполняетŃŃŹ автоматичеŃки, еŃли Ńкачали и ŃŃтановили мод из МО. Đ’ противном ŃĐ»Ńчае вы можете ввеŃти его врŃчнŃŃŽ. Чтобы найти правильный ID, Đ˝Ńжно найти мод на Nexus. URL бŃдет выглядеть ŃледŃющим образом: </span><a href=" http://www.skyrimnexus.com/downloads/file.php?id=1334"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://skyrim.nexusmods.com/downloads/file.php?id=1334</span></a><a href="http://www.skyrimnexus.com/downloads/file.php?id=1334"><span style=" font-size:8pt; color:#000000;">. Đ’ этом примере, 1334 - ID, который вы ищете. Кроме того: Đ’Ń‹Ńе еŃть ŃŃылка на Mod Organizer на Nexus. ĐźĐľŃ‡ĐµĐĽŃ Đ±Ń‹ не перейти по ней и не одобрить?</span></a></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -2737,33 +2885,41 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">ĐŁŃтановленная верŃия мода. ПодŃказка бŃдет Ńодержать текŃщŃŃŽ верŃию, Đ´ĐľŃŃ‚ŃпнŃŃŽ на Nexus. ĐŁŃтановленная верŃия ŃŃтановитŃŃŹ только еŃли вы ŃŃтановили мод через МО.</span></p></body></html> - + Version ВерŃия - + Refresh Обновить информацию - + Refresh all information from Nexus. Обновить вŃŃŽ информацию Ń Nexus - + Description ОпиŃание - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"><br /></p></body></html> + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:7.8pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:7.8pt; font-weight:400; font-style:normal;"> @@ -2784,27 +2940,27 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"><br /></p></body></html> - + Endorse Одобрить - + Notes Примечания - + Filetree Файловое древо - + A directory view of this mod Каталог этого мода - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -2819,242 +2975,242 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Đзменения проиŃходят непоŃредŃтвенно на диŃке, так что</span><span style=" font-size:8pt; font-weight:600;"> бŃдьте ĐľŃторожныl</span><span style=" font-size:8pt;">.</span></p></body></html> - + Previous ПредыдŃщий - + Next Вперед - + Close Закрыть - + &Delete &Удалить - + &Rename &Переименовать - + &Hide &Скрыть - + &Unhide &Показать - + &Open &Открыть - + &New Folder &Новая папка - - + + Save changes? Сохранить изменения? - - + + Save changes to "%1"? Сохранить изменения в "%1"? - + File Exists Файл Ńже ŃŃщеŃтвŃет - + A file with that name exists, please enter a new one Файл Ń Ń‚Đ°ĐşĐ¸ĐĽ именем Ńже ŃŃщеŃтвŃет, Ńкажите Đ´Ń€Ńгое - + failed to move file не ŃдалоŃŃŚ перемеŃтить файл - + failed to create directory "optional" не ŃдалоŃŃŚ Ńоздать ĐżĐ°ĐżĐşŃ "optional" - - + + Info requested, please wait Đнформация запроŃена, пожалŃĐąŃта, подождите - + Main Главное - + Update Обновление - + Optional Опционально - + Old Старые - + Misc Разное - + Unknown НеизвеŃтно - + Current Version: %1 ТекŃщая верŃия: %1 - + No update available Нет Đ´ĐľŃŃ‚Ńпных обновлений - + (description incomplete, please visit nexus) (опиŃание не заверŃено, Ńмотрите на nexus) - + <a href="%1">Visit on Nexus</a> <a href="%1">Перейти на Nexus</a> - + Failed to delete %1 Не ŃдалоŃŃŚ Ńдалить %1 - - + + Confirm Подтверждение - + Are sure you want to delete "%1"? Đ’Ń‹ Ńверены, что хотите Ńдалить "%1"? - + Are sure you want to delete the selected files? Đ’Ń‹ Ńверены, что хотите Ńдалить выбранные файлы? - - + + New Folder Новая папка - + Failed to create "%1" Не ŃдалоŃŃŚ Ńоздать "%1" - - + + Replace file? Заменить файл? - + There already is a hidden version of this file. Replace it? Скрытая верŃия этого файла Ńже ŃŃщеŃтвŃет. Заменить? - - + + File operation failed Не ŃдалаŃŃŚ операция Ń Ń„Đ°ĐąĐ»ĐľĐĽ - - + + Failed to remove "%1". Maybe you lack the required file permissions? Не ŃдалоŃŃŚ Ńдалить "%1". Может быть, вам не хватает необходимых прав Đ´ĐľŃŃ‚Ńпа Đş файлŃ? - - + + failed to rename %1 to %2 не ŃдалоŃŃŚ переименовать %1 в %2 - + There already is a visible version of this file. Replace it? Видимая верŃия этого файла Ńже ŃŃщеŃтвŃет. Заменить? - + Un-Hide Показать - + Hide Скрыть - + Name ĐĐĽŃŹ - + Please enter a name - - + + Error ĐžŃибка - + Invalid name. Must be a valid file name - + A tweak by that name exists - + Create Tweak @@ -3142,8 +3298,9 @@ p, li { white-space: pre-wrap; } - installed version: %1, newest version: %2 - ŃŃтановленная верŃия: %1, новейŃая верŃия: %2 + installed version: "%1", newest version: "%2" + installed version: %1, newest version: %2 + ŃŃтановленная верŃия: %1, новейŃая верŃия: %2 @@ -3299,17 +3456,17 @@ p, li { white-space: pre-wrap; } NexusInterface - + Failed to guess mod id for "%1", please pick the correct one Не ŃдалоŃŃŚ опознать id мода "%1", пожалŃĐąŃта, выберете правильный - + empty response ĐżŃŃтой ответ - + invalid response неверный ответ @@ -3382,109 +3539,130 @@ p, li { white-space: pre-wrap; } PluginList - + Name ĐĐĽŃŹ - + Priority Приоритет - + Mod Index ĐĐ˝Đ´ĐµĐşŃ ĐĽĐľĐ´Đ° - - + + Flags + Флаги + + + + unknown неизвеŃтно - + Name of your mods Đмена ваŃих модов - + Load priority of your mod. The higher, the more "important" it is and thus overwrites data from plugins with lower priority. Приоритет загрŃзки ваŃих модов. Моды Ń Đ±ĐľĐ»ŃŚŃим приоритетом перезапиŃŃŃ‚ данные модов Ń ĐĽĐµĐ˝ŃŚŃим приоритетом. - + The modindex determins the formids of objects originating from this mods. ĐĐ˝Đ´ĐµĐşŃ ĐĽĐľĐ´Đ° определяющий id форм объектов, проиŃходящих из этих модов. - + failed to update esp info for file %1 (source id: %2), error: %3 - + esp not found: %1 esp не найден: %1 - + Confirm - + Really enable all plugins? - + Really disable all plugins? - + The file containing locked plugin indices is broken Файл, Ńодержащий индекŃŃ‹ заблокированного плагина, не работает. - - failed to open output file: %1 - не ŃдалоŃŃŚ открыть выходной файл: %1 + не ŃдалоŃŃŚ открыть выходной файл: %1 - + Some of your plugins have invalid names! These plugins can not be loaded by the game. Please see mo_interface.log for a list of affected plugins and rename them. Некоторые из ваŃих плагинов имеют неверные имена. Эти плагины не могŃŃ‚ быть загрŃжены игрой. Смотрите mo_interface.log для полŃчения ŃпиŃка таких плагинов и переименŃйте их. - + + BOSS dll incompatible + + + + This plugin can't be disabled (enforced by the game) Этот плагин не может быть отключен (грŃзитŃŃŹ игрой принŃдительно) - + Origin: %1 ĐŃточник: %1 - + Missing Masters - + Enabled Masters - + failed to restore load order for %1 не ŃдалоŃŃŚ воŃŃтановить порядок загрŃзки для %1 + + PreviewDialog + + + Preview + + + + + Close + Закрыть + + ProblemsDialog @@ -3534,82 +3712,76 @@ p, li { white-space: pre-wrap; } Profile - + invalid profile name %1 неверное имя профиля %1 - + failed to create %1 не ŃдалоŃŃŚ Ńоздать %1 - - failed to open temporary file - - - - failed to open "%1" for writing - не ŃдалоŃŃŚ открыть "%1" для запиŃи + не ŃдалоŃŃŚ открыть "%1" для запиŃи - + failed to write mod list: %1 - + failed to update tweaked ini file, wrong settings may be used: %1 не ŃдалоŃŃŚ обновить наŃтроенный ini-файл, вероятно иŃпользŃŃŽŃ‚ŃŃŹ ĐľŃибочные наŃтройки: %1 - + failed to create tweaked ini: %1 не ŃдалоŃŃŚ Ńоздать наŃтроенный ini: %1 - - - - - + + + + + invalid index %1 неверный Đ¸Đ˝Đ´ĐµĐşŃ %1 - + Overwrite directory couldn't be parsed Замена каталога не может быть обработана - + invalid priority %1 неверный приоритет %1 - + failed to parse ini file (%1) не ŃдалоŃŃŚ обработать ini файл (%1) - + failed to parse ini file (%1): %2 не ŃдалоŃŃŚ обработать ini файл (%1): %2 - - + + failed to modify "%1" не ŃдалоŃŃŚ изменить "%1" - + Delete savegames? Удалить Ńохранения? - + Do you want to delete local savegames? (If you select "No", the save games will show up again if you re-enable local savegames) Đ’Ń‹ хотите Ńдалить локальные Ńохранения? (При отрицательном выборе Ńохранения отобразятŃŃŹ Ńнова, еŃли повторно включить локальные Ńохранения) @@ -3997,7 +4169,7 @@ p, li { white-space: pre-wrap; } Не ŃдалоŃŃŚ ŃŃтановить загрŃĐ·ĐşŃ proxy-dll - + Permissions required ТребŃŃŽŃ‚ŃŃŹ права Đ´ĐľŃŃ‚Ńпа @@ -4006,72 +4178,72 @@ p, li { white-space: pre-wrap; } ТекŃщий аккаŃнт пользователя не имеет необходимых прав для запŃŃка Mod Organizer. Необходимые изменения могŃŃ‚ быть Ńделаны автоматичеŃки (каталог MO бŃдет ŃŃтановлен запиŃываемым для текŃщего аккаŃнта пользователя). Вам бŃдет предложено запŃŃтить "helper.exe" Ń ĐżŃ€Đ°Đ˛Đ°ĐĽĐ¸ админиŃтратора. - + The current user account doesn't have the required access rights to run Mod Organizer. The neccessary changes can be made automatically (the MO directory will be made writable for the current user account). You will be asked to run "helper.exe" with administrative rights. - - + + Woops ĐŁĐżŃ - + ModOrganizer has crashed! Should a diagnostic file be created? If you send me this file (%1) to sherb@gmx.net, the bug is a lot more likely to be fixed. Please include a short description of what you were doing when the crash happened Mod Organizer выŃел из Ńтроя! ĐťŃжно ли Ńоздать диагноŃтичеŃкий файл? Đ•Ńли вы выŃлите файл (%1) по адреŃŃ sherb@gmx.net, ĐľŃибка Ń Đ˝Đ°ĐĽĐ˝ĐľĐłĐľ больŃей вероятноŃтью бŃдет иŃправлена. ПожалŃĐąŃта, добавьте краткое опиŃание Ńвоих дейŃтвий, перед тем, как произоŃла ĐľŃибка - + ModOrganizer has crashed! Unfortunately I was not able to write a diagnostic file: %1 ModOrganizer выŃел из Ńтроя! Đš Ńожалению не ŃдалоŃŃŚ запиŃать диагноŃтичеŃкий файл: %1 - - + + Mod Organizer Mod Organizer - + An instance of Mod Organizer is already running ДрŃгой экземпляр Mod Organizer Ńже запŃщен - + No game identified in "%1". The directory is required to contain the game binary and its launcher. Đгра не обнарŃжена в "%1". ТребŃетŃŃŹ, чтобы папка Ńодержала иŃполняемые файлы игры. - - + + Please select the game to manage Выберете Đ¸ĐłŃ€Ń Đ´Đ»ŃŹ Ńправления - + Please select the game edition you have (MO can't start the game correctly if this is set incorrectly!) - + Please use "Help" from the toolbar to get usage instructions to all elements ĐŃпользŃйте ĐżŃнкт "Справка" на панели инŃтрŃментов, чтобы полŃчить инŃтрŃкции по иŃпользованию вŃех элементов. - - + + <Manage...> <Управлять...> - + failed to parse profile %1: %2 не ŃдалоŃŃŚ обработать профиль %1: %2 - - + + failed to find "%1" не ŃдалоŃŃŚ найти "%1" @@ -4080,22 +4252,22 @@ p, li { white-space: pre-wrap; } ĐľŃибка кодирования, пожалŃĐąŃта Ńообщите об этом баге, включив файл mo_interface.log! - + failed to access %1 не ŃдалоŃŃŚ полŃчить Đ´ĐľŃŃ‚ŃĐż Đş %1 - + failed to set file time %1 не ŃдалоŃŃŚ изменить Đ´Đ°Ń‚Ń ĐĽĐľĐ´Đ¸Ń„Đ¸ĐşĐ°Ń†Đ¸Đ¸ для %1 - + failed to create %1 не ŃдалоŃŃŚ Ńоздать %1 - + "%1" is missing "%1" отŃŃŃ‚ŃтвŃет @@ -4123,12 +4295,12 @@ p, li { white-space: pre-wrap; } не ŃдалоŃŃŚ открыть %1 - + Script Extender Script Extender - + Proxy DLL Proxy DLL @@ -4158,25 +4330,30 @@ Start elevated anyway? (you will be asked if you want to allow ModOrganizer.exe ЗапŃŃтить Ń ĐżĐľĐ˛Ń‹Ńенными правами в любом ŃĐ»Ńчае? (бŃдет выведен Đ·Đ°ĐżŃ€ĐľŃ Đľ разреŃении ModOrganizer.exe Ńделать изменения в ŃиŃтеме) - + failed to spawn "%1": %2 не ŃдалоŃŃŚ вызвать "%1": %2 - + "%1" doesn't exist "%1" не ŃŃщеŃтвŃет - + failed to inject dll into "%1": %2 не ŃдалоŃŃŚ подключить dll Đş "%1": %2 - + failed to run "%1" не ŃдалоŃŃŚ запŃŃтить "%1" + + + failed to open temporary file + + QueryOverwriteDialog @@ -4407,18 +4584,18 @@ Start elevated anyway? (you will be asked if you want to allow ModOrganizer.exe неверная наŃтройка "%1" запроŃена для плагина "%2" - - + + attempt to store setting for unknown plugin "%1" - + Confirm Подтверждение - + Changing the mod directory affects all your profiles! Mods not present (or named differently) in the new location will be disabled in all profiles. There is no way to undo this unless you backed up your profiles manually. Proceed? Đзменение каталога для модов отразитŃŃŹ на вŃех ваŃих профилях. Нельзя бŃдет отменить это, еŃли только вы не Ńохранили резервные копии ваŃих профилей врŃчнŃŃŽ. Продолжить? @@ -4602,107 +4779,116 @@ p, li { white-space: pre-wrap; } ĐвтоматичеŃкий вход на Nexus - + Username ĐĐĽŃŹ пользователя - + Password Пароль - + Disable automatic internet features Отключить автоматичеŃкие возможноŃти интернет - + Disable automatic internet features. This does not affect features that are explicitly invoked by the user (like checking mods for updates, endorsing, opening the web browser) Отключает автоматичеŃкие возможноŃти интернет. Это не подейŃтвŃет на Ń„Ńнкции, которые явно вызваны пользователем (проверка модов на обновления, одобрение, открытие в браŃзере) - + Offline Mode Đвтономный режим - + Use a proxy for network connections. ĐŃпользовать прокŃи для Ńоединения Ń Ńетью - + Use a proxy for network connections. This uses the system-wide settings which can be configured in Internet Explorer. Please note that MO will start up a few seconds slower on some systems when using a proxy. ĐŃпользовать прокŃи для Ńоединения Ń Ńетью. ĐŃпользŃŃŽŃ‚ŃŃŹ ŃиŃтемные параметры, наŃтраиваемые в Internet Explorer. Обратите внимание, что MO запŃŃтитŃŃŹ на неŃколько ŃекŃнд медленнее на некоторых ŃиŃтемах, когда иŃпользŃетŃŃŹ прокŃи. - + Use HTTP Proxy (Uses System Settings) ĐŃпользовать HTTP Proxy (ĐŃпользŃŃŽŃ‚ŃŃŹ ŃиŃтемные наŃтройки) - + + Associate with "Download with manager" links + + + + + Known Servers (updated on download) + + + Known Servers (Dynamically updated every download) - ĐзвеŃтные Ńерверы (ДинамичеŃки обновляетŃŃŹ при каждой загрŃзке) + ĐзвеŃтные Ńерверы (ДинамичеŃки обновляетŃŃŹ при каждой загрŃзке) - + Preferred Servers (Drag & Drop) Предпочитаемые Ńерверы (ĐŃпользŃйте перетаŃкивание) - + Plugins Плагины - + Author: Đвтор: - + Version: ВерŃия: - + Description: ОпиŃание: - + Key КлавиŃа - + Value Значение - + Blacklisted Plugins (use <del> to remove): - + Workarounds СпоŃобы обхода - + Steam App ID ID приложения Steam - + The Steam AppID for your game ID в Steam для ваŃей игры - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4729,17 +4915,17 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">22380 это и еŃть id, который вам Đ˝Ńжен.</span></p></body></html> - + Load Mechanism Механизм загрŃзки - + Select loading mechanism. See help for details. Выберете механизм загрŃзки. Смотрите ŃĐżŃ€Đ°Đ˛ĐşŃ Đ´Đ»ŃŹ подробноŃтей. - + Mod Organizer needs a dll to be injected into the game so all mods are visible to it. There are several means to do this: *Mod Organizer* (default) In this mode the Mod Organizer itself injects the dll. The disadvantage is that you always have to start the game through MO or a link created by it. @@ -4756,17 +4942,17 @@ If you use the Steam version of Oblivion the default will NOT work. In this case Đ•Ńли вы иŃпользŃете Steam-верŃию Oblivion , ŃпоŃоб по Ńмолчанию не работает. Đ’ этом ŃĐ»Ńчае ŃŃтановите obse и иŃпользŃйте "Script Extender" как механизм загрŃзки. Также поŃле этого вы не Ńможете запŃŃтить Oblivion из MO, вмеŃто этого иŃпользŃйте MO только для наŃтройки модов и запŃŃкайте Đ¸ĐłŃ€Ń Ń‡ĐµŃ€ĐµĐ· Steam. - + NMM Version ВерŃия NMM - + The Version of Nexus Mod Manager to impersonate. ВерŃия Nexus Mod Manager для предŃтавления. - + Mod Organizer uses an API provided by the Nexus to provide features like checking for updates and downloading files. Unfortunately this API has not been made available officially to third party tools like MO so we have to impersonate the Nexus Mod Manager to be allowed in. On top of this Nexus has used the client identification to lock out outdated versions of NMM to force users to update. This means that MO also needs to impersonate the new version of NMM even if MO doesn't need an update. Therefore you can configure the version to identify as here. Please note that MO does identify itself as MO to the webserver, it's not lying about what it is. It is merely adding a "compatible" NMM version to the user agent. @@ -4779,79 +4965,79 @@ tl;dr-version: If Nexus-features don't work, insert the current version num tl;dr-верŃия: Đ•Ńли возможноŃти Nexus не работают, вŃтавьте здеŃŃŚ текŃщŃŃŽ верŃию NMM и повторите попыткŃ. - + Enforces that inactive ESPs and ESMs are never loaded. ОбеŃпечивает то, что неактивные ESP и ESM не бŃĐ´ŃŃ‚ загрŃжены. - + It seems that the Games occasionally load ESP or ESM files even if they haven't been activated as plugins. I don't yet know what the circumstances are, but user reports imply it is in some cases unwanted. If this is checked, ESPs and ESMs not checked in the List are invisible to the game and can not be loaded. КажетŃŃŹ, что иногда игры загрŃжают ESP и ESM файлы, даже еŃли они не были не подключены как плагины ОбŃтоятельŃтва этого пока не извеŃтны, но отчеты пользователей подразŃмевают, что это в ряде ŃĐ»Ńчаев нежелательно. Đ•Ńли этот флажок отмечен, не отмеченные в ŃпиŃке ESP и ESM не бŃĐ´ŃŃ‚ видимы в ŃпиŃке и не бŃĐ´ŃŃ‚ загрŃжены. - + Hide inactive ESPs/ESMs Скрыть неактивные ESPs/ESMs - + If checked, files (i.e. esps, esms and bsas) belonging to the core game can not be disabled in the UI. (default: on) Đ•Ńли отмечено, файлы (Ń‚.е. esp, esm и bsa) принадлежащие ĐľŃновной игре не ŃмогŃŃ‚ быть отключены из интерфейŃа. (по Ńмолчанию: вкл) - + If checked, files (i.e. esps, esms and bsas) belonging to the core game can not be disabled in the UI. (default: on) Uncheck this if you want to use Mod Organizer with total conversions (like Nehrim) but be aware that the game will crash if required files are not enabled. Đ•Ńли отмечено, файлы (Ń‚.е. esp, esm и bsa) принадлежащие ĐľŃновной игре не ŃмогŃŃ‚ быть отключены из интерфейŃа. (по Ńмолчанию: вкл) Снимите флажок, еŃли вы ŃобираетеŃŃŚ иŃпользовать Mod Organizer Ń Ń‚ĐľŃ‚Đ°Đ»ŃŚĐ˝Ń‹ĐĽĐ¸ конверŃиями (как Nehrim) , но бŃдьте ĐľŃторожны, игра может вылететь, еŃли требŃемые файлы бŃĐ´ŃŃ‚ отключены. - + Force-enable game files ПринŃдительно подключить файлы игры - - + + For Skyrim, this can be used instead of Archive Invalidation. It should make AI redundant for all Profiles. For the other games this is not a sufficient replacement for AI! Для Скайрим это может быть иŃпользовано вмеŃто инвалидации. Это должно Ńделать AI избыточным для вŃех профилей. Для Đ´Ń€Ńгих игр недоŃтаточно замены для AI! - + Back-date BSAs Back-date BSAs - + These are workarounds for problems with Mod Organizer. Please make sure you read the help text before changing anything here. Это ŃпоŃобы обхода проблем Ń Mod Organizer. УбедитеŃŃŚ, что вы прочли ŃправкŃ, перед тем, как делать какие-либо изменения здеŃŃŚ. - + Select download directory Выберете каталог для загрŃзок - + Select mod directory Выберете каталог для модов - + Select cache directory Выберете каталог для кеŃа - + Confirm? Подтвердить? - + This will make all dialogs show up again where you checked the "Remember selection"-box. Continue? Это позволить Ńнова отобразить вŃе диалоги, для которых вы ранее выбрали флажок "Запомнить выбор". diff --git a/src/organizer_tr.ts b/src/organizer_tr.ts index 5d21e51e..58d30d00 100644 --- a/src/organizer_tr.ts +++ b/src/organizer_tr.ts @@ -1,6 +1,50 @@ + + AboutDialog + + + + About + + + + + Revision: + + + + + Used Software + + + + + Credits + + + + + Translators + + + + + Others + + + + + Close + Kapat + + + + No license + + + ActivateModsDialog @@ -240,26 +284,31 @@ p, li { white-space: pre-wrap; } DownloadList - + Name İsim - + Filetime Direct translation. What does this mean actually? Dosyazamanı - + Done Bitti - + Information missing, please select "Query Info" from the context menu to re-retrieve. Bilgi eksik, lĂĽtfen menĂĽden "Bilgi sorgula" yı seçiniz + + + pending download + + DownloadListWidget @@ -312,125 +361,135 @@ p, li { white-space: pre-wrap; } DownloadListWidgetCompactDelegate - + Installed YĂĽklendi - + Uninstalled - + Done Bitti - - - - + + + + Are you sure? Emin misiniz? - + This will remove all finished downloads from this list and from disk. Bu, tĂĽm bitmiĹź indirilenleri listeden ve diskten kaldıracaktır. - + This will remove all installed downloads from this list and from disk. Bu, tĂĽm yĂĽklenmiĹź indirilenleri listeden ve diskten kaldıracaktır. - + This will permanently remove all finished downloads from this list (but NOT from disk). - + This will permanently remove all installed downloads from this list (but NOT from disk). - + Install YĂĽkle - + Query Info Sorgu Bilgisi - + Delete - + Un-Hide - + Remove from View - + Remove Kaldır - + Cancel İptal et - + + < mod %1 file %2 > + + + + + Pending + + + + Paused - + Fetching Info 1 - + Fetching Info 2 - + Pause Duraklat - + Resume Devam et - + Delete Installed... - + Delete All... - + Remove Installed... YĂĽklenmiĹźleri kaldır... - + Remove All... Hepsini kaldır... @@ -438,68 +497,78 @@ p, li { white-space: pre-wrap; } DownloadListWidgetDelegate - - - - + + + + Are you sure? Emin misiniz? - + This will remove all finished downloads from this list and from disk. Bu, tĂĽm bitmiĹź indirilenleri listeden ve diskten kaldıracaktır. - + This will remove all installed downloads from this list and from disk. Bu, tĂĽm bitmiĹź yĂĽklenmiĹź listeden ve diskten kaldıracaktır. - + This will remove all finished downloads from this list (but NOT from disk). - + This will remove all installed downloads from this list (but NOT from disk). - + Install YĂĽkle - + Query Info Bilgi sorgula - + Delete - + Un-Hide - + Remove from View - + Remove Kaldır - + Cancel İptal et + + + < mod %1 file %2 > + + + + + Pending + + Fetching Info 1 @@ -511,32 +580,32 @@ p, li { white-space: pre-wrap; } - + Pause Duraklat - + Resume Devam et - + Delete Installed... - + Delete All... - + Remove Installed... YĂĽklenmiĹźleri kaldır - + Remove All... Hepsini kaldır... @@ -549,75 +618,76 @@ p, li { white-space: pre-wrap; } "%1"yi "%2" olarak yeniden adlandırma baĹźarılı olamadı. - + Download again? Tekrar indir? - + A file with the same name has already been downloaded. Do you want to download it again? The new file will receive a different name. Aynı dosya isminde bir dosya zaten indirilmiĹź. Tekrar indirmek istiyor musunuz? Yeni dosya farklı bir isim alacak. - + failed to download %1: could not open output file: %2 %1 indirilemedi : : çıkış dosyası %2 açılamadı - + Wrong Game - + The download link is for a mod for "%1" but this instance of MO has been set up for "%2". - - - - - - - - - - - - - - + + + + + + + + + + + + + + + invalid index geçersiz dizin - + failed to delete %1 %1 silinemedi - + failed to delete meta file for %1 %1'in meta dosyası silinemedi - - - - - - + + + + + + invalid index %1 geçeriz dizin %1 - + Please enter the nexus mod id LĂĽtfen nexus mod kimliÄźini girin - + Mod ID: Mod kimliÄźi: @@ -626,38 +696,43 @@ p, li { white-space: pre-wrap; } geçersiz alfabetik dizin %1 - + Information updated bilgi gĂĽncellendi - - + + No matching file found on Nexus! Maybe this file is no longer available or it was renamed? Nexus'ta uyan bir dosya bulunamadı! Dosya artık mevcut olmayabilir yada yeniden adlandırılmış olabilir! - + No file on Nexus matches the selected file by name. Please manually choose the correct one. Nexus'ta seçili dosyaya isim olarak uyan dosya bulunamadı. LĂĽtfen el ile doÄźru olanı seçin. - + No download server available. Please try again later. - + Failed to request file info from nexus: %1 Nexus'tan dosya bilgisi istenilemedi: %1 - + + Download failed. Server reported: %1 + + + + Download failed: %1 (%2) İndirme baĹźarızı: %1 (%2) - + failed to re-open %1 %1 tekrar açılamadı @@ -770,7 +845,7 @@ Steam tarafından dağıtılan her oyun/aracın kendine has bir kimliÄźi vardır - + If checked, MO will be closed once the specified executable is run. EÄźer seçiliyse, belirlenmiĹź yĂĽrĂĽtĂĽlebilir çalıştırıldığında MO kapatılacaktır. @@ -787,7 +862,7 @@ Steam tarafından dağıtılan her oyun/aracın kendine has bir kimliÄźi vardır - + Add Ekle @@ -803,47 +878,64 @@ Steam tarafından dağıtılan her oyun/aracın kendine has bir kimliÄźi vardır Kaldır - + + Close + Kapat + + + Select a binary Bir ikili deÄźer seç - + Executable (%1) YĂĽrĂĽtĂĽlebilir (%1) - + Java (32-bit) required - + MO requires 32-bit java to run this application. If you already have it installed, select javaw.exe from that installation as the binary. - + Select a directory Bir klasör seç - + Confirm Onayla - + Really remove "%1" from executables? "%1" gerçekten yĂĽrĂĽtĂĽlebilirlerden kaldırılsın mı? - + Modify DeÄźiĹźtir - + + + Save Changes? + + + + + + You made changes to the current executable, do you want to save them? + + + + MO must be kept running or this application will not work correctly. MO'nun çalışmaya devam etmesi gereklidir yoksa uygulama dĂĽzgĂĽn çalışmayacaktır @@ -1290,7 +1382,7 @@ Not: Bu yĂĽkleyici diÄźer modlardan haberdar olmayacak! YĂĽrĂĽtĂĽlebilir çalışırken MO kilitlidir. - + Unlock Kilit aç @@ -1298,7 +1390,7 @@ Not: Bu yĂĽkleyici diÄźer modlardan haberdar olmayacak! LogBuffer - + failed to write log to %1: %2 %1: %2 ya kayıt yazılamadı @@ -1319,23 +1411,23 @@ Not: Bu yĂĽkleyici diÄźer modlardan haberdar olmayacak! MainWindow - - + + Categories Kategoriler - + Profile - + Pick a module collection - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1345,54 +1437,54 @@ p, li { white-space: pre-wrap; } - + Refresh list - + Refresh list. This is usually not necessary unless you modified data outside the program. - + List of available mods. - + This is a list of installed mods. Use the checkboxes to activate/deactivate mods and drag & drop mods to change their "installation" orders. - + Filter - + No groups - + Nexus IDs Nexus kimliÄźi - - - + + + Namefilter - + Pick a program to run. - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1402,12 +1494,12 @@ p, li { white-space: pre-wrap; } - + Run program - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1416,17 +1508,17 @@ p, li { white-space: pre-wrap; } - + Run - + Create a shortcut in your start menu or on the desktop to the specified program - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1435,7 +1527,7 @@ p, li { white-space: pre-wrap; } - + Shortcut @@ -1444,12 +1536,12 @@ p, li { white-space: pre-wrap; } Kaydet - + List of available esp/esm files - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1458,12 +1550,12 @@ p, li { white-space: pre-wrap; } - + List of available BS Archives. Archives not checked here are not managed by MO and ignore installation order. - + BSA files are archives (comparable to .zip files) that contain data assets (meshes, textures, ...) to be used by the game. As such they "compete" with loose files in your data directory over which is loaded. By default, BSAs that share their base name with an enabled ESP (i.e. plugin.esp and plugin.bsa) are automatically loaded and will have precedence over all loose files, the installation order you set up to the left is then ignored! @@ -1471,66 +1563,71 @@ BSAs checked here are loaded in such a way that your installation order is obeye - - + + File - + <html><head/><body><p>Marked Archives (<img src=":/MO/gui/warning_16"/>) are still loaded on Skyrim but the <a href="http://forums.bethsoft.com/topic/1354395-update-bsas-and-you/"><span style=" text-decoration: underline; color:#0000ff;">regular file override</span></a> mechanism will apply: Loose files override BSAs, no matter the mod/plugin priority.</p></body></html> - + Mod Mod - + Data - + + Sort + + + + refresh data-directory overview - + Refresh the overview. This may take a moment. - - - + + + Refresh - + This is an overview of your data directory as visible to the game (and tools). - - + + Filter the above list so that only conflicts are displayed. - + Show only conflicts - + Saves - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1541,160 +1638,160 @@ p, li { white-space: pre-wrap; } - + Downloads - + This is a list of mods you downloaded from Nexus. Double click one to install it. - + Compact - + Show Hidden - + Tool Bar - + Install Mod - + Install &Mod - + Install a new mod from an archive - + Ctrl+M - + Profiles - + &Profiles - + Configure Profiles - + Ctrl+P - + Executables - + &Executables - + Configure the executables that can be started through Mod Organizer - + Ctrl+E - - + + Tools - + &Tools - + Ctrl+I - + Settings - + &Settings - + Configure settings and workarounds - + Ctrl+S - + Nexus - + Search nexus network for more mods - + Ctrl+N - - + + Update - + Mod Organizer is up-to-date - - + + No Problems - + This button will be highlighted if MO discovered potential problems in your setup and provide tips on how to fix them. !Work in progress! @@ -1702,896 +1799,943 @@ Right now this has very limited functionality - - + + Help - + Ctrl+H - + Endorse MO - - + + Endorse Mod Organizer - + Toolbar - + Desktop - + Start Menu - + Problems - + There are potential problems with your setup - + Everything seems to be in order - + Help on UI - + Documentation Wiki - + Report Issue - + Tutorials - + failed to save load order: %1 - + failed to save archives order, do you have write access to "%1"? - + + About + + + + + About Qt + + + + Name İsim - + Please enter a name for the new profile - + failed to create profile: %1 - + Show tutorial? - + You are starting Mod Organizer for the first time. Do you want to show a tutorial of its basic features? If you choose no you can always start the tutorial from the "Help"-menu. - + Downloads in progress - + There are still downloads in progress, do you really want to quit? - + failed to read savegame: %1 - + Plugin "%1" failed: %2 - + Failed to start "%1" - + Waiting - + Please press OK once you're logged into steam. - - "%1" not found - - - - + Start Steam? - + Steam is required to be running already to correctly start the game. Should MO try to start steam now? - + Also in: <br> - + No conflict - + <Edit...> - + + Failed to refresh list of esps: %1 + + + + This bsa is enabled in the ini file so it may be required! - + This archive will still be loaded since there is a plugin of the same name but its files will not follow installation order! - + Activating Network Proxy - - + + Installation successful - - + + Configure Mod - - + + This mod contains ini tweaks. Do you want to configure them now? - - + + mod "%1" not found - - + + Installation cancelled - - + + The mod was not installed completely. - + Some plugins could not be loaded - + The game doesn't allow more than 255 active plugins (including the official ones) to be loaded. You have to disable some unused plugins or merge some plugins into one. You can find a guide here: <a href="http://wiki.step-project.com/Guide:Merging_Plugins">http://wiki.step-project.com/Guide:Merging_Plugins</a> - + Choose Mod - + Mod Archive - + Start Tutorial? - + You're about to start a tutorial. For technical reasons it's not possible to end the tutorial early. Continue? - - + + Download started - + failed to update mod list: %1 - + failed to spawn notepad.exe: %1 - + failed to open %1 - + failed to change origin name: %1 - + Multiple esps activated, please check that they don't conflict. - - + + Create Mod... - + A mod with this name already exists - + <All> - + <Checked> - + Plugin "%1" failed - + failed to init plugin %1: %2 - + Plugin error - + It appears the plugin "%1" failed to load last startup and caused MO to crash. Do you want to disable it? (Please note: If this is the first time you see this message for this plugin you may want to give it another try. The plugin may be able to recover from the problem) - - Failed to refresh list of esps: %s - - - - + Too many esps and esms enabled - - + + Description missing - + The following plugins could not be loaded. The reason may be missing dependencies (i.e. python) or an outdated version: - - Failed to move "%1" from mod "%2" to "%3": %4 - - - - + <Unchecked> - + <Update> - + <No category> - + <Conflicted> - + <Not Endorsed> - + failed to rename mod: %1 - + Overwrite? - + This will replace the existing mod "%1". Continue? - + failed to remove mod "%1" - - - + + + failed to rename "%1" to "%2" "%1"yi "%2" olarak yeniden adlandırma baĹźarılı olamadı. - - - + + + + Confirm Onayla - + Remove the following mods?<br><ul>%1</ul> - + failed to remove mod: %1 - - + + Failed - + Installation file no longer exists - + Mods installed with old versions of MO can't be reinstalled in this way. - - + + You need to be logged in with Nexus to endorse - - + + Extract BSA - + This mod contains at least one BSA. Do you want to unpack it? (This removes the BSA after completion. If you don't know about BSAs, just select no) - - - + + + failed to read %1: %2 %1: %2 okunamadı - - + + This archive contains invalid hashes. Some files may be broken. - + Nexus ID for this Mod is unknown - + This will move all files from overwrite into a new, regular mod. Please enter a name: - + Continue? - + The versioning scheme decides which version is considered newer than another. This function will guess the versioning scheme under the assumption that the installed version is outdated. - + + Sorry - + I don't know a versioning scheme where %1 is newer than %2. - + Really enable all visible mods? - + Really disable all visible mods? - + Choose what to export - + Everything - + All installed mods are included in the list - + Active Mods - + Only active (checked) mods from your current profile are included - + Visible - + All mods visible in the mod list are included - + export failed: %1 - + Install Mod... - + Enable all visible - + Disable all visible - + Check all for update - + Export to csv... - + Sync to Mods... - + Restore Backup - + Remove Backup... - + Primary Category - + Change versioning scheme - + Un-ignore update - + Ignore update - + Rename Mod... - + Remove Mod... - + Reinstall Mod - + Un-Endorse - - + + Endorse - + Won't endorse - + Endorsement state unknown - + Ignore missing data - + Visit on Nexus - + Open in explorer - + Information... - - + + Exception: - - + + Unknown exception - + <Multiple> - + + Really delete "%1"? + + + + Fix Mods... - - + + Delete + + + + + failed to remove %1 - - + + failed to create %1 - + Can't change download directory while downloads are in progress! - + Download failed - + failed to write to file %1 - + %1 written - + Select binary - + Binary İkili deÄźer - + Enter Name - + Please enter a name for the executable - + Not an executable - + This is not a recognized executable. - - + + Replace file? - + There already is a hidden version of this file. Replace it? - - + + File operation failed - - + + Failed to remove "%1". Maybe you lack the required file permissions? - + There already is a visible version of this file. Replace it? - + + file not found: %1 + + + + + failed to generate preview for %1 + + + + + Sorry, can't preview anything. This function currently does not support extracting from bsas. + + + + Update available - + Open/Execute - + Add as Executable - + + Preview + + + + Un-Hide - + Hide - + Write To File... - + Do you want to endorse Mod Organizer on %1 now? - + Remove - + Unlock load order - + Lock load order - + + BOSS working + + + + + failed to run boss: %1 + + + + Request to Nexus failed: %1 - + + Executable "%1" not found + + + + Add/Remove Categories - + Replace Categories - - + + login successful - + login failed: %1. Trying to download anyway - + login failed: %1 - + login failed: %1. You need to log-in with Nexus to update MO. - + Error - + failed to extract %1 (errorcode %2) - + Extract... - + Edit Categories... - + Enable all - + Disable all @@ -2638,58 +2782,58 @@ This function will guess the versioning scheme under the assumption that the ins Mod bilgisi - + Textfiles Yazı dosyaları - + A list of text-files in the mod directory. Mod klasörĂĽndeki yazı dosyalarının bir listesi - + A list of text-files in the mod directory like readmes. Mod klasörĂĽndeki benioku dosyaları gibi yazı dosyalarının bir listesi - - + + Save Kaydet - + INI-Files INI-Dosyaları - + This is a list of .ini files in the mod. Mod klasörĂĽndeki .ini dosyalarının bir listesi - + This is a list of .ini files in the mod. These are usually used to configure the behaviour of mods if there are configurable parameters. Moddaki .ini dosyalarının bir listesi. Bunlar genelde, ayarlabilir parametrelerin olduÄźuÄźu durumlarda modların davranışlarını ayarlamak için kullanılır. - + Save changes to the file. DeÄźiĹźiklikleri dosyaya kaydet. - + Save changes to the file. This overwrites the original. There is no automatic backup! DeÄźiĹźiklikleri dosyaya kaydet. Bu orijinal dosyanın ĂĽzerine yazar. Otomatik yedekleme yoktur! - + Images Resimler - + Images located in the mod. Modun içinde yer alan resimler @@ -2706,13 +2850,13 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Bu mod klasörĂĽnde yer alan ekran resimleri ve benzeri resimlerin(.jpg ve.png) bir listesidir. Tıklayararak daha bĂĽyĂĽk görĂĽntĂĽ alabilirsiniz</span></p></body></html> - - + + Optional ESPs İsteÄźe baÄźlı ESP'ler - + List of esps and esms that can not be loaded by the game. Oyun tarafından yĂĽklenemeyen espler ve esmlerin bir listesi. @@ -2735,12 +2879,12 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Pek çok mod isteÄźe baÄźlı esp'ler içermez, bu nedenle bĂĽyĂĽk ihtimalle boĹź bir listeye bakıyorsunuz.</span></p></body></html> - + This lists all the images (.jpg and .png) in the mod directory, like screenshots and such. Click one to get a larger view. - + List of esps and esms contained in this plugin that currently can not be loaded by the game. They will not even appear in the esp-list in the main MO-window. They usually contain optional functionality, see the readme. @@ -2748,103 +2892,103 @@ Most mods do not have optional esps, so chances are good you are looking at an e - + Make the selected mod in the lower list unavailable. AĹźağıdaki listedeki seçili modu kullanılamaz yapar. - + The selected esp (in the lower list) will be pushed into a subdirectory of the mod and will thus become "invisible" to the game. It can then no longer be activated. Seçili esp (aĹźağıdaki listede) modun bir alt klasörĂĽne itilecek ve böylece oyuna "görĂĽnmez" olacaktır. Artık aktif hale getirilemez. - + Move a file to the data directory. Dosyayı veri klasörĂĽne taşı. - + This moves a esp to the esp directory so it can be enabled in the main window. Please note that the ESP merely becomes "available", it will not necessarily be loaded! That is configured in the main window of omo. - + ESPs in the data directory and thus visible to the game. - + These are the mod files that are in the (virtual) data directory of your game and will thus be selecteable in the esp list in the main window. - + Available ESPs - + Conflicts - + The following conflicted files are provided by this mod - - + + File - + Overwritten Mods - + The following conflicted files are provided by other mods - + Providing Mod - + Non-Conflicted files - + Categories Kategoriler - + Primary Category - + Nexus Info - + Mod ID - + Mod ID for this mod on Nexus. - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -2853,7 +2997,7 @@ p, li { white-space: pre-wrap; } - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -2862,61 +3006,61 @@ p, li { white-space: pre-wrap; } - + Version Versiyon - + Refresh - + Refresh all information from Nexus. - + Description - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:7.8pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"><br /></p></body></html> - + Name İsim - + Endorse - + Notes - + Filetree - + A directory view of this mod - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -2926,237 +3070,237 @@ p, li { white-space: pre-wrap; } - + Previous - + Next Sonraki - + Close Kapat - + &Delete - + &Rename - + &Hide - + &Unhide - + &Open &Aç - + &New Folder - - + + Save changes? - + File Exists - + A file with that name exists, please enter a new one - + failed to move file - + failed to create directory "optional" - - + + Info requested, please wait - + (description incomplete, please visit nexus) - + Please enter a name - - + + Error - + Invalid name. Must be a valid file name - + A tweak by that name exists - + Create Tweak - + Current Version: %1 - + No update available - + Main - - + + Save changes to "%1"? - + Update - + Optional - + Old - + Misc - + Unknown - + <a href="%1">Visit on Nexus</a> - - + + Confirm Onayla - + Failed to delete %1 - + Are sure you want to delete "%1"? - + Are sure you want to delete the selected files? - - + + New Folder - + Failed to create "%1" - - + + Replace file? - + There already is a hidden version of this file. Replace it? - - + + File operation failed - - + + Failed to remove "%1". Maybe you lack the required file permissions? - - + + failed to rename %1 to %2 - + There already is a visible version of this file. Replace it? - + Un-Hide - + Hide @@ -3256,7 +3400,8 @@ p, li { white-space: pre-wrap; } - installed version: %1, newest version: %2 + installed version: "%1", newest version: "%2" + installed version: %1, newest version: %2 @@ -3397,17 +3542,17 @@ p, li { white-space: pre-wrap; } NexusInterface - + Failed to guess mod id for "%1", please pick the correct one - + empty response - + invalid response @@ -3480,109 +3625,126 @@ p, li { white-space: pre-wrap; } PluginList - + Mod Index - - + + Flags + + + + + unknown - + Name of your mods - + Load priority of your mod. The higher, the more "important" it is and thus overwrites data from plugins with lower priority. - + The modindex determins the formids of objects originating from this mods. - + failed to update esp info for file %1 (source id: %2), error: %3 - + esp not found: %1 - + Confirm Onayla - + Really enable all plugins? - + Really disable all plugins? - + The file containing locked plugin indices is broken - - - failed to open output file: %1 + + Some of your plugins have invalid names! These plugins can not be loaded by the game. Please see mo_interface.log for a list of affected plugins and rename them. - - Some of your plugins have invalid names! These plugins can not be loaded by the game. Please see mo_interface.log for a list of affected plugins and rename them. + + BOSS dll incompatible - + Missing Masters - + Enabled Masters - + failed to restore load order for %1 - + This plugin can't be disabled (enforced by the game) - + Origin: %1 - + Name İsim - + Priority + + PreviewDialog + + + Preview + + + + + Close + Kapat + + ProblemsDialog @@ -3624,82 +3786,72 @@ p, li { white-space: pre-wrap; } Profile - + invalid profile name %1 - + failed to create %1 - - failed to open temporary file - - - - - failed to open "%1" for writing - - - - + failed to write mod list: %1 - + failed to update tweaked ini file, wrong settings may be used: %1 - + failed to create tweaked ini: %1 - - - - - + + + + + invalid index %1 - + Overwrite directory couldn't be parsed - + invalid priority %1 - + failed to parse ini file (%1) - + failed to parse ini file (%1): %2 - - + + failed to modify "%1" - + Delete savegames? - + Do you want to delete local savegames? (If you select "No", the save games will show up again if you re-enable local savegames) @@ -4025,97 +4177,97 @@ p, li { white-space: pre-wrap; } - + "%1" is missing - + Permissions required - + The current user account doesn't have the required access rights to run Mod Organizer. The neccessary changes can be made automatically (the MO directory will be made writable for the current user account). You will be asked to run "helper.exe" with administrative rights. - - + + Woops - + ModOrganizer has crashed! Should a diagnostic file be created? If you send me this file (%1) to sherb@gmx.net, the bug is a lot more likely to be fixed. Please include a short description of what you were doing when the crash happened - + ModOrganizer has crashed! Unfortunately I was not able to write a diagnostic file: %1 - - + + Mod Organizer - + An instance of Mod Organizer is already running - + No game identified in "%1". The directory is required to contain the game binary and its launcher. - - + + Please select the game to manage - + Please select the game edition you have (MO can't start the game correctly if this is set incorrectly!) - + Please use "Help" from the toolbar to get usage instructions to all elements - - + + <Manage...> - + failed to parse profile %1: %2 - - + + failed to find "%1" - + failed to access %1 - + failed to set file time %1 - + failed to create %1 @@ -4143,12 +4295,12 @@ p, li { white-space: pre-wrap; } - + Script Extender - + Proxy DLL @@ -4173,22 +4325,22 @@ Start elevated anyway? (you will be asked if you want to allow ModOrganizer.exe - + failed to spawn "%1": %2 - + "%1" doesn't exist - + failed to inject dll into "%1": %2 - + failed to run "%1" @@ -4237,6 +4389,11 @@ Start elevated anyway? (you will be asked if you want to allow ModOrganizer.exe invalid game type %1 + + + failed to open temporary file + + QueryOverwriteDialog @@ -4452,18 +4609,18 @@ Start elevated anyway? (you will be asked if you want to allow ModOrganizer.exe Settings - - + + attempt to store setting for unknown plugin "%1" - + Confirm Onayla - + Changing the mod directory affects all your profiles! Mods not present (or named differently) in the new location will be disabled in all profiles. There is no way to undo this unless you backed up your profiles manually. Proceed? @@ -4608,52 +4765,47 @@ p, li { white-space: pre-wrap; } - + Disable automatic internet features - + Disable automatic internet features. This does not affect features that are explicitly invoked by the user (like checking mods for updates, endorsing, opening the web browser) - + Offline Mode - + Use a proxy for network connections. - + Use a proxy for network connections. This uses the system-wide settings which can be configured in Internet Explorer. Please note that MO will start up a few seconds slower on some systems when using a proxy. - + Use HTTP Proxy (Uses System Settings) - - Known Servers (Dynamically updated every download) - - - - + Preferred Servers (Drag & Drop) - + Blacklisted Plugins (use <del> to remove): - + Mod Organizer needs a dll to be injected into the game so all mods are visible to it. There are several means to do this: *Mod Organizer* (default) In this mode the Mod Organizer itself injects the dll. The disadvantage is that you always have to start the game through MO or a link created by it. @@ -4694,62 +4846,72 @@ p, li { white-space: pre-wrap; } - + Username Kullanıcı adı - + Password Ĺžifre - + + Associate with "Download with manager" links + + + + + Known Servers (updated on download) + + + + Plugins - + Author: - + Version: - + Description: - + Key - + Value - + Workarounds - + Steam App ID - + The Steam AppID for your game - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4765,27 +4927,27 @@ p, li { white-space: pre-wrap; } - + Load Mechanism - + Select loading mechanism. See help for details. - + NMM Version - + The Version of Nexus Mod Manager to impersonate. - + Mod Organizer uses an API provided by the Nexus to provide features like checking for updates and downloading files. Unfortunately this API has not been made available officially to third party tools like MO so we have to impersonate the Nexus Mod Manager to be allowed in. On top of this Nexus has used the client identification to lock out outdated versions of NMM to force users to update. This means that MO also needs to impersonate the new version of NMM even if MO doesn't need an update. Therefore you can configure the version to identify as here. Please note that MO does identify itself as MO to the webserver, it's not lying about what it is. It is merely adding a "compatible" NMM version to the user agent. @@ -4794,76 +4956,76 @@ tl;dr-version: If Nexus-features don't work, insert the current version num - + Enforces that inactive ESPs and ESMs are never loaded. - + It seems that the Games occasionally load ESP or ESM files even if they haven't been activated as plugins. I don't yet know what the circumstances are, but user reports imply it is in some cases unwanted. If this is checked, ESPs and ESMs not checked in the List are invisible to the game and can not be loaded. - + Hide inactive ESPs/ESMs - + If checked, files (i.e. esps, esms and bsas) belonging to the core game can not be disabled in the UI. (default: on) - + If checked, files (i.e. esps, esms and bsas) belonging to the core game can not be disabled in the UI. (default: on) Uncheck this if you want to use Mod Organizer with total conversions (like Nehrim) but be aware that the game will crash if required files are not enabled. - + Force-enable game files - - + + For Skyrim, this can be used instead of Archive Invalidation. It should make AI redundant for all Profiles. For the other games this is not a sufficient replacement for AI! - + Back-date BSAs - + These are workarounds for problems with Mod Organizer. Please make sure you read the help text before changing anything here. - + Select download directory - + Select mod directory - + Select cache directory - + Confirm? - + This will make all dialogs show up again where you checked the "Remember selection"-box. Continue? diff --git a/src/organizer_zh_CN.ts b/src/organizer_zh_CN.ts index e715f9d9..4e24267f 100644 --- a/src/organizer_zh_CN.ts +++ b/src/organizer_zh_CN.ts @@ -1,6 +1,50 @@ + + AboutDialog + + + + About + + + + + Revision: + + + + + Used Software + + + + + Credits + + + + + Translators + + + + + Others + + + + + Close + ĺ…łé—­ + + + + No license + + + ActivateModsDialog @@ -240,25 +284,30 @@ p, li { white-space: pre-wrap; } DownloadList - + Name ĺŤç§° - + Filetime 文件时间 - + Done 完ć - + Information missing, please select "Query Info" from the context menu to re-retrieve. 信ćŻä¸˘ĺ¤±ďĽŚčŻ·ĺś¨ĺŹłé”®čŹśĺŤ•é‡Śé€‰ć‹©â€śćźĄčŻ˘äżˇćŻâ€ťćťĄé‡Ťć–°ćŁ€ç´˘ă€‚ + + + pending download + + DownloadListWidget @@ -311,125 +360,135 @@ p, li { white-space: pre-wrap; } DownloadListWidgetCompactDelegate - + Installed 已安装 - + Uninstalled - + Done 完ć - - - - + + + + Are you sure? 确定? - + This will remove all finished downloads from this list and from disk. 这将会从ĺ—表和çŁç›ä¸­ç§»é™¤ć‰€ćś‰ĺ·˛ĺ®Ść的下载。 - + This will remove all installed downloads from this list and from disk. 这将会从ĺ—表和çŁç›ä¸­ç§»é™¤ć‰€ćś‰ĺ·˛ĺ®‰čŁ…çš„ä¸‹č˝˝éˇąç›®ă€‚ - + This will permanently remove all finished downloads from this list (but NOT from disk). - + This will permanently remove all installed downloads from this list (but NOT from disk). - + Install 安装 - + Query Info ćźĄčŻ˘äżˇćŻ - + Delete - + Un-Hide 取ć¶éšč—Ź - + Remove from View - + Remove 移除 - + Cancel ĺŹ–ć¶ - + + < mod %1 file %2 > + + + + + Pending + + + + Paused - + Fetching Info 1 - + Fetching Info 2 - + Pause ćš‚ĺś - + Resume ç»§ç»­ - + Delete Installed... - + Delete All... - + Remove Installed... 移除已安装的项目... - + Remove All... 移除所有... @@ -437,68 +496,78 @@ p, li { white-space: pre-wrap; } DownloadListWidgetDelegate - - - - + + + + Are you sure? 确定? - + This will remove all finished downloads from this list and from disk. 这将会从ĺ—表和çŁç›ä¸­ç§»é™¤ć‰€ćś‰ĺ·˛ĺ®Ść的下载。 - + This will remove all installed downloads from this list and from disk. 这将会从ĺ—表和çŁç›ä¸­ç§»é™¤ć‰€ćś‰ĺ·˛ĺ®‰čŁ…çš„ä¸‹č˝˝éˇąç›®ă€‚ - + This will remove all finished downloads from this list (but NOT from disk). - + This will remove all installed downloads from this list (but NOT from disk). - + Install 安装 - + Query Info ćźĄčŻ˘äżˇćŻ - + Delete - + Un-Hide 取ć¶éšč—Ź - + Remove from View - + Remove 移除 - + Cancel ĺŹ–ć¶ + + + < mod %1 file %2 > + + + + + Pending + + Fetching Info 1 @@ -510,32 +579,32 @@ p, li { white-space: pre-wrap; } - + Pause ćš‚ĺś - + Resume ç»§ç»­ - + Delete Installed... - + Delete All... - + Remove Installed... 移除已安装的项目... - + Remove All... 移除所有... @@ -548,75 +617,76 @@ p, li { white-space: pre-wrap; } é‡Ťĺ‘˝ĺŤ "%1 "为 "%2" 时出错 - + Download again? 重新下载? - + A file with the same name has already been downloaded. Do you want to download it again? The new file will receive a different name. ĺ·˛ĺ­ĺś¨ĺŚĺŤć–‡ä»¶ă€‚您确定č¦é‡Ťć–°ä¸‹č˝˝ďĽźć–°ć–‡ä»¶ĺ°†ä˝żç”¨ä¸ŤĺŚçš„文件ĺŤă€‚ - + failed to download %1: could not open output file: %2 下载 %1 失败: 无法打开输出文件: %2 - + Wrong Game - + The download link is for a mod for "%1" but this instance of MO has been set up for "%2". - - - - - - - - - - - - - - + + + + + + + + + + + + + + + invalid index ć— ć•的索引 - + failed to delete %1 ć— ćł•ĺ é™¤ %1 - + failed to delete meta file for %1 无法从 %1 中ĺ é™¤ mate 文件 - - - - - - + + + + + + invalid index %1 ć— ć•的索引 %1 - + Please enter the nexus mod id 请输入N网 Mod ID - + Mod ID: Mod ID: @@ -625,38 +695,43 @@ p, li { white-space: pre-wrap; } ć— ć•的字顺索引 %1 - + Information updated 信ćŻĺ·˛ć›´ć–° - - + + No matching file found on Nexus! Maybe this file is no longer available or it was renamed? 无法在N网上找ĺ°ĺŚąé…Ťçš„ć–‡ä»¶ďĽäąźč®¸čż™ä¸Şć–‡ä»¶ĺ·˛ç»Źä¸Ťĺ­ĺś¨äş†ć–ćŻĺ®ć”ąĺŤäş†ďĽź - + No file on Nexus matches the selected file by name. Please manually choose the correct one. 所选的文件无法在N网上找ĺ°ĺŹŻĺŚąé…Ťçš„éˇąç›®ďĽŚčŻ·ć‰‹ĺŠ¨é€‰ć‹©ć­Łçˇ®çš„ä¸€ä¸Şă€‚ - + No download server available. Please try again later. 没有可用的下载服务器,请稍ĺŽĺ†Ťĺ°ťčŻ•ä¸‹č˝˝ă€‚ - + Failed to request file info from nexus: %1 无法从N网上请求文件信ćŻ: %1 - + + Download failed. Server reported: %1 + + + + Download failed: %1 (%2) 下载失败: %1 (%2) - + failed to re-open %1 无法重新打开 %1 @@ -768,7 +843,7 @@ Right now the only case I know of where this needs to be overwritten is for the - + If checked, MO will be closed once the specified executable is run. ĺ¦‚ćžśé€‰ä¸­ďĽŚé‚Łäą MO 将在指定的程序čżčˇŚĺŽĺ…łé—­ă€‚ @@ -785,7 +860,7 @@ Right now the only case I know of where this needs to be overwritten is for the - + Add 添加 @@ -801,47 +876,64 @@ Right now the only case I know of where this needs to be overwritten is for the 移除 - + + Close + ĺ…łé—­ + + + Select a binary 选择一个可执行文件 - + Executable (%1) 可执行程序 (%1) - + Java (32-bit) required - + MO requires 32-bit java to run this application. If you already have it installed, select javaw.exe from that installation as the binary. - + Select a directory 选择一个目录 - + Confirm 确认 - + Really remove "%1" from executables? çśźçš„č¦ä»Žç¨‹ĺşŹĺ—表中移除 "%1" ĺ—? - + Modify 更改 - + + + Save Changes? + + + + + + You made changes to the current executable, do you want to save them? + + + + MO must be kept running or this application will not work correctly. MO 必须ćŚç»­čżčˇŚďĽŚĺ¦ĺ™čŻĄç¨‹ĺşŹĺ°†ć— ćł•ć­Łĺ¸¸ĺ·Ąä˝śă€‚ @@ -1287,7 +1379,7 @@ Note: This installer will not be aware of other installed mods! 程序čżčˇŚć—¶ MO 将被é”定。 - + Unlock č§Łé” @@ -1295,7 +1387,7 @@ Note: This installer will not be aware of other installed mods! LogBuffer - + failed to write log to %1: %2 无法生ćć—Ąĺż—ĺ° %1: %2 @@ -1316,23 +1408,23 @@ Note: This installer will not be aware of other installed mods! MainWindow - - + + Categories - + Profile 配置文件 - + Pick a module collection 选择一个配置文件 - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1347,44 +1439,44 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">请注意: 当前您的配置文件的 esp 加载顺序并不ćŻĺ†ĺĽ€äżťĺ­çš„。</span></p></body></html> - + Refresh list ĺ·ć–°ĺ—表 - + Refresh list. This is usually not necessary unless you modified data outside the program. ĺ·ć–°ĺ—表,这通常不ćŻĺż…须的,除非您在程序之外修改了文件的数据。 - + List of available mods. - + This is a list of installed mods. Use the checkboxes to activate/deactivate mods and drag & drop mods to change their "installation" orders. - + Filter 过滤器 - + No groups - + Nexus IDs N网 ID - - - + + + Namefilter @@ -1393,12 +1485,12 @@ p, li { white-space: pre-wrap; } 开始 - + Pick a program to run. 选择č¦čżčˇŚçš„程序。 - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1413,12 +1505,12 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">您可以添加新的工具ĺ°ć­¤ĺ—表中,但ć‘不č˝äżťčŻä¸€äş›ć‘没有测试过的工具č˝ĺ¤źć­Łĺ¸¸ĺ·Ąä˝śă€‚</span></p></body></html> - + Run program čżčˇŚç¨‹ĺşŹ - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1431,17 +1523,17 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">在 Mod Organizer ĺŻç”¨çš„状ć€ä¸‹čżčˇŚćŚ‡ĺ®šçš„ç¨‹ĺşŹă€‚</span></p></body></html> - + Run čżčˇŚ - + Create a shortcut in your start menu or on the desktop to the specified program - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1454,7 +1546,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">ĺ›ĺ»şä¸€ä¸ŞĺĽ€ĺ§‹čŹśĺŤ•ĺż«ćŤ·ć–ąĺĽŹďĽŚä˝żć‚¨ĺŹŻä»Ąç›´ćŽĄĺś¨ MO 激活状ć€ä¸‹čżčˇŚćŚ‡ĺ®šçš„ç¨‹ĺşŹă€‚</span></p></body></html> - + Shortcut @@ -1479,12 +1571,12 @@ p, li { white-space: pre-wrap; } äżťĺ­ - + List of available esp/esm files 可用 esp ć– esm 文件的ĺ—表 - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1501,12 +1593,12 @@ p, li { white-space: pre-wrap; } 重č¦: 您可以在这里更改 BSA 的顺序,不过 Mod 的安装顺序会äĽĺ…äşŽčż™é‡Śçš„č®ľç˝®ďĽ - + List of available BS Archives. Archives not checked here are not managed by MO and ignore installation order. 可用 BSA 文件的ĺ—表。未勾选的项目不会被 MO 管ç†ĺą¶ä¸”会忽略安装顺序。 - + BSA files are archives (comparable to .zip files) that contain data assets (meshes, textures, ...) to be used by the game. As such they "compete" with loose files in your data directory over which is loaded. By default, BSAs that share their base name with an enabled ESP (i.e. plugin.esp and plugin.bsa) are automatically loaded and will have precedence over all loose files, the installation order you set up to the left is then ignored! @@ -1517,66 +1609,71 @@ BSAs checked here are loaded in such a way that your installation order is obeye 这里勾选的 BSA 将会依从您的安装顺序,并且会自行č°ć•´ĺŠ č˝˝éˇşĺşŹă€‚ - - + + File 文件 - + <html><head/><body><p>Marked Archives (<img src=":/MO/gui/warning_16"/>) are still loaded on Skyrim but the <a href="http://forums.bethsoft.com/topic/1354395-update-bsas-and-you/"><span style=" text-decoration: underline; color:#0000ff;">regular file override</span></a> mechanism will apply: Loose files override BSAs, no matter the mod/plugin priority.</p></body></html> - + Mod Mod - + Data Data - + + Sort + + + + refresh data-directory overview ĺ·ć–° Data ç›®ĺ˝•ć€»č§ - + Refresh the overview. This may take a moment. ĺ·ć–°ć€»č§ďĽŚčż™ĺŹŻč˝éś€č¦ä¸€äş›ć—¶é—´ă€‚ - - - + + + Refresh ĺ·ć–° - + This is an overview of your data directory as visible to the game (and tools). čż™ćŻĺś¨ć¸¸ćŹä¸­ĺŹŻč§çš„ Data 目录 (ĺ’Śĺ·Ąĺ…·) 的总č§ă€‚ - - + + Filter the above list so that only conflicts are displayed. 过滤上面的ĺ—表,使您只č˝çś‹ĺ°ćś‰ĺ†˛çŞçš„文件。 - + Show only conflicts 只ćľç¤şĺ†˛çŞ - + Saves ĺ­ćˇŁ - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1593,160 +1690,160 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">如果您在右键菜单中点击“修复 Modâ€ťďĽŚé‚Łäą MO 便会尝试激活所有 Mod ĺ’Ś esp 来修复那些缺失的 esp,ĺ®ĺą¶ä¸ŤäĽšç¦ç”¨ä»»ä˝•东西ďĽ</span></p></body></html> - + Downloads 下载 - + This is a list of mods you downloaded from Nexus. Double click one to install it. čż™ćŻĺ˝“前已下载的 Mod çš„ĺ—表,双击进行安装。 - + Compact 紧凑 - + Show Hidden - + Tool Bar ĺ·Ąĺ…·ć Ź - + Install Mod 安装 Mod - + Install &Mod 安装 &Mod - + Install a new mod from an archive 通过压缩包来安装一个新 Mod - + Ctrl+M Ctrl+M - + Profiles 配置文件 - + &Profiles &配置文件 - + Configure Profiles 设置配置文件 - + Ctrl+P Ctrl+P - + Executables 可执行程序 - + &Executables &可执行程序 - + Configure the executables that can be started through Mod Organizer 配置可通过 MO 来ĺŻĺŠ¨çš„ç¨‹ĺşŹ - + Ctrl+E Ctrl+E - - + + Tools - + &Tools - + Ctrl+I Ctrl+I - + Settings 设置 - + &Settings &设置 - + Configure settings and workarounds é…Ťç˝®č®ľĺ®šĺ’Śč§Łĺ†łć–ąćˇ - + Ctrl+S Ctrl+S - + Nexus N网 - + Search nexus network for more mods ćśç´˘N网以获取更多 Mod - + Ctrl+N Ctrl+N - - + + Update ć›´ć–° - + Mod Organizer is up-to-date Mod Organizer 现在ćŻćś€ć–°ç‰ćś¬ - - + + No Problems ć˛ˇćś‰é—®é˘ - + This button will be highlighted if MO discovered potential problems in your setup and provide tips on how to fix them. !Work in progress! @@ -1757,54 +1854,54 @@ Right now this has very limited functionality 当前此功č˝ć‰€č˝ćŹäľ›çš„éˇąç›®éťžĺ¸¸ćś‰é™ - - + + Help 帮助 - + Ctrl+H - + Endorse MO - - + + Endorse Mod Organizer - + Toolbar - + Desktop - + Start Menu - + Problems é—®é˘ - + There are potential problems with your setup 您的安装中ĺ­ĺś¨ć˝śĺś¨çš„é—®é˘ - + Everything seems to be in order 一ĺ‡äş•然有序 @@ -1821,22 +1918,22 @@ Right now this has very limited functionality <li>.Net 未安装ć–ç‰ćś¬čż‡ć—§ă€‚ćłč¦čżčˇŚ NCC 您必须ĺ…安装 .Net,您可以在以下地址中获取: <a href="%1">%1</a></li> - + Help on UI 界面帮助 - + Documentation Wiki 说ćŽć–‡ćˇŁ (ç»´ĺźş) - + Report Issue ćŠĄĺ‘Šé—®é˘ - + Tutorials @@ -1845,425 +1942,426 @@ Right now this has very limited functionality 无法保ĺ­ĺŠ č˝˝éˇşĺşŹ - + failed to save load order: %1 无法保ĺ­ĺŠ č˝˝éˇşĺşŹ: %1 - + failed to save archives order, do you have write access to "%1"? 无法保ĺ­ćˇŁćˇéˇşĺşŹďĽŚć‚¨çˇ®ĺ®šć‚¨ćś‰ćťé™ć›´ć”ą "%1"? - + + About + + + + + About Qt + + + + Name ĺŤç§° - + Please enter a name for the new profile - + failed to create profile: %1 ć— ćł•ĺ›ĺ»şé…Ťç˝®ć–‡ä»¶: %1 - + Show tutorial? - + You are starting Mod Organizer for the first time. Do you want to show a tutorial of its basic features? If you choose no you can always start the tutorial from the "Help"-menu. - + Downloads in progress 正在下载 - + There are still downloads in progress, do you really want to quit? 仍有正在进行中的下载,您确定č¦é€€ĺ‡şĺ—? - + failed to read savegame: %1 无法读取ĺ­ćˇŁ: %1 - + Plugin "%1" failed: %2 - + Plugin error - + It appears the plugin "%1" failed to load last startup and caused MO to crash. Do you want to disable it? (Please note: If this is the first time you see this message for this plugin you may want to give it another try. The plugin may be able to recover from the problem) - + Failed to start "%1" ć— ćł•ĺŻĺЍ "%1" - + Waiting 稍等 - + Please press OK once you're logged into steam. 当您登录 Steam 时请点击确定。 - "%1" not found - "%1" ćśŞć‰ľĺ° + "%1" ćśŞć‰ľĺ° - + Start Steam? ĺŻĺЍ Steam? - + Steam is required to be running already to correctly start the game. Should MO try to start steam now? ćłč¦ć­Łçˇ®ĺś°ĺŻĺЍéŠć˛ďĽŚSteam 必须处于čżčˇŚçжć€ă€‚MO č¦ç«‹ĺŤłĺŻĺЍ Steam ĺ—? - + Also in: <br> 也在: <br> - + No conflict ć˛ˇćś‰ĺ†˛çŞ - + <Edit...> <编辑...> - - Failed to refresh list of esps: %s - - - - + This bsa is enabled in the ini file so it may be required! 该 BSA 已在 Ini 文件中ĺŻç”¨ďĽŚĺ› ć­¤ĺ®ĺŹŻč˝ćŻĺż…需的。 - + This archive will still be loaded since there is a plugin of the same name but its files will not follow installation order! 此档ćˇčżćŻäĽšč˘«ĺŠ č˝˝ďĽŚĺ› ä¸şĺ­ĺś¨ĺŚĺŤćŹ’ä»¶ă€‚ä¸Ťčż‡ĺ®ć‰€ĺŚ…ĺ«çš„的文件不会éµĺľŞĺ®‰čŁ…éˇşĺşŹďĽ - + Activating Network Proxy - - + + Installation successful 安装ć功 - - + + Configure Mod é…Ťç˝® Mod - - + + This mod contains ini tweaks. Do you want to configure them now? ć­¤ Mod ä¸­ĺŚ…ĺ« Ini 设定文件,您ćłçŽ°ĺś¨ĺ°±ĺŻąĺ®ä»¬čż›čˇŚé…Ťç˝®ĺ—? - - + + mod "%1" not found Mod "%1" ćśŞć‰ľĺ° - - + + Installation cancelled ĺ®‰čŁ…ĺ·˛ĺŹ–ć¶ - - + + The mod was not installed completely. Mod 没有完全安装。 - + Some plugins could not be loaded - + Too many esps and esms enabled - - + + Description missing - + The game doesn't allow more than 255 active plugins (including the official ones) to be loaded. You have to disable some unused plugins or merge some plugins into one. You can find a guide here: <a href="http://wiki.step-project.com/Guide:Merging_Plugins">http://wiki.step-project.com/Guide:Merging_Plugins</a> - + Choose Mod 选择 Mod - + Mod Archive Mod 压缩包 - + Start Tutorial? - + You're about to start a tutorial. For technical reasons it's not possible to end the tutorial early. Continue? - - + + Download started 开始下载 - + failed to update mod list: %1 无法更新 Mod ĺ—表: %1 - + failed to spawn notepad.exe: %1 无法生ć notepad.exe: %1 - + failed to open %1 无法打开 %1 - + failed to change origin name: %1 无法更改原始文件ĺŤ: %1 - + Multiple esps activated, please check that they don't conflict. - - + + Create Mod... - + A mod with this name already exists - + Continue? - + The versioning scheme decides which version is considered newer than another. This function will guess the versioning scheme under the assumption that the installed version is outdated. - + + Sorry - + I don't know a versioning scheme where %1 is newer than %2. - + <All> <ĺ…¨é¨> - + <Checked> <已勾选> - + Plugin "%1" failed - + failed to init plugin %1: %2 - + The following plugins could not be loaded. The reason may be missing dependencies (i.e. python) or an outdated version: - - Failed to move "%1" from mod "%2" to "%3": %4 - - - - + <Unchecked> <未勾选> - + <Update> <有更新> - + <No category> <ć— ç±»ĺ«> - + <Conflicted> - + <Not Endorsed> - + failed to rename mod: %1 ć— ćł•é‡Ťĺ‘˝ĺŤ Mod: %1 - + Overwrite? - + This will replace the existing mod "%1". Continue? - + failed to remove mod "%1" - - - + + + failed to rename "%1" to "%2" - - - + + + + Confirm 确认 - + Remove the following mods?<br><ul>%1</ul> - + failed to remove mod: %1 无法移动 Mod: %1 - - + + Failed 失败 - + Installation file no longer exists 安装文件不复ĺ­ĺś¨ - + Mods installed with old versions of MO can't be reinstalled in this way. ć—§ç‰ MO 安装的 Mod 无法使用此方法重新安装。 - - + + You need to be logged in with Nexus to endorse - - + + Extract BSA 解压 BSA - + This mod contains at least one BSA. Do you want to unpack it? (This removes the BSA after completion. If you don't know about BSAs, just select no) ć­¤ Mod 中至少包ĺ«ä¸€ä¸Ş BSA。您确定č¦č§ŁĺŽ‹ĺ—? (解压完ćĺŽďĽŚBSA 文件将会被ĺ é™¤ă€‚如果您不了解 BSA 的话,请选择“ĺ¦â€ť) - - - + + + failed to read %1: %2 无法读取 %1: %2 - - + + This archive contains invalid hashes. Some files may be broken. 压缩包 Hash 值错误。é¨ĺ†ć–‡ä»¶ĺŹŻč˝ĺ·˛ç»ŹćŤźĺťŹă€‚ - + Nexus ID for this Mod is unknown ć­¤ Mod çš„N网 ID 未知 @@ -2276,92 +2374,92 @@ This function will guess the versioning scheme under the assumption that the ins 选择äĽĺ…çş§ - + Really enable all visible mods? 确定č¦ĺŻç”¨ĺ…¨é¨ĺŹŻč§çš„ Mod ĺ—? - + Really disable all visible mods? 确定č¦ç¦ç”¨ĺ…¨é¨ĺŹŻč§çš„ Mod ĺ—? - + Choose what to export - + Everything - + All installed mods are included in the list - + Active Mods - + Only active (checked) mods from your current profile are included - + Visible - + All mods visible in the mod list are included - + export failed: %1 - + Install Mod... 安装 Mod... - + Enable all visible ĺŻç”¨ć‰€ćś‰ĺŹŻč§éˇąç›® - + Disable all visible ç¦ç”¨ć‰€ćś‰ĺŹŻč§éˇąç›® - + Check all for update 检查更新 - + Export to csv... - + Sync to Mods... ĺŚć­Ąĺ° Mod... - + Restore Backup - + Remove Backup... @@ -2370,312 +2468,362 @@ This function will guess the versioning scheme under the assumption that the ins č®ľç˝®ç±»ĺ« - + Primary Category - + Change versioning scheme - + Un-ignore update - + Ignore update - + Rename Mod... 重命ĺŤ... - + Remove Mod... 移除 Mod... - + Reinstall Mod 重新安装 Mod - + Un-Endorse - - + + Endorse - + Won't endorse - + Endorsement state unknown - + Ignore missing data - + Visit on Nexus 在Nç˝‘ä¸ŠćµŹč§ - + Open in explorer 在资ćşç®ˇç†ĺ™¨ä¸­ć‰“开 - + Information... 信ćŻ... - - + + Exception: 例外: - - + + Unknown exception 未知的例外 - + <Multiple> - + + Really delete "%1"? + + + + Fix Mods... 修复 Mod... - - + + Delete + + + + + failed to remove %1 ć— ćł•ĺ é™¤ %1 - - + + failed to create %1 ć— ćł•ĺ›ĺ»ş %1 - + Can't change download directory while downloads are in progress! 下载文件时不č˝äż®ć”ąä¸‹č˝˝ç›®ĺ˝•ďĽ - + Download failed 下载失败 - + failed to write to file %1 无法写入文件 %1 - + %1 written 已写入 %1 - + Select binary 选择可执行文件 - + Binary - + Enter Name 输入ĺŤç§° - + Please enter a name for the executable 请为程序输入一个ĺŤç§° - + Not an executable 不ćŻĺŹŻć‰§čˇŚç¨‹ĺşŹ - + This is not a recognized executable. 无法识ĺ«çš„可执行文件 - - + + Replace file? 替换文件? - + There already is a hidden version of this file. Replace it? ĺ·˛ĺ­ĺś¨ĺŚĺŤć–‡ä»¶ďĽŚä˝†čŻĄć–‡ä»¶č˘«éšč—Źäş†ă€‚确定č¦č¦†ç›–ĺ—? - - + + File operation failed 文件操作错误 - - + + Failed to remove "%1". Maybe you lack the required file permissions? - + There already is a visible version of this file. Replace it? - + + file not found: %1 + 文件未找ĺ°: %1 + + + + failed to generate preview for %1 + + + + + Sorry, can't preview anything. This function currently does not support extracting from bsas. + + + + Update available 更新可用 - + Open/Execute 打开/执行 - + Add as Executable 添加为可执行文件 - + + Preview + + + + Un-Hide 取ć¶éšč—Ź - + Hide éšč—Ź - + Write To File... 写入文件... - + Do you want to endorse Mod Organizer on %1 now? - + Remove 移除 - + Unlock load order - + Lock load order - + + BOSS working + + + + + failed to run boss: %1 + + + + Request to Nexus failed: %1 - + + Executable "%1" not found + + + + + Failed to refresh list of esps: %1 + + + + This will move all files from overwrite into a new, regular mod. Please enter a name: - + Add/Remove Categories - + Replace Categories - - + + login successful 登录ć功 - + login failed: %1. Trying to download anyway 登录失败: %1,请尝试使用ĺ«çš„方法下载 - + login failed: %1 无法登录: %1 - + login failed: %1. You need to log-in with Nexus to update MO. 登录失败: %1。您需č¦ç™»ĺ˝•ĺ°N网才č˝ć›´ć–° MO - + Error 错误 - + failed to extract %1 (errorcode %2) 无法解压 %1 (é”™čŻŻä»Łç  %2) - + Extract... 解压... - + Edit Categories... 编辑类ĺ«... - + Enable all ĺ…¨é¨ĺŻç”¨ - + Disable all ĺ…¨é¨ç¦ç”¨ @@ -2722,58 +2870,58 @@ Please enter a name: Mod äżˇćŻ - + Textfiles 文本文件 - + A list of text-files in the mod directory. Mod 目录里包ĺ«çš„文本文件的ĺ—表。 - + A list of text-files in the mod directory like readmes. Mod 目录里包ĺ«çš„文本文件 (类似于自述文件) çš„ĺ—表 。 - - + + Save äżťĺ­ - + INI-Files Ini 文件 - + This is a list of .ini files in the mod. Mod 目录里包ĺ«çš„ Ini 文件的ĺ—表。 - + This is a list of .ini files in the mod. These are usually used to configure the behaviour of mods if there are configurable parameters. Mod 目录里包ĺ«çš„ Ini 文件的ĺ—表,这些文件通常用来配置 Mod 的行为,如果有可设置的参数的话。 - + Save changes to the file. äżťĺ­ć›´ć”ąĺ°ć–‡ä»¶ä¸­ă€‚ - + Save changes to the file. This overwrites the original. There is no automatic backup! äżťĺ­ć›´ć”ąĺ°ć–‡ä»¶ä¸­ďĽŚčż™ĺ°†äĽšč¦†ç›–ĺŽźĺ§‹ć–‡ä»¶ďĽŚĺą¶ä¸”ć˛ˇćś‰č‡ŞĺŠ¨ĺ¤‡ä»˝ďĽ - + Images 图片 - + Images located in the mod. 位于 Mod 中的图片。 @@ -2790,13 +2938,13 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">这里ĺ—出了所有在 Mod 目录里的图片 (.jpg ĺ’Ś .png),如ćŞĺ›ľç­‰ă€‚点击其中的一个来获得čľĺ¤§çš„视图。</span></p></body></html> - - + + Optional ESPs 可选 ESP - + List of esps and esms that can not be loaded by the game. 包ĺ«äş†ä¸ŤäĽšč˘«ć¸¸ćŹč˝˝ĺ…Ąçš„ esp ĺ’Ś esm çš„ĺ—表。 @@ -2820,12 +2968,12 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">大é¨ĺ† Mod 没有可选 esp,因此您正在看的ĺľćś‰ĺŹŻč˝ĺŹŞćŻä¸€ä¸Şç©şĺ—表。</span></p></body></html> - + This lists all the images (.jpg and .png) in the mod directory, like screenshots and such. Click one to get a larger view. - + List of esps and esms contained in this plugin that currently can not be loaded by the game. They will not even appear in the esp-list in the main MO-window. They usually contain optional functionality, see the readme. @@ -2833,103 +2981,103 @@ Most mods do not have optional esps, so chances are good you are looking at an e - + Make the selected mod in the lower list unavailable. 使下表中已选的 Mod ĺŹĺľ—不可用。 - + The selected esp (in the lower list) will be pushed into a subdirectory of the mod and will thus become "invisible" to the game. It can then no longer be activated. 已选的 esp (在下表中) 将会被放入 Mod çš„ĺ­ç›®ĺ˝•里,在游ćŹé‡Śĺ°†äĽšĺŹĺľ—“不可č§â€ťďĽŚĺą¶ä¸”äą‹ĺŽĺ°±ä¸Ťč˝ĺ†Ťč˘«ćż€ć´»äş†ă€‚ - + Move a file to the data directory. ç§»ĺŠ¨ä¸€ä¸Şć–‡ä»¶ĺ° Data 目录。 - + This moves a esp to the esp directory so it can be enabled in the main window. Please note that the ESP merely becomes "available", it will not necessarily be loaded! That is configured in the main window of omo. 移动一个 esp ć–‡ä»¶ĺ° esp 目录,这样ĺ®ĺ°±ĺŹŻä»Ąĺś¨ä¸»çŞ—ĺŹŁä¸­ĺŻç”¨äş†ă€‚请注意: ESP 只ćŻĺŹĺľ—“可用”,ĺ®ĺą¶ä¸Ťä¸€ĺ®šäĽšč˘«č˝˝ĺ…ĄďĽćłč¦č˝˝ĺ…ĄčŻ·ĺś¨ MO 的主窗口中勾选。 - + ESPs in the data directory and thus visible to the game. ESP 在 Data 目录,因此ĺ®ĺś¨ć¸¸ćŹé‡ŚäĽšĺŹĺľ—可č§ă€‚ - + These are the mod files that are in the (virtual) data directory of your game and will thus be selecteable in the esp list in the main window. 这些 Mod 文件位于您游ćŹçš„ (虚拟) Data 目录里,因此ĺ®ä»¬ĺś¨ä¸»çŞ—ĺŹŁçš„ esp ĺ—表中会ĺŹĺľ—可选。 - + Available ESPs 可用 ESP - + Conflicts ĺ†˛çŞ - + The following conflicted files are provided by this mod 以下冲çŞć–‡ä»¶ç”±ć­¤ Mod ćŹäľ› - - + + File 文件 - + Overwritten Mods 覆盖的 Mod - + The following conflicted files are provided by other mods 以下冲çŞć–‡ä»¶ç”±ĺ…¶ĺ® Mod ćŹäľ› - + Providing Mod ćŹäľ›çš„ Mod - + Non-Conflicted files 非冲çŞć–‡ä»¶ - + Categories ç±»ĺ« - + Primary Category - + Nexus Info Nç˝‘äżˇćŻ - + Mod ID Mod ID - + Mod ID for this mod on Nexus. N网上此 Mod çš„ ID。 - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -2942,7 +3090,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">N网上此 Mod çš„ ID,如果您在 MO 中下载并安装了 Mod ĺ®ĺ°†č˘«č‡ŞĺŠ¨ĺˇ«ĺ†™ďĽŚĺ¦ĺ™ć‚¨éś€č¦ć‰‹ĺŠ¨čľ“ĺ…Ąă€‚č¦ć‰ľĺ°ć­Łçˇ®çš„ ID,在Nç˝‘ć‰ľĺ° Mod。比如,ĺŹčż™ć ·çš„链接: <a href=" http://www.skyrimnexus.com/downloads/file.php?id=1334"><span style=" text-decoration: underline; color:#0000ff;">http://www.skyrimnexus.com/downloads/file.php?id=1334</span></a> 在上面的例ĺ­ä¸­ďĽŚ1334ĺ°±ćŻć‚¨č¦ć‰ľçš„ ID。此外: ä¸Šéť˘çš„ĺ°±ćŻ Mod Organizer 在N网的链接,为什äąä¸ŤçŽ°ĺś¨ĺ°±ĺ°é‚Łé‡ŚĺŽ»čµžĺŚć‘呢?</span></a></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -2955,32 +3103,32 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Mod 的已安装ç‰ćś¬ďĽŚéĽ ć ‡ćŹç¤şĺ°†ćľç¤şN网上的当前ç‰ćś¬ďĽŚĺ·˛ĺ®‰čŁ…çš„ç‰ćś¬ĺŹ·ĺŹŞćś‰ĺś¨ć‚¨é€ščż‡ MO 来安装 Mod 的时候才会自动填写。</span></p></body></html> - + Version ç‰ćś¬ - + Refresh ĺ·ć–° - + Refresh all information from Nexus. - + Description 描述 - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:7.8pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"><br /></p></body></html> @@ -3000,7 +3148,7 @@ p, li { white-space: pre-wrap; } 类型 - + Name ĺŤç§° @@ -3009,12 +3157,12 @@ p, li { white-space: pre-wrap; } 大小 (KB) - + Endorse - + Notes @@ -3027,17 +3175,17 @@ p, li { white-space: pre-wrap; } 您支ćŚčż‡čż™ä¸Ş Mod 了ĺ—? - + Filetree 文件树 - + A directory view of this mod 这个 Mod 的目录视图 - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -3052,53 +3200,53 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">所ĺšçš„更改将会立即作用于çŁç›ä¸Šçš„文件,所以请</span><span style=" font-size:9pt; font-weight:600;">谨慎操作</span><span style=" font-size:9pt;">。</span></p></body></html> - + Previous - + Next 下一步 - + Close ĺ…łé—­ - + &Delete &ĺ é™¤ - + &Rename &é‡Ťĺ‘˝ĺŤ - + &Hide &éšč—Ź - + &Unhide &取ć¶éšč—Ź - + &Open &打开 - + &New Folder &新建文件夹 - - + + Save changes? äżťĺ­ć›´ć”ąĺ—? @@ -3107,79 +3255,79 @@ p, li { white-space: pre-wrap; } äżťĺ­ć›´ć”ąĺ° "%1"? - + File Exists 文件已ĺ­ĺś¨ - + A file with that name exists, please enter a new one 文件ĺŤĺ·˛ĺ­ĺś¨ďĽŚčŻ·čľ“ĺ…Ąĺ…¶ĺ®ĺŤç§° - + failed to move file 无法移动文件 - + failed to create directory "optional" ć— ćł•ĺ›ĺ»ş "optional" 目录 - - + + Info requested, please wait 请求信ćŻĺ·˛ĺŹ‘ĺ‡şďĽŚčŻ·ç¨ŤĺŽ - + (description incomplete, please visit nexus) (描述信ćŻä¸Ťĺ®Ść•´ďĽŚčŻ·č®żé—®N网) - + Current Version: %1 当前ç‰ćś¬: %1 - + No update available 没有可用的更新 - + Main 主č¦ć–‡ä»¶ - - + + Save changes to "%1"? - + Update ć›´ć–° - + Optional 可选文件 - + Old 旧档 - + Misc 杂项 - + Unknown 未知 @@ -3188,13 +3336,13 @@ p, li { white-space: pre-wrap; } 请求失败: %1 - + <a href="%1">Visit on Nexus</a> <a href="%1">访问N网</a> - - + + Confirm 确认 @@ -3211,98 +3359,98 @@ p, li { white-space: pre-wrap; } 例外: %1 - + Failed to delete %1 ć— ćł•ĺ é™¤ %1 - + Are sure you want to delete "%1"? 确定č¦ĺ é™¤ "%1" ĺ—? - + Are sure you want to delete the selected files? 确定č¦ĺ é™¤ć‰€é€‰çš„文件ĺ—? - - + + New Folder 新建文件夹 - + Failed to create "%1" ć— ćł•ĺ›ĺ»ş "%1" - - + + Replace file? 替换文件? - + There already is a hidden version of this file. Replace it? ĺ·˛ĺ­ĺś¨ĺŚĺŤć–‡ä»¶ďĽŚä˝†čŻĄć–‡ä»¶č˘«éšč—Źäş†ă€‚确定č¦č¦†ç›–ĺ—? - - + + File operation failed 文件操作错误 - - + + Failed to remove "%1". Maybe you lack the required file permissions? 无法移除 "%1"。也许您需č¦č¶łĺ¤źçš„文件ćťé™ďĽź - - + + failed to rename %1 to %2 ć— ćł•é‡Ťĺ‘˝ĺŤ %1 为 %2 - + There already is a visible version of this file. Replace it? ĺ·˛ĺ­ĺś¨ĺŚĺŤć–‡ä»¶ă€‚确定č¦č¦†ç›–ĺ—? - + Un-Hide 取ć¶éšč—Ź - + Hide éšč—Ź - + Please enter a name - - + + Error 错误 - + Invalid name. Must be a valid file name - + A tweak by that name exists - + Create Tweak @@ -3438,8 +3586,9 @@ p, li { white-space: pre-wrap; } - installed version: %1, newest version: %2 - 当前ç‰ćś¬: %1,最新ç‰ćś¬: %2 + installed version: "%1", newest version: "%2" + installed version: %1, newest version: %2 + 当前ç‰ćś¬: %1,最新ç‰ćś¬: %2 Name @@ -3640,17 +3789,17 @@ p, li { white-space: pre-wrap; } NexusInterface - + Failed to guess mod id for "%1", please pick the correct one - + empty response 未响应 - + invalid response ć— ć•的响应 @@ -4616,85 +4765,93 @@ Right now this has very limited functionality ESP 文件没有找ĺ°: %1 - + Mod Index - - + + Flags + + + + + unknown - + Name of your mods - + Load priority of your mod. The higher, the more "important" it is and thus overwrites data from plugins with lower priority. - + The modindex determins the formids of objects originating from this mods. - + failed to update esp info for file %1 (source id: %2), error: %3 - + esp not found: %1 - + Confirm 确认 - + Really enable all plugins? - + Really disable all plugins? - + The file containing locked plugin indices is broken - - failed to open output file: %1 - 无法打开输出文件: %1 + 无法打开输出文件: %1 - + Some of your plugins have invalid names! These plugins can not be loaded by the game. Please see mo_interface.log for a list of affected plugins and rename them. 您的一些插件ĺŤç§°ć— ć•ďĽčż™äş›ćŹ’ä»¶ć— ćł•č˘«ć¸¸ćŹč˝˝ĺ…Ąă€‚请查看 mo_interface.log 来确认那些受影响的插件并重命ĺŤĺ®ä»¬ă€‚ - + + BOSS dll incompatible + + + + Missing Masters - + Enabled Masters - + failed to restore load order for %1 @@ -4707,17 +4864,17 @@ Right now this has very limited functionality 最é«ĺ€Ľ - + This plugin can't be disabled (enforced by the game) 这个插件不č˝č˘«ç¦ç”¨ (由游ćŹć‰§čˇŚ) - + Origin: %1 隶属于: %1 - + Name ĺŤç§° @@ -4726,7 +4883,7 @@ Right now this has very limited functionality Mod ĺŤç§° - + Priority äĽĺ…çş§ @@ -4743,6 +4900,19 @@ Right now this has very limited functionality 这些索引决定了那些通过 Mod 引入的物ĺ“,法术等等的 ID。ID 的一č¬ć ĽĺĽŹćŻ "xxyyyyyy",其中 "xx" ĺ°±ćŻčż™ä¸Şçš„索引,而 "yyyyyy" ĺ™ćŻç”± Mod 自己所决定的。 + + PreviewDialog + + + Preview + + + + + Close + ĺ…łé—­ + + ProblemsDialog @@ -4788,82 +4958,72 @@ p, li { white-space: pre-wrap; } 无法应用 Ini 设定 - + invalid profile name %1 - + failed to create %1 ć— ćł•ĺ›ĺ»ş %1 - - failed to open temporary file - - - - - failed to open "%1" for writing - - - - + failed to write mod list: %1 - + failed to update tweaked ini file, wrong settings may be used: %1 - + failed to create tweaked ini: %1 - - - - - + + + + + invalid index %1 ć— ć•的索引 %1 - + Overwrite directory couldn't be parsed - + invalid priority %1 ć— ć•çš„äĽĺ…çş§ %1 - + failed to parse ini file (%1) - + failed to parse ini file (%1): %2 ć— ćł•č§Łćž Ini 文件 (%1): %2 - - + + failed to modify "%1" - + Delete savegames? - + Do you want to delete local savegames? (If you select "No", the save games will show up again if you re-enable local savegames) @@ -5240,12 +5400,12 @@ p, li { white-space: pre-wrap; } 无法设置代ç†DLL加载 - + "%1" is missing "%1" 缺失 - + Permissions required 需č¦ćťé™ @@ -5254,8 +5414,8 @@ p, li { white-space: pre-wrap; } 当前的用ć·ĺ¸ć·ć˛ˇćś‰čżčˇŚ Mod Organizer 所需的访问ćťé™ďĽŚĺż…č¦çš„修改将会自动进行 (MO 的目录将会为当前用ć·ĺ¸ć·č€ŚĺŹĺľ—可写),您将被请求使用管ç†ĺ‘ćťé™ć‰§čˇŚ "mo_helper.exe"。 - - + + Woops çłźçł• @@ -5264,66 +5424,66 @@ p, li { white-space: pre-wrap; } Mod Organizer ĺ´©ćşäş†ďĽč¦ç”źć诊断文件ĺ—?如果您发é€čż™ä¸Şć–‡ä»¶ĺ°ć‘的邮箱 (sherb@gmx.net) 里的话,这个 Bug 会ĺľćś‰ĺŹŻč˝č˘«äż®ĺ¤Ťă€‚ - + The current user account doesn't have the required access rights to run Mod Organizer. The neccessary changes can be made automatically (the MO directory will be made writable for the current user account). You will be asked to run "helper.exe" with administrative rights. - + ModOrganizer has crashed! Should a diagnostic file be created? If you send me this file (%1) to sherb@gmx.net, the bug is a lot more likely to be fixed. Please include a short description of what you were doing when the crash happened - + ModOrganizer has crashed! Unfortunately I was not able to write a diagnostic file: %1 Mod Organizer ĺ´©ćşäş†ďĽé—憾的ćŻďĽŚć‘无法生ć诊断文件: %1 - - + + Mod Organizer Mod Organizer - + An instance of Mod Organizer is already running Mod Organizer 的一个实例正在čżčˇŚ - + No game identified in "%1". The directory is required to contain the game binary and its launcher. "%1" 中未检测ĺ°ć¸¸ćŹă€‚请确保该路径中包ĺ«ć¸¸ćŹć‰§čˇŚç¨‹ĺşŹä»ĄĺŹŠĺŻąĺş”çš„ Launcher 文件。 - - + + Please select the game to manage 请选择ćłč¦ç®ˇç†çš„ć¸¸ćŹ - + Please select the game edition you have (MO can't start the game correctly if this is set incorrectly!) - + Please use "Help" from the toolbar to get usage instructions to all elements 请使用工具栏上的“帮助”来获得所有ĺ…ç´ çš„ä˝żç”¨čŻ´ćŽ - - + + <Manage...> <管ç†...> - + failed to parse profile %1: %2 无法解ćžé…Ťç˝®ć–‡ä»¶ %1: %2 - - + + failed to find "%1" 未č˝ć‰ľĺ° "%1" @@ -5332,17 +5492,17 @@ p, li { white-space: pre-wrap; } 编ç é”™čŻŻďĽŚčŻ·ĺ‘作者汇报此 Bug 并且附上 mo_interface.log ć–‡ä»¶ďĽ - + failed to access %1 无法访问 %1 - + failed to set file time %1 无法设置文件时间 %1 - + failed to create %1 ć— ćł•ĺ›ĺ»ş %1 @@ -5378,12 +5538,12 @@ p, li { white-space: pre-wrap; } 无法打开 %1 - + Script Extender 脚本拓展 - + Proxy DLL 代ç†DLL @@ -5408,22 +5568,22 @@ Start elevated anyway? (you will be asked if you want to allow ModOrganizer.exe - + failed to spawn "%1": %2 无法生ć "%1": %2 - + "%1" doesn't exist "%1" 不ĺ­ĺś¨ - + failed to inject dll into "%1": %2 无法注入 dll ĺ° "%1": %2 - + failed to run "%1" ć— ćł•čżčˇŚ "%1" @@ -5484,6 +5644,11 @@ Start elevated anyway? (you will be asked if you want to allow ModOrganizer.exe invalid game type %1 + + + failed to open temporary file + + QueryOverwriteDialog @@ -5718,18 +5883,18 @@ Start elevated anyway? (you will be asked if you want to allow ModOrganizer.exe 需č¦ç®ˇç†ĺ‘çš„ćťé™ćťĄć›´ć”ąčż™ä¸Şă€‚ - - + + attempt to store setting for unknown plugin "%1" - + Confirm 确认 - + Changing the mod directory affects all your profiles! Mods not present (or named differently) in the new location will be disabled in all profiles. There is no way to undo this unless you backed up your profiles manually. Proceed? 修改 Mod 目录将会影响您的配置ďĽć–°ç›®ĺ˝•中不ĺ­ĺś¨ (ć–者ĺŤç§°ä¸ŤĺŚ) çš„ Mod 将在所有配置中被ç¦ć­˘ćŽ‰ă€‚ć­¤ć“Ťä˝ść— ćł•ć’¤é”€ďĽŚć‰€ä»Ąć‰§čˇŚć­¤ć“Ťä˝śĺ‰Ťĺ»şč®®ĺ…备份下自己的配置。立即执行? @@ -5878,52 +6043,57 @@ p, li { white-space: pre-wrap; } é…Ťç˝® Mod ç±»ĺ« - + Disable automatic internet features - + Disable automatic internet features. This does not affect features that are explicitly invoked by the user (like checking mods for updates, endorsing, opening the web browser) - + Offline Mode - + Use a proxy for network connections. - + Use a proxy for network connections. This uses the system-wide settings which can be configured in Internet Explorer. Please note that MO will start up a few seconds slower on some systems when using a proxy. - + Use HTTP Proxy (Uses System Settings) - - Known Servers (Dynamically updated every download) + + Associate with "Download with manager" links + + + + + Known Servers (updated on download) - + Preferred Servers (Drag & Drop) - + Blacklisted Plugins (use <del> to remove): - + Mod Organizer needs a dll to be injected into the game so all mods are visible to it. There are several means to do this: *Mod Organizer* (default) In this mode the Mod Organizer itself injects the dll. The disadvantage is that you always have to start the game through MO or a link created by it. @@ -5992,12 +6162,12 @@ p, li { white-space: pre-wrap; } 自动登录 - + Username 账号 - + Password ĺŻ†ç  @@ -6014,52 +6184,52 @@ p, li { white-space: pre-wrap; } 首选外é¨ćµŹč§ĺ™¨ - + Plugins - + Author: - + Version: - + Description: - + Key - + Value - + Workarounds č§Łĺ†łć–ąćˇ - + Steam App ID Steam App ID - + The Steam AppID for your game 您游ćŹçš„ Steam AppID - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -6086,12 +6256,12 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">其中 22380 ĺ°±ćŻć‚¨č¦ć‰ľçš„ ID。</span></p></body></html> - + Load Mechanism ĺŠ č˝˝ćśşĺ¶ - + Select loading mechanism. See help for details. 选择加载机ĺ¶ďĽŚä˝żç”¨ĺ¸®ĺŠ©ćźĄçś‹ć›´ĺ¤šç»†čŠ‚ă€‚ @@ -6116,17 +6286,17 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">代ç†DLL</span><span style=" font-size:9pt;"> 在这种模式下,MO 将替换一个游ćŹçš„ dll 来加载 MO (当然原来的 dll),这仅适用于 Steam ç‰ćś¬çš„游ćŹďĽŚĺą¶ä¸”只在 Skyrim 上ĺščż‡ćµ‹čŻ•ă€‚čŻ·ĺŹŞĺś¨ĺ…¶ĺ®ĺŠ č˝˝ćśşĺ¶ä¸Ťč˝ĺ·Ąä˝śçš„ć…况下才使用ĺ®ă€‚</span></p></body></html> - + NMM Version NMM ç‰ćś¬ - + The Version of Nexus Mod Manager to impersonate. ćłč¦ć¨ˇć‹źçš„ NMM ç‰ćś¬ĺŹ·ă€‚ - + Mod Organizer uses an API provided by the Nexus to provide features like checking for updates and downloading files. Unfortunately this API has not been made available officially to third party tools like MO so we have to impersonate the Nexus Mod Manager to be allowed in. On top of this Nexus has used the client identification to lock out outdated versions of NMM to force users to update. This means that MO also needs to impersonate the new version of NMM even if MO doesn't need an update. Therefore you can configure the version to identify as here. Please note that MO does identify itself as MO to the webserver, it's not lying about what it is. It is merely adding a "compatible" NMM version to the user agent. @@ -6139,7 +6309,7 @@ tl;dr-version: If Nexus-features don't work, insert the current version num ĺŹć›´ç‰ćś¬ĺŹ·: 如果N网功č˝ä¸Ťć­Łĺ¸¸äş†ďĽŚé‚ŁäąčŻ·ĺś¨čż™é‡Śčľ“ĺ…Ą NMM 的当前ç‰ćś¬ĺŹ·ĺą¶é‡ŤčŻ•ä¸€ä¸‹ă€‚ - + These are workarounds for problems with Mod Organizer. Please make sure you read the help text before changing anything here. @@ -6152,48 +6322,48 @@ tl;dr-version: If Nexus-features don't work, insert the current version num 例如: 0.33.1 - + Enforces that inactive ESPs and ESMs are never loaded. 强ĺ¶ć‰§čˇŚďĽŚćśŞćż€ć´»çš„ ESP ĺ’Ś ESM 将不会被加载。 - + It seems that the Games occasionally load ESP or ESM files even if they haven't been activated as plugins. I don't yet know what the circumstances are, but user reports imply it is in some cases unwanted. If this is checked, ESPs and ESMs not checked in the List are invisible to the game and can not be loaded. 看来,游ćŹĺ¶ĺ°”会加载一些没有被激活ć插件的 ESP ć– ESM 文件。 ć‘čżĺ°šä¸ŤçźĄé“ĺ®ĺś¨ä»€äąć…况下会这样,但ćŻćś‰ç”¨ć·ćŠĄĺ‘ŠčŻ´ĺ®ĺś¨ćźäş›ć…况下ćŻĺľä¸Ťĺż…č¦çš„。如果这个选项被选中,那äąĺś¨ĺ—表中没有被勾选的 ESP ĺ’Ś ESM 将不会在游ćŹä¸­ĺ‡şçŽ°ďĽŚĺą¶ä¸”äąźä¸ŤäĽšč˘«č˝˝ĺ…Ąă€‚ - + Hide inactive ESPs/ESMs éšč—ŹćśŞćż€ć´»çš„ ESP ć– ESM - + If checked, files (i.e. esps, esms and bsas) belonging to the core game can not be disabled in the UI. (default: on) - + If checked, files (i.e. esps, esms and bsas) belonging to the core game can not be disabled in the UI. (default: on) Uncheck this if you want to use Mod Organizer with total conversions (like Nehrim) but be aware that the game will crash if required files are not enabled. - + Force-enable game files - - + + For Skyrim, this can be used instead of Archive Invalidation. It should make AI redundant for all Profiles. For the other games this is not a sufficient replacement for AI! 对于天际,这个可以用来取代档ćˇć— ć•化,ĺ®ĺ°†äĽšä˝żćˇŁćˇć— ć•化对所有配置é˝ĺŹĺľ—多余。 但ćŻĺŻąäşŽĺ…¶ĺ®ć¸¸ćŹďĽŚčż™ĺą¶ä¸ŤćŻä¸€ä¸ŞĺľĺĄ˝çš„替代ĺ“ďĽ - + Back-date BSAs 重置 BSA 文件修改日期 @@ -6202,27 +6372,27 @@ For the other games this is not a sufficient replacement for AI! čż™äş›ćŻ Mod Organizer 的问é˘č§Łĺ†łć–ąćˇă€‚ĺ®ä»¬é€šĺ¸¸ćŻä¸Ťĺż…修改的,请确保在您ĺŹć›´äş†čż™é‡Śçš„任何东西之前已经读过了帮助文档。 - + Select download directory 选择下载目录 - + Select mod directory 选择 Mod 目录 - + Select cache directory 选择缓ĺ­ç›®ĺ˝• - + Confirm? 确认? - + This will make all dialogs show up again where you checked the "Remember selection"-box. Continue? 此操作将导致之前勾选的“记住ć‘的选项”询问窗口再次出现,确定č¦é‡Ťç˝®ĺŻąčŻťćˇ†ďĽź diff --git a/src/organizer_zh_TW.ts b/src/organizer_zh_TW.ts index 722f8d2c..1fc6b17b 100644 --- a/src/organizer_zh_TW.ts +++ b/src/organizer_zh_TW.ts @@ -1,6 +1,50 @@ + + AboutDialog + + + + About + + + + + Revision: + + + + + Used Software + + + + + Credits + + + + + Translators + + + + + Others + + + + + Close + é—śé–‰ + + + + No license + + + ActivateModsDialog @@ -240,25 +284,30 @@ p, li { white-space: pre-wrap; } DownloadList - + Name ĺŤç¨± - + Filetime 檔ćˇć™‚é–“ - + Done 完ć - + Information missing, please select "Query Info" from the context menu to re-retrieve. 訊ćŻä¸źĺ¤±ďĽŚč«‹ĺś¨ĺŹłéŤµčŹśĺ–®čŁˇé¸ć“‡â€śćźĄč©˘č¨ŠćŻâ€ťäľ†é‡Ťć–°ćŞ˘ç´˘ă€‚ + + + pending download + + DownloadListWidget @@ -311,125 +360,135 @@ p, li { white-space: pre-wrap; } DownloadListWidgetCompactDelegate - + Installed 已安裝 - + Uninstalled - + Done 完ć - - - - + + + + Are you sure? 確定? - + This will remove all finished downloads from this list and from disk. 這將ćśĺľžĺ—表和çŁç˘źä¸­ç§»é™¤ć‰€ćś‰ĺ·˛ĺ®Ść的下載。 - + This will remove all installed downloads from this list and from disk. 這將ćśĺľžĺ—表和çŁç˘źä¸­ç§»é™¤ć‰€ćś‰ĺ·˛ĺ®‰čŁťçš„ä¸‹čĽ‰é …ç›®ă€‚ - + This will permanently remove all finished downloads from this list (but NOT from disk). - + This will permanently remove all installed downloads from this list (but NOT from disk). - + Install 安裝 - + Query Info ćźĄč©˘č¨ŠćŻ - + Delete - + Un-Hide 取ć¶éš±č—Ź - + Remove from View - + Remove 移除 - + Cancel ĺŹ–ć¶ - + + < mod %1 file %2 > + + + + + Pending + + + + Paused - + Fetching Info 1 - + Fetching Info 2 - + Pause ćš«ĺś - + Resume 繼續 - + Delete Installed... - + Delete All... - + Remove Installed... 移除已安裝的項目... - + Remove All... 移除所有... @@ -437,68 +496,78 @@ p, li { white-space: pre-wrap; } DownloadListWidgetDelegate - - - - + + + + Are you sure? 確定? - + This will remove all finished downloads from this list and from disk. 這將ćśĺľžĺ—表和çŁç˘źä¸­ç§»é™¤ć‰€ćś‰ĺ·˛ĺ®Ść的下載。 - + This will remove all installed downloads from this list and from disk. 這將ćśĺľžĺ—表和çŁç˘źä¸­ç§»é™¤ć‰€ćś‰ĺ·˛ĺ®‰čŁťçš„ä¸‹čĽ‰é …ç›®ă€‚ - + This will remove all finished downloads from this list (but NOT from disk). - + This will remove all installed downloads from this list (but NOT from disk). - + Install 安裝 - + Query Info ćźĄč©˘č¨ŠćŻ - + Delete - + Un-Hide 取ć¶éš±č—Ź - + Remove from View - + Remove 移除 - + Cancel ĺŹ–ć¶ + + + < mod %1 file %2 > + + + + + Pending + + Fetching Info 1 @@ -510,32 +579,32 @@ p, li { white-space: pre-wrap; } - + Pause ćš«ĺś - + Resume 繼續 - + Delete Installed... - + Delete All... - + Remove Installed... 移除已安裝的項目... - + Remove All... 移除所有... @@ -548,75 +617,76 @@ p, li { white-space: pre-wrap; } é‡Ťć–°ĺ‘˝ĺŤ "%1 "為 "%2" 時出錯 - + Download again? 重新下載? - + A file with the same name has already been downloaded. Do you want to download it again? The new file will receive a different name. ĺ·˛ĺ­ĺś¨ĺŚĺŤćŞ”ćˇă€‚您確定č¦é‡Ťć–°ä¸‹čĽ‰ďĽźć–°ćŞ”ćˇĺ°‡ä˝żç”¨ä¸ŤĺŚçš„檔ćˇĺŤă€‚ - + failed to download %1: could not open output file: %2 下載 %1 失敗: 無法開啟輸出檔ćˇ: %2 - + Wrong Game - + The download link is for a mod for "%1" but this instance of MO has been set up for "%2". - - - - - - - - - - - - - - + + + + + + + + + + + + + + + invalid index 無ć•的索引 - + failed to delete %1 無法ĺŞé™¤ %1 - + failed to delete meta file for %1 無法從 %1 中ĺŞé™¤ mate ćŞ”ćˇ - - - - - - + + + + + + invalid index %1 無ć•的索引 %1 - + Please enter the nexus mod id 請輸入N網 Mod ID - + Mod ID: Mod ID: @@ -625,38 +695,43 @@ p, li { white-space: pre-wrap; } 無ć•的字順索引 %1 - + Information updated 訊ćŻĺ·˛ć›´ć–° - - + + No matching file found on Nexus! Maybe this file is no longer available or it was renamed? 無法在N網上找ĺ°ĺŚąé…Ťçš„ćŞ”ćˇďĽäąźč¨±é€™ĺ€‹ćŞ”ćˇĺ·˛ç¶“不ĺ­ĺś¨äş†ć–ćŻĺ®ć”ąĺŤäş†ďĽź - + No file on Nexus matches the selected file by name. Please manually choose the correct one. 所é¸çš„檔ćˇç„ˇćł•在N網上找ĺ°ĺŹŻĺŚąé…Ťçš„é …ç›®ďĽŚč«‹ć‰‹ĺ‹•é¸ć“‡ć­Łç˘şçš„一個。 - + No download server available. Please try again later. 沒有可用的下載伺服器,請稍後再ĺ—試下載。 - + Failed to request file info from nexus: %1 無法在N網上請求檔ćˇč¨ŠćŻ: %1 - + + Download failed. Server reported: %1 + + + + Download failed: %1 (%2) 下載失敗: %1 (%2) - + failed to re-open %1 無法重新開啟 %1 @@ -768,7 +843,7 @@ Right now the only case I know of where this needs to be overwritten is for the - + If checked, MO will be closed once the specified executable is run. 如果é¸ä¸­ďĽŚé‚ŁéşĽ MO 將在指定的程式é‹čˇŚĺľŚé—śé–‰ă€‚ @@ -785,7 +860,7 @@ Right now the only case I know of where this needs to be overwritten is for the - + Add 添加 @@ -801,47 +876,64 @@ Right now the only case I know of where this needs to be overwritten is for the 移除 - + + Close + é—śé–‰ + + + Select a binary é¸ć“‡ä¸€ĺ€‹ĺŹŻĺź·čˇŚćŞ”ćˇ - + Executable (%1) 可執行程式 (%1) - + Java (32-bit) required - + MO requires 32-bit java to run this application. If you already have it installed, select javaw.exe from that installation as the binary. - + Select a directory é¸ć“‡ä¸€ĺ€‹ç›®éŚ„ - + Confirm 確認 - + Really remove "%1" from executables? çśźçš„č¦ä»Žç¨‹ĺĽŹĺ—表中移除 "%1" ĺ—? - + Modify 更改 - + + + Save Changes? + + + + + + You made changes to the current executable, do you want to save them? + + + + MO must be kept running or this application will not work correctly. MO ĺż…é ćŚçşŚé‹čˇŚďĽŚĺ¦ĺ‰‡č©˛ç¨‹ĺĽŹĺ°‡ç„ˇćł•正常工作。 @@ -1287,7 +1379,7 @@ Note: This installer will not be aware of other installed mods! 程式é‹čˇŚć™‚ MO 將被鎖定。 - + Unlock 解鎖 @@ -1295,7 +1387,7 @@ Note: This installer will not be aware of other installed mods! LogBuffer - + failed to write log to %1: %2 無法生ćć—ĄčŞŚĺ° %1: %2 @@ -1316,23 +1408,23 @@ Note: This installer will not be aware of other installed mods! MainWindow - - + + Categories - + Profile é…Ťç˝®ćŞ”ćˇ - + Pick a module collection é¸ć“‡ä¸€ĺ€‹é…Ťç˝®ćŞ”ćˇ - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1347,44 +1439,44 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">請注意: 當前您的配置檔ćˇçš„ esp 加載順序並不ćŻĺ†é–‹ĺ„˛ĺ­çš„。</span></p></body></html> - + Refresh list 重新整ç†ĺ—表 - + Refresh list. This is usually not necessary unless you modified data outside the program. 重新整ç†ĺ—表,這通常不ćŻĺż…é çš„,除非您在程式之外修改了檔ćˇçš„數據。 - + List of available mods. - + This is a list of installed mods. Use the checkboxes to activate/deactivate mods and drag & drop mods to change their "installation" orders. - + Filter éŽćżľĺ™¨ - + No groups - + Nexus IDs N網 ID - - - + + + Namefilter @@ -1393,12 +1485,12 @@ p, li { white-space: pre-wrap; } é–‹ĺ§‹ - + Pick a program to run. é¸ć“‡č¦é‹čˇŚçš„程式。 - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1413,12 +1505,12 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">您可以添加新的工具ĺ°ć­¤ĺ—表中,但ć‘不č˝äżťč­‰ä¸€äş›ć‘沒有測試éŽçš„ĺ·Ąĺ…·č˝ĺ¤źć­Łĺ¸¸ĺ·Ąä˝śă€‚</span></p></body></html> - + Run program é‹čˇŚç¨‹ĺĽŹ - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1431,17 +1523,17 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">在 Mod Organizer 啟用的狀態下é‹čˇŚćŚ‡ĺ®šçš„ç¨‹ĺĽŹă€‚</span></p></body></html> - + Run é‹čˇŚ - + Create a shortcut in your start menu or on the desktop to the specified program - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1454,7 +1546,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">建立一個開始菜單捷徑,使您可以直接在 MO 激活狀態下é‹čˇŚćŚ‡ĺ®šçš„ç¨‹ĺĽŹă€‚</span></p></body></html> - + Shortcut @@ -1479,12 +1571,12 @@ p, li { white-space: pre-wrap; } ĺ„˛ĺ­ - + List of available esp/esm files 可用 esp ć– esm 檔ćˇçš„ĺ—表 - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1501,12 +1593,12 @@ p, li { white-space: pre-wrap; } 重č¦: 您可以在這裡更改 BSA çš„é †ĺşŹďĽŚä¸ŤéŽ Mod 的安裝順序ćśĺ„Şĺ…ć–Ľé€™čŁˇçš„č¨­ĺ®šďĽ - + List of available BS Archives. Archives not checked here are not managed by MO and ignore installation order. 可用 BSA 檔ćˇçš„ĺ—表。未勾é¸çš„項目不ćśč˘« MO 管ç†ä¸¦ä¸”ćśĺż˝ç•Ąĺ®‰čŁťé †ĺşŹă€‚ - + BSA files are archives (comparable to .zip files) that contain data assets (meshes, textures, ...) to be used by the game. As such they "compete" with loose files in your data directory over which is loaded. By default, BSAs that share their base name with an enabled ESP (i.e. plugin.esp and plugin.bsa) are automatically loaded and will have precedence over all loose files, the installation order you set up to the left is then ignored! @@ -1517,66 +1609,71 @@ BSAs checked here are loaded in such a way that your installation order is obeye 這裡勾é¸çš„ BSA ĺ°‡ćśäľťĺľžć‚¨çš„安裝順序,並且ćśč‡ŞčˇŚčŞżć•´ĺŠ čĽ‰é †ĺşŹă€‚ - - + + File ćŞ”ćˇ - + <html><head/><body><p>Marked Archives (<img src=":/MO/gui/warning_16"/>) are still loaded on Skyrim but the <a href="http://forums.bethsoft.com/topic/1354395-update-bsas-and-you/"><span style=" text-decoration: underline; color:#0000ff;">regular file override</span></a> mechanism will apply: Loose files override BSAs, no matter the mod/plugin priority.</p></body></html> - + Mod Mod - + Data Data - + + Sort + + + + refresh data-directory overview é‡Ťć–°ć•´ç† Data 目錄總覽 - + Refresh the overview. This may take a moment. 重新整ç†ç¸˝č¦˝ďĽŚé€™ĺŹŻč˝éś€č¦ä¸€äş›ć™‚間。 - - - + + + Refresh é‡Ťć–°ć•´ç† - + This is an overview of your data directory as visible to the game (and tools). 這ćŻĺś¨éŠć˛ä¸­ĺŹŻč¦‹çš„ Data 目錄 (ĺ’Śĺ·Ąĺ…·) 的總覽。 - - + + Filter the above list so that only conflicts are displayed. éŽćżľä¸Šéť˘çš„ĺ—表,使您只č˝çś‹ĺ°ćś‰čˇťçŞçš„檔ćˇă€‚ - + Show only conflicts ĺŹŞéˇŻç¤şčˇťçŞ - + Saves ĺ­ćŞ” - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1593,160 +1690,160 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">如果您在右鍵菜單中點擊“修復 Mod”,那麼 MO äľżćśĺ—試激活所有 Mod ĺ’Ś esp 來修復那些缺失的 esp,ĺ®ä¸¦ä¸Ťćśç¦ç”¨ä»»ä˝•東西ďĽ</span></p></body></html> - + Downloads 下載 - + This is a list of mods you downloaded from Nexus. Double click one to install it. 這ćŻç•¶ĺ‰Ťĺ·˛ä¸‹čĽ‰çš„ Mod çš„ĺ—表,雙擊進行安裝。 - + Compact 緊湊 - + Show Hidden - + Tool Bar 工具欄 - + Install Mod 安裝 Mod - + Install &Mod 安裝 &Mod - + Install a new mod from an archive 通éŽĺŁ“ç¸®ĺŚ…äľ†ĺ®‰čŁťä¸€ĺ€‹ć–° Mod - + Ctrl+M Ctrl+M - + Profiles é…Ťç˝®ćŞ”ćˇ - + &Profiles &é…Ťç˝®ćŞ”ćˇ - + Configure Profiles č¨­ĺ®šé…Ťç˝®ćŞ”ćˇ - + Ctrl+P Ctrl+P - + Executables 可執行程式 - + &Executables &可執行程式 - + Configure the executables that can be started through Mod Organizer é…Ťç˝®ĺŹŻé€šéŽ MO 來啟動的程式 - + Ctrl+E Ctrl+E - - + + Tools - + &Tools - + Ctrl+I Ctrl+I - + Settings 設定 - + &Settings &設定 - + Configure settings and workarounds é…Ťç˝®č¨­ĺ®šĺ’Śč§Łć±şć–ąćˇ - + Ctrl+S Ctrl+S - + Nexus N網 - + Search nexus network for more mods ćśĺ°‹N網以獲取更多 Mod - + Ctrl+N Ctrl+N - - + + Update ć›´ć–° - + Mod Organizer is up-to-date Mod Organizer 現在ćŻćś€ć–°ç‰ćś¬ - - + + No Problems 沒有問題 - + This button will be highlighted if MO discovered potential problems in your setup and provide tips on how to fix them. !Work in progress! @@ -1757,54 +1854,54 @@ Right now this has very limited functionality 當前此功č˝ć‰€č˝ćŹäľ›çš„é …ç›®éťžĺ¸¸ćś‰é™ - - + + Help 幫助 - + Ctrl+H - + Endorse MO - - + + Endorse Mod Organizer - + Toolbar - + Desktop - + Start Menu - + Problems 問題 - + There are potential problems with your setup 您的安裝中ĺ­ĺś¨ć˝›ĺś¨çš„問題 - + Everything seems to be in order 一ĺ‡äş•然有序 @@ -1821,22 +1918,22 @@ Right now this has very limited functionality <li>.Net 未安裝ć–ç‰ćś¬éŽčŠă€‚ćłč¦é‹čˇŚ NCC 您必é ĺ…安裝 .Net,您可以在以下地址中獲取: <a href="%1">%1</a></li> - + Help on UI 介面幫助 - + Documentation Wiki 說ćŽć–‡ćŞ” (ç¶­ĺźş) - + Report Issue 報告問題 - + Tutorials @@ -1845,425 +1942,426 @@ Right now this has very limited functionality 無法儲ĺ­ĺŠ čĽ‰é †ĺşŹ - + failed to save load order: %1 無法儲ĺ­ĺŠ čĽ‰é †ĺşŹ: %1 - + failed to save archives order, do you have write access to "%1"? 無法儲ĺ­ćŞ”ćˇé †ĺşŹďĽŚć‚¨ç˘şĺ®šć‚¨ćś‰ć¬Šé™ć›´ć”ą "%1"? - + + About + + + + + About Qt + + + + Name ĺŤç¨± - + Please enter a name for the new profile - + failed to create profile: %1 無法建立配置檔ćˇ: %1 - + Show tutorial? - + You are starting Mod Organizer for the first time. Do you want to show a tutorial of its basic features? If you choose no you can always start the tutorial from the "Help"-menu. - + Downloads in progress 正在下載 - + There are still downloads in progress, do you really want to quit? 仍有正在進行中的下載,您確定č¦é€€ĺ‡şĺ—ŽďĽź - + failed to read savegame: %1 無法讀取ĺ­ćŞ”: %1 - + Plugin "%1" failed: %2 - + Plugin error - + It appears the plugin "%1" failed to load last startup and caused MO to crash. Do you want to disable it? (Please note: If this is the first time you see this message for this plugin you may want to give it another try. The plugin may be able to recover from the problem) - + Failed to start "%1" 無法啟動 "%1" - + Waiting 稍等 - + Please press OK once you're logged into steam. 當您登入 Steam 時請點擊確定。 - "%1" not found - "%1" ćśŞć‰ľĺ° + "%1" ćśŞć‰ľĺ° - + Start Steam? 啟動 Steam? - + Steam is required to be running already to correctly start the game. Should MO try to start steam now? ćłč¦ć­Łç˘şĺś°ĺ•źĺ‹•éŠć˛ďĽŚSteam ĺż…é č™•ć–Ľé‹čˇŚç‹€ć…‹ďĽŚMO č¦ç«‹ĺŤłĺ•źĺ‹• Steam 嗎? - + Also in: <br> 也在: <br> - + No conflict ć˛’ćś‰čˇťçŞ - + <Edit...> <編輯...> - - Failed to refresh list of esps: %s - - - - + This bsa is enabled in the ini file so it may be required! 該 BSA 已在 Ini 檔ćˇä¸­ĺ•źç”¨ďĽŚĺ› ć­¤ĺ®ĺŹŻč˝ćŻĺż…需的。 - + This archive will still be loaded since there is a plugin of the same name but its files will not follow installation order! 此檔ćˇé‚„ćŻćśč˘«ĺŠ čĽ‰ďĽŚĺ› ç‚şĺ­ĺś¨ĺŚĺŤćŹ’ä»¶ă€‚ä¸ŤéŽĺ®ć‰€ĺŚ…ĺ«çš„的檔ćˇä¸ŤćśéµĺľŞĺ®‰čŁťé †ĺşŹďĽ - + Activating Network Proxy - - + + Installation successful 安裝ć功 - - + + Configure Mod é…Ťç˝® Mod - - + + This mod contains ini tweaks. Do you want to configure them now? ć­¤ Mod ä¸­ĺŚ…ĺ« Ini 設定檔ćˇďĽŚć‚¨ćłçŹľĺś¨ĺ°±ĺ°Ťĺ®ĺ€‘進行配置嗎? - - + + mod "%1" not found Mod "%1" ćśŞć‰ľĺ° - - + + Installation cancelled ĺ®‰čŁťĺ·˛ĺŹ–ć¶ - - + + The mod was not installed completely. Mod 沒有完全安裝。 - + Some plugins could not be loaded - + Too many esps and esms enabled - - + + Description missing - + The game doesn't allow more than 255 active plugins (including the official ones) to be loaded. You have to disable some unused plugins or merge some plugins into one. You can find a guide here: <a href="http://wiki.step-project.com/Guide:Merging_Plugins">http://wiki.step-project.com/Guide:Merging_Plugins</a> - + Choose Mod é¸ć“‡ Mod - + Mod Archive Mod 壓縮包 - + Start Tutorial? - + You're about to start a tutorial. For technical reasons it's not possible to end the tutorial early. Continue? - - + + Download started 開始下載 - + failed to update mod list: %1 無法更新 Mod ĺ—表: %1 - + failed to spawn notepad.exe: %1 無法生ć notepad.exe: %1 - + failed to open %1 無法開啟 %1 - + failed to change origin name: %1 無法更改原始檔ćˇĺŤ: %1 - + Multiple esps activated, please check that they don't conflict. - - + + Create Mod... - + A mod with this name already exists - + Continue? - + The versioning scheme decides which version is considered newer than another. This function will guess the versioning scheme under the assumption that the installed version is outdated. - + + Sorry - + I don't know a versioning scheme where %1 is newer than %2. - + <All> <ĺ…¨é¨> - + <Checked> <已勾é¸> - + Plugin "%1" failed - + failed to init plugin %1: %2 - + The following plugins could not be loaded. The reason may be missing dependencies (i.e. python) or an outdated version: - - Failed to move "%1" from mod "%2" to "%3": %4 - - - - + <Unchecked> <未勾é¸> - + <Update> <有更新> - + <No category> <無類ĺĄ> - + <Conflicted> - + <Not Endorsed> - + failed to rename mod: %1 ç„ˇćł•é‡Ťć–°ĺ‘˝ĺŤ Mod: %1 - + Overwrite? - + This will replace the existing mod "%1". Continue? - + failed to remove mod "%1" - - - + + + failed to rename "%1" to "%2" - - - + + + + Confirm 確認 - + Remove the following mods?<br><ul>%1</ul> - + failed to remove mod: %1 無法移動 Mod: %1 - - + + Failed 失敗 - + Installation file no longer exists 安裝檔ćˇä¸Ťč¤‡ĺ­ĺś¨ - + Mods installed with old versions of MO can't be reinstalled in this way. čŠç‰ MO 安裝的 Mod 無法使用此方法重新安裝。 - - + + You need to be logged in with Nexus to endorse - - + + Extract BSA 解壓 BSA - + This mod contains at least one BSA. Do you want to unpack it? (This removes the BSA after completion. If you don't know about BSAs, just select no) ć­¤ Mod 中至少包ĺ«ä¸€ĺ€‹ BSA。您確定č¦č§ŁĺŁ“ĺ—ŽďĽź (解壓完ć後,BSA 檔ćˇĺ°‡ćśč˘«ĺŞé™¤ă€‚如果您不瞭解 BSA 的話,請é¸ć“‡â€śĺ¦â€ť) - - - + + + failed to read %1: %2 無法讀取 %1: %2 - - + + This archive contains invalid hashes. Some files may be broken. 壓縮包 Hash 值錯誤。é¨ĺ†ćŞ”ćˇĺŹŻč˝ĺ·˛ç¶“ćŤĺŁžă€‚ - + Nexus ID for this Mod is unknown ć­¤ Mod çš„N網 ID 未知 @@ -2276,92 +2374,92 @@ This function will guess the versioning scheme under the assumption that the ins é¸ć“‡ĺ„Şĺ…ç´š - + Really enable all visible mods? 確定č¦ĺ•źç”¨ĺ…¨é¨ĺŹŻč¦‹çš„ Mod 嗎? - + Really disable all visible mods? 確定č¦ç¦ç”¨ĺ…¨é¨ĺŹŻč¦‹çš„ Mod 嗎? - + Choose what to export - + Everything - + All installed mods are included in the list - + Active Mods - + Only active (checked) mods from your current profile are included - + Visible - + All mods visible in the mod list are included - + export failed: %1 - + Install Mod... 安裝 Mod... - + Enable all visible 啟用所有可見項目 - + Disable all visible ç¦ç”¨ć‰€ćś‰ĺŹŻč¦‹é …ç›® - + Check all for update 檢查更新 - + Export to csv... - + Sync to Mods... ĺŚć­Ąĺ° Mod... - + Restore Backup - + Remove Backup... @@ -2370,312 +2468,362 @@ This function will guess the versioning scheme under the assumption that the ins č¨­ĺ®šéˇžĺĄ - + Primary Category - + Change versioning scheme - + Un-ignore update - + Ignore update - + Rename Mod... 重新命ĺŤ... - + Remove Mod... 移除 Mod... - + Reinstall Mod 重新安裝 Mod - + Un-Endorse - - + + Endorse - + Won't endorse - + Endorsement state unknown - + Ignore missing data - + Visit on Nexus 在N網上ćµč¦˝ - + Open in explorer 在檔ćˇç¸˝ç®ˇä¸­é–‹ĺ•ź - + Information... 訊ćŻ... - - + + Exception: 例外: - - + + Unknown exception 未知的例外 - + <Multiple> - + + Really delete "%1"? + + + + Fix Mods... 修復 Mod... - - + + Delete + + + + + failed to remove %1 無法ĺŞé™¤ %1 - - + + failed to create %1 無法建立 %1 - + Can't change download directory while downloads are in progress! 下載檔ćˇć™‚不č˝äż®ć”ąä¸‹čĽ‰ç›®éŚ„ďĽ - + Download failed 下載失敗 - + failed to write to file %1 ç„ˇćł•ĺŻ«ĺ…ĄćŞ”ćˇ %1 - + %1 written 已寫入 %1 - + Select binary é¸ć“‡ĺŹŻĺź·čˇŚćŞ”ćˇ - + Binary - + Enter Name 輸入ĺŤç¨± - + Please enter a name for the executable 請為程式輸入一個ĺŤç¨± - + Not an executable 不ćŻĺŹŻĺź·čˇŚç¨‹ĺĽŹ - + This is not a recognized executable. 無法č­ĺĄçš„ĺŹŻĺź·čˇŚćŞ”ćˇ - - + + Replace file? 取代檔ćˇďĽź - + There already is a hidden version of this file. Replace it? ĺ·˛ĺ­ĺś¨ĺŚĺŤćŞ”ćˇďĽŚä˝†č©˛ćŞ”ćˇč˘«éš±č—Źäş†ă€‚確定č¦č¦†č“‹ĺ—ŽďĽź - - + + File operation failed 檔ćˇć“Ťä˝śéŚŻčŞ¤ - - + + Failed to remove "%1". Maybe you lack the required file permissions? - + There already is a visible version of this file. Replace it? - + + file not found: %1 + 檔ćˇćśŞć‰ľĺ°: %1 + + + + failed to generate preview for %1 + + + + + Sorry, can't preview anything. This function currently does not support extracting from bsas. + + + + Update available 更新可用 - + Open/Execute 開啟/執行 - + Add as Executable ć·»ĺŠ ç‚şĺŹŻĺź·čˇŚćŞ”ćˇ - + + Preview + + + + Un-Hide 取ć¶éš±č—Ź - + Hide 隱藏 - + Write To File... 寫入檔ćˇ... - + Do you want to endorse Mod Organizer on %1 now? - + Remove 移除 - + Unlock load order - + Lock load order - + + BOSS working + + + + + failed to run boss: %1 + + + + Request to Nexus failed: %1 - + + Executable "%1" not found + + + + + Failed to refresh list of esps: %1 + + + + This will move all files from overwrite into a new, regular mod. Please enter a name: - + Add/Remove Categories - + Replace Categories - - + + login successful 登入ć功 - + login failed: %1. Trying to download anyway 登入失敗: %1,請ĺ—試使用ĺĄçš„方法下載 - + login failed: %1 無法登入: %1 - + login failed: %1. You need to log-in with Nexus to update MO. 登入失敗: %1。您需č¦ç™»ĺ…Ąĺ°N網才č˝ć›´ć–° MO - + Error 錯誤 - + failed to extract %1 (errorcode %2) 無法解壓 %1 (錯誤代碼 %2) - + Extract... 解壓... - + Edit Categories... 編輯類ĺĄ... - + Enable all ĺ…¨é¨ĺ•źç”¨ - + Disable all ĺ…¨é¨ç¦ç”¨ @@ -2722,58 +2870,58 @@ Please enter a name: Mod č¨ŠćŻ - + Textfiles 文字文件 - + A list of text-files in the mod directory. Mod 目錄裡包ĺ«çš„文字文件的ĺ—表。 - + A list of text-files in the mod directory like readmes. Mod 目錄裡包ĺ«çš„文字文件 (類似於自述文檔) çš„ĺ—表。 - - + + Save ĺ„˛ĺ­ - + INI-Files Ini ćŞ”ćˇ - + This is a list of .ini files in the mod. Mod 目錄裡包ĺ«çš„ Ini 檔ćˇçš„ĺ—表。 - + This is a list of .ini files in the mod. These are usually used to configure the behaviour of mods if there are configurable parameters. Mod 目錄裡包ĺ«çš„ Ini 檔ćˇçš„ĺ—表,這些檔ćˇé€šĺ¸¸ç”¨äľ†é…Ťç˝® Mod 的行為,如果有可設定的ĺŹć•¸çš„話。 - + Save changes to the file. 儲ĺ­ć›´ć”ąĺ°ćŞ”ćˇä¸­ă€‚ - + Save changes to the file. This overwrites the original. There is no automatic backup! 儲ĺ­ć›´ć”ąĺ°ćŞ”ćˇä¸­ďĽŚé€™ĺ°‡ćśč¦†č“‹ĺŽźĺ§‹ćŞ”ćˇďĽŚä¸¦ä¸”ć˛’ćś‰č‡Şĺ‹•ĺ‚™ä»˝ďĽ - + Images 圖片 - + Images located in the mod. 位於 Mod 中的圖片。 @@ -2790,13 +2938,13 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">這裡ĺ—出了所有在 Mod 目錄裡的圖片 (.jpg ĺ’Ś .png),如ćŞĺś–等。點擊其中的一個來獲得čĽĺ¤§çš„視圖。</span></p></body></html> - - + + Optional ESPs ĺŹŻé¸ ESP - + List of esps and esms that can not be loaded by the game. 包ĺ«äş†ä¸Ťćśč˘«éŠć˛čĽ‰ĺ…Ąçš„ esp ĺ’Ś esm çš„ĺ—表。 @@ -2820,12 +2968,12 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">大é¨ĺ† Mod ć˛’ćś‰ĺŹŻé¸ esp,因此您正在看的ĺľćś‰ĺŹŻč˝ĺŹŞćŻä¸€ĺ€‹ç©şĺ—表。</span></p></body></html> - + This lists all the images (.jpg and .png) in the mod directory, like screenshots and such. Click one to get a larger view. - + List of esps and esms contained in this plugin that currently can not be loaded by the game. They will not even appear in the esp-list in the main MO-window. They usually contain optional functionality, see the readme. @@ -2833,103 +2981,103 @@ Most mods do not have optional esps, so chances are good you are looking at an e - + Make the selected mod in the lower list unavailable. 使下表中已é¸çš„ Mod 變得不可用。 - + The selected esp (in the lower list) will be pushed into a subdirectory of the mod and will thus become "invisible" to the game. It can then no longer be activated. ĺ·˛é¸çš„ esp (在下表中) ĺ°‡ćśč˘«ć”ľĺ…Ą Mod çš„ĺ­ç›®éŚ„čŁˇďĽŚĺś¨éŠć˛čŁˇĺ°‡ćśč®Šĺľ—“不可見”,並且之後就不č˝ĺ†Ťč˘«ćż€ć´»äş†ă€‚ - + Move a file to the data directory. 移動一個檔ćˇĺ° Data 目錄。 - + This moves a esp to the esp directory so it can be enabled in the main window. Please note that the ESP merely becomes "available", it will not necessarily be loaded! That is configured in the main window of omo. 移動一個 esp 檔ćˇĺ° esp 目錄,這樣ĺ®ĺ°±ĺŹŻä»Ąĺś¨ä¸»çŞ—ĺŹŁä¸­ĺ•źç”¨äş†ă€‚č«‹ćł¨ć„Ź: ESP 只ćŻč®Šĺľ—“可用”,ĺ®ĺą¶ä¸Ťä¸€ĺ®šćśč˘«čĽ‰ĺ…ĄďĽćłč¦č˝˝ĺ…ĄčŻ·ĺś¨ MO 的主窗口中勾é¸ă€‚ - + ESPs in the data directory and thus visible to the game. ESP 在 Data 目錄,因此ĺ®ĺś¨ć¸¸ć˛čَćśč®Šĺľ—可見。 - + These are the mod files that are in the (virtual) data directory of your game and will thus be selecteable in the esp list in the main window. 這些 Mod 檔ćˇä˝Ťć–Ľć‚¨ć¸¸ć˛çš„ (虛擬) Data 目錄裡,因此ĺ®ĺ€‘在主窗口的 esp ĺ—表中ćśč®Šĺľ—可é¸ă€‚ - + Available ESPs 可用 ESP - + Conflicts čˇťçŞ - + The following conflicted files are provided by this mod 以下衝çŞćŞ”ćˇç”±ć­¤ Mod ćŹäľ› - - + + File ćŞ”ćˇ - + Overwritten Mods 覆蓋的 Mod - + The following conflicted files are provided by other mods 以下衝çŞćŞ”ćˇç”±ĺ…¶ĺ® Mod ćŹäľ› - + Providing Mod ćŹäľ›çš„ Mod - + Non-Conflicted files 非衝çŞćŞ”ćˇ - + Categories éˇžĺĄ - + Primary Category - + Nexus Info Nç¶˛č¨ŠćŻ - + Mod ID Mod ID - + Mod ID for this mod on Nexus. N網上此 Mod çš„ ID。 - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -2942,7 +3090,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">N網上此 Mod çš„ ID,如果您在 MO 中下載並安裝了 Mod ĺ®ĺ°‡č˘«č‡Şĺ‹•填寫,ĺ¦ĺ‰‡ć‚¨éś€č¦ć‰‹ĺ‹•輸入。č¦ć‰ľĺ°ć­Łç˘şçš„ ID,在Nç¶˛ć‰ľĺ° Mod。比如,ĺŹé€™ć¨Łçš„連çµ: <a href=" http://www.skyrimnexus.com/downloads/file.php?id=1334"><span style=" text-decoration: underline; color:#0000ff;">http://www.skyrimnexus.com/downloads/file.php?id=1334</span></a> 在上面的例ĺ­ä¸­ďĽŚ1334ĺ°±ćŻć‚¨č¦ć‰ľçš„ ID。此外: ä¸Šéť˘çš„ĺ°±ćŻ Mod Organizer 在N網的連çµďĽŚç‚şä»€éşĽä¸ŤçŹľĺś¨ĺ°±ĺ°é‚ŁčŁˇĺŽ»č´ŠĺŚć‘呢?</span></a></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -2955,32 +3103,32 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Mod 的已安裝ç‰ćś¬ďĽŚć»‘鼠ćŹç¤şĺ°‡éˇŻç¤şN網上的當前ç‰ćś¬ďĽŚĺ·˛ĺ®‰čŁťçš„ç‰ćś¬č™źĺŹŞćś‰ĺś¨ć‚¨é€šéŽ MO 來安裝 Mod 的時候才ćśč‡Şĺ‹•填寫。</span></p></body></html> - + Version ç‰ćś¬ - + Refresh é‡Ťć–°ć•´ç† - + Refresh all information from Nexus. - + Description 描述 - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:7.8pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"><br /></p></body></html> @@ -3000,7 +3148,7 @@ p, li { white-space: pre-wrap; } 類型 - + Name ĺŤç¨± @@ -3009,12 +3157,12 @@ p, li { white-space: pre-wrap; } 大小 (KB) - + Endorse - + Notes @@ -3027,17 +3175,17 @@ p, li { white-space: pre-wrap; } 您支ćŚéŽé€™ĺ€‹ Mod 了嗎? - + Filetree 檔ćˇć¨ą - + A directory view of this mod 這個 Mod 的目錄視圖 - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -3052,53 +3200,53 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">所ĺšçš„更改將ćśç«‹ĺŤłä˝śç”¨ć–ĽçŁç˘źä¸Šçš„檔ćˇďĽŚć‰€ä»Ąč«‹</span><span style=" font-size:9pt; font-weight:600;">謹慎操作</span><span style=" font-size:9pt;">。</span></p></body></html> - + Previous - + Next 下一步 - + Close é—śé–‰ - + &Delete &ĺŞé™¤ - + &Rename &é‡Ťć–°ĺ‘˝ĺŤ - + &Hide &隱藏 - + &Unhide &取ć¶éš±č—Ź - + &Open &開啟 - + &New Folder &新增資料夾 - - + + Save changes? 儲ĺ­ć›´ć”ąĺ—ŽďĽź @@ -3107,79 +3255,79 @@ p, li { white-space: pre-wrap; } 儲ĺ­ć›´ć”ąĺ° "%1"? - + File Exists 檔ćˇĺ·˛ĺ­ĺś¨ - + A file with that name exists, please enter a new one 檔ćˇĺŤĺ·˛ĺ­ĺś¨ďĽŚč«‹čĽ¸ĺ…Ąĺ…¶ĺ®ĺŤç¨± - + failed to move file ç„ˇćł•ç§»ĺ‹•ćŞ”ćˇ - + failed to create directory "optional" 無法建立 "optional" 目錄 - - + + Info requested, please wait 請求訊ćŻĺ·˛ç™Ľĺ‡şďĽŚč«‹ç¨ŤĺľŚ - + (description incomplete, please visit nexus) (描述訊ćŻä¸Ťĺ®Ść•´ďĽŚč«‹č¨Şĺ•ŹN網) - + Current Version: %1 當前ç‰ćś¬: %1 - + No update available 沒有可用的更新 - + Main 主č¦ćŞ”ćˇ - - + + Save changes to "%1"? - + Update ć›´ć–° - + Optional 可é¸ćŞ”ćˇ - + Old čŠćŞ” - + Misc 雜項 - + Unknown 未知 @@ -3188,13 +3336,13 @@ p, li { white-space: pre-wrap; } 請求失敗: %1 - + <a href="%1">Visit on Nexus</a> <a href="%1">訪問N網</a> - - + + Confirm 確認 @@ -3211,98 +3359,98 @@ p, li { white-space: pre-wrap; } 例外: %1 - + Failed to delete %1 無法ĺŞé™¤ %1 - + Are sure you want to delete "%1"? 確定č¦ĺŞé™¤ "%1" 嗎? - + Are sure you want to delete the selected files? 確定č¦ĺŞé™¤ć‰€é¸çš„檔ćˇĺ—ŽďĽź - - + + New Folder 新增資料夾 - + Failed to create "%1" 無法建立 "%1" - - + + Replace file? 取代檔ćˇďĽź - + There already is a hidden version of this file. Replace it? ĺ·˛ĺ­ĺś¨ĺŚĺŤćŞ”ćˇďĽŚä˝†č©˛ćŞ”ćˇč˘«éš±č—Źäş†ă€‚確定č¦č¦†č“‹ĺ—ŽďĽź - - + + File operation failed 檔ćˇć“Ťä˝śéŚŻčŞ¤ - - + + Failed to remove "%1". Maybe you lack the required file permissions? 無法移除 "%1"。也許您需č¦č¶łĺ¤ çš„檔ćˇć¬Šé™ďĽź - - + + failed to rename %1 to %2 ç„ˇćł•é‡Ťć–°ĺ‘˝ĺŤ %1 為 %2 - + There already is a visible version of this file. Replace it? ĺ·˛ĺ­ĺś¨ĺŚĺŤćŞ”ćˇă€‚確定č¦č¦†č“‹ĺ—ŽďĽź - + Un-Hide 取ć¶éš±č—Ź - + Hide 隱藏 - + Please enter a name - - + + Error 錯誤 - + Invalid name. Must be a valid file name - + A tweak by that name exists - + Create Tweak @@ -3438,8 +3586,9 @@ p, li { white-space: pre-wrap; } - installed version: %1, newest version: %2 - 當前ç‰ćś¬: %1,最新ç‰ćś¬: %2 + installed version: "%1", newest version: "%2" + installed version: %1, newest version: %2 + 當前ç‰ćś¬: %1,最新ç‰ćś¬: %2 Name @@ -3640,17 +3789,17 @@ p, li { white-space: pre-wrap; } NexusInterface - + Failed to guess mod id for "%1", please pick the correct one - + empty response 未回應 - + invalid response 無ć•的回應 @@ -4616,85 +4765,93 @@ Right now this has very limited functionality ESP 檔ćˇć˛’有找ĺ°: %1 - + Mod Index - - + + Flags + + + + + unknown - + Name of your mods - + Load priority of your mod. The higher, the more "important" it is and thus overwrites data from plugins with lower priority. - + The modindex determins the formids of objects originating from this mods. - + failed to update esp info for file %1 (source id: %2), error: %3 - + esp not found: %1 - + Confirm 確認 - + Really enable all plugins? - + Really disable all plugins? - + The file containing locked plugin indices is broken - - failed to open output file: %1 - 無法開啟輸出檔ćˇ: %1 + 無法開啟輸出檔ćˇ: %1 - + Some of your plugins have invalid names! These plugins can not be loaded by the game. Please see mo_interface.log for a list of affected plugins and rename them. 您的一些插件ĺŤç¨±ç„ˇć•ďĽé€™äş›ćŹ’ä»¶ç„ˇćł•č˘«éŠć˛čĽ‰ĺ…Ąă€‚請查看 mo_interface.log 來確認那些受影響的插件並重新命ĺŤĺ®ĺ€‘。 - + + BOSS dll incompatible + + + + Missing Masters - + Enabled Masters - + failed to restore load order for %1 @@ -4707,17 +4864,17 @@ Right now this has very limited functionality 最é«ĺ€Ľ - + This plugin can't be disabled (enforced by the game) 這個插件不č˝č˘«ç¦ç”¨ (ç”±éŠć˛ĺź·čˇŚ) - + Origin: %1 隸屬於: %1 - + Name ĺŤç¨± @@ -4726,7 +4883,7 @@ Right now this has very limited functionality Mod ĺŤç¨± - + Priority 優ĺ…ç´š @@ -4743,6 +4900,19 @@ Right now this has very limited functionality é€™äş›ç´˘ĺĽ•ć±şĺ®šäş†é‚Łäş›é€šéŽ Mod 引入的物ĺ“,法術等等的 ID。ID 的一č¬ć ĽĺĽŹćŻ "xxyyyyyy",其中 "xx" ĺ°±ćŻé€™ĺ€‹çš„索引,而 "yyyyyy" 則ćŻç”± Mod 自己所决定的。 + + PreviewDialog + + + Preview + + + + + Close + é—śé–‰ + + ProblemsDialog @@ -4788,82 +4958,72 @@ p, li { white-space: pre-wrap; } 無法套用 Ini 設定 - + invalid profile name %1 - + failed to create %1 無法建立 %1 - - failed to open temporary file - - - - - failed to open "%1" for writing - - - - + failed to write mod list: %1 - + failed to update tweaked ini file, wrong settings may be used: %1 - + failed to create tweaked ini: %1 - - - - - + + + + + invalid index %1 無ć•的索引 %1 - + Overwrite directory couldn't be parsed - + invalid priority %1 無ć•的優ĺ…ç´š %1 - + failed to parse ini file (%1) - + failed to parse ini file (%1): %2 ç„ˇćł•č§Łćž Ini ćŞ”ćˇ (%1): %2 - - + + failed to modify "%1" - + Delete savegames? - + Do you want to delete local savegames? (If you select "No", the save games will show up again if you re-enable local savegames) @@ -5240,12 +5400,12 @@ p, li { white-space: pre-wrap; } 無法設定代ç†DLL加載 - + "%1" is missing "%1" 缺失 - + Permissions required 需č¦ć¬Šé™ @@ -5254,8 +5414,8 @@ p, li { white-space: pre-wrap; } 當前的用ć¶ĺ¸łć¶ć˛’有é‹čˇŚ Mod Organizer 所需的訪問權é™ďĽŚĺż…č¦çš„修改將ćśč‡Şĺ‹•進行 (MO 的目錄將ćśç‚şç•¶ĺ‰Ťç”¨ć¶ĺ¸łć¶č€Śč®Šĺľ—可寫),您將被請求使用管ç†ĺ“ˇć¬Šé™ĺź·čˇŚ "mo_helper.exe"。 - - + + Woops çłźçł• @@ -5264,66 +5424,66 @@ p, li { white-space: pre-wrap; } Mod Organizer 崩潰了ďĽč¦ç”źć診斷檔ćˇĺ—ŽďĽźĺ¦‚果您發é€é€™ĺ€‹ćŞ”ćˇĺ°ć‘çš„éµç®± (sherb@gmx.net) 裡的話,這個 Bug ćśĺľćś‰ĺŹŻč˝č˘«äż®ĺľ©ă€‚ - + The current user account doesn't have the required access rights to run Mod Organizer. The neccessary changes can be made automatically (the MO directory will be made writable for the current user account). You will be asked to run "helper.exe" with administrative rights. - + ModOrganizer has crashed! Should a diagnostic file be created? If you send me this file (%1) to sherb@gmx.net, the bug is a lot more likely to be fixed. Please include a short description of what you were doing when the crash happened - + ModOrganizer has crashed! Unfortunately I was not able to write a diagnostic file: %1 Mod Organizer 崩潰了ďĽéşć†ľçš„ćŻďĽŚć‘無法生ć診斷檔ćˇ: %1 - - + + Mod Organizer Mod Organizer - + An instance of Mod Organizer is already running Mod Organizer 的一個實例正在é‹čˇŚ - + No game identified in "%1". The directory is required to contain the game binary and its launcher. "%1" 中未檢測ĺ°éŠć˛ă€‚請確保該路徑中包ĺ«éŠć˛ĺź·čˇŚç¨‹ĺĽŹä»ĄĺŹŠĺ°Ťć‡‰çš„ Launcher 檔ćˇă€‚ - - + + Please select the game to manage č«‹é¸ć“‡ćłč¦ç®ˇç†çš„éŠć˛ - + Please select the game edition you have (MO can't start the game correctly if this is set incorrectly!) - + Please use "Help" from the toolbar to get usage instructions to all elements 請使用工具ĺ—上的“幫助”來獲得所有ĺ…ç´ çš„ä˝żç”¨čŞŞćŽ - - + + <Manage...> <管ç†...> - + failed to parse profile %1: %2 無法解ćžé…Ťç˝®ćŞ”ćˇ %1: %2 - - + + failed to find "%1" 未č˝ć‰ľĺ° "%1" @@ -5332,17 +5492,17 @@ p, li { white-space: pre-wrap; } 編碼錯誤,請ĺ‘作者彙報此 Bug 並且附上 mo_interface.log 檔ćˇďĽ - + failed to access %1 無法訪問 %1 - + failed to set file time %1 無法設定檔ćˇć™‚é–“ %1 - + failed to create %1 無法建立 %1 @@ -5378,12 +5538,12 @@ p, li { white-space: pre-wrap; } 無法開啟 %1 - + Script Extender 腳本拓展 - + Proxy DLL 代ç†DLL @@ -5408,22 +5568,22 @@ Start elevated anyway? (you will be asked if you want to allow ModOrganizer.exe - + failed to spawn "%1": %2 無法生ć "%1": %2 - + "%1" doesn't exist "%1" 不ĺ­ĺś¨ - + failed to inject dll into "%1": %2 無法注入 dll ĺ° "%1": %2 - + failed to run "%1" 無法é‹čˇŚ "%1" @@ -5484,6 +5644,11 @@ Start elevated anyway? (you will be asked if you want to allow ModOrganizer.exe invalid game type %1 + + + failed to open temporary file + + QueryOverwriteDialog @@ -5718,18 +5883,18 @@ Start elevated anyway? (you will be asked if you want to allow ModOrganizer.exe 需č¦ç®ˇç†ĺ“ˇçš„權é™äľ†ć›´ć”ąé€™ĺ€‹ă€‚ - - + + attempt to store setting for unknown plugin "%1" - + Confirm 確認 - + Changing the mod directory affects all your profiles! Mods not present (or named differently) in the new location will be disabled in all profiles. There is no way to undo this unless you backed up your profiles manually. Proceed? 修改 Mod 目錄將ćśĺ˝±éźżć‚¨çš„é…Ťç˝®ďĽć–°ç›®éŚ„ä¸­ä¸Ťĺ­ĺś¨ (ć–者ĺŤç¨±ä¸ŤĺŚ) çš„ Mod 將在所有配置中被ç¦ć­˘ćŽ‰ă€‚ć­¤ć“Ťä˝śç„ˇćł•ć’¤éŠ·ďĽŚć‰€ä»Ąĺź·čˇŚć­¤ć“Ťä˝śĺ‰Ťĺ»şč­°ĺ…備份下自己的配置。立即執行? @@ -5878,52 +6043,57 @@ p, li { white-space: pre-wrap; } é…Ťç˝® Mod éˇžĺĄ - + Disable automatic internet features - + Disable automatic internet features. This does not affect features that are explicitly invoked by the user (like checking mods for updates, endorsing, opening the web browser) - + Offline Mode - + Use a proxy for network connections. - + Use a proxy for network connections. This uses the system-wide settings which can be configured in Internet Explorer. Please note that MO will start up a few seconds slower on some systems when using a proxy. - + Use HTTP Proxy (Uses System Settings) - - Known Servers (Dynamically updated every download) + + Associate with "Download with manager" links + + + + + Known Servers (updated on download) - + Preferred Servers (Drag & Drop) - + Blacklisted Plugins (use <del> to remove): - + Mod Organizer needs a dll to be injected into the game so all mods are visible to it. There are several means to do this: *Mod Organizer* (default) In this mode the Mod Organizer itself injects the dll. The disadvantage is that you always have to start the game through MO or a link created by it. @@ -5992,12 +6162,12 @@ p, li { white-space: pre-wrap; } 自動登入 - + Username 帳號 - + Password 密碼 @@ -6014,52 +6184,52 @@ p, li { white-space: pre-wrap; } 首é¸ĺ¤–é¨ćµč¦˝ĺ™¨ - + Plugins - + Author: - + Version: - + Description: - + Key - + Value - + Workarounds č§Łć±şć–ąćˇ - + Steam App ID Steam App ID - + The Steam AppID for your game 您éŠć˛çš„ Steam AppID - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -6086,12 +6256,12 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">其中 22380 ĺ°±ćŻć‚¨č¦ć‰ľçš„ ID。</span></p></body></html> - + Load Mechanism ĺŠ čĽ‰ć©źĺ¶ - + Select loading mechanism. See help for details. é¸ć“‡ĺŠ čĽ‰ć©źĺ¶ďĽŚä˝żç”¨ĺą«ĺŠ©ćźĄçś‹ć›´ĺ¤šç´°çŻ€ă€‚ @@ -6116,17 +6286,17 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">代ç†DLL</span><span style=" font-size:9pt;"> 在這種模式下,MO 將替換一個éŠć˛çš„ dll 來加載 MO (當然原來的 dll),這ĺ…é©ç”¨äşŽ Steam ç‰ćś¬çš„éŠć˛ďĽŚä¸¦ä¸”只在 Skyrim 上ĺšéŽć¸¬č©¦ă€‚請只在其ĺ®ĺŠ čĽ‰ć©źĺ¶ä¸Ťč˝ĺ·Ąä˝śçš„ć…ćłä¸‹ć‰Ťä˝żç”¨ĺ®ă€‚</span></p></body></html> - + NMM Version NMM ç‰ćś¬ - + The Version of Nexus Mod Manager to impersonate. ćłč¦ć¨ˇć“¬çš„ NMM ç‰ćś¬č™źă€‚ - + Mod Organizer uses an API provided by the Nexus to provide features like checking for updates and downloading files. Unfortunately this API has not been made available officially to third party tools like MO so we have to impersonate the Nexus Mod Manager to be allowed in. On top of this Nexus has used the client identification to lock out outdated versions of NMM to force users to update. This means that MO also needs to impersonate the new version of NMM even if MO doesn't need an update. Therefore you can configure the version to identify as here. Please note that MO does identify itself as MO to the webserver, it's not lying about what it is. It is merely adding a "compatible" NMM version to the user agent. @@ -6139,7 +6309,7 @@ tl;dr-version: If Nexus-features don't work, insert the current version num 變更ç‰ćś¬č™ź: 如果N網功č˝ä¸Ťć­Łĺ¸¸äş†ďĽŚé‚ŁéşĽč«‹ĺś¨é€™čŁˇčĽ¸ĺ…Ą NMM 的當前ç‰ćś¬č™źä¸¦é‡Ťč©¦ä¸€ä¸‹ă€‚ - + These are workarounds for problems with Mod Organizer. Please make sure you read the help text before changing anything here. @@ -6152,48 +6322,48 @@ tl;dr-version: If Nexus-features don't work, insert the current version num 例如: 0.33.1 - + Enforces that inactive ESPs and ESMs are never loaded. 強ĺ¶ĺź·čˇŚďĽŚćśŞćż€ć´»çš„ ESP ĺ’Ś ESM 將不ćśč˘«ĺŠ čĽ‰ă€‚ - + It seems that the Games occasionally load ESP or ESM files even if they haven't been activated as plugins. I don't yet know what the circumstances are, but user reports imply it is in some cases unwanted. If this is checked, ESPs and ESMs not checked in the List are invisible to the game and can not be loaded. 看來,éŠć˛ĺ¶çľćśĺŠ čĽ‰ä¸€äş›ć˛’ćś‰č˘«ćż€ć´»ć插件的 ESP ć– ESM 檔ćˇă€‚ ć‘還尚不知é“ĺ®ĺś¨ä»€éşĽć…ćłä¸‹ćśé€™ć¨ŁďĽŚä˝†ćŻćś‰ç”¨ć¶ĺ ±ĺ‘ŠčŞŞĺ®ĺś¨ćźäş›ć…ćłä¸‹ćŻĺľä¸Ťĺż…č¦çš„。如果這個é¸é …被é¸ä¸­ďĽŚé‚ŁéşĽĺś¨ĺ—表中沒有被勾é¸çš„ ESP ĺ’Ś ESM 將不ćśĺś¨éŠć˛ä¸­ĺ‡şçŹľďĽŚä¸¦ä¸”äąźä¸Ťćśč˘«čĽ‰ĺ…Ąă€‚ - + Hide inactive ESPs/ESMs 隱藏未激活的 ESP ć– ESM - + If checked, files (i.e. esps, esms and bsas) belonging to the core game can not be disabled in the UI. (default: on) - + If checked, files (i.e. esps, esms and bsas) belonging to the core game can not be disabled in the UI. (default: on) Uncheck this if you want to use Mod Organizer with total conversions (like Nehrim) but be aware that the game will crash if required files are not enabled. - + Force-enable game files - - + + For Skyrim, this can be used instead of Archive Invalidation. It should make AI redundant for all Profiles. For the other games this is not a sufficient replacement for AI! 對於天際,這個可以用來取代檔ćˇç„ˇć•化,ĺ®ĺ°‡ćśä˝żćˇŁćˇć— ć•化對所有配置é˝č®Šĺľ—多余。 但ćŻĺ°Ťć–Ľĺ…¶ĺ®éŠć˛ďĽŚé€™ä¸¦ä¸ŤćŻä¸€ĺ€‹ĺľĺĄ˝çš„替代ĺ“ďĽ - + Back-date BSAs 重置 BSA 檔ćˇäż®ć”ąć—Ąćśź @@ -6202,27 +6372,27 @@ For the other games this is not a sufficient replacement for AI! é€™äş›ćŻ Mod Organizer 的問題解決方ćˇă€‚ĺ®ĺ€‘通常ćŻä¸Ťĺż…修改的,請確保在您變更了這裡的任何東西之前已經讀éŽäş†ĺą«ĺŠ©ć–‡ćŞ”ă€‚ - + Select download directory é¸ć“‡ä¸‹čĽ‰ç›®éŚ„ - + Select mod directory é¸ć“‡ Mod 目錄 - + Select cache directory é¸ć“‡ç·©ĺ­ç›®éŚ„ - + Confirm? 確認? - + This will make all dialogs show up again where you checked the "Remember selection"-box. Continue? 此操作將導致之前勾é¸çš„“č¨ä˝Źć‘çš„é¸é …”詢問視窗再次出現,確定č¦é‡Ťç˝®ĺ°Ťč©±ć–ąĺˇŠďĽź diff --git a/src/pluginlist.cpp b/src/pluginlist.cpp index f5e0f1eb..ec063994 100644 --- a/src/pluginlist.cpp +++ b/src/pluginlist.cpp @@ -96,7 +96,6 @@ PluginList::PluginList(QObject *parent) PluginList::~PluginList() { if (m_BOSS != NULL) { - m_BOSS->DestroyBossDb(m_BOSSDB); m_BOSS->CleanUpAPI(); delete m_BOSS; m_BOSS = NULL; @@ -576,9 +575,7 @@ void PluginList::refreshLoadOrder() // find the location to insert at while ((targetPrio < static_cast(m_ESPs.size() - 1)) && (m_ESPs[m_ESPsByPriority[targetPrio]].m_LoadOrder < iter->first)) { -// if (QString::compare(m_ESPs[m_ESPsByPriority[targetPrio]].m_Name, iter->second) != 0) { - ++targetPrio; -// } + ++targetPrio; } if (static_cast(targetPrio) >= m_ESPs.size()) { @@ -636,23 +633,27 @@ void outputBossLog(const QString &filename) } -void PluginList::initBoss() +boss_db PluginList::initBoss() { - m_BOSS = new BossDLL(TEXT("dlls\\boss.dll")); + boss_db result; + bool firstRun = (m_BOSS == nullptr); + if (firstRun) { + m_BOSS = new BossDLL(TEXT("dlls\\boss.dll")); - if (!m_BOSS->IsCompatibleVersion(2,1,1)) { - throw MyException(tr("BOSS dll incompatible")); - } - uint8_t *versionString; - if (m_BOSS->GetVersionString(&versionString) != BossDLL::RESULT_OK) { - THROW_BOSS_ERROR(m_BOSS) - } - qDebug("using boss version %s", versionString); + if (!m_BOSS->IsCompatibleVersion(2,1,1)) { + throw MyException(tr("BOSS dll incompatible")); + } + uint8_t *versionString; + if (m_BOSS->GetVersionString(&versionString) != BossDLL::RESULT_OK) { + THROW_BOSS_ERROR(m_BOSS) + } + qDebug("using boss version %s", versionString); - m_TempFile.open(); m_TempFile.close(); // yeah, stupid, but open is required to generate the name - m_BOSS->SetLoggerOutput(m_TempFile.fileName().toLocal8Bit().constData(), 4); + m_TempFile.open(); m_TempFile.close(); // yeah, stupid, but open is required to generate the name + m_BOSS->SetLoggerOutput(m_TempFile.fileName().toLocal8Bit().constData(), 4); + } - if (m_BOSS->CreateBossDb(&m_BOSSDB, BossDLL::SKYRIM, NULL) != BossDLL::RESULT_OK) { + if (m_BOSS->CreateBossDb(&result, BossDLL::SKYRIM, NULL) != BossDLL::RESULT_OK) { uint8_t *message; m_BOSS->GetLastErrorDetails(&message); std::string messageCopy(reinterpret_cast(message)); @@ -664,23 +665,26 @@ void PluginList::initBoss() QString masterlistName = QDir::toNativeSeparators(qApp->applicationDirPath() + "/boss/masterlist.txt"); - uint32_t res = m_BOSS->UpdateMasterlist(m_BOSSDB, U8(masterlistName.toUtf8().constData())); - qApp->processEvents(); - if (res == BossDLL::RESULT_OK) { - qDebug("boss masterlist updated"); - } else if (res == BossDLL::RESULT_NO_UPDATE_NECESSARY) { - qDebug("boss masterlist already up-to-date"); - } else { - THROW_BOSS_ERROR(m_BOSS) + if (firstRun) { + uint32_t res = m_BOSS->UpdateMasterlist(result, U8(masterlistName.toUtf8().constData())); + qApp->processEvents(); + if (res == BossDLL::RESULT_OK) { + qDebug("boss masterlist updated"); + } else if (res == BossDLL::RESULT_NO_UPDATE_NECESSARY) { + qDebug("boss masterlist already up-to-date"); + } else { + THROW_BOSS_ERROR(m_BOSS) + } } - if (m_BOSS->Load(m_BOSSDB, + if (m_BOSS->Load(result, U8(masterlistName.toUtf8().constData()), U8(QDir::toNativeSeparators(qApp->applicationDirPath() + "/boss/userlist.txt").toUtf8().constData())) != BossDLL::RESULT_OK) { THROW_BOSS_ERROR(m_BOSS) } + return result; } -void PluginList::convertPluginListForBoss(boost::ptr_vector &inputPlugins, std::vector &activePlugins) +void PluginList::convertPluginListForBoss(boss_db db, boost::ptr_vector &inputPlugins, std::vector &activePlugins) { foreach (int idx, m_ESPsByPriority) { QString fileName = m_ESPs[idx].m_Name; @@ -693,51 +697,78 @@ void PluginList::convertPluginListForBoss(boost::ptr_vector &inputPlugi } inputPlugins.push_back(nameU8); } - if (m_BOSS->SetActivePluginsDumb(m_BOSSDB, &activePlugins[0], activePlugins.size()) != BossDLL::RESULT_OK) { + if (m_BOSS->SetActivePluginsDumb(db, &activePlugins[0], activePlugins.size()) != BossDLL::RESULT_OK) { THROW_BOSS_ERROR(m_BOSS) } } -void PluginList::applyBOSSSorting(uint8_t **pluginList, size_t size, int &priority, bool recognized, const char *extension) +void PluginList::applyBOSSSorting(boss_db db, std::map &lockedLoadOrder, uint8_t **pluginList, size_t size, + int &priority, int &loadOrder, bool recognized, const char *extension) { for (size_t i = 0; i < size; ++i) { QString name = QString::fromUtf8(reinterpret_cast(pluginList[i])).toLower(); if (name.endsWith(extension)) { auto iter = m_ESPsByName.find(name); if (iter == m_ESPsByName.end()) { - throw MyException("boss returned invalid data"); + // boss seems to report plugins from userlist as sorted that aren't even installed + continue; } + BossMessage *message; size_t numMessages = 0; - m_BOSS->GetPluginMessages(m_BOSSDB, pluginList[i], &message, &numMessages); + m_BOSS->GetPluginMessages(db, pluginList[i], &message, &numMessages); BossInfo newInfo; for (size_t im = 0; im < numMessages; ++im) { newInfo.m_BOSSMessages.append(QString::fromUtf8(reinterpret_cast(message[im].message))); } newInfo.m_BOSSUnrecognized = !recognized; m_BossInfo[name] = newInfo; + + // locked order plugins are not inserted by boss sorting ... + if (m_LockedOrder.find(name) != m_LockedOrder.end()) { + continue; + } + + // ... but by their enforced priority + while (lockedLoadOrder.find(loadOrder) != lockedLoadOrder.end()) { + auto lloIter = lockedLoadOrder.find(loadOrder); + auto nameIter = m_ESPsByName.find(lloIter->second); + if (nameIter != m_ESPsByName.end()) { + m_ESPs[nameIter->second].m_Priority = priority++; + if (m_ESPs[nameIter->second].m_Enabled) { + m_ESPs[nameIter->second].m_LoadOrder = loadOrder++; + } else { + m_ESPs[nameIter->second].m_LoadOrder = -1; + } + } + lockedLoadOrder.erase(lloIter); + } + m_ESPs[iter->second].m_Priority = priority++; + if (m_ESPs[iter->second].m_Enabled) { + m_ESPs[iter->second].m_LoadOrder = loadOrder++; + } else { + m_ESPs[iter->second].m_LoadOrder = -1; + } } } } void PluginList::bossSort() { - if (m_BOSS == NULL) { - // first run, check boss compatibility and update - initBoss(); - } + boss_db db = initBoss(); + ON_BLOCK_EXIT([&] { m_BOSS->DestroyBossDb(db); }); // create a boss-compatible representation of our current mod list. boost::ptr_vector inputPlugins; std::vector activePlugins; - convertPluginListForBoss(inputPlugins, activePlugins); + convertPluginListForBoss(db, inputPlugins, activePlugins); // sort mods in-memory uint8_t **sortedPlugins; uint8_t **unrecognizedPlugins; size_t sizeSorted, sizeUnrecognized; - if (m_BOSS->SortCustomMods(m_BOSSDB, + if (m_BOSS->SortCustomMods(db, inputPlugins.c_array(), inputPlugins.size(), &sortedPlugins, &sizeSorted, &unrecognizedPlugins, &sizeUnrecognized) != BossDLL::RESULT_OK) { @@ -751,17 +782,36 @@ void PluginList::bossSort() ChangeBracket layoutChange(this); + std::map lockedLoadOrder; + std::for_each(m_LockedOrder.begin(), m_LockedOrder.end(), + [&lockedLoadOrder] (const std::pair &ele) { lockedLoadOrder[ele.second] = ele.first; }); + int priority = 0; - applyBOSSSorting(sortedPlugins, sizeSorted, priority, true, "esm"); - applyBOSSSorting(unrecognizedPlugins, sizeUnrecognized, priority, false, "esm"); - applyBOSSSorting(sortedPlugins, sizeSorted, priority, true, "esp"); - applyBOSSSorting(unrecognizedPlugins, sizeUnrecognized, priority, false, "esp"); + int loadOrder = 0; + applyBOSSSorting(db, lockedLoadOrder, sortedPlugins, sizeSorted, priority, loadOrder, true, "esm"); + applyBOSSSorting(db, lockedLoadOrder, unrecognizedPlugins, sizeUnrecognized, priority, loadOrder, false, "esm"); + applyBOSSSorting(db, lockedLoadOrder, sortedPlugins, sizeSorted, priority, loadOrder, true, "esp"); + applyBOSSSorting(db, lockedLoadOrder, unrecognizedPlugins, sizeUnrecognized, priority, loadOrder, false, "esp"); + + // applyBOSSSorting removed entries from lockedLoadOrder when they were inserted so everything that's left is plugins + // locked to the end of the list. Now this inserts the rest in the ascending priority order. If the list is too short + // to place the plugins in their intended position then this guarantees plugins are kept in the correct relative order + // but it doesn't minimize the number of misplaced plugins. + for (auto iter = lockedLoadOrder.begin(); iter != lockedLoadOrder.end(); ++iter) { + auto nameIter = m_ESPsByName.find(iter->second); + if (nameIter != m_ESPsByName.end()) { + m_ESPs[nameIter->second].m_Priority = priority++; + if (m_ESPs[nameIter->second].m_Enabled) { + m_ESPs[nameIter->second].m_LoadOrder = loadOrder++; + } else { + m_ESPs[nameIter->second].m_LoadOrder = -1; + } + } + } // inform view of the changed data updateIndices(); layoutChange.finish(); - syncLoadOrder(); - emit dataChanged(this->index(0, 0), this->index(m_ESPs.size(), columnCount())); m_Refreshed(); } diff --git a/src/pluginlist.h b/src/pluginlist.h index 95f90e09..e45746f2 100644 --- a/src/pluginlist.h +++ b/src/pluginlist.h @@ -202,7 +202,7 @@ public: // implementation of the QAbstractTableModel interface virtual Qt::DropActions supportedDropActions() const { return Qt::MoveAction; } virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent); - void applyBOSSSorting(uint8_t **pluginList, size_t size, int &priority, bool recognized, const char *extension); + void applyBOSSSorting(boss_db db, std::map &lockedLoadOrder, uint8_t **pluginList, size_t size, int &priority, int &loadOrder, bool recognized, const char *extension); public slots: /** @@ -351,8 +351,8 @@ private: void testMasters(); - void initBoss(); - void convertPluginListForBoss(boost::ptr_vector &inputPlugins, std::vector &activePlugins); + boss_db initBoss(); + void convertPluginListForBoss(boss_db db, boost::ptr_vector &inputPlugins, std::vector &activePlugins); private: @@ -380,7 +380,6 @@ private: SignalRefreshed m_Refreshed; BossDLL *m_BOSS; - boss_db m_BOSSDB; QTemporaryFile m_TempFile; }; diff --git a/src/version.rc b/src/version.rc index 14b2781f..426e927e 100644 --- a/src/version.rc +++ b/src/version.rc @@ -1,7 +1,7 @@ #include "Winver.h" -#define VER_FILEVERSION 1,1,1,0 -#define VER_FILEVERSION_STR "1,1,1,0\0" +#define VER_FILEVERSION 1,1,2,0 +#define VER_FILEVERSION_STR "1,1,2,0\0" VS_VERSION_INFO VERSIONINFO FILEVERSION VER_FILEVERSION -- cgit v1.3.1 From 98354cd1e7f3c6b89f7112bda0791cf8ba191372 Mon Sep 17 00:00:00 2001 From: Tannin Date: Sun, 16 Mar 2014 20:04:57 +0100 Subject: some fixes towards qt5 compatibility --- src/mainwindow.cpp | 4 ++++ src/moapplication.cpp | 8 ++++++++ src/organizer.pro | 35 ++++++++++++++++++++++++++++++++++- src/pluginlist.h | 2 +- src/settings.cpp | 4 ++++ src/shared/leaktrace.cpp | 1 + 6 files changed, 52 insertions(+), 2 deletions(-) (limited to 'src/pluginlist.h') diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 4c66ccce..1c57f549 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -103,7 +103,11 @@ along with Mod Organizer. If not, see . #include #include #include +#if QT_VERSION >= QT_VERSION_CHECK(5,0,0) +#include +#else #include +#endif #include #include #include diff --git a/src/moapplication.cpp b/src/moapplication.cpp index f09b2fd9..12ff713b 100644 --- a/src/moapplication.cpp +++ b/src/moapplication.cpp @@ -23,8 +23,10 @@ along with Mod Organizer. If not, see . #include #include #include +#if QT_VERSION < QT_VERSION_CHECK(5,0,0) #include #include +#endif #include #include #include @@ -123,12 +125,18 @@ bool MOApplication::notify(QObject *receiver, QEvent *event) void MOApplication::updateStyle(const QString &fileName) { +#if QT_VERSION >= QT_VERSION_CHECK(5,0,0) + if (fileName == "Fusion") { + setStyle(QStyleFactory::create("fusion")); + setStyleSheet(""); +#else if (fileName == "Plastique") { setStyle(new ProxyStyle(new QPlastiqueStyle)); setStyleSheet(""); } else if (fileName == "Cleanlooks") { setStyle(new ProxyStyle(new QCleanlooksStyle)); setStyleSheet(""); +#endif } else { setStyle(new ProxyStyle(QStyleFactory::create(m_DefaultStyle))); if (QFile::exists(fileName)) { diff --git a/src/organizer.pro b/src/organizer.pro index 9a9d0da3..4fceb2be 100644 --- a/src/organizer.pro +++ b/src/organizer.pro @@ -4,8 +4,9 @@ # #------------------------------------------------- + contains(QT_VERSION, "^5.*") { - QT += core gui widgets network declarative script xml sql xmlpatterns + QT += core gui widgets network xml sql xmlpatterns qml quick script } else { QT += core gui network xml declarative script sql xmlpatterns opengl } @@ -311,6 +312,38 @@ OTHER_FILES += \ tutorials/tutorials_installdialog.qml +load(moc) + +# for each Boost header you include... +QMAKE_MOC += \ + -DBOOST_MPL_IF_HPP_INCLUDED \ + -DBOOST_TT_TYPE_WITH_ALIGNMENT_INCLUDED \ + -DBOOST_MPL_VOID_HPP_INCLUDED \ + -DBOOST_MPL_NOT_HPP_INCLUDED \ + -DBOOST_MPL_IDENTITY_HPP_INCLUDED \ + -DBOOST_VARIANT_VARIANT_FWD_HPP \ + -DBOOST_MPL_NEXT_PRIOR_HPP_INCLUDED \ + -DBOOST_MPL_O1_SIZE_HPP_INCLUDED \ + -DBOOST_MPL_DEREF_HPP_INCLUDED \ + -DBOOST_MPL_PAIR_HPP_INCLUDED \ + -DBOOST_MPL_ITER_FOLD_HPP_INCLUDED \ + -DBOOST_MPL_PROTECT_HPP_INCLUDED \ + -DBOOST_MPL_EVAL_IF_HPP_INCLUDED \ + -DBOOST_MPL_SEQUENCE_TAG_HPP_INCLUDED \ + -DBOOST_MPL_EMPTY_HPP_INCLUDED \ + -DBOOST_MPL_ALWAYS_HPP_INCLUDED \ + -DBOOST_MPL_TRANSFORM_HPP_INCLUDED \ + -DBOOST_MPL_CLEAR_HPP_INCLUDED \ + -DBOOST_MPL_BEGIN_END_HPP_INCLUDED \ + -DBOOST_MPL_FOLD_HPP_INCLUDED \ + -DBOOST_MPL_FRONT_HPP_INCLUDED \ + -DBOOST_MPL_IS_SEQUENCE_HPP_INCLUDED \ + -DBOOST_MPL_ITERATOR_RANGE_HPP_INCLUDED \ + -DBOOST_MPL_MAX_ELEMENT_HPP_INCLUDED \ + -DBOOST_MPL_PUSH_FRONT_HPP_INCLUDED \ + -DBOOST_RESULT_OF_HPP \ + -DBOOST_MPL_ITER_FOLD_IF_HPP_INCLUDED + # leak detection with vld #INCLUDEPATH += "E:/Visual Leak Detector/include" #LIBS += -L"E:/Visual Leak Detector/lib/Win32" diff --git a/src/pluginlist.h b/src/pluginlist.h index e45746f2..3d7f0926 100644 --- a/src/pluginlist.h +++ b/src/pluginlist.h @@ -29,7 +29,7 @@ along with Mod Organizer. If not, see . #include #include #include -#include +#include "pdll.h" #include diff --git a/src/settings.cpp b/src/settings.cpp index dd3891d4..d9a7e799 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -436,8 +436,12 @@ void Settings::addLanguages(QComboBox *languageBox) void Settings::addStyles(QComboBox *styleBox) { styleBox->addItem("None", ""); +#if QT_VERSION >= QT_VERSION_CHECK(5,0,0) + styleBox->addItem("Fusion", "Fusion"); +#else styleBox->addItem("Plastique", "Plastique"); styleBox->addItem("Cleanlooks", "Cleanlooks"); +#endif QDirIterator langIter(QCoreApplication::applicationDirPath() + "/" + ToQString(AppConfig::stylesheetsPath()), QStringList("*.qss"), QDir::Files); while (langIter.hasNext()) { diff --git a/src/shared/leaktrace.cpp b/src/shared/leaktrace.cpp index c3721557..68e57609 100644 --- a/src/shared/leaktrace.cpp +++ b/src/shared/leaktrace.cpp @@ -5,6 +5,7 @@ #include #include #include +#include static const int FRAMES_TO_SKIP = 3; // StackData::StackData(), __TraceData::regTrace(), TraceAlloc() -- cgit v1.3.1 From c19c4820d87bdf350f0725712c0b5af908fa9580 Mon Sep 17 00:00:00 2001 From: Tannin Date: Tue, 18 Mar 2014 19:18:04 +0100 Subject: - force-enabled game esms no longer break keyboard-navigation in plugin list --- src/pluginflagicondelegate.cpp | 6 ++++-- src/pluginlist.cpp | 34 +++++++++++++++++++++++++++------- src/pluginlist.h | 4 +++- 3 files changed, 34 insertions(+), 10 deletions(-) (limited to 'src/pluginlist.h') diff --git a/src/pluginflagicondelegate.cpp b/src/pluginflagicondelegate.cpp index 6c0bb29e..761555d7 100644 --- a/src/pluginflagicondelegate.cpp +++ b/src/pluginflagicondelegate.cpp @@ -11,8 +11,10 @@ PluginFlagIconDelegate::PluginFlagIconDelegate(QObject *parent) QList PluginFlagIconDelegate::getIcons(const QModelIndex &index) const { QList result; - foreach (const QVariant &var, index.data(Qt::UserRole + 1).toList()) { - result.append(var.value()); + if (index.isValid()) { + foreach (const QVariant &var, index.data(Qt::UserRole + 1).toList()) { + result.append(var.value()); + } } return result; } diff --git a/src/pluginlist.cpp b/src/pluginlist.cpp index ec063994..289032bb 100644 --- a/src/pluginlist.cpp +++ b/src/pluginlist.cpp @@ -75,7 +75,7 @@ bool ByDate(const PluginList::ESPInfo& LHS, const PluginList::ESPInfo& RHS) { } PluginList::PluginList(QObject *parent) - : QAbstractTableModel(parent) + : QAbstractItemModel(parent) , m_FontMetrics(QFont()) , m_SaveTimer(this) , m_BOSS(NULL) @@ -951,7 +951,16 @@ QVariant PluginList::data(const QModelIndex &modelIndex, int role) const } break; } } else if ((role == Qt::CheckStateRole) && (modelIndex.column() == 0)) { - return m_ESPs[index].m_Enabled ? Qt::Checked : Qt::Unchecked; + if (m_ESPs[index].m_ForceEnabled) { + return QVariant(); + } else { + return m_ESPs[index].m_Enabled ? Qt::Checked : Qt::Unchecked; + } + } else if (role == Qt::ForegroundRole) { + if ((modelIndex.column() == COL_NAME) && + m_ESPs[index].m_ForceEnabled) { + return QBrush(Qt::gray); + } } else if (role == Qt::FontRole) { QFont result; if (m_ESPs[index].m_IsMaster) { @@ -1070,13 +1079,12 @@ QVariant PluginList::headerData(int section, Qt::Orientation orientation, Qt::ItemFlags PluginList::flags(const QModelIndex &modelIndex) const { int index = modelIndex.row(); - Qt::ItemFlags result = QAbstractTableModel::flags(modelIndex); + Qt::ItemFlags result = QAbstractItemModel::flags(modelIndex); if (modelIndex.isValid()) { - if ((m_ESPs[index].m_ForceEnabled)) { - result &= ~Qt::ItemIsEnabled; + if (!m_ESPs[index].m_ForceEnabled) { + result |= Qt::ItemIsUserCheckable | Qt::ItemIsDragEnabled; } - result |= Qt::ItemIsUserCheckable | Qt::ItemIsDragEnabled; } else { result |= Qt::ItemIsDropEnabled; } @@ -1216,6 +1224,19 @@ bool PluginList::dropMimeData(const QMimeData *mimeData, Qt::DropAction action, return false; } +QModelIndex PluginList::index(int row, int column, const QModelIndex&) const +{ + if ((row < 0) || (row >= rowCount()) || (column < 0) || (column >= columnCount())) { + return QModelIndex(); + } + return createIndex(row, column, row); +} + +QModelIndex PluginList::parent(const QModelIndex&) const +{ + return QModelIndex(); +} + bool PluginList::eventFilter(QObject *obj, QEvent *event) { @@ -1227,7 +1248,6 @@ bool PluginList::eventFilter(QObject *obj, QEvent *event) } QKeyEvent *keyEvent = static_cast(event); - // ctrl+up and ctrl+down -> increase or decrease priority of selected plugins if ((keyEvent->modifiers() == Qt::ControlModifier) && ((keyEvent->key() == Qt::Key_Up) || (keyEvent->key() == Qt::Key_Down))) { diff --git a/src/pluginlist.h b/src/pluginlist.h index e45746f2..8bf7e508 100644 --- a/src/pluginlist.h +++ b/src/pluginlist.h @@ -69,7 +69,7 @@ private: /** * @brief model representing the plugins (.esp/.esm) in the current virtual data folder **/ -class PluginList : public QAbstractTableModel, public MOBase::IPluginList +class PluginList : public QAbstractItemModel, public MOBase::IPluginList { Q_OBJECT friend class ChangeBracket; @@ -201,6 +201,8 @@ public: // implementation of the QAbstractTableModel interface virtual Qt::ItemFlags flags(const QModelIndex &index) const; virtual Qt::DropActions supportedDropActions() const { return Qt::MoveAction; } virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent); + virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; + virtual QModelIndex parent(const QModelIndex &child) const; void applyBOSSSorting(boss_db db, std::map &lockedLoadOrder, uint8_t **pluginList, size_t size, int &priority, int &loadOrder, bool recognized, const char *extension); public slots: -- cgit v1.3.1 From c017f4a0d50b67a44e276bd5ae8929ed3990c62c Mon Sep 17 00:00:00 2001 From: Tannin Date: Sat, 5 Apr 2014 15:14:37 +0200 Subject: - added buttons to backup and restore the modlist and pluginlist - replaced boss integration with loot --- src/ModOrganizer.pro | 3 +- src/main.cpp | 23 +--- src/mainwindow.cpp | 204 ++++++++++++++++++++++++++++++++- src/mainwindow.h | 16 ++- src/mainwindow.ui | 112 +++++++++++++++++-- src/modlist.cpp | 2 +- src/pluginlist.cpp | 224 +------------------------------------ src/pluginlist.h | 83 +------------- src/profile.h | 6 +- src/resources.qrc | 3 + src/resources/arrange-boxes.png | Bin 0 -> 1634 bytes src/resources/document-save_32.png | Bin 0 -> 1971 bytes src/resources/edit-undo.png | Bin 0 -> 1601 bytes src/selectiondialog.cpp | 123 ++++++++++---------- src/selectiondialog.h | 96 ++++++++-------- src/shared/gameinfo.cpp | 8 ++ src/shared/gameinfo.h | 1 + src/spawn.cpp | 29 ++++- src/spawn.h | 8 +- 19 files changed, 486 insertions(+), 455 deletions(-) create mode 100644 src/resources/arrange-boxes.png create mode 100644 src/resources/document-save_32.png create mode 100644 src/resources/edit-undo.png (limited to 'src/pluginlist.h') diff --git a/src/ModOrganizer.pro b/src/ModOrganizer.pro index 05b05855..62de3f66 100644 --- a/src/ModOrganizer.pro +++ b/src/ModOrganizer.pro @@ -14,7 +14,8 @@ SUBDIRS = bsatk \ BossDummy \ pythonRunner \ boss_modified \ - esptk + esptk \ + loot_cli plugins.depends = pythonRunner hookdll.depends = shared diff --git a/src/main.cpp b/src/main.cpp index ac903615..d1c5e263 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -80,24 +80,6 @@ using namespace MOBase; using namespace MOShared; -void removeOldLogfiles() -{ - QFileInfoList files = QDir(ToQString(GameInfo::instance().getLogDir())).entryInfoList(QStringList("ModOrganizer*.log"), - QDir::Files, QDir::Name); - - if (files.count() > 5) { - QStringList deleteFiles; - for (int i = 0; i < files.count() - 5; ++i) { - deleteFiles.append(files.at(i).absoluteFilePath()); - } - - if (!shellDelete(deleteFiles)) { - qWarning("failed to remove log files: %s", qPrintable(windowsErrorString(::GetLastError()))); - } - } -} - - // set up required folders (for a first install or after an update or to fix a broken installation) bool bootstrap() { @@ -111,7 +93,7 @@ bool bootstrap() } // cycle logfile - removeOldLogfiles(); + removeOldFiles(ToQString(GameInfo::instance().getLogDir()), "ModOrganizer*.log", 5, QDir::Name); // create organizer directories QString dirNames[] = { @@ -120,8 +102,7 @@ bool bootstrap() QDir::fromNativeSeparators(ToQString(gameInfo.getDownloadDir())), QDir::fromNativeSeparators(ToQString(gameInfo.getOverwriteDir())), QDir::fromNativeSeparators(ToQString(gameInfo.getLogDir())), - QDir::fromNativeSeparators(ToQString(gameInfo.getTutorialDir())), - QDir::fromNativeSeparators(ToQString(gameInfo.getOrganizerDirectory()) + "/boss") + QDir::fromNativeSeparators(ToQString(gameInfo.getTutorialDir())) }; static const int NUM_DIRECTORIES = sizeof(dirNames) / sizeof(QString); diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index bf5ea7f0..87360f3c 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -109,8 +109,10 @@ along with Mod Organizer. If not, see . #include #endif #include +#include #include #include +#include #ifdef TEST_MODELS @@ -2649,7 +2651,6 @@ void MainWindow::directory_refreshed() delete oldStructure; refreshDataTree(); - refreshLists(); } else { // TODO: don't know why this happens, this slot seems to get called twice with only one emit return; @@ -5155,20 +5156,213 @@ void MainWindow::on_showHiddenBox_toggled(bool checked) m_DownloadManager.setShowHidden(checked); } + +void MainWindow::createStdoutPipe(HANDLE *stdOutRead, HANDLE *stdOutWrite) +{ + SECURITY_ATTRIBUTES secAttributes; + secAttributes.nLength = sizeof(SECURITY_ATTRIBUTES); + secAttributes.bInheritHandle = TRUE; + secAttributes.lpSecurityDescriptor = NULL; + + if (!::CreatePipe(stdOutRead, stdOutWrite, &secAttributes, 0)) { + qCritical("failed to create stdout reroute"); + } + + if (!::SetHandleInformation(*stdOutRead, HANDLE_FLAG_INHERIT, 0)) { + qCritical("failed to correctly set up the stdout reroute"); + *stdOutWrite = *stdOutRead = INVALID_HANDLE_VALUE; + } +} + +std::string MainWindow::readFromPipe(HANDLE stdOutRead) +{ + static const int chunkSize = 128; + std::string result; + + char buffer[chunkSize + 1]; + buffer[chunkSize] = '\0'; + + DWORD read = 1; + while (read > 0) { + if (!::ReadFile(stdOutRead, buffer, chunkSize, &read, NULL)) { + break; + } + if (read > 0) { + result.append(buffer, read); + if (read < chunkSize) { + break; + } + } + } + return result; +} + void MainWindow::on_bossButton_clicked() { try { this->setEnabled(false); ON_BLOCK_EXIT([&] () { this->setEnabled(true); }); - LockedDialog dialog(this, tr("BOSS working"), false); + QProgressDialog dialog(this); + dialog.setLabelText(tr("LOOT working")); + dialog.setMaximum(0); dialog.show(); - qApp->processEvents(); - m_PluginList.bossSort(); - savePluginList(); + QStringList parameters; + parameters << "--game" << ToQString(GameInfo::instance().getGameName()) + << "--gamePath" << ToQString(GameInfo::instance().getGameDirectory()); + + HANDLE stdOutWrite = INVALID_HANDLE_VALUE; + HANDLE stdOutRead = INVALID_HANDLE_VALUE; + createStdoutPipe(&stdOutRead, &stdOutWrite); + + HANDLE loot = startBinary(QFileInfo(qApp->applicationDirPath() + "/lootcli.exe"), + parameters.join(" "), + m_CurrentProfile->getName(), + m_Settings.logLevel(), + qApp->applicationDirPath(), + true, + stdOutWrite); + + // we don't use the write end + ::CloseHandle(stdOutWrite); + + if (loot != INVALID_HANDLE_VALUE) { + while (::WaitForSingleObject(loot, 100) == WAIT_TIMEOUT) { + // keep processing events so the app doesn't appear dead + QCoreApplication::processEvents(); + if (dialog.wasCanceled()) { + ::TerminateProcess(loot, 1); + } + std::string lootOut = readFromPipe(stdOutRead); + std::vector lines; + boost::split(lines, lootOut, boost::is_any_of("\r\n")); + foreach (const std::string &line, lines) { + if (line.length() > 0) { + size_t progidx = line.find("[progress]"); + size_t reportidx = line.find("[report]"); + if (progidx != std::string::npos) { + dialog.setLabelText(line.substr(progidx + 11).c_str()); + } else if (reportidx != std::string::npos) { + qDebug("report at %s", line.substr(reportidx + 9).c_str()); + } else { + qDebug("%s", line.c_str()); + } + } + } + } + std::string remainder = readFromPipe(stdOutRead).c_str(); + if (remainder.length() > 0) { + qDebug("%s", remainder.c_str()); + } + + refreshESPList(); + + if (GameInfo::instance().getLoadOrderMechanism() == GameInfo::TYPE_FILETIME) { + QFile::remove(m_CurrentProfile->getLoadOrderFileName()); + } + } + dialog.hide(); } catch (const std::exception &e) { reportError(tr("failed to run boss: %1").arg(e.what())); ui->bossButton->setEnabled(false); } } + + +const char *MainWindow::PATTERN_BACKUP_GLOB = ".????_??_??_??_??_??"; +const char *MainWindow::PATTERN_BACKUP_REGEX = "\\.(\\d\\d\\d\\d_\\d\\d_\\d\\d_\\d\\d_\\d\\d_\\d\\d)"; +const char *MainWindow::PATTERN_BACKUP_DATE = "yyyy_MM_dd_hh_mm_ss"; + + +bool MainWindow::createBackup(const QString &filePath, const QDateTime &time) +{ + QString outPath = filePath + "." + time.toString(PATTERN_BACKUP_DATE); + if (shellCopy(QStringList(filePath), QStringList(outPath), this)) { + QFileInfo fileInfo(filePath); + removeOldFiles(fileInfo.absolutePath(), fileInfo.fileName() + PATTERN_BACKUP_GLOB, 3, QDir::Name); + return true; + } else { + return false; + } +} + +void MainWindow::on_saveButton_clicked() +{ + savePluginList(); + QDateTime now = QDateTime::currentDateTime(); + if (createBackup(m_CurrentProfile->getPluginsFileName(), now) + && createBackup(m_CurrentProfile->getLoadOrderFileName(), now) + && createBackup(m_CurrentProfile->getLockedOrderFileName(), now)) { + MessageDialog::showMessage(tr("Backup of load order created"), this); + } +} + +QString MainWindow::queryRestore(const QString &filePath) +{ + QFileInfo pluginFileInfo(filePath); + QString pattern = pluginFileInfo.fileName() + ".*"; + QFileInfoList files = pluginFileInfo.absoluteDir().entryInfoList(QStringList(pattern), QDir::Files, QDir::Name); + + SelectionDialog dialog(tr("Choose backup to restore"), this); + QRegExp exp(pluginFileInfo.fileName() + PATTERN_BACKUP_REGEX); + QRegExp exp2(pluginFileInfo.fileName() + "\\.(.*)"); + foreach(const QFileInfo &info, files) { + if (exp.exactMatch(info.fileName())) { + QDateTime time = QDateTime::fromString(exp.cap(1), PATTERN_BACKUP_DATE); + dialog.addChoice(time.toString(), "", exp.cap(1)); + } else if (exp2.exactMatch(info.fileName())) { + dialog.addChoice(exp2.cap(1), "", exp2.cap(1)); + } + } + + if (dialog.numChoices() == 0) { + QMessageBox::information(this, tr("No Backups"), tr("There are no backups to restore")); + return QString(); + } + + if (dialog.exec() == QDialog::Accepted) { + return dialog.getChoiceData().toString(); + } else { + return QString(); + } +} + +void MainWindow::on_restoreButton_clicked() +{ + QString pluginName = m_CurrentProfile->getPluginsFileName(); + QString choice = queryRestore(pluginName); + if (!choice.isEmpty()) { + QString loadOrderName = m_CurrentProfile->getLoadOrderFileName(); + QString lockedName = m_CurrentProfile->getLockedOrderFileName(); + if (!shellCopy(pluginName + "." + choice, pluginName, true, this) || + !shellCopy(loadOrderName + "." + choice, loadOrderName, true, this) || + !shellCopy(lockedName + "." + choice, lockedName, true, this)) { + QMessageBox::critical(this, tr("Restore failed"), + tr("Failed to restore the backup. Errorcode: %1").arg(windowsErrorString(::GetLastError()))); + } + refreshESPList(); + } +} + +void MainWindow::on_saveModsButton_clicked() +{ + m_CurrentProfile->writeModlistNow(true); + QDateTime now = QDateTime::currentDateTime(); + if (createBackup(m_CurrentProfile->getModlistFileName(), now)) { + MessageDialog::showMessage(tr("Backup of modlist created"), this); + } +} +void MainWindow::on_restoreModsButton_clicked() +{ + QString modlistName = m_CurrentProfile->getModlistFileName(); + QString choice = queryRestore(modlistName); + if (!choice.isEmpty()) { + if (!shellCopy(modlistName + "." + choice, modlistName, true, this)) { + QMessageBox::critical(this, tr("Restore failed"), + tr("Failed to restore the backup. Errorcode: %1").arg(windowsErrorString(::GetLastError()))); + } + refreshModList(false); + } +} + diff --git a/src/mainwindow.h b/src/mainwindow.h index 23923677..c5b4a8d3 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -154,6 +154,8 @@ public: void saveArchiveList(); + void createStdoutPipe(HANDLE *stdOutRead, HANDLE *stdOutWrite); + std::string readFromPipe(HANDLE stdOutRead); public slots: void displayColumnSelection(const QPoint &pos); @@ -207,8 +209,6 @@ private: bool nexusLogin(); - void saveCurrentESPList(); - bool testForSteam(); void startSteam(); @@ -290,11 +290,18 @@ private: void activateProxy(bool activate); void installTranslator(const QString &name); + bool createBackup(const QString &filePath, const QDateTime &time); + QString queryRestore(const QString &filePath); + private: static const unsigned int PROBLEM_PLUGINSNOTLOADED = 1; static const unsigned int PROBLEM_TOOMANYPLUGINS = 2; + static const char *PATTERN_BACKUP_GLOB; + static const char *PATTERN_BACKUP_REGEX; + static const char *PATTERN_BACKUP_DATE; + private: Ui::MainWindow *ui; @@ -574,6 +581,11 @@ private slots: // ui slots void on_showHiddenBox_toggled(bool checked); void on_bsaList_itemChanged(QTreeWidgetItem *item, int column); void on_bossButton_clicked(); + + void on_saveButton_clicked(); + void on_restoreButton_clicked(); + void on_restoreModsButton_clicked(); + void on_saveModsButton_clicked(); }; #endif // MAINWINDOW_H diff --git a/src/mainwindow.ui b/src/mainwindow.ui index 26cbbf83..dc91121c 100644 --- a/src/mainwindow.ui +++ b/src/mainwindow.ui @@ -115,7 +115,7 @@ 2
        - + @@ -170,6 +170,47 @@ p, li { white-space: pre-wrap; } + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Restore Backup... + + + + + + + :/MO/gui/restore:/MO/gui/restore + + + + + + + Create Backup + + + + + + + :/MO/gui/backup:/MO/gui/backup + + + @@ -617,6 +658,68 @@ p, li { white-space: pre-wrap; } 0 + + + + + + Sort + + + + :/MO/gui/sort:/MO/gui/sort + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Restore Backup... + + + + + + + :/MO/gui/restore:/MO/gui/restore + + + + 16 + 16 + + + + + + + + Create Backup + + + + + + + :/MO/gui/backup:/MO/gui/backup + + + + + @@ -725,13 +828,6 @@ p, li { white-space: pre-wrap; } - - - - Sort - - -
        diff --git a/src/modlist.cpp b/src/modlist.cpp index e2cb7cf0..836406e4 100644 --- a/src/modlist.cpp +++ b/src/modlist.cpp @@ -669,7 +669,7 @@ bool ModList::dropURLs(const QMimeData *mimeData, int row, const QModelIndex &pa } if (source.count() != 0) { - shellMove(source, target, NULL); + shellMove(source, target); } return true; diff --git a/src/pluginlist.cpp b/src/pluginlist.cpp index af6f42da..1f4ed9b1 100644 --- a/src/pluginlist.cpp +++ b/src/pluginlist.cpp @@ -78,7 +78,6 @@ PluginList::PluginList(QObject *parent) : QAbstractItemModel(parent) , m_FontMetrics(QFont()) , m_SaveTimer(this) - , m_BOSS(NULL) { m_SaveTimer.setSingleShot(true); connect(&m_SaveTimer, SIGNAL(timeout()), this, SIGNAL(saveTimer())); @@ -95,11 +94,6 @@ PluginList::PluginList(QObject *parent) PluginList::~PluginList() { - if (m_BOSS != NULL) { - m_BOSS->CleanUpAPI(); - delete m_BOSS; - m_BOSS = NULL; - } } @@ -595,225 +589,9 @@ void PluginList::refreshLoadOrder() } -class boss_exception : public std::runtime_error { -public: - boss_exception(const std::string &message) : std::runtime_error(message) {} -}; - -#define THROW_BOSS_ERROR(obj) \ - uint8_t *message; \ - obj->GetLastErrorDetails(&message); \ - throw boss_exception(std::string(reinterpret_cast(message))); - -#define U8(text) reinterpret_cast(text) - - -void outputBossLog(const QString &filename) -{ - QFile file(filename); - if (file.open(QIODevice::ReadOnly)) { - while (!file.atEnd()) { - QByteArray line = file.readLine().trimmed(); - if (line.length() < 1) - continue; - - int endFirstWord = line.indexOf(':'); - if (endFirstWord < 0) { - endFirstWord = 0; - } - QString firstWord = line.mid(0, endFirstWord); - if (firstWord == "DEBUG") { - qDebug("(boss) %s", line.mid(endFirstWord + 2).constData()); - } else { - qWarning("(boss) %s", line.mid(endFirstWord + 2).constData()); - } - } - } - file.resize(0); -} - - -boss_db PluginList::initBoss() -{ - boss_db result; - bool firstRun = (m_BOSS == nullptr); - if (firstRun) { - m_BOSS = new BossDLL(TEXT("dlls\\boss.dll")); - - if (!m_BOSS->IsCompatibleVersion(2,1,1)) { - throw MyException(tr("BOSS dll incompatible")); - } - uint8_t *versionString; - if (m_BOSS->GetVersionString(&versionString) != BossDLL::RESULT_OK) { - THROW_BOSS_ERROR(m_BOSS) - } - qDebug("using boss version %s", versionString); - - m_TempFile.open(); m_TempFile.close(); // yeah, stupid, but open is required to generate the name - m_BOSS->SetLoggerOutput(m_TempFile.fileName().toLocal8Bit().constData(), 4); - } - - if (m_BOSS->CreateBossDb(&result, BossDLL::SKYRIM, NULL) != BossDLL::RESULT_OK) { - uint8_t *message; - m_BOSS->GetLastErrorDetails(&message); - std::string messageCopy(reinterpret_cast(message)); - delete m_BOSS; - m_BOSS = NULL; - throw boss_exception(messageCopy); - } - qApp->processEvents(); - - QString masterlistName = QDir::toNativeSeparators(qApp->applicationDirPath() + "/boss/masterlist.txt"); - - if (firstRun) { - uint32_t res = m_BOSS->UpdateMasterlist(result, U8(masterlistName.toUtf8().constData())); - qApp->processEvents(); - if (res == BossDLL::RESULT_OK) { - qDebug("boss masterlist updated"); - } else if (res == BossDLL::RESULT_NO_UPDATE_NECESSARY) { - qDebug("boss masterlist already up-to-date"); - } else { - THROW_BOSS_ERROR(m_BOSS) - } - } - if (m_BOSS->Load(result, - U8(masterlistName.toUtf8().constData()), - U8(QDir::toNativeSeparators(qApp->applicationDirPath() + "/boss/userlist.txt").toUtf8().constData())) != BossDLL::RESULT_OK) { - THROW_BOSS_ERROR(m_BOSS) - } - return result; -} - -void PluginList::convertPluginListForBoss(boss_db db, boost::ptr_vector &inputPlugins, std::vector &activePlugins) -{ - foreach (int idx, m_ESPsByPriority) { - QString fileName = m_ESPs[idx].m_Name; - QByteArray name = fileName.toUtf8(); - - uint8_t *nameU8 = new uint8_t[name.length() + 1]; - memcpy(nameU8, name.constData(), name.length() + 1); - if (m_ESPs[idx].m_Enabled) { - activePlugins.push_back(nameU8); - } - inputPlugins.push_back(nameU8); - } - if (m_BOSS->SetActivePluginsDumb(db, &activePlugins[0], activePlugins.size()) != BossDLL::RESULT_OK) { - THROW_BOSS_ERROR(m_BOSS) - } -} - -void PluginList::applyBOSSSorting(boss_db db, std::map &lockedLoadOrder, uint8_t **pluginList, size_t size, - int &priority, int &loadOrder, bool recognized, const char *extension) -{ - for (size_t i = 0; i < size; ++i) { - QString name = QString::fromUtf8(reinterpret_cast(pluginList[i])).toLower(); - if (name.endsWith(extension)) { - auto iter = m_ESPsByName.find(name); - if (iter == m_ESPsByName.end()) { - // boss seems to report plugins from userlist as sorted that aren't even installed - continue; - } - - BossMessage *message; - size_t numMessages = 0; - m_BOSS->GetPluginMessages(db, pluginList[i], &message, &numMessages); - BossInfo newInfo; - for (size_t im = 0; im < numMessages; ++im) { - newInfo.m_BOSSMessages.append(QString::fromUtf8(reinterpret_cast(message[im].message))); - } - newInfo.m_BOSSUnrecognized = !recognized; - m_BossInfo[name] = newInfo; - - // locked order plugins are not inserted by boss sorting ... - if (m_LockedOrder.find(name) != m_LockedOrder.end()) { - continue; - } - - // ... but by their enforced priority - while (lockedLoadOrder.find(loadOrder) != lockedLoadOrder.end()) { - auto lloIter = lockedLoadOrder.find(loadOrder); - auto nameIter = m_ESPsByName.find(lloIter->second); - if (nameIter != m_ESPsByName.end()) { - m_ESPs[nameIter->second].m_Priority = priority++; - if (m_ESPs[nameIter->second].m_Enabled) { - m_ESPs[nameIter->second].m_LoadOrder = loadOrder++; - } else { - m_ESPs[nameIter->second].m_LoadOrder = -1; - } - } - lockedLoadOrder.erase(lloIter); - } - - m_ESPs[iter->second].m_Priority = priority++; - if (m_ESPs[iter->second].m_Enabled) { - m_ESPs[iter->second].m_LoadOrder = loadOrder++; - } else { - m_ESPs[iter->second].m_LoadOrder = -1; - } - } - } -} - -void PluginList::bossSort() +void PluginList::lootSort() { - boss_db db = initBoss(); - ON_BLOCK_EXIT([&] { m_BOSS->DestroyBossDb(db); }); - - // create a boss-compatible representation of our current mod list. - boost::ptr_vector inputPlugins; - std::vector activePlugins; - convertPluginListForBoss(db, inputPlugins, activePlugins); - - // sort mods in-memory - uint8_t **sortedPlugins; - uint8_t **unrecognizedPlugins; - size_t sizeSorted, sizeUnrecognized; - if (m_BOSS->SortCustomMods(db, - inputPlugins.c_array(), inputPlugins.size(), - &sortedPlugins, &sizeSorted, - &unrecognizedPlugins, &sizeUnrecognized) != BossDLL::RESULT_OK) { - THROW_BOSS_ERROR(m_BOSS) - } - - // output the log from boss to our own log to make it visible - outputBossLog(m_TempFile.fileName()); - - qDebug("%d sorted, %d unrecognized", sizeSorted, sizeUnrecognized); - ChangeBracket layoutChange(this); - - std::map lockedLoadOrder; - std::for_each(m_LockedOrder.begin(), m_LockedOrder.end(), - [&lockedLoadOrder] (const std::pair &ele) { lockedLoadOrder[ele.second] = ele.first; }); - - int priority = 0; - int loadOrder = 0; - applyBOSSSorting(db, lockedLoadOrder, sortedPlugins, sizeSorted, priority, loadOrder, true, "esm"); - applyBOSSSorting(db, lockedLoadOrder, unrecognizedPlugins, sizeUnrecognized, priority, loadOrder, false, "esm"); - applyBOSSSorting(db, lockedLoadOrder, sortedPlugins, sizeSorted, priority, loadOrder, true, "esp"); - applyBOSSSorting(db, lockedLoadOrder, unrecognizedPlugins, sizeUnrecognized, priority, loadOrder, false, "esp"); - - // applyBOSSSorting removed entries from lockedLoadOrder when they were inserted so everything that's left is plugins - // locked to the end of the list. Now this inserts the rest in the ascending priority order. If the list is too short - // to place the plugins in their intended position then this guarantees plugins are kept in the correct relative order - // but it doesn't minimize the number of misplaced plugins. - for (auto iter = lockedLoadOrder.begin(); iter != lockedLoadOrder.end(); ++iter) { - auto nameIter = m_ESPsByName.find(iter->second); - if (nameIter != m_ESPsByName.end()) { - m_ESPs[nameIter->second].m_Priority = priority++; - if (m_ESPs[nameIter->second].m_Enabled) { - m_ESPs[nameIter->second].m_LoadOrder = loadOrder++; - } else { - m_ESPs[nameIter->second].m_LoadOrder = -1; - } - } - } - - // inform view of the changed data - updateIndices(); - layoutChange.finish(); - emit dataChanged(this->index(0, 0), this->index(m_ESPs.size(), columnCount())); - m_Refreshed(); } IPluginList::PluginState PluginList::state(const QString &name) const diff --git a/src/pluginlist.h b/src/pluginlist.h index fff2a595..5e8557e2 100644 --- a/src/pluginlist.h +++ b/src/pluginlist.h @@ -181,7 +181,7 @@ public: void refreshLoadOrder(); - void bossSort(); + void lootSort(); public: virtual PluginState state(const QString &name) const; @@ -204,7 +204,6 @@ public: // implementation of the QAbstractTableModel interface virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; virtual QModelIndex parent(const QModelIndex &child) const; - void applyBOSSSorting(boss_db db, std::map &lockedLoadOrder, uint8_t **pluginList, size_t size, int &priority, int &loadOrder, bool recognized, const char *extension); public slots: /** @@ -260,82 +259,6 @@ private: friend bool ByDate(const ESPInfo& LHS, const ESPInfo& RHS); friend bool ByPriority(const ESPInfo& LHS, const ESPInfo& RHS); - class BossDLL : public PDLL { - DECLARE_CLASS(BossDLL) - - DECLARE_FUNCTION3(__cdecl, uint32_t, CreateBossDb, boss_db*, const uint32_t, const uint8_t*) - DECLARE_FUNCTION1(__cdecl, void, DestroyBossDb, boss_db) - DECLARE_FUNCTION0(__cdecl, void, CleanUpAPI) - - DECLARE_FUNCTION7(__cdecl, uint32_t, SortCustomMods, boss_db, uint8_t**, size_t, uint8_t***, size_t*, uint8_t***, size_t*) - DECLARE_FUNCTION3(__cdecl, uint32_t, SetActivePluginsDumb, boss_db, uint8_t**, const size_t) - - DECLARE_FUNCTION3(__cdecl, uint32_t, GetActivePluginsDumb , boss_db, uint8_t***, size_t*) - - DECLARE_FUNCTION2(__cdecl, uint32_t, UpdateMasterlist, boss_db, const uint8_t*) - DECLARE_FUNCTION3(__cdecl, uint32_t, Load, boss_db, const uint8_t*, const uint8_t*) - - DECLARE_FUNCTION2(__cdecl, void, SetLoggerOutput, const char*, uint8_t) - DECLARE_FUNCTION1(__cdecl, uint32_t, GetLastErrorDetails, uint8_t**) - - DECLARE_FUNCTION1(__cdecl, uint32_t, GetVersionString, uint8_t**) - DECLARE_FUNCTION3(__cdecl, bool, IsCompatibleVersion, const uint32_t, const uint32_t, const uint32_t) - - DECLARE_FUNCTION4(__cdecl, uint32_t, GetPluginMessages, boss_db, const uint8_t*, BossMessage**, size_t*) - - enum ResultCode { - RESULT_OK = 0, - RESULT_NO_MASTER_FILE = 1, - RESULT_FILE_READ_FAIL = 2, - RESULT_FILE_WRITE_FAIL = 3, - RESULT_FILE_NOT_UTF8 = 4, - RESULT_FILE_NOT_FOUND = 5, - RESULT_FILE_PARSE_FAIL = 6, - RESULT_CONDITION_EVAL_FAIL = 7, - RESULT_REGEX_EVAL_FAIL = 8, - RESULT_NO_GAME_DETECTED = 9, - RESULT_ENCODING_CONVERSION_FAIL = 10, - RESULT_FIND_ONLINE_MASTERLIST_REVISION_FAIL = 11, - RESULT_FIND_ONLINE_MASTERLIST_DATE_FAIL = 12, - RESULT_READ_UPDATE_FILE_LIST_FAIL = 13, - RESULT_FILE_CRC_MISMATCH = 14, - RESULT_FS_FILE_MOD_TIME_READ_FAIL = 15, - RESULT_FS_FILE_MOD_TIME_WRITE_FAIL = 16, - RESULT_FS_FILE_RENAME_FAIL = 17, - RESULT_FS_FILE_DELETE_FAIL = 18, - RESULT_FS_CREATE_DIRECTORY_FAIL = 19, - RESULT_FS_ITER_DIRECTORY_FAIL = 20, - RESULT_CURL_INIT_FAIL = 21, - RESULT_CURL_SET_ERRBUFF_FAIL = 22, - RESULT_CURL_SET_OPTION_FAIL = 23, - RESULT_CURL_SET_PROXY_FAIL = 24, - RESULT_CURL_SET_PROXY_TYPE_FAIL = 25, - RESULT_CURL_SET_PROXY_AUTH_FAIL = 26, - RESULT_CURL_SET_PROXY_AUTH_TYPE_FAIL = 27, - RESULT_CURL_PERFORM_FAIL = 28, - RESULT_CURL_USER_CANCEL = 29, - RESULT_GUI_WINDOW_INIT_FAIL = 30, - RESULT_NO_UPDATE_NECESSARY = 31, - RESULT_LO_MISMATCH = 32, - RESULT_NO_MEM = 33, - RESULT_INVALID_ARGS = 34, - RESULT_NETWORK_FAIL = 35, - RESULT_NO_INTERNET_CONNECTION = 36, - RESULT_NO_TAG_MAP = 37, - RESULT_PLUGINS_FULL = 38, - RESULT_PLUGIN_BEFORE_MASTER = 39, - RESULT_INVALID_SYNTAX = 40 - }; - - enum GameIDs { - AUTODETECT = 0, - OBLIVION = 1, - SKYRIM = 3, - FALLOUT3 = 4, - FALLOUTNV = 5 - }; - }; - private: void syncLoadOrder(); @@ -353,9 +276,6 @@ private: void testMasters(); - boss_db initBoss(); - void convertPluginListForBoss(boss_db db, boost::ptr_vector &inputPlugins, std::vector &activePlugins); - private: std::vector m_ESPs; @@ -381,7 +301,6 @@ private: SignalRefreshed m_Refreshed; - BossDLL *m_BOSS; QTemporaryFile m_TempFile; }; diff --git a/src/profile.h b/src/profile.h index 4960671a..5aa77357 100644 --- a/src/profile.h +++ b/src/profile.h @@ -159,6 +159,11 @@ public: */ QString getLockedOrderFileName() const; + /** + * @return the path of the modlist file in this profile + */ + QString getModlistFileName() const; + /** * @return path of the archives file in this profile */ @@ -301,7 +306,6 @@ private: void updateIndices(); - QString getModlistFileName() const; void copyFilesTo(QString &target) const; std::vector splitDZString(const wchar_t *buffer) const; diff --git a/src/resources.qrc b/src/resources.qrc index 73921f64..bf53ea95 100644 --- a/src/resources.qrc +++ b/src/resources.qrc @@ -52,5 +52,8 @@ resources/x-office-calendar.png resources/dialog-warning_16.png resources/mail-attachment.png + resources/document-save_32.png + resources/edit-undo.png + resources/arrange-boxes.png diff --git a/src/resources/arrange-boxes.png b/src/resources/arrange-boxes.png new file mode 100644 index 00000000..b1ab67cf Binary files /dev/null and b/src/resources/arrange-boxes.png differ diff --git a/src/resources/document-save_32.png b/src/resources/document-save_32.png new file mode 100644 index 00000000..db5c52b7 Binary files /dev/null and b/src/resources/document-save_32.png differ diff --git a/src/resources/edit-undo.png b/src/resources/edit-undo.png new file mode 100644 index 00000000..61b2ce9a Binary files /dev/null and b/src/resources/edit-undo.png differ diff --git a/src/selectiondialog.cpp b/src/selectiondialog.cpp index dbc10791..902b4d9c 100644 --- a/src/selectiondialog.cpp +++ b/src/selectiondialog.cpp @@ -17,62 +17,67 @@ You should have received a copy of the GNU General Public License along with Mod Organizer. If not, see . */ -#include "selectiondialog.h" -#include "ui_selectiondialog.h" - -#include - -SelectionDialog::SelectionDialog(const QString &description, QWidget *parent) - : QDialog(parent), ui(new Ui::SelectionDialog), m_Choice(NULL), m_ValidateByData(false) -{ - ui->setupUi(this); - - ui->descriptionLabel->setText(description); -} - -SelectionDialog::~SelectionDialog() -{ - delete ui; -} - - -void SelectionDialog::addChoice(const QString &buttonText, const QString &description, const QVariant &data) -{ - QCommandLinkButton *button = new QCommandLinkButton(buttonText, description, ui->buttonBox); - button->setProperty("data", data); - ui->buttonBox->addButton(button, QDialogButtonBox::AcceptRole); - if (data.isValid()) m_ValidateByData = true; -} - - -QVariant SelectionDialog::getChoiceData() -{ - return m_Choice->property("data"); -} - - -QString SelectionDialog::getChoiceString() -{ - if ((m_Choice == NULL) || - (m_ValidateByData && !m_Choice->property("data").isValid())) { - return QString(); - } else { - return m_Choice->text(); - } -} - - -void SelectionDialog::on_buttonBox_clicked(QAbstractButton *button) -{ - m_Choice = button; - if (!m_ValidateByData || m_Choice->property("data").isValid()) { - this->accept(); - } else { - this->reject(); - } -} - -void SelectionDialog::on_cancelButton_clicked() -{ - this->reject(); -} +#include "selectiondialog.h" +#include "ui_selectiondialog.h" + +#include + +SelectionDialog::SelectionDialog(const QString &description, QWidget *parent) + : QDialog(parent), ui(new Ui::SelectionDialog), m_Choice(NULL), m_ValidateByData(false) +{ + ui->setupUi(this); + + ui->descriptionLabel->setText(description); +} + +SelectionDialog::~SelectionDialog() +{ + delete ui; +} + + +void SelectionDialog::addChoice(const QString &buttonText, const QString &description, const QVariant &data) +{ + QCommandLinkButton *button = new QCommandLinkButton(buttonText, description, ui->buttonBox); + button->setProperty("data", data); + ui->buttonBox->addButton(button, QDialogButtonBox::AcceptRole); + if (data.isValid()) m_ValidateByData = true; +} + +int SelectionDialog::numChoices() const +{ + return ui->buttonBox->findChildren(QString()).count(); +} + + +QVariant SelectionDialog::getChoiceData() +{ + return m_Choice->property("data"); +} + + +QString SelectionDialog::getChoiceString() +{ + if ((m_Choice == NULL) || + (m_ValidateByData && !m_Choice->property("data").isValid())) { + return QString(); + } else { + return m_Choice->text(); + } +} + + +void SelectionDialog::on_buttonBox_clicked(QAbstractButton *button) +{ + m_Choice = button; + if (!m_ValidateByData || m_Choice->property("data").isValid()) { + this->accept(); + } else { + this->reject(); + } +} + +void SelectionDialog::on_cancelButton_clicked() +{ + this->reject(); +} diff --git a/src/selectiondialog.h b/src/selectiondialog.h index a2844e97..fc04291e 100644 --- a/src/selectiondialog.h +++ b/src/selectiondialog.h @@ -17,50 +17,52 @@ You should have received a copy of the GNU General Public License along with Mod Organizer. If not, see . */ -#ifndef SELECTIONDIALOG_H -#define SELECTIONDIALOG_H - -#include -#include - -namespace Ui { -class SelectionDialog; -} - -class SelectionDialog : public QDialog -{ - Q_OBJECT - -public: - - explicit SelectionDialog(const QString &description, QWidget *parent = 0); - - ~SelectionDialog(); - - /** - * @brief add a choice to the dialog - * @param buttonText the text to be displayed on the button - * @param description the description that shows up under in small letters inside the button - * @param data data to be stored with the button. Please note that as soon as one choice has data associated with it (non-invalid QVariant) - * all buttons that contain no data will be treated as "cancel" buttons - */ - void addChoice(const QString &buttonText, const QString &description, const QVariant &data); - - QVariant getChoiceData(); - QString getChoiceString(); - -private slots: - - void on_buttonBox_clicked(QAbstractButton *button); - - void on_cancelButton_clicked(); - -private: - - Ui::SelectionDialog *ui; - QAbstractButton *m_Choice; - bool m_ValidateByData; - -}; - -#endif // SELECTIONDIALOG_H +#ifndef SELECTIONDIALOG_H +#define SELECTIONDIALOG_H + +#include +#include + +namespace Ui { +class SelectionDialog; +} + +class SelectionDialog : public QDialog +{ + Q_OBJECT + +public: + + explicit SelectionDialog(const QString &description, QWidget *parent = 0); + + ~SelectionDialog(); + + /** + * @brief add a choice to the dialog + * @param buttonText the text to be displayed on the button + * @param description the description that shows up under in small letters inside the button + * @param data data to be stored with the button. Please note that as soon as one choice has data associated with it (non-invalid QVariant) + * all buttons that contain no data will be treated as "cancel" buttons + */ + void addChoice(const QString &buttonText, const QString &description, const QVariant &data); + + int numChoices() const; + + QVariant getChoiceData(); + QString getChoiceString(); + +private slots: + + void on_buttonBox_clicked(QAbstractButton *button); + + void on_cancelButton_clicked(); + +private: + + Ui::SelectionDialog *ui; + QAbstractButton *m_Choice; + bool m_ValidateByData; + +}; + +#endif // SELECTIONDIALOG_H diff --git a/src/shared/gameinfo.cpp b/src/shared/gameinfo.cpp index 00bb42fd..b580a226 100644 --- a/src/shared/gameinfo.cpp +++ b/src/shared/gameinfo.cpp @@ -172,6 +172,14 @@ std::wstring GameInfo::getLogDir() const } +std::wstring GameInfo::getLootDir() const +{ + std::wostringstream temp; + temp << m_OrganizerDirectory << "\\loot"; + return temp.str(); +} + + std::wstring GameInfo::getTutorialDir() const { std::wostringstream temp; diff --git a/src/shared/gameinfo.h b/src/shared/gameinfo.h index 10775e6c..89c9402d 100644 --- a/src/shared/gameinfo.h +++ b/src/shared/gameinfo.h @@ -113,6 +113,7 @@ public: virtual std::wstring getCacheDir() const; virtual std::wstring getOverwriteDir() const; virtual std::wstring getLogDir() const; + virtual std::wstring getLootDir() const; virtual std::wstring getTutorialDir() const; virtual bool requiresBSAInvalidation() const { return true; } diff --git a/src/spawn.cpp b/src/spawn.cpp index b1c5e963..6adafba0 100644 --- a/src/spawn.cpp +++ b/src/spawn.cpp @@ -36,10 +36,23 @@ using namespace MOShared; static const int BUFSIZE = 4096; -bool spawn(LPCWSTR binary, LPCWSTR arguments, LPCWSTR currentDirectory, bool suspended, HANDLE& processHandle, HANDLE& threadHandle) +bool spawn(LPCWSTR binary, LPCWSTR arguments, LPCWSTR currentDirectory, bool suspended, + HANDLE stdOut, HANDLE stdErr, + HANDLE& processHandle, HANDLE& threadHandle) { + BOOL inheritHandles = FALSE; STARTUPINFO si; ::ZeroMemory(&si, sizeof(si)); + if (stdOut != INVALID_HANDLE_VALUE) { + si.hStdOutput = stdOut; + inheritHandles = TRUE; + si.dwFlags |= STARTF_USESTDHANDLES; + } + if (stdErr != INVALID_HANDLE_VALUE) { + si.hStdError = stdErr; + inheritHandles = TRUE; + si.dwFlags |= STARTF_USESTDHANDLES; + } si.cb = sizeof(si); int length = wcslen(binary) + wcslen(arguments) + 4; wchar_t *commandLine = NULL; @@ -74,7 +87,7 @@ bool spawn(LPCWSTR binary, LPCWSTR arguments, LPCWSTR currentDirectory, bool sus BOOL success = ::CreateProcess(NULL, commandLine, NULL, NULL, // no special process or thread attributes - FALSE, // don't inherit handle + inheritHandles, // inherit handles if we plan to use stdout or stderr reroute suspended ? CREATE_SUSPENDED : 0, // create suspended so I have time to inject the DLL NULL, // same environment as parent currentDirectory, // current directory @@ -95,14 +108,22 @@ bool spawn(LPCWSTR binary, LPCWSTR arguments, LPCWSTR currentDirectory, bool sus } -HANDLE startBinary(const QFileInfo &binary, const QString &arguments, const QString& profileName, int logLevel, const QDir ¤tDirectory, bool hooked) +HANDLE startBinary(const QFileInfo &binary, + const QString &arguments, + const QString& profileName, + int logLevel, + const QDir ¤tDirectory, + bool hooked, + HANDLE stdOut, + HANDLE stdErr) { HANDLE processHandle, threadHandle; std::wstring binaryName = ToWString(QDir::toNativeSeparators(binary.absoluteFilePath())); std::wstring currentDirectoryName = ToWString(QDir::toNativeSeparators(currentDirectory.absolutePath())); try { - if (!spawn(binaryName.c_str(), ToWString(arguments).c_str(), currentDirectoryName.c_str(), hooked, processHandle, threadHandle)) { + if (!spawn(binaryName.c_str(), ToWString(arguments).c_str(), currentDirectoryName.c_str(), hooked, + stdOut, stdErr, processHandle, threadHandle)) { reportError(QObject::tr("failed to spawn \"%1\"").arg(binary.fileName())); return INVALID_HANDLE_VALUE; } diff --git a/src/spawn.h b/src/spawn.h index 48320fea..3f037119 100644 --- a/src/spawn.h +++ b/src/spawn.h @@ -52,11 +52,17 @@ private: * @param arguments arguments to pass to the binary * @param profileName name of the active profile * @param currentDirectory the directory to use as the working directory to run in + * @param logLevel log level to be used by the hook library. Ignored if hooked is false * @param hooked if set, the binary is started with mo injected + * @param stdout if not equal to INVALID_HANDLE_VALUE, this is used as stdout for the process + * @param stderr if not equal to INVALID_HANDLE_VALUE, this is used as stderr for the process * @return the process handle * @todo is the profile name even used any more? * @todo is the hooked parameter used? **/ -HANDLE startBinary(const QFileInfo &binary, const QString &arguments, const QString &profileName, int logLevel, const QDir ¤tDirectory, bool hooked); +HANDLE startBinary(const QFileInfo &binary, const QString &arguments, const QString &profileName, int logLevel, + const QDir ¤tDirectory, bool hooked, + HANDLE stdOut = INVALID_HANDLE_VALUE, HANDLE stdErr = INVALID_HANDLE_VALUE); #endif // SPAWN_H + -- cgit v1.3.1