universal_translator 2.0.0 universal_translator: ^2.0.0 copied to clipboard
A extension to native flutter widgets witch allows the widget to translate the text any rest API yout want, be it Rakuten, Google Translator or any other.
universal_translator #
A flutter plugin for adapting screen and font size.Let your UI display a reasonable layout on different screen sizes!
Usage: #
Add dependency: #
Please check the latest version before installation. If there is any problem with the new version, please use the previous version
dependencies:
# Functionalities
universal_translator: ^{latest version}
..
flutter:
sdk: flutter
Add the following imports to your Dart code: #
import 'package:universal_translator/universal_translator.dart';
Getting Started #
First, you will need to send the path, heades, body example and response example, allong with a few default parameters described bellow, before the calling of the translate function (we recomend to do as in the example):
void main() {
/// Required to make the `UniversalTranslatorInit` call before the `MaterialApp`
WidgetsFlutterBinding.ensureInitialized();
runApp(MyApp());
}
class MyApp extends StatelessWidget {
String path = "https://nlp-translation.p.rapidapi.com/v1/translate";
Map<String,dynamic> headers = { "x-rapidapi-key": "MY_API_KEY" }
String responsePattern(Response response) {
if (response.statusCode == 200 && response.data['status'] == 200) {
dynamic data = response.data;
return data["translated_text"][data["to"]];
}
return null;
}
Map<String,dynamic> bodyPattern(String text, Locale to) => {
"text": text,
"to": to.toLanguageTag(),
"from": "pt"
}
@override
Widget build(BuildContext context) {
return UniversalTranslatorInit(path,
headers: headers,
method: HttpMethod.get,
responsePattern: responsePattern,
bodyPattern: bodyPattern,
translateTo: Locale('en'),
// automaticDetection: true, // In case you don't know the user language
cacheDuration: Duration(days: 13),
// forceRefresh: true, // to ignore the cache data
builder: () => MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(title: 'Página inicial de demonstração do Flutter'),
),
);
}
}
Note: If will want to make the call before the MaterialApp, will have to add the WidgetsFlutterBinding.ensureInitialized(); before the runApp function.
Basic Usage #
Now, all you'll have to make is add the .translate() to all the Text you want to translate.
Scaffold(
appBar: AppBar(
title: Text(widget.title ?? "").translate(),
),
body: Column(
children: [
Text("Meu texto traduzido").translate(),
Text("Este texto mostra um placeholder diferente").translate("Place to Holder")
]
),
);
Disclaimer #
This package works with cache data dio_http_cache, that, by default last's 7 days, but can be change in the UniversalTranslatorInit
> cacheDuration
parameter.
Issues #
Please if you see any issues, bugs, or feature requests, send to me in: GitHub issue or send a direct email in case of urgency.