Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FluentUI Widgets Localization Support #216

Merged
merged 23 commits into from Mar 15, 2022
Merged
Show file tree
Hide file tree
Changes from 13 commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Expand Up @@ -4,6 +4,8 @@ Date format: DD/MM/YYYY

- Improves `icons.dart` formatting and its generation.
- Fix: [#207](https://github.com/bdlukaa/fluent_ui/pull/207) FilledButton disabled foreground
- NEW: Widgets translated into multiple languages: [#216](https://github.com/bdlukaa/fluent_ui/pull/216)
- Add `useInheritedMediaQuery` property to `FluentApp` [#211](https://github.com/bdlukaa/fluent_ui/pull/211)

## [3.9.1] - Input Update - [25/02/2022]

Expand Down
5 changes: 5 additions & 0 deletions example/pubspec.lock
Expand Up @@ -111,6 +111,11 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.4"
flutter_localizations:
dependency: transitive
description: flutter
source: sdk
version: "0.0.0"
flutter_native_splash:
dependency: "direct dev"
description:
Expand Down
98 changes: 98 additions & 0 deletions lib/generated/intl/messages_all.dart
@@ -0,0 +1,98 @@
// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart
// This is a library that looks up messages for specific locales by
// delegating to the appropriate library.

// Ignore issues from commonly used lints in this file.
// ignore_for_file:implementation_imports, file_names, unnecessary_new
// ignore_for_file:unnecessary_brace_in_string_interps, directives_ordering
// ignore_for_file:argument_type_not_assignable, invalid_assignment
// ignore_for_file:prefer_single_quotes, prefer_generic_function_type_aliases
// ignore_for_file:comment_references

import 'dart:async';

import 'package:intl/intl.dart';
import 'package:intl/message_lookup_by_library.dart';
import 'package:intl/src/intl_helpers.dart';

import 'messages_ar.dart' as messages_ar;
import 'messages_bn.dart' as messages_bn;
import 'messages_en.dart' as messages_en;
import 'messages_es.dart' as messages_es;
import 'messages_fr.dart' as messages_fr;
import 'messages_hi.dart' as messages_hi;
import 'messages_id.dart' as messages_id;
import 'messages_pt.dart' as messages_pt;
import 'messages_ru.dart' as messages_ru;
import 'messages_zh.dart' as messages_zh;

typedef Future<dynamic> LibraryLoader();
Map<String, LibraryLoader> _deferredLibraries = {
'ar': () => new Future.value(null),
'bn': () => new Future.value(null),
'en': () => new Future.value(null),
'es': () => new Future.value(null),
'fr': () => new Future.value(null),
'hi': () => new Future.value(null),
'id': () => new Future.value(null),
'pt': () => new Future.value(null),
'ru': () => new Future.value(null),
'zh': () => new Future.value(null),
};

MessageLookupByLibrary? _findExact(String localeName) {
switch (localeName) {
case 'ar':
return messages_ar.messages;
case 'bn':
return messages_bn.messages;
case 'en':
return messages_en.messages;
case 'es':
return messages_es.messages;
case 'fr':
return messages_fr.messages;
case 'hi':
return messages_hi.messages;
case 'id':
return messages_id.messages;
case 'pt':
return messages_pt.messages;
case 'ru':
return messages_ru.messages;
case 'zh':
return messages_zh.messages;
default:
return null;
}
}

/// User programs should call this before using [localeName] for messages.
Future<bool> initializeMessages(String localeName) async {
var availableLocale = Intl.verifiedLocale(
localeName, (locale) => _deferredLibraries[locale] != null,
onFailure: (_) => null);
if (availableLocale == null) {
return new Future.value(false);
}
var lib = _deferredLibraries[availableLocale];
await (lib == null ? new Future.value(false) : lib());
initializeInternalMessageLookup(() => new CompositeMessageLookup());
messageLookup.addLocale(availableLocale, _findGeneratedMessagesFor);
return new Future.value(true);
}

bool _messagesExistFor(String locale) {
try {
return _findExact(locale) != null;
} catch (e) {
return false;
}
}

MessageLookupByLibrary? _findGeneratedMessagesFor(String locale) {
var actualLocale =
Intl.verifiedLocale(locale, _messagesExistFor, onFailure: (_) => null);
if (actualLocale == null) return null;
return _findExact(actualLocale);
}
61 changes: 61 additions & 0 deletions lib/generated/intl/messages_ar.dart
@@ -0,0 +1,61 @@
// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart
// This is a library that provides messages for a ar locale. All the
// messages from the main program should be duplicated here with the same
// function name.

// Ignore issues from commonly used lints in this file.
// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new
// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering
// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases
// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes
// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes

import 'package:intl/intl.dart';
import 'package:intl/message_lookup_by_library.dart';

final messages = new MessageLookup();

typedef String MessageIfAbsent(String messageStr, List<dynamic> args);

class MessageLookup extends MessageLookupByLibrary {
String get localeName => 'ar';

final messages = _notInlinedMessages(_notInlinedMessages);
static Map<String, Function> _notInlinedMessages(_) => <String, Function>{
"backButtonTooltip": MessageLookupByLibrary.simpleMessage("رجوع"),
"clickToSearch": MessageLookupByLibrary.simpleMessage("انقر للبحث"),
"closeButtonLabel": MessageLookupByLibrary.simpleMessage("إغلاق"),
"closeNavigationTooltip":
MessageLookupByLibrary.simpleMessage("إغلاق التنقل"),
"closeTabLabelSuffix":
MessageLookupByLibrary.simpleMessage("إغلاق علامة التبويب"),
"closeWindowTooltip": MessageLookupByLibrary.simpleMessage("إغلاق"),
"copyActionLabel": MessageLookupByLibrary.simpleMessage("Copy"),
"copyActionTooltip": MessageLookupByLibrary.simpleMessage(
"نسخ المحتوى المحدد إلى الحافظة"),
"cutActionLabel": MessageLookupByLibrary.simpleMessage("قص"),
"cutActionTooltip": MessageLookupByLibrary.simpleMessage(
"إزالة المحتوى المحدد ووضعه في الحافظة"),
"dialogLabel": MessageLookupByLibrary.simpleMessage("الحوار"),
"minimizeWindowTooltip": MessageLookupByLibrary.simpleMessage("تصغير"),
"modalBarrierDismissLabel":
MessageLookupByLibrary.simpleMessage("Dismiss"),
"newTabLabel":
MessageLookupByLibrary.simpleMessage("إضافة علامة تبويب جديدة"),
"noResultsFoundLabel":
MessageLookupByLibrary.simpleMessage("لم يتم العثور على نتائج"),
"openNavigationTooltip":
MessageLookupByLibrary.simpleMessage("فتح التنقل"),
"pasteActionLabel": MessageLookupByLibrary.simpleMessage(" لصق "),
"restoreWindowTooltip": MessageLookupByLibrary.simpleMessage("استعادة"),
"scrollTabBackwardLabel": MessageLookupByLibrary.simpleMessage(
"تمرير قائمة علامات التبويب للخلف"),
"scrollTabForwardLabel": MessageLookupByLibrary.simpleMessage(
"تمرير قائمة علامات التبويب إلى الأمام"),
"searchLabel": MessageLookupByLibrary.simpleMessage("بحث"),
"selectAllActionLabel":
MessageLookupByLibrary.simpleMessage("حدد الكل"),
"selectAllActionTooltip":
MessageLookupByLibrary.simpleMessage("حدد كل المحتوى")
};
}
66 changes: 66 additions & 0 deletions lib/generated/intl/messages_bn.dart
@@ -0,0 +1,66 @@
// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart
// This is a library that provides messages for a bn locale. All the
// messages from the main program should be duplicated here with the same
// function name.

// Ignore issues from commonly used lints in this file.
// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new
// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering
// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases
// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes
// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes

import 'package:intl/intl.dart';
import 'package:intl/message_lookup_by_library.dart';

final messages = new MessageLookup();

typedef String MessageIfAbsent(String messageStr, List<dynamic> args);

class MessageLookup extends MessageLookupByLibrary {
String get localeName => 'bn';

final messages = _notInlinedMessages(_notInlinedMessages);
static Map<String, Function> _notInlinedMessages(_) => <String, Function>{
"backButtonTooltip": MessageLookupByLibrary.simpleMessage("ব্যাক"),
"clickToSearch":
MessageLookupByLibrary.simpleMessage("অনুসন্ধান করতে ক্লিক করুন"),
"closeButtonLabel": MessageLookupByLibrary.simpleMessage("বন্ধ করুন"),
"closeNavigationTooltip":
MessageLookupByLibrary.simpleMessage("নেভিগেশন বন্ধ করুন"),
"closeTabLabelSuffix":
MessageLookupByLibrary.simpleMessage("ট্যাব বন্ধ করুন"),
"closeWindowTooltip": MessageLookupByLibrary.simpleMessage("বন্ধ করুন"),
"copyActionLabel": MessageLookupByLibrary.simpleMessage("কপি"),
"copyActionTooltip": MessageLookupByLibrary.simpleMessage(
"নির্বাচিত বিষয়বস্তু ক্লিপবোর্ডে অনুলিপি করুন"),
"cutActionLabel": MessageLookupByLibrary.simpleMessage("কাট"),
"cutActionTooltip": MessageLookupByLibrary.simpleMessage(
"নির্বাচিত বিষয়বস্তু সরান এবং ক্লিপবোর্ডে রাখুন"),
"dialogLabel": MessageLookupByLibrary.simpleMessage("সংলাপ"),
"minimizeWindowTooltip":
MessageLookupByLibrary.simpleMessage("মিনিমাইজ করুন"),
"modalBarrierDismissLabel":
MessageLookupByLibrary.simpleMessage("খারিজ"),
"newTabLabel":
MessageLookupByLibrary.simpleMessage("নতুন ট্যাব যোগ করুন"),
"noResultsFoundLabel":
MessageLookupByLibrary.simpleMessage("কোন ফলাফল পাওয়া যায়নি"),
"openNavigationTooltip":
MessageLookupByLibrary.simpleMessage("ওপেন নেভিগেশন"),
"pasteActionLabel": MessageLookupByLibrary.simpleMessage("পেস্ট করুন"),
"pasteActionTooltip": MessageLookupByLibrary.simpleMessage(
"বর্তমান অবস্থানে ক্লিপবোর্ডের বিষয়বস্তু সন্নিবেশ করায়"),
"restoreWindowTooltip":
MessageLookupByLibrary.simpleMessage("পুনরুদ্ধার করুন"),
"scrollTabBackwardLabel": MessageLookupByLibrary.simpleMessage(
"ট্যাব তালিকা পিছনে স্ক্রোল করুন"),
"scrollTabForwardLabel": MessageLookupByLibrary.simpleMessage(
"ট্যাব তালিকা সামনে স্ক্রোল করুন"),
"searchLabel": MessageLookupByLibrary.simpleMessage("অনুসন্ধান"),
"selectAllActionLabel":
MessageLookupByLibrary.simpleMessage("সব নির্বাচন করুন"),
"selectAllActionTooltip": MessageLookupByLibrary.simpleMessage(
"সমস্ত বিষয়বস্তু নির্বাচন করুন")
};
}
64 changes: 64 additions & 0 deletions lib/generated/intl/messages_en.dart
@@ -0,0 +1,64 @@
// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart
// This is a library that provides messages for a en locale. All the
// messages from the main program should be duplicated here with the same
// function name.

// Ignore issues from commonly used lints in this file.
// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new
// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering
// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases
// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes
// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes

import 'package:intl/intl.dart';
import 'package:intl/message_lookup_by_library.dart';

final messages = new MessageLookup();

typedef String MessageIfAbsent(String messageStr, List<dynamic> args);

class MessageLookup extends MessageLookupByLibrary {
String get localeName => 'en';

final messages = _notInlinedMessages(_notInlinedMessages);
static Map<String, Function> _notInlinedMessages(_) => <String, Function>{
"backButtonTooltip": MessageLookupByLibrary.simpleMessage("Back"),
"clickToSearch":
MessageLookupByLibrary.simpleMessage("Click to search"),
"closeButtonLabel": MessageLookupByLibrary.simpleMessage("Close"),
"closeNavigationTooltip":
MessageLookupByLibrary.simpleMessage("Close Navigation"),
"closeTabLabelSuffix":
MessageLookupByLibrary.simpleMessage("Close tab"),
"closeWindowTooltip": MessageLookupByLibrary.simpleMessage("Close"),
"copyActionLabel": MessageLookupByLibrary.simpleMessage("Copy"),
"copyActionTooltip": MessageLookupByLibrary.simpleMessage(
"Copy the selected content to the clipboard"),
"cutActionLabel": MessageLookupByLibrary.simpleMessage("Cut"),
"cutActionTooltip": MessageLookupByLibrary.simpleMessage(
"Remove the selected content and put it in the clipboard"),
"dialogLabel": MessageLookupByLibrary.simpleMessage("Dialog"),
"minimizeWindowTooltip":
MessageLookupByLibrary.simpleMessage("Minimize"),
"modalBarrierDismissLabel":
MessageLookupByLibrary.simpleMessage("Dismiss"),
"newTabLabel": MessageLookupByLibrary.simpleMessage("Add new tab"),
"noResultsFoundLabel":
MessageLookupByLibrary.simpleMessage("No results found"),
"openNavigationTooltip":
MessageLookupByLibrary.simpleMessage("Open Navigation"),
"pasteActionLabel": MessageLookupByLibrary.simpleMessage("Paste"),
"pasteActionTooltip": MessageLookupByLibrary.simpleMessage(
"Inserts the contents of the clipboard at the current location"),
"restoreWindowTooltip": MessageLookupByLibrary.simpleMessage("Restore"),
"scrollTabBackwardLabel":
MessageLookupByLibrary.simpleMessage("Scroll tab list backward"),
"scrollTabForwardLabel":
MessageLookupByLibrary.simpleMessage("Scroll tab list forward"),
"searchLabel": MessageLookupByLibrary.simpleMessage("Search"),
"selectAllActionLabel":
MessageLookupByLibrary.simpleMessage("Select all"),
"selectAllActionTooltip":
MessageLookupByLibrary.simpleMessage("Select all content")
};
}
66 changes: 66 additions & 0 deletions lib/generated/intl/messages_es.dart
@@ -0,0 +1,66 @@
// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart
// This is a library that provides messages for a es locale. All the
// messages from the main program should be duplicated here with the same
// function name.

// Ignore issues from commonly used lints in this file.
// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new
// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering
// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases
// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes
// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes

import 'package:intl/intl.dart';
import 'package:intl/message_lookup_by_library.dart';

final messages = new MessageLookup();

typedef String MessageIfAbsent(String messageStr, List<dynamic> args);

class MessageLookup extends MessageLookupByLibrary {
String get localeName => 'es';

final messages = _notInlinedMessages(_notInlinedMessages);
static Map<String, Function> _notInlinedMessages(_) => <String, Function>{
"backButtonTooltip": MessageLookupByLibrary.simpleMessage("Volver"),
"clickToSearch":
MessageLookupByLibrary.simpleMessage("Haz clic para buscar"),
"closeButtonLabel": MessageLookupByLibrary.simpleMessage("Cerrar"),
"closeNavigationTooltip":
MessageLookupByLibrary.simpleMessage("Cerrar Navegador"),
"closeTabLabelSuffix":
MessageLookupByLibrary.simpleMessage("Cerrar pestaña"),
"closeWindowTooltip": MessageLookupByLibrary.simpleMessage("Cerrar"),
"copyActionLabel": MessageLookupByLibrary.simpleMessage("Copiar"),
"copyActionTooltip": MessageLookupByLibrary.simpleMessage(
"Copiar el contenido seleccionado al portapapeles"),
"cutActionLabel": MessageLookupByLibrary.simpleMessage("Cortar"),
"cutActionTooltip": MessageLookupByLibrary.simpleMessage(
"Cortar el contenido seleccionado y ponerlo en el portapapeles"),
"dialogLabel": MessageLookupByLibrary.simpleMessage("Diálogo"),
"minimizeWindowTooltip":
MessageLookupByLibrary.simpleMessage("Minimizar"),
"modalBarrierDismissLabel":
MessageLookupByLibrary.simpleMessage("Cancelar"),
"newTabLabel":
MessageLookupByLibrary.simpleMessage("Añadir nueva pestaña"),
"noResultsFoundLabel": MessageLookupByLibrary.simpleMessage(
"No se encontraron resultados"),
"openNavigationTooltip":
MessageLookupByLibrary.simpleMessage("Abrir Navegador"),
"pasteActionLabel": MessageLookupByLibrary.simpleMessage("Pegar"),
"pasteActionTooltip": MessageLookupByLibrary.simpleMessage(
"Insertar el contenido del portapapeles en la posición actual"),
"restoreWindowTooltip":
MessageLookupByLibrary.simpleMessage("Restaurar"),
"scrollTabBackwardLabel":
MessageLookupByLibrary.simpleMessage("Hacer scroll hacia atrás"),
"scrollTabForwardLabel":
MessageLookupByLibrary.simpleMessage("Hacer scroll hacia delante"),
"searchLabel": MessageLookupByLibrary.simpleMessage("Buscar"),
"selectAllActionLabel":
MessageLookupByLibrary.simpleMessage("Seleccionar todo"),
"selectAllActionTooltip": MessageLookupByLibrary.simpleMessage(
"Seleccionar todo el contenido")
};
}