"""Tests for i18n plugin""" import os import sys import tempfile import json import pytest from pathlib import Path PLUGIN_DIR = Path(__file__).parent.parent / "store" / "NebulaShell" / "i18n" sys.path.insert(0, str(PLUGIN_DIR)) import importlib.util spec = importlib.util.spec_from_file_location("i18n_main", str(PLUGIN_DIR / "main.py")) main_module = importlib.util.module_from_spec(spec) spec.loader.exec_module(main_module) I18n = main_module.I18n class TestI18n: def test_default_language(self): i18n = I18n() assert i18n.get_language() == "zh-CN" def test_set_language_valid(self): i18n = I18n() assert i18n.set_language("en-US") == True assert i18n.get_language() == "en-US" def test_set_language_invalid(self): i18n = I18n() assert i18n.set_language("fr-FR") == False assert i18n.get_language() == "zh-CN" def test_supported_languages(self): i18n = I18n() langs = i18n.get_supported_languages() assert "zh-CN" in langs assert "en-US" in langs assert "ja-JP" in langs def test_translate_fallback_to_key(self): i18n = I18n() result = i18n.translate("nonexistent.key") assert result == "nonexistent.key" def test_register_and_translate(self): i18n = I18n() i18n.register_translations("zh-CN", "test", {"greeting": "你好"}) assert i18n.translate("greeting", "test") == "你好" def test_translate_with_format(self): i18n = I18n() i18n.register_translations("zh-CN", "test", {"welcome": "欢迎 {name}"}) result = i18n.translate("welcome", "test", name="张三") assert result == "欢迎 张三" def test_load_domain(self): i18n = I18n() i18n.load_domain("custom", {"key": "val"}) assert i18n.translate("key", "custom") == "val" def test_t_alias(self): i18n = I18n() assert i18n.t("missing") == "missing" def test_get_info(self): i18n = I18n() info = i18n.get_info() assert "language" in info assert "supported" in info assert "domains" in info def test_lifecycle(self): i18n = I18n() i18n.init() i18n.start() i18n.stop() assert i18n.get_language() == "zh-CN" if __name__ == '__main__': pytest.main([__file__, '-v'])