diff --git a/Cargo.lock b/Cargo.lock
index e6f3974..6c4c994 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2643,6 +2643,8 @@ dependencies = [
[[package]]
name = "rust-i18n"
version = "3.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2b6307cde881492032919adf26e254981604a6657b339ae23cce8358e9ee203"
dependencies = [
"globwalk",
"once_cell",
@@ -2655,6 +2657,8 @@ dependencies = [
[[package]]
name = "rust-i18n-macro"
version = "3.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1c0dc724669fe2ddbbec5ed9daea8147a9030de87ebb46fdc7bb9315701d9912"
dependencies = [
"glob",
"once_cell",
@@ -2670,6 +2674,8 @@ dependencies = [
[[package]]
name = "rust-i18n-support"
version = "3.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b47501de04282525d0192c4b4133f9e3574e1fab3542ddc7bb109ff773dc108b"
dependencies = [
"arc-swap",
"base62",
diff --git a/locales/de-AT.yml b/locales/de-AT.yml
index 4db45df..25558d5 100644
--- a/locales/de-AT.yml
+++ b/locales/de-AT.yml
@@ -25,6 +25,7 @@ come_home_with_these_groups: "Gruppen mitnehmen"
station_info: "Schön, dass du uns als Stationsbetreuer hilfst."
info_crewless_station: "Wenn das eine unbemannte Station ist, wähle hier 0 Personen aus. Dann werden dieser Station keine Startteams zugeteilt und es wird kein PDF generiert."
time: "Uhrzeit"
+google_maps_navigation: "Google Maps Navigation..."
#
# ######
@@ -117,6 +118,8 @@ confirm_station_cancel_team_finished: "Bist du sicher, dass das Team noch nicht
#
station: "Station"
stations: "Stationen"
+stations_expl_without_first_word: "sind festgelegte Orte mit spezifischen Aufgaben."
+station_expl_for_everyone: "
In diesem Tool solltest du diese 3 Dinge vermerken:
- Ein Team kommt zu deiner Station: Du wählst das entsprechende Team aus und klickst auf Team ist da. Das Team ist nun im Wartemodus (⏳).
- Das Team beginnt mit der Aufgabe bei deiner Station: Du klickst beim entsprechenden Team auf Team startet. Das Team ist nun im aktiven Modus (🎬).
- Das Team hat deine Station beendet und ist gegangen: Du klickst beim entsprechenden Team auf Team fertig. Bitte schau, dass du das immer zeitnah erledigst, damit die nächste Station informiert werden kann, dass ein Team auf dem Weg ist.
Zu jedem Zeitpunkt kannst du mit Klick auf ✏️ Notizen zu den Teams machen. In aller Ruhe kannst du unter dem Punkt Zu bewerten die Teams, die schon bei dir waren, bewerten.
"
nonexisting_station: "Station mit ID %{id} existiert nicht."
station_url: "Stations-Link"
station_url_info: "Diesen Link nur Betreuern der Station %{station} geben! Mit diesem Link erhält man die Berechtigung, Teams zu bewerten."
@@ -139,7 +142,6 @@ click_on_map_for_new_location: "Um einen neuen Standort zu wählen, auf einen Pu
click_on_map_for_location: "Um einen Standort zu wählen, auf einen Punkt in der Karte klicken"
enter_ratings_for_station: "Bewertungen für Station %{station} eingeben"
no_stations_yet: "Es gibt noch keine Stationen."
-stations_expl_without_first_word: "sind festgelegte Orte mit spezifischen Aufgaben."
station_warning_not_assigned_route: "Noch keiner Route zugeordnet" # should be short -> tooltip
station_confirm_deletion: "Bist du sicher, dass die Station gelöscht werden soll? Das kann _NICHT_ mehr rückgängig gemacht werden."
station_hint_create_first: "Es gibt noch keine Stationen. Das kannst du hier ändern ⤵️"
@@ -173,6 +175,9 @@ first_station_expl: "Die erste Station wird beim Anlegen eines Team automatisch
new_team_name: "Team %{old} heißt ab sofort %{new}"
notes_edited: "Notizen für das Team %{team} erfolgreich geändert"
amount_teammembers_edited: "Anzahl an Mitglieder für das Team %{team} erfolgreich geändert"
+no_team_to_take_home: "Du musst keine Teams mit heim nehmen"
+take_home_the_following_team: "Bitte nimm das folgende Team mit heim:"
+take_home_the_following_teams: "Bitte nimm folgende Teams mit heim:"
#
@@ -186,6 +191,7 @@ amount_teammembers_edited: "Anzahl an Mitglieder für das Team %{team} erfolgrei
#
team: "Team"
teams: "Teams"
+teams_expl_without_first_word: "sind eine Menge an Personen, die verschiedene Stationen ablaufen. Welche Stationen, entscheidet sich je nachdem, welcher Route sie zugewiesen sind."
nonexisting_team: "Team mit ID %{id} existiert nicht."
select_team: "Team auswählen"
new_team: "Neues Team"
@@ -244,6 +250,7 @@ highscore: "Highscore"
#
admin: "Admin"
admins: "Admins"
+admin_expl_without_first_word: "sind Menschen, die Stationen, Routen und Teams bearbeiten können. Zusätzlich sehen sie das Ergebnis."
cant_update_pw_if_already_existing: "Kann kein neues Passwort setzen, weil es bereits eins gibt..."
cant_update_pw_if_already_existing_for_user: "Kann kein neues Passwort für %{user} setzen, weil es bereits eins gibt..."
cant_update_pw_with_wrong_code: "Falscher Code zum Setzen eines neuen Passworts für %{user}"
@@ -275,6 +282,7 @@ confirm_admin_delete: "Bist du sicher, dass der User gelöscht werden soll? Das
#
route: "Route"
routes: "Routen"
+routes_expl_without_first_word: "definieren welche Stationen von den Teams in welcher Reihenfolge abgeklappert werden sollen. Wenn es verschiedene Kategorien (zB Kinder- und Erwachsenenwertung) gibt, kannst du auch mehrere Routen mit (teils) überlappenden Stationen erstellen."
nonexisting_route: "Route mit ID %{id} existiert nicht."
route_new: "Neue Route"
route_name: "Routenname"
diff --git a/src/admin/route/web.rs b/src/admin/route/web.rs
index 2a2da0e..a12d8bb 100644
--- a/src/admin/route/web.rs
+++ b/src/admin/route/web.rs
@@ -18,15 +18,11 @@ async fn index(State(db): State>, session: Session) -> Markup {
let content = html! {
h1 {
a href="/admin" { "↩️" }
- "Routen"
+ (t!("routes"))
}
article {
- em { "Routen " }
- "definieren welche "
- a href="/admin/station" { "Stationen" }
- " von den "
- a href="/admin/team" { "Teams" }
- " in welcher Reihenfolge abgeklappert werden sollen. Wenn es verschiedene Kategorien (zB Kinder- und Erwachsenenwertung) gibt, kannst du auch mehrere Routen mit (teils) überlappenden Stationen erstellen."
+ em { (t!("routes")) }
+ (PreEscaped(t!("routes_expl_without_first_word")))
}
ol {
@for route in &routes{
diff --git a/src/admin/station/web.rs b/src/admin/station/web.rs
index 55e3ebd..d7a816f 100644
--- a/src/admin/station/web.rs
+++ b/src/admin/station/web.rs
@@ -116,7 +116,7 @@ async fn view(
}
},
None => details {
- summary { "Neue Notiz hinzufügen" }
+ summary { (t!("add_new_note")) }
form action=(format!("/admin/station/{}/notes", station.id)) method="post" {
textarea name="notes" required rows="10" {};
input type="submit" value=(t!("save"));
diff --git a/src/admin/team/web.rs b/src/admin/team/web.rs
index 724a9ae..3930dd6 100644
--- a/src/admin/team/web.rs
+++ b/src/admin/team/web.rs
@@ -732,11 +732,7 @@ async fn index(State(db): State>, session: Session) -> Markup {
}
article {
em { (t!("teams")) }
- "sind eine Menge an Personen, die verschiedene "
- a href="/admin/station" { "Stationen" }
- " ablaufen. Welche Stationen, entscheidet sich je nachdem, welcher "
- a href="/admin/route" { "Route" }
- " sie zugewiesen sind."
+ (PreEscaped(t!("teams_expl_without_first_word")))
}
@if teams.is_empty() {
article class="warning" {
@@ -762,7 +758,7 @@ async fn index(State(db): State>, session: Session) -> Markup {
fieldset role="group" {
input type="text" name="name" placeholder=(t!("teamname")) required;
input type="hidden" name="route_id" value=(routes[0].id) ;
- input type="submit" value="Neues Team";
+ input type="submit" value=(t!("new_team"));
}
} @else {
input type="text" name="name" placeholder=(t!("teamname")) required;
diff --git a/src/admin/user/web.rs b/src/admin/user/web.rs
index 2d4d334..c73079e 100644
--- a/src/admin/user/web.rs
+++ b/src/admin/user/web.rs
@@ -5,7 +5,7 @@ use axum::{
routing::{get, post},
Form, Router,
};
-use maud::{html, Markup};
+use maud::{html, Markup, PreEscaped};
use serde::Deserialize;
use sqlx::SqlitePool;
use std::sync::Arc;
@@ -174,15 +174,8 @@ async fn index(State(db): State>, session: Session) -> Markup {
}
article {
em { "Admins" }
- "sind Menschen, die "
- a href="/admin/station" { "Stationen" }
- ", "
- a href="/admin/route" { "Routen" }
- " und "
- a href="/admin/team" { "Teams" }
- " bearbeiten können. Zusätzlich sehen sie das "
- a href="/admin/highscore" { "Ergebnis" }
- "."
+ " "
+ (PreEscaped(t!("admin_expl_without_first_word")))
}
article {
h2 { (t!("new_admin")) }
diff --git a/src/station.rs b/src/station.rs
index 8ca76cd..80d7cd1 100644
--- a/src/station.rs
+++ b/src/station.rs
@@ -104,35 +104,12 @@ async fn view(
div {
sub {
a href=(format!("https://www.google.com/maps?q={lat},{lng}")) target="_blank" {
- "Google Maps Navigation"
+ (t!("google_maps_navigation"))
}
}
}
hr;
- "In diesem Tool solltest du diese 3 Dinge vermerken:"
- ol {
- li {
- b { "Ein Team kommt zu deiner Station:" }
- " Du wählst das entsprechende Team aus und klickst auf "
- em { (t!("team_is_here")) }
- ". Das Team ist nun im Wartemodus (⏳)."
- }
- li {
- b { "Das Team beginnt mit der Aufgabe bei deiner Station:" }
- " Du klickst beim entsprechenden Team auf "
- em { (t!("team_starting")) }
- ". Das Team ist nun im aktiven Modus (🎬)."
- }
- li {
- b { "Das Team hat deine Station beendet und ist gegangen:" }
- " Du klickst beim entsprechenden Team auf "
- em { (t!("team_finished")) }
- ". Bitte schau, dass du das immer zeitnah erledigst, damit die nächste Station informiert werden kann, dass ein Team auf dem Weg ist."
- }
- }
- "Zu jedem Zeitpunkt kannst du mit Klick auf ✏️ Notizen zu den Teams machen. In aller Ruhe kannst du unter dem Punkt "
- em { (t!("to_rate")) }
- " die Teams, die schon bei dir waren, bewerten."
+ (PreEscaped(t!("station_expl_for_everyone")))
hr;
a href=(format!("/s/{id}/{code}/ready")){
@if station.ready {
@@ -155,14 +132,18 @@ async fn view(
@if status == RunStatus::HasEnded {
@let teams_to_take_home = Team::all_with_last_station(&db, &station).await;
@if !teams_to_take_home.is_empty() {
- "Bitte nimm folgende Teams mit heim:"
+ @if teams_to_take_home.len() == 1 {
+ (t!("take_home_the_following_team"))
+ } @else {
+ (t!("take_home_the_following_teams"))
+ }
ol {
@for team in teams_to_take_home {
li { (team.name) }
}
}
}@else {
- "Du musst keine Teams mit heim nehmen"
+ (t!("no_team_to_take_home"))
}
}
@@ -210,7 +191,7 @@ async fn view(
}
form action=(format!("/s/{id}/{code}/team-update/{}", team.id)) method="post" {
label {
- "Notizen"
+ (t!("notes"))
@if let Some(notes) = &rating.notes {
input type="text" name="notes" value=(notes);
} @else {
@@ -246,7 +227,7 @@ async fn view(
}
form action=(format!("/s/{id}/{code}/team-update/{}", team.id)) method="post" {
label {
- "Notizen"
+ (t!("notes"))
@if let Some(notes) = &rating.notes {
input type="text" name="notes" value=(notes);
} @else {