polyglothq 1.3.0 copy "polyglothq: ^1.3.0" to clipboard
polyglothq: ^1.3.0 copied to clipboard

polyglothq is a Dart CLI to support using Polyglot for Flutter projects. polyglothq fetches translations from polyglothq.com, and converts them to a Flutter-suitable form.

Polyglothq Dart CLI #

THIS IS AN INTERNAL TOOL AND MIGHT NOT BE USEFUL FOR YOU

polyglothq is a Dart CLI to support using Polyglot for Flutter projects. polyglothq fetches translations from polyglothq.com, and converts them to a Flutter-suitable form.

How to install #

You can install polyglothq by running the following command in your terminal.

dart pub global activate polyglothq

Usage #

Authorize polyglot #

Before using polyglothq, you'll need to authorize with your Polyglot token. Run the following command to authorize:

polyglothq authorize <token>

This command will store your token securely, allowing you to use polyglothq with the necessary permissions.

Initialize polyglot in your project #

To start using polyglothq in your project, run the following command in the directory that contains your project:

polyglothq init

You'll be asked to select your project from the list of polyglot projects.

Pull translations from polyglot #

Run the following command to pull translations from Polyglot.

polyglothq pull

For dynamic texts, you can use following command.

polyglothq pull --dynamic

What to do if I have the same language with different country codes? #

Use the defaultCountryCode section in polyglot.yml to specify default country code.

:defaultCountryCode:
  en: GB
  sw: SW
copied to clipboard

Flutter usage #

First create new file in the root of the project 'l10n.yaml' with the following content:

arb-dir: "./assets/i18n/"
template-arb-file: intl_en.arb
output-localization-file: app_localizations.dart
copied to clipboard

You will need to add 'strings.dart' file to the util/localization folder:

import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';

class Strings {
  Strings._();

  static AppLocalizations? _latestLocalizations;

  static AppLocalizations of(BuildContext context) => AppLocalizations.of(context) ?? latest;

  static AppLocalizations get latest {
    final appLocalizations = _latestLocalizations;
    if (appLocalizations == null) {
      throw 'Unable to load App Localizations';
    }
    return appLocalizations;
  }
}

class StringsLocaleWidget extends StatelessWidget {
  const StringsLocaleWidget({super.key, required this.child});
  final Widget child;

  @override
  Widget build(BuildContext context) {
    Strings._latestLocalizations = AppLocalizations.of(context);
    return child;
  }
}

class AppLocales {
  static Locale get localeEn => const Locale('en', '');

  static List<Locale> get values => <Locale>[
    AppLocales.localeEn,
  ];
}
copied to clipboard

In your flutter code,

Strings.of(context).keyName

// With parameters
Strings.of(context).keyName('arg0', 'arg1', ...)
copied to clipboard

In cases, where you don't have access to the context:

  1. You'll need first to add the following widget:
MaterialApp(
  builder: (context, child) {
    return StringsLocaleWidget(child: child!); // Use StringsLocaleWidget
  },
);
copied to clipboard
  1. Then you can use:

Strings.latest.keyName

  • NOTE: Using translations without context is highly discouraged, and should only be used in special cases.
3
likes
140
points
182
downloads

Publisher

verified publisherinfinum.com

Weekly Downloads

2024.09.13 - 2025.03.28

polyglothq is a Dart CLI to support using Polyglot for Flutter projects. polyglothq fetches translations from polyglothq.com, and converts them to a Flutter-suitable form.

Homepage

Documentation

API reference

License

MIT (license)

Dependencies

args, console, dio, get_it, japx, json_annotation, recase, yaml

More

Packages that depend on polyglothq