All this makes sense Alexei. However, I am still trying to figure out at 
which point in concept.py (or other python file) does the get_preflabel get 
called when created a resource graph. I am asking this as I am still unable 
to see the translated labels in the already selected branches (those, in 
other words, that get populated in the templates by branch-list.js).

Can you help?

Thanks,

Andrea

On Monday, June 13, 2016 at 10:50:37 PM UTC+1, Alexei Peters wrote:
>
> Hi Andrea,
> Keep in mind that when you see something like this:
>
> def get_preflabel(self, lang=settings.LANGUAGE_CODE)
>
> What it means is, use for  "lang" the value defined in 
> settings.LANGUAGE_CODE if nothing else is provided.
> Most of the views take in a lang property as part of the request, 
> defaulting, again, to settings.LANGUAGE_CODE if none is provided.
>
> eg: in app/views/concept.py on line 74
> lang = request.GET.get('lang', settings.LANGUAGE_CODE)
>
> what this means is that if your request has a "lang" property in the 
> querystring 
> eg: 
> http://blahblahblah/concept/11111111-1111-1111-1111-11111111111?lang=ar
> then the language code "ar" should be passed on down to the get_preflabel 
> function with the language passed in from the request and it will not use 
> the value from settings.LANGUAGE_CODE
>
> Hope that helps clarify how that all works.
> Cheers,
> Alexei
>
>
> Director of Web Development - Farallon Geographics, Inc. - 971.227.3173
>
> On Fri, Jun 10, 2016 at 11:44 AM, <[email protected] <javascript:>> 
> wrote:
>
>> 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]> 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] <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.

Reply via email to