34 lines
1.1 KiB
GDScript
34 lines
1.1 KiB
GDScript
## LocaleManager — 本地化加载(Autoload: Locale)
|
||
## 权威来源:architecture_design.md ADR-A1(tr("KEY") + .po + TranslationServer)
|
||
## 加载 translations/*.po 并注册到 TranslationServer,设默认语言。
|
||
## 商业发行至少支持 简中 / 繁中 / 英 / 日 四语(P-S6-06)。
|
||
extends Node
|
||
|
||
const LOCALES: Array = ["zh_CN", "zh_TW", "en", "ja"]
|
||
const DEFAULT_LOCALE: String = "zh_CN"
|
||
|
||
func _ready() -> void:
|
||
for loc in LOCALES:
|
||
var path: String = "res://translations/%s.po" % loc
|
||
if ResourceLoader.exists(path):
|
||
var t = load(path)
|
||
if t is Translation:
|
||
TranslationServer.add_translation(t)
|
||
TranslationServer.set_locale(DEFAULT_LOCALE)
|
||
|
||
func set_locale(loc: String) -> void:
|
||
TranslationServer.set_locale(loc)
|
||
|
||
func get_locale() -> String:
|
||
return TranslationServer.get_locale()
|
||
|
||
## 调试 / 设置菜单用:循环切换语言
|
||
func cycle_locale() -> String:
|
||
var cur: String = TranslationServer.get_locale()
|
||
var idx: int = LOCALES.find(cur)
|
||
if idx < 0:
|
||
idx = 0
|
||
var nxt: String = LOCALES[(idx + 1) % LOCALES.size()]
|
||
TranslationServer.set_locale(nxt)
|
||
return nxt
|