split "Due" into three different contexts for translators

This commit is contained in:
Damien Elmes 2020-02-17 14:41:01 +10:00
parent 771452c227
commit 1524e7dcac
7 changed files with 34 additions and 6 deletions

View file

@ -19,6 +19,8 @@ enum StringsGroup {
CARD_TEMPLATES = 3;
SYNC = 4;
NETWORK = 5;
STATISTICS = 6;
FILTERING = 7;
}
// 1-15 reserved for future use; 2047 for errors

View file

@ -6,8 +6,10 @@ import json
import time
from typing import Any, Dict, List, Optional, Tuple
import anki
from anki.consts import *
from anki.lang import _, ngettext
from anki.rsbackend import StringsGroup
from anki.utils import fmtTimeSpan, ids2str
# Card stats
@ -19,7 +21,7 @@ PERIOD_LIFE = 2
class CardStats:
def __init__(self, col, card) -> None:
def __init__(self, col: anki.storage._Collection, card: anki.cards.Card) -> None:
self.col = col
self.card = card
self.txt = ""
@ -45,7 +47,10 @@ class CardStats:
next = c.due
next = self.date(next)
if next:
self.addLine(_("Due"), next)
self.addLine(
self.col.backend.translate(StringsGroup.STATISTICS, "due-date"),
next,
)
if c.queue == QUEUE_TYPE_REV:
self.addLine(_("Interval"), fmt(c.ivl * 86400))
self.addLine(_("Ease"), "%d%%" % (c.factor / 10.0))

View file

@ -24,6 +24,7 @@ from anki.consts import *
from anki.lang import _, ngettext
from anki.models import NoteType
from anki.notes import Note
from anki.rsbackend import StringsGroup
from anki.utils import fmtTimeSpan, htmlToTextLine, ids2str, intTime, isMac, isWin
from aqt import AnkiQt, gui_hooks
from aqt.editor import Editor
@ -51,6 +52,7 @@ from aqt.utils import (
showInfo,
showWarning,
tooltip,
tr,
)
from aqt.webview import AnkiWebView
@ -728,7 +730,7 @@ class Browser(QMainWindow):
("noteCrt", _("Created")),
("noteMod", _("Edited")),
("cardMod", _("Changed")),
("cardDue", _("Due")),
("cardDue", tr(StringsGroup.STATISTICS, "due-date")),
("cardIvl", _("Interval")),
("cardEase", _("Ease")),
("cardReps", _("Reviews")),
@ -1269,7 +1271,7 @@ by clicking on one on the left."""
(_("New"), "is:new"),
(_("Learning"), "is:learn"),
(_("Review"), "is:review"),
(_("Due"), "is:due"),
(tr(StringsGroup.FILTERING, "is-due"), "is:due"),
None,
(_("Suspended"), "is:suspended"),
(_("Buried"), "is:buried"),

View file

@ -10,12 +10,21 @@ from typing import Any
import aqt
from anki.errors import DeckRenameError
from anki.lang import _, ngettext
from anki.rsbackend import StringsGroup
from anki.utils import fmtTimeSpan, ids2str
from aqt import AnkiQt, gui_hooks
from aqt.qt import *
from aqt.sound import av_player
from aqt.toolbar import BottomBar
from aqt.utils import askUser, getOnlyText, openHelp, openLink, shortcut, showWarning
from aqt.utils import (
askUser,
getOnlyText,
openHelp,
openLink,
shortcut,
showWarning,
tr,
)
class DeckBrowserBottomBar:
@ -160,7 +169,7 @@ where id > ?""",
<tr><th colspan=5 align=left>%s</th><th class=count>%s</th>
<th class=count>%s</th><th class=optscol></th></tr>""" % (
_("Deck"),
_("Due"),
tr(StringsGroup.STATISTICS, "due-count"),
_("New"),
)
buf += self._topLevelDragRow()

View file

@ -0,0 +1,2 @@
# True if a card is due/ready for review
is-due = Due

View file

@ -57,6 +57,8 @@ fn ftl_fallback_for_group(group: StringsGroup) -> String {
StringsGroup::CardTemplates => include_str!("card-template-rendering.ftl"),
StringsGroup::Sync => include_str!("sync.ftl"),
StringsGroup::Network => include_str!("network.ftl"),
StringsGroup::Statistics => include_str!("statistics.ftl"),
StringsGroup::Filtering => include_str!("filtering.ftl"),
}
.to_string()
}
@ -71,6 +73,8 @@ fn localized_ftl_for_group(group: StringsGroup, lang_ftl_folder: &Path) -> Optio
StringsGroup::CardTemplates => "card-template-rendering.ftl",
StringsGroup::Sync => "sync.ftl",
StringsGroup::Network => "network.ftl",
StringsGroup::Statistics => "statistics.ftl",
StringsGroup::Filtering => "filtering.ftl",
});
fs::read_to_string(&path)
.map_err(|e| {

View file

@ -0,0 +1,4 @@
# The date a card will be ready to review
due-date = Due
# The count of cards waiting to be reviewed
due-count = Due