What changed, and why it matters
This commit adds Hindi language support to the SeedSigner wallet interface. It registers a new Hindi font, adjusts font sizes for Hindi text, and adds Hindi to the language settings list. There is no security-relevant change.
No security action needed; treat as routine localization feature.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The change is purely localization/UI: it maps SettingsConstants.LOCALE__HINDI to NotoSansDevanagari-Regular, adds per-locale font sizes for Hindi in top navigation, body, and button text, and moves the Hindi locale from a commented-out placeholder to an active beta language in settings_definition.py. A new binary font file is added.
Changed components
src/seedsigner/gui/components.pysrc/seedsigner/models/settings_definition.pysrc/seedsigner/resources/fonts/NotoSansDevanagari-Regular.ttfInspect captured patch +7 / −4
diff --git a/src/seedsigner/gui/components.py b/src/seedsigner/gui/components.py
index d9a2e0b..5096cd7 100644
--- a/src/seedsigner/gui/components.py
+++ b/src/seedsigner/gui/components.py
@@ -52,7 +52,7 @@ class GUIConstants:
"default": "OpenSans-Regular",
SettingsConstants.LOCALE__ARABIC: "NotoSansAR-Regular",
SettingsConstants.LOCALE__CHINESE_SIMPLIFIED: "NotoSansSC-Regular",
- # SettingsConstants.LOCALE__CHINESE_TRADITIONAL: "NotoSansTC-Regular",
+ SettingsConstants.LOCALE__HINDI: "NotoSansDevanagari-Regular",
SettingsConstants.LOCALE__JAPANESE: "NotoSansJP-Regular",
SettingsConstants.LOCALE__KOREAN: "NotoSansKR-Regular",
SettingsConstants.LOCALE__PERSIAN: "NotoSansAR-Regular", # Uses the Arabic font
@@ -63,9 +63,10 @@ class GUIConstants:
TOP_NAV_TITLE_FONT_NAME["default"] = "OpenSans-SemiBold"
TOP_NAV_TITLE_FONT_SIZE = {
"default": 20,
+ SettingsConstants.LOCALE__CHINESE_SIMPLIFIED: 23, # Some chars won't render below 23px
+ SettingsConstants.LOCALE__HINDI: 22,
SettingsConstants.LOCALE__JAPANESE: 22, # Titles won't render below 22px
SettingsConstants.LOCALE__KOREAN: 23, # Titles won't render below 23px
- SettingsConstants.LOCALE__CHINESE_SIMPLIFIED: 23, # Some chars won't render below 23px
}
TOP_NAV_HEIGHT = 48
TOP_NAV_BUTTON_SIZE = 32
@@ -73,9 +74,10 @@ class GUIConstants:
BODY_FONT_NAME = BASE_LOCALE_FONTS.copy()
BODY_FONT_SIZE = {
"default": 17,
+ SettingsConstants.LOCALE__CHINESE_SIMPLIFIED: 18,
+ SettingsConstants.LOCALE__HINDI: 18,
SettingsConstants.LOCALE__JAPANESE: 18,
SettingsConstants.LOCALE__KOREAN: 18,
- SettingsConstants.LOCALE__CHINESE_SIMPLIFIED: 18,
}
BODY_FONT_MAX_SIZE = TOP_NAV_TITLE_FONT_SIZE["default"]
BODY_FONT_MIN_SIZE = 15
@@ -94,6 +96,7 @@ class GUIConstants:
"default": 18,
"ar": 18,
"fa": 18,
+ SettingsConstants.LOCALE__HINDI: 20,
SettingsConstants.LOCALE__JAPANESE: 20,
SettingsConstants.LOCALE__KOREAN: 20,
SettingsConstants.LOCALE__CHINESE_SIMPLIFIED: 20,
diff --git a/src/seedsigner/models/settings_definition.py b/src/seedsigner/models/settings_definition.py
index 2a6a1d7..90660f5 100644
--- a/src/seedsigner/models/settings_definition.py
+++ b/src/seedsigner/models/settings_definition.py
@@ -129,6 +129,7 @@ class SettingsConstants:
# --------- Beta languages ------------------------------------------------------
LOCALE__CHINESE_SIMPLIFIED: "(beta) 简体中文 (Chinese Simplified)",
+ LOCALE__HINDI: "(beta) हिन्दी (Hindi)",
LOCALE__JAPANESE: "(beta) 日本語 (Japanese)",
LOCALE__KOREAN: "(beta) 한국어 (Korean)",
LOCALE__THAI: "(beta) ไทย (Thai)",
@@ -149,7 +150,6 @@ class SettingsConstants:
# LOCALE__GUJARATI: "ગુજરાતી (Gujarati)",
LOCALE__HAUSA: "Hausa",
# LOCALE__HEBREW: "עברית (Hebrew)",
- # LOCALE__HINDI: "हिन्दी (Hindi)",
LOCALE__CROATIAN: "Hrvatski",
LOCALE__INDONESIAN: "Indonesia",
LOCALE__JAVANESE: "Jawa (Javanese)",
diff --git a/src/seedsigner/resources/fonts/NotoSansDevanagari-Regular.ttf b/src/seedsigner/resources/fonts/NotoSansDevanagari-Regular.ttf
new file mode 100644
index 0000000..ab3f433
Binary files /dev/null and b/src/seedsigner/resources/fonts/NotoSansDevanagari-Regular.ttf differ
Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.