Flutter本地化字符串管理插件native_fcm_strings的使用

Flutter本地化字符串管理插件native_fcm_strings的使用

开发团队:netglade开发

状态: CI 版本 许可证 风格 Discord


Native FCM Strings插件

此Flutter插件提供了一种简单的方法来访问来自原生Android和iOS资源的本地化字符串,如strings.xml(Android)和.strings文件(iOS)。它允许Flutter应用程序根据系统语言设置检索正确的本地化字符串,从而确保原生部分和Flutter部分的一致性。

特点

  • 基于系统语言访问Android的strings.xml资源。
  • 基于系统语言访问iOS的.strings资源(通过.lproj文件夹)。
  • 使用与原生Android和iOS通知相同的本地化文件,避免了为Flutter重复创建本地化文件。
  • 支持基于设备语言的动态语言切换。

安装

  1. 将插件添加到您的pubspec.yaml文件中:
    dependencies:
      native_fcm_strings: ^1.0.0
    
  2. 运行flutter pub get以安装包。

使用

在Flutter中访问原生字符串

import 'package:native_fcm_strings/native_fcm_strings.dart';

// 示例用法
String localizedTitle = await NativeStrings.getTranslatedString(key: 'notification_title', locArgs: ['John', 'Doe']); // 返回:Message from John to Doe
String localizedBody = await NativeStrings.getTranslatedString(key: 'notification_body', locArgs: ['John', 'Doe']); // 返回:Message from John to Doe

这将根据当前设备的语言设置从适当的原生资源(Android的strings.xml或iOS的.strings文件)中检索本地化字符串。

Android设置

确保您的strings.xml文件正确地放置在语言特定的文件夹下(例如,res/values-en, res/values-cs)。

本地化字符串中的参数必须格式为%1$s,例如Message from %1$s to %2$s

iOS设置

确保您的.strings文件放置在语言特定的.lproj文件夹下(例如,en.lproj, cs.lproj)。

本地化字符串中的参数必须格式为%1$s,例如Message from %@ to %@.

贡献

您的贡献总是受欢迎的!请随时提交拉取请求。


示例代码

example/lib/main.dart

import 'package:native_fcm_strings/native_fcm_strings.dart';

void main() {
  final _ = NativeFcmStrings.getTranslatedString(key: 'x', locArgs: ['y', 'z']);
}

更多关于Flutter本地化字符串管理插件native_fcm_strings的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter本地化字符串管理插件native_fcm_strings的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


native_fcm_strings 是一个 Flutter 插件,用于简化 Flutter 应用中的本地化字符串管理。它允许开发者从 Firebase Remote Config 中获取本地化字符串,并将这些字符串集成到 Flutter 应用中的intl包中。使用这个插件可以让应用的本地化内容动态更新,而无需重新发布应用。

以下是如何使用 native_fcm_strings 插件的基本步骤:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 native_fcm_stringsfirebase_remote_config 作为依赖项。

dependencies:
  flutter:
    sdk: flutter
  native_fcm_strings: ^latest_version
  firebase_remote_config: ^latest_version

然后运行 flutter pub get 来获取依赖。

2. 初始化 Firebase Remote Config

在你的 Flutter 应用中初始化 Firebase 和 Firebase Remote Config。

import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_remote_config/firebase_remote_config.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();

  final remoteConfig = FirebaseRemoteConfig.instance;
  await remoteConfig.setConfigSettings(RemoteConfigSettings(
    fetchTimeout: const Duration(minutes: 1),
    minimumFetchInterval: const Duration(hours: 1),
  ));
  await remoteConfig.fetchAndActivate();

  runApp(MyApp());
}

3. 配置 native_fcm_strings

native_fcm_strings 中配置 Firebase Remote Config 的键值对,并将其与 intl 包集成。

import 'package:native_fcm_strings/native_fcm_strings.dart';

Future<void> setupLocalization() async {
  await NativeFcmStrings.instance.initialize(
    remoteConfig: FirebaseRemoteConfig.instance,
    defaultLanguage: 'en',
    supportedLanguages: ['en', 'es', 'fr'],
  );
}

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();

  final remoteConfig = FirebaseRemoteConfig.instance;
  await remoteConfig.setConfigSettings(RemoteConfigSettings(
    fetchTimeout: const Duration(minutes: 1),
    minimumFetchInterval: const Duration(hours: 1),
  ));
  await remoteConfig.fetchAndActivate();

  await setupLocalization();

  runApp(MyApp());
}

4. 定义本地化字符串

在 Firebase Remote Config 中为每种支持的语言定义本地化字符串。

例如,在 Remote Config 中定义以下键值对:

welcome_message_en: "Welcome"
welcome_message_es: "Bienvenido"
welcome_message_fr: "Bienvenue"

5. 在应用中使用本地化字符串

使用 intl 包中的 Intl 类来访问本地化字符串。

import 'package:intl/intl.dart';

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text(Intl.message('welcome_message')),
        ),
        body: Center(
          child: Text(Intl.message('welcome_message')),
        ),
      ),
    );
  }
}

6. 动态更新本地化字符串

如果 Firebase Remote Config 中的字符串发生变化,你可以通过调用 fetchAndActivate 方法来获取最新的字符串,并更新应用的本地化内容。

Future<void> updateLocalization() async {
  await FirebaseRemoteConfig.instance.fetchAndActivate();
  await NativeFcmStrings.instance.refresh();
}

7. 处理语言切换

你可以通过设置语言代码来切换应用的语言。

NativeFcmStrings.instance.setLanguage('es');
回到顶部