You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Flutter框架中实现数字的本地化适配?

在Flutter中实现数字本地化适配印度语言

核心思路

借助Flutter官方的intl包,可根据当前语言环境自动将数字转换为对应语言的格式,包括印地语等印度语言的专属数字体系(如天城文数字)。

实现步骤

1. 添加依赖

在项目的pubspec.yaml中引入intl包:

dependencies:
  flutter:
    sdk: flutter
  intl: ^0.18.1 # 建议使用最新稳定版本

2. 配置本地化支持

在MaterialApp中注册本地化代理,并添加目标印度语言的Locale:

import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:flutter_localizations/flutter_localizations.dart';

void main() => runApp(const MyApp());

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: '数字本地化示例',
      localizationsDelegates: const [
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
        GlobalCupertinoLocalizations.delegate,
      ],
      supportedLocales: const [
        Locale('en', 'US'), // 英文基准
        Locale('hi', 'IN'), // 印地语
        Locale('bn', 'IN'), // 印度孟加拉语
        // 可添加更多印度语言Locale
      ],
      home: const LocalizedNumberScreen(),
    );
  }
}

3. 动态格式化数字

通过NumberFormat类结合当前Locale,自动转换数字格式:

class LocalizedNumberScreen extends StatelessWidget {
  const LocalizedNumberScreen({super.key});

  @override
  Widget build(BuildContext context) {
    final currentLocale = Localizations.localeOf(context);
    final numberFormatter = NumberFormat.decimalPattern(currentLocale.toString());

    const testNumber = 1234567;

    return Scaffold(
      appBar: AppBar(title: const Text('数字本地化展示')),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text('原始数字: $testNumber'),
            const SizedBox(height: 16),
            Text('本地化数字: ${numberFormatter.format(testNumber)}'),
          ],
        ),
      ),
    );
  }
}

额外说明

  • 测试时可切换设备系统语言至目标印度语言,或在Flutter中手动指定Locale验证效果。
  • 如需适配印度特有的计数体系(如lakhs、crores),可使用NumberFormat.compact(locale: currentLocale)实现紧凑格式化。
  • NumberFormat还支持货币、百分比等场景的本地化,比如NumberFormat.currency(locale: currentLocale)可自动适配印度卢比的显示规则。

内容的提问来源于stack exchange,提问作者RANJIT KUMAR SAHU

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 13:02:34