GiellaLT provides an infrastructure for rule-based language technology aimed at minority and indigenous languages, and streamlines building anything from keyboards to speech technology.

View GiellaLT on GitHub

Page Content

Localising apps and webapps related to the GiellaLT infrastructure

App overview

The following apps & webapps need localisation:

Localisation of each of them is described below. is now always localised using our Pontoon instance. Log in using your GitHub account, it should be automatic.

All localisations are automatically synced from Pontoon to GitHub, but only after the localisations have been verified and accepted by an administrator.

It is still possible to also do localisations directly in GitHub, and those changes will be synced with Pontoon automatically. For that reason, the documentation below is kept for reference.

All pathnames in this section are relative to the root of the repository.

Languages and fallback mechanisms

data/languages.ts contains a list of all languages covered by the site. It has four sections:

Defines all BCP-47 compatible area codes used in the portal, with their localised names. Regions are used to cover linguistic or orthographic variation following the regions, or just to ensure a most useful fallback list depending on region: SME in Finland should fall back to Finnish, then English, while SME in Sweden should fall back to Swedish, then English.
The main language definition, contains language codes and the human readable names.
This is a fallback definition for page content when the requested content is not available in the desired language. This makes pages "multilingual", but in a controlled manner, so that the most appropriate language available is used to build each element of the page.
Languages that are only used to select page language in the portal, not to select tools = we do not make or promote tools for these languages (at least not in this portal).
Languages for which we do not have any translated content, but for which we still want them listed in the tools list. That is, skip these languages in the language selection drop down for the site, but list them in the overview of resources for languages.


data/categories.ts contains localised names and descriptions of categories.

It is seen on top of each category page. One gets to these pages when clicking on a category label.


data/resources/ contains the definition of all resources described on the site. Except for the file mod.ts, all files contain strings that should be localised. The strings are the following:

Content files

Most of the content for the portal lives in src/. All localisable text is placed in .flt files, including in subdirs. At present, the following dirs contain .flt files to be localised:

├── _components
│   └── landing
├── _includes
├── about
├── doc
│   ├── divvun-manager
│   └── website
├── post
│   └── ...
└── privacy

Divvun Manager


See the README. But it boils down to the following:

strut-icu-generate swift Support/LocalisationResources/base.yaml \
                         Support/LocalisationResources/{your other langs}.yaml \
                   -o .


See the README. But it boils down to the following:


DM One-click installer

(Windows only)

TBW - support and documentation missing

Package names and descriptions

Packages are what we distribute to users, such as speller and keyboard packages. They are listed in various places, always with a name, and often with a corresponding description, both of which can be localised.

Below is an example of how both strings show up in

Pahkattekst i Boeralium

and in the package listing in Divvun Manager:

Pahkattekst i Divvun Manager

Package names & descriptions are stored and localised in the following files:

As a general rule, the minimum localisation should be:

This ensures that the tool is presented in an expected language for most users. Other localisations can of course be added ad lib.

The names and descriptions will be propagated in two steps:

  1. they will be accessible on the next package update (ie after the next successfull nightly build and upload of already existing packages) - this will copy the data found in the repositories to the Páhkat index files.
  2. the next time is build or Divvun Manager loads data anew - then both will read the updated data in the Páhkat index files.

Both steps are automatic and happen regularly, so on average, new package descriptions will be available pretty soon after they have been committed and pushed.


Categories and channel labels

Category and channel labels are defined in .toml files in main/strings/. The following is the content of the en.toml (English) file:

"cat:keyboard-layouts" = "Keyboards"
"cat:spellers" = "Spellers"
"cat:speller-engines" = "Speller Engines"

"default" = "Stable"
"nightly" = "Nightly"
"beta" = "Beta"

The category labels are used as category headings in


and the channel labels show up in the settings in Divvun Manager:


Other strings

There are a couple of other strings as well that could or should be translated.

Language listing heading

This is defined in main/index.toml:

en = "Divvun Languages"
ru = "Языки Divvun"

en = "The repository of all languages supported by Divvun."

(The description is presently not being used anywhere, AFAIK.)

This text is found several places:



More strings

The following files and directories contain localisable strings:

It is unclear whether these strings are displayed, if at all.