Flutter文本处理插件gtext的使用

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

Flutter文本处理插件gtext的使用

插件介绍

GText 是一个包装 Text widget 的插件,可以将内容翻译成另一种语言。它使用 Google Translator 进行翻译,并且支持缓存已翻译的内容以保持应用的快速运行。

安装插件

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

dependencies:
  gtext: ^0.0.3

示例代码

下面是一个完整的示例代码,展示了如何使用 GText 插件进行文本翻译。

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

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

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'GText Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key, required this.title}) : super(key: key);

  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            const GText("Тест приложения"),
            const GText(
              'You have pushed the button this many times:',
              toLang: 'zh-cn',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headline4,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: const GText("Increment"),
      ), // This trailing comma makes auto-formatting nicer for build methods.
    );
  }
}

使用说明

  1. 本地翻译

    import 'package:gtext/gtext.dart';
    
    GText("Hello, World!", toLang: 'de')
    
  2. 初始化全局语言(无需设置 toLang 参数):

    import 'package:gtext/gtext.dart';
    
    void main() {
      GText.init(to: 'en', enableCaching: false);
      runApp(App());
      // You can write GText("Привет, мир!")
    }
    

示例应用

完整的示例应用可以在 GitHub 上找到:example/

可用的语言列表

以下是可用的语言列表:

  • ‘af’: ‘Afrikaans’
  • ‘sq’: ‘Albanian’
  • ‘am’: ‘Amharic’
  • ‘ar’: ‘Arabic’
  • ‘hy’: ‘Armenian’
  • ‘az’: ‘Azerbaijani’
  • ‘eu’: ‘Basque’
  • ‘be’: ‘Belarusian’
  • ‘bn’: ‘Bengali’
  • ‘bs’: ‘Bosnian’
  • ‘bg’: ‘Bulgarian’
  • ‘ca’: ‘Catalan’
  • ‘ceb’: ‘Cebuano’
  • ‘ny’: ‘Chichewa’
  • ‘zh-cn’: ‘Chinese Simplified’
  • ‘zh-tw’: ‘Chinese Traditional’
  • ‘co’: ‘Corsican’
  • ‘hr’: ‘Croatian’
  • ‘cs’: ‘Czech’
  • ‘da’: ‘Danish’
  • ‘nl’: ‘Dutch’
  • ‘en’: ‘English’
  • ‘eo’: ‘Esperanto’
  • ‘et’: ‘Estonian’
  • ‘tl’: ‘Filipino’
  • ‘fi’: ‘Finnish’
  • ‘fr’: ‘French’
  • ‘fy’: ‘Frisian’
  • ‘gl’: ‘Galician’
  • ‘ka’: ‘Georgian’
  • ‘de’: ‘German’
  • ‘el’: ‘Greek’
  • ‘gu’: ‘Gujarati’
  • ‘ht’: ‘Haitian Creole’
  • ‘ha’: ‘Hausa’
  • ‘haw’: ‘Hawaiian’
  • ‘iw’: ‘Hebrew’
  • ‘hi’: ‘Hindi’
  • ‘hmn’: ‘Hmong’
  • ‘hu’: ‘Hungarian’
  • ‘is’: ‘Icelandic’
  • ‘ig’: ‘Igbo’
  • ‘id’: ‘Indonesian’
  • ‘ga’: ‘Irish’
  • ‘it’: ‘Italian’
  • ‘ja’: ‘Japanese’
  • ‘jw’: ‘Javanese’
  • ‘kn’: ‘Kannada’
  • ‘kk’: ‘Kazakh’
  • ‘km’: ‘Khmer’
  • ‘ko’: ‘Korean’
  • ‘ku’: ‘Kurdish (Kurmanaji)’
  • ‘ky’: ‘Kyrgyz’
  • ‘lo’: ‘Lao’
  • ‘la’: ‘Latin’
  • ‘lv’: ‘Latvian’
  • ‘lt’: ‘Lithuanian’
  • ‘lb’: ‘Luxembourgish’
  • ‘mk’: ‘Macedonian’
  • ‘mg’: ‘Malagasy’
  • ‘ms’: ‘Malay’
  • ‘ml’: ‘Malayalam’
  • ‘mt’: ‘Maltese’
  • ‘mi’: ‘Maori’
  • ‘mr’: ‘Marathi’
  • ‘mn’: ‘Mongolian’
  • ‘my’: ‘Myanmar (Burmese)’
  • ‘ne’: ‘Nepali’
  • ‘no’: ‘Norwegian’
  • ‘ps’: ‘Pashto’
  • ‘fa’: ‘Persian’
  • ‘pl’: ‘Polish’
  • ‘pt’: ‘Portuguese’
  • ‘pa’: ‘Punjabi’
  • ‘ro’: ‘Romanian’
  • ‘ru’: ‘Russian’
  • ‘sm’: ‘Samoan’
  • ‘gd’: ‘Scots Gaelic’
  • ‘sr’: ‘Serbian’
  • ‘st’: ‘Sesotho’
  • ‘sn’: ‘Shona’
  • ‘sd’: ‘Sindhi’
  • ‘si’: ‘Sinhala’
  • ‘sk’: ‘Slovak’
  • ‘sl’: ‘Slovenian’
  • ‘so’: ‘Somali’
  • ‘es’: ‘Spanish’
  • ‘su’: ‘Sundanese’
  • ‘sw’: ‘Swahili’
  • ‘sv’: ‘Swedish’
  • ‘tg’: ‘Tajik’
  • ‘ta’: ‘Tamil’
  • ‘te’: ‘Telugu’
  • ‘th’: ‘Thai’
  • ‘tr’: ‘Turkish’
  • ‘uk’: ‘Ukrainian’
  • ‘ur’: ‘Urdu’
  • ‘uz’: ‘Uzbek’
  • ‘ug’: ‘Uyghur’
  • ‘vi’: ‘Vietnamese’
  • ‘cy’: ‘Welsh’
  • ‘xh’: ‘Xhosa’
  • ‘yi’: ‘Yiddish’
  • ‘yo’: ‘Yoruba’
  • ‘zu’: ‘Zulu’

