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