fix: .gitignore + add 44 language JSON files

This commit is contained in:
shuiyu1123 committed 2026-07-14 01:17:33 +08:00
1 parent e8fd68e27b
commit 8de545dd2c
227 files changed
+22603

No files matched your search

+542
View File
@@ -0,0 +1,542 @@
"""
Lity3D Editor 多语言翻译系统
支持: 中文、English、日本語、한국어、Español、Français、Deutsch、Русский、العربية、Português、Italiano、Türkçe
"""
import json, os
LANG_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), "languages")
_translations = {
"zh": {
"app_title": "Lity3D 编辑器",
"menu_file": "文件",
"menu_edit": "编辑",
"menu_build": "构建",
"menu_scene": "场景",
"menu_help": "帮助",
"menu_view": "视图",
"menu_language": "语言",
"new_file": "新建文件",
"open_file": "打开文件",
"open_folder": "打开文件夹",
"save": "保存",
"save_as": "另存为",
"exit": "退出",
"run": "运行",
"run_game": "运行游戏",
"run_file": "运行当前文件",
"stop": "停止",
"build_engine": "编译引擎",
"build_exe": "打包为 EXE",
"kill_process": "终止进程",
"new_scene": "新建场景",
"open_scene": "打开场景",
"save_scene": "保存场景",
"run_scene": "运行场景",
"about": "关于 Lity3D",
"docs": "API 文档",
"explorer": "资源管理器",
"output": "输出",
"console": "控制台",
"ready": "就绪",
"running": "运行中...",
"saved": "已保存",
"opened": "已打开",
"new_file_msg": "新文件",
"no_file": "没有打开文件",
"no_scene": "没有找到场景文件",
"build_first": "请先编译引擎",
"kill_done": "进程已终止",
"build_ok": "编译成功",
"build_err": "编译失败",
"packaged": "已打包",
"new_scene_ok": "新场景已创建",
"process_exit": "进程退出,返回码",
"cant_run": "无法运行此类文件",
"interpreter_not_found": "解释器未编译",
"theme": "主题",
"dark_theme": "深色主题",
"light_theme": "浅色主题",
"undo": "撤销",
"redo": "重做",
"cut": "剪切",
"copy": "复制",
"paste": "粘贴",
"select_all": "全选",
"find": "查找",
"replace": "替换",
"goto_line": "跳转到行",
"preferences": "首选项",
"recent_files": "最近文件",
"reload": "重新加载",
"close_tab": "关闭标签",
"close_all": "关闭所有",
"line": "行",
"col": "列",
"chars": "字符",
"encoding": "编码",
"new_scene_dialog_title": "新建场景",
"new_scene_name": "场景名称:",
"new_scene_type": "场景类型:",
"type_empty": "空场景",
"type_rpg": "RPG 模板",
"type_fps": "FPS 模板",
"type_platformer": "平台跳跃模板",
"type_custom": "自定义",
"create": "创建",
"cancel": "取消",
"confirm": "确认",
"delete": "删除",
"rename": "重命名",
"duplicate": "复制",
"properties": "属性",
"hierarchy": "层级",
"inspector": "检查器",
"game_view": "游戏视图",
"scene_view": "场景视图",
"project": "项目",
},
"en": {
"app_title": "Lity3D Editor",
"menu_file": "File",
"menu_edit": "Edit",
"menu_build": "Build",
"menu_scene": "Scene",
"menu_help": "Help",
"menu_view": "View",
"menu_language": "Language",
"new_file": "New File",
"open_file": "Open File",
"open_folder": "Open Folder",
"save": "Save",
"save_as": "Save As",
"exit": "Exit",
"run": "Run",
"run_game": "Run Game",
"run_file": "Run Current File",
"stop": "Stop",
"build_engine": "Build Engine",
"build_exe": "Package as EXE",
"kill_process": "Kill Process",
"new_scene": "New Scene",
"open_scene": "Open Scene",
"save_scene": "Save Scene",
"run_scene": "Run Scene",
"about": "About Lity3D",
"docs": "API Docs",
"explorer": "Explorer",
"output": "Output",
"console": "Console",
"ready": "Ready",
"running": "Running...",
"saved": "Saved",
"opened": "Opened",
"new_file_msg": "New file",
"no_file": "No file open",
"no_scene": "No scene file found",
"build_first": "Build engine first",
"kill_done": "Process killed",
"build_ok": "Build succeeded",
"build_err": "Build failed",
"packaged": "Packaged to",
"new_scene_ok": "New scene created",
"process_exit": "Process exited with code",
"cant_run": "Cannot run this file type",
"interpreter_not_found": "Interpreter not built",
"theme": "Theme",
"dark_theme": "Dark Theme",
"light_theme": "Light Theme",
"undo": "Undo",
"redo": "Redo",
"cut": "Cut",
"copy": "Copy",
"paste": "Paste",
"select_all": "Select All",
"find": "Find",
"replace": "Replace",
"goto_line": "Go to Line",
"preferences": "Preferences",
"recent_files": "Recent Files",
"reload": "Reload",
"close_tab": "Close Tab",
"close_all": "Close All",
"line": "Line",
"col": "Col",
"chars": "Characters",
"encoding": "Encoding",
"new_scene_dialog_title": "New Scene",
"new_scene_name": "Scene Name:",
"new_scene_type": "Scene Type:",
"type_empty": "Empty Scene",
"type_rpg": "RPG Template",
"type_fps": "FPS Template",
"type_platformer": "Platformer Template",
"type_custom": "Custom",
"create": "Create",
"cancel": "Cancel",
"confirm": "Confirm",
"delete": "Delete",
"rename": "Rename",
"duplicate": "Duplicate",
"properties": "Properties",
"hierarchy": "Hierarchy",
"inspector": "Inspector",
"game_view": "Game View",
"scene_view": "Scene View",
"project": "Project",
},
"ja": {
"app_title": "Lity3D エディタ",
"menu_file": "ファイル",
"menu_edit": "編集",
"menu_build": "ビルド",
"menu_scene": "シーン",
"menu_help": "ヘルプ",
"menu_view": "表示",
"menu_language": "言語",
"new_file": "新規ファイル",
"open_file": "ファイルを開く",
"open_folder": "フォルダを開く",
"save": "保存",
"save_as": "名前を付けて保存",
"exit": "終了",
"run": "実行",
"run_game": "ゲームを実行",
"run_file": "現在のファイルを実行",
"stop": "停止",
"build_engine": "エンジンをビルド",
"build_exe": "EXEにパッケージ",
"kill_process": "プロセスを終了",
"new_scene": "新規シーン",
"open_scene": "シーンを開く",
"save_scene": "シーンを保存",
"run_scene": "シーンを実行",
"about": "Lity3D について",
"docs": "API ドキュメント",
"explorer": "エクスプローラ",
"output": "出力",
"ready": "準備完了",
"running": "実行中...",
"dark_theme": "ダークテーマ",
"light_theme": "ライトテーマ",
"undo": "元に戻す",
"redo": "やり直す",
"save_as": "名前を付けて保存",
"line": "行",
"col": "列",
"cancel": "キャンセル",
"create": "作成",
},
"ko": {
"app_title": "Lity3D 편집기",
"menu_file": "파일",
"menu_edit": "편집",
"menu_build": "빌드",
"menu_scene": "씬",
"menu_help": "도움말",
"menu_view": "보기",
"menu_language": "언어",
"new_file": "새 파일",
"open_file": "파일 열기",
"open_folder": "폴더 열기",
"save": "저장",
"save_as": "다른 이름으로 저장",
"exit": "종료",
"run": "실행",
"run_game": "게임 실행",
"run_file": "현재 파일 실행",
"stop": "중지",
"build_engine": "엔진 빌드",
"build_exe": "EXE로 패키징",
"kill_process": "프로세스 종료",
"new_scene": "새 씬",
"about": "Lity3D 정보",
"docs": "API 문서",
"explorer": "탐색기",
"output": "출력",
"ready": "준비",
"running": "실행 중...",
"dark_theme": "다크 테마",
"light_theme": "라이트 테마",
"undo": "실행 취소",
"redo": "다시 실행",
"cancel": "취소",
"create": "생성",
"line": "줄",
"col": "열",
},
"es": {
"app_title": "Lity3D Editor",
"menu_file": "Archivo",
"menu_edit": "Editar",
"menu_build": "Construir",
"menu_scene": "Escena",
"menu_help": "Ayuda",
"menu_view": "Vista",
"menu_language": "Idioma",
"new_file": "Nuevo archivo",
"open_file": "Abrir archivo",
"save": "Guardar",
"save_as": "Guardar como",
"exit": "Salir",
"run": "Ejecutar",
"run_game": "Ejecutar juego",
"stop": "Detener",
"build_engine": "Compilar motor",
"build_exe": "Empaquetar como EXE",
"about": "Acerca de Lity3D",
"explorer": "Explorador",
"output": "Salida",
"ready": "Listo",
"running": "Ejecutando...",
"dark_theme": "Tema oscuro",
"light_theme": "Tema claro",
"undo": "Deshacer",
"redo": "Rehacer",
"cancel": "Cancelar",
"create": "Crear",
"line": "Línea",
"col": "Col",
},
"fr": {
"app_title": "Lity3D Éditeur",
"menu_file": "Fichier",
"menu_edit": "Édition",
"menu_build": "Construire",
"menu_scene": "Scène",
"menu_help": "Aide",
"menu_view": "Affichage",
"menu_language": "Langue",
"new_file": "Nouveau fichier",
"open_file": "Ouvrir fichier",
"save": "Enregistrer",
"save_as": "Enregistrer sous",
"exit": "Quitter",
"run": "Exécuter",
"run_game": "Exécuter le jeu",
"stop": "Arrêter",
"build_engine": "Compiler le moteur",
"build_exe": "Package EXE",
"about": "À propos",
"explorer": "Explorateur",
"output": "Sortie",
"ready": "Prêt",
"running": "En exécution...",
"dark_theme": "Thème sombre",
"light_theme": "Thème clair",
"undo": "Annuler",
"redo": "Rétablir",
"cancel": "Annuler",
"create": "Créer",
"line": "Ligne",
"col": "Col",
},
"de": {
"app_title": "Lity3D Editor",
"menu_file": "Datei",
"menu_edit": "Bearbeiten",
"menu_build": "Erstellen",
"menu_scene": "Szene",
"menu_help": "Hilfe",
"menu_view": "Ansicht",
"menu_language": "Sprache",
"new_file": "Neue Datei",
"open_file": "Datei öffnen",
"save": "Speichern",
"save_as": "Speichern unter",
"exit": "Beenden",
"run": "Ausführen",
"run_game": "Spiel starten",
"stop": "Stopp",
"build_engine": "Engine erstellen",
"build_exe": "Als EXE paketieren",
"about": "Über Lity3D",
"explorer": "Explorer",
"output": "Ausgabe",
"ready": "Bereit",
"running": "Wird ausgeführt...",
"dark_theme": "Dunkles Theme",
"light_theme": "Helles Theme",
"undo": "Rückgängig",
"redo": "Wiederholen",
"cancel": "Abbrechen",
"create": "Erstellen",
"line": "Zeile",
"col": "Spalte",
},
"ru": {
"app_title": "Lity3D Редактор",
"menu_file": "Файл",
"menu_edit": "Правка",
"menu_build": "Сборка",
"menu_scene": "Сцена",
"menu_help": "Справка",
"menu_view": "Вид",
"menu_language": "Язык",
"new_file": "Новый файл",
"open_file": "Открыть файл",
"save": "Сохранить",
"save_as": "Сохранить как",
"exit": "Выход",
"run": "Запуск",
"run_game": "Запустить игру",
"stop": "Стоп",
"build_engine": "Собрать движок",
"build_exe": "Упаковать в EXE",
"about": "О Lity3D",
"explorer": "Проводник",
"output": "Вывод",
"ready": "Готово",
"running": "Выполняется...",
"dark_theme": "Тёмная тема",
"light_theme": "Светлая тема",
"undo": "Отменить",
"redo": "Повторить",
"cancel": "Отмена",
"create": "Создать",
"line": "Строка",
"col": "Столбец",
},
"pt": {
"app_title": "Lity3D Editor",
"menu_file": "Arquivo",
"menu_edit": "Editar",
"menu_build": "Compilar",
"menu_scene": "Cena",
"menu_help": "Ajuda",
"menu_view": "Visualizar",
"menu_language": "Idioma",
"new_file": "Novo arquivo",
"open_file": "Abrir arquivo",
"save": "Salvar",
"save_as": "Salvar como",
"exit": "Sair",
"run": "Executar",
"run_game": "Executar jogo",
"stop": "Parar",
"build_engine": "Compilar engine",
"build_exe": "Empacotar EXE",
"about": "Sobre Lity3D",
"explorer": "Explorador",
"output": "Saída",
"ready": "Pronto",
"running": "Executando...",
"dark_theme": "Tema escuro",
"light_theme": "Tema claro",
"undo": "Desfazer",
"redo": "Refazer",
"cancel": "Cancelar",
"create": "Criar",
"line": "Linha",
"col": "Col",
},
"it": {
"app_title": "Lity3D Editor",
"menu_file": "File",
"menu_edit": "Modifica",
"menu_build": "Compila",
"menu_scene": "Scena",
"menu_help": "Aiuto",
"menu_view": "Vista",
"menu_language": "Lingua",
"new_file": "Nuovo file",
"open_file": "Apri file",
"save": "Salva",
"save_as": "Salva come",
"exit": "Esci",
"run": "Esegui",
"run_game": "Esegui gioco",
"stop": "Ferma",
"build_engine": "Compila engine",
"build_exe": "Pacchetta EXE",
"about": "Informazioni",
"explorer": "Esplora",
"output": "Output",
"ready": "Pronto",
"running": "In esecuzione...",
"dark_theme": "Tema scuro",
"light_theme": "Tema chiaro",
"undo": "Annulla",
"redo": "Ripristina",
"cancel": "Annulla",
"create": "Crea",
"line": "Riga",
"col": "Col",
},
"tr": {
"app_title": "Lity3D Editör",
"menu_file": "Dosya",
"menu_edit": "Düzenle",
"menu_build": "Derle",
"menu_scene": "Sahne",
"menu_help": "Yardım",
"menu_view": "Görünüm",
"menu_language": "Dil",
"new_file": "Yeni dosya",
"open_file": "Dosya aç",
"save": "Kaydet",
"save_as": "Farklı kaydet",
"exit": "Çıkış",
"run": "Çalıştır",
"run_game": "Oyunu çalıştır",
"stop": "Durdur",
"build_engine": "Motoru derle",
"build_exe": "EXE paketle",
"about": "Hakkında",
"explorer": "Gezgin",
"output": "Çıktı",
"ready": "Hazır",
"running": "Çalışıyor...",
"dark_theme": "Koyu tema",
"light_theme": "Açık tema",
"undo": "Geri al",
"redo": "Yinele",
"cancel": "İptal",
"create": "Oluştur",
"line": "Satır",
"col": "Sütun",
},
}
_current_lang = "zh"
_listeners = []
LANG_NAMES = {
"zh": "中文", "en": "English", "ja": "日本語", "ko": "한국어",
"es": "Español", "fr": "Français", "de": "Deutsch", "ru": "Русский",
"pt": "Português", "it": "Italiano", "tr": "Türkçe",
}
def t(key):
lang = _translations.get(_current_lang, _translations["en"])
return lang.get(key, _translations["en"].get(key, key))
def set_language(lang_code):
global _current_lang
if lang_code in _translations:
_current_lang = lang_code
for cb in _listeners:
cb()
def get_language():
return _current_lang
def on_language_change(callback):
_listeners.append(callback)
def get_all_languages():
return [(code, LANG_NAMES.get(code, code)) for code in _translations]
def save_language(code):
path = os.path.join(os.path.dirname(os.path.abspath(__file__)), ".lang")
with open(path, "w") as f:
f.write(code)
def load_language():
global _current_lang
path = os.path.join(os.path.dirname(os.path.abspath(__file__)), ".lang")
if os.path.exists(path):
with open(path) as f:
code = f.read().strip()
if code in _translations:
_current_lang = code