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]> 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]. 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.

Reply via email to