diff --git a/app/src/main/java/com/jerboa/Utils.kt b/app/src/main/java/com/jerboa/Utils.kt index 935bfa0c8..91e6d72f9 100644 --- a/app/src/main/java/com/jerboa/Utils.kt +++ b/app/src/main/java/com/jerboa/Utils.kt @@ -897,7 +897,7 @@ fun nsfwCheck(postView: PostView): Boolean { @Throws(IOException::class) fun saveBitmap( - context: Context, + ctx: Context, inputStream: InputStream, mimeType: String?, displayName: String, @@ -908,7 +908,7 @@ fun saveBitmap( put(MediaStore.MediaColumns.RELATIVE_PATH, Environment.DIRECTORY_PICTURES + "/Jerboa") } - val resolver = context.contentResolver + val resolver = ctx.contentResolver var uri: Uri? = null try { @@ -958,31 +958,34 @@ fun Modifier.onAutofill(vararg autofillType: AutofillType, onFill: (String) -> U /** * Converts a scalable pixel (sp) to an actual pixel (px) */ -fun convertSpToPx(sp: TextUnit, context: Context): Int { - return (sp.value * context.resources.displayMetrics.scaledDensity).toInt() +fun convertSpToPx(sp: TextUnit, ctx: Context): Int { + return (sp.value * ctx.resources.displayMetrics.scaledDensity).toInt() } /** * Returns localized Strings for SortingType Enum */ -fun getLocalizedSortingTypeName(context: Context, sortingType: SortType): String { +fun getLocalizedSortingTypeName(ctx: Context, sortingType: SortType): String { val returnString = when (sortingType) { - SortType.Active -> context.getString(R.string.sorttype_active) - SortType.Hot -> context.getString(R.string.sorttype_hot) - SortType.New -> context.getString(R.string.sorttype_new) - SortType.Old -> context.getString(R.string.sorttype_old) - SortType.TopDay -> context.getString(R.string.sorttype_topday) - SortType.TopWeek -> context.getString(R.string.sorttype_topweek) - SortType.TopMonth -> context.getString(R.string.sorttype_topmonth) - SortType.TopYear -> context.getString(R.string.sorttype_topyear) - SortType.TopAll -> context.getString(R.string.sorttype_topall) - SortType.MostComments -> context.getString(R.string.sorttype_mostcomments) - SortType.NewComments -> context.getString(R.string.sorttype_newcomments) + SortType.Active -> ctx.getString(R.string.sorttype_active) + SortType.Hot -> ctx.getString(R.string.sorttype_hot) + SortType.New -> ctx.getString(R.string.sorttype_new) + SortType.Old -> ctx.getString(R.string.sorttype_old) + SortType.TopDay -> ctx.getString(R.string.sorttype_topday) + SortType.TopWeek -> ctx.getString(R.string.sorttype_topweek) + SortType.TopMonth -> ctx.getString(R.string.sorttype_topmonth) + SortType.TopYear -> ctx.getString(R.string.sorttype_topyear) + SortType.TopAll -> ctx.getString(R.string.sorttype_topall) + SortType.MostComments -> ctx.getString(R.string.sorttype_mostcomments) + SortType.NewComments -> ctx.getString(R.string.sorttype_newcomments) } return returnString } +/** + * Returns localized Strings for UserTab Enum + */ fun getLocalizedStringForUserTab(ctx: Context, tab: UserTab): String { val returnString = when (tab) { UserTab.About -> ctx.getString(R.string.person_profile_activity_about) @@ -991,3 +994,39 @@ fun getLocalizedStringForUserTab(ctx: Context, tab: UserTab): String { } return returnString } + +/** + * Returns localized Strings for ListingType Enum + */ +fun getLocalizedListingTypeName(ctx: Context, listingType: ListingType): String { + val returnString = when (listingType) { + ListingType.All -> ctx.getString(R.string.home_all) + ListingType.Local -> ctx.getString(R.string.home_local) + ListingType.Subscribed -> ctx.getString(R.string.home_subscribed) + } + return returnString +} + +/** + * Returns localized Strings for CommentSortType Enum + */ +fun getLocalizedCommentSortTypeName(ctx: Context, commentSortType: CommentSortType): String { + val returnString = when (commentSortType) { + CommentSortType.Hot -> ctx.getString(R.string.sorttype_hot) + CommentSortType.New -> ctx.getString(R.string.sorttype_new) + CommentSortType.Old -> ctx.getString(R.string.sorttype_old) + CommentSortType.Top -> ctx.getString(R.string.dialogs_top) + } + return returnString +} + +/** + * Returns localized Strings for UnreadOrAll Enum + */ +fun getLocalizedUnreadOrAllName(ctx: Context, unreadOrAll: UnreadOrAll): String { + val returnString = when (unreadOrAll) { + UnreadOrAll.Unread -> ctx.getString(R.string.dialogs_unread) + UnreadOrAll.All -> ctx.getString(R.string.dialogs_all) + } + return returnString +} diff --git a/app/src/main/java/com/jerboa/ui/components/community/Community.kt b/app/src/main/java/com/jerboa/ui/components/community/Community.kt index 376fe70e1..e348e7780 100644 --- a/app/src/main/java/com/jerboa/ui/components/community/Community.kt +++ b/app/src/main/java/com/jerboa/ui/components/community/Community.kt @@ -9,6 +9,7 @@ import androidx.compose.material3.* import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.navigation.NavController @@ -18,6 +19,7 @@ import com.jerboa.datatypes.CommunityView import com.jerboa.datatypes.SortType import com.jerboa.datatypes.SubscribedType import com.jerboa.datatypes.sampleCommunityView +import com.jerboa.getLocalizedSortingTypeName import com.jerboa.ui.components.common.DefaultBackButton import com.jerboa.ui.components.common.IconAndTextDrawerItem import com.jerboa.ui.components.common.LargerCircularIcon @@ -207,13 +209,14 @@ fun CommunityHeaderTitle( communityName: String, selectedSortType: SortType, ) { + val ctx = LocalContext.current Column { Text( text = communityName, style = MaterialTheme.typography.titleLarge, ) Text( - text = selectedSortType.toString(), + text = getLocalizedSortingTypeName(ctx, selectedSortType), style = MaterialTheme.typography.titleMedium, ) } diff --git a/app/src/main/java/com/jerboa/ui/components/home/Home.kt b/app/src/main/java/com/jerboa/ui/components/home/Home.kt index b00e36716..2cc96b453 100644 --- a/app/src/main/java/com/jerboa/ui/components/home/Home.kt +++ b/app/src/main/java/com/jerboa/ui/components/home/Home.kt @@ -58,6 +58,7 @@ import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.navigation.NavController @@ -74,6 +75,8 @@ import com.jerboa.datatypes.api.MyUserInfo import com.jerboa.datatypes.samplePersonSafe import com.jerboa.db.Account import com.jerboa.db.AccountViewModel +import com.jerboa.getLocalizedListingTypeName +import com.jerboa.getLocalizedSortingTypeName import com.jerboa.ui.components.common.IconAndTextDrawerItem import com.jerboa.ui.components.common.LargerCircularIcon import com.jerboa.ui.components.common.ListingTypeOptionsDialog @@ -439,13 +442,14 @@ fun HomeHeaderTitle( selectedSortType: SortType, selectedListingType: ListingType, ) { + val ctx = LocalContext.current Column { Text( - text = selectedListingType.toString(), + text = getLocalizedListingTypeName(ctx, selectedListingType), style = MaterialTheme.typography.titleLarge, ) Text( - text = selectedSortType.toString(), + text = getLocalizedSortingTypeName(ctx, selectedSortType), style = MaterialTheme.typography.titleSmall, ) } diff --git a/app/src/main/java/com/jerboa/ui/components/inbox/Inbox.kt b/app/src/main/java/com/jerboa/ui/components/inbox/Inbox.kt index a21188b5e..ba81ae06f 100644 --- a/app/src/main/java/com/jerboa/ui/components/inbox/Inbox.kt +++ b/app/src/main/java/com/jerboa/ui/components/inbox/Inbox.kt @@ -18,11 +18,13 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue +import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import androidx.navigation.NavController import androidx.navigation.compose.rememberNavController import com.jerboa.R import com.jerboa.UnreadOrAll +import com.jerboa.getLocalizedUnreadOrAllName import com.jerboa.ui.components.common.DefaultBackButton import com.jerboa.ui.components.common.UnreadOrAllOptionsDialog @@ -79,6 +81,7 @@ fun InboxHeader( @Composable fun InboxHeaderTitle(selectedUnreadOrAll: UnreadOrAll, unreadCount: Int? = null) { var title = stringResource(R.string.inbox_inbox) + val ctx = LocalContext.current if (unreadCount != null && unreadCount > 0) { title = "$title ($unreadCount)" } @@ -88,7 +91,7 @@ fun InboxHeaderTitle(selectedUnreadOrAll: UnreadOrAll, unreadCount: Int? = null) style = MaterialTheme.typography.titleLarge, ) Text( - text = selectedUnreadOrAll.toString(), + text = getLocalizedUnreadOrAllName(ctx, selectedUnreadOrAll), style = MaterialTheme.typography.titleMedium, ) } diff --git a/app/src/main/java/com/jerboa/ui/components/post/PostActivity.kt b/app/src/main/java/com/jerboa/ui/components/post/PostActivity.kt index 950ba359d..d87957526 100644 --- a/app/src/main/java/com/jerboa/ui/components/post/PostActivity.kt +++ b/app/src/main/java/com/jerboa/ui/components/post/PostActivity.kt @@ -45,6 +45,7 @@ import com.jerboa.datatypes.CommentSortType import com.jerboa.db.AccountViewModel import com.jerboa.getCommentParentId import com.jerboa.getDepthFromComment +import com.jerboa.getLocalizedCommentSortTypeName import com.jerboa.isModerator import com.jerboa.ui.components.comment.ShowCommentContextButtons import com.jerboa.ui.components.comment.commentNodeItems @@ -63,13 +64,15 @@ import com.jerboa.ui.components.post.edit.PostEditViewModel fun CommentsHeaderTitle( selectedSortType: CommentSortType, ) { + val ctx = LocalContext.current Column { Text( text = stringResource(R.string.post_activity_comments), style = MaterialTheme.typography.titleLarge, ) Text( - text = selectedSortType.toString(), + + text = getLocalizedCommentSortTypeName(ctx, selectedSortType), style = MaterialTheme.typography.titleSmall, ) } diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml new file mode 100644 index 000000000..c27893d5b --- /dev/null +++ b/app/src/main/res/values-ja/strings.xml @@ -0,0 +1,291 @@ + + ジェルボア + コメントへ行く + %1$sへ行く + 原文を見る + 元リンクをコピー + コメントを報告 + 編集 + 復元 + 削除 + %1$s件の追加返信 + 投稿を見る + 元の会話を表示 + *管理者が削除* + *投稿者が削除* + 編集 + コメントを入力 + 戻る + %1$sへ行く + 原文を見る + リンクをコピー + コメントを報告 + %1$sをブロック + 返信 + 戻る + コメントを入力 + %1$sへ行く + 原文を見る + コメントを報告 + %1$sをブロック + 作成 + 1日のユーザー%1$s名 + 1週間のユーザー%1$s名 + 1ヶ月のユーザー%1$名 + 6ヶ月のユーザー%1$s名 + %1$sの投稿 + %1$sのコメント + 今日の人気順 + 今週の人気順 + 今月の人気順 + 今年の人気順 + すべての期間の人気順 + 登録済み + ローカル + すべて + 活発 + 人気 + 新着 + コメントが多い順 + コメントが新しい順 + 人気 + 未読 + 確定 + リンクを挿入 + テキスト + リンク + 取り消す + 確定 + 画像をアップロード + %1$s %2$s 前 + 検索... + 戻る + 1ヶ月のユーザー%1$s名 + 参加済み + 登録 + 検討中 + 戻る + 再読み込み + コミュニティ情報 + コミュニティをブロック + 1ヶ月のユーザー%1$s名 + 登録済み + ローカル + すべて + 保存済み + コミュニティ一覧 + ユーザー + 受信トレイ + 設定 + 登録コミュニティ + アカウントを連携 + アカウントを%1$s/%2$sに変更 + サインアウト + メニュー + 再読み込み + 投稿表示モード + サイト情報 + 戻る + 受信トレイ + パスワード + サーバー + 例: lemmy.ml + Eメールまたはユーザー名 + ログイン + 戻る + 参加 + 投稿%1$s件 + コメント%1$s件 + 戻る + ユーザーをブロック + ユーザーを報告 + 管理担当 + 投稿を作成 + 閉じる + お勧めタイトルをコピー: %1$s + コミュニティ + タイトルを入力.... + 投稿を編集 + 閉じる + 本文 + コメント + コメント%1$s件 + (新着 %1$s 件) + コメント%1$s件 + %1$sへ行く + リンクをコピー + 元リンクをコピー + 投稿を報告 + %1$sをブロック + 編集 + 復元 + 削除 + "受信者" + "送信者" + 返信 + 戻る + メッセージを入力 + 報告 + 戻る + 理由を入力 + このアプリについて + アプリ ニュース + バージョン %1$s + サポート + バグ追跡 + 開発者Matrixチャットルーム + ジェルボア開発に寄付する + c/jerboaに参加する + Mastodonアカウントをフォロー + オープンソース + ソースコード + "ジェルボアは自由を強調する、オープンソースソフトです。" + GNU Affero General Public License v3.0ライセンス契約にて提供されております。 + 今のアバターを外す + 呼び名 + プロフィール紹介 + Eメール + Matrix ユーザー名 + アバター + バナー + すべて + ローカル + 登録済み + 表示タイプの既定 + 活発 + 人気 + 新しい + 古い + 日トップ + 週トップ + 月トップ + 年トップ + 全トップ + コメント多 + コメント新 + 表示順の既定 + NSFW(閲覧注意)を表示 + アバターを表示 + 既読投稿を表示 + Bot アカウント + Botアカウントを表示 + スコアを表示 + 新着投稿を通知する + 通知をEメールで送る + 設定を保存 + アカウント設定 + 外見設定 + 文字サイズ: %1$s + テーマ + 端末 + 端末(黒) + 明るい + 暗い + + テーマ色 + 投稿外見 + カード + 小さめカード + リスト + ナビゲーションバーを表示 + カスタムタブを使う + 私的カスタムタブを使う + 設定 + 外見設定 + %1$s 設定 + アプリについて + %1$sをブロックしました + 元リンクがコピーされました + %1$sをブロックしました + 先にログインしてください + ログインが誤っています + %1$sはLemmyサーバーではありません + 報告作成完了 + ソーシャル + · + "in " + 折りたたんだコメントのコンテンツを表示 + 元リンクをコピーしました + 元リンクをコピーしました + リンクをコピーしました + 元リンクをコピーしました + %1$sをブロック + 元リンクをコピー + 追加オプションを表示 + 追加オプションを非表示 + ホームへ行く + 検索へ行く + ブックマークへ行く + プロフィールへ行く + 受信トレイへ行く + 投稿は削除されています + ブックマークに入れる + ブックマークから外す + このコメントに返信する + 追加オプションを表示 + 画像プレビューをアップロードしました + コメント編集を保存 + 返信を送る + 並び替え + 投稿を作成 + コミュニティアイコン + 確定 + リストからコミュニティを選択 + コメントへ行く + 既読済みにする + 未読にする + コメントを保存 + コメント保存を取り消し + 返信へ行く + リストフィルターを選択 + 並び替え順を選択 + 受信トレイフィルターを選択 + すべてを既読にする + プレビュー表示 + リンクを挿入 + 画像を挿入 + 太字フォーマット + 斜体フォーマット + 引用を挿入 + リストを挿入 + ヘッダーを挿入 + コードを挿入 + 取り消し線フォーマット + 下付き文字フォーマット + 上付き文字フォーマット + モデレーター + 管理者 + 禁止ユーザー + アバター画像を見る + バナー画像を見る + コミュニティーに行く + ローカルのお勧め + コミュニティ内にお勧め + 凍結 + 削除済み + 投稿に返信 + メッセージに返信 + 投票をトグル + 戻る + ユーザー概要 + ポスト + コメント + 活発 + 人気 + 新しい + 古い + 日トップ + 週トップ + 月トップ + 年トップ + 全トップ + コメント多 + コメント新 + ホーム + 検索 + 受信トレイ + 保存 + ユーザー + コメントでアクションバーを表示 + リスト表示形式で投票矢印を表示 + \ No newline at end of file