localizer_ai 0.1.0
localizer_ai: ^0.1.0 copied to clipboard
A Flutter package for AI-powered localization and automatic translation.
example/main.dart
// example/main.dart
import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:provider/provider.dart';
import 'package:localizer_ai/localizer_ai.dart';
import 'package:localizer_ai/src/translator_engines/openai_translator.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// Initialize the LocalizerAI singleton
await LocalizerAI().init(
defaultLocale: 'en',
supportedLocales: ['en', 'ar', 'fr'],
engine: OpenAITranslator(apiKey: 'YOUR_API_KEY'),
);
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider<LocalizerAI>(
create: (_) => LocalizerAI(),
child: Consumer<LocalizerAI>(
builder: (context, localizer, _) {
return MaterialApp(
locale: localizer.currentLocale,
supportedLocales: const [
Locale('en'),
Locale('ar'),
Locale('fr'),
],
localizationsDelegates: const [
GlobalMaterialLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
],
home: const HomePage(),
);
},
),
);
}
}
class HomePage extends StatelessWidget {
const HomePage({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
final localizer = Provider.of<LocalizerAI>(context);
return Scaffold(
appBar: AppBar(
title: FutureBuilder<String>(
future: localizer.translate('Welcome to the app'),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return const CircularProgressIndicator(color: Colors.white);
} else if (snapshot.hasError) {
return const Text('Error');
}
return Text(snapshot.data!);
},
),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
FutureBuilder<String>(
future: localizer.translate('Settings'),
builder: (context, snapshot) {
if (!snapshot.hasData) return const CircularProgressIndicator();
return Text(snapshot.data!);
},
),
const SizedBox(height: 20),
ElevatedButton(
onPressed: () async {
await localizer.changeLocale(
localizer.currentLocale.languageCode == 'en' ? 'ar' : 'en',
);
},
child: const Text('Switch Language'),
),
],
),
),
);
}
}