Coverage for src\agents_sdk_models\message.py: 75%
16 statements
« prev ^ index » next coverage.py v7.8.0, created at 2025-06-04 17:38 +0900
« prev ^ index » next coverage.py v7.8.0, created at 2025-06-04 17:38 +0900
1"""
2Module for localized message strings
3日本語/英語のメッセージ文字列を提供するモジュール
4"""
6import os # English: Import os to read environment variables. 日本語: 環境変数読み取りのためosをインポート
7import locale # English: Import locale to get system locale. 日本語: システムロケール取得のためlocaleをインポート
9def _detect_default_language() -> str:
10 """
11 Detect default language from environment variable or OS setting.
12 環境変数やOS設定からデフォルトの言語を判定します。
13 日本語の場合 'ja' を返し、それ以外は 'en' を返します。
14 """
15 # Check environment variables commonly used for locale
16 for env_var in ("LANG", "LC_ALL", "LC_MESSAGES"):
17 lang_val = os.environ.get(env_var, "")
18 if lang_val.lower().startswith("ja"):
19 return "ja"
20 # Fallback to system locale
21 sys_loc = locale.getdefaultlocale()[0] or ""
22 if sys_loc.lower().startswith("ja"):
23 return "ja"
24 return "en"
26DEFAULT_LANGUAGE = _detect_default_language()
28# Supported languages: English (en) and Japanese (ja)
29MESSAGES: dict[str, dict[str, str]] = {
30 "evaluation_feedback_header": {
31 "en": "Evaluation feedback:",
32 "ja": "評価フィードバック:"
33 },
34 "ai_history_header": {
35 "en": "Past AI outputs:",
36 "ja": "過去のAI出力:"
37 },
38 "user_input_prefix": {
39 "en": "UserInput:",
40 "ja": "ユーザー入力:"
41 },
42 # Trace labels for console tracing
43 "trace_instruction": {
44 "en": "Instruction:",
45 "ja": "インストラクション:"
46 },
47 "trace_prompt": {
48 "en": "Prompt:",
49 "ja": "プロンプト:"
50 },
51 "trace_output": {
52 "en": "Output:",
53 "ja": "LLM出力:"
54 },
55 # Evaluation format instructions
56 "eval_output_format_header": {
57 "en": "Output format:",
58 "ja": "出力フォーマット:"
59 },
60 "eval_json_schema_instruction": {
61 "en": "JSON with the following format:",
62 "ja": "JSONで以下の形式にしてください:"
63 }
64}
66def get_message(key: str, lang: str = DEFAULT_LANGUAGE) -> str:
67 """
68 Get localized message by key and language
69 キーと言語からローカライズされたメッセージを取得する
71 Args:
72 key: Message key / メッセージキー
73 lang: Language code ('en' or 'ja') / 言語コード('en' または 'ja')
75 Returns:
76 Localized message string / ローカライズされたメッセージ文字列
77 """
78 # Ensure lang is either 'ja' or 'en'
79 use_lang = lang if lang in ("en", "ja") else DEFAULT_LANGUAGE
80 return MESSAGES.get(key, {}).get(use_lang, MESSAGES.get(key, {}).get("en", ""))