diff --git a/app/controllers/about_controller.rb b/app/controllers/about_controller.rb index c0addbecc..47690e81e 100644 --- a/app/controllers/about_controller.rb +++ b/app/controllers/about_controller.rb @@ -4,7 +4,10 @@ class AboutController < ApplicationController before_action :set_body_classes before_action :set_instance_presenter, only: [:show, :more, :terms] - def show; end + def show + serializable_resource = ActiveModelSerializers::SerializableResource.new(InitialStatePresenter.new(initial_state_params), serializer: InitialStateSerializer) + @initial_state_json = serializable_resource.to_json + end def more; end @@ -15,6 +18,7 @@ class AboutController < ApplicationController def new_user User.new.tap(&:build_account) end + helper_method :new_user def set_instance_presenter @@ -24,4 +28,11 @@ class AboutController < ApplicationController def set_body_classes @body_classes = 'about-body' end + + def initial_state_params + { + settings: {}, + token: current_session&.token, + } + end end diff --git a/app/controllers/admin/settings_controller.rb b/app/controllers/admin/settings_controller.rb index f27a1f4d4..29b590d7a 100644 --- a/app/controllers/admin/settings_controller.rb +++ b/app/controllers/admin/settings_controller.rb @@ -11,8 +11,15 @@ module Admin site_terms open_registrations closed_registrations_message + open_deletion + timeline_preview + ).freeze + + BOOLEAN_SETTINGS = %w( + open_registrations + open_deletion + timeline_preview ).freeze - BOOLEAN_SETTINGS = %w(open_registrations).freeze def edit @settings = Setting.all_as_records diff --git a/app/controllers/home_controller.rb b/app/controllers/home_controller.rb index 218da6906..8a8b9ec76 100644 --- a/app/controllers/home_controller.rb +++ b/app/controllers/home_controller.rb @@ -15,12 +15,16 @@ class HomeController < ApplicationController end def set_initial_state_json - state = InitialStatePresenter.new(settings: Web::Setting.find_by(user: current_user)&.data || {}, - current_account: current_account, - token: current_session.token, - admin: Account.find_local(Setting.site_contact_username)) - - serializable_resource = ActiveModelSerializers::SerializableResource.new(state, serializer: InitialStateSerializer) + serializable_resource = ActiveModelSerializers::SerializableResource.new(InitialStatePresenter.new(initial_state_params), serializer: InitialStateSerializer) @initial_state_json = serializable_resource.to_json end + + def initial_state_params + { + settings: Web::Setting.find_by(user: current_user)&.data || {}, + current_account: current_account, + token: current_session.token, + admin: Account.find_local(Setting.site_contact_username), + } + end end diff --git a/app/javascript/fonts/montserrat/Montserrat-Medium.ttf b/app/javascript/fonts/montserrat/Montserrat-Medium.ttf new file mode 100644 index 000000000..88d70b89c Binary files /dev/null and b/app/javascript/fonts/montserrat/Montserrat-Medium.ttf differ diff --git a/app/javascript/images/cloud2.png b/app/javascript/images/cloud2.png new file mode 100644 index 000000000..f325ca6de Binary files /dev/null and b/app/javascript/images/cloud2.png differ diff --git a/app/javascript/images/cloud3.png b/app/javascript/images/cloud3.png new file mode 100644 index 000000000..ab194d0b8 Binary files /dev/null and b/app/javascript/images/cloud3.png differ diff --git a/app/javascript/images/cloud4.png b/app/javascript/images/cloud4.png new file mode 100644 index 000000000..98323f5a2 Binary files /dev/null and b/app/javascript/images/cloud4.png differ diff --git a/app/javascript/images/elephant-fren.png b/app/javascript/images/elephant-fren.png new file mode 100644 index 000000000..3b64edf08 Binary files /dev/null and b/app/javascript/images/elephant-fren.png differ diff --git a/app/javascript/images/logo.svg b/app/javascript/images/logo.svg index c233db842..16cb3a944 100644 --- a/app/javascript/images/logo.svg +++ b/app/javascript/images/logo.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/app/javascript/mastodon/components/dropdown_menu.js b/app/javascript/mastodon/components/dropdown_menu.js index 12e1b44fa..98323b069 100644 --- a/app/javascript/mastodon/components/dropdown_menu.js +++ b/app/javascript/mastodon/components/dropdown_menu.js @@ -14,6 +14,7 @@ export default class DropdownMenu extends React.PureComponent { size: PropTypes.number.isRequired, direction: PropTypes.string, ariaLabel: PropTypes.string, + disabled: PropTypes.bool, }; static defaultProps = { @@ -68,9 +69,19 @@ export default class DropdownMenu extends React.PureComponent { } render () { - const { icon, items, size, direction, ariaLabel } = this.props; - const { expanded } = this.state; + const { icon, items, size, direction, ariaLabel, disabled } = this.props; + const { expanded } = this.state; const directionClass = (direction === 'left') ? 'dropdown__left' : 'dropdown__right'; + const iconStyle = { fontSize: `${size}px`, width: `${size}px`, lineHeight: `${size}px` }; + const iconClassname = `fa fa-fw fa-${icon} dropdown__icon`; + + if (disabled) { + return ( +
{' '} @@ -157,7 +162,7 @@ export default class StatusContent extends React.PureComponent { return (
<a> and <em>.
@@ -185,7 +193,7 @@ en:
         title: Extended site description
       site_terms:
         desc_html: Displayed on terms pageあなたがこのサイトに登録すると、ここで共有された情報を読んだり、書いたり、評価したりして、フォーラムでの情報を集める事ができます。
このサイトに登録する際には、名前とメールアドレスの入力を求めることがあります。ただし、登録をすることなくこのサイトを利用することも可能です。あなたのメールアドレスは、固有のリンクを含んだメールで確認されます。そのリンクにアクセスした場合にメールアドレスを制御することとなります。
diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 844e78908..c8ad38d41 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -3,23 +3,12 @@ ko: about: about_mastodon: Mastodon 은자유로운 오픈 소스소셜 네트워크입니다. 상용 플랫폼의 대체로써 분산형 구조를 채택해, 여러분의 대화가 한 회사에 독점되는 것을 방지합니다. 신뢰할 수 있는 인스턴스를 선택하세요 — 어떤 인스턴스를 고르더라도, 누구와도 대화할 수 있습니다. 누구나 자신만의 Mastodon 인스턴스를 만들 수 있으며, Seamless하게 소셜 네트워크에 참가할 수 있습니다. 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: 다른 인스턴스 @@ -151,7 +140,7 @@ ko: nsfw: 'false': NSFW 꺼짐 'true': NSFW 켜짐 - report: "신고 #%{id}" + report: '신고 #%{id}' report_contents: 내용 reported_account: 신고 대상 계정 reported_by: 신고자 @@ -173,8 +162,6 @@ ko: desc_html: 신규 등록을 받지 않을 때 프론트 페이지에 표시됩니다.Dokument jest dostępny na licencji CC-BY-SA. Ostatnio modyfikowany 31 maja 2013, przetłumaczony 4 lipca 2017. Tłumaczenie (mimo dołożenia wszelkich starań) może nie być w pełni poprawne.
Tekst bazuje na polityce prywatności Discourse.
-    title: "Zasady korzystania i polityka prywatności %{instance}"
+    title: Zasady korzystania i polityka prywatności %{instance}
   time:
     formats:
       default: "%b %d, %Y, %H:%M"
diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml
index 973a8d401..fb5e03c8c 100644
--- a/config/locales/pt-BR.yml
+++ b/config/locales/pt-BR.yml
@@ -3,23 +3,12 @@ pt-BR:
   about:
     about_mastodon: Mastodon é um servidor de rede social grátis, e open-source. Uma alternativa descentralizada ás plataformas comerciais, que evita o risco de uma única empresa monopolizar a sua comunicação. Escolha um servidor que você confie — qualquer um que escolher, você poderá interagir com todo o resto. Qualquer um pode ter uma instância Mastodon e assim participar na rede social federada sem problemas.
     about_this: Sobre essa instância
-    apps: Aplicações
     business_email: 'Email comercial:'
     closed_registrations: Registros estão fechadas para essa instância.
     contact: Contato
     description_headline: O que é %{domain}?
     domain_count_after: outras instâncias
     domain_count_before: Conectado a
-    features:
-      api: Aberto para API de aplicações e serviços
-      blocks: Bloqueos e ferramentas para mudar
-      characters: 500 caracteres por post
-      chronology: Timeline são cronologicas
-      ethics: 'Design ético: sem propaganda, sem tracking'
-      gifv: GIFV e vídeos curtos
-      privacy: Granular, privacidade setada por post
-      public: Timelines públicas
-    features_headline: O que torna Mastodon diferente
     get_started: Comece aqui
     links: Links
     other_instances: Outras instâncias
@@ -159,8 +148,6 @@ pt-BR:
           desc_html: Mostrar na página inicial quando registros estão fecados
Você pode usar tags HTML
           title: Mensagem de registro fechados
         open:
-          disabled: Desabilitado
-          enabled: Habilitado
           title: Aberto para registro
       setting: Preferências
       site_description:
diff --git a/config/locales/pt.yml b/config/locales/pt.yml
index dff2898c0..0f59185a7 100644
--- a/config/locales/pt.yml
+++ b/config/locales/pt.yml
@@ -3,23 +3,12 @@ pt:
   about:
     about_mastodon: Mastodon é uma rede social grátis e em código aberto. Uma alternativa descentralizada às plataformas comerciais, que evita o risco de uma única empresa monopolizar a tua comunicação. Escolhe um servidor que confies, não importa qual, pois vais poder comunicar com todos os outros. Qualquer um pode criar uma instância Mastodon e participar nesta rede social.
     about_this: Sobre esta instância
-    apps: Aplicações
     business_email: 'Email comercial:'
     closed_registrations: Novos registos estão fechados nesta instância.
     contact: Contacto
     description_headline: O que é o %{domain}?
     domain_count_after: outras instâncias
     domain_count_before: Ligado a
-    features:
-      api: API aberta para aplicações e serviços
-      blocks: Ferramentas para silenciar e bloquear
-      characters: 500 caracteres por post
-      chronology: Timelines cronológicas
-      ethics: 'Design ético: sem públicidade ou tracking'
-      gifv: GIFV e pequenos vídeos
-      privacy: Privacidade granular por post
-      public: Timelines públicas
-    features_headline: O que torna Mastodon diferente
     get_started: Começar
     links: Links
     other_instances: Outras instâncias
@@ -154,8 +143,6 @@ pt:
           desc_html: Mostrar na página inicial quando registos estão encerrados
Podes usar tags HTML
           title: Mensagem de registos encerrados
         open:
-          disabled: Desabilitado
-          enabled: Habilitado
           title: Aceitar novos registos
       setting: Preferências
       site_description:
diff --git a/config/locales/ru.yml b/config/locales/ru.yml
index 6321e96eb..414d39dd2 100644
--- a/config/locales/ru.yml
+++ b/config/locales/ru.yml
@@ -3,23 +3,12 @@ ru:
   about:
     about_mastodon: Mastodon - это свободная социальная сеть с открытым исходным кодом. Как децентрализованная альтернатива коммерческим платформам, Mastodon предотвращает риск монополизации Вашего общения одной компанией. Выберите сервер, которому Вы доверяете — что бы Вы ни выбрали, Вы сможете общаться со всеми остальными. Любой может запустить свой собственный узел Mastodon и участвовать в социальной сети совершенно бесшовно.
     about_this: Об этом узле
-    apps: Приложения
     business_email: 'Деловой e-mail:'
     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: Другие узлы
@@ -141,8 +130,6 @@ ru:
           desc_html: Отображается на титульной странице, когда закрыта регистрация
Можно использовать HTML-теги
           title: Сообщение о закрытой регистрации
         open:
-          disabled: Закрыта
-          enabled: Открыта
           title: Открыть регистрацию
       setting: Настройка
       site_description:
diff --git a/config/locales/th.yml b/config/locales/th.yml
index 322e5e74b..a71252afe 100644
--- a/config/locales/th.yml
+++ b/config/locales/th.yml
@@ -3,23 +3,12 @@ th:
   about:
     about_mastodon: แมสโทดอน เป็น  ดีเซ็นทรัลไลซ์ฟรีโอเพ่นซอร์ส โซเชี่ยวเน็ตเวริ์ค.  เป็นทางเลือกทดแทนโซเชี่ยวเน็ตเวิร์คที่ทำเป็นธุรกิจการค้า, ป้องกันการผูกขาดช่องทางการสื่อสารของคุณ. เลือกเซร์ฟเวอร์ที่คุณไว้ใจ — ที่คุณเลือกได้เอง, สื่อสารกับคนที่คุณต้องการได้เสมอ. ใครๆก็รันแมสโทดอนอินซะแตนซ์ได้ และ เชื่อมต่อกับโซเชี่ยวเน็ตเวิร์ค โดยไม่มีอะไรมาขวางกั้น.
     about_this: เกี่ยวกับอินซะแตนซ์นี้
-    apps: แอ๊ฟ
     business_email: 'อีเมล์ธุรกิจ:'
     closed_registrations: อินซะแตนซ์นี้ปิดรับลงทะเบียนแล้ว.
     contact: ติดต่อ
     description_headline: โดเมนคือ %{domain} ?
     domain_count_after: อินซะแตนซ์อื่นๆ
     domain_count_before: เชื่อมต่อกับ
-    features:
-      api: API เปิดสำหรับ Apps และ Services
-      blocks: มีเครื่องมือสำหรับ Block และ Mute
-      characters: เขียนได้ 500 ตัวอักษรต่อโพสต์
-      chronology: Timelines are chronological
-      ethics: 'ออกแบบด้วยจรรยาบรรณ: ไม่มีโฆษณา, ไม่มีการแทรค'
-      gifv: รองรับภาพ GIFV และ วีดีโอสั้น
-      privacy: Granular, per-post privacy settings
-      public: ไทม์ไลน์สาธารณะ
-    features_headline: What sets Mastodon apart
     get_started: เริ่มกันเลย
     links: ลิงก์
     other_instances: อินซะแตนซ์อื่นๆ
@@ -160,8 +149,6 @@ th:
           desc_html: Displayed on frontpage when registrations are closed
 ใช้ HTML tags ได้
           title: ปิดข้อความลงทะเบียน
         open:
-          disabled: ปิดการใช้งาน
-          enabled: ปิดใช้งาน
           title: เปิดรับลงทะเบียน
       setting: ตั้งค่า
       site_description:
diff --git a/config/locales/tr.yml b/config/locales/tr.yml
index 0e33e2efe..a8927eaa8 100644
--- a/config/locales/tr.yml
+++ b/config/locales/tr.yml
@@ -3,23 +3,12 @@ tr:
   about:
     about_mastodon: Mastodon ücretsiz ve açık kaynaklı bir sosyal ağdır. Merkezileştirilmemiş yapısı sayesinde diğer ticari sosyal platformların aksine iletişimininizin tek bir firmada tutulmasının/yönetilmesinin önüne geçer. Güvendiğiniz bir sunucuyu seçerek oradaki kişilerle etkileşimde bulunabilirsiniz. Herkes kendi Mastodon sunucusunu kurabilir ve sorunsuz bir şekilde Mastodon sosyal ağına dahil edebilir.
     about_this: Bu sunucu hakkında
-    apps: Uygulamalar
     business_email: 'İş e-postası:'
     closed_registrations: Bu sunucu şu anda yeni kayıt almamaktadır.
     contact: İletişim
     description_headline: Peki %{domain} nedir?
     domain_count_after: sunucu var.
     domain_count_before: Bağlı olduğu
-    features:
-      api: Uygulama ve servisler için açık API
-      blocks: Zengin blok ve iletişim araçları
-      characters: 500 karakterlik gönderiler
-      chronology: Kronolojik zaman tüneli
-      ethics: 'Etik tasarım: reklam ve izleme yok'
-      gifv: GIFV ve diğer video türleri
-      privacy: Gönderi bazlı gizlilik
-      public: Herkese açık zaman tünelleri
-    features_headline: Mastodon'ı diğerlerinden ayıran nedir?
     get_started: Kayıt ol
     links: Bağlantılar
     other_instances: Diğer sunucular
@@ -159,8 +148,6 @@ tr:
           desc_html: Kayıt alımları kapatıldığında ana sayfada görüntülenecek mesajdır. 
 HTML etiketleri kullanabilirsiniz.
           title: Kayıt alımları kapatılma mesajı
         open:
-          disabled: Kapalı
-          enabled: Açık
           title: Kayıt alımları
       setting: Ayar adı
       site_description:
diff --git a/config/locales/uk.yml b/config/locales/uk.yml
index 1327c1a7b..65f1aabf5 100644
--- a/config/locales/uk.yml
+++ b/config/locales/uk.yml
@@ -3,23 +3,12 @@ uk:
   about:
     about_mastodon: Mastodon - це вільна соціальна мережа з відкритим вихідним кодом. Вона є децентралізованою альтернативою комерційним платформам, що дозволяє уникнути ризиків монополізації вашого спілкування однією компанією. Виберіть сервер, якому ви довіряєте — що б ви не вибрали, Ви зможете спілкуватись з усіма іншими. Будь-який користувач може запустити власну інстанцію Mastodon та без проблем брати участь в соціальній мережі.
     about_this: Про цю інстанцію
-    apps: Додатки
     business_email: 'Діловий 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: Інші інстанції
@@ -141,8 +130,6 @@ uk:
           desc_html: Відображається на титульній сторінці, коли реєстрація закрита 
Можна використовувати HTML-теги
           title: Повідомлення про закриту реєстрацію
         open:
-          disabled: Закрита
-          enabled: Відкрита
           title: Відкрити реєстрацію
       setting: Налаштування
       site_description:
diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml
index 6c8e9fc6d..d5d1b672c 100644
--- a/config/locales/zh-CN.yml
+++ b/config/locales/zh-CN.yml
@@ -3,23 +3,12 @@ zh-CN:
   about:
     about_mastodon: Mastodon(长毛象)是一个自由、开放源码的社交网站。它是一个分布式的服务,避免你的通信被单一商业机构垄断操控。请你选择一家你信任的 Mastodon 实例,在上面创建帐号,然后你就可以和任一 Mastodon 实例上的用户互通,享受无缝的社交交流。
     about_this: 关于本实例
-    apps: 应用程序
     business_email: 商业电邮︰
     closed_registrations: 这个实例目前不开放注册 _(:3」∠)_
     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: 其它实例
@@ -166,8 +155,6 @@ zh-CN:
           desc_html: 当本站暂停接受注册时,会显示这个消息。
 可使用 HTML
           title: 暂停注册消息
         open:
-          disabled: 停用
-          enabled: 启用
           title: 开放注册
       setting: 设置
       site_description:
diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml
index 4d8262c5b..aa9f27912 100644
--- a/config/locales/zh-HK.yml
+++ b/config/locales/zh-HK.yml
@@ -3,23 +3,12 @@ zh-HK:
   about:
     about_mastodon: Mastodon(萬象)是自由、開源的社交網絡。服務站各自獨立而互連,避免單一商業機構壟斷。找你所信任的服務站,建立帳號,你即可與任何服務站上的用戶溝通,享受無縫的網絡交流。
     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: 其他服務站
@@ -159,8 +148,6 @@ zh-HK:
           desc_html: 當本站暫停接受註冊時,會顯示這個訊息。
 可使用 HTML
           title: 暫停註冊訊息
         open:
-          disabled: 停用
-          enabled: 啟用
           title: 開放註冊
       setting: 設定
       site_description:
diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml
index 754175a7a..58caf7848 100644
--- a/config/locales/zh-TW.yml
+++ b/config/locales/zh-TW.yml
@@ -3,23 +3,12 @@ zh-TW:
   about:
     about_mastodon: Mastodon (長毛象)是一個自由、開放原始碼的社群網站。它是一個分散式的服務,避免您的通訊被單一商業機構壟斷操控。請您選擇一家您信任的 Mastodon 服務站,在上面建立帳號,然後您就可以和任一 Mastodon 服務站上的使用者互通,享受無縫的社群網路交流。
     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: 其他服務站
@@ -120,8 +109,6 @@ zh-TW:
           desc_html: 關閉註冊時顯示在首頁的內容,可使用 HTML 標籤。
           title: 關閉註冊訊息
         open:
-          disabled: 停用
-          enabled: 啟用
           title: 開放註冊
       setting: 設定
       site_description:
diff --git a/config/settings.yml b/config/settings.yml
index be2a7a1f8..579ba2929 100644
--- a/config/settings.yml
+++ b/config/settings.yml
@@ -16,6 +16,7 @@ defaults: &defaults
   open_registrations: true
   closed_registrations_message: ''
   open_deletion: true
+  timeline_preview: true
   boost_modal: false
   auto_play_gif: false
   delete_modal: true
diff --git a/lib/tasks/mastodon.rake b/lib/tasks/mastodon.rake
index 0e182c755..bd70937e4 100644
--- a/lib/tasks/mastodon.rake
+++ b/lib/tasks/mastodon.rake
@@ -161,16 +161,12 @@ namespace :mastodon do
   namespace :settings do
     desc 'Open registrations on this instance'
     task open_registrations: :environment do
-      setting = Setting.where(var: 'open_registrations').first
-      setting.value = true
-      setting.save
+      Setting.open_registrations = true
     end
 
     desc 'Close registrations on this instance'
     task close_registrations: :environment do
-      setting = Setting.where(var: 'open_registrations').first
-      setting.value = false
-      setting.save
+      Setting.open_registrations = false
     end
   end
 
diff --git a/spec/requests/localization_spec.rb b/spec/requests/localization_spec.rb
index 2f7a5e91e..f625a93a4 100644
--- a/spec/requests/localization_spec.rb
+++ b/spec/requests/localization_spec.rb
@@ -6,13 +6,13 @@ describe 'Localization' do
   after(:all) do
     I18n.locale = I18n.default_locale
   end
-  
+
   it 'uses a specific region when provided' do
     headers = { 'Accept-Language' => 'zh-HK' }
 
     get "/about", headers: headers
     expect(response.body).to include(
-      I18n.t('about.about_mastodon', locale: 'zh-HK')
+      I18n.t('about.about_mastodon_html', locale: 'zh-HK')
     )
   end
 
@@ -21,7 +21,7 @@ describe 'Localization' do
 
     get "/about", headers: headers
     expect(response.body).to include(
-      I18n.t('about.about_mastodon', locale: 'es')
+      I18n.t('about.about_mastodon_html', locale: 'es')
     )
   end
   it 'falls back to english when locale is missing' do
@@ -29,7 +29,7 @@ describe 'Localization' do
 
     get "/about", headers: headers
     expect(response.body).to include(
-      I18n.t('about.about_mastodon', locale: 'en')
+      I18n.t('about.about_mastodon_html', locale: 'en')
     )
   end
 end
diff --git a/spec/views/about/show.html.haml_spec.rb b/spec/views/about/show.html.haml_spec.rb
index 2c5130d84..c0ead6349 100644
--- a/spec/views/about/show.html.haml_spec.rb
+++ b/spec/views/about/show.html.haml_spec.rb
@@ -10,10 +10,11 @@ describe 'about/show.html.haml', without_verify_partial_doubles: true do
 
   it 'has valid open graph tags' do
     instance_presenter = double(:instance_presenter,
-				site_description: 'something',
-				open_registrations: false,
-				closed_registrations_message: 'yes',
-			       )
+                                site_title: 'something',
+                                site_description: 'something',
+                                version_number: '1.0',
+                                open_registrations: false,
+                                closed_registrations_message: 'yes')
     assign(:instance_presenter, instance_presenter)
     render