温馨提示×

centos里flutter如何实现本地化

小樊
46
2025-09-07 21:52:42
栏目: 智能运维

在CentOS系统中实现Flutter应用的本地化,可以按照以下步骤进行:

1. 准备工作

确保你已经安装了Flutter SDK,并且你的项目已经创建好了。

2. 创建本地化文件

Flutter使用.arb文件来存储本地化的字符串。你需要在项目的lib/l10n目录下创建这些文件。

创建默认语言文件

首先,创建一个默认语言的.arb文件,例如en.arb

{
  "hello_world": "Hello, World!"
}

创建其他语言文件

然后,为每种需要支持的语言创建相应的.arb文件,例如zh_CN.arb

{
  "hello_world": "你好,世界!"
}

3. 配置本地化

pubspec.yaml文件中配置本地化支持:

flutter:
  generate: true
  localizations-delegates:
    - GlobalMaterialLocalizations.delegate
    - GlobalWidgetsLocalizations.delegate
    - GlobalCupertinoLocalizations.delegate
  supported-locales:
    - en
    - zh_CN

4. 使用本地化字符串

在你的代码中使用intl包提供的Localizations.of方法来获取本地化的字符串。

安装intl

pubspec.yaml文件中添加intl依赖:

dependencies:
  flutter:
    sdk: flutter
  intl: ^0.17.0 # 请使用最新版本

然后运行flutter pub get来安装依赖。

在代码中使用本地化字符串

在你的Widget中使用Localizations.of方法来获取本地化的字符串:

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

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      localizationsDelegates: [
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
        GlobalCupertinoLocalizations.delegate,
        Localizations.delegate<MaterialLocalizations>(
          MaterialLocalizations.delegate,
          messages: MyAppLocalizations.delegate.messages,
        ),
        Localizations.delegate<WidgetsLocalizations>(
          WidgetsLocalizations.delegate,
          messages: MyAppLocalizations.delegate.messages,
        ),
      ],
      supportedLocales: [
        const Locale('en', ''), // English
        const Locale('zh', 'CN'), // Simplified Chinese
      ],
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(Localizations.of<MaterialLocalizations>(
          context,
          MaterialLocalizations,
        ).appTitle),
      ),
      body: Center(
        child: Text(Localizations.of<MaterialLocalizations>(
          context,
          MaterialLocalizations,
          name: 'hello_world',
        )),
      ),
    );
  }
}

class MyAppLocalizations {
  static const List<Locale> supportedLocales = [
    Locale('en', ''), // English
    Locale('zh', 'CN'), // Simplified Chinese
  ];

  static const Map<String, Map<String, String>> _localizedValues = {
    'en': {
      'appTitle': 'Flutter Demo',
      'hello_world': 'Hello, World!',
    },
    'zh_CN': {
      'appTitle': 'Flutter 示例',
      'hello_world': '你好,世界!',
    },
  };

  static String of(BuildContext context, String name) {
    final locale = Localizations.localeOf(context);
    final messages = _localizedValues[locale.toLanguageTag()] ?? _localizedValues['en'];
    return messages[name] ?? name;
  }
}

5. 运行应用

现在你可以运行你的Flutter应用,并且它会根据设备的语言设置显示相应的本地化字符串。

flutter run

通过以上步骤,你就可以在CentOS系统中实现Flutter应用的本地化了。

0