Use JSON files from file system to specify the translation strings
This commit is contained in:
parent
567a02bd24
commit
58dbdf6f0e
@ -105,6 +105,8 @@ def create_app(test_config=None):
|
||||
}
|
||||
with open(Path(app.root_path, "static", "lang", f"{language}.json"), mode="w") as f:
|
||||
json.dump(strings[language], f, ensure_ascii=False, indent=0)
|
||||
|
||||
lang.update_languages()
|
||||
return redirect("/translations")
|
||||
|
||||
# def use_english(text_id: str):
|
||||
|
@ -1,98 +1,26 @@
|
||||
import json
|
||||
from pathlib import Path
|
||||
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",
|
||||
"translations"
|
||||
}
|
||||
LanguageMapping = dict[str, str]
|
||||
|
||||
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",
|
||||
"translations": "Translations",
|
||||
}
|
||||
def load_language(lang_code: str) -> LanguageMapping:
|
||||
with open(Path("kanken_online/static/lang", f"{lang_code}.json")) as f:
|
||||
return json.load(f)
|
||||
|
||||
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": "漢検オンラインとは、漢検一級合格を目当てにした資料を供用しているサイトです。ここで漢検のやく6300字を検索でき、いろんな勉強材を自動的に作ることができます。たとえば、漢検一級模様の試験PDFを作ることができて、本物の漢検試験に大抵該当することが目的です。さらに、色々漢字についての情報を取り集めております。諧声域(かいせいいき)・音韻学・部首・不可分漢字・字源・語源などがその内です。",
|
||||
"indices": "索引",
|
||||
"radical_index": "部首索引",
|
||||
"indivisible_index": "不可分漢字索引",
|
||||
"phonetic_series": "諧声域索引",
|
||||
"dark_theme": "ダークモード",
|
||||
"light_theme": "ライトモード",
|
||||
"language": "言語",
|
||||
"theme": "色設定",
|
||||
"translations": "翻訳",
|
||||
}
|
||||
LANGUAGES = {}
|
||||
|
||||
LANGUAGES = {
|
||||
"en": ENGLISH,
|
||||
"ja": JAPANESE
|
||||
}
|
||||
def update_languages():
|
||||
ENGLISH = load_language("en")
|
||||
JAPANESE = load_language("ja")
|
||||
|
||||
global LANGUAGES
|
||||
LANGUAGES = {
|
||||
"en": ENGLISH,
|
||||
"ja": JAPANESE
|
||||
}
|
||||
|
||||
update_languages()
|
||||
|
||||
# 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))]
|
||||
|
Loading…
Reference in New Issue
Block a user