Add translations for scribe module
Added a separated ScribeLocalizations to keep it separated from main app.
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"@@last_modified": "2025-12-09T11:34:40.710644",
|
"@@last_modified": "2025-12-09T13:09:50.879268",
|
||||||
"initializing_data": "Initializing data...",
|
"initializing_data": "Initializing data...",
|
||||||
"@initializing_data": {
|
"@initializing_data": {
|
||||||
"type": "text",
|
"type": "text",
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import 'package:get/get.dart';
|
|||||||
import 'package:tmail_ui_user/features/caching/config/hive_cache_config.dart';
|
import 'package:tmail_ui_user/features/caching/config/hive_cache_config.dart';
|
||||||
import 'package:tmail_ui_user/main/bindings/main_bindings.dart';
|
import 'package:tmail_ui_user/main/bindings/main_bindings.dart';
|
||||||
import 'package:tmail_ui_user/main/deep_links/deep_links_manager.dart';
|
import 'package:tmail_ui_user/main/deep_links/deep_links_manager.dart';
|
||||||
|
import 'package:scribe/scribe/ai/localizations/scribe_localizations.dart';
|
||||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||||
import 'package:tmail_ui_user/main/localizations/app_localizations_delegate.dart';
|
import 'package:tmail_ui_user/main/localizations/app_localizations_delegate.dart';
|
||||||
import 'package:tmail_ui_user/main/localizations/localization_service.dart';
|
import 'package:tmail_ui_user/main/localizations/localization_service.dart';
|
||||||
@@ -75,6 +76,7 @@ class _TMailAppState extends State<TMailApp> {
|
|||||||
supportedLocales: LocalizationService.supportedLocales,
|
supportedLocales: LocalizationService.supportedLocales,
|
||||||
localizationsDelegates: const [
|
localizationsDelegates: const [
|
||||||
AppLocalizationsDelegate(),
|
AppLocalizationsDelegate(),
|
||||||
|
ScribeLocalizations.delegate,
|
||||||
GlobalMaterialLocalizations.delegate,
|
GlobalMaterialLocalizations.delegate,
|
||||||
GlobalWidgetsLocalizations.delegate,
|
GlobalWidgetsLocalizations.delegate,
|
||||||
GlobalCupertinoLocalizations.delegate,
|
GlobalCupertinoLocalizations.delegate,
|
||||||
|
|||||||
@@ -0,0 +1,129 @@
|
|||||||
|
{
|
||||||
|
"@@last_modified": "2025-12-09T06:57:10.911448",
|
||||||
|
"categoryCorrectGrammar": "Correct grammar",
|
||||||
|
"@categoryCorrectGrammar": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"categoryImprove": "Improve",
|
||||||
|
"@categoryImprove": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"categoryChangeTone": "Change tone",
|
||||||
|
"@categoryChangeTone": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"categoryTranslate": "Translate",
|
||||||
|
"@categoryTranslate": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"actionMakeShorter": "Make it shorter",
|
||||||
|
"@actionMakeShorter": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"actionExpandContext": "Expand context",
|
||||||
|
"@actionExpandContext": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"actionEmojify": "Emojify",
|
||||||
|
"@actionEmojify": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"actionTransformToBullets": "Transform to bullets",
|
||||||
|
"@actionTransformToBullets": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"actionMoreProfessional": "More professional",
|
||||||
|
"@actionMoreProfessional": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"actionMoreCasual": "More casual",
|
||||||
|
"@actionMoreCasual": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"actionMorePolite": "More polite",
|
||||||
|
"@actionMorePolite": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"languageFrench": "French",
|
||||||
|
"@languageFrench": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"languageEnglish": "English",
|
||||||
|
"@languageEnglish": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"languageRussian": "Russian",
|
||||||
|
"@languageRussian": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"languageVietnamese": "Vietnamese",
|
||||||
|
"@languageVietnamese": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"inputPlaceholder": "Help me write",
|
||||||
|
"@inputPlaceholder": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"customPromptAction": "Help me write",
|
||||||
|
"@customPromptAction": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"generatingResponse": "Generating AI response...",
|
||||||
|
"@generatingResponse": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"failedToGenerate": "Failed to generate AI response",
|
||||||
|
"@failedToGenerate": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"noDataReceived": "No data received",
|
||||||
|
"@noDataReceived": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"insertButton": "Insert",
|
||||||
|
"@insertButton": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,129 @@
|
|||||||
|
{
|
||||||
|
"@@last_modified": "2025-12-09T07:30:00.000000",
|
||||||
|
"categoryCorrectGrammar": "Corriger la grammaire",
|
||||||
|
"@categoryCorrectGrammar": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"categoryImprove": "Améliorer",
|
||||||
|
"@categoryImprove": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"categoryChangeTone": "Changer le ton",
|
||||||
|
"@categoryChangeTone": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"categoryTranslate": "Traduire",
|
||||||
|
"@categoryTranslate": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"actionMakeShorter": "Raccourcir",
|
||||||
|
"@actionMakeShorter": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"actionExpandContext": "Développer",
|
||||||
|
"@actionExpandContext": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"actionEmojify": "Ajouter des émojis",
|
||||||
|
"@actionEmojify": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"actionTransformToBullets": "Transformer en liste",
|
||||||
|
"@actionTransformToBullets": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"actionMoreProfessional": "Plus professionnel",
|
||||||
|
"@actionMoreProfessional": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"actionMoreCasual": "Plus décontracté",
|
||||||
|
"@actionMoreCasual": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"actionMorePolite": "Plus poli",
|
||||||
|
"@actionMorePolite": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"languageFrench": "Français",
|
||||||
|
"@languageFrench": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"languageEnglish": "Anglais",
|
||||||
|
"@languageEnglish": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"languageRussian": "Russe",
|
||||||
|
"@languageRussian": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"languageVietnamese": "Vietnamien",
|
||||||
|
"@languageVietnamese": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"inputPlaceholder": "Aidez-moi à écrire",
|
||||||
|
"@inputPlaceholder": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"customPromptAction": "Aidez-moi à écrire",
|
||||||
|
"@customPromptAction": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"generatingResponse": "Génération de la réponse IA...",
|
||||||
|
"@generatingResponse": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"failedToGenerate": "Échec de la génération de la réponse IA",
|
||||||
|
"@failedToGenerate": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"noDataReceived": "Aucune donnée reçue",
|
||||||
|
"@noDataReceived": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"insertButton": "Insérer",
|
||||||
|
"@insertButton": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,129 @@
|
|||||||
|
{
|
||||||
|
"@@last_modified": "2025-12-09T13:09:52.614790",
|
||||||
|
"categoryCorrectGrammar": "Correct grammar",
|
||||||
|
"@categoryCorrectGrammar": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"categoryImprove": "Improve",
|
||||||
|
"@categoryImprove": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"categoryChangeTone": "Change tone",
|
||||||
|
"@categoryChangeTone": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"categoryTranslate": "Translate",
|
||||||
|
"@categoryTranslate": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"actionMakeShorter": "Make it shorter",
|
||||||
|
"@actionMakeShorter": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"actionExpandContext": "Expand context",
|
||||||
|
"@actionExpandContext": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"actionEmojify": "Emojify",
|
||||||
|
"@actionEmojify": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"actionTransformToBullets": "Transform to bullets",
|
||||||
|
"@actionTransformToBullets": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"actionMoreProfessional": "More professional",
|
||||||
|
"@actionMoreProfessional": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"actionMoreCasual": "More casual",
|
||||||
|
"@actionMoreCasual": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"actionMorePolite": "More polite",
|
||||||
|
"@actionMorePolite": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"languageFrench": "French",
|
||||||
|
"@languageFrench": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"languageEnglish": "English",
|
||||||
|
"@languageEnglish": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"languageRussian": "Russian",
|
||||||
|
"@languageRussian": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"languageVietnamese": "Vietnamese",
|
||||||
|
"@languageVietnamese": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"inputPlaceholder": "Help me write",
|
||||||
|
"@inputPlaceholder": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"customPromptAction": "Help me write",
|
||||||
|
"@customPromptAction": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"generatingResponse": "Generating AI response...",
|
||||||
|
"@generatingResponse": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"failedToGenerate": "Failed to generate AI response",
|
||||||
|
"@failedToGenerate": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"noDataReceived": "No data received",
|
||||||
|
"@noDataReceived": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"insertButton": "Insert",
|
||||||
|
"@insertButton": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,129 @@
|
|||||||
|
{
|
||||||
|
"@@last_modified": "2025-12-09T07:30:00.000000",
|
||||||
|
"categoryCorrectGrammar": "Исправить грамматику",
|
||||||
|
"@categoryCorrectGrammar": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"categoryImprove": "Улучшить",
|
||||||
|
"@categoryImprove": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"categoryChangeTone": "Изменить тон",
|
||||||
|
"@categoryChangeTone": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"categoryTranslate": "Перевести",
|
||||||
|
"@categoryTranslate": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"actionMakeShorter": "Сделать короче",
|
||||||
|
"@actionMakeShorter": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"actionExpandContext": "Расширить контекст",
|
||||||
|
"@actionExpandContext": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"actionEmojify": "Добавить эмодзи",
|
||||||
|
"@actionEmojify": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"actionTransformToBullets": "Преобразовать в список",
|
||||||
|
"@actionTransformToBullets": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"actionMoreProfessional": "Более профессионально",
|
||||||
|
"@actionMoreProfessional": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"actionMoreCasual": "Более неформально",
|
||||||
|
"@actionMoreCasual": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"actionMorePolite": "Более вежливо",
|
||||||
|
"@actionMorePolite": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"languageFrench": "Французский",
|
||||||
|
"@languageFrench": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"languageEnglish": "Английский",
|
||||||
|
"@languageEnglish": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"languageRussian": "Русский",
|
||||||
|
"@languageRussian": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"languageVietnamese": "Вьетнамский",
|
||||||
|
"@languageVietnamese": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"inputPlaceholder": "Помогите мне написать",
|
||||||
|
"@inputPlaceholder": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"customPromptAction": "Помогите мне написать",
|
||||||
|
"@customPromptAction": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"generatingResponse": "Генерация ответа ИИ...",
|
||||||
|
"@generatingResponse": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"failedToGenerate": "Не удалось сгенерировать ответ ИИ",
|
||||||
|
"@failedToGenerate": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"noDataReceived": "Данные не получены",
|
||||||
|
"@noDataReceived": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"insertButton": "Вставить",
|
||||||
|
"@insertButton": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,129 @@
|
|||||||
|
{
|
||||||
|
"@@last_modified": "2025-12-09T07:30:00.000000",
|
||||||
|
"categoryCorrectGrammar": "Sửa ngữ pháp",
|
||||||
|
"@categoryCorrectGrammar": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"categoryImprove": "Cải thiện",
|
||||||
|
"@categoryImprove": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"categoryChangeTone": "Thay đổi giọng điệu",
|
||||||
|
"@categoryChangeTone": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"categoryTranslate": "Dịch",
|
||||||
|
"@categoryTranslate": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"actionMakeShorter": "Làm ngắn gọn hơn",
|
||||||
|
"@actionMakeShorter": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"actionExpandContext": "Mở rộng ngữ cảnh",
|
||||||
|
"@actionExpandContext": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"actionEmojify": "Thêm biểu tượng cảm xúc",
|
||||||
|
"@actionEmojify": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"actionTransformToBullets": "Chuyển thành danh sách",
|
||||||
|
"@actionTransformToBullets": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"actionMoreProfessional": "Chuyên nghiệp hơn",
|
||||||
|
"@actionMoreProfessional": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"actionMoreCasual": "Thân mật hơn",
|
||||||
|
"@actionMoreCasual": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"actionMorePolite": "Lịch sự hơn",
|
||||||
|
"@actionMorePolite": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"languageFrench": "Tiếng Pháp",
|
||||||
|
"@languageFrench": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"languageEnglish": "Tiếng Anh",
|
||||||
|
"@languageEnglish": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"languageRussian": "Tiếng Nga",
|
||||||
|
"@languageRussian": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"languageVietnamese": "Tiếng Việt",
|
||||||
|
"@languageVietnamese": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"inputPlaceholder": "Giúp tôi viết",
|
||||||
|
"@inputPlaceholder": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"customPromptAction": "Giúp tôi viết",
|
||||||
|
"@customPromptAction": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"generatingResponse": "Đang tạo phản hồi AI...",
|
||||||
|
"@generatingResponse": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"failedToGenerate": "Không thể tạo phản hồi AI",
|
||||||
|
"@failedToGenerate": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"noDataReceived": "Không nhận được dữ liệu",
|
||||||
|
"@noDataReceived": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
},
|
||||||
|
"insertButton": "Chèn",
|
||||||
|
"@insertButton": {
|
||||||
|
"type": "text",
|
||||||
|
"placeholders_order": [],
|
||||||
|
"placeholders": {}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,147 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:intl/intl.dart';
|
||||||
|
import 'package:scribe/scribe/ai/l10n/messages_all.dart';
|
||||||
|
|
||||||
|
class ScribeLocalizations {
|
||||||
|
|
||||||
|
static ScribeLocalizations? of(BuildContext context) {
|
||||||
|
return Localizations.of<ScribeLocalizations>(context, ScribeLocalizations);
|
||||||
|
}
|
||||||
|
|
||||||
|
static Future<ScribeLocalizations> load(Locale locale) async {
|
||||||
|
final name = locale.countryCode == null ? locale.languageCode : locale.toString();
|
||||||
|
|
||||||
|
final localeName = Intl.canonicalizedLocale(name);
|
||||||
|
|
||||||
|
return initializeMessages(localeName).then((_) {
|
||||||
|
Intl.defaultLocale = localeName;
|
||||||
|
return ScribeLocalizations();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
static const LocalizationsDelegate<ScribeLocalizations> delegate = _ScribeLocalizationsDelegate();
|
||||||
|
|
||||||
|
// Menu Categories
|
||||||
|
String get categoryCorrectGrammar {
|
||||||
|
return Intl.message('Correct grammar',
|
||||||
|
name: 'categoryCorrectGrammar');
|
||||||
|
}
|
||||||
|
|
||||||
|
String get categoryImprove {
|
||||||
|
return Intl.message('Improve',
|
||||||
|
name: 'categoryImprove');
|
||||||
|
}
|
||||||
|
|
||||||
|
String get categoryChangeTone {
|
||||||
|
return Intl.message('Change tone',
|
||||||
|
name: 'categoryChangeTone');
|
||||||
|
}
|
||||||
|
|
||||||
|
String get categoryTranslate {
|
||||||
|
return Intl.message('Translate',
|
||||||
|
name: 'categoryTranslate');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Menu Actions - Improve
|
||||||
|
String get actionMakeShorter {
|
||||||
|
return Intl.message('Make it shorter',
|
||||||
|
name: 'actionMakeShorter');
|
||||||
|
}
|
||||||
|
|
||||||
|
String get actionExpandContext {
|
||||||
|
return Intl.message('Expand context',
|
||||||
|
name: 'actionExpandContext');
|
||||||
|
}
|
||||||
|
|
||||||
|
String get actionEmojify {
|
||||||
|
return Intl.message('Emojify',
|
||||||
|
name: 'actionEmojify');
|
||||||
|
}
|
||||||
|
|
||||||
|
String get actionTransformToBullets {
|
||||||
|
return Intl.message('Transform to bullets',
|
||||||
|
name: 'actionTransformToBullets');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Menu Actions - Change Tone
|
||||||
|
String get actionMoreProfessional {
|
||||||
|
return Intl.message('More professional',
|
||||||
|
name: 'actionMoreProfessional');
|
||||||
|
}
|
||||||
|
|
||||||
|
String get actionMoreCasual {
|
||||||
|
return Intl.message('More casual',
|
||||||
|
name: 'actionMoreCasual');
|
||||||
|
}
|
||||||
|
|
||||||
|
String get actionMorePolite {
|
||||||
|
return Intl.message('More polite',
|
||||||
|
name: 'actionMorePolite');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Menu Actions - Translate
|
||||||
|
String get languageFrench {
|
||||||
|
return Intl.message('French',
|
||||||
|
name: 'languageFrench');
|
||||||
|
}
|
||||||
|
|
||||||
|
String get languageEnglish {
|
||||||
|
return Intl.message('English',
|
||||||
|
name: 'languageEnglish');
|
||||||
|
}
|
||||||
|
|
||||||
|
String get languageRussian {
|
||||||
|
return Intl.message('Russian',
|
||||||
|
name: 'languageRussian');
|
||||||
|
}
|
||||||
|
|
||||||
|
String get languageVietnamese {
|
||||||
|
return Intl.message('Vietnamese',
|
||||||
|
name: 'languageVietnamese');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Input Bar
|
||||||
|
String get inputPlaceholder {
|
||||||
|
return Intl.message('Help me write',
|
||||||
|
name: 'inputPlaceholder');
|
||||||
|
}
|
||||||
|
|
||||||
|
String get customPromptAction {
|
||||||
|
return Intl.message('Help me write',
|
||||||
|
name: 'customPromptAction');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Suggestion Dialog
|
||||||
|
String get generatingResponse {
|
||||||
|
return Intl.message('Generating AI response...',
|
||||||
|
name: 'generatingResponse');
|
||||||
|
}
|
||||||
|
|
||||||
|
String get failedToGenerate {
|
||||||
|
return Intl.message('Failed to generate AI response',
|
||||||
|
name: 'failedToGenerate');
|
||||||
|
}
|
||||||
|
|
||||||
|
String get noDataReceived {
|
||||||
|
return Intl.message('No data received',
|
||||||
|
name: 'noDataReceived');
|
||||||
|
}
|
||||||
|
|
||||||
|
String get insertButton {
|
||||||
|
return Intl.message('Insert',
|
||||||
|
name: 'insertButton');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class _ScribeLocalizationsDelegate extends LocalizationsDelegate<ScribeLocalizations> {
|
||||||
|
const _ScribeLocalizationsDelegate();
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool isSupported(Locale locale) => ['en', 'fr', 'ru', 'vi'].contains(locale.languageCode);
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<ScribeLocalizations> load(Locale locale) => ScribeLocalizations.load(locale);
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool shouldReload(_ScribeLocalizationsDelegate old) => false;
|
||||||
|
}
|
||||||
@@ -1,9 +1,11 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:scribe/scribe/ai/localizations/scribe_localizations.dart';
|
||||||
import 'package:scribe/scribe/ai/presentation/model/ai_scribe_menu_action.dart';
|
import 'package:scribe/scribe/ai/presentation/model/ai_scribe_menu_action.dart';
|
||||||
|
|
||||||
sealed class AIAction {
|
sealed class AIAction {
|
||||||
const AIAction();
|
const AIAction();
|
||||||
|
|
||||||
String get label;
|
String getLabel(BuildContext context);
|
||||||
}
|
}
|
||||||
|
|
||||||
class PredefinedAction extends AIAction {
|
class PredefinedAction extends AIAction {
|
||||||
@@ -12,7 +14,7 @@ class PredefinedAction extends AIAction {
|
|||||||
const PredefinedAction(this.action);
|
const PredefinedAction(this.action);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get label => action.fullLabel;
|
String getLabel(BuildContext context) => action.getFullLabel(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
class CustomPromptAction extends AIAction {
|
class CustomPromptAction extends AIAction {
|
||||||
@@ -21,5 +23,7 @@ class CustomPromptAction extends AIAction {
|
|||||||
const CustomPromptAction(this.prompt);
|
const CustomPromptAction(this.prompt);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get label => 'Help me write';
|
String getLabel(BuildContext context) {
|
||||||
|
return ScribeLocalizations.of(context)!.customPromptAction;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:scribe/scribe/ai/localizations/scribe_localizations.dart';
|
||||||
|
|
||||||
enum AIScribeMenuAction {
|
enum AIScribeMenuAction {
|
||||||
correctGrammar,
|
correctGrammar,
|
||||||
improveMakeShorter,
|
improveMakeShorter,
|
||||||
@@ -12,32 +15,33 @@ enum AIScribeMenuAction {
|
|||||||
translateRussian,
|
translateRussian,
|
||||||
translateVietnamese;
|
translateVietnamese;
|
||||||
|
|
||||||
String get label {
|
String getLabel(BuildContext context) {
|
||||||
|
final localizations = ScribeLocalizations.of(context)!;
|
||||||
switch (this) {
|
switch (this) {
|
||||||
case AIScribeMenuAction.correctGrammar:
|
case AIScribeMenuAction.correctGrammar:
|
||||||
return 'Correct grammar';
|
return localizations.categoryCorrectGrammar;
|
||||||
case AIScribeMenuAction.improveMakeShorter:
|
case AIScribeMenuAction.improveMakeShorter:
|
||||||
return 'Make it shorter';
|
return localizations.actionMakeShorter;
|
||||||
case AIScribeMenuAction.improveExpandContext:
|
case AIScribeMenuAction.improveExpandContext:
|
||||||
return 'Expand context';
|
return localizations.actionExpandContext;
|
||||||
case AIScribeMenuAction.improveEmojify:
|
case AIScribeMenuAction.improveEmojify:
|
||||||
return 'Emojify';
|
return localizations.actionEmojify;
|
||||||
case AIScribeMenuAction.improveTransformToBullets:
|
case AIScribeMenuAction.improveTransformToBullets:
|
||||||
return 'Transform to bullets';
|
return localizations.actionTransformToBullets;
|
||||||
case AIScribeMenuAction.changeToneProfessional:
|
case AIScribeMenuAction.changeToneProfessional:
|
||||||
return 'More professional';
|
return localizations.actionMoreProfessional;
|
||||||
case AIScribeMenuAction.changeToneCasual:
|
case AIScribeMenuAction.changeToneCasual:
|
||||||
return 'More casual';
|
return localizations.actionMoreCasual;
|
||||||
case AIScribeMenuAction.changeTonePolite:
|
case AIScribeMenuAction.changeTonePolite:
|
||||||
return 'More polite';
|
return localizations.actionMorePolite;
|
||||||
case AIScribeMenuAction.translateFrench:
|
case AIScribeMenuAction.translateFrench:
|
||||||
return 'French';
|
return localizations.languageFrench;
|
||||||
case AIScribeMenuAction.translateEnglish:
|
case AIScribeMenuAction.translateEnglish:
|
||||||
return 'English';
|
return localizations.languageEnglish;
|
||||||
case AIScribeMenuAction.translateRussian:
|
case AIScribeMenuAction.translateRussian:
|
||||||
return 'Russian';
|
return localizations.languageRussian;
|
||||||
case AIScribeMenuAction.translateVietnamese:
|
case AIScribeMenuAction.translateVietnamese:
|
||||||
return 'Vietnamese';
|
return localizations.languageVietnamese;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -62,12 +66,12 @@ enum AIScribeMenuAction {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
String get fullLabel {
|
String getFullLabel(BuildContext context) {
|
||||||
final categoryLabel = category.label;
|
final categoryLabel = category.getLabel(context);
|
||||||
if (category.hasSubmenu) {
|
if (category.hasSubmenu) {
|
||||||
return '$categoryLabel > $label';
|
return '$categoryLabel > ${getLabel(context)}';
|
||||||
} else {
|
} else {
|
||||||
return label;
|
return getLabel(context);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -78,16 +82,17 @@ enum AIScribeMenuCategory {
|
|||||||
changeTone,
|
changeTone,
|
||||||
translate;
|
translate;
|
||||||
|
|
||||||
String get label {
|
String getLabel(BuildContext context) {
|
||||||
|
final localizations = ScribeLocalizations.of(context)!;
|
||||||
switch (this) {
|
switch (this) {
|
||||||
case AIScribeMenuCategory.correctGrammar:
|
case AIScribeMenuCategory.correctGrammar:
|
||||||
return 'Correct grammar';
|
return localizations.categoryCorrectGrammar;
|
||||||
case AIScribeMenuCategory.improve:
|
case AIScribeMenuCategory.improve:
|
||||||
return 'Improve';
|
return localizations.categoryImprove;
|
||||||
case AIScribeMenuCategory.changeTone:
|
case AIScribeMenuCategory.changeTone:
|
||||||
return 'Change tone';
|
return localizations.categoryChangeTone;
|
||||||
case AIScribeMenuCategory.translate:
|
case AIScribeMenuCategory.translate:
|
||||||
return 'Translate';
|
return localizations.categoryTranslate;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+19
-5
@@ -541,6 +541,11 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.0"
|
version: "1.0.0"
|
||||||
|
flutter_localizations:
|
||||||
|
dependency: "direct main"
|
||||||
|
description: flutter
|
||||||
|
source: sdk
|
||||||
|
version: "0.0.0"
|
||||||
flutter_svg:
|
flutter_svg:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -648,13 +653,22 @@ packages:
|
|||||||
source: hosted
|
source: hosted
|
||||||
version: "4.5.4"
|
version: "4.5.4"
|
||||||
intl:
|
intl:
|
||||||
dependency: transitive
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: intl
|
name: intl
|
||||||
sha256: "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5"
|
sha256: "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.20.2"
|
version: "0.20.2"
|
||||||
|
intl_generator:
|
||||||
|
dependency: "direct dev"
|
||||||
|
description:
|
||||||
|
path: "."
|
||||||
|
ref: master
|
||||||
|
resolved-ref: "20ca4d1c3ed3a7e9e2e86700af928ded9db4ff11"
|
||||||
|
url: "https://github.com/linagora/intl_generator.git"
|
||||||
|
source: git
|
||||||
|
version: "0.4.1"
|
||||||
io:
|
io:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -867,10 +881,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: petitparser
|
name: petitparser
|
||||||
sha256: "1a97266a94f7350d30ae522c0af07890c70b8e62c71e8e3920d1db4d23c057d1"
|
sha256: cb3798bef7fc021ac45b308f4b51208a152792445cce0448c9a4ba5879dd8750
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "7.0.1"
|
version: "5.4.0"
|
||||||
platform:
|
platform:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -1281,10 +1295,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: xml
|
name: xml
|
||||||
sha256: "971043b3a0d3da28727e40ed3e0b5d18b742fa5a68665cca88e74b7876d5e025"
|
sha256: "5bc72e1e45e941d825fd7468b9b4cc3b9327942649aeb6fc5cdbf135f0a86e84"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.6.1"
|
version: "6.3.0"
|
||||||
yaml:
|
yaml:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|||||||
@@ -10,6 +10,9 @@ dependencies:
|
|||||||
flutter:
|
flutter:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
|
|
||||||
|
flutter_localizations:
|
||||||
|
sdk: flutter
|
||||||
|
|
||||||
### Local dependencies ###
|
### Local dependencies ###
|
||||||
core:
|
core:
|
||||||
path: ../core
|
path: ../core
|
||||||
@@ -23,6 +26,8 @@ dependencies:
|
|||||||
|
|
||||||
pointer_interceptor: 0.10.1+2
|
pointer_interceptor: 0.10.1+2
|
||||||
|
|
||||||
|
intl: 0.20.2
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
@@ -31,6 +36,13 @@ dev_dependencies:
|
|||||||
|
|
||||||
json_serializable: 6.6.1
|
json_serializable: 6.6.1
|
||||||
|
|
||||||
|
### Original dependency is abandoned, so we use fork
|
||||||
|
### https://github.com/linagora/intl_generator/pull/1
|
||||||
|
intl_generator:
|
||||||
|
git:
|
||||||
|
url: https://github.com/linagora/intl_generator.git
|
||||||
|
ref: master
|
||||||
|
|
||||||
# For information on the generic Dart part of this file, see the
|
# For information on the generic Dart part of this file, see the
|
||||||
# following page: https://dart.dev/tools/pub/pubspec
|
# following page: https://dart.dev/tools/pub/pubspec
|
||||||
|
|
||||||
|
|||||||
@@ -25,3 +25,9 @@ flutter pub get
|
|||||||
dart run build_runner build --delete-conflicting-outputs &&
|
dart run build_runner build --delete-conflicting-outputs &&
|
||||||
dart run intl_generator:extract_to_arb --output-dir=./lib/l10n lib/main/localizations/app_localizations.dart &&
|
dart run intl_generator:extract_to_arb --output-dir=./lib/l10n lib/main/localizations/app_localizations.dart &&
|
||||||
dart run intl_generator:generate_from_arb --output-dir=lib/l10n --no-use-deferred-loading lib/main/localizations/app_localizations.dart lib/l10n/intl*.arb
|
dart run intl_generator:generate_from_arb --output-dir=lib/l10n --no-use-deferred-loading lib/main/localizations/app_localizations.dart lib/l10n/intl*.arb
|
||||||
|
|
||||||
|
# For scribe module localizations
|
||||||
|
cd scribe
|
||||||
|
dart run intl_generator:extract_to_arb --output-dir=./lib/scribe/ai/l10n lib/scribe/ai/localizations/scribe_localizations.dart &&
|
||||||
|
dart run intl_generator:generate_from_arb --output-dir=lib/scribe/ai/l10n --no-use-deferred-loading lib/scribe/ai/localizations/scribe_localizations.dart lib/scribe/ai/l10n/intl*.arb
|
||||||
|
cd ../
|
||||||
|
|||||||
Reference in New Issue
Block a user