Monday, 9 August 2010

English Language browser and PeopleTools 8.50

If you have browser configured with a language other then English US (en-US) then you get an error signing into PeopleSoft unless you have that language installed in PeopleSoft.

Logon failed as the language you have selected is not enabled for this database.


The solutions to this are discussed here https://support.oracle.com/CSP/main/article?cmd=show&type=NOT&doctype=PROBLEM&id=988042.1 but this does not tell the full picture.

The table PSLANGUAGES hold a mapping between PeopleSoft language code and iso language code.

select LANGUAGE_CD, ISO_LOCALE from PSLANGUAGES


When you login to PeopleSoft the browser iso locale is detected and an attempt to login using the associated PeopleSoft language code. So if I have a UK English browser then my iso locale is en-GB which maps to PeopleSoft language UKE which in most (if not all) installations does not exist.

If, on login, there is a Web Profile language override mapping set then this is used to derive the PeopleSoft language code.

So if en_GB=ENG (note the underscore not hyphen) is set in the Language Support field of the web profile then ENG would be used not UKE.

So, here's the gotcha. There are dozens of possible iso language variants (just open IE > InternetOptions > Languages > Add to see most of them) but only 254 characters in the web profile Langauge Support field. One solution that works is to use JUST the first part of the iso code. So this now becomes en=ENG. Now any browser with an en stem would map to ENG.

But there's another gotcha. This works fine for Spanish.... es=ENG. But it does not work for en=ENG. This drove me quite insane trying to figure out what was going on here until a very helpful analyst at Oracle Support came back with the solution.

If the ISO_LOCALE in PSLANGUAGES contains only an entry for the first part of the iso code (such as en) and other entries using the sane stem also exist (such as en_GB) then ALL iso codes must be mapped in the web profile (en and en_GB). So to get en=ENG mapping to work you need to add both en=ENG and en_GB=ENG. Hey presto.

Incidentally, multiple entries in the language support field should be separated by carriage returns.