add 'studied-today' to Fluent
The string has been constructed in parts so the old translations could be preserved
This commit is contained in:
parent
2fc15d0d3a
commit
d69a98a0d4
@ -11,29 +11,76 @@ answer-button-time-months = {$amount}mo
|
|||||||
answer-button-time-years = {$amount}y
|
answer-button-time-years = {$amount}y
|
||||||
|
|
||||||
## A span of time, such as the delay until a card is shown again, the
|
## A span of time, such as the delay until a card is shown again, the
|
||||||
## amount of time taken to answer a card, and so on.
|
## amount of time taken to answer a card, and so on. It is used by itself,
|
||||||
|
## such as in the Interval column of the browse screen,
|
||||||
|
## and labels like "Total Time" in the card info screen.
|
||||||
|
|
||||||
time-span-seconds = { $amount ->
|
time-span-seconds = { $amount ->
|
||||||
[one] {$amount} second
|
[one] {$amount} second
|
||||||
*[other] {$amount} seconds
|
*[other] {$amount} seconds
|
||||||
}
|
}
|
||||||
|
|
||||||
time-span-minutes = { $amount ->
|
time-span-minutes = { $amount ->
|
||||||
[one] {$amount} minute
|
[one] {$amount} minute
|
||||||
*[other] {$amount} minutes
|
*[other] {$amount} minutes
|
||||||
}
|
}
|
||||||
|
|
||||||
time-span-hours = { $amount ->
|
time-span-hours = { $amount ->
|
||||||
[one] {$amount} hour
|
[one] {$amount} hour
|
||||||
*[other] {$amount} hours
|
*[other] {$amount} hours
|
||||||
}
|
}
|
||||||
|
|
||||||
time-span-days = { $amount ->
|
time-span-days = { $amount ->
|
||||||
[one] {$amount} day
|
[one] {$amount} day
|
||||||
*[other] {$amount} days
|
*[other] {$amount} days
|
||||||
}
|
}
|
||||||
|
|
||||||
time-span-months = { $amount ->
|
time-span-months = { $amount ->
|
||||||
[one] {$amount} month
|
[one] {$amount} month
|
||||||
*[other] {$amount} months
|
*[other] {$amount} months
|
||||||
}
|
}
|
||||||
|
|
||||||
time-span-years = { $amount ->
|
time-span-years = { $amount ->
|
||||||
[one] {$amount} year
|
[one] {$amount} year
|
||||||
*[other] {$amount} years
|
*[other] {$amount} years
|
||||||
}
|
}
|
||||||
|
|
||||||
|
## A span of time studying took place in, for example
|
||||||
|
## "(studied 30 cards) in 3 minutes". In English the text
|
||||||
|
## just adds "in" to the start of time-span-*, but other
|
||||||
|
## languages may need to use different words here instead
|
||||||
|
## of reusing the time-span-* text.
|
||||||
|
## See the 'studied-today' context for where this is used,
|
||||||
|
## and the Polish translation for an example of different
|
||||||
|
## wordings used here.
|
||||||
|
|
||||||
|
in-time-span-seconds = in { time-span-seconds }
|
||||||
|
in-time-span-minutes = in { time-span-minutes }
|
||||||
|
in-time-span-hours = in { time-span-hours }
|
||||||
|
in-time-span-days = in { time-span-days }
|
||||||
|
in-time-span-months = in { time-span-months }
|
||||||
|
in-time-span-years = in { time-span-years }
|
||||||
|
|
||||||
|
##
|
||||||
|
|
||||||
|
cards = { $cards ->
|
||||||
|
[one] {$cards} card
|
||||||
|
*[other] {$cards} cards
|
||||||
|
}
|
||||||
|
|
||||||
|
# Shown at the bottom of the deck list, and in the statistics screen.
|
||||||
|
# eg "Studied 3 cards in 13 seconds today (4.33s/card)."
|
||||||
|
# The { in-time-span-seconds } part should be pasted in from the English
|
||||||
|
# version unmodified.
|
||||||
|
|
||||||
|
studied-today =
|
||||||
|
Studied { cards }
|
||||||
|
{ $unit ->
|
||||||
|
[seconds] { in-time-span-seconds }
|
||||||
|
[minutes] { in-time-span-minutes }
|
||||||
|
[hours] { in-time-span-hours }
|
||||||
|
[days] { in-time-span-days }
|
||||||
|
[months] { in-time-span-months }
|
||||||
|
*[years] { in-time-span-years }
|
||||||
|
} today
|
||||||
|
({$secs-per-card}s/card).
|
||||||
|
@ -28,6 +28,23 @@ pub fn time_span(seconds: f32, i18n: &I18n) -> String {
|
|||||||
.trn(&format!("time-span-{}", unit), args)
|
.trn(&format!("time-span-{}", unit), args)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// fixme: this doesn't belong here
|
||||||
|
#[allow(dead_code)]
|
||||||
|
fn studied_today(cards: usize, secs: f32, i18n: &I18n) -> String {
|
||||||
|
let span = Timespan::from_secs(secs).natural_span();
|
||||||
|
let amount = span.as_unit();
|
||||||
|
let unit = span.unit().as_str();
|
||||||
|
let secs_per = if cards > 0 {
|
||||||
|
secs / (cards as f32)
|
||||||
|
} else {
|
||||||
|
0.0
|
||||||
|
};
|
||||||
|
let args = tr_args!["amount" => amount, "unit" => unit,
|
||||||
|
"cards" => cards, "secs-per-card" => secs_per];
|
||||||
|
i18n.get(StringsGroup::Scheduling)
|
||||||
|
.trn("studied-today", args)
|
||||||
|
}
|
||||||
|
|
||||||
const SECOND: f32 = 1.0;
|
const SECOND: f32 = 1.0;
|
||||||
const MINUTE: f32 = 60.0 * SECOND;
|
const MINUTE: f32 = 60.0 * SECOND;
|
||||||
const HOUR: f32 = 60.0 * MINUTE;
|
const HOUR: f32 = 60.0 * MINUTE;
|
||||||
@ -117,8 +134,8 @@ impl Timespan {
|
|||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod test {
|
mod test {
|
||||||
use crate::i18n::I18n;
|
use crate::i18n::{I18n, StringsGroup};
|
||||||
use crate::sched::timespan::{answer_button_time, MONTH};
|
use crate::sched::timespan::{answer_button_time, studied_today, time_span, MONTH};
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn answer_buttons() {
|
fn answer_buttons() {
|
||||||
@ -127,4 +144,22 @@ mod test {
|
|||||||
assert_eq!(answer_button_time(70.0, &i18n), "1m");
|
assert_eq!(answer_button_time(70.0, &i18n), "1m");
|
||||||
assert_eq!(answer_button_time(1.1 * MONTH, &i18n), "1.10mo");
|
assert_eq!(answer_button_time(1.1 * MONTH, &i18n), "1.10mo");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn time_spans() {
|
||||||
|
let i18n = I18n::new(&["zz"], "");
|
||||||
|
assert_eq!(time_span(1.0, &i18n), "1 second");
|
||||||
|
assert_eq!(time_span(30.0, &i18n), "30 seconds");
|
||||||
|
assert_eq!(time_span(90.0, &i18n), "1.50 minutes");
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn combo() {
|
||||||
|
// temporary test of fluent term handling
|
||||||
|
let i18n = I18n::new(&["zz"], "");
|
||||||
|
assert_eq!(
|
||||||
|
&studied_today(3, 13.0, &i18n).replace("\n", " "),
|
||||||
|
"Studied 3 cards in 13 seconds today (4.33s/card)."
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user