flutter 国际化适配

Flutter应用的国际化实现与最佳实践
本文详细介绍了Flutter应用程序的国际化实现过程,包括使用flutter_localizations插件和arb文件进行多语言支持,以及如何在程序入口设置本地化参数。通过示例代码展示了如何自动从翻译稿生成Dart代码,并在程序中获取翻译文案。此外,还提供了英文和中文的 arb 文件示例,以展示如何定义和使用多语言资源。

001 国际化定义

涉及语言及地区差异的适配改造过程。除了翻译文案之外,还需要将货币单位和背景

图等资源也设计成可根据不同地区自适应的变量。即语言差异配置抽取和国际化代码生成。

002 如何实现

国际化插件flutter_localizations,其内部提供了不同语言地区的配置封装,能够帮助我们

自动地从翻译稿生成Dart代码。

使用多个arb文件存储文案在不同语言地区的映射关系,并使用Flutter i18n插件来实现代码自动转换。

关键点:在程序入口为其设置了支持国际化两个重要参数即 localizationsDelegates 与 supportedLocales。前者为应用的翻译回调,而后者则为应用所支持的语言地区属性。

程序中通过 S.of(context),直接获取 arb 文件中翻译的文案。

003 代码

flutter_localizations:

sdk: flutter

import 'dart:async';

import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';

// ignore_for_file: non_constant_identifier_names
// ignore_for_file: camel_case_types
// ignore_for_file: prefer_single_quotes

// This file is automatically generated. DO NOT EDIT, all your changes would be lost.
class S implements WidgetsLocalizations {
  const S();

  static S current;

  static const GeneratedLocalizationsDelegate delegate =
    GeneratedLocalizationsDelegate();

  static S of(BuildContext context) => Localizations.of<S>(context, S);

  @override
  TextDirection get textDirection => TextDirection.ltr;

  String get app_title => "app_title";
  String get main_title => "My Main Title";
  String message_tip(String count) => "You have pushed the button many times: $count";
}

class $en extends S {
  const $en();
}

cla
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值