Merge pull request #558 from mawoka-myblock/translation

Translations update from Hosted Weblate
This commit is contained in:
Marlon
2026-07-19 10:56:18 +02:00
committed by GitHub
9 changed files with 213 additions and 88 deletions
+6 -20
View File
@@ -47,29 +47,17 @@ class OpenIDResponse(BaseModel):
@router.get("/login")
async def openid_login(req: Request):
if (
settings.custom_openid_provider.client_id is None
or settings.custom_openid_provider.client_secret is None
):
raise HTTPException(
status_code=501, detail="Custom-OAuth-Login isn't available on this server"
)
if settings.custom_openid_provider.client_id is None or settings.custom_openid_provider.client_secret is None:
raise HTTPException(status_code=501, detail="Custom-OAuth-Login isn't available on this server")
oauth = init_oauth()
return await oauth.custom.authorize_redirect(
req, f"{settings.root_address}/api/v1/users/oauth/custom/auth"
)
return await oauth.custom.authorize_redirect(req, f"{settings.root_address}/api/v1/users/oauth/custom/auth")
@router.get("/auth")
async def auth(request: Request, response: Response):
if (
settings.custom_openid_provider.client_id is None
or settings.custom_openid_provider.client_secret is None
):
raise HTTPException(
status_code=501, detail="Custom-OAuth-Login isn't available on this server"
)
if settings.custom_openid_provider.client_id is None or settings.custom_openid_provider.client_secret is None:
raise HTTPException(status_code=501, detail="Custom-OAuth-Login isn't available on this server")
access_token = request.cookies.get("access_token")
rememberme_token = request.cookies.get("rememberme_token")
if access_token is not None:
@@ -80,9 +68,7 @@ async def auth(request: Request, response: Response):
except HTTPException:
pass
if rememberme_token is not None:
return await rememberme_check(
rememberme_token=rememberme_token, response=response
)
return await rememberme_check(rememberme_token=rememberme_token, response=response)
oauth = init_oauth()
user_data = await oauth.custom.authorize_access_token(request)
+4 -12
View File
@@ -76,21 +76,15 @@ class GitHubOauthResponse(BaseModel):
@router.get("/login")
async def github_login(req: Request):
if settings.github_client_id is None or settings.github_client_secret is None:
raise HTTPException(
status_code=501, detail="GitHub-Login isn't available on this server"
)
raise HTTPException(status_code=501, detail="GitHub-Login isn't available on this server")
oauth = init_oauth()
return await oauth.github.authorize_redirect(
req, f"{settings.root_address}/api/v1/users/oauth/github/auth"
)
return await oauth.github.authorize_redirect(req, f"{settings.root_address}/api/v1/users/oauth/github/auth")
@router.get("/auth")
async def auth(request: Request, response: Response):
if settings.github_client_id is None or settings.github_client_secret is None:
raise HTTPException(
status_code=501, detail="GitHub-Login isn't available on this server"
)
raise HTTPException(status_code=501, detail="GitHub-Login isn't available on this server")
access_token = request.cookies.get("access_token")
rememberme_token = request.cookies.get("rememberme_token")
if access_token is not None:
@@ -101,9 +95,7 @@ async def auth(request: Request, response: Response):
except HTTPException:
pass
if rememberme_token is not None:
return await rememberme_check(
rememberme_token=rememberme_token, response=response
)
return await rememberme_check(rememberme_token=rememberme_token, response=response)
oauth = init_oauth()
try:
token = await oauth.github.authorize_access_token(request)
+4 -12
View File
@@ -51,22 +51,16 @@ class OauthGoogleResponse(BaseModel):
@router.get("/login")
async def google_login(req: Request):
if settings.google_client_secret is None or settings.google_client_id is None:
raise HTTPException(
status_code=501, detail="Google-Login isn't available on this server"
)
raise HTTPException(status_code=501, detail="Google-Login isn't available on this server")
oauth = init_oauth()
return await oauth.google.authorize_redirect(
req, f"{settings.root_address}/api/v1/users/oauth/google/auth"
)
return await oauth.google.authorize_redirect(req, f"{settings.root_address}/api/v1/users/oauth/google/auth")
@router.get("/auth")
async def auth(request: Request, response: Response):
if settings.google_client_secret is None or settings.google_client_id is None:
raise HTTPException(
status_code=501, detail="Google-Login isn't available on this server"
)
raise HTTPException(status_code=501, detail="Google-Login isn't available on this server")
access_token = request.cookies.get("access_token")
rememberme_token = request.cookies.get("rememberme_token")
if access_token is not None:
@@ -77,9 +71,7 @@ async def auth(request: Request, response: Response):
except HTTPException:
pass
if rememberme_token is not None:
return await rememberme_check(
rememberme_token=rememberme_token, response=response
)
return await rememberme_check(rememberme_token=rememberme_token, response=response)
oauth = init_oauth()
user_data = await oauth.google.authorize_access_token(request)
+1 -1
View File
@@ -191,7 +191,7 @@
"play_quiz": "2. Resol el qüestionari",
"see_all_quizzes": "Mostra tots els teus qüestionaris",
"completely_free": "Completament gratuït",
"completely_free_content": "",
"completely_free_content": "ClassQuiz és completament gratuït (per a l'usuari), sense cap pla de pagament o redireccions molestes a pàgines d'actualitzacions. Les donacions són molt apreciades.",
"user_friendly_content": "ClassQuiz pretén ser senzill, per tal de poder ser emprat per tothom.",
"no_tracking_content": "Altres aplicacions registren el que feu i envien aquesta informació a terceres parts. ClassQuiz no ho fa.",
"multilingual_content": "",
+5 -5
View File
@@ -160,7 +160,7 @@
"backup_code": "Código de la copia de seguridad",
"totp": "contraseña de un solo uso (Totp)",
"text": "Texto",
"order": "Ordenar",
"order": "Pedido",
"results": "Resultados",
"note": "Nota",
"player_plural": "Jugadores",
@@ -173,7 +173,7 @@
"finish": "Finalizar",
"normal": "Normal",
"selected": "Seleccionado",
"select": "Seleccionar",
"select": "Selección",
"quiz": "Cuestionario",
"quiztivity": "Quiztivity",
"next": "Siguiente",
@@ -288,7 +288,7 @@
"order_description": "Las respuestas se pueden poner en el orden correcto",
"text_description": "Los jugadores pueden introducir texto",
"range_description": "Se puede seleccionar un intervalo de números con un control deslizante",
"check_choice_description": "Todas las respuestas correctas deben seleccionarse para obtener puntos",
"check_choice_description": "Hay que elegir todas las respuestas correctas para sumar puntos",
"need_more_help": "¿Necesitas más ayuda?",
"enter_answer": "Escribe una respuesta",
"visit_docs": "Visita los documentos.",
@@ -362,7 +362,7 @@
"player_count": "Número de jugadores",
"no_results_so_far": "No hay resultados guardados hasta ahora...",
"general_overview": {
"sentence": "El cuestionario \"{{title}}\", el cual tuvo {{date}} jugadores, tenía {{player_count}} jugadores con una puntuación media de {{average_score}}."
"sentence": "La prueba \"{{title}}\", el cual tuvo jugadores en {{date}} tenía {{player_count}} jugadores con una puntuación media de {{average_score}}."
}
},
"result_page": {
@@ -406,7 +406,7 @@
"enable_totp": "Activar TOTP"
},
"view_quiz_page": {
"made_by": "Hecho por",
"made_by": "Realizado por Anonimous",
"view_on_kahoot": "Ver en el original"
},
"start_game": {
+176 -20
View File
@@ -1,36 +1,192 @@
{
"index_page": {
"get_ranking_and_winners": "צפו בניקוד וראו מי זכה",
"completely_free": "לגמרי ללא עלות",
"create_a_quiz_from_scratch": "צור חידון מאפס בעזרת העורך וכלול תמונות ועוד",
"see_how_many_true_and_false": "צפו בכמה צדקו או טעו",
"see_all_quizzes": "צפו בכל החידונים שלכם",
"get_ranking_and_winners": "צפייה בניקוד והצגת הזוכה",
"completely_free": "לגמרי בחינם",
"create_a_quiz_from_scratch": "אפשר ליצור חידון מאפס בעזרת העורך ולכלול תמונות ועוד",
"see_how_many_true_and_false": "לראות כמה צדקו או טעו",
"see_all_quizzes": "צפייה בכל החידונים שיצרת",
"meta": {
"description": "ClassQuiz היא אפליקציית חידון ללמידה אינטראקטיבית עבור תלמידים, בקוד פתוח וחינמית לשימוש",
"description": "ClassQuiz היא יישום ליצירת חידונים ללמידה אינטראקטיבית לתלמידים, הזמין בקוד פתוח ובאופן חופשי",
"title": "בית"
},
"stats": "כבר יש {{user_count}} משתמשים ו-{{quiz_count}} חידונים ב-ClassQuiz.",
"see_what_true_and_false": "צפו במה היה נכון או לא נכון",
"teachers_site": "אתר המורה",
"students_site": "אתר התלמיד",
"stats": "כבר יש {{user_count}} משתמשים ו־{{quiz_count}} חידונים ב־ClassQuiz.",
"see_what_true_and_false": "לראות היכן צדקנו או טעינו",
"teachers_site": "אתר למורים",
"students_site": "אתר לתלמידים",
"no_tracking": "ללא מעקב",
"self_hostable": "ניתן לאחסון מקומי",
"self_hostable": "ניתן לאירוח מקומי",
"german_server": "שרת גרמני",
"user_friendly": "ידידותי למשתמש",
"quiz_results_downloadable": "תוצאות החידון ניתנות להורדה",
"multilingual": "רב לשוני",
"dark_mode": "מצב כהה",
"get_a_quiz": "1. קבל חידון",
"play_quiz": "2. שחקו את החידון",
"select_answer": "בחר את התשובה",
"choose_answer_wisely": "בחר את התשובה בחכמה",
"get_a_quiz": "1. השגת חידון",
"play_quiz": "2. הפעלת החידון",
"select_answer": "בחירת התשובה",
"choose_answer_wisely": "יש לבחור את התשובה בתבונה",
"view_results": "צפייה בתוצאות",
"check_if_chosen_wisely": "בדקו, אם בחרת בחוכמה",
"check_if_chosen_wisely": "אפשר לבדוק אם בחרת תשובה בתבונה",
"list_winners": "רשימת הזוכים",
"why_classquiz": "למה ClassQuiz?",
"no_tracking_content": "אחרים עוקבים אחריך ושולחים את המידע הזה לצד שלישי, אבל ClassQuiz לא.",
"slogan": "פלטפורמת חידון בקוד פתוח!",
"create_or_import": "צור או יבא",
"find_or_explore": "מצא (או גלה) חידונים שנוצרו או יובאו על ידי אנשים אחרים"
"no_tracking_content": תרים אחרים עוקבים אחריך ושולחים את המידע הזה לצד שלישי, אבל ClassQuiz לא.",
"slogan": "פלטפורמת הקוד הפתוח ליצירת חידונים!",
"create_or_import": "יצירה או ייבוא",
"find_or_explore": "אפשר למצוא (או לגלות) חידונים שנוצרו או יובאו על ידי אנשים אחרים",
"no_player_limit": "אין מגבלה על כמות השחקנים",
"no_player_limit_content": "ל־ClassQuiz אין מגבלה מלאכותית על כמות השחקנים. תיאורטית, יותר מאלף שחקנים יכולים להשתתף באותו החידון, אבל בפועל נבדקה כמות של עד 300 שחקנים לחידון.",
"import_quiz_from_kahoot_and_edit": "אפשר לייבא חידוני Kahoot! ולערוך אותם ב־ClassQuiz"
},
"overview_page": {
"created_at": "מועד יצירה",
"question_count": "כמות שאלות",
"no_quizzes": "יש ללחוץ על הכפתור „יצירה” או לייבא חידון כדי להתחיל."
},
"edit_page": {
"success_update_title": "החידון התעדכן."
},
"create_page": {
"success": {
"title": "החידון נוצר."
}
},
"register_page": {
"greeting": "נעים להכיר!",
"create_account": "יצירת חשבון",
"forgot_password?": "שכחת את הסיסמה?",
"already_have_account?": "כבר יש לך חשבון?"
},
"login_page": {
"welcome_back": "ברוך שובך.",
"login_or_create_account": "התחברות או יצירת חשבון",
"already_have_account": "אין לך חשבון?",
"email_or_username": "דוא״ל או שם משתמש",
"modal": {
"success": {
"success_check_mail": "התחברת. נא לבדוק את תיבת הדואר הנכנס.",
"success": "התחברת.",
"description": {
"success": "התחברת."
}
},
"error": {
"wrong_creds": "כתובת דוא״ל או סיסמה שגויות.",
"unexpected": "שגיאה לא צפויה!"
}
},
"use_backup_code": "שימוש בקוד גיבוי"
},
"words": {
"question": "שאלה",
"answer": "תשובה",
"stats": "סטטיסטיקה",
"features": "תכונות",
"login": "התחברות",
"email": "כתובת דוא״ל",
"username": "שם משתמש",
"password": "סיסמה",
"play": "הפעלה",
"edit": "עריכה",
"delete": "מחיקה",
"public": "ציבורי",
"start": "התחלה",
"create": "יצירה",
"import": "ייבוא",
"logout": "התנתקות",
"title": "כותרת",
"url": "כתובת",
"submit": "שליחה",
"connect": "התחברות",
"kick": "סילוק",
"register": "הרשמה",
"docs": "תיעוד",
"close": "סגירה",
"save": "שמירה",
"description": "תיאור",
"image": "תמונה",
"settings": "הגדרות",
"repeat_password": "חזרה על הסיסמה",
"overview": "סקירה כוללת",
"report": "דיווח",
"explore": "היחשפות",
"search": "חיפוש",
"screenshot": "צילום מסך",
"screenshot_plural": "צילומי מסך",
"browser": "דפדפן",
"view": "תצוגה",
"view_plural": "תצוגות",
"result": "תוצאה",
"result_plural": "תוצאות",
"count": "כמות",
"range": "טווח",
"multiple_choice": "בחירה מרובה",
"private": "פרטי",
"question_plural": "שאלות",
"find": "איתור",
"error": "שגיאה",
"download": "הורדה",
"continue": "המשך",
"backup_code": "קוד גיבוי",
"text": "טקסט",
"order": "סדר",
"note": "הערה",
"player_plural": "שחקנים",
"results": "תוצאות",
"unknown": "לא ידוע",
"never": "אף פעם",
"update": "עדכון",
"score": "ניקוד",
"slide": "שקופית",
"name": "שם",
"point": "נקודה",
"point_plural": "נקודות",
"back": "חזרה",
"finish": "סיום",
"select": "בחירה",
"quiz": "חידון",
"video": "סרטון",
"library": "ספרייה",
"progress": "התקדמות",
"speed": "מהירות",
"upload": "העלאה",
"files_library": "ספריית קבצים",
"answer_plural": "תשובות",
"yes": "כן",
"no": "לא",
"analytics": "ניתוח נתונים",
"rating": "דירוג",
"like": "לייק",
"like_plural": "לייקים",
"play_plural": "הפעלות",
"info": "מידע",
"player": "שחקן"
},
"editor": {
"time_in_seconds": "זמן בשניות",
"add_new_answer": "הוספת תשובה חדשה",
"add_new_question": "הוספת שאלה חדשה",
"delete_question": "מחיקת שאלה",
"delete_answer": "מחיקת תשובה",
"no_title": "אין כותרת...",
"empty": "ריק...",
"bg_image": "תמונת רקע",
"slide": {
"text": "טקסט",
"rectangle": "מלבן",
"rectangle_description": "פשוט מלבן"
},
"visit_docs": "נא לעיין בתיעוד.",
"advanced_settings": "הגדרות מתקדמות"
},
"import_page": {
"a_kahoot_quiz": "חידון Kahoot!",
"url_should_look_like_this": "הכתובת צריכה להיראות כך: https://create.kahoot.it/details/...",
"classquiz_quiz": "חידון ClassQuiz"
},
"admin_page": {
"start_game": "התחלת המשחק",
"time_left": "זמן נותר",
"get_results": "קבלת התוצאות",
"get_final_results": "קבלת התוצאות הסופיות",
"show_next_question": "הצגת השאלה הבאה"
}
}
+8 -4
View File
@@ -46,7 +46,7 @@
"how_does_classquiz_work": "கிளாச் க்விச் கூட எவ்வாறு செயல்படுகிறது?",
"no_player_limit": "வீரர் வரம்பு இல்லை",
"no_player_limit_content": "ClassQuiz க்கு செயற்கை வீரர் வரம்பு இல்லை. கோட்பாட்டில், 1000+ வீரர்கள் ஒரே நொடி வினாவை விளையாட முடியும், ஆனால் இது ஒரு நொடி வினா வரை 300 வீரர்களுடன் சோதிக்கப்படுகிறது.",
"import_quiz_from_kahoot_and_edit": "ஏற்றுமதி"
"import_quiz_from_kahoot_and_edit": "கஊட்டிலிருந்து நொடி வினாவை இறக்குமதி செய்! வகுப்பு வினாடிவினாவில் அவற்றைத் திருத்தவும்"
},
"play_page": {
"join_description": "{{pin} at இல் சேரவும், {{url}}} ஐ உள்ளிடவும்.",
@@ -247,7 +247,9 @@
"visit_docs": "டாக்சைப் பார்வையிடவும்.",
"enter_answer": "ஒரு பதிலை உள்ளிடவும்",
"enable_reorder": "மறுதொடக்கம் பயன்முறையை இயக்கவும்",
"disable_reorder": "மறுதொடக்கம் பயன்முறையை முடக்கு"
"disable_reorder": "மறுதொடக்கம் பயன்முறையை முடக்கு",
"advanced_settings": "மேம்பட்ட அமைப்புகள்",
"hide_question_results": "கேள்வி முடிவுகளை மறைக்கவா?"
},
"import_page": {
"need_help": "உதவி தேவையா?",
@@ -314,7 +316,8 @@
"search_for_own_quizzes": "உங்கள் சொந்த நொடி வினாக்களைத் தேடுங்கள்",
"views_n_plays": "காட்சிகள் மற்றும் நாடகங்கள்",
"info_analytics": "\"நாடகங்கள்\" நொடி வினா எவ்வளவு அடிக்கடி தொடங்கப்பட்டது என்பதை மட்டுமே காட்டுகிறது (நீங்கள் சேர்த்துள்ளீர்கள்), அதேசமயம் \"காட்சிகள்\" \"பார்வை\"-பக்கம் எவ்வளவு அடிக்கடி பார்வையிடப்பட்டது என்பதை கணக்கிடுகிறது, எனவே இது போட்களையும் கணக்கிடுகிறது (அதற்காக மன்னிக்கவும்).",
"commandpalette_notice": "கட்டளைத் தட்டுகளைத் திறக்க <kbd> ctr </kbd>+<kbd> k </kbd> அல்லது <kbd> மேவு </kbd>+<kbd> k </kbd> ஐ அழுத்தவும்"
"commandpalette_notice": "கட்டளைத் தட்டுகளைத் திறக்க <kbd> ctr </kbd>+<kbd> k </kbd> அல்லது <kbd> மேவு </kbd>+<kbd> k </kbd> ஐ அழுத்தவும்",
"create_quiz": "புதிய நொடி வினாவை உருவாக்கவும்"
},
"footer": {
"self_ads": "{{mawoka_link} by மற்றும் {{others_link} of உதவியுடன் தயாரிக்கப்பட்டது.",
@@ -370,7 +373,8 @@
"correct_answer": "{{count}} சரியான பதில்",
"correct_answer_plural": "{{count}} சரியான பதில்கள்",
"time_taken": "எடுக்கப்பட்ட நேரம்",
"player_score": "பிளேயர் ச்கோர்"
"player_score": "பிளேயர் ச்கோர்",
"player_correct_questions": "சரியான பதில்கள்"
},
"controllers": {
"add_new_controller": "புதிய கட்டுப்படுத்தியைச் சேர்க்கவும்",
+8 -8
View File
@@ -40,7 +40,7 @@
"multilingual_content": "",
"dark_mode": "暗黑模式",
"why_classquiz": "为什么选择ClassQuiz",
"community_driven": "",
"community_driven": "社区驱动",
"play_quiz": "2. 开始测验",
"see_all_quizzes": "查看您的所有测验",
"download_quizzes_content": ""
@@ -233,7 +233,7 @@
},
"overview_page": {
"question_count": "",
"created_at": "",
"created_at": "创建于",
"no_quizzes": ""
},
"settings_page": {
@@ -382,15 +382,15 @@
"login_page": {
"use_backup_code": "",
"email_or_username": "",
"already_have_account": "",
"already_have_account": "没有账号吗?",
"modal": {
"error": {
"description": {
"unexpected": "",
"wrong_creds": ""
"wrong_creds": "请确保你的密码和电子邮件地址是正确的。"
},
"wrong_creds": "",
"unexpected": ""
"wrong_creds": "电子邮件地址或密码错误。",
"unexpected": "发生了未预料的错误!"
},
"success": {
"success": "",
@@ -401,8 +401,8 @@
"success_check_mail": ""
}
},
"login_or_create_account": "",
"welcome_back": ""
"login_or_create_account": "登录或创建账户",
"welcome_back": "欢迎回来。"
},
"password_reset_page": {
"reset_password": ""
+1 -6
View File
@@ -65,12 +65,7 @@ export interface Question {
}
export type Answers =
| Answer[]
| RangeQuizAnswer
| VotingAnswer[]
| string
| TextQuizAnswer[]
| OrderQuizAnswer[];
Answer[] | RangeQuizAnswer | VotingAnswer[] | string | TextQuizAnswer[] | OrderQuizAnswer[];
export interface Answer {
right: boolean;