Việc hỗ trợ multiple language trong lập trình mobile có lẽ là một trong những điều bắt buộc với hầu hết các ứng dụng. Để mở rộng thị trường cũng như lượng user thì tối thiểu chúng ta cũng phải support english language bên cạnh language chính của app (phụ thuộc vào quốc gia mục tiêu).
Đối với Flutter việc triển khai multiple language cũng hết sức đơn giản với sự hỗ trợ của các Plugin. Ở đây mình sẽ sử dụng Plugin Flutter Intl. Plugin này thì có mặt trên cả hai IDE là Android Studio và Visual Studio các bạn có thể vào Marketplace dể tải về nhé.
Link ở đây : https://plugins.jetbrains.com/plugin/13666-flutter-intl
Ở đây mình sẽ hướng dẫn trên android studio vì mình hiện tại đang dùng nó
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
localizationsDelegates: [
S.delegate,
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
supportedLocales: S.delegate.supportedLocales,
home: MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
{
"hello": "Hello everybody"
}
intl_vi.arb
{
"hello": "Xin chào tất cả các b"
}
S.of(context).hello
S.current.pageHomeConfirm
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(S.of(context).hello),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'You have pushed the button this many times:',
),
Text(
'$_counter',
style: Theme.of(context).textTheme.headline4,
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: Icon(Icons.add),
), // This trailing comma makes auto-formatting nicer for build methods.
);
}
#flutter #web-development #mobile-apps #programming #developer