# Change between language: a GUI enhancement?

**URL:** <https://gramps.discourse.group/t/change-between-language-a-gui-enhancement/7060>\
**Category:** International\
**Tags:** localization\
**Created:** [February 20, 2025, 12:46pm UTC](https://gramps.discourse.group/t/change-between-language-a-gui-enhancement/7060 "2025-02-20T12:46:56Z")\
**Posts on this page:** 19\
**Page:** 1

<div class="post-metadata">

**Author:** ![StephanP](https://yyz2.discourse-cdn.com/free1/user_avatar/gramps.discourse.group/stephanp/32/3545_2.png) [@StephanP](https://gramps.discourse.group/u/StephanP)\
**Post date:** [February 20, 2025, 12:46pm UTC](https://gramps.discourse.group/t/change-between-language-a-gui-enhancement/7060/1 "2025-02-20T12:46:56Z")

</div>

[A recent thread](https://gramps.discourse.group/t/change-between-languages/7018) suggests the currently recommended hack to specify the GUI language:

> [@Change between language](#):
>
> If you like to have both Danish and English, make a copy of your Windows desktop shortcut and change the “Target” for the Shortcut to: `%comspec% /c set LANG=en_US.UTF-8 && start grampsw.exe`
> 
> And for the Danish: `%comspec% /c set LANG=dk_DK.UTF-8 && start grampsw.exe`
> 
> The “Start in” should be the folder you installed Gramps to, e.g.:  
> `C:\Program Files\GrampsAIO64-5.2.3`

Hacking a desktop shortcut is nice for those who are comfortable in doing such things, but I wouldn’t regard this user friendly.

It would be a good thing if the general settings in Gramps would provide a choice of GUI language.

A second language option could be the language of terminology used in reports, graphs and other output. This would allow a user to generate reports in a third language, which will come in very handy when exchanging information with family abroad.  
If necessary the app could download a missing dictionary from the repository.

---

<div class="post-metadata">

**Author:** ![DaveSch](https://yyz2.discourse-cdn.com/free1/user_avatar/gramps.discourse.group/davesch/32/40_2.png) [@DaveSch](https://gramps.discourse.group/u/DaveSch)\
**Post date:** [February 20, 2025, 1:18pm UTC](https://gramps.discourse.group/t/change-between-language-a-gui-enhancement/7060/2 "2025-02-20T13:18:10Z")

</div>

> [@StephanP](#):
>
> A second language option could be the language of terminology used in reports, graphs and other output.

Most reports (all ?) have the option to be generated in another language other than the default.

See the [Complete Individual Report](https://gramps-project.org/wiki/index.php/Gramps_5.2_Wiki_Manual_-_Reports_-_part_6#Report_Options_.282.29_3)’s Report Option’s (2) tab.

 ![CompleteIndividualReport-TextReports-ReportOptions2-tab-50](https://global.discourse-cdn.com/free1/uploads/gramps/original/2X/a/a891a937a30f522af87584bf9342aec8f6014931.png)

---

<div class="post-metadata">

**Author:** ![emyoulation](https://yyz2.discourse-cdn.com/free1/user_avatar/gramps.discourse.group/emyoulation/32/67_2.png) [@emyoulation](https://gramps.discourse.group/u/emyoulation)\
**Post date:** [February 20, 2025, 2:06pm UTC](https://gramps.discourse.group/t/change-between-language-a-gui-enhancement/7060/3 "2025-02-20T14:06:52Z")

</div>

> [@DaveSch](#):
>
> Most reports (all ?)

That’s a good observation. Is this `Translation` option **universal** for built-in and addon Reports?

---

<div class="post-metadata">

**Author:** ![emyoulation](https://yyz2.discourse-cdn.com/free1/user_avatar/gramps.discourse.group/emyoulation/32/67_2.png) [@emyoulation](https://gramps.discourse.group/u/emyoulation)\
**Post date:** [February 20, 2025, 3:05pm UTC](https://gramps.discourse.group/t/change-between-language-a-gui-enhancement/7060/4 "2025-02-20T15:05:47Z")

</div>

[There’s a nice stagnant thread](https://gramps.discourse.group/t/the-portableapps-points-out-language-adapting-in-gramps-would-be-better-if/3899) (from the 5.2beta cycle)

Some interesting points:

- the MSWindows-oriented PortableApps group asks why Gramps doesn’t use some opportunities to adapt more transparently. (The PortableApps also installs all available languages and allows … _somewhat_ … easier overrides to language selection.)
- It notes Reports having different languages selector
- it argues that the [command line](https://gramps-project.org/wiki/index.php/Gramps_5.2_Wiki_Manual_-_Command_Line) interface (and shortcut hacking options) do not pass the “usable by Aunt Martha” test

I wonder if it isn’t time for Gramps to adopt a Language selection icon too?

@SNoiraud just greatly improved the language selection menu generated by the Narrative Report. Its Language menu now shows the choices labeled in the Currently selected language _ **and** _ labeled in their native tongue. But the Hamburger’s parent menu is labeled “Language” in the current language. The menu would benefit from a “language” icon that needs no translation.

And such an icon could be added to the WordPress-based [gramps-project.org](http://gramps-project.org) home/landing page and its “[Features](https://gramps-project.org/blog/features/)” and “[Download](https://gramps-project.org/blog/download/)” pages.

---

<div class="post-metadata">

**Author:** ![Nick-Hall](https://yyz2.discourse-cdn.com/free1/user_avatar/gramps.discourse.group/nick-hall/32/95_2.png) [@Nick-Hall](https://gramps.discourse.group/u/Nick-Hall)\
**Post date:** [February 20, 2025, 6:00pm UTC](https://gramps.discourse.group/t/change-between-language-a-gui-enhancement/7060/5 "2025-02-20T18:00:32Z")

</div>

> [@emyoulation](#):
>
> I wonder if it isn’t time for Gramps to adopt a Language selection icon too?

We automatically detect the GUI language setting from the desktop environment.  
This is what most of our users want.

It would be fairly easy to add a language selector in the preferences. We could populate it with the list of languages that we have translations for. Changing the setting would require a restart. At start-up we would read the setting and use it as an override in the same way that we already use the `LANGUAGE` environment variable.

However, providing a language selector would imply that no other configuration is required, and that is not the case.

---

<div class="post-metadata">

**Author:** ![StephanP](https://yyz2.discourse-cdn.com/free1/user_avatar/gramps.discourse.group/stephanp/32/3545_2.png) [@StephanP](https://gramps.discourse.group/u/StephanP)\
**Post date:** [February 20, 2025, 6:22pm UTC](https://gramps.discourse.group/t/change-between-language-a-gui-enhancement/7060/6 "2025-02-20T18:22:01Z")

</div>

I would totally understand that changing the language overrule setting requires a restart of the app. This is not uncommon.

> [@Nick-Hall](#):
>
> However, providing a language selector would imply that no other configuration is required, and that is not the case.

Could you elaborate on this?  
I fail to see that a language (overrule) selector would negate the need for other configuration settings.

---

<div class="post-metadata">

**Author:** ![emyoulation](https://yyz2.discourse-cdn.com/free1/user_avatar/gramps.discourse.group/emyoulation/32/67_2.png) [@emyoulation](https://gramps.discourse.group/u/emyoulation)\
**Post date:** [February 20, 2025, 6:29pm UTC](https://gramps.discourse.group/t/change-between-language-a-gui-enhancement/7060/7 "2025-02-20T18:29:22Z")

</div>

I read Nick’s statement differently.

That the Preferences setting would only add a GUI simplification to one aspect: setting (or clearing) a `LANGUAGE` environment variable.

All other language-related settings will remain independent. (But subject to future enhancement.)

---

<div class="post-metadata">

**Author:** ![Nick-Hall](https://yyz2.discourse-cdn.com/free1/user_avatar/gramps.discourse.group/nick-hall/32/95_2.png) [@Nick-Hall](https://gramps.discourse.group/u/Nick-Hall)\
**Post date:** [February 20, 2025, 7:26pm UTC](https://gramps.discourse.group/t/change-between-language-a-gui-enhancement/7060/8 "2025-02-20T19:26:24Z")

</div>

> [@StephanP](#):
>
> Could you elaborate on this?

Yes. If I run:

```python
LANGUAGE=nl Gramps.py

```

Then it will work. I can see the Dutch translations. However, I get a warning from Gtk telling me that it can’t recognise the locale. I’m not sure what impact this has, but if I wanted to work with Dutch then I would configure the locale on my system.

> [@emyoulation](#):
>
> All other language-related settings will remain independent.

Yes. You may also want to configure a locale to provide a default date format.

For Dutch, you may want to choose between “nl\_NL.utf8” and “nl\_BE.utf8”. In fact you will need to set the `LANG` environment variable for the spell checker (gspell), because it doesn’t recognise the `LANGUAGE` environment variable.

---

<div class="post-metadata">

**Author:** ![emyoulation](https://yyz2.discourse-cdn.com/free1/user_avatar/gramps.discourse.group/emyoulation/32/67_2.png) [@emyoulation](https://gramps.discourse.group/u/emyoulation)\
**Post date:** [February 20, 2025, 8:02pm UTC](https://gramps.discourse.group/t/change-between-language-a-gui-enhancement/7060/9 "2025-02-20T20:02:17Z")

</div>

> Restated by Perplexity.ai :

The forum post discusses the concept of “locale” in the context of configuring software for different languages and cultural settings. Here’s a simplified explanation:

A **locale** is a combination of settings that define how software should adapt to the user’s language, region, and cultural conventions. It includes preferences like date formats, currency symbols, and text encoding. For example:

- **`nl_NL.utf8`** : Dutch as spoken in the Netherlands.
- **`nl_BE.utf8`** : Dutch as spoken in Belgium.

## Key Points from the Forum Post:

1. **LANGUAGE vs. Locale Warning** : Running `LANGUAGE=nl Gramps.py` sets the interface language to Dutch but may trigger a warning because it doesn’t fully configure all locale settings (e.g., date formats). This is why setting a complete locale (e.g., `nl_NL.utf8`) is recommended for consistency[1](https://localizely.com/blog/language-vs-locale/), [2](https://superuser.com/questions/392439/lang-and-language-environment-variable-in-debian-based-systems), [5](https://www.gnu.org/software/gettext/manual/html_node/Locale-Environment-Variables.html).
2. **Environment Variables** :

- **`LANGUAGE`** : Specifies the language for messages but doesn’t handle broader cultural settings.
- **`LANG`** : Defines the default locale for all settings unless overridden.
- **`LC_*` Variables** : Allow customization of specific aspects like dates (`LC_TIME`) or messages (`LC_MESSAGES`)[2](https://superuser.com/questions/392439/lang-and-language-environment-variable-in-debian-based-systems), [5](https://www.gnu.org/software/gettext/manual/html_node/Locale-Environment-Variables.html), [8](https://www.baeldung.com/linux/locale-environment-variables).

1. **Practical Impact** : If you don’t configure a full locale, some features (like spell checkers) might not work correctly because they rely on `LANG` or `LC_*` variables rather than `LANGUAGE`.

This highlights that while `LANGUAGE` can change the interface language, setting a proper locale ensures full compatibility with regional conventions and system tools[1](https://localizely.com/blog/language-vs-locale/), [7](https://www.smartling.com/blog/what-is-a-locale)

### Citations:

1. [Language vs Locale: Understanding the key differences for better software localization](https://localizely.com/blog/language-vs-locale/)
2. [linux - LANG and LANGUAGE environment variable in Debian based systems - Super User](https://superuser.com/questions/392439/lang-and-language-environment-variable-in-debian-based-systems)
3. [deep-code-search/pytorch/data/github/vocab.tokens.json at master · guxd/deep-code-search · GitHub](https://github.com/guxd/deep-code-search/blob/master/pytorch/data/github/vocab.tokens.json)
4. [https://courses.grainger.illinois.edu/cs576/sp2015/doc/locales.pdf](https://courses.grainger.illinois.edu/cs576/sp2015/doc/locales.pdf)
5. [Locale Environment Variables (GNU gettext utilities)](https://www.gnu.org/software/gettext/manual/html_node/Locale-Environment-Variables.html)
6. [pybitcoin/pybitcoin/passphrases/english\_words.py at master · stacks-archive/pybitcoin · GitHub](https://github.com/stacks-network/pybitcoin/blob/master/pybitcoin/passphrases/english_words.py)
7. [What is a locale? Locale vs. languages](https://www.smartling.com/blog/what-is-a-locale)
8. [https://www.baeldung.com/linux/locale-environment-variables](https://www.baeldung.com/linux/locale-environment-variables)

---

<div class="post-metadata">

**Author:** ![emyoulation](https://yyz2.discourse-cdn.com/free1/user_avatar/gramps.discourse.group/emyoulation/32/67_2.png) [@emyoulation](https://gramps.discourse.group/u/emyoulation)\
**Post date:** [February 21, 2025, 2:55pm UTC](https://gramps.discourse.group/t/change-between-language-a-gui-enhancement/7060/10 "2025-02-21T14:55:23Z")

</div>

> [@emyoulation](#):
>
> I wonder if it isn’t time for Gramps to adopt a Language selection **icon** too?

Is there a source for embeddable font glyph (for GUI menus) and an SVG (for wiki and doc decorations) that Gramps could adopt ?

> Speech Bubble (💬): U+1F4AC  
> Represents communication or dialogue.
> 
> Letter Icons (A/文/अ):
> 
> - Latin Capital Letter A (🅰): U+1F170  
> Represents text generically.
> - Ideograph 文 (U+6587): Represents “language” in Chinese/Japanese.
> - Devanagari Letter अ (U+0905): Represents “language” in Indic scripts

---

<div class="post-metadata">

**Author:** ![StephanP](https://yyz2.discourse-cdn.com/free1/user_avatar/gramps.discourse.group/stephanp/32/3545_2.png) [@StephanP](https://gramps.discourse.group/u/StephanP)\
**Post date:** [February 21, 2025, 3:19pm UTC](https://gramps.discourse.group/t/change-between-language-a-gui-enhancement/7060/11 "2025-02-21T15:19:42Z")

</div>

I’d be all for Wikipedia’s language icon which is a pleasant combination of the Ideograph 文 (U+6587) AND the letter A.

> **[Gramps (software)](https://en.m.wikipedia.org/wiki/Gramps_(software))**
>
> Gramps, formerly GRAMPS (an acronym for Genealogical Research and Analysis Management Programming System), is a free and open-source genealogy software. It is developed in Python using PyGObject and utilizes Graphviz to create relationship graphs.
> Gramps represents a form of commons-based peer production, created by genealogists for genealogists. Beyond human family trees, the software has been used to create animal pedigree charts and academic genealogies that map mentoring relationships amon...

---

<div class="post-metadata">

**Author:** ![emyoulation](https://yyz2.discourse-cdn.com/free1/user_avatar/gramps.discourse.group/emyoulation/32/67_2.png) [@emyoulation](https://gramps.discourse.group/u/emyoulation)\
**Post date:** [February 21, 2025, 3:45pm UTC](https://gramps.discourse.group/t/change-between-language-a-gui-enhancement/7060/12 "2025-02-21T15:45:03Z")

</div>

Perhaps we have a user proficient in [FontForge](https://fontforge.org)? It seems like combining the 2 glyphs from a (compatibly licensed) open source font would be straightforward.

Then an embeddable “Genealogy” fontface could be used for this?

(And expanding the embeddable font family to include custom Genealogical symbols could free us of the platform and font family idiosyncrasies in that Preferences option.)

---

<div class="post-metadata">

**Author:** ![emyoulation](https://yyz2.discourse-cdn.com/free1/user_avatar/gramps.discourse.group/emyoulation/32/67_2.png) [@emyoulation](https://gramps.discourse.group/u/emyoulation)\
**Post date:** [July 18, 2025, 2:46pm UTC](https://gramps.discourse.group/t/change-between-language-a-gui-enhancement/7060/15 "2025-07-18T14:46:49Z")

</div>

A [“GRAMPS for Genealogists” Facebook group user posted a question about using Norwegian in Gramps 6.0 on Win11](https://www.facebook.com/share/p/15yAV53LYU/)

A response said that they had to change to an older version of Gramps to change their language setting. (They were Swedish.)

Another posted a screen capture with German and English locales) to identify which languages were installed.

Is there a universal way (OS and Gramps version independent) to identify which languages are installed?

And this thread started about shortcuts for Gramps 5.2 and Windows 11. What about other version of Gramps and other OSes?

Also, do we have a comprehensive list of `LANG` parameters?

---

<div class="post-metadata">

**Author:** ![DaveSch](https://yyz2.discourse-cdn.com/free1/user_avatar/gramps.discourse.group/davesch/32/40_2.png) [@DaveSch](https://gramps.discourse.group/u/DaveSch)\
**Post date:** [July 18, 2025, 3:54pm UTC](https://gramps.discourse.group/t/change-between-language-a-gui-enhancement/7060/16 "2025-07-18T15:54:29Z")

</div>

> [@emyoulation](#):
>
> Is there a universal way (OS and Gramps version independent) to identify which languages are installed?

Gramps 6.0.3 on Win10 native en\_US environment.

My installed languages can be found in the programs files` \share\locale` folder. Each language installed gets their own sub-folder.

---

<div class="post-metadata">

**Author:** ![DaveSch](https://yyz2.discourse-cdn.com/free1/user_avatar/gramps.discourse.group/davesch/32/40_2.png) [@DaveSch](https://gramps.discourse.group/u/DaveSch)\
**Post date:** [July 18, 2025, 4:09pm UTC](https://gramps.discourse.group/t/change-between-language-a-gui-enhancement/7060/17 "2025-07-18T16:09:33Z")

</div>

> [@emyoulation](#):
>
> Is there a universal way (OS and Gramps version independent) to identify which languages are installed?

[Prerequisites Checker](https://gramps-project.org/wiki/index.php/Addon:Prerequisites_Checker_Gramplet) lists

**Local Settings**

- LANG: en\_US.UTF-8
- LANGUAGE: en
- LC\_MESSAGES: not set
- LC\_TIME: not set

**Locales available**

nl : Dutch  
en\_GB : English  
en : English (USA)  
fi : Finnish

(My settings, Your Settings may vary!)

---

<div class="post-metadata">

**Author:** ![Nick-Hall](https://yyz2.discourse-cdn.com/free1/user_avatar/gramps.discourse.group/nick-hall/32/95_2.png) [@Nick-Hall](https://gramps.discourse.group/u/Nick-Hall)\
**Post date:** [July 18, 2025, 4:49pm UTC](https://gramps.discourse.group/t/change-between-language-a-gui-enhancement/7060/18 "2025-07-18T16:49:06Z")

</div>

> [@emyoulation](#):
>
> Also, do we have a comprehensive list of `LANG` parameters?

There is a list of supported languages in the [`po/LINGUAS`](https://github.com/gramps-project/gramps/blob/master/po/LINGUAS) file.

---

<div class="post-metadata">

**Author:** ![emyoulation](https://yyz2.discourse-cdn.com/free1/user_avatar/gramps.discourse.group/emyoulation/32/67_2.png) [@emyoulation](https://gramps.discourse.group/u/emyoulation)\
**Post date:** [July 18, 2025, 5:25pm UTC](https://gramps.discourse.group/t/change-between-language-a-gui-enhancement/7060/19 "2025-07-18T17:25:36Z")

</div>

> [@Nick-Hall](#):
>
> There is a list of supported languages in the [`po/LINGUAS`](https://github.com/gramps-project/gramps/blob/master/po/LINGUAS) file.

All of those have the 2 lower case letter language code. Would all of those use the `.utf8` character encoding and upper case + underscore + lower case language code?

Like the Windows shortcut target `%comspec% /c set LANG=nl_NL.utf8 && start grampsw.exe`

---

<div class="post-metadata">

**Author:** ![grausal](https://avatars.discourse-cdn.com/v4/letter/g/e47774/32.png) [@grausal](https://gramps.discourse.group/u/grausal)\
**Post date:** [August 7, 2025, 11:47am UTC](https://gramps.discourse.group/t/change-between-language-a-gui-enhancement/7060/20 "2025-08-07T11:47:11Z")

</div>

If the GUI change of languages in general is difficult I would propose to at least make the change of the installed OS/System language to English and vice versa easily accessible.  
For support it is often easier to work with the English version (menus etc.) instead of the the custom OS/System language, then used for reports etc.  
Thanks

---

<div class="post-metadata">

**Author:** ![emyoulation](https://yyz2.discourse-cdn.com/free1/user_avatar/gramps.discourse.group/emyoulation/32/67_2.png) [@emyoulation](https://gramps.discourse.group/u/emyoulation)\
**Post date:** [July 14, 2026, 3:47pm UTC](https://gramps.discourse.group/t/change-between-language-a-gui-enhancement/7060/21 "2026-07-14T15:47:13Z")

</div>

> [@DaveSch](#):
>
> (My settings, Your Settings may vary!)

When AI coding assistance came along, a readout gramplet of the installed locales for Gramps was one of my targets:

> [@Troubleshooting Gramps paths and environmental variables](https://gramps.discourse.group/t/troubleshooting-gramps-paths-and-environmental-variables/5692/10):
>
> - [Environment Inspector](https://github.com/emyoulation/CuratedGrampsPlugins/tree/main/gramps61/source/EnvironmentInspector)   
> list installed languages and values for environment variables, Gramps constants

@dsblank started a discussion of a Language chooser on 14 July 2026 :

> [@Gramps Restart-and-Restore Mechanism, including Language Preference](https://gramps.discourse.group/t/gramps-restart-and-restore-mechanism-including-language-preference/9710/1):
>
> I’ve started a developer discussion for a Gramps Restart-and-Restore Mechanism, including Language Preference in the discussion area:

> <https://github.com/gramps-project/gramps/pull/2287>
>
> addresses \[0013266\](https://gramps-project.org/bugs/view.php?id=13266): Add Date… format preview to Preferences (2024)
> 
> Append a live-rendered example to each entry in the Date format drop-down in Edit → Preferences → Data. The example date is 21 April 2001, the date of the first public release of GRAMPS (Genealogical Research and Analysis Management Programming System) for the RedHat 7.X Linux operating system. Each format is rendered by instantiating a temporary locale-specific DateDisplay (format=i) so the global displayer is never mutated. No new imports are required.
> 
> Conforms to the 'Date format:' menu design of the Kinship Report in Report Option (2). But uses a fixed date instead of Today() to ensure a leading zero month number and unambiguous (had to be larger than 12) day number.
> 
> \<img width="49%" alt="image" src="https://github.com/user-attachments/assets/78872ab7-a149-4f6a-8152-d8fed66741de" /\> \<img width="49%" alt="image" src="https://github.com/user-attachments/assets/fd53fdba-ae01-4129-b3d1-13e500f7a2b2" /\>
> 
> Generated-by: Claude Sonnet 4.6, Anthropic (claude-sonnet-4-6), via claude.ai chat interface.
> Prompts: “find where the list of menu items to select dateformat is generated. Suggest a surgical change to append an example of the menu item’s format (using the date April 21, 2001) in each menu item.” The full code for the module can be read at: \[URL\]. please give the surgical change for that code.
> 
> Constraints: 
> \* gramps-project.org/wiki/index.php/Howto:\_Contribute\_to\_Gramps#AI\_generated\_code 
> \* gramps/AGENTS.md at master · gramps-project/gramps · GitHub
