The i18n subproject was started with the goal of providing good multilingual support to all our end user applications. The goals of the subproject are the following:
Toolkit related tasks:
- Provide an easy translation system for our toolkit
- Provide multidirectional conversion utilities from other translation and i18n systems for our toolkit
- Integrate with the user’s system locale for formatting of time, date and currency
- Provide great system font integration including loading default system fonts, managing scaling, automatically dealing with Unicode codepoint mappings and more
- Help IME integration in core underlying technologies such as dear imgui and glfw
- Translation of projects, docs and other text we own
Introduction to the project and what it seeks to achieve
The main goal of the project is to provide a smooth multilingual experience, for both developers of the applications, and users of the software. This means:
- easy integration with translation tools,
- Unicode rendering as expected
- Usage of the user’s default font if possible
- Integration with IMEs
The need for creating this project is because dear imgui doesn’t have a native localization system. This is expected, as it is only a library. For our framework and toolkit, however, it’s unacceptable to not have one. Because of this we have to implement our own system. Additionally, dear imgui doesn’t select any fonts for the user, therefore we have to implement a mechanism to fetch the default system fonts and apply them to their specific Unicode code point range in dear imgui.
Finally, while imgui IMEs support is, unfortunately, lacking outside of Windows. This is because the underlying glfw library that we use for Windowing doesn’t support IMEs internally. Other libraries like SDL do have support, but it too isn’t integrated into dear imgui. As a result of this, IME support in dear imgui is currently unimplemented.
Before actually contributing IME support to dear imgui, we first need to get glfw to support them natively. Fortunately, a pull request has been made that addresses this. We’re currently experimenting with the fork of glfw that has IME support and once we have enough knowledge of the library, we will probably help the developers in delivering this feature.
As a final note on what we do, we have translations. Currently, we only have English and Bulgarian versions of our applications. With time, we want to have them available in more languages to better accomodate more users.
- Stanislav Vasilev(Madman10K)