site  contact  subhomenews

easy.sfs internationalized, langpack PETs abandoned

February 10, 2023 — BarryK

Right from the early days of Puppy, we tried to keep the puppy*.sfs file as small as possible. We hoped for it to be small enough to load into RAM at bootup, and back in the day, there wasn't much RAM. One strategy to keep the SFS small was for it to be English-only, with translations for a particular language in PET packages -- these PETs were named "langpacks".

Quirky Linux and now EasyOS have kept this langpack method. In woofQ have built French and German image files with the langpack builtin. Until now, with the upcoming Kirkstone-series; there will only be one image file to download, no langpacks.

easy.sfs is big, as have kept the Puppy tradition of building with the "kitchen sink" included; that is, just about every package you will need builtin. Including translations for all languages in easy.sfs will make it a lot bigger.

I conducted an experiment in woofQ, built a 'nls.sfs' with all translations, and it is 189MB with squashfs zstd compression.

I was considering shipping EasyOS with a 'nls.sfs' file with all translations, so a kind of "super langpack". You would download this separately and include it in the SFS layers and hence have translations. However, there are many complications with that approach, so decided to go for simplicity; all translations builtin to easy.sfs.

Hmmm, don't want to add that much bloat to easy.sfs. So, decided on a compromise; support a subset of the translations. EasyOS has a small number of users, as far as I know only requiring languages that have the latin or cyrillic character sets. I created a new variable, BUILD_SUPPORT_LANGS, in the 'build-choices' file. You will find this file in a running EasyOS at /root/.packages

BUILD_SUPPORT_LANGS='bg:Bulgarian cs:Czech da:Danish de:German el:Greek en:English es:Spanish et:Estonian fi:Finnish fr:French hr:Croatian hu:Hungarian is:Icelandic it:Italian lt:Lithuanian lv:Latvian mk:Macedonian nl:Dutch no:Norwegian pl:Polish pt:Portuguese ro:Romanian ru:Russian sk:Slovak sl:Slovenian sq:Albanian sr:Serbian sv:Swedish tr:Turkish uk:Ukrainian uz:Uzbek'

If this variable is set, woofQ now builds easy.sfs with translations for all of these languages builtin. This includes the country-variants, such as es_ES, es_AR, es_BO, etc., -- if such translations exist.

'easy.sfs' is now 728MB, with zstd compression. Yeah, can live with that, given how it simplifies international language support.

The most recent github commits for this:

I posted recently that the locale is now asked at first bootup:

...that first window will need to have English text, but thereafter everything should be translated, according to choice made.

Of course, if there is interest for another language to be added to BUILD_SUPPORT_LANGS, it can be done.

There is still a lot of work to do before the Kirkstone-series can be released.    

Tags: easy