Merge pull request #602 from GetStream/localization-ko-and-jp

feat(localization): support for Japanese and Korean
This commit is contained in:
Salvatore Giordano
2021-08-20 10:57:48 +02:00
committed by GitHub
18 changed files with 766 additions and 23 deletions
@@ -26,7 +26,8 @@ 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)
- [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)
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.
### Add dependency
@@ -64,6 +65,8 @@ class MyApp extends StatelessWidget {
Locale('fr'),
Locale('it'),
Locale('es'),
Locale('ja'),
Locale('ko'),
],
// Add GlobalStreamChatLocalizations.delegates
localizationsDelegates: GlobalStreamChatLocalizations.delegates,
@@ -133,6 +136,8 @@ Here is an example of how that would look like:
Locale('fr'),
Locale('it'),
Locale('es'),
Locale('ja'),
Locale('ko'),
],
// locales are the locales of the device
// supportedLocales are the app supported locales
@@ -175,6 +180,8 @@ Example:
<string>nb</string>
<string>fr</string>
<string>it</string>
<string>es</string>
<string>es</string>
<string>ja</string>
<string>ko</string>
</array>
```
@@ -142,9 +142,9 @@ class _GalleryFooterState extends State<GalleryFooter> {
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Text(
'${widget.currentPage + 1} '
'${context.translations.ofText} '
'${widget.totalPages}',
context.translations.galleryPaginationText(
currentPage: widget.currentPage,
totalPages: widget.totalPages),
style: galleryFooterThemeData.titleTextStyle,
),
],
@@ -296,8 +296,9 @@ abstract class Translations {
/// The text shown for "You"
String get youText;
/// The text shown for "Of"
String get ofText;
/// Gallery footer pagination text
String galleryPaginationText(
{required int currentPage, required int totalPages});
/// The text shown for "File"
String get fileText;
@@ -657,7 +658,9 @@ class DefaultTranslations implements Translations {
String get youText => 'You';
@override
String get ofText => 'of';
String galleryPaginationText(
{required int currentPage, required int totalPages}) =>
'${currentPage + 1} of $totalPages';
@override
String get fileText => 'File';
@@ -167,7 +167,7 @@ void main() {
expect(translations.withText, isNotNull);
expect(translations.inText, isNotNull);
expect(translations.youText, isNotNull);
expect(translations.ofText, isNotNull);
expect(translations.galleryPaginationText, isNotNull);
expect(translations.fileText, isNotNull);
expect(translations.replyToMessageLabel, isNotNull);
});
@@ -2,9 +2,9 @@
✅ Added
* Added support
for [Spanish](https://github.com/GetStream/stream-chat-flutter/blob/master/packages/stream_chat_localizations/lib/src/stream_chat_localizations_es.dart)
locale.
* Added support for [Spanish](https://github.com/GetStream/stream-chat-flutter/blob/master/packages/stream_chat_localizations/lib/src/stream_chat_localizations_es.dart) locale.
* Added support for [Korean](https://github.com/GetStream/stream-chat-flutter/blob/master/packages/stream_chat_localizations/lib/src/stream_chat_localizations_ko.dart) locale.
* Added support for [Japanese](https://github.com/GetStream/stream-chat-flutter/blob/master/packages/stream_chat_localizations/lib/src/stream_chat_localizations_ja.dart) locale.
🔄 Changed
@@ -13,7 +13,7 @@
- 'तस्वीरें' -> 'फ़ोटोज'
- 'बिता हुआ कल' -> 'कल'
- 'चैनल मौन है' -> 'चैनल म्यूट है'
## 1.0.2
* Updated `stream_chat_flutter` dependency
@@ -35,6 +35,8 @@ 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)
- [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)
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.
@@ -70,6 +72,8 @@ class MyApp extends StatelessWidget {
Locale('fr'),
Locale('it'),
Locale('es'),
Locale('ja'),
Locale('ko'),
],
// Add GlobalStreamChatLocalizations.delegates
localizationsDelegates: GlobalStreamChatLocalizations.delegates,
@@ -113,6 +117,8 @@ Example:
<string>fr</string>
<string>it</string>
<string>es</string>
<string>ja</string>
<string>ko</string>
</array>
```
@@ -374,7 +374,9 @@ class NnStreamChatLocalizations extends GlobalStreamChatLocalizations {
String get youText => 'You';
@override
String get ofText => 'of';
String galleryPaginationText(
{required int currentPage, required int totalPages}) =>
'$currentPage of $totalPages';
@override
String get fileText => 'File';
@@ -453,6 +455,9 @@ class MyApp extends StatelessWidget {
Locale('hi'),
Locale('fr'),
Locale('it'),
Locale('es'),
Locale('ja'),
Locale('ko'),
// Add support for additional 'nn' locale
Locale('nn'),
],
@@ -72,6 +72,9 @@ class MyApp extends StatelessWidget {
Locale('hi'),
Locale('fr'),
Locale('it'),
Locale('es'),
Locale('ja'),
Locale('ko'),
],
// Add GlobalStreamChatLocalizations.delegates
localizationsDelegates: GlobalStreamChatLocalizations.delegates,
@@ -97,6 +97,9 @@ class MyApp extends StatelessWidget {
Locale('hi'),
Locale('fr'),
Locale('it'),
Locale('es'),
Locale('ja'),
Locale('ko'),
],
// Add overridden "CustomStreamChatLocalizationsEn.delegate" along with
// "GlobalStreamChatLocalizations.delegates"
@@ -11,6 +11,10 @@ part 'stream_chat_localizations_fr.dart';
part 'stream_chat_localizations_it.dart';
part 'stream_chat_localizations_ja.dart';
part 'stream_chat_localizations_ko.dart';
part 'stream_chat_localizations_hi.dart';
/// The set of supported languages, as language code strings.
@@ -27,6 +31,8 @@ const kStreamChatSupportedLanguages = {
'fr',
'it',
'es',
'ja',
'ko'
};
/// Creates a [GlobalStreamChatLocalizations] instance for the given `locale`.
@@ -59,6 +65,10 @@ GlobalStreamChatLocalizations? getStreamChatTranslation(Locale locale) {
return const StreamChatLocalizationsIt();
case 'es':
return const StreamChatLocalizationsEs();
case 'ja':
return const StreamChatLocalizationsJa();
case 'ko':
return const StreamChatLocalizationsKo();
}
}
@@ -350,7 +350,9 @@ class StreamChatLocalizationsEn extends GlobalStreamChatLocalizations {
String get youText => 'You';
@override
String get ofText => 'of';
String galleryPaginationText(
{required int currentPage, required int totalPages}) =>
'${currentPage + 1} of $totalPages';
@override
String get fileText => 'File';
@@ -355,7 +355,9 @@ class StreamChatLocalizationsEs extends GlobalStreamChatLocalizations {
String get youText => 'Usted';
@override
String get ofText => 'de';
String galleryPaginationText(
{required int currentPage, required int totalPages}) =>
'${currentPage + 1} de $totalPages';
@override
String get fileText => 'Archivo';
@@ -207,7 +207,7 @@ class StreamChatLocalizationsFr extends GlobalStreamChatLocalizations {
@override
String togglePinUnpinText({required bool pinned}) {
if (pinned) return 'Décrocher de la conversation';
return 'Épingler à la discussion';
return 'Épingler à la conversation';
}
@override
@@ -354,7 +354,9 @@ class StreamChatLocalizationsFr extends GlobalStreamChatLocalizations {
String get youText => 'Vous';
@override
String get ofText => 'de';
String galleryPaginationText(
{required int currentPage, required int totalPages}) =>
'${currentPage + 1} de $totalPages';
@override
String get fileText => 'Fichier';
@@ -340,16 +340,18 @@ class StreamChatLocalizationsHi extends GlobalStreamChatLocalizations {
String get sendLabel => 'भेजें';
@override
String get withText => 'विद';
String get withText => 'विद'; //TODO: break?
@override
String get inText => 'इन';
String get inText => 'इन'; //TODO: break?
@override
String get youText => 'आप';
@override
String get ofText => 'ऑफ़';
String galleryPaginationText(
{required int currentPage, required int totalPages}) =>
'${currentPage + 1} ऑफ़ $totalPages';
@override
String get fileText => 'फ़ाइल';
@@ -351,7 +351,9 @@ Il file è troppo grande per essere caricato. Il limite è di $limitInMB MB.''';
String get youText => 'te';
@override
String get ofText => 'di';
String galleryPaginationText(
{required int currentPage, required int totalPages}) =>
'${currentPage + 1} di $totalPages';
@override
String get fileText => 'file';
@@ -0,0 +1,349 @@
part of 'stream_chat_localizations.dart';
/// The translations for Japanese (`ja`).
class StreamChatLocalizationsJa extends GlobalStreamChatLocalizations {
/// Create an instance of the translation bundle for Japanese.
const StreamChatLocalizationsJa({String localeName = 'ja'})
: super(localeName: localeName);
@override
String get launchUrlError => 'URLの起動ができません';
@override
String get loadingUsersError => 'ユーザーの読み込みができません';
@override
String get noUsersLabel => '現在、ユーザーはいません。';
@override
String get retryLabel => '再試行';
@override
String get userLastOnlineText => '前回のオンライン';
@override
String get userOnlineText => 'オンライン';
@override
String userTypingText(Iterable<User> users) {
if (users.isEmpty) return '';
final first = users.first;
if (users.length == 1) {
return '${first.name}が入力しています';
}
return '${first.name}${users.length - 1}人が入力しています';
}
@override
String get threadReplyLabel => 'スレッド返信';
@override
String get onlyVisibleToYouText => '自分しか見れません';
@override
String threadReplyCountText(int count) => '$countつのスレッド返信';
@override
String attachmentsUploadProgressText({
required int remaining,
required int total,
}) =>
'$remaining/${total}mbのアップロード中 。。。';
@override
String pinnedByUserText({
required User pinnedBy,
required User currentUser,
}) {
final pinnedByCurrentUser = currentUser.id == pinnedBy.id;
if (pinnedByCurrentUser) return 'あなたのピン';
return '${pinnedBy.name}のピン';
}
@override
String get emptyMessagesText => '現在、メッセージはありません。';
@override
String get genericErrorText => 'エラーが発生しました';
@override
String get loadingMessagesError => 'メッセージの読み込みエラー';
@override
String resultCountText(int count) => '$count件の結果';
@override
String get messageDeletedText => 'このメッセージは削除されました。';
@override
String get messageDeletedLabel => 'メッセージ削除';
@override
String get messageReactionsLabel => 'メッセージのリアクション';
@override
String get emptyChatMessagesText => 'チャットがありませんが。。。';
@override
String threadSeparatorText(int replyCount) => '$replyCount件の返信';
@override
String get connectedLabel => '接続しています';
@override
String get disconnectedLabel => '接続切れ';
@override
String get reconnectingLabel => '再接続中。。。';
@override
String get alsoSendAsDirectMessageLabel => 'ダイレクトメッセージでも送信';
@override
String get addACommentOrSendLabel => 'コメントの追加や送信';
@override
String get searchGifLabel => 'GIFの検索';
@override
String get writeAMessageLabel => 'メッセージを書く';
@override
String get instantCommandsLabel => 'インスタントコマンド';
@override
String fileTooLargeAfterCompressionError(double limitInMB) =>
'ファイルのサイズが大きすぎてアップロードできません。'
'ファイルサイズの制限は${limitInMB}MBです。'
'圧縮してみましたが、十分ではありませんでした。';
@override
String fileTooLargeError(double limitInMB) =>
'ファイルが大きすぎてアップロードできません。ファイルサイズの制限は${limitInMB}MBです。';
@override
String emojiMatchingQueryText(String query) => '「"$query"」とお揃いの絵文字';
@override
String get addAFileLabel => 'ファイルの追加';
@override
String get photoFromCameraLabel => 'カメラからの写真';
@override
String get uploadAFileLabel => 'ファイルのアップロード';
@override
String get uploadAPhotoLabel => '写真のアップロード';
@override
String get uploadAVideoLabel => '動画のアップロード';
@override
String get videoFromCameraLabel => 'カメラからの動画';
@override
String get okLabel => 'よし';
@override
String get somethingWentWrongError => 'エラーが発生しました';
@override
String get addMoreFilesLabel => 'ファイルの追加';
@override
String get enablePhotoAndVideoAccessMessage => 'お友達と共有できるように、写真'
'\nやビデオへのアクセスを有効にしてください。';
@override
String get allowGalleryAccessMessage => 'ギャラリーへのアクセスを許可する';
@override
String get flagMessageLabel => 'メッセージをフラグする';
@override
String get flagMessageQuestion => 'このメッセージのコピーを'
'\nモデレーターに送って、さらに調査してもらいますか?';
@override
String get flagLabel => 'フラグする';
@override
String get cancelLabel => 'キャンセル';
@override
String get flagMessageSuccessfulLabel => 'メッセージにフラグが付けられました';
@override
String get flagMessageSuccessfulText => 'このメッセージはモデレーターに報告されました。';
@override
String get deleteLabel => '削除';
@override
String get deleteMessageLabel => 'メッセージを削除する ';
@override
String get deleteMessageQuestion => 'このメッセージ'
'\nを完全に削除してもよろしいですか?';
@override
String get operationCouldNotBeCompletedText => '操作を完了できませんでした。';
@override
String get replyLabel => '返信';
@override
String togglePinUnpinText({required bool pinned}) {
if (pinned) return '会話のピンを外す';
return '会話にピンする';
}
@override
String toggleDeleteRetryDeleteMessageText({required bool isDeleteFailed}) {
if (isDeleteFailed) return 'メッセージの削除を再試行する';
return 'メッセージを削除する';
}
@override
String get copyMessageLabel => 'メッセージをコピーする';
@override
String get editMessageLabel => 'メッセージを編集する';
@override
String toggleResendOrResendEditedMessage({required bool isUpdateFailed}) {
if (isUpdateFailed) return '編集したメッセージを再送する';
return '再送';
}
@override
String get photosLabel => '写真';
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 '今日';
} else if (date == yesterday) {
return '昨日';
} else {
return '${Jiffy(date).MMMd}';
}
}
@override
String sentAtText({required DateTime date, required DateTime time}) =>
'${_getDay(date)}${Jiffy(time.toLocal()).format('HH:mm')}に送信しました ';
@override
String get todayLabel => '今日';
@override
String get yesterdayLabel => '昨日';
@override
String get channelIsMutedText => 'チャンネルが無音されています';
@override
String get noTitleText => 'タイトル無し';
@override
String get letsStartChattingLabel => 'チャットを始めよう!';
@override
String get sendingFirstMessageLabel => '友人に最初のメッセージを送りましょうか?';
@override
String get startAChatLabel => 'チャットを開始する';
@override
String get loadingChannelsError => 'チャネルのロード中にエラーが発生しました';
@override
String get deleteConversationLabel => '会話を削除する';
@override
String get deleteConversationQuestion => '本当に会話を削除しますか?';
@override
String get streamChatLabel => 'ストリームチャット';
@override
String get searchingForNetworkText => 'ネットワークを検索中';
@override
String get offlineLabel => 'オフライン。。。';
@override
String get tryAgainLabel => '再試行する';
@override
String membersCountText(int count) => '$count人のメンバー';
@override
String watchersCountText(int count) => '$count人がオンライン';
@override
String get viewInfoLabel => '情報を見る';
@override
String get leaveGroupLabel => 'グループを離れる';
@override
String get leaveLabel => '離れる';
@override
String get leaveConversationLabel => '会話を離れる';
@override
String get leaveConversationQuestion => '本当に会話を離れますか?';
@override
String get showInChatLabel => 'チャットで表示';
@override
String get saveImageLabel => '画像を保存';
@override
String get saveVideoLabel => 'ビデオを保存';
@override
String get uploadErrorLabel => 'アップロードエラー';
@override
String get giphyLabel => 'ギフィー';
@override
String get shuffleLabel => 'ミックス';
@override
String get sendLabel => '送信';
@override
String get withText => '';
@override
String get inText => '';
// This is the word for 'customer' or 'user' because saying 'you' directly
//is too informal and rude
@override
String get youText => 'あなた';
@override
String galleryPaginationText({
required int currentPage,
required int totalPages,
}) =>
'${currentPage + 1} / $totalPages';
@override
String get fileText => 'ファイル';
@override
String get replyToMessageLabel => 'メッセージに返信';
}
@@ -0,0 +1,347 @@
part of 'stream_chat_localizations.dart';
/// The translations for Korean (`ko`).
class StreamChatLocalizationsKo extends GlobalStreamChatLocalizations {
/// Create an instance of the translation bundle for Korean.
const StreamChatLocalizationsKo({String localeName = 'ko'})
: super(localeName: localeName);
@override
String get launchUrlError => 'URL을 시작할 수 없습니다';
@override
String get loadingUsersError => '사용자를 로드하는 중 오류 발생';
@override
String get noUsersLabel => '현재 사용자가 없습니다';
@override
String get retryLabel => '다시 시도하십시오';
@override
String get userLastOnlineText => '마지막 온라인입니다';
@override
String get userOnlineText => '온라인';
@override
String userTypingText(Iterable<User> users) {
if (users.isEmpty) return '';
final first = users.first;
if (users.length == 1) {
return '${first.name} 타이핑중';
}
return '${first.name}하고 ${users.length - 1}명 타이핑중';
}
@override
String get threadReplyLabel => '스레드 응답입니다';
@override
String get onlyVisibleToYouText => '당신만 볼 수 있습니다';
@override
String threadReplyCountText(int count) => '$count스레드 답장';
@override
String attachmentsUploadProgressText({
required int remaining,
required int total,
}) =>
'$remaining/${total}mb를 업로드중...';
@override
String pinnedByUserText({
required User pinnedBy,
required User currentUser,
}) {
final pinnedByCurrentUser = currentUser.id == pinnedBy.id;
if (pinnedByCurrentUser) return '당신의 핀';
return '${pinnedBy.name}의 핀';
}
@override
String get emptyMessagesText => '현재 메시지가 없습니다';
@override
String get genericErrorText => '뭔가 잘못됐습니다';
@override
String get loadingMessagesError => '메시지를 로드하는 동안 오류가 발생했습니다';
@override
String resultCountText(int count) => '$count개의 결과';
@override
String get messageDeletedText => '이 메시지는 삭제되었습니다.';
@override
String get messageDeletedLabel => '메시지가 삭제되었습니다';
@override
String get messageReactionsLabel => '메시지에 대한 응답';
@override
String get emptyChatMessagesText => '아직 채팅이 없습니다...';
@override
String threadSeparatorText(int replyCount) => '$replyCount개의 답장';
@override
String get connectedLabel => '연결중';
@override
String get disconnectedLabel => '연결이 끊겼습니다';
@override
String get reconnectingLabel => '다시 연결하는 중...';
@override
String get alsoSendAsDirectMessageLabel => '다이렉트 메시지로도 보냅니다';
@override
String get addACommentOrSendLabel => '주석을 추가하거나 보냅니다';
@override
String get searchGifLabel => 'GIF 검색';
@override
String get writeAMessageLabel => '메시지 쓰기';
@override
String get instantCommandsLabel => '인스턴트 커맨즈';
@override
String fileTooLargeAfterCompressionError(double limitInMB) =>
'파일이 너무 커서 업로드할 수 없습니다. '
'파일 크기 제한은 ${limitInMB}MB입니다. '
'우리는 압축해 보았지만 충분하지 않았습니다.';
@override
String fileTooLargeError(double limitInMB) =>
'파일이 너무 커서 업로드할 수 없습니다. 파일 크기 제한은 ${limitInMB}MB입니다.';
@override
String emojiMatchingQueryText(String query) => '"$query"과 일치하는 이모티콘입니다';
@override
String get addAFileLabel => '파일을 추가함';
@override
String get photoFromCameraLabel => '카메라에서 찍은 사진';
@override
String get uploadAFileLabel => '파일을 업로드함';
@override
String get uploadAPhotoLabel => '사진을 업로드함';
@override
String get uploadAVideoLabel => '비디오를 업로드함';
@override
String get videoFromCameraLabel => '카메라의 비디오.';
@override
String get okLabel => '확인';
@override
String get somethingWentWrongError => '뭔가 잘못됐습느다';
@override
String get addMoreFilesLabel => '파일을 추가함';
@override
String get enablePhotoAndVideoAccessMessage => '친구와 공유할 수 있도록 사진과'
'\n동영상에 액세스할 수 있도록 설정하십시오.';
@override
String get allowGalleryAccessMessage => '갤러리에 대한 액세스를 허용합니다';
@override
String get flagMessageLabel => ' 메시지를 플래그함';
@override
String get flagMessageQuestion => '추가 조사를 위해 진행자에게 이 메시지의 복사본을 전송하시겠습니까?';
@override
String get flagLabel => '플래그함';
@override
String get cancelLabel => '취소';
@override
String get flagMessageSuccessfulLabel => '메시지에 플래그가 지정되었습니다';
@override
String get flagMessageSuccessfulText => '메시지가 진행자에게 보고되었습니다.';
@override
String get deleteLabel => '삭제';
@override
String get deleteMessageLabel => '메시지를 삭제합니다.';
@override
String get deleteMessageQuestion => '이 메시지를 완전히 삭제하시겠습니까?';
@override
String get operationCouldNotBeCompletedText => '작업을 완료할 수 없습니다.';
@override
String get replyLabel => '답글';
@override
String togglePinUnpinText({required bool pinned}) {
if (pinned) return '대화의 핀을 분리합니다';
return '대화에 고정합니다';
}
@override
String toggleDeleteRetryDeleteMessageText({required bool isDeleteFailed}) {
if (isDeleteFailed) return '메시지 삭제를 다시 시도합니다';
return '메시지를 삭제합니다';
}
@override
String get copyMessageLabel => '메시지를 복사합니다.';
@override
String get editMessageLabel => '메시지를 편집합니다.';
@override
String toggleResendOrResendEditedMessage({required bool isUpdateFailed}) {
if (isUpdateFailed) return '편집된 메시지를 다시 보냅니다.';
return '다시 보냅니다.';
}
@override
String get photosLabel => '사진';
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 '오늘';
} else if (date == yesterday) {
return '어제';
} else {
return '${Jiffy(date).MMMd}';
}
}
@override
String sentAtText({required DateTime date, required DateTime time}) =>
'${_getDay(date)} ${Jiffy(time.toLocal()).format('HH:mm')}에 보냈습니다';
@override
String get todayLabel => '오늘';
@override
String get yesterdayLabel => '어제';
@override
String get channelIsMutedText => '채널이 음소거됩니다.';
@override
String get noTitleText => '제목이 없습니다.';
@override
String get letsStartChattingLabel => '채팅 시작해요!';
@override
String get sendingFirstMessageLabel => '친구에게 첫 메시지를 보내 볼까요?';
@override
String get startAChatLabel => '대화를 시작합니다.';
@override
String get loadingChannelsError => '채널을 로드하는 동안 오류가 발생했습니다.';
@override
String get deleteConversationLabel => '대화를 삭제합니다.';
@override
String get deleteConversationQuestion => '대화를 삭제하시겠습니까?';
@override
String get streamChatLabel => '스트림 채팅';
@override
String get searchingForNetworkText => '네트워크를 검색하는 중입니다.';
@override
String get offlineLabel => '오프라인...';
@override
String get tryAgainLabel => '다시 시도합니다';
@override
String membersCountText(int count) => '$count명';
@override
String watchersCountText(int count) => '$count명이 온라인';
@override
String get viewInfoLabel => '정보를 보기';
@override
String get leaveGroupLabel => '그룹을 떠납니다.';
@override
String get leaveLabel => '떠나다';
@override
String get leaveConversationLabel => '대화에서 떠납니다.';
@override
String get leaveConversationQuestion => '정말 이 대화에서 나가시겠습니까?';
@override
String get showInChatLabel => '채팅에 표시합니다.';
@override
String get saveImageLabel => '이미지를 저장합니다.';
@override
String get saveVideoLabel => '비디오를 저장합니다.';
@override
String get uploadErrorLabel => '업로드 오류';
@override
String get giphyLabel => '지피';
@override
String get shuffleLabel => '섞기';
@override
String get sendLabel => '보내기';
@override
String get withText => '함께';
@override
String get inText => '';
// This is the word for 'customer' or 'user' because saying 'you' directly
// is too informal and rude
@override
String get youText => '당신';
@override
String galleryPaginationText(
{required int currentPage, required int totalPages}) =>
'${currentPage + 1} / $totalPages';
//3 / 11
@override
String get fileText => '파일';
@override
String get replyToMessageLabel => '메시지에 회신합니다.';
}
@@ -174,7 +174,7 @@ void main() {
expect(localizations.withText, isNotNull);
expect(localizations.inText, isNotNull);
expect(localizations.youText, isNotNull);
expect(localizations.ofText, isNotNull);
expect(localizations.galleryPaginationText, isNotNull);
expect(localizations.fileText, isNotNull);
expect(localizations.replyToMessageLabel, isNotNull);
});