From 7c1dd94888ba6b79b8b6e0669687fe41505d91dc Mon Sep 17 00:00:00 2001 From: Tor-Einar Skog <tor-einar.skog@bioforsk.no> Date: Wed, 12 Nov 2014 13:45:43 +0100 Subject: [PATCH] Even more language handling logic fix! --- VIPSWeb/views.py | 4 ++-- messages/models.py | 15 ++++++++++----- messages/views.py | 2 +- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/VIPSWeb/views.py b/VIPSWeb/views.py index 60e00c4e..3c8bb270 100644 --- a/VIPSWeb/views.py +++ b/VIPSWeb/views.py @@ -15,7 +15,7 @@ # You should have received a copy of the Bioforsk Open Source License # along with VIPSWeb. If not, see <http://www.bioforsk.no/licenses/>. # - +# @author: Tor-Einar Skog <tor-einar.skog@bioforsk.no> from django.shortcuts import render from django.conf import settings from django.utils import translation @@ -27,7 +27,7 @@ def index(request): message_tags = MessageTag.get_message_tags() messages_by_tag = {} for message_tag_id in settings.FRONTPAGE_MESSAGE_TAG_IDS: - messages = Message.get_messages_by_tag(message_tag_id) + messages = Message.get_messages_by_tag(message_tag_id, translation.get_language()) #print "MESSAGES: %s" % messages messages_by_tag[message_tag_id] = messages #for message in messages: diff --git a/messages/models.py b/messages/models.py index 1ad23990..406941d5 100644 --- a/messages/models.py +++ b/messages/models.py @@ -93,15 +93,15 @@ class Message: Currently this is a REST service """ @staticmethod - def get_message(message_id): + def get_message(message_id, current_language=settings.VIPSLOGIC_LANGUAGE_CODE): message_json = Message.get_message_as_json(message_id) - return Message.get_instance_from_dict(message_json) + return Message.get_instance_from_dict(message_json, current_language) @staticmethod - def get_messages_by_tag(tag_id): + def get_messages_by_tag(tag_id, current_language=settings.VIPSLOGIC_LANGUAGE_CODE): messages = [] for item in Message.get_messages_by_tag_as_json(tag_id): - message = Message.get_instance_from_dict(item) + message = Message.get_instance_from_dict(item, current_language) messages.append(message) return messages @@ -158,7 +158,12 @@ class Message: for message_locale in message_locale_set: if message_locale["messageLocalePK"]["locale"] == language: return message_locale - # Fallback: Return the first locale in the set + # Fallback: Find message in web site's default language + for message_locale in message_locale_set: + if message_locale["messageLocalePK"]["locale"] == settings.LANGUAGE_CODE: + return message_locale + # If none of this works, try to return the first locale found + # If no locale, return empty set if len(message_locale_set) > 0: return message_locale_set[0] else: diff --git a/messages/views.py b/messages/views.py index 5f6d3778..254c38e1 100644 --- a/messages/views.py +++ b/messages/views.py @@ -30,6 +30,6 @@ def index(request): def detail(request, message_id): context = { #'message' : get_object_or_404(Message, pk=message_id) - 'message': Message.get_message(message_id) + 'message': Message.get_message(message_id, translation.get_language()) } return render(request, 'messages/detail.html', context) \ No newline at end of file -- GitLab