Flutter越南语支持插件tiengviet的使用

发布于 1周前 作者 yuanlaile 来自 Flutter

Flutter越南语支持插件tiengviet的使用

插件简介

tiengviet 是一个用于将越南语有声调字符转换为无声调字符的Flutter插件,其操作简单如同吃煎饼一般容易 🥞。

Build Status Contribute GitHub Hits-of-Code Pub Version

Công cụ chuyển đổi Tiếng Việt có dấu sang không dấu dễ hơn là ăn bánh 🥞.

开始使用

安装

在您的 pubspec.yaml 文件中添加依赖:

dependencies:
  tiengviet: ^1.0.0

然后通过命令行安装依赖包:

pub get
-- 或者 --
flutter pub get

使用示例

以下是一个简单的例子,展示如何使用 tiengviet 插件去除越南语字符串中的声调符号:

import 'package:tiengviet/tiengviet.dart';

void main() {
  final str = TiengViet.parse('Xin chào việt nam');
  print(str); // 输出: Xin chao viet nam
}

此代码会输出 Xin chao viet nam,即去除了原始字符串中的所有声调符号。

性能表现

下表展示了不同长度文本的解析时间对比(单位:微秒 µs):

Words VietnameseParserEngine (µs) VietnameseParserEngine2 (µs)
172 (~814 chars) 18,751 2,362
1k (~6860 chars) 25,421 10,538
2k (~9269 chars) 91,743 19,600
4.5k (~21k chars) 137,592 30,577

可能您还喜欢

  • vietnamese - ✂️🇻🇳 去除越南语声调的辅助工具。
  • tiengviet-rust - 🦀 用Rust编写的越南语解析引擎。

贡献者

感谢以下贡献者的努力:

贡献者
Vi Chi Thien

许可证

本项目采用 BSD 3-Clause @tvc12 许可证发布。


更多关于Flutter越南语支持插件tiengviet的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter越南语支持插件tiengviet的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中,为了支持越南语显示和其他本地化需求,通常会使用flutter_localizations包以及相应的语言资源文件。虽然tiengviet插件不是一个官方的Flutter插件,但通常本地化需求可以通过Flutter的内置功能实现。下面是一个如何在Flutter应用中支持越南语的示例代码。

步骤 1: 添加依赖

首先,确保你的pubspec.yaml文件中包含了flutter_localizations依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_localizations:
    sdk: flutter

步骤 2: 设置MaterialApp的localizationsDelegates和supportedLocales

在你的main.dart文件中,设置MaterialApplocalizationsDelegatessupportedLocales属性,以支持越南语(vi)和其他需要的语言。

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      localizationsDelegates: [
        // 添加全局本地化的委托
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
        // 你可以根据需要添加更多本地化委托
      ],
      supportedLocales: [
        Locale('en', ''), // 英语
        Locale('vi', ''), // 越南语
        // 你可以添加更多支持的语言
      ],
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // 获取当前的Locale
    final Locale locale = Localizations.localeOf(context);
    print('Current Locale: ${locale.languageCode}-${locale.countryCode}');

    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Demo Home Page'),
      ),
      body: Center(
        child: Text(
          'Hello, World!', // 这里可以替换为越南语文本或动态加载的文本
          style: TextStyle(fontSize: 24),
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          // 示例:切换到越南语
          showCupertinoModalPopup<void>(
            context: context,
            builder: (BuildContext context) {
              return CupertinoActionSheet(
                title: Text('Change Language'),
                actions: <Widget>[
                  CupertinoActionSheetAction(
                    child: Text('English'),
                    onPressed: () {
                      Navigator.pop(context);
                      // 切换到英语逻辑,例如使用Provider或其他状态管理
                    },
                  ),
                  CupertinoActionSheetAction(
                    child: Text('Tiếng Việt'),
                    onPressed: () {
                      Navigator.pop(context);
                      // 切换到越南语逻辑,例如使用Provider或其他状态管理
                      // 这里可以通过设置Locale来动态改变应用语言
                      // 需要结合Provider或其他状态管理来持久化或传递Locale变化
                    },
                  ),
                ],
                cancelButton: CupertinoActionSheetAction(
                  isDefaultAction: true,
                  child: Text('Cancel'),
                  onPressed: () {
                    Navigator.pop(context);
                  },
                ),
              );
            },
          );
        },
        tooltip: 'Change Language',
        child: Icon(Icons.language),
      ),
    );
  }
}

步骤 3: 创建越南语资源文件

lib目录下创建一个l10n文件夹,并在其中创建越南语资源文件,例如messages_vi.arb

{
  "helloWorld": "Chào thế giới!"
}

同时,创建一个默认的英语资源文件messages_en.arb作为对比:

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

步骤 4: 生成本地化文件

使用flutter pub run flutter_gen:generate命令(假设你使用的是flutter_gen这样的工具来自动生成本地化代码)或手动实现Localizations类来加载这些ARB文件。这通常涉及到创建一个自定义的LocalizationsDelegate和相应的Localizations类。

由于这个过程相对复杂,并且超出了简单示例的范围,这里不再详细展开。你可以查阅Flutter官方文档或相关教程来了解如何生成和使用ARB文件进行本地化。

结论

虽然tiengviet插件不是官方Flutter插件,但你可以通过Flutter的内置本地化功能来实现对越南语的支持。上述代码示例展示了如何设置MaterialApp以支持多种语言,并提供了切换到越南语的基本框架。实际项目中,你可能需要结合状态管理库(如Provider、Riverpod等)来持久化和动态切换应用语言。

回到顶部