aboutsummaryrefslogtreecommitdiff
path: root/middleware
diff options
context:
space:
mode:
authorBobby <[email protected]>2023-06-06 19:49:32 -0400
committerBobby <[email protected]>2023-06-06 19:50:02 -0400
commitb71094f06d4dce6777daaa7ae01104b8251c4c72 (patch)
treed20a7f0ae41c37070923d20da4e1316cf8444702 /middleware
parentd0384f82bd2449e6f6b1abe4fb4491e20664a736 (diff)
downloadthatcomputerscientist-b71094f06d4dce6777daaa7ae01104b8251c4c72.tar.xz
thatcomputerscientist-b71094f06d4dce6777daaa7ae01104b8251c4c72.zip
日本語 Approaching Fast: Courtesy of Google Translate
Diffstat (limited to 'middleware')
-rw-r--r--middleware/translationMiddleware.py47
-rw-r--r--middleware/uuidmiddleware.py2
2 files changed, 48 insertions, 1 deletions
diff --git a/middleware/translationMiddleware.py b/middleware/translationMiddleware.py
new file mode 100644
index 00000000..de143286
--- /dev/null
+++ b/middleware/translationMiddleware.py
@@ -0,0 +1,47 @@
+from google.cloud import translate_v2 as translate
+from django.conf import settings
+import os
+from django.core.cache import cache
+
+cred_path = os.path.join(settings.BASE_DIR, 'credentials-translate.json')
+os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = cred_path
+
+class TranslationMiddleware:
+ def __init__(self, get_response):
+ self.get_response = get_response
+
+ def __call__(self, request):
+ response = self.get_response(request)
+
+ # translate only if lang cookie is set to ja
+ if request.COOKIES.get('lang') != 'ja':
+ return response
+
+ content_type = response.get('Content-Type', '').lower()
+ if 'text' not in content_type:
+ return response
+
+ HTML_content = response.content.decode('utf-8')
+
+ HTML_content = HTML_content.replace(
+ "That Computer Scientist",
+ "ザットコンピュータサイエンティスト"
+ )
+
+ # check if the content is already in the cache
+ if cache.get(HTML_content):
+ response.content = cache.get(HTML_content)
+ return response
+
+ translate_client = translate.Client()
+ target_language = 'ja'
+ translated_content = translate_client.translate(
+ HTML_content,
+ target_language=target_language,
+ )['translatedText']
+
+ # set the content in the cache for 7 days
+ cache.set(HTML_content, translated_content, 60 * 60 * 24 * 7)
+
+ response.content = translated_content.encode('utf-8')
+ return response
diff --git a/middleware/uuidmiddleware.py b/middleware/uuidmiddleware.py
index 7a0a95b0..859000c5 100644
--- a/middleware/uuidmiddleware.py
+++ b/middleware/uuidmiddleware.py
@@ -51,7 +51,7 @@ def userTrackingContextProcessor(request):
admin_users.append(user_data)
return {
- 'anonymous_users': len(anonymous_users) - 1 if user_uuid else len(anonymous_users),
+ 'anonymous_users': len(anonymous_users),
'logged_in_users': len(logged_in_users),
'admin_users': len(admin_users),
}