KankenOnline/kanken_online/lang.py
2024-10-14 17:31:07 +01:00

104 lines
4.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from flask import session
EXISTING_STRINGS = {
"kanken_online",
"options",
"log_in",
"register",
"log_out",
"kanji",
"forum",
"main_page",
"username",
"password",
"search",
"search_placeholder",
"include_kanji",
"include_kotoba",
"username_required",
"password_required",
"incorrect_username",
"incorrect_password"
"about",
"about-para",
"indices"
}
ENGLISH = {
"kanken_online": "KankenOnline",
"options": "Options",
"log_in": "Log in",
"register": "Register",
"log_out": "Log out",
"kanji": "Kanji",
"forum": "Forum",
"main_page": "Main Page",
"username": "Username",
"password": "Password",
"search": "Search",
"search_placeholder": "Enter kanji or word",
"include_kanji": "Include kanji",
"include_kotoba": "Include kotoba",
"username_required": "Username required.",
"password_required": "Password required.",
"incorrect_username": "Incorrect username.",
"incorrect_password": "Incorrect password.",
"about": "About KankenOnline",
"about-para": "KankenOnline is a website seeking to provide resources to pass the Kanji Kentei level 1 exam. You can search through the approximately 6,300 characters included in Kanken, as well as generate a number of study materials automatically. For example, you can generate a PDF-format exam resembling the Kanken level 1 exam, which has the goal of mirroring the real thing as closely as possible for your preparation. Additionally, a variety of information about kanji is provided, among which phonetic series, rimes/kanji phonology, radicals, inseparable kanji, character origins and etymologies.",
"indices": "Indices",
"radical_index": "Radical index",
"indivisible_index": "Indivisible kanji index",
"phonetic_series": "Phonetic series",
"dark_theme": "Dark theme",
"light_theme": "Light theme",
"language": "Language",
"theme": "Color settings"
}
JAPANESE = {
"kanken_online": "漢検オンライン",
"options": "設定",
"log_in": "ログイン",
"register": "登録",
"log_out": "ログアウト",
"kanji": "漢字",
"forum": "掲示板",
"main_page": "ホームページ",
"username": "ユーザー名",
"password": "パスワード",
"search": "検索",
"search_placeholder": "漢字・言葉を入力",
"include_kanji": "漢字を含む",
"include_kotoba": "言葉を含む",
"username_required": "ユーザー名が必要です",
"password_required": "パスワードが必要です",
"incorrect_username": "ユーザー名が違います",
"incorrect_password": "パスワードが違います",
"about": "漢検オンラインとは",
"about-para": "漢検オンラインとは、漢検一級合格を目当てにした資料を供用しているサイトです。ここで漢検のやく字を検索でき、いろんな勉強材を自動的に作ることができます。たとえば、漢検一級模様の試験PDFを作ることができて、本物の漢検試験に大抵該当することが目的です。さらに、色々漢字についての情報を取り集めております。諧声域かいせいいき・音韻学・部首・不可分漢字・字源・語源などがその内です。",
"indices": "索引",
"radical_index": "部首索引",
"indivisible_index": "不可分漢字索引",
"phonetic_series": "諧声域索引",
"dark_theme": "ダークモード",
"light_theme": "ライトモード",
"language": "言語",
"theme": "色設定"
}
LANGUAGES = {
"en": ENGLISH,
"ja": JAPANESE
}
# assert all(all(key in lang for key in EXISTING_STRINGS) for lang in LANGUAGES) # Ensure all strings are mapped for all existing languages
# assert not [key for lang in LANGUAGES for key in lang if ((key in lang) and (key not in EXISTING_STRINGS))]
# assert not any((((key in lang) and (key not in EXISTING_STRINGS)) for key in lang) for lang in LANGUAGES) # Ensure no languages have strings not specified by the main index
def localize(text_id: str, language: dict[str, str] = None) -> str:
if language is None:
preference = session.get("language", "en")
language = LANGUAGES.get(preference)
return language[text_id]