1
1
import logging
2
+ import threading
2
3
3
4
import boto3
4
5
import requests
12
13
# Array of language : ['en', 'es', 'fr', ....]
13
14
AVAILABLE_LANGUAGES = [lang for lang , _ in settings .LANGUAGES ]
14
15
16
+ IFRC_TRANSLATION_CALL_COUNT = 0
17
+ IFRC_TRANSLATION_CALL_LOCK = threading .Lock ()
18
+
15
19
16
20
class BaseTranslator :
17
21
def _fake_translation (self , text , dest_language , source_language ):
@@ -99,6 +103,11 @@ def translate_text(self, text, dest_language, source_language=None):
99
103
# NOTE: Mocking for test purpose
100
104
return self ._fake_translation (text , dest_language , source_language )
101
105
106
+ global IFRC_TRANSLATION_CALL_COUNT
107
+ with IFRC_TRANSLATION_CALL_LOCK :
108
+ IFRC_TRANSLATION_CALL_COUNT += 1
109
+ logger .info (f"IFRC translation API call count: { IFRC_TRANSLATION_CALL_COUNT } " )
110
+
102
111
# A dirty workaround to handle oversized HTML+CSS texts, usually tables:
103
112
textTail = ""
104
113
if len (text ) > settings .AZURE_TRANSL_LIMIT :
@@ -124,6 +133,7 @@ def translate_text(self, text, dest_language, source_language=None):
124
133
# NOTE: Sending 'text' throws 500 from IFRC translation endpoint
125
134
# So only sending if html
126
135
payload ["textType" ] = "html"
136
+ logger .info (f"IFRC translation API call content: { text [:30 ]} ... to { dest_language } from { source_language } " )
127
137
response = requests .post (
128
138
self .url ,
129
139
headers = self .headers ,
0 commit comments