How Multilanguage and SharePoint work together

So a colleague of mine had a question and he wanted to put the following four things into perspective and relation to each other:

  1. Custom Solution resource files
  2. Language Packs in SharePoint
  3. Language Settings in Site Settings
  4. Browser Language Settings

So, here is my (lengthy) answer…

Go to microsoft…for example http://www.microsoft.com/downloads/fr-fr/details.aspx?familyid=49c79a8a-4612-4e7d-a0b4-3bb429b46595.
You can see that there is a sharepoint foundation version in French. So to start with there are language specific installs that always only have the specific language included.

With the language packs (http://www.microsoft.com/downloads/fr-fr/details.aspx?familyid=646e311a-aaf3-4d30-b03c-2f3c70d19a22, again in French) you can get any other language pack installed. You install language packs on all servers, because if you don’t you will have trouble getting new servers into your farm later. On the same note you should never mix slipstream installed servers (installed using slipstream installer, installer contains RTM + SP1) and non-slipstream installed servers (RTM installed, then SP1 Foundation + SP1 Server installed). There are known issues.

So if you only install foundation/ server of sharepoint 2010 you have a one language server software (install point 1). But it’s capable of so much more! Once you install the first language pack (e.g. French on English install) and then run psconfig (btw, this is good to know (7 of 9 install steps):

psconfig.exe -cmd upgrade -inplace b2b -force -cmd applicationcontent -install -cmd installfeatures -cmd installcheck -noinstallcheck

(install point 2)

You as an administrator can define on spsite/ spweb level if users can change the language or not (most prominent: mysite). (install point 3).

Code can either use resource files or not. If it does, then there is always a default resource file corresponding usually to one dll (in theory an n:m relationship is possible, but not always sensible) via using statement. It’s basically an xml as data source and a standardized interface that let’s you use the keys of the key-value-pair configuration inside your code like variables. Typically you do not use any constants in code any more, but instead placeholders for maximum language support. The default resource file is necessary so that when a specific language is not implemented (a specific language has the language code like de-DE or en-US as a suffix) that it falls back to use the default language.

The custom resource files are deployed via wsp into the 14 hive of all frontend (those that have the service ‘Microsoft SharePoint Foundation Web Application’ running) servers ([install drive]\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\Resources).

Now if you install custom wsps and you have done 1, but not 2 and 3 then you get the resource files from the custom wsp but they will be useless as nobody will switch from default language to a different one.

If you install 1+2, not 3, then you will still not be using the language, because sharepoint has the capabilities, the custom code has the capabilities, but nobody is leveraging them.

if you have 1,2 and 3, then for those pages, where the different language is set…the resource files are necessary. if they are not there…I think your placeholders will revert to the empty string “”, but I have never tried that.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: