Merge upstream (#81)

This commit is contained in:
kibigo!
2017-07-15 14:33:15 -07:00
213 changed files with 2714 additions and 1364 deletions

View File

@@ -31,6 +31,11 @@ Rails.application.configure do
config.logger = ActiveSupport::TaggedLogging.new(logger)
end
# Generate random VAPID keys
vapid_key = Webpush.generate_key
config.x.vapid_private_key = vapid_key.private_key
config.x.vapid_public_key = vapid_key.public_key
# Don't care if the mailer can't send.
config.action_mailer.raise_delivery_errors = false

View File

@@ -40,6 +40,11 @@ Rails.application.configure do
# Print deprecation notices to the stderr.
config.active_support.deprecation = :stderr
# Generate random VAPID keys
vapid_key = Webpush.generate_key
config.x.vapid_private_key = vapid_key.private_key
config.x.vapid_public_key = vapid_key.public_key
# Raises error for missing translations
# config.action_view.raise_on_missing_translations = true
end

View File

@@ -14,4 +14,6 @@ ActiveSupport::Inflector.inflections(:en) do |inflect|
inflect.acronym 'StatsD'
inflect.acronym 'OEmbed'
inflect.acronym 'ActivityPub'
inflect.acronym 'PubSubHubbub'
inflect.acronym 'ActivityStreams'
end

View File

@@ -1,5 +1,4 @@
# Be sure to restart your server when you modify this file.
Mime::Type.register "application/json", :json, %w( text/x-json application/jsonrequest application/jrd+json )
Mime::Type.register "text/xml", :xml, %w( application/xml application/atom+xml application/xrd+xml )
Mime::Type.register "application/activity+json", :activitystreams2
Mime::Type.register 'application/json', :json, %w(text/x-json application/jsonrequest application/jrd+json application/activity+json)
Mime::Type.register 'text/xml', :xml, %w(application/xml application/atom+xml application/xrd+xml)

View File

@@ -0,0 +1,17 @@
# frozen_string_literal: true
Rails.application.configure do
# You can generate the keys using the following command (first is the private key, second is the public one)
# You should only generate this once per instance. If you later decide to change it, all push subscription will
# be invalidated, requiring the users to access the website again to resubscribe.
#
# Generate with `rake mastodon:webpush:generate_vapid_key` task (`docker-compose run --rm web rake mastodon:webpush:generate_vapid_key` if you use docker compose)
#
# For more information visit https://rossta.net/blog/using-the-web-push-api-with-vapid.html
if Rails.env.production?
config.x.vapid_private_key = ENV['VAPID_PRIVATE_KEY']
config.x.vapid_public_key = ENV['VAPID_PUBLIC_KEY']
end
end

View File

@@ -30,15 +30,6 @@ ca:
remote_follow: Seguir
reserved_username: El nom d'usuari està reservat
unfollow: Deixar de seguir
activitypub:
activity:
announce:
name: "%{account_name} shared an activity."
create:
name: "%{account_name} created a note."
outbox:
name: "%{account_name}'s Outbox"
summary: A collection of activities from user %{account_name}.
admin:
accounts:
are_you_sure: Estàs segur?

View File

@@ -44,15 +44,6 @@ en:
remote_follow: Remote follow
reserved_username: The username is reserved
unfollow: Unfollow
activitypub:
activity:
announce:
name: "%{account_name} shared an activity."
create:
name: "%{account_name} created a note."
outbox:
name: "%{account_name}'s Outbox"
summary: A collection of activities from user %{account_name}.
admin:
accounts:
are_you_sure: Are you sure?
@@ -335,6 +326,21 @@ en:
next: Next
prev: Prev
truncate: "…"
push_notifications:
favourite:
title: "%{name} favourited your status"
follow:
title: "%{name} is now following you"
mention:
action_boost: 'Boost'
action_expand: 'Show more'
action_favourite: 'Favourite'
title: "%{name} mentioned you"
reblog:
title: "%{name} boosted your status"
subscribed:
body: "You can now receive push notifications."
title: "Subscription registered!"
remote_follow:
acct: Enter your username@domain you want to follow from
missing_resource: Could not find the required redirect URL for your account

View File

@@ -29,15 +29,6 @@ fa:
posts: نوشته
remote_follow: پیگیری غیرمستقیم
unfollow: پایان پیگیری
activitypub:
activity:
announce:
name: "%{account_name} فعالیتی آغاز کرد."
create:
name: "%{account_name} یادداشتی نوشت."
outbox:
name: صندوق خروجی %{account_name}
summary: مجموعه‌ای از فعالیت‌های کاربر %{account_name}.
admin:
accounts:
are_you_sure: آیا مطمئن هستید؟

View File

@@ -30,15 +30,6 @@ fr:
remote_follow: Suivre à distance
reserved_username: Ce nom dutilisateur⋅ice est réservé
unfollow: Ne plus suivre
activitypub:
activity:
announce:
name: "%{account_name} a partagé une activité."
create:
name: "%{account_name} a créé une note."
outbox:
name: Boîte denvoi de %{account_name}
summary: Liste dactivités de %{account_name}
admin:
accounts:
are_you_sure: Êtes-vous certain⋅e?
@@ -61,7 +52,7 @@ fr:
media_attachments: Fichiers médias
moderation:
all: Tous
silenced: Muets
silenced: Masqués
suspended: Suspendus
title: Modération
most_recent_activity: Dernière activité
@@ -85,11 +76,11 @@ fr:
created_reports: Signalements créés par ce compte
report: signalement
targeted_reports: Signalements créés visant ce compte
silence: Rendre muet
silence: Masquer
statuses: Statuts
subscribe: Sabonner
title: Comptes
undo_silenced: Annuler le silence
undo_silenced: Démasquer
undo_suspension: Annuler la suspension
unsubscribe: Se désabonner
username: Nom dutilisateur⋅ice
@@ -104,13 +95,13 @@ fr:
hint: Le blocage de domaine nempêchera pas la création de comptes dans la base de données, mais il appliquera automatiquement et rétrospectivement des méthodes de modération spécifiques sur ces comptes.
severity:
desc_html: "<strong>Silence</strong> rendra les messages des comptes concernés invisibles à ceux qui ne les suivent pas. <strong>Suspend</strong> supprimera tout le contenu des comptes concernés, les médias, et les données du profil."
silence: Muet
silence: Masqué
suspend: Suspendre
title: Nouveau blocage de domaine
reject_media: Fichiers média rejetés
reject_media_hint: Supprime localement les fichiers média stockés et refuse den télécharger ultérieurement. Ne concerne pas les suspensions.
severities:
silence: Rendre muet
silence: Masquer
suspend: Suspendre
severity: Séverité
show:
@@ -118,7 +109,7 @@ fr:
one: Un compte affecté dans la base de données
other: "%{count} comptes affectés dans la base de données"
retroactive:
silence: Annuler le silence sur tous les comptes existants pour ce domaine
silence: Annuler le masquage sur tous les comptes existants pour ce domaine
suspend: Annuler la suspension sur tous les comptes existants pour ce domaine
title: Annuler le blocage de domaine pour %{domain}
undo: Annuler
@@ -145,7 +136,7 @@ fr:
reported_account: Compte signalé
reported_by: Signalé par
resolved: Résolus
silence_account: Rendre le compte muet
silence_account: Masquer le compte
status: Statut
suspend_account: Suspendre le compte
target: Cible

View File

@@ -29,15 +29,6 @@ he:
posts: הודעות
remote_follow: מעקב מרחוק
unfollow: הפסקת מעקב
activitypub:
activity:
announce:
name: הודעה שותפה על ידי %{account_name}.
create:
name: הודעה חדשה מאת %{account_name}.
outbox:
name: תיבת הדוא"ל היוצא של %{account_name}
summary: אוסף הפעילויות של %{account_name}.
admin:
accounts:
are_you_sure: בטוח?

View File

@@ -29,15 +29,6 @@ id:
posts: Postingan
remote_follow: Mengikuti
unfollow: Berhenti mengikuti
activitypub:
activity:
announce:
name: "%{account_name} membagikan aktivitas."
create:
name: "%{account_name} membuat catatan."
outbox:
name: "%{account_name} Outbox"
summary: Koleksi aktivitas dari pengguna %{account_name}.
admin:
accounts:
are_you_sure: Anda yakin?

View File

@@ -30,15 +30,6 @@ ja:
remote_follow: リモートフォロー
reserved_username: このユーザー名は予約されています。
unfollow: フォロー解除
activitypub:
activity:
announce:
name: "%{account_name} さんがアクティビティをシェアしました"
create:
name: "%{account_name} さんがノートを作成しました"
outbox:
name: "%{account_name} さんの送信トレイ"
summary: "%{account_name} さんからのアクティビティコレクション"
admin:
accounts:
are_you_sure: 本当に実行しますか?
@@ -154,24 +145,31 @@ ja:
view: 表示
settings:
contact_information:
email: 公開するメールアドレスを入力
username: ユーザー名を入力
email: ビジネスメールアドレス
username: 連絡先のユーザー名
registrations:
closed_message:
desc_html: 新規登録を停止しているときにフロントページに表示されます。<br>HTMLタグが利用可能です。
desc_html: 新規登録を停止しているときにフロントページに表示されます。HTMLタグが使えます
title: 新規登録停止時のメッセージ
deletion:
desc_html: 誰でも自分のアカウントを削除できるようにします
title: アカウント削除を受け付ける
open:
desc_html: 誰でも自由にアカウントを作成できるようにします
title: 新規登録を受け付ける
site_description:
desc_html: ップページへの表示と meta タグに使用されます。<br>HTMLタグ、特に<code>&lt;a&gt;</code> と <code>&lt;em&gt;</code>が利用可能です。
title: サイトの説明
desc_html: フロントページへの表示と meta タグに使用される紹介文です。HTMLタグ、特に<code>&lt;a&gt;</code> と <code>&lt;em&gt;</code>が使えます。
title: インスタンスの説明
site_description_extended:
desc_html: インスタンスについてのページに表示されます。<br>HTMLタグが利用可能です。
title: サイトの詳細説明
desc_html: あなたのインスタンスにおける行動規範やルール、ガイドライン、そのほかの記述をする際に最適な場所です。HTMLタグが使えます
title: カスタム詳細説明
site_terms:
desc_html: プライバシーポリシーのページに表示されます。<br>HTMLタグが利用可能です。
title: サイトのプライバシーポリシー
site_title: サイトのタイトル
desc_html: あなたは独自のプライバシーポリシーや利用規約、そのほかの法的根拠を書くことができます。HTMLタグが使えます
title: カスタム利用規約
site_title: インスタンスの名前
timeline_preview:
desc_html: ランディングページに公開タイムラインを表示します
title: タイムラインプレビュー
title: サイト設定
subscriptions:
callback_url: コールバックURL
@@ -206,6 +204,12 @@ ja:
authorize_follow:
error: 残念ながら、リモートアカウントにエラーが発生しました。
follow: フォロー
follow_request: 'あなたは以下のアカウントにフォローリクエストを送信しました:'
following: '成功! あなたは現在以下のアカウントをフォローしています:'
post_follow:
close: またはこのウィンドウを閉じます
return: ユーザーのプロフィールに戻る
web: Web を開く
prompt_html: 'あなた(<strong>%{self}</strong>)は以下のアカウントのフォローをリクエストしました:'
title: "%{acct} をフォロー"
datetime:
@@ -307,6 +311,21 @@ ja:
next:
prev:
truncate: "&hellip;"
push_notifications:
favourite:
title: あなたのトゥートが %{name} さんにお気に入り登録されました
follow:
title: '%{name} さんにフォローされました'
mention:
action_boost: ブースト
action_expand: もっと見る
action_favourite: お気に入り
title: '%{name} さんから返信がありました'
reblog:
title: あなたのトゥートが %{name} さんにブーストされました
subscribed:
body: あなたはプッシュ通知を受け取ることが出来ます
title: Subscription が登録されました
remote_follow:
acct: あなたの ユーザー名@ドメイン を入力してください
missing_resource: リダイレクト先が見つかりませんでした
@@ -402,7 +421,7 @@ ja:
<p>このサービスはあなたの個人情報の入力、送信、またはアクセスに際してあなたの個人情報の安全性を維持するために様々なセキュリティ手段をとっています。</p>
<h3 id="data-retention>データ保持のポリシーはどのようになっていますか?</h3>
<h3 id="data-retention">データ保持のポリシーはどのようになっていますか?</h3>
<p>このサービスはデータ保持に関して次のことを行うよう努めます。:</p>

View File

@@ -30,15 +30,6 @@ ko:
remote_follow: 리모트 팔로우
reserved_username: 이 아이디는 예약되어 있습니다.
unfollow: 팔로우 해제
activitypub:
activity:
announce:
name: "%{account_name} 님이 액티비티를 공유했습니다"
create:
name: "%{account_name} 님이 노트를 작성했습니다"
outbox:
name: "%{account_name} 님의 송신함"
summary: "%{account_name} 님의 액티비티 모음"
admin:
accounts:
are_you_sure: 정말로 실행하시겠습니까?

View File

@@ -29,15 +29,6 @@
posts: Poster
remote_follow: Følg fra andre instanser
unfollow: Avfølg
activitypub:
activity:
announce:
name: "%{account_name} delte en aktivitet."
create:
name: "%{account_name} laget en aktivitet."
outbox:
name: "%{account_name} sin utboks"
summary: En samling aktiviteter fra brukeren %{account_name}.
admin:
accounts:
are_you_sure: Er du sikker?

View File

@@ -29,15 +29,6 @@ oc:
posts: Estatuts
remote_follow: Sègre a distància
unfollow: Quitar de sègre
activitypub:
activity:
announce:
name: "%{account_name} a partejat una activitat."
create:
name: "%{account_name} a creat una nòta."
outbox:
name: "%{account_name}'s Outbox"
summary: A collection of activities from user %{account_name}.
admin:
accounts:
are_you_sure: Sètz segur ?

View File

@@ -1,17 +1,30 @@
---
pl:
about:
about_mastodon: Mastodon jest <em>wolną i otwartą</em> siecią społecznościową, <em>zdecentralizowaną</em> alternatywą dla zamkniętych, komercyjnych platform. Pozwala uniknąć ryzyka monopolizacji Twojej komunikacji przez jedną korporację. Wybierz serwer, któremu ufasz &mdash; nie ograniczy to Twoich możliwości komunikacji z innymi osobami w sieci. Każdy może też uruchomić własną instancję Mastodona i dołączyć do reszty tej <em>sieci społecznościowej</em>.
about_mastodon_html: Mastodon jest wolną i otwartą siecią społecznościową, zdecentralizowaną alternatywą dla zamkniętych, komercyjnych platform.
about_this: O tej instancji
business_email: 'Służbowy adres e-mail:'
closed_registrations: Rejestracja na tej instancji jest obecnie zamknięta.
closed_registrations: Rejestracja na tej instancji jest obecnie zamknięta. Możesz jednak zarejestrować się na innej instancji, uzyskując dostęp do tej samej sieci.
contact: Kontakt
description_headline: Czym jest %{domain}?
domain_count_after: instancji
domain_count_before: Serwer połączony z
features:
humane_approach_body: Nauczeni na błędach innych sieci społecznościowych, Mastodon został zaprojektowany tak, aby uniknąć częstych nadużyć.
humane_approach_title: Bardziej ludzkie podejście
not_a_product_body: Mastodon nie jest komercyjną siecią. Nie doświadczysz tu reklam, zbierania danych, ani centralnego ośrodka, tak jak w przypadku wielu rozwiązań.
not_a_product_title: Jesteś człowiekiem, nie produktem
real_conversation_body: Mając do dyspozycji 500 znaków na post, rozdrobnienie zawartości i ostrzeżenia o multimediach, możesz wyrażać siebie na wszystkie możliwe sposoby.
real_conversation_title: Zaprojektowany do prawdziwych rozmów
within_reach_body: Wiele aplikacji dla Androida, iOS i innych platform dzięki przyjaznemu programistom API sprawia, że możesz utrzymywać kontakt ze znajomymi praktycznie wszędzie.
within_reach_title: Zawsze w Twoim zasięgu
find_another_instance: Znajdź inną instancję
generic_description: "%{domain} jest jednym z serwerów sieci"
get_started: Rozpocznijmy!
hosted_on: Mastodon uruchomiony na %{domain}
learn_more: Dowiedz się więcej
links: Odnośniki
other_instances: Inne instancje
other_instances: Lista instancji
source_code: Kod źródłowy
status_count_after: wpisów
status_count_before: Są autorami
@@ -19,6 +32,7 @@ pl:
user_count_after: użytkowników
user_count_before: Z serwera korzysta
version: Wersja
what_is_mastodon: Czym jest Mastodon?
accounts:
follow: Śledź
followers: Śledzących
@@ -30,15 +44,6 @@ pl:
remote_follow: Zdalne śledzenie
reserved_username: Ta nazwa użytkownika jest zarezerwowana.
unfollow: Przestań śledzić
activitypub:
activity:
announce:
name: "%{account_name} udostępnił(a) aktywność."
create:
name: "%{account_name} utworzył(a) wpis."
outbox:
name: Skrzynka %{account_name}
summary: Zbiór aktywności użytkownika %{account_name}.
admin:
accounts:
are_you_sure: Jesteś tego pewien?
@@ -154,24 +159,31 @@ pl:
view: Wyświetl
settings:
contact_information:
email: Wprowadź publiczny adres e-mail
username: Wprowadź nazwę użytkownika
email: Służbowy adres e-mail
username: Nazwa użytkownika do kontaktu
registrations:
closed_message:
desc_html: Wyświetlana na stronie głównej, gdy możliwość otwarej rejestracji<br>nie jest dostępna. Możesz korzystać z tagów HTML
desc_html: Wyświetlana na stronie głównej, gdy możliwość otwarej rejestracji nie jest dostępna. Możesz korzystać z tagów HTML
title: Wiadomość o nieaktywnej rejestracji
deletion:
desc_html: Pozwól każdemu na usunięcie konta
title: Możliwość usunięcia
open:
desc_html: Pozwól każdemu na założenie konta
title: Otwarta rejestracja
site_description:
desc_html: Wyświetlany jako nagłówek na stronie głównej oraz jako meta tag.<br>Możesz korzystać z tagów HTML, w szczególności z <code>&lt;a&gt;</code> i <code>&lt;em&gt;</code>.
title: Opis strony
desc_html: Akapit wprowadzający, widoczny na stronie głównej i znacznikach meta. Możesz korzystać z tagów HTML, w szczególności <code>&lt;a&gt;</code> i <code>&lt;em&gt;</code>.
title: Opis instancji
site_description_extended:
desc_html: Wyświetlany w rozszerzonych informacjach o stronie<br>Możesz korzystać z tagów HTML
title: Extended site description
desc_html: Dobre miejsce na zasady użytkowania, wprowadzenie i inne rzeczy, które wyróżniają tą instancję. Możesz korzystać z tagów HTML
title: Niestandrdowy opis stronyv
site_terms:
desc_html: Wyświetlana na stronie zasad użytkowania<br>Możesz używać tagów HTML
title: Polityka prywatności strony
site_title: Tytuł strony
desc_html: Miejsce na własną politykę prywatności, zasady użytkowania i inne unormowania prawne. Możesz używać tagów HTML
title: Niestandardowe zasady użytkowania
site_title: Nazwa instancji
timeline_preview:
desc_html: Wyświetlaj publiczną oś czasu na stronie widocznej dla niezalogowanych
title: Podgląd osi czasu
title: Ustawienia strony
subscriptions:
callback_url: URL zwrotny
@@ -192,6 +204,7 @@ pl:
applications:
invalid_url: Ten URL jest nieprawidłowy
auth:
agreement_html: Rejestrując się, oświadczasz, że zapoznałeś się z <a href="%{rules_path}">naszymi zasadami użytkowania</a> i <a href="%{terms_path}">polityką prywatności</a>.
change_password: Bezpieczeństwo
delete_account: Usunięcie konta
delete_account_html: Jeżeli chcesz usunąć konto, <a href="%{path}">przejdź tutaj</a>. Otrzymasz prośbę o potwierdzenie.
@@ -206,7 +219,7 @@ pl:
authorize_follow:
error: Niestety, podczas sprawdzania zdalnego konta wystąpił błąd
follow: Śledź
follow_request: 'Wysłano prośbę o pozwolenie na obserwację:'
follow_request: 'Wysłano prośbę o pozwolenie na śledzenie:'
following: 'Pomyślnie! Od teraz śledzisz:'
post_follow:
close: Ewentualnie, możesz po prostu zamknąć tą stronę.
@@ -261,7 +274,7 @@ pl:
one: W trakcie usuwania śledzących z jednej domeny…
other: W trakcie usuwania śledzących z %{count} domen…
true_privacy_html: Pamiętaj, że <strong>rzeczywista prywatność może zostać uzyskana wyłącznie dzięki szyfrowaniu end-to-end</strong>.
unlocked_warning_html: Każdy może cię śledzić, aby natychmiastowo zobaczyć twoje statusy. %{lock_link} aby móc kontrolować, kto Cię śledzi.
unlocked_warning_html: Każdy może Cię śledzić, aby natychmiastowo zobaczyć twoje statusy. %{lock_link} aby móc kontrolować, kto Cię śledzi.
unlocked_warning_title: Twoje konto nie jest zablokowane
generic:
changes_saved_msg: Ustawienia zapisane!
@@ -278,7 +291,7 @@ pl:
following: Lista śledzonych
muting: Lista wyciszonych
upload: Załaduj
landing_strip_html: "<strong>%{name}</strong> ma konto na %{link_to_root_path}. Możesz je śledzić i wejść z nim w interakcję jeśli masz konto gdziekolwiek w Fediwersie."
landing_strip_html: "<strong>%{name}</strong> ma konto na %{link_to_root_path}. Możesz je śledzić i wejść z nim w interakcję jeśli masz konto gdziekolwiek w Fediwersum."
landing_strip_signup_html: Jeśli jeszcze go nie masz, możesz <a href="%{sign_up_path}">stworzyć konto</a>.
media_attachments:
validations:
@@ -317,6 +330,21 @@ pl:
next: Następna
prev: Poprzednia
truncate: "&hellip;"
push_notifications:
favourite:
title: "%{name} dodał Twój status do ulubionych"
follow:
title: "%{name} zaczął Cię śledzić"
mention:
action_boost: 'Podbij'
action_expand: 'Pokaż więcej'
action_favourite: 'Dodaj do ulubionych'
title: "%{name} wspomniał o Tobie"
reblog:
title: "%{name} podbił Twój status"
subscribed:
body: "Otrzymujesz teraz powiadomienia push."
title: "Zarejestrowano subskrypcję!"
remote_follow:
acct: Podaj swój adres (nazwa@domena), z którego chcesz śledzić
missing_resource: Nie udało się znaleźć adresu przekierowania z Twojej domeny

View File

@@ -29,15 +29,6 @@ pt-BR:
posts: Posts
remote_follow: Acesso remoto
unfollow: Unfollow
activitypub:
activity:
announce:
name: "%{account_name} compartilhou uma atividade."
create:
name: "%{account_name} criou uma nota."
outbox:
name: "%{account_name}'s Outbox"
summary: Uma coleção de atividades do usuário %{account_name}.
admin:
accounts:
are_you_sure: Você tem certeza?

View File

@@ -29,15 +29,6 @@ pt:
posts: Posts
remote_follow: Seguir remotamente
unfollow: Deixar de seguir
activitypub:
activity:
announce:
name: "%{account_name} anunciou uma atividade."
create:
name: "%{account_name} criou uma nota."
outbox:
name: "%{account_name}'s Outbox"
summary: Uma coleção de atividades do usuário %{account_name}.
admin:
accounts:
are_you_sure: Tens a certeza?

View File

@@ -12,6 +12,7 @@ en:
note:
one: <span class="note-counter">1</span> character left
other: <span class="note-counter">%{count}</span> characters left
setting_noindex: Affects your public profile and status pages
imports:
data: CSV file exported from another Mastodon instance
sessions:
@@ -27,6 +28,7 @@ en:
data: Data
display_name: Display name
email: E-mail address
filtered_languages: Filtered languages
header: Header
locale: Language
locked: Lock account
@@ -40,6 +42,7 @@ en:
setting_default_sensitive: Always mark media as sensitive
setting_delete_modal: Show confirmation dialog before deleting a toot
setting_system_font_ui: Use system's default font
setting_noindex: Opt-out of search engine indexing
severity: Severity
type: Import type
username: Username

View File

@@ -29,15 +29,6 @@ th:
posts: โพสต์
remote_follow: Remote follow
unfollow: เลิกติดตาม
activitypub:
activity:
announce:
name: "%{account_name} แชร์กิจกรรม."
create:
name: "%{account_name} สร้างโน๊ต."
outbox:
name: "%{account_name}'s Outbox"
summary: รวมกิจกรรมของผู้ใช้ %{account_name}.
admin:
accounts:
are_you_sure: แน่ใจนะ?

View File

@@ -29,15 +29,6 @@ tr:
posts: Gönderiler
remote_follow: Uzaktan takip et
unfollow: Takibi bırak
activitypub:
activity:
announce:
name: "%{account_name} bir aktivite paylaştı."
create:
name: "%{account_name} bir not oluşturdu."
outbox:
name: "%{account_name}'in Gönderdikleri"
summary: "%{account_name}'den gelen aktiviteler."
admin:
accounts:
are_you_sure: Emin misiniz?

View File

@@ -29,15 +29,6 @@ zh-CN:
posts: 嘟文
remote_follow: 跨站关注
unfollow: 取消关注
activitypub:
activity:
announce:
name: "%{account_name} 分享了一个活动。"
create:
name: "%{account_name} 创建了一个记事。"
outbox:
name: "%{account_name} 的集合"
summary: "%{account_name} 的活动集合"
admin:
accounts:
are_you_sure: 你确定吗?

View File

@@ -29,15 +29,6 @@ zh-HK:
posts: 文章
remote_follow: 跨站關注
unfollow: 取消關注
activitypub:
activity:
announce:
name: "%{account_name} 分享了一項活動。"
create:
name: "%{account_name} 新增了一篇筆記。"
outbox:
name: "%{account_name} 的活動"
summary: "%{account_name} 分享的活動列表。"
admin:
accounts:
are_you_sure: 你確定嗎?

View File

@@ -26,7 +26,7 @@ Rails.application.routes.draw do
confirmations: 'auth/confirmations',
}
get '/users/:username', to: redirect('/@%{username}'), constraints: { format: :html }
get '/users/:username', to: redirect('/@%{username}'), constraints: lambda { |req| req.format.nil? }
resources :accounts, path: 'users', only: [:show], param: :username do
resources :stream_entries, path: 'updates', only: [:show] do
@@ -38,10 +38,17 @@ Rails.application.routes.draw do
get :remote_follow, to: 'remote_follow#new'
post :remote_follow, to: 'remote_follow#create'
resources :statuses, only: [:show] do
member do
get :activity
end
end
resources :followers, only: [:index], controller: :follower_accounts
resources :following, only: [:index], controller: :following_accounts
resource :follow, only: [:create], controller: :account_follow
resource :unfollow, only: [:create], controller: :account_unfollow
resource :outbox, only: [:show], module: :activitypub
end
get '/@:username', to: 'accounts#show', as: :short_account
@@ -119,13 +126,6 @@ Rails.application.routes.draw do
# OEmbed
get '/oembed', to: 'oembed#show', as: :oembed
# ActivityPub
namespace :activitypub do
get '/users/:id/outbox', to: 'outbox#show', as: :outbox
get '/statuses/:id', to: 'activities#show_status', as: :status
resources :notes, only: [:show]
end
# JSON / REST API
namespace :v1 do
resources :statuses, only: [:create, :show, :destroy] do
@@ -206,6 +206,11 @@ Rails.application.routes.draw do
namespace :web do
resource :settings, only: [:update]
resources :push_subscriptions, only: [:create] do
member do
put :update
end
end
end
end

View File

@@ -21,6 +21,7 @@ defaults: &defaults
auto_play_gif: false
delete_modal: true
system_font_ui: false
noindex: false
notification_emails:
follow: false
reblog: false

View File

@@ -5,6 +5,9 @@ const merge = require('webpack-merge');
const CompressionPlugin = require('compression-webpack-plugin');
const sharedConfig = require('./shared.js');
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
const OfflinePlugin = require('offline-plugin');
const { publicPath } = require('./configuration.js');
const path = require('path');
module.exports = merge(sharedConfig, {
output: { filename: '[name]-[chunkhash].js' },
@@ -39,5 +42,16 @@ module.exports = merge(sharedConfig, {
openAnalyzer: false,
logLevel: 'silent', // do not bother Webpacker, who runs with --json and parses stdout
}),
new OfflinePlugin({
publicPath: publicPath, // sw.js must be served from the root to avoid scope issues
caches: { }, // do not cache things, we only use it for push notifications for now
ServiceWorker: {
entry: path.join(__dirname, '../../app/javascript/mastodon/service_worker/entry.js'),
cacheName: 'mastodon',
output: '../sw.js',
publicPath: '/sw.js',
minify: true,
},
}),
],
});