赞
踩
导入依赖
#国际化
intl: ^0.17.0
工具类
messages_all.dart
import 'dart:async'; import 'package:intl/intl.dart'; import 'package:intl/message_lookup_by_library.dart'; import 'package:intl/src/intl_helpers.dart'; import 'messages_en.dart' as messages_en; import 'messages_zh.dart' as messages_zh; typedef Future<dynamic> LibraryLoader(); Map<String, LibraryLoader> _deferredLibraries = { 'en': () => new Future.value(null), 'zh': () => new Future.value(null), }; MessageLookupByLibrary? _findExact(String localeName) { switch (localeName) { case 'en': return messages_en.messages; case 'zh': return messages_zh.messages; default: return null; } } /// User programs should call this before using [localeName] for messages. Future<bool> initializeMessages(String localeName) async { var availableLocale = Intl.verifiedLocale( localeName, (locale) => _deferredLibraries[locale] != null, onFailure: (_) => null); if (availableLocale == null) { return new Future.value(false); } var lib = _deferredLibraries[availableLocale]; await (lib == null ? new Future.value(false) : lib()); initializeInternalMessageLookup(() => new CompositeMessageLookup()); messageLookup.addLocale(availableLocale, _findGeneratedMessagesFor); return new Future.value(true); } bool _messagesExistFor(String locale) { try { return _findExact(locale) != null; } catch (e) { return false; } } MessageLookupByLibrary? _findGeneratedMessagesFor(String locale) { var actualLocale = Intl.verifiedLocale(locale, _messagesExistFor, onFailure: (_) => null); if (actualLocale == null) return null; return _findExact(actualLocale); }
messages_en.dart
// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart // This is a library that provides messages for a en locale. All the // messages from the main program should be duplicated here with the same // function name. // Ignore issues from commonly used lints in this file. // ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new // ignore_for_file:prefer_single_quotes,comment_references, directives_ordering // ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases // ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes // ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes import 'package:intl/intl.dart'; import 'package:intl/message_lookup_by_library.dart'; final messages = new MessageLookup(); typedef String MessageIfAbsent(String messageStr, List<dynamic> args); class MessageLookup extends MessageLookupByLibrary { String get localeName => 'en'; static String m0(value) => "Integral:${value}"; static String m1(main, sub) => "${main} - ${sub}"; static String m2(progress) => "Learned${progress}%"; final messages = _notInlinedMessages(_notInlinedMessages); static Map<String, Function> _notInlinedMessages(_) => <String, Function>{ "account_empty_tip": MessageLookupByLibrary.simpleMessage("Please enter an account"), "cancel": MessageLookupByLibrary.simpleMessage("Cancel"), "clean_all": MessageLookupByLibrary.simpleMessage("Clear all"), "collect": MessageLookupByLibrary.simpleMessage("Collect"), "collect_content": MessageLookupByLibrary.simpleMessage( "Are you sure remove the collected content?"), "color_theme": MessageLookupByLibrary.simpleMessage("Color Theme"), "confirm": MessageLookupByLibrary.simpleMessage("Confirm"), "dark_style": MessageLookupByLibrary.simpleMessage("Dark Mode"), "done": MessageLookupByLibrary.simpleMessage("Done"), "edit": MessageLookupByLibrary.simpleMessage("Edit"), "integral": m0, "label_group": m1, "language_chinese": MessageLookupByLibrary.simpleMessage("Chinese"), "language_english": MessageLookupByLibrary.simpleMessage("English"), "learn_no": MessageLookupByLibrary.simpleMessage("No learned"), "learn_progress": m2, "loading_content": MessageLookupByLibrary.simpleMessage("content loading..."), "login": MessageLookupByLibrary.simpleMessage("Login"), "login_success": MessageLookupByLibrary.simpleMessage("Login success"), "multi_language": MessageLookupByLibrary.simpleMessage("Multi language"), "net_error": MessageLookupByLibrary.simpleMessage("Network error"), "no_account": MessageLookupByLibrary.simpleMessage("No account yet?"), "placeholder": MessageLookupByLibrary.simpleMessage("--"), "psw_confirm_empty_tip": MessageLookupByLibrary.simpleMessage("Please confirm the password"), "psw_confirm_tip": MessageLookupByLibrary.simpleMessage( "Two passwords are inconsistent"), "psw_empty_tip": MessageLookupByLibrary.simpleMessage("Please enter an password"), "register": MessageLookupByLibrary.simpleMessage("Register"), "register_now": MessageLookupByLibrary.simpleMessage("Register now"), "register_success": MessageLookupByLibrary.simpleMessage("Register success"), "search_hint": MessageLookupByLibrary.simpleMessage( "separate multiple keywords with spaces"), "search_hot_title": MessageLookupByLibrary.simpleMessage("Popular search"), "search_local_title": MessageLookupByLibrary.simpleMessage("Historical search"), "settings": MessageLookupByLibrary.simpleMessage("Settings"), "tab_book": MessageLookupByLibrary.simpleMessage("Book"), "tab_book_course": MessageLookupByLibrary.simpleMessage("Book tutorial"), "tab_home": MessageLookupByLibrary.simpleMessage("Home"), "tab_knowledge": MessageLookupByLibrary.simpleMessage("Knowledge"), "tab_me": MessageLookupByLibrary.simpleMessage("Me"), "tab_nav": MessageLookupByLibrary.simpleMessage("Navigation"), "tab_project": MessageLookupByLibrary.simpleMessage("Project"), "tab_tree": MessageLookupByLibrary.simpleMessage("System"), "tips_msg": MessageLookupByLibrary.simpleMessage("Tips"), "topping": MessageLookupByLibrary.simpleMessage("Topping"), "user_name": MessageLookupByLibrary.simpleMessage("UserName"), "user_psw": MessageLookupByLibrary.simpleMessage("Password"), "user_psw_confirm": MessageLookupByLibrary.simpleMessage("Confirm Password") }; }
messages_zh.dart
// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart // This is a library that provides messages for a zh locale. All the // messages from the main program should be duplicated here with the same // function name. // Ignore issues from commonly used lints in this file. // ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new // ignore_for_file:prefer_single_quotes,comment_references, directives_ordering // ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases // ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes // ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes import 'package:intl/intl.dart'; import 'package:intl/message_lookup_by_library.dart'; final messages = new MessageLookup(); typedef String MessageIfAbsent(String messageStr, List<dynamic> args); class MessageLookup extends MessageLookupByLibrary { String get localeName => 'zh'; static String m0(value) => "积分:${value}"; static String m1(main, sub) => "${main} - ${sub}"; static String m2(progress) => "已学${progress}%"; final messages = _notInlinedMessages(_notInlinedMessages); static Map<String, Function> _notInlinedMessages(_) => <String, Function>{ "account_empty_tip": MessageLookupByLibrary.simpleMessage("请输入账号"), "cancel": MessageLookupByLibrary.simpleMessage("取消"), "clean_all": MessageLookupByLibrary.simpleMessage("清除全部"), "collect": MessageLookupByLibrary.simpleMessage("收藏"), "collect_content": MessageLookupByLibrary.simpleMessage("您确定要移除收藏内容吗?"), "color_theme": MessageLookupByLibrary.simpleMessage("彩色主题"), "confirm": MessageLookupByLibrary.simpleMessage("确定"), "dark_style": MessageLookupByLibrary.simpleMessage("暗黑模式"), "done": MessageLookupByLibrary.simpleMessage("完成"), "edit": MessageLookupByLibrary.simpleMessage("编辑"), "integral": m0, "label_group": m1, "language_chinese": MessageLookupByLibrary.simpleMessage("中文"), "language_english": MessageLookupByLibrary.simpleMessage("英文"), "learn_no": MessageLookupByLibrary.simpleMessage("未学习"), "learn_progress": m2, "loading_content": MessageLookupByLibrary.simpleMessage("内容加载中..."), "login": MessageLookupByLibrary.simpleMessage("登录"), "login_success": MessageLookupByLibrary.simpleMessage("登录成功"), "multi_language": MessageLookupByLibrary.simpleMessage("多语言"), "net_error": MessageLookupByLibrary.simpleMessage("网络错误"), "no_account": MessageLookupByLibrary.simpleMessage("还没账号?"), "placeholder": MessageLookupByLibrary.simpleMessage("--"), "psw_confirm_empty_tip": MessageLookupByLibrary.simpleMessage("请确认密码"), "psw_confirm_tip": MessageLookupByLibrary.simpleMessage("两次密码不一致"), "psw_empty_tip": MessageLookupByLibrary.simpleMessage("请输入密码"), "register": MessageLookupByLibrary.simpleMessage("注册"), "register_now": MessageLookupByLibrary.simpleMessage("立即注册"), "register_success": MessageLookupByLibrary.simpleMessage("注册成功"), "search_hint": MessageLookupByLibrary.simpleMessage("用空格分隔多个关键词"), "search_hot_title": MessageLookupByLibrary.simpleMessage("热门搜索"), "search_local_title": MessageLookupByLibrary.simpleMessage("历史搜索"), "settings": MessageLookupByLibrary.simpleMessage("设置"), "tab_book": MessageLookupByLibrary.simpleMessage("教程"), "tab_book_course": MessageLookupByLibrary.simpleMessage("书籍教程"), "tab_home": MessageLookupByLibrary.simpleMessage("首页"), "tab_knowledge": MessageLookupByLibrary.simpleMessage("知识"), "tab_me": MessageLookupByLibrary.simpleMessage("我的"), "tab_nav": MessageLookupByLibrary.simpleMessage("导航"), "tab_project": MessageLookupByLibrary.simpleMessage("项目"), "tab_tree": MessageLookupByLibrary.simpleMessage("体系"), "tips_msg": MessageLookupByLibrary.simpleMessage("提示"), "topping": MessageLookupByLibrary.simpleMessage("置顶"), "user_name": MessageLookupByLibrary.simpleMessage("用户名"), "user_psw": MessageLookupByLibrary.simpleMessage("密码"), "user_psw_confirm": MessageLookupByLibrary.simpleMessage("确认密码") }; }
l10n.dart
import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; import 'intl/messages_all.dart'; // ************************************************************************** // Generator: Flutter Intl IDE plugin // Made by Localizely // ************************************************************************** // ignore_for_file: non_constant_identifier_names, lines_longer_than_80_chars // ignore_for_file: join_return_with_assignment, prefer_final_in_for_each // ignore_for_file: avoid_redundant_argument_values, avoid_escaping_inner_quotes class S { S(); static S? _current; static S get current { assert(_current != null, 'No instance of S was loaded. Try to initialize the S delegate before accessing S.current.'); return _current!; } static const AppLocalizationDelegate delegate = AppLocalizationDelegate(); static Future<S> load(Locale locale) { final name = (locale.countryCode?.isEmpty ?? false) ? locale.languageCode : locale.toString(); final localeName = Intl.canonicalizedLocale(name); return initializeMessages(localeName).then((_) { Intl.defaultLocale = localeName; final instance = S(); S._current = instance; return instance; }); } static S of(BuildContext context) { final instance = S.maybeOf(context); assert(instance != null, 'No instance of S present in the widget tree. Did you add S.delegate in localizationsDelegates?'); return instance!; } static S? maybeOf(BuildContext context) { return Localizations.of<S>(context, S); } /// `Home` String get tab_home { return Intl.message( 'Home', name: 'tab_home', desc: '', args: [], ); } /// `Project` String get tab_project { return Intl.message( 'Project', name: 'tab_project', desc: '', args: [], ); } /// `Knowledge` String get tab_knowledge { return Intl.message( 'Knowledge', name: 'tab_knowledge', desc: '', args: [], ); } /// `Book` String get tab_book { return Intl.message( 'Book', name: 'tab_book', desc: '', args: [], ); } /// `Me` String get tab_me { return Intl.message( 'Me', name: 'tab_me', desc: '', args: [], ); } /// `Integral:{value}` String integral(Object value) { return Intl.message( 'Integral:$value', name: 'integral', desc: '', args: [value], ); } /// `Collect` String get collect { return Intl.message( 'Collect', name: 'collect', desc: '', args: [], ); } /// `Dark Mode` String get dark_style { return Intl.message( 'Dark Mode', name: 'dark_style', desc: '', args: [], ); } /// `Color Theme` String get color_theme { return Intl.message( 'Color Theme', name: 'color_theme', desc: '', args: [], ); } /// `Settings` String get settings { return Intl.message( 'Settings', name: 'settings', desc: '', args: [], ); } /// `--` String get placeholder { return Intl.message( '--', name: 'placeholder', desc: '', args: [], ); } /// `Login` String get login { return Intl.message( 'Login', name: 'login', desc: '', args: [], ); } /// `Register` String get register { return Intl.message( 'Register', name: 'register', desc: '', args: [], ); } /// `Register now` String get register_now { return Intl.message( 'Register now', name: 'register_now', desc: '', args: [], ); } /// `No account yet?` String get no_account { return Intl.message( 'No account yet?', name: 'no_account', desc: '', args: [], ); } /// `UserName` String get user_name { return Intl.message( 'UserName', name: 'user_name', desc: '', args: [], ); } /// `Password` String get user_psw { return Intl.message( 'Password', name: 'user_psw', desc: '', args: [], ); } /// `Confirm Password` String get user_psw_confirm { return Intl.message( 'Confirm Password', name: 'user_psw_confirm', desc: '', args: [], ); } /// `Topping` String get topping { return Intl.message( 'Topping', name: 'topping', desc: '', args: [], ); } /// `{main} - {sub}` String label_group(Object main, Object sub) { return Intl.message( '$main - $sub', name: 'label_group', desc: '', args: [main, sub], ); } /// `separate multiple keywords with spaces` String get search_hint { return Intl.message( 'separate multiple keywords with spaces', name: 'search_hint', desc: '', args: [], ); } /// `Popular search` String get search_hot_title { return Intl.message( 'Popular search', name: 'search_hot_title', desc: '', args: [], ); } /// `Historical search` String get search_local_title { return Intl.message( 'Historical search', name: 'search_local_title', desc: '', args: [], ); } /// `Edit` String get edit { return Intl.message( 'Edit', name: 'edit', desc: '', args: [], ); } /// `Clear all` String get clean_all { return Intl.message( 'Clear all', name: 'clean_all', desc: '', args: [], ); } /// `Done` String get done { return Intl.message( 'Done', name: 'done', desc: '', args: [], ); } /// `content loading...` String get loading_content { return Intl.message( 'content loading...', name: 'loading_content', desc: '', args: [], ); } /// `Learned{progress}%` String learn_progress(Object progress) { return Intl.message( 'Learned$progress%', name: 'learn_progress', desc: '', args: [progress], ); } /// `No learned` String get learn_no { return Intl.message( 'No learned', name: 'learn_no', desc: '', args: [], ); } /// `Multi language` String get multi_language { return Intl.message( 'Multi language', name: 'multi_language', desc: '', args: [], ); } /// `Chinese` String get language_chinese { return Intl.message( 'Chinese', name: 'language_chinese', desc: '', args: [], ); } /// `English` String get language_english { return Intl.message( 'English', name: 'language_english', desc: '', args: [], ); } /// `Please enter an account` String get account_empty_tip { return Intl.message( 'Please enter an account', name: 'account_empty_tip', desc: '', args: [], ); } /// `Please enter an password` String get psw_empty_tip { return Intl.message( 'Please enter an password', name: 'psw_empty_tip', desc: '', args: [], ); } /// `Please confirm the password` String get psw_confirm_empty_tip { return Intl.message( 'Please confirm the password', name: 'psw_confirm_empty_tip', desc: '', args: [], ); } /// `Two passwords are inconsistent` String get psw_confirm_tip { return Intl.message( 'Two passwords are inconsistent', name: 'psw_confirm_tip', desc: '', args: [], ); } /// `Login success` String get login_success { return Intl.message( 'Login success', name: 'login_success', desc: '', args: [], ); } /// `Register success` String get register_success { return Intl.message( 'Register success', name: 'register_success', desc: '', args: [], ); } /// `Network error` String get net_error { return Intl.message( 'Network error', name: 'net_error', desc: '', args: [], ); } /// `System` String get tab_tree { return Intl.message( 'System', name: 'tab_tree', desc: '', args: [], ); } /// `Navigation` String get tab_nav { return Intl.message( 'Navigation', name: 'tab_nav', desc: '', args: [], ); } /// `Book tutorial` String get tab_book_course { return Intl.message( 'Book tutorial', name: 'tab_book_course', desc: '', args: [], ); } /// `Tips` String get tips_msg { return Intl.message( 'Tips', name: 'tips_msg', desc: '', args: [], ); } /// `Cancel` String get cancel { return Intl.message( 'Cancel', name: 'cancel', desc: '', args: [], ); } /// `Confirm` String get confirm { return Intl.message( 'Confirm', name: 'confirm', desc: '', args: [], ); } /// `Are you sure remove the collected content?` String get collect_content { return Intl.message( 'Are you sure remove the collected content?', name: 'collect_content', desc: '', args: [], ); } } class AppLocalizationDelegate extends LocalizationsDelegate<S> { const AppLocalizationDelegate(); List<Locale> get supportedLocales { return const <Locale>[ Locale.fromSubtags(languageCode: 'en'), Locale.fromSubtags(languageCode: 'zh'), ]; } @override bool isSupported(Locale locale) => _isSupported(locale); @override Future<S> load(Locale locale) => S.load(locale); @override bool shouldReload(AppLocalizationDelegate old) => false; bool _isSupported(Locale locale) { for (var supportedLocale in supportedLocales) { if (supportedLocale.languageCode == locale.languageCode) { return true; } } return false; } }
使用案列
main.dart
return MaterialApp(
/// widget本地化代理设置
localizationsDelegates: const [
GlobalMaterialLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
S.delegate //自定义国际化
],
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。