fixed some more language problems

This commit is contained in:
Guy Sandler 2026-10-23 21:48:35 -07:00
parent 93ab8fbf68
commit 08e5d68632
16 changed files with 464 additions and 3358 deletions

View File

@ -21,26 +21,10 @@
"message": "Likes-Anzahl immer anzeigen"
},
"assignment_avg": {
"message": "— Durchschn. $AVG$% über $COUNT$ Aufgabe(n):",
"placeholders": {
"avg": {
"content": "$AVG$",
"example": "AVG"
},
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "— Durchschn. {{AVG}}% über {{COUNT}} Aufgabe(n):"
},
"assignment_due_in": {
"message": "Aufgabe fällig in $TIME$",
"placeholders": {
"time": {
"content": "$TIME$",
"example": "TIME"
}
}
"message": "Aufgabe fällig in {{TIME}}"
},
"auto": {
"message": "automatisch"
@ -259,17 +243,7 @@
"message": "erledigt"
},
"completed_total": {
"message": "$DONE$/$TOTAL$ erledigt",
"placeholders": {
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"done": {
"content": "$DONE$",
"example": "DONE"
}
}
"message": "{{DONE}}/{{TOTAL}} erledigt"
},
"condensed_cards": {
"message": "Verdichtete Karten"
@ -455,13 +429,7 @@
"message": "Fällig"
},
"due_days": {
"message": "Fällig in <strong>$COUNT$ Tagen</strong>",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "Fällig in <strong>{{COUNT}} Tagen</strong>"
},
"due_later": {
"message": "Fällig <strong>später</strong>"
@ -479,13 +447,7 @@
"message": "Fällig <strong>morgen</strong>"
},
"due_weeks": {
"message": "Fällig in <strong>$COUNT$ Wochen</strong>",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "Fällig in <strong>{{COUNT}} Wochen</strong>"
},
"edit_custom_task": {
"message": "Diese eigene Aufgabe bearbeiten"
@ -593,13 +555,7 @@
"message": "Aufgaben"
},
"final_avg": {
"message": "— Durchschn. $AVG$% ...",
"placeholders": {
"avg": {
"content": "$AVG$",
"example": "AVG"
}
}
"message": "— Durchschn. {{AVG}}% ..."
},
"final_waiting": {
"message": "Warte auf Notendaten…"
@ -617,17 +573,7 @@
"message": "Der Fixer wird automatisch auf diesen Seiten ausgeführt:"
},
"fix_took": {
"message": "Korrektur dauerte $TIME$ms (Bewertung: $RATING$)",
"placeholders": {
"time": {
"content": "$TIME$",
"example": "TIME"
},
"rating": {
"content": "$RATING$",
"example": "RATING"
}
}
"message": "Korrektur dauerte {{TIME}}ms (Bewertung: {{RATING}})"
},
"flexible_grid": {
"message": "Flexibles Raster"
@ -660,25 +606,13 @@
"message": "Y-Achse anpassen"
},
"ga_heatmap_assignments": {
"message": "$COUNT$ Aufgabe(n):",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "{{COUNT}} Aufgabe(n):"
},
"ga_heatmap_avg": {
"message": "Ø"
},
"ga_heatmap_undated": {
"message": "$COUNT$ benotete Aufgabe(n) ohne Fälligkeitsdatum werden nicht angezeigt.",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "{{COUNT}} benotete Aufgabe(n) ohne Fälligkeitsdatum werden nicht angezeigt."
},
"ga_line_title": {
"message": "Gesamtnote im Zeitverlauf"
@ -732,30 +666,10 @@
"message": "Unbenotet"
},
"ga_sub_secured": {
"message": "Selbst eine 0 in der Prüfung lässt dich bei <b>$ZERO$%</b>, was über deinem Ziel von <b>$TARGET$%</b> liegt.",
"placeholders": {
"target": {
"content": "$TARGET$",
"example": "TARGET"
},
"zero": {
"content": "$ZERO$",
"example": "ZERO"
}
}
"message": "Selbst eine 0 in der Prüfung lässt dich bei <b>{{ZERO}}%</b>, was über deinem Ziel von <b>{{TARGET}}%</b> liegt."
},
"ga_sub_unreachable": {
"message": "Selbst eine perfekte Prüfung bringt dich nur auf <b>$PERFECT$%</b>, was unter deinem Ziel von <b>$TARGET$%</b> liegt.",
"placeholders": {
"perfect": {
"content": "$PERFECT$",
"example": "PERFECT"
},
"target": {
"content": "$TARGET$",
"example": "TARGET"
}
}
"message": "Selbst eine perfekte Prüfung bringt dich nur auf <b>{{PERFECT}}%</b>, was unter deinem Ziel von <b>{{TARGET}}%</b> liegt."
},
"ga_tab_calc": {
"message": "Endnoten-Rechner"
@ -788,25 +702,13 @@
"message": "Imagine-If Punktzahl (Zähler); leer = zählt nicht"
},
"ga_tooltip_assignments": {
"message": "$COUNT$ Aufgabe(n)",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "{{COUNT}} Aufgabe(n)"
},
"ga_you_got_this": {
"message": "Das schaffst du!"
},
"ga_you_need": {
"message": "Du brauchst ≥ $PCT$% in der Prüfung",
"placeholders": {
"pct": {
"content": "$PCT$",
"example": "PCT"
}
}
"message": "Du brauchst ≥ {{PCT}}% in der Prüfung"
},
"get_active_cards": {
"message": "Aktive Karten vom Dashboard holen"
@ -932,13 +834,7 @@
"message": "Fügt Werkzeuge hinzu, mit denen du deine Noten analysieren kannst."
},
"grade_analytics_failed": {
"message": "Notenanalyse konnte nicht geladen werden: $ERROR$",
"placeholders": {
"error": {
"content": "$ERROR$",
"example": "ERROR"
}
}
"message": "Notenanalyse konnte nicht geladen werden: {{ERROR}}"
},
"grade_analytics_info_label": {
"message": "Info zur Notenanalyse"
@ -968,29 +864,7 @@
"message": " (einschließlich des GPA-Rechners)"
},
"grid_warning": {
"message": "Dein Raster bietet Platz für $TOTAL$ Karte$TOTAL_S$, aber du hast $ACTIVE$ Karte$ACTIVE_S$$GPA_NOTE$ – einige Karten werden möglicherweise abgeschnitten.",
"placeholders": {
"gpa_note": {
"content": "$GPA_NOTE$",
"example": "GPA_NOTE"
},
"active_s": {
"content": "$ACTIVE_S$",
"example": "ACTIVE_S"
},
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"active": {
"content": "$ACTIVE$",
"example": "ACTIVE"
},
"total_s": {
"content": "$TOTAL_S$",
"example": "TOTAL_S"
}
}
"message": "Dein Raster bietet Platz für {{TOTAL}} Karte{{TOTAL_S}}, aber du hast {{ACTIVE}} Karte{{ACTIVE_S}}{{GPA_NOTE}} – einige Karten werden möglicherweise abgeschnitten."
},
"group_graded": {
"message": "Benotet"
@ -1149,34 +1023,16 @@
"message": "NASA-Astronomiebild des Tages"
},
"nasa_credit": {
"message": "Quelle: $CREDIT$",
"placeholders": {
"credit": {
"content": "$CREDIT$",
"example": "CREDIT"
}
}
"message": "Quelle: {{CREDIT}}"
},
"nasa_date": {
"message": "Datum: $DATE$",
"placeholders": {
"date": {
"content": "$DATE$",
"example": "DATE"
}
}
"message": "Datum: {{DATE}}"
},
"need_refresh": {
"message": "Möglicherweise musst du die Seite aktualisieren, um einige Änderungen zu sehen."
},
"new_canvas_desc": {
"message": "Canvas Refined hat eine Canvas-Seite unter $HOST$ erkannt. Zur Canvas-Liste hinzufügen?",
"placeholders": {
"host": {
"content": "$HOST$",
"example": "HOST"
}
}
"message": "Canvas Refined hat eine Canvas-Seite unter {{HOST}} erkannt. Zur Canvas-Liste hinzufügen?"
},
"new_canvas_detected": {
"message": "Neue Canvas-Seite erkannt"
@ -1287,13 +1143,7 @@
"message": "Klicke oben rechts auf dieses Puzzle-Symbol"
},
"options_contact": {
"message": "Meine E-Mail ist $EMAIL$, falls du Probleme oder Vorschläge hast – Feedback ist willkommen!",
"placeholders": {
"email": {
"content": "$EMAIL$",
"example": "EMAIL"
}
}
"message": "Meine E-Mail ist {{EMAIL}}, falls du Probleme oder Vorschläge hast – Feedback ist willkommen!"
},
"options_how_to_access": {
"message": "So erreichst du dieses Menü später:"
@ -1383,13 +1233,7 @@
"message": "Wassermelone"
},
"percent_done": {
"message": "$PERCENT$%",
"placeholders": {
"percent": {
"content": "$PERCENT$",
"example": "PERCENT"
}
}
"message": "{{PERCENT}}%"
},
"personal_task": {
"message": "Persönliche Aufgabe"
@ -1446,51 +1290,13 @@
"message": "Datenschutz"
},
"progress_done": {
"message": "$DONE$/$TOTAL$ erledigt",
"placeholders": {
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"done": {
"content": "$DONE$",
"example": "DONE"
}
}
"message": "{{DONE}}/{{TOTAL}} erledigt"
},
"progress_overall": {
"message": "$PCT$% ($DONE$/$TOTAL$)",
"placeholders": {
"pct": {
"content": "$PCT$",
"example": "PCT"
},
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"done": {
"content": "$DONE$",
"example": "DONE"
}
}
"message": "{{PCT}}% ({{DONE}}/{{TOTAL}})"
},
"progress_pct": {
"message": "$PCT$% ($DONE$/$TOTAL$)",
"placeholders": {
"pct": {
"content": "$PCT$",
"example": "PCT"
},
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"done": {
"content": "$DONE$",
"example": "DONE"
}
}
"message": "{{PCT}}% ({{DONE}}/{{TOTAL}})"
},
"quiz_dont_show": {
"message": "Nicht mehr anzeigen"
@ -1538,25 +1344,13 @@
"message": "Notendaten werden gelesen…"
},
"relative_ago": {
"message": "vor $TIME$",
"placeholders": {
"time": {
"content": "$TIME$",
"example": "TIME"
}
}
"message": "vor {{TIME}}"
},
"relative_due_dates": {
"message": "Relative Fälligkeitsdaten"
},
"relative_in": {
"message": "in $TIME$",
"placeholders": {
"time": {
"content": "$TIME$",
"example": "TIME"
}
}
"message": "in {{TIME}}"
},
"remlogo": {
"message": "Sidebar-Logo entfernen"
@ -1631,34 +1425,16 @@
"message": "neuer Tab"
},
"search_no_course": {
"message": "Kein Kurs entspricht \"$QUERY$\".",
"placeholders": {
"query": {
"content": "$QUERY$",
"example": "QUERY"
}
}
"message": "Kein Kurs entspricht \"{{QUERY}}\"."
},
"search_no_courses_grades": {
"message": "Keine Kurse gefunden, für die Noten geöffnet werden können."
},
"search_no_match": {
"message": "Keine Ergebnisse für \"$QUERY$\".",
"placeholders": {
"query": {
"content": "$QUERY$",
"example": "QUERY"
}
}
"message": "Keine Ergebnisse für \"{{QUERY}}\"."
},
"search_no_match_hint": {
"message": "Keine Ergebnisse für \"$QUERY$\". Versuche andere Suchbegriffe.",
"placeholders": {
"query": {
"content": "$QUERY$",
"example": "QUERY"
}
}
"message": "Keine Ergebnisse für \"{{QUERY}}\". Versuche andere Suchbegriffe."
},
"search_no_modules": {
"message": "Keine Module oder Aufgaben gefunden..."
@ -1667,13 +1443,7 @@
"message": "Keine Module oder Aufgaben gefunden. Öffne die Suche später erneut, falls deine Kurse noch geladen werden."
},
"search_no_results": {
"message": "Keine Ergebnisse für \"$QUERY$\".",
"placeholders": {
"query": {
"content": "$QUERY$",
"example": "QUERY"
}
}
"message": "Keine Ergebnisse für \"{{QUERY}}\"."
},
"search_open": {
"message": "öffnen"
@ -1718,13 +1488,7 @@
"message": "Abschnitt"
},
"selected_count": {
"message": "$COUNT$ ausgewählt",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "{{COUNT}} ausgewählt"
},
"show": {
"message": "Anzeigen"
@ -1769,13 +1533,7 @@
"message": "leer"
},
"storage_items": {
"message": " ($COUNT$ Elemente)",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": " ({{COUNT}} Elemente)"
},
"storage_limit_error": {
"message": "Die eingegebenen Daten überschreiten das Speicherlimit und werden nicht gespeichert. Verwende kürzere Links und stelle sicher, dass du \"Bildadresse kopieren\" und nicht \"Bild kopieren\" verwendest."
@ -1862,13 +1620,7 @@
"message": "Stelle sicher, dass dein Theme diese Richtlinien befolgt:"
},
"theme_number": {
"message": "Theme $NUM$",
"placeholders": {
"num": {
"content": "$NUM$",
"example": "NUM"
}
}
"message": "Theme {{NUM}}"
},
"theme_optin_reset": {
"message": "Theme-Browser-Opt-in zurückgesetzt"
@ -1973,21 +1725,7 @@
"message": "Abhaken"
},
"todo_date_format": {
"message": "$DATE$ um $TIME$ ($RELATIVE$)",
"placeholders": {
"relative": {
"content": "$RELATIVE$",
"example": "RELATIVE"
},
"time": {
"content": "$TIME$",
"example": "TIME"
},
"date": {
"content": "$DATE$",
"example": "DATE"
}
}
"message": "{{DATE}} um {{TIME}} ({{RELATIVE}})"
},
"todo_delete": {
"message": "Löschen"
@ -2125,13 +1863,7 @@
"message": "Mehr anzeigen"
},
"view_more_count": {
"message": "Mehr anzeigen ($COUNT$)",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "Mehr anzeigen ({{COUNT}})"
},
"view_on_github": {
"message": "Auf GitHub ansehen"

View File

@ -21,26 +21,10 @@
"message": "Always show like count"
},
"assignment_avg": {
"message": "— avg $AVG$% over $COUNT$ assignment(s):",
"placeholders": {
"avg": {
"content": "$AVG$",
"example": "AVG"
},
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "— avg {{AVG}}% over {{COUNT}} assignment(s):"
},
"assignment_due_in": {
"message": "Assignment due in $TIME$",
"placeholders": {
"time": {
"content": "$TIME$",
"example": "TIME"
}
}
"message": "Assignment due in {{TIME}}"
},
"auto": {
"message": "auto"
@ -259,17 +243,7 @@
"message": "complete"
},
"completed_total": {
"message": "$DONE$/$TOTAL$ done",
"placeholders": {
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"done": {
"content": "$DONE$",
"example": "DONE"
}
}
"message": "{{DONE}}/{{TOTAL}} done"
},
"condensed_cards": {
"message": "Condensed Cards"
@ -455,13 +429,7 @@
"message": "Due"
},
"due_days": {
"message": "Due <strong>$COUNT$ days</strong>",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "Due <strong>{{COUNT}} days</strong>"
},
"due_later": {
"message": "Due <strong>Later</strong>"
@ -479,13 +447,7 @@
"message": "Due <strong>Tomorrow</strong>"
},
"due_weeks": {
"message": "Due <strong>$COUNT$ weeks</strong>",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "Due <strong>{{COUNT}} weeks</strong>"
},
"edit_custom_task": {
"message": "Edit this custom task"
@ -593,13 +555,7 @@
"message": "assignments"
},
"final_avg": {
"message": "— avg $AVG$% ...",
"placeholders": {
"avg": {
"content": "$AVG$",
"example": "AVG"
}
}
"message": "— avg {{AVG}}% ..."
},
"final_waiting": {
"message": "Waiting for grade data…"
@ -617,17 +573,7 @@
"message": "The Fixer Is Automatically Running On These Pages:"
},
"fix_took": {
"message": "Fix took $TIME$ms (rating: $RATING$)",
"placeholders": {
"time": {
"content": "$TIME$",
"example": "TIME"
},
"rating": {
"content": "$RATING$",
"example": "RATING"
}
}
"message": "Fix took {{TIME}}ms (rating: {{RATING}})"
},
"flexible_grid": {
"message": "Flexible grid"
@ -660,25 +606,13 @@
"message": "Fit Y axis"
},
"ga_heatmap_assignments": {
"message": "$COUNT$ assignment(s):",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "{{COUNT}} assignment(s):"
},
"ga_heatmap_avg": {
"message": "avg"
},
"ga_heatmap_undated": {
"message": "$COUNT$ graded assignment(s) without a due date not shown.",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "{{COUNT}} graded assignment(s) without a due date not shown."
},
"ga_line_title": {
"message": "Overall grade over time"
@ -732,30 +666,10 @@
"message": "Ungraded"
},
"ga_sub_secured": {
"message": "Even a 0 on the final leaves you at <b>$ZERO$%</b>, which is above your <b>$TARGET$%</b> goal.",
"placeholders": {
"target": {
"content": "$TARGET$",
"example": "TARGET"
},
"zero": {
"content": "$ZERO$",
"example": "ZERO"
}
}
"message": "Even a 0 on the final leaves you at <b>{{ZERO}}%</b>, which is above your <b>{{TARGET}}%</b> goal."
},
"ga_sub_unreachable": {
"message": "Even a perfect final only gets you to <b>$PERFECT$%</b>, which is below your <b>$TARGET$%</b> goal.",
"placeholders": {
"perfect": {
"content": "$PERFECT$",
"example": "PERFECT"
},
"target": {
"content": "$TARGET$",
"example": "TARGET"
}
}
"message": "Even a perfect final only gets you to <b>{{PERFECT}}%</b>, which is below your <b>{{TARGET}}%</b> goal."
},
"ga_tab_calc": {
"message": "Final Calculator"
@ -788,25 +702,13 @@
"message": "Imagine-If score (numerator); blank = not counted"
},
"ga_tooltip_assignments": {
"message": "$COUNT$ assignment(s)",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "{{COUNT}} assignment(s)"
},
"ga_you_got_this": {
"message": "You got this!"
},
"ga_you_need": {
"message": "You need ≥ $PCT$% on the final",
"placeholders": {
"pct": {
"content": "$PCT$",
"example": "PCT"
}
}
"message": "You need ≥ {{PCT}}% on the final"
},
"get_active_cards": {
"message": "Get Active Cards From Dashboard"
@ -935,13 +837,7 @@
"message": "Adds tools to help you analyze your grades."
},
"grade_analytics_failed": {
"message": "Grade Analytics failed to load: $ERROR$",
"placeholders": {
"error": {
"content": "$ERROR$",
"example": "ERROR"
}
}
"message": "Grade Analytics failed to load: {{ERROR}}"
},
"grade_analytics_info_label": {
"message": "Grade Analytics info"
@ -971,29 +867,7 @@
"message": " (including the GPA calculator)"
},
"grid_warning": {
"message": "Your grid holds $TOTAL$ card$TOTAL_S$ but you have $ACTIVE$ card$ACTIVE_S$$GPA_NOTE$ - some cards may be cut off.",
"placeholders": {
"gpa_note": {
"content": "$GPA_NOTE$",
"example": "GPA_NOTE"
},
"active_s": {
"content": "$ACTIVE_S$",
"example": "ACTIVE_S"
},
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"active": {
"content": "$ACTIVE$",
"example": "ACTIVE"
},
"total_s": {
"content": "$TOTAL_S$",
"example": "TOTAL_S"
}
}
"message": "Your grid holds {{TOTAL}} card{{TOTAL_S}} but you have {{ACTIVE}} card{{ACTIVE_S}}{{GPA_NOTE}} - some cards may be cut off."
},
"group_graded": {
"message": "Graded"
@ -1158,34 +1032,16 @@
"message": "NASA Astronomy Picture of the Day"
},
"nasa_credit": {
"message": "Credit: $CREDIT$",
"placeholders": {
"credit": {
"content": "$CREDIT$",
"example": "CREDIT"
}
}
"message": "Credit: {{CREDIT}}"
},
"nasa_date": {
"message": "Date: $DATE$",
"placeholders": {
"date": {
"content": "$DATE$",
"example": "DATE"
}
}
"message": "Date: {{DATE}}"
},
"need_refresh": {
"message": "You may need to refresh the page to see some changes."
},
"new_canvas_desc": {
"message": "Canvas Refined detected a Canvas page at $HOST$. Add it to your canvas list?",
"placeholders": {
"host": {
"content": "$HOST$",
"example": "HOST"
}
}
"message": "Canvas Refined detected a Canvas page at {{HOST}}. Add it to your canvas list?"
},
"new_canvas_detected": {
"message": "New Canvas detected"
@ -1296,13 +1152,7 @@
"message": "Click on this puzzle icon at the top right"
},
"options_contact": {
"message": "My email is $EMAIL$ if you have any issues/suggestions - any feedback is appreciated!",
"placeholders": {
"email": {
"content": "$EMAIL$",
"example": "EMAIL"
}
}
"message": "My email is {{EMAIL}} if you have any issues/suggestions - any feedback is appreciated!"
},
"options_how_to_access": {
"message": "How to access this menu later:"
@ -1392,13 +1242,7 @@
"message": "Watermelon"
},
"percent_done": {
"message": "$PERCENT$%",
"placeholders": {
"percent": {
"content": "$PERCENT$",
"example": "PERCENT"
}
}
"message": "{{PERCENT}}%"
},
"personal_task": {
"message": "Personal task"
@ -1455,51 +1299,13 @@
"message": "Privacy"
},
"progress_done": {
"message": "$DONE$/$TOTAL$ done",
"placeholders": {
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"done": {
"content": "$DONE$",
"example": "DONE"
}
}
"message": "{{DONE}}/{{TOTAL}} done"
},
"progress_overall": {
"message": "$PCT$% ($DONE$/$TOTAL$)",
"placeholders": {
"pct": {
"content": "$PCT$",
"example": "PCT"
},
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"done": {
"content": "$DONE$",
"example": "DONE"
}
}
"message": "{{PCT}}% ({{DONE}}/{{TOTAL}})"
},
"progress_pct": {
"message": "$PCT$% ($DONE$/$TOTAL$)",
"placeholders": {
"pct": {
"content": "$PCT$",
"example": "PCT"
},
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"done": {
"content": "$DONE$",
"example": "DONE"
}
}
"message": "{{PCT}}% ({{DONE}}/{{TOTAL}})"
},
"quiz_dont_show": {
"message": "Don't show again"
@ -1547,25 +1353,13 @@
"message": "Reading grade data…"
},
"relative_ago": {
"message": "$TIME$ ago",
"placeholders": {
"time": {
"content": "$TIME$",
"example": "TIME"
}
}
"message": "{{TIME}} ago"
},
"relative_due_dates": {
"message": "Relative Due Dates"
},
"relative_in": {
"message": "in $TIME$",
"placeholders": {
"time": {
"content": "$TIME$",
"example": "TIME"
}
}
"message": "in {{TIME}}"
},
"remlogo": {
"message": "Remove Sidebar Logo"
@ -1576,6 +1370,12 @@
"report_desc": {
"message": "Please join the discord server or create a Github issue for any issues, feedback, or suggestions. Thank you!"
},
"get_in_touch": {
"message": "Get in touch"
},
"report_social_desc": {
"message": "For quicker help, feature requests, and community discussion, reach us here instead of email:"
},
"report_issue": {
"message": "Report Issue"
},
@ -1640,34 +1440,16 @@
"message": "new tab"
},
"search_no_course": {
"message": "No course matches \"$QUERY$\".",
"placeholders": {
"query": {
"content": "$QUERY$",
"example": "QUERY"
}
}
"message": "No course matches \"{{QUERY}}\"."
},
"search_no_courses_grades": {
"message": "No courses found to open grades for."
},
"search_no_match": {
"message": "No results for \"$QUERY$\".",
"placeholders": {
"query": {
"content": "$QUERY$",
"example": "QUERY"
}
}
"message": "No results for \"{{QUERY}}\"."
},
"search_no_match_hint": {
"message": "No results for \"$QUERY$\". Try different keywords.",
"placeholders": {
"query": {
"content": "$QUERY$",
"example": "QUERY"
}
}
"message": "No results for \"{{QUERY}}\". Try different keywords."
},
"search_no_modules": {
"message": "No modules or assignments found..."
@ -1676,13 +1458,7 @@
"message": "No modules or assignments found. Open the search again later if your courses are still loading."
},
"search_no_results": {
"message": "No results for \"$QUERY$\".",
"placeholders": {
"query": {
"content": "$QUERY$",
"example": "QUERY"
}
}
"message": "No results for \"{{QUERY}}\"."
},
"search_open": {
"message": "open"
@ -1727,13 +1503,7 @@
"message": "Section"
},
"selected_count": {
"message": "$COUNT$ selected",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "{{COUNT}} selected"
},
"show": {
"message": "Show"
@ -1778,13 +1548,7 @@
"message": "empty"
},
"storage_items": {
"message": " ($COUNT$ items)",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": " ({{COUNT}} items)"
},
"storage_limit_error": {
"message": "The data you're entering is exceeding the storage limit, so it won't save. Try using shorter links, and make sure to press \"copy image address\" and not \"copy image\" for links."
@ -1871,13 +1635,7 @@
"message": "Make sure your theme follows these guidelines:"
},
"theme_number": {
"message": "Theme $NUM$",
"placeholders": {
"num": {
"content": "$NUM$",
"example": "NUM"
}
}
"message": "Theme {{NUM}}"
},
"theme_optin_reset": {
"message": "Theme browser opt-in reset"
@ -1982,21 +1740,7 @@
"message": "Cross off"
},
"todo_date_format": {
"message": "$DATE$ at $TIME$ ($RELATIVE$)",
"placeholders": {
"relative": {
"content": "$RELATIVE$",
"example": "RELATIVE"
},
"time": {
"content": "$TIME$",
"example": "TIME"
},
"date": {
"content": "$DATE$",
"example": "DATE"
}
}
"message": "{{DATE}} at {{TIME}} ({{RELATIVE}})"
},
"todo_delete": {
"message": "Delete"
@ -2134,13 +1878,7 @@
"message": "View More"
},
"view_more_count": {
"message": "View More ($COUNT$)",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "View More ({{COUNT}})"
},
"view_on_github": {
"message": "View on GitHub"

View File

@ -21,26 +21,10 @@
"message": "Mostrar siempre el número de me gusta"
},
"assignment_avg": {
"message": "— prom. $AVG$% en $COUNT$ tarea(s):",
"placeholders": {
"avg": {
"content": "$AVG$",
"example": "AVG"
},
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "— prom. {{AVG}}% en {{COUNT}} tarea(s):"
},
"assignment_due_in": {
"message": "Tarea que vence en $TIME$",
"placeholders": {
"time": {
"content": "$TIME$",
"example": "TIME"
}
}
"message": "Tarea que vence en {{TIME}}"
},
"auto": {
"message": "automático"
@ -259,17 +243,7 @@
"message": "completado"
},
"completed_total": {
"message": "$DONE$/$TOTAL$ hechas",
"placeholders": {
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"done": {
"content": "$DONE$",
"example": "DONE"
}
}
"message": "{{DONE}}/{{TOTAL}} hechas"
},
"condensed_cards": {
"message": "Tarjetas condensadas"
@ -455,13 +429,7 @@
"message": "Pendiente"
},
"due_days": {
"message": "Vence en <strong>$COUNT$ días</strong>",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "Vence en <strong>{{COUNT}} días</strong>"
},
"due_later": {
"message": "Vence <strong>más tarde</strong>"
@ -479,13 +447,7 @@
"message": "Vence <strong>mañana</strong>"
},
"due_weeks": {
"message": "Vence en <strong>$COUNT$ semanas</strong>",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "Vence en <strong>{{COUNT}} semanas</strong>"
},
"edit_custom_task": {
"message": "Editar esta tarea personalizada"
@ -593,13 +555,7 @@
"message": "tareas"
},
"final_avg": {
"message": "— prom. $AVG$% ...",
"placeholders": {
"avg": {
"content": "$AVG$",
"example": "AVG"
}
}
"message": "— prom. {{AVG}}% ..."
},
"final_waiting": {
"message": "Esperando datos de calificaciones…"
@ -617,17 +573,7 @@
"message": "El reparador se ejecuta automáticamente en estas páginas:"
},
"fix_took": {
"message": "La corrección tardó $TIME$ ms (valoración: $RATING$)",
"placeholders": {
"time": {
"content": "$TIME$",
"example": "TIME"
},
"rating": {
"content": "$RATING$",
"example": "RATING"
}
}
"message": "La corrección tardó {{TIME}} ms (valoración: {{RATING}})"
},
"flexible_grid": {
"message": "Cuadrícula flexible"
@ -660,25 +606,13 @@
"message": "Ajustar eje Y"
},
"ga_heatmap_assignments": {
"message": "$COUNT$ tarea(s):",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "{{COUNT}} tarea(s):"
},
"ga_heatmap_avg": {
"message": "prom."
},
"ga_heatmap_undated": {
"message": "$COUNT$ tarea(s) calificada(s) sin fecha de entrega no mostrada(s).",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "{{COUNT}} tarea(s) calificada(s) sin fecha de entrega no mostrada(s)."
},
"ga_line_title": {
"message": "Nota general a lo largo del tiempo"
@ -732,30 +666,10 @@
"message": "Sin calificar"
},
"ga_sub_secured": {
"message": "Incluso un 0 en el final te deja en <b>$ZERO$%</b>, que está por encima de tu objetivo de <b>$TARGET$%</b>.",
"placeholders": {
"target": {
"content": "$TARGET$",
"example": "TARGET"
},
"zero": {
"content": "$ZERO$",
"example": "ZERO"
}
}
"message": "Incluso un 0 en el final te deja en <b>{{ZERO}}%</b>, que está por encima de tu objetivo de <b>{{TARGET}}%</b>."
},
"ga_sub_unreachable": {
"message": "Incluso un final perfecto solo te llevaría a <b>$PERFECT$%</b>, que está por debajo de tu objetivo de <b>$TARGET$%</b>.",
"placeholders": {
"perfect": {
"content": "$PERFECT$",
"example": "PERFECT"
},
"target": {
"content": "$TARGET$",
"example": "TARGET"
}
}
"message": "Incluso un final perfecto solo te llevaría a <b>{{PERFECT}}%</b>, que está por debajo de tu objetivo de <b>{{TARGET}}%</b>."
},
"ga_tab_calc": {
"message": "Calculadora del final"
@ -788,25 +702,13 @@
"message": "Puntuación Imagine-If (numerador); vacío = no cuenta"
},
"ga_tooltip_assignments": {
"message": "$COUNT$ tarea(s)",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "{{COUNT}} tarea(s)"
},
"ga_you_got_this": {
"message": "¡Tú puedes!"
},
"ga_you_need": {
"message": "Necesitas ≥ $PCT$% en el final",
"placeholders": {
"pct": {
"content": "$PCT$",
"example": "PCT"
}
}
"message": "Necesitas ≥ {{PCT}}% en el final"
},
"get_active_cards": {
"message": "Obtener tarjetas activas del panel"
@ -932,13 +834,7 @@
"message": "Añade herramientas para ayudarte a analizar tus calificaciones."
},
"grade_analytics_failed": {
"message": "No se pudo cargar el análisis de calificaciones: $ERROR$",
"placeholders": {
"error": {
"content": "$ERROR$",
"example": "ERROR"
}
}
"message": "No se pudo cargar el análisis de calificaciones: {{ERROR}}"
},
"grade_analytics_info_label": {
"message": "Información del análisis de calificaciones"
@ -968,29 +864,7 @@
"message": " (incluida la calculadora de GPA)"
},
"grid_warning": {
"message": "Tu cuadrícula admite $TOTAL$ tarjeta$TOTAL_S$ pero tienes $ACTIVE$ tarjeta$ACTIVE_S$$GPA_NOTE$ - algunas tarjetas pueden quedar cortadas.",
"placeholders": {
"gpa_note": {
"content": "$GPA_NOTE$",
"example": "GPA_NOTE"
},
"active_s": {
"content": "$ACTIVE_S$",
"example": "ACTIVE_S"
},
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"active": {
"content": "$ACTIVE$",
"example": "ACTIVE"
},
"total_s": {
"content": "$TOTAL_S$",
"example": "TOTAL_S"
}
}
"message": "Tu cuadrícula admite {{TOTAL}} tarjeta{{TOTAL_S}} pero tienes {{ACTIVE}} tarjeta{{ACTIVE_S}}{{GPA_NOTE}} - algunas tarjetas pueden quedar cortadas."
},
"group_graded": {
"message": "Calificadas"
@ -1149,34 +1023,16 @@
"message": "Imagen astronómica del día de la NASA"
},
"nasa_credit": {
"message": "Crédito: $CREDIT$",
"placeholders": {
"credit": {
"content": "$CREDIT$",
"example": "CREDIT"
}
}
"message": "Crédito: {{CREDIT}}"
},
"nasa_date": {
"message": "Fecha: $DATE$",
"placeholders": {
"date": {
"content": "$DATE$",
"example": "DATE"
}
}
"message": "Fecha: {{DATE}}"
},
"need_refresh": {
"message": "Puede que debas actualizar la página para ver algunos cambios."
},
"new_canvas_desc": {
"message": "Canvas Refined detectó una página de Canvas en $HOST$. ¿Añadirla a tu lista de Canvas?",
"placeholders": {
"host": {
"content": "$HOST$",
"example": "HOST"
}
}
"message": "Canvas Refined detectó una página de Canvas en {{HOST}}. ¿Añadirla a tu lista de Canvas?"
},
"new_canvas_detected": {
"message": "Nuevo Canvas detectado"
@ -1287,13 +1143,7 @@
"message": "Haz clic en este icono de rompecabezas en la esquina superior derecha"
},
"options_contact": {
"message": "Mi correo es $EMAIL$ si tienes problemas o sugerencias: ¡cualquier comentario es bienvenido!",
"placeholders": {
"email": {
"content": "$EMAIL$",
"example": "EMAIL"
}
}
"message": "Mi correo es {{EMAIL}} si tienes problemas o sugerencias: ¡cualquier comentario es bienvenido!"
},
"options_how_to_access": {
"message": "Cómo acceder a este menú más tarde:"
@ -1383,13 +1233,7 @@
"message": "Sandía"
},
"percent_done": {
"message": "$PERCENT$%",
"placeholders": {
"percent": {
"content": "$PERCENT$",
"example": "PERCENT"
}
}
"message": "{{PERCENT}}%"
},
"personal_task": {
"message": "Tarea personal"
@ -1446,51 +1290,13 @@
"message": "Privacidad"
},
"progress_done": {
"message": "$DONE$/$TOTAL$ hechas",
"placeholders": {
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"done": {
"content": "$DONE$",
"example": "DONE"
}
}
"message": "{{DONE}}/{{TOTAL}} hechas"
},
"progress_overall": {
"message": "$PCT$% ($DONE$/$TOTAL$)",
"placeholders": {
"pct": {
"content": "$PCT$",
"example": "PCT"
},
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"done": {
"content": "$DONE$",
"example": "DONE"
}
}
"message": "{{PCT}}% ({{DONE}}/{{TOTAL}})"
},
"progress_pct": {
"message": "$PCT$% ($DONE$/$TOTAL$)",
"placeholders": {
"pct": {
"content": "$PCT$",
"example": "PCT"
},
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"done": {
"content": "$DONE$",
"example": "DONE"
}
}
"message": "{{PCT}}% ({{DONE}}/{{TOTAL}})"
},
"quiz_dont_show": {
"message": "No volver a mostrar"
@ -1538,25 +1344,13 @@
"message": "Leyendo datos de calificaciones…"
},
"relative_ago": {
"message": "hace $TIME$",
"placeholders": {
"time": {
"content": "$TIME$",
"example": "TIME"
}
}
"message": "hace {{TIME}}"
},
"relative_due_dates": {
"message": "Fechas pendientes relativas"
},
"relative_in": {
"message": "dentro de $TIME$",
"placeholders": {
"time": {
"content": "$TIME$",
"example": "TIME"
}
}
"message": "dentro de {{TIME}}"
},
"remlogo": {
"message": "Quitar el logo de la barra lateral"
@ -1631,34 +1425,16 @@
"message": "nueva pestaña"
},
"search_no_course": {
"message": "Ningún curso coincide con \"$QUERY$\".",
"placeholders": {
"query": {
"content": "$QUERY$",
"example": "QUERY"
}
}
"message": "Ningún curso coincide con \"{{QUERY}}\"."
},
"search_no_courses_grades": {
"message": "No se encontraron cursos para abrir sus notas."
},
"search_no_match": {
"message": "No hay resultados para \"$QUERY$\".",
"placeholders": {
"query": {
"content": "$QUERY$",
"example": "QUERY"
}
}
"message": "No hay resultados para \"{{QUERY}}\"."
},
"search_no_match_hint": {
"message": "No hay resultados para \"$QUERY$\". Prueba con otras palabras clave.",
"placeholders": {
"query": {
"content": "$QUERY$",
"example": "QUERY"
}
}
"message": "No hay resultados para \"{{QUERY}}\". Prueba con otras palabras clave."
},
"search_no_modules": {
"message": "No se encontraron módulos ni tareas..."
@ -1667,13 +1443,7 @@
"message": "No se encontraron módulos ni tareas. Vuelve a abrir la búsqueda más tarde si tus cursos aún están cargando."
},
"search_no_results": {
"message": "No hay resultados para \"$QUERY$\".",
"placeholders": {
"query": {
"content": "$QUERY$",
"example": "QUERY"
}
}
"message": "No hay resultados para \"{{QUERY}}\"."
},
"search_open": {
"message": "abrir"
@ -1718,13 +1488,7 @@
"message": "Sección"
},
"selected_count": {
"message": "$COUNT$ seleccionados",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "{{COUNT}} seleccionados"
},
"show": {
"message": "Mostrar"
@ -1769,13 +1533,7 @@
"message": "vacío"
},
"storage_items": {
"message": " ($COUNT$ elementos)",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": " ({{COUNT}} elementos)"
},
"storage_limit_error": {
"message": "Los datos que introduces superan el límite de almacenamiento, así que no se guardarán. Prueba con enlaces más cortos y asegúrate de pulsar \"copiar dirección de imagen\" y no \"copiar imagen\" para los enlaces."
@ -1862,13 +1620,7 @@
"message": "Asegúrate de que tu tema cumpla estas normas:"
},
"theme_number": {
"message": "Tema $NUM$",
"placeholders": {
"num": {
"content": "$NUM$",
"example": "NUM"
}
}
"message": "Tema {{NUM}}"
},
"theme_optin_reset": {
"message": "Suscripción al navegador de temas restablecida"
@ -1973,21 +1725,7 @@
"message": "Tachar"
},
"todo_date_format": {
"message": "$DATE$ a las $TIME$ ($RELATIVE$)",
"placeholders": {
"relative": {
"content": "$RELATIVE$",
"example": "RELATIVE"
},
"time": {
"content": "$TIME$",
"example": "TIME"
},
"date": {
"content": "$DATE$",
"example": "DATE"
}
}
"message": "{{DATE}} a las {{TIME}} ({{RELATIVE}})"
},
"todo_delete": {
"message": "Eliminar"
@ -2125,13 +1863,7 @@
"message": "Ver más"
},
"view_more_count": {
"message": "Ver más ($COUNT$)",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "Ver más ({{COUNT}})"
},
"view_on_github": {
"message": "Ver en GitHub"

View File

@ -21,26 +21,10 @@
"message": "Toujours afficher le nombre de mentions J'aime"
},
"assignment_avg": {
"message": "— moy. $AVG$% sur $COUNT$ devoir(s) :",
"placeholders": {
"avg": {
"content": "$AVG$",
"example": "AVG"
},
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "— moy. {{AVG}}% sur {{COUNT}} devoir(s) :"
},
"assignment_due_in": {
"message": "Devoir à rendre dans $TIME$",
"placeholders": {
"time": {
"content": "$TIME$",
"example": "TIME"
}
}
"message": "Devoir à rendre dans {{TIME}}"
},
"auto": {
"message": "auto"
@ -259,17 +243,7 @@
"message": "terminé"
},
"completed_total": {
"message": "$DONE$/$TOTAL$ terminés",
"placeholders": {
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"done": {
"content": "$DONE$",
"example": "DONE"
}
}
"message": "{{DONE}}/{{TOTAL}} terminés"
},
"condensed_cards": {
"message": "Cartes condensées"
@ -455,13 +429,7 @@
"message": "Exigible"
},
"due_days": {
"message": "Dû <strong>dans $COUNT$ jours</strong>",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "Dû <strong>dans {{COUNT}} jours</strong>"
},
"due_later": {
"message": "Dû <strong>plus tard</strong>"
@ -479,13 +447,7 @@
"message": "Dû <strong>demain</strong>"
},
"due_weeks": {
"message": "Dû <strong>dans $COUNT$ semaines</strong>",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "Dû <strong>dans {{COUNT}} semaines</strong>"
},
"edit_custom_task": {
"message": "Modifier cette tâche personnalisée"
@ -593,13 +555,7 @@
"message": "devoirs"
},
"final_avg": {
"message": "— moy. $AVG$% ...",
"placeholders": {
"avg": {
"content": "$AVG$",
"example": "AVG"
}
}
"message": "— moy. {{AVG}}% ..."
},
"final_waiting": {
"message": "En attente des données de notes…"
@ -617,17 +573,7 @@
"message": "Le fixateur s'exécute automatiquement sur ces pages :"
},
"fix_took": {
"message": "Correction en $TIME$ ms (évaluation : $RATING$)",
"placeholders": {
"time": {
"content": "$TIME$",
"example": "TIME"
},
"rating": {
"content": "$RATING$",
"example": "RATING"
}
}
"message": "Correction en {{TIME}} ms (évaluation : {{RATING}})"
},
"flexible_grid": {
"message": "Grille flexible"
@ -660,25 +606,13 @@
"message": "Ajuster l'axe Y"
},
"ga_heatmap_assignments": {
"message": "$COUNT$ devoir(s) :",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "{{COUNT}} devoir(s) :"
},
"ga_heatmap_avg": {
"message": "moy."
},
"ga_heatmap_undated": {
"message": "$COUNT$ devoir(s) noté(s) sans date d'échéance non affiché(s).",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "{{COUNT}} devoir(s) noté(s) sans date d'échéance non affiché(s)."
},
"ga_line_title": {
"message": "Note globale au fil du temps"
@ -732,30 +666,10 @@
"message": "Non noté"
},
"ga_sub_secured": {
"message": "Même avec 0 à l'examen final, vous restez à <b>$ZERO$%</b>, au-dessus de votre objectif de <b>$TARGET$%</b>.",
"placeholders": {
"target": {
"content": "$TARGET$",
"example": "TARGET"
},
"zero": {
"content": "$ZERO$",
"example": "ZERO"
}
}
"message": "Même avec 0 à l'examen final, vous restez à <b>{{ZERO}}%</b>, au-dessus de votre objectif de <b>{{TARGET}}%</b>."
},
"ga_sub_unreachable": {
"message": "Même un examen parfait ne vous mène qu'à <b>$PERFECT$%</b>, en dessous de votre objectif de <b>$TARGET$%</b>.",
"placeholders": {
"perfect": {
"content": "$PERFECT$",
"example": "PERFECT"
},
"target": {
"content": "$TARGET$",
"example": "TARGET"
}
}
"message": "Même un examen parfait ne vous mène qu'à <b>{{PERFECT}}%</b>, en dessous de votre objectif de <b>{{TARGET}}%</b>."
},
"ga_tab_calc": {
"message": "Calculateur final"
@ -788,25 +702,13 @@
"message": "Score Imagine-If (numérateur) ; vide = non pris en compte"
},
"ga_tooltip_assignments": {
"message": "$COUNT$ devoir(s)",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "{{COUNT}} devoir(s)"
},
"ga_you_got_this": {
"message": "Vous pouvez le faire !"
},
"ga_you_need": {
"message": "Il vous faut ≥ $PCT$% à l'examen final",
"placeholders": {
"pct": {
"content": "$PCT$",
"example": "PCT"
}
}
"message": "Il vous faut ≥ {{PCT}}% à l'examen final"
},
"get_active_cards": {
"message": "Récupérer les cartes actives du tableau de bord"
@ -932,13 +834,7 @@
"message": "Ajoute des outils pour vous aider à analyser vos notes."
},
"grade_analytics_failed": {
"message": "L'analyse des notes n'a pas pu se charger : $ERROR$",
"placeholders": {
"error": {
"content": "$ERROR$",
"example": "ERROR"
}
}
"message": "L'analyse des notes n'a pas pu se charger : {{ERROR}}"
},
"grade_analytics_info_label": {
"message": "Infos sur l'analyse des notes"
@ -968,29 +864,7 @@
"message": " (y compris le calculateur GPA)"
},
"grid_warning": {
"message": "Votre grille contient $TOTAL$ carte$TOTAL_S$ mais vous avez $ACTIVE$ carte$ACTIVE_S$$GPA_NOTE$ — certaines cartes peuvent être coupées.",
"placeholders": {
"gpa_note": {
"content": "$GPA_NOTE$",
"example": "GPA_NOTE"
},
"active_s": {
"content": "$ACTIVE_S$",
"example": "ACTIVE_S"
},
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"active": {
"content": "$ACTIVE$",
"example": "ACTIVE"
},
"total_s": {
"content": "$TOTAL_S$",
"example": "TOTAL_S"
}
}
"message": "Votre grille contient {{TOTAL}} carte{{TOTAL_S}} mais vous avez {{ACTIVE}} carte{{ACTIVE_S}}{{GPA_NOTE}} — certaines cartes peuvent être coupées."
},
"group_graded": {
"message": "Noté"
@ -1149,34 +1023,16 @@
"message": "Image astronomique du jour de la NASA"
},
"nasa_credit": {
"message": "Crédit : $CREDIT$",
"placeholders": {
"credit": {
"content": "$CREDIT$",
"example": "CREDIT"
}
}
"message": "Crédit : {{CREDIT}}"
},
"nasa_date": {
"message": "Date : $DATE$",
"placeholders": {
"date": {
"content": "$DATE$",
"example": "DATE"
}
}
"message": "Date : {{DATE}}"
},
"need_refresh": {
"message": "Vous devrez peut-être actualiser la page pour voir certains changements."
},
"new_canvas_desc": {
"message": "Canvas Refined a détecté une page Canvas sur $HOST$. L'ajouter à votre liste de Canvas ?",
"placeholders": {
"host": {
"content": "$HOST$",
"example": "HOST"
}
}
"message": "Canvas Refined a détecté une page Canvas sur {{HOST}}. L'ajouter à votre liste de Canvas ?"
},
"new_canvas_detected": {
"message": "Nouveau Canvas détecté"
@ -1287,13 +1143,7 @@
"message": "Cliquez sur cette icône de puzzle en haut à droite"
},
"options_contact": {
"message": "Mon e-mail est $EMAIL$ si vous avez des problèmes ou des suggestions — vos retours sont les bienvenus !",
"placeholders": {
"email": {
"content": "$EMAIL$",
"example": "EMAIL"
}
}
"message": "Mon e-mail est {{EMAIL}} si vous avez des problèmes ou des suggestions — vos retours sont les bienvenus !"
},
"options_how_to_access": {
"message": "Comment accéder à ce menu plus tard :"
@ -1383,13 +1233,7 @@
"message": "Pastèque"
},
"percent_done": {
"message": "$PERCENT$%",
"placeholders": {
"percent": {
"content": "$PERCENT$",
"example": "PERCENT"
}
}
"message": "{{PERCENT}}%"
},
"personal_task": {
"message": "Tâche personnelle"
@ -1446,51 +1290,13 @@
"message": "Confidentialité"
},
"progress_done": {
"message": "$DONE$/$TOTAL$ terminés",
"placeholders": {
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"done": {
"content": "$DONE$",
"example": "DONE"
}
}
"message": "{{DONE}}/{{TOTAL}} terminés"
},
"progress_overall": {
"message": "$PCT$% ($DONE$/$TOTAL$)",
"placeholders": {
"pct": {
"content": "$PCT$",
"example": "PCT"
},
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"done": {
"content": "$DONE$",
"example": "DONE"
}
}
"message": "{{PCT}}% ({{DONE}}/{{TOTAL}})"
},
"progress_pct": {
"message": "$PCT$% ($DONE$/$TOTAL$)",
"placeholders": {
"pct": {
"content": "$PCT$",
"example": "PCT"
},
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"done": {
"content": "$DONE$",
"example": "DONE"
}
}
"message": "{{PCT}}% ({{DONE}}/{{TOTAL}})"
},
"quiz_dont_show": {
"message": "Ne plus afficher"
@ -1538,25 +1344,13 @@
"message": "Lecture des données de notes…"
},
"relative_ago": {
"message": "il y a $TIME$",
"placeholders": {
"time": {
"content": "$TIME$",
"example": "TIME"
}
}
"message": "il y a {{TIME}}"
},
"relative_due_dates": {
"message": "Dates d'échéance relatives"
},
"relative_in": {
"message": "dans $TIME$",
"placeholders": {
"time": {
"content": "$TIME$",
"example": "TIME"
}
}
"message": "dans {{TIME}}"
},
"remlogo": {
"message": "Supprimer le logo de la barre latérale"
@ -1631,34 +1425,16 @@
"message": "nouvel onglet"
},
"search_no_course": {
"message": "Aucun cours ne correspond à « $QUERY$ ».",
"placeholders": {
"query": {
"content": "$QUERY$",
"example": "QUERY"
}
}
"message": "Aucun cours ne correspond à « {{QUERY}} »."
},
"search_no_courses_grades": {
"message": "Aucun cours trouvé pour ouvrir les notes."
},
"search_no_match": {
"message": "Aucun résultat pour « $QUERY$ ».",
"placeholders": {
"query": {
"content": "$QUERY$",
"example": "QUERY"
}
}
"message": "Aucun résultat pour « {{QUERY}} »."
},
"search_no_match_hint": {
"message": "Aucun résultat pour « $QUERY$ ». Essayez d'autres mots-clés.",
"placeholders": {
"query": {
"content": "$QUERY$",
"example": "QUERY"
}
}
"message": "Aucun résultat pour « {{QUERY}} ». Essayez d'autres mots-clés."
},
"search_no_modules": {
"message": "Aucun module ou devoir trouvé..."
@ -1667,13 +1443,7 @@
"message": "Aucun module ni devoir trouvé. Rouvrez la recherche plus tard si vos cours sont encore en chargement."
},
"search_no_results": {
"message": "Aucun résultat pour « $QUERY$ ».",
"placeholders": {
"query": {
"content": "$QUERY$",
"example": "QUERY"
}
}
"message": "Aucun résultat pour « {{QUERY}} »."
},
"search_open": {
"message": "ouvrir"
@ -1718,13 +1488,7 @@
"message": "Section"
},
"selected_count": {
"message": "$COUNT$ sélectionné(s)",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "{{COUNT}} sélectionné(s)"
},
"show": {
"message": "Afficher"
@ -1769,13 +1533,7 @@
"message": "vide"
},
"storage_items": {
"message": " ($COUNT$ éléments)",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": " ({{COUNT}} éléments)"
},
"storage_limit_error": {
"message": "Les données saisies dépassent la limite de stockage et ne seront pas enregistrées. Essayez des liens plus courts et assurez-vous de cliquer sur « copier l'adresse de l'image » et non « copier l'image »."
@ -1862,13 +1620,7 @@
"message": "Assurez-vous que votre thème respecte ces règles :"
},
"theme_number": {
"message": "Thème $NUM$",
"placeholders": {
"num": {
"content": "$NUM$",
"example": "NUM"
}
}
"message": "Thème {{NUM}}"
},
"theme_optin_reset": {
"message": "Adhésion au navigateur de thèmes réinitialisée"
@ -1973,21 +1725,7 @@
"message": "Barrer"
},
"todo_date_format": {
"message": "$DATE$ à $TIME$ ($RELATIVE$)",
"placeholders": {
"relative": {
"content": "$RELATIVE$",
"example": "RELATIVE"
},
"time": {
"content": "$TIME$",
"example": "TIME"
},
"date": {
"content": "$DATE$",
"example": "DATE"
}
}
"message": "{{DATE}} à {{TIME}} ({{RELATIVE}})"
},
"todo_delete": {
"message": "Supprimer"
@ -2125,13 +1863,7 @@
"message": "Voir plus"
},
"view_more_count": {
"message": "Voir plus ($COUNT$)",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "Voir plus ({{COUNT}})"
},
"view_on_github": {
"message": "Voir sur GitHub"

View File

@ -21,26 +21,10 @@
"message": "Mostra sempre il numero di Mi piace"
},
"assignment_avg": {
"message": "— media $AVG$% su $COUNT$ compito/i:",
"placeholders": {
"avg": {
"content": "$AVG$",
"example": "AVG"
},
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "— media {{AVG}}% su {{COUNT}} compito/i:"
},
"assignment_due_in": {
"message": "Compito in scadenza tra $TIME$",
"placeholders": {
"time": {
"content": "$TIME$",
"example": "TIME"
}
}
"message": "Compito in scadenza tra {{TIME}}"
},
"auto": {
"message": "auto"
@ -259,17 +243,7 @@
"message": "completato"
},
"completed_total": {
"message": "$DONE$/$TOTAL$ completati",
"placeholders": {
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"done": {
"content": "$DONE$",
"example": "DONE"
}
}
"message": "{{DONE}}/{{TOTAL}} completati"
},
"condensed_cards": {
"message": "Carte condensate"
@ -455,13 +429,7 @@
"message": "Dovuto"
},
"due_days": {
"message": "Scade <strong>tra $COUNT$ giorni</strong>",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "Scade <strong>tra {{COUNT}} giorni</strong>"
},
"due_later": {
"message": "Scade <strong>più tardi</strong>"
@ -479,13 +447,7 @@
"message": "Scade <strong>domani</strong>"
},
"due_weeks": {
"message": "Scade <strong>tra $COUNT$ settimane</strong>",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "Scade <strong>tra {{COUNT}} settimane</strong>"
},
"edit_custom_task": {
"message": "Modifica questa attività personalizzata"
@ -593,13 +555,7 @@
"message": "compiti"
},
"final_avg": {
"message": "— media $AVG$% ...",
"placeholders": {
"avg": {
"content": "$AVG$",
"example": "AVG"
}
}
"message": "— media {{AVG}}% ..."
},
"final_waiting": {
"message": "In attesa dei dati sui voti…"
@ -617,17 +573,7 @@
"message": "Il fissatore viene eseguito automaticamente su queste pagine:"
},
"fix_took": {
"message": "Correzione completata in $TIME$ms (valutazione: $RATING$)",
"placeholders": {
"time": {
"content": "$TIME$",
"example": "TIME"
},
"rating": {
"content": "$RATING$",
"example": "RATING"
}
}
"message": "Correzione completata in {{TIME}}ms (valutazione: {{RATING}})"
},
"flexible_grid": {
"message": "Griglia flessibile"
@ -660,25 +606,13 @@
"message": "Adatta asse Y"
},
"ga_heatmap_assignments": {
"message": "$COUNT$ consegna/e:",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "{{COUNT}} consegna/e:"
},
"ga_heatmap_avg": {
"message": "media"
},
"ga_heatmap_undated": {
"message": "$COUNT$ consegna/e valutata/e senza data di scadenza non mostrata/e.",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "{{COUNT}} consegna/e valutata/e senza data di scadenza non mostrata/e."
},
"ga_line_title": {
"message": "Voto complessivo nel tempo"
@ -732,30 +666,10 @@
"message": "Non valutate"
},
"ga_sub_secured": {
"message": "Anche con 0 all'esame finale resteresti a <b>$ZERO$%</b>, sopra il tuo obiettivo del <b>$TARGET$%</b>.",
"placeholders": {
"target": {
"content": "$TARGET$",
"example": "TARGET"
},
"zero": {
"content": "$ZERO$",
"example": "ZERO"
}
}
"message": "Anche con 0 all'esame finale resteresti a <b>{{ZERO}}%</b>, sopra il tuo obiettivo del <b>{{TARGET}}%</b>."
},
"ga_sub_unreachable": {
"message": "Anche un esame finale perfetto ti porterebbe solo a <b>$PERFECT$%</b>, sotto il tuo obiettivo del <b>$TARGET$%</b>.",
"placeholders": {
"perfect": {
"content": "$PERFECT$",
"example": "PERFECT"
},
"target": {
"content": "$TARGET$",
"example": "TARGET"
}
}
"message": "Anche un esame finale perfetto ti porterebbe solo a <b>{{PERFECT}}%</b>, sotto il tuo obiettivo del <b>{{TARGET}}%</b>."
},
"ga_tab_calc": {
"message": "Calcolatore finale"
@ -788,25 +702,13 @@
"message": "Punteggio Imagine-If (numeratore); vuoto = non conteggiata"
},
"ga_tooltip_assignments": {
"message": "$COUNT$ consegna/e",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "{{COUNT}} consegna/e"
},
"ga_you_got_this": {
"message": "Puoi farcela!"
},
"ga_you_need": {
"message": "Ti serve ≥ $PCT$% all'esame finale",
"placeholders": {
"pct": {
"content": "$PCT$",
"example": "PCT"
}
}
"message": "Ti serve ≥ {{PCT}}% all'esame finale"
},
"get_active_cards": {
"message": "Ottieni card attive dalla dashboard"
@ -932,13 +834,7 @@
"message": "Aggiunge strumenti per aiutarti ad analizzare i tuoi voti."
},
"grade_analytics_failed": {
"message": "Impossibile caricare l'analisi dei voti: $ERROR$",
"placeholders": {
"error": {
"content": "$ERROR$",
"example": "ERROR"
}
}
"message": "Impossibile caricare l'analisi dei voti: {{ERROR}}"
},
"grade_analytics_info_label": {
"message": "Informazioni sull'analisi dei voti"
@ -968,29 +864,7 @@
"message": " (incluso il calcolatore GPA)"
},
"grid_warning": {
"message": "La tua griglia contiene $TOTAL$ card$TOTAL_S$ ma ne hai $ACTIVE$ card$ACTIVE_S$$GPA_NOTE$ - alcune card potrebbero essere tagliate.",
"placeholders": {
"gpa_note": {
"content": "$GPA_NOTE$",
"example": "GPA_NOTE"
},
"active_s": {
"content": "$ACTIVE_S$",
"example": "ACTIVE_S"
},
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"active": {
"content": "$ACTIVE$",
"example": "ACTIVE"
},
"total_s": {
"content": "$TOTAL_S$",
"example": "TOTAL_S"
}
}
"message": "La tua griglia contiene {{TOTAL}} card{{TOTAL_S}} ma ne hai {{ACTIVE}} card{{ACTIVE_S}}{{GPA_NOTE}} - alcune card potrebbero essere tagliate."
},
"group_graded": {
"message": "Valutate"
@ -1149,34 +1023,16 @@
"message": "Immagine astronomica del giorno NASA"
},
"nasa_credit": {
"message": "Crediti: $CREDIT$",
"placeholders": {
"credit": {
"content": "$CREDIT$",
"example": "CREDIT"
}
}
"message": "Crediti: {{CREDIT}}"
},
"nasa_date": {
"message": "Data: $DATE$",
"placeholders": {
"date": {
"content": "$DATE$",
"example": "DATE"
}
}
"message": "Data: {{DATE}}"
},
"need_refresh": {
"message": "Potrebbe essere necessario aggiornare la pagina per vedere alcune modifiche."
},
"new_canvas_desc": {
"message": "Canvas Refined ha rilevato una pagina Canvas su $HOST$. Aggiungerla al tuo elenco Canvas?",
"placeholders": {
"host": {
"content": "$HOST$",
"example": "HOST"
}
}
"message": "Canvas Refined ha rilevato una pagina Canvas su {{HOST}}. Aggiungerla al tuo elenco Canvas?"
},
"new_canvas_detected": {
"message": "Nuovo Canvas rilevato"
@ -1287,13 +1143,7 @@
"message": "Fai clic su questa icona del puzzle in alto a destra"
},
"options_contact": {
"message": "La mia email è $EMAIL$ se hai problemi o suggerimenti: qualsiasi feedback è apprezzato!",
"placeholders": {
"email": {
"content": "$EMAIL$",
"example": "EMAIL"
}
}
"message": "La mia email è {{EMAIL}} se hai problemi o suggerimenti: qualsiasi feedback è apprezzato!"
},
"options_how_to_access": {
"message": "Come accedere a questo menu in seguito:"
@ -1383,13 +1233,7 @@
"message": "Anguria"
},
"percent_done": {
"message": "$PERCENT$%",
"placeholders": {
"percent": {
"content": "$PERCENT$",
"example": "PERCENT"
}
}
"message": "{{PERCENT}}%"
},
"personal_task": {
"message": "Attività personale"
@ -1446,51 +1290,13 @@
"message": "Privacy"
},
"progress_done": {
"message": "$DONE$/$TOTAL$ completati",
"placeholders": {
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"done": {
"content": "$DONE$",
"example": "DONE"
}
}
"message": "{{DONE}}/{{TOTAL}} completati"
},
"progress_overall": {
"message": "$PCT$% ($DONE$/$TOTAL$)",
"placeholders": {
"pct": {
"content": "$PCT$",
"example": "PCT"
},
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"done": {
"content": "$DONE$",
"example": "DONE"
}
}
"message": "{{PCT}}% ({{DONE}}/{{TOTAL}})"
},
"progress_pct": {
"message": "$PCT$% ($DONE$/$TOTAL$)",
"placeholders": {
"pct": {
"content": "$PCT$",
"example": "PCT"
},
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"done": {
"content": "$DONE$",
"example": "DONE"
}
}
"message": "{{PCT}}% ({{DONE}}/{{TOTAL}})"
},
"quiz_dont_show": {
"message": "Non mostrare più"
@ -1538,25 +1344,13 @@
"message": "Lettura dei dati sui voti…"
},
"relative_ago": {
"message": "$TIME$ fa",
"placeholders": {
"time": {
"content": "$TIME$",
"example": "TIME"
}
}
"message": "{{TIME}} fa"
},
"relative_due_dates": {
"message": "Date di scadenza relative"
},
"relative_in": {
"message": "tra $TIME$",
"placeholders": {
"time": {
"content": "$TIME$",
"example": "TIME"
}
}
"message": "tra {{TIME}}"
},
"remlogo": {
"message": "Rimuovi il logo della barra laterale"
@ -1631,34 +1425,16 @@
"message": "nuova scheda"
},
"search_no_course": {
"message": "Nessun corso corrisponde a \"$QUERY$\".",
"placeholders": {
"query": {
"content": "$QUERY$",
"example": "QUERY"
}
}
"message": "Nessun corso corrisponde a \"{{QUERY}}\"."
},
"search_no_courses_grades": {
"message": "Nessun corso disponibile per aprire i voti."
},
"search_no_match": {
"message": "Nessun risultato per \"$QUERY$\".",
"placeholders": {
"query": {
"content": "$QUERY$",
"example": "QUERY"
}
}
"message": "Nessun risultato per \"{{QUERY}}\"."
},
"search_no_match_hint": {
"message": "Nessun risultato per \"$QUERY$\". Prova con parole chiave diverse.",
"placeholders": {
"query": {
"content": "$QUERY$",
"example": "QUERY"
}
}
"message": "Nessun risultato per \"{{QUERY}}\". Prova con parole chiave diverse."
},
"search_no_modules": {
"message": "Nessun modulo o compito trovato..."
@ -1667,13 +1443,7 @@
"message": "Nessun modulo o consegna trovato. Riapri la ricerca più tardi se i tuoi corsi sono ancora in caricamento."
},
"search_no_results": {
"message": "Nessun risultato per \"$QUERY$\".",
"placeholders": {
"query": {
"content": "$QUERY$",
"example": "QUERY"
}
}
"message": "Nessun risultato per \"{{QUERY}}\"."
},
"search_open": {
"message": "apri"
@ -1718,13 +1488,7 @@
"message": "Sezione"
},
"selected_count": {
"message": "$COUNT$ selezionati",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "{{COUNT}} selezionati"
},
"show": {
"message": "Mostra"
@ -1769,13 +1533,7 @@
"message": "vuota"
},
"storage_items": {
"message": " ($COUNT$ elementi)",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": " ({{COUNT}} elementi)"
},
"storage_limit_error": {
"message": "I dati che stai inserendo superano il limite di archiviazione, quindi non verranno salvati. Prova a usare link più brevi e assicurati di premere \"Copia indirizzo immagine\" e non \"Copia immagine\" per i link."
@ -1862,13 +1620,7 @@
"message": "Assicurati che il tuo tema rispetti queste linee guida:"
},
"theme_number": {
"message": "Tema $NUM$",
"placeholders": {
"num": {
"content": "$NUM$",
"example": "NUM"
}
}
"message": "Tema {{NUM}}"
},
"theme_optin_reset": {
"message": "Adesione al browser dei temi ripristinata"
@ -1973,21 +1725,7 @@
"message": "Barra"
},
"todo_date_format": {
"message": "$DATE$ alle $TIME$ ($RELATIVE$)",
"placeholders": {
"relative": {
"content": "$RELATIVE$",
"example": "RELATIVE"
},
"time": {
"content": "$TIME$",
"example": "TIME"
},
"date": {
"content": "$DATE$",
"example": "DATE"
}
}
"message": "{{DATE}} alle {{TIME}} ({{RELATIVE}})"
},
"todo_delete": {
"message": "Elimina"
@ -2125,13 +1863,7 @@
"message": "Mostra di più"
},
"view_more_count": {
"message": "Mostra di più ($COUNT$)",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "Mostra di più ({{COUNT}})"
},
"view_on_github": {
"message": "Visualizza su GitHub"

View File

@ -21,26 +21,10 @@
"message": "いいね数を常に表示"
},
"assignment_avg": {
"message": "— $COUNT$ 件の課題の平均 $AVG$%:",
"placeholders": {
"avg": {
"content": "$AVG$",
"example": "AVG"
},
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "— {{COUNT}} 件の課題の平均 {{AVG}}%:"
},
"assignment_due_in": {
"message": "課題の期限まで $TIME$",
"placeholders": {
"time": {
"content": "$TIME$",
"example": "TIME"
}
}
"message": "課題の期限まで {{TIME}}"
},
"auto": {
"message": "自動"
@ -259,17 +243,7 @@
"message": "完了"
},
"completed_total": {
"message": "$DONE$/$TOTAL$ 完了",
"placeholders": {
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"done": {
"content": "$DONE$",
"example": "DONE"
}
}
"message": "{{DONE}}/{{TOTAL}} 完了"
},
"condensed_cards": {
"message": "凝縮カード"
@ -455,13 +429,7 @@
"message": "期限"
},
"due_days": {
"message": "期限 <strong>$COUNT$日</strong>",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "期限 <strong>{{COUNT}}日</strong>"
},
"due_later": {
"message": "期限 <strong>後日</strong>"
@ -479,13 +447,7 @@
"message": "期限 <strong>明日</strong>"
},
"due_weeks": {
"message": "期限 <strong>$COUNT$週間</strong>",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "期限 <strong>{{COUNT}}週間</strong>"
},
"edit_custom_task": {
"message": "このカスタムタスクを編集"
@ -593,13 +555,7 @@
"message": "課題"
},
"final_avg": {
"message": "— 平均 $AVG$% ...",
"placeholders": {
"avg": {
"content": "$AVG$",
"example": "AVG"
}
}
"message": "— 平均 {{AVG}}% ..."
},
"final_waiting": {
"message": "成績データを待っています…"
@ -617,17 +573,7 @@
"message": "Fixer はこれらのページで自動的に実行されます:"
},
"fix_took": {
"message": "修正に $TIME$ms かかりました (評価: $RATING$)",
"placeholders": {
"time": {
"content": "$TIME$",
"example": "TIME"
},
"rating": {
"content": "$RATING$",
"example": "RATING"
}
}
"message": "修正に {{TIME}}ms かかりました (評価: {{RATING}})"
},
"flexible_grid": {
"message": "フレキシブルグリッド"
@ -660,25 +606,13 @@
"message": "Y軸に合わせる"
},
"ga_heatmap_assignments": {
"message": "$COUNT$件の課題:",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "{{COUNT}}件の課題:"
},
"ga_heatmap_avg": {
"message": "平均"
},
"ga_heatmap_undated": {
"message": "期限のない評価済み課題$COUNT$件は表示されていません。",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "期限のない評価済み課題{{COUNT}}件は表示されていません。"
},
"ga_line_title": {
"message": "総合評価の推移"
@ -732,30 +666,10 @@
"message": "未評価"
},
"ga_sub_secured": {
"message": "期末試験で0点でも<b>$ZERO$%</b>となり、目標の<b>$TARGET$%</b>を上回ります。",
"placeholders": {
"target": {
"content": "$TARGET$",
"example": "TARGET"
},
"zero": {
"content": "$ZERO$",
"example": "ZERO"
}
}
"message": "期末試験で0点でも<b>{{ZERO}}%</b>となり、目標の<b>{{TARGET}}%</b>を上回ります。"
},
"ga_sub_unreachable": {
"message": "期末試験で満点でも<b>$PERFECT$%</b>にしかならず、目標の<b>$TARGET$%</b>を下回ります。",
"placeholders": {
"perfect": {
"content": "$PERFECT$",
"example": "PERFECT"
},
"target": {
"content": "$TARGET$",
"example": "TARGET"
}
}
"message": "期末試験で満点でも<b>{{PERFECT}}%</b>にしかならず、目標の<b>{{TARGET}}%</b>を下回ります。"
},
"ga_tab_calc": {
"message": "期末計算"
@ -788,25 +702,13 @@
"message": "Imagine-Ifの得点(分子)。空欄 = 集計しない"
},
"ga_tooltip_assignments": {
"message": "$COUNT$件の課題",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "{{COUNT}}件の課題"
},
"ga_you_got_this": {
"message": "いけますよ!"
},
"ga_you_need": {
"message": "期末試験で$PCT$%以上必要です",
"placeholders": {
"pct": {
"content": "$PCT$",
"example": "PCT"
}
}
"message": "期末試験で{{PCT}}%以上必要です"
},
"get_active_cards": {
"message": "ダッシュボードからアクティブなカードを取得"
@ -932,13 +834,7 @@
"message": "成績を分析するためのツールを追加します。"
},
"grade_analytics_failed": {
"message": "成績分析の読み込みに失敗しました: $ERROR$",
"placeholders": {
"error": {
"content": "$ERROR$",
"example": "ERROR"
}
}
"message": "成績分析の読み込みに失敗しました: {{ERROR}}"
},
"grade_analytics_info_label": {
"message": "成績分析の情報"
@ -968,29 +864,7 @@
"message": " (GPA計算を含む)"
},
"grid_warning": {
"message": "グリッドには$TOTAL$枚のカード$TOTAL_S$が入りますが、$ACTIVE$枚のカード$ACTIVE_S$$GPA_NOTE$があります - 一部のカードが切れる可能性があります。",
"placeholders": {
"gpa_note": {
"content": "$GPA_NOTE$",
"example": "GPA_NOTE"
},
"active_s": {
"content": "$ACTIVE_S$",
"example": "ACTIVE_S"
},
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"active": {
"content": "$ACTIVE$",
"example": "ACTIVE"
},
"total_s": {
"content": "$TOTAL_S$",
"example": "TOTAL_S"
}
}
"message": "グリッドには{{TOTAL}}枚のカード{{TOTAL_S}}が入りますが、{{ACTIVE}}枚のカード{{ACTIVE_S}}{{GPA_NOTE}}があります - 一部のカードが切れる可能性があります。"
},
"group_graded": {
"message": "評価済み"
@ -1149,34 +1023,16 @@
"message": "NASAの天文写真"
},
"nasa_credit": {
"message": "クレジット: $CREDIT$",
"placeholders": {
"credit": {
"content": "$CREDIT$",
"example": "CREDIT"
}
}
"message": "クレジット: {{CREDIT}}"
},
"nasa_date": {
"message": "日付: $DATE$",
"placeholders": {
"date": {
"content": "$DATE$",
"example": "DATE"
}
}
"message": "日付: {{DATE}}"
},
"need_refresh": {
"message": "変更を反映するにはページを更新する必要がある場合があります。"
},
"new_canvas_desc": {
"message": "Canvas Refinedが$HOST$でCanvasページを検出しました。canvasリストに追加しますか?",
"placeholders": {
"host": {
"content": "$HOST$",
"example": "HOST"
}
}
"message": "Canvas Refinedが{{HOST}}でCanvasページを検出しました。canvasリストに追加しますか?"
},
"new_canvas_detected": {
"message": "新しいCanvasを検出"
@ -1287,13 +1143,7 @@
"message": "右上のパズルアイコンをクリックします"
},
"options_contact": {
"message": "問題や提案があれば $EMAIL$ までご連絡ください。フィードバックをお待ちしています!",
"placeholders": {
"email": {
"content": "$EMAIL$",
"example": "EMAIL"
}
}
"message": "問題や提案があれば {{EMAIL}} までご連絡ください。フィードバックをお待ちしています!"
},
"options_how_to_access": {
"message": "後でこのメニューを開く方法:"
@ -1383,13 +1233,7 @@
"message": "スイカ"
},
"percent_done": {
"message": "$PERCENT$%",
"placeholders": {
"percent": {
"content": "$PERCENT$",
"example": "PERCENT"
}
}
"message": "{{PERCENT}}%"
},
"personal_task": {
"message": "個人タスク"
@ -1446,51 +1290,13 @@
"message": "プライバシー"
},
"progress_done": {
"message": "$DONE$/$TOTAL$ 完了",
"placeholders": {
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"done": {
"content": "$DONE$",
"example": "DONE"
}
}
"message": "{{DONE}}/{{TOTAL}} 完了"
},
"progress_overall": {
"message": "$PCT$% ($DONE$/$TOTAL$)",
"placeholders": {
"pct": {
"content": "$PCT$",
"example": "PCT"
},
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"done": {
"content": "$DONE$",
"example": "DONE"
}
}
"message": "{{PCT}}% ({{DONE}}/{{TOTAL}})"
},
"progress_pct": {
"message": "$PCT$% ($DONE$/$TOTAL$)",
"placeholders": {
"pct": {
"content": "$PCT$",
"example": "PCT"
},
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"done": {
"content": "$DONE$",
"example": "DONE"
}
}
"message": "{{PCT}}% ({{DONE}}/{{TOTAL}})"
},
"quiz_dont_show": {
"message": "今後表示しない"
@ -1538,25 +1344,13 @@
"message": "成績データを読み込み中…"
},
"relative_ago": {
"message": "$TIME$前",
"placeholders": {
"time": {
"content": "$TIME$",
"example": "TIME"
}
}
"message": "{{TIME}}前"
},
"relative_due_dates": {
"message": "相対的な期日"
},
"relative_in": {
"message": "$TIME$後",
"placeholders": {
"time": {
"content": "$TIME$",
"example": "TIME"
}
}
"message": "{{TIME}}後"
},
"remlogo": {
"message": "サイドバーのロゴを削除"
@ -1631,34 +1425,16 @@
"message": "新しいタブ"
},
"search_no_course": {
"message": "「$QUERY$」に一致するコースはありません。",
"placeholders": {
"query": {
"content": "$QUERY$",
"example": "QUERY"
}
}
"message": "「{{QUERY}}」に一致するコースはありません。"
},
"search_no_courses_grades": {
"message": "成績を開けるコースが見つかりません。"
},
"search_no_match": {
"message": "「$QUERY$」の結果はありません。",
"placeholders": {
"query": {
"content": "$QUERY$",
"example": "QUERY"
}
}
"message": "「{{QUERY}}」の結果はありません。"
},
"search_no_match_hint": {
"message": "「$QUERY$」の結果はありません。別のキーワードを試してください。",
"placeholders": {
"query": {
"content": "$QUERY$",
"example": "QUERY"
}
}
"message": "「{{QUERY}}」の結果はありません。別のキーワードを試してください。"
},
"search_no_modules": {
"message": "モジュールや課題が見つかりません..."
@ -1667,13 +1443,7 @@
"message": "モジュールや課題が見つかりません。コースの読み込み中であれば、後で検索を開き直してください。"
},
"search_no_results": {
"message": "「$QUERY$」の結果はありません。",
"placeholders": {
"query": {
"content": "$QUERY$",
"example": "QUERY"
}
}
"message": "「{{QUERY}}」の結果はありません。"
},
"search_open": {
"message": "開く"
@ -1718,13 +1488,7 @@
"message": "セクション"
},
"selected_count": {
"message": "$COUNT$ 件選択中",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "{{COUNT}} 件選択中"
},
"show": {
"message": "表示"
@ -1769,13 +1533,7 @@
"message": "空"
},
"storage_items": {
"message": " ($COUNT$件)",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": " ({{COUNT}}件)"
},
"storage_limit_error": {
"message": "入力したデータがストレージの上限を超えているため保存できません。リンクを短くし、リンクには「画像をコピー」ではなく「画像アドレスをコピー」を使用してください。"
@ -1862,13 +1620,7 @@
"message": "テーマが次のガイドラインに従っていることを確認してください:"
},
"theme_number": {
"message": "テーマ $NUM$",
"placeholders": {
"num": {
"content": "$NUM$",
"example": "NUM"
}
}
"message": "テーマ {{NUM}}"
},
"theme_optin_reset": {
"message": "テーマブラウザのオプトインをリセット"
@ -1973,21 +1725,7 @@
"message": "打ち消し線"
},
"todo_date_format": {
"message": "$DATE$ $TIME$($RELATIVE$)",
"placeholders": {
"relative": {
"content": "$RELATIVE$",
"example": "RELATIVE"
},
"time": {
"content": "$TIME$",
"example": "TIME"
},
"date": {
"content": "$DATE$",
"example": "DATE"
}
}
"message": "{{DATE}} {{TIME}}({{RELATIVE}})"
},
"todo_delete": {
"message": "削除"
@ -2125,13 +1863,7 @@
"message": "もっと見る"
},
"view_more_count": {
"message": "もっと見る ($COUNT$)",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "もっと見る ({{COUNT}})"
},
"view_on_github": {
"message": "GitHubで見る"

View File

@ -21,26 +21,10 @@
"message": "Mostrar sempre o número de gostos"
},
"assignment_avg": {
"message": "— média $AVG$% em $COUNT$ trabalho(s):",
"placeholders": {
"avg": {
"content": "$AVG$",
"example": "AVG"
},
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "— média {{AVG}}% em {{COUNT}} trabalho(s):"
},
"assignment_due_in": {
"message": "Trabalho é entregue daqui a $TIME$",
"placeholders": {
"time": {
"content": "$TIME$",
"example": "TIME"
}
}
"message": "Trabalho é entregue daqui a {{TIME}}"
},
"auto": {
"message": "auto"
@ -259,17 +243,7 @@
"message": "concluído"
},
"completed_total": {
"message": "$DONE$/$TOTAL$ concluídos",
"placeholders": {
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"done": {
"content": "$DONE$",
"example": "DONE"
}
}
"message": "{{DONE}}/{{TOTAL}} concluídos"
},
"condensed_cards": {
"message": "Cartões condensados"
@ -455,13 +429,7 @@
"message": "Devido"
},
"due_days": {
"message": "Entrega <strong>em $COUNT$ dias</strong>",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "Entrega <strong>em {{COUNT}} dias</strong>"
},
"due_later": {
"message": "Entrega <strong>mais tarde</strong>"
@ -479,13 +447,7 @@
"message": "Entrega <strong>amanhã</strong>"
},
"due_weeks": {
"message": "Entrega <strong>em $COUNT$ semanas</strong>",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "Entrega <strong>em {{COUNT}} semanas</strong>"
},
"edit_custom_task": {
"message": "Editar esta tarefa personalizada"
@ -593,13 +555,7 @@
"message": "trabalhos"
},
"final_avg": {
"message": "— média $AVG$% ...",
"placeholders": {
"avg": {
"content": "$AVG$",
"example": "AVG"
}
}
"message": "— média {{AVG}}% ..."
},
"final_waiting": {
"message": "A aguardar dados das notas…"
@ -617,17 +573,7 @@
"message": "O Fixer está sendo executado automaticamente nestas páginas:"
},
"fix_took": {
"message": "A correção demorou $TIME$ms (avaliação: $RATING$)",
"placeholders": {
"time": {
"content": "$TIME$",
"example": "TIME"
},
"rating": {
"content": "$RATING$",
"example": "RATING"
}
}
"message": "A correção demorou {{TIME}}ms (avaliação: {{RATING}})"
},
"flexible_grid": {
"message": "Grelha flexível"
@ -660,25 +606,13 @@
"message": "Ajustar eixo Y"
},
"ga_heatmap_assignments": {
"message": "$COUNT$ trabalho(s):",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "{{COUNT}} trabalho(s):"
},
"ga_heatmap_avg": {
"message": "média"
},
"ga_heatmap_undated": {
"message": "$COUNT$ trabalho(s) avaliado(s) sem data de entrega não apresentado(s).",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "{{COUNT}} trabalho(s) avaliado(s) sem data de entrega não apresentado(s)."
},
"ga_line_title": {
"message": "Nota global ao longo do tempo"
@ -732,30 +666,10 @@
"message": "Não avaliados"
},
"ga_sub_secured": {
"message": "Mesmo um 0 no exame final deixa-te com <b>$ZERO$%</b>, acima do teu objetivo de <b>$TARGET$%</b>.",
"placeholders": {
"target": {
"content": "$TARGET$",
"example": "TARGET"
},
"zero": {
"content": "$ZERO$",
"example": "ZERO"
}
}
"message": "Mesmo um 0 no exame final deixa-te com <b>{{ZERO}}%</b>, acima do teu objetivo de <b>{{TARGET}}%</b>."
},
"ga_sub_unreachable": {
"message": "Mesmo um exame final perfeito só te leva a <b>$PERFECT$%</b>, abaixo do teu objetivo de <b>$TARGET$%</b>.",
"placeholders": {
"perfect": {
"content": "$PERFECT$",
"example": "PERFECT"
},
"target": {
"content": "$TARGET$",
"example": "TARGET"
}
}
"message": "Mesmo um exame final perfeito só te leva a <b>{{PERFECT}}%</b>, abaixo do teu objetivo de <b>{{TARGET}}%</b>."
},
"ga_tab_calc": {
"message": "Calculadora do exame final"
@ -788,25 +702,13 @@
"message": "Nota no Imagine-If (numerador); vazio = não contabilizado"
},
"ga_tooltip_assignments": {
"message": "$COUNT$ trabalho(s)",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "{{COUNT}} trabalho(s)"
},
"ga_you_got_this": {
"message": "Consegues!"
},
"ga_you_need": {
"message": "Precisas de ≥ $PCT$% no exame final",
"placeholders": {
"pct": {
"content": "$PCT$",
"example": "PCT"
}
}
"message": "Precisas de ≥ {{PCT}}% no exame final"
},
"get_active_cards": {
"message": "Obter cartões ativos do painel"
@ -932,13 +834,7 @@
"message": "Adiciona ferramentas para te ajudar a analisar as tuas notas."
},
"grade_analytics_failed": {
"message": "Falha ao carregar a análise de notas: $ERROR$",
"placeholders": {
"error": {
"content": "$ERROR$",
"example": "ERROR"
}
}
"message": "Falha ao carregar a análise de notas: {{ERROR}}"
},
"grade_analytics_info_label": {
"message": "Informação da análise de notas"
@ -968,29 +864,7 @@
"message": " (incluindo a calculadora de GPA)"
},
"grid_warning": {
"message": "A tua grelha comporta $TOTAL$ vaga$TOTAL_S$, mas tens $ACTIVE$ vaga$ACTIVE_S$$GPA_NOTE$ - alguns cartões podem ficar cortados.",
"placeholders": {
"gpa_note": {
"content": "$GPA_NOTE$",
"example": "GPA_NOTE"
},
"active_s": {
"content": "$ACTIVE_S$",
"example": "ACTIVE_S"
},
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"active": {
"content": "$ACTIVE$",
"example": "ACTIVE"
},
"total_s": {
"content": "$TOTAL_S$",
"example": "TOTAL_S"
}
}
"message": "A tua grelha comporta {{TOTAL}} vaga{{TOTAL_S}}, mas tens {{ACTIVE}} vaga{{ACTIVE_S}}{{GPA_NOTE}} - alguns cartões podem ficar cortados."
},
"group_graded": {
"message": "Avaliados"
@ -1149,34 +1023,16 @@
"message": "Imagem Astronómica do Dia da NASA"
},
"nasa_credit": {
"message": "Crédito: $CREDIT$",
"placeholders": {
"credit": {
"content": "$CREDIT$",
"example": "CREDIT"
}
}
"message": "Crédito: {{CREDIT}}"
},
"nasa_date": {
"message": "Data: $DATE$",
"placeholders": {
"date": {
"content": "$DATE$",
"example": "DATE"
}
}
"message": "Data: {{DATE}}"
},
"need_refresh": {
"message": "Pode ser necessário atualizar a página para veres algumas alterações."
},
"new_canvas_desc": {
"message": "O Canvas Refined detetou uma página do Canvas em $HOST$. Adicioná-la à tua lista de Canvas?",
"placeholders": {
"host": {
"content": "$HOST$",
"example": "HOST"
}
}
"message": "O Canvas Refined detetou uma página do Canvas em {{HOST}}. Adicioná-la à tua lista de Canvas?"
},
"new_canvas_detected": {
"message": "Novo Canvas detetado"
@ -1287,13 +1143,7 @@
"message": "Clica neste ícone de puzzle no canto superior direito"
},
"options_contact": {
"message": "O meu email é $EMAIL$ se tiveres problemas ou sugestões — todo o feedback é bem-vindo!",
"placeholders": {
"email": {
"content": "$EMAIL$",
"example": "EMAIL"
}
}
"message": "O meu email é {{EMAIL}} se tiveres problemas ou sugestões — todo o feedback é bem-vindo!"
},
"options_how_to_access": {
"message": "Como aceder a este menu mais tarde:"
@ -1383,13 +1233,7 @@
"message": "Melancia"
},
"percent_done": {
"message": "$PERCENT$%",
"placeholders": {
"percent": {
"content": "$PERCENT$",
"example": "PERCENT"
}
}
"message": "{{PERCENT}}%"
},
"personal_task": {
"message": "Tarefa pessoal"
@ -1446,51 +1290,13 @@
"message": "Privacidade"
},
"progress_done": {
"message": "$DONE$/$TOTAL$ concluídos",
"placeholders": {
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"done": {
"content": "$DONE$",
"example": "DONE"
}
}
"message": "{{DONE}}/{{TOTAL}} concluídos"
},
"progress_overall": {
"message": "$PCT$% ($DONE$/$TOTAL$)",
"placeholders": {
"pct": {
"content": "$PCT$",
"example": "PCT"
},
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"done": {
"content": "$DONE$",
"example": "DONE"
}
}
"message": "{{PCT}}% ({{DONE}}/{{TOTAL}})"
},
"progress_pct": {
"message": "$PCT$% ($DONE$/$TOTAL$)",
"placeholders": {
"pct": {
"content": "$PCT$",
"example": "PCT"
},
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"done": {
"content": "$DONE$",
"example": "DONE"
}
}
"message": "{{PCT}}% ({{DONE}}/{{TOTAL}})"
},
"quiz_dont_show": {
"message": "Não mostrar novamente"
@ -1538,25 +1344,13 @@
"message": "A ler os dados das notas…"
},
"relative_ago": {
"message": "há $TIME$",
"placeholders": {
"time": {
"content": "$TIME$",
"example": "TIME"
}
}
"message": "há {{TIME}}"
},
"relative_due_dates": {
"message": "Datas de vencimento relativas"
},
"relative_in": {
"message": "dentro de $TIME$",
"placeholders": {
"time": {
"content": "$TIME$",
"example": "TIME"
}
}
"message": "dentro de {{TIME}}"
},
"remlogo": {
"message": "Remover logotipo da barra lateral"
@ -1631,34 +1425,16 @@
"message": "novo separador"
},
"search_no_course": {
"message": "Nenhuma disciplina corresponde a \"$QUERY$\".",
"placeholders": {
"query": {
"content": "$QUERY$",
"example": "QUERY"
}
}
"message": "Nenhuma disciplina corresponde a \"{{QUERY}}\"."
},
"search_no_courses_grades": {
"message": "Não foram encontrados cursos para abrir as notas."
},
"search_no_match": {
"message": "Sem resultados para \"$QUERY$\".",
"placeholders": {
"query": {
"content": "$QUERY$",
"example": "QUERY"
}
}
"message": "Sem resultados para \"{{QUERY}}\"."
},
"search_no_match_hint": {
"message": "Sem resultados para \"$QUERY$\". Tenta outras palavras-chave.",
"placeholders": {
"query": {
"content": "$QUERY$",
"example": "QUERY"
}
}
"message": "Sem resultados para \"{{QUERY}}\". Tenta outras palavras-chave."
},
"search_no_modules": {
"message": "Não foram encontrados módulos ou trabalhos..."
@ -1667,13 +1443,7 @@
"message": "Não foram encontrados módulos ou trabalhos. Volta a abrir a pesquisa mais tarde se os teus cursos ainda estiverem a carregar."
},
"search_no_results": {
"message": "Sem resultados para \"$QUERY$\".",
"placeholders": {
"query": {
"content": "$QUERY$",
"example": "QUERY"
}
}
"message": "Sem resultados para \"{{QUERY}}\"."
},
"search_open": {
"message": "abrir"
@ -1718,13 +1488,7 @@
"message": "Secção"
},
"selected_count": {
"message": "$COUNT$ selecionados",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "{{COUNT}} selecionados"
},
"show": {
"message": "Mostrar"
@ -1769,13 +1533,7 @@
"message": "vazio"
},
"storage_items": {
"message": " ($COUNT$ itens)",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": " ({{COUNT}} itens)"
},
"storage_limit_error": {
"message": "Os dados que estás a introduzir excedem o limite de armazenamento, por isso não serão guardados. Tenta usar ligações mais curtas e certifica-te de que pressionas \"copiar endereço da imagem\" e não \"copiar imagem\"."
@ -1862,13 +1620,7 @@
"message": "Certifica-te de que o teu tema segue estas diretrizes:"
},
"theme_number": {
"message": "Tema $NUM$",
"placeholders": {
"num": {
"content": "$NUM$",
"example": "NUM"
}
}
"message": "Tema {{NUM}}"
},
"theme_optin_reset": {
"message": "Adesão ao navegador de temas reposta"
@ -1973,21 +1725,7 @@
"message": "Riscar"
},
"todo_date_format": {
"message": "$DATE$ às $TIME$ ($RELATIVE$)",
"placeholders": {
"relative": {
"content": "$RELATIVE$",
"example": "RELATIVE"
},
"time": {
"content": "$TIME$",
"example": "TIME"
},
"date": {
"content": "$DATE$",
"example": "DATE"
}
}
"message": "{{DATE}} às {{TIME}} ({{RELATIVE}})"
},
"todo_delete": {
"message": "Eliminar"
@ -2125,13 +1863,7 @@
"message": "Ver mais"
},
"view_more_count": {
"message": "Ver mais ($COUNT$)",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "Ver mais ({{COUNT}})"
},
"view_on_github": {
"message": "Ver no GitHub"

View File

@ -21,26 +21,10 @@
"message": "Всегда показывать число лайков"
},
"assignment_avg": {
"message": "— в среднем $AVG$% по $COUNT$ заданиям:",
"placeholders": {
"avg": {
"content": "$AVG$",
"example": "AVG"
},
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "— в среднем {{AVG}}% по {{COUNT}} заданиям:"
},
"assignment_due_in": {
"message": "Задание нужно сдать через $TIME$",
"placeholders": {
"time": {
"content": "$TIME$",
"example": "TIME"
}
}
"message": "Задание нужно сдать через {{TIME}}"
},
"auto": {
"message": "авто"
@ -259,17 +243,7 @@
"message": "готово"
},
"completed_total": {
"message": "$DONE$/$TOTAL$ выполнено",
"placeholders": {
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"done": {
"content": "$DONE$",
"example": "DONE"
}
}
"message": "{{DONE}}/{{TOTAL}} выполнено"
},
"condensed_cards": {
"message": "Сжатые карты"
@ -455,13 +429,7 @@
"message": "Должный"
},
"due_days": {
"message": "Срок через <strong>$COUNT$ дн.</strong>",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "Срок через <strong>{{COUNT}} дн.</strong>"
},
"due_later": {
"message": "Срок <strong>позже</strong>"
@ -479,13 +447,7 @@
"message": "Срок <strong>завтра</strong>"
},
"due_weeks": {
"message": "Срок через <strong>$COUNT$ нед.</strong>",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "Срок через <strong>{{COUNT}} нед.</strong>"
},
"edit_custom_task": {
"message": "Изменить эту задачу"
@ -593,13 +555,7 @@
"message": "заданий"
},
"final_avg": {
"message": "— в среднем $AVG$% ...",
"placeholders": {
"avg": {
"content": "$AVG$",
"example": "AVG"
}
}
"message": "— в среднем {{AVG}}% ..."
},
"final_waiting": {
"message": "Ожидание данных об оценках…"
@ -617,17 +573,7 @@
"message": "Fixer автоматически запускается на этих страницах:"
},
"fix_took": {
"message": "Исправление заняло $TIME$ мс (оценка: $RATING$)",
"placeholders": {
"time": {
"content": "$TIME$",
"example": "TIME"
},
"rating": {
"content": "$RATING$",
"example": "RATING"
}
}
"message": "Исправление заняло {{TIME}} мс (оценка: {{RATING}})"
},
"flexible_grid": {
"message": "Гибкая сетка"
@ -660,25 +606,13 @@
"message": "По размеру оси Y"
},
"ga_heatmap_assignments": {
"message": "$COUNT$ заданий:",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "{{COUNT}} заданий:"
},
"ga_heatmap_avg": {
"message": "сред."
},
"ga_heatmap_undated": {
"message": "$COUNT$ оценённых заданий без срока не показано.",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "{{COUNT}} оценённых заданий без срока не показано."
},
"ga_line_title": {
"message": "Итоговая оценка во времени"
@ -732,30 +666,10 @@
"message": "Не оценено"
},
"ga_sub_secured": {
"message": "Даже 0 за экзамен оставит вас на <b>$ZERO$%</b>, что выше вашей цели <b>$TARGET$%</b>.",
"placeholders": {
"target": {
"content": "$TARGET$",
"example": "TARGET"
},
"zero": {
"content": "$ZERO$",
"example": "ZERO"
}
}
"message": "Даже 0 за экзамен оставит вас на <b>{{ZERO}}%</b>, что выше вашей цели <b>{{TARGET}}%</b>."
},
"ga_sub_unreachable": {
"message": "Даже идеальный экзамен даст только <b>$PERFECT$%</b>, что ниже вашей цели <b>$TARGET$%</b>.",
"placeholders": {
"perfect": {
"content": "$PERFECT$",
"example": "PERFECT"
},
"target": {
"content": "$TARGET$",
"example": "TARGET"
}
}
"message": "Даже идеальный экзамен даст только <b>{{PERFECT}}%</b>, что ниже вашей цели <b>{{TARGET}}%</b>."
},
"ga_tab_calc": {
"message": "Калькулятор экзамена"
@ -788,25 +702,13 @@
"message": "Баллы Imagine-If (числитель); пусто = не учитывается"
},
"ga_tooltip_assignments": {
"message": "$COUNT$ заданий",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "{{COUNT}} заданий"
},
"ga_you_got_this": {
"message": "У вас всё получится!"
},
"ga_you_need": {
"message": "Вам нужно ≥ $PCT$% за экзамен",
"placeholders": {
"pct": {
"content": "$PCT$",
"example": "PCT"
}
}
"message": "Вам нужно ≥ {{PCT}}% за экзамен"
},
"get_active_cards": {
"message": "Получить активные карточки с панели"
@ -932,13 +834,7 @@
"message": "Добавляет инструменты для анализа ваших оценок."
},
"grade_analytics_failed": {
"message": "Не удалось загрузить анализ оценок: $ERROR$",
"placeholders": {
"error": {
"content": "$ERROR$",
"example": "ERROR"
}
}
"message": "Не удалось загрузить анализ оценок: {{ERROR}}"
},
"grade_analytics_info_label": {
"message": "Сведения об анализе оценок"
@ -968,29 +864,7 @@
"message": " (включая калькулятор GPA)"
},
"grid_warning": {
"message": "В вашей сетке помещается $TOTAL$ карточек$TOTAL_S$, но у вас $ACTIVE$ карточка$ACTIVE_S$$GPA_NOTE$ — некоторые карточки могут обрезаться.",
"placeholders": {
"gpa_note": {
"content": "$GPA_NOTE$",
"example": "GPA_NOTE"
},
"active_s": {
"content": "$ACTIVE_S$",
"example": "ACTIVE_S"
},
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"active": {
"content": "$ACTIVE$",
"example": "ACTIVE"
},
"total_s": {
"content": "$TOTAL_S$",
"example": "TOTAL_S"
}
}
"message": "В вашей сетке помещается {{TOTAL}} карточек{{TOTAL_S}}, но у вас {{ACTIVE}} карточка{{ACTIVE_S}}{{GPA_NOTE}} — некоторые карточки могут обрезаться."
},
"group_graded": {
"message": "С оценкой"
@ -1149,34 +1023,16 @@
"message": "Астрономическое изображение дня NASA"
},
"nasa_credit": {
"message": "Автор: $CREDIT$",
"placeholders": {
"credit": {
"content": "$CREDIT$",
"example": "CREDIT"
}
}
"message": "Автор: {{CREDIT}}"
},
"nasa_date": {
"message": "Дата: $DATE$",
"placeholders": {
"date": {
"content": "$DATE$",
"example": "DATE"
}
}
"message": "Дата: {{DATE}}"
},
"need_refresh": {
"message": "Возможно, потребуется обновить страницу, чтобы увидеть некоторые изменения."
},
"new_canvas_desc": {
"message": "Canvas Refined обнаружил страницу Canvas по адресу $HOST$. Добавить её в ваш список Canvas?",
"placeholders": {
"host": {
"content": "$HOST$",
"example": "HOST"
}
}
"message": "Canvas Refined обнаружил страницу Canvas по адресу {{HOST}}. Добавить её в ваш список Canvas?"
},
"new_canvas_detected": {
"message": "Обнаружен новый Canvas"
@ -1287,13 +1143,7 @@
"message": "Нажмите на значок пазла в правом верхнем углу"
},
"options_contact": {
"message": "Моя почта — $EMAIL$. Если у вас есть проблемы или предложения, буду рад обратной связи!",
"placeholders": {
"email": {
"content": "$EMAIL$",
"example": "EMAIL"
}
}
"message": "Моя почта — {{EMAIL}}. Если у вас есть проблемы или предложения, буду рад обратной связи!"
},
"options_how_to_access": {
"message": "Как открыть это меню позже:"
@ -1383,13 +1233,7 @@
"message": "Арбуз"
},
"percent_done": {
"message": "$PERCENT$%",
"placeholders": {
"percent": {
"content": "$PERCENT$",
"example": "PERCENT"
}
}
"message": "{{PERCENT}}%"
},
"personal_task": {
"message": "Личная задача"
@ -1446,51 +1290,13 @@
"message": "Конфиденциальность"
},
"progress_done": {
"message": "$DONE$/$TOTAL$ выполнено",
"placeholders": {
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"done": {
"content": "$DONE$",
"example": "DONE"
}
}
"message": "{{DONE}}/{{TOTAL}} выполнено"
},
"progress_overall": {
"message": "$PCT$% ($DONE$/$TOTAL$)",
"placeholders": {
"pct": {
"content": "$PCT$",
"example": "PCT"
},
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"done": {
"content": "$DONE$",
"example": "DONE"
}
}
"message": "{{PCT}}% ({{DONE}}/{{TOTAL}})"
},
"progress_pct": {
"message": "$PCT$% ($DONE$/$TOTAL$)",
"placeholders": {
"pct": {
"content": "$PCT$",
"example": "PCT"
},
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"done": {
"content": "$DONE$",
"example": "DONE"
}
}
"message": "{{PCT}}% ({{DONE}}/{{TOTAL}})"
},
"quiz_dont_show": {
"message": "Больше не показывать"
@ -1538,25 +1344,13 @@
"message": "Чтение данных об оценках…"
},
"relative_ago": {
"message": "$TIME$ назад",
"placeholders": {
"time": {
"content": "$TIME$",
"example": "TIME"
}
}
"message": "{{TIME}} назад"
},
"relative_due_dates": {
"message": "Относительные сроки выполнения"
},
"relative_in": {
"message": "через $TIME$",
"placeholders": {
"time": {
"content": "$TIME$",
"example": "TIME"
}
}
"message": "через {{TIME}}"
},
"remlogo": {
"message": "Удалить логотип боковой панели"
@ -1631,34 +1425,16 @@
"message": "новая вкладка"
},
"search_no_course": {
"message": "Нет курса, соответствующего \"$QUERY$\".",
"placeholders": {
"query": {
"content": "$QUERY$",
"example": "QUERY"
}
}
"message": "Нет курса, соответствующего \"{{QUERY}}\"."
},
"search_no_courses_grades": {
"message": "Курсы для открытия оценок не найдены."
},
"search_no_match": {
"message": "Нет результатов по \"$QUERY$\".",
"placeholders": {
"query": {
"content": "$QUERY$",
"example": "QUERY"
}
}
"message": "Нет результатов по \"{{QUERY}}\"."
},
"search_no_match_hint": {
"message": "Нет результатов по \"$QUERY$\". Попробуйте другие ключевые слова.",
"placeholders": {
"query": {
"content": "$QUERY$",
"example": "QUERY"
}
}
"message": "Нет результатов по \"{{QUERY}}\". Попробуйте другие ключевые слова."
},
"search_no_modules": {
"message": "Модули или задания не найдены..."
@ -1667,13 +1443,7 @@
"message": "Модули или задания не найдены. Откройте поиск позже, если ваши курсы ещё загружаются."
},
"search_no_results": {
"message": "Нет результатов по \"$QUERY$\".",
"placeholders": {
"query": {
"content": "$QUERY$",
"example": "QUERY"
}
}
"message": "Нет результатов по \"{{QUERY}}\"."
},
"search_open": {
"message": "открыть"
@ -1718,13 +1488,7 @@
"message": "Раздел"
},
"selected_count": {
"message": "Выбрано: $COUNT$",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "Выбрано: {{COUNT}}"
},
"show": {
"message": "Показать"
@ -1769,13 +1533,7 @@
"message": "пусто"
},
"storage_items": {
"message": " ($COUNT$ элем.)",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": " ({{COUNT}} элем.)"
},
"storage_limit_error": {
"message": "Вводимые данные превышают лимит хранилища, поэтому они не сохранятся. Используйте более короткие ссылки и обязательно нажимайте «копировать адрес изображения», а не «копировать изображение»."
@ -1862,13 +1620,7 @@
"message": "Убедитесь, что ваша тема соответствует этим правилам:"
},
"theme_number": {
"message": "Тема $NUM$",
"placeholders": {
"num": {
"content": "$NUM$",
"example": "NUM"
}
}
"message": "Тема {{NUM}}"
},
"theme_optin_reset": {
"message": "Сброс согласия браузера тем"
@ -1973,21 +1725,7 @@
"message": "Вычеркнуть"
},
"todo_date_format": {
"message": "$DATE$ в $TIME$ ($RELATIVE$)",
"placeholders": {
"relative": {
"content": "$RELATIVE$",
"example": "RELATIVE"
},
"time": {
"content": "$TIME$",
"example": "TIME"
},
"date": {
"content": "$DATE$",
"example": "DATE"
}
}
"message": "{{DATE}} в {{TIME}} ({{RELATIVE}})"
},
"todo_delete": {
"message": "Удалить"
@ -2125,13 +1863,7 @@
"message": "Показать больше"
},
"view_more_count": {
"message": "Показать больше ($COUNT$)",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "Показать больше ({{COUNT}})"
},
"view_on_github": {
"message": "Посмотреть на GitHub"

View File

@ -21,26 +21,10 @@
"message": "Visa alltid antal gillningar"
},
"assignment_avg": {
"message": "— snitt $AVG$% över $COUNT$ uppgift(er):",
"placeholders": {
"avg": {
"content": "$AVG$",
"example": "AVG"
},
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "— snitt {{AVG}}% över {{COUNT}} uppgift(er):"
},
"assignment_due_in": {
"message": "Uppgift förfaller om $TIME$",
"placeholders": {
"time": {
"content": "$TIME$",
"example": "TIME"
}
}
"message": "Uppgift förfaller om {{TIME}}"
},
"auto": {
"message": "auto"
@ -259,17 +243,7 @@
"message": "klar"
},
"completed_total": {
"message": "$DONE$/$TOTAL$ klara",
"placeholders": {
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"done": {
"content": "$DONE$",
"example": "DONE"
}
}
"message": "{{DONE}}/{{TOTAL}} klara"
},
"condensed_cards": {
"message": "Kondenserade kort"
@ -455,13 +429,7 @@
"message": "Förfaller"
},
"due_days": {
"message": "Förfaller om <strong>$COUNT$ dagar</strong>",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "Förfaller om <strong>{{COUNT}} dagar</strong>"
},
"due_later": {
"message": "Förfaller <strong>senare</strong>"
@ -479,13 +447,7 @@
"message": "Förfaller <strong>imorgon</strong>"
},
"due_weeks": {
"message": "Förfaller om <strong>$COUNT$ veckor</strong>",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "Förfaller om <strong>{{COUNT}} veckor</strong>"
},
"edit_custom_task": {
"message": "Redigera denna anpassade uppgift"
@ -593,13 +555,7 @@
"message": "uppgifter"
},
"final_avg": {
"message": "— snitt $AVG$% ...",
"placeholders": {
"avg": {
"content": "$AVG$",
"example": "AVG"
}
}
"message": "— snitt {{AVG}}% ..."
},
"final_waiting": {
"message": "Väntar på betygsdata…"
@ -617,17 +573,7 @@
"message": "Fixern körs automatiskt på dessa sidor:"
},
"fix_took": {
"message": "Åtgärden tog $TIME$ ms (betyg: $RATING$)",
"placeholders": {
"time": {
"content": "$TIME$",
"example": "TIME"
},
"rating": {
"content": "$RATING$",
"example": "RATING"
}
}
"message": "Åtgärden tog {{TIME}} ms (betyg: {{RATING}})"
},
"flexible_grid": {
"message": "Flexibelt rutnät"
@ -660,25 +606,13 @@
"message": "Anpassa Y-axeln"
},
"ga_heatmap_assignments": {
"message": "$COUNT$ uppgift(er):",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "{{COUNT}} uppgift(er):"
},
"ga_heatmap_avg": {
"message": "snitt"
},
"ga_heatmap_undated": {
"message": "$COUNT$ betygsatt(a) uppgift(er) utan förfallodatum visas inte.",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "{{COUNT}} betygsatt(a) uppgift(er) utan förfallodatum visas inte."
},
"ga_line_title": {
"message": "Totalt betyg över tid"
@ -732,30 +666,10 @@
"message": "Ej betygsatta"
},
"ga_sub_secured": {
"message": "Även en 0 på tentan ger dig <b>$ZERO$%</b>, vilket är över ditt mål på <b>$TARGET$%</b>.",
"placeholders": {
"target": {
"content": "$TARGET$",
"example": "TARGET"
},
"zero": {
"content": "$ZERO$",
"example": "ZERO"
}
}
"message": "Även en 0 på tentan ger dig <b>{{ZERO}}%</b>, vilket är över ditt mål på <b>{{TARGET}}%</b>."
},
"ga_sub_unreachable": {
"message": "Även en perfekt tenta ger dig bara <b>$PERFECT$%</b>, vilket är under ditt mål på <b>$TARGET$%</b>.",
"placeholders": {
"perfect": {
"content": "$PERFECT$",
"example": "PERFECT"
},
"target": {
"content": "$TARGET$",
"example": "TARGET"
}
}
"message": "Även en perfekt tenta ger dig bara <b>{{PERFECT}}%</b>, vilket är under ditt mål på <b>{{TARGET}}%</b>."
},
"ga_tab_calc": {
"message": "Tentakalkylator"
@ -788,25 +702,13 @@
"message": "Imagine-If-poäng (täljare); tomt = räknas inte"
},
"ga_tooltip_assignments": {
"message": "$COUNT$ uppgift(er)",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "{{COUNT}} uppgift(er)"
},
"ga_you_got_this": {
"message": "Det här klarar du!"
},
"ga_you_need": {
"message": "Du behöver ≥ $PCT$% på tentan",
"placeholders": {
"pct": {
"content": "$PCT$",
"example": "PCT"
}
}
"message": "Du behöver ≥ {{PCT}}% på tentan"
},
"get_active_cards": {
"message": "Hämta aktiva kort från översikten"
@ -932,13 +834,7 @@
"message": "Lägger till verktyg som hjälper dig analysera dina betyg."
},
"grade_analytics_failed": {
"message": "Betygsanalysen kunde inte laddas: $ERROR$",
"placeholders": {
"error": {
"content": "$ERROR$",
"example": "ERROR"
}
}
"message": "Betygsanalysen kunde inte laddas: {{ERROR}}"
},
"grade_analytics_info_label": {
"message": "Information om betygsanalys"
@ -968,29 +864,7 @@
"message": " (inklusive GPA-kalkylatorn)"
},
"grid_warning": {
"message": "Ditt rutnät har plats för $TOTAL$ kort$TOTAL_S$ men du har $ACTIVE$ kort$ACTIVE_S$$GPA_NOTE$ – vissa kort kan klippas av.",
"placeholders": {
"gpa_note": {
"content": "$GPA_NOTE$",
"example": "GPA_NOTE"
},
"active_s": {
"content": "$ACTIVE_S$",
"example": "ACTIVE_S"
},
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"active": {
"content": "$ACTIVE$",
"example": "ACTIVE"
},
"total_s": {
"content": "$TOTAL_S$",
"example": "TOTAL_S"
}
}
"message": "Ditt rutnät har plats för {{TOTAL}} kort{{TOTAL_S}} men du har {{ACTIVE}} kort{{ACTIVE_S}}{{GPA_NOTE}} – vissa kort kan klippas av."
},
"group_graded": {
"message": "Betygsatta"
@ -1149,34 +1023,16 @@
"message": "NASA:s astronomiska bild för dagen"
},
"nasa_credit": {
"message": "Kredit: $CREDIT$",
"placeholders": {
"credit": {
"content": "$CREDIT$",
"example": "CREDIT"
}
}
"message": "Kredit: {{CREDIT}}"
},
"nasa_date": {
"message": "Datum: $DATE$",
"placeholders": {
"date": {
"content": "$DATE$",
"example": "DATE"
}
}
"message": "Datum: {{DATE}}"
},
"need_refresh": {
"message": "Du kan behöva uppdatera sidan för att se vissa ändringar."
},
"new_canvas_desc": {
"message": "Canvas Refined hittade en Canvas-sida på $HOST$. Lägg till den i din Canvas-lista?",
"placeholders": {
"host": {
"content": "$HOST$",
"example": "HOST"
}
}
"message": "Canvas Refined hittade en Canvas-sida på {{HOST}}. Lägg till den i din Canvas-lista?"
},
"new_canvas_detected": {
"message": "Ny Canvas hittad"
@ -1287,13 +1143,7 @@
"message": "Klicka på pusselikonen uppe till höger"
},
"options_contact": {
"message": "Min e-post är $EMAIL$ om du har problem eller förslag – all feedback uppskattas!",
"placeholders": {
"email": {
"content": "$EMAIL$",
"example": "EMAIL"
}
}
"message": "Min e-post är {{EMAIL}} om du har problem eller förslag – all feedback uppskattas!"
},
"options_how_to_access": {
"message": "Så här öppnar du menyn senare:"
@ -1383,13 +1233,7 @@
"message": "Vattenmelon"
},
"percent_done": {
"message": "$PERCENT$%",
"placeholders": {
"percent": {
"content": "$PERCENT$",
"example": "PERCENT"
}
}
"message": "{{PERCENT}}%"
},
"personal_task": {
"message": "Personlig uppgift"
@ -1446,51 +1290,13 @@
"message": "Integritet"
},
"progress_done": {
"message": "$DONE$/$TOTAL$ klara",
"placeholders": {
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"done": {
"content": "$DONE$",
"example": "DONE"
}
}
"message": "{{DONE}}/{{TOTAL}} klara"
},
"progress_overall": {
"message": "$PCT$% ($DONE$/$TOTAL$)",
"placeholders": {
"pct": {
"content": "$PCT$",
"example": "PCT"
},
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"done": {
"content": "$DONE$",
"example": "DONE"
}
}
"message": "{{PCT}}% ({{DONE}}/{{TOTAL}})"
},
"progress_pct": {
"message": "$PCT$% ($DONE$/$TOTAL$)",
"placeholders": {
"pct": {
"content": "$PCT$",
"example": "PCT"
},
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"done": {
"content": "$DONE$",
"example": "DONE"
}
}
"message": "{{PCT}}% ({{DONE}}/{{TOTAL}})"
},
"quiz_dont_show": {
"message": "Visa inte igen"
@ -1538,25 +1344,13 @@
"message": "Läser betygsdata…"
},
"relative_ago": {
"message": "$TIME$ sedan",
"placeholders": {
"time": {
"content": "$TIME$",
"example": "TIME"
}
}
"message": "{{TIME}} sedan"
},
"relative_due_dates": {
"message": "Relativa förfallodatum"
},
"relative_in": {
"message": "om $TIME$",
"placeholders": {
"time": {
"content": "$TIME$",
"example": "TIME"
}
}
"message": "om {{TIME}}"
},
"remlogo": {
"message": "Ta bort Sidebar-logotypen"
@ -1631,34 +1425,16 @@
"message": "ny flik"
},
"search_no_course": {
"message": "Ingen kurs matchar \"$QUERY$\".",
"placeholders": {
"query": {
"content": "$QUERY$",
"example": "QUERY"
}
}
"message": "Ingen kurs matchar \"{{QUERY}}\"."
},
"search_no_courses_grades": {
"message": "Inga kurser hittades att öppna betyg för."
},
"search_no_match": {
"message": "Inga resultat för \"$QUERY$\".",
"placeholders": {
"query": {
"content": "$QUERY$",
"example": "QUERY"
}
}
"message": "Inga resultat för \"{{QUERY}}\"."
},
"search_no_match_hint": {
"message": "Inga resultat för \"$QUERY$\". Prova andra sökord.",
"placeholders": {
"query": {
"content": "$QUERY$",
"example": "QUERY"
}
}
"message": "Inga resultat för \"{{QUERY}}\". Prova andra sökord."
},
"search_no_modules": {
"message": "Inga moduler eller uppgifter hittades..."
@ -1667,13 +1443,7 @@
"message": "Inga moduler eller uppgifter hittades. Öppna sökningen igen senare om kurserna fortfarande laddas."
},
"search_no_results": {
"message": "Inga resultat för \"$QUERY$\".",
"placeholders": {
"query": {
"content": "$QUERY$",
"example": "QUERY"
}
}
"message": "Inga resultat för \"{{QUERY}}\"."
},
"search_open": {
"message": "öppna"
@ -1718,13 +1488,7 @@
"message": "Avsnitt"
},
"selected_count": {
"message": "$COUNT$ valda",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "{{COUNT}} valda"
},
"show": {
"message": "Visa"
@ -1769,13 +1533,7 @@
"message": "tom"
},
"storage_items": {
"message": " ($COUNT$ objekt)",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": " ({{COUNT}} objekt)"
},
"storage_limit_error": {
"message": "Uppgifterna du anger överskrider lagringsgränsen och sparas inte. Prova kortare länkar och se till att trycka på \"kopiera bildadress\" och inte \"kopiera bild\" för länkar."
@ -1862,13 +1620,7 @@
"message": "Se till att ditt tema följer dessa riktlinjer:"
},
"theme_number": {
"message": "Tema $NUM$",
"placeholders": {
"num": {
"content": "$NUM$",
"example": "NUM"
}
}
"message": "Tema {{NUM}}"
},
"theme_optin_reset": {
"message": "Opt-in för temabläddrare återställd"
@ -1973,21 +1725,7 @@
"message": "Stryk över"
},
"todo_date_format": {
"message": "$DATE$ kl. $TIME$ ($RELATIVE$)",
"placeholders": {
"relative": {
"content": "$RELATIVE$",
"example": "RELATIVE"
},
"time": {
"content": "$TIME$",
"example": "TIME"
},
"date": {
"content": "$DATE$",
"example": "DATE"
}
}
"message": "{{DATE}} kl. {{TIME}} ({{RELATIVE}})"
},
"todo_delete": {
"message": "Ta bort"
@ -2125,13 +1863,7 @@
"message": "Visa mer"
},
"view_more_count": {
"message": "Visa mer ($COUNT$)",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "Visa mer ({{COUNT}})"
},
"view_on_github": {
"message": "Visa på GitHub"

View File

@ -21,26 +21,10 @@
"message": "始终显示点赞数"
},
"assignment_avg": {
"message": "— 平均 $AVG$%,共 $COUNT$ 项作业:",
"placeholders": {
"avg": {
"content": "$AVG$",
"example": "AVG"
},
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "— 平均 {{AVG}}%,共 {{COUNT}} 项作业:"
},
"assignment_due_in": {
"message": "作业将在 $TIME$ 后到期",
"placeholders": {
"time": {
"content": "$TIME$",
"example": "TIME"
}
}
"message": "作业将在 {{TIME}} 后到期"
},
"auto": {
"message": "自动"
@ -259,17 +243,7 @@
"message": "完成"
},
"completed_total": {
"message": "$DONE$/$TOTAL$ 已完成",
"placeholders": {
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"done": {
"content": "$DONE$",
"example": "DONE"
}
}
"message": "{{DONE}}/{{TOTAL}} 已完成"
},
"condensed_cards": {
"message": "浓缩卡"
@ -455,13 +429,7 @@
"message": "到期的"
},
"due_days": {
"message": "<strong>$COUNT$ 天后</strong>到期",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "<strong>{{COUNT}} 天后</strong>到期"
},
"due_later": {
"message": "<strong>稍后</strong>到期"
@ -479,13 +447,7 @@
"message": "<strong>明天</strong>到期"
},
"due_weeks": {
"message": "<strong>$COUNT$ 周后</strong>到期",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "<strong>{{COUNT}} 周后</strong>到期"
},
"edit_custom_task": {
"message": "编辑此自定义任务"
@ -593,13 +555,7 @@
"message": "项作业"
},
"final_avg": {
"message": "— 平均 $AVG$% ...",
"placeholders": {
"avg": {
"content": "$AVG$",
"example": "AVG"
}
}
"message": "— 平均 {{AVG}}% ..."
},
"final_waiting": {
"message": "正在等待成绩数据…"
@ -617,17 +573,7 @@
"message": "修复程序会自动在这些页面上运行:"
},
"fix_took": {
"message": "修复耗时 $TIME$ms(评分:$RATING$)",
"placeholders": {
"time": {
"content": "$TIME$",
"example": "TIME"
},
"rating": {
"content": "$RATING$",
"example": "RATING"
}
}
"message": "修复耗时 {{TIME}}ms(评分:{{RATING}})"
},
"flexible_grid": {
"message": "弹性网格"
@ -660,25 +606,13 @@
"message": "自适应 Y 轴"
},
"ga_heatmap_assignments": {
"message": "$COUNT$ 项作业:",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "{{COUNT}} 项作业:"
},
"ga_heatmap_avg": {
"message": "平均"
},
"ga_heatmap_undated": {
"message": "$COUNT$ 项有评分但无截止日期的作业未显示。",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "{{COUNT}} 项有评分但无截止日期的作业未显示。"
},
"ga_line_title": {
"message": "总评成绩变化"
@ -732,30 +666,10 @@
"message": "未评分"
},
"ga_sub_secured": {
"message": "即使期末考 0 分,你的成绩仍有 <b>$ZERO$%</b>,高于 <b>$TARGET$%</b> 的目标。",
"placeholders": {
"target": {
"content": "$TARGET$",
"example": "TARGET"
},
"zero": {
"content": "$ZERO$",
"example": "ZERO"
}
}
"message": "即使期末考 0 分,你的成绩仍有 <b>{{ZERO}}%</b>,高于 <b>{{TARGET}}%</b> 的目标。"
},
"ga_sub_unreachable": {
"message": "即使期末考满分,你的成绩也只能达到 <b>$PERFECT$%</b>,低于 <b>$TARGET$%</b> 的目标。",
"placeholders": {
"perfect": {
"content": "$PERFECT$",
"example": "PERFECT"
},
"target": {
"content": "$TARGET$",
"example": "TARGET"
}
}
"message": "即使期末考满分,你的成绩也只能达到 <b>{{PERFECT}}%</b>,低于 <b>{{TARGET}}%</b> 的目标。"
},
"ga_tab_calc": {
"message": "期末计算器"
@ -788,25 +702,13 @@
"message": "Imagine-If 得分(分子);留空 = 不计入"
},
"ga_tooltip_assignments": {
"message": "$COUNT$ 项作业",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "{{COUNT}} 项作业"
},
"ga_you_got_this": {
"message": "你能行!"
},
"ga_you_need": {
"message": "期末需要 ≥ $PCT$%",
"placeholders": {
"pct": {
"content": "$PCT$",
"example": "PCT"
}
}
"message": "期末需要 ≥ {{PCT}}%"
},
"get_active_cards": {
"message": "从仪表板获取活动卡片"
@ -932,13 +834,7 @@
"message": "添加帮助你分析成绩的工具。"
},
"grade_analytics_failed": {
"message": "成绩分析加载失败:$ERROR$",
"placeholders": {
"error": {
"content": "$ERROR$",
"example": "ERROR"
}
}
"message": "成绩分析加载失败:{{ERROR}}"
},
"grade_analytics_info_label": {
"message": "成绩分析信息"
@ -968,29 +864,7 @@
"message": " (包括 GPA 计算器)"
},
"grid_warning": {
"message": "你的网格可容纳 $TOTAL$ 张卡片$TOTAL_S$,但你有 $ACTIVE$ 张卡片$ACTIVE_S$$GPA_NOTE$ - 部分卡片可能会被裁切。",
"placeholders": {
"gpa_note": {
"content": "$GPA_NOTE$",
"example": "GPA_NOTE"
},
"active_s": {
"content": "$ACTIVE_S$",
"example": "ACTIVE_S"
},
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"active": {
"content": "$ACTIVE$",
"example": "ACTIVE"
},
"total_s": {
"content": "$TOTAL_S$",
"example": "TOTAL_S"
}
}
"message": "你的网格可容纳 {{TOTAL}} 张卡片{{TOTAL_S}},但你有 {{ACTIVE}} 张卡片{{ACTIVE_S}}{{GPA_NOTE}} - 部分卡片可能会被裁切。"
},
"group_graded": {
"message": "已评分"
@ -1149,34 +1023,16 @@
"message": "NASA 每日天文图片"
},
"nasa_credit": {
"message": "图片来源:$CREDIT$",
"placeholders": {
"credit": {
"content": "$CREDIT$",
"example": "CREDIT"
}
}
"message": "图片来源:{{CREDIT}}"
},
"nasa_date": {
"message": "日期:$DATE$",
"placeholders": {
"date": {
"content": "$DATE$",
"example": "DATE"
}
}
"message": "日期:{{DATE}}"
},
"need_refresh": {
"message": "你可能需要刷新页面才能看到某些更改。"
},
"new_canvas_desc": {
"message": "Canvas Refined 在 $HOST$ 检测到 Canvas 页面。要将它添加到你的 Canvas 列表吗?",
"placeholders": {
"host": {
"content": "$HOST$",
"example": "HOST"
}
}
"message": "Canvas Refined 在 {{HOST}} 检测到 Canvas 页面。要将它添加到你的 Canvas 列表吗?"
},
"new_canvas_detected": {
"message": "检测到新的 Canvas"
@ -1287,13 +1143,7 @@
"message": "点击右上角的拼图图标"
},
"options_contact": {
"message": "如果你有任何问题或建议,我的邮箱是 $EMAIL$,欢迎反馈!",
"placeholders": {
"email": {
"content": "$EMAIL$",
"example": "EMAIL"
}
}
"message": "如果你有任何问题或建议,我的邮箱是 {{EMAIL}},欢迎反馈!"
},
"options_how_to_access": {
"message": "以后如何打开此菜单:"
@ -1383,13 +1233,7 @@
"message": "西瓜"
},
"percent_done": {
"message": "$PERCENT$%",
"placeholders": {
"percent": {
"content": "$PERCENT$",
"example": "PERCENT"
}
}
"message": "{{PERCENT}}%"
},
"personal_task": {
"message": "个人任务"
@ -1446,51 +1290,13 @@
"message": "隐私"
},
"progress_done": {
"message": "$DONE$/$TOTAL$ 已完成",
"placeholders": {
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"done": {
"content": "$DONE$",
"example": "DONE"
}
}
"message": "{{DONE}}/{{TOTAL}} 已完成"
},
"progress_overall": {
"message": "$PCT$%($DONE$/$TOTAL$)",
"placeholders": {
"pct": {
"content": "$PCT$",
"example": "PCT"
},
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"done": {
"content": "$DONE$",
"example": "DONE"
}
}
"message": "{{PCT}}%({{DONE}}/{{TOTAL}})"
},
"progress_pct": {
"message": "$PCT$%($DONE$/$TOTAL$)",
"placeholders": {
"pct": {
"content": "$PCT$",
"example": "PCT"
},
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"done": {
"content": "$DONE$",
"example": "DONE"
}
}
"message": "{{PCT}}%({{DONE}}/{{TOTAL}})"
},
"quiz_dont_show": {
"message": "不再显示"
@ -1538,25 +1344,13 @@
"message": "正在读取成绩数据…"
},
"relative_ago": {
"message": "$TIME$前",
"placeholders": {
"time": {
"content": "$TIME$",
"example": "TIME"
}
}
"message": "{{TIME}}前"
},
"relative_due_dates": {
"message": "相对到期日"
},
"relative_in": {
"message": "$TIME$后",
"placeholders": {
"time": {
"content": "$TIME$",
"example": "TIME"
}
}
"message": "{{TIME}}后"
},
"remlogo": {
"message": "删除侧边栏徽标"
@ -1631,34 +1425,16 @@
"message": "新标签页"
},
"search_no_course": {
"message": "没有匹配 \"$QUERY$\" 的课程。",
"placeholders": {
"query": {
"content": "$QUERY$",
"example": "QUERY"
}
}
"message": "没有匹配 \"{{QUERY}}\" 的课程。"
},
"search_no_courses_grades": {
"message": "未找到可打开成绩的课程。"
},
"search_no_match": {
"message": "未找到 \"$QUERY$\" 的结果。",
"placeholders": {
"query": {
"content": "$QUERY$",
"example": "QUERY"
}
}
"message": "未找到 \"{{QUERY}}\" 的结果。"
},
"search_no_match_hint": {
"message": "未找到 \"$QUERY$\" 的结果。请尝试其他关键词。",
"placeholders": {
"query": {
"content": "$QUERY$",
"example": "QUERY"
}
}
"message": "未找到 \"{{QUERY}}\" 的结果。请尝试其他关键词。"
},
"search_no_modules": {
"message": "未找到模块或作业..."
@ -1667,13 +1443,7 @@
"message": "未找到模块或作业。如果你的课程仍在加载,请稍后重新打开搜索。"
},
"search_no_results": {
"message": "未找到 \"$QUERY$\" 的结果。",
"placeholders": {
"query": {
"content": "$QUERY$",
"example": "QUERY"
}
}
"message": "未找到 \"{{QUERY}}\" 的结果。"
},
"search_open": {
"message": "打开"
@ -1718,13 +1488,7 @@
"message": "章节"
},
"selected_count": {
"message": "已选择 $COUNT$ 项",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "已选择 {{COUNT}} 项"
},
"show": {
"message": "显示"
@ -1769,13 +1533,7 @@
"message": "空"
},
"storage_items": {
"message": " ($COUNT$ 项)",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": " ({{COUNT}} 项)"
},
"storage_limit_error": {
"message": "输入的数据超出存储限制,因此无法保存。请尝试使用更短的链接,并确保按“复制图片地址”而不是“复制图片”来获取链接。"
@ -1862,13 +1620,7 @@
"message": "确保你的主题遵循以下准则:"
},
"theme_number": {
"message": "主题 $NUM$",
"placeholders": {
"num": {
"content": "$NUM$",
"example": "NUM"
}
}
"message": "主题 {{NUM}}"
},
"theme_optin_reset": {
"message": "主题浏览器选择已重置"
@ -1973,21 +1725,7 @@
"message": "划掉"
},
"todo_date_format": {
"message": "$DATE$ $TIME$($RELATIVE$)",
"placeholders": {
"relative": {
"content": "$RELATIVE$",
"example": "RELATIVE"
},
"time": {
"content": "$TIME$",
"example": "TIME"
},
"date": {
"content": "$DATE$",
"example": "DATE"
}
}
"message": "{{DATE}} {{TIME}}({{RELATIVE}})"
},
"todo_delete": {
"message": "删除"
@ -2125,13 +1863,7 @@
"message": "查看更多"
},
"view_more_count": {
"message": "查看更多($COUNT$)",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "查看更多({{COUNT}})"
},
"view_on_github": {
"message": "在 GitHub 上查看"

View File

@ -21,26 +21,10 @@
"message": "永遠顯示按讚數"
},
"assignment_avg": {
"message": "— 平均 $AVG$%,共 $COUNT$ 份作業:",
"placeholders": {
"avg": {
"content": "$AVG$",
"example": "AVG"
},
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "— 平均 {{AVG}}%,共 {{COUNT}} 份作業:"
},
"assignment_due_in": {
"message": "作業將於 $TIME$ 後到期",
"placeholders": {
"time": {
"content": "$TIME$",
"example": "TIME"
}
}
"message": "作業將於 {{TIME}} 後到期"
},
"auto": {
"message": "自動"
@ -259,17 +243,7 @@
"message": "完成"
},
"completed_total": {
"message": "已完成 $DONE$/$TOTAL$",
"placeholders": {
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"done": {
"content": "$DONE$",
"example": "DONE"
}
}
"message": "已完成 {{DONE}}/{{TOTAL}}"
},
"condensed_cards": {
"message": "浓缩卡"
@ -455,13 +429,7 @@
"message": "到期的"
},
"due_days": {
"message": "到期 <strong>$COUNT$ 天</strong>",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "到期 <strong>{{COUNT}} 天</strong>"
},
"due_later": {
"message": "到期 <strong>稍後</strong>"
@ -479,13 +447,7 @@
"message": "到期 <strong>明天</strong>"
},
"due_weeks": {
"message": "到期 <strong>$COUNT$ 週</strong>",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "到期 <strong>{{COUNT}} 週</strong>"
},
"edit_custom_task": {
"message": "編輯此自訂待辦事項"
@ -593,13 +555,7 @@
"message": "份作業"
},
"final_avg": {
"message": "— 平均 $AVG$% ...",
"placeholders": {
"avg": {
"content": "$AVG$",
"example": "AVG"
}
}
"message": "— 平均 {{AVG}}% ..."
},
"final_waiting": {
"message": "正在等待成績資料…"
@ -617,17 +573,7 @@
"message": "修复程序会自动在这些页面上运行:"
},
"fix_took": {
"message": "修正耗時 $TIME$ 毫秒(評分:$RATING$)",
"placeholders": {
"time": {
"content": "$TIME$",
"example": "TIME"
},
"rating": {
"content": "$RATING$",
"example": "RATING"
}
}
"message": "修正耗時 {{TIME}} 毫秒(評分:{{RATING}})"
},
"flexible_grid": {
"message": "彈性格線"
@ -660,25 +606,13 @@
"message": "調整 Y 軸範圍"
},
"ga_heatmap_assignments": {
"message": "$COUNT$ 項作業:",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "{{COUNT}} 項作業:"
},
"ga_heatmap_avg": {
"message": "平均"
},
"ga_heatmap_undated": {
"message": "有 $COUNT$ 項已評分作業沒有到期日,因此未顯示。",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "有 {{COUNT}} 項已評分作業沒有到期日,因此未顯示。"
},
"ga_line_title": {
"message": "總成績變化"
@ -732,30 +666,10 @@
"message": "未評分"
},
"ga_sub_secured": {
"message": "即使期末考拿 0 分,你仍有 <b>$ZERO$%</b>,高於你的目標 <b>$TARGET$%</b>。",
"placeholders": {
"target": {
"content": "$TARGET$",
"example": "TARGET"
},
"zero": {
"content": "$ZERO$",
"example": "ZERO"
}
}
"message": "即使期末考拿 0 分,你仍有 <b>{{ZERO}}%</b>,高於你的目標 <b>{{TARGET}}%</b>。"
},
"ga_sub_unreachable": {
"message": "即使期末考滿分,你也只能達到 <b>$PERFECT$%</b>,低於你的目標 <b>$TARGET$%</b>。",
"placeholders": {
"perfect": {
"content": "$PERFECT$",
"example": "PERFECT"
},
"target": {
"content": "$TARGET$",
"example": "TARGET"
}
}
"message": "即使期末考滿分,你也只能達到 <b>{{PERFECT}}%</b>,低於你的目標 <b>{{TARGET}}%</b>。"
},
"ga_tab_calc": {
"message": "期末考計算器"
@ -788,25 +702,13 @@
"message": "Imagine-If 分數(分子);留空 = 不計入"
},
"ga_tooltip_assignments": {
"message": "$COUNT$ 項作業",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "{{COUNT}} 項作業"
},
"ga_you_got_this": {
"message": "你可以的!"
},
"ga_you_need": {
"message": "你的期末考需要 ≥ $PCT$%",
"placeholders": {
"pct": {
"content": "$PCT$",
"example": "PCT"
}
}
"message": "你的期末考需要 ≥ {{PCT}}%"
},
"get_active_cards": {
"message": "從儀表板取得使用中的卡片"
@ -932,13 +834,7 @@
"message": "新增工具,協助你分析成績。"
},
"grade_analytics_failed": {
"message": "成績分析載入失敗:$ERROR$",
"placeholders": {
"error": {
"content": "$ERROR$",
"example": "ERROR"
}
}
"message": "成績分析載入失敗:{{ERROR}}"
},
"grade_analytics_info_label": {
"message": "成績分析資訊"
@ -968,29 +864,7 @@
"message": " (包含 GPA 計算器)"
},
"grid_warning": {
"message": "你的格線可容納 $TOTAL$ 張卡片$TOTAL_S$,但你目前有 $ACTIVE$ 張卡片$ACTIVE_S$$GPA_NOTE$——部分卡片可能會被裁切。",
"placeholders": {
"gpa_note": {
"content": "$GPA_NOTE$",
"example": "GPA_NOTE"
},
"active_s": {
"content": "$ACTIVE_S$",
"example": "ACTIVE_S"
},
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"active": {
"content": "$ACTIVE$",
"example": "ACTIVE"
},
"total_s": {
"content": "$TOTAL_S$",
"example": "TOTAL_S"
}
}
"message": "你的格線可容納 {{TOTAL}} 張卡片{{TOTAL_S}},但你目前有 {{ACTIVE}} 張卡片{{ACTIVE_S}}{{GPA_NOTE}}——部分卡片可能會被裁切。"
},
"group_graded": {
"message": "已評分"
@ -1149,34 +1023,16 @@
"message": "NASA 每日天文圖片"
},
"nasa_credit": {
"message": "版權:$CREDIT$",
"placeholders": {
"credit": {
"content": "$CREDIT$",
"example": "CREDIT"
}
}
"message": "版權:{{CREDIT}}"
},
"nasa_date": {
"message": "日期:$DATE$",
"placeholders": {
"date": {
"content": "$DATE$",
"example": "DATE"
}
}
"message": "日期:{{DATE}}"
},
"need_refresh": {
"message": "你可能需要重新整理頁面才能看到某些變更。"
},
"new_canvas_desc": {
"message": "Canvas Refined 在 $HOST$ 偵測到 Canvas 頁面。要將它加入你的 Canvas 清單嗎?",
"placeholders": {
"host": {
"content": "$HOST$",
"example": "HOST"
}
}
"message": "Canvas Refined 在 {{HOST}} 偵測到 Canvas 頁面。要將它加入你的 Canvas 清單嗎?"
},
"new_canvas_detected": {
"message": "偵測到新的 Canvas"
@ -1287,13 +1143,7 @@
"message": "點擊右上角的拼圖圖示"
},
"options_contact": {
"message": "如果你有任何問題或建議,我的電子郵件是 $EMAIL$,歡迎回饋!",
"placeholders": {
"email": {
"content": "$EMAIL$",
"example": "EMAIL"
}
}
"message": "如果你有任何問題或建議,我的電子郵件是 {{EMAIL}},歡迎回饋!"
},
"options_how_to_access": {
"message": "之後如何開啟此選單:"
@ -1383,13 +1233,7 @@
"message": "西瓜"
},
"percent_done": {
"message": "$PERCENT$%",
"placeholders": {
"percent": {
"content": "$PERCENT$",
"example": "PERCENT"
}
}
"message": "{{PERCENT}}%"
},
"personal_task": {
"message": "個人任務"
@ -1446,51 +1290,13 @@
"message": "隱私"
},
"progress_done": {
"message": "已完成 $DONE$/$TOTAL$",
"placeholders": {
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"done": {
"content": "$DONE$",
"example": "DONE"
}
}
"message": "已完成 {{DONE}}/{{TOTAL}}"
},
"progress_overall": {
"message": "$PCT$%($DONE$/$TOTAL$)",
"placeholders": {
"pct": {
"content": "$PCT$",
"example": "PCT"
},
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"done": {
"content": "$DONE$",
"example": "DONE"
}
}
"message": "{{PCT}}%({{DONE}}/{{TOTAL}})"
},
"progress_pct": {
"message": "$PCT$%($DONE$/$TOTAL$)",
"placeholders": {
"pct": {
"content": "$PCT$",
"example": "PCT"
},
"total": {
"content": "$TOTAL$",
"example": "TOTAL"
},
"done": {
"content": "$DONE$",
"example": "DONE"
}
}
"message": "{{PCT}}%({{DONE}}/{{TOTAL}})"
},
"quiz_dont_show": {
"message": "不再顯示"
@ -1538,25 +1344,13 @@
"message": "正在讀取成績資料…"
},
"relative_ago": {
"message": "$TIME$前",
"placeholders": {
"time": {
"content": "$TIME$",
"example": "TIME"
}
}
"message": "{{TIME}}前"
},
"relative_due_dates": {
"message": "相对到期日"
},
"relative_in": {
"message": "$TIME$後",
"placeholders": {
"time": {
"content": "$TIME$",
"example": "TIME"
}
}
"message": "{{TIME}}後"
},
"remlogo": {
"message": "删除侧边栏徽标"
@ -1631,34 +1425,16 @@
"message": "新分頁"
},
"search_no_course": {
"message": "沒有符合「$QUERY$」的課程。",
"placeholders": {
"query": {
"content": "$QUERY$",
"example": "QUERY"
}
}
"message": "沒有符合「{{QUERY}}」的課程。"
},
"search_no_courses_grades": {
"message": "找不到可開啟成績的課程。"
},
"search_no_match": {
"message": "找不到「$QUERY$」的結果。",
"placeholders": {
"query": {
"content": "$QUERY$",
"example": "QUERY"
}
}
"message": "找不到「{{QUERY}}」的結果。"
},
"search_no_match_hint": {
"message": "找不到「$QUERY$」的結果。請嘗試其他關鍵字。",
"placeholders": {
"query": {
"content": "$QUERY$",
"example": "QUERY"
}
}
"message": "找不到「{{QUERY}}」的結果。請嘗試其他關鍵字。"
},
"search_no_modules": {
"message": "找不到模組或作業..."
@ -1667,13 +1443,7 @@
"message": "找不到課程模組或作業。如果你的課程仍在載入,請稍後再開啟搜尋。"
},
"search_no_results": {
"message": "找不到「$QUERY$」的結果。",
"placeholders": {
"query": {
"content": "$QUERY$",
"example": "QUERY"
}
}
"message": "找不到「{{QUERY}}」的結果。"
},
"search_open": {
"message": "開啟"
@ -1718,13 +1488,7 @@
"message": "章節"
},
"selected_count": {
"message": "已選取 $COUNT$ 項",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "已選取 {{COUNT}} 項"
},
"show": {
"message": "顯示"
@ -1769,13 +1533,7 @@
"message": "空白"
},
"storage_items": {
"message": " ($COUNT$ 項)",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": " ({{COUNT}} 項)"
},
"storage_limit_error": {
"message": "你輸入的資料超過儲存上限,因此無法儲存。請嘗試使用較短的連結,並確認按下「複製圖片網址」而不是「複製圖片」來取得連結。"
@ -1862,13 +1620,7 @@
"message": "請確認你的主題符合以下規範:"
},
"theme_number": {
"message": "主題 $NUM$",
"placeholders": {
"num": {
"content": "$NUM$",
"example": "NUM"
}
}
"message": "主題 {{NUM}}"
},
"theme_optin_reset": {
"message": "已重設主題瀏覽器加入狀態"
@ -1973,21 +1725,7 @@
"message": "劃掉"
},
"todo_date_format": {
"message": "$DATE$ $TIME$($RELATIVE$)",
"placeholders": {
"relative": {
"content": "$RELATIVE$",
"example": "RELATIVE"
},
"time": {
"content": "$TIME$",
"example": "TIME"
},
"date": {
"content": "$DATE$",
"example": "DATE"
}
}
"message": "{{DATE}} {{TIME}}({{RELATIVE}})"
},
"todo_delete": {
"message": "刪除"
@ -2125,13 +1863,7 @@
"message": "顯示更多"
},
"view_more_count": {
"message": "顯示更多($COUNT$)",
"placeholders": {
"count": {
"content": "$COUNT$",
"example": "COUNT"
}
}
"message": "顯示更多({{COUNT}})"
},
"view_on_github": {
"message": "在 GitHub 上檢視"

View File

@ -632,7 +632,7 @@
.cr-quote-body {padding:clamp(12px,4.5cqw,26px);display:flex;flex-direction:column;gap:clamp(4px,1.6cqw,12px);flex:1;justify-content:center;}
.cr-quote-mark {font-size:clamp(20px,11cqw,44px);line-height:.5;font-weight:800;color:color-mix(in srgb, var(--bclinks,#0374b5) 55%, transparent);}
.cr-quote-text {margin:0;font-size:clamp(14px,7.5cqw,26px);line-height:1.45;font-style:italic;color:var(--bctext-0,#2d3b45);}
.cr-quote-author {font-size:clamp(11px,3.6cqw,17px);font-weight:600;color:var(--bctext-2,#9aa3ab);align-self:flex-end;}
.cr-quote-author {font-size:clamp(14px,4.2cqw,20px);font-weight:700;color:var(--bctext-2,#9aa3ab);align-self:flex-end;letter-spacing:0.01em;}
/* Quick Links: editable link grid with theme-tinted preset icons */
.canvasrefined-quick-links .cr-widget-head {gap:8px;}

View File

@ -1514,6 +1514,21 @@
<button class="big-button back-btn" data-i18n="back">Back</button>
</div>
<p class="option-container" data-i18n="report_desc">Please join the discord server or create a Github issue for any issues, feedback, or suggestions. Thank you!</p>
<div class="option-container" style="display:flex;flex-direction:column;gap:10px;">
<!-- <h3 class="header-small" data-i18n="get_in_touch">Get in touch</h3> -->
<p class="sub-text" data-i18n="report_social_desc" style="margin:0;">For quicker help, feature requests, and community discussion, reach us here instead of email:</p>
<div style="display:flex;gap:10px;flex-wrap:wrap;">
<a class="discord-button" href="https://discord.gg/GjFh4JA3wh" target="_blank" rel="noopener noreferrer" style="flex:1;min-width:140px;justify-content:center;">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="currentColor"><path d="M20.317 4.369a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028 14.09 14.09 0 0 0 1.226-1.994.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.331c-1.182 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418z"/></svg>
<span>Discord</span>
</a>
<a class="github-button" href="https://github.com/GuySandler/CanvasRefined" target="_blank" rel="noopener noreferrer" style="flex:1;min-width:140px;justify-content:center;">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="currentColor"><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg>
<span>GitHub</span>
</a>
</div>
<p class="sub-text" style="margin:0;font-size:11px;opacity:0.85;">Email is still available at <strong>sandlerguy5@gmail.com</strong> for private matters.</p>
</div>
<div class="option-container">
<h3 class="header-small" data-i18n="privacy">Privacy</h3>
<div class="option" id="hide_personal_details">

View File

@ -48,6 +48,24 @@ if (!chrome.i18n._origGetMessage) {
chrome.i18n.getMessage = (key) => getMsg(key) || chrome.i18n._origGetMessage(key) || "";
}
// Chrome (crbug.com/40206032) runs ReplaceStringPlaceholders on EVERY message,
// which eats "$NAME$" tokens: "$COUNT$" became "OUNT" ("$C" dropped + trailing "$").
// Messages therefore use $ -free tokens like {{COUNT}}; this fills them in.
const PLACEHOLDER_RE = /\{\{([A-Z][A-Z0-9_]*)\}\}/g;
function replaceCountPlaceholder(msg, count, token) {
if (!msg) return msg;
const name = token || "COUNT";
return String(msg).split("{{" + name + "}}").join(String(count));
}
// Fill every {{TOKEN}} in a message from a { TOKEN: value } map.
function fillPlaceholders(msg, values) {
if (!msg) return msg;
return String(msg).replace(PLACEHOLDER_RE, (m, name) => (
values && Object.prototype.hasOwnProperty.call(values, name) ? String(values[name]) : m
));
}
// Canvas' New UI navigates via pushState; without this hook current_page goes stale.
function setupNavigationListener() {
@ -514,8 +532,8 @@ function createNasaInfoOverlay() {
const meta = metadata[metadataKey];
if (!meta) return false;
document.getElementById("nasa-info-title").textContent = meta.title || "";
document.getElementById("nasa-info-date").textContent = (chrome.i18n.getMessage("nasa_date") || "Date: $DATE$").replace("$DATE$", meta.date);
document.getElementById("nasa-info-credit").textContent = meta.copyright ? (chrome.i18n.getMessage("nasa_credit") || "Credit: $CREDIT$").replace("$CREDIT$", meta.copyright) : "";
document.getElementById("nasa-info-date").textContent = (chrome.i18n.getMessage("nasa_date") || "Date: {{DATE}}").replace("{{DATE}}", meta.date);
document.getElementById("nasa-info-credit").textContent = meta.copyright ? (chrome.i18n.getMessage("nasa_credit") || "Credit: {{CREDIT}}").replace("{{CREDIT}}", meta.copyright) : "";
document.getElementById("nasa-info-explanation").textContent = meta.explanation || chrome.i18n.getMessage("no_description") || "No description available.";
return true;
}
@ -655,7 +673,7 @@ function createReminder(reminder, location) {
const svg = makeElement("div", container, { "innerHTML": canvas_svg });
const content = makeElement("a", container, { "className": "canvasrefined-reminder-content", "href": reminder.h, "target": "_blank" });
const title = makeElement("h2", content, { "className": "canvasrefined-reminder-title", "textContent": reminder.t });
const due = makeElement("p", content, { "className": "canvasrefined-reminder-due", "textContent": (chrome.i18n.getMessage("assignment_due_in") || "Assignment due in $TIME$").replace("$TIME$", remaining.time) });
const due = makeElement("p", content, { "className": "canvasrefined-reminder-due", "textContent": (chrome.i18n.getMessage("assignment_due_in") || "Assignment due in {{TIME}}").replace("{{TIME}}", remaining.time) });
const hidebtn = makeElement("btn", wrapper, { "className": "canvasrefined-reminder-hide", "textContent": "x" });
hidebtn.addEventListener("click", () => {
hideReminder(reminder.h);
@ -917,7 +935,7 @@ function showCanvasPrompt(courses) {
const prompt = makeElement("div", backdrop, { "id": "canvasrefined-domain-prompt" });
makeElement("h3", prompt, { "textContent": chrome.i18n.getMessage("new_canvas_detected") || "New Canvas detected" });
const text = makeElement("p", prompt, {});
const canvasDesc = (chrome.i18n.getMessage("new_canvas_desc") || "Canvas Refined detected a Canvas page at $HOST$. Add it to your canvas list?").replace("$HOST$", host);
const canvasDesc = (chrome.i18n.getMessage("new_canvas_desc") || "Canvas Refined detected a Canvas page at {{HOST}}. Add it to your canvas list?").replace("{{HOST}}", host);
const parts = canvasDesc.split(host);
if (parts.length === 2) {
text.append(parts[0]);
@ -2492,7 +2510,7 @@ function renderProgressRingsMode(wrapper, shown, totalAll, completedAll, percent
wrapper.appendChild(overlay);
}
overlay.querySelector('.canvasrefined-progress-percent').textContent = `${percent}%`;
overlay.querySelector('.canvasrefined-progress-count').textContent = (chrome.i18n.getMessage("progress_done") || "$DONE$/$TOTAL$ done").replace("$DONE$", completedAll).replace("$TOTAL$", totalAll);
overlay.querySelector('.canvasrefined-progress-count').textContent = (chrome.i18n.getMessage("progress_done") || "{{DONE}}/{{TOTAL}} done").replace("{{DONE}}", completedAll).replace("{{TOTAL}}", totalAll);
const stroke = 8;
const gap = 4;
@ -2722,7 +2740,7 @@ function renderProgressRainbow(wrapper, shown, totalAll, completedAll, percent)
overlay.style.transform = `translateY(${nudge}px)`;
}
overlay.querySelector('.canvasrefined-progress-percent').textContent = `${percent}%`;
overlay.querySelector('.canvasrefined-progress-count').textContent = (chrome.i18n.getMessage("progress_done") || "$DONE$/$TOTAL$ done").replace("$DONE$", completedAll).replace("$TOTAL$", totalAll);
overlay.querySelector('.canvasrefined-progress-count').textContent = (chrome.i18n.getMessage("progress_done") || "{{DONE}}/{{TOTAL}} done").replace("{{DONE}}", completedAll).replace("{{TOTAL}}", totalAll);
const bowlRadius = Math.max(0, innerRadius - stroke / 2 - 2);
fitProgressOverlayText(overlay, (hw, hh) => {
@ -2761,7 +2779,7 @@ function renderProgressLines(wrapper, shown) {
const labelEl = row.querySelector('.cr-pl-label');
labelEl.textContent = courseRingLabel(entry.courseId);
labelEl.style.color = color;
row.querySelector('.cr-pl-pct').textContent = (chrome.i18n.getMessage("progress_pct") || "$PCT$% ($DONE$/$TOTAL$)").replace("$PCT$", pct).replace("$DONE$", entry.completed).replace("$TOTAL$", entry.total);
row.querySelector('.cr-pl-pct').textContent = (chrome.i18n.getMessage("progress_pct") || "{{PCT}}% ({{DONE}}/{{TOTAL}})").replace("{{PCT}}", pct).replace("{{DONE}}", entry.completed).replace("{{TOTAL}}", entry.total);
const track = row.children[1];
track.style.background = `color-mix(in srgb, ${color} 25%, transparent)`;
const fill = row.querySelector('.cr-pl-fill');
@ -2798,7 +2816,7 @@ function renderProgressOneLine(wrapper, shown, totalAll, completedAll, percent)
head.innerHTML = `<span>Overall</span><span class="cr-ol-pct" style="font-weight:700;"></span>`;
box.appendChild(head);
}
box.querySelector('.cr-ol-pct').textContent = (chrome.i18n.getMessage("progress_pct") || "$PCT$% ($DONE$/$TOTAL$)").replace("$PCT$", percent).replace("$DONE$", completedAll).replace("$TOTAL$", totalAll);
box.querySelector('.cr-ol-pct').textContent = (chrome.i18n.getMessage("progress_pct") || "{{PCT}}% ({{DONE}}/{{TOTAL}})").replace("{{PCT}}", percent).replace("{{DONE}}", completedAll).replace("{{TOTAL}}", totalAll);
if (getCurrentCourseId() == null) {
head.style.cursor = betterTodoProgressFilter != null ? 'pointer' : '';
head.onclick = () => {
@ -3641,8 +3659,8 @@ async function createTodoSections(location) {
if (key == "-1") label = getMsg("due_overdue", "<strong>Overdue</strong>");
else if (key == "0") label = getMsg("due_today", "Due <strong>Today</strong>");
else if (key == "1") label = getMsg("due_tomorrow", "Due <strong>Tomorrow</strong>");
else if (key >= 2 && key < 7) label = getMsg("due_days", "Due <strong>$COUNT$ days</strong>").replace("$COUNT$", key);
else if (key >= 7 && key < 30) label = getMsg("due_weeks", "Due <strong>$COUNT$ weeks</strong>").replace("$COUNT$", key / 7);
else if (key >= 2 && key < 7) label = replaceCountPlaceholder(getMsg("due_days", "Due <strong>{{COUNT}} days</strong>"), key);
else if (key >= 7 && key < 30) label = replaceCountPlaceholder(getMsg("due_weeks", "Due <strong>{{COUNT}} weeks</strong>"), Math.floor(key / 7));
else if (key == "30") label = getMsg("due_one_month", "Due <strong>1 month</strong>");
else label = "<strong>" + dueGroupLabel(key) + "</strong>";
makeElement("div", wrapper, {
@ -4173,7 +4191,7 @@ function populateAssignments(iscompleted = false) {
let isExpanded = false;
let seeMoreButton = makeElement("button", document.getElementById("better-todo-main"), {
textContent: (chrome.i18n.getMessage("view_more_count") || "View More ($COUNT$)").replace("$COUNT$", assignmentCount - maxElements),
textContent: replaceCountPlaceholder((chrome.i18n.getMessage("view_more_count") || "View More ({{COUNT}})"), assignmentCount - maxElements),
className: "canvasrefined-custom-btn",
id: "better-todo-see-more",
style: "width:100%;margin-top:15px;cursor:pointer;"
@ -4186,7 +4204,7 @@ function populateAssignments(iscompleted = false) {
} else {
document.querySelectorAll(".better-todo-hidden-assignment").forEach(element => element.style.display = "none");
document.querySelectorAll(".better-todo-hidden-wrapper").forEach(element => element.style.display = "none");
seeMoreButton.textContent = (chrome.i18n.getMessage("view_more_count") || "View More ($COUNT$)").replace("$COUNT$", assignmentCount - maxElements);
seeMoreButton.textContent = replaceCountPlaceholder((chrome.i18n.getMessage("view_more_count") || "View More ({{COUNT}})"), assignmentCount - maxElements);
}
isExpanded = !isExpanded;
})
@ -9724,7 +9742,7 @@ async function runGlobalSearch(query, resultsEl) {
const filter = (gradesMatch[1] || "").trim();
const matching = courseEntries.filter(c => globalSearchCourseMatches(c, filter));
if (!matching.length) {
resultsEl.innerHTML = `<div class="canvasrefined-gs-hint">${filter ? getMsg("search_no_course", "No course matches \"$QUERY$\".").replace("$QUERY$", escapeGlobalSearchHtml(filter)) : getMsg("search_no_courses_grades", "No courses found to open grades for.")}</div>`;
resultsEl.innerHTML = `<div class="canvasrefined-gs-hint">${filter ? getMsg("search_no_course", "No course matches \"{{QUERY}}\".").replace("{{QUERY}}", escapeGlobalSearchHtml(filter)) : getMsg("search_no_courses_grades", "No courses found to open grades for.")}</div>`;
return [];
}
const gradeRows = matching.map(c => ({
@ -9750,7 +9768,7 @@ async function runGlobalSearch(query, resultsEl) {
allowedCourseIds = new Set(matching.map(c => String(c.courseId)));
if (!effectiveQuery) {
if (!matching.length) {
resultsEl.innerHTML = `<div class="canvasrefined-gs-hint">${getMsg("search_no_course", "No course matches \"$QUERY$\".").replace("$QUERY$", escapeGlobalSearchHtml(parsed.courseFilter))}</div>`;
resultsEl.innerHTML = `<div class="canvasrefined-gs-hint">${getMsg("search_no_course", "No course matches \"{{QUERY}}\".").replace("{{QUERY}}", escapeGlobalSearchHtml(parsed.courseFilter))}</div>`;
return [];
}
resultsEl.innerHTML = matching.map((item, i) => globalSearchRowHtml(item, i)).join("");
@ -9781,7 +9799,7 @@ async function runGlobalSearch(query, resultsEl) {
const top = matches.slice(0, 50);
if (!top.length) {
resultsEl.innerHTML = `<div class="canvasrefined-gs-hint">${getMsg("search_no_match", "No results for \"$QUERY$\".").replace("$QUERY$", escapeGlobalSearchHtml(query))}</div>`;
resultsEl.innerHTML = `<div class="canvasrefined-gs-hint">${getMsg("search_no_match", "No results for \"{{QUERY}}\".").replace("{{QUERY}}", escapeGlobalSearchHtml(query))}</div>`;
return [];
}
@ -10561,7 +10579,7 @@ async function loadGradeAnalytics() {
} catch (err) {
logError(err);
const s = document.getElementById("canvasrefined-ga-status");
if (s) s.textContent = (chrome.i18n.getMessage("grade_analytics_failed") || "Grade Analytics failed to load: $ERROR$").replace("$ERROR$", err && err.message ? err.message : err);
if (s) s.textContent = (chrome.i18n.getMessage("grade_analytics_failed") || "Grade Analytics failed to load: {{ERROR}}").replace("{{ERROR}}", err && err.message ? err.message : err);
} finally {
gaLoading = false;
}
@ -10879,12 +10897,12 @@ function renderGaCalculator() {
let head, sub;
if (needed <= 0) {
head = `<span style="font-size:20px;font-weight:700;color:#16a34a;">${getMsg("ga_already_there", "You're already there!")}</span>`;
sub = getMsg("ga_sub_secured", "Even a 0 on the final leaves you at <b>$ZERO$%</b>, which is above your <b>$TARGET$%</b> goal.").replace("$ZERO$", withZero.toFixed(2)).replace("$TARGET$", target);
sub = getMsg("ga_sub_secured", "Even a 0 on the final leaves you at <b>{{ZERO}}%</b>, which is above your <b>{{TARGET}}%</b> goal.").replace("{{ZERO}}", withZero.toFixed(2)).replace("{{TARGET}}", target);
} else if (needed > 100) {
head = `<span style="font-size:20px;font-weight:700;color:#dc2626;">${getMsg("ga_out_of_reach", "Out of reach")}</span>`;
sub = getMsg("ga_sub_unreachable", "Even a perfect final only gets you to <b>$PERFECT$%</b>, which is below your <b>$TARGET$%</b> goal.").replace("$PERFECT$", withPerfect.toFixed(2)).replace("$TARGET$", target);
sub = getMsg("ga_sub_unreachable", "Even a perfect final only gets you to <b>{{PERFECT}}%</b>, which is below your <b>{{TARGET}}%</b> goal.").replace("{{PERFECT}}", withPerfect.toFixed(2)).replace("{{TARGET}}", target);
} else {
head = `<span style="font-size:20px;font-weight:700;color:${gaNeededColor(needed)};">${getMsg("ga_you_need", "You need ≥ $PCT$% on the final").replace("$PCT$", needed.toFixed(2))}</span>`;
head = `<span style="font-size:20px;font-weight:700;color:${gaNeededColor(needed)};">${getMsg("ga_you_need", "You need ≥ {{PCT}}% on the final").replace("{{PCT}}", needed.toFixed(2))}</span>`;
sub = getMsg("ga_you_got_this", "You got this!");
}
box.innerHTML = head + `<div style="margin-top:6px;color:var(--bctext-1);font-size:13px;">${sub}</div>`;
@ -10974,7 +10992,7 @@ function gaHeatmapShowTip(tip, e, cell, avg) {
const d = cell.date;
const rows = cell.items.map(p =>
`<div style="margin-top:2px;color:var(--bctext-1);">${gaEscHtml(p.title)} — <b style="color:${gaHeatmapColor(p.pct)};">${p.pct.toFixed(2)}%</b></div>`).join("");
tip.innerHTML = `<b>${d.toLocaleDateString(undefined, { month: "short", day: "numeric", year: "numeric" })}</b> — ${getMsg("ga_heatmap_avg", "avg")} <b style="color:${gaHeatmapColor(avg)};">${avg.toFixed(2)}%</b><div style="margin-top:4px;font-size:11px;color:var(--bctext-1);">${getMsg("ga_heatmap_assignments", "$COUNT$ assignment(s):").replace("$COUNT$", cell.items.length)}</div>${rows}`;
tip.innerHTML = `<b>${d.toLocaleDateString(undefined, { month: "short", day: "numeric", year: "numeric" })}</b> — ${getMsg("ga_heatmap_avg", "avg")} <b style="color:${gaHeatmapColor(avg)};">${avg.toFixed(2)}%</b><div style="margin-top:4px;font-size:11px;color:var(--bctext-1);">${replaceCountPlaceholder(getMsg("ga_heatmap_assignments", "{{COUNT}} assignment(s):"), cell.items.length)}</div>${rows}`;
tip.style.display = "block";
const host = tip.offsetParent || tip.parentNode;
const hostRect = host.getBoundingClientRect();
@ -11006,7 +11024,7 @@ function renderGaHeatmap() {
return;
}
note.textContent = data.undated > 0
? getMsg("ga_heatmap_undated", "$COUNT$ graded assignment(s) without a due date not shown.").replace("$COUNT$", data.undated)
? replaceCountPlaceholder(getMsg("ga_heatmap_undated", "{{COUNT}} graded assignment(s) without a due date not shown."), data.undated)
: "";
const start = new Date(data.min);
start.setDate(start.getDate() - start.getDay());
@ -11143,7 +11161,7 @@ function gaDrawPie(canvas, tooltip) {
if (d < a.start) d += Math.PI * 2;
return dist <= canvas._gaCenter.r && dist >= canvas._gaCenter.r * 0.55 && d >= a.start && d <= a.end;
});
if (hit) gaShowTooltip(tooltip, e.clientX - rect.left, e.clientY - rect.top, `<b>${hit.label}</b>: ${getMsg("ga_tooltip_assignments", "$COUNT$ assignment(s)").replace("$COUNT$", hit.value)}`);
if (hit) gaShowTooltip(tooltip, e.clientX - rect.left, e.clientY - rect.top, `<b>${hit.label}</b>: ${replaceCountPlaceholder(getMsg("ga_tooltip_assignments", "{{COUNT}} assignment(s)"), hit.value)}`);
else tooltip.style.display = "none";
};
canvas._gaLeave = () => { tooltip.style.display = "none"; };
@ -11962,15 +11980,15 @@ const months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "
function formatTodoDate(date, submissions, hr24) {
let { time, ms } = getRelativeDate(date);
let fromNow = ms < 0
? getMsg("relative_in", "in $TIME$").replace("$TIME$", time)
: getMsg("relative_ago", "$TIME$ ago").replace("$TIME$", time);
? getMsg("relative_in", "in {{TIME}}").replace("{{TIME}}", time)
: getMsg("relative_ago", "{{TIME}} ago").replace("{{TIME}}", time);
let dueSoon = false;
if (submissions && submissions.submitted === false && ms >= -21600000) {
dueSoon = true;
}
const dateText = date.toLocaleDateString(undefined, { month: "short", day: "numeric" });
const timeText = date.toLocaleTimeString(undefined, { hour: "numeric", minute: "2-digit", hour12: !hr24 });
return { "dueSoon": dueSoon, "date": getMsg("todo_date_format", "$DATE$ at $TIME$ ($RELATIVE$)").replace("$DATE$", dateText).replace("$TIME$", timeText).replace("$RELATIVE$", fromNow) };
return { "dueSoon": dueSoon, "date": getMsg("todo_date_format", "{{DATE}} at {{TIME}} ({{RELATIVE}})").replace("{{DATE}}", dateText).replace("{{TIME}}", timeText).replace("{{RELATIVE}}", fromNow) };
}
function formatCardDue(date) {
@ -11978,8 +11996,8 @@ function formatCardDue(date) {
if (options.relative_dues === true) {
let relative = getRelativeDate(due, true);
return relative.ms > 0
? getMsg("relative_ago", "$TIME$ ago").replace("$TIME$", relative.time)
: getMsg("relative_in", "in $TIME$").replace("$TIME$", relative.time);
? getMsg("relative_ago", "{{TIME}} ago").replace("{{TIME}}", relative.time)
: getMsg("relative_in", "in {{TIME}}").replace("{{TIME}}", relative.time);
}
return options.assignment_date_format ? (due.getDate()) + "/" + (due.getMonth() + 1) : (due.getMonth() + 1) + "/" + (due.getDate());
}

View File

@ -30,9 +30,9 @@ function applyI18n() {
});
const contact = document.getElementById("options-contact");
if (contact) {
const msg = getMsg("options_contact", "My email is $EMAIL$ if you have any issues/suggestions - any feedback is appreciated!");
const msg = getMsg("options_contact", "My email is {{EMAIL}} if you have any issues/suggestions - any feedback is appreciated!");
const email = "sandlerguy5@gmail.com";
const parts = msg.split("$EMAIL$");
const parts = msg.split("{{EMAIL}}");
contact.textContent = "";
contact.append(parts[0]);
const strong = document.createElement("span");

View File

@ -129,6 +129,21 @@ function getMsg(key, fallback) {
return fallback !== undefined ? fallback : "";
}
const PLACEHOLDER_RE = /\{\{([A-Z][A-Z0-9_]*)\}\}/g;
function replaceCountPlaceholder(msg, count, token) {
if (!msg) return msg;
const name = token || "COUNT";
return String(msg).split("{{" + name + "}}").join(String(count));
}
function fillPlaceholders(msg, values) {
if (!msg) return msg;
return String(msg).replace(PLACEHOLDER_RE, (m, name) => (
values && Object.prototype.hasOwnProperty.call(values, name) ? String(values[name]) : m
));
}
function applyI18nOverride() {
document.querySelectorAll('[data-i18n]').forEach(el => {
const key = el.dataset.i18n;
@ -579,7 +594,7 @@ function setupCelebrationsSelect(initial) {
const updateLabel = () => {
if (selected.length === 0) label.textContent = getMsg("celebration_none") || "None";
else if (selected.length === 1) label.textContent = CELEBRATION_TYPES.find(t => t.id === selected[0]) ? (getMsg("celebration_" + selected[0]) || CELEBRATION_TYPES.find(t => t.id === selected[0]).label) : (getMsg("celebration_none") || "None");
else label.textContent = (getMsg("selected_count") || "$COUNT$ selected").replace("$COUNT$", selected.length);
else label.textContent = replaceCountPlaceholder((getMsg("selected_count") || "{{COUNT}} selected"), selected.length);
};
// Legacy key: the special handler only passes the new one.
@ -929,7 +944,7 @@ function updateCardGridPreview() {
warning.style.display = "block";
} else if (active > total) {
const gpaNote = s.gpa_calc === true ? getMsg("grid_includes_gpa", " (including the GPA calculator)") : "";
warning.textContent = "\u26A0 " + (getMsg("grid_warning") || "Your grid holds $TOTAL$ card$TOTAL_S$ but you have $ACTIVE$ card$ACTIVE_S$$GPA_NOTE$ - some cards may be cut off.").replace("$TOTAL$", total).replace("$TOTAL_S$", total === 1 ? "" : "s").replace("$ACTIVE$", active).replace("$ACTIVE_S$", active === 1 ? "" : "s").replace("$GPA_NOTE$", gpaNote);
warning.textContent = "\u26A0 " + (getMsg("grid_warning") || "Your grid holds {{TOTAL}} card{{TOTAL_S}} but you have {{ACTIVE}} card{{ACTIVE_S}}{{GPA_NOTE}} - some cards may be cut off.").replace("{{TOTAL}}", total).replace("{{TOTAL_S}}", total === 1 ? "" : "s").replace("{{ACTIVE}}", active).replace("{{ACTIVE_S}}", active === 1 ? "" : "s").replace("{{GPA_NOTE}}", gpaNote);
warning.style.display = "block";
} else {
warning.style.display = "none";
@ -2140,7 +2155,7 @@ async function setup() {
} else if (output.time < 250) {
rating = "ok";
}
document.getElementById("fix-dm-output").textContent = (getMsg("fix_took") || "Fix took $TIME$ms (rating: $RATING$)").replace("$TIME$", Math.round(output.time)).replace("$RATING$", rating);
document.getElementById("fix-dm-output").textContent = (getMsg("fix_took") || "Fix took {{TIME}}ms (rating: {{RATING}})").replace("{{TIME}}", Math.round(output.time)).replace("{{RATING}}", rating);
chrome.storage.sync.get("dark_mode_fix", sync => {
if (sync["dark_mode_fix"].includes(output.path)) return;
sync["dark_mode_fix"].push(output.path);
@ -2213,7 +2228,7 @@ async function setup() {
try {
const result = await chrome.storage.local.get("planner_cache_v1");
const count = result?.["planner_cache_v1"]?.items?.length;
cacheText = formatStorageBytes(cacheBytes) + (typeof count === "number" ? getMsg("storage_items", " ($COUNT$ items)").replace("$COUNT$", count) : "");
cacheText = formatStorageBytes(cacheBytes) + (typeof count === "number" ? replaceCountPlaceholder(getMsg("storage_items", " ({{COUNT}} items)"), count) : "");
} catch (e) {
cacheText = formatStorageBytes(cacheBytes);
}
@ -2891,8 +2906,8 @@ function displaySavedThemes() {
Object.keys(local["saved_themes"]).forEach((key, index) => {
const created = new Date(parseInt(key));
let btn = makeElement("div", target, { "className": "saved-theme" });
let title = makeElement("p", btn, { "className": "theme-button-title", "textContent": (getMsg("theme_number") || "Theme $NUM$").replace("$NUM$", index + 1)});
let date = makeElement("p", btn, { "className": "theme-button-creator", "textContent": (getMsg("relative_ago", "$TIME$ ago")).replace("$TIME$", getRelativeDate(created).time) });
let title = makeElement("p", btn, { "className": "theme-button-title", "textContent": (getMsg("theme_number") || "Theme {{NUM}}").replace("{{NUM}}", index + 1)});
let date = makeElement("p", btn, { "className": "theme-button-creator", "textContent": (getMsg("relative_ago", "{{TIME}} ago")).replace("{{TIME}}", getRelativeDate(created).time) });
let remove = makeElement("div", btn, { "className": "theme-button-remove", "textContent": "x" });
btn.style.backgroundImage = `linear-gradient(rgba(0, 0, 0, 0.44), rgba(0, 0, 0, 0.44)), url(${local["saved_themes"][key]["custom_cards"]?.[0] || ""})`;
btn.addEventListener("click", () => {