| Both sides previous revisionPrevious revisionNext revision | Previous revision | 
| dcore:locale_in_ub-dcore [2016/05/18 05:34]  – [Preparation]  nitram | dcore:locale_in_ub-dcore [2018/07/15 17:58] (current)  –  sm8ps | 
|---|
| In Ubuntu, locales are created based on language packs. Proper locale files are generated by ''locale-gen''. Since these files are large, making them persistent is best done by creating a locale extension. | In Ubuntu, locales are created based on language packs. Proper locale files are generated by ''locale-gen''. Since these files are large, making them persistent is best done by creating a locale extension. | 
 |  | 
| =====Preparation===== | These instructions have been tested on ...  | 
|   |   * dCore-trusty --- //[[sm8ps-tcl1@yahoo.com|sm8ps]] 2015//  | 
|   |   * dCore-xenial --- //[[sm8ps-tcl1@yahoo.com|sm8ps]] 2017/09/23 08:49//  | 
|   |   * dCore-bionic64 --- //[[sm8ps-tcl1@yahoo.com|sm8ps]] 2018/07/15 14:37// | 
 |  | 
| Import and load the //locales// package. | =====Preparation===== | 
 |  | 
| Review '/usr/share/i18n/SUPPORTED' for a list of locales to determine the desired locale code. | Import and load the //locales// package. Review '/usr/share/i18n/SUPPORTED' for a list of locales to determine the desired locale code, ignoring the second string. | 
 |  | 
| Comment out the line in '~/.profile' that hard codes LANG to "en_US.UTF-8": | Either use the //lang// boot code for the desired locale (eg. ''lang=de_CH.UTF-8'' for Swiss German) and comment out the line in '~/.profile' that hard codes LANG to "en_US.UTF-8" ... | 
| <code> | <code> | 
| #LANG=en_US.UTF-8 | #LANG=en_US.UTF-8 | 
| </code> | </code> | 
|   | or change that line to the desired locale directly.  | 
 |  | 
| Use the //lang// boot code instead (eg. ''lang=de_CH.UTF-8'' for Swiss German locale). | ==== Fallback Locales ====  | 
|   | International users may want US English as a fallback to be stored in LANGUAGE (source: [[https://wiki.archlinux.org/index.php/Locale#LANGUAGE:_fallback_locales|Archlinux-wiki]]). | 
 |  | 
| For a first test ''locale'' will complain that it cannot set some LC_ variables but will then list where all but LANGUAGE and LC_ALL are set to the chosen locale code.  | If so add the following to '~/.profile': | 
|   |  | 
| === Fallback Locales ===  |  | 
| International users may want US English as a fallback to be stored in LANGUAGE (source: [[https://wiki.archlinux.org/index.php/Locale#LANGUAGE:_fallback_locales|Archlinux-wiki]]). If so, add the following to '~/.profile': |  | 
| <code> | <code> | 
| ~/.profile: | ~/.profile: | 
| LANGUAGE=$LANG:en_US.UTF-8:en | export LANGUAGE=$LANG:en_US:en | 
| </code> | </code> | 
 |  | 
| =====Generating Locale Files===== | =====Generating Locale Files===== | 
 |  | 
| Create a temporary working directory (eg. ~/temp/). | Reboot for the changes to take effect. | 
 |  | 
| Create a package list in (eg. ./mylocale.lst) with all desired language choices (eg. English and German): | For a first test ''locale'' will complain that it cannot set some LC_ variables but will then list where all but LANGUAGE and LC_ALL are set to the chosen locale code.  | 
|   |   | 
|   | Create a temporary working directory (eg. ~/temp/). | 
 |  | 
|   | Create a package list there (eg. ./mylocale-LIST) with all desired language choices (eg. English and German): | 
| <code> | <code> | 
| ./mylocale.lst: | ./mylocale-LIST: | 
| coreutils | coreutils | 
| bash | bash | 
| </code> | </code> | 
 |  | 
| Import the package list using ''sce-import -n -l ./mylocale.lst'' and load them.  | Import the package list using ''sce-import -nl ./mylocale-LIST'' and load the extension. Be aware that this may take quite a while. | 
|   |  | 
| Run ''sudo locale-gen --archive'' (double dash before 'archive') to produce '/usr/lib/locale/locale-archive' containing all locales specified in the language packs.  |  | 
|   |  | 
| ===Testing===  |  | 
|   |  | 
| ''locale'' will show the same list as before without errors. Furthermore ''date +%A'' will print the week-day in the local language. |  | 
 |  | 
|   | Run ''sudo locale-gen ''''-''''-''''archive'' to produce '/usr/lib/locale/locale-archive' containing all locales specified in the language packs. Again, this will take a while. | 
 |  | 
| ===Package Selection=== | ===Package Selection=== | 
 |  | 
| The language packs depend on the //locale// package, which provides the command ''locale-gen''. This is a Bash script which uses the core-utilities plus 'localedef' which is not included in //locale// but rather in //libc-bin//. | The language packs depend on the //locale// package, which provides the command ''locale-gen''. This is a Bash script which uses the core-utilities plus 'localedef' which is not included in //locale// but rather in //libc-bin//. | 
|   |  | 
|   | ===Testing=== | 
|   |  | 
|   | ''locale'' will show the same list as before without errors. Furthermore ''date +%A'' will print the week-day in the local language. | 
 |  | 
| =====Create a Locales Extension===== | =====Create a Locales Extension===== | 
| <code Bash> | <code Bash> | 
| mkdir -p ./mylocale/usr/lib/locale/ | mkdir -p ./mylocale/usr/lib/locale/ | 
| sudo mv /usr/lib/locale/locale-archive ./mylocale/usr/lib/locale/ | sudo cp -a /usr/lib/locale/locale-archive ./mylocale/usr/lib/locale/ | 
| </code> | </code> | 
| The directory is packed into a SquashFS-file, that is an extension. That extension is then put in the right place. | The directory is packed into a SquashFS-file, an extension that is. That extension is then put in the right place. | 
 |  | 
| <code Bash> | <code Bash> | 
| </code> | </code> | 
 |  | 
| Optionally, the extension is included into 'sceboot.lst' so as to have it automatically loaded at boot. | The extension name "mylocale" should be included into 'sceboot.lst' so as to have it automatically loaded at boot.  | 
| ===Testing=== | ===Testing=== | 
 |  | 
 |  | 
| === Cleanup === | === Cleanup === | 
| The extensions //locales// and //mylocale.lst// can be removed together with the temporary directory. | The extensions //locales// and //mylocale.lst// (but not //mylocale//!) can be removed together with the temporary directory. | 
 |  | 
| **[[http://wiki.tinycorelinux.net/dcore:welcome|> Return to the dCore Wiki Welcome page]]** | **[[http://wiki.tinycorelinux.net/dcore:welcome|> Return to the dCore Wiki Welcome page]]** |