1
0
mirror of https://github.com/arsenetar/dupeguru.git synced 2026-01-22 06:37:17 +00:00

Started moving towards a gettext-based localization.

This commit is contained in:
Virgil Dupras
2011-11-01 15:44:18 -04:00
parent 036026d64a
commit d80a56db78
34 changed files with 1821 additions and 105 deletions

View File

@@ -17,7 +17,7 @@ from PyQt4.QtGui import QDesktopServices, QFileDialog, QDialog, QMessageBox, QAp
from jobprogress import job
from jobprogress.qt import Progress
from hscommon.trans import tr, trmsg
from hscommon.trans import trget
from hscommon.plat import ISLINUX
from core.app import JobType
@@ -33,6 +33,8 @@ from .directories_dialog import DirectoriesDialog
from .problem_dialog import ProblemDialog
from .util import createActions
tr = trget('ui')
JOBID2TITLE = {
JobType.Scan: tr("Scanning for duplicates"),
JobType.Load: tr("Loading"),
@@ -136,13 +138,13 @@ class DupeGuru(QObject):
if not dupes:
return
title = tr("Add to Ignore List")
msg = trmsg("IgnoreConfirmMsg").format(len(dupes))
msg = tr("IgnoreConfirmMsg").format(len(dupes))
if self.confirm(title, msg):
self.model.add_selected_to_ignore_list(self)
def copy_or_move_marked(self, copy):
opname = tr("copy") if copy else tr("move")
title = trmsg("SelectCopyOrMoveDestinationMsg").format(opname)
title = tr("SelectCopyOrMoveDestinationMsg").format(opname)
flags = QFileDialog.ShowDirsOnly
destination = str(QFileDialog.getExistingDirectory(self.resultWindow, title, '', flags))
if not destination:
@@ -155,7 +157,7 @@ class DupeGuru(QObject):
if not dupes:
return
title = tr("Remove duplicates")
msg = trmsg("FileRemovalConfirmMsg").format(len(dupes))
msg = tr("FileRemovalConfirmMsg").format(len(dupes))
if self.confirm(title, msg):
self.model.remove_selected(self)
@@ -174,7 +176,7 @@ class DupeGuru(QObject):
if cmd:
self.model.invoke_command(cmd)
else:
msg = trmsg("NoCustomCommandMsg")
msg = tr("NoCustomCommandMsg")
QMessageBox.warning(self.resultWindow, tr("Custom Command"), msg)
def show_details(self):
@@ -205,12 +207,12 @@ class DupeGuru(QObject):
if self.model.results.problems:
self.problemDialog.show()
else:
msg = trmsg("OperationSuccessMsg")
msg = tr("OperationSuccessMsg")
QMessageBox.information(self.resultWindow, tr("Operation Complete"), msg)
elif jobid == JobType.Scan:
if not self.model.results.groups:
title = tr("Scan complete")
msg = trmsg("NoDuplicateFoundMsg")
msg = tr("NoDuplicateFoundMsg")
QMessageBox.information(self.resultWindow, title, msg)
else:
self.showResultsWindow()
@@ -262,7 +264,7 @@ class DupeGuru(QObject):
args = (j, ) + tuple(args)
self._progress.run(jobid, title, func, args=args)
except job.JobInProgressError:
msg = trmsg("TaskHangingMsg")
msg = tr("TaskHangingMsg")
QMessageBox.information(self.resultWindow, 'Action in progress', msg)
def get_default(self, key):

View File

@@ -9,7 +9,9 @@
from PyQt4.QtCore import Qt, SIGNAL, QAbstractTableModel
from PyQt4.QtGui import QHeaderView, QTableView
from hscommon.trans import tr
from hscommon.trans import trget
tr = trget('ui')
HEADER = [tr("Attribute"), tr("Selected"), tr("Reference")]

View File

@@ -11,7 +11,7 @@ from PyQt4.QtGui import (QWidget, QFileDialog, QHeaderView, QVBoxLayout, QHBoxLa
QAbstractItemView, QSpacerItem, QSizePolicy, QPushButton, QApplication, QMainWindow, QMenuBar,
QMenu, QIcon, QPixmap, QLabel)
from hscommon.trans import tr, trmsg
from hscommon.trans import trget
from qtlib.recent import Recent
from qtlib.util import moveToScreenCenter
@@ -19,6 +19,8 @@ from . import platform
from .directories_model import DirectoriesModel, DirectoriesDelegate
from .util import createActions
tr = trget('ui')
class DirectoriesDialog(QMainWindow):
def __init__(self, parent, app):
QMainWindow.__init__(self, None)
@@ -101,7 +103,7 @@ class DirectoriesDialog(QMainWindow):
self.resize(420, 338)
self.centralwidget = QWidget(self)
self.verticalLayout = QVBoxLayout(self.centralwidget)
self.promptLabel = QLabel(trmsg("SelectFolderToScanMsg"), self.centralwidget)
self.promptLabel = QLabel(tr("SelectFolderToScanMsg"), self.centralwidget)
self.verticalLayout.addWidget(self.promptLabel)
self.treeView = QTreeView(self.centralwidget)
self.treeView.setItemDelegate(self.directoriesDelegate)
@@ -171,7 +173,7 @@ class DirectoriesDialog(QMainWindow):
event.accept()
if self.app.model.results.is_modified:
title = tr("Unsaved results")
msg = trmsg("ReallyWantToQuitMsg")
msg = tr("ReallyWantToQuitMsg")
if not self.app.confirm(title, msg):
event.ignore()
if event.isAccepted():
@@ -179,7 +181,7 @@ class DirectoriesDialog(QMainWindow):
#--- Events
def addFolderTriggered(self):
title = trmsg("SelectFolderToAddMsg")
title = tr("SelectFolderToAddMsg")
flags = QFileDialog.ShowDirsOnly
dirpath = str(QFileDialog.getExistingDirectory(self, title, self.lastAddedFolder, flags))
if not dirpath:
@@ -196,7 +198,7 @@ class DirectoriesDialog(QMainWindow):
self.recentFolders.insertItem(folder)
def loadResultsTriggered(self):
title = trmsg("SelectResultToLoadMsg")
title = tr("SelectResultToLoadMsg")
files = ';;'.join([tr("dupeGuru Results (*.dupeguru)"), tr("All Files (*.*)")])
destination = QFileDialog.getOpenFileName(self, title, '', files)
if destination:
@@ -216,7 +218,7 @@ class DirectoriesDialog(QMainWindow):
def scanButtonClicked(self):
if self.app.model.results.is_modified:
title = tr("Start a new scan")
msg = trmsg("ReallyWantToContinueMsg")
msg = tr("ReallyWantToContinueMsg")
if not self.app.confirm(title, msg):
return
self.app.model.start_scanning()

View File

@@ -12,11 +12,13 @@ from PyQt4.QtCore import pyqtSignal, Qt, QRect, QUrl, QModelIndex
from PyQt4.QtGui import (QComboBox, QStyledItemDelegate, QApplication, QBrush, QStyle,
QStyleOptionComboBox, QStyleOptionViewItemV4)
from hscommon.trans import tr
from hscommon.trans import trget
from qtlib.tree_model import RefNode, TreeModel
from core.gui.directory_tree import DirectoryTree
tr = trget('ui')
HEADERS = [tr("Name"), tr("State")]
STATES = [tr("Normal"), tr("Reference"), tr("Excluded")]

View File

@@ -13,11 +13,11 @@ from PyQt4.QtGui import (QDialog, QDesktopServices, QApplication, QVBoxLayout, Q
QFont, QSpacerItem, QSizePolicy, QPushButton)
from hscommon.plat import ISLINUX
from hscommon.trans import tr as trbase, trmsg as trmsgbase
tr = lambda s: trbase(s, "ExtraFairwareReminder")
trmsg = lambda s: trmsgbase(s, "ExtraFairwareReminder")
from hscommon.trans import trget
from core.gui.extra_fairware_reminder import ExtraFairwareReminder as ExtraFairwareReminderModel
tr = trget('ui')
class ExtraFairwareReminder(QDialog):
def __init__(self, parent, app):
flags = Qt.CustomizeWindowHint | Qt.WindowTitleHint
@@ -38,11 +38,11 @@ class ExtraFairwareReminder(QDialog):
self.resize(380, dlg_height)
self.verticalLayout = QVBoxLayout(self)
self.descLabel = QLabel(self)
self.descLabel.setText(trmsg("ExtraFairwarePromptMsg"))
self.descLabel.setText(tr("ExtraFairwarePromptMsg"))
self.descLabel.setWordWrap(True)
self.verticalLayout.addWidget(self.descLabel)
self.reasonLabel = QLabel(self)
self.reasonLabel.setText(trmsg("ExtraFairwareReasonMsg"))
self.reasonLabel.setText(tr("ExtraFairwareReasonMsg"))
self.reasonLabel.setWordWrap(True)
font = QFont()
font.setWeight(75)

View File

@@ -11,9 +11,11 @@ from PyQt4.QtGui import (QDialog, QDialogButtonBox, QVBoxLayout, QHBoxLayout, QL
QSlider, QSizePolicy, QSpacerItem, QCheckBox, QLineEdit, QMessageBox, QSpinBox)
from hscommon.plat import ISOSX, ISLINUX
from hscommon.trans import tr, trmsg
from hscommon.trans import trget
from qtlib.util import horizontalWrap
tr = trget('ui')
class PreferencesDialogBase(QDialog):
def __init__(self, parent, app):
flags = Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowSystemMenuHint
@@ -180,7 +182,7 @@ class PreferencesDialogBase(QDialog):
if oldlang not in langs:
oldlang = 'en'
if lang != oldlang:
QMessageBox.information(self, "", trmsg("NeedsToRestartToApplyLangMsg"))
QMessageBox.information(self, "", tr("NeedsToRestartToApplyLangMsg"))
self.app.prefs.language = lang
self._save(prefs, ischecked)

View File

@@ -10,11 +10,13 @@ from PyQt4.QtCore import Qt, QMimeData, QByteArray
from PyQt4.QtGui import (QDialog, QVBoxLayout, QHBoxLayout, QPushButton, QComboBox, QListView,
QDialogButtonBox, QAbstractItemView, QLabel)
from hscommon.trans import tr
from hscommon.trans import trget
from qtlib.selectable_list import ComboboxModel, ListviewModel
from qtlib.util import verticalSpacer
from core.gui.prioritize_dialog import PrioritizeDialog as PrioritizeDialogModel
tr = trget('ui')
MIME_INDEXES = 'application/dupeguru.rowindexes'
class PrioritizationList(ListviewModel):

View File

@@ -10,10 +10,12 @@ from PyQt4.QtCore import Qt
from PyQt4.QtGui import (QDialog, QVBoxLayout, QHBoxLayout, QPushButton, QSpacerItem, QSizePolicy,
QLabel, QTableView, QAbstractItemView, QApplication)
from hscommon.trans import tr, trmsg
from hscommon.trans import trget
from core.gui.problem_dialog import ProblemDialog as ProblemDialogModel
from .problem_table import ProblemTable
tr = trget('ui')
class ProblemDialog(QDialog):
def __init__(self, parent, app):
flags = Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowSystemMenuHint
@@ -33,7 +35,7 @@ class ProblemDialog(QDialog):
self.resize(413, 323)
self.verticalLayout = QVBoxLayout(self)
self.label = QLabel(self)
self.label.setText(trmsg("ProblemsDuringProcessingMsg"))
self.label.setText(tr("ProblemsDuringProcessingMsg"))
self.label.setWordWrap(True)
self.verticalLayout.addWidget(self.label)
self.tableView = QTableView(self)

View File

@@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
# Created By: Virgil Dupras
# Created On: 2010-04-12
# Copyright 2011 Hardcoded Software (http://www.hardcoded.net)
@@ -7,11 +6,13 @@
# which should be included with this package. The terms are also available at
# http://www.hardcoded.net/licenses/bsd_license
from hscommon.trans import tr
from hscommon.trans import trget
from qtlib.column import Column
from qtlib.table import Table
from core.gui.problem_table import ProblemTable as ProblemTableModel
tr = trget('ui')
class ProblemTable(Table):
COLUMNS = [
Column('path', tr("File Path"), 150),

View File

@@ -12,7 +12,7 @@ from PyQt4.QtGui import (QMainWindow, QMenu, QLabel, QHeaderView, QMessageBox, Q
QStatusBar, QDialog)
from hscommon.plat import ISOSX, ISLINUX
from hscommon.trans import tr, trmsg
from hscommon.trans import trget
from hscommon.util import nonone
from qtlib.util import moveToScreenCenter
@@ -21,6 +21,8 @@ from .stats_label import StatsLabel
from .util import createActions
from .prioritize_dialog import PrioritizeDialog
tr = trget('ui')
class ResultWindow(QMainWindow):
def __init__(self, app):
QMainWindow.__init__(self, None)
@@ -226,7 +228,7 @@ class ResultWindow(QMainWindow):
def applyFilterTriggered(self):
title = tr("Apply Filter")
msg = trmsg("TypeFilterMsg")
msg = tr("TypeFilterMsg")
text = nonone(self._last_filter, '[*]')
answer, ok = QInputDialog.getText(self, title, msg, QLineEdit.Normal, text)
if not ok:
@@ -242,12 +244,12 @@ class ResultWindow(QMainWindow):
title = tr("Clear Ignore List")
count = len(self.app.model.scanner.ignore_list)
if not count:
QMessageBox.information(self, title, trmsg("NothingToClearMsg"))
QMessageBox.information(self, title, tr("NothingToClearMsg"))
return
msg = trmsg("ClearIgnoreListConfirmMsg").format(count)
msg = tr("ClearIgnoreListConfirmMsg").format(count)
if self.app.confirm(title, msg, QMessageBox.No):
self.app.model.scanner.ignore_list.Clear()
QMessageBox.information(self, title, trmsg("IgnoreListClearedMsg"))
QMessageBox.information(self, title, tr("IgnoreListClearedMsg"))
def copyTriggered(self):
self.app.copy_or_move_marked(True)
@@ -257,7 +259,7 @@ class ResultWindow(QMainWindow):
if not count:
return
title = tr("Delete duplicates")
msg = trmsg("SendToTrashConfirmMsg").format(count)
msg = tr("SendToTrashConfirmMsg").format(count)
if self.app.confirm(title, msg):
self.app.model.delete_marked()
@@ -282,7 +284,7 @@ class ResultWindow(QMainWindow):
if not count:
return
title = tr("Delete and hardlink duplicates")
msg = trmsg("HardlinkConfirmMsg").format(count)
msg = tr("HardlinkConfirmMsg").format(count)
if self.app.confirm(title, msg):
self.app.model.delete_marked(replace_with_hardlinks=True)
@@ -318,7 +320,7 @@ class ResultWindow(QMainWindow):
if not count:
return
title = tr("Remove duplicates")
msg = trmsg("FileRemovalConfirmMsg").format(count)
msg = tr("FileRemovalConfirmMsg").format(count)
if self.app.confirm(title, msg):
self.app.model.remove_marked()
@@ -338,7 +340,7 @@ class ResultWindow(QMainWindow):
self.app.model.reveal_selected()
def saveResultsTriggered(self):
title = trmsg("SelectResultToSaveMsg")
title = tr("SelectResultToSaveMsg")
files = tr("dupeGuru Results (*.dupeguru)")
destination = QFileDialog.getSaveFileName(self, title, '', files)
if destination:

View File

@@ -9,10 +9,12 @@
from PyQt4.QtCore import QSize
from PyQt4.QtGui import QVBoxLayout, QAbstractItemView
from hscommon.trans import tr
from hscommon.trans import trget
from ..base.details_dialog import DetailsDialog as DetailsDialogBase
from ..base.details_table import DetailsTable
tr = trget('ui')
class DetailsDialog(DetailsDialogBase):
def _setupUi(self):
self.setWindowTitle(tr("Details"))

View File

@@ -11,12 +11,14 @@ from PyQt4.QtCore import QSize
from PyQt4.QtGui import (QVBoxLayout, QHBoxLayout, QLabel, QSizePolicy, QSpacerItem, QWidget,
QApplication)
from hscommon.trans import tr
from hscommon.trans import trget
from core.scanner import ScanType
from ..base.preferences_dialog import PreferencesDialogBase
from . import preferences
tr = trget('ui')
SCAN_TYPE_ORDER = [
ScanType.Filename,
ScanType.Fields,
@@ -33,8 +35,14 @@ class PreferencesDialog(PreferencesDialogBase):
self.scanTypeComboBox.currentIndexChanged[int].connect(self.scanTypeChanged)
def _setupPreferenceWidgets(self):
scanTypeLabels = [tr(s) for s in ["Filename", "Filename - Fields",
"Filename - Fields (No Order)", "Tags", "Contents", "Audio Contents"]]
scanTypeLabels = [
tr("Filename"),
tr("Filename - Fields"),
tr("Filename - Fields (No Order)"),
tr("Tags"),
tr("Contents"),
tr("Audio Contents"),
]
self._setupScanTypeBox(scanTypeLabels)
self._setupFilterHardnessBox()
self.widgetsVLayout.addLayout(self.filterHardnessHLayout)
@@ -76,7 +84,7 @@ class PreferencesDialog(PreferencesDialogBase):
self.widgetsVLayout.addWidget(self.removeEmptyFoldersBox)
self._setupAddCheckbox('ignoreHardlinkMatches', tr("Ignore duplicates hardlinking to the same file"))
self.widgetsVLayout.addWidget(self.ignoreHardlinkMatches)
self._setupAddCheckbox('debugModeBox', tr(tr("Debug mode (restart required)")))
self._setupAddCheckbox('debugModeBox', tr("Debug mode (restart required)"))
self.widgetsVLayout.addWidget(self.debugModeBox)
self._setupBottomPart()

View File

@@ -9,10 +9,12 @@
from PyQt4.QtCore import Qt, QSize
from PyQt4.QtGui import QVBoxLayout, QAbstractItemView, QHBoxLayout, QLabel, QSizePolicy, QPixmap
from hscommon.trans import tr
from hscommon.trans import trget
from ..base.details_dialog import DetailsDialog as DetailsDialogBase
from ..base.details_table import DetailsTable
tr = trget('ui')
class DetailsDialog(DetailsDialogBase):
def __init__(self, parent, app):
DetailsDialogBase.__init__(self, parent, app)

View File

@@ -7,14 +7,15 @@
# http://www.hardcoded.net/licenses/bsd_license
import sys
from PyQt4.QtGui import QLabel, QApplication
from PyQt4.QtGui import QApplication
from hscommon.trans import tr
from hscommon.trans import trget
from core.scanner import ScanType
from ..base.preferences_dialog import PreferencesDialogBase
from . import preferences
tr = trget('ui')
SCAN_TYPE_ORDER = [
ScanType.FuzzyBlock,
@@ -28,7 +29,10 @@ class PreferencesDialog(PreferencesDialogBase):
self.scanTypeComboBox.currentIndexChanged[int].connect(self.scanTypeChanged)
def _setupPreferenceWidgets(self):
scanTypeLabels = [tr(s) for s in ["Contents", "EXIF Timestamp"]]
scanTypeLabels = [
tr("Contents"),
tr("EXIF Timestamp"),
]
self._setupScanTypeBox(scanTypeLabels)
self._setupFilterHardnessBox()
self.widgetsVLayout.addLayout(self.filterHardnessHLayout)
@@ -42,7 +46,7 @@ class PreferencesDialog(PreferencesDialogBase):
self.widgetsVLayout.addWidget(self.removeEmptyFoldersBox)
self._setupAddCheckbox('ignoreHardlinkMatches', tr("Ignore duplicates hardlinking to the same file"))
self.widgetsVLayout.addWidget(self.ignoreHardlinkMatches)
self._setupAddCheckbox('debugModeBox', tr(tr("Debug mode (restart required)")))
self._setupAddCheckbox('debugModeBox', tr("Debug mode (restart required)"))
self.widgetsVLayout.addWidget(self.debugModeBox)
self._setupBottomPart()

View File

@@ -9,9 +9,11 @@
from PyQt4.QtCore import SIGNAL
from PyQt4.QtGui import QMessageBox, QAction
from hscommon.trans import tr, trmsg
from hscommon.trans import trget
from ..base.result_window import ResultWindow as ResultWindowBase
tr = trget('ui')
class ResultWindow(ResultWindowBase):
def _setupUi(self):
ResultWindowBase._setupUi(self)
@@ -21,8 +23,8 @@ class ResultWindow(ResultWindowBase):
def clearPictureCacheTriggered(self):
title = tr("Clear Picture Cache")
msg = trmsg("ClearPictureCacheConfirmMsg")
msg = tr("ClearPictureCacheConfirmMsg")
if self.app.confirm(title, msg, QMessageBox.No):
self.app.scanner.clear_picture_cache()
QMessageBox.information(self, title, trmsg("PictureCacheClearedMsg"))
QMessageBox.information(self, title, tr("PictureCacheClearedMsg"))

View File

@@ -9,10 +9,12 @@
from PyQt4.QtCore import QSize
from PyQt4.QtGui import QVBoxLayout, QAbstractItemView
from hscommon.trans import tr
from hscommon.trans import trget
from ..base.details_dialog import DetailsDialog as DetailsDialogBase
from ..base.details_table import DetailsTable
tr = trget('ui')
class DetailsDialog(DetailsDialogBase):
def _setupUi(self):
self.setWindowTitle(tr("Details"))

View File

@@ -12,7 +12,7 @@ from PyQt4.QtGui import (QVBoxLayout, QHBoxLayout, QLabel, QSizePolicy, QSpacerI
QLineEdit, QApplication)
from hscommon.plat import ISWINDOWS, ISLINUX
from hscommon.trans import tr
from hscommon.trans import trget
from hscommon.util import tryint
from core.scanner import ScanType
@@ -20,6 +20,8 @@ from core.scanner import ScanType
from ..base.preferences_dialog import PreferencesDialogBase
from . import preferences
tr = trget('ui')
SCAN_TYPE_ORDER = [
ScanType.Filename,
ScanType.Contents,
@@ -33,7 +35,11 @@ class PreferencesDialog(PreferencesDialogBase):
self.scanTypeComboBox.currentIndexChanged[int].connect(self.scanTypeChanged)
def _setupPreferenceWidgets(self):
scanTypeLabels = [tr(s) for s in ["Filename", "Contents", "Folders"]]
scanTypeLabels = [
tr("Filename"),
tr("Contents"),
tr("Folders"),
]
self._setupScanTypeBox(scanTypeLabels)
self._setupFilterHardnessBox()
self.widgetsVLayout.addLayout(self.filterHardnessHLayout)