diff options
| author | Bobby <[email protected]> | 2023-06-06 19:49:32 -0400 |
|---|---|---|
| committer | Bobby <[email protected]> | 2023-06-06 19:50:02 -0400 |
| commit | b71094f06d4dce6777daaa7ae01104b8251c4c72 (patch) | |
| tree | d20a7f0ae41c37070923d20da4e1316cf8444702 /middleware | |
| parent | d0384f82bd2449e6f6b1abe4fb4491e20664a736 (diff) | |
| download | thatcomputerscientist-b71094f06d4dce6777daaa7ae01104b8251c4c72.tar.xz thatcomputerscientist-b71094f06d4dce6777daaa7ae01104b8251c4c72.zip | |
日本語 Approaching Fast: Courtesy of Google Translate
Diffstat (limited to 'middleware')
| -rw-r--r-- | middleware/translationMiddleware.py | 47 | ||||
| -rw-r--r-- | middleware/uuidmiddleware.py | 2 |
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), } |
