Error with locale

Hello Captains,

When running InMoov service ( same error occurs with InMoov2) in Nixie 1.1.394, I get googlesearch answering using my real locale  (Fr) although I have changed it via runtime to en-US.

Note that I have also changed i01.ear, i01.mouth and i01.chatbot to en-US and still i01.chatbot.search gives the text answer in French saying it in English.


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
GroG's picture

Hi Gael, We (kwatters and I)

Hi Gael,
We (kwatters and I) are on a bug hunt ...

Thanks for spotting one..
Testing the GoogleSearch service directly ...
my native Locale is en-US..
I switch Runtime to fr
I ask directly ...

So GoogleSearch service behaves as I would expect, I change runtime's locale, and it gets changed.

I ask in english and it responds in french, if I left the locale in french...

All of this would be expected behavior I believe...   GoogleSearch service is not the problem ..

Moving on to ProgramAB..
I ask it something in french, if it had a french bot I would hope it would respond appropriately...

Heh, not so "Super"...

As I get closer to the problem, I suspect it has to do with how Locales are managed in ProgramAB
So things get very specific to how and what ProgramAB supports.
I'll need to remeber how "language" is supported in ProgramAB....

GroG's picture

kwatters says you need to

kwatters says you need to manually set the bot to a en bot ... as that is the current way (sort of) which ProgramAB manages locales .. there is no "best guess logic" in ProgramAB

Although I believe there is some in some of the SpeechSynthesis service ... i vaguely remember working on something which does a "best fit" match between a locale that has been set on runtime and something that's best match... 

hairygael's picture

hello,The behavior you got

hello,

The behavior you got is also what I would expect, but unfortunately it doesn't do that with me.

As you can see my bot is set to en-US, the speech engine is set to en-US, the locale runtime is set to en-US, however the text answer is french.

Maybe something to do with the modifications of locale not being compatible with InMoov2 ?

 

 

UPDATE:

It has nothing to do with InMoov2 because I just tested exactly the way you did and the text answer is also in French.

 

GroG's picture

I don't understand

I don't understand Gael..
This is not the way I tested - I tested google search directly,
your trying through programab - which has the limitation of not being able to "ask" search unless (in your case) your actively using a english chatbot, which is.

In short:

  • this isn't a problem of google search service not changing locales appropriately
  • this is not a problem of runtime not "trying to" adjust all service locales..
  • this is a problem/challenge of programab

perhaps kwatters can weigh in here ...

hairygael's picture

Hello Grog,Unfortunately

Hello Grog,

Unfortunately it's not a programAB issue but a locale issue somewhere.

If I only run googlesearch and set en-US in locale runtime, asking in English "what is a cat", google search returns a french answer.

 

Notice in Locale Runtime I selected en-US but under it says in French "Language anglais Etats-Unis".

 

UPDATE:

So to further investigation. I run another MINI PC which is installed with Windows 10 fully in English.

If I start MRL Nixie 409, it automatically sets the Locales in Runtime as en-US.

Good that's expected. (At least it's what I think it should be)

Now if I start a service google search and type "what is a cat"(in English), I get a French text answer.

That is not expected. I suspect something still detects, I am located in France and applies it to GoogleSearch service.

To be clear, in this experiment, I do not use ProgramAB or any other service besides the service GoogleSearch.

GroG's picture

Ahaha .. I spent some time

Ahaha .. I spent some time giving you an eloborate reply, spending the time documenting each step of how the GoogleSearch service works ...  and in the process I believe I found the problem :)

GoogleSearch service - formats a url and one of the parameters is language, I added a logging statement which outputs this url ..

In the case of fr - its been working as I would expect it .. 

INFO c.m.s.GoogleSearch [GoogleSearch.java:105] request to google: https://google.com/search?lr=lang_fr&q=qui+%C3%A9tait+marc+chagall&aqs=chrome..69i57.5547j0j7&sourceid=chrome&ie=UTF-8
 
But when I switched back to en-US
 
https://google.com/search?lr=lang_en-US&q=qui+%C3%A9tait+marc+chagall&aqs=chrome..69i57.5547j0j7&sourceid=chrome&ie=UTF-8
 
I think google will then silently reject the parameter, and default it to the language/region it "thinks" your in ... Ya google is collecting data about you all the time, and one of those pieces is where your ip address is, e.g. if its in France or US

For me the failure produces what appear to be desired english results - because big brother google knows i'm in US, for you the failure produces fr results, since your in France.

 
So in short - it wants only lang, and region messes things up...

I've hotfixed it so the result now should be:

request to google: https://google.com/search?lr=lang_en&q=who+was+marc+chagall&aqs=chrome..69i57.5547j0j7&sourceid=chrome&ie=UTF-8
 
Which should give you the results you want. (1.1.411)

 

hairygael's picture

Perfect Grog! It's now worky

Perfect Grog!

It's now worky even if I switch locales in runtime or programAB.

Thanks for the deep search!!!