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.