Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion annofabapi/__version__.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = "0.60.0"
__version__ = "0.60.3"
18 changes: 12 additions & 6 deletions annofabapi/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -162,17 +162,23 @@ def can_put_annotation(task: Task, my_account_id: str) -> bool:
return len(task["histories_by_phase"]) == 0 or task["account_id"] == my_account_id


def get_message(internationalization_message: Dict[str, Any], lang: str = "en-US") -> Optional[str]:
def get_message_for_i18n(internationalization_message: Dict[str, Any], lang: str = "en-US") -> str:
"""
アノテーション仕様で使われている`InternalizationMessage`クラスの値から、指定された言語のメッセージを取得する。

Args:
internationalization_message: 多言語化されたメッセージ
lang: 取得したいメッセージに対応する言語
lang: 取得したいメッセージに対応する言語コード。`en-US`または`ja-JP`のみサポートしています。

Returns:
指定した言語に対応するメッセージ。見つからない場合はNoneを返します。
"""
指定した言語に対応するメッセージ。

messages = internationalization_message["messages"]
return more_itertools.first_true(messages, pred=lambda e: e["lang"] == lang)
Raises:
ValueError: 引数langに対応するメッセージが見つからない場合
"""
messages: List[Dict[str, str]] = internationalization_message["messages"]
result = more_itertools.first_true(messages, pred=lambda e: e["lang"] == lang)
if result is not None:
return result["message"]
else:
raise ValueError(f"lang='{lang}'であるメッセージは見つかりませんでした。")
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[tool.poetry]
name = "annofabapi"
version = "0.60.0"
version = "0.60.3"
description = "Python Clinet Library of AnnoFab WebAPI (https://annofab.com/docs/api/)"
authors = ["yuji38kwmt"]
license = "MIT"
Expand Down
20 changes: 20 additions & 0 deletions tests/test_local_utils.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
import pytest

from annofabapi.models import TaskPhase
from annofabapi.utils import (
get_message_for_i18n,
get_number_of_rejections,
get_task_history_index_skipped_acceptance,
get_task_history_index_skipped_inspection,
Expand Down Expand Up @@ -612,3 +615,20 @@ def test_get_task_history_index_skipped_inspection_検査1回_教師付で提出
actual = get_task_history_index_skipped_inspection(task_history_list)
expected = []
assert all([a == b for a, b in zip(actual, expected)])


def test_get_message_for_i18n():
i18n_message = {
"messages": [{"lang": "ja-JP", "message": "自動車"}, {"lang": "en-US", "message": "car"}],
"default_lang": "ja-JP",
}
assert get_message_for_i18n(i18n_message) == "car"
assert get_message_for_i18n(i18n_message, lang="ja-JP") == "自動車"

i18n_message2 = {
"messages": [{"lang": "ja-JP", "message": "自動車"}],
"default_lang": "ja-JP",
}

with pytest.raises(ValueError):
get_message_for_i18n(i18n_message2, lang="en-US")