mirror of
https://github.com/ankitects/anki.git
synced 2025-12-20 10:22:57 -05:00
update temporary val="%s" references to standard ftl
This commit is contained in:
parent
83f8b23b45
commit
2453e5c488
27 changed files with 108 additions and 116 deletions
|
|
@ -131,26 +131,30 @@ class Anki2Importer(Importer):
|
||||||
else:
|
else:
|
||||||
dupesIdentical.append(note)
|
dupesIdentical.append(note)
|
||||||
|
|
||||||
self.log.append(self.dst.tr(TR.IMPORTING_NOTES_FOUND_IN_FILE, val="%s") % total)
|
self.log.append(self.dst.tr(TR.IMPORTING_NOTES_FOUND_IN_FILE, val=total))
|
||||||
|
|
||||||
if dupesIgnored:
|
if dupesIgnored:
|
||||||
self.log.append(
|
self.log.append(
|
||||||
self.dst.tr(TR.IMPORTING_NOTES_THAT_COULD_NOT_BE_IMPORTED, val="%s")
|
self.dst.tr(
|
||||||
% len(dupesIgnored)
|
TR.IMPORTING_NOTES_THAT_COULD_NOT_BE_IMPORTED, val=len(dupesIgnored)
|
||||||
|
)
|
||||||
)
|
)
|
||||||
if update:
|
if update:
|
||||||
self.log.append(
|
self.log.append(
|
||||||
self.dst.tr(TR.IMPORTING_NOTES_UPDATED_AS_FILE_HAD_NEWER, val="%s")
|
self.dst.tr(
|
||||||
% len(update)
|
TR.IMPORTING_NOTES_UPDATED_AS_FILE_HAD_NEWER, val=len(update)
|
||||||
|
)
|
||||||
)
|
)
|
||||||
if add:
|
if add:
|
||||||
self.log.append(
|
self.log.append(
|
||||||
self.dst.tr(TR.IMPORTING_NOTES_ADDED_FROM_FILE, val="%s") % len(add)
|
self.dst.tr(TR.IMPORTING_NOTES_ADDED_FROM_FILE, val=len(add))
|
||||||
)
|
)
|
||||||
if dupesIdentical:
|
if dupesIdentical:
|
||||||
self.log.append(
|
self.log.append(
|
||||||
self.dst.tr(TR.IMPORTING_NOTES_SKIPPED_AS_THEYRE_ALREADY_IN, val="%s")
|
self.dst.tr(
|
||||||
% len(dupesIdentical)
|
TR.IMPORTING_NOTES_SKIPPED_AS_THEYRE_ALREADY_IN,
|
||||||
|
val=len(dupesIdentical),
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
self.log.append("")
|
self.log.append("")
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,7 @@ class TextImporter(NoteImporter):
|
||||||
note = self.noteFromFields(row)
|
note = self.noteFromFields(row)
|
||||||
notes.append(note)
|
notes.append(note)
|
||||||
except (csv.Error) as e:
|
except (csv.Error) as e:
|
||||||
log.append(self.col.tr(TR.IMPORTING_ABORTED, val="%s") % str(e))
|
log.append(self.col.tr(TR.IMPORTING_ABORTED, val=str(e)))
|
||||||
self.log = log
|
self.log = log
|
||||||
self.ignored = ignored
|
self.ignored = ignored
|
||||||
self.close()
|
self.close()
|
||||||
|
|
|
||||||
|
|
@ -136,10 +136,6 @@ class NoteImporter(Importer):
|
||||||
# loop through the notes
|
# loop through the notes
|
||||||
updates = []
|
updates = []
|
||||||
updateLog = []
|
updateLog = []
|
||||||
updateLogTxt = self.col.tr(TR.IMPORTING_FIRST_FIELD_MATCHED, val="%s")
|
|
||||||
dupeLogTxt = self.col.tr(
|
|
||||||
TR.IMPORTING_ADDED_DUPLICATE_WITH_FIRST_FIELD, val="%s"
|
|
||||||
)
|
|
||||||
new = []
|
new = []
|
||||||
self._ids: List[int] = []
|
self._ids: List[int] = []
|
||||||
self._cards: List[Tuple] = []
|
self._cards: List[Tuple] = []
|
||||||
|
|
@ -157,15 +153,14 @@ class NoteImporter(Importer):
|
||||||
# first field must exist
|
# first field must exist
|
||||||
if not fld0:
|
if not fld0:
|
||||||
self.log.append(
|
self.log.append(
|
||||||
self.col.tr(TR.IMPORTING_EMPTY_FIRST_FIELD, val="%s")
|
self.col.tr(TR.IMPORTING_EMPTY_FIRST_FIELD, val=" ".join(n.fields))
|
||||||
% " ".join(n.fields)
|
|
||||||
)
|
)
|
||||||
continue
|
continue
|
||||||
# earlier in import?
|
# earlier in import?
|
||||||
if fld0 in firsts and self.importMode != ADD_MODE:
|
if fld0 in firsts and self.importMode != ADD_MODE:
|
||||||
# duplicates in source file; log and ignore
|
# duplicates in source file; log and ignore
|
||||||
self.log.append(
|
self.log.append(
|
||||||
self.col.tr(TR.IMPORTING_APPEARED_TWICE_IN_FILE, val="%s") % fld0
|
self.col.tr(TR.IMPORTING_APPEARED_TWICE_IN_FILE, val=fld0)
|
||||||
)
|
)
|
||||||
continue
|
continue
|
||||||
firsts[fld0] = True
|
firsts[fld0] = True
|
||||||
|
|
@ -183,7 +178,11 @@ class NoteImporter(Importer):
|
||||||
data = self.updateData(n, id, sflds)
|
data = self.updateData(n, id, sflds)
|
||||||
if data:
|
if data:
|
||||||
updates.append(data)
|
updates.append(data)
|
||||||
updateLog.append(updateLogTxt % fld0)
|
updateLog.append(
|
||||||
|
self.col.tr(
|
||||||
|
TR.IMPORTING_FIRST_FIELD_MATCHED, val=fld0
|
||||||
|
)
|
||||||
|
)
|
||||||
dupeCount += 1
|
dupeCount += 1
|
||||||
found = True
|
found = True
|
||||||
elif self.importMode == IGNORE_MODE:
|
elif self.importMode == IGNORE_MODE:
|
||||||
|
|
@ -193,7 +192,12 @@ class NoteImporter(Importer):
|
||||||
if fld0 not in dupes:
|
if fld0 not in dupes:
|
||||||
# only show message once, no matter how many
|
# only show message once, no matter how many
|
||||||
# duplicates are in the collection already
|
# duplicates are in the collection already
|
||||||
updateLog.append(dupeLogTxt % fld0)
|
updateLog.append(
|
||||||
|
self.col.tr(
|
||||||
|
TR.IMPORTING_ADDED_DUPLICATE_WITH_FIRST_FIELD,
|
||||||
|
val=fld0,
|
||||||
|
)
|
||||||
|
)
|
||||||
dupes.append(fld0)
|
dupes.append(fld0)
|
||||||
found = False
|
found = False
|
||||||
# newly add
|
# newly add
|
||||||
|
|
|
||||||
|
|
@ -164,8 +164,8 @@ def _save_latex_image(
|
||||||
|
|
||||||
|
|
||||||
def _errMsg(col: anki.collection.Collection, type: str, texpath: str) -> Any:
|
def _errMsg(col: anki.collection.Collection, type: str, texpath: str) -> Any:
|
||||||
msg = (col.tr(TR.MEDIA_ERROR_EXECUTING, val="%s") % type) + "<br>"
|
msg = col.tr(TR.MEDIA_ERROR_EXECUTING, val=type) + "<br>"
|
||||||
msg += (col.tr(TR.MEDIA_GENERATED_FILE, val="%s") % texpath) + "<br>"
|
msg += col.tr(TR.MEDIA_GENERATED_FILE, val=texpath) + "<br>"
|
||||||
try:
|
try:
|
||||||
with open(namedtmp("latex_log.txt", rm=False)) as f:
|
with open(namedtmp("latex_log.txt", rm=False)) as f:
|
||||||
log = f.read()
|
log = f.read()
|
||||||
|
|
|
||||||
|
|
@ -101,13 +101,13 @@ system. It's free and open source."
|
||||||
"Anki is licensed under the AGPL3 license. Please see "
|
"Anki is licensed under the AGPL3 license. Please see "
|
||||||
"the license file in the source distribution for more information."
|
"the license file in the source distribution for more information."
|
||||||
)
|
)
|
||||||
abouttext += "<p>" + tr(TR.ABOUT_VERSION, val="%s") % versionWithBuild() + "<br>"
|
abouttext += "<p>" + tr(TR.ABOUT_VERSION, val=versionWithBuild()) + "<br>"
|
||||||
abouttext += ("Python %s Qt %s PyQt %s<br>") % (
|
abouttext += ("Python %s Qt %s PyQt %s<br>") % (
|
||||||
platform.python_version(),
|
platform.python_version(),
|
||||||
QT_VERSION_STR,
|
QT_VERSION_STR,
|
||||||
PYQT_VERSION_STR,
|
PYQT_VERSION_STR,
|
||||||
)
|
)
|
||||||
abouttext += (tr(TR.ABOUT_VISIT_WEBSITE, val="%s") % aqt.appWebsite) + "</span>"
|
abouttext += tr(TR.ABOUT_VISIT_WEBSITE, val=aqt.appWebsite) + "</span>"
|
||||||
|
|
||||||
# automatically sorted; add new lines at the end
|
# automatically sorted; add new lines at the end
|
||||||
allusers = sorted(
|
allusers = sorted(
|
||||||
|
|
|
||||||
|
|
@ -88,7 +88,7 @@ class AddCards(QDialog):
|
||||||
else:
|
else:
|
||||||
sc = "Ctrl+H"
|
sc = "Ctrl+H"
|
||||||
b.setShortcut(QKeySequence(sc))
|
b.setShortcut(QKeySequence(sc))
|
||||||
b.setToolTip(tr(TR.ADDING_SHORTCUT, val="%s") % shortcut(sc))
|
b.setToolTip(tr(TR.ADDING_SHORTCUT, val=shortcut(sc)))
|
||||||
qconnect(b.clicked, self.onHistory)
|
qconnect(b.clicked, self.onHistory)
|
||||||
b.setEnabled(False)
|
b.setEnabled(False)
|
||||||
self.historyButton = b
|
self.historyButton = b
|
||||||
|
|
|
||||||
|
|
@ -422,7 +422,7 @@ and have been disabled: %(found)s"
|
||||||
return True
|
return True
|
||||||
except OSError as e:
|
except OSError as e:
|
||||||
showWarning(
|
showWarning(
|
||||||
tr(TR.ADDONS_UNABLE_TO_UPDATE_OR_DELETE_ADDON, val="%s") % e,
|
tr(TR.ADDONS_UNABLE_TO_UPDATE_OR_DELETE_ADDON, val=str(e)),
|
||||||
textFormat="plain",
|
textFormat="plain",
|
||||||
)
|
)
|
||||||
return False
|
return False
|
||||||
|
|
@ -740,9 +740,7 @@ class AddonsDialog(QDialog):
|
||||||
return name + " " + tr(TR.ADDONS_DISABLED2)
|
return name + " " + tr(TR.ADDONS_DISABLED2)
|
||||||
elif not addon.compatible():
|
elif not addon.compatible():
|
||||||
return (
|
return (
|
||||||
name
|
name + " " + tr(TR.ADDONS_REQUIRES, val=self.compatible_string(addon))
|
||||||
+ " "
|
|
||||||
+ tr(TR.ADDONS_REQUIRES, val="%s") % self.compatible_string(addon)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
return name
|
return name
|
||||||
|
|
@ -1007,10 +1005,7 @@ def describe_log_entry(id_and_entry: DownloadLogEntry) -> str:
|
||||||
if entry.status_code in (403, 404):
|
if entry.status_code in (403, 404):
|
||||||
buf += tr(TR.ADDONS_INVALID_CODE_OR_ADDON_NOT_AVAILABLE)
|
buf += tr(TR.ADDONS_INVALID_CODE_OR_ADDON_NOT_AVAILABLE)
|
||||||
else:
|
else:
|
||||||
buf += (
|
buf += tr(TR.QT_MISC_UNEXPECTED_RESPONSE_CODE, val=entry.status_code)
|
||||||
tr(TR.QT_MISC_UNEXPECTED_RESPONSE_CODE, val="%s")
|
|
||||||
% entry.status_code
|
|
||||||
)
|
|
||||||
else:
|
else:
|
||||||
buf += (
|
buf += (
|
||||||
tr(TR.ADDONS_PLEASE_CHECK_YOUR_INTERNET_CONNECTION)
|
tr(TR.ADDONS_PLEASE_CHECK_YOUR_INTERNET_CONNECTION)
|
||||||
|
|
|
||||||
|
|
@ -621,7 +621,7 @@ class Browser(QMainWindow):
|
||||||
f = self.form
|
f = self.form
|
||||||
qconnect(f.previewButton.clicked, self.onTogglePreview)
|
qconnect(f.previewButton.clicked, self.onTogglePreview)
|
||||||
f.previewButton.setToolTip(
|
f.previewButton.setToolTip(
|
||||||
tr(TR.BROWSING_PREVIEW_SELECTED_CARD, val="%s") % shortcut("Ctrl+Shift+P")
|
tr(TR.BROWSING_PREVIEW_SELECTED_CARD, val=shortcut("Ctrl+Shift+P"))
|
||||||
)
|
)
|
||||||
f.previewButton.setShortcut("Ctrl+Shift+P")
|
f.previewButton.setShortcut("Ctrl+Shift+P")
|
||||||
|
|
||||||
|
|
@ -1406,9 +1406,7 @@ QTableView {{ gridline-color: {grid} }}
|
||||||
|
|
||||||
def _onRemoveFilter(self):
|
def _onRemoveFilter(self):
|
||||||
name = self._currentFilterIsSaved()
|
name = self._currentFilterIsSaved()
|
||||||
if not askUser(
|
if not askUser(tr(TR.BROWSING_REMOVE_FROM_YOUR_SAVED_SEARCHES, val=name)):
|
||||||
tr(TR.BROWSING_REMOVE_FROM_YOUR_SAVED_SEARCHES, val="%s") % name
|
|
||||||
):
|
|
||||||
return
|
return
|
||||||
del self.col.conf["savedFilters"][name]
|
del self.col.conf["savedFilters"][name]
|
||||||
self.col.setMod()
|
self.col.setMod()
|
||||||
|
|
@ -1751,8 +1749,8 @@ where id in %s"""
|
||||||
)
|
)
|
||||||
pmin = pmin or 0
|
pmin = pmin or 0
|
||||||
pmax = pmax or 0
|
pmax = pmax or 0
|
||||||
txt = tr(TR.BROWSING_QUEUE_TOP, val="%s") % pmin
|
txt = tr(TR.BROWSING_QUEUE_TOP, val=pmin)
|
||||||
txt += "\n" + tr(TR.BROWSING_QUEUE_BOTTOM, val="%s") % pmax
|
txt += "\n" + tr(TR.BROWSING_QUEUE_BOTTOM, val=pmax)
|
||||||
frm.label.setText(txt)
|
frm.label.setText(txt)
|
||||||
frm.start.selectAll()
|
frm.start.selectAll()
|
||||||
if not d.exec_():
|
if not d.exec_():
|
||||||
|
|
@ -2192,7 +2190,7 @@ class ChangeModel(QDialog):
|
||||||
targets = [x["name"] for x in dst] + [tr(TR.BROWSING_NOTHING)]
|
targets = [x["name"] for x in dst] + [tr(TR.BROWSING_NOTHING)]
|
||||||
indices = {}
|
indices = {}
|
||||||
for i, x in enumerate(src):
|
for i, x in enumerate(src):
|
||||||
l.addWidget(QLabel(tr(TR.BROWSING_CHANGE_TO, val="%s") % x["name"]), i, 0)
|
l.addWidget(QLabel(tr(TR.BROWSING_CHANGE_TO, val=x["name"])), i, 0)
|
||||||
cb = QComboBox()
|
cb = QComboBox()
|
||||||
cb.addItems(targets)
|
cb.addItems(targets)
|
||||||
idx = min(i, len(targets) - 1)
|
idx = min(i, len(targets) - 1)
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,7 @@ class CardLayout(QDialog):
|
||||||
self.setupButtons()
|
self.setupButtons()
|
||||||
self.setupShortcuts()
|
self.setupShortcuts()
|
||||||
self.setWindowTitle(
|
self.setWindowTitle(
|
||||||
tr(TR.CARD_TEMPLATES_CARD_TYPES_FOR, val="%s") % self.model["name"]
|
tr(TR.CARD_TEMPLATES_CARD_TYPES_FOR, val=self.model["name"])
|
||||||
)
|
)
|
||||||
v1 = QVBoxLayout()
|
v1 = QVBoxLayout()
|
||||||
v1.addWidget(self.topArea)
|
v1.addWidget(self.topArea)
|
||||||
|
|
@ -244,7 +244,7 @@ class CardLayout(QDialog):
|
||||||
qconnect(widg.returnPressed, self.on_search_next)
|
qconnect(widg.returnPressed, self.on_search_next)
|
||||||
|
|
||||||
def setup_cloze_number_box(self):
|
def setup_cloze_number_box(self):
|
||||||
names = (tr(TR.CARD_TEMPLATES_CLOZE, val="%s") % n for n in self.cloze_numbers)
|
names = (tr(TR.CARD_TEMPLATES_CLOZE, val=n) for n in self.cloze_numbers)
|
||||||
self.pform.cloze_number_combo.addItems(names)
|
self.pform.cloze_number_combo.addItems(names)
|
||||||
try:
|
try:
|
||||||
idx = self.cloze_numbers.index(self.ord + 1)
|
idx = self.cloze_numbers.index(self.ord + 1)
|
||||||
|
|
@ -603,7 +603,7 @@ class CardLayout(QDialog):
|
||||||
template = self.current_template()
|
template = self.current_template()
|
||||||
current_pos = self.templates.index(template) + 1
|
current_pos = self.templates.index(template) + 1
|
||||||
pos = getOnlyText(
|
pos = getOnlyText(
|
||||||
tr(TR.CARD_TEMPLATES_ENTER_NEW_CARD_POSITION_1, val="%s") % n,
|
tr(TR.CARD_TEMPLATES_ENTER_NEW_CARD_POSITION_1, val=n),
|
||||||
default=str(current_pos),
|
default=str(current_pos),
|
||||||
)
|
)
|
||||||
if not pos:
|
if not pos:
|
||||||
|
|
@ -626,7 +626,7 @@ class CardLayout(QDialog):
|
||||||
def _newCardName(self):
|
def _newCardName(self):
|
||||||
n = len(self.templates) + 1
|
n = len(self.templates) + 1
|
||||||
while 1:
|
while 1:
|
||||||
name = tr(TR.CARD_TEMPLATES_CARD, val="%s") % n
|
name = tr(TR.CARD_TEMPLATES_CARD, val=n)
|
||||||
if name not in [t["name"] for t in self.templates]:
|
if name not in [t["name"] for t in self.templates]:
|
||||||
break
|
break
|
||||||
n += 1
|
n += 1
|
||||||
|
|
|
||||||
|
|
@ -67,8 +67,8 @@ class CustomStudy(QDialog):
|
||||||
new, self.conf["new"]["perDay"] - self.deck["newToday"][1]
|
new, self.conf["new"]["perDay"] - self.deck["newToday"][1]
|
||||||
)
|
)
|
||||||
newExceeding = min(new, new - newUnderLearning)
|
newExceeding = min(new, new - newUnderLearning)
|
||||||
tit = tr(TR.CUSTOM_STUDY_NEW_CARDS_IN_DECK_OVER_TODAY, val="%s") % plus(
|
tit = tr(
|
||||||
newExceeding
|
TR.CUSTOM_STUDY_NEW_CARDS_IN_DECK_OVER_TODAY, val=plus(newExceeding)
|
||||||
)
|
)
|
||||||
pre = tr(TR.CUSTOM_STUDY_INCREASE_TODAYS_NEW_CARD_LIMIT_BY)
|
pre = tr(TR.CUSTOM_STUDY_INCREASE_TODAYS_NEW_CARD_LIMIT_BY)
|
||||||
sval = min(new, self.deck.get("extendNew", 10))
|
sval = min(new, self.deck.get("extendNew", 10))
|
||||||
|
|
@ -81,8 +81,8 @@ class CustomStudy(QDialog):
|
||||||
rev, self.conf["rev"]["perDay"] - self.deck["revToday"][1]
|
rev, self.conf["rev"]["perDay"] - self.deck["revToday"][1]
|
||||||
)
|
)
|
||||||
revExceeding = min(rev, rev - revUnderLearning)
|
revExceeding = min(rev, rev - revUnderLearning)
|
||||||
tit = tr(TR.CUSTOM_STUDY_REVIEWS_DUE_IN_DECK_OVER_TODAY, val="%s") % plus(
|
tit = tr(
|
||||||
revExceeding
|
TR.CUSTOM_STUDY_REVIEWS_DUE_IN_DECK_OVER_TODAY, val=plus(revExceeding)
|
||||||
)
|
)
|
||||||
pre = tr(TR.CUSTOM_STUDY_INCREASE_TODAYS_REVIEW_LIMIT_BY)
|
pre = tr(TR.CUSTOM_STUDY_INCREASE_TODAYS_REVIEW_LIMIT_BY)
|
||||||
sval = min(rev, self.deck.get("extendRev", 10))
|
sval = min(rev, self.deck.get("extendRev", 10))
|
||||||
|
|
|
||||||
|
|
@ -292,7 +292,7 @@ class DeckBrowser:
|
||||||
deck["dyn"]
|
deck["dyn"]
|
||||||
or not extra
|
or not extra
|
||||||
or askUser(
|
or askUser(
|
||||||
(tr(TR.DECKS_ARE_YOU_SURE_YOU_WISH_TO, val="%s") % deck["name"]) + extra
|
(tr(TR.DECKS_ARE_YOU_SURE_YOU_WISH_TO, val=deck["name"])) + extra
|
||||||
)
|
)
|
||||||
):
|
):
|
||||||
self.mw.progress.start()
|
self.mw.progress.start()
|
||||||
|
|
@ -314,7 +314,7 @@ class DeckBrowser:
|
||||||
drawLinks = deepcopy(self.drawLinks)
|
drawLinks = deepcopy(self.drawLinks)
|
||||||
for b in drawLinks:
|
for b in drawLinks:
|
||||||
if b[0]:
|
if b[0]:
|
||||||
b[0] = tr(TR.ACTIONS_SHORTCUT_KEY, val="%s") % shortcut(b[0])
|
b[0] = tr(TR.ACTIONS_SHORTCUT_KEY, val=shortcut(b[0]))
|
||||||
buf += """
|
buf += """
|
||||||
<button title='%s' onclick='pycmd(\"%s\");'>%s</button>""" % tuple(
|
<button title='%s' onclick='pycmd(\"%s\");'>%s</button>""" % tuple(
|
||||||
b
|
b
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ class DeckConf(QDialog):
|
||||||
self.form.buttonBox.button(QDialogButtonBox.RestoreDefaults).clicked,
|
self.form.buttonBox.button(QDialogButtonBox.RestoreDefaults).clicked,
|
||||||
self.onRestore,
|
self.onRestore,
|
||||||
)
|
)
|
||||||
self.setWindowTitle(tr(TR.ACTIONS_OPTIONS_FOR, val="%s") % self.deck["name"])
|
self.setWindowTitle(tr(TR.ACTIONS_OPTIONS_FOR, val=self.deck["name"]))
|
||||||
# qt doesn't size properly with altered fonts otherwise
|
# qt doesn't size properly with altered fonts otherwise
|
||||||
restoreGeom(self, "deckconf", adjustSize=True)
|
restoreGeom(self, "deckconf", adjustSize=True)
|
||||||
gui_hooks.deck_conf_will_show(self)
|
gui_hooks.deck_conf_will_show(self)
|
||||||
|
|
@ -156,9 +156,7 @@ class DeckConf(QDialog):
|
||||||
self.loadConfs()
|
self.loadConfs()
|
||||||
|
|
||||||
def setChildren(self):
|
def setChildren(self):
|
||||||
if not askUser(
|
if not askUser(tr(TR.SCHEDULING_SET_ALL_DECKS_BELOW_TO, val=self.deck["name"])):
|
||||||
tr(TR.SCHEDULING_SET_ALL_DECKS_BELOW_TO, val="%s") % self.deck["name"]
|
|
||||||
):
|
|
||||||
return
|
return
|
||||||
for did in self.childDids:
|
for did in self.childDids:
|
||||||
deck = self.mw.col.decks.get(did)
|
deck = self.mw.col.decks.get(did)
|
||||||
|
|
@ -195,7 +193,7 @@ class DeckConf(QDialog):
|
||||||
lim = x
|
lim = x
|
||||||
else:
|
else:
|
||||||
lim = min(x, lim)
|
lim = min(x, lim)
|
||||||
return tr(TR.SCHEDULING_PARENT_LIMIT, val="%s") % lim
|
return tr(TR.SCHEDULING_PARENT_LIMIT, val=lim)
|
||||||
|
|
||||||
def loadConf(self):
|
def loadConf(self):
|
||||||
self.conf = self.mw.col.decks.confForDid(self.deck["id"])
|
self.conf = self.mw.col.decks.confForDid(self.deck["id"])
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ class DeckConf(QDialog):
|
||||||
self.mw.checkpoint(tr(TR.ACTIONS_OPTIONS))
|
self.mw.checkpoint(tr(TR.ACTIONS_OPTIONS))
|
||||||
self.setWindowModality(Qt.WindowModal)
|
self.setWindowModality(Qt.WindowModal)
|
||||||
qconnect(self.form.buttonBox.helpRequested, lambda: openHelp("filtered-decks"))
|
qconnect(self.form.buttonBox.helpRequested, lambda: openHelp("filtered-decks"))
|
||||||
self.setWindowTitle(tr(TR.ACTIONS_OPTIONS_FOR, val="%s") % self.deck["name"])
|
self.setWindowTitle(tr(TR.ACTIONS_OPTIONS_FOR, val=self.deck["name"]))
|
||||||
restoreGeom(self, "dyndeckconf")
|
restoreGeom(self, "dyndeckconf")
|
||||||
self.initialSetup()
|
self.initialSetup()
|
||||||
self.loadConf()
|
self.loadConf()
|
||||||
|
|
|
||||||
|
|
@ -865,15 +865,15 @@ to a cloze type first, via 'Notes>Change Note Type'"""
|
||||||
client.timeout = 30
|
client.timeout = 30
|
||||||
with client.get(url) as response:
|
with client.get(url) as response:
|
||||||
if response.status_code != 200:
|
if response.status_code != 200:
|
||||||
error_msg = (
|
error_msg = tr(
|
||||||
tr(TR.QT_MISC_UNEXPECTED_RESPONSE_CODE, val="%s")
|
TR.QT_MISC_UNEXPECTED_RESPONSE_CODE,
|
||||||
% response.status_code
|
val=response.status_code,
|
||||||
)
|
)
|
||||||
return None
|
return None
|
||||||
filecontents = response.content
|
filecontents = response.content
|
||||||
content_type = response.headers.get("content-type")
|
content_type = response.headers.get("content-type")
|
||||||
except (urllib.error.URLError, requests.exceptions.RequestException) as e:
|
except (urllib.error.URLError, requests.exceptions.RequestException) as e:
|
||||||
error_msg = tr(TR.EDITING_AN_ERROR_OCCURRED_WHILE_OPENING, val="%s") % e
|
error_msg = tr(TR.EDITING_AN_ERROR_OCCURRED_WHILE_OPENING, val=str(e))
|
||||||
return None
|
return None
|
||||||
finally:
|
finally:
|
||||||
self.mw.progress.finish()
|
self.mw.progress.finish()
|
||||||
|
|
|
||||||
|
|
@ -142,7 +142,7 @@ class ExportDialog(QDialog):
|
||||||
f = open(file, "wb")
|
f = open(file, "wb")
|
||||||
f.close()
|
f.close()
|
||||||
except (OSError, IOError) as e:
|
except (OSError, IOError) as e:
|
||||||
showWarning(tr(TR.EXPORTING_COULDNT_SAVE_FILE, val="%s") % str(e))
|
showWarning(tr(TR.EXPORTING_COULDNT_SAVE_FILE, val=str(e)))
|
||||||
else:
|
else:
|
||||||
os.unlink(file)
|
os.unlink(file)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ class FieldDialog(QDialog):
|
||||||
self.change_tracker = ChangeTracker(self.mw)
|
self.change_tracker = ChangeTracker(self.mw)
|
||||||
self.form = aqt.forms.fields.Ui_Dialog()
|
self.form = aqt.forms.fields.Ui_Dialog()
|
||||||
self.form.setupUi(self)
|
self.form.setupUi(self)
|
||||||
self.setWindowTitle(tr(TR.FIELDS_FIELDS_FOR, val="%s") % self.model["name"])
|
self.setWindowTitle(tr(TR.FIELDS_FIELDS_FOR, val=self.model["name"]))
|
||||||
self.form.buttonBox.button(QDialogButtonBox.Help).setAutoDefault(False)
|
self.form.buttonBox.button(QDialogButtonBox.Help).setAutoDefault(False)
|
||||||
self.form.buttonBox.button(QDialogButtonBox.Cancel).setAutoDefault(False)
|
self.form.buttonBox.button(QDialogButtonBox.Cancel).setAutoDefault(False)
|
||||||
self.form.buttonBox.button(QDialogButtonBox.Save).setAutoDefault(False)
|
self.form.buttonBox.button(QDialogButtonBox.Save).setAutoDefault(False)
|
||||||
|
|
@ -123,7 +123,7 @@ class FieldDialog(QDialog):
|
||||||
return showWarning(tr(TR.FIELDS_NOTES_REQUIRE_AT_LEAST_ONE_FIELD))
|
return showWarning(tr(TR.FIELDS_NOTES_REQUIRE_AT_LEAST_ONE_FIELD))
|
||||||
count = self.mm.useCount(self.model)
|
count = self.mm.useCount(self.model)
|
||||||
c = ngettext("%d note", "%d notes", count) % count
|
c = ngettext("%d note", "%d notes", count) % count
|
||||||
if not askUser(tr(TR.FIELDS_DELETE_FIELD_FROM, val="%s") % c):
|
if not askUser(tr(TR.FIELDS_DELETE_FIELD_FROM, val=c)):
|
||||||
return
|
return
|
||||||
if not self.change_tracker.mark_schema():
|
if not self.change_tracker.mark_schema():
|
||||||
return
|
return
|
||||||
|
|
@ -137,9 +137,7 @@ class FieldDialog(QDialog):
|
||||||
def onPosition(self, delta=-1):
|
def onPosition(self, delta=-1):
|
||||||
idx = self.currentIdx
|
idx = self.currentIdx
|
||||||
l = len(self.model["flds"])
|
l = len(self.model["flds"])
|
||||||
txt = getOnlyText(
|
txt = getOnlyText(tr(TR.FIELDS_NEW_POSITION_1, val=l), default=str(idx + 1))
|
||||||
tr(TR.FIELDS_NEW_POSITION_1, val="%s") % l, default=str(idx + 1)
|
|
||||||
)
|
|
||||||
if not txt:
|
if not txt:
|
||||||
return
|
return
|
||||||
try:
|
try:
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@ class ChangeMap(QDialog):
|
||||||
n = 0
|
n = 0
|
||||||
setCurrent = False
|
setCurrent = False
|
||||||
for field in self.model["flds"]:
|
for field in self.model["flds"]:
|
||||||
item = QListWidgetItem(tr(TR.IMPORTING_MAP_TO, val="%s") % field["name"])
|
item = QListWidgetItem(tr(TR.IMPORTING_MAP_TO, val=field["name"]))
|
||||||
self.frm.fields.addItem(item)
|
self.frm.fields.addItem(item)
|
||||||
if current == field["name"]:
|
if current == field["name"]:
|
||||||
setCurrent = True
|
setCurrent = True
|
||||||
|
|
@ -166,7 +166,7 @@ you can enter it here. Use \\t to represent tab."""
|
||||||
d = tr(TR.IMPORTING_COLON)
|
d = tr(TR.IMPORTING_COLON)
|
||||||
else:
|
else:
|
||||||
d = repr(d)
|
d = repr(d)
|
||||||
txt = tr(TR.IMPORTING_FIELDS_SEPARATED_BY, val="%s") % d
|
txt = tr(TR.IMPORTING_FIELDS_SEPARATED_BY, val=d)
|
||||||
self.frm.autoDetect.setText(txt)
|
self.frm.autoDetect.setText(txt)
|
||||||
|
|
||||||
def accept(self):
|
def accept(self):
|
||||||
|
|
@ -247,12 +247,12 @@ you can enter it here. Use \\t to represent tab."""
|
||||||
self.grid.setSpacing(6)
|
self.grid.setSpacing(6)
|
||||||
fields = self.importer.fields()
|
fields = self.importer.fields()
|
||||||
for num in range(len(self.mapping)):
|
for num in range(len(self.mapping)):
|
||||||
text = tr(TR.IMPORTING_FIELD_OF_FILE_IS, val="%s") % (num + 1)
|
text = tr(TR.IMPORTING_FIELD_OF_FILE_IS, val=num + 1)
|
||||||
self.grid.addWidget(QLabel(text), num, 0)
|
self.grid.addWidget(QLabel(text), num, 0)
|
||||||
if self.mapping[num] == "_tags":
|
if self.mapping[num] == "_tags":
|
||||||
text = tr(TR.IMPORTING_MAPPED_TO_TAGS)
|
text = tr(TR.IMPORTING_MAPPED_TO_TAGS)
|
||||||
elif self.mapping[num]:
|
elif self.mapping[num]:
|
||||||
text = tr(TR.IMPORTING_MAPPED_TO, val="%s") % self.mapping[num]
|
text = tr(TR.IMPORTING_MAPPED_TO, val=self.mapping[num])
|
||||||
else:
|
else:
|
||||||
text = tr(TR.IMPORTING_IGNORED)
|
text = tr(TR.IMPORTING_IGNORED)
|
||||||
self.grid.addWidget(QLabel(text), num, 1)
|
self.grid.addWidget(QLabel(text), num, 1)
|
||||||
|
|
|
||||||
|
|
@ -119,9 +119,7 @@ class AnkiQt(QMainWindow):
|
||||||
self.setupAddons(args)
|
self.setupAddons(args)
|
||||||
self.finish_ui_setup()
|
self.finish_ui_setup()
|
||||||
except:
|
except:
|
||||||
showInfo(
|
showInfo(tr(TR.QT_MISC_ERROR_DURING_STARTUP, val=traceback.format_exc()))
|
||||||
tr(TR.QT_MISC_ERROR_DURING_STARTUP, val="%s") % traceback.format_exc()
|
|
||||||
)
|
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
# must call this after ui set up
|
# must call this after ui set up
|
||||||
if self.safeMode:
|
if self.safeMode:
|
||||||
|
|
@ -759,7 +757,7 @@ from the profile screen."
|
||||||
) -> str:
|
) -> str:
|
||||||
class_ = "but " + class_
|
class_ = "but " + class_
|
||||||
if key:
|
if key:
|
||||||
key = tr(TR.ACTIONS_SHORTCUT_KEY, val="%s") % key
|
key = tr(TR.ACTIONS_SHORTCUT_KEY, val=key)
|
||||||
else:
|
else:
|
||||||
key = ""
|
key = ""
|
||||||
return """
|
return """
|
||||||
|
|
@ -1030,15 +1028,13 @@ title="%s" %s>%s</button>""" % (
|
||||||
gui_hooks.review_did_undo(cid)
|
gui_hooks.review_did_undo(cid)
|
||||||
else:
|
else:
|
||||||
self.reset()
|
self.reset()
|
||||||
tooltip(tr(TR.QT_MISC_REVERTED_TO_STATE_PRIOR_TO, val="%s") % n.lower())
|
tooltip(tr(TR.QT_MISC_REVERTED_TO_STATE_PRIOR_TO, val=n.lower()))
|
||||||
gui_hooks.state_did_revert(n)
|
gui_hooks.state_did_revert(n)
|
||||||
self.maybeEnableUndo()
|
self.maybeEnableUndo()
|
||||||
|
|
||||||
def maybeEnableUndo(self) -> None:
|
def maybeEnableUndo(self) -> None:
|
||||||
if self.col and self.col.undoName():
|
if self.col and self.col.undoName():
|
||||||
self.form.actionUndo.setText(
|
self.form.actionUndo.setText(tr(TR.QT_MISC_UNDO2, val=self.col.undoName()))
|
||||||
tr(TR.QT_MISC_UNDO2, val="%s") % self.col.undoName()
|
|
||||||
)
|
|
||||||
self.form.actionUndo.setEnabled(True)
|
self.form.actionUndo.setEnabled(True)
|
||||||
gui_hooks.undo_state_did_change(True)
|
gui_hooks.undo_state_did_change(True)
|
||||||
else:
|
else:
|
||||||
|
|
@ -1160,9 +1156,9 @@ title="%s" %s>%s</button>""" % (
|
||||||
if not search:
|
if not search:
|
||||||
if not deck["dyn"]:
|
if not deck["dyn"]:
|
||||||
search = 'deck:"%s" ' % deck["name"]
|
search = 'deck:"%s" ' % deck["name"]
|
||||||
while self.col.decks.id_for_name(tr(TR.QT_MISC_FILTERED_DECK, val="%s") % n):
|
while self.col.decks.id_for_name(tr(TR.QT_MISC_FILTERED_DECK, val=n)):
|
||||||
n += 1
|
n += 1
|
||||||
name = tr(TR.QT_MISC_FILTERED_DECK, val="%s") % n
|
name = tr(TR.QT_MISC_FILTERED_DECK, val=n)
|
||||||
did = self.col.decks.new_filtered(name)
|
did = self.col.decks.new_filtered(name)
|
||||||
diag = aqt.dyndeckconf.DeckConf(self, first=True, search=search)
|
diag = aqt.dyndeckconf.DeckConf(self, first=True, search=search)
|
||||||
if not diag.ok:
|
if not diag.ok:
|
||||||
|
|
|
||||||
|
|
@ -160,7 +160,7 @@ class Models(QDialog):
|
||||||
frm.latexsvg.setChecked(nt.get("latexsvg", False))
|
frm.latexsvg.setChecked(nt.get("latexsvg", False))
|
||||||
frm.latexHeader.setText(nt["latexPre"])
|
frm.latexHeader.setText(nt["latexPre"])
|
||||||
frm.latexFooter.setText(nt["latexPost"])
|
frm.latexFooter.setText(nt["latexPost"])
|
||||||
d.setWindowTitle(tr(TR.ACTIONS_OPTIONS_FOR, val="%s") % nt["name"])
|
d.setWindowTitle(tr(TR.ACTIONS_OPTIONS_FOR, val=nt["name"]))
|
||||||
qconnect(frm.buttonBox.helpRequested, lambda: openHelp("math?id=latex"))
|
qconnect(frm.buttonBox.helpRequested, lambda: openHelp("math?id=latex"))
|
||||||
restoreGeom(d, "modelopts")
|
restoreGeom(d, "modelopts")
|
||||||
gui_hooks.models_advanced_will_show(d)
|
gui_hooks.models_advanced_will_show(d)
|
||||||
|
|
@ -211,12 +211,12 @@ class AddModel(QDialog):
|
||||||
# standard models
|
# standard models
|
||||||
self.models = []
|
self.models = []
|
||||||
for (name, func) in stdmodels.get_stock_notetypes(self.col):
|
for (name, func) in stdmodels.get_stock_notetypes(self.col):
|
||||||
item = QListWidgetItem(tr(TR.NOTETYPES_ADD, val="%s") % name)
|
item = QListWidgetItem(tr(TR.NOTETYPES_ADD, val=name))
|
||||||
self.dialog.models.addItem(item)
|
self.dialog.models.addItem(item)
|
||||||
self.models.append((True, func))
|
self.models.append((True, func))
|
||||||
# add copies
|
# add copies
|
||||||
for m in sorted(self.col.models.all(), key=itemgetter("name")):
|
for m in sorted(self.col.models.all(), key=itemgetter("name")):
|
||||||
item = QListWidgetItem(tr(TR.NOTETYPES_CLONE, val="%s") % m["name"])
|
item = QListWidgetItem(tr(TR.NOTETYPES_CLONE, val=m["name"]))
|
||||||
self.dialog.models.addItem(item)
|
self.dialog.models.addItem(item)
|
||||||
self.models.append((False, m)) # type: ignore
|
self.models.append((False, m)) # type: ignore
|
||||||
self.dialog.models.setCurrentRow(0)
|
self.dialog.models.setCurrentRow(0)
|
||||||
|
|
|
||||||
|
|
@ -261,7 +261,7 @@ to their original deck."""
|
||||||
buf = ""
|
buf = ""
|
||||||
for b in links:
|
for b in links:
|
||||||
if b[0]:
|
if b[0]:
|
||||||
b[0] = tr(TR.ACTIONS_SHORTCUT_KEY, val="%s") % shortcut(b[0])
|
b[0] = tr(TR.ACTIONS_SHORTCUT_KEY, val=shortcut(b[0]))
|
||||||
buf += """
|
buf += """
|
||||||
<button title="%s" onclick='pycmd("%s")'>%s</button>""" % tuple(
|
<button title="%s" onclick='pycmd("%s")'>%s</button>""" % tuple(
|
||||||
b
|
b
|
||||||
|
|
|
||||||
|
|
@ -305,8 +305,7 @@ details have been forgotten."""
|
||||||
oldFolder = midFolder
|
oldFolder = midFolder
|
||||||
else:
|
else:
|
||||||
showWarning(
|
showWarning(
|
||||||
tr(TR.PROFILES_PLEASE_REMOVE_THE_FOLDER_AND, val="%s")
|
tr(TR.PROFILES_PLEASE_REMOVE_THE_FOLDER_AND, val=midFolder)
|
||||||
% midFolder
|
|
||||||
)
|
)
|
||||||
self.name = oldName
|
self.name = oldName
|
||||||
return
|
return
|
||||||
|
|
|
||||||
|
|
@ -396,7 +396,7 @@ class Reviewer:
|
||||||
Please run Tools>Empty Cards"""
|
Please run Tools>Empty Cards"""
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
warn = tr(TR.STUDYING_TYPE_ANSWER_UNKNOWN_FIELD, val="%s") % fld
|
warn = tr(TR.STUDYING_TYPE_ANSWER_UNKNOWN_FIELD, val=fld)
|
||||||
return re.sub(self.typeAnsPat, warn, buf)
|
return re.sub(self.typeAnsPat, warn, buf)
|
||||||
else:
|
else:
|
||||||
# empty field, remove type answer pattern
|
# empty field, remove type answer pattern
|
||||||
|
|
@ -578,7 +578,7 @@ time = %(time)d;
|
||||||
""" % dict(
|
""" % dict(
|
||||||
rem=self._remaining(),
|
rem=self._remaining(),
|
||||||
edit=tr(TR.STUDYING_EDIT),
|
edit=tr(TR.STUDYING_EDIT),
|
||||||
editkey=tr(TR.ACTIONS_SHORTCUT_KEY, val="%s") % "E",
|
editkey=tr(TR.ACTIONS_SHORTCUT_KEY, val="E"),
|
||||||
more=tr(TR.STUDYING_MORE),
|
more=tr(TR.STUDYING_MORE),
|
||||||
downArrow=downArrow(),
|
downArrow=downArrow(),
|
||||||
time=self.card.timeTaken() // 1000,
|
time=self.card.timeTaken() // 1000,
|
||||||
|
|
@ -589,7 +589,7 @@ time = %(time)d;
|
||||||
<span class=stattxt>%s</span><br>
|
<span class=stattxt>%s</span><br>
|
||||||
<button title="%s" id="ansbut" class="focus" onclick='pycmd("ans");'>%s</button>""" % (
|
<button title="%s" id="ansbut" class="focus" onclick='pycmd("ans");'>%s</button>""" % (
|
||||||
self._remaining(),
|
self._remaining(),
|
||||||
tr(TR.ACTIONS_SHORTCUT_KEY, val="%s") % tr(TR.STUDYING_SPACE),
|
tr(TR.ACTIONS_SHORTCUT_KEY, val=tr(TR.STUDYING_SPACE)),
|
||||||
tr(TR.STUDYING_SHOW_ANSWER),
|
tr(TR.STUDYING_SHOW_ANSWER),
|
||||||
)
|
)
|
||||||
# wrap it in a table so it has the same top margin as the ease buttons
|
# wrap it in a table so it has the same top margin as the ease buttons
|
||||||
|
|
@ -669,7 +669,7 @@ time = %(time)d;
|
||||||
%s</button></td>""" % (
|
%s</button></td>""" % (
|
||||||
due,
|
due,
|
||||||
extra,
|
extra,
|
||||||
tr(TR.ACTIONS_SHORTCUT_KEY, val="%s") % i,
|
tr(TR.ACTIONS_SHORTCUT_KEY, val=i),
|
||||||
i,
|
i,
|
||||||
i,
|
i,
|
||||||
label,
|
label,
|
||||||
|
|
|
||||||
|
|
@ -495,7 +495,7 @@ class _Recorder:
|
||||||
finally:
|
finally:
|
||||||
self.cleanup()
|
self.cleanup()
|
||||||
if ret:
|
if ret:
|
||||||
raise Exception(tr(TR.MEDIA_ERROR_RUNNING, val="%s") % " ".join(cmd))
|
raise Exception(tr(TR.MEDIA_ERROR_RUNNING, val=" ").join(cmd))
|
||||||
|
|
||||||
def cleanup(self) -> None:
|
def cleanup(self) -> None:
|
||||||
if os.path.exists(processingSrc):
|
if os.path.exists(processingSrc):
|
||||||
|
|
|
||||||
|
|
@ -104,28 +104,28 @@ class Toolbar:
|
||||||
"decks",
|
"decks",
|
||||||
tr(TR.ACTIONS_DECKS),
|
tr(TR.ACTIONS_DECKS),
|
||||||
self._deckLinkHandler,
|
self._deckLinkHandler,
|
||||||
tip=tr(TR.ACTIONS_SHORTCUT_KEY, val="%s") % "D",
|
tip=tr(TR.ACTIONS_SHORTCUT_KEY, val="D"),
|
||||||
id="decks",
|
id="decks",
|
||||||
),
|
),
|
||||||
self.create_link(
|
self.create_link(
|
||||||
"add",
|
"add",
|
||||||
tr(TR.ACTIONS_ADD),
|
tr(TR.ACTIONS_ADD),
|
||||||
self._addLinkHandler,
|
self._addLinkHandler,
|
||||||
tip=tr(TR.ACTIONS_SHORTCUT_KEY, val="%s") % "A",
|
tip=tr(TR.ACTIONS_SHORTCUT_KEY, val="A"),
|
||||||
id="add",
|
id="add",
|
||||||
),
|
),
|
||||||
self.create_link(
|
self.create_link(
|
||||||
"browse",
|
"browse",
|
||||||
tr(TR.QT_MISC_BROWSE),
|
tr(TR.QT_MISC_BROWSE),
|
||||||
self._browseLinkHandler,
|
self._browseLinkHandler,
|
||||||
tip=tr(TR.ACTIONS_SHORTCUT_KEY, val="%s") % "B",
|
tip=tr(TR.ACTIONS_SHORTCUT_KEY, val="B"),
|
||||||
id="browse",
|
id="browse",
|
||||||
),
|
),
|
||||||
self.create_link(
|
self.create_link(
|
||||||
"stats",
|
"stats",
|
||||||
tr(TR.QT_MISC_STATS),
|
tr(TR.QT_MISC_STATS),
|
||||||
self._statsLinkHandler,
|
self._statsLinkHandler,
|
||||||
tip=tr(TR.ACTIONS_SHORTCUT_KEY, val="%s") % "T",
|
tip=tr(TR.ACTIONS_SHORTCUT_KEY, val="T"),
|
||||||
id="stats",
|
id="stats",
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|
@ -141,7 +141,7 @@ class Toolbar:
|
||||||
|
|
||||||
def _create_sync_link(self) -> str:
|
def _create_sync_link(self) -> str:
|
||||||
name = tr(TR.QT_MISC_SYNC)
|
name = tr(TR.QT_MISC_SYNC)
|
||||||
title = tr(TR.ACTIONS_SHORTCUT_KEY, val="%s") % "Y"
|
title = tr(TR.ACTIONS_SHORTCUT_KEY, val="Y")
|
||||||
label = "sync"
|
label = "sync"
|
||||||
self.link_handlers[label] = self._syncLinkHandler
|
self.link_handlers[label] = self._syncLinkHandler
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -56,7 +56,7 @@ class LatestVersionFinder(QThread):
|
||||||
|
|
||||||
|
|
||||||
def askAndUpdate(mw, ver):
|
def askAndUpdate(mw, ver):
|
||||||
baseStr = tr(TR.QT_MISC_ANKI_UPDATEDANKI_HAS_BEEN_RELEASED, val="%s") % ver
|
baseStr = tr(TR.QT_MISC_ANKI_UPDATEDANKI_HAS_BEEN_RELEASED, val=ver)
|
||||||
msg = QMessageBox(mw)
|
msg = QMessageBox(mw)
|
||||||
msg.setStandardButtons(QMessageBox.Yes | QMessageBox.No) # type: ignore
|
msg.setStandardButtons(QMessageBox.Yes | QMessageBox.No) # type: ignore
|
||||||
msg.setIcon(QMessageBox.Information)
|
msg.setIcon(QMessageBox.Information)
|
||||||
|
|
|
||||||
|
|
@ -653,7 +653,7 @@ def closeTooltip():
|
||||||
def checkInvalidFilename(str, dirsep=True):
|
def checkInvalidFilename(str, dirsep=True):
|
||||||
bad = invalidFilename(str, dirsep)
|
bad = invalidFilename(str, dirsep)
|
||||||
if bad:
|
if bad:
|
||||||
showWarning(tr(TR.QT_MISC_THE_FOLLOWING_CHARACTER_CAN_NOT_BE, val="%s") % bad)
|
showWarning(tr(TR.QT_MISC_THE_FOLLOWING_CHARACTER_CAN_NOT_BE, val=bad))
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
|
||||||
40
repos.bzl
40
repos.bzl
|
|
@ -138,35 +138,35 @@ filegroup(
|
||||||
exports_files(["l10n.toml"])
|
exports_files(["l10n.toml"])
|
||||||
"""
|
"""
|
||||||
|
|
||||||
native.new_local_repository(
|
# native.new_local_repository(
|
||||||
name = "rslib_ftl",
|
|
||||||
path = "../anki-i18n/core",
|
|
||||||
build_file_content = i18n_build_content,
|
|
||||||
)
|
|
||||||
|
|
||||||
# new_git_repository(
|
|
||||||
# name = "rslib_ftl",
|
# name = "rslib_ftl",
|
||||||
|
# path = "../anki-i18n/core",
|
||||||
# build_file_content = i18n_build_content,
|
# build_file_content = i18n_build_content,
|
||||||
# commit = core_i18n_commit,
|
|
||||||
# shallow_since = core_i18n_shallow_since,
|
|
||||||
# remote = "https://github.com/ankitects/anki-core-i18n",
|
|
||||||
# )
|
# )
|
||||||
|
|
||||||
if not native.existing_rule("extra_ftl"):
|
new_git_repository(
|
||||||
native.new_local_repository(
|
name = "rslib_ftl",
|
||||||
name = "extra_ftl",
|
build_file_content = i18n_build_content,
|
||||||
path = "../anki-i18n/qtftl",
|
commit = core_i18n_commit,
|
||||||
build_file_content = i18n_build_content,
|
shallow_since = core_i18n_shallow_since,
|
||||||
)
|
remote = "https://github.com/ankitects/anki-core-i18n",
|
||||||
|
)
|
||||||
|
|
||||||
# new_git_repository(
|
if not native.existing_rule("extra_ftl"):
|
||||||
|
# native.new_local_repository(
|
||||||
# name = "extra_ftl",
|
# name = "extra_ftl",
|
||||||
|
# path = "../anki-i18n/qtftl",
|
||||||
# build_file_content = i18n_build_content,
|
# build_file_content = i18n_build_content,
|
||||||
# commit = qtftl_i18n_commit,
|
|
||||||
# shallow_since = qtftl_i18n_shallow_since,
|
|
||||||
# remote = "https://github.com/ankitects/anki-desktop-ftl",
|
|
||||||
# )
|
# )
|
||||||
|
|
||||||
|
new_git_repository(
|
||||||
|
name = "extra_ftl",
|
||||||
|
build_file_content = i18n_build_content,
|
||||||
|
commit = qtftl_i18n_commit,
|
||||||
|
shallow_since = qtftl_i18n_shallow_since,
|
||||||
|
remote = "https://github.com/ankitects/anki-desktop-ftl",
|
||||||
|
)
|
||||||
|
|
||||||
new_git_repository(
|
new_git_repository(
|
||||||
name = "aqt_po",
|
name = "aqt_po",
|
||||||
build_file_content = """
|
build_file_content = """
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue