In my case Alexei, this wouldn't work as I use the Middleware to operate
language changes - settings.LANGUAGE_CODE would remain defaulted to en_US
(the only lang code that I have assigned in settings.py). Instead, I have
worked around this issue by replacing settings.LANGUAGE_CODE with
translation.get_language().
a.
On Friday, June 10, 2016 at 7:22:20 PM UTC+1, Alexei Peters wrote:
>
> Hi Andrea,
> There is a method in the models/concept.py file at line 375 called
> "get_preflabel"
>
> def get_preflabel(self, lang=settings.LANGUAGE_CODE):
>> ret = []
>> if self.values == []:
>> concept = Concept().get(id=self.id,
>> include_subconcepts=False, include_parentconcepts=False, include=['label'])
>> else:
>> concept = self
>> for value in concept.values:
>> if value.type == 'prefLabel':
>> if value.language == lang:
>> return value
>> elif value.language == lang.split('-')[0]:
>> ret.insert(0, value)
>> elif value.type == 'altLabel':
>> if value.language == lang:
>> ret.insert(0, value)
>> ret.append(value)
>> return ret[0] if len(ret) > 0 else ConceptValue()
>
>
> that method has been updated in Arches v4 to this:
>
> def get_preflabel(self, lang=settings.LANGUAGE_CODE):
>> score = 0
>> ranked_labels = []
>> if self.values == []:
>> concept = Concept().get(id=self.id,
>> include_subconcepts=False, include_parentconcepts=False, include=['label'])
>> else:
>> concept = self
>> for value in concept.values:
>> ranked_label = {
>> 'weight': 1,
>> 'value': value
>> }
>> if value.type == 'prefLabel':
>> ranked_label['weight'] = ranked_label['weight'] * 10
>> elif value.type == 'altLabel':
>> ranked_label['weight'] = ranked_label['weight'] * 4
>> if value.language == lang:
>> ranked_label['weight'] = ranked_label['weight'] * 10
>> elif value.language.split('-')[0] == lang.split('-')[0]:
>> ranked_label['weight'] = ranked_label['weight'] * 5
>> ranked_labels.append(ranked_label)
>> ranked_labels = sorted(ranked_labels, key=lambda label:
>> label['weight'], reverse=True)
>> if len(ranked_labels) == 0:
>> ranked_labels.append({
>> 'weight': 1,
>> 'value': ConceptValue()
>> })
>> return ranked_labels[0]['value']
>
>
> as a test, you might try replacing the old method with the new one.
> Also like I mentioned before, I would create prefLabels for all your
> Arabic concepts.
>
> If that fixes the issue, I can update the v3 code accordingly and you
> could then update your package from that.
>
> Hope that helps.
> Cheers,
> Alexei
>
>
> Director of Web Development - Farallon Geographics, Inc. - 971.227.3173
>
> On Fri, Jun 10, 2016 at 8:19 AM, <[email protected] <javascript:>>
> wrote:
>
>> That's what we had done in the beginning Alexei. However, for some
>> unclear reason, it would appear that Arches selects among prefLabels across
>> languages - so when we had all labels as prefLabels we ended up having some
>> concepts in Arabic and some in English. I was only able to fix that by
>> selecting altLabels instead. Any idea of why that error might have been
>> occurring?
>>
>> Andrea
>>
>> On Thursday, June 9, 2016 at 5:40:54 PM UTC+1, Alexei Peters wrote:
>>>
>>> Hi Andrea,
>>> Instead of using altLabels for the Arabic language, you should use
>>> prefLabels. Each language can (and should) specify a prefLabel. Once you
>>> do that the system should be able to discern the correct label.
>>> I'll try and send another email with more detail on how to set up an end
>>> point to switch the language.
>>> Cheers,
>>> Alexei
>>>
>>>
>>> Director of Web Development - Farallon Geographics, Inc. - 971.227.3173
>>>
>>> On Wed, Jun 8, 2016 at 7:43 AM, <[email protected]> wrote:
>>>
>>>> Thank you Alexei. As it happens, I had already,and successfully, set up
>>>> an Arabic translation of all of the static strings (the ones read by
>>>> Django's gettext). This works fine, though I am not too happy with having
>>>> Django automatically select a language based on Middleware: I'd much
>>>> rather
>>>> be able to switch languages at will by using the language dropdown in the
>>>> header.
>>>>
>>>> The major issue is how to get the app to display the alternative Arabic
>>>> labels that we entered in the RDM for each node and concept. Once I set up
>>>> my custom context processor to loop through the languages in the header,
>>>> the two languages will display correctly of course, but that won't be
>>>> enough unless I build the language dropdown within a form that, when
>>>> posted, leads the app to switch from prefLabels in en_US to altLabels in
>>>> ar. *This* is the point on which I would really welcome your input.
>>>> Have you already written some code to manipulate label visualisation?
>>>>
>>>> Best,
>>>>
>>>> Andrea
>>>>
>>>> On Monday, June 6, 2016 at 10:15:13 PM UTC+1, Alexei Peters wrote:
>>>>>
>>>>> Hi Andrea,
>>>>> You'll actually have to do several things to present the site in
>>>>> another language.
>>>>>
>>>>> 1. You'll have to add supply your own version of the
>>>>> template/header.htm file and as you mentioned loop through the
>>>>> languages
>>>>> provided by the system. To do that you'll probably want to add a
>>>>> context
>>>>> processor that get's the language information from the database. See
>>>>> arches/app/utils/context_processors.py for examples. Once you've
>>>>> created
>>>>> that, then add a reference to it in the TEMPLATE_CONTEXT_PROCESSORS
>>>>> section
>>>>> of settings.py. Once you've done this you should be able to access
>>>>> the
>>>>> languages from your new header.htm template.
>>>>> 2. In settings.py go to MIDDLEWARE_CLASSES and uncomment the line:
>>>>> 'django.middleware.locale.LocaleMiddleware'
>>>>> 3. Read the section entitled "How Django discovers language
>>>>> preference" in the reference documentation found here:
>>>>> https://media.readthedocs.org/pdf/django/1.6.x/django.pdf . There
>>>>> are several ways to set the language, but the easiest might be to set
>>>>> a
>>>>> cookie.
>>>>>
>>>>> Once you've done those things you should be well on your way to
>>>>> displaying your site in Arabic.
>>>>> Chees,
>>>>> Alexei
>>>>>
>>>>>
>>>>> Director of Web Development - Farallon Geographics, Inc. -
>>>>> 971.227.3173
>>>>>
>>>>> On Mon, Jun 6, 2016 at 7:12 AM, <[email protected]> wrote:
>>>>>
>>>>>> I am not sure I explained myself correctly Adam. Let me try again: we
>>>>>> have translated our entire platform in Arabic, including both the static
>>>>>> strings which Django reads via the .mo file and our nodes and concepts.
>>>>>> The
>>>>>> translations for the latter two have been entered via the RDM as
>>>>>> altLabels
>>>>>> selecting Arabic as a language. Arabic had been previously added as a
>>>>>> language via the Django admin panel (Models -> d_languages).
>>>>>>
>>>>>> Now, what I want to do is to be able to select the appropriate app
>>>>>> language in the header dropdown so that, when I select Arabic, I get the
>>>>>> whole app to be shown in Arabic. Do I have to write this whole class
>>>>>> from
>>>>>> scratch? Or does something exist already to support multilingual apps?
>>>>>>
>>>>>> Andrea
>>>>>>
>>>>>>
>>>>>> On Wednesday, June 1, 2016 at 10:38:48 PM UTC+1, Adam Cox wrote:
>>>>>>>
>>>>>>> Hi Andrea, technically this is possible, but I don't think it would
>>>>>>> do what you are hoping... The Languages dropdown is meant to be
>>>>>>> configured
>>>>>>> to allow the user to change the app's interface language, while the
>>>>>>> language concepts are only meant to be attributes for a resource (the
>>>>>>> language that an Information Resource is written in, for example).
>>>>>>>
>>>>>>> Adam
>>>>>>>
>>>>>>> On Wednesday, May 25, 2016 at 12:59:08 AM UTC-6,
>>>>>>> [email protected] wrote:
>>>>>>>>
>>>>>>>> Hi All,
>>>>>>>>
>>>>>>>> I am in need to change the static 'Languages' dropdown menu in the
>>>>>>>> header.htm template to a dynamic one looping through the list of
>>>>>>>> languages
>>>>>>>> in the concepts.d_languages table. Has someone already written this
>>>>>>>> code ?
>>>>>>>> I couldn't figure out how to read the language table via Django tags.
>>>>>>>>
>>>>>>>> Best,
>>>>>>>>
>>>>>>>> Andrea
>>>>>>>>
>>>>>>> --
>>>>>> -- To post, send email to [email protected]. To
>>>>>> unsubscribe, send email to [email protected]. For
>>>>>> more information, visit
>>>>>> https://groups.google.com/d/forum/archesproject?hl=en
>>>>>> ---
>>>>>> You received this message because you are subscribed to the Google
>>>>>> Groups "Arches Project" group.
>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>> send an email to [email protected].
>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>
>>>>>
>>>>> --
>>>> -- To post, send email to [email protected]. To unsubscribe,
>>>> send email to [email protected]. For more information,
>>>> visit https://groups.google.com/d/forum/archesproject?hl=en
>>>> ---
>>>> You received this message because you are subscribed to the Google
>>>> Groups "Arches Project" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>> an email to [email protected].
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
>>> --
>> -- To post, send email to [email protected] <javascript:>. To
>> unsubscribe, send email to [email protected] <javascript:>.
>> For more information, visit
>> https://groups.google.com/d/forum/archesproject?hl=en
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "Arches Project" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected] <javascript:>.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>
--
-- To post, send email to [email protected]. To unsubscribe, send
email to [email protected]. For more information,
visit https://groups.google.com/d/forum/archesproject?hl=en
---
You received this message because you are subscribed to the Google Groups
"Arches Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.