Flutter多语言支持插件polyglothq的使用
Flutter多语言支持插件polyglothq的使用
polyglothq
是一个Dart命令行工具,用于在Flutter项目中使用Polyglot。它可以从polyglothq.com
获取翻译,并将其转换为适合Flutter的形式。
如何安装
你可以通过运行以下命令来安装polyglothq
:
dart pub global activate polyglothq
使用方法
授权Polyglot
在使用polyglothq
之前,你需要使用你的Polyglot令牌进行授权。运行以下命令进行授权:
polyglothq authorize <token>
这个命令会安全地存储你的令牌,使你能够使用polyglothq
并拥有必要的权限。
在项目中初始化Polyglot
要在你的项目中开始使用polyglothq
,请运行以下命令(确保在包含项目的目录中运行):
polyglothq init
你将被要求从Polyglot项目列表中选择你的项目。
从Polyglot拉取翻译
运行以下命令以从Polyglot拉取翻译:
polyglothq pull
对于动态文本,可以使用以下命令:
polyglothq pull --dynamic
如果我有相同的语言但不同的国家代码怎么办?
如果遇到相同语言但不同国家代码的情况,可以在polyglot.yml
文件中指定默认国家代码:
:defaultCountryCode:
en: GB
sw: SW
Flutter中的使用方法
在你的Flutter代码中,可以这样使用字符串:
Strings.of(context).keyName
// 带参数的情况
Strings.of(context).keyName('arg0', 'arg1', ...)
如果没有上下文访问权限,则需要先添加以下小部件:
MaterialApp(
builder: (context, child) {
return StringsLocaleWidget(child: child!); // 使用StringsLocaleWidget
},
);
然后可以使用:
Strings.latest.keyName
注意:在没有上下文的情况下使用翻译是非常不推荐的,应该只在特殊情况下使用。
示例代码
以下是完整的示例代码:
import 'package:example/util/localization/strings.dart';
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
[@override](/user/override)
Widget build(BuildContext context) {
return const MaterialApp(
title: 'Polyglot Demo',
localizationsDelegates: AppLocalizations.localizationsDelegates,
supportedLocales: AppLocalizations.supportedLocales,
home: HomeScreen(),
);
}
}
class HomeScreen extends StatelessWidget {
const HomeScreen({Key? key}) : super(key: key);
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Text(Strings.of(context).appName),
),
);
}
}
更多关于Flutter多语言支持插件polyglothq的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复