feat(localizations): add catalan

Also managed to fix some weird spanish translations.
This commit is contained in:
Carlos GC
2023-01-19 23:59:49 +01:00
committed by Jc Miñarro
parent f130342fdb
commit e3fe2a232a
5 changed files with 475 additions and 6 deletions
@@ -1,3 +1,13 @@
## Upcoming
✅ Added
* Added support for [Catalan](https://github.com/GetStream/stream-chat-flutter/blob/master/packages/stream_chat_localizations/lib/src/stream_chat_localizations_ca.dart) locale.
🔄 Changed
* Some of the `Spanish` translations have been updated/changed for better understanding.
## 4.0.0
🔄 Changed
@@ -35,6 +35,7 @@ At the moment we support the following languages:
- [Italian](https://github.com/GetStream/stream-chat-flutter/blob/master/packages/stream_chat_localizations/lib/src/stream_chat_localizations_it.dart)
- [French](https://github.com/GetStream/stream-chat-flutter/blob/master/packages/stream_chat_localizations/lib/src/stream_chat_localizations_fr.dart)
- [Spanish](https://github.com/GetStream/stream-chat-flutter/blob/master/packages/stream_chat_localizations/lib/src/stream_chat_localizations_es.dart)
- [Catalan](https://github.com/GetStream/stream-chat-flutter/blob/master/packages/stream_chat_localizations/lib/src/stream_chat_localizations_ca.dart)
- [Japanese](https://github.com/GetStream/stream-chat-flutter/blob/master/packages/stream_chat_localizations/lib/src/stream_chat_localizations_ja.dart)
- [Korean](https://github.com/GetStream/stream-chat-flutter/blob/master/packages/stream_chat_localizations/lib/src/stream_chat_localizations_ko.dart)
- [Portuguese](https://github.com/GetStream/stream-chat-flutter/blob/master/packages/stream_chat_localizations/lib/src/stream_chat_localizations_pt.dart)
@@ -75,6 +76,7 @@ class MyApp extends StatelessWidget {
Locale('fr'),
Locale('it'),
Locale('es'),
Locale('ca'),
Locale('ja'),
Locale('ko'),
Locale('pt'),
@@ -123,6 +125,7 @@ Example:
<string>fr</string>
<string>it</string>
<string>es</string>
<string>ca</string>
<string>ja</string>
<string>ko</string>
<string>pt</string>
@@ -3,6 +3,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:stream_chat_flutter/stream_chat_flutter.dart';
part 'stream_chat_localizations_ca.dart';
part 'stream_chat_localizations_de.dart';
part 'stream_chat_localizations_en.dart';
part 'stream_chat_localizations_es.dart';
@@ -28,6 +29,7 @@ const kStreamChatSupportedLanguages = {
'fr',
'it',
'es',
'ca',
'ja',
'ko',
'pt',
@@ -65,6 +67,8 @@ GlobalStreamChatLocalizations? getStreamChatTranslation(Locale locale) {
return const StreamChatLocalizationsIt();
case 'es':
return const StreamChatLocalizationsEs();
case 'ca':
return const StreamChatLocalizationsCa();
case 'ja':
return const StreamChatLocalizationsJa();
case 'ko':
@@ -0,0 +1,452 @@
part of 'stream_chat_localizations.dart';
/// The translations for Catalan (`ca`).
class StreamChatLocalizationsCa extends GlobalStreamChatLocalizations {
/// Create an instance of the translation bundle for Catalan.
const StreamChatLocalizationsCa({super.localeName = 'ca'});
@override
String get launchUrlError => "No s'ha pogut obrir la url";
@override
String get loadingUsersError => "Error de càrrega de l'usuari";
@override
String get noUsersLabel => 'Actualment no hi ha usuaris';
@override
String get retryLabel => 'Torna-ho a provar';
@override
String get userLastOnlineText => 'Última vegada en línia';
@override
String get userOnlineText => 'En línia';
@override
String userTypingText(Iterable<User> users) {
if (users.isEmpty) return '';
final first = users.first;
if (users.length == 1) {
return '${first.name} està escrivint';
}
return '${first.name} y ${users.length - 1} estan escrivint';
}
@override
String get threadReplyLabel => 'Respon al fil';
@override
String get onlyVisibleToYouText => 'Només visible per vostè';
@override
String threadReplyCountText(int count) =>
'$count respostes al fil';
@override
String attachmentsUploadProgressText({
required int remaining,
required int total,
}) =>
'Transferència en curs $remaining/$total ...';
@override
String pinnedByUserText({
required User pinnedBy,
required User currentUser,
}) {
final pinnedByCurrentUser = currentUser.id == pinnedBy.id;
if (pinnedByCurrentUser) return 'Fixat per tu';
return 'Fixat per ${pinnedBy.name}';
}
@override
String get sendMessagePermissionError =>
'No tens permís per enviar missatges';
@override
String get emptyMessagesText => 'Actualment no hi ha missatges';
@override
String get genericErrorText => 'Hi ha hagut un problema';
@override
String get loadingMessagesError =>
'Hi ha hagut un error mentres carregava el missatge';
@override
String resultCountText(int count) => '$count resultats';
@override
String get messageDeletedText => 'Aquest missatge ha estat esborrat.';
@override
String get messageDeletedLabel => 'Missatge esborrat';
@override
String get messageReactionsLabel => 'Reaccions dels missatges';
@override
String get emptyChatMessagesText => 'Encara no hi ha missatges...';
@override
String threadSeparatorText(int replyCount) {
if (replyCount == 1) return '1 resposta';
return '$replyCount respostes';
}
@override
String get connectedLabel => 'Connectat';
@override
String get disconnectedLabel => 'Desconnectat';
@override
String get reconnectingLabel => 'Reconnectant...';
@override
String get alsoSendAsDirectMessageLabel =>
'Enviar també com a missatge directe';
@override
String get addACommentOrSendLabel => 'Afegir un comentari o enviar';
@override
String get searchGifLabel => 'Cerca de GIFs';
@override
String get writeAMessageLabel => 'Escriure un missatge';
@override
String get instantCommandsLabel => 'Commandes instantànies';
@override
String fileTooLargeAfterCompressionError(double limitInMB) =>
'El fitxer és massa gran descargar-lo. '
'La mida màxima del fitxer és de $limitInMB MB. '
'Hem intentat comprimir-lo, pero ha estat suficient.';
@override
String fileTooLargeError(double limitInMB) =>
'El fitxer és massa gran per descargar-lo. '
'El límit de mida dels fitxers és de $limitInMB MB.';
@override
String get couldNotReadBytesFromFileError =>
"No s'han pogut llegir els bytes del fitxer.";
@override
String get addAFileLabel => 'Afegir un fitxer';
@override
String get photoFromCameraLabel => 'Foto de la càmera';
@override
String get uploadAFileLabel => 'Transferir un fitxer';
@override
String get uploadAPhotoLabel => 'Pujar una foto';
@override
String get uploadAVideoLabel => 'Pujar un vídeo';
@override
String get videoFromCameraLabel => 'Vídeo de la càmera';
@override
String get okLabel => 'Vale';
@override
String get somethingWentWrongError => 'Alguna cosa ha anat malament';
@override
String get addMoreFilesLabel => 'Afegir més fitxers';
@override
String get enablePhotoAndVideoAccessMessage =>
"Si us plau, permeti l'accés a les seves fotos"
'\ni vídeos per a que pugui compartir-los.';
@override
String get allowGalleryAccessMessage => "Permetre l'accés a la galeria";
@override
String get flagMessageLabel => 'Reportar un missatge';
@override
String get flagMessageQuestion =>
"¿Vol enviar una còpia d'aquest missatge a un"
'\nmoderador per una major investigació?';
@override
String get flagLabel => 'REPORTAR';
@override
String get cancelLabel => 'CANCELAR';
@override
String get flagMessageSuccessfulLabel => 'Missatge reportat';
@override
String get flagMessageSuccessfulText =>
'Aquest missatge ha estat reportat a un moderador.';
@override
String get deleteLabel => 'ESBORRAR';
@override
String get deleteMessageLabel => 'Esborrar el missatge';
@override
String get deleteMessageQuestion =>
'¿Estàs segur de que vols esborrar aquest\nmissatge de forma permanent?';
@override
String get operationCouldNotBeCompletedText =>
"L'operació no s'ha pogut completar.";
@override
String get replyLabel => 'Respondre';
@override
String togglePinUnpinText({required bool pinned}) {
if (pinned) return 'Desfixar de la conversa';
return 'Fixar a la conversa';
}
@override
String toggleDeleteRetryDeleteMessageText({required bool isDeleteFailed}) {
if (isDeleteFailed) return 'Reintentar esborrar el misssatge';
return 'Esborrar el misssatge';
}
@override
String get copyMessageLabel => 'Copiar el misssatge';
@override
String get editMessageLabel => 'Editar el misssatge';
@override
String toggleResendOrResendEditedMessage({required bool isUpdateFailed}) {
if (isUpdateFailed) return 'Reenviar el missatge modificat';
return 'Reenviar';
}
@override
String get photosLabel => 'Fotos';
String _getDay(DateTime dateTime) {
final now = DateTime.now();
final today = DateTime(now.year, now.month, now.day);
final yesterday = DateTime(now.year, now.month, now.day - 1);
final date = DateTime(dateTime.year, dateTime.month, dateTime.day);
if (date == today) {
return 'avui';
} else if (date == yesterday) {
return 'ahir';
} else {
return 'el ${Jiffy(date).MMMd}';
}
}
@override
String sentAtText({required DateTime date, required DateTime time}) =>
'''Enviat el ${_getDay(date)} a les ${Jiffy(time.toLocal()).format('HH:mm')}''';
@override
String get todayLabel => 'Avui';
@override
String get yesterdayLabel => 'Ahir';
@override
String get channelIsMutedText => 'El canal està silenciat';
@override
String get noTitleText => 'Sense títol';
@override
String get letsStartChattingLabel => '¡Comencem a parlar!';
@override
String get sendingFirstMessageLabel =>
'Qué li sembla enviar el seu primer missatge a un amic?';
@override
String get startAChatLabel => 'Iniciar una conversa';
@override
String get loadingChannelsError => 'Error al carregar els canals';
@override
String get deleteConversationLabel => 'Esborrar la conversa';
@override
String get deleteConversationQuestion =>
'Estàs segur de que vols esborrar aquesta conversa?';
@override
String get streamChatLabel => 'Stream Chat';
@override
String get searchingForNetworkText => 'Buscant xarxa';
@override
String get offlineLabel => 'Sense connexió...';
@override
String get tryAgainLabel => 'Torna-ho a provar';
@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 línea';
return '$count En línea';
}
@override
String get viewInfoLabel => 'Veure informació';
@override
String get leaveGroupLabel => 'Sortir del Grup';
@override
String get leaveLabel => 'SORTIR';
@override
String get leaveConversationLabel => 'Sortir de la conversa';
@override
String get leaveConversationQuestion =>
"Estàs segur de que vol sortir d'aquesta conversa?";
@override
String get showInChatLabel => 'Mostrar al chat';
@override
String get saveImageLabel => 'Guardar la imatge';
@override
String get saveVideoLabel => 'Guardar el vídeo';
@override
String get uploadErrorLabel => 'ERROR DE TRANSFERENCIA';
@override
String get giphyLabel => 'Giphy';
@override
String get shuffleLabel => 'Remenar';
@override
String get sendLabel => 'Enviar';
@override
String get withText => 'amb';
@override
String get inText => 'a';
@override
String get youText => 'Vostè';
@override
String galleryPaginationText({
required int currentPage,
required int totalPages,
}) =>
'${currentPage + 1} de $totalPages';
@override
String get fileText => 'Fitxer';
@override
String get replyToMessageLabel => 'Respondre al missatge';
@override
String attachmentLimitExceedError(int limit) =>
'No és possible afegir més de $limit fitxers adjunts';
@override
String get viewLibrary => 'Veure llibreria';
@override
String get slowModeOnLabel => 'Mode lent activat';
@override
String get downloadLabel => 'Descarregar';
@override
String toggleMuteUnmuteUserText({required bool isMuted}) {
if (isMuted) {
return "Activar so de l'usuari";
} else {
return 'Silenciar usuari';
}
}
@override
String toggleMuteUnmuteGroupQuestion({required bool isMuted}) {
if (isMuted) {
return "Estàs segur de que vols activar el so d'aquest grup?";
} else {
return 'Estàs segur de que vols silenciar aquest grup?';
}
}
@override
String toggleMuteUnmuteUserQuestion({required bool isMuted}) {
if (isMuted) {
return "Estàs segur de que vols activar el so d'aquest usuari";
} else {
return 'Estàs seguro de que vols silenciar aquest usuari?';
}
}
@override
String toggleMuteUnmuteAction({required bool isMuted}) {
if (isMuted) {
return 'ACTIVAR SO';
} else {
return 'SILENCIAR';
}
}
@override
String toggleMuteUnmuteGroupText({required bool isMuted}) {
if (isMuted) {
return 'Activar so del grup';
} else {
return 'Silenciar grup';
}
}
@override
String get linkDisabledDetails =>
'No es permet enviar enllaços a aquesta conversa.';
@override
String get linkDisabledError => 'Els enllaços estan deshabilitats';
@override
String unreadMessagesSeparatorText(int unreadCount) {
if (unreadCount == 1) {
return '1 missatge no llegit';
}
return '$unreadCount missatges no llegits';
}
@override
String get enableFileAccessMessage => "Habiliti l'accés als fitxers"
'\nper poder compartir-los amb amics.';
@override
String get allowFileAccessMessage => "Permetre l'accés als fitxers";
}
@@ -84,7 +84,7 @@ class StreamChatLocalizationsEs extends GlobalStreamChatLocalizations {
String get messageDeletedLabel => 'Mensaje borrado';
@override
String get messageReactionsLabel => 'Reacciones a los mensajes';
String get messageReactionsLabel => 'Reacciones de los mensajes';
@override
String get emptyChatMessagesText => 'Todavía no hay charlas aquí...';
@@ -165,7 +165,7 @@ class StreamChatLocalizationsEs extends GlobalStreamChatLocalizations {
@override
String get enablePhotoAndVideoAccessMessage =>
'Por favor, permita el acceso a sus fotos'
'\ny vídeos para que puedas compartirlos con sus amigos.';
'\ny vídeos para que pueda compartirlos con sus amigos.';
@override
String get allowGalleryAccessMessage => 'Permitir el acceso a su galería';
@@ -206,11 +206,11 @@ class StreamChatLocalizationsEs extends GlobalStreamChatLocalizations {
'La operación no pudo completarse.';
@override
String get replyLabel => 'Respuesta';
String get replyLabel => 'Responder';
@override
String togglePinUnpinText({required bool pinned}) {
if (pinned) return 'Desfijar a la conversación';
if (pinned) return 'Desfijar de la conversación';
return 'Fijar a la conversación';
}
@@ -389,14 +389,14 @@ No es posible añadir más de $limit archivos adjuntos
if (isMuted) {
return 'No silenciar usuario';
} else {
return 'Usuario mudo';
return 'Silenciar usuario';
}
}
@override
String toggleMuteUnmuteGroupQuestion({required bool isMuted}) {
if (isMuted) {
return '¿Estás seguro de que quieres activar el silencio de este grupo?';
return '¿Estás seguro de que quieres activar el sonido de este grupo?';
} else {
return '¿Estás seguro de que quieres silenciar a este grupo?';
}