更多关于Flutter文本处理插件gtext的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter文本处理插件gtext的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用gtext插件进行文本处理的示例代码。gtext插件主要用于文本的国际化处理,但也可以用于简单的文本管理和格式化。假设你已经安装了gtext插件,以下是一个基本的使用示例。

1. 安装gtext插件

首先,确保你已经在pubspec.yaml文件中添加了gtext依赖:

dependencies:
  flutter:
    sdk: flutter
  gtext: ^x.y.z  # 替换为最新版本号

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

2. 创建语言文件

创建一个名为messages_en.dart的英语语言文件,内容如下:

import 'package:gtext/gtext.dart';

final gTextMessages enMessages = gTextMessages()
  ..add('welcome', 'Welcome')
  ..add('goodbye', 'Goodbye');

创建一个名为messages_zh.dart的中文语言文件,内容如下:

import 'package:gtext/gtext.dart';

final gTextMessages zhMessages = gTextMessages()
  ..add('welcome', '欢迎')
  ..add('goodbye', '再见');

3. 配置gtext

在你的主应用文件(通常是main.dart)中,配置gtext以支持多语言:

import 'package:flutter/material.dart';
import 'package:gtext/gtext.dart';
import 'messages_en.dart';
import 'messages_zh.dart';

void main() {
  // 初始化gtext
  gText.instance
    ..addLocale('en', enMessages)
    ..addLocale('zh', zhMessages)
    ..setLocale('en'); // 设置默认语言为英语

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
      localizationsDelegates: [
        // 添加gtext的LocalizationsDelegate
        GTextLocalizations.delegate,
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
      ],
      supportedLocales: [
        Locale('en', ''),
        Locale('zh', ''),
      ],
    );
  }
}

4. 使用gtext进行文本显示

在你的页面组件中使用gtext来显示文本:

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

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(gText.tr('welcome')), // 使用gtext的tr方法获取翻译文本
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(gText.tr('welcome')),
            ElevatedButton(
              onPressed: () {
                // 切换语言
                gText.instance.setLocale(
                  gText.instance.currentLocale.languageCode == 'en' ? 'zh' : 'en',
                );
                setState(() {}); // 刷新界面以显示新语言
              },
              child: Text(gText.tr('goodbye')),
            ),
          ],
        ),
      ),
    );
  }
}

总结

上述代码展示了如何在Flutter项目中使用gtext插件进行文本的国际化处理。你可以根据需要添加更多的语言文件和文本条目。当用户点击按钮时,应用将切换语言并刷新界面以显示新的翻译文本。

回到顶部