Knowledge Base
Answers to common questions about localizing apps, docs, and content with General Translation.
Internationalization
Setting up i18n in a codebase: libraries, frameworks, and components.
- What should I check before launching a multilingual app?Before launching a multilingual app, test nine things in every supported locale: complete user journeys including errors, language detection and switching, variables and plurals, currency and time zones, text expansion, right-to-left layout, accessibility, production translation delivery, and crawlable language URLs for SEO. Each check needs an explicit pass condition.
- Should you build your own i18n or use General Translation?Hand-rolled i18n (a dictionary per language and a small t() helper) is fine for one or two languages and a little copy. As an app grows, you rebuild plural rules, fallbacks, and file syncing, and you still need to produce translations. General Translation's open-source libraries handle rendering, and General Translation generates and updates translations from your code.
- General Translation vs. vue-i18n: which should you use?General Translation lets Vue teams write source copy directly in templates and generate translations with the CLI. Its gt-vue plugin renders that content with locale-aware plural and number formatting. Choose it to remove keyed source-file maintenance; vue-i18n remains a fit for teams using Nuxt's i18n module and an established catalog workflow.
- General Translation vs. Symfony Translation: which should you use?Symfony Translation renders messages in PHP and Twig. General Translation translates its YAML catalogs in CI, keeps them current as your source changes, and gives reviewers a Dashboard to edit them. Keep Symfony's rendering and add automated translation to your release workflow.
- General Translation vs. react-intl: which should you use?General Translation lets React teams keep ICU message syntax while adding translation generation, shared terminology, and Dashboard review. react-intl supplies formatting and FormatJS catalog tooling; General Translation produces the translations too, and gt-next supports inline translated JSX in Server Components.
- General Translation vs. Rails I18n: do you need both?Rails I18n looks up messages and formats dates and numbers. General Translation produces the translations, keeps them current as your English changes, and gives your team a Dashboard for review. Use both to ship translated Rails catalogs with each release.
- General Translation vs. Paraglide JS: which should you use?Choose General Translation to keep copy inline and generate translations with the structure of your React components, shared terminology, and Dashboard review. Choose Paraglide JS for compiled, typed message functions and per-message tree-shaking. Paraglide renders your catalogs; General Translation connects source copy to translation generation and ongoing updates.
- General Translation vs. nestjs-i18n: which should you use?nestjs-i18n resolves each request's language in a NestJS app and renders messages from per-language JSON or YAML catalogs, but it doesn't translate anything. General Translation's CLI translates those catalogs, and its gt-node library translates content that only exists at run time, so you can keep nestjs-i18n and add General Translation.
- General Translation vs. Mobility: which should you use?Mobility stores translated model attributes in your database. General Translation produces those translations through its API, using your Glossary and Custom Prompts. Use both to translate product listings, posts, and other database content while keeping your Rails models.
- General Translation vs. Lingui: which should you use?Choose General Translation to keep copy inline like Lingui and generate the translations with your JSX structure as context. Lingui extracts inline messages into catalogs for your translators or a connected service to translate. General Translation's CLI updates translations as your code changes, and your team reviews them in the Dashboard.
- General Translation vs. Intlayer: which should you use?Intlayer keeps each component's content in a typed declaration file next to it, with every language written side by side, and can fill missing languages with an AI provider you configure. General Translation keeps copy inline in your components in one language and generates the other languages with the context of your code.
- General Translation vs. i18next: which should you use?Choose General Translation to keep copy inline in React components and generate translations with its JSX structure and product context. You can also keep i18next and use General Translation to translate existing catalogs. i18next supplies message rendering and plural selection; translation generation comes from a separate service.
- General Translation vs. i18next, react-intl, and next-intl: which i18n library should you use?Open-source libraries such as i18next, react-intl, and next-intl don't translate anything. They display translations you supply in a catalog file for each language, written by you, your translators, or a separate service. General Translation's libraries are open source too and do the same job, and General Translation also does the translating, with your code as context.
- General Translation vs. GNU gettext: do you need both?Keep GNU gettext for extraction and rendering, and add General Translation to generate and maintain the PO files. General Translation carries translator notes and message context into generation, applies shared terminology, and gives reviewers a Dashboard editor. Your existing gettext calls and compiled catalogs stay in place.
- General Translation vs. Django's translation framework: do you need both?Use Django's translation framework and General Translation together. Django handles message extraction, language selection, and rendering. General Translation fills its PO files, including plural forms, with your product terminology and Dashboard review. Your templates and URL patterns stay the same while translations update with your code.
- General Translation vs. Babel and Flask-Babel: which should you use?Babel formats dates, numbers, and currencies for any locale and manages gettext catalogs, and Flask-Babel connects it to Flask, but neither translates your strings. General Translation's CLI fills in Babel's PO files for every language, plural forms included, so you can keep Flask-Babel and stop translating catalogs by hand.
- Can I do i18n without translation files?Yes. With gt-react or gt-next, content stays inline in your components inside a <T> component, and translations are generated at build time as output, so there are no keys or per-locale JSON files to write and keep in sync.Video
- How do I translate conditional text in JSX?Instead of translating each side of a ternary separately, wrap the whole sentence in a <T> component and express the condition with <Branch>, so the translator sees the full context and can reorder the sentence for each language.Video
Locale Formatting
Plurals, dates, numbers, currencies, and right-to-left text in every locale.
Translation
Machine and AI translation, quality, context, and glossaries.
Multilingual SEO
Locale routing, hreflang, sitemaps, and translated metadata for multilingual sites.
Workflow Tools
Choosing localization tools and keeping translations in sync with continuous localization.
- Why use General Translation instead of a TMS (Smartling, Lokalise, Phrase, Crowdin, or Transifex)?A translation management system (TMS) such as Smartling, Lokalise, Phrase, Crowdin, or Transifex coordinates translators, but engineers still extract strings, send them out, wait for translations, and wire them back into the product. General Translation translates content in your code with its context, ships every language with each release, and runs on open-source libraries with no lock-in.
- What's the best i18n library for a React app?The four main React i18n libraries are General Translation's gt-react, react-i18next, Lingui, and React Intl. All four render and format translations, but only gt-react also generates them, from copy written inline in your JSX. Choose react-i18next to keep i18next catalogs and plugins, Lingui for extraction to compiled catalogs, and React Intl for FormatJS and ICU MessageFormat.
- next-intl vs gt-next: which should you use for Next.js?next-intl renders translations you supply in a message catalog for each language. gt-next renders translations too, and General Translation also generates them from copy written inline in your JSX. Both are MIT-licensed and support the App Router and Server Components. If your next-intl catalogs already work, you can keep them and use General Translation to translate them without migrating.
- General Translation vs. Weblate: which should you use?Weblate is a self-hostable, Git-based localization platform built for translating repository files with a community or team. General Translation integrates translation generation into development and releases, using marked JSX and shared product context. Keep your gettext files or adopt inline authoring to remove source-catalog maintenance too.
- General Translation vs. Transifex: which should you use?Choose General Translation to translate marked JSX with its structure and developer context, then bundle the results or serve them from its CDN. Transifex Native also keeps strings in code, but publishes them through its content delivery service. Transifex is a strong fit for teams using its translation partners, quality scores, or snippet-based website translation.
- General Translation vs. Tolgee: which should you use?Tolgee combines keyed messages, in-context editing, and AI translation in a self-hostable platform. General Translation keeps readable copy directly in your components and generates translations from the marked JSX, so you can ship new copy in every language without maintaining message keys.
- General Translation vs. Smartling: which should you use?Choose General Translation when you want app translations generated from code as part of your release. Smartling combines a translation management system, AI and human services, and a website translation proxy. General Translation keeps copy in your components, carries its context into translation, and gives your team a Dashboard for review.
- General Translation vs. Phrase: which should you use?General Translation is a strong Phrase Strings alternative when your app and documentation ship together. It generates translations from code and content files, applies shared terminology, and runs in your release workflow. Phrase combines software localization with a document-focused TMS, vendor management, and a broad choice of translation engines.
- General Translation vs. Lokalise: which should you use?General Translation is a strong Lokalise alternative for teams that want readable copy in JSX and translation built into development. Lokalise is built around shared keys, design-tool integrations, and mobile over-the-air delivery. General Translation generates translations from the app's marked content and supports review in its Dashboard or in GitHub pull requests.
- General Translation vs. Locize: which should you use?Locize is a translation management system from the creators of i18next that delivers translations from a CDN, collects new keys from your running app, and adds AI translation and an in-context editor. You still maintain the i18n library and its keys. General Translation can be your i18n library and translate it, or translate the i18next files you already have.
- General Translation vs. i18n-tasks: which should you use?i18n-tasks is a Ruby gem that finds missing and unused Rails I18n keys, tidies locale files, and can fill missing keys through Google Translate, DeepL, OpenAI, Yandex, or watsonx. General Translation translates whole locale files with your Glossary, Custom Prompts, and Dashboard review. They do different jobs, and many teams can use both.
- General Translation vs. Crowdin: which should you use?Choose General Translation to keep copy in your components and generate translations with your build. Crowdin manages translation projects around resource files, translators, and review workflows, which engineers connect to the app and maintain as the product changes. Crowdin remains a strong fit for open-source community translation and vendor-led programs.
- What is the best localization software for developers?Look for one system that covers the whole pipeline, from the i18n library in your code to translation and delivery, instead of stitching together a separate library, translation management system, and translation vendor.Video