How to add a new language in GNOME
This howto aims to guide the process of creating a new language from scratch until it's available in the GDM menu for users to choose.
Create a glibc locale
The basis for supporting a new language in a Linux system is to have a corresponding glibc locale file. This file contains information about the date and time format, monetary format, etc. You can check if there is already a glibc file for your language/country here or see if a request is pending in glibc's Bugzilla. If you need to create a new glibc locale file, a good starting point is http://translate.sourceforge.net/wiki/guide/locales/glibc. You should also check that your language is included in the iso-codes package (iso_639_3 for languages and iso_3166 for countries).
Create a fontconfig orthography
fontconfig orthographies help GNOME choose a proper font for displaying a language. The file contains information about Unicode characters that are needed to display the text in the language properly. You can check if there is already a fontconfig orthography file for your language here: http://cgit.freedesktop.org/fontconfig/tree/fc-lang (a more updated version may be available from Behdad's tree or Roozbeh's tree).
If the language is missing, file a bug against product "fontconfig", component "orth" in freedesktop.org's bugzilla. Include information about the language orthography and references (preferably on the web).
Not having an orthography file for your language may result in very ugly and/or bumpy display of text in your language.
Translate program strings
GDM does not maintain any language list by itself. If you have translated at least one package and glibc, iso-codes and fontconfig information are available, the language should appear in the GDM language list on the login screen. Note that GDM only handles UTF-8 locales.
- Note that there is no minimal threshold of translated strings to achieve before your language is included in GNOME. If all above steps are fulfilled, your language will be included even if there is only one application translated.
Several software packages use the Unicode CLDR data. It might be a good initiative to also provide information for your language in this repository.