Skip to main content

· 3 min read
Jan Cizmar 😎
Štěpán Granát

We are proud to share that we have released alpha versions if Tolgee Platform v3 and Tolgee JS v5. We have added namespaces support to structure your strings into smaller chunks. The base library of our JS integrations is completely redesigned to be more lightweight end extendable by plugins.

What's new in the Tolgee Platform v3

The most exciting feature of the new platform release is the namespaces support. Now you can select a namespace while creating a new key, importing data or exporting data.

The breaking changes

While adding the namespaces support, we also removed some deprecated API endpoints. So if you use those in you CI/CD pipelines, please replace those with the /v2 endpoints. We have removed these endpoints:

  • All the endpoints matching /api/project/** (use /v2/projects/*)
  • All the endpoints matching /api/address-part/** (use /v2/slug/*)
  • /v2/projects/{projectId}/import/with-streaming-response (use /v2/projects/{projectId}/import)

While the /api/project/{projectId}/export/jsonZip is kept as the only v1 endpoint accessible with an API key.

What's new in the Tolgee JS v5

The base package of Tolgee JS @tolgee/core was redesigned entirely and refactored to be more customizable, lightweight, and to support the namespaces feature. This new implementation makes it extremely simple to create new plugins or framework integrations.

@tolgee/web

We've extracted web-related plugins into a separate package, so @tolgee/core is as small as possible and ready to run in different environments (other than the web).

Unified initialization

In new integrations, tolgee is always initialized outside the actual integration, and only the tolgee instance is passed down. Example in React:

const tolgee = Tolgee()
.use(ReactPlugin())
.use(FormatIcu())
.init({
...
});

export function App() {
return (
<TolgeeProvider tolgee={tolgee} fallback="Loading...">
...
</TolgeeProvider>
);
};

This way, we offer you more flexibility in what you can do with the tolgee instance and embrace its plugin system.

Unified t function interface

All the integrations now use a unified t function interface, which is a bit different but cleaner and more straightforward read more.

Usage of Suspense in React integration

React integration now uses Suspense to implement dynamic namespaces addition nicely. The component which would start loading new namespace through useTranslate will trigger a suspense exception which you can catch by your Suspense component. If you don't catch it, it will bubble to TolgeeProvider and fallback will be shown.

TL;DR

  • The Tolgee Platform v3 and Tolgee JS v5 integrations support namespaces
  • Deprecated v1 endpoints (/api/*) were deleted
  • The JS @tolgee/core new JS SKDs are now lightweight, customizable and cleaner
  • The @tolgee/web package contains plugins related to web
  • The interface of t function is unified across integrations
  • @tolgee/react now uses Suspense

· 6 min read
Marketa Chalupnikova

Context is crucial for software localization as it allows translators to understand the content in its proper context and thus produce an accurate translation. Without context, a software translation can be inaccurate and lead to user confusion or errors. In some cases, the context can completely change the meaning of what is being translated, so it is essential to have a good understanding of the text's context before starting the localization process.

· 9 min read
Jan Cizmar 😎

When we did a market analysis in Tolgee, we asked many companies how they solved localization in their project. We asked them what's their i18n tooling. Surprisingly a lot of companies maintain their custom solution. I've also set up f5bot to e-mail me when the i18n keyword appears in posts or comments on Reddit. Again, a lot of people share their custom i18n libraries or solutions. In this article, I want to explain why I recommend against creating your custom solution and show what challenges you will face when you decide to do so.

Don&#39;t create your custom i18n solution

· 7 min read
Štěpán Granát

As a React developer, I have an suspicion to JS classes usage. In React bubble, it feels like a bad practice when I see them somewhere.

However, recently I got a task to rewrite our @tolgee/core, which is VanillaJS, and so far, there have been classes everywhere. I somehow felt it is not right. But then I realized that I don't actually know how to replace classes outside of React. Hmm ...

· 7 min read
Marketa Chalupnikova

Machine translation (MT) is the process of using artificial intelligence to automatically translate text from one language to another without human involvement. Over time, from its beginnings in the 1950s, machine translation changed the translation industry. You probably have at least some little experience with machine translations as Google Translate and similar online translator tools have been available around the web for quite some time.

machine translations

· 8 min read
Ganesh Patil

Localization testing is a software or web application testing procedure designed to ensure the performance of the application and evaluate its different aspects. The behavior of software is tested for specific languages, regions, and cultures. The goal of doing localization testing is to test the linguistic and cultural aspects of specific modules. Localization testing mainly focuses on the content and UI elements of a website.