В программировании на Dart локализация является важнейшим аспектом при разработке приложений для глобальной аудитории. Перевод строковых значений на разные языки является важной частью обеспечения локализованного взаимодействия с пользователем. В этой статье блога мы рассмотрим несколько методов перевода строковых значений в файле.dart. От базовых подходов до более продвинутых — вы найдете целый ряд вариантов, соответствующих вашим требованиям к локализации.
Метод 1: использование встроенного международного пакета Dart
Dart предоставляет мощный пакет под названием «intl» для интернационализации и локализации. Этот пакет предлагает простой и эффективный способ перевода строковых значений. Чтобы начать, выполните следующие действия:
Шаг 1. Добавьте пакет «intl» в файл pubspec.yaml:
dependencies:
flutter:
sdk: flutter
intl: ^0.17.0
Шаг 2. Импортируйте пакет в файл.dart:
import 'package:intl/intl.dart';
class MyAppLocalization {
static String get helloMessage {
return Intl.message(
'Hello',
name: 'helloMessage',
desc: 'Greeting',
);
}
}
String greeting = MyAppLocalization.helloMessage;
Метод 2: использование файлов JSON
Другой распространенный подход — хранить переводы в файлах JSON. Этот метод позволяет легко управлять и обновлять строки перевода. Вот как это можно реализовать:
Шаг 1. Создайте файл JSON для каждого языка, например “en.json” для английского и “es.json” для испанского.
{
"helloMessage": "Hello"
}
import 'dart:convert';
String getTranslatedString(String key, String language) {
String jsonString = // load the JSON file based on the selected language
Map<String, dynamic> translations = json.decode(jsonString);
return translations[key];
}
String greeting = getTranslatedString('helloMessage', 'en');
Шаг 1. Создайте класс, расширяющий LocalizationDelegate:
class MyAppLocalizationDelegate extends LocalizationsDelegate<MyAppLocalization> {
const MyAppLocalizationDelegate();
@override
bool isSupported(Locale locale) {
// Return true if the selected locale is supported
}
@override
Future<MyAppLocalization> load(Locale locale) {
// Load the translation strings based on the selected locale
}
@override
bool shouldReload(LocalizationsDelegate<MyAppLocalization> old) {
return false;
}
}
Шаг 3. Используйте LocalizationDelegate в своем приложении:
MaterialApp(
localizationsDelegates: [
const MyAppLocalizationDelegate(),
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
],
supportedLocales: [
// Define the supported locales
],
// ...
)
Метод 4. Использование API Google Translate.
Если вам требуется динамический перевод или вам нужно перевести большое количество строк, вы можете использовать API Google Translate. Этот метод позволяет получать переводы программным способом. Вот простой пример:
Шаг 1. Настройте необходимые учетные данные и библиотеки API.
import 'package:http/http.dart' as http;
Future<String> translateString(String text, String targetLanguage) async {
String apiKey = // your Google Translate API key
String apiUrl = 'https://translation.googleapis.com/language/translate/v2';
Uri uri = Uri.parse(apiUrl);
Map<String, String> headers = {'Content-Type': 'application/json'};
Map<String, dynamic> body = {
'q': text,
'target': targetLanguage,
'key': apiKey,
};
var response = await http.post(uri, headers: headers, body: json.encode(body));
var translatedText = json.decode(response.body)['data']['translations'][0]['translatedText'];
return translatedText;
}
String greeting = await translateString('Hello', 'es');
Метод 5: использование пакета easy_localization от Flutter.
У Flutter есть удобный пакет под названием «easy_localization», который упрощает процесс локализации. Этот пакет предлагает автоматическую синхронизацию с файлами.json и предоставляет простой в использовании API. Вот краткий пример:
Что касается перевода строковых значений в файле.dart, вы можете использовать несколько методов. В этой статье блога мы рассмотрим пять различных подходов: от использования встроенного пакета Dart «intl» до использования внешних API, таких как Google Translate. Используя эти методы, вы можете легко локализовать свои приложения Dart и обеспечить удобство работы для пользователей по всему миру.
Метод 1: встроенная локализация с помощью пакета Dart «intl».
Пакет Dart «intl» предлагает простой способ перевода строковых значений. Выполнив несколько простых шагов, вы сможете эффективно интегрировать локализацию в свою кодовую базу Dart.
Метод 2: файлы JSON для перевода.
Хранение переводов в файлах JSON — популярный подход. Мы проведем вас через процесс определения строк перевода в отдельных файлах JSON и их динамической загрузки в ваш код Dart.
Метод 3: делегат локализации Flutter:
Flutter предоставляет класс LocalizationDelegate, который упрощает перевод строк. Мы покажем вам, как создать собственный делегат локализации и загружать переводы на основе выбранной локали.
Метод 4. Динамический перевод с помощью API Google Translate.
Для динамического перевода или обработки большого количества строк можно использовать API Google Translate. Мы покажем, как программно отправлять запросы к API и получать переводы.
Метод 5: упрощенная локализация с помощью пакета easy_localization:
Пакет Flutter «easy_localization» предлагает упрощенный подход к локализации. Мы покажем вам, как настроить и использовать этот пакет, чтобы упростить процесс перевода строк.
Используя эти пять методов, вы можете легко переводить строковые значения в ваших файлах.dart и добиться плавной локализации ваших приложений Dart. Предпочитаете ли вы использовать встроенные пакеты Dart, файлы JSON, интеграцию API или специализированные пакеты Flutter, есть решение, которое соответствует вашим потребностям. Используйте интернационализацию и локализацию, чтобы предоставить вашим пользователям по-настоящему глобальный опыт.