2023-03-04 22:25:34 -08:00
|
|
|
|
// MARK: Common strings
|
|
|
|
|
"action.cancel" = "取消";
|
|
|
|
|
"action.delete" = "刪除";
|
|
|
|
|
"action.save" = "儲存";
|
|
|
|
|
"action.done" = "結束";
|
|
|
|
|
"action.retry" = "重試";
|
|
|
|
|
"action.view.error" = "檢視錯誤";
|
|
|
|
|
|
|
|
|
|
"alert.button.ok" = "OK";
|
|
|
|
|
"alert.error" = "錯誤!";
|
|
|
|
|
|
|
|
|
|
"placeholder.loading.long" = "下載,下載,再下載⋯";
|
|
|
|
|
"placeholder.loading.short" = "下載中⋯";
|
|
|
|
|
|
|
|
|
|
"see-more" = "更多";
|
|
|
|
|
|
|
|
|
|
// MARK: Add Account
|
|
|
|
|
"account.add.error.instance-not-supported" = "此伺服器現不支援。";
|
|
|
|
|
"account.add.navigation-title" = "新增帳戶";
|
|
|
|
|
"account.add.sign-in" = "登入";
|
|
|
|
|
|
|
|
|
|
// MARK: Enums
|
|
|
|
|
"enum.avatar-position.leading" = "前導";
|
|
|
|
|
"enum.avatar-position.top" = "居頂";
|
|
|
|
|
"enum.avatar-shape.circle" = "圓形";
|
|
|
|
|
"enum.avatar-shape.rounded" = "圓角";
|
|
|
|
|
"enum.durations.infinite" = "永久";
|
|
|
|
|
"enum.durations.custom" = "自定";
|
|
|
|
|
"enum.durations.fiveMinutes" = "五分鐘";
|
|
|
|
|
"enum.durations.thirtyMinutes" = "半小時";
|
|
|
|
|
"enum.durations.oneHour" = "一小時";
|
|
|
|
|
"enum.durations.sixHours" = "六小時";
|
|
|
|
|
"enum.durations.twelveHours" = "半天";
|
|
|
|
|
"enum.durations.oneDay" = "一天";
|
|
|
|
|
"enum.durations.threeDays" = "三天";
|
|
|
|
|
"enum.durations.sevenDays" = "一星期";
|
|
|
|
|
"enum.status-actions-display.all" = "圖示和數量";
|
|
|
|
|
"enum.status-actions-display.no-buttons" = "無";
|
|
|
|
|
"enum.status-actions-display.only-buttons" = "圖示";
|
|
|
|
|
"enum.status-display-style.compact" = "小";
|
|
|
|
|
"enum.status-display-style.medium" = "中";
|
|
|
|
|
"enum.status-display-style.large" = "大";
|
|
|
|
|
"enum.swipeactions.icon-with-text" = "圖文";
|
|
|
|
|
"enum.swipeactions.icon-only" = "圖示";
|
|
|
|
|
|
|
|
|
|
// MARK: Instances
|
|
|
|
|
"instance.info.domains" = "網域";
|
|
|
|
|
"instance.info.email" = "電郵";
|
|
|
|
|
"instance.info.name" = "名稱";
|
|
|
|
|
"instance.info.navigation-title" = "伺服器資訊";
|
|
|
|
|
"instance.info.posts" = "嘟文";
|
|
|
|
|
"instance.info.section.info" = "伺服器資訊";
|
|
|
|
|
"instance.info.section.rules" = "伺服器規章";
|
|
|
|
|
"instance.info.users" = "用戶";
|
|
|
|
|
"instance.info.version" = "版本";
|
|
|
|
|
"instance.list.posts-%@" = "%@ 嘟文";
|
|
|
|
|
"instance.list.users-%@" = "%@ 用戶";
|
|
|
|
|
"instance.suggestions" = "推薦";
|
|
|
|
|
"instance.url" = "伺服器 URL";
|
|
|
|
|
|
|
|
|
|
// MARK: Menu
|
|
|
|
|
"menu.new-post" = "新嘟文";
|
|
|
|
|
"menu.font" = "字體";
|
|
|
|
|
"menu.font.bigger" = "放大";
|
|
|
|
|
"menu.font.smaller" = "縮小";
|
|
|
|
|
|
|
|
|
|
// MARK: Settings
|
|
|
|
|
"settings.account.add" = "新增帳戶";
|
|
|
|
|
"settings.app.icon" = "App 圖像";
|
|
|
|
|
"settings.app.icon.navigation-title" = "圖像";
|
|
|
|
|
"settings.app.icon.official" = "官方圖像";
|
|
|
|
|
"settings.app.icon.designed-by" = "圖像作者";
|
|
|
|
|
"settings.app.source" = "程式原始碼(GitHub)";
|
|
|
|
|
"settings.app.support" = "贊助本程式";
|
|
|
|
|
"settings.app.about" = "關於";
|
|
|
|
|
"settings.display.example-toot" = "嘟文範例";
|
|
|
|
|
"settings.display.font" = "時間軸字體";
|
|
|
|
|
"settings.display.font.system" = "系統";
|
|
|
|
|
"settings.display.font.custom" = "自定";
|
|
|
|
|
"settings.display.font.scaling-%@" = "字體縮放:%@";
|
2023-03-26 18:51:15 +02:00
|
|
|
|
"settings.display.font.line-spacing-%@" = "Line Spacing: %@";
|
2023-03-04 22:25:34 -08:00
|
|
|
|
"settings.display.avatar.position" = "頭像位置";
|
|
|
|
|
"settings.display.avatar.shape" = "頭像形狀";
|
|
|
|
|
"settings.display.full-username" = "顯示用戶全名";
|
|
|
|
|
"settings.display.navigation-title" = "顯示設定";
|
|
|
|
|
"settings.display.restore" = "還原預設值";
|
|
|
|
|
"settings.display.section.display" = "顯示";
|
|
|
|
|
"settings.display.section.theme" = "風格";
|
|
|
|
|
"settings.display.colors.apply" = "採用自定顏色";
|
|
|
|
|
"settings.display.section.theme.footer" = "自定顏色需先關閉「符合系統」選項";
|
|
|
|
|
"settings.display.status.action-buttons" = "狀態列按鈕";
|
|
|
|
|
"settings.display.status.media-style" = "狀態媒體式樣";
|
|
|
|
|
"settings.display.translate-button" = "顯示翻譯按紐";
|
|
|
|
|
"settings.display.theme.background" = "背景顏色";
|
|
|
|
|
"settings.display.theme.secondary-background" = "第二背景顏色";
|
|
|
|
|
"settings.display.theme.text-color" = "本文顏色";
|
|
|
|
|
"settings.display.theme.tint" = "色調";
|
|
|
|
|
"settings.display.theme.systemColor" = "符合系統";
|
|
|
|
|
"settings.general.browser" = "瀏覽器";
|
|
|
|
|
"settings.general.browser.in-app" = "內建瀏覽器";
|
|
|
|
|
"settings.general.browser.in-app.readerview" = "內建閱讀器";
|
|
|
|
|
"settings.general.browser.system" = "系統瀏覽器";
|
|
|
|
|
"settings.general.display" = "顯示設定";
|
|
|
|
|
"settings.general.instance" = "伺服器資訊";
|
|
|
|
|
"settings.general.push-notifications" = "通知";
|
|
|
|
|
"settings.general.remote-timelines" = "他站時間軸";
|
|
|
|
|
"settings.push.boosts" = "轉嘟";
|
|
|
|
|
"settings.push.favorites" = "最愛";
|
|
|
|
|
"settings.push.follows" = "跟隨";
|
|
|
|
|
"settings.push.main-toggle" = "通知";
|
|
|
|
|
"settings.push.main-toggle.description" = "有新活動時通知";
|
|
|
|
|
"settings.push.mentions" = "提及";
|
|
|
|
|
"settings.push.navigation-title" = "通知";
|
|
|
|
|
"settings.push.new-posts" = "新嘟文";
|
|
|
|
|
"settings.push.polls" = "票選結果";
|
|
|
|
|
"settings.general.content" = "內容設定";
|
|
|
|
|
"settings.system" = "系統設定";
|
|
|
|
|
"settings.content.navigation-title" = "內容設定";
|
|
|
|
|
"settings.content.boosts" = "轉嘟";
|
|
|
|
|
"settings.content.collapse-long-posts" = "縮限長文";
|
|
|
|
|
"settings.content.collapse-long-posts-hint" = "「縮限長文」將只顯示數行文字,另可按紐閱讀全文";
|
|
|
|
|
"settings.content.hide-repeated-boosts" = "隱藏多重轉嘟";
|
|
|
|
|
"settings.content.instance-settings" = "伺服器內容設定";
|
|
|
|
|
"settings.content.use-instance-settings" = "沿用伺服器設定";
|
|
|
|
|
"settings.content.expand-spoilers" = "顯示所有敏感嘟文";
|
|
|
|
|
"settings.content.expand-media" = "媒體顯示";
|
|
|
|
|
"settings.content.default-sensitive" = "媒體一概標示為敏感";
|
|
|
|
|
"settings.content.default-visibility" = "嘟文能見度";
|
|
|
|
|
"settings.content.media" = "媒體";
|
|
|
|
|
"settings.content.media.show.alt" = "顯示圖片描述";
|
|
|
|
|
"settings.content.reading" = "閱讀";
|
|
|
|
|
"settings.content.posting" = "發表";
|
|
|
|
|
"enum.expand-media.show" = "全部顯示";
|
|
|
|
|
"enum.expand-media.hide" = "全部隱藏";
|
|
|
|
|
"enum.expand-media.hide-sensitive" = "隱藏敏感題材";
|
|
|
|
|
"settings.section.accounts" = "帳號";
|
|
|
|
|
"settings.section.app" = "App";
|
|
|
|
|
"settings.section.app.footer %@" = "App 版本:%@";
|
|
|
|
|
"settings.section.general" = "一般";
|
|
|
|
|
"settings.support.alert.error.message" = "選購時發生錯誤,請再試一次。";
|
|
|
|
|
"settings.support.alert.message" = "非常感謝您的捐贈!";
|
|
|
|
|
"settings.support.alert.title" = "感謝!";
|
|
|
|
|
"settings.support.message-from-dev" = "您好!我是 Thomas,我愛寫開源碼程式。Ice Cubes 是我最引以為傲的作品之一,但是老實說因為 Mastodon 和社交媒體的日新月異,也是最需要維護的。您如果愛用 Ice Cubes,請考慮贊助我。這將讓我很開心,也幫助我繼續維護這個軟體。 🚀";
|
|
|
|
|
"settings.support.navigation-title" = "支援 Ice Cubes";
|
|
|
|
|
"settings.support.one.subtitle" = "小而可愛,也好吃!";
|
|
|
|
|
"settings.support.one.title" = "🍬 小額捐贈";
|
|
|
|
|
"settings.support.placeholder.loading-subtitle" = "下載中⋯";
|
|
|
|
|
"settings.support.three.subtitle" = "您太狂了,感激不盡!";
|
|
|
|
|
"settings.support.three.title" = "🤯 慷慨捐贈";
|
|
|
|
|
"settings.support.two.subtitle" = "一杯好咖啡是我的最愛 ❤️";
|
|
|
|
|
"settings.support.two.title" = "☕️ 爽口捐贈";
|
|
|
|
|
"settings.support.four.title" = "👽 超級捐贈";
|
|
|
|
|
"settings.support.four.subtitle" = "這將大大有助於 Ice Cubes 持續運行!";
|
|
|
|
|
"settings.support.supporter.title" = " 成為支持者!";
|
|
|
|
|
"settings.support.supporter.subtitle" = "您若每月捐贈給 Ice Cubes 就能成為支持者,更能在個人檔案裡看到驗證徽章。限您 👀 見。";
|
|
|
|
|
"settings.support.supporter.subscribed" = " 感謝您成為 Ice Cubes 支持者!";
|
|
|
|
|
"settings.support.supporter.subscription-info"= "除非在訂閱期滿前一天取消,訂閱將自動繼續。";
|
|
|
|
|
"settings.support.restore-purchase.button" = "還原已購項目";
|
|
|
|
|
"settings.support.restore-purchase.explanation" = "若未自動同步,可以手動還原您的支持者訂閱。";
|
|
|
|
|
"settings.support.privacy-policy" = "隱私政策";
|
|
|
|
|
"settings.support.terms-of-use" = "使用條款";
|
|
|
|
|
"settings.timeline.add" = "新增時間軸";
|
|
|
|
|
"settings.title" = "設定";
|
|
|
|
|
"settings.rate" = "給 Ice Cubes 評分";
|
|
|
|
|
"settings.section.other" = "其他";
|
|
|
|
|
"settings.other.hide-openai" = "啟用 🤖 寫作助手";
|
|
|
|
|
"settings.other.social-keyboard" = "啟用社交鍵盤";
|
|
|
|
|
"settings.other.sound-effect" = "啟用音效";
|
|
|
|
|
"settings.push.duplicate.title" = "修理重複通知";
|
|
|
|
|
"settings.push.duplicate.footer" = "收到重複通知嗎?用這個魔術按鈕修復";
|
|
|
|
|
"settings.push.duplicate.button.fix" = "🪄 修復";
|
|
|
|
|
"settings.other.autoplay-video" = "自動播放視訊";
|
|
|
|
|
"settings.about.built-with" = "Ice Cubes 運用下列開源碼:";
|
|
|
|
|
"settings.about.title" = "Ice Cubes";
|
|
|
|
|
|
|
|
|
|
"settings.account.cached-posts-%@" = "快取嘟文:%@";
|
|
|
|
|
"settings.account.action.delete-cache" = "清除快取";
|
|
|
|
|
|
|
|
|
|
"settings.general.haptic" = "觸覺回饋";
|
|
|
|
|
"settings.haptic.navigation-title" = "觸覺設定";
|
|
|
|
|
"settings.haptic.timeline" = "時間軸";
|
|
|
|
|
"settings.haptic.tab-selection" = "頁籤選擇";
|
|
|
|
|
"settings.haptic.buttons" = "按紐";
|
|
|
|
|
|
|
|
|
|
"settings.display.show-tab-label" = "顯示頁籤名稱";
|
|
|
|
|
|
|
|
|
|
"settings.display.show-ipad-column" = "啟用邊欄";
|
|
|
|
|
|
|
|
|
|
"settings.general.swipeactions" = "滑動功能";
|
|
|
|
|
"settings.swipeactions.appearance" = "外觀";
|
|
|
|
|
"settings.swipeactions.navigation-title" = "滑動功能";
|
|
|
|
|
"settings.swipeactions.primary" = "主功能";
|
|
|
|
|
"settings.swipeactions.secondary" = "副功能";
|
|
|
|
|
"settings.swipeactions.status" = "發表";
|
|
|
|
|
"settings.swipeactions.status.action.bookmark" = "書籤";
|
|
|
|
|
"settings.swipeactions.status.action.boost" = "轉嘟";
|
|
|
|
|
"settings.swipeactions.status.action.favorite" = "最愛";
|
|
|
|
|
"settings.swipeactions.status.action.none" = "無";
|
|
|
|
|
"settings.swipeactions.status.action.quote" = "引述";
|
|
|
|
|
"settings.swipeactions.status.action.reply" = "回覆";
|
|
|
|
|
"settings.swipeactions.status.explanation" = "滑動功能在嘟文上左右滑動使用。副功能需啟動主功能時才能使用。";
|
|
|
|
|
"settings.swipeactions.status.leading" = "右滑";
|
|
|
|
|
"settings.swipeactions.status.trailing" = "左滑";
|
|
|
|
|
"settings.swipeactions.use-theme-colors" = "使用風格顏色";
|
|
|
|
|
"settings.swipeactions.use-theme-colors-explanation" = "用風格顏色代替預設顏色";
|
|
|
|
|
"settings.swipeactions.icon-style" = "圖示式樣";
|
|
|
|
|
|
|
|
|
|
"settings.display.section.font" = "字體";
|
|
|
|
|
|
|
|
|
|
"settings.section.cache" = "快取";
|
|
|
|
|
"settings.cache-media.clear" = "清除媒體快取";
|
|
|
|
|
|
2023-03-14 18:50:19 +01:00
|
|
|
|
"settings.general.translate" = "Translation Settings";
|
|
|
|
|
"settings.translation.always-deepl" = "Always Translate using DeepL";
|
|
|
|
|
"settings.translation.user-api-key" = "DeepL API Key";
|
|
|
|
|
"settings.translation.api-key-type" = "Type of the Key";
|
|
|
|
|
"settings.translation.needed-message" = "This feature requires a DeepL API key";
|
|
|
|
|
|
2023-03-04 22:25:34 -08:00
|
|
|
|
// MARK: Tabs
|
|
|
|
|
"tab.explore" = "探索";
|
|
|
|
|
"tab.federated" = "聯邦";
|
|
|
|
|
"tab.local" = "本站";
|
|
|
|
|
"tab.messages" = "私訊";
|
|
|
|
|
"tab.notifications" = "通知";
|
|
|
|
|
"tab.settings" = "設定";
|
|
|
|
|
"tab.timeline" = "時間軸";
|
|
|
|
|
"tab.trending" = "流行";
|
|
|
|
|
"tab.profile" = "個人檔案";
|
|
|
|
|
|
|
|
|
|
// MARK: Timeline
|
|
|
|
|
"timeline.%@-is-valid" = "%@ 有效";
|
|
|
|
|
"timeline.add-remote.title" = "新增他站時間軸";
|
|
|
|
|
"timeline.add.action.add" = "新增";
|
|
|
|
|
"timeline.filter.add-local" = "新增本站時間軸";
|
|
|
|
|
"timeline.filter.lists" = "列表";
|
|
|
|
|
"timeline.filter.local" = "本站時間軸";
|
|
|
|
|
"timeline.filter.tags" = "跟隨標籤";
|
|
|
|
|
|
|
|
|
|
// MARK: Package: AppAccount
|
|
|
|
|
"app-account.button.add" = "新增帳號";
|
|
|
|
|
|
|
|
|
|
// MARK: Package: Account
|
|
|
|
|
"account.action.add-remove-list" = "從列表中新增或刪除";
|
|
|
|
|
"account.action.edit-info" = "編輯個人檔案";
|
|
|
|
|
"account.action.mention" = "提及";
|
|
|
|
|
"account.action.message" = "私訊";
|
|
|
|
|
"account.action.notify-enable" = "啟用通知";
|
|
|
|
|
"account.action.notify-disable" = "停用通知";
|
|
|
|
|
"account.action.reboosts-show" = "顯示轉嘟";
|
|
|
|
|
"account.action.reboosts-hide" = "隱藏轉嘟";
|
|
|
|
|
"account.action.block" = "封鎖";
|
|
|
|
|
"account.action.unblock" = "解封";
|
|
|
|
|
"account.action.mute" = "靜音";
|
|
|
|
|
"account.action.unmute" = "取消靜音";
|
|
|
|
|
"account.action.share" = "分享此帳號";
|
|
|
|
|
"account.boosted-by" = "轉嘟者";
|
|
|
|
|
"account.detail.about" = "關於";
|
|
|
|
|
"account.detail.familiar-followers" = "其他跟隨者";
|
|
|
|
|
"account.detail.n-fields %lld" = "%lld 欄";
|
|
|
|
|
"account.detail.featured-tags-n-posts %lld" = "%lld 嘟文";
|
|
|
|
|
"account.edit.about" = "關於";
|
|
|
|
|
"account.edit.account-settings.bot" = "機器人帳號";
|
|
|
|
|
"account.edit.account-settings.discoverable" = "公開";
|
|
|
|
|
"account.edit.account-settings.private" = "私密";
|
|
|
|
|
"account.edit.account-settings.section-title" = "帳號設定";
|
|
|
|
|
"account.edit.display-name" = "顯示名稱";
|
|
|
|
|
"account.edit.error.save.message" = "儲存個人檔案時發生錯誤,請再試一次。";
|
|
|
|
|
"account.edit.error.save.title" = "儲存個人檔案時發生錯誤";
|
|
|
|
|
"account.edit.navigation-title" = "編輯個人檔案";
|
|
|
|
|
"account.edit.post-settings.privacy" = "預設隱私";
|
|
|
|
|
"account.edit.post-settings.section-title" = "嘟文設定";
|
|
|
|
|
"account.edit.post-settings.sensitive" = "敏感內容";
|
|
|
|
|
|
|
|
|
|
"account.edit.metadata-section-title" = "個人檔案元資料";
|
|
|
|
|
"account.edit.metadata-name-placeholder" = "標示";
|
|
|
|
|
"account.edit.metadata-value-placeholder" = "內容";
|
|
|
|
|
"account.edit.add-metadata-button" = "新增元資料";
|
|
|
|
|
|
|
|
|
|
"account.favorited-by" = "加入最愛";
|
|
|
|
|
"account.follow.follow" = "跟隨";
|
|
|
|
|
"account.follow.following" = "已跟隨";
|
|
|
|
|
"account.follow.requested" = "已申請";
|
|
|
|
|
"account.follow-request.accept" = "接受";
|
|
|
|
|
"account.follow-request.reject" = "拒絕";
|
|
|
|
|
"account.follow-requests.pending-requests" = "待辦申請";
|
|
|
|
|
"account.follow-requests.instructions" = "未接受前申請者無法見到您的嘟文。";
|
|
|
|
|
"account.followers" = "跟隨者";
|
|
|
|
|
"account.following" = "正跟隨";
|
|
|
|
|
"account.list.create" = "新增列表";
|
|
|
|
|
"account.list.create.confirm" = "新增列表";
|
|
|
|
|
"account.list.create.description" = "輸入列表名稱";
|
|
|
|
|
"account.list.delete" = "刪除列表";
|
|
|
|
|
"account.list.name" = "列表名稱";
|
|
|
|
|
"account.post.pinned" = "釘選嘟文";
|
|
|
|
|
"account.posts" = "嘟文";
|
|
|
|
|
"account.relation.follows-you" = "跟隨了您";
|
|
|
|
|
"account.joined" = "加入日期";
|
|
|
|
|
"account.action.logout" = "登出帳號";
|
|
|
|
|
"account.action.more" = "更多設定";
|
|
|
|
|
|
|
|
|
|
"account.relation.note.edit" = "編輯備註";
|
|
|
|
|
"account.relation.note.edit.placeholder" = "輸入備註";
|
|
|
|
|
"account.relation.note.edit.error.save.message" = "儲存備註時發生錯誤,請再試一次。";
|
|
|
|
|
"account.relation.note.edit.error.save.title" = "儲存備註時發生錯誤";
|
|
|
|
|
"account.relation.note.label" = "備註:";
|
|
|
|
|
|
|
|
|
|
// MARK: Package: Conversations
|
|
|
|
|
"conversations.action.delete" = "刪除";
|
|
|
|
|
"conversations.action.mark-read" = "標示為已讀";
|
|
|
|
|
"conversations.action.view-detail" = "顯示詳情";
|
|
|
|
|
"conversations.empty.message" = "在社交媒體上找尋滿足嗎?您的私訊和私人提及都在這裡。聊個開心! 📱❤️";
|
|
|
|
|
"conversations.empty.title" = "零收件匣";
|
|
|
|
|
"conversations.error.button" = "重試";
|
|
|
|
|
"conversations.error.message" = "下載私訊時發生錯誤";
|
|
|
|
|
"conversations.error.title" = "發生錯誤";
|
|
|
|
|
"conversations.navigation-title" = "私訊";
|
|
|
|
|
"conversations.new.message.placeholder" = "新私訊";
|
|
|
|
|
"conversations.latest.message" = "最新私訊";
|
|
|
|
|
|
|
|
|
|
// MARK: Package: DesignSystem
|
|
|
|
|
"design.tag.n-posts-from-n-participants %lld %lld" = "%lld 篇嘟文,%lld 位參與者";
|
|
|
|
|
"design.theme.navigation-title" = "選擇風格";
|
|
|
|
|
"design.theme.toots-preview" = "嘟文預覽";
|
|
|
|
|
|
|
|
|
|
// MARK: Package: Explore
|
|
|
|
|
"explore.navigation-title" = "探索";
|
|
|
|
|
"explore.search.message-%@" = "從這裡可以搜尋 %@ 裡的任何訊息";
|
|
|
|
|
"explore.search.prompt" = "搜尋用戶、嘟文、或標籤";
|
|
|
|
|
"explore.search.title" = "搜尋本站";
|
|
|
|
|
"explore.search.empty.message" = "搜尋無結果,請試其他查詢";
|
|
|
|
|
"explore.search.empty.title" = "搜尋無結果";
|
|
|
|
|
"explore.section.posts" = "嘟文";
|
|
|
|
|
"explore.section.suggested-users" = "推薦用戶";
|
|
|
|
|
"explore.section.tags" = "標籤";
|
|
|
|
|
"explore.section.trending.links" = "流行連結";
|
|
|
|
|
"explore.section.trending.posts" = "流行嘟文";
|
|
|
|
|
"explore.section.trending.tags" = "流行標籤";
|
|
|
|
|
"explore.section.users" = "用戶";
|
|
|
|
|
|
|
|
|
|
// MARK: Package: Env
|
|
|
|
|
"env.poll-vote-frequency.one" = "單一選擇";
|
|
|
|
|
"env.poll-vote-frequency.multiple" = "多重選擇";
|
|
|
|
|
|
|
|
|
|
// MARK: Package: Lists
|
|
|
|
|
"lists.add-remove-%@" = "新增或刪除 %@";
|
|
|
|
|
"lists.create" = "新增列表";
|
|
|
|
|
"lists.create.confirm" = "新增列表";
|
|
|
|
|
"lists.edit.users-in-list" = "列表中用戶";
|
|
|
|
|
"lists.name" = "列表名稱";
|
|
|
|
|
"lists.name.message" = "輸入列表名稱";
|
|
|
|
|
|
|
|
|
|
// MARK: Package: Notifications
|
|
|
|
|
"notifications.empty.message" = "通知?什麼通知?您的通知收件匣空空如也,太棒了! 📱😎";
|
|
|
|
|
"notifications.empty.title" = "無通知";
|
|
|
|
|
"notifications.error.message" = "下載通知時發生錯誤,請再試一次。";
|
|
|
|
|
"notifications.error.title" = "下載通知時發生錯誤";
|
|
|
|
|
"notifications.label.favorite %lld" = "把您的嘟文加入了最愛";
|
|
|
|
|
"notifications.label.follow %lld" = "跟隨了您";
|
|
|
|
|
"notifications.label.mention %lld" = "提及了您";
|
|
|
|
|
"notifications.label.reblog %lld" = "轉嘟了您的嘟文";
|
|
|
|
|
"notifications.label.poll" = "投票結束";
|
|
|
|
|
"notifications.label.follow-request" = "申請跟隨您";
|
|
|
|
|
"notifications.label.status" = "發表了嘟文";
|
|
|
|
|
"notifications.label.update" = "編輯了嘟文";
|
|
|
|
|
"notifications.menu-title.favorite" = "最愛";
|
|
|
|
|
"notifications.menu-title.follow" = "跟隨";
|
|
|
|
|
"notifications.menu-title.follow-request" = "跟隨申請";
|
|
|
|
|
"notifications.menu-title.mention" = "提及";
|
|
|
|
|
"notifications.menu-title.poll" = "投票";
|
|
|
|
|
"notifications.menu-title.reblog" = "轉嘟";
|
|
|
|
|
"notifications.menu-title.status" = "嘟文";
|
|
|
|
|
"notifications.menu-title.update" = "嘟文更新";
|
|
|
|
|
"notifications.navigation-title" = "所有通知";
|
|
|
|
|
"notifications.tab.all" = "所有";
|
|
|
|
|
"notifications.tab.mentions" = "提及";
|
|
|
|
|
|
|
|
|
|
"notifications.label.status.push" = "🖊️ 發表了:";
|
|
|
|
|
"notifications.label.reblog.push" = "🚀 轉嘟了:";
|
|
|
|
|
"notifications.label.follow.push" = "👋 跟隨了您:";
|
|
|
|
|
"notifications.label.follow-request.push" = "🔒 申請跟隨您:";
|
|
|
|
|
"notifications.label.favorite.push" = "⭐️ 加入了最愛:";
|
|
|
|
|
"notifications.label.poll.push" = "📈 投票結束:";
|
|
|
|
|
"notifications.label.update.push" = "更新了:";
|
|
|
|
|
|
|
|
|
|
// MARK: Package: Timeline
|
|
|
|
|
"timeline.federated" = "聯邦";
|
|
|
|
|
"timeline.latest" = "跳至最新";
|
|
|
|
|
"timeline.home" = "首頁";
|
|
|
|
|
"timeline.local" = "本站";
|
|
|
|
|
"timeline.n-recent-from-n-participants %lld %lld" = "%lld 篇新嘟文,%lld 位參與者";
|
|
|
|
|
"timeline.trending" = "流行";
|
|
|
|
|
"timeline.add.url" = "伺服器 URL";
|
|
|
|
|
|
|
|
|
|
// MARK: Package: Status
|
|
|
|
|
"status.action.translate" = "翻譯";
|
|
|
|
|
"status.action.translated-label-%@" = "翻譯服務 %@";
|
|
|
|
|
"status.action.translated-label-from-%@-%@" = "從 %@ 以 %@ 翻譯";
|
|
|
|
|
"status.action.bookmark" = "書籤";
|
|
|
|
|
"status.action.boost" = "轉嘟";
|
|
|
|
|
"status.action.boost-to-followers" = "轉嘟給跟隨者";
|
|
|
|
|
"status.action.copy-text" = "拷貝本文";
|
|
|
|
|
"status.action.copy-link" = "拷貝連結";
|
|
|
|
|
"status.action.delete" = "刪除";
|
|
|
|
|
"status.action.delete.confirm.title" = "確認";
|
|
|
|
|
"status.action.delete.confirm.message" = "您確定要刪除本嘟文?";
|
|
|
|
|
"status.action.edit" = "編輯";
|
|
|
|
|
"status.action.favorite" = "最愛";
|
|
|
|
|
"status.action.mention" = "提及";
|
|
|
|
|
"status.action.message" = "私訊";
|
|
|
|
|
"status.action.pin" = "釘選";
|
|
|
|
|
"status.action.post" = "嘟文";
|
|
|
|
|
"status.action.quote" = "引述本嘟文";
|
|
|
|
|
"status.action.reply" = "回覆";
|
|
|
|
|
"status.action.section.your-post" = "您的嘟文";
|
|
|
|
|
"status.action.share" = "分享本嘟文";
|
|
|
|
|
"status.action.share-link" = "分享嘟文連結";
|
|
|
|
|
"status.action.share-image" = "用影像分享本嘟文";
|
|
|
|
|
"status.action.share-title" = "分享";
|
|
|
|
|
"status.action.unbookmark" = "取消書籤";
|
|
|
|
|
"status.action.unboost" = "取消轉嘟";
|
|
|
|
|
"status.action.unfavorite" = "取消最愛";
|
|
|
|
|
"status.action.unpin" = "取消釘選";
|
|
|
|
|
"status.action.view-in-browser" = "在瀏覽器裡開啟";
|
|
|
|
|
"status.card.share" = "分享本連結";
|
|
|
|
|
"status.card.copy" = "拷貝本連結";
|
|
|
|
|
"status.draft.delete" = "刪除草稿";
|
|
|
|
|
"status.draft.save" = "儲存草稿";
|
|
|
|
|
"status.editor.ai-prompt.correct" = "更正";
|
2023-03-09 13:46:04 +01:00
|
|
|
|
"status.editor.ai-prompt.add-tags" = "Add #Tags in place";
|
|
|
|
|
"status.editor.ai-prompt.insert-tags" = "Add #Tags after my text";
|
2023-03-04 22:25:34 -08:00
|
|
|
|
"status.editor.ai-prompt.emphasize" = "強調";
|
|
|
|
|
"status.editor.ai-prompt.fit" = "精簡";
|
|
|
|
|
"status.editor.description.add" = "新增描述";
|
|
|
|
|
"status.editor.description.edit" = "編輯描述";
|
|
|
|
|
"status.editor.drafts.navigation-title" = "草稿";
|
|
|
|
|
"status.editor.emojis.navigation-title" = "自訂表情符號";
|
|
|
|
|
"status.editor.error.upload" = "上傳錯誤";
|
|
|
|
|
"status.editor.language-select.navigation-title" = "選擇語言";
|
|
|
|
|
"status.editor.language-select.recently-used" = "最近用過";
|
|
|
|
|
"status.editor.language-select.confirmation.detected-%@" = "嘟文用 %@(偵測語言)發表";
|
|
|
|
|
"status.editor.language-select.confirmation.selected-%@" = "嘟文用 %@(選擇語言)發表";
|
|
|
|
|
"status.editor.media.edit-image" = "編輯媒體";
|
|
|
|
|
"status.editor.media.image-description" = "媒體描述";
|
|
|
|
|
"status.editor.mode.edit" = "編輯您的嘟文";
|
|
|
|
|
"status.editor.mode.new" = "新增嘟文";
|
|
|
|
|
"status.editor.mode.quote-%@" = "引述 %@";
|
|
|
|
|
"status.editor.mode.reply-%@" = "回覆 %@";
|
|
|
|
|
"status.editor.restore-previous" = "還原本文";
|
|
|
|
|
"status.editor.spoiler" = "劇透警告";
|
|
|
|
|
"status.editor.text.placeholder" = "您在想些什麼呢?";
|
|
|
|
|
"status.editor.visibility" = "嘟文能見度";
|
2023-03-10 18:22:45 +01:00
|
|
|
|
"status.editor.photo-library" = "Photos Library";
|
|
|
|
|
"status.editor.browse-file" = "Browse Files";
|
2023-03-04 22:25:34 -08:00
|
|
|
|
"status.error.loading.message" = "下載嘟文時發生錯誤,請再試一次。";
|
|
|
|
|
"status.error.message" = "嘟文上下文發生錯誤,請再試一次。";
|
|
|
|
|
"status.error.title" = "發生錯誤";
|
|
|
|
|
"status.filter.filtered-by-%@" = "由 %@ 過濾";
|
|
|
|
|
"status.filter.show-anyway" = "仍然顯示";
|
|
|
|
|
"status.image.alt-text.abbreviation" = "ALT";
|
|
|
|
|
"status.media.content.show" = "顯示內容";
|
|
|
|
|
"status.media.contextmenu.copy" = "拷貝影像";
|
|
|
|
|
"status.media.contextmenu.save" = "儲存影像";
|
|
|
|
|
"status.media.contextmenu.share" = "分享影像";
|
|
|
|
|
"status.media.contextmenu.view-browser" = "在瀏覽器裡顯示";
|
|
|
|
|
"status.media.sensitive.show" = "顯示敏感內容";
|
|
|
|
|
"status.poll.n-votes %lld" = "%lld 票";
|
|
|
|
|
"status.poll.n-votes-voters %lld %lld" = "%lld 票,%lld 位投票者";
|
|
|
|
|
"status.poll.closed" = "已關閉";
|
|
|
|
|
"status.poll.closes-in" = "關閉於 ";
|
|
|
|
|
"status.poll.duration" = "投票時限";
|
|
|
|
|
"status.poll.frequency" = "投票頻率";
|
|
|
|
|
"status.poll.option-n %lld" = "選項 %lld";
|
|
|
|
|
"status.poll.send" = "投票";
|
|
|
|
|
"status.post-from-%@" = "%@ 的嘟文";
|
|
|
|
|
"status.row.was-boosted" = "轉嘟";
|
|
|
|
|
"status.row.was-reply" = "回覆給";
|
|
|
|
|
"status.row.you-boosted" = "您轉嘟了";
|
|
|
|
|
"status.show-less" = "少顯示一點";
|
|
|
|
|
"status.show-more" = "多顯示一點";
|
|
|
|
|
"status.show-full-post" = "顯示全文";
|
|
|
|
|
"status.summary.at-time" = " 於 ";
|
|
|
|
|
"status.summary.edited-time" = "上次編輯:";
|
Profile tab accessibility uplift (#1274)
* Combine `joinedAtView` into one accessibility element
Previously, the calendar image was visible with a nonsensical label.
We use the `.combine` operator here to maintain the proper string formatting of the date.
* Improve the accessibility of the AccountDetailHeaderView
Previously, this image had no description and no indication that it had an associated interaction. Now, we wrap it in a button that performs the tap gesture action, and remove the element altogether if there is no avatar image set.
This commit also handles the checkmark for supporter users
* Tweak accessibility of Profile CustomInfoLabels
This commit:
- Reverses the order of title and value
- Sets the value as an `accessibilityValue`
- Adds a hint indicating what the button does, as they perform slightly different actions
* Make Profile tab header image into a Button
This element has an action associated with it (quicklook), so it makes more sense to have it as a button, and hide it if the user does not have an image set.
Without the action it would have been considered decorative and should be hidden.
* Change accessibilityLabel of Profile tab nav bar item to ‘Options’
“More” is considered overly generic.
This commit also adds two additional user input label options
* Add accessibility labels for the Profile tab `Picker`
Previously, these labels were the default accessibility label provided by the SF symbol, that almost, but not quite, made sense
* Remove StatusRowView swipe actions if VoiceOver is running
These swipe actions are automagically added to the accessibility element’s custom actions, in addition to the ones already there, which means that there is a significant (and confusing) amount of doubling up going on.
* Fix typo in StatusRowView.accessibilityActions
* Add accessibilityLabels to all StatusRowActionsView actions
* Provide explicit combined accessibility label for unfocused StatusRowView
Previously, this was a synthesized label, which read the elements in their traversal order, and didn’t provide any context for which of the three numbers corresponded to replies, boosts or favourites.
Now, we create an explicit combined label when the post isn’t being viewed by itself.
* Improve accessibility of StatusRow(Reblog|Reply)View
They are now combined elements and don’t vend the icon as its own element.
* Add missing punctuation to accessibility hints
* Remove interaction from Profile tab @username and profile note elements
These elements open the profile photo url, which is already provided explicitly through the profile photo
* Prefer spoiler warning for StatusRowView accessibility label
…but place the full, unredacted content in an `AccessibilityCustomContent` field for easy access.
Additionally, if VoiceOver is running, an action to expand the warning is also available.
* Represent `FollowButton` elements as Toggles to accessibility
Since these buttons have two states (though arguable in the case of following, but handled here by not changing the representation if a request is pending), it makes sense to handle them as toggles, so they will be read as “Following, On, <Trait>”
* Remove errant comment
* Add “Verified” accessibilityValue to profile fields
* Fix bug StatusRowView default action bug affecting VoiceOver users
Previously, the default (‘Activate’) action for VoiceOver users would be to share a link to the toot, rather than navigate to its detail. It’s hard to say exactly what caused this, but the root was the inclusion of the `contextMenu` in the `accessibilityActions`.
Now, double-tapping on a a non-focused `StatusRowView` will take you to the toot detail.
* Add header trait to Profile tab display name and familiar followers
These stand out as being header-like in presentation and represent the beginning of specific parts of the screen.
* Add conditional accessibility modifier to Profile tab user-defined fields that opens the correct link
* Add accessibility container that contextualises the user-defined fields
When VoiceOver users first enter a user-defined field, the container label will be read out before the element’s spoken description.
* Improve StatusRowView combined accessibility label
It will now start with:
“X boosted Y”, “X replied to @Y”, or “X…” depending on the context of the toot.
* Change familiar follows thumbnail to a Button; add display name as accessibility label
Previously, this button had no context, and would just be a series of images with nothing to allow users to disambiguate them.
* Revert changes from ZStack with tap gesture to Button
Using a Button for this purpose caused high weirdness in tap zones. Basically everything down to the familiar followers triggered both image buttons.
* Add image alt text to StatusRowView and StatusRowMediaPreviewView
Previously, there was no way for the intended audience for the alt text to find said text. There is a tap gesture on each image in the focused status row, but this is not advertised to the user.
Now, the first image’s alt text is read as part of the non-focused, combined representation, and each image has its own alt text attributed in the focused representation.
* Add Profile tab accessibility labels to indicate private/bot/muted/blocked accounts
Previously, the icon did not have any accessible representation (an empty text string).
* Add header trait to Profile “pinned post”
* Use the Account.Field.name for the user input label
* Replace spaces with commas in StatusRowView.combinedAccessibilityLabel
2023-03-20 02:27:18 +11:00
|
|
|
|
"status.summary.n-replies %lld" = "%lld replies";
|
2023-03-04 22:25:34 -08:00
|
|
|
|
"status.summary.n-boosts %lld" = "%lld 轉嘟";
|
|
|
|
|
"status.summary.n-favorites %lld" = "%lld 最愛";
|
2023-03-26 01:16:22 +09:00
|
|
|
|
"status.summary.edit-history" = "Edit History";
|
2023-03-04 22:25:34 -08:00
|
|
|
|
"status.visibility.direct" = "私訊";
|
|
|
|
|
"status.visibility.follower" = "跟隨者";
|
|
|
|
|
"status.visibility.public" = "所有人";
|
|
|
|
|
"status.visibility.unlisted" = "不公開";
|
|
|
|
|
|
|
|
|
|
// MARK: Filters
|
|
|
|
|
"filter.new" = "新增過濾器";
|
|
|
|
|
"filter.filters" = "過濾器";
|
|
|
|
|
"filter.edit.title" = "過濾器名稱";
|
|
|
|
|
"filter.edit.keywords" = "過濾器關鍵詞";
|
|
|
|
|
"filter.edit.keywords.add" = "新增關鍵詞";
|
|
|
|
|
"filter.edit.contexts" = "過濾器情境";
|
|
|
|
|
"filter.edit.action" = "過濾器動作";
|
|
|
|
|
"filter.edit.expiry" = "期限";
|
|
|
|
|
"filter.edit.expiry.date-time" = "日期時間";
|
|
|
|
|
"filter.edit.expiry.duration" = "期間";
|
|
|
|
|
"account.action.edit-filters" = "編輯過濾器";
|
|
|
|
|
"filter.contexts.home" = "首頁和列表";
|
|
|
|
|
"filter.contexts.notifications" = "通知";
|
|
|
|
|
"filter.contexts.public" = "公開時間軸";
|
|
|
|
|
"filter.contexts.conversations" = "對話";
|
|
|
|
|
"filter.contexts.profiles" = "個人檔案";
|
|
|
|
|
"filter.action.warning" = "警告之後隱藏";
|
|
|
|
|
"filter.action.hide" = "完全隱藏";
|
2023-03-28 15:59:31 +09:00
|
|
|
|
"filter.expired" = "Expired";
|
|
|
|
|
"filter.expiry-%@" = "Expiry: %@";
|
2023-03-04 22:25:34 -08:00
|
|
|
|
|
|
|
|
|
// MARK: Accessibility
|
|
|
|
|
"accessibility.editor.button.attach-photo" = "附上相片";
|
|
|
|
|
"accessibility.editor.button.poll" = "投票";
|
|
|
|
|
"accessibility.editor.button.spoiler" = "劇透警告";
|
|
|
|
|
"accessibility.editor.button.drafts" = "草稿";
|
|
|
|
|
"accessibility.editor.button.custom-emojis" = "自定表情符號";
|
|
|
|
|
"accessibility.editor.button.language" = "語言";
|
Compose Post Screen Accessibility Tweaks (#1259)
* Add localized label for the AI prompt status accessory view
Previously, this icon would have an accessibility label matching its SF symbol key, ‘faxmachine’.
* Darken status editor character count foreground color
By changing it to .secondary, it gets to an APCA contrast of 61, which is a _just_ passing Bronze score for that text size.
It’s still quite short of WCAG 2.1 AA at 3.3:1 (recommended is 4.5:1)
* Change remaining character count color to red when < 0
* Refine remaining character count accessibility
In this commit, we
- Change its trait to `.updatesFrequently`
- Set a localized `accessibilityLabel`
- Set its `accessibilityValue` to the remaining character count
- Disable user interaction (which is presumably set automatically by virtue of being enclosed in a `Menu`)
* Set accessibilitySortPriority on Status editor ScrollView
Previously, the traversal order placed the elements inside the `ScrollView` last. Now, they follow on from the navigation bar contents in the expected order.
* Hide the AvatarView from status creation accessibility
When there is only one account available, there is no functionality associated with this element, so it is considered decorative-only, and should be hidden
* Set TextView placeholder’s `accessibilityValue` to placeholder text when empty
This behaviour matches `UITextField`
* Hide TextView custom `placeholderView` from accessibility
Previously, TextView would vend two accessibility elements when the placeholder was visible. This causes needless confusion for users.
Now, the TextView matches the accessible behaviour of text inputs elsewhere.
* Improve accessibility of post `privacyMenu`
Previously, it would be presented as `Everyone, Button`. Now, we move the visibility to its `value` and use `Visibility` for its label, in conjunction with a hint that states it `Changes post audience`.
* Add `.button` trait and accessible label to emojis in `customEmojisSheet`
Previously, these would all present as `image` with no description, making it very hard to discern what kind of emoji you were adding.
* Change drafts sheet item type to `Button`
A button with an action has a more accessible representation than a `Text` with a tap gesture.
2023-03-17 16:39:31 +11:00
|
|
|
|
"accessibility.editor.button.ai-prompt" = "AI prompt";
|
|
|
|
|
"accessibility.editor.button.characters-remaining" = "Characters remaining";
|
|
|
|
|
"accessibility.editor.privacy.label" = "Visibility";
|
|
|
|
|
"accessibility.editor.privacy.hint" = "Changes post audience.";
|
2023-03-04 22:25:34 -08:00
|
|
|
|
"accessibility.tabs.timeline.add-account" = "新增帳號";
|
Timeline tab accessibility uplift (#1277)
* Refine Profile tab VoiceOver order to prioritise user information
Previously, VoiceOver user would have to traverse through header image, “follows you”, and the profile image before getting to the display name of the user.
Now, this element is the first element after the navigation bar.
* Add accessibility label to Timeline Compose post button
Previously, this button was using the SF symbol fallback label.
Now, it has a localized equivalent in addition to two other options: “New”, and “Create”
* Change accessible representation of Timeline nav bar menu
Previously, this would present as a static text.
Now, it has the header trait. In addition, by changing the representation, VoiceOver will read it out as “Home, Pop-up button, Header”, indicating that it opens a menu.
* Add accessibilityHint to Timeline tab Accounts selector
* Add accessibilityLabel and hint to PendingStatusesObserver
Previously, this button would have a label equal to the count of unread posts. Now, it states “X new posts” with the hint “Scrolls the timeline”
2023-03-20 16:33:42 +11:00
|
|
|
|
"accessibility.tabs.timeline.new-post.label" = "Compose";
|
|
|
|
|
"accessibility.tabs.timeline.new-post.inputLabel1" = "New";
|
|
|
|
|
"accessibility.tabs.timeline.new-post.inputLabel2" = "Create";
|
|
|
|
|
"accessibility.tabs.timeline.unread-posts.label-%lld" = "%lld new posts";
|
|
|
|
|
"accessibility.tabs.timeline.unread-posts.hint" = "Scrolls the timeline.";
|
Accessibility tweaks + Notifications and Messages tab uplift (#1292)
* Improve StatusRowView accessibility actions
Previously, there was no way to interact with links and hashtags.
Now, these are added to the Actions rotor
* Hide `topPaddingView`s from accessibility
* Fix accessible header rendering in non-filterable TimelineViews
Previously, all navigation title views were assumed to be popup buttons.
Now, we only change the representation for timelines that are filterable.
* Combine tagHeaderView text elements
Previously, these were two separate items
* Prefer shorter Quote action label
* Improve accessibility of StatusEmbeddedView
Previously, this element would be three different ones, and include all the actions on the `StatusRowView` proper. Now, it presents as one element with no actions.
* Add haptics to StatusRowView accessibility actions
* Improve accessibility of ConversationsListRow
This commit adds:
- A combined representation of the component views
- “Unread” as the first part of the label (if this is the case)
- All relevant actions as custom actions
- Reply as magic tap
* Remove StatusRowView accessibilityActions if viewModel.showActions is false
* Hide media attachments from accessibility if the view is not focused
* Combine NotificationRowView accessibility elements; add user actions
Previously, there was no real way to interact with these notifications.
Now, the notifications that show the actions row have the appropriate StatusRowView-derived actions, and new followers notifications have more actions that let you see each user’s profile.
* Prefer @Environment’s `accessibilityEnabled` over `isVoiceOverRunning`
This way we can cater for Voice Control, Full Keyboard Access and Switch Control as well.
---------
Co-authored-by: Thomas Ricouard <ricouard77@gmail.com>
2023-03-24 17:52:29 +11:00
|
|
|
|
"accessibility.tabs.timeline.content-link-%@" = "Visit %@";
|
|
|
|
|
"accessibility.tabs.timeline.content-hashtag-%@" = "Hashtag %@";
|
2023-03-04 22:25:34 -08:00
|
|
|
|
"accessibility.app-account.selector.accounts" = "帳號";
|
Timeline tab accessibility uplift (#1277)
* Refine Profile tab VoiceOver order to prioritise user information
Previously, VoiceOver user would have to traverse through header image, “follows you”, and the profile image before getting to the display name of the user.
Now, this element is the first element after the navigation bar.
* Add accessibility label to Timeline Compose post button
Previously, this button was using the SF symbol fallback label.
Now, it has a localized equivalent in addition to two other options: “New”, and “Create”
* Change accessible representation of Timeline nav bar menu
Previously, this would present as a static text.
Now, it has the header trait. In addition, by changing the representation, VoiceOver will read it out as “Home, Pop-up button, Header”, indicating that it opens a menu.
* Add accessibilityHint to Timeline tab Accounts selector
* Add accessibilityLabel and hint to PendingStatusesObserver
Previously, this button would have a label equal to the count of unread posts. Now, it states “X new posts” with the hint “Scrolls the timeline”
2023-03-20 16:33:42 +11:00
|
|
|
|
"accessibility.app-account.selector.accounts.hint" = "Opens options sheet.";
|
Profile tab accessibility uplift (#1274)
* Combine `joinedAtView` into one accessibility element
Previously, the calendar image was visible with a nonsensical label.
We use the `.combine` operator here to maintain the proper string formatting of the date.
* Improve the accessibility of the AccountDetailHeaderView
Previously, this image had no description and no indication that it had an associated interaction. Now, we wrap it in a button that performs the tap gesture action, and remove the element altogether if there is no avatar image set.
This commit also handles the checkmark for supporter users
* Tweak accessibility of Profile CustomInfoLabels
This commit:
- Reverses the order of title and value
- Sets the value as an `accessibilityValue`
- Adds a hint indicating what the button does, as they perform slightly different actions
* Make Profile tab header image into a Button
This element has an action associated with it (quicklook), so it makes more sense to have it as a button, and hide it if the user does not have an image set.
Without the action it would have been considered decorative and should be hidden.
* Change accessibilityLabel of Profile tab nav bar item to ‘Options’
“More” is considered overly generic.
This commit also adds two additional user input label options
* Add accessibility labels for the Profile tab `Picker`
Previously, these labels were the default accessibility label provided by the SF symbol, that almost, but not quite, made sense
* Remove StatusRowView swipe actions if VoiceOver is running
These swipe actions are automagically added to the accessibility element’s custom actions, in addition to the ones already there, which means that there is a significant (and confusing) amount of doubling up going on.
* Fix typo in StatusRowView.accessibilityActions
* Add accessibilityLabels to all StatusRowActionsView actions
* Provide explicit combined accessibility label for unfocused StatusRowView
Previously, this was a synthesized label, which read the elements in their traversal order, and didn’t provide any context for which of the three numbers corresponded to replies, boosts or favourites.
Now, we create an explicit combined label when the post isn’t being viewed by itself.
* Improve accessibility of StatusRow(Reblog|Reply)View
They are now combined elements and don’t vend the icon as its own element.
* Add missing punctuation to accessibility hints
* Remove interaction from Profile tab @username and profile note elements
These elements open the profile photo url, which is already provided explicitly through the profile photo
* Prefer spoiler warning for StatusRowView accessibility label
…but place the full, unredacted content in an `AccessibilityCustomContent` field for easy access.
Additionally, if VoiceOver is running, an action to expand the warning is also available.
* Represent `FollowButton` elements as Toggles to accessibility
Since these buttons have two states (though arguable in the case of following, but handled here by not changing the representation if a request is pending), it makes sense to handle them as toggles, so they will be read as “Following, On, <Trait>”
* Remove errant comment
* Add “Verified” accessibilityValue to profile fields
* Fix bug StatusRowView default action bug affecting VoiceOver users
Previously, the default (‘Activate’) action for VoiceOver users would be to share a link to the toot, rather than navigate to its detail. It’s hard to say exactly what caused this, but the root was the inclusion of the `contextMenu` in the `accessibilityActions`.
Now, double-tapping on a a non-focused `StatusRowView` will take you to the toot detail.
* Add header trait to Profile tab display name and familiar followers
These stand out as being header-like in presentation and represent the beginning of specific parts of the screen.
* Add conditional accessibility modifier to Profile tab user-defined fields that opens the correct link
* Add accessibility container that contextualises the user-defined fields
When VoiceOver users first enter a user-defined field, the container label will be read out before the element’s spoken description.
* Improve StatusRowView combined accessibility label
It will now start with:
“X boosted Y”, “X replied to @Y”, or “X…” depending on the context of the toot.
* Change familiar follows thumbnail to a Button; add display name as accessibility label
Previously, this button had no context, and would just be a series of images with nothing to allow users to disambiguate them.
* Revert changes from ZStack with tap gesture to Button
Using a Button for this purpose caused high weirdness in tap zones. Basically everything down to the familiar followers triggered both image buttons.
* Add image alt text to StatusRowView and StatusRowMediaPreviewView
Previously, there was no way for the intended audience for the alt text to find said text. There is a tap gesture on each image in the focused status row, but this is not advertised to the user.
Now, the first image’s alt text is read as part of the non-focused, combined representation, and each image has its own alt text attributed in the focused representation.
* Add Profile tab accessibility labels to indicate private/bot/muted/blocked accounts
Previously, the icon did not have any accessible representation (an empty text string).
* Add header trait to Profile “pinned post”
* Use the Account.Field.name for the user input label
* Replace spaces with commas in StatusRowView.combinedAccessibilityLabel
2023-03-20 02:27:18 +11:00
|
|
|
|
"accessibility.tabs.profile.options.label" = "Options";
|
|
|
|
|
"accessibility.tabs.profile.options.inputLabel1" = "Settings";
|
|
|
|
|
"accessibility.tabs.profile.options.inputLabel2" = "More";
|
|
|
|
|
"accessibility.tabs.profile.user-avatar.label" = "Profile photo";
|
|
|
|
|
"accessibility.tabs.profile.user-avatar.hint" = "Displays a larger version.";
|
|
|
|
|
"accessibility.tabs.profile.user-avatar.supporter.label" = "Supporter";
|
|
|
|
|
"accessibility.tabs.profile.user.account-bot.label" = "Bot account";
|
|
|
|
|
"accessibility.tabs.profile.user.account-blocked.label" = "Blocked";
|
|
|
|
|
"accessibility.tabs.profile.user.account-muted.label" = "Muted";
|
|
|
|
|
"accessibility.tabs.profile.user.account-private.label" = "Private account";
|
|
|
|
|
"accessibility.tabs.profile.header-image.label" = "Header image";
|
|
|
|
|
"accessibility.tabs.profile.header-image.hint" = "Displays a larger version.";
|
|
|
|
|
"accessibility.tabs.profile.post-count.hint" = "Scrolls to list.";
|
|
|
|
|
"accessibility.tabs.profile.following-count.hint" = "Navigates to list.";
|
|
|
|
|
"accessibility.tabs.profile.follower-count.hint" = "Navigates to list.";
|
|
|
|
|
"accessibility.tabs.profile.picker.statuses" = "Posts";
|
|
|
|
|
"accessibility.tabs.profile.picker.favorites" = "Favorites";
|
|
|
|
|
"accessibility.tabs.profile.picker.bookmarks" = "Bookmarks";
|
|
|
|
|
"accessibility.tabs.profile.picker.followed-tags" = "Tags";
|
|
|
|
|
"accessibility.tabs.profile.picker.posts-and-replies" = "Posts and replies";
|
|
|
|
|
"accessibility.tabs.profile.picker.media" = "Media";
|
|
|
|
|
"accessibility.tabs.profile.picker.lists" = "Lists";
|
|
|
|
|
"accessibility.tabs.profile.user-notifications.label" = "Receive notifications";
|
|
|
|
|
"accessibility.tabs.profile.user-reblogs.label" = "Display boosts";
|
|
|
|
|
"accessibility.tabs.profile.fields.verified.label" = "Verified";
|
|
|
|
|
"accessibility.tabs.profile.fields.container.label" = "User-defined fields";
|
|
|
|
|
"accessibility.status.spoiler-full-content" = "Full Content";
|
|
|
|
|
"accessibility.status.a-boosted-b-%@-%@" = "%@ boosted %@";
|
|
|
|
|
"accessibility.status.a-replied-to-%@" = "%@ replied to";
|
|
|
|
|
"accessibility.image.alt-text-%@" = "Image alt text: %@";
|
|
|
|
|
"accessibility.image.alt-text-more.label" = "More alt text available";
|
Accessibility tweaks + Notifications and Messages tab uplift (#1292)
* Improve StatusRowView accessibility actions
Previously, there was no way to interact with links and hashtags.
Now, these are added to the Actions rotor
* Hide `topPaddingView`s from accessibility
* Fix accessible header rendering in non-filterable TimelineViews
Previously, all navigation title views were assumed to be popup buttons.
Now, we only change the representation for timelines that are filterable.
* Combine tagHeaderView text elements
Previously, these were two separate items
* Prefer shorter Quote action label
* Improve accessibility of StatusEmbeddedView
Previously, this element would be three different ones, and include all the actions on the `StatusRowView` proper. Now, it presents as one element with no actions.
* Add haptics to StatusRowView accessibility actions
* Improve accessibility of ConversationsListRow
This commit adds:
- A combined representation of the component views
- “Unread” as the first part of the label (if this is the case)
- All relevant actions as custom actions
- Reply as magic tap
* Remove StatusRowView accessibilityActions if viewModel.showActions is false
* Hide media attachments from accessibility if the view is not focused
* Combine NotificationRowView accessibility elements; add user actions
Previously, there was no real way to interact with these notifications.
Now, the notifications that show the actions row have the appropriate StatusRowView-derived actions, and new followers notifications have more actions that let you see each user’s profile.
* Prefer @Environment’s `accessibilityEnabled` over `isVoiceOverRunning`
This way we can cater for Voice Control, Full Keyboard Access and Switch Control as well.
---------
Co-authored-by: Thomas Ricouard <ricouard77@gmail.com>
2023-03-24 17:52:29 +11:00
|
|
|
|
"accessibility.tabs.messages.unread.label" = "Unread";
|
2023-03-04 22:25:34 -08:00
|
|
|
|
|
|
|
|
|
// MARK: Report
|
|
|
|
|
"report.comment.placeholder" = "附加資訊";
|
|
|
|
|
"report.title" = "檢舉嘟文";
|
|
|
|
|
"report.action.send" = "送出";
|
|
|
|
|
"status.action.report" = "檢舉嘟文";
|
|
|
|
|
|
2023-03-06 07:07:35 +01:00
|
|
|
|
"tag.suggested.mentions-%lld" = "%lld 提及";
|