That's wonderful!  Glad I could help.

Director of Web Development - Farallon Geographics, Inc. - 971.227.3173

On Tue, Jul 12, 2016 at 8:08 AM, <[email protected]> wrote:

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

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