Alexei,

Thank you for this. Indeed, it led me to solving the problem. I will now 
prepare a short how-to guide to making Arches multilingual, with 
screenshots, and will make it available on this thread.

On Monday, July 11, 2016 at 7:38:50 PM UTC+1, Alexei Peters wrote:
>
> Hi Andrea,
> I'm still unsure when this is happening, but I'm going to take a stab at 
> this anyway!  :)
>
> I'm making this assumption, that the dropdowns (eg 
> SITE_FUNCTION_CERTAINTY_TYPE.E55) 
> are being populated only with the concepts in the selected language.  That 
> is if I've set the site to display everything in English, then the 
> dropdowns are only displaying the English preflabels.
>
> If that's the case, then when you say from your email of July 4th
>
>>  It would appear that the problem lies with the viewModel not correctly 
>> picking up the labels when the language selected is not the one with which 
>> the branches were originally saved.
>
> that you are correct. 
>
> You go on to say:
>
>> This branch had been added, originally, in English, but the labels passed 
>> by the "load" method have been altered to adhere to the selected language 
>> (Arabic).
>
>
> I think this is the problem.  The dropdowns reference value id's (eg: 
> d30fef92-728b-46f6-a4c5-b42e552a0326 and 
> 92c37d46-dc23-4869-b868-b978d9f972aa) 
> and not concept ids.  It could be that those value ids in your data
>
>
>> {"nodes":[{"value":"d30fef92-728b-46f6-a4c5-b42e552a0326","label":"عالي","child_entities":[],"entitytypeid":"SITE_FUNCTION_CERTAINTY_TYPE.E55","parentid":"679aa456-943d-4b2d-8c25-947c1f635307","entityid":"86e23739-93f0-40d4-8793-d1dc5043a4f9","property":"P2","businesstablename":"domains"},{"value":"92c37d46-dc23-4869-b868-b978d9f972aa","label":"ديني","child_entities":[],"entitytypeid":"SITE_FUNCTION_TYPE.E55","parentid":"6b8526b0-62ec-4860-9bee-ddf6830d3ff8","entityid":"679aa456-943d-4b2d-8c25-947c1f635307","property":"P2","businesstablename":"domains"}]}
>
>
> don't reference id's in the dropdowns.  I would then expect that when you 
> click to edit a branch that the value referenced in the data can't be found 
> in the dropdowns options and the write method get's a blank value (I've 
> actually confirmed this happens).
>
> There's also a file called js/plugins/knockout-select2.js that has an 
> "update" method that you might be interested in.  It's one of the first 
> things that gets called when a user clicks to edit a value that's attached 
> to a dropdown.
>
> Hopefully this helps.
> -Alexei
>
>
>
> Director of Web Development - Farallon Geographics, Inc. - 971.227.3173
>
> On Thu, Jul 7, 2016 at 5:30 AM, <[email protected] <javascript:>> 
> wrote:
>
>> And here is a screenshot of my debugging of branch-list.js. As you can 
>> see, in the writeable observable, the read correctly maps the valueid of 
>> the concept 'Not Applicable', which is stored in ret. However, the 'write' 
>> callback does not obtain ret, and the argument 'value' is therefore void.
>>
>>
>> <https://lh3.googleusercontent.com/-2O5XRZ8bJn4/V35LY5na3XI/AAAAAAAAAAc/WHZvUSKBjXkCFpsNSG4TG4W8JiGgXNfJQCLcB/s1600/Screen%2BShot%2B2016-07-07%2Bat%2B13.27.14.png>
>>
>>
>>
>> On Wednesday, July 6, 2016 at 5:34:59 PM UTC+1, [email protected] 
>> wrote:
>>
>>> Alexei,
>>>
>>> I have narrowed it down a bit further. The writable computed observable 
>>> that is returned by getEditedNode correctly reads the values retrieved by 
>>> the method getEditedBranch(), but then, if the concept is in Arabic, it 
>>> does not pass it to the "write" callback, despite the variable 'ret' (which 
>>> is returned by the 'read' method in the observable) correctly storing the 
>>> value of the Arabic concept. 'ret', in this case, is essentially not passed 
>>> to the 'write' callback. However, if I add a new branch when the platform 
>>> language is Arabic, save the form and then edit it, all works fine: 'read' 
>>> passes ret to the object 'value' of the 'write' callback and no problem 
>>> arises. I don't understand why the problem is occurring, but I am certain 
>>> that it happens at the juncture between read and write in getEditedNode. 
>>>
>>>
>>> Andrea
>>>
>>> On Monday, July 4, 2016 at 7:38:19 PM UTC+1, [email protected] wrote:
>>>
>>>> Hi Alexei,
>>>>
>>>> I have been debugging branch-list.js, and particularly the method 
>>>> getEditedNode. It would appear that the problem lies with the viewModel 
>>>> not 
>>>> correctly picking up the labels when the language selected is not the one 
>>>> with which the branches were originally saved.
>>>> The form data is correctly passed by forms.py with labels in the 
>>>> selected language. So, a console log this.data[this.dataKey].branch_lists 
>>>> of  on the nodes SITE_FUNCTION_CERTAINTY_TYPE and SITE_FUNCTION_CERTAINTY 
>>>> returns this:
>>>>
>>>>
>>>> {"nodes":[{"value":"d30fef92-728b-46f6-a4c5-b42e552a0326","label":"عالي","child_entities":[],"entitytypeid":"SITE_FUNCTION_CERTAINTY_TYPE.E55","parentid":"679aa456-943d-4b2d-8c25-947c1f635307","entityid":"86e23739-93f0-40d4-8793-d1dc5043a4f9","property":"P2","businesstablename":"domains"},{"value":"92c37d46-dc23-4869-b868-b978d9f972aa","label":"ديني","child_entities":[],"entitytypeid":"SITE_FUNCTION_TYPE.E55","parentid":"6b8526b0-62ec-4860-9bee-ddf6830d3ff8","entityid":"679aa456-943d-4b2d-8c25-947c1f635307","property":"P2","businesstablename":"domains"}]}
>>>>
>>>>
>>>> This branch had been added, originally, in English, but the labels 
>>>> passed by the "load" method have been altered to adhere to the selected 
>>>> language (Arabic). However, when debugging getEditedNode, this function 
>>>> correctly reads the values of the two selected concepts 
>>>> (d30fef92-728b-46f6-a4c5-b42e552a0326 and 
>>>> 92c37d46-dc23-4869-b868-b978d9f972aa) BUT, for whatever reason, passes an 
>>>> empty object to the write method within getEditedNode.
>>>>
>>>> Can you think of any reason why this might be happening?
>>>>
>>>> Andrea
>>>>
>>>> On Tuesday, June 28, 2016 at 12:20:21 AM UTC+1, Alexei Peters wrote:
>>>>
>>>>> Hi Andrea,
>>>>> Have you confirmed that you're getting all the data in all languages 
>>>>> when a form loads, but that somehow the client side code is filtering 
>>>>> based 
>>>>> on language?  
>>>>> The "load" method in forms.py would potentially allow a user to only 
>>>>> load data with a specific language code, you're code isn't doing that is 
>>>>> it?
>>>>> Cheers,
>>>>> Alexei
>>>>>
>>>>>
>>>>> Director of Web Development - Farallon Geographics, Inc. - 
>>>>> 971.227.3173
>>>>>
>>>>> On Fri, Jun 17, 2016 at 8:26 AM, <[email protected]> wrote:
>>>>>
>>>>>> Dear Alexei,
>>>>>>
>>>>>> I have got it to work: 
>>>>>> https://github.com/azerbini/eamena2/blob/app/models/forms.py 
>>>>>>
>>>>>> I was modifying the wrong method, in entity.py instead of looking 
>>>>>> into app/models/forms and changing that get_nodes. My bad.
>>>>>>
>>>>>> Now, the problem is that, for whatever reason (and unrelated to my 
>>>>>> changes to get_nodes()), the JS libraries only allow me to edit branches 
>>>>>> in 
>>>>>> the language of original insertion. So, when the selected language is 
>>>>>> English, I am able to pull up and edit in a form all of the branches 
>>>>>> that 
>>>>>> were initially saved in the DB in English. Viceversa, when the language 
>>>>>> selected is Arabic, I can only edit branches (or entities - call them as 
>>>>>> you may) that were saved into the DB in Arabic. Any idea as to why the 
>>>>>> JS 
>>>>>> does this? 
>>>>>>
>>>>>> Thank you - getting there step by step!
>>>>>>
>>>>>> Andrea
>>>>>>
>>>>>> On Thursday, June 16, 2016 at 7:43:59 PM UTC+1, Alexei Peters wrote:
>>>>>>
>>>>>>> Hi Andrea,
>>>>>>> I'll have to look into this.
>>>>>>> Cheers,
>>>>>>> Alexei
>>>>>>>
>>>>>>>
>>>>>>> Director of Web Development - Farallon Geographics, Inc. - 
>>>>>>> 971.227.3173
>>>>>>>
>>>>>>> On Wed, Jun 15, 2016 at 10:43 AM, <[email protected]> wrote:
>>>>>>>
>>>>>>>> A small update. I have been able to bypass the indexing problem by 
>>>>>>>> commenting off lines 228-30 in app/search/search.py and replacing the 
>>>>>>>> custom exception with a standard return False.
>>>>>>>> I subsequently modified get_nodes() as visible here: 
>>>>>>>> https://github.com/azerbini/eamena2/blob/app/models/entity.py
>>>>>>>>
>>>>>>>> Now, the labels returned by get_nodes are in the correct language, 
>>>>>>>> and yet they keep being visualised in the templates in the language of 
>>>>>>>> original insertion (see screenshot attached). Once again, what do I 
>>>>>>>> need to 
>>>>>>>> modify in order to tweak the resource graph which is passed as an 
>>>>>>>> observable array to branch-list.js? 
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>>>
>>>>>>>> andrea
>>>>>>>>
>>>>>>>>
>>>>>>>> <https://lh3.googleusercontent.com/-Zcqp_1zUD-w/V2GTt9oU6wI/AAAAAAAAAAM/HQDeE69Bcvk1ujOoe_4l-sYCLEmIS68TQCLcB/s1600/Screen%2BShot%2B2016-06-15%2Bat%2B18.42.29.png>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Wednesday, June 15, 2016 at 2:23:53 PM UTC+1, 
>>>>>>>> [email protected] wrote:
>>>>>>>>>
>>>>>>>>> Hi all,
>>>>>>>>>
>>>>>>>>> In order to fix the visualisation of the already selected 
>>>>>>>>> branches, I have tried to modify models/entity.py, particularly the 
>>>>>>>>> get_nodes method, since it is that which calls the labels of concepts 
>>>>>>>>> already stored in the database (see here for the modified method: 
>>>>>>>>> https://github.com/azerbini/eamena2/blob/app/models/entity.py). 
>>>>>>>>> Currently, I am only trying to get get_nodes() to retrieve the right 
>>>>>>>>> prefLabels, so I am not modifying the data, just displaying it via 
>>>>>>>>> print 
>>>>>>>>> statements. I have had to perform a UUID validation of entity.value 
>>>>>>>>> in 
>>>>>>>>> order to stop get_preflabels_from_valueid from attempting to run on 
>>>>>>>>> entity.value when the latter is a Polygon type. When I modify a form, 
>>>>>>>>> on 
>>>>>>>>> POST submission, all seems to work fine. Here are some of the outputs 
>>>>>>>>> I get 
>>>>>>>>> on the server:
>>>>>>>>>
>>>>>>>>> Entity label pre prefLabel: <class 
>>>>>>>>>> 'arches.app.models.entity.Entity'>: 
>>>>>>>>>> d7f8c3f4-abb5-4d88-879e-41574d905df7 of 
>>>>>>>>>> type SITE_OVERALL_ARCHAEOLOGICAL_CERTAINTY_TYPE.E55 with value 
>>>>>>>>>> "e2febf75-58b1-4803-a7f9-c7cd3d01606b"
>>>>>>>>>>
>>>>>>>>>> {u'_type': u'1e0f9e9a-99e0-4439-a796-f0e1c9e26db9', u'_source': 
>>>>>>>>>> {u'category': u'label', u'conceptid': 
>>>>>>>>>> u'8748c8c7-8d3d-4003-a6b5-f87d9d933490', u'language': u'en-US', 
>>>>>>>>>> u'value': 
>>>>>>>>>> u'High', u'type': u'prefLabel', u'id': 
>>>>>>>>>> u'e2febf75-58b1-4803-a7f9-c7cd3d01606b'}, u'_index': 
>>>>>>>>>> u'concept_labels', 
>>>>>>>>>> u'_version': 2, u'found': True, u'_id': 
>>>>>>>>>> u'e2febf75-58b1-4803-a7f9-c7cd3d01606b'}
>>>>>>>>>>
>>>>>>>>>> Entity label post prefLabel: {u'category': u'label', 
>>>>>>>>>> u'conceptid': u'8748c8c7-8d3d-4003-a6b5-f87d9d933490', u'language': 
>>>>>>>>>> u'ar', 
>>>>>>>>>> u'value': u'\u0639\u0627\u0644\u064a', u'type': u'prefLabel', u'id': 
>>>>>>>>>> u'75905a06-9b0e-4c72-84c9-ae6883b83b30'}
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> As you can see, get_preflabels_from_valueid has correctly located 
>>>>>>>>> my new label value. However, I then get an ES indexing problem:
>>>>>>>>>
>>>>>>>>> RequestError at 
>>>>>>>>>> /resources/HERITAGE_RESOURCE_GROUP.E27/summary/8b712dc9-5de2-446f-900e-26a63e511d91
>>>>>>>>>> TransportError(400, u'MapperParsingException[object mapping for 
>>>>>>>>>> [HERITAGE_RESOURCE_GROUP.E27] tried to parse as object, but got EOF, 
>>>>>>>>>> has a 
>>>>>>>>>> concrete value been provided to it?]')
>>>>>>>>>> Request Method: POST
>>>>>>>>>> Request URL: 
>>>>>>>>>> http://localhost:8000/resources/HERITAGE_RESOURCE_GROUP.E27/summary/8b712dc9-5de2-446f-900e-26a63e511d91
>>>>>>>>>> Django Version: 1.6.2
>>>>>>>>>> Exception Type: RequestError
>>>>>>>>>> Exception Value: 
>>>>>>>>>>
>>>>>>>>>> TransportError(400, u'MapperParsingException[object mapping for 
>>>>>>>>>> [HERITAGE_RESOURCE_GROUP.E27] tried to parse as object, but got EOF, 
>>>>>>>>>> has a concrete value been provided to it?]')
>>>>>>>>>>
>>>>>>>>>> Exception Location: 
>>>>>>>>>> /Users/eamena/Projects/ENV/lib/python2.7/site-packages/arches/app/search/search.py
>>>>>>>>>>  
>>>>>>>>>> in index_data, line 227
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>> Why is the indexing called, and when? Why does it fail, 
>>>>>>>>> considering that I have not changed anything at all, just printed to 
>>>>>>>>> console? 
>>>>>>>>>
>>>>>>>>> Thanks for your help,
>>>>>>>>>
>>>>>>>>> Andrea
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Tuesday, June 14, 2016 at 8:40:32 AM UTC+1, 
>>>>>>>>> [email protected] wrote:
>>>>>>>>>>
>>>>>>>>>> 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]> 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]. To 
>>>>>>>>>>>> unsubscribe, send email to [email protected]. 
>>>>>>>>>>>> For more information, visit 
>>>>>>>>>>>> https://groups.google.com/d/forum/archesproject?hl=en
>>>>>>>>>>>> --- 
>>>>>>>>>>>> You received this mess
>>>>>>>>>>>>
>>>>>>>>>>>

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