diff --git a/.gitignore b/.gitignore
index 3c55ec0d78..0a1a09c90d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -57,9 +57,6 @@ packages/backend/assets/LICENSE
!/packages/backend/src/db
!/packages/backend/src/server/api/endpoints/drive/files
-packages/megalodon/lib
-packages/megalodon/.idea
-
# blender backups
*.blend1
*.blend2
diff --git a/Dockerfile b/Dockerfile
index dbd34d18d6..2ad59950d2 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -28,7 +28,6 @@ COPY packages/backend/package.json packages/backend/package.json
COPY packages/client/package.json packages/client/package.json
COPY packages/sw/package.json packages/sw/package.json
COPY packages/firefish-js/package.json packages/firefish-js/package.json
-COPY packages/megalodon/package.json packages/megalodon/package.json
COPY packages/backend/native-utils/package.json packages/backend/native-utils/package.json
COPY packages/backend/native-utils/npm/linux-x64-musl/package.json packages/backend/native-utils/npm/linux-x64-musl/package.json
COPY packages/backend/native-utils/npm/linux-arm64-musl/package.json packages/backend/native-utils/npm/linux-arm64-musl/package.json
@@ -58,8 +57,6 @@ RUN apt-get update && apt-get install -y libvips-dev zip unzip tini ffmpeg
COPY . ./
-COPY --from=build /firefish/packages/megalodon /firefish/packages/megalodon
-
# Copy node modules
COPY --from=build /firefish/node_modules /firefish/node_modules
COPY --from=build /firefish/packages/backend/node_modules /firefish/packages/backend/node_modules
diff --git a/chart/templates/_helpers.tpl b/chart/templates/_helpers.tpl
index 938d44f6ab..a5a1adc9b0 100644
--- a/chart/templates/_helpers.tpl
+++ b/chart/templates/_helpers.tpl
@@ -217,8 +217,7 @@ id: 'aid'
#maxCaptionLength: 1500
# Reserved usernames that only the administrator can register with
-reservedUsernames:
-{{ .Values.firefish.reservedUsernames | toYaml }}
+reservedUsernames: {{ .Values.firefish.reservedUsernames | toJson }}
# Whether disable HSTS
#disableHsts: true
@@ -265,8 +264,7 @@ reservedUsernames:
# Proxy remote files (default: false)
#proxyRemoteFiles: true
-allowedPrivateNetworks:
-{{ .Values.firefish.allowedPrivateNetworks | toYaml }}
+allowedPrivateNetworks: {{ .Values.firefish.allowedPrivateNetworks | toJson }}
# TWA
#twa:
diff --git a/locales/fr-FR.yml b/locales/fr-FR.yml
index 7ea66d7efb..d7cdd0da75 100644
--- a/locales/fr-FR.yml
+++ b/locales/fr-FR.yml
@@ -646,7 +646,7 @@ emptyToDisableSmtpAuth: "Laisser le nom d’utilisateur et le mot de passe vides
smtpSecure: "Utiliser SSL/TLS implicitement dans les connexions SMTP"
smtpSecureInfo: "Désactiver cette option lorsque STARTTLS est utilisé"
testEmail: "Tester la distribution de courriel"
-wordMute: "Filtre de mots"
+wordMute: "Filtre de mots et langages"
regexpError: "Erreur d’expression régulière"
instanceMute: "Serveur masqué"
userSaysSomething: "{name} a dit quelque chose"
@@ -960,7 +960,8 @@ _accountDelete:
inProgress: "Suppression en cours"
_ad:
back: "Retour"
- reduceFrequencyOfThisAd: "Voir cette publicité moins souvent"
+ reduceFrequencyOfThisAd: "Voir cette bannière moins souvent"
+ adsBy: Bannière communautaire par {by}
_forgotPassword:
enterEmail: "Entrez ici l'adresse e-mail que vous avez enregistrée pour votre compte.
Un lien vous permettant de réinitialiser votre mot de passe sera envoyé à cette
@@ -1145,6 +1146,13 @@ _wordMute:
soft: "Doux"
hard: "Strict"
mutedNotes: "Publications masquées"
+ muteLangsDescription2: Utiliser les code de langage (i.e en, fr, ja, zh).
+ lang: Langage
+ langDescription: Cacher du fil de publication les publications qui correspondent
+ à ces langues.
+ muteLangs: Langages filtrés
+ muteLangsDescription: Séparer avec des espaces or des retours à la ligne pour une
+ condition OU (OR).
_instanceMute:
instanceMuteDescription2: "Séparer avec des sauts de lignes"
title: "Masque les publications provenant des serveurs listés."
@@ -2218,3 +2226,5 @@ openServerInfo: Afficher les informations du serveur en cliquant sur le bandeau
serveur d’une publication
indexable: Indexable
languageForTranslation: Langage post-traduction
+vibrate: Jouer les vibrations
+clickToShowPatterns: Cliquer pour montrer les patrons de modules
diff --git a/locales/hi.yml b/locales/hi.yml
index 0967ef424b..4ac343988d 100644
--- a/locales/hi.yml
+++ b/locales/hi.yml
@@ -1 +1 @@
-{}
+_lang_: "हिन्दी"
diff --git a/locales/id-ID.yml b/locales/id-ID.yml
index af6afa5dcc..2a995c231e 100644
--- a/locales/id-ID.yml
+++ b/locales/id-ID.yml
@@ -1269,8 +1269,8 @@ _tutorial:
{introduction} atau \"Halo dunia!\" yang sederhana."
step5_1: "Linimasa, linimasa di mana-mana!"
step5_2: "Servermu memiliki {timelines} lini masa berbeda yang diaktifkan."
- step5_3: "Lini masa Beranda {icon} adalah tempat di mana kamu bisa melihat postingan
- dari akun yang kamu ikuti."
+ step5_3: "Lini masa Beranda {icon} adalah tempat kamu bisa melihat postingan dari
+ akun yang kamu ikuti."
step5_4: "Linimasa Lokal {icon} adalah tempat kamu dapat melihat postingan dari
siapa pun di server ini."
step6_1: "Jadi, tempat apa ini?"
diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml
index 70bcd36faa..964e5d0235 100644
--- a/locales/ja-JP.yml
+++ b/locales/ja-JP.yml
@@ -615,7 +615,7 @@ emptyToDisableSmtpAuth: "ユーザー名とパスワードを空欄にするこ
smtpSecure: "SMTP 接続に暗黙的なSSL/TLSを使用する"
smtpSecureInfo: "STARTTLS使用時はオフにします。"
testEmail: "配信テスト"
-wordMute: "ワードミュート"
+wordMute: "単語または言語のミュート"
regexpError: "正規表現エラー"
regexpErrorDescription: "{tab}ワードミュートの{line}行目の正規表現にエラーが発生しました:"
instanceMute: "サーバーミュート"
@@ -693,7 +693,7 @@ no: "いいえ"
driveFilesCount: "ドライブのファイル数"
driveUsage: "ドライブ使用量"
noCrawle: "クローラーによるインデックスを拒否"
-noCrawleDescription: "検索エンジンにあなたのプロフィールや投稿、ページなどのコンテンツを登録(インデックス)しないよう要請します。"
+noCrawleDescription: "Web検索にあなたのプロフィールや投稿、ページなどのコンテンツを登録(インデックス)しないよう要請します。"
lockedAccountInfo: "フォローを承認制にしても、投稿の公開範囲を「フォロワー」にしない限り、誰でもあなたの投稿を見られます。"
alwaysMarkSensitive: "デフォルトでメディアを閲覧注意にする"
loadRawImages: "添付画像のサムネイルをオリジナル画質にする"
@@ -810,7 +810,7 @@ instanceSecurity: "サーバーのセキュリティー"
secureModeInfo: "認証情報の無いリモートサーバーからのリクエストに応えません。"
privateMode: "非公開モード"
privateModeInfo: "有効にすると、許可したサーバーのみからリクエストを受け付けます。"
-allowedInstances: "許可されたサーバー"
+allowedInstances: "許可するサーバー"
allowedInstancesDescription: "許可したいサーバーのホストを改行で区切って設定します。非公開モードだけで有効です。"
previewNoteText: "本文をプレビュー"
customCss: "カスタムCSS"
@@ -1504,7 +1504,7 @@ _profile:
youCanIncludeHashtags: "ハッシュタグを含められます。"
metadata: "追加情報"
metadataEdit: "追加情報を編集"
- metadataDescription: "プロフィールに表として追加情報を表示できます。{a}タグまたは{l}タグを{rel}とともに追加すると、プロフィールのリンクを確認できます。"
+ metadataDescription: "プロフィールに追加情報を表示できます。プロフィールにリンクしたウェブサイトやSNSアカウントにタグ(または{a}タグ)を追加すると、そのリンクを本人認証できます。"
metadataLabel: "ラベル"
metadataContent: "内容"
changeAvatar: "アバター画像を変更"
@@ -1990,3 +1990,6 @@ confirm: 確認
exportZip: ZIPをエクスポート
openServerInfo: "投稿内のサーバー名をクリックでサーバー情報を開く"
indexableDescription: MastodonやFirefishなどの検索機能に、あなたの投稿が表示されるのを許可します。
+clickToShowPatterns: クリックしてトラックを表示
+vibrate: 振動を有効にする
+indexable: 投稿検索に登録
diff --git a/locales/ja-KS.yml b/locales/ja-KS.yml
index dc464495db..7db8a4f4a4 100644
--- a/locales/ja-KS.yml
+++ b/locales/ja-KS.yml
@@ -138,9 +138,9 @@ addEmoji: "絵文字を追加"
settingGuide: "ええ感じの設定"
cacheRemoteFiles: "リモートのファイルをキャッシュする"
cacheRemoteFilesDescription: "この設定を切っとくと、リモートファイルをキャッシュせず直リンクするようになるで。サーバーの容量は節約できるけど、サムネイルが作られんくなるから通信量が増えるで。"
-flagAsBot: "ワイはBotや 🤖"
+flagAsBot: "ワイはBotや🤖"
flagAsBotDescription: "もしこのアカウントがプログラムによって運用されるんやったら、このフラグをオンにしてたのむで。オンにすると、反応の連鎖を防ぐためのフラグとして他の開発者に役立ったり、Firefishのシステム上での扱いがBotに合ったもんになったりするんやで。"
-flagAsCat: "ワイはCatや 🐯"
+flagAsCat: "ワイはCatや🐯"
flagAsCatDescription: "自分、猫ちゃんならこのフラグつけてみ?"
flagShowTimelineReplies: "タイムラインに返信を表示させたる"
flagShowTimelineRepliesDescription: "有効にすると、タイムラインに他のユーザー宛ての投稿も表示したるで。"
@@ -246,7 +246,7 @@ uploadFromUrl: "URLアップロード"
uploadFromUrlDescription: "このURLのファイルをアップロードしたいねん"
uploadFromUrlRequested: "アップロードしたい言うといたで"
uploadFromUrlMayTakeTime: "アップロード終わるんにちょい時間かかるかもしれへんわ。"
-explore: "みつける"
+explore: "みっける"
messageRead: "もう読まはった"
noMoreHistory: "これより過去の履歴はあらへんで"
startMessaging: "チャットやるで"
@@ -334,7 +334,7 @@ bannerUrl: "バナー画像のURL"
backgroundImageUrl: "背景画像のURL"
basicInfo: "基本情報"
pinnedUsers: "ピン留めしたユーザー"
-pinnedUsersDescription: "「みつける」ページとかにピン留めしたいユーザーをここに書けばええんやで。他ん人との名前は改行で区切ればええんやで。"
+pinnedUsersDescription: "「みっける」ページとかにピン留めしときたい兄ちゃんらをここに書いといたらええわ。名前は改行で区切ればええで。"
pinnedPages: "ピン留めページ"
pinnedPagesDescription: "サーバーのいっちゃん上にピン留めしたいページのパスを、改行で区切って記述してな。"
pinnedClipId: "ピン留めするクリップのID"
@@ -684,7 +684,7 @@ clips: "クリップ"
experimentalFeatures: "実験的機能やで"
developer: "開発者やで"
makeExplorable: "アカウントを見つけやすくするで"
-makeExplorableDescription: "オフにすると、「みつける」にアカウントが載らんくなるで。"
+makeExplorableDescription: "オフにすると、「みっける」ページに名前が載らんくなるで。"
showGapBetweenNotesInTimeline: "タイムライン上の投稿を離して表示するで"
duplicate: "複製"
left: "左"
@@ -872,7 +872,7 @@ _registry:
domain: "ドメイン"
createKey: "キーを作る"
_aboutFirefish:
- about: "Firefishは、ThatOneCalculatorが2022年にMisskeyをいじって作った、オープンなソースのソフトウェアーや。"
+ about: "Firefishは、ThatOneCalculatorが2022年にMisskeyをいじって作った、オープンなソースのソフトウエアーや。"
contributors: "ごっつい貢献者"
allContributors: "全ての貢献者"
source: "ソースコード"
@@ -1442,6 +1442,12 @@ _tutorial:
step1_2: 使い始める前に、いくつか設定を済ませまひょ。すぐできますえ。
step2_1: 最初に、あんさんのプロフィールを作りまひょ
step2_2: プロフィールを設定しはることで、他ん人があんさんの投稿を見たり、フォローしたりするときの助けになってます。
+ step3_2: "あんさんのホームとソーシャルタイムラインは、どなたはんをフォローしはるかで決まります。ほな、いくつかアカウントをフォローしてみまひょ。\n\
+ プロフィールの右上にある、まあるい+ボタンをクリックしはるとフォローできますえ。"
+ step4_1: 投稿しとーみ
+ step5_1: タイムライン! 文字と写真の宝石箱や~
+ step5_2: うちのサーバーでは{timelines}種類のタイムラインをご用意しとります。
+ step4_2: 最初は{introduction}に投稿したり、シンプルに「ここは賑やかどすなぁ。うちはそこまで喋れまへんが、どうぞよろしゅうに」などと投稿しはる方もいてます。
_postForm:
_placeholders:
b: なんかおましたか?
diff --git a/locales/tr-TR.yml b/locales/tr-TR.yml
index 709156fcf9..6b18bc35f7 100644
--- a/locales/tr-TR.yml
+++ b/locales/tr-TR.yml
@@ -16,10 +16,10 @@ noNotifications: "Bildirim bulunmuyor"
settings: "Ayarlar"
basicSettings: "Temel Ayarlar"
otherSettings: "Diğer Ayarlar"
-openInWindow: "Bir pencere ile aç"
+openInWindow: "Açılır pencerede aç"
profile: "Profil"
-timeline: "Zaman çizelgesi"
-noAccountDescription: "Bu kullanıcı henüz kendi hakkında kısmını yazmadı."
+timeline: "Akış"
+noAccountDescription: "Bu kullanıcı henüz \"hakkında\" kısmını yazmadı."
login: "Giriş Yap"
logout: "Çıkış Yap"
signup: "Kayıt Ol"
@@ -29,7 +29,7 @@ addUser: "Kullanıcı Ekle"
favorite: "Favorilere ekle"
favorites: "Favoriler"
unfavorite: "Favorilerden Kaldır"
-favorited: "Favorilerime eklendi."
+favorited: "Favorilere eklendi."
alreadyFavorited: "Zaten favorilerinizde kayıtlı."
pin: "Sabitlenmiş"
unpin: "Sabitlemeyi kaldır"
@@ -41,9 +41,9 @@ deleteAndEditConfirm: "Bu gönderiyi silip yeniden düzenlemek istiyor musunuz?
ilişkin tüm tepkiler, destekler ve yanıtlar silinecektir."
addToList: "Listeye ekle"
sendMessage: "Mesaj Gönder"
-copyUsername: "Kullanıcı Adını Kopyala"
+copyUsername: "Kullanıcı Adını kopyala"
searchUser: "Kullanıcıları ara"
-pinned: "Sabitlenmiş"
+pinned: "Profile sabitle"
remove: "Sil"
smtpUser: "Kullanıcı Adı"
smtpPass: "Şifre"
@@ -240,7 +240,7 @@ instance: Sunucu
fetchingAsApObject: Fediverse'den çekiliyor
removeReaction: Tepkini sil
rememberNoteVisibility: Gönderi görünürlüğü ayarlarını hatırla
-attachCancel: Eklentiyi kaldır
+attachCancel: Ek'i kaldır
suspend: Askıya Al
unsuspend: Askıya Almayı Kaldır
unmute: Susturmayı Kaldır
@@ -248,13 +248,13 @@ blockConfirm: Bu hesabı engellemek istediğinize emin misiniz?
unblockConfirm: Bu hesabın engelini kaldırmak istediğinize emin misiniz?
settingGuide: Tavsiye edilen ayarlar
cacheRemoteFilesDescription: Bu ayar devre dışı bırakıldığında, uzak dosyalar doğrudan
- uzak sunucudan yüklenir. Bunun devre dışı bırakılması depolama kullanımını azaltacak,
- ancak küçük resimler oluşturulmayacağından trafiği artıracaktır.
+ dosyanın bulunduğu sunucudan yüklenir. Bunun devre dışı bırakılması depolama kullanımını
+ azaltacak, ancak küçük resimler oluşturulmayacağından trafiği artıracaktır.
flagAsCatDescription: Kedi kulaklarına sahip olacak ve bir kedi gibi konuşacaksın!
flagSpeakAsCat: Kedi gibi konuş
setWallpaper: Arkaplanı ayarla
removeWallpaper: Arkaplanı sil
-operations: Operasyonlar
+operations: İşlemler
clearCachedFiles: Ön belleği temizle
clearCachedFilesConfirm: Önbelleğe alınan tüm uzak dosyaları silmek istediğinizden
emin misiniz?
@@ -357,13 +357,13 @@ whatIsNew: Değişiklikleri göster
translate: Çevir
breakFollow: Takipçiyi sil
breakFollowConfirm: Takipçiyi kaldırmak istediğinizden emin misiniz?
-unfollowConfirm: "{name}'i takibi bırakmak istediğinizden emin misiniz?"
+unfollowConfirm: "{name} kullanıcısını takip etmeyi bırakmak istediğinizden emin misiniz?"
importRequested: Bir içe aktarma isteğinde bulundunuz. Bu biraz zaman alabilir.
somethingHappened: Bir hata ile karşılaşıldı
retry: Tekrar Dene
youShouldUpgradeClient: Bu sayfayı görüntülemek için, lütfen istemcinizi yenileyin.
reactionSetting: Tepki seçicide gösterilecek tepkiler
-unmarkAsSensitive: NSFW işaretini kaldır
+unmarkAsSensitive: NSFW (Müstehcen İçerik) işaretini kaldır
enterFileName: Dosya adı gir
noJobs: Hiçbir iş yok
instanceFollowing: Sunucuda takip ediliyor
@@ -481,8 +481,8 @@ mention: Bahset
download: İndir
lists: Listeler
noLists: Hiç listen yok
-cantRenote: Bu gönderi yükseltilemez.
-cantReRenote: Bir yükseltme tekrar yükseltilemez.
+cantRenote: Bu gönderi desteklenemez.
+cantReRenote: Bir destek tekrardan desteklenemez.
mute: Sustur
block: Engelle
editWidgetsExit: Tamamlandı
@@ -636,10 +636,10 @@ reactionSettingDescription2: Yeniden sıralamak için sürükleyin, silmek için
eklemek için "+"ya basın.
you: Sen
clickToShow: Görmek için tıkla
-sensitive: NSFW
+sensitive: NSFW (Müstehcen İçerik)
add: Ekle
reaction: Tepkiler
-markAsSensitive: NSFW olarak işaretle
+markAsSensitive: NSFW (Müstehcen İçerik) olarak işaretle
unblock: Engeli Kaldır
addAccount: Hesap ekle
network: İnternet
@@ -722,11 +722,11 @@ moveAccountDescription: Bu süreç geri döndürülemez. Taşımadan önce yeni
şeklinde biçimlendirilmiş hesabın etiketini girin
emojis: Emoji
flagAsCat: Kedi misin? 😺
-selectChannel: Kanal seç
+selectChannel: Bir kanal seç
emojiName: Emoji adı
showOnRemote: Orijinal sayfayı aç
flagSpeakAsCatDescription: Gönderileriniz kedi modundayken miyavdirilecektir
-flagShowTimelineReplies: Yanıtları zaman çizelgesinde göster
+flagShowTimelineReplies: Yanıtları akışta göster
silenceThisInstance: Bu sunucuyu sustur
proxyAccountDescription: Vekil hesabı, belirli koşullar altında kullanıcılar için
uzaktan takipçi işlevi gören bir hesaptır. Örneğin, bir kullanıcı listeye bir uzak
@@ -845,8 +845,8 @@ pageLoadErrorDescription: Bu problem genelde ağ hataları veya tarayıcının
kaynaklanır. Önbelleği temizlemeyi deneyin ve biraz bekledikten sonra tekrar deneyin.
quote: Alıntıla
pinnedNote: Sabitlenmiş gönderi
-renote: Yükselt
-unrenote: Yükseltmeyi geri al
+renote: Destekle
+unrenote: Desteklemeyi geri al
emojiUrl: Emoji URL'si
suspendConfirm: Bu hesabı askıya almak istediğinize emin misiniz?
addEmoji: Ekle
@@ -858,7 +858,7 @@ wallpaper: Arkaplan
searchWith: 'Arat: {q}'
youHaveNoLists: Hiçbir listen yok
followConfirm: '{name} kullanıcısını takip etmek istediğine emin misin?'
-metadata: Metadata
+metadata: Üstveri
monitor: Monitör
jobQueue: İş Sırası
noUsers: Kullanıcılar bulunamadı
@@ -1013,7 +1013,7 @@ incorrectPassword: Yanlış şifre.
voteConfirm: '"{choice}" için oyunuzu onaylıyor musunuz?'
failedToFetchAccountInformation: Hesap bilgileri getirilemedi
rateLimitExceeded: Hız limiti aşıldı
-renotedBy: '{user} Yükseltti'
+renotedBy: '{user} destekledi'
host: Host
objectStorage: Nesne Depolaması
objectStorageUseSSLDesc: API bağlantıları için HTTPS kullanmayacaksanız bunu kapatın
@@ -1026,8 +1026,8 @@ verificationEmailSent: Bir doğrulama maili gönderildi. Doğrulamayı tamamlama
lütfen verilen bağlantıyı takip edin.
hashtags: Etiketler
resolved: Çözüldü
-flagShowTimelineRepliesDescription: Açıksa, kullanıcıların zaman çizelgesindeki diğer
- kullanıcıların gönderilerine verdiği yanıtları gösterir.
+flagShowTimelineRepliesDescription: Açıksa, kullanıcıların akıştaki diğer kullanıcıların
+ gönderilerine verdiği yanıtları gösterir.
clearQueueConfirmText: Kuyrukta kalan teslim edilmemiş gönderiler birleştirilmeyecektir.
Genellikle bu işleme gerek yoktur.
image: Resim
@@ -1040,8 +1040,8 @@ unsuspendConfirm: Bu hesabın askıya almasını kaldırmak istediğinize emin m
selectList: Liste seç
editWidgets: Widget'ları düzenle
showEmojisInReactionNotifications: Tepki bildirimlerinde emojileri göster
-renoteMute: Yükseltmeleri sustur
-renoteUnmute: Yükseltmeleri susturmayı kaldır
+renoteMute: Desteklemeleri sustur
+renoteUnmute: Desteklemelerde ki susturmayı kaldır
loginFailed: Giriş yapılamadı
proxyAccount: Vekil Hesap
selectUser: Kullanıcı seç
@@ -1068,7 +1068,7 @@ hideThisNote: Bu gönderiyi gizle
file: Dosya
enableEmojiReactions: Emoji tepkilerini aç
cw: İçerik uyarısı
-makeFollowManuallyApprove: Onay gerektiren takip istekleri
+makeFollowManuallyApprove: Onayınızı gerektiren takip istekleri
today: Bugün
enableRecommendedTimeline: Tavsiye edilen zaman çizgisini aktive et
state: Durum
@@ -1165,7 +1165,7 @@ indexFromDescription: Her gönderiyi dizine eklemek için boş bırakın
indexNotice: Şimdi indeksleniyor. Bu muhtemelen biraz zaman alacaktır, lütfen sunucunuzu
en az bir saat yeniden başlatmayın.
customKaTeXMacro: Özel KaTeX makroları
-directNotes: Direkt Mesajlar
+directNotes: Özel Mesajlar
import: İçeri Aktar
export: Dışarı Aktar
mentions: Bahsetmeler
@@ -1173,8 +1173,8 @@ files: Dosyalar
driveFileDeleteConfirm: '"{name}" dosyasını silmek istediğinizden emin misiniz? Dosyayı
"Ek" olarak içeren tüm gönderilerden kaldırılacaktır.'
createList: Liste oluştur
-listsDesc: Listeler, belirtilen kullanıcılarla zaman çizelgesi oluşturmanıza olanak
- tanır. Zaman Çizelgesi sayfasından erişilebilirler.
+listsDesc: Listeler, belirtilen kullanıcıların içeriklerini içeren akışlar oluşturmanıza
+ olanak tanır. Akış sayfasından erişilebilirler.
note: Gönder
enterListName: Liste için isim gir
unfollow: Takipten Çık
@@ -1183,14 +1183,14 @@ followRequestPending: Takip isteği bekleniyor
enterEmoji: Bir emoji gir
followRequest: Takip İsteği
followRequests: Takip istekleri
-renoted: Yükseldi.
+renoted: Desteklendi.
emoji: Emoji
cacheRemoteFiles: Uzak dosyaları önbelleğe al
flagAsBot: Bu hesabı robot olarak işaretle
flagAsBotDescription: Bu hesap bir program tarafından kontrol ediliyorsa bu seçeneği
etkinleştirin. Etkinleştirilirse, diğer geliştiricilerin botlarıyla sonsuz etkileşim
zincirlerinin önlemesi ve Firefish'in dahili sistemlerinin bu hesabı bir bot olarak
- ele alacak şekilde ayarlaması için bir bayrak görevi görür.
+ ele alacak şekilde ayarlaması için bir işaret görevi görür.
clearQueue: Sırayı Temizle
hiddenTags: Gizlenmiş Etiketler
done: Tamamlandı
@@ -2156,3 +2156,4 @@ importZip: ZIP içe aktar
indexable: Endekslenebilir
languageForTranslation: Çeviri sonrası dili
confirm: Onayla
+clickToShowPatterns: Modülün örüntülerini göstermek için tıklayın
diff --git a/locales/zh-TW.yml b/locales/zh-TW.yml
index d85893ca15..f42dae4b30 100644
--- a/locales/zh-TW.yml
+++ b/locales/zh-TW.yml
@@ -458,7 +458,7 @@ youHaveNoGroups: "找不到群組"
joinOrCreateGroup: "請加入現有群組,或創建新群組。"
noHistory: "沒有歷史紀錄"
signinHistory: "登入歷史"
-disableAnimatedMfm: "禁用MFM動畫"
+disableAnimatedMfm: "停用MFM動畫"
doing: "正在處理..."
category: "類別"
tags: "標籤"
@@ -596,7 +596,7 @@ emptyToDisableSmtpAuth: "留空使用者名稱及密碼以關閉SMTP驗證"
smtpSecure: "在 SMTP 連接中使用隱式 SSL/TLS"
smtpSecureInfo: "如使用STARTTLS,請關閉"
testEmail: "測試郵件發送"
-wordMute: "被靜音的文字"
+wordMute: "被靜音的文字及語言"
regexpError: "正規表達式錯誤"
regexpErrorDescription: "{tab} 靜音文字的第 {line} 行的正規表達式有錯誤:"
instanceMute: "伺服器的靜音"
@@ -765,7 +765,7 @@ user: "使用者"
administration: "管理"
accounts: "帳戶"
switch: "切換"
-noMaintainerInformationWarning: "尚未設定管理員信息。"
+noMaintainerInformationWarning: "尚未設定管理員資訊。"
noBotProtectionWarning: "尚未設定Bot防護。"
configure: "設定"
postToGallery: "發佈到相簿"
@@ -899,7 +899,7 @@ customKaTeXMacro: "自訂KaTeX巨集"
customKaTeXMacroDescription: "使用巨集來輕鬆輸入數學表達式吧!巨集的用法與 LaTeX 中的命令定義相同。你可以使用 \\newcommand{\\
name}{content} 或 \\newcommand{\\name}[number of arguments]{content} 來輸入數學表達式。舉例來說,\\
newcommand{\\add}[2]{#1 + #2} 會將 \\add{3}{foo} 展開為 3 + foo。巨集名稱除了可用大括號 {} 括起來之外,也可使用小括號
- () 和中括號 [],但使用於巨集參數的括號會有所變更。每行只能夠定義一個巨集,巨集中間無法間換。無效的行將被忽略。只支援簡單字串的替換功能,不支援條件分歧的高級語法。"
+ () 和中括號 [],但使用於巨集參數的括號會有所變更。每行只能夠定義一個巨集,巨集中間無法間換。無效的行將被忽略。只支援簡單字串的替換功能,不支援條件分歧的進階語法。"
enableCustomKaTeXMacro: "啟用自定義 KaTeX 宏"
_sensitiveMediaDetection:
description: "您可以使用機器學習自動檢測敏感媒體並將其用於審核。 伺服器的負荷會稍微增加。"
@@ -932,7 +932,7 @@ _accountDelete:
inProgress: "正在刪除"
_ad:
back: "返回"
- reduceFrequencyOfThisAd: "降低此廣告的頻率"
+ reduceFrequencyOfThisAd: "降低此橫幅的頻率"
_forgotPassword:
enterEmail: "請輸入您的帳戶註冊的電子郵件地址。 密碼重置連結將被發送到該電子郵件地址。"
ifNoEmail: "如果您還沒有註冊您的電子郵件地址,請聯繫管理員。"
@@ -1026,7 +1026,7 @@ _mfm:
emoji: "自訂表情符號"
emojiDescription: "您可以通過將自定義表情符號名稱括在冒號中來顯示自定義表情符號。"
search: "搜尋"
- searchDescription: "您可以顯示所輸入的搜索框。"
+ searchDescription: "顯示含有指定文字的搜尋欄。"
flip: "翻轉"
flipDescription: "將內容上下或左右翻轉。"
jelly: "動畫(果凍)"
@@ -1068,7 +1068,7 @@ _mfm:
alwaysPlay: 自動播放所有MFM動畫
positionDescription: 按指定數量移動內容。
advancedDescription: 如果停用,僅顯示基礎MFM及正在播放的MFM動畫
- advanced: 高級MFM
+ advanced: 進階MFM
fade: 淡出
foreground: 文字顏色
crop: 裁切
@@ -1230,7 +1230,7 @@ _tutorial:
step3_1: "現在是時候追隨一些人了!"
step3_2: "你的主頁和社交時間線是基於你所追蹤的人,所以試著先追蹤幾個帳戶。\n點擊個人資料右上角的加號圈就可以關注它。"
step4_1: "讓我們出去找你。"
- step4_2: "對於他們的第一條信息,有些人喜歡做 {introduction} 或一個簡單的 \"hello world!\""
+ step4_2: "作為第一則貼文,有些人喜歡發 {introduction} 或單純發一個 \"hello world!\""
step5_1: "時間線,到處都是時間線!"
step5_2: "您的伺服器已啟用了{timelines}個時間線。"
step5_3: "首頁 {icon} 時間線是顯示你追蹤的帳號的貼文。"
@@ -1815,7 +1815,7 @@ _deck:
secureMode: 安全模式(授權獲取)
instanceSecurity: 伺服器安全性
privateMode: 私人模式
-allowedInstances: 列入白名單的伺服器
+allowedInstances: 列入允許名單的伺服器
secureModeInfo: 當從其他伺服器請求時,不要在沒有證據的情況下發回。
_messaging:
dms: 私訊
@@ -1823,8 +1823,8 @@ _messaging:
manageGroups: 管理群組
replayTutorial: 重新播放教程
moveFromLabel: '您想遷移的舊帳戶:'
-customMOTDDescription: 每次用戶加載/重新加載頁面時,由換行符號分隔的 MOTD(啟動畫面)的自定信息將隨機顯示。
-privateModeInfo: 啟用後,只有列入白名單的伺服器才能與你的伺服器聯合。所有貼文都將對公眾隱藏。
+customMOTDDescription: 自訂MOTD(啟動畫面)訊息,一行一個。每次用戶載入/重新整理頁面時將會隨機顯示。
+privateModeInfo: 啟用後,只有列入允許名單的伺服器才能與你的伺服器聯合。所有貼文都將對公眾隱藏。
adminCustomCssWarn: 除非你知道它的作用,否則請不要使用此設定。 輸入不正確的值可能會導致每個人的客戶端無法正常運行。你可在你的的用戶設定中測試,確保你的
CSS 正常工作。
showUpdates: Firefish 更新時顯示彈出視窗
@@ -1852,7 +1852,7 @@ enableEmojiReactions: 啟用表情符號反應
breakFollowConfirm: 您確定要移除該關注者嗎?
socialTimeline: 社交時間軸
cannotUploadBecauseExceedsFileSizeLimit: 因檔案太大而無法上傳。
-customMOTD: 自定義MOTD (網頁載入時顯示的信息)
+customMOTD: 自定義MOTD (網頁載入時顯示的訊息)
customSplashIcons: 啟動畫面圖標 (網址)
splash: 啟動畫面
updateAvailable: 可能有可用的更新!
@@ -1871,7 +1871,7 @@ _experiments:
title: 試驗功能
enablePostImports: 啟用匯入貼文的功能
findOtherInstance: 找找另一個伺服器
-noGraze: 瀏覽器擴展 "Graze for Mastodon" 會與Firefish發生衝突,請停用該擴展。
+noGraze: 瀏覽器擴充元件 "Graze for Mastodon" 會與Firefish發生衝突,請停用該擴充元件。
userSaysSomethingReasonRenote: '{name} 轉發了包含 {reason} 的貼文'
pushNotificationNotSupported: 你的瀏覽器或伺服器不支援推送通知
accessibility: 輔助功能
@@ -1883,13 +1883,13 @@ deleted: 已刪除
editNote: 編輯貼文
edited: '於 {date} {time} 編輯'
userSaysSomethingReason: '{name} 說了 {reason}'
-allowedInstancesDescription: 要加入聯邦白名單的服務器,每台伺服器用新行分隔(僅適用於私有模式)。
+allowedInstancesDescription: 允許聯邦的伺服器名單,一行一個(僅適用於私人模式)。
defaultReaction: 默認的表情符號反應
license: 授權
apps: 應用
pushNotification: 推送通知
subscribePushNotification: 啟用推送通知
-unsubscribePushNotification: 禁用推送通知
+unsubscribePushNotification: 停用推送通知
pushNotificationAlreadySubscribed: 推送通知已經啟用
recommendedInstancesDescription: 以每行分隔的推薦伺服器出現在推薦的時間線中。
searchPlaceholder: 在 Firefish 上搜尋
@@ -1932,7 +1932,7 @@ isModerator: 板主
isAdmin: 管理員
isPatron: Firefish 項目贊助者
silencedWarning: 顯示此頁面是因為這些使用者來自您伺服器管理員已靜音的伺服器,因此他們可能是垃圾訊息。
-signupsDisabled: 該伺服器上的註冊當前已被禁用,但您隨時可以在另一台伺服器上註冊!或是您有該伺服器的邀請碼,請在下面輸入。
+signupsDisabled: 此伺服器目前停止註冊,但您隨時可以在另一台伺服器上註冊!如果您有此伺服器的邀請碼,請在下面輸入。
showPopup: 通過彈出式視窗通知用戶
showWithSparkles: 讓標題閃閃發光
youHaveUnreadAnnouncements: 您有未讀的公告
diff --git a/packages/README.md b/packages/README.md
index ea04817f06..75e38a4940 100644
--- a/packages/README.md
+++ b/packages/README.md
@@ -7,4 +7,3 @@ This directory contains all of the packages Firefish uses.
- `client`: Web interface written in Vue3 and TypeScript
- `sw`: Web [Service Worker](https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API) written in TypeScript
- `firefish-js`: TypeScript SDK for both backend and client, also published on [NPM](https://www.npmjs.com/package/firefish-js) for public use
-- `megalodon`: TypeScript library used for partial Mastodon API compatibility
diff --git a/packages/backend/package.json b/packages/backend/package.json
index db51ee2867..a7b180c428 100644
--- a/packages/backend/package.json
+++ b/packages/backend/package.json
@@ -89,7 +89,7 @@
"koa-send": "5.0.1",
"koa-slow": "2.1.0",
"koa-views": "7.0.2",
- "megalodon": "workspace:*",
+ "megalodon": "8.1.1",
"meilisearch": "0.34.1",
"mfm-js": "0.23.3",
"mime-types": "2.1.35",
diff --git a/packages/backend/src/server/api/mastodon/ApiMastodonCompatibleService.ts b/packages/backend/src/server/api/mastodon/ApiMastodonCompatibleService.ts
index 44485ac429..3f6e671bd6 100644
--- a/packages/backend/src/server/api/mastodon/ApiMastodonCompatibleService.ts
+++ b/packages/backend/src/server/api/mastodon/ApiMastodonCompatibleService.ts
@@ -24,7 +24,11 @@ export function getClient(
const accessTokenArr = authorization?.split(" ") ?? [null];
const accessToken = accessTokenArr[accessTokenArr.length - 1];
const generator = (megalodon as any).default;
- const client = generator(BASE_URL, accessToken) as MegalodonInterface;
+ const client = generator(
+ "firefish",
+ BASE_URL,
+ accessToken,
+ ) as MegalodonInterface;
return client;
}
diff --git a/packages/backend/src/server/api/mastodon/endpoints/auth.ts b/packages/backend/src/server/api/mastodon/endpoints/auth.ts
index b55cb6388c..3d6eb8c4d6 100644
--- a/packages/backend/src/server/api/mastodon/endpoints/auth.ts
+++ b/packages/backend/src/server/api/mastodon/endpoints/auth.ts
@@ -68,7 +68,7 @@ export function apiAuthMastodon(router: Router): void {
website: body.website,
redirect_uri: red,
client_id: Buffer.from(appData.url || "").toString("base64"),
- client_secret: appData.clientSecret,
+ client_secret: appData.client_secret,
};
console.log(returns);
ctx.body = returns;
diff --git a/packages/backend/src/server/api/mastodon/endpoints/search.ts b/packages/backend/src/server/api/mastodon/endpoints/search.ts
index 8a48175579..5bd24ca89b 100644
--- a/packages/backend/src/server/api/mastodon/endpoints/search.ts
+++ b/packages/backend/src/server/api/mastodon/endpoints/search.ts
@@ -1,8 +1,7 @@
-import megalodon, { MegalodonInterface } from "megalodon";
import Router from "@koa/router";
import { getClient } from "../ApiMastodonCompatibleService.js";
import axios from "axios";
-import { Converter } from "megalodon";
+import Converter from "megalodon";
import { convertTimelinesArgsId, limitToInt } from "./timeline.js";
import { convertAccount, convertStatus } from "../converters.js";
diff --git a/packages/backend/src/server/api/mastodon/endpoints/status.ts b/packages/backend/src/server/api/mastodon/endpoints/status.ts
index bc95d77769..2c35843dd3 100644
--- a/packages/backend/src/server/api/mastodon/endpoints/status.ts
+++ b/packages/backend/src/server/api/mastodon/endpoints/status.ts
@@ -380,7 +380,7 @@ export function apiStatusMastodon(router: Router): void {
const accessTokens = ctx.headers.authorization;
const client = getClient(BASE_URL, accessTokens);
try {
- const data = await client.reactStatus(
+ const data = await client.createEmojiReaction(
convertId(ctx.params.id, IdType.FirefishId),
ctx.params.name,
);
@@ -400,7 +400,7 @@ export function apiStatusMastodon(router: Router): void {
const accessTokens = ctx.headers.authorization;
const client = getClient(BASE_URL, accessTokens);
try {
- const data = await client.unreactStatus(
+ const data = await client.deleteEmojiReaction(
convertId(ctx.params.id, IdType.FirefishId),
ctx.params.name,
);
diff --git a/packages/backend/src/server/api/stream/index.ts b/packages/backend/src/server/api/stream/index.ts
index e483683151..5a47f2cba7 100644
--- a/packages/backend/src/server/api/stream/index.ts
+++ b/packages/backend/src/server/api/stream/index.ts
@@ -25,7 +25,7 @@ import { readNotification } from "../common/read-notification.js";
import channels from "./channels/index.js";
import type Channel from "./channel.js";
import type { StreamEventEmitter, StreamMessages } from "./types.js";
-import { Converter } from "megalodon";
+import Converter from "megalodon";
import { getClient } from "../mastodon/ApiMastodonCompatibleService.js";
/**
diff --git a/packages/backend/src/server/index.ts b/packages/backend/src/server/index.ts
index 841f0baa69..a6f1c1fc06 100644
--- a/packages/backend/src/server/index.ts
+++ b/packages/backend/src/server/index.ts
@@ -179,11 +179,10 @@ mastoRouter.post("/oauth/token", async (ctx) => {
ctx.body = ret;
return;
}
- let client_id: any = body.client_id;
+ let client_id: Array | string | null = body.client_id;
const BASE_URL = `${ctx.request.protocol}://${ctx.request.hostname}`;
const generator = (megalodon as any).default;
- const client = generator(BASE_URL, null) as MegalodonInterface;
- let m = null;
+ const client = generator("firefish", BASE_URL, null) as MegalodonInterface;
let token = null;
if (body.code) {
//m = body.code.match(/^([a-zA-Z0-9]{8})([a-zA-Z0-9]{4})([a-zA-Z0-9]{4})([a-zA-Z0-9]{4})([a-zA-Z0-9]{12})/);
@@ -207,7 +206,7 @@ mastoRouter.post("/oauth/token", async (ctx) => {
token ? token : "",
);
const ret = {
- access_token: atData.accessToken,
+ access_token: atData.access_token,
token_type: "Bearer",
scope: body.scope || "read write follow push",
created_at: Math.floor(new Date().getTime() / 1000),
diff --git a/packages/client/src/pages/gallery/index.vue b/packages/client/src/pages/gallery/index.vue
index 0c9755181f..dc87fbca44 100644
--- a/packages/client/src/pages/gallery/index.vue
+++ b/packages/client/src/pages/gallery/index.vue
@@ -24,7 +24,7 @@
@swiper="setSwiperRef"
@slide-change="onSlideChange"
>
-
+
@@ -66,7 +66,7 @@
-
+
-
+
{{ i18n.ts.postToGallery }} any>("getPageBlockList");
diff --git a/packages/client/src/pages/page-editor/els/page-editor.el.section.vue b/packages/client/src/pages/page-editor/els/page-editor.el.section.vue
index d4b28e13cb..476b2340ea 100644
--- a/packages/client/src/pages/page-editor/els/page-editor.el.section.vue
+++ b/packages/client/src/pages/page-editor/els/page-editor.el.section.vue
@@ -40,6 +40,7 @@ const props = withDefaults(
},
},
);
+props.value.children ??= [];
const getPageBlockList = inject<(any) => any>("getPageBlockList");
diff --git a/packages/client/src/pages/pages.vue b/packages/client/src/pages/pages.vue
index 3308730d06..5476c58895 100644
--- a/packages/client/src/pages/pages.vue
+++ b/packages/client/src/pages/pages.vue
@@ -23,7 +23,7 @@
@swiper="setSwiperRef"
@slide-change="onSlideChange"
>
-
+
-
+
-
+