auto_i8ln 0.0.1
auto_i8ln: ^0.0.1 copied to clipboard
An auto internationalization package for Flutter
Auto-I8LN: Simplify Localization in Flutter #
Auto-i8ln is a powerful Flutter package designed to streamline the internationalization and localization process. It simplifies the creation of multilingual apps by automating many common localization tasks.
Key Features #
- Automated language file generation
- Seamless translation management
- Streamlined localization workflow
- Easy integration with existing Flutter projects
Installation #
Add this to your pubspec.yaml
:
dependencies:
auto_i8ln: ^x.y.z
Requirements #
- GEMINI API Key:
AutoI8LN uses
Generative AI
to generate the language files. You can get your API key from: https://aistudio.google.com/app/apikey. Below is a peek at how the package tunes the configuration for the API call:
generationConfig: GenerationConfig(
temperature: 0,
topK: 40,
topP: 0.95,
maxOutputTokens: 8192,
responseMimeType: 'text/plain',
),
The AutoI8LN CLI would show you how to get your API key and set it in your terminal's environment variables.
CLI Tool Usage #
Using the CLI tool in your terminal, at your project root, run:
dart run auto_i8ln:generate init
This will generate a default (English) language file in your project's assets/language
directory. Edit this file to add your translations by adding key-value pairs.
{
"auto_i8ln_gen_comment_1": "AutoI8ln Generated file - Use this for English translations",
"auto_i8ln_gen_comment_2": "Other translations cannot be generated without this file",
"auto_i8ln_gen_comment_3": "Add more key-value pairs below... (you can delete these auto_i8ln_gen_comments)",
"HELLO_MESSAGE": "Hello, welcome to our awesome app!",
"PLEASE_MESSAGE": "Please, provide your full name",
"THANKS_MESSAGE": "Thank you for shopping with us!",
"YES_MESSAGE": "Yes",
"NO_MESSAGE": "No"
}
Then update your pubspec.yaml
to include the following:
assets:
- assets/language/
You can then use the auto_i8ln:generate translations
command to generate the language files for auto-i8ln supported locales.
Currently, the following locales are supported:
English, French, German, Spanish, Italian
dart run auto_i8ln:generate translations
This will generate other language files in your project's assets/language
directory.
Say something goes wrong while generating the language files (for example, a wifi connection issue), this means a few translations have been generated while a few have not. To fix this, you can use the --skip-presents
flag to skip the translations that have already been generated before.
dart run auto_i8ln:generate translations --skip-presents
This will generate other language files in your project's assets/language
directory, but it will skip the translations that have already been generated before.
Basic Usage #
Here's a quick example of how to use Auto-i8ln:
import 'package:auto_i8ln/auto_i8ln.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
try {
// (Optional) You can have locale from SharedPreferences for persistence
SharedPreferences prefs = await SharedPreferences.getInstance();
String? locale = prefs.getString('auto_i8ln_locale');
// ! IMPORTANT: Set locale first
autoI8lnGen.setLocale(locale);
// ! NEXT: Initialize locale
final content = await rootBundle.loadString(autoI8lnGen.getGenPath());
autoI8lnGen.initializeLocale(content);
} catch(_) {}
// Run the app
runApp(const MyApp());
}
// In your app pages or widgets you can use the AutoText widget with its text property as the key, and the text will be translated automatically, depending on the current locale.
// The widget supports all the properties and methods of a regular Text widget.
// ....
const AutoText("HELLO_MESSAGE"),
// ....
Text.rich(
TextSpan(
children: [
// For your TextSpan children, you can use AutoTextSpan just like a normal TextSpan, and add a .textSpan() to the end.
AutoTextSpan(text: "HELLO_MESSAGE_2", style: TextStyle(fontWeight: FontWeight.bold)).textSpan(),
// Or you could also use a regular TextSpan, and manually use the autoI8lnGen.translate() function to translate the text.
TextSpan(text: autoI8lnGen.translate("HELLO_MESSAGE_2"), style: const TextStyle(fontStyle: FontStyle.italic)),
],
),
style: const TextStyle(fontSize: 20, fontWeight: FontWeight.bold),
),
Documentation #
For detailed documentation and full examples, please refer to our GitHub repository.
Contributing #
We welcome contributions! Please see our Contributing Guide for more details.
License #
This project is licensed under the MIT License - see the LICENSE file for details.