From d20a09cf14fca96e93da224f7188b7bb39097dd8 Mon Sep 17 00:00:00 2001 From: BluewhaleYF Date: Sun, 11 Oct 2026 13:22:36 +0800 Subject: [PATCH 1/7] :lipstick: Rework the achievements list on the progress page Drop the per-item cards in favour of a flat list separated by thin dividers, and remove the per-item progress bar so the overall progress card is the only bar left. Each achievement now keeps its own progress on the right: a plain count for regular achievements, and a small "Level x/y" badge beside the title for series achievements, with the completion check pinned to the far right. Flatten the search field by setting elevation to 0. --- lib/accounts/screens/progress.dart | 256 +++++++++++++---------------- 1 file changed, 117 insertions(+), 139 deletions(-) diff --git a/lib/accounts/screens/progress.dart b/lib/accounts/screens/progress.dart index a0f7c8096..e5038a257 100644 --- a/lib/accounts/screens/progress.dart +++ b/lib/accounts/screens/progress.dart @@ -467,6 +467,7 @@ class _AchievementsTabState extends ConsumerState<_AchievementsTab> { @override Widget build(BuildContext context) { + final theme = Theme.of(context); final achievementsAsync = ref.watch(achievementsProvider); final statsAsync = ref.watch(achievementStatsProvider); @@ -487,6 +488,7 @@ class _AchievementsTabState extends ConsumerState<_AchievementsTab> { child: SearchBar( controller: _searchController, hintText: 'searchAchievements'.tr(), + elevation: const WidgetStatePropertyAll(0), leading: const Icon(Symbols.search), padding: WidgetStatePropertyAll( EdgeInsets.symmetric(horizontal: 24), @@ -526,20 +528,32 @@ class _AchievementsTabState extends ConsumerState<_AchievementsTab> { ) else SliverPadding( - padding: const EdgeInsets.all(16), + padding: const EdgeInsets.only(top: 8), sliver: SliverList.separated( itemCount: _searchResults!.length, - separatorBuilder: (context, index) => const Gap(12), + separatorBuilder: (context, index) => Divider( + height: 1, + thickness: 1, + indent: 16, + endIndent: 16, + color: theme.colorScheme.outlineVariant.withOpacity(0.5), + ), itemBuilder: (context, index) => _AchievementCard(achievement: _searchResults![index]), ), ) else SliverPadding( - padding: const EdgeInsets.all(16), + padding: const EdgeInsets.only(top: 8), sliver: SliverList.separated( itemCount: achievements.length, - separatorBuilder: (context, index) => const Gap(12), + separatorBuilder: (context, index) => Divider( + height: 1, + thickness: 1, + indent: 16, + endIndent: 16, + color: theme.colorScheme.outlineVariant.withOpacity(0.5), + ), itemBuilder: (context, index) => _AchievementCard(achievement: achievements[index]), ), @@ -820,164 +834,128 @@ class _AchievementCard extends StatelessWidget { @override Widget build(BuildContext context) { final theme = Theme.of(context); - final progress = achievement.targetCount > 0 - ? achievement.progressCount / achievement.targetCount - : 0.0; final reward = achievement.reward; - return Card( - margin: EdgeInsets.zero, - elevation: 0, - color: theme.colorScheme.surfaceContainerLow, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(16), - side: BorderSide(color: theme.colorScheme.outlineVariant), - ), - child: InkWell( - borderRadius: BorderRadius.circular(16), - onTap: () => _showAchievementDetails(context), - child: Padding( - padding: const EdgeInsets.all(16), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( + return InkWell( + onTap: () => _showAchievementDetails(context), + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 18), + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Container( + width: 44, + height: 44, + decoration: BoxDecoration( + color: achievement.isCompleted + ? theme.colorScheme.primary.withOpacity(0.15) + : theme.colorScheme.surfaceContainerHigh, + shape: BoxShape.circle, + ), + child: Icon( + _getAchievementIcon(achievement.icon), + size: 22, + color: achievement.isCompleted + ? theme.colorScheme.primary + : theme.colorScheme.onSurfaceVariant, + ), + ), + const Gap(16), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, children: [ - Container( - width: 48, - height: 48, - decoration: BoxDecoration( - color: achievement.isCompleted - ? theme.colorScheme.primary.withOpacity(0.2) - : theme.colorScheme.surfaceContainerHigh, - shape: BoxShape.circle, - ), - child: Icon( - _getAchievementIcon(achievement.icon), - size: 24, - color: achievement.isCompleted - ? theme.colorScheme.primary - : theme.colorScheme.onSurfaceVariant, - ), - ), - const Gap(8), - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( + Row( + children: [ + Flexible( + child: Text( _getAchievementTitle( achievement.identifier, achievement.title, ), - style: theme.textTheme.bodyMedium?.copyWith( - fontWeight: FontWeight.bold, - ), - maxLines: 1, - overflow: TextOverflow.ellipsis, - ), - Text( - _getAchievementSummary( - achievement.identifier, - achievement.summary, - ), - style: theme.textTheme.bodySmall?.copyWith( - color: theme.colorScheme.onSurfaceVariant, + style: theme.textTheme.bodyLarge?.copyWith( + fontWeight: FontWeight.w600, + color: theme.colorScheme.onSurface, ), maxLines: 1, overflow: TextOverflow.ellipsis, ), + ), + if (achievement.seriesTotalSteps > 1) ...[ + const Gap(8), + _buildLevelBadge(theme), ], - ), + ], ), - if (achievement.isCompleted) - Container( - margin: const EdgeInsets.only(right: 8), - padding: const EdgeInsets.all(4), - decoration: BoxDecoration( - color: theme.colorScheme.primary, - shape: BoxShape.circle, - ), - child: Icon( - Symbols.check, - size: 14, - color: theme.colorScheme.onPrimary, - ), + const Gap(4), + Text( + _getAchievementSummary( + achievement.identifier, + achievement.summary, ), - if (achievement.seriesTotalSteps > 1) ...[ - const Gap(4), - Container( - padding: const EdgeInsets.symmetric( - horizontal: 6, - vertical: 2, - ), - decoration: BoxDecoration( - color: theme.colorScheme.surfaceContainerHighest, - borderRadius: BorderRadius.circular(4), - ), - child: Text( - '${achievement.seriesCompletedSteps}/${achievement.seriesTotalSteps}', - style: theme.textTheme.bodySmall?.copyWith( - color: theme.colorScheme.onSurfaceVariant, - fontWeight: FontWeight.bold, - fontSize: 10, - ), - ), + style: theme.textTheme.bodySmall?.copyWith( + color: theme.colorScheme.onSurfaceVariant, ), + maxLines: 2, + overflow: TextOverflow.ellipsis, + ), + if (reward != null && _hasRewards(reward)) ...[ + const Gap(10), + _RewardPreview(reward: reward), ], ], ), - const Gap(12), - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - if (!achievement.isCompleted) ...[ - LinearProgressIndicator( - value: progress, - minHeight: 6, - borderRadius: BorderRadius.circular(2), - ), - const Gap(4), - Text( - '${achievement.progressCount}/${achievement.targetCount}', - style: theme.textTheme.bodySmall?.copyWith( - color: theme.colorScheme.onSurfaceVariant, - fontSize: 11, - ), - ), - ] else ...[ - Container( - padding: const EdgeInsets.symmetric( - horizontal: 8, - vertical: 2, - ), - decoration: BoxDecoration( - color: theme.colorScheme.primary.withOpacity(0.1), - borderRadius: BorderRadius.circular(4), - ), - child: Text( - 'completed'.tr(), - style: theme.textTheme.bodySmall?.copyWith( - color: theme.colorScheme.primary, - fontWeight: FontWeight.bold, - fontSize: 10, - ), - ), - ), - ], - ], - ).padding(horizontal: 4), - if (reward != null && _hasRewards(reward)) ...[ - const Gap(12), - _RewardPreview(reward: reward), - ], - ], - ), + ), + const Gap(12), + _buildTrailing(context), + ], + ), + ), + ); + } + + Widget _buildLevelBadge(ThemeData theme) { + return Container( + padding: const EdgeInsets.symmetric(horizontal: 5, vertical: 1), + decoration: BoxDecoration( + color: theme.colorScheme.surfaceContainerHighest.withOpacity(0.6), + borderRadius: BorderRadius.circular(4), + border: Border.all( + color: theme.colorScheme.outlineVariant.withOpacity(0.6), + width: 0.5, + ), + ), + child: Text( + '${'level'.tr()} ${achievement.seriesCompletedSteps}/${achievement.seriesTotalSteps}', + style: theme.textTheme.labelSmall?.copyWith( + fontSize: 10, + height: 1.1, + color: theme.colorScheme.onSurfaceVariant, ), ), ); } + Widget _buildTrailing(BuildContext context) { + final theme = Theme.of(context); + + if (achievement.isCompleted) { + return Icon( + Symbols.check_circle, + size: 20, + color: theme.colorScheme.primary, + ); + } + + return Text( + '${achievement.progressCount}/${achievement.targetCount}', + style: theme.textTheme.bodySmall?.copyWith( + fontWeight: FontWeight.w600, + color: theme.colorScheme.onSurface, + ), + ); + } + IconData _getAchievementIcon(String? icon) { switch (icon) { case 'ink': From e78934f0040e49ddef114712c3fea112edc947dc Mon Sep 17 00:00:00 2001 From: BluewhaleYF Date: Sun, 11 Oct 2026 13:22:37 +0800 Subject: [PATCH 2/7] :globe_with_meridians: Add the level key and tidy achievement summaries Add the shared `level` label across all locales and drop the trailing full stops from the achievement summaries. --- assets/i18n/en-US.json | 97 +++++++++++++++++++++--------------------- assets/i18n/es-ES.json | 97 +++++++++++++++++++++--------------------- assets/i18n/ja-JP.json | 97 +++++++++++++++++++++--------------------- assets/i18n/ko-KR.json | 97 +++++++++++++++++++++--------------------- assets/i18n/zh-CN.json | 89 +++++++++++++++++++------------------- assets/i18n/zh-OG.json | 97 +++++++++++++++++++++--------------------- assets/i18n/zh-TW.json | 89 +++++++++++++++++++------------------- 7 files changed, 335 insertions(+), 328 deletions(-) diff --git a/assets/i18n/en-US.json b/assets/i18n/en-US.json index 5a689865e..058f51b8e 100644 --- a/assets/i18n/en-US.json +++ b/assets/i18n/en-US.json @@ -339,55 +339,55 @@ "accountSettingsHelp": "Account Settings Help", "accountSettingsHelpContent": "This page allows you to manage your account security, privacy, and other settings. If you need assistance, please contact support.", "accounts": "Accounts", - "achievementSummaryBookmark10": "Bookmark 10 posts.", - "achievementSummaryBoost50": "Boost 50 posts.", - "achievementSummaryChatroom10": "Join 10 different chatrooms.", - "achievementSummaryExpertChat": "Use chat over 10k times.", - "achievementSummaryExpertFeaturedPost": "Get 100 of your posts featured.", - "achievementSummaryExpertPost": "Wrote posts more than 陆游.\n*Luyou* wrote over 9300+ poems in his life.", - "achievementSummaryExpertReaction": "React to 1000 posts.", - "achievementSummaryFirst2fa": "Enable two-factor authentication.", - "achievementSummaryFirstAvatar": "Set your profile picture for the first time.", - "achievementSummaryFirstBookmark": "Bookmark a post for the first time.", - "achievementSummaryFirstBoost": "Boost a post for the first time.", - "achievementSummaryFirstChatroom": "Join a chatroom for the first time.", - "achievementSummaryFirstConnection": "Link an external account for the first time.", - "achievementSummaryFirstPush": "Enable push notifications for the first time.", - "achievementSummaryFirstTopicalPost": "Publish a post with both categories and tags.", - "achievementSummaryFriends1": "Make your first friend.", - "achievementSummaryFriends100": "Make 100 friends.", - "achievementSummaryFriends20": "Make 20 friends.", - "achievementSummaryFriends5": "Make 5 friends.", - "achievementSummaryFriends50": "Make 50 friends.", - "achievementSummaryGotsFired20": "Have a publisher post receive a lot of downvotes in a single day.", - "achievementSummaryGotsFired5": "Have a publisher post receive many downvotes in a single day.", - "achievementSummaryHiddenNightOwl": "Create a post between midnight and 4am.", - "achievementSummaryHiddenSocialButterflyDay": "Make 5 friends in a single day.", - "achievementSummaryHiddenSpeedFriend": "Accept a friend request within 60 seconds.", - "achievementSummaryInitialChat": "Use chat for the first time.", - "achievementSummaryInitialFeaturedPost": "Get one of your posts featured.", + "achievementSummaryBookmark10": "Bookmark 10 posts", + "achievementSummaryBoost50": "Boost 50 posts", + "achievementSummaryChatroom10": "Join 10 different chatrooms", + "achievementSummaryExpertChat": "Use chat over 10k times", + "achievementSummaryExpertFeaturedPost": "Get 100 of your posts featured", + "achievementSummaryExpertPost": "Wrote posts more than 陆游.\n*Luyou* wrote over 9300+ poems in his life", + "achievementSummaryExpertReaction": "React to 1000 posts", + "achievementSummaryFirst2fa": "Enable two-factor authentication", + "achievementSummaryFirstAvatar": "Set your profile picture for the first time", + "achievementSummaryFirstBookmark": "Bookmark a post for the first time", + "achievementSummaryFirstBoost": "Boost a post for the first time", + "achievementSummaryFirstChatroom": "Join a chatroom for the first time", + "achievementSummaryFirstConnection": "Link an external account for the first time", + "achievementSummaryFirstPush": "Enable push notifications for the first time", + "achievementSummaryFirstTopicalPost": "Publish a post with both categories and tags", + "achievementSummaryFriends1": "Make your first friend", + "achievementSummaryFriends100": "Make 100 friends", + "achievementSummaryFriends20": "Make 20 friends", + "achievementSummaryFriends5": "Make 5 friends", + "achievementSummaryFriends50": "Make 50 friends", + "achievementSummaryGotsFired20": "Have a publisher post receive a lot of downvotes in a single day", + "achievementSummaryGotsFired5": "Have a publisher post receive many downvotes in a single day", + "achievementSummaryHiddenNightOwl": "Create a post between midnight and 4am", + "achievementSummaryHiddenSocialButterflyDay": "Make 5 friends in a single day", + "achievementSummaryHiddenSpeedFriend": "Accept a friend request within 60 seconds", + "achievementSummaryInitialChat": "Use chat for the first time", + "achievementSummaryInitialFeaturedPost": "Get one of your posts featured", "achievementSummaryInitialPost": "Say hello to the Solar Network world!", - "achievementSummaryInitialPublisher": "Not backed by y combinator.\nCreate a publisher.", - "achievementSummaryInitialReaction": "React to a post for the first time.", - "achievementSummaryInitialRealmJoin": "Join a realm.", - "achievementSummaryProfileComplete": "Complete your profile with name, bio, avatar, birthday, location, and pronouns.", - "achievementSummaryRealmJoin10": "Join 10 realms.", - "achievementSummaryStellarSupporter1": "Purchase one eligible month of the Stellar Program.", - "achievementSummaryStellarSupporter12": "Purchase 12 eligible months of the Stellar Program.", - "achievementSummaryStellarSupporter3": "Purchase 3 eligible months of the Stellar Program.", - "achievementSummaryStellarSupporter6": "Purchase 6 eligible months of the Stellar Program.", - "achievementSummaryStellarSupporter9": "Purchase 9 eligible months of the Stellar Program.", - "achievementSummaryStreakLogin30": "Stay active for 30 days in a row.", - "achievementSummaryStreakLogin365": "Stay active for 365 days in a row.", - "achievementSummaryStreakLogin7": "Stay active for 7 days in a row.", - "achievementSummaryStreakLogin90": "Stay active for 90 days in a row.", - "achievementSummaryStreakPost3": "Create posts for 3 days in a row.", - "achievementSummaryStreakPost30": "Create posts for 30 days in a row.", - "achievementSummaryStreakPost365": "Create posts for 365 days in a row.", - "achievementSummaryStreakPost7": "Create posts for 7 days in a row.", - "achievementSummaryStreakPost90": "Create posts for 90 days in a row.", - "achievementSummaryTopicalPost10": "Publish 10 posts with both categories and tags.", - "achievementSummaryTopicalPost50": "Publish 50 posts with both categories and tags.", + "achievementSummaryInitialPublisher": "Not backed by y combinator.\nCreate a publisher", + "achievementSummaryInitialReaction": "React to a post for the first time", + "achievementSummaryInitialRealmJoin": "Join a realm", + "achievementSummaryProfileComplete": "Complete your profile with name, bio, avatar, birthday, location, and pronouns", + "achievementSummaryRealmJoin10": "Join 10 realms", + "achievementSummaryStellarSupporter1": "Purchase one eligible month of the Stellar Program", + "achievementSummaryStellarSupporter12": "Purchase 12 eligible months of the Stellar Program", + "achievementSummaryStellarSupporter3": "Purchase 3 eligible months of the Stellar Program", + "achievementSummaryStellarSupporter6": "Purchase 6 eligible months of the Stellar Program", + "achievementSummaryStellarSupporter9": "Purchase 9 eligible months of the Stellar Program", + "achievementSummaryStreakLogin30": "Stay active for 30 days in a row", + "achievementSummaryStreakLogin365": "Stay active for 365 days in a row", + "achievementSummaryStreakLogin7": "Stay active for 7 days in a row", + "achievementSummaryStreakLogin90": "Stay active for 90 days in a row", + "achievementSummaryStreakPost3": "Create posts for 3 days in a row", + "achievementSummaryStreakPost30": "Create posts for 30 days in a row", + "achievementSummaryStreakPost365": "Create posts for 365 days in a row", + "achievementSummaryStreakPost7": "Create posts for 7 days in a row", + "achievementSummaryStreakPost90": "Create posts for 90 days in a row", + "achievementSummaryTopicalPost10": "Publish 10 posts with both categories and tags", + "achievementSummaryTopicalPost50": "Publish 50 posts with both categories and tags", "achievementTitleBookmark10": "Librarian", "achievementTitleBoost50": "Signal Tower", "achievementTitleChatroom10": "Regular", @@ -2011,6 +2011,7 @@ "leaveRealmHint": "Are you sure to leave this realm?", "leavePublisher": "Leave Publisher", "leavePublisherHint": "Are you sure you want to leave this publisher? You will lose access to manage its content.", + "level": "Level", "levelProgress": "Level Progress", "leveling": "Leveling", "levelingDescription": "See your leveling progress and history.", diff --git a/assets/i18n/es-ES.json b/assets/i18n/es-ES.json index 41e786dc7..5c73ea5df 100644 --- a/assets/i18n/es-ES.json +++ b/assets/i18n/es-ES.json @@ -216,21 +216,21 @@ "workspaceDeleteBlobDescription": "¿Eliminar este guardado y todas sus revisiones conservadas? Esta acción no se puede deshacer.", "accountSettingsHelp": "Account Settings Help", "accountSettingsHelpContent": "This page allows you to manage your account security, privacy, and other settings. If you need assistance, please contact support.", - "achievementSummaryExpertChat": "Usa el chat más de 10k veces.", - "achievementSummaryExpertFeaturedPost": "Consigue que 100 de tus publicaciones sean destacadas.", - "achievementSummaryExpertPost": "Escribió más publicaciones que 陆游.\n*Luyou* escribió más de 9300 poemas en su vida.", - "achievementSummaryInitialChat": "Usa el chat por primera vez.", - "achievementSummaryInitialFeaturedPost": "Consigue que una de tus publicaciones sea destacada.", + "achievementSummaryExpertChat": "Usa el chat más de 10k veces", + "achievementSummaryExpertFeaturedPost": "Consigue que 100 de tus publicaciones sean destacadas", + "achievementSummaryExpertPost": "Escribió más publicaciones que 陆游.\n*Luyou* escribió más de 9300 poemas en su vida", + "achievementSummaryInitialChat": "Usa el chat por primera vez", + "achievementSummaryInitialFeaturedPost": "Consigue que una de tus publicaciones sea destacada", "achievementSummaryInitialPost": "¡Saluda al mundo de Solar Network!", - "achievementSummaryInitialPublisher": "Sin respaldo de Y Combinator. Crea un publicador.", - "achievementSummaryInitialReaction": "Reacciona a una publicación por primera vez.", - "achievementSummaryInitialRealmJoin": "Únete a un realm.", - "achievementSummaryStreakLogin30": "Mantente activo durante 30 días seguidos.", - "achievementSummaryStreakLogin365": "Mantente activo durante 365 días seguidos.", - "achievementSummaryStreakLogin7": "Mantente activo durante 7 días seguidos.", - "achievementSummaryStreakPost3": "Crea publicaciones durante 3 días seguidos.", - "achievementSummaryStreakPost30": "Crea publicaciones durante 30 días seguidos.", - "achievementSummaryStreakPost7": "Crea publicaciones durante 7 días seguidos.", + "achievementSummaryInitialPublisher": "Sin respaldo de Y Combinator. Crea un publicador", + "achievementSummaryInitialReaction": "Reacciona a una publicación por primera vez", + "achievementSummaryInitialRealmJoin": "Únete a un realm", + "achievementSummaryStreakLogin30": "Mantente activo durante 30 días seguidos", + "achievementSummaryStreakLogin365": "Mantente activo durante 365 días seguidos", + "achievementSummaryStreakLogin7": "Mantente activo durante 7 días seguidos", + "achievementSummaryStreakPost3": "Crea publicaciones durante 3 días seguidos", + "achievementSummaryStreakPost30": "Crea publicaciones durante 30 días seguidos", + "achievementSummaryStreakPost7": "Crea publicaciones durante 7 días seguidos", "achievementTitleExpertChat": "Nunca toques el pasto", "achievementTitleExpertFeaturedPost": "Salón de la fama", "achievementTitleExpertPost": "Mejor que 陆游 (Luyou)", @@ -1100,6 +1100,7 @@ "leaveRealmHint": "Are you sure to leave this realm?", "leavePublisher": "Leave Publisher", "leavePublisherHint": "Are you sure you want to leave this publisher? You will lose access to manage its content.", + "level": "Nivel", "levelProgress": "Level Progress", "leveling": "Leveling", "levelingDescription": "See your leveling progress and history.", @@ -2328,40 +2329,40 @@ "accountQrWalletUnavailable": "Create or load a wallet before generating transfer QR codes.", "accountRestrictions": "Account Restrictions", "accounts": "Accounts", - "achievementSummaryBookmark10": "Bookmark 10 posts.", - "achievementSummaryBoost50": "Boost 50 posts.", - "achievementSummaryChatroom10": "Join 10 different chatrooms.", - "achievementSummaryExpertReaction": "React to 1000 posts.", - "achievementSummaryFirst2fa": "Enable two-factor authentication.", - "achievementSummaryFirstAvatar": "Set your profile picture for the first time.", - "achievementSummaryFirstBookmark": "Bookmark a post for the first time.", - "achievementSummaryFirstBoost": "Boost a post for the first time.", - "achievementSummaryFirstChatroom": "Join a chatroom for the first time.", - "achievementSummaryFirstConnection": "Link an external account for the first time.", - "achievementSummaryFirstPush": "Enable push notifications for the first time.", - "achievementSummaryFirstTopicalPost": "Publish a post with both categories and tags.", - "achievementSummaryFriends1": "Make your first friend.", - "achievementSummaryFriends100": "Make 100 friends.", - "achievementSummaryFriends20": "Make 20 friends.", - "achievementSummaryFriends5": "Make 5 friends.", - "achievementSummaryFriends50": "Make 50 friends.", - "achievementSummaryGotsFired20": "Have a publisher post receive a lot of downvotes in a single day.", - "achievementSummaryGotsFired5": "Have a publisher post receive many downvotes in a single day.", - "achievementSummaryHiddenNightOwl": "Create a post between midnight and 4am.", - "achievementSummaryHiddenSocialButterflyDay": "Make 5 friends in a single day.", - "achievementSummaryHiddenSpeedFriend": "Accept a friend request within 60 seconds.", - "achievementSummaryProfileComplete": "Complete your profile with name, bio, avatar, birthday, location, and pronouns.", - "achievementSummaryRealmJoin10": "Join 10 realms.", - "achievementSummaryStellarSupporter1": "Purchase one eligible month of the Stellar Program.", - "achievementSummaryStellarSupporter12": "Purchase 12 eligible months of the Stellar Program.", - "achievementSummaryStellarSupporter3": "Purchase 3 eligible months of the Stellar Program.", - "achievementSummaryStellarSupporter6": "Purchase 6 eligible months of the Stellar Program.", - "achievementSummaryStellarSupporter9": "Purchase 9 eligible months of the Stellar Program.", - "achievementSummaryStreakLogin90": "Stay active for 90 days in a row.", - "achievementSummaryStreakPost365": "Create posts for 365 days in a row.", - "achievementSummaryStreakPost90": "Create posts for 90 days in a row.", - "achievementSummaryTopicalPost10": "Publish 10 posts with both categories and tags.", - "achievementSummaryTopicalPost50": "Publish 50 posts with both categories and tags.", + "achievementSummaryBookmark10": "Bookmark 10 posts", + "achievementSummaryBoost50": "Boost 50 posts", + "achievementSummaryChatroom10": "Join 10 different chatrooms", + "achievementSummaryExpertReaction": "React to 1000 posts", + "achievementSummaryFirst2fa": "Enable two-factor authentication", + "achievementSummaryFirstAvatar": "Set your profile picture for the first time", + "achievementSummaryFirstBookmark": "Bookmark a post for the first time", + "achievementSummaryFirstBoost": "Boost a post for the first time", + "achievementSummaryFirstChatroom": "Join a chatroom for the first time", + "achievementSummaryFirstConnection": "Link an external account for the first time", + "achievementSummaryFirstPush": "Enable push notifications for the first time", + "achievementSummaryFirstTopicalPost": "Publish a post with both categories and tags", + "achievementSummaryFriends1": "Make your first friend", + "achievementSummaryFriends100": "Make 100 friends", + "achievementSummaryFriends20": "Make 20 friends", + "achievementSummaryFriends5": "Make 5 friends", + "achievementSummaryFriends50": "Make 50 friends", + "achievementSummaryGotsFired20": "Have a publisher post receive a lot of downvotes in a single day", + "achievementSummaryGotsFired5": "Have a publisher post receive many downvotes in a single day", + "achievementSummaryHiddenNightOwl": "Create a post between midnight and 4am", + "achievementSummaryHiddenSocialButterflyDay": "Make 5 friends in a single day", + "achievementSummaryHiddenSpeedFriend": "Accept a friend request within 60 seconds", + "achievementSummaryProfileComplete": "Complete your profile with name, bio, avatar, birthday, location, and pronouns", + "achievementSummaryRealmJoin10": "Join 10 realms", + "achievementSummaryStellarSupporter1": "Purchase one eligible month of the Stellar Program", + "achievementSummaryStellarSupporter12": "Purchase 12 eligible months of the Stellar Program", + "achievementSummaryStellarSupporter3": "Purchase 3 eligible months of the Stellar Program", + "achievementSummaryStellarSupporter6": "Purchase 6 eligible months of the Stellar Program", + "achievementSummaryStellarSupporter9": "Purchase 9 eligible months of the Stellar Program", + "achievementSummaryStreakLogin90": "Stay active for 90 days in a row", + "achievementSummaryStreakPost365": "Create posts for 365 days in a row", + "achievementSummaryStreakPost90": "Create posts for 90 days in a row", + "achievementSummaryTopicalPost10": "Publish 10 posts with both categories and tags", + "achievementSummaryTopicalPost50": "Publish 50 posts with both categories and tags", "achievementTitleBookmark10": "Librarian", "achievementTitleBoost50": "Signal Tower", "achievementTitleChatroom10": "Regular", diff --git a/assets/i18n/ja-JP.json b/assets/i18n/ja-JP.json index 7fc7df97f..960832c01 100644 --- a/assets/i18n/ja-JP.json +++ b/assets/i18n/ja-JP.json @@ -216,55 +216,55 @@ "workspaceDeleteBlobDescription": "この保存と保持されているすべてのリビジョンを削除しますか?この操作は取り消せません。", "accountSettingsHelp": "アカウント設定ヘルプ", "accountSettingsHelpContent": "このページでは、アカウントのセキュリティ、プライバシー、その他の設定を管理できます。ヘルプが必要な場合は、管理者にお問い合わせください。", - "achievementSummaryBookmark10": "Bookmark 10 posts.", - "achievementSummaryBoost50": "Boost 50 posts.", - "achievementSummaryChatroom10": "Join 10 different chatrooms.", - "achievementSummaryExpertChat": "チャットを1万回以上使用する。", - "achievementSummaryExpertFeaturedPost": "100個の投稿をハイライトされる。", - "achievementSummaryExpertPost": "陸游以上に投稿を書きました。\n*陸游*は一生活中9000以上の詩を書きました。", - "achievementSummaryExpertReaction": "React to 1000 posts.", - "achievementSummaryFirst2fa": "Enable two-factor authentication.", - "achievementSummaryFirstAvatar": "Set your profile picture for the first time.", - "achievementSummaryFirstBookmark": "Bookmark a post for the first time.", - "achievementSummaryFirstBoost": "Boost a post for the first time.", - "achievementSummaryFirstChatroom": "Join a chatroom for the first time.", - "achievementSummaryFirstConnection": "Link an external account for the first time.", - "achievementSummaryFirstPush": "Enable push notifications for the first time.", - "achievementSummaryFirstTopicalPost": "Publish a post with both categories and tags.", - "achievementSummaryFriends1": "Make your first friend.", - "achievementSummaryFriends100": "Make 100 friends.", - "achievementSummaryFriends20": "Make 20 friends.", - "achievementSummaryFriends5": "Make 5 friends.", - "achievementSummaryFriends50": "Make 50 friends.", - "achievementSummaryGotsFired20": "Have a publisher post receive a lot of downvotes in a single day.", - "achievementSummaryGotsFired5": "Have a publisher post receive many downvotes in a single day.", - "achievementSummaryHiddenNightOwl": "Create a post between midnight and 4am.", - "achievementSummaryHiddenSocialButterflyDay": "Make 5 friends in a single day.", - "achievementSummaryHiddenSpeedFriend": "Accept a friend request within 60 seconds.", - "achievementSummaryInitialChat": "初めてチャットを使用する。", - "achievementSummaryInitialFeaturedPost": "投稿を一つハイライトされる。", + "achievementSummaryBookmark10": "Bookmark 10 posts", + "achievementSummaryBoost50": "Boost 50 posts", + "achievementSummaryChatroom10": "Join 10 different chatrooms", + "achievementSummaryExpertChat": "チャットを1万回以上使用する", + "achievementSummaryExpertFeaturedPost": "100個の投稿をハイライトされる", + "achievementSummaryExpertPost": "陸游以上に投稿を書きました。\n*陸游*は一生活中9000以上の詩を書きました", + "achievementSummaryExpertReaction": "React to 1000 posts", + "achievementSummaryFirst2fa": "Enable two-factor authentication", + "achievementSummaryFirstAvatar": "Set your profile picture for the first time", + "achievementSummaryFirstBookmark": "Bookmark a post for the first time", + "achievementSummaryFirstBoost": "Boost a post for the first time", + "achievementSummaryFirstChatroom": "Join a chatroom for the first time", + "achievementSummaryFirstConnection": "Link an external account for the first time", + "achievementSummaryFirstPush": "Enable push notifications for the first time", + "achievementSummaryFirstTopicalPost": "Publish a post with both categories and tags", + "achievementSummaryFriends1": "Make your first friend", + "achievementSummaryFriends100": "Make 100 friends", + "achievementSummaryFriends20": "Make 20 friends", + "achievementSummaryFriends5": "Make 5 friends", + "achievementSummaryFriends50": "Make 50 friends", + "achievementSummaryGotsFired20": "Have a publisher post receive a lot of downvotes in a single day", + "achievementSummaryGotsFired5": "Have a publisher post receive many downvotes in a single day", + "achievementSummaryHiddenNightOwl": "Create a post between midnight and 4am", + "achievementSummaryHiddenSocialButterflyDay": "Make 5 friends in a single day", + "achievementSummaryHiddenSpeedFriend": "Accept a friend request within 60 seconds", + "achievementSummaryInitialChat": "初めてチャットを使用する", + "achievementSummaryInitialFeaturedPost": "投稿を一つハイライトされる", "achievementSummaryInitialPost": "Solar Networkの世界に挨拶しよう!", - "achievementSummaryInitialPublisher": "Y combinatorのサポートなし。パブリッシャーを作成。", - "achievementSummaryInitialReaction": "初めて投稿にリアクションする。", - "achievementSummaryInitialRealmJoin": "Realmに参加する。", - "achievementSummaryProfileComplete": "Complete your profile with name, bio, avatar, birthday, location, and pronouns.", - "achievementSummaryRealmJoin10": "Join 10 realms.", - "achievementSummaryStellarSupporter1": "Purchase one eligible month of the Stellar Program.", - "achievementSummaryStellarSupporter12": "Purchase 12 eligible months of the Stellar Program.", - "achievementSummaryStellarSupporter3": "Purchase 3 eligible months of the Stellar Program.", - "achievementSummaryStellarSupporter6": "Purchase 6 eligible months of the Stellar Program.", - "achievementSummaryStellarSupporter9": "Purchase 9 eligible months of the Stellar Program.", - "achievementSummaryStreakLogin30": "30日連続でアクティブを続ける。", - "achievementSummaryStreakLogin365": "365日連続でアクティブを続ける。", - "achievementSummaryStreakLogin7": "7日連続でアクティブを続ける。", - "achievementSummaryStreakLogin90": "Stay active for 90 days in a row.", - "achievementSummaryStreakPost3": "3日連続で投稿する。", - "achievementSummaryStreakPost30": "30日連続で投稿する。", - "achievementSummaryStreakPost365": "Create posts for 365 days in a row.", - "achievementSummaryStreakPost7": "7日連続で投稿する。", - "achievementSummaryStreakPost90": "Create posts for 90 days in a row.", - "achievementSummaryTopicalPost10": "Publish 10 posts with both categories and tags.", - "achievementSummaryTopicalPost50": "Publish 50 posts with both categories and tags.", + "achievementSummaryInitialPublisher": "Y combinatorのサポートなし。パブリッシャーを作成", + "achievementSummaryInitialReaction": "初めて投稿にリアクションする", + "achievementSummaryInitialRealmJoin": "Realmに参加する", + "achievementSummaryProfileComplete": "Complete your profile with name, bio, avatar, birthday, location, and pronouns", + "achievementSummaryRealmJoin10": "Join 10 realms", + "achievementSummaryStellarSupporter1": "Purchase one eligible month of the Stellar Program", + "achievementSummaryStellarSupporter12": "Purchase 12 eligible months of the Stellar Program", + "achievementSummaryStellarSupporter3": "Purchase 3 eligible months of the Stellar Program", + "achievementSummaryStellarSupporter6": "Purchase 6 eligible months of the Stellar Program", + "achievementSummaryStellarSupporter9": "Purchase 9 eligible months of the Stellar Program", + "achievementSummaryStreakLogin30": "30日連続でアクティブを続ける", + "achievementSummaryStreakLogin365": "365日連続でアクティブを続ける", + "achievementSummaryStreakLogin7": "7日連続でアクティブを続ける", + "achievementSummaryStreakLogin90": "Stay active for 90 days in a row", + "achievementSummaryStreakPost3": "3日連続で投稿する", + "achievementSummaryStreakPost30": "30日連続で投稿する", + "achievementSummaryStreakPost365": "Create posts for 365 days in a row", + "achievementSummaryStreakPost7": "7日連続で投稿する", + "achievementSummaryStreakPost90": "Create posts for 90 days in a row", + "achievementSummaryTopicalPost10": "Publish 10 posts with both categories and tags", + "achievementSummaryTopicalPost50": "Publish 50 posts with both categories and tags", "achievementTitleBookmark10": "Librarian", "achievementTitleBoost50": "Signal Tower", "achievementTitleChatroom10": "Regular", @@ -1170,6 +1170,7 @@ "leaveRealmHint": "このレルムから退出してもよろしいですか?", "leavePublisher": "パブリッシャーを退出", "leavePublisherHint": "このパブリッシャーから退出してもよろしいですか?退出するとコンテンツを管理できなくなります。", + "level": "レベル", "levelProgress": "レベル進行度", "leveling": "レベル", "levelingDescription": "あなたのレベル進行状況と履歴を確認します。", diff --git a/assets/i18n/ko-KR.json b/assets/i18n/ko-KR.json index fafb31201..d4a4d14b4 100644 --- a/assets/i18n/ko-KR.json +++ b/assets/i18n/ko-KR.json @@ -216,55 +216,55 @@ "workspaceDeleteBlobDescription": "이 저장 항목과 보관된 모든 리비전을 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.", "accountSettingsHelp": "계정 설정 도움말", "accountSettingsHelpContent": "이 페이지에서는 계정 보안, 개인정보 보호 및 기타 설정을 관리할 수 있습니다. 도움이 필요하시면 지원팀에 문의하세요.", - "achievementSummaryBookmark10": "Bookmark 10 posts.", - "achievementSummaryBoost50": "Boost 50 posts.", - "achievementSummaryChatroom10": "Join 10 different chatrooms.", - "achievementSummaryExpertChat": "채팅을 1만 번 이상 사용합니다.", - "achievementSummaryExpertFeaturedPost": "100개의 게시물이 추천됩니다.", - "achievementSummaryExpertPost": "륙유보다 많은 게시물을 작성했습니다.\n*륙유*는 생전에 9300편 이상의시를 남겼습니다.", - "achievementSummaryExpertReaction": "React to 1000 posts.", - "achievementSummaryFirst2fa": "Enable two-factor authentication.", - "achievementSummaryFirstAvatar": "Set your profile picture for the first time.", - "achievementSummaryFirstBookmark": "Bookmark a post for the first time.", - "achievementSummaryFirstBoost": "Boost a post for the first time.", - "achievementSummaryFirstChatroom": "Join a chatroom for the first time.", - "achievementSummaryFirstConnection": "Link an external account for the first time.", - "achievementSummaryFirstPush": "Enable push notifications for the first time.", - "achievementSummaryFirstTopicalPost": "Publish a post with both categories and tags.", - "achievementSummaryFriends1": "Make your first friend.", - "achievementSummaryFriends100": "Make 100 friends.", - "achievementSummaryFriends20": "Make 20 friends.", - "achievementSummaryFriends5": "Make 5 friends.", - "achievementSummaryFriends50": "Make 50 friends.", - "achievementSummaryGotsFired20": "Have a publisher post receive a lot of downvotes in a single day.", - "achievementSummaryGotsFired5": "Have a publisher post receive many downvotes in a single day.", - "achievementSummaryHiddenNightOwl": "Create a post between midnight and 4am.", - "achievementSummaryHiddenSocialButterflyDay": "Make 5 friends in a single day.", - "achievementSummaryHiddenSpeedFriend": "Accept a friend request within 60 seconds.", - "achievementSummaryInitialChat": "처음으로 채팅을 사용합니다.", - "achievementSummaryInitialFeaturedPost": "게시물 중 하나가 추천됩니다.", + "achievementSummaryBookmark10": "Bookmark 10 posts", + "achievementSummaryBoost50": "Boost 50 posts", + "achievementSummaryChatroom10": "Join 10 different chatrooms", + "achievementSummaryExpertChat": "채팅을 1만 번 이상 사용합니다", + "achievementSummaryExpertFeaturedPost": "100개의 게시물이 추천됩니다", + "achievementSummaryExpertPost": "륙유보다 많은 게시물을 작성했습니다.\n*륙유*는 생전에 9300편 이상의시를 남겼습니다", + "achievementSummaryExpertReaction": "React to 1000 posts", + "achievementSummaryFirst2fa": "Enable two-factor authentication", + "achievementSummaryFirstAvatar": "Set your profile picture for the first time", + "achievementSummaryFirstBookmark": "Bookmark a post for the first time", + "achievementSummaryFirstBoost": "Boost a post for the first time", + "achievementSummaryFirstChatroom": "Join a chatroom for the first time", + "achievementSummaryFirstConnection": "Link an external account for the first time", + "achievementSummaryFirstPush": "Enable push notifications for the first time", + "achievementSummaryFirstTopicalPost": "Publish a post with both categories and tags", + "achievementSummaryFriends1": "Make your first friend", + "achievementSummaryFriends100": "Make 100 friends", + "achievementSummaryFriends20": "Make 20 friends", + "achievementSummaryFriends5": "Make 5 friends", + "achievementSummaryFriends50": "Make 50 friends", + "achievementSummaryGotsFired20": "Have a publisher post receive a lot of downvotes in a single day", + "achievementSummaryGotsFired5": "Have a publisher post receive many downvotes in a single day", + "achievementSummaryHiddenNightOwl": "Create a post between midnight and 4am", + "achievementSummaryHiddenSocialButterflyDay": "Make 5 friends in a single day", + "achievementSummaryHiddenSpeedFriend": "Accept a friend request within 60 seconds", + "achievementSummaryInitialChat": "처음으로 채팅을 사용합니다", + "achievementSummaryInitialFeaturedPost": "게시물 중 하나가 추천됩니다", "achievementSummaryInitialPost": "Solar Network 세계에 인사하세요!", - "achievementSummaryInitialPublisher": "Y 콤비네이터 지원 없음. 게시자를 만드세요.", - "achievementSummaryInitialReaction": "처음으로 게시물에 반응합니다.", - "achievementSummaryInitialRealmJoin": "렐름에 참여하세요.", - "achievementSummaryProfileComplete": "Complete your profile with name, bio, avatar, birthday, location, and pronouns.", - "achievementSummaryRealmJoin10": "Join 10 realms.", - "achievementSummaryStellarSupporter1": "Purchase one eligible month of the Stellar Program.", - "achievementSummaryStellarSupporter12": "Purchase 12 eligible months of the Stellar Program.", - "achievementSummaryStellarSupporter3": "Purchase 3 eligible months of the Stellar Program.", - "achievementSummaryStellarSupporter6": "Purchase 6 eligible months of the Stellar Program.", - "achievementSummaryStellarSupporter9": "Purchase 9 eligible months of the Stellar Program.", - "achievementSummaryStreakLogin30": "30일 연속으로 활성 상태 유지.", - "achievementSummaryStreakLogin365": "365일 연속으로 활성 상태 유지.", - "achievementSummaryStreakLogin7": "7일 연속으로 활성 상태 유지.", - "achievementSummaryStreakLogin90": "Stay active for 90 days in a row.", - "achievementSummaryStreakPost3": "3일 연속으로 게시물을 작성하세요.", - "achievementSummaryStreakPost30": "30일 연속으로 게시물을 작성하세요.", - "achievementSummaryStreakPost365": "Create posts for 365 days in a row.", - "achievementSummaryStreakPost7": "7일 연속으로 게시물을 작성하세요.", - "achievementSummaryStreakPost90": "Create posts for 90 days in a row.", - "achievementSummaryTopicalPost10": "Publish 10 posts with both categories and tags.", - "achievementSummaryTopicalPost50": "Publish 50 posts with both categories and tags.", + "achievementSummaryInitialPublisher": "Y 콤비네이터 지원 없음. 게시자를 만드세요", + "achievementSummaryInitialReaction": "처음으로 게시물에 반응합니다", + "achievementSummaryInitialRealmJoin": "렐름에 참여하세요", + "achievementSummaryProfileComplete": "Complete your profile with name, bio, avatar, birthday, location, and pronouns", + "achievementSummaryRealmJoin10": "Join 10 realms", + "achievementSummaryStellarSupporter1": "Purchase one eligible month of the Stellar Program", + "achievementSummaryStellarSupporter12": "Purchase 12 eligible months of the Stellar Program", + "achievementSummaryStellarSupporter3": "Purchase 3 eligible months of the Stellar Program", + "achievementSummaryStellarSupporter6": "Purchase 6 eligible months of the Stellar Program", + "achievementSummaryStellarSupporter9": "Purchase 9 eligible months of the Stellar Program", + "achievementSummaryStreakLogin30": "30일 연속으로 활성 상태 유지", + "achievementSummaryStreakLogin365": "365일 연속으로 활성 상태 유지", + "achievementSummaryStreakLogin7": "7일 연속으로 활성 상태 유지", + "achievementSummaryStreakLogin90": "Stay active for 90 days in a row", + "achievementSummaryStreakPost3": "3일 연속으로 게시물을 작성하세요", + "achievementSummaryStreakPost30": "30일 연속으로 게시물을 작성하세요", + "achievementSummaryStreakPost365": "Create posts for 365 days in a row", + "achievementSummaryStreakPost7": "7일 연속으로 게시물을 작성하세요", + "achievementSummaryStreakPost90": "Create posts for 90 days in a row", + "achievementSummaryTopicalPost10": "Publish 10 posts with both categories and tags", + "achievementSummaryTopicalPost50": "Publish 50 posts with both categories and tags", "achievementTitleBookmark10": "Librarian", "achievementTitleBoost50": "Signal Tower", "achievementTitleChatroom10": "Regular", @@ -1329,6 +1329,7 @@ "leaveRealmHint": "이 레얼름을 나가시겠습니까?", "leavePublisher": "퍼블리셔 나가기", "leavePublisherHint": "이 퍼블리셔를 나가시겠습니까? 나가면 콘텐츠를 관리할 수 없게 됩니다.", + "level": "레벨", "levelProgress": "레벨 진행 상황", "leveling": "레벨링", "levelingDescription": "레벨링 진행 상황과 이력을 확인하세요.", diff --git a/assets/i18n/zh-CN.json b/assets/i18n/zh-CN.json index bd21330b0..3bf927a4e 100644 --- a/assets/i18n/zh-CN.json +++ b/assets/i18n/zh-CN.json @@ -338,55 +338,55 @@ "accountSettingsHelp": "账户设置帮助", "accountSettingsHelpContent": "此页面允许您管理您的帐户安全性、隐私和其他设置。如果您需要帮助,请联系管理员。", "accounts": "账号", - "achievementSummaryBookmark10": "收藏 10 篇帖子。", - "achievementSummaryBoost50": "转发 50 篇帖子。", - "achievementSummaryChatroom10": "加入 10 个不同的聊天室。", - "achievementSummaryExpertChat": "使用聊天超过一万次。", - "achievementSummaryExpertFeaturedPost": "让你的 100 个帖子被精选。", - "achievementSummaryExpertPost": "发帖数超过陆游(冷知识:陆游是中国留下古诗的最多的作者,足足 9362 篇)。", - "achievementSummaryExpertReaction": "对1000篇帖子做出反应。", - "achievementSummaryFirst2fa": "开启两步验证。", - "achievementSummaryFirstAvatar": "第一次设置头像。", - "achievementSummaryFirstBookmark": "第一次收藏帖子。", - "achievementSummaryFirstBoost": "第一次转发帖子。", - "achievementSummaryFirstChatroom": "第一次加入聊天室。", - "achievementSummaryFirstConnection": "第一次关联外部账户。", - "achievementSummaryFirstPush": "第一次开启推送通知。", - "achievementSummaryFirstTopicalPost": "发布一篇同时带有分类和标签的帖子。", - "achievementSummaryFriends1": "交到第一个好友。", - "achievementSummaryFriends100": "交到 100 个好友。", - "achievementSummaryFriends20": "交到 20 个好友。", - "achievementSummaryFriends5": "交到 5 个好友。", - "achievementSummaryFriends50": "交到 50 个好友。", - "achievementSummaryGotsFired20": "发布者帖子在一天内收到大量踩。", - "achievementSummaryGotsFired5": "发布者帖子在一天内收到大量踩。", - "achievementSummaryHiddenNightOwl": "在凌晨 0 点到 4 点之间发布帖子。", - "achievementSummaryHiddenSocialButterflyDay": "在一天内交到 5 个朋友。", - "achievementSummaryHiddenSpeedFriend": "在 60 秒内接受好友请求。", - "achievementSummaryInitialChat": "第一次使用聊天。", - "achievementSummaryInitialFeaturedPost": "让你的帖子被精选。", + "achievementSummaryBookmark10": "收藏 10 篇帖子", + "achievementSummaryBoost50": "转发 50 篇帖子", + "achievementSummaryChatroom10": "加入 10 个不同的聊天室", + "achievementSummaryExpertChat": "使用聊天超过一万次", + "achievementSummaryExpertFeaturedPost": "让你的 100 个帖子被精选", + "achievementSummaryExpertPost": "发帖数超过陆游(冷知识:陆游是中国留下古诗的最多的作者,足足 9362 篇)", + "achievementSummaryExpertReaction": "对1000篇帖子做出反应", + "achievementSummaryFirst2fa": "开启两步验证", + "achievementSummaryFirstAvatar": "第一次设置头像", + "achievementSummaryFirstBookmark": "第一次收藏帖子", + "achievementSummaryFirstBoost": "第一次转发帖子", + "achievementSummaryFirstChatroom": "第一次加入聊天室", + "achievementSummaryFirstConnection": "第一次关联外部账户", + "achievementSummaryFirstPush": "第一次开启推送通知", + "achievementSummaryFirstTopicalPost": "发布一篇同时带有分类和标签的帖子", + "achievementSummaryFriends1": "交到第一个好友", + "achievementSummaryFriends100": "交到 100 个好友", + "achievementSummaryFriends20": "交到 20 个好友", + "achievementSummaryFriends5": "交到 5 个好友", + "achievementSummaryFriends50": "交到 50 个好友", + "achievementSummaryGotsFired20": "发布者帖子在一天内收到大量踩", + "achievementSummaryGotsFired5": "发布者帖子在一天内收到大量踩", + "achievementSummaryHiddenNightOwl": "在凌晨 0 点到 4 点之间发布帖子", + "achievementSummaryHiddenSocialButterflyDay": "在一天内交到 5 个朋友", + "achievementSummaryHiddenSpeedFriend": "在 60 秒内接受好友请求", + "achievementSummaryInitialChat": "第一次使用聊天", + "achievementSummaryInitialFeaturedPost": "让你的帖子被精选", "achievementSummaryInitialPost": "向 Solar Network 说你好!", - "achievementSummaryInitialPublisher": "并没有被 Y Combinator 投资。\n创建一个发布者。", - "achievementSummaryInitialReaction": "第一次对帖子做出反应。", - "achievementSummaryInitialRealmJoin": "加入一个领域。", - "achievementSummaryProfileComplete": "完善个人资料,包括姓名、简介、头像、生日、所在地和代词。", - "achievementSummaryRealmJoin10": "加入 10 个领域。", + "achievementSummaryInitialPublisher": "并没有被 Y Combinator 投资。\n创建一个发布者", + "achievementSummaryInitialReaction": "第一次对帖子做出反应", + "achievementSummaryInitialRealmJoin": "加入一个领域", + "achievementSummaryProfileComplete": "完善个人资料,包括姓名、简介、头像、生日、所在地和代词", + "achievementSummaryRealmJoin10": "加入 10 个领域", "achievementSummaryStellarSupporter1": "购买 1 个月的恒星计划", - "achievementSummaryStellarSupporter12": "购买 12 个月的恒星计划。", + "achievementSummaryStellarSupporter12": "购买 12 个月的恒星计划", "achievementSummaryStellarSupporter3": "购买 3 个月的恒星计划", "achievementSummaryStellarSupporter6": "购买 6 个月的恒星计划", "achievementSummaryStellarSupporter9": "购买 9 个月的恒星计划", - "achievementSummaryStreakLogin30": "连续 30 天保持活跃。", - "achievementSummaryStreakLogin365": "连续 365 天保持活跃。", - "achievementSummaryStreakLogin7": "连续 7 天保持活跃。", - "achievementSummaryStreakLogin90": "连续 90 天保持活跃。", - "achievementSummaryStreakPost3": "连续 3 天发布帖子。", - "achievementSummaryStreakPost30": "连续 30 天发布帖子。", - "achievementSummaryStreakPost365": "连续 365 天发布帖子。", - "achievementSummaryStreakPost7": "连续 7 天发布帖子。", - "achievementSummaryStreakPost90": "连续 90 天发布帖子。", - "achievementSummaryTopicalPost10": "发布10篇同时带有分类和标签的帖子。", - "achievementSummaryTopicalPost50": "发布50篇同时带有分类和标签的帖子。", + "achievementSummaryStreakLogin30": "连续 30 天保持活跃", + "achievementSummaryStreakLogin365": "连续 365 天保持活跃", + "achievementSummaryStreakLogin7": "连续 7 天保持活跃", + "achievementSummaryStreakLogin90": "连续 90 天保持活跃", + "achievementSummaryStreakPost3": "连续 3 天发布帖子", + "achievementSummaryStreakPost30": "连续 30 天发布帖子", + "achievementSummaryStreakPost365": "连续 365 天发布帖子", + "achievementSummaryStreakPost7": "连续 7 天发布帖子", + "achievementSummaryStreakPost90": "连续 90 天发布帖子", + "achievementSummaryTopicalPost10": "发布10篇同时带有分类和标签的帖子", + "achievementSummaryTopicalPost50": "发布50篇同时带有分类和标签的帖子", "achievementTitleBookmark10": "图书管理员", "achievementTitleBoost50": "信号塔", "achievementTitleChatroom10": "常客", @@ -1995,6 +1995,7 @@ "leaveRealmHint": "确定要离开此领域吗?", "leavePublisher": "离开发布者", "leavePublisherHint": "确定要离开此发布者吗?离开后你将无法再管理其内容。", + "level": "等级", "levelProgress": "等级进度", "leveling": "等级", "levelingDescription": "查看您的升级进度和历史记录。", diff --git a/assets/i18n/zh-OG.json b/assets/i18n/zh-OG.json index d6e68c703..50c96b235 100644 --- a/assets/i18n/zh-OG.json +++ b/assets/i18n/zh-OG.json @@ -216,21 +216,21 @@ "workspaceDeleteBlobDescription": "要刪除此儲存及所保留全部修訂嗎?此舉不能復原。", "accountSettingsHelp": "賬戶設置輔助", "accountSettingsHelpContent": "此頁面許君理賬戶安防、私隱並他般設置。若需輔助,請通聯輔助者。", - "achievementSummaryExpertChat": "使用聊天超過一萬次。", - "achievementSummaryExpertFeaturedPost": "讓100個帖子被精選。", - "achievementSummaryExpertPost": "發帖數超過陸游。", - "achievementSummaryInitialChat": "第一次使用聊天。", - "achievementSummaryInitialFeaturedPost": "讓帖子被精選。", + "achievementSummaryExpertChat": "使用聊天超過一萬次", + "achievementSummaryExpertFeaturedPost": "讓100個帖子被精選", + "achievementSummaryExpertPost": "發帖數超過陸游", + "achievementSummaryInitialChat": "第一次使用聊天", + "achievementSummaryInitialFeaturedPost": "讓帖子被精選", "achievementSummaryInitialPost": "向太陽網路世界說你好!", - "achievementSummaryInitialPublisher": "非Y Combinator投資。創建一個發布者。", - "achievementSummaryInitialReaction": "第一次對帖子做出反應。", - "achievementSummaryInitialRealmJoin": "加入一個領域。", - "achievementSummaryStreakLogin30": "連30天持活躍。", - "achievementSummaryStreakLogin365": "連365天持活躍。", - "achievementSummaryStreakLogin7": "連7天持活躍。", - "achievementSummaryStreakPost3": "連3天發帖。", - "achievementSummaryStreakPost30": "連30天發帖。", - "achievementSummaryStreakPost7": "連7天發帖。", + "achievementSummaryInitialPublisher": "非Y Combinator投資。創建一個發布者", + "achievementSummaryInitialReaction": "第一次對帖子做出反應", + "achievementSummaryInitialRealmJoin": "加入一個領域", + "achievementSummaryStreakLogin30": "連30天持活躍", + "achievementSummaryStreakLogin365": "連365天持活躍", + "achievementSummaryStreakLogin7": "連7天持活躍", + "achievementSummaryStreakPost3": "連3天發帖", + "achievementSummaryStreakPost30": "連30天發帖", + "achievementSummaryStreakPost7": "連7天發帖", "achievementTitleExpertChat": "足不出戶", "achievementTitleExpertFeaturedPost": "名堂", "achievementTitleExpertPost": "勝陸游", @@ -1101,6 +1101,7 @@ "leaveRealmHint": "君確要辭此界域否?", "leavePublisher": "辭離發布者", "leavePublisherHint": "君確要辭此發布者否?辭後則無復理其帖文。", + "level": "等級", "levelProgress": "品階進境", "leveling": "晉階", "levelingDescription": "覽君晉階之進與史", @@ -2330,40 +2331,40 @@ "accountQrWalletUnavailable": "Create or load a wallet before generating transfer QR codes.", "accountRestrictions": "Account Restrictions", "accounts": "Accounts", - "achievementSummaryBookmark10": "Bookmark 10 posts.", - "achievementSummaryBoost50": "Boost 50 posts.", - "achievementSummaryChatroom10": "Join 10 different chatrooms.", - "achievementSummaryExpertReaction": "React to 1000 posts.", - "achievementSummaryFirst2fa": "Enable two-factor authentication.", - "achievementSummaryFirstAvatar": "Set your profile picture for the first time.", - "achievementSummaryFirstBookmark": "Bookmark a post for the first time.", - "achievementSummaryFirstBoost": "Boost a post for the first time.", - "achievementSummaryFirstChatroom": "Join a chatroom for the first time.", - "achievementSummaryFirstConnection": "Link an external account for the first time.", - "achievementSummaryFirstPush": "Enable push notifications for the first time.", - "achievementSummaryFirstTopicalPost": "Publish a post with both categories and tags.", - "achievementSummaryFriends1": "Make your first friend.", - "achievementSummaryFriends100": "Make 100 friends.", - "achievementSummaryFriends20": "Make 20 friends.", - "achievementSummaryFriends5": "Make 5 friends.", - "achievementSummaryFriends50": "Make 50 friends.", - "achievementSummaryGotsFired20": "Have a publisher post receive a lot of downvotes in a single day.", - "achievementSummaryGotsFired5": "Have a publisher post receive many downvotes in a single day.", - "achievementSummaryHiddenNightOwl": "Create a post between midnight and 4am.", - "achievementSummaryHiddenSocialButterflyDay": "Make 5 friends in a single day.", - "achievementSummaryHiddenSpeedFriend": "Accept a friend request within 60 seconds.", - "achievementSummaryProfileComplete": "Complete your profile with name, bio, avatar, birthday, location, and pronouns.", - "achievementSummaryRealmJoin10": "Join 10 realms.", - "achievementSummaryStellarSupporter1": "Purchase one eligible month of the Stellar Program.", - "achievementSummaryStellarSupporter12": "Purchase 12 eligible months of the Stellar Program.", - "achievementSummaryStellarSupporter3": "Purchase 3 eligible months of the Stellar Program.", - "achievementSummaryStellarSupporter6": "Purchase 6 eligible months of the Stellar Program.", - "achievementSummaryStellarSupporter9": "Purchase 9 eligible months of the Stellar Program.", - "achievementSummaryStreakLogin90": "Stay active for 90 days in a row.", - "achievementSummaryStreakPost365": "Create posts for 365 days in a row.", - "achievementSummaryStreakPost90": "Create posts for 90 days in a row.", - "achievementSummaryTopicalPost10": "Publish 10 posts with both categories and tags.", - "achievementSummaryTopicalPost50": "Publish 50 posts with both categories and tags.", + "achievementSummaryBookmark10": "Bookmark 10 posts", + "achievementSummaryBoost50": "Boost 50 posts", + "achievementSummaryChatroom10": "Join 10 different chatrooms", + "achievementSummaryExpertReaction": "React to 1000 posts", + "achievementSummaryFirst2fa": "Enable two-factor authentication", + "achievementSummaryFirstAvatar": "Set your profile picture for the first time", + "achievementSummaryFirstBookmark": "Bookmark a post for the first time", + "achievementSummaryFirstBoost": "Boost a post for the first time", + "achievementSummaryFirstChatroom": "Join a chatroom for the first time", + "achievementSummaryFirstConnection": "Link an external account for the first time", + "achievementSummaryFirstPush": "Enable push notifications for the first time", + "achievementSummaryFirstTopicalPost": "Publish a post with both categories and tags", + "achievementSummaryFriends1": "Make your first friend", + "achievementSummaryFriends100": "Make 100 friends", + "achievementSummaryFriends20": "Make 20 friends", + "achievementSummaryFriends5": "Make 5 friends", + "achievementSummaryFriends50": "Make 50 friends", + "achievementSummaryGotsFired20": "Have a publisher post receive a lot of downvotes in a single day", + "achievementSummaryGotsFired5": "Have a publisher post receive many downvotes in a single day", + "achievementSummaryHiddenNightOwl": "Create a post between midnight and 4am", + "achievementSummaryHiddenSocialButterflyDay": "Make 5 friends in a single day", + "achievementSummaryHiddenSpeedFriend": "Accept a friend request within 60 seconds", + "achievementSummaryProfileComplete": "Complete your profile with name, bio, avatar, birthday, location, and pronouns", + "achievementSummaryRealmJoin10": "Join 10 realms", + "achievementSummaryStellarSupporter1": "Purchase one eligible month of the Stellar Program", + "achievementSummaryStellarSupporter12": "Purchase 12 eligible months of the Stellar Program", + "achievementSummaryStellarSupporter3": "Purchase 3 eligible months of the Stellar Program", + "achievementSummaryStellarSupporter6": "Purchase 6 eligible months of the Stellar Program", + "achievementSummaryStellarSupporter9": "Purchase 9 eligible months of the Stellar Program", + "achievementSummaryStreakLogin90": "Stay active for 90 days in a row", + "achievementSummaryStreakPost365": "Create posts for 365 days in a row", + "achievementSummaryStreakPost90": "Create posts for 90 days in a row", + "achievementSummaryTopicalPost10": "Publish 10 posts with both categories and tags", + "achievementSummaryTopicalPost50": "Publish 50 posts with both categories and tags", "achievementTitleBookmark10": "Librarian", "achievementTitleBoost50": "Signal Tower", "achievementTitleChatroom10": "Regular", diff --git a/assets/i18n/zh-TW.json b/assets/i18n/zh-TW.json index fba253238..a9206d157 100644 --- a/assets/i18n/zh-TW.json +++ b/assets/i18n/zh-TW.json @@ -316,55 +316,55 @@ "accountSettingsHelp": "賬戶設定幫助", "accountSettingsHelpContent": "此頁面允許您管理您的帳戶安全性、隱私和其他設定。如果您需要幫助,請聯絡管理員。", "accounts": "帳號", - "achievementSummaryBookmark10": "收藏 10 篇貼文。", - "achievementSummaryBoost50": "轉發 50 篇貼文。", - "achievementSummaryChatroom10": "加入 10 個不同的聊天室。", - "achievementSummaryExpertChat": "使用聊天超過一萬次。", - "achievementSummaryExpertFeaturedPost": "讓你的 100 個貼文被精選。", - "achievementSummaryExpertPost": "發帖數超過陸游(冷知識:陸游是中國留下古詩的最多的作者,足足 9362 篇)。", - "achievementSummaryExpertReaction": "對1000篇貼文做出反應。", - "achievementSummaryFirst2fa": "開啟兩步驗證。", - "achievementSummaryFirstAvatar": "第一次設定頭像。", - "achievementSummaryFirstBookmark": "第一次收藏貼文。", - "achievementSummaryFirstBoost": "第一次轉發貼文。", - "achievementSummaryFirstChatroom": "第一次加入聊天室。", - "achievementSummaryFirstConnection": "第一次關聯外部賬戶。", - "achievementSummaryFirstPush": "第一次開啟推送通知。", - "achievementSummaryFirstTopicalPost": "發佈一篇同時帶有分類和標籤的貼文。", - "achievementSummaryFriends1": "交到第一個好友。", - "achievementSummaryFriends100": "交到 100 個好友。", - "achievementSummaryFriends20": "交到 20 個好友。", - "achievementSummaryFriends5": "交到 5 個好友。", - "achievementSummaryFriends50": "交到 50 個好友。", - "achievementSummaryGotsFired20": "發佈者貼文在一天內收到大量踩。", - "achievementSummaryGotsFired5": "發佈者貼文在一天內收到大量踩。", - "achievementSummaryHiddenNightOwl": "在凌晨 0 點到 4 點之間發佈貼文。", - "achievementSummaryHiddenSocialButterflyDay": "在一天內交到 5 個朋友。", - "achievementSummaryHiddenSpeedFriend": "在 60 秒內接受好友請求。", - "achievementSummaryInitialChat": "第一次使用聊天。", - "achievementSummaryInitialFeaturedPost": "讓你的貼文被精選。", + "achievementSummaryBookmark10": "收藏 10 篇貼文", + "achievementSummaryBoost50": "轉發 50 篇貼文", + "achievementSummaryChatroom10": "加入 10 個不同的聊天室", + "achievementSummaryExpertChat": "使用聊天超過一萬次", + "achievementSummaryExpertFeaturedPost": "讓你的 100 個貼文被精選", + "achievementSummaryExpertPost": "發帖數超過陸游(冷知識:陸游是中國留下古詩的最多的作者,足足 9362 篇)", + "achievementSummaryExpertReaction": "對1000篇貼文做出反應", + "achievementSummaryFirst2fa": "開啟兩步驗證", + "achievementSummaryFirstAvatar": "第一次設定頭像", + "achievementSummaryFirstBookmark": "第一次收藏貼文", + "achievementSummaryFirstBoost": "第一次轉發貼文", + "achievementSummaryFirstChatroom": "第一次加入聊天室", + "achievementSummaryFirstConnection": "第一次關聯外部賬戶", + "achievementSummaryFirstPush": "第一次開啟推送通知", + "achievementSummaryFirstTopicalPost": "發佈一篇同時帶有分類和標籤的貼文", + "achievementSummaryFriends1": "交到第一個好友", + "achievementSummaryFriends100": "交到 100 個好友", + "achievementSummaryFriends20": "交到 20 個好友", + "achievementSummaryFriends5": "交到 5 個好友", + "achievementSummaryFriends50": "交到 50 個好友", + "achievementSummaryGotsFired20": "發佈者貼文在一天內收到大量踩", + "achievementSummaryGotsFired5": "發佈者貼文在一天內收到大量踩", + "achievementSummaryHiddenNightOwl": "在凌晨 0 點到 4 點之間發佈貼文", + "achievementSummaryHiddenSocialButterflyDay": "在一天內交到 5 個朋友", + "achievementSummaryHiddenSpeedFriend": "在 60 秒內接受好友請求", + "achievementSummaryInitialChat": "第一次使用聊天", + "achievementSummaryInitialFeaturedPost": "讓你的貼文被精選", "achievementSummaryInitialPost": "向 Solar Network 說你好!", - "achievementSummaryInitialPublisher": "並沒有被 Y Combinator 投資。\n建立一個發佈者。", - "achievementSummaryInitialReaction": "第一次對貼文做出反應。", - "achievementSummaryInitialRealmJoin": "加入一個領域。", - "achievementSummaryProfileComplete": "完善個人資料,包括姓名、簡介、頭像、生日、所在地和代詞。", - "achievementSummaryRealmJoin10": "加入 10 個領域。", + "achievementSummaryInitialPublisher": "並沒有被 Y Combinator 投資。\n建立一個發佈者", + "achievementSummaryInitialReaction": "第一次對貼文做出反應", + "achievementSummaryInitialRealmJoin": "加入一個領域", + "achievementSummaryProfileComplete": "完善個人資料,包括姓名、簡介、頭像、生日、所在地和代詞", + "achievementSummaryRealmJoin10": "加入 10 個領域", "achievementSummaryStellarSupporter1": "購買 1 個月的恆星計劃", - "achievementSummaryStellarSupporter12": "購買 12 個月的恆星計劃。", + "achievementSummaryStellarSupporter12": "購買 12 個月的恆星計劃", "achievementSummaryStellarSupporter3": "購買 3 個月的恆星計劃", "achievementSummaryStellarSupporter6": "購買 6 個月的恆星計劃", "achievementSummaryStellarSupporter9": "購買 9 個月的恆星計劃", - "achievementSummaryStreakLogin30": "連續 30 天保持活躍。", - "achievementSummaryStreakLogin365": "連續 365 天保持活躍。", - "achievementSummaryStreakLogin7": "連續 7 天保持活躍。", - "achievementSummaryStreakLogin90": "連續 90 天保持活躍。", - "achievementSummaryStreakPost3": "連續 3 天發佈貼文。", - "achievementSummaryStreakPost30": "連續 30 天發佈貼文。", - "achievementSummaryStreakPost365": "連續 365 天發佈貼文。", - "achievementSummaryStreakPost7": "連續 7 天發佈貼文。", - "achievementSummaryStreakPost90": "連續 90 天發佈貼文。", - "achievementSummaryTopicalPost10": "發佈10篇同時帶有分類和標籤的貼文。", - "achievementSummaryTopicalPost50": "發佈50篇同時帶有分類和標籤的貼文。", + "achievementSummaryStreakLogin30": "連續 30 天保持活躍", + "achievementSummaryStreakLogin365": "連續 365 天保持活躍", + "achievementSummaryStreakLogin7": "連續 7 天保持活躍", + "achievementSummaryStreakLogin90": "連續 90 天保持活躍", + "achievementSummaryStreakPost3": "連續 3 天發佈貼文", + "achievementSummaryStreakPost30": "連續 30 天發佈貼文", + "achievementSummaryStreakPost365": "連續 365 天發佈貼文", + "achievementSummaryStreakPost7": "連續 7 天發佈貼文", + "achievementSummaryStreakPost90": "連續 90 天發佈貼文", + "achievementSummaryTopicalPost10": "發佈10篇同時帶有分類和標籤的貼文", + "achievementSummaryTopicalPost50": "發佈50篇同時帶有分類和標籤的貼文", "achievementTitleBookmark10": "圖書管理員", "achievementTitleBoost50": "訊號塔", "achievementTitleChatroom10": "常客", @@ -1901,6 +1901,7 @@ "leaveRealmHint": "確定要離開此領域嗎?", "leavePublisher": "離開發佈者", "leavePublisherHint": "確定要離開此發佈者嗎?離開後你將無法再管理其內容。", + "level": "等級", "levelProgress": "等級進度", "leveling": "等級", "levelingDescription": "檢視您的升級進度和歷史記錄。", From d82e98944cfdb3975a23d8fecc87935c9d6166e0 Mon Sep 17 00:00:00 2001 From: BluewhaleYF Date: Sun, 11 Oct 2026 13:27:52 +0800 Subject: [PATCH 3/7] :globe_with_meridians: Drop the trailing full stops from two zh-CN hints MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Trim the trailing 。 from createPublisherHint and usernameCannotChangeHint to match the punctuation style used across the other hints. --- assets/i18n/zh-CN.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/assets/i18n/zh-CN.json b/assets/i18n/zh-CN.json index 3bf927a4e..8d2211fb5 100644 --- a/assets/i18n/zh-CN.json +++ b/assets/i18n/zh-CN.json @@ -1167,7 +1167,7 @@ "createNewFolder": "新建文件夹", "createProject": "新建项目", "createPublisher": "创建发布者", - "createPublisherHint": "用于创建帖子、收藏等。", + "createPublisherHint": "用于创建帖子、收藏等", "createPunishment": "创建处罚", "createRealm": "创建领域", "createRealmHint": "建立社区,结识志同道合的朋友。", @@ -4106,7 +4106,7 @@ "userUnmuted": "用户已取消静音", "userNotLoggedIn": "您必须先登录才能执行此操作。", "username": "用户名", - "usernameCannotChangeHint": "用户名创建后无法更改。", + "usernameCannotChangeHint": "用户名创建后无法更改", "usernameColor": "用户名颜色", "usernameLookupHint": "您也可以输入电子邮件地址。", "viewAll": "查看全部", From d0c0a8b1d20358f6929022b074f79bdbf20c2ebc Mon Sep 17 00:00:00 2001 From: BluewhaleYF Date: Sun, 11 Oct 2026 13:31:42 +0800 Subject: [PATCH 4/7] :lipstick: Move the publisher rating card above the hub navigation The rating card sat at the very bottom of the creator hub, below the navigation list. Put it right under the heatmap so the publisher stats and their grade read together before the navigation links. --- lib/creators/screens/hub.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/creators/screens/hub.dart b/lib/creators/screens/hub.dart index 277331371..98d05acf7 100644 --- a/lib/creators/screens/hub.dart +++ b/lib/creators/screens/hub.dart @@ -1026,12 +1026,12 @@ class CreatorHubContentWidget extends HookConsumerWidget { stats: stats, heatmap: publisherHeatmap.value, ).padding(horizontal: 16), - buildNavigationWidget(), if (publisherRatingOverview.value != null) _buildRatingCardStatic( context, publisherRatingOverview.value!, ).padding(horizontal: 16), + buildNavigationWidget(), ], ), ), From 778af949fe91ec6c077d4647f55f67daa1edb4c7 Mon Sep 17 00:00:00 2001 From: BluewhaleYF Date: Sun, 11 Oct 2026 13:36:18 +0800 Subject: [PATCH 5/7] :lipstick: Stop the creator hub app bar tinting when scrolled under The Material 3 scrolled-under elevation blended the surface tint into the app bar, so a coloured scrim appeared over the "Creator Hub" title once the body scrolled beneath it. Pin the bar to colorScheme.surface and drop the tint and the scrolled-under elevation so it stays one flat colour in both light and dark mode. --- lib/creators/screens/hub.dart | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/creators/screens/hub.dart b/lib/creators/screens/hub.dart index 98d05acf7..e3e80d839 100644 --- a/lib/creators/screens/hub.dart +++ b/lib/creators/screens/hub.dart @@ -980,6 +980,12 @@ class CreatorHubContentWidget extends HookConsumerWidget { return AppScaffold( isNoBackground: true, appBar: AppBar( + // Keep the bar a single flat surface: without this the scrolled-under + // elevation tints the bar with the surface tint colour, showing a + // coloured scrim over the title once the body scrolls beneath it. + backgroundColor: Theme.of(context).colorScheme.surface, + surfaceTintColor: Colors.transparent, + scrolledUnderElevation: 0, leading: IconButton( icon: const Icon(Symbols.menu), onPressed: () { From b9bba1b74c326ef67b50538dc5a81ed4a1ff5b27 Mon Sep 17 00:00:00 2001 From: BluewhaleYF Date: Sun, 11 Oct 2026 13:39:28 +0800 Subject: [PATCH 6/7] :globe_with_meridians: Localize the publisher selector placeholder The creator hub publisher switcher fell back to a hard-coded "Select Publisher" when nothing was selected. Route it through a new `selectPublisher` key and add that across locales. Also translate the `clearSelection` entry for ja-JP, ko-KR and zh-OG, which still shipped the English string in the same menu. --- assets/i18n/en-US.json | 1 + assets/i18n/es-ES.json | 1 + assets/i18n/ja-JP.json | 3 ++- assets/i18n/ko-KR.json | 3 ++- assets/i18n/zh-CN.json | 1 + assets/i18n/zh-OG.json | 3 ++- assets/i18n/zh-TW.json | 1 + lib/creators/screens/hub.dart | 2 +- 8 files changed, 11 insertions(+), 4 deletions(-) diff --git a/assets/i18n/en-US.json b/assets/i18n/en-US.json index 058f51b8e..099002086 100644 --- a/assets/i18n/en-US.json +++ b/assets/i18n/en-US.json @@ -3364,6 +3364,7 @@ "selectPool": "Select Pool", "selectPostingPublisher": "Select Default Posting Publisher", "selectProvider": "Select a provider", + "selectPublisher": "Select publisher", "selectRecipient": "Select Recipient", "selectRecipients": "Select Recipients", "selectRecipientsToSendFund": "Select recipients to send the fund to", diff --git a/assets/i18n/es-ES.json b/assets/i18n/es-ES.json index 5c73ea5df..dd66408c9 100644 --- a/assets/i18n/es-ES.json +++ b/assets/i18n/es-ES.json @@ -1769,6 +1769,7 @@ "selectPool": "Select Pool", "selectPostingPublisher": "Select Default Posting Publisher", "selectProvider": "Select a provider", + "selectPublisher": "Seleccionar publisher", "selectRecipient": "Select Recipient", "selectRecipients": "Select Recipients", "selectRecipientsToSendFund": "Select recipients to send the fund to", diff --git a/assets/i18n/ja-JP.json b/assets/i18n/ja-JP.json index 960832c01..ae5af31c3 100644 --- a/assets/i18n/ja-JP.json +++ b/assets/i18n/ja-JP.json @@ -1857,6 +1857,7 @@ "selectPool": "ストレージプールを選択", "selectPostingPublisher": "デフォルト投稿発行者を選択", "selectProvider": "プロバイダーを選択", + "selectPublisher": "パブリッシャーを選択", "selectRecipient": "受取人を選択", "selectRecipients": "受取人を選択", "selectRecipientsToSendFund": "基金を送信する受取人を選択", @@ -2579,7 +2580,7 @@ "clearRealmIdentityHint": "Are you sure you want to clear your realm identity? This will remove your custom nickname and bio for this realm. This action cannot be undone.", "clearRecycledFiles": "Clear Recycled Files", "clearRecycledFilesDescription": "Permanently delete all marked recycled files to free up space.", - "clearSelection": "Clear selection", + "clearSelection": "選択をクリア", "clearedRecycledFilesCount": "Cleared {} recycled files.", "clientMessageId": "Client Message ID: {}", "closeFriendAdded": "Close friend added", diff --git a/assets/i18n/ko-KR.json b/assets/i18n/ko-KR.json index d4a4d14b4..28ca01cc5 100644 --- a/assets/i18n/ko-KR.json +++ b/assets/i18n/ko-KR.json @@ -2098,6 +2098,7 @@ "selectPool": "풀 선택", "selectPostingPublisher": "기본 게시 발행자 선택", "selectProvider": "제공업체 선택", + "selectPublisher": "퍼블리셔 선택", "selectRecipient": "받는 사람 선택", "selectRecipients": "수령인 선택", "selectRecipientsToSendFund": "펀드를 보낼 수령인을 선택하세요", @@ -2870,7 +2871,7 @@ "clearChatIdentityHint": "Are you sure you want to clear your chat identity? This will remove your custom nickname for this chat. This action cannot be undone.", "clearRealmIdentity": "Clear Realm Identity", "clearRealmIdentityHint": "Are you sure you want to clear your realm identity? This will remove your custom nickname and bio for this realm. This action cannot be undone.", - "clearSelection": "Clear selection", + "clearSelection": "선택 지우기", "closeFriendAdded": "Close friend added", "closeFriendRemoved": "Close friend removed", "closePostDetails": "Close post details", diff --git a/assets/i18n/zh-CN.json b/assets/i18n/zh-CN.json index 8d2211fb5..a098a5688 100644 --- a/assets/i18n/zh-CN.json +++ b/assets/i18n/zh-CN.json @@ -3342,6 +3342,7 @@ "selectPool": "选择储存池", "selectPostingPublisher": "选择默认发帖发布者", "selectProvider": "选择一个平台", + "selectPublisher": "选择发布者", "selectRecipient": "选择收件人", "selectRecipients": "选择收款人", "selectRecipientsToSendFund": "选择收款人将支票发送到", diff --git a/assets/i18n/zh-OG.json b/assets/i18n/zh-OG.json index 50c96b235..fb1cb15e5 100644 --- a/assets/i18n/zh-OG.json +++ b/assets/i18n/zh-OG.json @@ -1766,6 +1766,7 @@ "selectPool": "擇池", "selectPostingPublisher": "選擇默認發帖發布者", "selectProvider": "擇一供應者", + "selectPublisher": "選擇發布者", "selectRecipient": "擇受者", "selectRecipients": "擇受者", "selectRecipientsToSendFund": "擇受者以送資", @@ -2555,7 +2556,7 @@ "clearRealmIdentityHint": "Are you sure you want to clear your realm identity? This will remove your custom nickname and bio for this realm. This action cannot be undone.", "clearRecycledFiles": "Clear Recycled Files", "clearRecycledFilesDescription": "Permanently delete all marked recycled files to free up space.", - "clearSelection": "Clear selection", + "clearSelection": "清除選擇", "clearedRecycledFilesCount": "Cleared {} recycled files.", "clientMessageId": "Client Message ID: {}", "closeFriendAdded": "Close friend added", diff --git a/assets/i18n/zh-TW.json b/assets/i18n/zh-TW.json index a9206d157..48f19ea7b 100644 --- a/assets/i18n/zh-TW.json +++ b/assets/i18n/zh-TW.json @@ -3187,6 +3187,7 @@ "selectPool": "選擇儲存池", "selectPostingPublisher": "選擇預設發帖發佈者", "selectProvider": "選擇一個平臺", + "selectPublisher": "選擇發佈者", "selectRecipient": "選擇收件人", "selectRecipients": "選擇收款人", "selectRecipientsToSendFund": "選擇收款人將支票傳送到", diff --git a/lib/creators/screens/hub.dart b/lib/creators/screens/hub.dart index e3e80d839..de2bb19fe 100644 --- a/lib/creators/screens/hub.dart +++ b/lib/creators/screens/hub.dart @@ -399,7 +399,7 @@ class PublisherSelector extends StatelessWidget { ), Flexible( child: Text( - isValueValid ? currentValue.nick : 'Select Publisher', + isValueValid ? currentValue.nick : 'selectPublisher'.tr(), style: TextStyle( fontSize: 13, fontWeight: FontWeight.w500, From 5b216b326a47bc3ef39a912453575916017bdde0 Mon Sep 17 00:00:00 2001 From: BluewhaleYF Date: Sun, 11 Oct 2026 13:54:43 +0800 Subject: [PATCH 7/7] :lipstick: Apply the theme colour to portrait top bars The creator hub and the categories & tags screens kept a plain surface app bar on narrow layouts. Give them the theme colour on narrow (portrait) screens, with matching on-colour foreground, title and tab indicator, while the wide split view keeps its surface bar. Surface tint and scrolled-under elevation stay off so no coloured scrim appears while scrolling. --- lib/creators/screens/hub.dart | 20 +++++++++++--- lib/posts/screens/post_categories_list.dart | 30 ++++++++++++++++----- 2 files changed, 40 insertions(+), 10 deletions(-) diff --git a/lib/creators/screens/hub.dart b/lib/creators/screens/hub.dart index de2bb19fe..47c06cfee 100644 --- a/lib/creators/screens/hub.dart +++ b/lib/creators/screens/hub.dart @@ -980,10 +980,22 @@ class CreatorHubContentWidget extends HookConsumerWidget { return AppScaffold( isNoBackground: true, appBar: AppBar( - // Keep the bar a single flat surface: without this the scrolled-under - // elevation tints the bar with the surface tint colour, showing a - // coloured scrim over the title once the body scrolls beneath it. - backgroundColor: Theme.of(context).colorScheme.surface, + // The narrow (portrait) layout follows the app's themed top bars and + // uses the theme colour; the wide split view keeps a plain surface bar. + // Either way the surface tint and scrolled-under elevation stay off so + // no coloured scrim appears over the title while scrolling. + backgroundColor: isWideScreen(context) + ? Theme.of(context).colorScheme.surface + : Theme.of(context).colorScheme.primary, + foregroundColor: isWideScreen(context) + ? Theme.of(context).colorScheme.onSurface + : Theme.of(context).colorScheme.onPrimary, + // The theme pins the title to onSurface, so re-tint it to match the bar. + titleTextStyle: Theme.of(context).appBarTheme.titleTextStyle?.copyWith( + color: isWideScreen(context) + ? Theme.of(context).colorScheme.onSurface + : Theme.of(context).colorScheme.onPrimary, + ), surfaceTintColor: Colors.transparent, scrolledUnderElevation: 0, leading: IconButton( diff --git a/lib/posts/screens/post_categories_list.dart b/lib/posts/screens/post_categories_list.dart index b9db65b9e..67ab4c7bd 100644 --- a/lib/posts/screens/post_categories_list.dart +++ b/lib/posts/screens/post_categories_list.dart @@ -2,6 +2,7 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:auto_route/auto_route.dart'; import 'package:material_ui/material_ui.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; +import 'package:island/core/services/responsive.dart'; import 'package:island/posts/pods/post_categories.dart'; import 'package:island/route.gr.dart'; import 'package:island/shared/widgets/app_scaffold.dart'; @@ -14,28 +15,45 @@ class PostCategoriesListScreen extends HookConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { + final theme = Theme.of(context); + final isWide = isWideScreen(context); + // Narrow (portrait) bars follow the app's themed top bars and use the theme + // colour; the wide split view keeps a plain surface bar, matching the + // creator hub. + final barColor = isWide + ? theme.colorScheme.surface + : theme.colorScheme.primary; + final barForeground = isWide + ? theme.colorScheme.onSurface + : theme.colorScheme.onPrimary; + return DefaultTabController( length: 2, child: AppScaffold( isNoBackground: false, appBar: AppBar( + backgroundColor: barColor, + foregroundColor: barForeground, + // The theme pins the title to onSurface, so re-tint it to match. + titleTextStyle: theme.appBarTheme.titleTextStyle?.copyWith( + color: barForeground, + ), title: const Text('categoriesAndTags').tr(), bottom: TabBar( + // Keep the default indicator on the surface bar; on the themed bar + // it must switch to the on-colour to stay visible. + indicatorColor: isWide ? null : theme.colorScheme.onPrimary, tabs: [ Tab( child: Text( 'categories'.tr(), - style: TextStyle( - color: Theme.of(context).appBarTheme.foregroundColor, - ), + style: TextStyle(color: barForeground), ), ), Tab( child: Text( 'tags'.tr(), - style: TextStyle( - color: Theme.of(context).appBarTheme.foregroundColor, - ), + style: TextStyle(color: barForeground), ), ), ],