Coverage for src\agents_sdk_models\message.py: 75%

1"""

2 Module for localized message strings

3日本語/英語のメッセージ文字列を提供するモジュール

4"""

5

6 import os # English: Import os to read environment variables. 日本語: 環境変数読み取りのためosをインポート

7 import locale # English: Import locale to get system locale. 日本語: システムロケール取得のためlocaleをインポート

8

9 def _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"

25

26 DEFAULT_LANGUAGE = _detect_default_language()

27

28# Supported languages: English (en) and Japanese (ja)

29 MESSAGES: 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}

65

66 def get_message(key: str, lang: str = DEFAULT_LANGUAGE) -> str:

67 """

68 Get localized message by key and language

69 キーと言語からローカライズされたメッセージを取得する

70

71 Args:

72 key: Message key / メッセージキー

73 lang: Language code ('en' or 'ja') / 言語コード（'en' または 'ja'）

74

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", ""))