feat(localization): Create stream_chat_localizations_no.dart (#1218)

* Create stream_chat_localizations_no.dart

Added the Norwegian translation for the Stream Chat

* Apply suggestions from code review

* Two spelling errors sneaked in

* fix(localization): cleanup pr

* chore(localization): update readme

* chore(localization): update changelog

Co-authored-by: Sahil Kumar <[email protected]>
Co-authored-by: Salvatore Giordano <[email protected]>
This commit is contained in:
monhelle
2022-07-07 10:07:18 +02:00
committed by GitHub
co-authored by Sahil Kumar Salvatore Giordano
parent dd47db04dd
commit f682e0d310
4 changed files with 406 additions and 0 deletions
@@ -1,3 +1,7 @@
## Upcoming
* Added support for [Norwegian](https://github.com/GetStream/stream-chat-flutter/blob/master/packages/stream_chat_localizations/lib/src/stream_chat_localizations_no.dart) locale.
## 3.2.0
✅ Added
@@ -39,6 +39,7 @@ At the moment we support the following languages:
- [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)
- [German](https://github.com/GetStream/stream-chat-flutter/blob/master/packages/stream_chat_localizations/lib/src/stream_chat_localizations_de.dart)
- [Norwegian](https://github.com/GetStream/stream-chat-flutter/blob/master/packages/stream_chat_localizations/lib/src/stream_chat_localizations_no.dart)
More languages will be added in the future. Feel free to [contribute](https://github.com/GetStream/stream-chat-flutter/blob/master/CONTRIBUTING.md) to add more languages.
@@ -77,6 +78,8 @@ class MyApp extends StatelessWidget {
Locale('ja'),
Locale('ko'),
Locale('pt'),
Locale('de'),
Locale('no'),
],
// Add GlobalStreamChatLocalizations.delegates
localizationsDelegates: GlobalStreamChatLocalizations.delegates,
@@ -123,6 +126,8 @@ Example:
<string>ja</string>
<string>ko</string>
<string>pt</string>
<string>de</string>
<string>no</string>
</array>
```
@@ -21,6 +21,8 @@ part 'stream_chat_localizations_pt.dart';
part 'stream_chat_localizations_de.dart';
part 'stream_chat_localizations_no.dart';
/// The set of supported languages, as language code strings.
///
/// The [GlobalStreamChatLocalizations.delegate] can generate localizations for
@@ -39,6 +41,7 @@ const kStreamChatSupportedLanguages = {
'ko',
'pt',
'de',
'no',
};
/// Creates a [GlobalStreamChatLocalizations] instance for the given `locale`.
@@ -79,6 +82,8 @@ GlobalStreamChatLocalizations? getStreamChatTranslation(Locale locale) {
return const StreamChatLocalizationsPt();
case 'de':
return const StreamChatLocalizationsDe();
case 'no':
return const StreamChatLocalizationsNo();
default:
return null;
}
@@ -0,0 +1,392 @@
part of 'stream_chat_localizations.dart';
/// The translations for Norwegian (`no`).
class StreamChatLocalizationsNo extends GlobalStreamChatLocalizations {
/// Create an instance of the translation bundle for Norwegian.
const StreamChatLocalizationsNo({super.localeName = 'no'});
@override
String get launchUrlError => 'Kan ikke laste inn url';
@override
String get loadingUsersError => 'Problem med å laste inn brukere';
@override
String get noUsersLabel => 'Det er ingen brukere akkurat nå';
@override
String get retryLabel => 'Prøv igjen';
@override
String get userLastOnlineText => 'Sist pålogget';
@override
String get userOnlineText => 'Pålogget';
@override
String userTypingText(Iterable<User> users) {
if (users.isEmpty) return '';
final first = users.first;
if (users.length == 1) {
return '${first.name} skriver';
}
return '${first.name} og ${users.length - 1} flere skriver';
}
@override
String get threadReplyLabel => 'Svar på tråd';
@override
String get onlyVisibleToYouText => 'Kun synlig for deg';
@override
String threadReplyCountText(int count) => '$count svar på tråd';
@override
String attachmentsUploadProgressText({
required int remaining,
required int total,
}) =>
'Laster opp $remaining/$total ...';
@override
String pinnedByUserText({
required User pinnedBy,
required User currentUser,
}) {
final pinnedByCurrentUser = currentUser.id == pinnedBy.id;
if (pinnedByCurrentUser) return 'Festet av deg';
return 'Festet av ${pinnedBy.name}';
}
@override
String get sendMessagePermissionError =>
'Du har ikke tillatelse til å sende meldinger';
@override
String get emptyMessagesText => 'Det er ingen meldinger akkurat nå';
@override
String get genericErrorText => 'Noe gikk galt';
@override
String get loadingMessagesError => 'Problem med å laste inn meldinger';
@override
String resultCountText(int count) => '$count resultater';
@override
String get messageDeletedText => 'Denne meldingen er slettet.';
@override
String get messageDeletedLabel => 'Melding slettet';
@override
String get messageReactionsLabel => 'Reaksjoner på melding';
@override
String get emptyChatMessagesText => 'Ingen meldinger her enda...';
@override
String threadSeparatorText(int replyCount) {
if (replyCount == 1) return '1 svar';
return '$replyCount svar';
}
@override
String get connectedLabel => 'Tilkoblet';
@override
String get disconnectedLabel => 'Avbrutt';
@override
String get reconnectingLabel => 'Prøver å koble til...';
@override
String get alsoSendAsDirectMessageLabel => 'Også send som en direktemelding';
@override
String get addACommentOrSendLabel => 'Legg til en kommentar eller send';
@override
String get searchGifLabel => 'Søk GIFs';
@override
String get writeAMessageLabel => 'Skriv en melding';
@override
String get instantCommandsLabel => 'Direkte kommandoer';
@override
String fileTooLargeAfterCompressionError(double limitInMB) =>
'Filen er for stor til å laste opp. '
'Grensen for filopplasting er $limitInMB MB. '
'Vi prøvde å komprimere den, men det hjalp ikke.';
@override
String fileTooLargeError(double limitInMB) =>
'Filen er for stor til å laste opp. Filgrense er $limitInMB MB.';
@override
String emojiMatchingQueryText(String query) => 'Emoji matcher "$query"';
@override
String get addAFileLabel => 'Legg til en fil';
@override
String get photoFromCameraLabel => 'Bilde fra kamera';
@override
String get uploadAFileLabel => 'Last opp en fil';
@override
String get uploadAPhotoLabel => 'Last opp et bilde';
@override
String get uploadAVideoLabel => 'Last opp en video';
@override
String get videoFromCameraLabel => 'Video fra kamera';
@override
String get okLabel => 'OK';
@override
String get somethingWentWrongError => 'Noe gikk galt';
@override
String get addMoreFilesLabel => 'Legg til flere filer';
@override
String get enablePhotoAndVideoAccessMessage =>
'Vennligst gi tillatelse til dine bilder'
'\nog videoer så du kan dele de med dine venner.';
@override
String get allowGalleryAccessMessage => 'Tillat tilgang til galleri';
@override
String get flagMessageLabel => 'Rapporter melding';
@override
String get flagMessageQuestion =>
'Ønsker du å sende en kopi av denne meldingen til en'
'\nmoderator for videre undersøkelser';
@override
String get flagLabel => 'RAPPORTER';
@override
String get cancelLabel => 'AVBRYT';
@override
String get flagMessageSuccessfulLabel => 'Melding rapportert';
@override
String get flagMessageSuccessfulText =>
'Meldingen har blitt rapportert til en moderator.';
@override
String get deleteLabel => 'SLETT';
@override
String get deleteMessageLabel => 'Slett melding';
@override
String get deleteMessageQuestion =>
'Er du sikker på at du ønsker å slette denne meldingen permanent?';
@override
String get operationCouldNotBeCompletedText =>
'Denne handlingen kunne ikke bli gjennomført.';
@override
String get replyLabel => 'Svar';
@override
String togglePinUnpinText({required bool pinned}) {
if (pinned) return 'Løsne fra samtale';
return 'Fest til samtale';
}
@override
String toggleDeleteRetryDeleteMessageText({required bool isDeleteFailed}) {
if (isDeleteFailed) return 'Prøv å slett melding på nytt';
return 'Slett melding';
}
@override
String get copyMessageLabel => 'Kopier melding';
@override
String get editMessageLabel => 'Rediger melding';
@override
String toggleResendOrResendEditedMessage({required bool isUpdateFailed}) {
if (isUpdateFailed) return 'Send redigert melding på nytt';
return 'Send på nytt';
}
@override
String get photosLabel => 'Foto';
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 'i dag';
} else if (date == yesterday) {
return 'i går';
} else {
return '${Jiffy(date).MMMd}';
}
}
@override
String sentAtText({required DateTime date, required DateTime time}) =>
'Sent ${_getDay(date)} kl. ${Jiffy(time.toLocal()).format('HH:mm')}';
@override
String get todayLabel => 'I dag';
@override
String get yesterdayLabel => 'I går';
@override
String get channelIsMutedText => 'Kanal er dempet';
@override
String get noTitleText => 'Ingen tittel';
@override
String get letsStartChattingLabel => 'La oss starte å chatte!';
@override
String get sendingFirstMessageLabel =>
'Hva med å sende din første melding til en venn?';
@override
String get startAChatLabel => 'Start en chat';
@override
String get loadingChannelsError => 'Problemer med å laste inn kanaler';
@override
String get deleteConversationLabel => 'Slett samtale';
@override
String get deleteConversationQuestion =>
'Er du sikker på at du ønsker å slette denne samtalen?';
@override
String get streamChatLabel => 'Stream Chat';
@override
String get searchingForNetworkText => 'Søker etter nettverk';
@override
String get offlineLabel => 'Avlogget...';
@override
String get tryAgainLabel => 'Prøv igjen';
@override
String membersCountText(int count) {
if (count == 1) return '1 medlem';
return '$count medlemmer';
}
@override
String watchersCountText(int count) {
if (count == 1) return '1 pålogget';
return '$count pålogget';
}
@override
String get viewInfoLabel => 'Se info';
@override
String get leaveGroupLabel => 'Forlat gruppe';
@override
String get leaveLabel => 'FORLAT';
@override
String get leaveConversationLabel => 'Forlat samtale';
@override
String get leaveConversationQuestion =>
'Er du sikker på at du ønsker å forlate denne samtalen?';
@override
String get showInChatLabel => 'Se i chat';
@override
String get saveImageLabel => 'Lagre bilde';
@override
String get saveVideoLabel => 'Lagre video';
@override
String get uploadErrorLabel => 'PROBLEM MED OPPLASTNING';
@override
String get giphyLabel => 'Giphy';
@override
String get shuffleLabel => 'Stokk om';
@override
String get sendLabel => 'Send';
@override
String get withText => 'med';
@override
String get inText => 'i';
@override
String get youText => 'Du';
@override
String galleryPaginationText({
required int currentPage,
required int totalPages,
}) =>
'${currentPage + 1} of $totalPages';
@override
String get fileText => 'Fil';
@override
String get replyToMessageLabel => 'Svar på melding';
@override
String attachmentLimitExceedError(int limit) =>
'Antall vedlegg oversteget, maks antall: $limit';
@override
String get slowModeOnLabel => 'Sakte modus PÅ';
@override
String get linkDisabledDetails =>
'Sende lenker er ikke lov i denne samtalen.';
@override
String get linkDisabledError => 'Lenker er deaktivert';
@override
String get viewLibrary => 'Se bibliotek';
@override
String unreadMessagesSeparatorText(int unreadCount) {
if (unreadCount == 1) {
return '1 ulest melding';
}
return '$unreadCount uleste meldinger';
}
}