Merge branch 'feat/localization' of github.com:GetStream/stream-chat-flutter into feat/localization
This commit is contained in:
@@ -70,7 +70,12 @@ class MyApp extends StatelessWidget {
|
||||
Widget build(BuildContext context) => MaterialApp(
|
||||
theme: ThemeData.light(),
|
||||
darkTheme: ThemeData.dark(),
|
||||
supportedLocales: const [Locale('en'), Locale('hi')],
|
||||
supportedLocales: const [
|
||||
Locale('en'),
|
||||
Locale('hi'),
|
||||
Locale('fr'),
|
||||
Locale('it'),
|
||||
],
|
||||
localizationsDelegates: GlobalStreamChatLocalizations.delegates,
|
||||
builder: (context, widget) => StreamChat(
|
||||
client: client,
|
||||
|
||||
@@ -67,9 +67,9 @@ abstract class Translations {
|
||||
|
||||
String get instantCommandsLabel;
|
||||
|
||||
String get fileTooLargeAfterCompressionError;
|
||||
String fileTooLargeAfterCompressionError(double limitInMB);
|
||||
|
||||
String get fileTooLargeError;
|
||||
String fileTooLargeError(double limitInMB);
|
||||
|
||||
String emojiMatchingQueryText(String query);
|
||||
|
||||
@@ -314,14 +314,14 @@ class DefaultTranslations implements Translations {
|
||||
String get instantCommandsLabel => 'Instant Commands';
|
||||
|
||||
@override
|
||||
String get fileTooLargeAfterCompressionError =>
|
||||
String fileTooLargeAfterCompressionError(double limitInMB) =>
|
||||
'The file is too large to upload. '
|
||||
'The file size limit is 20MB. '
|
||||
'The file size limit is $limitInMB MB. '
|
||||
'We tried compressing it, but it was not enough.';
|
||||
|
||||
@override
|
||||
String get fileTooLargeError =>
|
||||
'The file is too large to upload. The file size limit is 20MB.';
|
||||
String fileTooLargeError(double limitInMB) =>
|
||||
'The file is too large to upload. The file size limit is $limitInMB MB.';
|
||||
|
||||
@override
|
||||
String emojiMatchingQueryText(String query) => 'Emoji matching "$query"';
|
||||
|
||||
@@ -1144,7 +1144,9 @@ class MessageInputState extends State<MessageInput> {
|
||||
|
||||
if (mediaInfo.filesize! > widget.maxAttachmentSize) {
|
||||
_showErrorAlert(
|
||||
context.translations.fileTooLargeAfterCompressionError,
|
||||
context.translations.fileTooLargeAfterCompressionError(
|
||||
widget.maxAttachmentSize / (1024 * 1024),
|
||||
),
|
||||
);
|
||||
return;
|
||||
}
|
||||
@@ -1155,7 +1157,9 @@ class MessageInputState extends State<MessageInput> {
|
||||
path: mediaInfo.path,
|
||||
);
|
||||
} else {
|
||||
_showErrorAlert(context.translations.fileTooLargeError);
|
||||
_showErrorAlert(context.translations.fileTooLargeError(
|
||||
widget.maxAttachmentSize / (1024 * 1024),
|
||||
));
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -1922,7 +1926,9 @@ class MessageInputState extends State<MessageInput> {
|
||||
|
||||
if (mediaInfo.filesize! > widget.maxAttachmentSize) {
|
||||
_showErrorAlert(
|
||||
context.translations.fileTooLargeAfterCompressionError,
|
||||
context.translations.fileTooLargeAfterCompressionError(
|
||||
widget.maxAttachmentSize / (1024 * 1024),
|
||||
),
|
||||
);
|
||||
return;
|
||||
}
|
||||
@@ -1933,7 +1939,9 @@ class MessageInputState extends State<MessageInput> {
|
||||
path: mediaInfo.path,
|
||||
);
|
||||
} else {
|
||||
_showErrorAlert(context.translations.fileTooLargeError);
|
||||
_showErrorAlert(context.translations.fileTooLargeError(
|
||||
widget.maxAttachmentSize / (1024 * 1024),
|
||||
));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,7 +6,8 @@ import 'package:stream_chat_flutter/stream_chat_flutter.dart'
|
||||
show StreamChatLocalizations, User;
|
||||
|
||||
part 'stream_chat_localizations_en.dart';
|
||||
|
||||
part 'stream_chat_localizations_fr.dart';
|
||||
part 'stream_chat_localizations_it.dart';
|
||||
part 'stream_chat_localizations_hi.dart';
|
||||
|
||||
/// The set of supported languages, as language code strings.
|
||||
@@ -17,7 +18,12 @@ part 'stream_chat_localizations_hi.dart';
|
||||
/// See also:
|
||||
///
|
||||
/// * [getStreamChatTranslation], whose documentation describes these values.
|
||||
const kStreamChatSupportedLanguages = {'en', 'hi'};
|
||||
const kStreamChatSupportedLanguages = {
|
||||
'en',
|
||||
'hi',
|
||||
'fr',
|
||||
'it',
|
||||
};
|
||||
|
||||
/// Creates a [GlobalStreamChatLocalizations] instance for the given `locale`.
|
||||
///
|
||||
@@ -43,6 +49,10 @@ GlobalStreamChatLocalizations? getStreamChatTranslation(Locale locale) {
|
||||
return const StreamChatLocalizationsEn();
|
||||
case 'hi':
|
||||
return const StreamChatLocalizationsHi();
|
||||
case 'fr':
|
||||
return const StreamChatLocalizationsFr();
|
||||
case 'it':
|
||||
return const StreamChatLocalizationsIt();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -115,14 +115,14 @@ class StreamChatLocalizationsEn extends GlobalStreamChatLocalizations {
|
||||
String get instantCommandsLabel => 'Instant Commands';
|
||||
|
||||
@override
|
||||
String get fileTooLargeAfterCompressionError =>
|
||||
String fileTooLargeAfterCompressionError(double limitInMB) =>
|
||||
'The file is too large to upload. '
|
||||
'The file size limit is 20MB. '
|
||||
'The file size limit is $limitInMB MB. '
|
||||
'We tried compressing it, but it was not enough.';
|
||||
|
||||
@override
|
||||
String get fileTooLargeError =>
|
||||
'The file is too large to upload. The file size limit is 20MB.';
|
||||
String fileTooLargeError(double limitInMB) =>
|
||||
'The file is too large to upload. The file size limit is $limitInMB MB.';
|
||||
|
||||
@override
|
||||
String emojiMatchingQueryText(String query) => 'Emoji matching "$query"';
|
||||
|
||||
@@ -0,0 +1,360 @@
|
||||
part of 'stream_chat_localizations.dart';
|
||||
|
||||
/// The translations for English (`fr`).
|
||||
class StreamChatLocalizationsFr extends GlobalStreamChatLocalizations {
|
||||
/// Create an instance of the translation bundle for French.
|
||||
const StreamChatLocalizationsFr({String localeName = 'fr'})
|
||||
: super(localeName: localeName);
|
||||
|
||||
@override
|
||||
String get launchUrlError => "Impossible de lancer l'url";
|
||||
|
||||
@override
|
||||
String get loadingUsersError => 'Erreur de chargement des utilisateurs';
|
||||
|
||||
@override
|
||||
String get noUsersLabel => "Il n'y a pas d'utilisateurs actuellement";
|
||||
|
||||
@override
|
||||
String get retryLabel => 'Réessayer';
|
||||
|
||||
@override
|
||||
String get userLastOnlineText => 'Dernière fois en ligne';
|
||||
|
||||
@override
|
||||
String get userOnlineText => 'En ligne';
|
||||
|
||||
@override
|
||||
String userTypingText(Iterable<User> users) {
|
||||
if (users.isEmpty) return '';
|
||||
final first = users.first;
|
||||
if (users.length == 1) {
|
||||
return "${first.name} est en train d'écrire";
|
||||
}
|
||||
return "${first.name} and ${users.length - 1} sont entrain d'écrire";
|
||||
}
|
||||
|
||||
@override
|
||||
String get threadReplyLabel => 'Réponse au fil de discussion';
|
||||
|
||||
@override
|
||||
String get onlyVisibleToYouText => 'Seulement visible par vous';
|
||||
|
||||
@override
|
||||
String threadReplyCountText(int count) =>
|
||||
"$count Réponses au fil de discussion";
|
||||
|
||||
@override
|
||||
String attachmentsUploadProgressText({
|
||||
required int remaining,
|
||||
required int total,
|
||||
}) =>
|
||||
'Uploading $remaining/$total ...';
|
||||
|
||||
@override
|
||||
String pinnedByUserText({
|
||||
required User pinnedBy,
|
||||
required User currentUser,
|
||||
}) {
|
||||
final pinnedByCurrentUser = currentUser.id == pinnedBy.id;
|
||||
if (pinnedByCurrentUser) return 'Épinglé par vous';
|
||||
return 'Épinglé par ${pinnedBy.name}';
|
||||
}
|
||||
|
||||
@override
|
||||
String get emptyMessagesText => "Il n'y a pas de messages actuellement";
|
||||
|
||||
@override
|
||||
String get genericErrorText => 'Il y a eu un problème';
|
||||
|
||||
@override
|
||||
String get loadingMessagesError => 'Erreur de chargement des messages';
|
||||
|
||||
@override
|
||||
String resultCountText(int count) => '$count résultats';
|
||||
|
||||
@override
|
||||
String get messageDeletedText => 'Ce message a été supprimé.';
|
||||
|
||||
@override
|
||||
String get messageDeletedLabel => 'Message supprimé';
|
||||
|
||||
@override
|
||||
String get messageReactionsText => 'Réactions aux messages';
|
||||
|
||||
@override
|
||||
String get emptyChatMessagesText => 'Pas encore de chats ici...';
|
||||
|
||||
@override
|
||||
String threadSeparatorText(int replyCount) {
|
||||
if (replyCount == 1) return '1 Réponse';
|
||||
return '$replyCount Replies';
|
||||
}
|
||||
|
||||
@override
|
||||
String get connectedLabel => 'Connecté';
|
||||
|
||||
@override
|
||||
String get disconnectedLabel => 'Déconnecté';
|
||||
|
||||
@override
|
||||
String get reconnectingLabel => 'Reconnexion...';
|
||||
|
||||
@override
|
||||
String get alsoSendAsDirectMessageLabel =>
|
||||
'Envoyer aussi comme message direct';
|
||||
|
||||
@override
|
||||
String get addACommentOrSendLabel => 'Ajouter un commentaire ou envoyer';
|
||||
|
||||
@override
|
||||
String get searchGifLabel => 'Recherche de GIFs';
|
||||
|
||||
@override
|
||||
String get writeAMessageLabel => 'Écrire un message';
|
||||
|
||||
@override
|
||||
String get instantCommandsLabel => 'Commandes instantanées';
|
||||
|
||||
@override
|
||||
String fileTooLargeAfterCompressionError(double limitInMB) =>
|
||||
'Le fichier est trop volumineux pour être téléchargé. '
|
||||
'La taille maximale des fichiers est de $limitInMB Mo. '
|
||||
"Nous avons essayé de le compresser, mais ce n'était pas suffisant.";
|
||||
|
||||
@override
|
||||
String fileTooLargeError(double limitInMB) =>
|
||||
'Le fichier est trop volumineux pour être téléchargé. La taille limite du fichier est de $limitInMB Mo.';
|
||||
|
||||
@override
|
||||
String emojiMatchingQueryText(String query) =>
|
||||
'Emoji qui correspond à "$query"';
|
||||
|
||||
@override
|
||||
String get addAFileLabel => 'Ajouter un fichier';
|
||||
|
||||
@override
|
||||
String get photoFromCameraLabel => "Photo de l'appareil photo";
|
||||
|
||||
@override
|
||||
String get uploadAFileLabel => 'Transférer un fichier';
|
||||
|
||||
@override
|
||||
String get uploadAPhotoLabel => 'Transférer une photo';
|
||||
|
||||
@override
|
||||
String get uploadAVideoLabel => 'Transférer une vidéo';
|
||||
|
||||
@override
|
||||
String get videoFromCameraLabel => 'Vidéo depuis la camera';
|
||||
|
||||
@override
|
||||
String get okLabel => 'OK';
|
||||
|
||||
@override
|
||||
String get somethingWentWrongLabel => 'Quelque chose a mal tourné';
|
||||
|
||||
@override
|
||||
String get addMoreFilesLabel => "Ajouter d'autres fichiers";
|
||||
|
||||
@override
|
||||
String get enablePhotoAndVideoAccessMessage =>
|
||||
"Veuillez autoriser l'accès à vos photos"
|
||||
'\net vidéos afin de pouvoir les partager avec vos amis.';
|
||||
|
||||
@override
|
||||
String get allowGalleryAccessMessage => "Autoriser l'accès à votre galerie";
|
||||
|
||||
@override
|
||||
String get flagMessageLabel => 'Signaler un message';
|
||||
|
||||
@override
|
||||
String get flagMessageQuestion =>
|
||||
'Voulez-vous envoyer une copie de ce message à un'
|
||||
'\nmodérateur pour une enquête plus approfondie ?';
|
||||
|
||||
@override
|
||||
String get flagLabel => 'SIGNALER';
|
||||
|
||||
@override
|
||||
String get cancelLabel => 'ANNULER';
|
||||
|
||||
@override
|
||||
String get flagMessageSuccessfulLabel => 'Message signalé';
|
||||
|
||||
@override
|
||||
String get flagMessageSuccessfulText =>
|
||||
'Ce message a été signalé à un modérateur.';
|
||||
|
||||
@override
|
||||
String get deleteLabel => 'SUPPRIMER';
|
||||
|
||||
@override
|
||||
String get deleteMessageLabel => 'Supprimer le message';
|
||||
|
||||
@override
|
||||
String get deleteMessageQuestion =>
|
||||
'Êtes-vous sûr de vouloir supprimer définitivement ce\nmessage ?';
|
||||
|
||||
@override
|
||||
String get operationCouldNotBeCompletedText =>
|
||||
"L'opération n'a pas pu être terminée.";
|
||||
|
||||
@override
|
||||
String get replyLabel => 'Répondre';
|
||||
|
||||
@override
|
||||
String togglePinUnpinText({required bool pinned}) {
|
||||
if (pinned) return 'Détacher de la conversation';
|
||||
return 'Attacher à la conversation';
|
||||
}
|
||||
|
||||
@override
|
||||
String toggleDeleteRetryDeleteMessageText({required bool isDeleteFailed}) {
|
||||
if (isDeleteFailed) return 'Retenter de supprimer le message';
|
||||
return 'Supprimer le message';
|
||||
}
|
||||
|
||||
@override
|
||||
String get copyMessageLabel => 'Copier le message';
|
||||
|
||||
@override
|
||||
String get editMessageLabel => 'Modifier le message';
|
||||
|
||||
@override
|
||||
String toggleResendOrResendEditedMessage({required bool isUpdateFailed}) {
|
||||
if (isUpdateFailed) return 'Renvoyer le message modifié';
|
||||
return 'Renvoyer';
|
||||
}
|
||||
|
||||
@override
|
||||
String get photosLabel => 'Photos';
|
||||
|
||||
String _getDay(DateTime dateTime) {
|
||||
final now = Jiffy(DateTime.now());
|
||||
final date = Jiffy(dateTime);
|
||||
|
||||
if (date.isSame(now, Units.DAY)) {
|
||||
return "aujourd'hui";
|
||||
} else if (now.diff(date, Units.HOUR) < 24) {
|
||||
return 'hier';
|
||||
} else {
|
||||
return 'le ${date.MMMd}';
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
String sentAtText({required DateTime date, required DateTime time}) =>
|
||||
'Envoyé ${_getDay(date)} à ${Jiffy(time.toLocal()).format('HH:mm')}';
|
||||
|
||||
@override
|
||||
String get todayLabel => "Aujourd'hui";
|
||||
|
||||
@override
|
||||
String get yesterdayLabel => 'Hier';
|
||||
|
||||
@override
|
||||
String get channelIsMutedText => 'Le canal est coupé';
|
||||
|
||||
@override
|
||||
String get noTitleText => 'Aucun titre';
|
||||
|
||||
@override
|
||||
String get letsStartChattingLabel => 'Commençons à discuter !';
|
||||
|
||||
@override
|
||||
String get sendingFirstMessageLabel =>
|
||||
"Que diriez-vous d'envoyer votre premier message à un ami ?";
|
||||
|
||||
@override
|
||||
String get startAChatLabel => 'Commencer une discussion';
|
||||
|
||||
@override
|
||||
String get loadingChannelsError => 'Erreur lors du chargement des canaux';
|
||||
|
||||
@override
|
||||
String get deleteConversationLabel => 'Supprimer la conversation';
|
||||
|
||||
@override
|
||||
String get deleteConversationQuestion =>
|
||||
'Vous êtes sûr de vouloir supprimer cette conversation ?';
|
||||
|
||||
@override
|
||||
String get streamChatLabel => 'Stream Chat';
|
||||
|
||||
@override
|
||||
String get searchingForNetworkLabel => 'Recherche de réseau';
|
||||
|
||||
@override
|
||||
String get offlineLabel => 'Hors ligne...';
|
||||
|
||||
@override
|
||||
String get tryAgainLabel => 'Essayer à nouveau';
|
||||
|
||||
@override
|
||||
String membersCountText(int count) {
|
||||
if (count == 1) return '1 Membre';
|
||||
return '$count Membres';
|
||||
}
|
||||
|
||||
@override
|
||||
String watchersCountText(int count) {
|
||||
if (count == 1) return '1 En ligne';
|
||||
return '$count En ligne';
|
||||
}
|
||||
|
||||
@override
|
||||
String get viewInfoLabel => 'Voir les informations';
|
||||
|
||||
@override
|
||||
String get leaveGroupLabel => 'Quitter le Group';
|
||||
|
||||
@override
|
||||
String get leaveLabel => 'QUITTER';
|
||||
|
||||
@override
|
||||
String get leaveConversationLabel => 'Quitter la conversation';
|
||||
|
||||
@override
|
||||
String get leaveConversationQuestion =>
|
||||
'Etes-vous sûr de vouloir quitter cette conversation ?';
|
||||
|
||||
@override
|
||||
String get showInChatLabel => 'Montrer dans le Chat';
|
||||
|
||||
@override
|
||||
String get saveImageLabel => "Sauvegarder l'image";
|
||||
|
||||
@override
|
||||
String get saveVideoLabel => 'Sauvegarder la vidéo';
|
||||
|
||||
@override
|
||||
String get uploadErrorLabel => 'ERREUR DE TRANSFERT';
|
||||
|
||||
@override
|
||||
String get giphyLabel => 'Giphy';
|
||||
|
||||
@override
|
||||
String get shuffleLabel => 'Mélanger';
|
||||
|
||||
@override
|
||||
String get sendLabel => 'Envoyer';
|
||||
|
||||
@override
|
||||
String get withText => 'avec';
|
||||
|
||||
@override
|
||||
String get inText => 'dans';
|
||||
|
||||
@override
|
||||
String get youText => 'Vous';
|
||||
|
||||
@override
|
||||
String get ofText => 'de';
|
||||
|
||||
@override
|
||||
String get fileText => 'Fichier';
|
||||
|
||||
@override
|
||||
String get replyToMessageLabel => 'Répondre au Message';
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
part of 'stream_chat_localizations.dart';
|
||||
|
||||
/// The translations for English (`hi`).
|
||||
/// The translations for Hindi (`hi`).
|
||||
class StreamChatLocalizationsHi extends GlobalStreamChatLocalizations {
|
||||
/// Create an instance of the translation bundle for Hindi.
|
||||
const StreamChatLocalizationsHi({String localeName = 'hi'})
|
||||
@@ -115,14 +115,14 @@ class StreamChatLocalizationsHi extends GlobalStreamChatLocalizations {
|
||||
String get instantCommandsLabel => 'तत्काल आदेश';
|
||||
|
||||
@override
|
||||
String get fileTooLargeAfterCompressionError =>
|
||||
String fileTooLargeAfterCompressionError(double limitInMB) =>
|
||||
'फ़ाइल अपलोड करने के लिए बहुत बड़ी है। '
|
||||
'फ़ाइल आकार सीमा 20MB है। '
|
||||
'फ़ाइल आकार सीमा $limitInMB MB है। '
|
||||
'हमने इसे कंप्रेस करने की कोशिश की, लेकिन यह काफी नहीं था।';
|
||||
|
||||
@override
|
||||
String get fileTooLargeError =>
|
||||
'फ़ाइल अपलोड करने के लिए बहुत बड़ी है। फ़ाइल आकार सीमा 20MB है।';
|
||||
String fileTooLargeError(double limitInMB) =>
|
||||
'फ़ाइल अपलोड करने के लिए बहुत बड़ी है। फ़ाइल आकार सीमा $limitInMB MB है।';
|
||||
|
||||
@override
|
||||
String emojiMatchingQueryText(String query) => '"$query" से मिलते हुए इमोजी';
|
||||
|
||||
@@ -0,0 +1,358 @@
|
||||
part of 'stream_chat_localizations.dart';
|
||||
|
||||
/// The translations for English (`hi`).
|
||||
class StreamChatLocalizationsIt extends GlobalStreamChatLocalizations {
|
||||
/// Create an instance of the translation bundle for Hindi.
|
||||
const StreamChatLocalizationsIt({String localeName = 'it'})
|
||||
: super(localeName: localeName);
|
||||
|
||||
@override
|
||||
String get launchUrlError => 'Impossibile aprire l\'url';
|
||||
|
||||
@override
|
||||
String get loadingUsersError => 'Errore durante il carimento degli utenti';
|
||||
|
||||
@override
|
||||
String get noUsersLabel => 'Non c\'é nessun utente al momento';
|
||||
|
||||
@override
|
||||
String get retryLabel => 'Riprova';
|
||||
|
||||
@override
|
||||
String get userLastOnlineText => 'Ultimo accesso';
|
||||
|
||||
@override
|
||||
String get userOnlineText => 'Online';
|
||||
|
||||
@override
|
||||
String userTypingText(Iterable<User> users) {
|
||||
if (users.isEmpty) return '';
|
||||
final first = users.first;
|
||||
if (users.length == 1) {
|
||||
return '${first.name} sta scrivendo';
|
||||
}
|
||||
return '${first.name} e altri ${users.length - 1} stanno scrivendo';
|
||||
}
|
||||
|
||||
@override
|
||||
String get threadReplyLabel => 'Rispondi nel thread';
|
||||
|
||||
@override
|
||||
String get onlyVisibleToYouText => 'Visible solo a te';
|
||||
|
||||
@override
|
||||
String threadReplyCountText(int count) => '$count risposte al thread';
|
||||
|
||||
@override
|
||||
String attachmentsUploadProgressText({
|
||||
required int remaining,
|
||||
required int total,
|
||||
}) =>
|
||||
'Caricamento $remaining/$total ...';
|
||||
|
||||
@override
|
||||
String pinnedByUserText({
|
||||
required User pinnedBy,
|
||||
required User currentUser,
|
||||
}) {
|
||||
final pinnedByCurrentUser = currentUser.id == pinnedBy.id;
|
||||
if (pinnedByCurrentUser) return 'Messo in evidenza da te';
|
||||
return 'Messo in evidenza da ${pinnedBy.name}';
|
||||
}
|
||||
|
||||
@override
|
||||
String get emptyMessagesText => 'Non c\'é nessun messaggio al momento';
|
||||
|
||||
@override
|
||||
String get genericErrorText => 'Qualcosa è andato storto';
|
||||
|
||||
@override
|
||||
String get loadingMessagesError =>
|
||||
'Errore durante il caricamento dei messaggi';
|
||||
|
||||
@override
|
||||
String resultCountText(int count) => '$count risultati';
|
||||
|
||||
@override
|
||||
String get messageDeletedText => 'Questo messaggio è stato eliminato';
|
||||
|
||||
@override
|
||||
String get messageDeletedLabel => 'Messaggio cancellato';
|
||||
|
||||
@override
|
||||
String get messageReactionsText => 'Reazioni al messaggio';
|
||||
|
||||
@override
|
||||
String get emptyChatMessagesText => 'Nessuna conversazione al momento...';
|
||||
|
||||
@override
|
||||
String threadSeparatorText(int replyCount) {
|
||||
if (replyCount == 1) return '1 risposta';
|
||||
return '$replyCount risposte';
|
||||
}
|
||||
|
||||
@override
|
||||
String get connectedLabel => 'Connesso';
|
||||
|
||||
@override
|
||||
String get disconnectedLabel => 'Disconnesso';
|
||||
|
||||
@override
|
||||
String get reconnectingLabel => 'Riconnessione in corso...';
|
||||
|
||||
@override
|
||||
String get alsoSendAsDirectMessageLabel =>
|
||||
'Manda anche come messaggio diretto';
|
||||
|
||||
@override
|
||||
String get addACommentOrSendLabel => 'Aggiungi un commento o invia';
|
||||
|
||||
@override
|
||||
String get searchGifLabel => 'Cerca una GIF';
|
||||
|
||||
@override
|
||||
String get writeAMessageLabel => 'Scrivi un messaggio';
|
||||
|
||||
@override
|
||||
String get instantCommandsLabel => 'Commandi istantanei';
|
||||
|
||||
@override
|
||||
String fileTooLargeAfterCompressionError(double limitInMB) =>
|
||||
'Il file è troppo grande per essere caricato. '
|
||||
'Il file eccede il limite di $limitInMB MB. '
|
||||
'Abbiamo provato a comprimerlo, ma non è stato abbastanza.';
|
||||
|
||||
@override
|
||||
String fileTooLargeError(double limitInMB) => '''
|
||||
Il file è troppo grande per essere caricato. Il limite è di $limitInMB MB.''';
|
||||
|
||||
@override
|
||||
String emojiMatchingQueryText(String query) => 'Emoji per "$query"';
|
||||
|
||||
@override
|
||||
String get addAFileLabel => 'Aggiungi un file';
|
||||
|
||||
@override
|
||||
String get photoFromCameraLabel => 'Immagine dalla fotocamera';
|
||||
|
||||
@override
|
||||
String get uploadAFileLabel => 'Carica un file';
|
||||
|
||||
@override
|
||||
String get uploadAPhotoLabel => 'Carica una foto';
|
||||
|
||||
@override
|
||||
String get uploadAVideoLabel => 'Carica un video';
|
||||
|
||||
@override
|
||||
String get videoFromCameraLabel => 'Video dalla fotocamera';
|
||||
|
||||
@override
|
||||
String get okLabel => 'Ok';
|
||||
|
||||
@override
|
||||
String get somethingWentWrongLabel => 'Qualcosa è andato storto';
|
||||
|
||||
@override
|
||||
String get addMoreFilesLabel => 'Aggiungi altri file';
|
||||
|
||||
@override
|
||||
String get enablePhotoAndVideoAccessMessage =>
|
||||
'Per favore attiva l\'accesso alle foto'
|
||||
'\ne ai video cosí potrai condividerli con i tuoi amici.';
|
||||
|
||||
@override
|
||||
String get allowGalleryAccessMessage => 'Permetti l\'accesso alla galleria';
|
||||
|
||||
@override
|
||||
String get flagMessageLabel => 'Segnala messaggio';
|
||||
|
||||
@override
|
||||
String get flagMessageQuestion => 'Vuoi mandare una copia di questo messaggio'
|
||||
'\nad un moderatore?';
|
||||
|
||||
@override
|
||||
String get flagLabel => 'SEGNALA';
|
||||
|
||||
@override
|
||||
String get cancelLabel => 'ANNULLA';
|
||||
|
||||
@override
|
||||
String get flagMessageSuccessfulLabel => 'Messaggio segnalato';
|
||||
|
||||
@override
|
||||
String get flagMessageSuccessfulText =>
|
||||
'Questo messaggio è stato segnalato ad un moderatore.';
|
||||
|
||||
@override
|
||||
String get deleteLabel => 'CANCELLA';
|
||||
|
||||
@override
|
||||
String get deleteMessageLabel => 'Cancella messaggio';
|
||||
|
||||
@override
|
||||
String get deleteMessageQuestion =>
|
||||
'Sei sicuro di voler definitivamente cancellare questo\nmessaggio?';
|
||||
|
||||
@override
|
||||
String get operationCouldNotBeCompletedText =>
|
||||
'Non è stato possibile completare questa operazione.';
|
||||
|
||||
@override
|
||||
String get replyLabel => 'Rispondi';
|
||||
|
||||
@override
|
||||
String togglePinUnpinText({required bool pinned}) {
|
||||
if (pinned) return 'Rimuovi dagli elementi in evidenza';
|
||||
return 'Metti in evidenza';
|
||||
}
|
||||
|
||||
@override
|
||||
String toggleDeleteRetryDeleteMessageText({required bool isDeleteFailed}) {
|
||||
if (isDeleteFailed) return 'Riprova a cancellare il messaggio';
|
||||
return 'Cancella il messaggio';
|
||||
}
|
||||
|
||||
@override
|
||||
String get copyMessageLabel => 'Copia messaggio';
|
||||
|
||||
@override
|
||||
String get editMessageLabel => 'Modifica messaggio';
|
||||
|
||||
@override
|
||||
String toggleResendOrResendEditedMessage({required bool isUpdateFailed}) {
|
||||
if (isUpdateFailed) return 'Riprova modifica messaggio';
|
||||
return 'Riprova';
|
||||
}
|
||||
|
||||
@override
|
||||
String get photosLabel => 'Foto';
|
||||
|
||||
String _getDay(DateTime dateTime) {
|
||||
final now = Jiffy(DateTime.now());
|
||||
final date = Jiffy(dateTime);
|
||||
|
||||
if (date.isSame(now, Units.DAY)) {
|
||||
return 'oggi';
|
||||
} else if (now.diff(date, Units.HOUR) < 24) {
|
||||
return 'ieri';
|
||||
} else {
|
||||
return 'il ${date.MMMd}';
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
String sentAtText({required DateTime date, required DateTime time}) => '''
|
||||
Inviato il ${_getDay(date)} alle ${Jiffy(time.toLocal()).format('HH:mm')}''';
|
||||
|
||||
@override
|
||||
String get todayLabel => 'Oggi';
|
||||
|
||||
@override
|
||||
String get yesterdayLabel => 'Ieri';
|
||||
|
||||
@override
|
||||
String get channelIsMutedText => 'Il canale è mutato';
|
||||
|
||||
@override
|
||||
String get noTitleText => 'Nessun titolo';
|
||||
|
||||
@override
|
||||
String get letsStartChattingLabel => 'Inizia una conversazione!';
|
||||
|
||||
@override
|
||||
String get sendingFirstMessageLabel =>
|
||||
'Che ne dici di mandare il tuo primo messaggio ad un amico?';
|
||||
|
||||
@override
|
||||
String get startAChatLabel => 'Inizia una conversazione';
|
||||
|
||||
@override
|
||||
String get loadingChannelsError => 'Errore durante il caricamento dei canali';
|
||||
|
||||
@override
|
||||
String get deleteConversationLabel => 'Elemina conversazione';
|
||||
|
||||
@override
|
||||
String get deleteConversationQuestion =>
|
||||
'Sei sicuro di voler eliminare questa conversazione?';
|
||||
|
||||
@override
|
||||
String get streamChatLabel => 'Stream Chat';
|
||||
|
||||
@override
|
||||
String get searchingForNetworkLabel => 'Cercando una connessione';
|
||||
|
||||
@override
|
||||
String get offlineLabel => 'Offline...';
|
||||
|
||||
@override
|
||||
String get tryAgainLabel => 'Riprova';
|
||||
|
||||
@override
|
||||
String membersCountText(int count) {
|
||||
if (count == 1) return '1 membro';
|
||||
return '$count membri';
|
||||
}
|
||||
|
||||
@override
|
||||
String watchersCountText(int count) {
|
||||
if (count == 1) return '1 Online';
|
||||
return '$count Online';
|
||||
}
|
||||
|
||||
@override
|
||||
String get viewInfoLabel => 'Vedi info';
|
||||
|
||||
@override
|
||||
String get leaveGroupLabel => 'Esci dal gruppo';
|
||||
|
||||
@override
|
||||
String get leaveLabel => 'ESCI';
|
||||
|
||||
@override
|
||||
String get leaveConversationLabel => 'Esci dalla conversazione';
|
||||
|
||||
@override
|
||||
String get leaveConversationQuestion =>
|
||||
'Sei sicuro di voler lasciare questa conversazione?';
|
||||
|
||||
@override
|
||||
String get showInChatLabel => 'Mostra nella chat';
|
||||
|
||||
@override
|
||||
String get saveImageLabel => 'Salva immagine';
|
||||
|
||||
@override
|
||||
String get saveVideoLabel => 'Salva video';
|
||||
|
||||
@override
|
||||
String get uploadErrorLabel => 'ERRORE DURANTE IL CARICAMENTO';
|
||||
|
||||
@override
|
||||
String get giphyLabel => 'Giphy';
|
||||
|
||||
@override
|
||||
String get shuffleLabel => 'Shuffle';
|
||||
|
||||
@override
|
||||
String get sendLabel => 'Invia';
|
||||
|
||||
@override
|
||||
String get withText => 'con';
|
||||
|
||||
@override
|
||||
String get inText => 'in';
|
||||
|
||||
@override
|
||||
String get youText => 'te';
|
||||
|
||||
@override
|
||||
String get ofText => 'di';
|
||||
|
||||
@override
|
||||
String get fileText => 'file';
|
||||
|
||||
@override
|
||||
String get replyToMessageLabel => 'Rispondi al messaggio';
|
||||
}
|
||||
@@ -12,8 +12,7 @@ dependencies:
|
||||
sdk: flutter
|
||||
flutter_localizations:
|
||||
sdk: flutter
|
||||
stream_chat_flutter:
|
||||
path: ../stream_chat_flutter
|
||||
stream_chat_flutter: ^2.0.0
|
||||
|
||||
dev_dependencies:
|
||||
flutter_test:
|
||||
|
||||
Reference in New Issue
Block a user