Add Traditional Chinese, Hong Kong translation (zh-HK) (#1544)
* Added Chinese Traditional Hong Kong (zh-HK) for Ruby * Added translations for Ruby. * Added Chinese Traditional Hong Kong (zh-HK) for JS * Added translations for javascript code. * Rearrange language references in mastodon.jsx * Break `addLocaleData` into multiple lines. Make future commit more readable. * Roughly re-sort the languages in alphabetical orders (only manually put English on top because it is default). * Sort application.rb locale with alphabetical order With exception that English (default language) goes first. Improve code readability. * Resort language selection box alphabetically Sort HUMAN_LOCALES in the alphabetical order of display name (except English, the default language, come first). Improve usability.
This commit is contained in:
		
							parent
							
								
									3442bc0ea3
								
							
						
					
					
						commit
						24eb45425e
					
				
					 9 changed files with 551 additions and 15 deletions
				
			
		| 
						 | 
				
			
			@ -41,15 +41,17 @@ import Report from '../features/report';
 | 
			
		|||
import { IntlProvider, addLocaleData } from 'react-intl';
 | 
			
		||||
import en from 'react-intl/locale-data/en';
 | 
			
		||||
import de from 'react-intl/locale-data/de';
 | 
			
		||||
import es from 'react-intl/locale-data/es';
 | 
			
		||||
import fr from 'react-intl/locale-data/fr';
 | 
			
		||||
import pt from 'react-intl/locale-data/pt';
 | 
			
		||||
import hu from 'react-intl/locale-data/hu';
 | 
			
		||||
import uk from 'react-intl/locale-data/uk';
 | 
			
		||||
import fi from 'react-intl/locale-data/fi';
 | 
			
		||||
import eo from 'react-intl/locale-data/eo';
 | 
			
		||||
import ru from 'react-intl/locale-data/ru';
 | 
			
		||||
import es from 'react-intl/locale-data/es';
 | 
			
		||||
import fi from 'react-intl/locale-data/fi';
 | 
			
		||||
import fr from 'react-intl/locale-data/fr';
 | 
			
		||||
import hu from 'react-intl/locale-data/hu';
 | 
			
		||||
import ja from 'react-intl/locale-data/ja';
 | 
			
		||||
import pt from 'react-intl/locale-data/pt';
 | 
			
		||||
import ru from 'react-intl/locale-data/ru';
 | 
			
		||||
import uk from 'react-intl/locale-data/uk';
 | 
			
		||||
import zh from 'react-intl/locale-data/zh';
 | 
			
		||||
import { localeData as zh_hk } from '../locales/zh-hk';
 | 
			
		||||
 | 
			
		||||
import getMessagesForLocale from '../locales';
 | 
			
		||||
import { hydrateStore } from '../actions/store';
 | 
			
		||||
| 
						 | 
				
			
			@ -64,7 +66,21 @@ const browserHistory = useRouterHistory(createBrowserHistory)({
 | 
			
		|||
});
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
addLocaleData([...en, ...de, ...es, ...fr, ...pt, ...hu, ...uk, ...fi, ...eo, ...ru, ...ja]);
 | 
			
		||||
addLocaleData([
 | 
			
		||||
  ...en,
 | 
			
		||||
  ...de,
 | 
			
		||||
  ...eo,
 | 
			
		||||
  ...es,
 | 
			
		||||
  ...fi,
 | 
			
		||||
  ...fr,
 | 
			
		||||
  ...hu,
 | 
			
		||||
  ...ja,
 | 
			
		||||
  ...pt,
 | 
			
		||||
  ...ru,
 | 
			
		||||
  ...uk,
 | 
			
		||||
  ...zh,
 | 
			
		||||
  ...zh_hk,
 | 
			
		||||
]);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const Mastodon = React.createClass({
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,6 +9,7 @@ import fi from './fi';
 | 
			
		|||
import eo from './eo';
 | 
			
		||||
import ru from './ru';
 | 
			
		||||
import ja from './ja';
 | 
			
		||||
import zh_hk from './zh-hk';
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const locales = {
 | 
			
		||||
| 
						 | 
				
			
			@ -22,8 +23,8 @@ const locales = {
 | 
			
		|||
  fi,
 | 
			
		||||
  eo,
 | 
			
		||||
  ru,
 | 
			
		||||
  ja
 | 
			
		||||
 | 
			
		||||
  ja,
 | 
			
		||||
  'zh-HK': zh_hk,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export default function getMessagesForLocale (locale) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										113
									
								
								app/assets/javascripts/components/locales/zh-hk.jsx
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										113
									
								
								app/assets/javascripts/components/locales/zh-hk.jsx
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,113 @@
 | 
			
		|||
import zh from 'react-intl/locale-data/zh';
 | 
			
		||||
 | 
			
		||||
const localeData = zh.reduce(function (acc, localeData) {
 | 
			
		||||
  if (localeData.locale === "zh-Hant-HK") {
 | 
			
		||||
    // rename the locale "zh-Hant-HK" as "zh-HK"
 | 
			
		||||
    // (match the code usually used in Accepted-Language header)
 | 
			
		||||
    acc.push(Object.assign({},
 | 
			
		||||
      localeData,
 | 
			
		||||
      {
 | 
			
		||||
        "locale": "zh-HK",
 | 
			
		||||
        "parentLocale": "zh-Hant-HK",
 | 
			
		||||
      }
 | 
			
		||||
    ));
 | 
			
		||||
  }
 | 
			
		||||
  return acc;
 | 
			
		||||
}, []);
 | 
			
		||||
 | 
			
		||||
export { localeData as localeData };
 | 
			
		||||
 | 
			
		||||
const zh_hk = {
 | 
			
		||||
  "account.block": "封鎖 @{name}",
 | 
			
		||||
  "account.edit_profile": "修改個人資料",
 | 
			
		||||
  "account.follow": "關注",
 | 
			
		||||
  "account.followers": "關注的人",
 | 
			
		||||
  "account.follows_you": "關注你",
 | 
			
		||||
  "account.follows": "正在關注",
 | 
			
		||||
  "account.mention": "提及 @{name}",
 | 
			
		||||
  "account.posts": "文章",
 | 
			
		||||
  "account.requested": "等候審批",
 | 
			
		||||
  "account.unblock": "解除對 @{name} 的封鎖",
 | 
			
		||||
  "account.unfollow": "取消關注",
 | 
			
		||||
  "column_back_button.label": "先前顯示",
 | 
			
		||||
  "column.community": "本站時間軸",
 | 
			
		||||
  "column.home": "家",
 | 
			
		||||
  "column.notifications": "通知",
 | 
			
		||||
  "column.public": "跨站公共時間軸",
 | 
			
		||||
  "compose_form.placeholder": "你在想甚麼?",
 | 
			
		||||
  "compose_form.privacy_disclaimer": "你的私人文章,將被遞送至你所提及的 {domains} 用戶。你是否信任 {domainsCount, plural, one {這個網站} other {這些網站}}?請留意,文章私隱設定只適用於各 Mastodon 服務站,如果 {domains} {domainsCount, plural, one {不是 Mastodon 服務站} other {之中有些不是 Mastodon 服務站}},對方將無法收到這篇文章的私隱設定,然後可能被轉推給不能預知的用戶閱讀。",
 | 
			
		||||
  "compose_form.private": "標示為「只有關注你的人能看」",
 | 
			
		||||
  "compose_form.publish": "發文",
 | 
			
		||||
  "compose_form.sensitive": "將媒體檔案標示為「敏感內容」",
 | 
			
		||||
  "compose_form.spoiler": "將部份文字藏於警告訊息之後",
 | 
			
		||||
  "compose_form.unlisted": "請勿在公共時間軸顯示",
 | 
			
		||||
  "empty_column.community": "本站時間軸暫時未有內容,快貼文來搶頭香啊!",
 | 
			
		||||
  "empty_column.hashtag": "這個標籤暫時未有內容。",
 | 
			
		||||
  "empty_column.home": "你還沒有關注任何用戶。快看看{public},向其他用戶搭訕吧。",
 | 
			
		||||
  "empty_column.home.public_timeline": "公共時間軸",
 | 
			
		||||
  "empty_column.notifications": "You don't have any notifications yet. Interact with others to start the conversation.",
 | 
			
		||||
  "empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other instances to fill it up.",
 | 
			
		||||
  "getting_started.about_addressing": "只要你知道一位用戶的用戶名稱和域名,你可以用「@用戶名稱@域名」的格式在搜尋欄尋找該用戶。",
 | 
			
		||||
  "getting_started.about_shortcuts": "只要該用戶是在你現在的服務站開立,你可以直接輸入用戶𠱷搜尋。同樣的規則適用於在文章提及別的用戶。",
 | 
			
		||||
  "getting_started.apps": "手機或桌面應用程式",
 | 
			
		||||
  "getting_started.heading": "開始使用",
 | 
			
		||||
  "getting_started.open_source_notice": "Mastodon 是一個開放源碼的軟件。你可以在官方 GitHub ({github}) 貢獻或者回報問題。你亦可透過{apps}閱讀 Mastodon 上的消息。",
 | 
			
		||||
  "home.column_settings.basic": "基本",
 | 
			
		||||
  "home.column_settings.show_reblogs": "顯示被轉推的文章",
 | 
			
		||||
  "home.column_settings.show_replies": "顯示回應文章",
 | 
			
		||||
  "home.column_settings.advanced": "進階",
 | 
			
		||||
  "lightbox.close": "關閉",
 | 
			
		||||
  "loading_indicator.label": "載入中...",
 | 
			
		||||
  "missing_indicator.label": "找不到內容",
 | 
			
		||||
  "navigation_bar.community_timeline": "本站時間軸",
 | 
			
		||||
  "navigation_bar.edit_profile": "修改個人資料",
 | 
			
		||||
  "navigation_bar.logout": "登出",
 | 
			
		||||
  "navigation_bar.preferences": "個人設定",
 | 
			
		||||
  "navigation_bar.public_timeline": "跨站公共時間軸",
 | 
			
		||||
  "notification.favourite": "{name} 喜歡你的文章",
 | 
			
		||||
  "notification.follow": "{name} 開始開始你",
 | 
			
		||||
  "notification.mention": "{name} 提及你",
 | 
			
		||||
  "notification.reblog": "{name} 轉推你的文章",
 | 
			
		||||
  "notifications.column_settings.alert": "顯示桌面通知",
 | 
			
		||||
  "notifications.column_settings.favourite": "喜歡你的文章:",
 | 
			
		||||
  "notifications.column_settings.follow": "關注你:",
 | 
			
		||||
  "notifications.column_settings.mention": "提及你:",
 | 
			
		||||
  "notifications.column_settings.reblog": "轉推你的文章:",
 | 
			
		||||
  "notifications.column_settings.show": "在通知欄顯示",
 | 
			
		||||
  "notifications.column_settings.sound": "播放音效",
 | 
			
		||||
  "reply_indicator.cancel": "取消",
 | 
			
		||||
  "report.target": "Reporting",
 | 
			
		||||
  "search.account": "用戶",
 | 
			
		||||
  "search.hashtag": "標籤",
 | 
			
		||||
  "search.placeholder": "搜尋",
 | 
			
		||||
  "search_results.total": "{count} 項結果",
 | 
			
		||||
  "search.status_by": "按用戶名稱搜尋文章",
 | 
			
		||||
  "status.delete": "刪除",
 | 
			
		||||
  "status.favourite": "喜歡",
 | 
			
		||||
  "status.load_more": "載入更多",
 | 
			
		||||
  "status.media_hidden": "隱藏媒體內容",
 | 
			
		||||
  "status.mention": "提及 @{name}",
 | 
			
		||||
  "status.open": "展開文章",
 | 
			
		||||
  "status.reblog": "轉推",
 | 
			
		||||
  "status.reblogged_by": "{name} 轉推",
 | 
			
		||||
  "status.reply": "回應",
 | 
			
		||||
  "status.report": "舉報 @{name}",
 | 
			
		||||
  "status.sensitive_toggle": "點擊顯示",
 | 
			
		||||
  "status.sensitive_warning": "敏感內容",
 | 
			
		||||
  "status.show_less": "減少顯示",
 | 
			
		||||
  "status.show_more": "顯示更多",
 | 
			
		||||
  "tabs_bar.compose": "撰寫",
 | 
			
		||||
  "tabs_bar.home": "家",
 | 
			
		||||
  "tabs_bar.local_timeline": "本站",
 | 
			
		||||
  "tabs_bar.mentions": "提及",
 | 
			
		||||
  "tabs_bar.notifications": "通知",
 | 
			
		||||
  "tabs_bar.public": "跨站公共時間軸",
 | 
			
		||||
  "tabs_bar.federated_timeline": "跨站",
 | 
			
		||||
  "upload_area.title": "將檔案拖放至此上載",
 | 
			
		||||
  "upload_button.label": "上載媒體檔案",
 | 
			
		||||
  "upload_progress.label": "上載中……",
 | 
			
		||||
  "upload_form.undo": "還原",
 | 
			
		||||
  "video_player.toggle_sound": "開關音效",
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export default zh_hk;
 | 
			
		||||
| 
						 | 
				
			
			@ -6,15 +6,15 @@ module SettingsHelper
 | 
			
		|||
    de: 'Deutsch',
 | 
			
		||||
    es: 'Español',
 | 
			
		||||
    eo: 'Esperanto',
 | 
			
		||||
    pt: 'Português',
 | 
			
		||||
    fr: 'Français',
 | 
			
		||||
    hu: 'Magyar',
 | 
			
		||||
    uk: 'Українська',
 | 
			
		||||
    'zh-CN': '简体中文',
 | 
			
		||||
    pt: 'Português',
 | 
			
		||||
    fi: 'Suomi',
 | 
			
		||||
    ru: 'Русский',
 | 
			
		||||
    uk: 'Українська',
 | 
			
		||||
    ja: '日本語',
 | 
			
		||||
 | 
			
		||||
    'zh-CN': '简体中文',
 | 
			
		||||
    'zh-HK': '繁體中文(香港)',
 | 
			
		||||
  }.freeze
 | 
			
		||||
 | 
			
		||||
  def human_locale(locale)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -25,7 +25,21 @@ module Mastodon
 | 
			
		|||
    # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
 | 
			
		||||
    # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
 | 
			
		||||
 | 
			
		||||
    config.i18n.available_locales = [:en, :de, :es, :pt, :fr, :hu, :uk, 'zh-CN', :fi, :eo, :ru, :ja]
 | 
			
		||||
    config.i18n.available_locales = [
 | 
			
		||||
      :en,
 | 
			
		||||
      :de,
 | 
			
		||||
      :eo,
 | 
			
		||||
      :es,
 | 
			
		||||
      :fi,
 | 
			
		||||
      :fr,
 | 
			
		||||
      :hu,
 | 
			
		||||
      :ja,
 | 
			
		||||
      :pt,
 | 
			
		||||
      :ru,
 | 
			
		||||
      :uk,
 | 
			
		||||
      'zh-CN',
 | 
			
		||||
      :'zh-HK',
 | 
			
		||||
    ]
 | 
			
		||||
 | 
			
		||||
    config.i18n.default_locale    = :en
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										61
									
								
								config/locales/devise.zh-HK.yml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								config/locales/devise.zh-HK.yml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,61 @@
 | 
			
		|||
---
 | 
			
		||||
zh-HK:
 | 
			
		||||
  devise:
 | 
			
		||||
    confirmations:
 | 
			
		||||
      confirmed: 你的電郵地址確認成功
 | 
			
		||||
      send_instructions: 你將會在幾分鐘內收到確認指示電郵,上面有確認你電郵地址的指示。
 | 
			
		||||
      send_paranoid_instructions: 如果你的電郵地址已經存在於我們的資料庫,你將會在幾分鐘內收到電郵,確認你電郵地址的指示。
 | 
			
		||||
    failure:
 | 
			
		||||
      already_authenticated: 你之前已經登入了。
 | 
			
		||||
      inactive: 你的用戶並未啟用。
 | 
			
		||||
      invalid: 不正確的 %{authentication_keys} 或密碼。
 | 
			
		||||
      last_attempt: 若你再一次嘗試失敗,我們將鎖定你的用戶,以察安全。
 | 
			
		||||
      locked: 你的用戶已被鎖定
 | 
			
		||||
      not_found_in_database: 不正確的 %{authentication_keys} 或密碼。
 | 
			
		||||
      timeout: 你的登入階段已經過期,請重新登入以繼續使用。
 | 
			
		||||
      unauthenticated: 你必須先登入或登記,以繼續使用。
 | 
			
		||||
      unconfirmed: 你必須先確認電郵地址,繼續使用。
 | 
			
		||||
    mailer:
 | 
			
		||||
      confirmation_instructions:
 | 
			
		||||
        subject: 'Mastodon: 確認電郵地址'
 | 
			
		||||
      password_change:
 | 
			
		||||
        subject: 'Mastodon: 更改密碼'
 | 
			
		||||
      reset_password_instructions:
 | 
			
		||||
        subject: 'Mastodon: 重設密碼'
 | 
			
		||||
      unlock_instructions:
 | 
			
		||||
        subject: 'Mastodon: 解除用戶鎖定'
 | 
			
		||||
    omniauth_callbacks:
 | 
			
		||||
      failure: 無法以 %{kind} 登入你的用戶,原因是︰「%{reason}」。
 | 
			
		||||
      success: 成功以 %{kind} 登入你的用戶。
 | 
			
		||||
    passwords:
 | 
			
		||||
      no_token: 你必須使用重設密碼電郵內的網址進入本頁。如果你確是使用電郵內的網址,請確認你用了完整的網址。
 | 
			
		||||
      send_instructions: 你將在幾分鐘內收到重設密碼的電郵指示。
 | 
			
		||||
      send_paranoid_instructions: 如果你的電郵地址已經存在於我們的資料庫,你將會在幾分鐘內收到重設密碼的電郵指示。
 | 
			
		||||
      updated: 你的密碼已經更新,你現在正登入本站。
 | 
			
		||||
      updated_not_active: 你的密碼已經更新。
 | 
			
		||||
    registrations:
 | 
			
		||||
      destroyed: 再見了!你的用戶已被取消,希望我們相有相見的機會吧。
 | 
			
		||||
      signed_up: 歡迎你!你的登記已經成功。
 | 
			
		||||
      signed_up_but_inactive: 你的登記已經成功,可是由於你的用戶還被被啟用,暫時還不能讓你登入。
 | 
			
		||||
      signed_up_but_locked: 你的登記已經成功,可是由於你的用戶已被鎖定,我們無法讓你登入。
 | 
			
		||||
      signed_up_but_unconfirmed: 一條確認連結已經電郵到你的郵址。請使用讓連結啟用你的用戶。
 | 
			
		||||
      update_needs_confirmation: 你的用戶已經更新,但我們需要確認你的電郵地址。請打開你的郵箱,使用確認電郵的連結來確認的地郵址。
 | 
			
		||||
      updated: 你的用戶已經成功更新。
 | 
			
		||||
    sessions:
 | 
			
		||||
      already_signed_out: 成功登出。
 | 
			
		||||
      signed_in: 成功登入。
 | 
			
		||||
      signed_out: 成功登出。
 | 
			
		||||
    unlocks:
 | 
			
		||||
      send_instructions: 你將在幾分鐘內收到解除用戶鎖定的電郵指示。
 | 
			
		||||
      send_paranoid_instructions: 如果你的電郵地址已經存在於我們的資料庫,你將在幾分鐘內收到解除用戶鎖定的電郵指示。
 | 
			
		||||
      unlocked: 你的用戶已經解鎖,請登入以繼續。
 | 
			
		||||
  errors:
 | 
			
		||||
    messages:
 | 
			
		||||
      already_confirmed: 先前已經確認,請嘗試登入
 | 
			
		||||
      confirmation_period_expired: 需要在 %{period} 之內確認。請重新申請
 | 
			
		||||
      expired: 已經過期,請重新申請
 | 
			
		||||
      not_found: 找不到
 | 
			
		||||
      not_locked: 並未被鎖定
 | 
			
		||||
      not_saved:
 | 
			
		||||
        one: '1 個錯誤令 %{resource} 被法被儲存︰'
 | 
			
		||||
        other: "%{count} 個錯誤令 %{resource} 被法被儲存︰"
 | 
			
		||||
							
								
								
									
										113
									
								
								config/locales/doorkeeper.zh-HK.yml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										113
									
								
								config/locales/doorkeeper.zh-HK.yml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,113 @@
 | 
			
		|||
---
 | 
			
		||||
zh-HK:
 | 
			
		||||
  activerecord:
 | 
			
		||||
    attributes:
 | 
			
		||||
      doorkeeper/application:
 | 
			
		||||
        name: 名稱
 | 
			
		||||
        redirect_uri: 轉接 URI
 | 
			
		||||
    errors:
 | 
			
		||||
      models:
 | 
			
		||||
        doorkeeper/application:
 | 
			
		||||
          attributes:
 | 
			
		||||
            redirect_uri:
 | 
			
		||||
              fragment_present: 'URI 不可包含 "#fragment" 部份'
 | 
			
		||||
              invalid_uri: 必需有正確的 URI.
 | 
			
		||||
              relative_uri: 必需為絕對 URI.
 | 
			
		||||
              secured_uri: 必需使用有 HTTPS/SSL 加密的 URI.
 | 
			
		||||
  doorkeeper:
 | 
			
		||||
    applications:
 | 
			
		||||
      buttons:
 | 
			
		||||
        authorize: 認證
 | 
			
		||||
        cancel: 取消
 | 
			
		||||
        destroy: 移除
 | 
			
		||||
        edit: 編輯
 | 
			
		||||
        submit: 提交
 | 
			
		||||
      confirmations:
 | 
			
		||||
        destroy: 是否確定?
 | 
			
		||||
      edit:
 | 
			
		||||
        title: 編輯應用程式
 | 
			
		||||
      form:
 | 
			
		||||
        error: 噢!請檢查你表格的錯誤訊息
 | 
			
		||||
      help:
 | 
			
		||||
        native_redirect_uri: 使用 %{native_redirect_uri} 作局部測試
 | 
			
		||||
        redirect_uri: 每行輸入一個 URI
 | 
			
		||||
        scopes: 請用半形空格分開權限範圍 (scope)。留空表示使用預設的權限範圍
 | 
			
		||||
      index:
 | 
			
		||||
        callback_url: 回傳網址
 | 
			
		||||
        name: 名稱
 | 
			
		||||
        new: 新增應用程式
 | 
			
		||||
        title: 你的應用程式
 | 
			
		||||
      new:
 | 
			
		||||
        title: 新增應用程式
 | 
			
		||||
      show:
 | 
			
		||||
        actions: 操作
 | 
			
		||||
        application_id: 應用程式 ID
 | 
			
		||||
        callback_urls: 回傳網址
 | 
			
		||||
        scopes: 權限範圍
 | 
			
		||||
        secret: 密碼
 | 
			
		||||
        title: '應用程式︰ %{name}'
 | 
			
		||||
    authorizations:
 | 
			
		||||
      buttons:
 | 
			
		||||
        authorize: 批准
 | 
			
		||||
        deny: 拒絕
 | 
			
		||||
      error:
 | 
			
		||||
        title: 發生錯誤
 | 
			
		||||
      new:
 | 
			
		||||
        able_to: 要求獲取權限
 | 
			
		||||
        prompt: 應用程式 %{client_name} 要求得到你用戶的部份權限
 | 
			
		||||
        title: 需要用戶授權
 | 
			
		||||
      show:
 | 
			
		||||
        title: 授權代碼
 | 
			
		||||
    authorized_applications:
 | 
			
		||||
      buttons:
 | 
			
		||||
        revoke: 取消授權
 | 
			
		||||
      confirmations:
 | 
			
		||||
        revoke: 是否確定要取消授權?
 | 
			
		||||
      index:
 | 
			
		||||
        application: 應用程式
 | 
			
		||||
        created_at: 授權於
 | 
			
		||||
        date_format: "%Y-%m-%d %H:%M:%S"
 | 
			
		||||
        scopes: 權限範圍
 | 
			
		||||
        title: 已獲你授權的程用程式
 | 
			
		||||
    errors:
 | 
			
		||||
      messages:
 | 
			
		||||
        access_denied: 資源擁有者或授權伺服器不接受請求。
 | 
			
		||||
        credential_flow_not_configured: 資源擁有者密碼認證程序 (Resource Owner Password Credentials flow) 失敗,原因是 Doorkeeper.configure.resource_owner_from_credentials 沒有設定。
 | 
			
		||||
        invalid_client: 用戶程式認證 (Client authentication) 失敗,原因是用戶程式未有登記、沒有指定用戶程式 (client)、或者使用了不支援的認證方法 (method)。
 | 
			
		||||
        invalid_grant: 授權申請 (authorization grant) 不正確、過期、已被取消,或者無法對應授權請求 (authorization request) 內的轉接 URI,或者屬於別的用戶程式。
 | 
			
		||||
        invalid_redirect_uri: 不正確的轉接網址。
 | 
			
		||||
        invalid_request: 請求缺少了必要的參數、包含了不支援的參數、或者其他輸入錯誤。
 | 
			
		||||
        invalid_resource_owner: 資源擁有者的登入資訊錯誤、或者無法找到該資源擁有者。
 | 
			
		||||
        invalid_scope: 請求的權限範圍 (scope) 不正確、未有定義、或者輸入錯誤。
 | 
			
		||||
        invalid_token:
 | 
			
		||||
          expired: access token 已經過期
 | 
			
		||||
          revoked: access token 已被取消
 | 
			
		||||
          unknown: access token 不正確
 | 
			
		||||
        resource_owner_authenticator_not_configured: 無法找到資源擁有者,原因是 Doorkeeper.configure.resource_owner_authenticator 沒有設定。
 | 
			
		||||
        server_error: 認證伺服器遇上未知狀況,令請求無法通過。
 | 
			
		||||
        temporarily_unavailable: 認證伺服器由於臨時負荷過重或者維護,目前未能處理請求。
 | 
			
		||||
        unauthorized_client: 用戶程式無權用此方法 (method) 請行這個請求。
 | 
			
		||||
        unsupported_grant_type: 授權伺服器不支援這個授權類型 (grant type)。
 | 
			
		||||
        unsupported_response_type: 授權伺服器不支援這個回應類型 (response type).
 | 
			
		||||
    flash:
 | 
			
		||||
      applications:
 | 
			
		||||
        create:
 | 
			
		||||
          notice: 已新增應用程式。
 | 
			
		||||
        destroy:
 | 
			
		||||
          notice: 已刪除應用程式。
 | 
			
		||||
        update:
 | 
			
		||||
          notice: 已更新應用程式。
 | 
			
		||||
      authorized_applications:
 | 
			
		||||
        destroy:
 | 
			
		||||
          notice: 已取消應用程式授權。
 | 
			
		||||
    layouts:
 | 
			
		||||
      admin:
 | 
			
		||||
        nav:
 | 
			
		||||
          applications: 應用程式
 | 
			
		||||
          oauth2_provider: OAuth2 供應者
 | 
			
		||||
      application:
 | 
			
		||||
        title: 需要 OAuth 授權
 | 
			
		||||
    scopes:
 | 
			
		||||
      follow: 關注、封鎖、解除封鎖及取消關注用戶
 | 
			
		||||
      read: 閱讀你的用戶資料
 | 
			
		||||
      write: 以你的名義發佈文章
 | 
			
		||||
							
								
								
									
										46
									
								
								config/locales/simple_form.zh-HK.yml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								config/locales/simple_form.zh-HK.yml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,46 @@
 | 
			
		|||
---
 | 
			
		||||
zh-HK:
 | 
			
		||||
  simple_form:
 | 
			
		||||
    hints:
 | 
			
		||||
      defaults:
 | 
			
		||||
        avatar: 支援 PNG, GIF 或 JPG 圖片,檔案大小上限為 2MB,會被縮裁成 120x120px
 | 
			
		||||
        display_name: 最多 30 個字元
 | 
			
		||||
        header: 支援 PNG, GIF 或 JPG 圖片,檔案大小上限為 2MB,會被縮裁成 700x335px
 | 
			
		||||
        locked: 你必須人手核准每個用戶對你的關注請求,而你的文章私隱會被預設為「只有關注你的人能看」
 | 
			
		||||
        note: 最多 160 個字元
 | 
			
		||||
      imports:
 | 
			
		||||
        data: 自其他服務站匯出的 CSV 檔案
 | 
			
		||||
    labels:
 | 
			
		||||
      defaults:
 | 
			
		||||
        avatar: 個人頭像
 | 
			
		||||
        confirm_new_password: 確認新密碼
 | 
			
		||||
        confirm_password: 確認密碼
 | 
			
		||||
        current_password: 目前密碼
 | 
			
		||||
        data: 資料
 | 
			
		||||
        display_name: 顯示名稱
 | 
			
		||||
        email: 電郵地址
 | 
			
		||||
        header: 個人頁面頂部
 | 
			
		||||
        locale: 語言
 | 
			
		||||
        locked: 將用戶轉為「私人」
 | 
			
		||||
        new_password: 新密碼
 | 
			
		||||
        note: 簡介
 | 
			
		||||
        otp_attempt: 雙重認證碼
 | 
			
		||||
        password: 密碼
 | 
			
		||||
        setting_default_privacy: 文章預設私隱度
 | 
			
		||||
        type: 匯入資料類型
 | 
			
		||||
        username: 用戶名稱
 | 
			
		||||
      interactions:
 | 
			
		||||
        must_be_follower: 隱藏沒有關注你的用戶的通知
 | 
			
		||||
        must_be_following: 隱藏你不關注的用戶的通知
 | 
			
		||||
      notification_emails:
 | 
			
		||||
        digest: 定期電郵摘要
 | 
			
		||||
        favourite: 當有用戶喜歡你的文章時,發電郵通知
 | 
			
		||||
        follow: 當有用戶關注你時,發電郵通知
 | 
			
		||||
        follow_request: 當有用戶要求關注你時,發電郵通知
 | 
			
		||||
        mention: 當有用戶在文章提及你時,發電郵通知
 | 
			
		||||
        reblog: 當有用戶轉推你的文章時,發電郵通知
 | 
			
		||||
    'no': '否'
 | 
			
		||||
    required:
 | 
			
		||||
      mark: "*"
 | 
			
		||||
      text: 必須填寫
 | 
			
		||||
    'yes': '是'
 | 
			
		||||
							
								
								
									
										172
									
								
								config/locales/zh-HK.yml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										172
									
								
								config/locales/zh-HK.yml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,172 @@
 | 
			
		|||
---
 | 
			
		||||
zh-HK:
 | 
			
		||||
  about:
 | 
			
		||||
    about_mastodon: Mastodon (長毛象)是一個<em>自由、開放源碼</em>的社交網站。它是一個分散式的服務,避免你的通訊被單一商業機構壟斷操控。請你選擇一家你信任的 Mastodon 服務站,在上面建立帳號,然後你就可以和任一 Mastodon 服務站上的用戶互通,享受無縫的<em>社交網絡</em>交流。
 | 
			
		||||
    about_this: 關於本服務站
 | 
			
		||||
    apps: 應用程式
 | 
			
		||||
    business_email: 商業電郵︰
 | 
			
		||||
    closed_registrations: 本服務站暫時停止接受登記。
 | 
			
		||||
    contact: 聯絡
 | 
			
		||||
    description_headline: 關於 %{domain}
 | 
			
		||||
    domain_count_after: 個其他服務站
 | 
			
		||||
    domain_count_before: 已連接至
 | 
			
		||||
    features:
 | 
			
		||||
      api: 開放 API,供各式應用程式及服務連入
 | 
			
		||||
      blocks: 完善的封鎖用戶、靜音功能
 | 
			
		||||
      characters: 每篇文章最多 500 字
 | 
			
		||||
      chronology: 時間軸忠實按時序顯示文章,不作多餘處理
 | 
			
		||||
      ethics: 良心設計︰沒有廣告,不追蹤你的使用行為
 | 
			
		||||
      gifv: 支援顯示 GIFV 短片圖組
 | 
			
		||||
      privacy: 可逐篇文章設定私隱度
 | 
			
		||||
      public: 公共時間軸
 | 
			
		||||
    features_headline: 甚麼讓 Mastodon 與眾不同
 | 
			
		||||
    get_started: 立即登記
 | 
			
		||||
    links: 連結
 | 
			
		||||
    other_instances: 其他服務站
 | 
			
		||||
    source_code: 源代碼
 | 
			
		||||
    status_count_after: 篇文章
 | 
			
		||||
    status_count_before: 他們共發佈了
 | 
			
		||||
    terms: 使用條款
 | 
			
		||||
    user_count_after: 位使用者
 | 
			
		||||
    user_count_before: 這裏共註冊有
 | 
			
		||||
  accounts:
 | 
			
		||||
    follow: 關注
 | 
			
		||||
    followers: 關注者
 | 
			
		||||
    following: 正在關注
 | 
			
		||||
    nothing_here: 暫時未有內容可以顯示
 | 
			
		||||
    people_followed_by: '%{name} 關注的人'
 | 
			
		||||
    people_who_follow: 關注 %{name} 的人
 | 
			
		||||
    posts: 文章
 | 
			
		||||
    remote_follow: 跨站關注
 | 
			
		||||
    unfollow: 取消關注
 | 
			
		||||
  application_mailer:
 | 
			
		||||
    settings: '修改電郵設定︰ %{link}'
 | 
			
		||||
    signature: 來自 %{instance} 的 Mastodon 通知
 | 
			
		||||
    view: '進入瀏覽︰'
 | 
			
		||||
  applications:
 | 
			
		||||
    invalid_url: 所提供的網址不正確
 | 
			
		||||
  auth:
 | 
			
		||||
    change_password: 登入資訊
 | 
			
		||||
    didnt_get_confirmation: 沒有收到確認指示電郵?
 | 
			
		||||
    forgot_password: 忘記了密碼?
 | 
			
		||||
    login: 登入
 | 
			
		||||
    logout: 登出
 | 
			
		||||
    register: 登記
 | 
			
		||||
    resend_confirmation: 重發確認指示電郵
 | 
			
		||||
    reset_password: 重設密碼
 | 
			
		||||
    set_new_password: 設定新密碼
 | 
			
		||||
  authorize_follow:
 | 
			
		||||
    error: 對不起,尋找這個跨站用戶的過程發生錯誤
 | 
			
		||||
    follow: 關注
 | 
			
		||||
    prompt_html: '你 (<strong>%{self}</strong>) 正準備關注︰'
 | 
			
		||||
    title: 關注 %{acct}
 | 
			
		||||
  datetime:
 | 
			
		||||
    distance_in_words:
 | 
			
		||||
      about_x_hours: "%{count}小時前"
 | 
			
		||||
      about_x_months: "%{count}個月前"
 | 
			
		||||
      about_x_years: "%{count}年前"
 | 
			
		||||
      almost_x_years: "接近%{count}年前"
 | 
			
		||||
      half_a_minute: 剛剛
 | 
			
		||||
      less_than_x_minutes: "少於%{count}分鐘前"
 | 
			
		||||
      less_than_x_seconds: 剛剛
 | 
			
		||||
      over_x_years: "%{count}y"
 | 
			
		||||
      x_days: "%{count}日"
 | 
			
		||||
      x_minutes: "%{count}分鐘"
 | 
			
		||||
      x_months: "%{count}個月"
 | 
			
		||||
      x_seconds: "%{count}秒"
 | 
			
		||||
  exports:
 | 
			
		||||
    blocks: 被你封鎖的用戶
 | 
			
		||||
    csv: CSV
 | 
			
		||||
    follows: 你所關注的用戶
 | 
			
		||||
    storage: 媒體容量大小
 | 
			
		||||
  generic:
 | 
			
		||||
    changes_saved_msg: 已成功儲存修改
 | 
			
		||||
    powered_by: 網站由 %{link} 開發
 | 
			
		||||
    save_changes: 儲存修改
 | 
			
		||||
    validation_errors:
 | 
			
		||||
      one: 提交的資料有問題
 | 
			
		||||
      other: 提交的資料有 %{count} 項問題
 | 
			
		||||
  imports:
 | 
			
		||||
    preface: 你可以在此匯入你在其他服務站所匯出的資料檔,包括︰你所關注的用戶,被你封鎖的用戶。
 | 
			
		||||
    success: 你已成功上載資料檔,我們正將資料匯入,請稍候
 | 
			
		||||
    types:
 | 
			
		||||
      blocking: 被你封鎖的用戶名單
 | 
			
		||||
      following: 你所關注的用戶名單
 | 
			
		||||
    upload: 上載
 | 
			
		||||
  landing_strip_html: <strong>%{name}</strong> 是一個在 <strong>%{domain}</strong> 的用戶。只要你有任何 Mastodon 服務站、或者聯盟網站的用戶,便可以跨站關注此站用戶,或者與他們互動。如果你沒有這類用戶,歡迎在<a href="%{sign_up_path}">此處登記</a>。
 | 
			
		||||
  media_attachments:
 | 
			
		||||
    validations:
 | 
			
		||||
      images_and_video: 不能在已有圖片的文章上加入影片
 | 
			
		||||
      too_many: 不可以加入超過 4 個檔案
 | 
			
		||||
  notification_mailer:
 | 
			
		||||
    digest:
 | 
			
		||||
      body: '這是自從你在%{since}使用%{instance}以後,你錯失了的訊息︰'
 | 
			
		||||
      mention: "%{name} 在此提及了你︰"
 | 
			
		||||
      new_followers_summary:
 | 
			
		||||
        one: 你新獲得了 1 位關注者了!恭喜!
 | 
			
		||||
        other: 你新獲得了 %{count} 位關注者了!好厲害!
 | 
			
		||||
      subject:
 | 
			
		||||
        one: "自從上次登入以來,你收到 1 則新的通知 \U0001F418"
 | 
			
		||||
        other: "自從上次登入以來,你收到 %{count} 則新的通知 \U0001F418"
 | 
			
		||||
    favourite:
 | 
			
		||||
      body: '你的文章獲得 %{name} 的喜愛'
 | 
			
		||||
      subject: "%{name} 喜歡你的文章"
 | 
			
		||||
    follow:
 | 
			
		||||
      body: "%{name} 開始關注你!"
 | 
			
		||||
      subject: "%{name} 現正關注你"
 | 
			
		||||
    follow_request:
 | 
			
		||||
      body: "%{name} 要求關注你"
 | 
			
		||||
      subject: '等候關注你的用戶︰ %{name}'
 | 
			
		||||
    mention:
 | 
			
		||||
      body: '%{name} 在文章中提及你︰'
 | 
			
		||||
      subject: '%{name} 在文章中提及你'
 | 
			
		||||
    reblog:
 | 
			
		||||
      body: '你的文章得到 %{name} 的轉推'
 | 
			
		||||
      subject: "%{name} 轉推了你的文章"
 | 
			
		||||
  pagination:
 | 
			
		||||
    next: 下一頁
 | 
			
		||||
    prev: 上一頁
 | 
			
		||||
    truncate: "……"
 | 
			
		||||
  remote_follow:
 | 
			
		||||
    acct: 請輸入你的︰用戶名稱@服務點域名
 | 
			
		||||
    missing_resource: 無法找到你用戶的轉接網址
 | 
			
		||||
    proceed: 下一步
 | 
			
		||||
    prompt: '你希望關注︰'
 | 
			
		||||
  settings:
 | 
			
		||||
    authorized_apps: 授權應用程式
 | 
			
		||||
    back: 回到 Mastodon
 | 
			
		||||
    edit_profile: 修改個人資料
 | 
			
		||||
    export: 匯出
 | 
			
		||||
    import: 匯入
 | 
			
		||||
    preferences: 偏好設定
 | 
			
		||||
    settings: 設定
 | 
			
		||||
    two_factor_auth: 雙重認證
 | 
			
		||||
  statuses:
 | 
			
		||||
    open_in_web: 開啟網頁
 | 
			
		||||
    over_character_limit: 超過了 %{max} 字的限制
 | 
			
		||||
    show_more: 顯示更多
 | 
			
		||||
    visibilities:
 | 
			
		||||
      private: 只有關注你的人能看
 | 
			
		||||
      public: 公開
 | 
			
		||||
      unlisted: 公開,但不在公共時間軸顯示
 | 
			
		||||
  stream_entries:
 | 
			
		||||
    click_to_show: 點擊顯示
 | 
			
		||||
    reblogged: 轉推
 | 
			
		||||
    sensitive_content: 敏感內容
 | 
			
		||||
  time:
 | 
			
		||||
    formats:
 | 
			
		||||
      default: "%Y年%-m月%d日 %H:%M"
 | 
			
		||||
  two_factor_auth:
 | 
			
		||||
    code_hint: 請輸入你認證器產生的代碼,以確認設定
 | 
			
		||||
    description_html: 當你啟用<strong>雙重認證</strong>後,你登入時將需要使你手機、或其他種類認證器產生的代碼。
 | 
			
		||||
    disable: 停用
 | 
			
		||||
    enable: 啟用
 | 
			
		||||
    enabled_success: 已成功啟用雙重認證
 | 
			
		||||
    instructions_html: <strong>請用你手機的認證器應用程式(如 Google Authenticator、Authy),掃描這裏的 QR 圖形碼</strong>。在雙重認證啟用後,你登入時將須要使用此應用程式產生的認證碼。
 | 
			
		||||
    manual_instructions: 如果你無法掃描 QR 圖形碼,請手動輸入這個文字密碼︰
 | 
			
		||||
    setup: 設定
 | 
			
		||||
    warning: 如果你現在無法正確設定你的應用程式,請即「停用」雙重認證,否則日後可能無法登入本站。
 | 
			
		||||
    wrong_code: 你輸入的認證碼並不正確!可能伺服器時間和你手機不一致,請檢查你手機的時鐘,或與本站管理員聯絡。
 | 
			
		||||
  users:
 | 
			
		||||
    invalid_email: 電郵地址格式不正確
 | 
			
		||||
    invalid_otp_token: 雙重認證確認碼不正確
 | 
			
		||||
		Loading…
	
	Add table
		
		Reference in a new issue