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.
