add reusable options menu plugin with localized UI

- Settings autoloads (Game/Input/Graphics/Audio) backed by FileManager,
  persisted to user:// JSON files
- OptionsMenu scene with tabs wired to each autoload: Game (locale),
  Input (invert vertical axis), Graphics (window mode, borderless,
  screen), Audio (master/music/fx volume)
- GraphicsSettings reads DisplayServer state when running in editor
  to avoid clobbering the editor's window mode; exported builds load
  from disk and apply via set_screen_and_apply with a _loading guard
  to suppress redundant writes
- Built-in translations for en/es/fr/de/ja/zh_CN registered at runtime
  from translations/gd_options.csv
- Control-prompt icon assets for keyboard, PlayStation, Xbox, Nintendo
- Flesh out README with scope and audio bus layout requirement

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Daniel Samson
2026-04-28 18:06:45 +01:00
co-authored by Claude Opus 4.7
parent 810e5a6da0
commit f0f8bdfafb
74 changed files with 1995 additions and 1 deletions
+18
View File
@@ -0,0 +1,18 @@
keys,en,es,fr,de,ja,zh_CN
Game,Game,Juego,Jeu,Spiel,ゲーム,游戏
Input,Input,Entrada,Entrée,Eingabe,入力,输入
Graphics,Graphics,Gráficos,Graphismes,Grafik,グラフィック,图像
Audio,Audio,Audio,Audio,Audio,オーディオ,音频
Back,Back,Atrás,Retour,Zurück,戻る,返回
Master,Master,General,Principal,Master,マスター,主音量
Music,Music,Música,Musique,Musik,音楽,音乐
FX,FX,Efectos,Effets,Effekte,効果音,音效
Window Mode,Window Mode,Modo de ventana,Mode de fenêtre,Fenstermodus,ウィンドウモード,窗口模式
Borderless,Borderless,Sin bordes,Sans bordure,Randlos,ボーダーレス,无边框
Screen,Screen,Pantalla,Écran,Bildschirm,画面,屏幕
Windowed,Windowed,Ventana,Fenêtré,Fenster,ウィンドウ,窗口
Windowed (Maximized),Windowed (Maximized),Ventana (Maximizada),Fenêtré (Maximisé),Fenster (Maximiert),ウィンドウ(最大化),窗口(最大化)
Fullscreen,Fullscreen,Pantalla completa,Plein écran,Vollbild,フルスクリーン,全屏
Invert Vertical Axis,Invert Vertical Axis,Invertir eje vertical,Inverser l'axe vertical,Vertikale Achse umkehren,縦軸を反転,反转垂直轴
Language,Language,Idioma,Langue,Sprache,言語,语言
Screen %d,Screen %d,Pantalla %d,Écran %d,Bildschirm %d,画面 %d,屏幕 %d
1 keys en es fr de ja zh_CN
2 Game Game Juego Jeu Spiel ゲーム 游戏
3 Input Input Entrada Entrée Eingabe 入力 输入
4 Graphics Graphics Gráficos Graphismes Grafik グラフィック 图像
5 Audio Audio Audio Audio Audio オーディオ 音频
6 Back Back Atrás Retour Zurück 戻る 返回
7 Master Master General Principal Master マスター 主音量
8 Music Music Música Musique Musik 音楽 音乐
9 FX FX Efectos Effets Effekte 効果音 音效
10 Window Mode Window Mode Modo de ventana Mode de fenêtre Fenstermodus ウィンドウモード 窗口模式
11 Borderless Borderless Sin bordes Sans bordure Randlos ボーダーレス 无边框
12 Screen Screen Pantalla Écran Bildschirm 画面 屏幕
13 Windowed Windowed Ventana Fenêtré Fenster ウィンドウ 窗口
14 Windowed (Maximized) Windowed (Maximized) Ventana (Maximizada) Fenêtré (Maximisé) Fenster (Maximiert) ウィンドウ(最大化) 窗口(最大化)
15 Fullscreen Fullscreen Pantalla completa Plein écran Vollbild フルスクリーン 全屏
16 Invert Vertical Axis Invert Vertical Axis Invertir eje vertical Inverser l'axe vertical Vertikale Achse umkehren 縦軸を反転 反转垂直轴
17 Language Language Idioma Langue Sprache 言語 语言
18 Screen %d Screen %d Pantalla %d Écran %d Bildschirm %d 画面 %d 屏幕 %d
+19
View File
@@ -0,0 +1,19 @@
[remap]
importer="csv_translation"
type="Translation"
uid="uid://ve0c3i7bkxwt"
[deps]
files=["res://addons/gd-options/translations/gd_options.en.translation", "res://addons/gd-options/translations/gd_options.es.translation", "res://addons/gd-options/translations/gd_options.fr.translation", "res://addons/gd-options/translations/gd_options.de.translation", "res://addons/gd-options/translations/gd_options.ja.translation", "res://addons/gd-options/translations/gd_options.zh_CN.translation"]
source_file="res://addons/gd-options/translations/gd_options.csv"
dest_files=["res://addons/gd-options/translations/gd_options.en.translation", "res://addons/gd-options/translations/gd_options.es.translation", "res://addons/gd-options/translations/gd_options.fr.translation", "res://addons/gd-options/translations/gd_options.de.translation", "res://addons/gd-options/translations/gd_options.ja.translation", "res://addons/gd-options/translations/gd_options.zh_CN.translation"]
[params]
compress=1
delimiter=0
unescape_keys=false
unescape_translations=true