diff --git a/__e2e__/util.ts b/__e2e__/util.ts
index f6f3b1b806..c5668d042e 100644
--- a/__e2e__/util.ts
+++ b/__e2e__/util.ts
@@ -1,5 +1,6 @@
import {resolveConfig} from 'detox/internals'
import {execSync} from 'child_process'
+import http from 'http'
const platform = device.getPlatform()
@@ -105,9 +106,29 @@ async function openAppForDebugBuild(platform: string, opts: any) {
}
export async function createServer(path = '') {
- const res = await fetch(`http://localhost:1986/${path}`, {method: 'POST'})
- const resBody = await res.text()
- return resBody
+ return new Promise(function (resolve, reject) {
+ var req = http.request(
+ {
+ method: 'POST',
+ host: 'localhost',
+ port: 1986,
+ path: `/${path}`,
+ },
+ function (res) {
+ const body: Buffer[] = []
+ res.on('data', chunk => body.push(chunk))
+ res.on('end', function () {
+ try {
+ resolve(Buffer.concat(body).toString())
+ } catch (e) {
+ reject(e)
+ }
+ })
+ },
+ )
+ req.on('error', reject)
+ req.end()
+ })
}
const getDeepLinkUrl = (url: string) =>
diff --git a/__tests__/lib/string.test.ts b/__tests__/lib/string.test.ts
index 99b0d25373..edddcb3e09 100644
--- a/__tests__/lib/string.test.ts
+++ b/__tests__/lib/string.test.ts
@@ -394,6 +394,7 @@ describe('parseEmbedPlayerFromUrl', () => {
'https://youtube.com/watch?v=videoId',
'https://youtube.com/watch?v=videoId&feature=share',
'https://youtube.com/shorts/videoId',
+ 'https://m.youtube.com/watch?v=videoId',
'https://youtube.com/shorts/',
'https://youtube.com/',
@@ -401,113 +402,354 @@ describe('parseEmbedPlayerFromUrl', () => {
'https://twitch.tv/channelName',
'https://www.twitch.tv/channelName',
+ 'https://m.twitch.tv/channelName',
+
+ 'https://twitch.tv/channelName/clip/clipId',
+ 'https://twitch.tv/videos/videoId',
'https://open.spotify.com/playlist/playlistId',
'https://open.spotify.com/playlist/playlistId?param=value',
+ 'https://open.spotify.com/locale/playlist/playlistId',
'https://open.spotify.com/track/songId',
'https://open.spotify.com/track/songId?param=value',
+ 'https://open.spotify.com/locale/track/songId',
'https://open.spotify.com/album/albumId',
'https://open.spotify.com/album/albumId?param=value',
+ 'https://open.spotify.com/locale/album/albumId',
'https://soundcloud.com/user/track',
'https://soundcloud.com/user/sets/set',
'https://soundcloud.com/user/',
+
+ 'https://music.apple.com/us/playlist/playlistName/playlistId',
+ 'https://music.apple.com/us/album/albumName/albumId',
+ 'https://music.apple.com/us/album/albumName/albumId?i=songId',
+
+ 'https://vimeo.com/videoId',
+ 'https://vimeo.com/videoId?autoplay=0',
+
+ 'https://giphy.com/gifs/some-random-gif-name-gifId',
+ 'https://giphy.com/gif/some-random-gif-name-gifId',
+ 'https://giphy.com/gifs/',
+
+ 'https://media.giphy.com/media/gifId/giphy.webp',
+ 'https://media0.giphy.com/media/gifId/giphy.webp',
+ 'https://media1.giphy.com/media/gifId/giphy.gif',
+ 'https://media2.giphy.com/media/gifId/giphy.webp',
+ 'https://media3.giphy.com/media/gifId/giphy.mp4',
+ 'https://media4.giphy.com/media/gifId/giphy.webp',
+ 'https://media5.giphy.com/media/gifId/giphy.mp4',
+ 'https://media0.giphy.com/media/gifId/giphy.mp3',
+ 'https://media1.google.com/media/gifId/giphy.webp',
+
+ 'https://media.giphy.com/media/trackingId/gifId/giphy.webp',
+
+ 'https://i.giphy.com/media/gifId/giphy.webp',
+ 'https://i.giphy.com/media/gifId/giphy.webp',
+ 'https://i.giphy.com/gifId.gif',
+ 'https://i.giphy.com/gifId.gif',
+
+ 'https://tenor.com/view/gifId',
+ 'https://tenor.com/notView/gifId',
+ 'https://tenor.com/view',
+ 'https://tenor.com/view/gifId.gif',
+ 'https://tenor.com/intl/view/gifId.gif',
]
const outputs = [
{
type: 'youtube_video',
- videoId: 'videoId',
- playerUri: 'https://www.youtube.com/embed/videoId?autoplay=1',
+ source: 'youtube',
+ playerUri:
+ 'https://www.youtube.com/embed/videoId?autoplay=1&playsinline=1',
},
{
type: 'youtube_video',
- videoId: 'videoId',
- playerUri: 'https://www.youtube.com/embed/videoId?autoplay=1',
+ source: 'youtube',
+ playerUri:
+ 'https://www.youtube.com/embed/videoId?autoplay=1&playsinline=1',
},
{
type: 'youtube_video',
- videoId: 'videoId',
- playerUri: 'https://www.youtube.com/embed/videoId?autoplay=1',
+ source: 'youtube',
+ playerUri:
+ 'https://www.youtube.com/embed/videoId?autoplay=1&playsinline=1',
},
{
type: 'youtube_video',
- videoId: 'videoId',
- playerUri: 'https://www.youtube.com/embed/videoId?autoplay=1',
+ source: 'youtube',
+ playerUri:
+ 'https://www.youtube.com/embed/videoId?autoplay=1&playsinline=1',
},
{
type: 'youtube_video',
- videoId: 'videoId',
- playerUri: 'https://www.youtube.com/embed/videoId?autoplay=1',
+ source: 'youtube',
+ playerUri:
+ 'https://www.youtube.com/embed/videoId?autoplay=1&playsinline=1',
+ },
+ {
+ type: 'youtube_short',
+ source: 'youtubeShorts',
+ hideDetails: true,
+ playerUri:
+ 'https://www.youtube.com/embed/videoId?autoplay=1&playsinline=1',
},
{
type: 'youtube_video',
- videoId: 'videoId',
- playerUri: 'https://www.youtube.com/embed/videoId?autoplay=1',
+ source: 'youtube',
+ playerUri:
+ 'https://www.youtube.com/embed/videoId?autoplay=1&playsinline=1',
},
+
undefined,
undefined,
undefined,
{
- type: 'twitch_live',
- channelId: 'channelName',
+ type: 'twitch_video',
+ source: 'twitch',
playerUri: `https://player.twitch.tv/?volume=0.5&!muted&autoplay&channel=channelName&parent=localhost`,
},
{
- type: 'twitch_live',
- channelId: 'channelName',
+ type: 'twitch_video',
+ source: 'twitch',
playerUri: `https://player.twitch.tv/?volume=0.5&!muted&autoplay&channel=channelName&parent=localhost`,
},
+ {
+ type: 'twitch_video',
+ source: 'twitch',
+ playerUri: `https://player.twitch.tv/?volume=0.5&!muted&autoplay&channel=channelName&parent=localhost`,
+ },
+ {
+ type: 'twitch_video',
+ source: 'twitch',
+ playerUri: `https://clips.twitch.tv/embed?volume=0.5&autoplay=true&clip=clipId&parent=localhost`,
+ },
+ {
+ type: 'twitch_video',
+ source: 'twitch',
+ playerUri: `https://player.twitch.tv/?volume=0.5&!muted&autoplay&video=videoId&parent=localhost`,
+ },
{
type: 'spotify_playlist',
- playlistId: 'playlistId',
+ source: 'spotify',
playerUri: `https://open.spotify.com/embed/playlist/playlistId`,
},
{
type: 'spotify_playlist',
- playlistId: 'playlistId',
+ source: 'spotify',
+ playerUri: `https://open.spotify.com/embed/playlist/playlistId`,
+ },
+ {
+ type: 'spotify_playlist',
+ source: 'spotify',
playerUri: `https://open.spotify.com/embed/playlist/playlistId`,
},
{
type: 'spotify_song',
- songId: 'songId',
+ source: 'spotify',
playerUri: `https://open.spotify.com/embed/track/songId`,
},
{
type: 'spotify_song',
- songId: 'songId',
+ source: 'spotify',
+ playerUri: `https://open.spotify.com/embed/track/songId`,
+ },
+ {
+ type: 'spotify_song',
+ source: 'spotify',
playerUri: `https://open.spotify.com/embed/track/songId`,
},
{
type: 'spotify_album',
- albumId: 'albumId',
+ source: 'spotify',
playerUri: `https://open.spotify.com/embed/album/albumId`,
},
{
type: 'spotify_album',
- albumId: 'albumId',
+ source: 'spotify',
+ playerUri: `https://open.spotify.com/embed/album/albumId`,
+ },
+ {
+ type: 'spotify_album',
+ source: 'spotify',
playerUri: `https://open.spotify.com/embed/album/albumId`,
},
{
type: 'soundcloud_track',
- user: 'user',
- track: 'track',
+ source: 'soundcloud',
playerUri: `https://w.soundcloud.com/player/?url=https://soundcloud.com/user/track&auto_play=true&visual=false&hide_related=true`,
},
{
type: 'soundcloud_set',
- user: 'user',
- set: 'set',
+ source: 'soundcloud',
playerUri: `https://w.soundcloud.com/player/?url=https://soundcloud.com/user/sets/set&auto_play=true&visual=false&hide_related=true`,
},
undefined,
+
+ {
+ type: 'apple_music_playlist',
+ source: 'appleMusic',
+ playerUri:
+ 'https://embed.music.apple.com/us/playlist/playlistName/playlistId',
+ },
+ {
+ type: 'apple_music_album',
+ source: 'appleMusic',
+ playerUri: 'https://embed.music.apple.com/us/album/albumName/albumId',
+ },
+ {
+ type: 'apple_music_song',
+ source: 'appleMusic',
+ playerUri:
+ 'https://embed.music.apple.com/us/album/albumName/albumId?i=songId',
+ },
+
+ {
+ type: 'vimeo_video',
+ source: 'vimeo',
+ playerUri: 'https://player.vimeo.com/video/videoId?autoplay=1',
+ },
+ {
+ type: 'vimeo_video',
+ source: 'vimeo',
+ playerUri: 'https://player.vimeo.com/video/videoId?autoplay=1',
+ },
+
+ {
+ type: 'giphy_gif',
+ source: 'giphy',
+ isGif: true,
+ hideDetails: true,
+ metaUri: 'https://giphy.com/gifs/gifId',
+ playerUri: 'https://i.giphy.com/media/gifId/giphy.webp',
+ },
+ undefined,
+ undefined,
+
+ {
+ type: 'giphy_gif',
+ source: 'giphy',
+ isGif: true,
+ hideDetails: true,
+ metaUri: 'https://giphy.com/gifs/gifId',
+ playerUri: 'https://i.giphy.com/media/gifId/giphy.webp',
+ },
+ {
+ type: 'giphy_gif',
+ source: 'giphy',
+ isGif: true,
+ hideDetails: true,
+ metaUri: 'https://giphy.com/gifs/gifId',
+ playerUri: 'https://i.giphy.com/media/gifId/giphy.webp',
+ },
+ {
+ type: 'giphy_gif',
+ source: 'giphy',
+ isGif: true,
+ hideDetails: true,
+ metaUri: 'https://giphy.com/gifs/gifId',
+ playerUri: 'https://i.giphy.com/media/gifId/giphy.webp',
+ },
+ {
+ type: 'giphy_gif',
+ source: 'giphy',
+ isGif: true,
+ hideDetails: true,
+ metaUri: 'https://giphy.com/gifs/gifId',
+ playerUri: 'https://i.giphy.com/media/gifId/giphy.webp',
+ },
+ {
+ type: 'giphy_gif',
+ source: 'giphy',
+ isGif: true,
+ hideDetails: true,
+ metaUri: 'https://giphy.com/gifs/gifId',
+ playerUri: 'https://i.giphy.com/media/gifId/giphy.webp',
+ },
+ {
+ type: 'giphy_gif',
+ source: 'giphy',
+ isGif: true,
+ hideDetails: true,
+ metaUri: 'https://giphy.com/gifs/gifId',
+ playerUri: 'https://i.giphy.com/media/gifId/giphy.webp',
+ },
+ undefined,
+ undefined,
+ undefined,
+
+ {
+ type: 'giphy_gif',
+ source: 'giphy',
+ isGif: true,
+ hideDetails: true,
+ metaUri: 'https://giphy.com/gifs/gifId',
+ playerUri: 'https://i.giphy.com/media/gifId/giphy.webp',
+ },
+
+ {
+ type: 'giphy_gif',
+ source: 'giphy',
+ isGif: true,
+ hideDetails: true,
+ metaUri: 'https://giphy.com/gifs/gifId',
+ playerUri: 'https://i.giphy.com/media/gifId/giphy.webp',
+ },
+ {
+ type: 'giphy_gif',
+ source: 'giphy',
+ isGif: true,
+ hideDetails: true,
+ metaUri: 'https://giphy.com/gifs/gifId',
+ playerUri: 'https://i.giphy.com/media/gifId/giphy.webp',
+ },
+ {
+ type: 'giphy_gif',
+ source: 'giphy',
+ isGif: true,
+ hideDetails: true,
+ metaUri: 'https://giphy.com/gifs/gifId',
+ playerUri: 'https://i.giphy.com/media/gifId/giphy.webp',
+ },
+ {
+ type: 'giphy_gif',
+ source: 'giphy',
+ isGif: true,
+ hideDetails: true,
+ metaUri: 'https://giphy.com/gifs/gifId',
+ playerUri: 'https://i.giphy.com/media/gifId/giphy.webp',
+ },
+
+ {
+ type: 'tenor_gif',
+ source: 'tenor',
+ isGif: true,
+ hideDetails: true,
+ playerUri: 'https://tenor.com/view/gifId.gif',
+ },
+ undefined,
+ undefined,
+ {
+ type: 'tenor_gif',
+ source: 'tenor',
+ isGif: true,
+ hideDetails: true,
+ playerUri: 'https://tenor.com/view/gifId.gif',
+ },
+ {
+ type: 'tenor_gif',
+ source: 'tenor',
+ isGif: true,
+ hideDetails: true,
+ playerUri: 'https://tenor.com/intl/view/gifId.gif',
+ },
]
it('correctly grabs the correct id from uri', () => {
diff --git a/app.config.js b/app.config.js
index 4db454c826..afd6677ef1 100644
--- a/app.config.js
+++ b/app.config.js
@@ -1,5 +1,16 @@
const pkg = require('./package.json')
+const SPLASH_CONFIG = {
+ backgroundColor: '#ffffff',
+ image: './assets/splash.png',
+ resizeMode: 'cover',
+}
+const DARK_SPLASH_CONFIG = {
+ backgroundColor: '#001429',
+ image: './assets/splash-dark.png',
+ resizeMode: 'cover',
+}
+
module.exports = function () {
/**
* App version number. Should be incremented as part of a release cycle.
@@ -9,12 +20,12 @@ module.exports = function () {
/**
* iOS build number. Must be incremented for each TestFlight version.
*/
- const IOS_BUILD_NUMBER = '5'
+ const IOS_BUILD_NUMBER = '1'
/**
* Android build number. Must be incremented for each release.
*/
- const ANDROID_VERSION_CODE = 51
+ const ANDROID_VERSION_CODE = 55
/**
* Uses built-in Expo env vars
@@ -42,11 +53,7 @@ module.exports = function () {
orientation: 'portrait',
icon: './assets/icon.png',
userInterfaceStyle: 'automatic',
- splash: {
- image: './assets/splash.png',
- resizeMode: 'cover',
- backgroundColor: '#ffffff',
- },
+ splash: SPLASH_CONFIG,
ios: {
buildNumber: IOS_BUILD_NUMBER,
supportsTablet: false,
@@ -66,6 +73,10 @@ module.exports = function () {
'Used for profile pictures, posts, and other kinds of content',
},
associatedDomains: ['applinks:bsky.app', 'applinks:staging.bsky.app'],
+ splash: {
+ ...SPLASH_CONFIG,
+ dark: DARK_SPLASH_CONFIG,
+ },
},
androidStatusBar: {
barStyle: 'dark-content',
@@ -95,6 +106,10 @@ module.exports = function () {
category: ['BROWSABLE', 'DEFAULT'],
},
],
+ splash: {
+ ...SPLASH_CONFIG,
+ dark: DARK_SPLASH_CONFIG,
+ },
},
web: {
favicon: './assets/favicon.png',
@@ -110,6 +125,9 @@ module.exports = function () {
[
'expo-build-properties',
{
+ ios: {
+ deploymentTarget: '13.4',
+ },
android: {
compileSdkVersion: 34,
targetSdkVersion: 34,
diff --git a/assets/splash-dark.png b/assets/splash-dark.png
new file mode 100644
index 0000000000..6425bf28a1
Binary files /dev/null and b/assets/splash-dark.png differ
diff --git a/babel.config.js b/babel.config.js
index 825916676a..43b2c7bce3 100644
--- a/babel.config.js
+++ b/babel.config.js
@@ -42,6 +42,7 @@ module.exports = function (api) {
platform: './src/platform',
state: './src/state',
view: './src/view',
+ crypto: './src/platform/crypto.ts',
},
},
],
diff --git a/bskyweb/cmd/bskyweb/rss.go b/bskyweb/cmd/bskyweb/rss.go
index 4cdc78f8c8..64e67fd228 100644
--- a/bskyweb/cmd/bskyweb/rss.go
+++ b/bskyweb/cmd/bskyweb/rss.go
@@ -4,6 +4,7 @@ import (
"encoding/xml"
"fmt"
"net/http"
+ "strings"
"time"
appbsky "github.com/bluesky-social/indigo/api/bsky"
@@ -39,11 +40,33 @@ type rss struct {
func (srv *Server) WebProfileRSS(c echo.Context) error {
ctx := c.Request().Context()
+ req := c.Request()
- didParam := c.Param("did")
- did, err := syntax.ParseDID(didParam)
+ identParam := c.Param("ident")
+
+ // if not a DID, try parsing as a handle and doing a redirect
+ if !strings.HasPrefix(identParam, "did:") {
+ handle, err := syntax.ParseHandle(identParam)
+ if err != nil {
+ return echo.NewHTTPError(400, fmt.Sprintf("not a valid handle: %s", identParam))
+ }
+
+ // check that public view is Ok, and resolve DID
+ pv, err := appbsky.ActorGetProfile(ctx, srv.xrpcc, handle.String())
+ if err != nil {
+ return echo.NewHTTPError(404, fmt.Sprintf("account not found: %s", handle))
+ }
+ for _, label := range pv.Labels {
+ if label.Src == pv.Did && label.Val == "!no-unauthenticated" {
+ return echo.NewHTTPError(403, fmt.Sprintf("account does not allow public views: %s", handle))
+ }
+ }
+ return c.Redirect(http.StatusFound, fmt.Sprintf("/profile/%s/rss", pv.Did))
+ }
+
+ did, err := syntax.ParseDID(identParam)
if err != nil {
- return echo.NewHTTPError(400, fmt.Sprintf("not a valid DID: %s", didParam))
+ return echo.NewHTTPError(400, fmt.Sprintf("not a valid DID: %s", identParam))
}
// check that public view is Ok
@@ -84,7 +107,7 @@ func (srv *Server) WebProfileRSS(c echo.Context) error {
pubDate = createdAt.Time().Format(time.RFC822Z)
}
posts = append(posts, Item{
- Link: fmt.Sprintf("https://bsky.app/profile/%s/post/%s", pv.Handle, aturi.RecordKey().String()),
+ Link: fmt.Sprintf("https://%s/profile/%s/post/%s", req.Host, pv.Handle, aturi.RecordKey().String()),
Description: rec.Text,
PubDate: pubDate,
GUID: ItemGUID{
@@ -105,7 +128,7 @@ func (srv *Server) WebProfileRSS(c echo.Context) error {
feed := &rss{
Version: "2.0",
Description: desc,
- Link: fmt.Sprintf("https://bsky.app/profile/%s", pv.Handle),
+ Link: fmt.Sprintf("https://%s/profile/%s", req.Host, pv.Handle),
Title: title,
Item: posts,
}
diff --git a/bskyweb/cmd/bskyweb/server.go b/bskyweb/cmd/bskyweb/server.go
index 5d9a481fe2..94bba231a6 100644
--- a/bskyweb/cmd/bskyweb/server.go
+++ b/bskyweb/cmd/bskyweb/server.go
@@ -193,6 +193,7 @@ func serve(cctx *cli.Context) error {
e.GET("/settings/home-feed", server.WebGeneric)
e.GET("/settings/saved-feeds", server.WebGeneric)
e.GET("/settings/threads", server.WebGeneric)
+ e.GET("/settings/external-embeds", server.WebGeneric)
e.GET("/sys/debug", server.WebGeneric)
e.GET("/sys/log", server.WebGeneric)
e.GET("/support", server.WebGeneric)
@@ -210,7 +211,7 @@ func serve(cctx *cli.Context) error {
e.GET("/profile/:handle/feed/:rkey/liked-by", server.WebGeneric)
// profile RSS feed (DID not handle)
- e.GET("/profile/:did/rss", server.WebProfileRSS)
+ e.GET("/profile/:ident/rss", server.WebProfileRSS)
// post endpoints; only first populates info
e.GET("/profile/:handle/post/:rkey", server.WebPost)
@@ -336,7 +337,11 @@ func (srv *Server) WebPost(c echo.Context) error {
data["postView"] = postView
data["requestURI"] = fmt.Sprintf("https://%s%s", req.Host, req.URL.Path)
if postView.Embed != nil && postView.Embed.EmbedImages_View != nil {
- data["imgThumbUrl"] = postView.Embed.EmbedImages_View.Images[0].Thumb
+ var thumbUrls []string
+ for i := range postView.Embed.EmbedImages_View.Images {
+ thumbUrls = append(thumbUrls, postView.Embed.EmbedImages_View.Images[i].Thumb)
+ }
+ data["imgThumbUrls"] = thumbUrls
}
return c.Render(http.StatusOK, "post.html", data)
}
@@ -370,6 +375,7 @@ func (srv *Server) WebProfile(c echo.Context) error {
req := c.Request()
data["profileView"] = pv
data["requestURI"] = fmt.Sprintf("https://%s%s", req.Host, req.URL.Path)
+ data["requestHost"] = req.Host
return c.Render(http.StatusOK, "profile.html", data)
}
diff --git a/bskyweb/static/apple-touch-icon.png b/bskyweb/static/apple-touch-icon.png
index 5ebb6787c9..09393a7413 100644
Binary files a/bskyweb/static/apple-touch-icon.png and b/bskyweb/static/apple-touch-icon.png differ
diff --git a/bskyweb/static/favicon-16x16.png b/bskyweb/static/favicon-16x16.png
index 4267562b80..ea256e0569 100644
Binary files a/bskyweb/static/favicon-16x16.png and b/bskyweb/static/favicon-16x16.png differ
diff --git a/bskyweb/static/favicon-32x32.png b/bskyweb/static/favicon-32x32.png
index 869f6df5fc..a5ca7eed1e 100644
Binary files a/bskyweb/static/favicon-32x32.png and b/bskyweb/static/favicon-32x32.png differ
diff --git a/bskyweb/static/favicon.ico b/bskyweb/static/favicon.ico
deleted file mode 100644
index b4290a797a..0000000000
Binary files a/bskyweb/static/favicon.ico and /dev/null differ
diff --git a/bskyweb/static/favicon.png b/bskyweb/static/favicon.png
index 61cf7c943b..ddf55f4c81 100644
Binary files a/bskyweb/static/favicon.png and b/bskyweb/static/favicon.png differ
diff --git a/bskyweb/static/social-card-default.png b/bskyweb/static/social-card-default.png
index 3bb93c799c..00a85b8cf5 100644
Binary files a/bskyweb/static/social-card-default.png and b/bskyweb/static/social-card-default.png differ
diff --git a/bskyweb/templates/base.html b/bskyweb/templates/base.html
index e6a9f4c404..46ff71ac94 100644
--- a/bskyweb/templates/base.html
+++ b/bskyweb/templates/base.html
@@ -48,6 +48,7 @@
--text: white;
--background: black;
--backgroundLight: #26272D;
+ color-scheme: dark;
}
@media (prefers-color-scheme: light) {
html.colorMode--system {
@@ -61,6 +62,7 @@
--text: white;
--background: black;
--backgroundLight: #26272D;
+ color-scheme: dark;
}
}
diff --git a/bskyweb/templates/post.html b/bskyweb/templates/post.html
index 55a0679fbd..307f80bbb4 100644
--- a/bskyweb/templates/post.html
+++ b/bskyweb/templates/post.html
@@ -25,8 +25,10 @@
{% endif -%}
- {%- if imgThumbUrl %}
+ {%- if imgThumbUrls %}
+ {% for imgThumbUrl in imgThumbUrls %}
+ {% endfor %}
{%- elif postView.Author.Avatar %}
{# Don't use avatar image in cards; usually looks bad #}
diff --git a/bskyweb/templates/profile.html b/bskyweb/templates/profile.html
index 71c1003278..551dc15a66 100644
--- a/bskyweb/templates/profile.html
+++ b/bskyweb/templates/profile.html
@@ -34,7 +34,9 @@
{% endif %}
-
+ {%- if requestHost %}
+
+ {% endif %}
{% endif -%}
{%- endblock %}
diff --git a/lingui.config.js b/lingui.config.js
index 58e8d65c57..882c487741 100644
--- a/lingui.config.js
+++ b/lingui.config.js
@@ -1,6 +1,6 @@
/** @type {import('@lingui/conf').LinguiConfig} */
module.exports = {
- locales: ['en', 'hi', 'ja', 'fr', 'de', 'es'],
+ locales: ['en', 'de', 'es', 'fr', 'hi', 'id', 'ja', 'ko', 'pt-BR', 'uk'],
catalogs: [
{
path: '/src/locale/locales/{locale}/messages',
diff --git a/package.json b/package.json
index e55a78b3af..67721c86f4 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,10 @@
{
"name": "bsky.app",
- "version": "1.60.0",
+ "version": "1.63.0",
"private": true,
+ "engines": {
+ "node": ">=18"
+ },
"scripts": {
"prepare": "is-ci || husky install",
"postinstall": "patch-package && yarn intl:compile",
@@ -20,7 +23,7 @@
"test-coverage": "NODE_ENV=test jest --coverage",
"lint": "eslint ./src --ext .js,.jsx,.ts,.tsx",
"typecheck": "tsc --project ./tsconfig.check.json",
- "e2e:mock-server": "./jest/dev-infra/with-test-redis-and-db.sh ts-node __e2e__/mock-server.ts",
+ "e2e:mock-server": "./jest/dev-infra/with-test-redis-and-db.sh ts-node --project tsconfig.e2e.json __e2e__/mock-server.ts",
"e2e:metro": "NODE_ENV=test RN_SRC_EXT=e2e.ts,e2e.tsx expo run:ios",
"e2e:build": "NODE_ENV=test detox build -c ios.sim.debug",
"e2e:run": "NODE_ENV=test detox test --configuration ios.sim.debug --take-screenshots all",
@@ -32,10 +35,11 @@
"intl:build": "yarn intl:check && yarn intl:compile",
"intl:check": "yarn intl:extract && git diff-index -G'(^[^\\*# /])|(^#\\w)|(^\\s+[^\\*#/])' HEAD || (echo '\n⚠️ i18n detected un-extracted translations\n' && exit 1)",
"intl:extract": "lingui extract",
- "intl:compile": "lingui compile"
+ "intl:compile": "lingui compile",
+ "nuke": "rm -rf ./node_modules && rm -rf ./ios && rm -rf ./android"
},
"dependencies": {
- "@atproto/api": "^0.7.4",
+ "@atproto/api": "^0.8.0",
"@bam.tech/react-native-image-resizer": "^3.0.4",
"@braintree/sanitize-url": "^6.0.2",
"@emoji-mart/react": "^1.1.1",
@@ -49,14 +53,14 @@
"@lingui/react": "^4.5.0",
"@mattermost/react-native-paste-input": "^0.6.4",
"@miblanchard/react-native-slider": "^2.3.1",
- "@react-native-async-storage/async-storage": "1.18.2",
+ "@react-native-async-storage/async-storage": "1.21.0",
"@react-native-camera-roll/camera-roll": "^5.2.2",
"@react-native-clipboard/clipboard": "^1.10.0",
"@react-native-community/blur": "^4.3.0",
- "@react-native-community/datetimepicker": "7.2.0",
- "@react-native-masked-view/masked-view": "^0.3.1",
+ "@react-native-community/datetimepicker": "7.6.1",
+ "@react-native-masked-view/masked-view": "0.3.0",
"@react-native-menu/menu": "^0.8.0",
- "@react-native-picker/picker": "2.4.10",
+ "@react-native-picker/picker": "2.5.1",
"@react-navigation/bottom-tabs": "^6.5.7",
"@react-navigation/drawer": "^6.6.2",
"@react-navigation/native": "^6.1.6",
@@ -65,7 +69,7 @@
"@segment/analytics-react": "^1.0.0-rc1",
"@segment/analytics-react-native": "^2.10.1",
"@segment/sovran-react-native": "^0.4.5",
- "@sentry/react-native": "5.10.0",
+ "@sentry/react-native": "5.5.0",
"@tanstack/react-query": "^5.8.1",
"@tiptap/core": "^2.0.0-beta.220",
"@tiptap/extension-document": "^2.0.0-beta.220",
@@ -90,24 +94,25 @@
"email-validator": "^2.0.4",
"emoji-mart": "^5.5.2",
"eventemitter3": "^5.0.1",
- "expo": "^49.0.8",
- "expo-application": "~5.3.0",
- "expo-build-properties": "~0.8.3",
- "expo-camera": "13.5.1",
- "expo-constants": "~14.4.2",
- "expo-dev-client": "2.4.7",
- "expo-device": "~5.4.0",
- "expo-image": "~1.3.2",
- "expo-image-manipulator": "~11.5.0",
- "expo-image-picker": "~14.5.0",
- "expo-localization": "~14.3.0",
- "expo-media-library": "~15.4.1",
- "expo-notifications": "~0.20.1",
- "expo-sharing": "~11.5.0",
- "expo-splash-screen": "~0.20.5",
- "expo-status-bar": "~1.6.0",
- "expo-system-ui": "~2.4.0",
- "expo-updates": "~0.18.12",
+ "expo": "^50.0.0-preview.7",
+ "expo-application": "~5.8.1",
+ "expo-build-properties": "^0.11.0",
+ "expo-camera": "~14.0.1",
+ "expo-constants": "~15.4.2",
+ "expo-dev-client": "~3.3.4",
+ "expo-device": "~5.9.1",
+ "expo-image": "~1.10.1",
+ "expo-image-manipulator": "^11.8.0",
+ "expo-image-picker": "~14.7.1",
+ "expo-localization": "~14.8.1",
+ "expo-media-library": "~15.9.1",
+ "expo-notifications": "~0.27.2",
+ "expo-sharing": "^11.10.0",
+ "expo-splash-screen": "~0.26.1",
+ "expo-status-bar": "~1.11.1",
+ "expo-system-ui": "~2.9.2",
+ "expo-task-manager": "~11.7.0",
+ "expo-updates": "~0.24.5",
"fast-text-encoding": "^1.0.6",
"history": "^5.3.0",
"js-sha256": "^0.9.0",
@@ -135,34 +140,32 @@
"react-avatar-editor": "^13.0.0",
"react-circular-progressbar": "^2.1.0",
"react-dom": "^18.2.0",
- "react-native": "0.72.5",
+ "react-native": "0.73.1",
"react-native-appstate-hook": "^1.0.6",
"react-native-drawer-layout": "^4.0.0-alpha.3",
"react-native-fs": "^2.20.0",
- "react-native-gesture-handler": "^2.12.1",
- "react-native-get-random-values": "^1.8.0",
+ "react-native-gesture-handler": "~2.14.0",
+ "react-native-get-random-values": "~1.8.0",
"react-native-haptic-feedback": "^1.14.0",
"react-native-image-crop-picker": "^0.38.1",
"react-native-inappbrowser-reborn": "^3.6.3",
"react-native-ios-context-menu": "^1.15.3",
"react-native-linear-gradient": "^2.6.2",
- "react-native-pager-view": "6.1.4",
+ "react-native-pager-view": "6.2.2",
"react-native-picker-select": "^8.1.0",
"react-native-progress": "bluesky-social/react-native-progress",
"react-native-reanimated": "^3.6.0",
"react-native-root-siblings": "^4.1.1",
- "react-native-safe-area-context": "4.6.3",
- "react-native-screens": "~3.22.0",
- "react-native-splash-screen": "^3.3.0",
- "react-native-svg": "13.9.0",
+ "react-native-safe-area-context": "4.7.4",
+ "react-native-screens": "~3.27.0",
+ "react-native-svg": "14.0.0",
"react-native-url-polyfill": "^1.3.0",
"react-native-uuid": "^2.0.1",
"react-native-version-number": "^0.3.6",
"react-native-web": "~0.19.6",
"react-native-web-linear-gradient": "^1.1.2",
"react-native-web-webview": "^1.0.2",
- "react-native-webview": "^13.6.2",
- "react-native-youtube-iframe": "^2.3.0",
+ "react-native-webview": "^13.6.3",
"react-responsive": "^9.0.2",
"rn-fetch-blob": "^0.12.0",
"sentry-expo": "~7.0.1",
@@ -178,10 +181,13 @@
"@babel/preset-env": "^7.20.0",
"@babel/runtime": "^7.20.0",
"@did-plc/server": "^0.0.1",
+ "@expo/config-plugins": "7.8.0",
+ "@expo/prebuild-config": "6.7.0",
"@lingui/cli": "^4.5.0",
"@lingui/macro": "^4.5.0",
"@pmmmwh/react-refresh-webpack-plugin": "^0.5.11",
"@react-native-community/eslint-config": "^3.0.0",
+ "@react-native/typescript-config": "^0.74.0",
"@testing-library/jest-native": "^5.4.1",
"@testing-library/react-native": "^11.5.2",
"@tsconfig/react-native": "^2.0.3",
@@ -203,12 +209,13 @@
"@types/react-test-renderer": "^17.0.1",
"@typescript-eslint/eslint-plugin": "^5.48.2",
"@typescript-eslint/parser": "^5.48.2",
- "babel-jest": "^29.4.2",
+ "babel-jest": "^29.7.0",
"babel-loader": "^9.1.2",
"babel-plugin-macros": "^3.1.0",
"babel-plugin-module-resolver": "^5.0.0",
"babel-plugin-react-native-web": "^0.18.12",
- "detox": "^20.13.0",
+ "babel-preset-expo": "^10.0.0",
+ "detox": "^20.14.8",
"eslint": "^8.19.0",
"eslint-plugin-detox": "^1.0.0",
"eslint-plugin-ft-flow": "^2.0.3",
@@ -218,8 +225,8 @@
"html-webpack-plugin": "^5.5.0",
"husky": "^8.0.3",
"is-ci": "^3.0.1",
- "jest": "^29.4.3",
- "jest-expo": "^49.0.0",
+ "jest": "^29.7.0",
+ "jest-expo": "^50.0.1",
"jest-junit": "^15.0.0",
"lint-staged": "^13.2.3",
"metro-react-native-babel-preset": "^0.73.7",
@@ -229,7 +236,7 @@
"react-scripts": "^5.0.1",
"react-test-renderer": "18.2.0",
"ts-node": "^10.9.1",
- "typescript": "^5.1.3",
+ "typescript": "^5.3.3",
"url-loader": "^4.1.1",
"webpack": "^5.75.0",
"webpack-cli": "^5.0.1",
diff --git a/patches/@sentry+react-native+5.10.0.patch b/patches/@sentry+react-native+5.5.0.patch
similarity index 100%
rename from patches/@sentry+react-native+5.10.0.patch
rename to patches/@sentry+react-native+5.5.0.patch
diff --git a/patches/babel-preset-expo+9.5.2.patch b/patches/babel-preset-expo+9.5.2.patch
deleted file mode 100644
index 5e328c2243..0000000000
--- a/patches/babel-preset-expo+9.5.2.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff --git a/node_modules/babel-preset-expo/index.js b/node_modules/babel-preset-expo/index.js
-index 2099ee3..2b9e092 100644
---- a/node_modules/babel-preset-expo/index.js
-+++ b/node_modules/babel-preset-expo/index.js
-@@ -105,7 +105,8 @@ module.exports = function (api, options = {}) {
- ],
- ],
- plugins: [
-- getObjectRestSpreadPlugin(),
-+ // - dan: This will be disabled anyway when we upgrade Expo, but let's do it now.
-+ // getObjectRestSpreadPlugin(),
- ...extraPlugins,
- getAliasPlugin(),
- [require.resolve('@babel/plugin-proposal-decorators'), { legacy: true }],
diff --git a/patches/expo-image-picker+14.7.1.patch b/patches/expo-image-picker+14.7.1.patch
new file mode 100644
index 0000000000..2d37a182a8
--- /dev/null
+++ b/patches/expo-image-picker+14.7.1.patch
@@ -0,0 +1,64 @@
+diff --git a/node_modules/expo-image-picker/android/src/main/java/expo/modules/imagepicker/contracts/ImageLibraryContract.kt b/node_modules/expo-image-picker/android/src/main/java/expo/modules/imagepicker/contracts/ImageLibraryContract.kt
+index ff15c91..41aaf12 100644
+--- a/node_modules/expo-image-picker/android/src/main/java/expo/modules/imagepicker/contracts/ImageLibraryContract.kt
++++ b/node_modules/expo-image-picker/android/src/main/java/expo/modules/imagepicker/contracts/ImageLibraryContract.kt
+@@ -26,51 +26,26 @@ import java.io.Serializable
+ * @see [androidx.activity.result.contract.ActivityResultContracts.GetMultipleContents]
+ */
+ internal class ImageLibraryContract(
+- private val appContextProvider: AppContextProvider
++ private val appContextProvider: AppContextProvider,
+ ) : AppContextActivityResultContract {
+ private val contentResolver: ContentResolver
+ get() = appContextProvider.appContext.reactContext?.contentResolver
+ ?: throw Exceptions.ReactContextLost()
+
+ override fun createIntent(context: Context, input: ImageLibraryContractOptions): Intent {
+- val request = PickVisualMediaRequest.Builder()
+- .setMediaType(
+- when (input.options.mediaTypes) {
+- MediaTypes.VIDEOS -> {
+- PickVisualMedia.VideoOnly
+- }
+-
+- MediaTypes.IMAGES -> {
+- PickVisualMedia.ImageOnly
+- }
+-
+- else -> {
+- PickVisualMedia.ImageAndVideo
+- }
+- }
+- )
+- .build()
++ val intent = Intent(Intent.ACTION_GET_CONTENT)
++ .addCategory(Intent.CATEGORY_OPENABLE)
++ .setType("image/*")
+
+ if (input.options.allowsMultipleSelection) {
+- val selectionLimit = input.options.selectionLimit
+-
+- if (selectionLimit == 1) {
+- // If multiple selection is allowed but the limit is 1, we should ignore
+- // the multiple selection flag and just treat it as a single selection.
+- return PickVisualMedia().createIntent(context, request)
++ if(input.options.selectionLimit == 1) {
++ return intent
+ }
+
+- if (selectionLimit > 1) {
+- return PickMultipleVisualMedia(selectionLimit).createIntent(context, request)
+- }
+-
+- // If the selection limit is 0, it is the same as unlimited selection.
+- if (selectionLimit == UNLIMITED_SELECTION) {
+- return PickMultipleVisualMedia().createIntent(context, request)
+- }
++ intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true)
+ }
+
+- return PickVisualMedia().createIntent(context, request)
++ return intent
+ }
+
+ override fun parseResult(input: ImageLibraryContractOptions, resultCode: Int, intent: Intent?) =
diff --git a/patches/expo-image-picker+14.7.1.patch.md b/patches/expo-image-picker+14.7.1.patch.md
new file mode 100644
index 0000000000..47c0daed5d
--- /dev/null
+++ b/patches/expo-image-picker+14.7.1.patch.md
@@ -0,0 +1,3 @@
+added by https://github.com/bluesky-social/social-app/pull/2384#pullrequestreview-1800985521
+
+hackfixes the image picker on android so that the user can select from their typical image sources
\ No newline at end of file
diff --git a/patches/metro+0.76.8.patch b/patches/metro+0.80.1.patch
similarity index 100%
rename from patches/metro+0.76.8.patch
rename to patches/metro+0.80.1.patch
diff --git a/patches/metro-runtime+0.76.8.patch b/patches/metro-runtime+0.80.1.patch
similarity index 100%
rename from patches/metro-runtime+0.76.8.patch
rename to patches/metro-runtime+0.80.1.patch
diff --git a/patches/metro-transform-worker+0.76.8.patch b/patches/metro-transform-worker+0.80.1.patch
similarity index 90%
rename from patches/metro-transform-worker+0.76.8.patch
rename to patches/metro-transform-worker+0.80.1.patch
index d835eee06b..65f44e5783 100644
--- a/patches/metro-transform-worker+0.76.8.patch
+++ b/patches/metro-transform-worker+0.80.1.patch
@@ -1,8 +1,8 @@
diff --git a/node_modules/metro-transform-worker/src/index.js b/node_modules/metro-transform-worker/src/index.js
-index 27d4cb3..fd71f47 100644
+index cae11e7..42f251b 100644
--- a/node_modules/metro-transform-worker/src/index.js
+++ b/node_modules/metro-transform-worker/src/index.js
-@@ -190,6 +190,10 @@ async function transformJS(file, { config, options, projectRoot }) {
+@@ -189,6 +189,10 @@ async function transformJS(file, { config, options, projectRoot }) {
let dependencyMapName = "";
let dependencies;
let wrappedAst;
@@ -13,7 +13,7 @@ index 27d4cb3..fd71f47 100644
// If the module to transform is a script (meaning that is not part of the
// dependency graph and it code will just be prepended to the bundle modules),
-@@ -229,19 +233,20 @@ async function transformJS(file, { config, options, projectRoot }) {
+@@ -228,19 +232,20 @@ async function transformJS(file, { config, options, projectRoot }) {
if (config.unstable_disableModuleWrapping === true) {
wrappedAst = ast;
} else {
diff --git a/patches/react-native+0.72.5.patch b/patches/react-native+0.73.1.patch
similarity index 81%
rename from patches/react-native+0.72.5.patch
rename to patches/react-native+0.73.1.patch
index d640f6c9ee..66f7f76476 100644
--- a/patches/react-native+0.72.5.patch
+++ b/patches/react-native+0.73.1.patch
@@ -1,7 +1,7 @@
-diff --git a/node_modules/react-native/Libraries/Text/TextInput/RCTBackedTextInputDelegateAdapter.m b/node_modules/react-native/Libraries/Text/TextInput/RCTBackedTextInputDelegateAdapter.m
+diff --git a/node_modules/react-native/Libraries/Text/TextInput/RCTBackedTextInputDelegateAdapter.mm b/node_modules/react-native/Libraries/Text/TextInput/RCTBackedTextInputDelegateAdapter.mm
index 9dca6a5..090bda5 100644
---- a/node_modules/react-native/Libraries/Text/TextInput/RCTBackedTextInputDelegateAdapter.m
-+++ b/node_modules/react-native/Libraries/Text/TextInput/RCTBackedTextInputDelegateAdapter.m
+--- a/node_modules/react-native/Libraries/Text/TextInput/RCTBackedTextInputDelegateAdapter.mm
++++ b/node_modules/react-native/Libraries/Text/TextInput/RCTBackedTextInputDelegateAdapter.mm
@@ -266,11 +266,10 @@ static void *TextFieldSelectionObservingContext = &TextFieldSelectionObservingCo
- (void)textViewDidChangeSelection:(__unused UITextView *)textView
diff --git a/patches/react-native-pager-view+6.1.4.patch b/patches/react-native-pager-view+6.1.4.patch
deleted file mode 100644
index d6b4178ab3..0000000000
--- a/patches/react-native-pager-view+6.1.4.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-diff --git a/node_modules/react-native-pager-view/ios/ReactNativePageView.m b/node_modules/react-native-pager-view/ios/ReactNativePageView.m
-index ab0fc7f..1ace752 100644
---- a/node_modules/react-native-pager-view/ios/ReactNativePageView.m
-+++ b/node_modules/react-native-pager-view/ios/ReactNativePageView.m
-@@ -1,6 +1,6 @@
-
- #import "ReactNativePageView.h"
--#import "React/RCTLog.h"
-+#import
- #import
-
- #import "UIViewController+CreateExtension.h"
-@@ -9,7 +9,7 @@
- #import "RCTOnPageSelected.h"
- #import
-
--@interface ReactNativePageView ()
-+@interface ReactNativePageView ()
-
- @property(nonatomic, strong) UIPageViewController *reactPageViewController;
- @property(nonatomic, strong) RCTEventDispatcher *eventDispatcher;
-@@ -80,6 +80,10 @@ - (void)didMoveToWindow {
- [self setupInitialController];
- }
-
-+ UIPanGestureRecognizer* panGestureRecognizer = [UIPanGestureRecognizer new];
-+ panGestureRecognizer.delegate = self;
-+ [self addGestureRecognizer: panGestureRecognizer];
-+
- if (self.reactViewController.navigationController != nil && self.reactViewController.navigationController.interactivePopGestureRecognizer != nil) {
- [self.scrollView.panGestureRecognizer requireGestureRecognizerToFail:self.reactViewController.navigationController.interactivePopGestureRecognizer];
- }
-@@ -463,4 +467,21 @@ - (NSString *)determineScrollDirection:(UIScrollView *)scrollView {
- - (BOOL)isLtrLayout {
- return [_layoutDirection isEqualToString:@"ltr"];
- }
-+
-+- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
-+ if (!_overdrag && otherGestureRecognizer == self.scrollView.panGestureRecognizer) {
-+ UIPanGestureRecognizer* p = (UIPanGestureRecognizer*) gestureRecognizer;
-+ CGPoint velocity = [p velocityInView:self];
-+ if (self.currentIndex == 0 && velocity.x > 0) {
-+ self.scrollView.panGestureRecognizer.enabled = false;
-+ return NO;
-+ } else {
-+ self.scrollView.panGestureRecognizer.enabled = self.scrollEnabled;
-+ }
-+ } else {
-+ self.scrollView.panGestureRecognizer.enabled = self.scrollEnabled;
-+ }
-+
-+ return YES;
-+}
- @end
diff --git a/src/App.native.tsx b/src/App.native.tsx
index 6402b4a898..9de901767a 100644
--- a/src/App.native.tsx
+++ b/src/App.native.tsx
@@ -39,6 +39,8 @@ import {
import {Provider as UnreadNotifsProvider} from 'state/queries/notifications/unread'
import * as persisted from '#/state/persisted'
import {Splash} from '#/Splash'
+import {msg} from '@lingui/macro'
+import {useLingui} from '@lingui/react'
SplashScreen.preventAutoHideAsync()
@@ -46,17 +48,18 @@ function InnerApp() {
const colorMode = useColorMode()
const {isInitialLoad, currentAccount} = useSession()
const {resumeSession} = useSessionApi()
+ const {_} = useLingui()
// init
useEffect(() => {
notifications.init(queryClient)
listenSessionDropped(() => {
- Toast.show('Sorry! Your session expired. Please log in again.')
+ Toast.show(_(msg`Sorry! Your session expired. Please log in again.`))
})
const account = persisted.get('session').currentAccount
resumeSession(account)
- }, [resumeSession])
+ }, [resumeSession, _])
return (
diff --git a/src/App.web.tsx b/src/App.web.tsx
index 6c67dc28ba..1bdb3c208c 100644
--- a/src/App.web.tsx
+++ b/src/App.web.tsx
@@ -7,6 +7,7 @@ import {RootSiblingParent} from 'react-native-root-siblings'
import 'view/icons'
+import {ThemeProvider as Alf} from '#/alf'
import {init as initPersistedState} from '#/state/persisted'
import {useColorMode} from 'state/shell'
import {Shell} from 'view/shell/index'
@@ -28,11 +29,13 @@ import {
} from 'state/session'
import {Provider as UnreadNotifsProvider} from 'state/queries/notifications/unread'
import * as persisted from '#/state/persisted'
+import {useColorModeTheme} from '#/alf/util/useColorModeTheme'
function InnerApp() {
const {isInitialLoad, currentAccount} = useSession()
const {resumeSession} = useSessionApi()
const colorMode = useColorMode()
+ const theme = useColorModeTheme(colorMode)
// init
useEffect(() => {
@@ -44,23 +47,25 @@ function InnerApp() {
if (isInitialLoad) return null
return (
-
-
-
-
- {/* All components should be within this provider */}
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+ {/* All components should be within this provider */}
+
+
+
+
+
+
+
+
+
+
+
)
}
diff --git a/src/Navigation.tsx b/src/Navigation.tsx
index b889bf9712..aca50931d8 100644
--- a/src/Navigation.tsx
+++ b/src/Navigation.tsx
@@ -26,7 +26,7 @@ import {BottomBar} from './view/shell/bottom-bar/BottomBar'
import {buildStateObject} from 'lib/routes/helpers'
import {State, RouteParams} from 'lib/routes/types'
import {colors} from 'lib/styles'
-import {isNative} from 'platform/detection'
+import {isAndroid, isNative} from 'platform/detection'
import {useColorSchemeStyle} from 'lib/hooks/useColorSchemeStyle'
import {router} from './routes'
import {usePalette} from 'lib/hooks/usePalette'
@@ -62,7 +62,7 @@ import {ProfileListScreen} from './view/screens/ProfileList'
import {PostThreadScreen} from './view/screens/PostThread'
import {PostLikedByScreen} from './view/screens/PostLikedBy'
import {PostRepostedByScreen} from './view/screens/PostRepostedBy'
-import {DebugScreen} from './view/screens/Debug'
+import {DebugScreen} from './view/screens/DebugNew'
import {LogScreen} from './view/screens/Log'
import {SupportScreen} from './view/screens/Support'
import {PrivacyPolicyScreen} from './view/screens/PrivacyPolicy'
@@ -75,7 +75,10 @@ import {ModerationBlockedAccounts} from 'view/screens/ModerationBlockedAccounts'
import {SavedFeeds} from 'view/screens/SavedFeeds'
import {PreferencesHomeFeed} from 'view/screens/PreferencesHomeFeed'
import {PreferencesThreads} from 'view/screens/PreferencesThreads'
+import {PreferencesExternalEmbeds} from '#/view/screens/PreferencesExternalEmbeds'
import {createNativeStackNavigatorWithAuth} from './view/shell/createNativeStackNavigatorWithAuth'
+import {msg} from '@lingui/macro'
+import {i18n, MessageDescriptor} from '@lingui/core'
const navigationRef = createNavigationContainerRef()
@@ -93,55 +96,56 @@ const Tab = createBottomTabNavigator()
* These "common screens" are reused across stacks.
*/
function commonScreens(Stack: typeof HomeTab, unreadCountLabel?: string) {
- const title = (page: string) => bskyTitle(page, unreadCountLabel)
+ const title = (page: MessageDescriptor) =>
+ bskyTitle(i18n._(page), unreadCountLabel)
return (
<>
NotFoundScreen}
- options={{title: title('Not Found')}}
+ options={{title: title(msg`Not Found`)}}
/>
ModerationScreen}
- options={{title: title('Moderation'), requireAuth: true}}
+ options={{title: title(msg`Moderation`), requireAuth: true}}
/>
ModerationModlistsScreen}
- options={{title: title('Moderation Lists'), requireAuth: true}}
+ options={{title: title(msg`Moderation Lists`), requireAuth: true}}
/>
ModerationMutedAccounts}
- options={{title: title('Muted Accounts'), requireAuth: true}}
+ options={{title: title(msg`Muted Accounts`), requireAuth: true}}
/>
ModerationBlockedAccounts}
- options={{title: title('Blocked Accounts'), requireAuth: true}}
+ options={{title: title(msg`Blocked Accounts`), requireAuth: true}}
/>
SettingsScreen}
- options={{title: title('Settings'), requireAuth: true}}
+ options={{title: title(msg`Settings`), requireAuth: true}}
/>
LanguageSettingsScreen}
- options={{title: title('Language Settings'), requireAuth: true}}
+ options={{title: title(msg`Language Settings`), requireAuth: true}}
/>
ProfileScreen}
options={({route}) => ({
- title: title(`@${route.params.name}`),
+ title: title(msg`@${route.params.name}`),
animation: 'none',
})}
/>
@@ -149,100 +153,114 @@ function commonScreens(Stack: typeof HomeTab, unreadCountLabel?: string) {
name="ProfileFollowers"
getComponent={() => ProfileFollowersScreen}
options={({route}) => ({
- title: title(`People following @${route.params.name}`),
+ title: title(msg`People following @${route.params.name}`),
})}
/>
ProfileFollowsScreen}
options={({route}) => ({
- title: title(`People followed by @${route.params.name}`),
+ title: title(msg`People followed by @${route.params.name}`),
})}
/>
ProfileListScreen}
- options={{title: title('List'), requireAuth: true}}
+ options={{title: title(msg`List`), requireAuth: true}}
/>
PostThreadScreen}
- options={({route}) => ({title: title(`Post by @${route.params.name}`)})}
+ options={({route}) => ({
+ title: title(msg`Post by @${route.params.name}`),
+ })}
/>
PostLikedByScreen}
- options={({route}) => ({title: title(`Post by @${route.params.name}`)})}
+ options={({route}) => ({
+ title: title(msg`Post by @${route.params.name}`),
+ })}
/>
PostRepostedByScreen}
- options={({route}) => ({title: title(`Post by @${route.params.name}`)})}
+ options={({route}) => ({
+ title: title(msg`Post by @${route.params.name}`),
+ })}
/>
ProfileFeedScreen}
- options={{title: title('Feed'), requireAuth: true}}
+ options={{title: title(msg`Feed`), requireAuth: true}}
/>
ProfileFeedLikedByScreen}
- options={{title: title('Liked by')}}
+ options={{title: title(msg`Liked by`)}}
/>
DebugScreen}
- options={{title: title('Debug'), requireAuth: true}}
+ options={{title: title(msg`Debug`), requireAuth: true}}
/>
LogScreen}
- options={{title: title('Log'), requireAuth: true}}
+ options={{title: title(msg`Log`), requireAuth: true}}
/>
SupportScreen}
- options={{title: title('Support')}}
+ options={{title: title(msg`Support`)}}
/>
PrivacyPolicyScreen}
- options={{title: title('Privacy Policy')}}
+ options={{title: title(msg`Privacy Policy`)}}
/>
TermsOfServiceScreen}
- options={{title: title('Terms of Service')}}
+ options={{title: title(msg`Terms of Service`)}}
/>
CommunityGuidelinesScreen}
- options={{title: title('Community Guidelines')}}
+ options={{title: title(msg`Community Guidelines`)}}
/>
CopyrightPolicyScreen}
- options={{title: title('Copyright Policy')}}
+ options={{title: title(msg`Copyright Policy`)}}
/>
AppPasswords}
- options={{title: title('App Passwords'), requireAuth: true}}
+ options={{title: title(msg`App Passwords`), requireAuth: true}}
/>
SavedFeeds}
- options={{title: title('Edit My Feeds'), requireAuth: true}}
+ options={{title: title(msg`Edit My Feeds`), requireAuth: true}}
/>
PreferencesHomeFeed}
- options={{title: title('Home Feed Preferences'), requireAuth: true}}
+ options={{title: title(msg`Home Feed Preferences`), requireAuth: true}}
/>
PreferencesThreads}
- options={{title: title('Threads Preferences'), requireAuth: true}}
+ options={{title: title(msg`Threads Preferences`), requireAuth: true}}
+ />
+ PreferencesExternalEmbeds}
+ options={{
+ title: title(msg`External Media Preferences`),
+ requireAuth: true,
+ }}
/>
>
)
@@ -287,6 +305,7 @@ function HomeTabNavigator() {
return (
{
const pal = usePalette('default')
const numUnread = useUnreadNotifications()
const screenListeners = useWebScrollRestoration()
- const title = (page: string) => bskyTitle(page, numUnread)
+ const title = (page: MessageDescriptor) => bskyTitle(i18n._(page), numUnread)
return (
{
HomeScreen}
- options={{title: title('Home'), requireAuth: true}}
+ options={{title: title(msg`Home`), requireAuth: true}}
/>
SearchScreen}
- options={{title: title('Search')}}
+ options={{title: title(msg`Search`)}}
/>
FeedsScreen}
- options={{title: title('Feeds'), requireAuth: true}}
+ options={{title: title(msg`Feeds`), requireAuth: true}}
/>
NotificationsScreen}
- options={{title: title('Notifications'), requireAuth: true}}
+ options={{title: title(msg`Notifications`), requireAuth: true}}
/>
{commonScreens(Flat as typeof HomeTab, numUnread)}
diff --git a/src/Splash.tsx b/src/Splash.tsx
index 16375539f9..bb2c7a1757 100644
--- a/src/Splash.tsx
+++ b/src/Splash.tsx
@@ -1,5 +1,11 @@
import React, {useCallback, useEffect} from 'react'
-import {View, StyleSheet, Image as RNImage} from 'react-native'
+import {
+ View,
+ StyleSheet,
+ Image as RNImage,
+ AccessibilityInfo,
+ useColorScheme,
+} from 'react-native'
import * as SplashScreen from 'expo-splash-screen'
import {Image} from 'expo-image'
import Animated, {
@@ -14,9 +20,18 @@ import MaskedView from '@react-native-masked-view/masked-view'
import {useSafeAreaInsets} from 'react-native-safe-area-context'
import Svg, {Path, SvgProps} from 'react-native-svg'
+import {isAndroid} from '#/platform/detection'
+import {useColorMode} from 'state/shell'
+import {colors} from '#/lib/styles'
+
// @ts-ignore
import splashImagePointer from '../assets/splash.png'
+// @ts-ignore
+import darkSplashImagePointer from '../assets/splash-dark.png'
const splashImageUri = RNImage.resolveAssetSource(splashImagePointer).uri
+const darkSplashImageUri = RNImage.resolveAssetSource(
+ darkSplashImagePointer,
+).uri
export const Logo = React.forwardRef(function LogoImpl(props: SvgProps, ref) {
const width = 1000
@@ -27,9 +42,9 @@ export const Logo = React.forwardRef(function LogoImpl(props: SvgProps, ref) {
// @ts-ignore it's fiiiiine
ref={ref}
viewBox="0 0 64 66"
- style={{width, height}}>
+ style={[{width, height}, props.style]}>
@@ -40,8 +55,6 @@ type Props = {
isReady: boolean
}
-SplashScreen.preventAutoHideAsync().catch(() => {})
-
const AnimatedLogo = Animated.createAnimatedComponent(Logo)
export function Splash(props: React.PropsWithChildren) {
@@ -52,9 +65,22 @@ export function Splash(props: React.PropsWithChildren) {
const outroAppOpacity = useSharedValue(0)
const [isAnimationComplete, setIsAnimationComplete] = React.useState(false)
const [isImageLoaded, setIsImageLoaded] = React.useState(false)
- const isReady = props.isReady && isImageLoaded
+ const [isLayoutReady, setIsLayoutReady] = React.useState(false)
+ const [reduceMotion, setReduceMotion] = React.useState(
+ false,
+ )
+ const isReady =
+ props.isReady &&
+ isImageLoaded &&
+ isLayoutReady &&
+ reduceMotion !== undefined
- const logoAnimations = useAnimatedStyle(() => {
+ const colorMode = useColorMode()
+ const colorScheme = useColorScheme()
+ const themeName = colorMode === 'system' ? colorScheme : colorMode
+ const isDarkMode = themeName === 'dark'
+
+ const logoAnimation = useAnimatedStyle(() => {
return {
transform: [
{
@@ -64,7 +90,7 @@ export function Splash(props: React.PropsWithChildren) {
scale: interpolate(
outroLogo.value,
[0, 0.08, 1],
- [1, 0.8, 400],
+ [1, 0.8, 500],
'clamp',
),
},
@@ -72,6 +98,27 @@ export function Splash(props: React.PropsWithChildren) {
opacity: interpolate(intro.value, [0, 1], [0, 1], 'clamp'),
}
})
+ const reducedLogoAnimation = useAnimatedStyle(() => {
+ return {
+ transform: [
+ {
+ scale: interpolate(intro.value, [0, 1], [0.8, 1], 'clamp'),
+ },
+ ],
+ opacity: interpolate(intro.value, [0, 1], [0, 1], 'clamp'),
+ }
+ })
+
+ const logoWrapperAnimation = useAnimatedStyle(() => {
+ return {
+ opacity: interpolate(
+ outroAppOpacity.value,
+ [0, 0.1, 0.2, 1],
+ [1, 1, 0, 0],
+ 'clamp',
+ ),
+ }
+ })
const appAnimation = useAnimatedStyle(() => {
return {
@@ -82,7 +129,7 @@ export function Splash(props: React.PropsWithChildren) {
],
opacity: interpolate(
outroAppOpacity.value,
- [0, 0.08, 0.15, 1],
+ [0, 0.1, 0.2, 1],
[0, 0, 1, 1],
'clamp',
),
@@ -90,82 +137,121 @@ export function Splash(props: React.PropsWithChildren) {
})
const onFinish = useCallback(() => setIsAnimationComplete(true), [])
+ const onLayout = useCallback(() => setIsLayoutReady(true), [])
+ const onLoadEnd = useCallback(() => setIsImageLoaded(true), [])
useEffect(() => {
if (isReady) {
- // hide on mount
- SplashScreen.hideAsync().catch(() => {})
-
- intro.value = withTiming(
- 1,
- {duration: 400, easing: Easing.out(Easing.cubic)},
- async () => {
- // set these values to check animation at specific point
- // outroLogo.value = 0.1
- // outroApp.value = 0.1
- outroLogo.value = withTiming(
+ SplashScreen.hideAsync()
+ .then(() => {
+ intro.value = withTiming(
1,
- {duration: 1200, easing: Easing.in(Easing.cubic)},
- () => {
- runOnJS(onFinish)()
+ {duration: 400, easing: Easing.out(Easing.cubic)},
+ async () => {
+ // set these values to check animation at specific point
+ // outroLogo.value = 0.1
+ // outroApp.value = 0.1
+ outroLogo.value = withTiming(
+ 1,
+ {duration: 1200, easing: Easing.in(Easing.cubic)},
+ () => {
+ runOnJS(onFinish)()
+ },
+ )
+ outroApp.value = withTiming(1, {
+ duration: 1200,
+ easing: Easing.inOut(Easing.cubic),
+ })
+ outroAppOpacity.value = withTiming(1, {
+ duration: 1200,
+ easing: Easing.in(Easing.cubic),
+ })
},
)
- outroApp.value = withTiming(1, {
- duration: 1200,
- easing: Easing.inOut(Easing.cubic),
- })
- outroAppOpacity.value = withTiming(1, {
- duration: 1200,
- easing: Easing.in(Easing.cubic),
- })
- },
- )
+ })
+ .catch(() => {})
}
}, [onFinish, intro, outroLogo, outroApp, outroAppOpacity, isReady])
- const onLoadEnd = useCallback(() => {
- setIsImageLoaded(true)
- }, [setIsImageLoaded])
+ useEffect(() => {
+ AccessibilityInfo.isReduceMotionEnabled().then(setReduceMotion)
+ }, [])
+
+ const logoAnimations =
+ reduceMotion === true ? reducedLogoAnimation : logoAnimation
return (
-
+
{!isAnimationComplete && (
)}
-
-
-
- }>
- {!isAnimationComplete && (
-
- )}
+ {isReady &&
+ (isAndroid || reduceMotion === true ? (
+ // Use a simple fade on older versions of android (work around a bug)
+ <>
+
+ {props.children}
+
-
- {props.children}
-
-
+ {!isAnimationComplete && (
+
+
+
+ )}
+ >
+ ) : (
+
+
+
+ }>
+ {!isAnimationComplete && (
+
+ )}
+
+ {props.children}
+
+
+ ))}
)
}
diff --git a/src/alf/README.md b/src/alf/README.md
new file mode 100644
index 0000000000..aa31bcf988
--- /dev/null
+++ b/src/alf/README.md
@@ -0,0 +1,56 @@
+# Application Layout Framework (ALF)
+
+A set of UI primitives and components.
+
+## Usage
+
+Naming conventions follow Tailwind — delimited with a `_` instead of `-` to
+enable object access — with a couple exceptions:
+
+**Spacing**
+
+Uses "t-shirt" sizes `xxs`, `xs`, `sm`, `md`, `lg`, `xl` and `xxl` instead of
+increments of 4px. We only use a few common spacings, and otherwise typically
+rely on many one-off values.
+
+**Text Size**
+
+Uses "t-shirt" sizes `xxs`, `xs`, `sm`, `md`, `lg`, `xl` and `xxl` to match our
+type scale.
+
+**Line Height**
+
+The text size atoms also apply a line-height with the same value as the size,
+for a 1:1 ratio. `tight` and `normal` are retained for use in the few places
+where we need leading.
+
+### Atoms
+
+An (mostly-complete) set of style definitions that match Tailwind CSS selectors.
+These are static and reused throughout the app.
+
+```tsx
+import { atoms } from '#/alf'
+
+
+```
+
+### Theme
+
+Any values that rely on the theme, namely colors.
+
+```tsx
+const t = useTheme()
+
+
+```
+
+### Breakpoints
+
+```tsx
+const b = useBreakpoints()
+
+if (b.gtMobile) {
+ // render tablet or desktop UI
+}
+```
diff --git a/src/alf/atoms.ts b/src/alf/atoms.ts
new file mode 100644
index 0000000000..c142f5f716
--- /dev/null
+++ b/src/alf/atoms.ts
@@ -0,0 +1,514 @@
+import * as tokens from '#/alf/tokens'
+
+export const atoms = {
+ /*
+ * Positioning
+ */
+ absolute: {
+ position: 'absolute',
+ },
+ relative: {
+ position: 'relative',
+ },
+ inset_0: {
+ top: 0,
+ left: 0,
+ right: 0,
+ bottom: 0,
+ },
+ z_10: {
+ zIndex: 10,
+ },
+ z_20: {
+ zIndex: 20,
+ },
+ z_30: {
+ zIndex: 30,
+ },
+ z_40: {
+ zIndex: 40,
+ },
+ z_50: {
+ zIndex: 50,
+ },
+
+ /*
+ * Width
+ */
+ w_full: {
+ width: '100%',
+ },
+ h_full: {
+ height: '100%',
+ },
+
+ /*
+ * Border radius
+ */
+ rounded_sm: {
+ borderRadius: tokens.borderRadius.sm,
+ },
+ rounded_md: {
+ borderRadius: tokens.borderRadius.md,
+ },
+ rounded_full: {
+ borderRadius: tokens.borderRadius.full,
+ },
+
+ /*
+ * Flex
+ */
+ gap_xxs: {
+ gap: tokens.space.xxs,
+ },
+ gap_xs: {
+ gap: tokens.space.xs,
+ },
+ gap_sm: {
+ gap: tokens.space.sm,
+ },
+ gap_md: {
+ gap: tokens.space.md,
+ },
+ gap_lg: {
+ gap: tokens.space.lg,
+ },
+ gap_xl: {
+ gap: tokens.space.xl,
+ },
+ gap_xxl: {
+ gap: tokens.space.xxl,
+ },
+ flex: {
+ display: 'flex',
+ },
+ flex_row: {
+ flexDirection: 'row',
+ },
+ flex_wrap: {
+ flexWrap: 'wrap',
+ },
+ flex_1: {
+ flex: 1,
+ },
+ flex_grow: {
+ flexGrow: 1,
+ },
+ flex_shrink: {
+ flexShrink: 1,
+ },
+ justify_center: {
+ justifyContent: 'center',
+ },
+ justify_between: {
+ justifyContent: 'space-between',
+ },
+ justify_end: {
+ justifyContent: 'flex-end',
+ },
+ align_center: {
+ alignItems: 'center',
+ },
+ align_start: {
+ alignItems: 'flex-start',
+ },
+ align_end: {
+ alignItems: 'flex-end',
+ },
+
+ /*
+ * Text
+ */
+ text_center: {
+ textAlign: 'center',
+ },
+ text_right: {
+ textAlign: 'right',
+ },
+ text_xxs: {
+ fontSize: tokens.fontSize.xxs,
+ lineHeight: tokens.fontSize.xxs,
+ },
+ text_xs: {
+ fontSize: tokens.fontSize.xs,
+ lineHeight: tokens.fontSize.xs,
+ },
+ text_sm: {
+ fontSize: tokens.fontSize.sm,
+ lineHeight: tokens.fontSize.sm,
+ },
+ text_md: {
+ fontSize: tokens.fontSize.md,
+ lineHeight: tokens.fontSize.md,
+ },
+ text_lg: {
+ fontSize: tokens.fontSize.lg,
+ lineHeight: tokens.fontSize.lg,
+ },
+ text_xl: {
+ fontSize: tokens.fontSize.xl,
+ lineHeight: tokens.fontSize.xl,
+ },
+ text_xxl: {
+ fontSize: tokens.fontSize.xxl,
+ lineHeight: tokens.fontSize.xxl,
+ },
+ leading_tight: {
+ lineHeight: 1.25,
+ },
+ leading_normal: {
+ lineHeight: 1.5,
+ },
+ font_normal: {
+ fontWeight: tokens.fontWeight.normal,
+ },
+ font_semibold: {
+ fontWeight: tokens.fontWeight.semibold,
+ },
+ font_bold: {
+ fontWeight: tokens.fontWeight.bold,
+ },
+
+ /*
+ * Border
+ */
+ border: {
+ borderWidth: 1,
+ },
+ border_t: {
+ borderTopWidth: 1,
+ },
+ border_b: {
+ borderBottomWidth: 1,
+ },
+
+ /*
+ * Padding
+ */
+ p_xxs: {
+ padding: tokens.space.xxs,
+ },
+ p_xs: {
+ padding: tokens.space.xs,
+ },
+ p_sm: {
+ padding: tokens.space.sm,
+ },
+ p_md: {
+ padding: tokens.space.md,
+ },
+ p_lg: {
+ padding: tokens.space.lg,
+ },
+ p_xl: {
+ padding: tokens.space.xl,
+ },
+ p_xxl: {
+ padding: tokens.space.xxl,
+ },
+ px_xxs: {
+ paddingLeft: tokens.space.xxs,
+ paddingRight: tokens.space.xxs,
+ },
+ px_xs: {
+ paddingLeft: tokens.space.xs,
+ paddingRight: tokens.space.xs,
+ },
+ px_sm: {
+ paddingLeft: tokens.space.sm,
+ paddingRight: tokens.space.sm,
+ },
+ px_md: {
+ paddingLeft: tokens.space.md,
+ paddingRight: tokens.space.md,
+ },
+ px_lg: {
+ paddingLeft: tokens.space.lg,
+ paddingRight: tokens.space.lg,
+ },
+ px_xl: {
+ paddingLeft: tokens.space.xl,
+ paddingRight: tokens.space.xl,
+ },
+ px_xxl: {
+ paddingLeft: tokens.space.xxl,
+ paddingRight: tokens.space.xxl,
+ },
+ py_xxs: {
+ paddingTop: tokens.space.xxs,
+ paddingBottom: tokens.space.xxs,
+ },
+ py_xs: {
+ paddingTop: tokens.space.xs,
+ paddingBottom: tokens.space.xs,
+ },
+ py_sm: {
+ paddingTop: tokens.space.sm,
+ paddingBottom: tokens.space.sm,
+ },
+ py_md: {
+ paddingTop: tokens.space.md,
+ paddingBottom: tokens.space.md,
+ },
+ py_lg: {
+ paddingTop: tokens.space.lg,
+ paddingBottom: tokens.space.lg,
+ },
+ py_xl: {
+ paddingTop: tokens.space.xl,
+ paddingBottom: tokens.space.xl,
+ },
+ py_xxl: {
+ paddingTop: tokens.space.xxl,
+ paddingBottom: tokens.space.xxl,
+ },
+ pt_xxs: {
+ paddingTop: tokens.space.xxs,
+ },
+ pt_xs: {
+ paddingTop: tokens.space.xs,
+ },
+ pt_sm: {
+ paddingTop: tokens.space.sm,
+ },
+ pt_md: {
+ paddingTop: tokens.space.md,
+ },
+ pt_lg: {
+ paddingTop: tokens.space.lg,
+ },
+ pt_xl: {
+ paddingTop: tokens.space.xl,
+ },
+ pt_xxl: {
+ paddingTop: tokens.space.xxl,
+ },
+ pb_xxs: {
+ paddingBottom: tokens.space.xxs,
+ },
+ pb_xs: {
+ paddingBottom: tokens.space.xs,
+ },
+ pb_sm: {
+ paddingBottom: tokens.space.sm,
+ },
+ pb_md: {
+ paddingBottom: tokens.space.md,
+ },
+ pb_lg: {
+ paddingBottom: tokens.space.lg,
+ },
+ pb_xl: {
+ paddingBottom: tokens.space.xl,
+ },
+ pb_xxl: {
+ paddingBottom: tokens.space.xxl,
+ },
+ pl_xxs: {
+ paddingLeft: tokens.space.xxs,
+ },
+ pl_xs: {
+ paddingLeft: tokens.space.xs,
+ },
+ pl_sm: {
+ paddingLeft: tokens.space.sm,
+ },
+ pl_md: {
+ paddingLeft: tokens.space.md,
+ },
+ pl_lg: {
+ paddingLeft: tokens.space.lg,
+ },
+ pl_xl: {
+ paddingLeft: tokens.space.xl,
+ },
+ pl_xxl: {
+ paddingLeft: tokens.space.xxl,
+ },
+ pr_xxs: {
+ paddingRight: tokens.space.xxs,
+ },
+ pr_xs: {
+ paddingRight: tokens.space.xs,
+ },
+ pr_sm: {
+ paddingRight: tokens.space.sm,
+ },
+ pr_md: {
+ paddingRight: tokens.space.md,
+ },
+ pr_lg: {
+ paddingRight: tokens.space.lg,
+ },
+ pr_xl: {
+ paddingRight: tokens.space.xl,
+ },
+ pr_xxl: {
+ paddingRight: tokens.space.xxl,
+ },
+
+ /*
+ * Margin
+ */
+ m_xxs: {
+ margin: tokens.space.xxs,
+ },
+ m_xs: {
+ margin: tokens.space.xs,
+ },
+ m_sm: {
+ margin: tokens.space.sm,
+ },
+ m_md: {
+ margin: tokens.space.md,
+ },
+ m_lg: {
+ margin: tokens.space.lg,
+ },
+ m_xl: {
+ margin: tokens.space.xl,
+ },
+ m_xxl: {
+ margin: tokens.space.xxl,
+ },
+ mx_xxs: {
+ marginLeft: tokens.space.xxs,
+ marginRight: tokens.space.xxs,
+ },
+ mx_xs: {
+ marginLeft: tokens.space.xs,
+ marginRight: tokens.space.xs,
+ },
+ mx_sm: {
+ marginLeft: tokens.space.sm,
+ marginRight: tokens.space.sm,
+ },
+ mx_md: {
+ marginLeft: tokens.space.md,
+ marginRight: tokens.space.md,
+ },
+ mx_lg: {
+ marginLeft: tokens.space.lg,
+ marginRight: tokens.space.lg,
+ },
+ mx_xl: {
+ marginLeft: tokens.space.xl,
+ marginRight: tokens.space.xl,
+ },
+ mx_xxl: {
+ marginLeft: tokens.space.xxl,
+ marginRight: tokens.space.xxl,
+ },
+ my_xxs: {
+ marginTop: tokens.space.xxs,
+ marginBottom: tokens.space.xxs,
+ },
+ my_xs: {
+ marginTop: tokens.space.xs,
+ marginBottom: tokens.space.xs,
+ },
+ my_sm: {
+ marginTop: tokens.space.sm,
+ marginBottom: tokens.space.sm,
+ },
+ my_md: {
+ marginTop: tokens.space.md,
+ marginBottom: tokens.space.md,
+ },
+ my_lg: {
+ marginTop: tokens.space.lg,
+ marginBottom: tokens.space.lg,
+ },
+ my_xl: {
+ marginTop: tokens.space.xl,
+ marginBottom: tokens.space.xl,
+ },
+ my_xxl: {
+ marginTop: tokens.space.xxl,
+ marginBottom: tokens.space.xxl,
+ },
+ mt_xxs: {
+ marginTop: tokens.space.xxs,
+ },
+ mt_xs: {
+ marginTop: tokens.space.xs,
+ },
+ mt_sm: {
+ marginTop: tokens.space.sm,
+ },
+ mt_md: {
+ marginTop: tokens.space.md,
+ },
+ mt_lg: {
+ marginTop: tokens.space.lg,
+ },
+ mt_xl: {
+ marginTop: tokens.space.xl,
+ },
+ mt_xxl: {
+ marginTop: tokens.space.xxl,
+ },
+ mb_xxs: {
+ marginBottom: tokens.space.xxs,
+ },
+ mb_xs: {
+ marginBottom: tokens.space.xs,
+ },
+ mb_sm: {
+ marginBottom: tokens.space.sm,
+ },
+ mb_md: {
+ marginBottom: tokens.space.md,
+ },
+ mb_lg: {
+ marginBottom: tokens.space.lg,
+ },
+ mb_xl: {
+ marginBottom: tokens.space.xl,
+ },
+ mb_xxl: {
+ marginBottom: tokens.space.xxl,
+ },
+ ml_xxs: {
+ marginLeft: tokens.space.xxs,
+ },
+ ml_xs: {
+ marginLeft: tokens.space.xs,
+ },
+ ml_sm: {
+ marginLeft: tokens.space.sm,
+ },
+ ml_md: {
+ marginLeft: tokens.space.md,
+ },
+ ml_lg: {
+ marginLeft: tokens.space.lg,
+ },
+ ml_xl: {
+ marginLeft: tokens.space.xl,
+ },
+ ml_xxl: {
+ marginLeft: tokens.space.xxl,
+ },
+ mr_xxs: {
+ marginRight: tokens.space.xxs,
+ },
+ mr_xs: {
+ marginRight: tokens.space.xs,
+ },
+ mr_sm: {
+ marginRight: tokens.space.sm,
+ },
+ mr_md: {
+ marginRight: tokens.space.md,
+ },
+ mr_lg: {
+ marginRight: tokens.space.lg,
+ },
+ mr_xl: {
+ marginRight: tokens.space.xl,
+ },
+ mr_xxl: {
+ marginRight: tokens.space.xxl,
+ },
+} as const
diff --git a/src/alf/index.tsx b/src/alf/index.tsx
new file mode 100644
index 0000000000..1daa0bfedc
--- /dev/null
+++ b/src/alf/index.tsx
@@ -0,0 +1,92 @@
+import React from 'react'
+import {Dimensions} from 'react-native'
+import * as themes from '#/alf/themes'
+
+export * as tokens from '#/alf/tokens'
+export {atoms} from '#/alf/atoms'
+export * from '#/alf/util/platform'
+
+type BreakpointName = keyof typeof breakpoints
+
+/*
+ * Breakpoints
+ */
+const breakpoints: {
+ [key: string]: number
+} = {
+ gtMobile: 800,
+ gtTablet: 1200,
+}
+function getActiveBreakpoints({width}: {width: number}) {
+ const active: (keyof typeof breakpoints)[] = Object.keys(breakpoints).filter(
+ breakpoint => width >= breakpoints[breakpoint],
+ )
+
+ return {
+ active: active[active.length - 1],
+ gtMobile: active.includes('gtMobile'),
+ gtTablet: active.includes('gtTablet'),
+ }
+}
+
+/*
+ * Context
+ */
+export const Context = React.createContext<{
+ themeName: themes.ThemeName
+ theme: themes.Theme
+ breakpoints: {
+ active: BreakpointName | undefined
+ gtMobile: boolean
+ gtTablet: boolean
+ }
+}>({
+ themeName: 'light',
+ theme: themes.light,
+ breakpoints: {
+ active: undefined,
+ gtMobile: false,
+ gtTablet: false,
+ },
+})
+
+export function ThemeProvider({
+ children,
+ theme: themeName,
+}: React.PropsWithChildren<{theme: themes.ThemeName}>) {
+ const theme = themes[themeName]
+ const [breakpoints, setBreakpoints] = React.useState(() =>
+ getActiveBreakpoints({width: Dimensions.get('window').width}),
+ )
+
+ React.useEffect(() => {
+ const listener = Dimensions.addEventListener('change', ({window}) => {
+ const bp = getActiveBreakpoints({width: window.width})
+ if (bp.active !== breakpoints.active) setBreakpoints(bp)
+ })
+
+ return listener.remove
+ }, [breakpoints, setBreakpoints])
+
+ return (
+ ({
+ themeName: themeName,
+ theme: theme,
+ breakpoints,
+ }),
+ [theme, themeName, breakpoints],
+ )}>
+ {children}
+
+ )
+}
+
+export function useTheme() {
+ return React.useContext(Context).theme
+}
+
+export function useBreakpoints() {
+ return React.useContext(Context).breakpoints
+}
diff --git a/src/alf/themes.ts b/src/alf/themes.ts
new file mode 100644
index 0000000000..aae5c58931
--- /dev/null
+++ b/src/alf/themes.ts
@@ -0,0 +1,108 @@
+import * as tokens from '#/alf/tokens'
+import type {Mutable} from '#/alf/types'
+
+export type ThemeName = 'light' | 'dark'
+export type ReadonlyTheme = typeof light
+export type Theme = Mutable
+
+export type Palette = {
+ primary: string
+ positive: string
+ negative: string
+}
+
+export const lightPalette: Palette = {
+ primary: tokens.color.blue_500,
+ positive: tokens.color.green_500,
+ negative: tokens.color.red_500,
+} as const
+
+export const darkPalette: Palette = {
+ primary: tokens.color.blue_500,
+ positive: tokens.color.green_400,
+ negative: tokens.color.red_400,
+} as const
+
+export const light = {
+ palette: lightPalette,
+ atoms: {
+ text: {
+ color: tokens.color.gray_1000,
+ },
+ text_contrast_700: {
+ color: tokens.color.gray_700,
+ },
+ text_contrast_500: {
+ color: tokens.color.gray_500,
+ },
+ text_inverted: {
+ color: tokens.color.white,
+ },
+ bg: {
+ backgroundColor: tokens.color.white,
+ },
+ bg_contrast_100: {
+ backgroundColor: tokens.color.gray_100,
+ },
+ bg_contrast_200: {
+ backgroundColor: tokens.color.gray_200,
+ },
+ bg_contrast_300: {
+ backgroundColor: tokens.color.gray_300,
+ },
+ bg_positive: {
+ backgroundColor: tokens.color.green_500,
+ },
+ bg_negative: {
+ backgroundColor: tokens.color.red_400,
+ },
+ border: {
+ borderColor: tokens.color.gray_200,
+ },
+ border_contrast_500: {
+ borderColor: tokens.color.gray_500,
+ },
+ },
+}
+
+export const dark: Theme = {
+ palette: darkPalette,
+ atoms: {
+ text: {
+ color: tokens.color.white,
+ },
+ text_contrast_700: {
+ color: tokens.color.gray_300,
+ },
+ text_contrast_500: {
+ color: tokens.color.gray_500,
+ },
+ text_inverted: {
+ color: tokens.color.gray_1000,
+ },
+ bg: {
+ backgroundColor: tokens.color.gray_1000,
+ },
+ bg_contrast_100: {
+ backgroundColor: tokens.color.gray_900,
+ },
+ bg_contrast_200: {
+ backgroundColor: tokens.color.gray_800,
+ },
+ bg_contrast_300: {
+ backgroundColor: tokens.color.gray_700,
+ },
+ bg_positive: {
+ backgroundColor: tokens.color.green_400,
+ },
+ bg_negative: {
+ backgroundColor: tokens.color.red_400,
+ },
+ border: {
+ borderColor: tokens.color.gray_800,
+ },
+ border_contrast_500: {
+ borderColor: tokens.color.gray_500,
+ },
+ },
+}
diff --git a/src/alf/tokens.ts b/src/alf/tokens.ts
new file mode 100644
index 0000000000..4034e0deb4
--- /dev/null
+++ b/src/alf/tokens.ts
@@ -0,0 +1,100 @@
+const BLUE_HUE = 211
+const GRAYSCALE_SATURATION = 22
+
+export const color = {
+ white: '#FFFFFF',
+
+ gray_0: `hsl(${BLUE_HUE}, ${GRAYSCALE_SATURATION}%, 100%)`,
+ gray_100: `hsl(${BLUE_HUE}, ${GRAYSCALE_SATURATION}%, 95%)`,
+ gray_200: `hsl(${BLUE_HUE}, ${GRAYSCALE_SATURATION}%, 85%)`,
+ gray_300: `hsl(${BLUE_HUE}, ${GRAYSCALE_SATURATION}%, 75%)`,
+ gray_400: `hsl(${BLUE_HUE}, ${GRAYSCALE_SATURATION}%, 65%)`,
+ gray_500: `hsl(${BLUE_HUE}, ${GRAYSCALE_SATURATION}%, 55%)`,
+ gray_600: `hsl(${BLUE_HUE}, ${GRAYSCALE_SATURATION}%, 45%)`,
+ gray_700: `hsl(${BLUE_HUE}, ${GRAYSCALE_SATURATION}%, 35%)`,
+ gray_800: `hsl(${BLUE_HUE}, ${GRAYSCALE_SATURATION}%, 25%)`,
+ gray_900: `hsl(${BLUE_HUE}, ${GRAYSCALE_SATURATION}%, 15%)`,
+ gray_1000: `hsl(${BLUE_HUE}, ${GRAYSCALE_SATURATION}%, 5%)`,
+
+ blue_0: `hsl(${BLUE_HUE}, 99%, 100%)`,
+ blue_100: `hsl(${BLUE_HUE}, 99%, 93%)`,
+ blue_200: `hsl(${BLUE_HUE}, 99%, 83%)`,
+ blue_300: `hsl(${BLUE_HUE}, 99%, 73%)`,
+ blue_400: `hsl(${BLUE_HUE}, 99%, 63%)`,
+ blue_500: `hsl(${BLUE_HUE}, 99%, 53%)`,
+ blue_600: `hsl(${BLUE_HUE}, 99%, 43%)`,
+ blue_700: `hsl(${BLUE_HUE}, 99%, 33%)`,
+ blue_800: `hsl(${BLUE_HUE}, 99%, 23%)`,
+ blue_900: `hsl(${BLUE_HUE}, 99%, 13%)`,
+ blue_1000: `hsl(${BLUE_HUE}, 99%, 8%)`,
+
+ green_0: `hsl(130, 60%, 100%)`,
+ green_100: `hsl(130, 60%, 95%)`,
+ green_200: `hsl(130, 60%, 85%)`,
+ green_300: `hsl(130, 60%, 75%)`,
+ green_400: `hsl(130, 60%, 65%)`,
+ green_500: `hsl(130, 60%, 55%)`,
+ green_600: `hsl(130, 60%, 45%)`,
+ green_700: `hsl(130, 60%, 35%)`,
+ green_800: `hsl(130, 60%, 25%)`,
+ green_900: `hsl(130, 60%, 15%)`,
+ green_1000: `hsl(130, 60%, 5%)`,
+
+ red_0: `hsl(349, 96%, 100%)`,
+ red_100: `hsl(349, 96%, 95%)`,
+ red_200: `hsl(349, 96%, 85%)`,
+ red_300: `hsl(349, 96%, 75%)`,
+ red_400: `hsl(349, 96%, 65%)`,
+ red_500: `hsl(349, 96%, 55%)`,
+ red_600: `hsl(349, 96%, 45%)`,
+ red_700: `hsl(349, 96%, 35%)`,
+ red_800: `hsl(349, 96%, 25%)`,
+ red_900: `hsl(349, 96%, 15%)`,
+ red_1000: `hsl(349, 96%, 5%)`,
+} as const
+
+export const space = {
+ xxs: 2,
+ xs: 4,
+ sm: 8,
+ md: 12,
+ lg: 18,
+ xl: 24,
+ xxl: 32,
+} as const
+
+export const fontSize = {
+ xxs: 10,
+ xs: 12,
+ sm: 14,
+ md: 16,
+ lg: 18,
+ xl: 22,
+ xxl: 26,
+} as const
+
+// TODO test
+export const lineHeight = {
+ none: 1,
+ normal: 1.5,
+ relaxed: 1.625,
+} as const
+
+export const borderRadius = {
+ sm: 8,
+ md: 12,
+ full: 999,
+} as const
+
+export const fontWeight = {
+ normal: '400',
+ semibold: '600',
+ bold: '900',
+} as const
+
+export type Color = keyof typeof color
+export type Space = keyof typeof space
+export type FontSize = keyof typeof fontSize
+export type LineHeight = keyof typeof lineHeight
+export type BorderRadius = keyof typeof borderRadius
+export type FontWeight = keyof typeof fontWeight
diff --git a/src/alf/types.ts b/src/alf/types.ts
new file mode 100644
index 0000000000..76ac05d40e
--- /dev/null
+++ b/src/alf/types.ts
@@ -0,0 +1,16 @@
+type LiteralToCommon = T extends number
+ ? number
+ : T extends string
+ ? string
+ : T extends symbol
+ ? symbol
+ : never
+
+/**
+ * @see https://stackoverflow.com/questions/68249999/use-as-const-in-typescript-without-adding-readonly-modifiers
+ */
+export type Mutable = {
+ -readonly [K in keyof T]: T[K] extends PropertyKey
+ ? LiteralToCommon
+ : Mutable
+}
diff --git a/src/alf/util/platform.ts b/src/alf/util/platform.ts
new file mode 100644
index 0000000000..544f5480b6
--- /dev/null
+++ b/src/alf/util/platform.ts
@@ -0,0 +1,25 @@
+import {Platform} from 'react-native'
+
+export function web(value: any) {
+ return Platform.select({
+ web: value,
+ })
+}
+
+export function ios(value: any) {
+ return Platform.select({
+ ios: value,
+ })
+}
+
+export function android(value: any) {
+ return Platform.select({
+ android: value,
+ })
+}
+
+export function native(value: any) {
+ return Platform.select({
+ native: value,
+ })
+}
diff --git a/src/alf/util/useColorModeTheme.ts b/src/alf/util/useColorModeTheme.ts
new file mode 100644
index 0000000000..79cebc1394
--- /dev/null
+++ b/src/alf/util/useColorModeTheme.ts
@@ -0,0 +1,10 @@
+import {useColorScheme} from 'react-native'
+
+import * as persisted from '#/state/persisted'
+
+export function useColorModeTheme(
+ theme: persisted.Schema['colorMode'],
+): 'light' | 'dark' {
+ const colorScheme = useColorScheme()
+ return (theme === 'system' ? colorScheme : theme) || 'light'
+}
diff --git a/src/lib/ScrollContext.tsx b/src/lib/ScrollContext.tsx
index 3fa67eafd4..00b197bedc 100644
--- a/src/lib/ScrollContext.tsx
+++ b/src/lib/ScrollContext.tsx
@@ -1,28 +1,17 @@
import React, {createContext, useContext, useMemo} from 'react'
-import {ScrollHandler} from 'react-native-reanimated'
-import {NativeScrollEvent} from 'react-native'
+import {ScrollHandlers} from 'react-native-reanimated'
-type ScrollHandlers = {
- onBeginDrag: undefined | ScrollHandler
- onEndDrag: undefined | ScrollHandler
- onScroll: undefined | ScrollHandler
- onScrollEndWeb:
- | undefined
- | ((e: Pick) => void) // Web-only.
-}
-
-const ScrollContext = createContext({
+const ScrollContext = createContext>({
onBeginDrag: undefined,
onEndDrag: undefined,
onScroll: undefined,
- onScrollEndWeb: undefined,
})
-export function useScrollHandlers(): ScrollHandlers {
+export function useScrollHandlers(): ScrollHandlers {
return useContext(ScrollContext)
}
-type ProviderProps = {children: React.ReactNode} & Partial
+type ProviderProps = {children: React.ReactNode} & ScrollHandlers
// Note: this completely *overrides* the parent handlers.
// It's up to you to compose them with the parent ones via useScrollHandlers() if needed.
@@ -31,16 +20,14 @@ export function ScrollProvider({
onBeginDrag,
onEndDrag,
onScroll,
- onScrollEndWeb,
}: ProviderProps) {
const handlers = useMemo(
() => ({
onBeginDrag,
onEndDrag,
onScroll,
- onScrollEndWeb,
}),
- [onBeginDrag, onEndDrag, onScroll, onScrollEndWeb],
+ [onBeginDrag, onEndDrag, onScroll],
)
return (
{children}
diff --git a/src/lib/ThemeContext.tsx b/src/lib/ThemeContext.tsx
index 483c50c42d..38bd199cbd 100644
--- a/src/lib/ThemeContext.tsx
+++ b/src/lib/ThemeContext.tsx
@@ -1,9 +1,7 @@
-import {isWeb} from 'platform/detection'
import React, {ReactNode, createContext, useContext} from 'react'
import {
- AppState,
TextStyle,
- useColorScheme as useColorScheme_BUGGY,
+ useColorScheme,
ViewStyle,
ColorSchemeName,
} from 'react-native'
@@ -97,37 +95,11 @@ function getTheme(theme: ColorSchemeName) {
return theme === 'dark' ? darkTheme : defaultTheme
}
-/**
- * With RN iOS, we can only "trust" the color scheme reported while the app is
- * active. This is a workaround until the bug is fixed upstream.
- *
- * @see https://github.com/bluesky-social/social-app/pull/1417#issuecomment-1719868504
- * @see https://github.com/facebook/react-native/pull/39439
- */
-function useColorScheme_FIXED() {
- const colorScheme = useColorScheme_BUGGY()
- const [currentColorScheme, setCurrentColorScheme] =
- React.useState(colorScheme)
-
- React.useEffect(() => {
- // we don't need to be updating state on web
- if (isWeb) return
- const subscription = AppState.addEventListener('change', state => {
- const isActive = state === 'active'
- if (!isActive) return
- setCurrentColorScheme(colorScheme)
- })
- return () => subscription.remove()
- }, [colorScheme])
-
- return isWeb ? colorScheme : currentColorScheme
-}
-
export const ThemeProvider: React.FC = ({
theme,
children,
}) => {
- const colorScheme = useColorScheme_FIXED()
+ const colorScheme = useColorScheme()
const themeValue = getTheme(theme === 'system' ? colorScheme : theme)
return (
diff --git a/src/lib/analytics/types.ts b/src/lib/analytics/types.ts
index 5a24c360af..c84f7979a4 100644
--- a/src/lib/analytics/types.ts
+++ b/src/lib/analytics/types.ts
@@ -147,6 +147,7 @@ interface ScreenPropertiesMap {
Settings: {}
AppPasswords: {}
Moderation: {}
+ PreferencesExternalEmbeds: {}
BlockedAccounts: {}
MutedAccounts: {}
SavedFeeds: {}
diff --git a/src/lib/api/feed-manip.ts b/src/lib/api/feed-manip.ts
index 9a050fd3e5..c964693c45 100644
--- a/src/lib/api/feed-manip.ts
+++ b/src/lib/api/feed-manip.ts
@@ -117,11 +117,7 @@ export class FeedViewPostsSlice {
}
export class NoopFeedTuner {
- private keyCounter = 0
-
- reset() {
- this.keyCounter = 0
- }
+ reset() {}
tune(
feed: FeedViewPost[],
_opts?: {dryRun: boolean; maintainOrder: boolean},
@@ -131,13 +127,13 @@ export class NoopFeedTuner {
}
export class FeedTuner {
- private keyCounter = 0
+ seenKeys: Set = new Set()
seenUris: Set = new Set()
constructor(public tunerFns: FeedTunerFn[]) {}
reset() {
- this.keyCounter = 0
+ this.seenKeys.clear()
this.seenUris.clear()
}
@@ -218,11 +214,16 @@ export class FeedTuner {
}
if (!dryRun) {
- for (const slice of slices) {
+ slices = slices.filter(slice => {
+ if (this.seenKeys.has(slice._reactKey)) {
+ return false
+ }
for (const item of slice.items) {
this.seenUris.add(item.post.uri)
}
- }
+ this.seenKeys.add(slice._reactKey)
+ return true
+ })
}
return slices
diff --git a/src/lib/api/feed/merge.ts b/src/lib/api/feed/merge.ts
index a4391afb25..2314e2b954 100644
--- a/src/lib/api/feed/merge.ts
+++ b/src/lib/api/feed/merge.ts
@@ -98,7 +98,7 @@ export class MergeFeedAPI implements FeedAPI {
}
return {
- cursor: posts.length ? String(this.itemCursor) : undefined,
+ cursor: String(this.itemCursor),
feed: posts,
}
}
diff --git a/src/lib/api/search.ts b/src/lib/api/search.ts
deleted file mode 100644
index dfe9b688b9..0000000000
--- a/src/lib/api/search.ts
+++ /dev/null
@@ -1,69 +0,0 @@
-/**
- * This is a temporary off-spec search endpoint
- * TODO removeme when we land this in proto!
- */
-import {AppBskyFeedPost} from '@atproto/api'
-
-const PROFILES_ENDPOINT = 'https://search.bsky.social/search/profiles'
-const POSTS_ENDPOINT = 'https://search.bsky.social/search/posts'
-
-export interface ProfileSearchItem {
- $type: string
- avatar: {
- cid: string
- mimeType: string
- }
- banner: {
- cid: string
- mimeType: string
- }
- description: string | undefined
- displayName: string | undefined
- did: string
-}
-
-export interface PostSearchItem {
- tid: string
- cid: string
- user: {
- did: string
- handle: string
- }
- post: AppBskyFeedPost.Record
-}
-
-export async function searchProfiles(
- query: string,
-): Promise {
- return await doFetch(PROFILES_ENDPOINT, query)
-}
-
-export async function searchPosts(query: string): Promise {
- return await doFetch(POSTS_ENDPOINT, query)
-}
-
-async function doFetch(endpoint: string, query: string): Promise {
- const controller = new AbortController()
- const to = setTimeout(() => controller.abort(), 15e3)
-
- const uri = new URL(endpoint)
- uri.searchParams.set('q', query)
-
- const res = await fetch(String(uri), {
- method: 'get',
- headers: {
- accept: 'application/json',
- },
- signal: controller.signal,
- })
-
- const resHeaders: Record = {}
- res.headers.forEach((value: string, key: string) => {
- resHeaders[key] = value
- })
- let resBody = await res.json()
-
- clearTimeout(to)
-
- return resBody as unknown as T
-}
diff --git a/src/lib/constants.ts b/src/lib/constants.ts
index aa5983be7d..aec8338d03 100644
--- a/src/lib/constants.ts
+++ b/src/lib/constants.ts
@@ -41,7 +41,7 @@ export function IS_LOCAL_DEV(url: string) {
}
export function IS_STAGING(url: string) {
- return !IS_LOCAL_DEV(url) && !IS_PROD(url)
+ return url.startsWith('https://staging.bsky.dev')
}
export function IS_PROD(url: string) {
@@ -51,7 +51,8 @@ export function IS_PROD(url: string) {
// -prf
return (
url.startsWith('https://bsky.social') ||
- url.startsWith('https://api.bsky.app')
+ url.startsWith('https://api.bsky.app') ||
+ /bsky\.network\/?$/.test(url)
)
}
@@ -116,8 +117,8 @@ export async function DEFAULT_FEEDS(
} else {
// production
return {
- pinned: [],
- saved: [],
+ pinned: [PROD_DEFAULT_FEED('whats-hot')],
+ saved: [PROD_DEFAULT_FEED('whats-hot')],
}
}
}
diff --git a/src/lib/hooks/usePermissions.web.ts b/src/lib/hooks/usePermissions.web.ts
new file mode 100644
index 0000000000..c550a7d6df
--- /dev/null
+++ b/src/lib/hooks/usePermissions.web.ts
@@ -0,0 +1,16 @@
+export function usePhotoLibraryPermission() {
+ const requestPhotoAccessIfNeeded = async () => {
+ // On the, we use to produce a filepicker
+ // This does not need any permission granting.
+ return true
+ }
+ return {requestPhotoAccessIfNeeded}
+}
+
+export function useCameraPermission() {
+ const requestCameraAccessIfNeeded = async () => {
+ return false
+ }
+
+ return {requestCameraAccessIfNeeded}
+}
diff --git a/src/lib/link-meta/link-meta.ts b/src/lib/link-meta/link-meta.ts
index c17dee51fa..c7c8d4130a 100644
--- a/src/lib/link-meta/link-meta.ts
+++ b/src/lib/link-meta/link-meta.ts
@@ -2,6 +2,7 @@ import {BskyAgent} from '@atproto/api'
import {isBskyAppUrl} from '../strings/url-helpers'
import {extractBskyMeta} from './bsky'
import {LINK_META_PROXY} from 'lib/constants'
+import {getGiphyMetaUri} from 'lib/strings/embed-player'
export enum LikelyType {
HTML,
@@ -34,6 +35,13 @@ export async function getLinkMeta(
let urlp
try {
urlp = new URL(url)
+
+ // Get Giphy meta uri if this is any form of giphy link
+ const giphyMetaUri = getGiphyMetaUri(urlp)
+ if (giphyMetaUri) {
+ url = giphyMetaUri
+ urlp = new URL(url)
+ }
} catch (e) {
return {
error: 'Invalid URL',
diff --git a/src/lib/media/manip.web.ts b/src/lib/media/manip.web.ts
index 914b05d2e0..bdf6836a10 100644
--- a/src/lib/media/manip.web.ts
+++ b/src/lib/media/manip.web.ts
@@ -117,9 +117,6 @@ function createResizedImage(
return reject(new Error('Failed to resize image'))
}
- canvas.width = width
- canvas.height = height
-
let scale = 1
if (mode === 'cover') {
scale = img.width < img.height ? width / img.width : height / img.height
@@ -128,10 +125,11 @@ function createResizedImage(
}
let w = img.width * scale
let h = img.height * scale
- let x = (width - w) / 2
- let y = (height - h) / 2
- ctx.drawImage(img, x, y, w, h)
+ canvas.width = w
+ canvas.height = h
+
+ ctx.drawImage(img, 0, 0, w, h)
resolve(canvas.toDataURL('image/jpeg', quality))
})
img.src = dataUri
diff --git a/src/lib/media/picker.shared.ts b/src/lib/media/picker.shared.ts
index 00b09c6b87..8bade34e25 100644
--- a/src/lib/media/picker.shared.ts
+++ b/src/lib/media/picker.shared.ts
@@ -4,6 +4,7 @@ import {
MediaTypeOptions,
} from 'expo-image-picker'
import {getDataUriSize} from './util'
+import * as Toast from 'view/com/util/Toast'
export async function openPicker(opts?: ImagePickerOptions) {
const response = await launchImageLibraryAsync({
@@ -13,7 +14,11 @@ export async function openPicker(opts?: ImagePickerOptions) {
...opts,
})
- return (response.assets ?? []).map(image => ({
+ if (response.assets && response.assets.length > 4) {
+ Toast.show('You may only select up to 4 images')
+ }
+
+ return (response.assets ?? []).slice(0, 4).map(image => ({
mime: 'image/jpeg',
height: image.height,
width: image.width,
diff --git a/src/lib/moderatePost_wrapped.ts b/src/lib/moderatePost_wrapped.ts
new file mode 100644
index 0000000000..2195b23044
--- /dev/null
+++ b/src/lib/moderatePost_wrapped.ts
@@ -0,0 +1,58 @@
+import {
+ AppBskyEmbedRecord,
+ AppBskyEmbedRecordWithMedia,
+ moderatePost,
+} from '@atproto/api'
+
+type ModeratePost = typeof moderatePost
+type Options = Parameters[1] & {
+ hiddenPosts?: string[]
+}
+
+export function moderatePost_wrapped(
+ subject: Parameters[0],
+ opts: Options,
+) {
+ const {hiddenPosts = [], ...options} = opts
+ const moderations = moderatePost(subject, options)
+
+ if (hiddenPosts.includes(subject.uri)) {
+ moderations.content.filter = true
+ moderations.content.blur = true
+ if (!moderations.content.cause) {
+ moderations.content.cause = {
+ // @ts-ignore Temporary extension to the moderation system -prf
+ type: 'post-hidden',
+ source: {type: 'user'},
+ priority: 1,
+ }
+ }
+ }
+
+ if (subject.embed) {
+ let embedHidden = false
+ if (AppBskyEmbedRecord.isViewRecord(subject.embed.record)) {
+ embedHidden = hiddenPosts.includes(subject.embed.record.uri)
+ }
+ if (
+ AppBskyEmbedRecordWithMedia.isView(subject.embed) &&
+ AppBskyEmbedRecord.isViewRecord(subject.embed.record.record)
+ ) {
+ embedHidden = hiddenPosts.includes(subject.embed.record.record.uri)
+ }
+ if (embedHidden) {
+ moderations.embed.filter = true
+ moderations.embed.blur = true
+ if (!moderations.embed.cause) {
+ moderations.embed.cause = {
+ // @ts-ignore Temporary extension to the moderation system -prf
+ type: 'post-hidden',
+ source: {type: 'user'},
+ priority: 1,
+ }
+ }
+ }
+ }
+
+ return moderations
+}
diff --git a/src/lib/moderation.ts b/src/lib/moderation.ts
index 8ba99128bc..bf19c208ad 100644
--- a/src/lib/moderation.ts
+++ b/src/lib/moderation.ts
@@ -60,6 +60,13 @@ export function describeModerationCause(
}
}
}
+ // @ts-ignore Temporary extension to the moderation system -prf
+ if (cause.type === 'post-hidden') {
+ return {
+ name: 'Post Hidden by You',
+ description: 'You have hidden this post',
+ }
+ }
return cause.labelDef.strings[context].en
}
diff --git a/src/lib/react-query.ts b/src/lib/react-query.ts
index 6ec620f742..7fe3fe7a47 100644
--- a/src/lib/react-query.ts
+++ b/src/lib/react-query.ts
@@ -1,11 +1,39 @@
-import {QueryClient} from '@tanstack/react-query'
+import {AppState, AppStateStatus} from 'react-native'
+import {QueryClient, focusManager} from '@tanstack/react-query'
+import {isNative} from '#/platform/detection'
+
+focusManager.setEventListener(onFocus => {
+ if (isNative) {
+ const subscription = AppState.addEventListener(
+ 'change',
+ (status: AppStateStatus) => {
+ focusManager.setFocused(status === 'active')
+ },
+ )
+
+ return () => subscription.remove()
+ } else if (typeof window !== 'undefined' && window.addEventListener) {
+ // these handlers are a bit redundant but focus catches when the browser window
+ // is blurred/focused while visibilitychange seems to only handle when the
+ // window minimizes (both of them catch tab changes)
+ // there's no harm to redundant fires because refetchOnWindowFocus is only
+ // used with queries that employ stale data times
+ const handler = () => onFocus()
+ window.addEventListener('focus', handler, false)
+ window.addEventListener('visibilitychange', handler, false)
+ return () => {
+ window.removeEventListener('visibilitychange', handler)
+ window.removeEventListener('focus', handler)
+ }
+ }
+})
export const queryClient = new QueryClient({
defaultOptions: {
queries: {
// NOTE
// refetchOnWindowFocus breaks some UIs (like feeds)
- // so we NEVER want to enable this
+ // so we only selectively want to enable this
// -prf
refetchOnWindowFocus: false,
// Structural sharing between responses makes it impossible to rely on
diff --git a/src/lib/routes/types.ts b/src/lib/routes/types.ts
index c157c0ab34..90ae758304 100644
--- a/src/lib/routes/types.ts
+++ b/src/lib/routes/types.ts
@@ -32,6 +32,7 @@ export type CommonNavigatorParams = {
SavedFeeds: undefined
PreferencesHomeFeed: undefined
PreferencesThreads: undefined
+ PreferencesExternalEmbeds: undefined
}
export type BottomTabNavigatorParams = CommonNavigatorParams & {
diff --git a/src/lib/strings/embed-player.ts b/src/lib/strings/embed-player.ts
index fdd39280ed..0f97eb0800 100644
--- a/src/lib/strings/embed-player.ts
+++ b/src/lib/strings/embed-player.ts
@@ -1,15 +1,59 @@
-export type EmbedPlayerParams =
- | {type: 'youtube_video'; videoId: string; playerUri: string}
- | {type: 'twitch_live'; channelId: string; playerUri: string}
- | {type: 'spotify_album'; albumId: string; playerUri: string}
- | {
- type: 'spotify_playlist'
- playlistId: string
- playerUri: string
- }
- | {type: 'spotify_song'; songId: string; playerUri: string}
- | {type: 'soundcloud_track'; user: string; track: string; playerUri: string}
- | {type: 'soundcloud_set'; user: string; set: string; playerUri: string}
+import {Dimensions, Platform} from 'react-native'
+const {height: SCREEN_HEIGHT} = Dimensions.get('window')
+
+export const embedPlayerSources = [
+ 'youtube',
+ 'youtubeShorts',
+ 'twitch',
+ 'spotify',
+ 'soundcloud',
+ 'appleMusic',
+ 'vimeo',
+ 'giphy',
+ 'tenor',
+] as const
+
+export type EmbedPlayerSource = (typeof embedPlayerSources)[number]
+
+export type EmbedPlayerType =
+ | 'youtube_video'
+ | 'youtube_short'
+ | 'twitch_video'
+ | 'spotify_album'
+ | 'spotify_playlist'
+ | 'spotify_song'
+ | 'soundcloud_track'
+ | 'soundcloud_set'
+ | 'apple_music_playlist'
+ | 'apple_music_album'
+ | 'apple_music_song'
+ | 'vimeo_video'
+ | 'giphy_gif'
+ | 'tenor_gif'
+
+export const externalEmbedLabels: Record = {
+ youtube: 'YouTube',
+ youtubeShorts: 'YouTube Shorts',
+ vimeo: 'Vimeo',
+ twitch: 'Twitch',
+ giphy: 'GIPHY',
+ tenor: 'Tenor',
+ spotify: 'Spotify',
+ appleMusic: 'Apple Music',
+ soundcloud: 'SoundCloud',
+}
+
+export interface EmbedPlayerParams {
+ type: EmbedPlayerType
+ playerUri: string
+ isGif?: boolean
+ source: EmbedPlayerSource
+ metaUri?: string
+ hideDetails?: boolean
+}
+
+const giphyRegex = /media(?:[0-4]\.giphy\.com|\.giphy\.com)/i
+const gifFilenameRegex = /^(\S+)\.(webp|gif|mp4)$/i
export function parseEmbedPlayerFromUrl(
url: string,
@@ -27,60 +71,88 @@ export function parseEmbedPlayerFromUrl(
if (videoId) {
return {
type: 'youtube_video',
- videoId,
- playerUri: `https://www.youtube.com/embed/${videoId}?autoplay=1`,
+ source: 'youtube',
+ playerUri: `https://www.youtube.com/embed/${videoId}?autoplay=1&playsinline=1`,
}
}
}
- if (urlp.hostname === 'www.youtube.com' || urlp.hostname === 'youtube.com') {
+ if (
+ urlp.hostname === 'www.youtube.com' ||
+ urlp.hostname === 'youtube.com' ||
+ urlp.hostname === 'm.youtube.com'
+ ) {
const [_, page, shortVideoId] = urlp.pathname.split('/')
const videoId =
page === 'shorts' ? shortVideoId : (urlp.searchParams.get('v') as string)
if (videoId) {
return {
- type: 'youtube_video',
- videoId,
- playerUri: `https://www.youtube.com/embed/${videoId}?autoplay=1`,
+ type: page === 'shorts' ? 'youtube_short' : 'youtube_video',
+ source: page === 'shorts' ? 'youtubeShorts' : 'youtube',
+ hideDetails: page === 'shorts' ? true : undefined,
+ playerUri: `https://www.youtube.com/embed/${videoId}?autoplay=1&playsinline=1`,
}
}
}
// twitch
- if (urlp.hostname === 'twitch.tv' || urlp.hostname === 'www.twitch.tv') {
- const parts = urlp.pathname.split('/')
- if (parts.length === 2 && parts[1]) {
+ if (
+ urlp.hostname === 'twitch.tv' ||
+ urlp.hostname === 'www.twitch.tv' ||
+ urlp.hostname === 'm.twitch.tv'
+ ) {
+ const parent =
+ Platform.OS === 'web' ? window.location.hostname : 'localhost'
+
+ const [_, channelOrVideo, clipOrId, id] = urlp.pathname.split('/')
+
+ if (channelOrVideo === 'videos') {
return {
- type: 'twitch_live',
- channelId: parts[1],
- playerUri: `https://player.twitch.tv/?volume=0.5&!muted&autoplay&channel=${parts[1]}&parent=localhost`,
+ type: 'twitch_video',
+ source: 'twitch',
+ playerUri: `https://player.twitch.tv/?volume=0.5&!muted&autoplay&video=${clipOrId}&parent=${parent}`,
+ }
+ } else if (clipOrId === 'clip') {
+ return {
+ type: 'twitch_video',
+ source: 'twitch',
+ playerUri: `https://clips.twitch.tv/embed?volume=0.5&autoplay=true&clip=${id}&parent=${parent}`,
+ }
+ } else if (channelOrVideo) {
+ return {
+ type: 'twitch_video',
+ source: 'twitch',
+ playerUri: `https://player.twitch.tv/?volume=0.5&!muted&autoplay&channel=${channelOrVideo}&parent=${parent}`,
}
}
}
// spotify
if (urlp.hostname === 'open.spotify.com') {
- const [_, type, id] = urlp.pathname.split('/')
- if (type && id) {
- if (type === 'playlist') {
+ const [_, typeOrLocale, idOrType, id] = urlp.pathname.split('/')
+
+ if (idOrType) {
+ if (typeOrLocale === 'playlist' || idOrType === 'playlist') {
return {
type: 'spotify_playlist',
- playlistId: id,
- playerUri: `https://open.spotify.com/embed/playlist/${id}`,
+ source: 'spotify',
+ playerUri: `https://open.spotify.com/embed/playlist/${
+ id ?? idOrType
+ }`,
}
}
- if (type === 'album') {
+ if (typeOrLocale === 'album' || idOrType === 'album') {
return {
type: 'spotify_album',
- albumId: id,
- playerUri: `https://open.spotify.com/embed/album/${id}`,
+ source: 'spotify',
+ playerUri: `https://open.spotify.com/embed/album/${id ?? idOrType}`,
}
}
- if (type === 'track') {
+ if (typeOrLocale === 'track' || idOrType === 'track') {
return {
type: 'spotify_song',
- songId: id,
- playerUri: `https://open.spotify.com/embed/track/${id}`,
+ source: 'spotify',
+ playerUri: `https://open.spotify.com/embed/track/${id ?? idOrType}`,
}
}
}
@@ -97,20 +169,173 @@ export function parseEmbedPlayerFromUrl(
if (trackOrSets === 'sets' && set) {
return {
type: 'soundcloud_set',
- user,
- set: set,
+ source: 'soundcloud',
playerUri: `https://w.soundcloud.com/player/?url=${url}&auto_play=true&visual=false&hide_related=true`,
}
}
return {
type: 'soundcloud_track',
- user,
- track: trackOrSets,
+ source: 'soundcloud',
playerUri: `https://w.soundcloud.com/player/?url=${url}&auto_play=true&visual=false&hide_related=true`,
}
}
}
+
+ if (
+ urlp.hostname === 'music.apple.com' ||
+ urlp.hostname === 'music.apple.com'
+ ) {
+ // This should always have: locale, type (playlist or album), name, and id. We won't use spread since we want
+ // to check if the length is correct
+ const pathParams = urlp.pathname.split('/')
+ const type = pathParams[2]
+ const songId = urlp.searchParams.get('i')
+
+ if (pathParams.length === 5 && (type === 'playlist' || type === 'album')) {
+ // We want to append the songId to the end of the url if it exists
+ const embedUri = `https://embed.music.apple.com${urlp.pathname}${
+ urlp.search ? '?i=' + songId : ''
+ }`
+
+ if (type === 'playlist') {
+ return {
+ type: 'apple_music_playlist',
+ source: 'appleMusic',
+ playerUri: embedUri,
+ }
+ } else if (type === 'album') {
+ if (songId) {
+ return {
+ type: 'apple_music_song',
+ source: 'appleMusic',
+ playerUri: embedUri,
+ }
+ } else {
+ return {
+ type: 'apple_music_album',
+ source: 'appleMusic',
+ playerUri: embedUri,
+ }
+ }
+ }
+ }
+ }
+
+ if (urlp.hostname === 'vimeo.com' || urlp.hostname === 'www.vimeo.com') {
+ const [_, videoId] = urlp.pathname.split('/')
+ if (videoId) {
+ return {
+ type: 'vimeo_video',
+ source: 'vimeo',
+ playerUri: `https://player.vimeo.com/video/${videoId}?autoplay=1`,
+ }
+ }
+ }
+
+ if (urlp.hostname === 'giphy.com' || urlp.hostname === 'www.giphy.com') {
+ const [_, gifs, nameAndId] = urlp.pathname.split('/')
+
+ /*
+ * nameAndId is a string that consists of the name (dash separated) and the id of the gif (the last part of the name)
+ * We want to get the id of the gif, then direct to media.giphy.com/media/{id}/giphy.webp so we can
+ * use it in an component
+ */
+
+ if (gifs === 'gifs' && nameAndId) {
+ const gifId = nameAndId.split('-').pop()
+
+ if (gifId) {
+ return {
+ type: 'giphy_gif',
+ source: 'giphy',
+ isGif: true,
+ hideDetails: true,
+ metaUri: `https://giphy.com/gifs/${gifId}`,
+ playerUri: `https://i.giphy.com/media/${gifId}/giphy.webp`,
+ }
+ }
+ }
+ }
+
+ // There are five possible hostnames that also can be giphy urls: media.giphy.com and media0-4.giphy.com
+ // These can include (presumably) a tracking id in the path name, so we have to check for that as well
+ if (giphyRegex.test(urlp.hostname)) {
+ // We can link directly to the gif, if its a proper link
+ const [_, media, trackingOrId, idOrFilename, filename] =
+ urlp.pathname.split('/')
+
+ if (media === 'media') {
+ if (idOrFilename && gifFilenameRegex.test(idOrFilename)) {
+ return {
+ type: 'giphy_gif',
+ source: 'giphy',
+ isGif: true,
+ hideDetails: true,
+ metaUri: `https://giphy.com/gifs/${trackingOrId}`,
+ playerUri: `https://i.giphy.com/media/${trackingOrId}/giphy.webp`,
+ }
+ } else if (filename && gifFilenameRegex.test(filename)) {
+ return {
+ type: 'giphy_gif',
+ source: 'giphy',
+ isGif: true,
+ hideDetails: true,
+ metaUri: `https://giphy.com/gifs/${idOrFilename}`,
+ playerUri: `https://i.giphy.com/media/${idOrFilename}/giphy.webp`,
+ }
+ }
+ }
+ }
+
+ // Finally, we should see if it is a link to i.giphy.com. These links don't necessarily end in .gif but can also
+ // be .webp
+ if (urlp.hostname === 'i.giphy.com' || urlp.hostname === 'www.i.giphy.com') {
+ const [_, mediaOrFilename, filename] = urlp.pathname.split('/')
+
+ if (mediaOrFilename === 'media' && filename) {
+ const gifId = filename.split('.')[0]
+ return {
+ type: 'giphy_gif',
+ source: 'giphy',
+ isGif: true,
+ hideDetails: true,
+ metaUri: `https://giphy.com/gifs/${gifId}`,
+ playerUri: `https://i.giphy.com/media/${gifId}/giphy.webp`,
+ }
+ } else if (mediaOrFilename) {
+ const gifId = mediaOrFilename.split('.')[0]
+ return {
+ type: 'giphy_gif',
+ source: 'giphy',
+ isGif: true,
+ hideDetails: true,
+ metaUri: `https://giphy.com/gifs/${gifId}`,
+ playerUri: `https://i.giphy.com/media/${
+ mediaOrFilename.split('.')[0]
+ }/giphy.webp`,
+ }
+ }
+ }
+
+ if (urlp.hostname === 'tenor.com' || urlp.hostname === 'www.tenor.com') {
+ const [_, pathOrIntl, pathOrFilename, intlFilename] =
+ urlp.pathname.split('/')
+ const isIntl = pathOrFilename === 'view'
+ const filename = isIntl ? intlFilename : pathOrFilename
+
+ if ((pathOrIntl === 'view' || pathOrFilename === 'view') && filename) {
+ const includesExt = filename.split('.').pop() === 'gif'
+
+ return {
+ type: 'tenor_gif',
+ source: 'tenor',
+ isGif: true,
+ hideDetails: true,
+ playerUri: `${url}${!includesExt ? '.gif' : ''}`,
+ }
+ }
+ }
}
export function getPlayerHeight({
@@ -126,22 +351,53 @@ export function getPlayerHeight({
switch (type) {
case 'youtube_video':
- case 'twitch_live':
+ case 'twitch_video':
+ case 'vimeo_video':
return (width / 16) * 9
+ case 'youtube_short':
+ if (SCREEN_HEIGHT < 600) {
+ return ((width / 9) * 16) / 1.75
+ } else {
+ return ((width / 9) * 16) / 1.5
+ }
case 'spotify_album':
- return 380
+ case 'apple_music_album':
+ case 'apple_music_playlist':
case 'spotify_playlist':
- return 360
+ case 'soundcloud_set':
+ return 380
case 'spotify_song':
if (width <= 300) {
- return 180
+ return 155
}
return 232
case 'soundcloud_track':
return 165
- case 'soundcloud_set':
- return 360
+ case 'apple_music_song':
+ return 150
default:
return width
}
}
+
+export function getGifDims(
+ originalHeight: number,
+ originalWidth: number,
+ viewWidth: number,
+) {
+ const scaledHeight = (originalHeight / originalWidth) * viewWidth
+
+ return {
+ height: scaledHeight > 250 ? 250 : scaledHeight,
+ width: (250 / scaledHeight) * viewWidth,
+ }
+}
+
+export function getGiphyMetaUri(url: URL) {
+ if (giphyRegex.test(url.hostname) || url.hostname === 'i.giphy.com') {
+ const params = parseEmbedPlayerFromUrl(url.toString())
+ if (params && params.type === 'giphy_gif') {
+ return params.metaUri
+ }
+ }
+}
diff --git a/src/lib/strings/rich-text-helpers.ts b/src/lib/strings/rich-text-helpers.ts
new file mode 100644
index 0000000000..08971ca031
--- /dev/null
+++ b/src/lib/strings/rich-text-helpers.ts
@@ -0,0 +1,29 @@
+import {AppBskyRichtextFacet, RichText} from '@atproto/api'
+import {linkRequiresWarning} from './url-helpers'
+
+export function richTextToString(rt: RichText): string {
+ const {text, facets} = rt
+
+ if (!facets?.length) {
+ return text
+ }
+
+ let result = ''
+
+ for (const segment of rt.segments()) {
+ const link = segment.link
+
+ if (link && AppBskyRichtextFacet.validateLink(link).success) {
+ const href = link.uri
+ const text = segment.text
+
+ const requiresWarning = linkRequiresWarning(href, text)
+
+ result += !requiresWarning ? href : `[${text}](${href})`
+ } else {
+ result += segment.text
+ }
+ }
+
+ return result
+}
diff --git a/src/lib/styles.ts b/src/lib/styles.ts
index 152e60eb0f..5a10fea864 100644
--- a/src/lib/styles.ts
+++ b/src/lib/styles.ts
@@ -167,6 +167,7 @@ export const s = StyleSheet.create({
flexGrow1: {flexGrow: 1},
alignCenter: {alignItems: 'center'},
alignBaseline: {alignItems: 'baseline'},
+ justifyCenter: {justifyContent: 'center'},
// position
absolute: {position: 'absolute'},
diff --git a/src/lib/themes.ts b/src/lib/themes.ts
index b778d5b30d..ad7574db6e 100644
--- a/src/lib/themes.ts
+++ b/src/lib/themes.ts
@@ -25,6 +25,7 @@ export const defaultTheme: Theme = {
postCtrl: '#71768A',
brandText: '#0066FF',
emptyStateIcon: '#B6B6C9',
+ borderLinkHover: '#cac1c1',
},
primary: {
background: colors.blue3,
@@ -310,6 +311,7 @@ export const darkTheme: Theme = {
postCtrl: '#707489',
brandText: '#0085ff',
emptyStateIcon: colors.gray4,
+ borderLinkHover: colors.gray5,
},
primary: {
...defaultTheme.palette.primary,
diff --git a/src/locale/__tests__/helpers.test.ts b/src/locale/__tests__/helpers.test.ts
index d4028c643b..5e924c9fe8 100644
--- a/src/locale/__tests__/helpers.test.ts
+++ b/src/locale/__tests__/helpers.test.ts
@@ -5,7 +5,9 @@ import {AppLanguage} from '#/locale/languages'
test('sanitizeAppLanguageSetting', () => {
expect(sanitizeAppLanguageSetting('en')).toBe(AppLanguage.en)
+ expect(sanitizeAppLanguageSetting('pt-BR')).toBe(AppLanguage.pt_BR)
expect(sanitizeAppLanguageSetting('hi')).toBe(AppLanguage.hi)
+ expect(sanitizeAppLanguageSetting('id')).toBe(AppLanguage.id)
expect(sanitizeAppLanguageSetting('foo')).toBe(AppLanguage.en)
expect(sanitizeAppLanguageSetting('en,foo')).toBe(AppLanguage.en)
expect(sanitizeAppLanguageSetting('foo,en')).toBe(AppLanguage.en)
diff --git a/src/locale/helpers.ts b/src/locale/helpers.ts
index 5418e093fa..433dbaec60 100644
--- a/src/locale/helpers.ts
+++ b/src/locale/helpers.ts
@@ -110,20 +110,28 @@ export function sanitizeAppLanguageSetting(appLanguage: string): AppLanguage {
switch (lang) {
case 'en':
return AppLanguage.en
- case 'hi':
- return AppLanguage.hi
- case 'ja':
- return AppLanguage.ja
- case 'fr':
- return AppLanguage.fr
- case 'de':
- return AppLanguage.de
+ // DISABLED until this translation is fixed -prf
+ // case 'de':
+ // return AppLanguage.de
case 'es':
return AppLanguage.es
+ case 'fr':
+ return AppLanguage.fr
+ case 'hi':
+ return AppLanguage.hi
+ case 'id':
+ return AppLanguage.id
+ case 'ja':
+ return AppLanguage.ja
+ case 'ko':
+ return AppLanguage.ko
+ case 'pt-BR':
+ return AppLanguage.pt_BR
+ case 'uk':
+ return AppLanguage.uk
default:
continue
}
}
-
return AppLanguage.en
}
diff --git a/src/locale/i18n.ts b/src/locale/i18n.ts
index 54762eb81a..88ae10b624 100644
--- a/src/locale/i18n.ts
+++ b/src/locale/i18n.ts
@@ -3,11 +3,16 @@ import {i18n} from '@lingui/core'
import {useLanguagePrefs} from '#/state/preferences'
import {messages as messagesEn} from '#/locale/locales/en/messages'
+// DISABLED until this translation is fixed -prf
+// import {messages as messagesDe} from '#/locale/locales/de/messages'
+import {messages as messagesId} from '#/locale/locales/id/messages'
+import {messages as messagesEs} from '#/locale/locales/es/messages'
+import {messages as messagesFr} from '#/locale/locales/fr/messages'
import {messages as messagesHi} from '#/locale/locales/hi/messages'
import {messages as messagesJa} from '#/locale/locales/ja/messages'
-import {messages as messagesFr} from '#/locale/locales/fr/messages'
-import {messages as messagesDe} from '#/locale/locales/de/messages'
-import {messages as messagesEs} from '#/locale/locales/de/messages'
+import {messages as messagesKo} from '#/locale/locales/ko/messages'
+import {messages as messagesPt_BR} from '#/locale/locales/pt-BR/messages'
+import {messages as messagesUk} from '#/locale/locales/uk/messages'
import {sanitizeAppLanguageSetting} from '#/locale/helpers'
import {AppLanguage} from '#/locale/languages'
@@ -17,24 +22,41 @@ import {AppLanguage} from '#/locale/languages'
*/
export async function dynamicActivate(locale: AppLanguage) {
switch (locale) {
- case AppLanguage.hi: {
- i18n.loadAndActivate({locale, messages: messagesHi})
- break
- }
- case AppLanguage.ja: {
- i18n.loadAndActivate({locale, messages: messagesJa})
+ // DISABLED until this translation is fixed -prf
+ // case AppLanguage.de: {
+ // i18n.loadAndActivate({locale, messages: messagesDe})
+ // break
+ // }
+ case AppLanguage.es: {
+ i18n.loadAndActivate({locale, messages: messagesEs})
break
}
case AppLanguage.fr: {
i18n.loadAndActivate({locale, messages: messagesFr})
break
}
- case AppLanguage.de: {
- i18n.loadAndActivate({locale, messages: messagesDe})
+ case AppLanguage.hi: {
+ i18n.loadAndActivate({locale, messages: messagesHi})
break
}
- case AppLanguage.es: {
- i18n.loadAndActivate({locale, messages: messagesEs})
+ case AppLanguage.id: {
+ i18n.loadAndActivate({locale, messages: messagesId})
+ break
+ }
+ case AppLanguage.ja: {
+ i18n.loadAndActivate({locale, messages: messagesJa})
+ break
+ }
+ case AppLanguage.ko: {
+ i18n.loadAndActivate({locale, messages: messagesKo})
+ break
+ }
+ case AppLanguage.pt_BR: {
+ i18n.loadAndActivate({locale, messages: messagesPt_BR})
+ break
+ }
+ case AppLanguage.uk: {
+ i18n.loadAndActivate({locale, messages: messagesUk})
break
}
default: {
diff --git a/src/locale/i18n.web.ts b/src/locale/i18n.web.ts
index 08fda1e976..819f58eb75 100644
--- a/src/locale/i18n.web.ts
+++ b/src/locale/i18n.web.ts
@@ -12,24 +12,41 @@ export async function dynamicActivate(locale: AppLanguage) {
let mod: any
switch (locale) {
- case AppLanguage.hi: {
- mod = await import(`./locales/hi/messages`)
- break
- }
- case AppLanguage.ja: {
- mod = await import(`./locales/ja/messages`)
+ // DISABLED until this translation is fixed -prf
+ // case AppLanguage.de: {
+ // mod = await import(`./locales/de/messages`)
+ // break
+ // }
+ case AppLanguage.es: {
+ mod = await import(`./locales/es/messages`)
break
}
case AppLanguage.fr: {
mod = await import(`./locales/fr/messages`)
break
}
- case AppLanguage.de: {
- mod = await import(`./locales/de/messages`)
+ case AppLanguage.hi: {
+ mod = await import(`./locales/hi/messages`)
break
}
- case AppLanguage.es: {
- mod = await import(`./locales/es/messages`)
+ case AppLanguage.id: {
+ mod = await import(`./locales/id/messages`)
+ break
+ }
+ case AppLanguage.ja: {
+ mod = await import(`./locales/ja/messages`)
+ break
+ }
+ case AppLanguage.ko: {
+ mod = await import(`./locales/ko/messages`)
+ break
+ }
+ case AppLanguage.pt_BR: {
+ mod = await import(`./locales/pt-BR/messages`)
+ break
+ }
+ case AppLanguage.uk: {
+ mod = await import(`./locales/uk/messages`)
break
}
default: {
diff --git a/src/locale/languages.ts b/src/locale/languages.ts
index 91c4a1d179..c6799816cf 100644
--- a/src/locale/languages.ts
+++ b/src/locale/languages.ts
@@ -6,11 +6,16 @@ interface Language {
export enum AppLanguage {
en = 'en',
- hi = 'hi',
- ja = 'ja',
- fr = 'fr',
- de = 'de',
+ // DISABLED until this translation is fixed -prf
+ // de = 'de',
es = 'es',
+ fr = 'fr',
+ hi = 'hi',
+ id = 'id',
+ ja = 'ja',
+ ko = 'ko',
+ pt_BR = 'pt-BR',
+ uk = 'uk',
}
interface AppLanguageConfig {
@@ -20,11 +25,16 @@ interface AppLanguageConfig {
export const APP_LANGUAGES: AppLanguageConfig[] = [
{code2: AppLanguage.en, name: 'English'},
- {code2: AppLanguage.hi, name: 'हिंदी'},
- {code2: AppLanguage.ja, name: '日本語'},
- {code2: AppLanguage.fr, name: 'Français'},
- {code2: AppLanguage.de, name: 'Deutsch'},
+ // DISABLED until this translation is fixed -prf
+ // {code2: AppLanguage.de, name: 'Deutsch'},
{code2: AppLanguage.es, name: 'Español'},
+ {code2: AppLanguage.fr, name: 'Français'},
+ {code2: AppLanguage.hi, name: 'हिंदी'},
+ {code2: AppLanguage.id, name: 'Bahasa Indonesia'},
+ {code2: AppLanguage.ja, name: '日本語'},
+ {code2: AppLanguage.ko, name: '한국어'},
+ {code2: AppLanguage.pt_BR, name: 'Português (BR)'},
+ {code2: AppLanguage.uk, name: 'Українська'},
]
export const LANGUAGES: Language[] = [
diff --git a/src/locale/locales/de/messages.po b/src/locale/locales/de/messages.po
index 4bebd80318..4926b30ae0 100644
--- a/src/locale/locales/de/messages.po
+++ b/src/locale/locales/de/messages.po
@@ -13,7 +13,7 @@ msgstr ""
"Language-Team: \n"
"Plural-Forms: \n"
-#: src/view/shell/desktop/RightNav.tsx:160
+#: src/view/shell/desktop/RightNav.tsx:168
msgid "{0, plural, one {# invite code available} other {# invite codes available}}"
msgstr ""
@@ -25,21 +25,21 @@ msgstr "{0}"
msgid "{0} {purposeLabel} List"
msgstr "{0} {purposeLabel} Liste"
-#: src/view/shell/desktop/RightNav.tsx:143
+#: src/view/shell/desktop/RightNav.tsx:151
msgid "{invitesAvailable, plural, one {Invite codes: # available} other {Invite codes: # available}}"
msgstr ""
#: src/view/screens/Settings.tsx:407
-#: src/view/shell/Drawer.tsx:640
+#: src/view/shell/Drawer.tsx:659
msgid "{invitesAvailable} invite code available"
msgstr "{invitesAvailable} Einladungscode verfügbar"
#: src/view/screens/Settings.tsx:409
-#: src/view/shell/Drawer.tsx:642
+#: src/view/shell/Drawer.tsx:661
msgid "{invitesAvailable} invite codes available"
msgstr "{invitesAvailable} Einladungscodes verfügbar"
-#: src/view/screens/Search/Search.tsx:88
+#: src/view/screens/Search/Search.tsx:87
msgid "{message}"
msgstr "{message}"
@@ -68,7 +68,7 @@ msgstr "Eine neue Version der App ist verfügbar. Bitte aktualisieren Sie die Ap
msgid "Accessibility"
msgstr "Zugänglichkeit"
-#: src/view/com/auth/login/LoginForm.tsx:159
+#: src/view/com/auth/login/LoginForm.tsx:163
#: src/view/screens/Settings.tsx:286
msgid "Account"
msgstr "Konto"
@@ -79,7 +79,7 @@ msgstr "Konto Optionen"
#: src/view/com/modals/ListAddRemoveUsers.tsx:264
#: src/view/com/modals/UserAddRemoveLists.tsx:193
-#: src/view/screens/ProfileList.tsx:754
+#: src/view/screens/ProfileList.tsx:763
msgid "Add"
msgstr "Hinzufügen"
@@ -87,7 +87,7 @@ msgstr "Hinzufügen"
msgid "Add a content warning"
msgstr "Eine Inhaltswarnung hinzufügen"
-#: src/view/screens/ProfileList.tsx:744
+#: src/view/screens/ProfileList.tsx:753
msgid "Add a user to this list"
msgstr "Einen Benutzer zu dieser Liste hinzufügen"
@@ -98,6 +98,7 @@ msgstr "Konto hinzufügen"
#: src/view/com/composer/photos/Gallery.tsx:119
#: src/view/com/composer/photos/Gallery.tsx:180
+#: src/view/com/modals/AltImage.tsx:93
msgid "Add alt text"
msgstr "Alt Text hinzufügen"
@@ -110,11 +111,11 @@ msgstr "Einzelheiten hinzufügen"
msgid "Add details to report"
msgstr "Einzelheiten zum Bericht hinzufügen"
-#: src/view/com/composer/Composer.tsx:438
+#: src/view/com/composer/Composer.tsx:447
msgid "Add link card"
msgstr "Link Karte hinzufügen"
-#: src/view/com/composer/Composer.tsx:441
+#: src/view/com/composer/Composer.tsx:450
msgid "Add link card:"
msgstr "Link Karte hinzufügen:"
@@ -126,7 +127,7 @@ msgstr "Fügen Sie den folgenden DNS-Eintrag zu Ihrem Domainnamen hinzu:"
msgid "Add to Lists"
msgstr "Den Listen hinzufügen"
-#: src/view/screens/ProfileFeed.tsx:270
+#: src/view/screens/ProfileFeed.tsx:271
msgid "Add to my feeds"
msgstr "Zu meinen Feeds hinzufügen"
@@ -135,7 +136,7 @@ msgstr "Zu meinen Feeds hinzufügen"
msgid "Added to list"
msgstr "Den Listen hinzufügen"
-#: src/view/screens/PreferencesHomeFeed.tsx:164
+#: src/view/screens/PreferencesHomeFeed.tsx:170
msgid "Adjust the number of likes a reply must have to be shown in your feed."
msgstr "Passen Sie die Anzahl der Likes an, die eine Antwort haben muss, um in Ihrem Feed angezeigt zu werden."
@@ -143,7 +144,7 @@ msgstr "Passen Sie die Anzahl der Likes an, die eine Antwort haben muss, um in I
msgid "Adult Content"
msgstr "Inhalt für Erwachsene"
-#: src/view/screens/Settings.tsx:569
+#: src/view/screens/Settings.tsx:602
msgid "Advanced"
msgstr "Fortgeschrittene"
@@ -167,7 +168,7 @@ msgstr "Es wurde eine E-Mail an {0} gesendet. Sie enthält einen Bestätigungsco
msgid "An email has been sent to your previous address, {0}. It includes a confirmation code which you can enter below."
msgstr "Es wurde eine E-Mail an Ihre frühere Adresse {0} gesendet. Sie enthält einen Bestätigungscode, den Sie unten eingeben können."
-#: src/view/com/notifications/FeedItem.tsx:236
+#: src/view/com/notifications/FeedItem.tsx:237
#: src/view/com/threadgate/WhoCanReply.tsx:178
msgid "and"
msgstr "und"
@@ -176,7 +177,7 @@ msgstr "und"
msgid "App Language"
msgstr "App Sprache"
-#: src/view/screens/Settings.tsx:589
+#: src/view/screens/Settings.tsx:622
msgid "App passwords"
msgstr "App-Passwörter"
@@ -184,7 +185,7 @@ msgstr "App-Passwörter"
msgid "App Passwords"
msgstr "App-Passwörter"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:207
+#: src/view/com/util/forms/PostDropdownBtn.tsx:236
msgid "Appeal content warning"
msgstr ""
@@ -212,15 +213,15 @@ msgstr "Aussehen"
msgid "Are you sure you want to delete the app password \"{name}\"?"
msgstr "Sind Sie sicher, dass Sie das App-Passwort \"{name}\" löschen möchten?"
-#: src/view/com/composer/Composer.tsx:142
+#: src/view/com/composer/Composer.tsx:143
msgid "Are you sure you'd like to discard this draft?"
msgstr "Sind Sie sicher, dass Sie diesen Entwurf verwerfen möchten?"
-#: src/view/screens/ProfileList.tsx:352
+#: src/view/screens/ProfileList.tsx:353
msgid "Are you sure?"
msgstr "Sind Sie sicher?"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:190
+#: src/view/com/util/forms/PostDropdownBtn.tsx:219
msgid "Are you sure? This cannot be undone."
msgstr "Sind Sie sicher? Dies kann nicht rückgängig gemacht werden"
@@ -231,12 +232,12 @@ msgstr "Künstlerische oder nicht-erotische Nacktheit."
#: src/view/com/auth/create/CreateAccount.tsx:141
#: src/view/com/auth/login/ChooseAccountForm.tsx:151
#: src/view/com/auth/login/ForgotPasswordForm.tsx:166
-#: src/view/com/auth/login/LoginForm.tsx:249
+#: src/view/com/auth/login/LoginForm.tsx:254
#: src/view/com/auth/login/SetNewPasswordForm.tsx:148
-#: src/view/com/modals/report/InputIssueDetails.tsx:45
-#: src/view/com/post-thread/PostThread.tsx:395
-#: src/view/com/post-thread/PostThread.tsx:445
-#: src/view/com/post-thread/PostThread.tsx:453
+#: src/view/com/modals/report/InputIssueDetails.tsx:46
+#: src/view/com/post-thread/PostThread.tsx:388
+#: src/view/com/post-thread/PostThread.tsx:438
+#: src/view/com/post-thread/PostThread.tsx:446
#: src/view/com/profile/ProfileHeader.tsx:672
msgid "Back"
msgstr "Zurück"
@@ -245,8 +246,8 @@ msgstr "Zurück"
msgid "Basics"
msgstr "Grundlagen"
-#: src/view/com/auth/create/Step2.tsx:131
-#: src/view/com/modals/BirthDateSettings.tsx:72
+#: src/view/com/auth/create/Step2.tsx:156
+#: src/view/com/modals/BirthDateSettings.tsx:73
msgid "Birthday"
msgstr "Geburtstag"
@@ -259,15 +260,15 @@ msgstr "Geburtstag:"
msgid "Block Account"
msgstr "Konto sperren"
-#: src/view/screens/ProfileList.tsx:522
+#: src/view/screens/ProfileList.tsx:523
msgid "Block accounts"
msgstr "Kontos sperren"
-#: src/view/screens/ProfileList.tsx:472
+#: src/view/screens/ProfileList.tsx:473
msgid "Block list"
msgstr " Liste sperren"
-#: src/view/screens/ProfileList.tsx:307
+#: src/view/screens/ProfileList.tsx:308
msgid "Block these accounts?"
msgstr "Diese Kontos sperren?"
@@ -275,7 +276,7 @@ msgstr "Diese Kontos sperren?"
msgid "Blocked accounts"
msgstr "Gesperrte Konten"
-#: src/view/screens/ModerationBlockedAccounts.tsx:106
+#: src/view/screens/ModerationBlockedAccounts.tsx:107
msgid "Blocked Accounts"
msgstr "Gesperrte Konten"
@@ -283,15 +284,15 @@ msgstr "Gesperrte Konten"
msgid "Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you."
msgstr "Gesperrte Konten können nicht in Ihren Beiträgen antworten, Sie erwähnen oder anderweitig mit Ihnen interagieren."
-#: src/view/screens/ModerationBlockedAccounts.tsx:114
+#: src/view/screens/ModerationBlockedAccounts.tsx:115
msgid "Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you. You will not see their content and they will be prevented from seeing yours."
msgstr "Gesperrte Konten können nicht in Ihren Beiträgen antworten, Sie erwähnen oder anderweitig mit Ihnen interagieren. Sie werden ihre Inhalte nicht sehen und sie werden daran gehindert, Ihre zu sehen."
-#: src/view/com/post-thread/PostThread.tsx:251
+#: src/view/com/post-thread/PostThread.tsx:250
msgid "Blocked post."
msgstr "Gesperrter Posten."
-#: src/view/screens/ProfileList.tsx:309
+#: src/view/screens/ProfileList.tsx:310
msgid "Blocking is public. Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you."
msgstr "Die Sperrung ist öffentlich. Gesperrte Konten können nicht in Ihren Beiträgen antworten, Sie erwähnen oder anderweitig mit Ihnen interagieren."
@@ -327,7 +328,7 @@ msgstr "Bluesky wird dein Profil und deine Beiträge nicht für abgemeldete Benu
msgid "Bluesky.Social"
msgstr "Bluesky.Social"
-#: src/view/screens/Settings.tsx:718
+#: src/view/screens/Settings.tsx:751
msgid "Build version {0} {1}"
msgstr "Version bauen {0} {1}"
@@ -345,9 +346,8 @@ msgstr "Kamera"
msgid "Can only contain letters, numbers, spaces, dashes, and underscores. Must be at least 4 characters long, but no more than 32 characters long."
msgstr "Darf nur Buchstaben, Zahlen, Leerzeichen, Bindestriche und Unterstriche enthalten. Muss mindestens 4 Zeichen lang sein, darf aber nicht länger als 32 Zeichen sein."
-#: src/view/com/composer/Composer.tsx:285
-#: src/view/com/composer/Composer.tsx:288
-#: src/view/com/modals/AltImage.tsx:128
+#: src/view/com/composer/Composer.tsx:294
+#: src/view/com/composer/Composer.tsx:297
#: src/view/com/modals/ChangeEmail.tsx:218
#: src/view/com/modals/ChangeEmail.tsx:220
#: src/view/com/modals/Confirm.tsx:88
@@ -360,7 +360,7 @@ msgstr "Darf nur Buchstaben, Zahlen, Leerzeichen, Bindestriche und Unterstriche
#: src/view/com/modals/LinkWarning.tsx:85
#: src/view/com/modals/Repost.tsx:73
#: src/view/com/modals/Waitlist.tsx:136
-#: src/view/screens/Search/Search.tsx:592
+#: src/view/screens/Search/Search.tsx:601
#: src/view/shell/desktop/Search.tsx:182
msgid "Cancel"
msgstr "Abbrechen"
@@ -371,8 +371,8 @@ msgid "Cancel account deletion"
msgstr "Kontolöschung abbrechen"
#: src/view/com/modals/AltImage.tsx:123
-msgid "Cancel add image alt text"
-msgstr "Abbrechen Bild-Alt-Text hinzufügen"
+#~ msgid "Cancel add image alt text"
+#~ msgstr "Abbrechen Bild-Alt-Text hinzufügen"
#: src/view/com/modals/ChangeHandle.tsx:149
msgid "Cancel change handle"
@@ -403,8 +403,8 @@ msgstr "Anmeldung zur Warteliste abbrechen"
msgid "Change"
msgstr "Ändern"
-#: src/view/screens/Settings.tsx:601
-#: src/view/screens/Settings.tsx:610
+#: src/view/screens/Settings.tsx:634
+#: src/view/screens/Settings.tsx:643
msgid "Change handle"
msgstr "Änderungsgriff andern"
@@ -432,6 +432,10 @@ msgstr "Sehen Sie sich einige empfohlene Benutzer an. Folgen Sie ihnen, um ähnl
msgid "Check your inbox for an email with the confirmation code to enter below:"
msgstr "Prüfen Sie Ihren Posteingang auf eine E-Mail mit dem Bestätigungscode, den Sie unten eingeben müssen:"
+#: src/view/com/modals/Threadgate.tsx:72
+msgid "Choose \"Everybody\" or \"Nobody\""
+msgstr ""
+
#: src/view/com/modals/ServerInput.tsx:38
msgid "Choose Service"
msgstr "Service auswählen"
@@ -440,28 +444,28 @@ msgstr "Service auswählen"
msgid "Choose the algorithms that power your experience with custom feeds."
msgstr "Wählen Sie die Algorithmen, die Ihr Erlebnis mit benutzerdefinierten Feeds unterstützen."
-#: src/view/com/auth/create/Step2.tsx:106
+#: src/view/com/auth/create/Step2.tsx:127
msgid "Choose your password"
msgstr "Wählen Sie Ihr Passwort"
-#: src/view/screens/Settings.tsx:694
+#: src/view/screens/Settings.tsx:727
msgid "Clear all legacy storage data"
msgstr "Alle alten Speicherdaten löschen"
-#: src/view/screens/Settings.tsx:696
+#: src/view/screens/Settings.tsx:729
msgid "Clear all legacy storage data (restart after this)"
msgstr "Alle alten Speicherdaten löschen (danach neu starten)"
-#: src/view/screens/Settings.tsx:706
+#: src/view/screens/Settings.tsx:739
msgid "Clear all storage data"
msgstr "Alle alten Speicherdaten löschen"
-#: src/view/screens/Settings.tsx:708
+#: src/view/screens/Settings.tsx:741
msgid "Clear all storage data (restart after this)"
msgstr "Alle alten Speicherdaten löschen (danach neu starten)"
-#: src/view/com/util/forms/SearchInput.tsx:73
-#: src/view/screens/Search/Search.tsx:577
+#: src/view/com/util/forms/SearchInput.tsx:74
+#: src/view/screens/Search/Search.tsx:582
msgid "Clear search query"
msgstr "Suchanfrage löschen"
@@ -497,8 +501,8 @@ msgstr "Antwort zusammenstellen"
#: src/view/com/modals/Confirm.tsx:75
#: src/view/com/modals/SelfLabel.tsx:154
#: src/view/com/modals/VerifyEmail.tsx:225
-#: src/view/screens/PreferencesHomeFeed.tsx:299
-#: src/view/screens/PreferencesThreads.tsx:153
+#: src/view/screens/PreferencesHomeFeed.tsx:305
+#: src/view/screens/PreferencesThreads.tsx:159
msgid "Confirm"
msgstr "Bestätigen"
@@ -522,7 +526,7 @@ msgid "Confirmation code"
msgstr "Bestätigungscode"
#: src/view/com/auth/create/CreateAccount.tsx:174
-#: src/view/com/auth/login/LoginForm.tsx:268
+#: src/view/com/auth/login/LoginForm.tsx:273
msgid "Connecting..."
msgstr "Verbinden..."
@@ -561,11 +565,11 @@ msgstr "Kopiert"
msgid "Copy"
msgstr "Kopie"
-#: src/view/screens/ProfileList.tsx:384
+#: src/view/screens/ProfileList.tsx:385
msgid "Copy link to list"
msgstr "Link zur Liste kopieren"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:131
+#: src/view/com/util/forms/PostDropdownBtn.tsx:139
msgid "Copy link to post"
msgstr "Link zum Posten kopieren"
@@ -573,7 +577,7 @@ msgstr "Link zum Posten kopieren"
msgid "Copy link to profile"
msgstr "Link zum Profil kopieren"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:117
+#: src/view/com/util/forms/PostDropdownBtn.tsx:125
msgid "Copy post text"
msgstr "Posten Text kopieren"
@@ -581,11 +585,11 @@ msgstr "Posten Text kopieren"
msgid "Copyright Policy"
msgstr "Urheberrechtspolitik"
-#: src/view/screens/ProfileFeed.tsx:94
+#: src/view/screens/ProfileFeed.tsx:95
msgid "Could not load feed"
msgstr "Feed konnte nicht geladen werden"
-#: src/view/screens/ProfileList.tsx:830
+#: src/view/screens/ProfileList.tsx:839
msgid "Could not load list"
msgstr "Liste konnte nicht geladen werden"
@@ -594,7 +598,7 @@ msgstr "Liste konnte nicht geladen werden"
msgid "Create a new account"
msgstr "Ein neues Konto erstellen"
-#: src/view/com/auth/create/CreateAccount.tsx:120
+#: src/view/com/auth/create/CreateAccount.tsx:121
msgid "Create Account"
msgstr "Neues Konto erstellen"
@@ -612,11 +616,15 @@ msgstr "Erstellt {0}"
msgid "Custom domain"
msgstr "Benutzerdefinierter Bereich"
-#: src/view/screens/Settings.tsx:615
+#: src/view/screens/PreferencesExternalEmbeds.tsx:55
+msgid "Customize media from external sites."
+msgstr ""
+
+#: src/view/screens/Settings.tsx:648
msgid "Danger Zone"
msgstr "Gefahrenzone"
-#: src/view/screens/Settings.tsx:622
+#: src/view/screens/Settings.tsx:655
msgid "Delete account"
msgstr "Konto löschen"
@@ -629,8 +637,8 @@ msgstr "Konto löschen"
msgid "Delete app password"
msgstr "App-Passwort löschen"
-#: src/view/screens/ProfileList.tsx:351
-#: src/view/screens/ProfileList.tsx:411
+#: src/view/screens/ProfileList.tsx:352
+#: src/view/screens/ProfileList.tsx:412
msgid "Delete List"
msgstr "Liste löschen"
@@ -638,19 +646,19 @@ msgstr "Liste löschen"
msgid "Delete my account"
msgstr "Mein Konto löschen"
-#: src/view/screens/Settings.tsx:632
+#: src/view/screens/Settings.tsx:665
msgid "Delete my account…"
msgstr "Mein Konto löschen..."
-#: src/view/com/util/forms/PostDropdownBtn.tsx:185
+#: src/view/com/util/forms/PostDropdownBtn.tsx:214
msgid "Delete post"
msgstr "Posten löschen"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:189
+#: src/view/com/util/forms/PostDropdownBtn.tsx:218
msgid "Delete this post?"
msgstr "Diesen Posten löschen?"
-#: src/view/com/post-thread/PostThread.tsx:243
+#: src/view/com/post-thread/PostThread.tsx:242
msgid "Deleted post."
msgstr "Posten gelöscht."
@@ -665,15 +673,19 @@ msgstr "Beschreibung"
msgid "Dev Server"
msgstr "Entwicklungs-Server"
-#: src/view/screens/Settings.tsx:637
+#: src/view/screens/Settings.tsx:670
msgid "Developer Tools"
msgstr "Werkzeuge für Entwickler"
-#: src/view/com/composer/Composer.tsx:143
+#: src/view/com/composer/Composer.tsx:211
+msgid "Did you want to say anything?"
+msgstr ""
+
+#: src/view/com/composer/Composer.tsx:144
msgid "Discard"
msgstr "Verwerfen"
-#: src/view/com/composer/Composer.tsx:137
+#: src/view/com/composer/Composer.tsx:138
msgid "Discard draft"
msgstr "Verwerfen"
@@ -698,6 +710,7 @@ msgid "Domain verified!"
msgstr "Domain geprüft!"
#: src/view/com/auth/onboarding/RecommendedFollows.tsx:86
+#: src/view/com/modals/AltImage.tsx:115
#: src/view/com/modals/ContentFilteringSettings.tsx:88
#: src/view/com/modals/ContentFilteringSettings.tsx:96
#: src/view/com/modals/crop-image/CropImage.web.tsx:152
@@ -707,8 +720,8 @@ msgstr "Domain geprüft!"
#: src/view/com/modals/Threadgate.tsx:129
#: src/view/com/modals/Threadgate.tsx:132
#: src/view/com/modals/UserAddRemoveLists.tsx:79
-#: src/view/screens/PreferencesHomeFeed.tsx:302
-#: src/view/screens/PreferencesThreads.tsx:156
+#: src/view/screens/PreferencesHomeFeed.tsx:308
+#: src/view/screens/PreferencesThreads.tsx:162
msgid "Done"
msgstr "Erledigt"
@@ -725,7 +738,7 @@ msgstr "Jeder Code funktioniert einmal. Sie werden regelmäßig weitere Einladun
msgid "Edit image"
msgstr "Bild bearbeiten"
-#: src/view/screens/ProfileList.tsx:399
+#: src/view/screens/ProfileList.tsx:400
msgid "Edit list details"
msgstr "Listendetails bearbeiten"
@@ -750,14 +763,14 @@ msgstr "Profil bearbeiten"
msgid "Edit Saved Feeds"
msgstr "Gespeicherte Feeds bearbeiten"
-#: src/view/com/auth/create/Step2.tsx:90
+#: src/view/com/auth/create/Step2.tsx:108
#: src/view/com/auth/login/ForgotPasswordForm.tsx:148
#: src/view/com/modals/ChangeEmail.tsx:141
#: src/view/com/modals/Waitlist.tsx:88
msgid "Email"
msgstr "E-Mail"
-#: src/view/com/auth/create/Step2.tsx:81
+#: src/view/com/auth/create/Step2.tsx:99
msgid "Email address"
msgstr "E-Mail Adresse"
@@ -769,7 +782,15 @@ msgstr "Email aktualiziert"
msgid "Email:"
msgstr "E-Mail:"
-#: src/view/screens/PreferencesHomeFeed.tsx:138
+#: src/view/com/modals/EmbedConsent.tsx:113
+msgid "Enable {0} only"
+msgstr ""
+
+#: src/view/com/modals/EmbedConsent.tsx:97
+msgid "Enable External Media"
+msgstr ""
+
+#: src/view/screens/PreferencesHomeFeed.tsx:144
msgid "Enable this setting to only see replies between people you follow."
msgstr "Aktivieren Sie diese Einstellung, um nur Antworten zwischen Personen zu sehen, denen Sie folgen."
@@ -789,7 +810,7 @@ msgstr "Geben Sie die zu verwendende Domain ein"
msgid "Enter the email you used to create your account. We'll send you a \"reset code\" so you can set a new password."
msgstr "Geben Sie die E-Mail-Adresse ein, die Sie zur Erstellung Ihres Kontos verwendet haben. Wir senden Ihnen einen \"Reset-Code\" zu, mit dem Sie ein neues Passwort festlegen können."
-#: src/view/com/auth/create/Step2.tsx:86
+#: src/view/com/auth/create/Step2.tsx:104
msgid "Enter your email address"
msgstr "Geben Sie Ihre E-Mail Adresse ein"
@@ -801,7 +822,7 @@ msgstr "Geben Sie Ihre E-Mail Adresse ein"
msgid "Enter your username and password"
msgstr "Geben Sie Ihren Benutzernamen und Ihr Passwort ein"
-#: src/view/screens/Search/Search.tsx:106
+#: src/view/screens/Search/Search.tsx:105
msgid "Error:"
msgstr "Fehler:"
@@ -813,12 +834,26 @@ msgstr "Alle"
msgid "Expand alt text"
msgstr "Alt-Text erweitern"
+#: src/view/com/modals/EmbedConsent.tsx:64
+msgid "External Media"
+msgstr ""
+
+#: src/view/com/modals/EmbedConsent.tsx:75
+#: src/view/screens/PreferencesExternalEmbeds.tsx:66
+msgid "External media may allow websites to collect information about you and your device. No information is sent or requested until you press the \"play\" button."
+msgstr ""
+
+#: src/view/screens/PreferencesExternalEmbeds.tsx:52
+#: src/view/screens/Settings.tsx:595
+msgid "External Media Preferences"
+msgstr ""
+
#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:109
#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:141
msgid "Failed to load recommended feeds"
msgstr "Empfohlene Feeds konnten nicht geladen werden"
-#: src/view/screens/Feeds.tsx:560
+#: src/view/screens/Feeds.tsx:556
msgid "Feed offline"
msgstr "Feed offline"
@@ -826,17 +861,17 @@ msgstr "Feed offline"
msgid "Feed Preferences"
msgstr "Feed-Einstellungen"
-#: src/view/shell/desktop/RightNav.tsx:65
-#: src/view/shell/Drawer.tsx:292
+#: src/view/shell/desktop/RightNav.tsx:73
+#: src/view/shell/Drawer.tsx:311
msgid "Feedback"
msgstr "Rückmeldung"
#: src/view/screens/Feeds.tsx:475
#: src/view/screens/Profile.tsx:165
#: src/view/shell/bottom-bar/BottomBar.tsx:181
-#: src/view/shell/desktop/LeftNav.tsx:340
-#: src/view/shell/Drawer.tsx:455
-#: src/view/shell/Drawer.tsx:456
+#: src/view/shell/desktop/LeftNav.tsx:342
+#: src/view/shell/Drawer.tsx:474
+#: src/view/shell/Drawer.tsx:475
msgid "Feeds"
msgstr "Feeds"
@@ -848,11 +883,11 @@ msgstr "Feeds werden von Nutzern erstellt, um Inhalte zu kuratieren. Wählen Sie
msgid "Feeds are custom algorithms that users build with a little coding expertise. <0/> for more information."
msgstr "Feeds sind benutzerdefinierte Algorithmen, die von den Nutzern mit ein wenig Programmierkenntnissen erstellt werden. <0/> für weitere Informationen."
-#: src/view/screens/Search/Search.tsx:422
+#: src/view/screens/Search/Search.tsx:427
msgid "Find users on Bluesky"
msgstr "Benutzer auf Bluesky finden"
-#: src/view/screens/Search/Search.tsx:420
+#: src/view/screens/Search/Search.tsx:425
msgid "Find users with the search tool on the right"
msgstr "Benutzer mit der Suchfunktion auf der rechten Seite finden"
@@ -860,7 +895,7 @@ msgstr "Benutzer mit der Suchfunktion auf der rechten Seite finden"
msgid "Finding similar accounts..."
msgstr "Suche nach ähnlichen Konten..."
-#: src/view/screens/PreferencesHomeFeed.tsx:102
+#: src/view/screens/PreferencesHomeFeed.tsx:108
msgid "Fine-tune the content you see on your home screen."
msgstr "Optimieren Sie die Inhalte, die Sie auf Ihrem Startbildschirm sehen."
@@ -880,7 +915,7 @@ msgstr "Folgen Sie einigen Nutzern, um loszulegen. Wir können Ihnen weitere Nut
msgid "Followed users"
msgstr "Verfolgte Benutzer"
-#: src/view/screens/PreferencesHomeFeed.tsx:145
+#: src/view/screens/PreferencesHomeFeed.tsx:151
msgid "Followed users only"
msgstr "Nur verfolgte Benutzer"
@@ -909,11 +944,11 @@ msgstr "Aus Sicherheitsgründen müssen wir Ihnen einen Bestätigungscode an Ihr
msgid "For security reasons, you won't be able to view this again. If you lose this password, you'll need to generate a new one."
msgstr "Aus Sicherheitsgründen können Sie es nicht mehr einsehen. Wenn Sie dieses Passwort verlieren, müssen Sie ein neues generieren."
-#: src/view/com/auth/login/LoginForm.tsx:231
+#: src/view/com/auth/login/LoginForm.tsx:236
msgid "Forgot"
msgstr "Vergessen"
-#: src/view/com/auth/login/LoginForm.tsx:228
+#: src/view/com/auth/login/LoginForm.tsx:233
msgid "Forgot password"
msgstr "Passwort vergessen"
@@ -937,15 +972,15 @@ msgstr "Anfangen"
msgid "Go back"
msgstr "Zurückgehen"
-#: src/view/screens/ProfileFeed.tsx:103
-#: src/view/screens/ProfileFeed.tsx:108
-#: src/view/screens/ProfileList.tsx:839
-#: src/view/screens/ProfileList.tsx:844
+#: src/view/screens/ProfileFeed.tsx:104
+#: src/view/screens/ProfileFeed.tsx:109
+#: src/view/screens/ProfileList.tsx:848
+#: src/view/screens/ProfileList.tsx:853
msgid "Go Back"
msgstr "Zurückgehen"
#: src/view/com/auth/login/ForgotPasswordForm.tsx:181
-#: src/view/com/auth/login/LoginForm.tsx:278
+#: src/view/com/auth/login/LoginForm.tsx:283
#: src/view/com/auth/login/SetNewPasswordForm.tsx:163
msgid "Go to next"
msgstr "Weiter zum nächsten"
@@ -954,8 +989,8 @@ msgstr "Weiter zum nächsten"
msgid "Handle"
msgstr "Handgriff"
-#: src/view/shell/desktop/RightNav.tsx:94
-#: src/view/shell/Drawer.tsx:302
+#: src/view/shell/desktop/RightNav.tsx:102
+#: src/view/shell/Drawer.tsx:321
msgid "Help"
msgstr "Hilfe"
@@ -963,12 +998,20 @@ msgstr "Hilfe"
msgid "Here is your app password."
msgstr "Hier ist Ihr App-Passwort."
-#: src/view/com/notifications/FeedItem.tsx:316
+#: src/view/com/notifications/FeedItem.tsx:324
#: src/view/com/util/moderation/ContentHider.tsx:103
msgid "Hide"
msgstr "Ausblenden"
-#: src/view/com/notifications/FeedItem.tsx:308
+#: src/view/com/util/forms/PostDropdownBtn.tsx:173
+msgid "Hide post"
+msgstr ""
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:177
+msgid "Hide this post?"
+msgstr ""
+
+#: src/view/com/notifications/FeedItem.tsx:316
msgid "Hide user list"
msgstr "Benutzerliste ausblenden"
@@ -993,14 +1036,14 @@ msgid "Hmm, we're having trouble finding this feed. It may have been deleted."
msgstr "Hmm, wir haben Probleme, diesen Feed zu finden. Vielleicht wurde er gelöscht."
#: src/view/shell/bottom-bar/BottomBar.tsx:137
-#: src/view/shell/desktop/LeftNav.tsx:304
-#: src/view/shell/Drawer.tsx:379
-#: src/view/shell/Drawer.tsx:380
+#: src/view/shell/desktop/LeftNav.tsx:306
+#: src/view/shell/Drawer.tsx:398
+#: src/view/shell/Drawer.tsx:399
msgid "Home"
msgstr "Startseite"
#: src/view/com/pager/FeedsTabBarMobile.tsx:96
-#: src/view/screens/PreferencesHomeFeed.tsx:95
+#: src/view/screens/PreferencesHomeFeed.tsx:101
#: src/view/screens/Settings.tsx:481
msgid "Home Feed Preferences"
msgstr "Startseite Feed-Einstellungen"
@@ -1035,7 +1078,7 @@ msgstr "Bild-Alt-Text"
msgid "Image options"
msgstr "Bild-Optionen"
-#: src/view/com/auth/login/LoginForm.tsx:113
+#: src/view/com/auth/login/LoginForm.tsx:115
msgid "Invalid username or password"
msgstr "Ungültiger Benutzername oder Passwort"
@@ -1048,7 +1091,7 @@ msgstr "Einladung"
msgid "Invite a Friend"
msgstr "Einen Freund einladen"
-#: src/view/com/auth/create/Step2.tsx:57
+#: src/view/com/auth/create/Step2.tsx:72
msgid "Invite code"
msgstr "Einladungscode"
@@ -1056,7 +1099,7 @@ msgstr "Einladungscode"
msgid "Invite code not accepted. Check that you input it correctly and try again."
msgstr "Einladungscode nicht akzeptiert. Überprüfen Sie, ob Sie ihn richtig eingegeben haben und versuchen Sie es erneut."
-#: src/view/shell/Drawer.tsx:621
+#: src/view/shell/Drawer.tsx:640
msgid "Invite codes: {invitesAvailable} available"
msgstr "Codes einladen: {invitesAvailable} verfügbar"
@@ -1068,8 +1111,8 @@ msgstr "Arbeitsplätze"
msgid "Join the waitlist"
msgstr "Auf die Warteliste setzen"
-#: src/view/com/auth/create/Step2.tsx:68
-#: src/view/com/auth/create/Step2.tsx:72
+#: src/view/com/auth/create/Step2.tsx:86
+#: src/view/com/auth/create/Step2.tsx:90
msgid "Join the waitlist."
msgstr "Auf die Warteliste setzen"
@@ -1129,7 +1172,7 @@ msgstr "Lassen Sie Ihr Passwort zurücksetzen!"
msgid "Library"
msgstr "Bibliothek"
-#: src/view/screens/ProfileFeed.tsx:577
+#: src/view/screens/ProfileFeed.tsx:586
msgid "Like this feed"
msgstr "Dieser Feed gefallen"
@@ -1151,18 +1194,18 @@ msgid "List Name"
msgstr "Namen auflisten"
#: src/view/screens/Profile.tsx:166
-#: src/view/shell/desktop/LeftNav.tsx:377
-#: src/view/shell/Drawer.tsx:471
-#: src/view/shell/Drawer.tsx:472
+#: src/view/shell/desktop/LeftNav.tsx:379
+#: src/view/shell/Drawer.tsx:490
+#: src/view/shell/Drawer.tsx:491
msgid "Lists"
msgstr "Listen"
-#: src/view/com/post-thread/PostThread.tsx:260
-#: src/view/com/post-thread/PostThread.tsx:268
+#: src/view/com/post-thread/PostThread.tsx:259
+#: src/view/com/post-thread/PostThread.tsx:267
msgid "Load more posts"
msgstr "Mehr Beiträge laden"
-#: src/view/screens/Notifications.tsx:144
+#: src/view/screens/Notifications.tsx:148
msgid "Load new notifications"
msgstr "Neue Benachrichtigungen laden"
@@ -1216,9 +1259,9 @@ msgstr "Meldung vom Server"
#: src/view/screens/Moderation.tsx:64
#: src/view/screens/Settings.tsx:563
-#: src/view/shell/desktop/LeftNav.tsx:395
-#: src/view/shell/Drawer.tsx:490
-#: src/view/shell/Drawer.tsx:491
+#: src/view/shell/desktop/LeftNav.tsx:397
+#: src/view/shell/Drawer.tsx:509
+#: src/view/shell/Drawer.tsx:510
msgid "Moderation"
msgstr "Moderation"
@@ -1235,28 +1278,32 @@ msgid "More feeds"
msgstr "Mehr Feeds "
#: src/view/com/profile/ProfileHeader.tsx:548
-#: src/view/screens/ProfileFeed.tsx:360
-#: src/view/screens/ProfileList.tsx:583
+#: src/view/screens/ProfileFeed.tsx:361
+#: src/view/screens/ProfileList.tsx:584
msgid "More options"
msgstr "Mehr Optionen"
+#: src/view/screens/PreferencesThreads.tsx:82
+msgid "Most-liked replies first"
+msgstr ""
+
#: src/view/com/profile/ProfileHeader.tsx:370
msgid "Mute Account"
msgstr "Stummes Konto"
-#: src/view/screens/ProfileList.tsx:510
+#: src/view/screens/ProfileList.tsx:511
msgid "Mute accounts"
msgstr "Stummes Konto"
-#: src/view/screens/ProfileList.tsx:457
+#: src/view/screens/ProfileList.tsx:458
msgid "Mute list"
msgstr "Stumme Liste"
-#: src/view/screens/ProfileList.tsx:270
+#: src/view/screens/ProfileList.tsx:271
msgid "Mute these accounts?"
msgstr "Diese Konten stummschalten?"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:149
+#: src/view/com/util/forms/PostDropdownBtn.tsx:157
msgid "Mute thread"
msgstr "Thema stummschalten"
@@ -1264,15 +1311,15 @@ msgstr "Thema stummschalten"
msgid "Muted accounts"
msgstr "Stumme Kontos"
-#: src/view/screens/ModerationMutedAccounts.tsx:106
+#: src/view/screens/ModerationMutedAccounts.tsx:107
msgid "Muted Accounts"
msgstr "Stumme Kontos"
-#: src/view/screens/ModerationMutedAccounts.tsx:114
+#: src/view/screens/ModerationMutedAccounts.tsx:115
msgid "Muted accounts have their posts removed from your feed and from your notifications. Mutes are completely private."
msgstr "Bei stummgeschalteten Konten werden deren Beiträge aus deinem Feed und deinen Benachrichtigungen entfernt. Stummschaltungen sind vollständig privat."
-#: src/view/screens/ProfileList.tsx:272
+#: src/view/screens/ProfileList.tsx:273
msgid "Muting is private. Muted accounts can interact with you, but you will not see their posts or receive notifications from them."
msgstr "Stummschalten ist privat. Stummgeschaltete Konten können mit Ihnen interagieren, aber Sie sehen ihre Beiträge nicht und erhalten keine Benachrichtigungen von ihnen."
@@ -1297,6 +1344,11 @@ msgstr "Meine gespeicherte Feeds "
msgid "Name"
msgstr "Namen"
+#: src/view/com/modals/EmbedConsent.tsx:107
+#: src/view/com/modals/EmbedConsent.tsx:123
+msgid "Never load embeds from {0}"
+msgstr ""
+
#: src/view/com/auth/onboarding/WelcomeMobile.tsx:72
msgid "Never lose access to your followers and data."
msgstr "Verlieren Sie nie den Zugriff auf Ihre Follower und Daten."
@@ -1307,23 +1359,27 @@ msgid "New"
msgstr "Neu"
#: src/view/com/feeds/FeedPage.tsx:200
-#: src/view/screens/Feeds.tsx:511
+#: src/view/screens/Feeds.tsx:507
#: src/view/screens/Profile.tsx:354
-#: src/view/screens/ProfileFeed.tsx:430
-#: src/view/screens/ProfileList.tsx:193
-#: src/view/screens/ProfileList.tsx:221
-#: src/view/shell/desktop/LeftNav.tsx:247
+#: src/view/screens/ProfileFeed.tsx:431
+#: src/view/screens/ProfileList.tsx:194
+#: src/view/screens/ProfileList.tsx:222
+#: src/view/shell/desktop/LeftNav.tsx:248
msgid "New post"
msgstr "Neuer Posten "
-#: src/view/shell/desktop/LeftNav.tsx:257
+#: src/view/shell/desktop/LeftNav.tsx:258
msgid "New Post"
msgstr "Neuer Posten "
+#: src/view/screens/PreferencesThreads.tsx:79
+msgid "Newest replies first"
+msgstr ""
+
#: src/view/com/auth/create/CreateAccount.tsx:154
#: src/view/com/auth/login/ForgotPasswordForm.tsx:174
#: src/view/com/auth/login/ForgotPasswordForm.tsx:184
-#: src/view/com/auth/login/LoginForm.tsx:281
+#: src/view/com/auth/login/LoginForm.tsx:286
#: src/view/com/auth/login/SetNewPasswordForm.tsx:156
#: src/view/com/auth/login/SetNewPasswordForm.tsx:166
#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:79
@@ -1334,14 +1390,17 @@ msgstr "Nächster"
msgid "Next image"
msgstr "Nächstes Bild "
-#: src/view/screens/PreferencesHomeFeed.tsx:191
-#: src/view/screens/PreferencesHomeFeed.tsx:226
-#: src/view/screens/PreferencesHomeFeed.tsx:263
+#: src/view/screens/PreferencesHomeFeed.tsx:126
+#: src/view/screens/PreferencesHomeFeed.tsx:197
+#: src/view/screens/PreferencesHomeFeed.tsx:232
+#: src/view/screens/PreferencesHomeFeed.tsx:269
+#: src/view/screens/PreferencesThreads.tsx:106
+#: src/view/screens/PreferencesThreads.tsx:129
msgid "No"
msgstr "Nein"
-#: src/view/screens/ProfileFeed.tsx:570
-#: src/view/screens/ProfileList.tsx:711
+#: src/view/screens/ProfileFeed.tsx:579
+#: src/view/screens/ProfileList.tsx:720
msgid "No description"
msgstr "Ohne Beschreibung"
@@ -1354,13 +1413,17 @@ msgid "No results found for \"{query}\""
msgstr "Keine Ergebnisse gefunden für \"{query}\""
#: src/view/com/modals/ListAddRemoveUsers.tsx:127
-#: src/view/screens/Search/Search.tsx:271
-#: src/view/screens/Search/Search.tsx:299
-#: src/view/screens/Search/Search.tsx:615
+#: src/view/screens/Search/Search.tsx:270
+#: src/view/screens/Search/Search.tsx:298
+#: src/view/screens/Search/Search.tsx:629
#: src/view/shell/desktop/Search.tsx:210
msgid "No results found for {query}"
msgstr "Keine Ergebnisse gefunden für {query}"
+#: src/view/com/modals/EmbedConsent.tsx:129
+msgid "No thanks"
+msgstr ""
+
#: src/view/com/modals/Threadgate.tsx:82
msgid "Nobody"
msgstr "Niemand"
@@ -1373,12 +1436,12 @@ msgstr "Nicht anwendbar."
msgid "Note: Bluesky is an open and public network. This setting only limits the visibility of your content on the Bluesky app and website, and other apps may not respect this setting. Your content may still be shown to logged-out users by other apps and websites."
msgstr "Hinweis: Bluesky ist ein offenes und öffentliches Netzwerk. Diese Einstellung schränkt nur die Sichtbarkeit Ihrer Inhalte auf der Bluesky-App und -Website ein, und andere Apps respektieren diese Einstellung möglicherweise nicht. Deine Inhalte können für abgemeldete Benutzer von anderen Apps und Websites weiterhin angezeigt werden."
-#: src/view/screens/Notifications.tsx:109
-#: src/view/screens/Notifications.tsx:133
+#: src/view/screens/Notifications.tsx:113
+#: src/view/screens/Notifications.tsx:137
#: src/view/shell/bottom-bar/BottomBar.tsx:205
-#: src/view/shell/desktop/LeftNav.tsx:359
-#: src/view/shell/Drawer.tsx:416
-#: src/view/shell/Drawer.tsx:417
+#: src/view/shell/desktop/LeftNav.tsx:361
+#: src/view/shell/Drawer.tsx:435
+#: src/view/shell/Drawer.tsx:436
msgid "Notifications"
msgstr "Benachrichtigungen "
@@ -1390,7 +1453,11 @@ msgstr "Ach nein!"
msgid "Okay"
msgstr "Okay"
-#: src/view/com/composer/Composer.tsx:354
+#: src/view/screens/PreferencesThreads.tsx:78
+msgid "Oldest replies first"
+msgstr ""
+
+#: src/view/com/composer/Composer.tsx:363
msgid "One or more images is missing alt text."
msgstr "Bei einem oder mehreren Bildern fehlt der Alt-Text."
@@ -1398,6 +1465,11 @@ msgstr "Bei einem oder mehreren Bildern fehlt der Alt-Text."
msgid "Only {0} can reply."
msgstr "Nur {0} kann antworten."
+#: src/view/com/composer/Composer.tsx:468
+#: src/view/com/composer/Composer.tsx:469
+msgid "Open emoji picker"
+msgstr ""
+
#: src/view/com/pager/FeedsTabBarMobile.tsx:76
msgid "Open navigation"
msgstr "Offene Navigation"
@@ -1406,8 +1478,12 @@ msgstr "Offene Navigation"
msgid "Opens configurable language settings"
msgstr "Öffnet die konfigurierbaren Spracheinstellungen"
-#: src/view/shell/desktop/RightNav.tsx:148
-#: src/view/shell/Drawer.tsx:622
+#: src/view/screens/Settings.tsx:587
+msgid "Opens external embeds settings"
+msgstr ""
+
+#: src/view/shell/desktop/RightNav.tsx:156
+#: src/view/shell/Drawer.tsx:641
msgid "Opens list of invite codes"
msgstr "Öffnet die Liste der Einladungscodes"
@@ -1423,7 +1499,7 @@ msgstr "Öffnet die Moderationseinstellungen"
msgid "Opens screen with all saved feeds"
msgstr "Öffnet den Bildschirm mit allen gespeicherten Feeds"
-#: src/view/screens/Settings.tsx:581
+#: src/view/screens/Settings.tsx:614
msgid "Opens the app password settings page"
msgstr "Öffnet die Einstellungsseite für das App-Passwort"
@@ -1431,11 +1507,11 @@ msgstr "Öffnet die Einstellungsseite für das App-Passwort"
msgid "Opens the home feed preferences"
msgstr "Öffnet die Homefeed-Einstellungen"
-#: src/view/screens/Settings.tsx:664
+#: src/view/screens/Settings.tsx:697
msgid "Opens the storybook page"
msgstr "Öffnet die Märchenbuchseite"
-#: src/view/screens/Settings.tsx:644
+#: src/view/screens/Settings.tsx:677
msgid "Opens the system log page"
msgstr "Öffnet die Systemprotokollseite"
@@ -1443,6 +1519,10 @@ msgstr "Öffnet die Systemprotokollseite"
msgid "Opens the threads preferences"
msgstr "Öffnet die Thread-Einstellungen"
+#: src/view/com/modals/Threadgate.tsx:89
+msgid "Or combine these options:"
+msgstr ""
+
#: src/view/com/auth/login/ChooseAccountForm.tsx:138
msgid "Other account"
msgstr "Anderes Konto "
@@ -1460,9 +1540,9 @@ msgstr "Andere..."
msgid "Page not found"
msgstr "Seite nicht gefunden"
-#: src/view/com/auth/create/Step2.tsx:101
-#: src/view/com/auth/create/Step2.tsx:111
-#: src/view/com/auth/login/LoginForm.tsx:216
+#: src/view/com/auth/create/Step2.tsx:122
+#: src/view/com/auth/create/Step2.tsx:132
+#: src/view/com/auth/login/LoginForm.tsx:221
#: src/view/com/auth/login/SetNewPasswordForm.tsx:130
#: src/view/com/modals/DeleteAccount.tsx:191
msgid "Password"
@@ -1484,6 +1564,19 @@ msgstr "Bilder, die für Erwachsene gedacht sind."
msgid "Pinned Feeds"
msgstr "Angepinnte Feeds"
+#: src/view/com/util/post-embeds/ExternalGifEmbed.tsx:111
+msgid "Play {0}"
+msgstr ""
+
+#: src/view/com/util/post-embeds/ExternalPlayerEmbed.tsx:54
+#: src/view/com/util/post-embeds/ExternalPlayerEmbed.tsx:55
+msgid "Play Video"
+msgstr ""
+
+#: src/view/com/util/post-embeds/ExternalGifEmbed.tsx:110
+msgid "Plays the GIF"
+msgstr ""
+
#: src/view/com/auth/create/state.ts:116
msgid "Please choose your handle."
msgstr "Bitte wählen Sie Ihren Handgriff."
@@ -1518,13 +1611,17 @@ msgstr ""
#~ msgid "Please tell us why you think this decision was incorrect."
#~ msgstr "Bitte teilen Sie uns mit, warum diese Entscheidung Ihrer Meinung nach falsch war."
-#: src/view/com/composer/Composer.tsx:337
-#: src/view/com/post-thread/PostThread.tsx:226
+#: src/view/com/composer/Composer.tsx:215
+msgid "Please wait for your link card to finish loading"
+msgstr ""
+
+#: src/view/com/composer/Composer.tsx:346
+#: src/view/com/post-thread/PostThread.tsx:225
#: src/view/screens/PostThread.tsx:80
msgid "Post"
msgstr "Posten "
-#: src/view/com/post-thread/PostThread.tsx:385
+#: src/view/com/post-thread/PostThread.tsx:378
msgid "Post hidden"
msgstr "Versteckter Posten"
@@ -1536,7 +1633,7 @@ msgstr "Postsprache"
msgid "Post Languages"
msgstr "Postsprachen"
-#: src/view/com/post-thread/PostThread.tsx:437
+#: src/view/com/post-thread/PostThread.tsx:430
msgid "Post not found"
msgstr "Posten nicht gefunden"
@@ -1556,15 +1653,18 @@ msgstr "Vorheriges Bild"
msgid "Primary Language"
msgstr "Primäre Sprache"
-#: src/view/screens/PreferencesThreads.tsx:91
+#: src/view/screens/PreferencesThreads.tsx:97
msgid "Prioritize Your Follows"
msgstr "Priorisieren Sie Ihre Anhängerschaft"
-#: src/view/shell/desktop/RightNav.tsx:76
+#: src/view/screens/Settings.tsx:570
+#: src/view/shell/desktop/RightNav.tsx:84
msgid "Privacy"
msgstr "Privatsphäre"
#: src/view/screens/PrivacyPolicy.tsx:29
+#: src/view/screens/Settings.tsx:783
+#: src/view/shell/Drawer.tsx:262
msgid "Privacy Policy"
msgstr "Datenschutzbestimmungen"
@@ -1573,14 +1673,14 @@ msgid "Processing..."
msgstr "Verarbeitung..."
#: src/view/shell/bottom-bar/BottomBar.tsx:247
-#: src/view/shell/desktop/LeftNav.tsx:413
-#: src/view/shell/Drawer.tsx:69
-#: src/view/shell/Drawer.tsx:525
-#: src/view/shell/Drawer.tsx:526
+#: src/view/shell/desktop/LeftNav.tsx:415
+#: src/view/shell/Drawer.tsx:70
+#: src/view/shell/Drawer.tsx:544
+#: src/view/shell/Drawer.tsx:545
msgid "Profile"
msgstr "Profile"
-#: src/view/screens/Settings.tsx:789
+#: src/view/screens/Settings.tsx:841
msgid "Protect your account by verifying your email."
msgstr "Schützen Sie Ihr Konto, indem Sie Ihre E-Mail verifizieren."
@@ -1601,6 +1701,10 @@ msgstr "Angebotsposten"
msgid "Quote Post"
msgstr "Angebotsposten"
+#: src/view/screens/PreferencesThreads.tsx:86
+msgid "Random (aka \"Poster's Roulette\")"
+msgstr ""
+
#: src/view/com/modals/EditImage.tsx:236
msgid "Ratios"
msgstr "Verhältnisse"
@@ -1635,7 +1739,7 @@ msgstr "Feed entfernen"
#: src/view/com/feeds/FeedSourceCard.tsx:105
#: src/view/com/feeds/FeedSourceCard.tsx:172
-#: src/view/screens/ProfileFeed.tsx:270
+#: src/view/screens/ProfileFeed.tsx:271
msgid "Remove from my feeds"
msgstr "Aus meinen Feeds entfernen"
@@ -1668,7 +1772,7 @@ msgstr "Antworten"
msgid "Replies to this thread are disabled"
msgstr "Antworten auf diesen Thread sind deaktiviert"
-#: src/view/screens/PreferencesHomeFeed.tsx:135
+#: src/view/screens/PreferencesHomeFeed.tsx:141
msgid "Reply Filters"
msgstr "Antwort-Filter"
@@ -1680,16 +1784,16 @@ msgstr "Bericht {Sammlungsname}"
msgid "Report Account"
msgstr "Bericht Konto"
-#: src/view/screens/ProfileFeed.tsx:290
+#: src/view/screens/ProfileFeed.tsx:291
msgid "Report feed"
msgstr "Bericht Feed"
-#: src/view/screens/ProfileList.tsx:425
+#: src/view/screens/ProfileList.tsx:426
msgid "Report List"
msgstr "Bericht Liste"
#: src/view/com/modals/report/SendReportButton.tsx:37
-#: src/view/com/util/forms/PostDropdownBtn.tsx:167
+#: src/view/com/util/forms/PostDropdownBtn.tsx:196
msgid "Report post"
msgstr "Beitrag berichten"
@@ -1711,7 +1815,11 @@ msgstr "Nachgetragen von"
msgid "Request Change"
msgstr "Änderung beantragen"
-#: src/view/com/auth/create/Step2.tsx:53
+#: src/view/screens/Settings.tsx:422
+msgid "Require alt text before posting"
+msgstr ""
+
+#: src/view/com/auth/create/Step2.tsx:68
msgid "Required for this provider"
msgstr "Für diesen Anbieter erforderlich"
@@ -1719,7 +1827,7 @@ msgstr "Für diesen Anbieter erforderlich"
msgid "Reset code"
msgstr "Code zurücksetzen"
-#: src/view/screens/Settings.tsx:686
+#: src/view/screens/Settings.tsx:719
msgid "Reset onboarding state"
msgstr "Onboarding-Status zurücksetzen"
@@ -1727,30 +1835,29 @@ msgstr "Onboarding-Status zurücksetzen"
msgid "Reset password"
msgstr "Passwort zurücksetzen"
-#: src/view/screens/Settings.tsx:676
+#: src/view/screens/Settings.tsx:709
msgid "Reset preferences state"
msgstr "Einstellungen zurücksetzen"
-#: src/view/screens/Settings.tsx:684
+#: src/view/screens/Settings.tsx:717
msgid "Resets the onboarding state"
msgstr "Onboarding-Status zurücksetzen"
-#: src/view/screens/Settings.tsx:674
+#: src/view/screens/Settings.tsx:707
msgid "Resets the preferences state"
msgstr "Setzt den Zustand der Einstellungen zurück"
#: src/view/com/auth/create/CreateAccount.tsx:163
#: src/view/com/auth/create/CreateAccount.tsx:167
-#: src/view/com/auth/login/LoginForm.tsx:258
-#: src/view/com/auth/login/LoginForm.tsx:261
+#: src/view/com/auth/login/LoginForm.tsx:263
+#: src/view/com/auth/login/LoginForm.tsx:266
#: src/view/com/util/error/ErrorMessage.tsx:55
#: src/view/com/util/error/ErrorScreen.tsx:65
msgid "Retry"
msgstr "Wiederholung"
-#: src/view/com/modals/AltImage.tsx:115
-#: src/view/com/modals/BirthDateSettings.tsx:93
-#: src/view/com/modals/BirthDateSettings.tsx:96
+#: src/view/com/modals/BirthDateSettings.tsx:94
+#: src/view/com/modals/BirthDateSettings.tsx:97
#: src/view/com/modals/ChangeHandle.tsx:173
#: src/view/com/modals/CreateOrEditList.tsx:249
#: src/view/com/modals/CreateOrEditList.tsx:257
@@ -1779,15 +1886,15 @@ msgid "Saved Feeds"
msgstr "Gespeicherte Feeds"
#: src/view/com/modals/ListAddRemoveUsers.tsx:75
-#: src/view/com/util/forms/SearchInput.tsx:64
-#: src/view/screens/Search/Search.tsx:401
-#: src/view/screens/Search/Search.tsx:567
+#: src/view/com/util/forms/SearchInput.tsx:65
+#: src/view/screens/Search/Search.tsx:406
+#: src/view/screens/Search/Search.tsx:572
#: src/view/shell/bottom-bar/BottomBar.tsx:159
-#: src/view/shell/desktop/LeftNav.tsx:322
+#: src/view/shell/desktop/LeftNav.tsx:324
#: src/view/shell/desktop/Search.tsx:161
#: src/view/shell/desktop/Search.tsx:170
-#: src/view/shell/Drawer.tsx:343
-#: src/view/shell/Drawer.tsx:344
+#: src/view/shell/Drawer.tsx:362
+#: src/view/shell/Drawer.tsx:363
msgid "Search"
msgstr "Suche"
@@ -1812,7 +1919,7 @@ msgstr "Wählen Sie Bluesky Social"
msgid "Select from an existing account"
msgstr "Aus einem bestehenden Konto auswählen"
-#: src/view/com/auth/login/LoginForm.tsx:143
+#: src/view/com/auth/login/LoginForm.tsx:147
msgid "Select service"
msgstr "Dienst auswählen"
@@ -1840,8 +1947,8 @@ msgstr "E-Mail senden"
msgid "Send Email"
msgstr "E-Mail senden"
-#: src/view/shell/Drawer.tsx:276
-#: src/view/shell/Drawer.tsx:297
+#: src/view/shell/Drawer.tsx:295
+#: src/view/shell/Drawer.tsx:316
msgid "Send feedback"
msgstr "Rückmeldung senden"
@@ -1853,30 +1960,30 @@ msgstr "Bericht senden"
msgid "Set new password"
msgstr "Neues Passwort festlegen"
-#: src/view/screens/PreferencesHomeFeed.tsx:216
+#: src/view/screens/PreferencesHomeFeed.tsx:222
msgid "Set this setting to \"No\" to hide all quote posts from your feed. Reposts will still be visible."
msgstr "Setzen Sie diese Einstellung auf \"Nein\", um alle zitierten Beiträge aus Ihrem Feed auszublenden. Neu eingestellte Beiträge sind weiterhin sichtbar."
-#: src/view/screens/PreferencesHomeFeed.tsx:113
+#: src/view/screens/PreferencesHomeFeed.tsx:119
msgid "Set this setting to \"No\" to hide all replies from your feed."
msgstr "Setzen Sie diese Einstellung auf \"Nein\", um alle Antworten aus Ihrem Feed auszublenden."
-#: src/view/screens/PreferencesHomeFeed.tsx:182
+#: src/view/screens/PreferencesHomeFeed.tsx:188
msgid "Set this setting to \"No\" to hide all reposts from your feed."
msgstr "Setzen Sie diese Einstellung auf \"Nein\", um alle wieder geposteten Beiträge aus Ihrem Feed auszublenden."
-#: src/view/screens/PreferencesThreads.tsx:116
+#: src/view/screens/PreferencesThreads.tsx:122
msgid "Set this setting to \"Yes\" to show replies in a threaded view. This is an experimental feature."
msgstr "Setzen Sie diese Einstellung auf \"Ja\", um Antworten in einer Thread-Ansicht anzuzeigen. Dies ist eine experimentelle Funktion."
-#: src/view/screens/PreferencesHomeFeed.tsx:252
+#: src/view/screens/PreferencesHomeFeed.tsx:258
msgid "Set this setting to \"Yes\" to show samples of your saved feeds in your following feed. This is an experimental feature."
msgstr "Setzen Sie diese Einstellung auf \"Ja\", um Beispiele für Ihre gespeicherten Feeds in Ihrem folgenden Feed anzuzeigen. Dies ist eine experimentelle Funktion."
#: src/view/screens/Settings.tsx:277
-#: src/view/shell/desktop/LeftNav.tsx:431
-#: src/view/shell/Drawer.tsx:546
-#: src/view/shell/Drawer.tsx:547
+#: src/view/shell/desktop/LeftNav.tsx:433
+#: src/view/shell/Drawer.tsx:565
+#: src/view/shell/Drawer.tsx:566
msgid "Settings"
msgstr "Einstellungen"
@@ -1885,12 +1992,12 @@ msgid "Sexual activity or erotic nudity."
msgstr "Sexuelle Aktivitäten oder erotische Nacktheit."
#: src/view/com/profile/ProfileHeader.tsx:338
-#: src/view/com/util/forms/PostDropdownBtn.tsx:131
-#: src/view/screens/ProfileList.tsx:384
+#: src/view/com/util/forms/PostDropdownBtn.tsx:139
+#: src/view/screens/ProfileList.tsx:385
msgid "Share"
msgstr "Teilen"
-#: src/view/screens/ProfileFeed.tsx:302
+#: src/view/screens/ProfileFeed.tsx:303
msgid "Share feed"
msgstr "Feeds teilen"
@@ -1903,27 +2010,31 @@ msgstr "Zeigen"
msgid "Show anyway"
msgstr "Trotzdem anzeigen"
-#: src/view/screens/PreferencesHomeFeed.tsx:249
+#: src/view/com/modals/EmbedConsent.tsx:87
+msgid "Show embeds from {0}"
+msgstr ""
+
+#: src/view/screens/PreferencesHomeFeed.tsx:255
msgid "Show Posts from My Feeds"
msgstr "Beiträge von My Feeds anzeigen"
-#: src/view/screens/PreferencesHomeFeed.tsx:213
+#: src/view/screens/PreferencesHomeFeed.tsx:219
msgid "Show Quote Posts"
msgstr "Angebotsposten zeigen"
-#: src/view/screens/PreferencesHomeFeed.tsx:110
+#: src/view/screens/PreferencesHomeFeed.tsx:116
msgid "Show Replies"
msgstr "Antworten zeigen"
-#: src/view/screens/PreferencesThreads.tsx:94
+#: src/view/screens/PreferencesThreads.tsx:100
msgid "Show replies by people you follow before all other replies."
msgstr "Antworten von Personen, denen Sie folgen, vor allen anderen Antworten anzeigen."
-#: src/view/screens/PreferencesHomeFeed.tsx:179
+#: src/view/screens/PreferencesHomeFeed.tsx:185
msgid "Show Reposts"
msgstr "Wiederholungen anzeigen"
-#: src/view/com/notifications/FeedItem.tsx:337
+#: src/view/com/notifications/FeedItem.tsx:345
msgid "Show users"
msgstr "Benutzer zeigen"
@@ -1956,7 +2067,7 @@ msgstr "Eintragen als {0}"
msgid "Sign in as..."
msgstr "Eintragen als..."
-#: src/view/com/auth/login/LoginForm.tsx:130
+#: src/view/com/auth/login/LoginForm.tsx:134
msgid "Sign into"
msgstr "Anmelden"
@@ -2010,11 +2121,11 @@ msgstr "Platz"
msgid "Staging"
msgstr "Aufführung"
-#: src/view/screens/Settings.tsx:730
+#: src/view/screens/Settings.tsx:763
msgid "Status page"
msgstr "Status-Seite"
-#: src/view/screens/Settings.tsx:666
+#: src/view/screens/Settings.tsx:699
msgid "Storybook"
msgstr "Märchenbuch"
@@ -2022,15 +2133,15 @@ msgstr "Märchenbuch"
msgid "Submit"
msgstr "Einreichen"
-#: src/view/screens/ProfileList.tsx:574
+#: src/view/screens/ProfileList.tsx:575
msgid "Subscribe"
msgstr "Abonnieren"
-#: src/view/screens/ProfileList.tsx:570
+#: src/view/screens/ProfileList.tsx:571
msgid "Subscribe to this list"
msgstr "Abonnieren Sie diese Liste"
-#: src/view/screens/Search/Search.tsx:357
+#: src/view/screens/Search/Search.tsx:362
msgid "Suggested Follows"
msgstr "Vorgeschlagene Followerliste"
@@ -2043,7 +2154,7 @@ msgstr "Unterstützung"
msgid "Switch Account"
msgstr "Konto wechseln"
-#: src/view/screens/Settings.tsx:646
+#: src/view/screens/Settings.tsx:679
msgid "System log"
msgstr "System-Protokoll"
@@ -2051,16 +2162,18 @@ msgstr "System-Protokoll"
msgid "Tall"
msgstr "Groß"
-#: src/view/shell/desktop/RightNav.tsx:85
+#: src/view/shell/desktop/RightNav.tsx:93
msgid "Terms"
msgstr "Bedingungen"
+#: src/view/screens/Settings.tsx:777
#: src/view/screens/TermsOfService.tsx:29
+#: src/view/shell/Drawer.tsx:256
msgid "Terms of Service"
msgstr "Bedingungen der Dienstleistung"
#: src/view/com/modals/AppealLabel.tsx:70
-#: src/view/com/modals/report/InputIssueDetails.tsx:50
+#: src/view/com/modals/report/InputIssueDetails.tsx:51
msgid "Text input field"
msgstr "Text-Eingabefeld"
@@ -2076,7 +2189,7 @@ msgstr "Die Gemeinschaftsrichtlinien wurden nach <0/> verschoben."
msgid "The Copyright Policy has been moved to <0/>"
msgstr "Die Urheberrechtspolitik wurde nach <0/> verschoben."
-#: src/view/com/post-thread/PostThread.tsx:440
+#: src/view/com/post-thread/PostThread.tsx:433
msgid "The post may have been deleted."
msgstr "Der Beitrag kann gelöscht worden sein."
@@ -2108,6 +2221,10 @@ msgstr "Diese {screenDescription} wurde markiert:"
msgid "This account has requested that users sign in to view their profile."
msgstr "Dieses Konto hat die Benutzer aufgefordert, sich anzumelden, um ihr Profil zu sehen."
+#: src/view/com/modals/EmbedConsent.tsx:68
+msgid "This content is hosted by {0}. Do you want to enable external media?"
+msgstr ""
+
#: src/view/com/posts/FeedErrorMessage.tsx:107
msgid "This content is not viewable without a Bluesky account."
msgstr "Dieser Inhalt kann ohne Bluesky-Konto nicht angezeigt werden."
@@ -2140,12 +2257,16 @@ msgstr "Dieser Beitrag wurde gelöscht."
msgid "This warning is only available for posts with media attached."
msgstr "Diese Warnung ist nur für Beiträge mit angehängten Medien verfügbar."
+#: src/view/com/util/forms/PostDropdownBtn.tsx:178
+msgid "This will hide this post from your feeds."
+msgstr ""
+
#: src/view/screens/PreferencesThreads.tsx:53
#: src/view/screens/Settings.tsx:503
msgid "Thread Preferences"
msgstr "Einstellungen zum Thema"
-#: src/view/screens/PreferencesThreads.tsx:113
+#: src/view/screens/PreferencesThreads.tsx:119
msgid "Threaded Mode"
msgstr "Gewindemodus"
@@ -2157,9 +2278,9 @@ msgstr "Dropdown umschalten"
msgid "Transformations"
msgstr "Verwandlungen"
-#: src/view/com/post-thread/PostThreadItem.tsx:704
-#: src/view/com/post-thread/PostThreadItem.tsx:706
-#: src/view/com/util/forms/PostDropdownBtn.tsx:103
+#: src/view/com/post-thread/PostThreadItem.tsx:705
+#: src/view/com/post-thread/PostThreadItem.tsx:707
+#: src/view/com/util/forms/PostDropdownBtn.tsx:111
msgid "Translate"
msgstr "Übersetze"
@@ -2167,17 +2288,17 @@ msgstr "Übersetze"
msgid "Try again"
msgstr "Nochmals versuchen"
-#: src/view/screens/ProfileList.tsx:472
+#: src/view/screens/ProfileList.tsx:473
msgid "Un-block list"
msgstr "Liste freigeben"
-#: src/view/screens/ProfileList.tsx:457
+#: src/view/screens/ProfileList.tsx:458
msgid "Un-mute list"
msgstr "Stummschaltliste aufheben"
-#: src/view/com/auth/create/CreateAccount.tsx:64
+#: src/view/com/auth/create/CreateAccount.tsx:65
#: src/view/com/auth/login/Login.tsx:76
-#: src/view/com/auth/login/LoginForm.tsx:117
+#: src/view/com/auth/login/LoginForm.tsx:120
msgid "Unable to contact your service. Please check your Internet connection."
msgstr "Sie können Ihren Dienst nicht kontaktieren. Bitte überprüfen Sie Ihre Internetverbindung."
@@ -2195,7 +2316,7 @@ msgstr "Konto freischalten"
msgid "Undo repost"
msgstr "Umbuchung rückgängig machen"
-#: src/view/com/auth/create/state.ts:210
+#: src/view/com/auth/create/state.ts:216
msgid "Unfortunately, you do not meet the requirements to create an account."
msgstr "Leider erfüllen Sie nicht die Voraussetzungen, um ein Konto zu erstellen."
@@ -2203,11 +2324,11 @@ msgstr "Leider erfüllen Sie nicht die Voraussetzungen, um ein Konto zu erstelle
msgid "Unmute Account"
msgstr "Konto entstören"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:149
+#: src/view/com/util/forms/PostDropdownBtn.tsx:157
msgid "Unmute thread"
msgstr "Thema aufheben"
-#: src/view/screens/ProfileList.tsx:440
+#: src/view/screens/ProfileList.tsx:441
msgid "Unpin moderation list"
msgstr "Moderation Liste"
@@ -2251,12 +2372,12 @@ msgstr "Benutzerhandgriff"
msgid "User Lists"
msgstr "Benutzer Liste"
-#: src/view/com/auth/login/LoginForm.tsx:170
-#: src/view/com/auth/login/LoginForm.tsx:187
+#: src/view/com/auth/login/LoginForm.tsx:174
+#: src/view/com/auth/login/LoginForm.tsx:192
msgid "Username or email address"
msgstr "Benutzername oder E-Mail Adresse"
-#: src/view/screens/ProfileList.tsx:738
+#: src/view/screens/ProfileList.tsx:747
msgid "Users"
msgstr "Benutzer"
@@ -2268,15 +2389,15 @@ msgstr "Benutzer gefolgt von <0/>"
msgid "Users in \"{0}\""
msgstr "Benutzer in \"{0}\""
-#: src/view/screens/Settings.tsx:750
+#: src/view/screens/Settings.tsx:802
msgid "Verify email"
msgstr "E-Mail überprüfen"
-#: src/view/screens/Settings.tsx:775
+#: src/view/screens/Settings.tsx:827
msgid "Verify my email"
msgstr "E-Mail überprüfen"
-#: src/view/screens/Settings.tsx:784
+#: src/view/screens/Settings.tsx:836
msgid "Verify My Email"
msgstr "E-Mail überprüfen"
@@ -2297,11 +2418,11 @@ msgstr "Avatar sehen"
msgid "Visit Site"
msgstr "Seite besuchen"
-#: src/view/com/auth/create/CreateAccount.tsx:121
+#: src/view/com/auth/create/CreateAccount.tsx:122
msgid "We're so excited to have you join us!"
msgstr "Wir freuen uns, Sie bei uns begrüßen zu dürfen!"
-#: src/view/screens/Search/Search.tsx:238
+#: src/view/screens/Search/Search.tsx:243
msgid "We're sorry, but your search could not be completed. Please try again in a few minutes."
msgstr "Es tut uns leid, aber Ihre Suche konnte nicht abgeschlossen werden. Bitte versuchen Sie es in ein paar Minuten erneut."
@@ -2342,7 +2463,7 @@ msgstr "Wer kann antworten."
msgid "Wide"
msgstr "Breit"
-#: src/view/com/composer/Composer.tsx:409
+#: src/view/com/composer/Composer.tsx:418
msgid "Write post"
msgstr "Posten schreiben"
@@ -2350,9 +2471,12 @@ msgstr "Posten schreiben"
msgid "Write your reply"
msgstr "Schreiben Sie Ihre Antwort"
-#: src/view/screens/PreferencesHomeFeed.tsx:192
-#: src/view/screens/PreferencesHomeFeed.tsx:227
-#: src/view/screens/PreferencesHomeFeed.tsx:262
+#: src/view/screens/PreferencesHomeFeed.tsx:126
+#: src/view/screens/PreferencesHomeFeed.tsx:198
+#: src/view/screens/PreferencesHomeFeed.tsx:233
+#: src/view/screens/PreferencesHomeFeed.tsx:268
+#: src/view/screens/PreferencesThreads.tsx:106
+#: src/view/screens/PreferencesThreads.tsx:129
msgid "Yes"
msgstr "Ja"
@@ -2381,20 +2505,20 @@ msgstr "Sie haben keine gespeicherte Feeds!"
msgid "You don't have any saved feeds."
msgstr "Sie haben keine gespeicherte Feeds."
-#: src/view/com/post-thread/PostThread.tsx:388
+#: src/view/com/post-thread/PostThread.tsx:381
msgid "You have blocked the author or you have been blocked by the author."
msgstr "Sie haben den Verfasser blockiert oder Sie wurden vom Verfasser blockiert."
-#: src/view/com/feeds/ProfileFeedgens.tsx:141
+#: src/view/com/feeds/ProfileFeedgens.tsx:134
msgid "You have no feeds."
msgstr "Sie haben keine Feeds."
#: src/view/com/lists/MyLists.tsx:89
-#: src/view/com/lists/ProfileLists.tsx:145
+#: src/view/com/lists/ProfileLists.tsx:138
msgid "You have no lists."
msgstr "Sie haben keine Listen."
-#: src/view/screens/ModerationBlockedAccounts.tsx:131
+#: src/view/screens/ModerationBlockedAccounts.tsx:132
msgid "You have not blocked any accounts yet. To block an account, go to their profile and selected \"Block account\" from the menu on their account."
msgstr "Sie haben noch keine Konten gesperrt. Um ein Konto zu sperren, gehen Sie zu seinem Profil und wählen Sie \"Konto sperren\" aus dem Menü auf seinem Konto."
@@ -2402,7 +2526,7 @@ msgstr "Sie haben noch keine Konten gesperrt. Um ein Konto zu sperren, gehen Sie
msgid "You have not created any app passwords yet. You can create one by pressing the button below."
msgstr "Sie haben noch kein Kennwort für eine Anwendung erstellt. Sie können eines erstellen, indem Sie auf die Schaltfläche unten drücken."
-#: src/view/screens/ModerationMutedAccounts.tsx:130
+#: src/view/screens/ModerationMutedAccounts.tsx:131
msgid "You have not muted any accounts yet. To mute an account, go to their profile and selected \"Mute account\" from the menu on their account."
msgstr "Sie haben noch keine Konten stummgeschaltet. Um ein Konto stumm zu schalten, gehen Sie zu seinem Profil und wählen Sie \"Konto stumm schalten\" aus dem Menü auf seinem Konto."
@@ -2410,11 +2534,11 @@ msgstr "Sie haben noch keine Konten stummgeschaltet. Um ein Konto stumm zu schal
msgid "You will receive an email with a \"reset code.\" Enter that code here, then enter your new password."
msgstr "Sie erhalten eine E-Mail mit einem \"Reset-Code\". Geben Sie diesen Code hier ein und geben Sie dann Ihr neues Passwort ein."
-#: src/view/com/auth/create/Step2.tsx:43
+#: src/view/com/auth/create/Step2.tsx:58
msgid "Your account"
msgstr "Ihr Konto"
-#: src/view/com/auth/create/Step2.tsx:122
+#: src/view/com/auth/create/Step2.tsx:146
msgid "Your birth date"
msgstr "Ihr Geburtsdatum"
@@ -2444,8 +2568,8 @@ msgid "Your hosting provider"
msgstr "Hosting-Anbieter"
#: src/view/screens/Settings.tsx:402
-#: src/view/shell/desktop/RightNav.tsx:129
-#: src/view/shell/Drawer.tsx:636
+#: src/view/shell/desktop/RightNav.tsx:137
+#: src/view/shell/Drawer.tsx:655
msgid "Your invite codes are hidden when logged in using an App Password"
msgstr "Ihre Einladungscodes werden ausgeblendet, wenn Sie sich mit einem App-Passwort anmelden."
diff --git a/src/locale/locales/en/messages.js b/src/locale/locales/en/messages.js
deleted file mode 100644
index 9d5ca51a21..0000000000
--- a/src/locale/locales/en/messages.js
+++ /dev/null
@@ -1 +0,0 @@
-/*eslint-disable*/module.exports={messages:JSON.parse("{\"PBodTo\":\"- end of feed -\",\"EtUMsZ\":\". This warning is only available for posts with media attached.\",\"ebOBhv\":[[\"0\",\"plural\",{\"one\":[\"#\",\" invite code available\"],\"other\":[\"#\",\" invite codes available\"]}]],\"J/hVSQ\":[[\"0\"]],\"hZQerY\":[[\"0\"],\" \",[\"purposeLabel\"],\" List\"],\"zgN03j\":[[\"invitesAvailable\",\"plural\",{\"one\":[\"Invite codes: \",\"#\",\" available\"],\"other\":[\"Invite codes: \",\"#\",\" available\"]}]],\"OyEWua\":[[\"invitesAvailable\"],\" invite code available\"],\"eFIdHP\":[[\"invitesAvailable\"],\" invite codes available\"],\"wapGcj\":[[\"message\"]],\"umrH9L\":\"<0/> members\",\"gMjqbV\":\"<0>Choose your0><1>Recommended1><2>Feeds2>\",\"F657la\":\"<0>Follow some0><1>Recommended1><2>Users2>\",\"6RmyWt\":\"<0>Here is your app password.0> Use this to sign into the other app along with your handle.\",\"GH9ldj\":\"<0>Note: This setting may not be respected by third-party apps that display Bluesky content.0>\",\"Ga0T2l\":\"<0>Note: Your profile and posts will remain publicly available. Third-party apps that display Bluesky content may not respect this setting.0>\",\"XCTqGE\":\"A new version of the app is available. Please update to continue using the app.\",\"AnNF5e\":\"Accessibility\",\"AeXO77\":\"Account\",\"4WY4MD\":\"Account options\",\"m16xKo\":\"Add\",\"fBBX+K\":\"Add a content warning\",\"JU3hs2\":\"Add a user to this list\",\"MPPZ54\":\"Add account\",\"LkA8jz\":\"Add alt text\",\"Z8idyM\":\"Add details\",\"AoXl11\":\"Add details to report\",\"iE6B/9\":\"Add link card\",\"EXHdP1\":\"Add link card:\",\"x6laaL\":\"Add the following DNS record to your domain:\",\"UmzMP4\":\"Add to Lists\",\"hCrQ0L\":\"Add to my feeds\",\"GluCXm\":\"Added to list\",\"jRrQFe\":\"Adjust the number of likes a reply must have to be shown in your feed.\",\"qLa52r\":\"Adult Content\",\"sxkWRg\":\"Advanced\",\"u2HO/d\":\"ALT\",\"u/DP73\":\"Alt text\",\"0QlT7/\":\"Alt text describes images for blind and low-vision users, and helps give context to everyone.\",\"woXbjq\":[\"An email has been sent to \",[\"0\"],\". It includes a confirmation code which you can enter below.\"],\"Fon2dK\":[\"An email has been sent to your previous address, \",[\"0\"],\". It includes a confirmation code which you can enter below.\"],\"HZFm5R\":\"and\",\"fdjKGe\":\"App Language\",\"SMmUnj\":\"App passwords\",\"8q4WlH\":\"App Passwords\",\"e6un1h\":\"Appeal Decision\",\"c0PCYD\":\"Appeal this decision\",\"oifO1p\":\"Appeal this decision.\",\"aAIQg2\":\"Appearance\",\"9K5XIM\":\"Apps that respect this setting, including the official Bluesky app and bsky.app website, won't show your content to logged out users.\",\"SSDZ+T\":[\"Are you sure you want to delete the app password \\\"\",[\"name\"],\"\\\"?\"],\"0BIeIs\":\"Are you sure you'd like to discard this draft?\",\"6foA8n\":\"Are you sure?\",\"/mSd6b\":\"Are you sure? This cannot be undone.\",\"EbvWd3\":\"Artistic or non-erotic nudity.\",\"uVotT3\":\"Ask apps to limit the visibility of my account\",\"iH8pgl\":\"Back\",\"ehOkF+\":\"Basics\",\"+gCI2a\":\"Birthday\",\"pieVBA\":\"Birthday:\",\"m1dqxu\":\"Block Account\",\"ffIfdM\":\"Block accounts\",\"hIysMc\":\"Block list\",\"fdYcMy\":\"Block these accounts?\",\"KWykPE\":\"Blocked accounts\",\"JuqQpF\":\"Blocked Accounts\",\"HG4qt4\":\"Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you.\",\"8LNSUt\":\"Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you. You will not see their content and they will be prevented from seeing yours.\",\"HFCE4A\":\"Blocked post.\",\"zl+QbX\":\"Blocking is public. Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you.\",\"7A9u1j\":\"Bluesky\",\"ZHmKSm\":\"Bluesky is flexible.\",\"odLrdl\":\"Bluesky is open.\",\"/LsWK4\":\"Bluesky is public.\",\"C50OGr\":\"Bluesky uses invites to build a healthier community. If you don't know anybody with an invite, you can sign up for the waitlist and we'll send one soon.\",\"u9cCQU\":\"Bluesky will not show your profile and posts to logged-out users. Other apps may not honor this request. This does not make your account private.\",\"klVoaP\":\"Bluesky.Social\",\"qxBitM\":[\"Build version \",[\"0\"],\" \",[\"1\"]],\"rT2cV+\":\"Camera\",\"JGGrPC\":\"Can only contain letters, numbers, spaces, dashes, and underscores. Must be at least 4 characters long, but no more than 32 characters long.\",\"dEgA5A\":\"Cancel\",\"aMH9rr\":\"Cancel account deletion\",\"kc3E4R\":\"Cancel add image alt text\",\"wg4LHQ\":\"Cancel change handle\",\"hFL1Li\":\"Cancel image crop\",\"tijH8t\":\"Cancel profile editing\",\"Qe4C/d\":\"Cancel quote post\",\"5TviPn\":\"Cancel search\",\"nss3UV\":\"Cancel waitlist signup\",\"o+XJ9D\":\"Change\",\"pQco5R\":\"Change handle\",\"Q5e1U/\":\"Change Handle\",\"a3NAfL\":\"Change my email\",\"4vatyk\":\"Change Your Email\",\"Yn3C90\":\"Check out some recommended feeds. Tap + to add them to your list of pinned feeds.\",\"ioZXIH\":\"Check out some recommended users. Follow them to see similar users.\",\"/+X+/K\":\"Check your inbox for an email with the confirmation code to enter below:\",\"Rt502e\":\"Choose Service\",\"/L45sc\":\"Choose the algorithms that power your experience with custom feeds.\",\"BwcLKv\":\"Choose your\",\"Wk8hkn\":\"Choose your password\",\"Us7A1O\":\"Clear all legacy storage data\",\"X3zEXo\":\"Clear all legacy storage data (restart after this)\",\"zxFM2c\":\"Clear all storage data\",\"r+lhUL\":\"Clear all storage data (restart after this)\",\"QbvBNV\":\"Clear search query\",\"flH7u/\":\"Close alert\",\"hYmnbk\":\"Close bottom drawer\",\"47L1V1\":\"Close image\",\"l49ujN\":\"Close image viewer\",\"UryHFO\":\"Close navigation footer\",\"KHzDTk\":\"Community Guidelines\",\"o8UUti\":\"Compose reply\",\"7VpPHA\":\"Confirm\",\"q8upsf\":\"Confirm Change\",\"8pNKIr\":\"Confirm content language settings\",\"tGg8Kt\":\"Confirm delete account\",\"ioZOzk\":\"Confirmation code\",\"J28zul\":\"Connecting...\",\"l879p1\":\"Content filtering\",\"m8j6up\":\"Content Filtering\",\"/PlAsF\":\"Content Languages\",\"cogwXi\":\"Content Warning\",\"FG7AQv\":\"Content warnings\",\"xGVfLh\":\"Continue\",\"6V3Ea3\":\"Copied\",\"he3ygx\":\"Copy\",\"7LTXf4\":\"Copy link to list\",\"dWsPi5\":\"Copy link to post\",\"jw+abr\":\"Copy link to profile\",\"iQgJaz\":\"Copy post text\",\"u40k/o\":\"Copyright Policy\",\"7wWvgo\":\"Could not load feed\",\"8NNr/O\":\"Could not load list\",\"mpt9T+\":\"Create a new account\",\"IS0nrP\":\"Create Account\",\"6HbhpU\":\"Create new account\",\"MXSt4t\":[\"Created \",[\"0\"]],\"GAD3Dx\":\"Custom domain\",\"ZQKLI1\":\"Danger Zone\",\"pvnfJD\":\"Dark\",\"ZDGm40\":\"Delete account\",\"vzX5FB\":\"Delete Account\",\"gUEtxf\":\"Delete app password\",\"84uE/A\":\"Delete List\",\"ktknoE\":\"Delete my account\",\"szz0+N\":\"Delete my account…\",\"04G5Az\":\"Delete post\",\"FbPNuJ\":\"Delete this post?\",\"u+1OHY\":\"Deleted post.\",\"Nu4oKW\":\"Description\",\"dacKHE\":\"Dev Server\",\"2ygkE8\":\"Developer Tools\",\"bzSI52\":\"Discard\",\"BryYJR\":\"Discard draft\",\"9Y7FMD\":\"Discourage apps from showing my account to logged-out users\",\"pbLwal\":\"Discover new feeds\",\"pfa8F0\":\"Display name\",\"0gS7M5\":\"Display Name\",\"iZ5pMB\":\"Domain verified!\",\"DPfwMq\":\"Done\",\"zT97vP\":[\"Done\",[\"extraText\"]],\"4uwlSD\":\"Each code works once. You'll receive more invite codes periodically.\",\"XQFMOm\":\"Edit image\",\"S7M0uU\":\"Edit list details\",\"cLmurE\":\"Edit My Feeds\",\"bRZ5XW\":\"Edit my profile\",\"9OpVZg\":\"Edit profile\",\"QJQd1J\":\"Edit Profile\",\"Jn7kox\":\"Edit Saved Feeds\",\"O3oNi5\":\"Email\",\"ATGYL1\":\"Email address\",\"pJJ0Vp\":\"Email Updated\",\"9Qs99X\":\"Email:\",\"96mted\":\"Enable this setting to only see replies between people you follow.\",\"9xK+YC\":\"End of feed\",\"YbIxza\":\"Enter the address of your provider:\",\"BfIgP6\":\"Enter the domain you want to use\",\"cHrOqs\":\"Enter the email you used to create your account. We'll send you a \\\"reset code\\\" so you can set a new password.\",\"xRPn3U\":\"Enter your email address\",\"+inPGm\":\"Enter your new email address below.\",\"T0KLp4\":\"Enter your username and password\",\"4BITzH\":\"Error:\",\"wlzBtv\":\"Everybody\",\"0PkE20\":\"Expand alt text\",\"/5K/KL\":\"Failed to load recommended feeds\",\"4yCy8i\":\"Feed offline\",\"N0CqyO\":\"Feed Preferences\",\"YirHq7\":\"Feedback\",\"2DoBvq\":\"Feeds\",\"I3iUBQ\":\"Feeds are created by users to curate content. Choose some feeds that you find interesting.\",\"2+6lmO\":\"Feeds are custom algorithms that users build with a little coding expertise. <0/> for more information.\",\"Qzj1WT\":\"Finding similar accounts...\",\"QKSrQV\":\"Fine-tune the content you see on your home screen.\",\"r+KeyR\":\"Fine-tune the discussion threads.\",\"MKEPCY\":\"Follow\",\"AD4dxh\":\"Follow some\",\"Wezu5M\":\"Follow some users to get started. We can recommend you more users based on who you find interesting.\",\"jdbMSV\":\"Followed users\",\"YY2BTA\":\"Followed users only\",\"x5LEuB\":\"Followers\",\"NIjL2Y\":\"following\",\"y6sq5j\":\"Following\",\"p3UO/y\":\"Follows you\",\"5RhDkD\":\"For security reasons, we'll need to send a confirmation code to your email address.\",\"NJPhAO\":\"For security reasons, you won't be able to view this again. If you lose this password, you'll need to generate a new one.\",\"5bDfuq\":\"Forgot\",\"hEPLrs\":\"Forgot password\",\"dn8X5t\":\"Forgot Password\",\"U+kFad\":\"Gallery\",\"c3b0B0\":\"Get Started\",\"CKyk7Q\":\"Go back\",\"sr0UJD\":\"Go Back\",\"Rtp0y7\":\"Go to next\",\"Nf7oXL\":\"Handle\",\"c3XJ18\":\"Help\",\"uX/4+/\":\"Here is your app password.\",\"vLyv1R\":\"Hide\",\"qdOx2q\":\"Hide user list\",\"up7j9X\":\"Hmm, some kind of issue occured when contacting the feed server. Please let the feed owner know about this issue.\",\"FynkM2\":\"Hmm, some kind of issue occurred when contacting the feed server. Please let the feed owner know about this issue.\",\"WTcLyw\":\"Hmm, the feed server appears to be misconfigured. Please let the feed owner know about this issue.\",\"/8MHCt\":\"Hmm, the feed server appears to be offline. Please let the feed owner know about this issue.\",\"3zJH1g\":\"Hmm, the feed server gave a bad response. Please let the feed owner know about this issue.\",\"wkCNhr\":\"Hmm, we're having trouble finding this feed. It may have been deleted.\",\"yNNyhI\":\"Hmmm, we're having trouble finding this feed. It may have been deleted.\",\"i0qMbr\":\"Home\",\"sXZ8IU\":\"Home Feed Preferences\",\"yt7fhu\":\"Hosting provider\",\"s2xA6t\":\"Hosting provider address\",\"o+axy6\":\"I have a code\",\"wey2os\":\"I have my own domain\",\"WlEcKr\":\"If none are selected, suitable for all ages.\",\"VCk0rR\":\"Image alt text\",\"STGpNQ\":\"Image options\",\"6o7+En\":\"In Your Network\",\"dSKHAa\":\"Invalid username or password\",\"MFKlMB\":\"Invite\",\"F5MZVk\":\"Invite a Friend\",\"6KlkHI\":\"Invite code\",\"MYTV5o\":\"Invite code not accepted. Check that you input it correctly and try again.\",\"UY2916\":[\"Invite codes: \",[\"invitesAvailable\"],\" available\"],\"F75w8j\":\"Join the waitlist\",\"6iVTdm\":\"Join the waitlist.\",\"SNzppu\":\"Join Waitlist\",\"Dcq5kL\":\"Language selection\",\"pVhZHk\":\"Language Settings\",\"GAmD3h\":\"Languages\",\"NgeSlx\":\"Learn More\",\"rj0Lke\":\"Learn more about this warning\",\"lvYkpV\":\"Learn more about what is public on Bluesky.\",\"kq2ga7\":\"Leave them all unchecked to see any language.\",\"QfDITI\":\"Leaving Bluesky\",\"Esfg1M\":\"Let's get your password reset!\",\"exYcTF\":\"Library\",\"1njn7W\":\"Light\",\"BvSY1i\":\"Like this feed\",\"8/ALSr\":\"Liked by\",\"zZOZj7\":\"Likes\",\"KGL/DU\":\"Limit the visibility of my account\",\"AUSVsF\":\"Limit the visibility of my account to logged-out users\",\"FuZWua\":\"List Avatar\",\"8mjA4F\":\"List Name\",\"h16FyT\":\"Lists\",\"ujW4FW\":\"Load more posts\",\"7EHsGr\":\"Load new notifications\",\"VkLESX\":\"Load new posts\",\"Z3FXyt\":\"Loading...\",\"jl0AFf\":\"Local dev server\",\"5Aq6mk\":\"Logged-out users\",\"w2yNjr\":\"Logged-out visibility\",\"cR9UpQ\":\"Login to account that is not listed\",\"kkGiug\":\"Looks like this feed is only available to users with a Bluesky account. Please sign up or sign in to view this feed!\",\"2U/gDT\":\"Make sure this is where you intend to go!\",\"xYilR2\":\"Media\",\"S9V0C/\":\"mentioned users\",\"31/84x\":\"Mentioned users\",\"zucql+\":\"Menu\",\"kTQnAw\":\"Message from server\",\"DzmsLV\":\"Moderation\",\"NTIbv4\":\"Moderation lists\",\"3j2OjF\":\"Moderation Lists\",\"FIJUJb\":\"More feeds\",\"3Siwmw\":\"More options\",\"Y17r45\":\"More post options\",\"RA1KUZ\":\"Mute Account\",\"du0opt\":\"Mute accounts\",\"25PHAB\":\"Mute list\",\"izOxJM\":\"Mute these accounts?\",\"jq7SjD\":\"Mute thread\",\"s22grX\":\"Muted accounts\",\"qUa+lV\":\"Muted Accounts\",\"gA0D9A\":\"Muted accounts have their posts removed from your feed and from your notifications. Mutes are completely private.\",\"1QJzM7\":\"Muting is private. Muted accounts can interact with you, but you will not see their posts or receive notifications from them.\",\"qhwV2C\":\"My Account\",\"Mysqyf\":\"My Birthday\",\"6MBNS/\":\"My Feeds\",\"hKtWk2\":\"My Profile\",\"Ha6iBv\":\"My Saved Feeds\",\"6YtxFj\":\"Name\",\"8yolS6\":\"Never lose access to your followers and data.\",\"isRobC\":\"New\",\"2B7HLH\":\"New post\",\"FGrimz\":\"New Post\",\"hXzOVo\":\"Next\",\"EatZYJ\":\"Next image\",\"1UzENP\":\"No\",\"flmDTf\":\"No description\",\"zfN9gJ\":\"No result\",\"fOlAiK\":[\"No results found for \\\"\",[\"query\"],\"\\\"\"],\"kA9DpB\":[\"No results found for \",[\"0\"]],\"SVF205\":[\"No results found for \",[\"query\"]],\"xpF9po\":\"Nobody\",\"ispbnl\":\"Not Applicable\",\"iyUCYw\":\"Not Applicable.\",\"ACqM3c\":\"Note: Bluesky is an open and public network, and enabling this will not make your profile private or limit the ability of logged in users to see your posts. This setting only limits the visibility of posts on the Bluesky app and website; third-party apps that display Bluesky content may not respect this setting, and could show your content to logged-out users.\",\"+lYa0i\":\"Note: Bluesky is an open and public network. This setting only limits the visibility of your content on the Bluesky app and website, and other apps may not respect this setting. Your content may still be shown to logged-out users by other apps and websites.\",\"OdiASL\":\"Note: Third-party apps that display Bluesky content may not respect this setting.\",\"iDNBZe\":\"Notifications\",\"5GGAqz\":\"Oh no!\",\"UaXeX3\":\"Okay\",\"Cqo2D+\":\"One or more images is missing alt text.\",\"Kq2/SU\":[\"Only \",[\"0\"],\" can reply.\"],\"M/Q2aG\":\"Open navigation\",\"M5PuNq\":\"Opens configurable language settings\",\"S67TOE\":\"Opens list of invite codes\",\"eSqpax\":\"Opens modal for using custom domain\",\"vYwHHI\":\"Opens moderation settings\",\"0tHyB7\":\"Opens screen with all saved feeds\",\"nmRoY/\":\"Opens the app password settings page\",\"6e9Apv\":\"Opens the home feed preferences\",\"O87Dr/\":\"Opens the storybook page\",\"G+PVmg\":\"Opens the system log page\",\"Jqb7sy\":\"Opens the threads preferences\",\"b22AVl\":\"Other account\",\"n+HLOP\":\"Other service\",\"1PKxQ7\":\"Other...\",\"8F1i42\":\"Page not found\",\"8ZsakT\":\"Password\",\"ogtYkT\":\"Password updated\",\"DKeVgZ\":\"Password updated!\",\"VeZE5Q\":\"Pictures meant for adults.\",\"zgoxy5\":\"Pinned Feeds\",\"Aw5fOC\":\"Please choose your handle.\",\"5vI4sE\":\"Please choose your password.\",\"Apyknf\":\"Please confirm your email before changing it. This is a temporary requirement while email-updating tools are added, and it will soon be removed.\",\"9qpQ5O\":\"Please enter a unique name for this App Password or use our randomly generated one.\",\"hV+cYN\":\"Please enter your email.\",\"QJr5Xp\":\"Please enter your password as well:\",\"d7tryi\":\"Please tell us why you think this decision was incorrect.\",\"y28hnO\":\"Post\",\"h5RcXU\":\"Post hidden\",\"r5zLS0\":\"Post language\",\"AzCucI\":\"Post Languages\",\"tJFPmV\":\"Post not found\",\"+owNNn\":\"Posts\",\"0+DQbr\":\"Potentially Misleading Link\",\"MHk+7g\":\"Previous image\",\"HeBcM5\":\"Primary Language\",\"x8iR7V\":\"Prioritize Your Follows\",\"rjGI/Q\":\"Privacy\",\"LcET2C\":\"Privacy Policy\",\"k1ifdL\":\"Processing...\",\"vERlcd\":\"Profile\",\"MrgqOW\":\"Protect your account by verifying your email.\",\"9nSV9I\":\"Public, shareable lists of users to mute or block in bulk.\",\"p1UmBX\":\"Public, shareable lists which can drive feeds.\",\"8HFFRQ\":\"Quote post\",\"+KrAHa\":\"Quote Post\",\"WlWsdE\":\"Ratios\",\"WEYdDv\":\"Recommended\",\"QNzcT3\":\"Recommended Feeds\",\"41UoJb\":\"Recommended Users\",\"t/YqKh\":\"Remove\",\"p/cRzf\":[\"Remove \",[\"0\"],\" from my feeds?\"],\"1O32oy\":\"Remove account\",\"W44VX5\":\"Remove feed\",\"Yy3FzB\":\"Remove from my feeds\",\"5ywtDz\":\"Remove image\",\"Dw/XUh\":\"Remove image preview\",\"3fdNAy\":\"Remove this feed from my feeds?\",\"TbDEfs\":\"Remove this feed from your saved feeds?\",\"Obm5+c\":\"Removed from list\",\"N8UzTV\":\"Replies\",\"oQPadq\":\"Replies to this thread are disabled\",\"Veu9gK\":\"Reply Filters\",\"lQWbAr\":[\"Report \",[\"collectionName\"]],\"bDHSjj\":\"Report Account\",\"NKmI9f\":\"Report feed\",\"6iwm2r\":\"Report List\",\"6IcSvC\":\"Report post\",\"mkude1\":\"Repost\",\"JOV5dR\":\"Repost or quote post\",\"0zb9FX\":\"Reposted by\",\"bqG37Z\":\"Request Change\",\"pJoi/P\":\"Request to limit the visibility of my account\",\"2d9VrZ\":\"Require alt text before posting\",\"8XIT+P\":\"Required for this provider\",\"vJgYMA\":\"Reset code\",\"xEL92I\":\"Reset onboarding state\",\"RfwZxd\":\"Reset password\",\"bee/Fw\":\"Reset preferences state\",\"wToeoz\":\"Resets the onboarding state\",\"nIU7qI\":\"Resets the preferences state\",\"6gRgw8\":\"Retry\",\"hAbYQa\":\"Retry change handle\",\"tfDRzk\":\"Save\",\"KV2YQQ\":\"Save alt text\",\"y3aU20\":\"Save changes\",\"IUwGEM\":\"Save Changes\",\"Xs07Tg\":\"Save handle change\",\"BckA7m\":\"Save image crop\",\"+K+JDj\":\"Saved Feeds\",\"A1taO8\":\"Search\",\"BF8cu3\":\"Search for posts and users.\",\"CKROFy\":\"Security Step Required\",\"cNzyJW\":\"See what's next\",\"L5sM7N\":\"Select Bluesky Social\",\"o3dwub\":\"Select from an existing account\",\"GGw2AK\":\"Select service\",\"vECNLO\":\"Select which languages you want your subscribed feeds to include. If none are selected, all languages will be shown.\",\"m5aabx\":\"Select your app language for the default text to display in the app\",\"TiiOza\":\"Select your preferred language for translations in your feed.\",\"vp9yIB\":\"Send Confirmation Email\",\"65dxv8\":\"Send email\",\"i/TzEU\":\"Send Email\",\"RoafuO\":\"Send feedback\",\"4cijjm\":\"Send Report\",\"V/e7nf\":\"Set new password\",\"gwsie4\":\"Set this setting to \\\"No\\\" to hide all quote posts from your feed. Reposts will still be visible.\",\"IZjC3J\":\"Set this setting to \\\"No\\\" to hide all replies from your feed.\",\"KIgU3l\":\"Set this setting to \\\"No\\\" to hide all reposts from your feed.\",\"zaAyrz\":\"Set this setting to \\\"Yes\\\" to show replies in a threaded view. This is an experimental feature.\",\"fQV2eE\":\"Set this setting to \\\"Yes\\\" to show samples of your saved feeds in your following feed. This is an experimental feature.\",\"Tz0i8g\":\"Settings\",\"HfWHhJ\":\"Sexual activity or erotic nudity.\",\"Z8lGw6\":\"Share\",\"P33tEA\":\"Share feed\",\"uIZ2tg\":\"Share link\",\"8vETh9\":\"Show\",\"aWAdCb\":\"Show anyway\",\"NijgXr\":\"Show Posts from My Feeds\",\"T3Mt8m\":\"Show Quote Posts\",\"BlW8X/\":\"Show Replies\",\"X4GwDb\":\"Show replies by people you follow before all other replies.\",\"GiogzH\":\"Show Reposts\",\"fhY/fL\":\"Show users\",\"5lWFkC\":\"Sign in\",\"n1ekoW\":\"Sign In\",\"N9o7n5\":[\"Sign in as \",[\"0\"]],\"FT1MVS\":\"Sign in as...\",\"+UpfFC\":\"Sign into\",\"fcWrnU\":\"Sign out\",\"e+RpCP\":\"Sign up\",\"MiE4Vp\":\"Sign up or sign in to join the conversation\",\"zU+Ro7\":\"Signed in as\",\"6Uau97\":\"Skip\",\"0o5BFH\":\"Sort Replies\",\"GH1Rgk\":\"Sort replies to the same post by:\",\"1DA6ap\":\"Square\",\"aKEHLj\":\"Staging\",\"tgEXwM\":\"Status page\",\"P5jja7\":\"Storybook\",\"hQRttt\":\"Submit\",\"EDl9kS\":\"Subscribe\",\"5z3ICN\":\"Subscribe to this list\",\"TVFyMD\":\"Suggested Follows\",\"XYLcNv\":\"Support\",\"VjWeLI\":\"Switch Account\",\"D+NlUC\":\"System\",\"fP8jTZ\":\"System log\",\"HF6Iah\":\"Tall\",\"4Y5H+g\":\"Terms\",\"xowcRf\":\"Terms of Service\",\"p8Iz39\":\"Text input field\",\"GlPXQJ\":\"The account will be able to interact with you after unblocking.\",\"o4M2MP\":\"The Community Guidelines have been moved to <0/>\",\"U42lKc\":\"The Copyright Policy has been moved to <0/>\",\"G4EksE\":\"The post may have been deleted.\",\"WNR9db\":\"The Privacy Policy has been moved to <0/>\",\"LbEbIk\":[\"The support form has been moved. If you need help, please<0/> or visit \",[\"HELP_DESK_URL\"],\" to get in touch with us.\"],\"FGbRSr\":\"The Terms of Service have been moved to\",\"yUqcy2\":\"There was an unexpected issue in the application. Please let us know if this happened to you!\",\"jSe8k/\":[\"This \",[\"0\"],\" has been labeled.\"],\"KRYn8w\":[\"This \",[\"screenDescription\"],\" has been flagged:\"],\"aBX1qv\":\"This content is not viewable without a Bluesky account.\",\"xI4xW5\":\"This feed is currently receiving high traffic and is temporarily unavailable. Please try again later.\",\"lm845B\":\"This information is not shared with other users.\",\"5Pvw/O\":\"This is important in case you ever need to change your email or reset your password.\",\"sQQfZ9\":\"This is the service that keeps you online.\",\"CvX8qs\":\"This link is taking you to the following website:\",\"WKrUVy\":\"This post has been deleted.\",\"qpCA5s\":\"This warning is only available for posts with media attached.\",\"u9ThjD\":\"Thread Preferences\",\"zmXsk5\":\"Threaded Mode\",\"1x30Qt\":\"Toggle dropdown\",\"KFXQEt\":\"Transformations\",\"pi8x/S\":\"Translate\",\"KDw4GX\":\"Try again\",\"RF3/jE\":\"Un-block list\",\"+/SGK9\":\"Un-mute list\",\"nc4Wfd\":\"Unable to contact your service. Please check your Internet connection.\",\"tuS5Jz\":\"Unblock\",\"0VrZZv\":\"Unblock Account\",\"6pYY4t\":\"Undo repost\",\"05f3UA\":\"Unfortunately, you do not meet the requirements to create an account.\",\"wx9wqY\":\"Unmute Account\",\"s12/Py\":\"Unmute thread\",\"EvGmWj\":\"Unpin moderation list\",\"vaz2uI\":[\"Update \",[\"displayName\"],\" in Lists\"],\"YXMY4w\":\"Update Available\",\"RXbEvi\":\"Updating...\",\"Vwkfp4\":\"Upload a text file to:\",\"jTdnU6\":\"Use app passwords to login to other Bluesky clients without giving full access to your account or password.\",\"CH1am9\":\"Use default provider\",\"ZG8UvP\":\"Use this to sign into the other app along with your handle.\",\"cKXwwI\":\"Used by:\",\"t4Yp4Z\":\"User handle\",\"8tsrUV\":\"User Lists\",\"nZx9mr\":\"Username or email address\",\"Sxm8rQ\":\"Users\",\"Hbhyg2\":\"users followed by <0/>\",\"1Z9Mdf\":\"Users followed by <0/>\",\"9k1aoj\":[\"Users in \\\"\",[\"0\"],\"\\\"\"],\"MBOY4U\":\"Verify email\",\"Ejyv0o\":\"Verify my email\",\"9czCrB\":\"Verify My Email\",\"ibSVGR\":\"Verify New Email\",\"nHsQde\":\"View debug entry\",\"47jzzd\":\"View the avatar\",\"wK4H1r\":\"Visit Site\",\"qjBGxf\":\"We're so excited to have you join us!\",\"1xpRAp\":\"We're sorry, but this content is not viewable without a Bluesky account.\",\"2iYPLH\":\"We're sorry, but this feed is currently receiving high traffic and is temporarily unavailable. Please try again later.\",\"WBQOQ0\":\"We're sorry, but your search could not be completed. Please try again in a few minutes.\",\"/mVVX2\":\"We're sorry! We can't find the page you were looking for.\",\"meB+tZ\":\"Welcome to <0>Bluesky0>\",\"Mj7rl/\":[\"What is the issue with this \",[\"collectionName\"],\"?\"],\"3qn29J\":\"Which languages are used in this post?\",\"uawiGa\":\"Which languages would you like to see in your algorithmic feeds?\",\"yvDWMs\":\"Who can reply\",\"GKc8LT\":\"Who can reply?\",\"I5S9ZE\":\"Wide\",\"y02THm\":\"Write post\",\"6ckZRB\":\"Write your reply\",\"l75CjT\":\"Yes\",\"STPj0e\":\"You can change hosting providers at any time.\",\"67nRLM\":\"You can now sign in with your new password.\",\"lIcbCU\":\"You don't have any invite codes yet! We'll send you some when you've been on Bluesky for a little longer.\",\"aFZZYi\":\"You don't have any pinned feeds.\",\"kX/cKs\":\"You don't have any saved feeds!\",\"nbz3Iq\":\"You don't have any saved feeds.\",\"RkXibf\":\"You have blocked the author or you have been blocked by the author.\",\"CbrOgr\":\"You have no feeds.\",\"tCLJ9E\":\"You have no lists.\",\"soH9qC\":\"You have not blocked any accounts yet. To block an account, go to their profile and selected \\\"Block account\\\" from the menu on their account.\",\"NDgp3i\":\"You have not created any app passwords yet. You can create one by pressing the button below.\",\"grqdXb\":\"You have not muted any accounts yet. To mute an account, go to their profile and selected \\\"Mute account\\\" from the menu on their account.\",\"RrDyEb\":\"You will receive an email with a \\\"reset code.\\\" Enter that code here, then enter your new password.\",\"gdRnT7\":\"Your account\",\"k7hmsH\":\"Your birth date\",\"tBpzKB\":\"Your email appears to be invalid.\",\"OubkcP\":\"Your email has been saved! We'll be in touch soon.\",\"z2L+/9\":\"Your email has been updated but not verified. As a next step, please verify your new email.\",\"XZlIVw\":\"Your email has not yet been verified. This is an important security step which we recommend.\",\"qv9f4I\":\"Your full handle will be\",\"lvcqqG\":\"Your hosting provider\",\"fbFyAZ\":\"Your invite codes are hidden when logged in using an App Password\",\"Oqt/PG\":\"Your posts, likes, and blocks are public. Mutes are private.\",\"okRPtW\":\"Your profile\",\"rsWkoR\":\"Your profile and account will not be visible to anyone visiting the Bluesky app without an account, or to account holders who are not logged in. Enabling this will not make your profile private.\",\"jjscPy\":\"Your profile and content will not be visible to anyone visiting the Bluesky app without an account. Enabling this will not make your profile private.\",\"ogY7EU\":\"Your profile and posts will not be visible to people visiting the Bluesky app or website without having an account and being logged in.\",\"MvWO9d\":\"Your user handle\"}")};
\ No newline at end of file
diff --git a/src/locale/locales/en/messages.po b/src/locale/locales/en/messages.po
index 1f3ef567ed..3e2b776fae 100644
--- a/src/locale/locales/en/messages.po
+++ b/src/locale/locales/en/messages.po
@@ -21,7 +21,7 @@ msgstr ""
#~ msgid ". This warning is only available for posts with media attached."
#~ msgstr ""
-#: src/view/shell/desktop/RightNav.tsx:160
+#: src/view/shell/desktop/RightNav.tsx:168
msgid "{0, plural, one {# invite code available} other {# invite codes available}}"
msgstr ""
@@ -33,21 +33,21 @@ msgstr ""
msgid "{0} {purposeLabel} List"
msgstr ""
-#: src/view/shell/desktop/RightNav.tsx:143
+#: src/view/shell/desktop/RightNav.tsx:151
msgid "{invitesAvailable, plural, one {Invite codes: # available} other {Invite codes: # available}}"
msgstr ""
#: src/view/screens/Settings.tsx:407
-#: src/view/shell/Drawer.tsx:640
+#: src/view/shell/Drawer.tsx:659
msgid "{invitesAvailable} invite code available"
msgstr ""
#: src/view/screens/Settings.tsx:409
-#: src/view/shell/Drawer.tsx:642
+#: src/view/shell/Drawer.tsx:661
msgid "{invitesAvailable} invite codes available"
msgstr ""
-#: src/view/screens/Search/Search.tsx:88
+#: src/view/screens/Search/Search.tsx:87
msgid "{message}"
msgstr ""
@@ -88,7 +88,7 @@ msgstr ""
msgid "Accessibility"
msgstr ""
-#: src/view/com/auth/login/LoginForm.tsx:159
+#: src/view/com/auth/login/LoginForm.tsx:163
#: src/view/screens/Settings.tsx:286
msgid "Account"
msgstr ""
@@ -99,7 +99,7 @@ msgstr ""
#: src/view/com/modals/ListAddRemoveUsers.tsx:264
#: src/view/com/modals/UserAddRemoveLists.tsx:193
-#: src/view/screens/ProfileList.tsx:754
+#: src/view/screens/ProfileList.tsx:763
msgid "Add"
msgstr ""
@@ -107,7 +107,7 @@ msgstr ""
msgid "Add a content warning"
msgstr ""
-#: src/view/screens/ProfileList.tsx:744
+#: src/view/screens/ProfileList.tsx:753
msgid "Add a user to this list"
msgstr ""
@@ -118,6 +118,7 @@ msgstr ""
#: src/view/com/composer/photos/Gallery.tsx:119
#: src/view/com/composer/photos/Gallery.tsx:180
+#: src/view/com/modals/AltImage.tsx:93
msgid "Add alt text"
msgstr ""
@@ -130,11 +131,11 @@ msgstr ""
msgid "Add details to report"
msgstr ""
-#: src/view/com/composer/Composer.tsx:438
+#: src/view/com/composer/Composer.tsx:447
msgid "Add link card"
msgstr ""
-#: src/view/com/composer/Composer.tsx:441
+#: src/view/com/composer/Composer.tsx:450
msgid "Add link card:"
msgstr ""
@@ -146,7 +147,7 @@ msgstr ""
msgid "Add to Lists"
msgstr ""
-#: src/view/screens/ProfileFeed.tsx:270
+#: src/view/screens/ProfileFeed.tsx:271
msgid "Add to my feeds"
msgstr ""
@@ -155,7 +156,7 @@ msgstr ""
msgid "Added to list"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:164
+#: src/view/screens/PreferencesHomeFeed.tsx:170
msgid "Adjust the number of likes a reply must have to be shown in your feed."
msgstr ""
@@ -163,7 +164,7 @@ msgstr ""
msgid "Adult Content"
msgstr ""
-#: src/view/screens/Settings.tsx:569
+#: src/view/screens/Settings.tsx:602
msgid "Advanced"
msgstr ""
@@ -187,7 +188,7 @@ msgstr ""
msgid "An email has been sent to your previous address, {0}. It includes a confirmation code which you can enter below."
msgstr ""
-#: src/view/com/notifications/FeedItem.tsx:236
+#: src/view/com/notifications/FeedItem.tsx:237
#: src/view/com/threadgate/WhoCanReply.tsx:178
msgid "and"
msgstr ""
@@ -196,7 +197,7 @@ msgstr ""
msgid "App Language"
msgstr ""
-#: src/view/screens/Settings.tsx:589
+#: src/view/screens/Settings.tsx:622
msgid "App passwords"
msgstr ""
@@ -204,7 +205,7 @@ msgstr ""
msgid "App Passwords"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:207
+#: src/view/com/util/forms/PostDropdownBtn.tsx:236
msgid "Appeal content warning"
msgstr ""
@@ -236,15 +237,15 @@ msgstr ""
msgid "Are you sure you want to delete the app password \"{name}\"?"
msgstr ""
-#: src/view/com/composer/Composer.tsx:142
+#: src/view/com/composer/Composer.tsx:143
msgid "Are you sure you'd like to discard this draft?"
msgstr ""
-#: src/view/screens/ProfileList.tsx:352
+#: src/view/screens/ProfileList.tsx:353
msgid "Are you sure?"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:190
+#: src/view/com/util/forms/PostDropdownBtn.tsx:219
msgid "Are you sure? This cannot be undone."
msgstr ""
@@ -259,12 +260,12 @@ msgstr ""
#: src/view/com/auth/create/CreateAccount.tsx:141
#: src/view/com/auth/login/ChooseAccountForm.tsx:151
#: src/view/com/auth/login/ForgotPasswordForm.tsx:166
-#: src/view/com/auth/login/LoginForm.tsx:249
+#: src/view/com/auth/login/LoginForm.tsx:254
#: src/view/com/auth/login/SetNewPasswordForm.tsx:148
-#: src/view/com/modals/report/InputIssueDetails.tsx:45
-#: src/view/com/post-thread/PostThread.tsx:395
-#: src/view/com/post-thread/PostThread.tsx:445
-#: src/view/com/post-thread/PostThread.tsx:453
+#: src/view/com/modals/report/InputIssueDetails.tsx:46
+#: src/view/com/post-thread/PostThread.tsx:388
+#: src/view/com/post-thread/PostThread.tsx:438
+#: src/view/com/post-thread/PostThread.tsx:446
#: src/view/com/profile/ProfileHeader.tsx:672
msgid "Back"
msgstr ""
@@ -273,8 +274,8 @@ msgstr ""
msgid "Basics"
msgstr ""
-#: src/view/com/auth/create/Step2.tsx:131
-#: src/view/com/modals/BirthDateSettings.tsx:72
+#: src/view/com/auth/create/Step2.tsx:156
+#: src/view/com/modals/BirthDateSettings.tsx:73
msgid "Birthday"
msgstr ""
@@ -287,15 +288,15 @@ msgstr ""
msgid "Block Account"
msgstr ""
-#: src/view/screens/ProfileList.tsx:522
+#: src/view/screens/ProfileList.tsx:523
msgid "Block accounts"
msgstr ""
-#: src/view/screens/ProfileList.tsx:472
+#: src/view/screens/ProfileList.tsx:473
msgid "Block list"
msgstr ""
-#: src/view/screens/ProfileList.tsx:307
+#: src/view/screens/ProfileList.tsx:308
msgid "Block these accounts?"
msgstr ""
@@ -303,7 +304,7 @@ msgstr ""
msgid "Blocked accounts"
msgstr ""
-#: src/view/screens/ModerationBlockedAccounts.tsx:106
+#: src/view/screens/ModerationBlockedAccounts.tsx:107
msgid "Blocked Accounts"
msgstr ""
@@ -311,15 +312,15 @@ msgstr ""
msgid "Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you."
msgstr ""
-#: src/view/screens/ModerationBlockedAccounts.tsx:114
+#: src/view/screens/ModerationBlockedAccounts.tsx:115
msgid "Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you. You will not see their content and they will be prevented from seeing yours."
msgstr ""
-#: src/view/com/post-thread/PostThread.tsx:251
+#: src/view/com/post-thread/PostThread.tsx:250
msgid "Blocked post."
msgstr ""
-#: src/view/screens/ProfileList.tsx:309
+#: src/view/screens/ProfileList.tsx:310
msgid "Blocking is public. Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you."
msgstr ""
@@ -355,7 +356,7 @@ msgstr ""
msgid "Bluesky.Social"
msgstr ""
-#: src/view/screens/Settings.tsx:718
+#: src/view/screens/Settings.tsx:751
msgid "Build version {0} {1}"
msgstr ""
@@ -373,9 +374,8 @@ msgstr ""
msgid "Can only contain letters, numbers, spaces, dashes, and underscores. Must be at least 4 characters long, but no more than 32 characters long."
msgstr ""
-#: src/view/com/composer/Composer.tsx:285
-#: src/view/com/composer/Composer.tsx:288
-#: src/view/com/modals/AltImage.tsx:128
+#: src/view/com/composer/Composer.tsx:294
+#: src/view/com/composer/Composer.tsx:297
#: src/view/com/modals/ChangeEmail.tsx:218
#: src/view/com/modals/ChangeEmail.tsx:220
#: src/view/com/modals/Confirm.tsx:88
@@ -388,7 +388,7 @@ msgstr ""
#: src/view/com/modals/LinkWarning.tsx:85
#: src/view/com/modals/Repost.tsx:73
#: src/view/com/modals/Waitlist.tsx:136
-#: src/view/screens/Search/Search.tsx:592
+#: src/view/screens/Search/Search.tsx:601
#: src/view/shell/desktop/Search.tsx:182
msgid "Cancel"
msgstr ""
@@ -399,8 +399,8 @@ msgid "Cancel account deletion"
msgstr ""
#: src/view/com/modals/AltImage.tsx:123
-msgid "Cancel add image alt text"
-msgstr ""
+#~ msgid "Cancel add image alt text"
+#~ msgstr ""
#: src/view/com/modals/ChangeHandle.tsx:149
msgid "Cancel change handle"
@@ -431,8 +431,8 @@ msgstr ""
msgid "Change"
msgstr ""
-#: src/view/screens/Settings.tsx:601
-#: src/view/screens/Settings.tsx:610
+#: src/view/screens/Settings.tsx:634
+#: src/view/screens/Settings.tsx:643
msgid "Change handle"
msgstr ""
@@ -460,6 +460,10 @@ msgstr ""
msgid "Check your inbox for an email with the confirmation code to enter below:"
msgstr ""
+#: src/view/com/modals/Threadgate.tsx:72
+msgid "Choose \"Everybody\" or \"Nobody\""
+msgstr ""
+
#: src/view/com/modals/ServerInput.tsx:38
msgid "Choose Service"
msgstr ""
@@ -472,28 +476,28 @@ msgstr ""
#~ msgid "Choose your"
#~ msgstr ""
-#: src/view/com/auth/create/Step2.tsx:106
+#: src/view/com/auth/create/Step2.tsx:127
msgid "Choose your password"
msgstr ""
-#: src/view/screens/Settings.tsx:694
+#: src/view/screens/Settings.tsx:727
msgid "Clear all legacy storage data"
msgstr ""
-#: src/view/screens/Settings.tsx:696
+#: src/view/screens/Settings.tsx:729
msgid "Clear all legacy storage data (restart after this)"
msgstr ""
-#: src/view/screens/Settings.tsx:706
+#: src/view/screens/Settings.tsx:739
msgid "Clear all storage data"
msgstr ""
-#: src/view/screens/Settings.tsx:708
+#: src/view/screens/Settings.tsx:741
msgid "Clear all storage data (restart after this)"
msgstr ""
-#: src/view/com/util/forms/SearchInput.tsx:73
-#: src/view/screens/Search/Search.tsx:577
+#: src/view/com/util/forms/SearchInput.tsx:74
+#: src/view/screens/Search/Search.tsx:582
msgid "Clear search query"
msgstr ""
@@ -529,8 +533,8 @@ msgstr ""
#: src/view/com/modals/Confirm.tsx:75
#: src/view/com/modals/SelfLabel.tsx:154
#: src/view/com/modals/VerifyEmail.tsx:225
-#: src/view/screens/PreferencesHomeFeed.tsx:299
-#: src/view/screens/PreferencesThreads.tsx:153
+#: src/view/screens/PreferencesHomeFeed.tsx:305
+#: src/view/screens/PreferencesThreads.tsx:159
msgid "Confirm"
msgstr ""
@@ -554,7 +558,7 @@ msgid "Confirmation code"
msgstr ""
#: src/view/com/auth/create/CreateAccount.tsx:174
-#: src/view/com/auth/login/LoginForm.tsx:268
+#: src/view/com/auth/login/LoginForm.tsx:273
msgid "Connecting..."
msgstr ""
@@ -593,11 +597,11 @@ msgstr ""
msgid "Copy"
msgstr ""
-#: src/view/screens/ProfileList.tsx:384
+#: src/view/screens/ProfileList.tsx:385
msgid "Copy link to list"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:131
+#: src/view/com/util/forms/PostDropdownBtn.tsx:139
msgid "Copy link to post"
msgstr ""
@@ -605,7 +609,7 @@ msgstr ""
msgid "Copy link to profile"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:117
+#: src/view/com/util/forms/PostDropdownBtn.tsx:125
msgid "Copy post text"
msgstr ""
@@ -613,11 +617,11 @@ msgstr ""
msgid "Copyright Policy"
msgstr ""
-#: src/view/screens/ProfileFeed.tsx:94
+#: src/view/screens/ProfileFeed.tsx:95
msgid "Could not load feed"
msgstr ""
-#: src/view/screens/ProfileList.tsx:830
+#: src/view/screens/ProfileList.tsx:839
msgid "Could not load list"
msgstr ""
@@ -626,7 +630,7 @@ msgstr ""
msgid "Create a new account"
msgstr ""
-#: src/view/com/auth/create/CreateAccount.tsx:120
+#: src/view/com/auth/create/CreateAccount.tsx:121
msgid "Create Account"
msgstr ""
@@ -644,7 +648,11 @@ msgstr ""
msgid "Custom domain"
msgstr ""
-#: src/view/screens/Settings.tsx:615
+#: src/view/screens/PreferencesExternalEmbeds.tsx:55
+msgid "Customize media from external sites."
+msgstr ""
+
+#: src/view/screens/Settings.tsx:648
msgid "Danger Zone"
msgstr ""
@@ -652,7 +660,7 @@ msgstr ""
#~ msgid "Dark"
#~ msgstr ""
-#: src/view/screens/Settings.tsx:622
+#: src/view/screens/Settings.tsx:655
msgid "Delete account"
msgstr ""
@@ -665,8 +673,8 @@ msgstr ""
msgid "Delete app password"
msgstr ""
-#: src/view/screens/ProfileList.tsx:351
-#: src/view/screens/ProfileList.tsx:411
+#: src/view/screens/ProfileList.tsx:352
+#: src/view/screens/ProfileList.tsx:412
msgid "Delete List"
msgstr ""
@@ -674,19 +682,19 @@ msgstr ""
msgid "Delete my account"
msgstr ""
-#: src/view/screens/Settings.tsx:632
+#: src/view/screens/Settings.tsx:665
msgid "Delete my account…"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:185
+#: src/view/com/util/forms/PostDropdownBtn.tsx:214
msgid "Delete post"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:189
+#: src/view/com/util/forms/PostDropdownBtn.tsx:218
msgid "Delete this post?"
msgstr ""
-#: src/view/com/post-thread/PostThread.tsx:243
+#: src/view/com/post-thread/PostThread.tsx:242
msgid "Deleted post."
msgstr ""
@@ -701,15 +709,19 @@ msgstr ""
msgid "Dev Server"
msgstr ""
-#: src/view/screens/Settings.tsx:637
+#: src/view/screens/Settings.tsx:670
msgid "Developer Tools"
msgstr ""
-#: src/view/com/composer/Composer.tsx:143
+#: src/view/com/composer/Composer.tsx:211
+msgid "Did you want to say anything?"
+msgstr ""
+
+#: src/view/com/composer/Composer.tsx:144
msgid "Discard"
msgstr ""
-#: src/view/com/composer/Composer.tsx:137
+#: src/view/com/composer/Composer.tsx:138
msgid "Discard draft"
msgstr ""
@@ -734,6 +746,7 @@ msgid "Domain verified!"
msgstr ""
#: src/view/com/auth/onboarding/RecommendedFollows.tsx:86
+#: src/view/com/modals/AltImage.tsx:115
#: src/view/com/modals/ContentFilteringSettings.tsx:88
#: src/view/com/modals/ContentFilteringSettings.tsx:96
#: src/view/com/modals/crop-image/CropImage.web.tsx:152
@@ -743,8 +756,8 @@ msgstr ""
#: src/view/com/modals/Threadgate.tsx:129
#: src/view/com/modals/Threadgate.tsx:132
#: src/view/com/modals/UserAddRemoveLists.tsx:79
-#: src/view/screens/PreferencesHomeFeed.tsx:302
-#: src/view/screens/PreferencesThreads.tsx:156
+#: src/view/screens/PreferencesHomeFeed.tsx:308
+#: src/view/screens/PreferencesThreads.tsx:162
msgid "Done"
msgstr ""
@@ -761,7 +774,7 @@ msgstr ""
msgid "Edit image"
msgstr ""
-#: src/view/screens/ProfileList.tsx:399
+#: src/view/screens/ProfileList.tsx:400
msgid "Edit list details"
msgstr ""
@@ -786,14 +799,14 @@ msgstr ""
msgid "Edit Saved Feeds"
msgstr ""
-#: src/view/com/auth/create/Step2.tsx:90
+#: src/view/com/auth/create/Step2.tsx:108
#: src/view/com/auth/login/ForgotPasswordForm.tsx:148
#: src/view/com/modals/ChangeEmail.tsx:141
#: src/view/com/modals/Waitlist.tsx:88
msgid "Email"
msgstr ""
-#: src/view/com/auth/create/Step2.tsx:81
+#: src/view/com/auth/create/Step2.tsx:99
msgid "Email address"
msgstr ""
@@ -805,7 +818,15 @@ msgstr ""
msgid "Email:"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:138
+#: src/view/com/modals/EmbedConsent.tsx:113
+msgid "Enable {0} only"
+msgstr ""
+
+#: src/view/com/modals/EmbedConsent.tsx:97
+msgid "Enable External Media"
+msgstr ""
+
+#: src/view/screens/PreferencesHomeFeed.tsx:144
msgid "Enable this setting to only see replies between people you follow."
msgstr ""
@@ -825,7 +846,7 @@ msgstr ""
msgid "Enter the email you used to create your account. We'll send you a \"reset code\" so you can set a new password."
msgstr ""
-#: src/view/com/auth/create/Step2.tsx:86
+#: src/view/com/auth/create/Step2.tsx:104
msgid "Enter your email address"
msgstr ""
@@ -837,7 +858,7 @@ msgstr ""
msgid "Enter your username and password"
msgstr ""
-#: src/view/screens/Search/Search.tsx:106
+#: src/view/screens/Search/Search.tsx:105
msgid "Error:"
msgstr ""
@@ -849,12 +870,26 @@ msgstr ""
msgid "Expand alt text"
msgstr ""
+#: src/view/com/modals/EmbedConsent.tsx:64
+msgid "External Media"
+msgstr ""
+
+#: src/view/com/modals/EmbedConsent.tsx:75
+#: src/view/screens/PreferencesExternalEmbeds.tsx:66
+msgid "External media may allow websites to collect information about you and your device. No information is sent or requested until you press the \"play\" button."
+msgstr ""
+
+#: src/view/screens/PreferencesExternalEmbeds.tsx:52
+#: src/view/screens/Settings.tsx:595
+msgid "External Media Preferences"
+msgstr ""
+
#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:109
#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:141
msgid "Failed to load recommended feeds"
msgstr ""
-#: src/view/screens/Feeds.tsx:560
+#: src/view/screens/Feeds.tsx:556
msgid "Feed offline"
msgstr ""
@@ -862,17 +897,17 @@ msgstr ""
msgid "Feed Preferences"
msgstr ""
-#: src/view/shell/desktop/RightNav.tsx:65
-#: src/view/shell/Drawer.tsx:292
+#: src/view/shell/desktop/RightNav.tsx:73
+#: src/view/shell/Drawer.tsx:311
msgid "Feedback"
msgstr ""
#: src/view/screens/Feeds.tsx:475
#: src/view/screens/Profile.tsx:165
#: src/view/shell/bottom-bar/BottomBar.tsx:181
-#: src/view/shell/desktop/LeftNav.tsx:340
-#: src/view/shell/Drawer.tsx:455
-#: src/view/shell/Drawer.tsx:456
+#: src/view/shell/desktop/LeftNav.tsx:342
+#: src/view/shell/Drawer.tsx:474
+#: src/view/shell/Drawer.tsx:475
msgid "Feeds"
msgstr ""
@@ -884,11 +919,11 @@ msgstr ""
msgid "Feeds are custom algorithms that users build with a little coding expertise. <0/> for more information."
msgstr ""
-#: src/view/screens/Search/Search.tsx:422
+#: src/view/screens/Search/Search.tsx:427
msgid "Find users on Bluesky"
msgstr ""
-#: src/view/screens/Search/Search.tsx:420
+#: src/view/screens/Search/Search.tsx:425
msgid "Find users with the search tool on the right"
msgstr ""
@@ -896,7 +931,7 @@ msgstr ""
msgid "Finding similar accounts..."
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:102
+#: src/view/screens/PreferencesHomeFeed.tsx:108
msgid "Fine-tune the content you see on your home screen."
msgstr ""
@@ -920,7 +955,7 @@ msgstr ""
msgid "Followed users"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:145
+#: src/view/screens/PreferencesHomeFeed.tsx:151
msgid "Followed users only"
msgstr ""
@@ -949,11 +984,11 @@ msgstr ""
msgid "For security reasons, you won't be able to view this again. If you lose this password, you'll need to generate a new one."
msgstr ""
-#: src/view/com/auth/login/LoginForm.tsx:231
+#: src/view/com/auth/login/LoginForm.tsx:236
msgid "Forgot"
msgstr ""
-#: src/view/com/auth/login/LoginForm.tsx:228
+#: src/view/com/auth/login/LoginForm.tsx:233
msgid "Forgot password"
msgstr ""
@@ -977,15 +1012,15 @@ msgstr ""
msgid "Go back"
msgstr ""
-#: src/view/screens/ProfileFeed.tsx:103
-#: src/view/screens/ProfileFeed.tsx:108
-#: src/view/screens/ProfileList.tsx:839
-#: src/view/screens/ProfileList.tsx:844
+#: src/view/screens/ProfileFeed.tsx:104
+#: src/view/screens/ProfileFeed.tsx:109
+#: src/view/screens/ProfileList.tsx:848
+#: src/view/screens/ProfileList.tsx:853
msgid "Go Back"
msgstr ""
#: src/view/com/auth/login/ForgotPasswordForm.tsx:181
-#: src/view/com/auth/login/LoginForm.tsx:278
+#: src/view/com/auth/login/LoginForm.tsx:283
#: src/view/com/auth/login/SetNewPasswordForm.tsx:163
msgid "Go to next"
msgstr ""
@@ -994,8 +1029,8 @@ msgstr ""
msgid "Handle"
msgstr ""
-#: src/view/shell/desktop/RightNav.tsx:94
-#: src/view/shell/Drawer.tsx:302
+#: src/view/shell/desktop/RightNav.tsx:102
+#: src/view/shell/Drawer.tsx:321
msgid "Help"
msgstr ""
@@ -1003,12 +1038,20 @@ msgstr ""
msgid "Here is your app password."
msgstr ""
-#: src/view/com/notifications/FeedItem.tsx:316
+#: src/view/com/notifications/FeedItem.tsx:324
#: src/view/com/util/moderation/ContentHider.tsx:103
msgid "Hide"
msgstr ""
-#: src/view/com/notifications/FeedItem.tsx:308
+#: src/view/com/util/forms/PostDropdownBtn.tsx:173
+msgid "Hide post"
+msgstr ""
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:177
+msgid "Hide this post?"
+msgstr ""
+
+#: src/view/com/notifications/FeedItem.tsx:316
msgid "Hide user list"
msgstr ""
@@ -1041,14 +1084,14 @@ msgstr ""
#~ msgstr ""
#: src/view/shell/bottom-bar/BottomBar.tsx:137
-#: src/view/shell/desktop/LeftNav.tsx:304
-#: src/view/shell/Drawer.tsx:379
-#: src/view/shell/Drawer.tsx:380
+#: src/view/shell/desktop/LeftNav.tsx:306
+#: src/view/shell/Drawer.tsx:398
+#: src/view/shell/Drawer.tsx:399
msgid "Home"
msgstr ""
#: src/view/com/pager/FeedsTabBarMobile.tsx:96
-#: src/view/screens/PreferencesHomeFeed.tsx:95
+#: src/view/screens/PreferencesHomeFeed.tsx:101
#: src/view/screens/Settings.tsx:481
msgid "Home Feed Preferences"
msgstr ""
@@ -1088,7 +1131,7 @@ msgstr ""
#~ msgid "In Your Network"
#~ msgstr ""
-#: src/view/com/auth/login/LoginForm.tsx:113
+#: src/view/com/auth/login/LoginForm.tsx:115
msgid "Invalid username or password"
msgstr ""
@@ -1101,7 +1144,7 @@ msgstr ""
msgid "Invite a Friend"
msgstr ""
-#: src/view/com/auth/create/Step2.tsx:57
+#: src/view/com/auth/create/Step2.tsx:72
msgid "Invite code"
msgstr ""
@@ -1109,7 +1152,7 @@ msgstr ""
msgid "Invite code not accepted. Check that you input it correctly and try again."
msgstr ""
-#: src/view/shell/Drawer.tsx:621
+#: src/view/shell/Drawer.tsx:640
msgid "Invite codes: {invitesAvailable} available"
msgstr ""
@@ -1121,8 +1164,8 @@ msgstr ""
msgid "Join the waitlist"
msgstr ""
-#: src/view/com/auth/create/Step2.tsx:68
-#: src/view/com/auth/create/Step2.tsx:72
+#: src/view/com/auth/create/Step2.tsx:86
+#: src/view/com/auth/create/Step2.tsx:90
msgid "Join the waitlist."
msgstr ""
@@ -1186,7 +1229,7 @@ msgstr ""
#~ msgid "Light"
#~ msgstr ""
-#: src/view/screens/ProfileFeed.tsx:577
+#: src/view/screens/ProfileFeed.tsx:586
msgid "Like this feed"
msgstr ""
@@ -1216,18 +1259,18 @@ msgid "List Name"
msgstr ""
#: src/view/screens/Profile.tsx:166
-#: src/view/shell/desktop/LeftNav.tsx:377
-#: src/view/shell/Drawer.tsx:471
-#: src/view/shell/Drawer.tsx:472
+#: src/view/shell/desktop/LeftNav.tsx:379
+#: src/view/shell/Drawer.tsx:490
+#: src/view/shell/Drawer.tsx:491
msgid "Lists"
msgstr ""
-#: src/view/com/post-thread/PostThread.tsx:260
-#: src/view/com/post-thread/PostThread.tsx:268
+#: src/view/com/post-thread/PostThread.tsx:259
+#: src/view/com/post-thread/PostThread.tsx:267
msgid "Load more posts"
msgstr ""
-#: src/view/screens/Notifications.tsx:144
+#: src/view/screens/Notifications.tsx:148
msgid "Load new notifications"
msgstr ""
@@ -1285,9 +1328,9 @@ msgstr ""
#: src/view/screens/Moderation.tsx:64
#: src/view/screens/Settings.tsx:563
-#: src/view/shell/desktop/LeftNav.tsx:395
-#: src/view/shell/Drawer.tsx:490
-#: src/view/shell/Drawer.tsx:491
+#: src/view/shell/desktop/LeftNav.tsx:397
+#: src/view/shell/Drawer.tsx:509
+#: src/view/shell/Drawer.tsx:510
msgid "Moderation"
msgstr ""
@@ -1304,8 +1347,8 @@ msgid "More feeds"
msgstr ""
#: src/view/com/profile/ProfileHeader.tsx:548
-#: src/view/screens/ProfileFeed.tsx:360
-#: src/view/screens/ProfileList.tsx:583
+#: src/view/screens/ProfileFeed.tsx:361
+#: src/view/screens/ProfileList.tsx:584
msgid "More options"
msgstr ""
@@ -1313,23 +1356,27 @@ msgstr ""
#~ msgid "More post options"
#~ msgstr ""
+#: src/view/screens/PreferencesThreads.tsx:82
+msgid "Most-liked replies first"
+msgstr ""
+
#: src/view/com/profile/ProfileHeader.tsx:370
msgid "Mute Account"
msgstr ""
-#: src/view/screens/ProfileList.tsx:510
+#: src/view/screens/ProfileList.tsx:511
msgid "Mute accounts"
msgstr ""
-#: src/view/screens/ProfileList.tsx:457
+#: src/view/screens/ProfileList.tsx:458
msgid "Mute list"
msgstr ""
-#: src/view/screens/ProfileList.tsx:270
+#: src/view/screens/ProfileList.tsx:271
msgid "Mute these accounts?"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:149
+#: src/view/com/util/forms/PostDropdownBtn.tsx:157
msgid "Mute thread"
msgstr ""
@@ -1337,15 +1384,15 @@ msgstr ""
msgid "Muted accounts"
msgstr ""
-#: src/view/screens/ModerationMutedAccounts.tsx:106
+#: src/view/screens/ModerationMutedAccounts.tsx:107
msgid "Muted Accounts"
msgstr ""
-#: src/view/screens/ModerationMutedAccounts.tsx:114
+#: src/view/screens/ModerationMutedAccounts.tsx:115
msgid "Muted accounts have their posts removed from your feed and from your notifications. Mutes are completely private."
msgstr ""
-#: src/view/screens/ProfileList.tsx:272
+#: src/view/screens/ProfileList.tsx:273
msgid "Muting is private. Muted accounts can interact with you, but you will not see their posts or receive notifications from them."
msgstr ""
@@ -1374,6 +1421,11 @@ msgstr ""
msgid "Name"
msgstr ""
+#: src/view/com/modals/EmbedConsent.tsx:107
+#: src/view/com/modals/EmbedConsent.tsx:123
+msgid "Never load embeds from {0}"
+msgstr ""
+
#: src/view/com/auth/onboarding/WelcomeMobile.tsx:72
msgid "Never lose access to your followers and data."
msgstr ""
@@ -1384,23 +1436,27 @@ msgid "New"
msgstr ""
#: src/view/com/feeds/FeedPage.tsx:200
-#: src/view/screens/Feeds.tsx:511
+#: src/view/screens/Feeds.tsx:507
#: src/view/screens/Profile.tsx:354
-#: src/view/screens/ProfileFeed.tsx:430
-#: src/view/screens/ProfileList.tsx:193
-#: src/view/screens/ProfileList.tsx:221
-#: src/view/shell/desktop/LeftNav.tsx:247
+#: src/view/screens/ProfileFeed.tsx:431
+#: src/view/screens/ProfileList.tsx:194
+#: src/view/screens/ProfileList.tsx:222
+#: src/view/shell/desktop/LeftNav.tsx:248
msgid "New post"
msgstr ""
-#: src/view/shell/desktop/LeftNav.tsx:257
+#: src/view/shell/desktop/LeftNav.tsx:258
msgid "New Post"
msgstr ""
+#: src/view/screens/PreferencesThreads.tsx:79
+msgid "Newest replies first"
+msgstr ""
+
#: src/view/com/auth/create/CreateAccount.tsx:154
#: src/view/com/auth/login/ForgotPasswordForm.tsx:174
#: src/view/com/auth/login/ForgotPasswordForm.tsx:184
-#: src/view/com/auth/login/LoginForm.tsx:281
+#: src/view/com/auth/login/LoginForm.tsx:286
#: src/view/com/auth/login/SetNewPasswordForm.tsx:156
#: src/view/com/auth/login/SetNewPasswordForm.tsx:166
#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:79
@@ -1411,14 +1467,17 @@ msgstr ""
msgid "Next image"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:191
-#: src/view/screens/PreferencesHomeFeed.tsx:226
-#: src/view/screens/PreferencesHomeFeed.tsx:263
+#: src/view/screens/PreferencesHomeFeed.tsx:126
+#: src/view/screens/PreferencesHomeFeed.tsx:197
+#: src/view/screens/PreferencesHomeFeed.tsx:232
+#: src/view/screens/PreferencesHomeFeed.tsx:269
+#: src/view/screens/PreferencesThreads.tsx:106
+#: src/view/screens/PreferencesThreads.tsx:129
msgid "No"
msgstr ""
-#: src/view/screens/ProfileFeed.tsx:570
-#: src/view/screens/ProfileList.tsx:711
+#: src/view/screens/ProfileFeed.tsx:579
+#: src/view/screens/ProfileList.tsx:720
msgid "No description"
msgstr ""
@@ -1436,13 +1495,17 @@ msgstr ""
#~ msgstr ""
#: src/view/com/modals/ListAddRemoveUsers.tsx:127
-#: src/view/screens/Search/Search.tsx:271
-#: src/view/screens/Search/Search.tsx:299
-#: src/view/screens/Search/Search.tsx:615
+#: src/view/screens/Search/Search.tsx:270
+#: src/view/screens/Search/Search.tsx:298
+#: src/view/screens/Search/Search.tsx:629
#: src/view/shell/desktop/Search.tsx:210
msgid "No results found for {query}"
msgstr ""
+#: src/view/com/modals/EmbedConsent.tsx:129
+msgid "No thanks"
+msgstr ""
+
#: src/view/com/modals/Threadgate.tsx:82
msgid "Nobody"
msgstr ""
@@ -1467,12 +1530,12 @@ msgstr ""
#~ msgid "Note: Third-party apps that display Bluesky content may not respect this setting."
#~ msgstr ""
-#: src/view/screens/Notifications.tsx:109
-#: src/view/screens/Notifications.tsx:133
+#: src/view/screens/Notifications.tsx:113
+#: src/view/screens/Notifications.tsx:137
#: src/view/shell/bottom-bar/BottomBar.tsx:205
-#: src/view/shell/desktop/LeftNav.tsx:359
-#: src/view/shell/Drawer.tsx:416
-#: src/view/shell/Drawer.tsx:417
+#: src/view/shell/desktop/LeftNav.tsx:361
+#: src/view/shell/Drawer.tsx:435
+#: src/view/shell/Drawer.tsx:436
msgid "Notifications"
msgstr ""
@@ -1484,7 +1547,11 @@ msgstr ""
msgid "Okay"
msgstr ""
-#: src/view/com/composer/Composer.tsx:354
+#: src/view/screens/PreferencesThreads.tsx:78
+msgid "Oldest replies first"
+msgstr ""
+
+#: src/view/com/composer/Composer.tsx:363
msgid "One or more images is missing alt text."
msgstr ""
@@ -1492,6 +1559,11 @@ msgstr ""
msgid "Only {0} can reply."
msgstr ""
+#: src/view/com/composer/Composer.tsx:468
+#: src/view/com/composer/Composer.tsx:469
+msgid "Open emoji picker"
+msgstr ""
+
#: src/view/com/pager/FeedsTabBarMobile.tsx:76
msgid "Open navigation"
msgstr ""
@@ -1500,8 +1572,12 @@ msgstr ""
msgid "Opens configurable language settings"
msgstr ""
-#: src/view/shell/desktop/RightNav.tsx:148
-#: src/view/shell/Drawer.tsx:622
+#: src/view/screens/Settings.tsx:587
+msgid "Opens external embeds settings"
+msgstr ""
+
+#: src/view/shell/desktop/RightNav.tsx:156
+#: src/view/shell/Drawer.tsx:641
msgid "Opens list of invite codes"
msgstr ""
@@ -1517,7 +1593,7 @@ msgstr ""
msgid "Opens screen with all saved feeds"
msgstr ""
-#: src/view/screens/Settings.tsx:581
+#: src/view/screens/Settings.tsx:614
msgid "Opens the app password settings page"
msgstr ""
@@ -1525,11 +1601,11 @@ msgstr ""
msgid "Opens the home feed preferences"
msgstr ""
-#: src/view/screens/Settings.tsx:664
+#: src/view/screens/Settings.tsx:697
msgid "Opens the storybook page"
msgstr ""
-#: src/view/screens/Settings.tsx:644
+#: src/view/screens/Settings.tsx:677
msgid "Opens the system log page"
msgstr ""
@@ -1537,6 +1613,10 @@ msgstr ""
msgid "Opens the threads preferences"
msgstr ""
+#: src/view/com/modals/Threadgate.tsx:89
+msgid "Or combine these options:"
+msgstr ""
+
#: src/view/com/auth/login/ChooseAccountForm.tsx:138
msgid "Other account"
msgstr ""
@@ -1554,9 +1634,9 @@ msgstr ""
msgid "Page not found"
msgstr ""
-#: src/view/com/auth/create/Step2.tsx:101
-#: src/view/com/auth/create/Step2.tsx:111
-#: src/view/com/auth/login/LoginForm.tsx:216
+#: src/view/com/auth/create/Step2.tsx:122
+#: src/view/com/auth/create/Step2.tsx:132
+#: src/view/com/auth/login/LoginForm.tsx:221
#: src/view/com/auth/login/SetNewPasswordForm.tsx:130
#: src/view/com/modals/DeleteAccount.tsx:191
msgid "Password"
@@ -1578,6 +1658,19 @@ msgstr ""
msgid "Pinned Feeds"
msgstr ""
+#: src/view/com/util/post-embeds/ExternalGifEmbed.tsx:111
+msgid "Play {0}"
+msgstr ""
+
+#: src/view/com/util/post-embeds/ExternalPlayerEmbed.tsx:54
+#: src/view/com/util/post-embeds/ExternalPlayerEmbed.tsx:55
+msgid "Play Video"
+msgstr ""
+
+#: src/view/com/util/post-embeds/ExternalGifEmbed.tsx:110
+msgid "Plays the GIF"
+msgstr ""
+
#: src/view/com/auth/create/state.ts:116
msgid "Please choose your handle."
msgstr ""
@@ -1612,13 +1705,17 @@ msgstr ""
#~ msgid "Please tell us why you think this decision was incorrect."
#~ msgstr ""
-#: src/view/com/composer/Composer.tsx:337
-#: src/view/com/post-thread/PostThread.tsx:226
+#: src/view/com/composer/Composer.tsx:215
+msgid "Please wait for your link card to finish loading"
+msgstr ""
+
+#: src/view/com/composer/Composer.tsx:346
+#: src/view/com/post-thread/PostThread.tsx:225
#: src/view/screens/PostThread.tsx:80
msgid "Post"
msgstr ""
-#: src/view/com/post-thread/PostThread.tsx:385
+#: src/view/com/post-thread/PostThread.tsx:378
msgid "Post hidden"
msgstr ""
@@ -1630,7 +1727,7 @@ msgstr ""
msgid "Post Languages"
msgstr ""
-#: src/view/com/post-thread/PostThread.tsx:437
+#: src/view/com/post-thread/PostThread.tsx:430
msgid "Post not found"
msgstr ""
@@ -1650,15 +1747,18 @@ msgstr ""
msgid "Primary Language"
msgstr ""
-#: src/view/screens/PreferencesThreads.tsx:91
+#: src/view/screens/PreferencesThreads.tsx:97
msgid "Prioritize Your Follows"
msgstr ""
-#: src/view/shell/desktop/RightNav.tsx:76
+#: src/view/screens/Settings.tsx:570
+#: src/view/shell/desktop/RightNav.tsx:84
msgid "Privacy"
msgstr ""
#: src/view/screens/PrivacyPolicy.tsx:29
+#: src/view/screens/Settings.tsx:783
+#: src/view/shell/Drawer.tsx:262
msgid "Privacy Policy"
msgstr ""
@@ -1667,14 +1767,14 @@ msgid "Processing..."
msgstr ""
#: src/view/shell/bottom-bar/BottomBar.tsx:247
-#: src/view/shell/desktop/LeftNav.tsx:413
-#: src/view/shell/Drawer.tsx:69
-#: src/view/shell/Drawer.tsx:525
-#: src/view/shell/Drawer.tsx:526
+#: src/view/shell/desktop/LeftNav.tsx:415
+#: src/view/shell/Drawer.tsx:70
+#: src/view/shell/Drawer.tsx:544
+#: src/view/shell/Drawer.tsx:545
msgid "Profile"
msgstr ""
-#: src/view/screens/Settings.tsx:789
+#: src/view/screens/Settings.tsx:841
msgid "Protect your account by verifying your email."
msgstr ""
@@ -1695,6 +1795,10 @@ msgstr ""
msgid "Quote Post"
msgstr ""
+#: src/view/screens/PreferencesThreads.tsx:86
+msgid "Random (aka \"Poster's Roulette\")"
+msgstr ""
+
#: src/view/com/modals/EditImage.tsx:236
msgid "Ratios"
msgstr ""
@@ -1734,7 +1838,7 @@ msgstr ""
#: src/view/com/feeds/FeedSourceCard.tsx:105
#: src/view/com/feeds/FeedSourceCard.tsx:172
-#: src/view/screens/ProfileFeed.tsx:270
+#: src/view/screens/ProfileFeed.tsx:271
msgid "Remove from my feeds"
msgstr ""
@@ -1767,7 +1871,7 @@ msgstr ""
msgid "Replies to this thread are disabled"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:135
+#: src/view/screens/PreferencesHomeFeed.tsx:141
msgid "Reply Filters"
msgstr ""
@@ -1779,16 +1883,16 @@ msgstr ""
msgid "Report Account"
msgstr ""
-#: src/view/screens/ProfileFeed.tsx:290
+#: src/view/screens/ProfileFeed.tsx:291
msgid "Report feed"
msgstr ""
-#: src/view/screens/ProfileList.tsx:425
+#: src/view/screens/ProfileList.tsx:426
msgid "Report List"
msgstr ""
#: src/view/com/modals/report/SendReportButton.tsx:37
-#: src/view/com/util/forms/PostDropdownBtn.tsx:167
+#: src/view/com/util/forms/PostDropdownBtn.tsx:196
msgid "Report post"
msgstr ""
@@ -1814,11 +1918,11 @@ msgstr ""
#~ msgid "Request to limit the visibility of my account"
#~ msgstr ""
-#: src/view/screens/Settings.tsx:382
-#~ msgid "Require alt text before posting"
-#~ msgstr ""
+#: src/view/screens/Settings.tsx:422
+msgid "Require alt text before posting"
+msgstr ""
-#: src/view/com/auth/create/Step2.tsx:53
+#: src/view/com/auth/create/Step2.tsx:68
msgid "Required for this provider"
msgstr ""
@@ -1826,7 +1930,7 @@ msgstr ""
msgid "Reset code"
msgstr ""
-#: src/view/screens/Settings.tsx:686
+#: src/view/screens/Settings.tsx:719
msgid "Reset onboarding state"
msgstr ""
@@ -1834,22 +1938,22 @@ msgstr ""
msgid "Reset password"
msgstr ""
-#: src/view/screens/Settings.tsx:676
+#: src/view/screens/Settings.tsx:709
msgid "Reset preferences state"
msgstr ""
-#: src/view/screens/Settings.tsx:684
+#: src/view/screens/Settings.tsx:717
msgid "Resets the onboarding state"
msgstr ""
-#: src/view/screens/Settings.tsx:674
+#: src/view/screens/Settings.tsx:707
msgid "Resets the preferences state"
msgstr ""
#: src/view/com/auth/create/CreateAccount.tsx:163
#: src/view/com/auth/create/CreateAccount.tsx:167
-#: src/view/com/auth/login/LoginForm.tsx:258
-#: src/view/com/auth/login/LoginForm.tsx:261
+#: src/view/com/auth/login/LoginForm.tsx:263
+#: src/view/com/auth/login/LoginForm.tsx:266
#: src/view/com/util/error/ErrorMessage.tsx:55
#: src/view/com/util/error/ErrorScreen.tsx:65
msgid "Retry"
@@ -1859,9 +1963,8 @@ msgstr ""
#~ msgid "Retry change handle"
#~ msgstr ""
-#: src/view/com/modals/AltImage.tsx:115
-#: src/view/com/modals/BirthDateSettings.tsx:93
-#: src/view/com/modals/BirthDateSettings.tsx:96
+#: src/view/com/modals/BirthDateSettings.tsx:94
+#: src/view/com/modals/BirthDateSettings.tsx:97
#: src/view/com/modals/ChangeHandle.tsx:173
#: src/view/com/modals/CreateOrEditList.tsx:249
#: src/view/com/modals/CreateOrEditList.tsx:257
@@ -1894,15 +1997,15 @@ msgid "Saved Feeds"
msgstr ""
#: src/view/com/modals/ListAddRemoveUsers.tsx:75
-#: src/view/com/util/forms/SearchInput.tsx:64
-#: src/view/screens/Search/Search.tsx:401
-#: src/view/screens/Search/Search.tsx:567
+#: src/view/com/util/forms/SearchInput.tsx:65
+#: src/view/screens/Search/Search.tsx:406
+#: src/view/screens/Search/Search.tsx:572
#: src/view/shell/bottom-bar/BottomBar.tsx:159
-#: src/view/shell/desktop/LeftNav.tsx:322
+#: src/view/shell/desktop/LeftNav.tsx:324
#: src/view/shell/desktop/Search.tsx:161
#: src/view/shell/desktop/Search.tsx:170
-#: src/view/shell/Drawer.tsx:343
-#: src/view/shell/Drawer.tsx:344
+#: src/view/shell/Drawer.tsx:362
+#: src/view/shell/Drawer.tsx:363
msgid "Search"
msgstr ""
@@ -1931,7 +2034,7 @@ msgstr ""
msgid "Select from an existing account"
msgstr ""
-#: src/view/com/auth/login/LoginForm.tsx:143
+#: src/view/com/auth/login/LoginForm.tsx:147
msgid "Select service"
msgstr ""
@@ -1959,8 +2062,8 @@ msgstr ""
msgid "Send Email"
msgstr ""
-#: src/view/shell/Drawer.tsx:276
-#: src/view/shell/Drawer.tsx:297
+#: src/view/shell/Drawer.tsx:295
+#: src/view/shell/Drawer.tsx:316
msgid "Send feedback"
msgstr ""
@@ -1972,30 +2075,30 @@ msgstr ""
msgid "Set new password"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:216
+#: src/view/screens/PreferencesHomeFeed.tsx:222
msgid "Set this setting to \"No\" to hide all quote posts from your feed. Reposts will still be visible."
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:113
+#: src/view/screens/PreferencesHomeFeed.tsx:119
msgid "Set this setting to \"No\" to hide all replies from your feed."
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:182
+#: src/view/screens/PreferencesHomeFeed.tsx:188
msgid "Set this setting to \"No\" to hide all reposts from your feed."
msgstr ""
-#: src/view/screens/PreferencesThreads.tsx:116
+#: src/view/screens/PreferencesThreads.tsx:122
msgid "Set this setting to \"Yes\" to show replies in a threaded view. This is an experimental feature."
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:252
+#: src/view/screens/PreferencesHomeFeed.tsx:258
msgid "Set this setting to \"Yes\" to show samples of your saved feeds in your following feed. This is an experimental feature."
msgstr ""
#: src/view/screens/Settings.tsx:277
-#: src/view/shell/desktop/LeftNav.tsx:431
-#: src/view/shell/Drawer.tsx:546
-#: src/view/shell/Drawer.tsx:547
+#: src/view/shell/desktop/LeftNav.tsx:433
+#: src/view/shell/Drawer.tsx:565
+#: src/view/shell/Drawer.tsx:566
msgid "Settings"
msgstr ""
@@ -2004,12 +2107,12 @@ msgid "Sexual activity or erotic nudity."
msgstr ""
#: src/view/com/profile/ProfileHeader.tsx:338
-#: src/view/com/util/forms/PostDropdownBtn.tsx:131
-#: src/view/screens/ProfileList.tsx:384
+#: src/view/com/util/forms/PostDropdownBtn.tsx:139
+#: src/view/screens/ProfileList.tsx:385
msgid "Share"
msgstr ""
-#: src/view/screens/ProfileFeed.tsx:302
+#: src/view/screens/ProfileFeed.tsx:303
msgid "Share feed"
msgstr ""
@@ -2026,27 +2129,31 @@ msgstr ""
msgid "Show anyway"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:249
+#: src/view/com/modals/EmbedConsent.tsx:87
+msgid "Show embeds from {0}"
+msgstr ""
+
+#: src/view/screens/PreferencesHomeFeed.tsx:255
msgid "Show Posts from My Feeds"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:213
+#: src/view/screens/PreferencesHomeFeed.tsx:219
msgid "Show Quote Posts"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:110
+#: src/view/screens/PreferencesHomeFeed.tsx:116
msgid "Show Replies"
msgstr ""
-#: src/view/screens/PreferencesThreads.tsx:94
+#: src/view/screens/PreferencesThreads.tsx:100
msgid "Show replies by people you follow before all other replies."
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:179
+#: src/view/screens/PreferencesHomeFeed.tsx:185
msgid "Show Reposts"
msgstr ""
-#: src/view/com/notifications/FeedItem.tsx:337
+#: src/view/com/notifications/FeedItem.tsx:345
msgid "Show users"
msgstr ""
@@ -2079,7 +2186,7 @@ msgstr ""
msgid "Sign in as..."
msgstr ""
-#: src/view/com/auth/login/LoginForm.tsx:130
+#: src/view/com/auth/login/LoginForm.tsx:134
msgid "Sign into"
msgstr ""
@@ -2133,11 +2240,11 @@ msgstr ""
msgid "Staging"
msgstr ""
-#: src/view/screens/Settings.tsx:730
+#: src/view/screens/Settings.tsx:763
msgid "Status page"
msgstr ""
-#: src/view/screens/Settings.tsx:666
+#: src/view/screens/Settings.tsx:699
msgid "Storybook"
msgstr ""
@@ -2145,15 +2252,15 @@ msgstr ""
msgid "Submit"
msgstr "Submit"
-#: src/view/screens/ProfileList.tsx:574
+#: src/view/screens/ProfileList.tsx:575
msgid "Subscribe"
msgstr ""
-#: src/view/screens/ProfileList.tsx:570
+#: src/view/screens/ProfileList.tsx:571
msgid "Subscribe to this list"
msgstr ""
-#: src/view/screens/Search/Search.tsx:357
+#: src/view/screens/Search/Search.tsx:362
msgid "Suggested Follows"
msgstr ""
@@ -2170,7 +2277,7 @@ msgstr ""
#~ msgid "System"
#~ msgstr ""
-#: src/view/screens/Settings.tsx:646
+#: src/view/screens/Settings.tsx:679
msgid "System log"
msgstr ""
@@ -2178,16 +2285,18 @@ msgstr ""
msgid "Tall"
msgstr ""
-#: src/view/shell/desktop/RightNav.tsx:85
+#: src/view/shell/desktop/RightNav.tsx:93
msgid "Terms"
msgstr ""
+#: src/view/screens/Settings.tsx:777
#: src/view/screens/TermsOfService.tsx:29
+#: src/view/shell/Drawer.tsx:256
msgid "Terms of Service"
msgstr ""
#: src/view/com/modals/AppealLabel.tsx:70
-#: src/view/com/modals/report/InputIssueDetails.tsx:50
+#: src/view/com/modals/report/InputIssueDetails.tsx:51
msgid "Text input field"
msgstr ""
@@ -2203,7 +2312,7 @@ msgstr ""
msgid "The Copyright Policy has been moved to <0/>"
msgstr ""
-#: src/view/com/post-thread/PostThread.tsx:440
+#: src/view/com/post-thread/PostThread.tsx:433
msgid "The post may have been deleted."
msgstr ""
@@ -2235,6 +2344,10 @@ msgstr ""
msgid "This account has requested that users sign in to view their profile."
msgstr ""
+#: src/view/com/modals/EmbedConsent.tsx:68
+msgid "This content is hosted by {0}. Do you want to enable external media?"
+msgstr ""
+
#: src/view/com/posts/FeedErrorMessage.tsx:107
msgid "This content is not viewable without a Bluesky account."
msgstr ""
@@ -2267,12 +2380,16 @@ msgstr ""
msgid "This warning is only available for posts with media attached."
msgstr ""
+#: src/view/com/util/forms/PostDropdownBtn.tsx:178
+msgid "This will hide this post from your feeds."
+msgstr ""
+
#: src/view/screens/PreferencesThreads.tsx:53
#: src/view/screens/Settings.tsx:503
msgid "Thread Preferences"
msgstr ""
-#: src/view/screens/PreferencesThreads.tsx:113
+#: src/view/screens/PreferencesThreads.tsx:119
msgid "Threaded Mode"
msgstr ""
@@ -2284,9 +2401,9 @@ msgstr ""
msgid "Transformations"
msgstr ""
-#: src/view/com/post-thread/PostThreadItem.tsx:704
-#: src/view/com/post-thread/PostThreadItem.tsx:706
-#: src/view/com/util/forms/PostDropdownBtn.tsx:103
+#: src/view/com/post-thread/PostThreadItem.tsx:705
+#: src/view/com/post-thread/PostThreadItem.tsx:707
+#: src/view/com/util/forms/PostDropdownBtn.tsx:111
msgid "Translate"
msgstr ""
@@ -2294,17 +2411,17 @@ msgstr ""
msgid "Try again"
msgstr ""
-#: src/view/screens/ProfileList.tsx:472
+#: src/view/screens/ProfileList.tsx:473
msgid "Un-block list"
msgstr ""
-#: src/view/screens/ProfileList.tsx:457
+#: src/view/screens/ProfileList.tsx:458
msgid "Un-mute list"
msgstr ""
-#: src/view/com/auth/create/CreateAccount.tsx:64
+#: src/view/com/auth/create/CreateAccount.tsx:65
#: src/view/com/auth/login/Login.tsx:76
-#: src/view/com/auth/login/LoginForm.tsx:117
+#: src/view/com/auth/login/LoginForm.tsx:120
msgid "Unable to contact your service. Please check your Internet connection."
msgstr ""
@@ -2322,7 +2439,7 @@ msgstr ""
msgid "Undo repost"
msgstr ""
-#: src/view/com/auth/create/state.ts:210
+#: src/view/com/auth/create/state.ts:216
msgid "Unfortunately, you do not meet the requirements to create an account."
msgstr ""
@@ -2330,11 +2447,11 @@ msgstr ""
msgid "Unmute Account"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:149
+#: src/view/com/util/forms/PostDropdownBtn.tsx:157
msgid "Unmute thread"
msgstr ""
-#: src/view/screens/ProfileList.tsx:440
+#: src/view/screens/ProfileList.tsx:441
msgid "Unpin moderation list"
msgstr ""
@@ -2378,12 +2495,12 @@ msgstr ""
msgid "User Lists"
msgstr ""
-#: src/view/com/auth/login/LoginForm.tsx:170
-#: src/view/com/auth/login/LoginForm.tsx:187
+#: src/view/com/auth/login/LoginForm.tsx:174
+#: src/view/com/auth/login/LoginForm.tsx:192
msgid "Username or email address"
msgstr ""
-#: src/view/screens/ProfileList.tsx:738
+#: src/view/screens/ProfileList.tsx:747
msgid "Users"
msgstr ""
@@ -2399,15 +2516,15 @@ msgstr ""
msgid "Users in \"{0}\""
msgstr ""
-#: src/view/screens/Settings.tsx:750
+#: src/view/screens/Settings.tsx:802
msgid "Verify email"
msgstr ""
-#: src/view/screens/Settings.tsx:775
+#: src/view/screens/Settings.tsx:827
msgid "Verify my email"
msgstr ""
-#: src/view/screens/Settings.tsx:784
+#: src/view/screens/Settings.tsx:836
msgid "Verify My Email"
msgstr ""
@@ -2428,7 +2545,7 @@ msgstr ""
msgid "Visit Site"
msgstr ""
-#: src/view/com/auth/create/CreateAccount.tsx:121
+#: src/view/com/auth/create/CreateAccount.tsx:122
msgid "We're so excited to have you join us!"
msgstr ""
@@ -2440,7 +2557,7 @@ msgstr ""
#~ msgid "We're sorry, but this feed is currently receiving high traffic and is temporarily unavailable. Please try again later."
#~ msgstr ""
-#: src/view/screens/Search/Search.tsx:238
+#: src/view/screens/Search/Search.tsx:243
msgid "We're sorry, but your search could not be completed. Please try again in a few minutes."
msgstr ""
@@ -2481,7 +2598,7 @@ msgstr ""
msgid "Wide"
msgstr ""
-#: src/view/com/composer/Composer.tsx:409
+#: src/view/com/composer/Composer.tsx:418
msgid "Write post"
msgstr ""
@@ -2489,9 +2606,12 @@ msgstr ""
msgid "Write your reply"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:192
-#: src/view/screens/PreferencesHomeFeed.tsx:227
-#: src/view/screens/PreferencesHomeFeed.tsx:262
+#: src/view/screens/PreferencesHomeFeed.tsx:126
+#: src/view/screens/PreferencesHomeFeed.tsx:198
+#: src/view/screens/PreferencesHomeFeed.tsx:233
+#: src/view/screens/PreferencesHomeFeed.tsx:268
+#: src/view/screens/PreferencesThreads.tsx:106
+#: src/view/screens/PreferencesThreads.tsx:129
msgid "Yes"
msgstr ""
@@ -2520,20 +2640,20 @@ msgstr ""
msgid "You don't have any saved feeds."
msgstr ""
-#: src/view/com/post-thread/PostThread.tsx:388
+#: src/view/com/post-thread/PostThread.tsx:381
msgid "You have blocked the author or you have been blocked by the author."
msgstr ""
-#: src/view/com/feeds/ProfileFeedgens.tsx:141
+#: src/view/com/feeds/ProfileFeedgens.tsx:134
msgid "You have no feeds."
msgstr ""
#: src/view/com/lists/MyLists.tsx:89
-#: src/view/com/lists/ProfileLists.tsx:145
+#: src/view/com/lists/ProfileLists.tsx:138
msgid "You have no lists."
msgstr ""
-#: src/view/screens/ModerationBlockedAccounts.tsx:131
+#: src/view/screens/ModerationBlockedAccounts.tsx:132
msgid "You have not blocked any accounts yet. To block an account, go to their profile and selected \"Block account\" from the menu on their account."
msgstr ""
@@ -2541,7 +2661,7 @@ msgstr ""
msgid "You have not created any app passwords yet. You can create one by pressing the button below."
msgstr ""
-#: src/view/screens/ModerationMutedAccounts.tsx:130
+#: src/view/screens/ModerationMutedAccounts.tsx:131
msgid "You have not muted any accounts yet. To mute an account, go to their profile and selected \"Mute account\" from the menu on their account."
msgstr ""
@@ -2549,11 +2669,11 @@ msgstr ""
msgid "You will receive an email with a \"reset code.\" Enter that code here, then enter your new password."
msgstr ""
-#: src/view/com/auth/create/Step2.tsx:43
+#: src/view/com/auth/create/Step2.tsx:58
msgid "Your account"
msgstr ""
-#: src/view/com/auth/create/Step2.tsx:122
+#: src/view/com/auth/create/Step2.tsx:146
msgid "Your birth date"
msgstr ""
@@ -2583,8 +2703,8 @@ msgid "Your hosting provider"
msgstr ""
#: src/view/screens/Settings.tsx:402
-#: src/view/shell/desktop/RightNav.tsx:129
-#: src/view/shell/Drawer.tsx:636
+#: src/view/shell/desktop/RightNav.tsx:137
+#: src/view/shell/Drawer.tsx:655
msgid "Your invite codes are hidden when logged in using an App Password"
msgstr ""
diff --git a/src/locale/locales/es/messages.po b/src/locale/locales/es/messages.po
index 8baf0ca087..5ecee6966f 100644
--- a/src/locale/locales/es/messages.po
+++ b/src/locale/locales/es/messages.po
@@ -13,9 +13,9 @@ msgstr ""
"Language-Team: \n"
"Plural-Forms: \n"
-#: src/view/shell/desktop/RightNav.tsx:160
+#: src/view/shell/desktop/RightNav.tsx:168
msgid "{0, plural, one {# invite code available} other {# invite codes available}}"
-msgstr ""
+msgstr "{0, plural, one {# invite code available} other {# invite codes available}}"
#: src/view/com/modals/Repost.tsx:44
msgid "{0}"
@@ -25,21 +25,21 @@ msgstr "{0}"
msgid "{0} {purposeLabel} List"
msgstr "Lista {purposeLabel} {0}"
-#: src/view/shell/desktop/RightNav.tsx:143
+#: src/view/shell/desktop/RightNav.tsx:151
msgid "{invitesAvailable, plural, one {Invite codes: # available} other {Invite codes: # available}}"
-msgstr ""
+msgstr "{invitesAvailable, plural, one {Invite codes: # available} other {Invite codes: # available}}"
#: src/view/screens/Settings.tsx:407
-#: src/view/shell/Drawer.tsx:640
+#: src/view/shell/Drawer.tsx:659
msgid "{invitesAvailable} invite code available"
msgstr "{invitesAvailable} código de invitación disponible"
#: src/view/screens/Settings.tsx:409
-#: src/view/shell/Drawer.tsx:642
+#: src/view/shell/Drawer.tsx:661
msgid "{invitesAvailable} invite codes available"
msgstr "{invitesAvailable} códigos de invitación disponibles"
-#: src/view/screens/Search/Search.tsx:88
+#: src/view/screens/Search/Search.tsx:87
msgid "{message}"
msgstr "{message}"
@@ -57,7 +57,7 @@ msgstr "<0>Sigue a algunos0><1>usuarios1><2>recomendados2>"
#: src/view/com/util/moderation/LabelInfo.tsx:45
msgid "A content warning has been applied to this {0}."
-msgstr ""
+msgstr "Se ha aplicado una advertencia de contenido a este {0}."
#: src/lib/hooks/useOTAUpdate.ts:16
msgid "A new version of the app is available. Please update to continue using the app."
@@ -68,7 +68,7 @@ msgstr "Ya está disponible una nueva versión de la aplicación. Actualízala p
msgid "Accessibility"
msgstr "Accesibilidad"
-#: src/view/com/auth/login/LoginForm.tsx:159
+#: src/view/com/auth/login/LoginForm.tsx:163
#: src/view/screens/Settings.tsx:286
msgid "Account"
msgstr "Cuenta"
@@ -79,7 +79,7 @@ msgstr "Opciones de la cuenta"
#: src/view/com/modals/ListAddRemoveUsers.tsx:264
#: src/view/com/modals/UserAddRemoveLists.tsx:193
-#: src/view/screens/ProfileList.tsx:754
+#: src/view/screens/ProfileList.tsx:763
msgid "Add"
msgstr "Agregar"
@@ -87,7 +87,7 @@ msgstr "Agregar"
msgid "Add a content warning"
msgstr "Agregar una advertencia de cuenta"
-#: src/view/screens/ProfileList.tsx:744
+#: src/view/screens/ProfileList.tsx:753
msgid "Add a user to this list"
msgstr "Agregar un usuario a esta lista"
@@ -98,6 +98,7 @@ msgstr "Agregar una cuenta"
#: src/view/com/composer/photos/Gallery.tsx:119
#: src/view/com/composer/photos/Gallery.tsx:180
+#: src/view/com/modals/AltImage.tsx:93
msgid "Add alt text"
msgstr "Agregar texto alt"
@@ -110,11 +111,11 @@ msgstr "Agregar detalles"
msgid "Add details to report"
msgstr "Agregar detalles al informe"
-#: src/view/com/composer/Composer.tsx:438
+#: src/view/com/composer/Composer.tsx:447
msgid "Add link card"
msgstr "Agregar una tarjeta de enlace"
-#: src/view/com/composer/Composer.tsx:441
+#: src/view/com/composer/Composer.tsx:450
msgid "Add link card:"
msgstr "Agregar una tarjeta de enlace:"
@@ -126,7 +127,7 @@ msgstr "Añade el siguiente registro DNS a tu dominio:"
msgid "Add to Lists"
msgstr "Agregar a listas"
-#: src/view/screens/ProfileFeed.tsx:270
+#: src/view/screens/ProfileFeed.tsx:271
msgid "Add to my feeds"
msgstr "Agregar a mis noticias"
@@ -135,7 +136,7 @@ msgstr "Agregar a mis noticias"
msgid "Added to list"
msgstr "Agregar a una lista"
-#: src/view/screens/PreferencesHomeFeed.tsx:164
+#: src/view/screens/PreferencesHomeFeed.tsx:170
msgid "Adjust the number of likes a reply must have to be shown in your feed."
msgstr "Ajusta el número de Me gusta que debe tener una respuesta para que se muestre en tus noticias."
@@ -143,7 +144,7 @@ msgstr "Ajusta el número de Me gusta que debe tener una respuesta para que se m
msgid "Adult Content"
msgstr "Contenido para adultos"
-#: src/view/screens/Settings.tsx:569
+#: src/view/screens/Settings.tsx:602
msgid "Advanced"
msgstr "Avanzado"
@@ -167,7 +168,7 @@ msgstr "Se ha enviado un correo electrónico a {0}. Incluye un código de confir
msgid "An email has been sent to your previous address, {0}. It includes a confirmation code which you can enter below."
msgstr "Se ha enviado un correo electrónico a tu dirección previa, {0}. Incluye un código de confirmación que puedes introducir a continuación."
-#: src/view/com/notifications/FeedItem.tsx:236
+#: src/view/com/notifications/FeedItem.tsx:237
#: src/view/com/threadgate/WhoCanReply.tsx:178
msgid "and"
msgstr "y"
@@ -176,7 +177,7 @@ msgstr "y"
msgid "App Language"
msgstr "Lenguaje de app"
-#: src/view/screens/Settings.tsx:589
+#: src/view/screens/Settings.tsx:622
msgid "App passwords"
msgstr "Contraseñas de la app"
@@ -184,17 +185,13 @@ msgstr "Contraseñas de la app"
msgid "App Passwords"
msgstr "Contraseñas de la app"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:207
+#: src/view/com/util/forms/PostDropdownBtn.tsx:236
msgid "Appeal content warning"
-msgstr ""
+msgstr "Aviso sobre el contenido del recurso"
#: src/view/com/modals/AppealLabel.tsx:65
msgid "Appeal Content Warning"
-msgstr ""
-
-#: src/view/com/modals/AppealLabel.tsx:65
-#~ msgid "Appeal Decision"
-#~ msgstr "Decisión de apelación"
+msgstr "Aviso sobre el Contenido del Recurso"
#: src/view/com/util/moderation/LabelInfo.tsx:52
msgid "Appeal this decision"
@@ -212,17 +209,17 @@ msgstr "Aspecto exterior"
msgid "Are you sure you want to delete the app password \"{name}\"?"
msgstr "¿Estás seguro de que quieres eliminar la contraseña de la app \"{name}\"?"
-#: src/view/com/composer/Composer.tsx:142
+#: src/view/com/composer/Composer.tsx:143
msgid "Are you sure you'd like to discard this draft?"
msgstr "¿Estás seguro de que quieres descartar este borrador?"
-#: src/view/screens/ProfileList.tsx:352
+#: src/view/screens/ProfileList.tsx:353
msgid "Are you sure?"
msgstr "¿Estás seguro?"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:190
+#: src/view/com/util/forms/PostDropdownBtn.tsx:219
msgid "Are you sure? This cannot be undone."
-msgstr "¿Estás seguro? Esto no puede deshacerse,"
+msgstr "¿Estás seguro? Esto no puede deshacerse."
#: src/view/com/modals/SelfLabel.tsx:123
msgid "Artistic or non-erotic nudity."
@@ -231,12 +228,12 @@ msgstr "Desnudez artística o no erótica."
#: src/view/com/auth/create/CreateAccount.tsx:141
#: src/view/com/auth/login/ChooseAccountForm.tsx:151
#: src/view/com/auth/login/ForgotPasswordForm.tsx:166
-#: src/view/com/auth/login/LoginForm.tsx:249
+#: src/view/com/auth/login/LoginForm.tsx:254
#: src/view/com/auth/login/SetNewPasswordForm.tsx:148
-#: src/view/com/modals/report/InputIssueDetails.tsx:45
-#: src/view/com/post-thread/PostThread.tsx:395
-#: src/view/com/post-thread/PostThread.tsx:445
-#: src/view/com/post-thread/PostThread.tsx:453
+#: src/view/com/modals/report/InputIssueDetails.tsx:46
+#: src/view/com/post-thread/PostThread.tsx:388
+#: src/view/com/post-thread/PostThread.tsx:438
+#: src/view/com/post-thread/PostThread.tsx:446
#: src/view/com/profile/ProfileHeader.tsx:672
msgid "Back"
msgstr "Regresar"
@@ -245,8 +242,8 @@ msgstr "Regresar"
msgid "Basics"
msgstr "Conceptos básicos"
-#: src/view/com/auth/create/Step2.tsx:131
-#: src/view/com/modals/BirthDateSettings.tsx:72
+#: src/view/com/auth/create/Step2.tsx:156
+#: src/view/com/modals/BirthDateSettings.tsx:73
msgid "Birthday"
msgstr "Cumpleaños"
@@ -259,15 +256,15 @@ msgstr "Cumpleaños:"
msgid "Block Account"
msgstr "Bloquear una cuenta"
-#: src/view/screens/ProfileList.tsx:522
+#: src/view/screens/ProfileList.tsx:523
msgid "Block accounts"
msgstr "Bloquear cuentas"
-#: src/view/screens/ProfileList.tsx:472
+#: src/view/screens/ProfileList.tsx:473
msgid "Block list"
msgstr "Bloquear una lista"
-#: src/view/screens/ProfileList.tsx:307
+#: src/view/screens/ProfileList.tsx:308
msgid "Block these accounts?"
msgstr "¿Bloquear estas cuentas?"
@@ -275,7 +272,7 @@ msgstr "¿Bloquear estas cuentas?"
msgid "Blocked accounts"
msgstr "Cuentas bloqueadas"
-#: src/view/screens/ModerationBlockedAccounts.tsx:106
+#: src/view/screens/ModerationBlockedAccounts.tsx:107
msgid "Blocked Accounts"
msgstr "Cuentas bloqueadas"
@@ -283,15 +280,15 @@ msgstr "Cuentas bloqueadas"
msgid "Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you."
msgstr "Las cuentas bloqueadas no pueden responder en tus hilos, mencionarte ni interactuar contigo de ninguna otra forma."
-#: src/view/screens/ModerationBlockedAccounts.tsx:114
+#: src/view/screens/ModerationBlockedAccounts.tsx:115
msgid "Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you. You will not see their content and they will be prevented from seeing yours."
msgstr "Las cuentas bloqueadas no pueden responder en tus hilos, mencionarte ni interactuar contigo de ninguna otra forma. Tú no verás su contenido y ellos no podrán ver el tuyo."
-#: src/view/com/post-thread/PostThread.tsx:251
+#: src/view/com/post-thread/PostThread.tsx:250
msgid "Blocked post."
-msgstr "Publicación bloqueada"
+msgstr "Publicación bloqueada."
-#: src/view/screens/ProfileList.tsx:309
+#: src/view/screens/ProfileList.tsx:310
msgid "Blocking is public. Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you."
msgstr "El bloque es público. Las cuentas bloqueadas no pueden responder en tus hilos, mencionarte ni interactuar contigo de ninguna otra forma."
@@ -327,7 +324,7 @@ msgstr "Bluesky no mostrará tu perfil ni tus publicaciones a los usuarios que h
msgid "Bluesky.Social"
msgstr "Bluesky.Social"
-#: src/view/screens/Settings.tsx:718
+#: src/view/screens/Settings.tsx:751
msgid "Build version {0} {1}"
msgstr "Versión {0} {1}"
@@ -345,9 +342,8 @@ msgstr "Cámara"
msgid "Can only contain letters, numbers, spaces, dashes, and underscores. Must be at least 4 characters long, but no more than 32 characters long."
msgstr "Sólo puede contener letras, números, espacios, guiones y guiones bajos. Debe tener al menos 4 caracteres, pero no más de 32."
-#: src/view/com/composer/Composer.tsx:285
-#: src/view/com/composer/Composer.tsx:288
-#: src/view/com/modals/AltImage.tsx:128
+#: src/view/com/composer/Composer.tsx:294
+#: src/view/com/composer/Composer.tsx:297
#: src/view/com/modals/ChangeEmail.tsx:218
#: src/view/com/modals/ChangeEmail.tsx:220
#: src/view/com/modals/Confirm.tsx:88
@@ -360,7 +356,7 @@ msgstr "Sólo puede contener letras, números, espacios, guiones y guiones bajos
#: src/view/com/modals/LinkWarning.tsx:85
#: src/view/com/modals/Repost.tsx:73
#: src/view/com/modals/Waitlist.tsx:136
-#: src/view/screens/Search/Search.tsx:592
+#: src/view/screens/Search/Search.tsx:601
#: src/view/shell/desktop/Search.tsx:182
msgid "Cancel"
msgstr "Cancelar"
@@ -371,8 +367,8 @@ msgid "Cancel account deletion"
msgstr "Cancelar la eliminación de la cuenta"
#: src/view/com/modals/AltImage.tsx:123
-msgid "Cancel add image alt text"
-msgstr "Cancelar añadir texto alternativo a la imagen"
+#~ msgid "Cancel add image alt text"
+#~ msgstr "Cancelar añadir texto alternativo a la imagen"
#: src/view/com/modals/ChangeHandle.tsx:149
msgid "Cancel change handle"
@@ -403,8 +399,8 @@ msgstr "Cancelar la inscripción en la lista de espera"
msgid "Change"
msgstr "Cambiar"
-#: src/view/screens/Settings.tsx:601
-#: src/view/screens/Settings.tsx:610
+#: src/view/screens/Settings.tsx:634
+#: src/view/screens/Settings.tsx:643
msgid "Change handle"
msgstr "Cambiar el identificador"
@@ -432,6 +428,10 @@ msgstr "Echa un vistazo a algunos usuarios recomendados. Síguelos para ver usua
msgid "Check your inbox for an email with the confirmation code to enter below:"
msgstr "Consulta tu bandeja de entrada para recibir un correo electrónico con el código de confirmación que debes introducir a continuación:"
+#: src/view/com/modals/Threadgate.tsx:72
+msgid "Choose \"Everybody\" or \"Nobody\""
+msgstr ""
+
#: src/view/com/modals/ServerInput.tsx:38
msgid "Choose Service"
msgstr "Elige un Servicio"
@@ -440,28 +440,28 @@ msgstr "Elige un Servicio"
msgid "Choose the algorithms that power your experience with custom feeds."
msgstr "Elige los algoritmos que potencian tu experiencia con publicaciones personalizadas."
-#: src/view/com/auth/create/Step2.tsx:106
+#: src/view/com/auth/create/Step2.tsx:127
msgid "Choose your password"
msgstr "Elige tu contraseña"
-#: src/view/screens/Settings.tsx:694
+#: src/view/screens/Settings.tsx:727
msgid "Clear all legacy storage data"
msgstr "Borrar todos los datos de almacenamiento heredados"
-#: src/view/screens/Settings.tsx:696
+#: src/view/screens/Settings.tsx:729
msgid "Clear all legacy storage data (restart after this)"
msgstr "Borrar todos los datos de almacenamiento heredados (reiniciar después de esto)"
-#: src/view/screens/Settings.tsx:706
+#: src/view/screens/Settings.tsx:739
msgid "Clear all storage data"
msgstr "Borrar todos los datos de almacenamiento"
-#: src/view/screens/Settings.tsx:708
+#: src/view/screens/Settings.tsx:741
msgid "Clear all storage data (restart after this)"
msgstr "Borrar todos los datos de almacenamiento (reiniciar después de esto)"
-#: src/view/com/util/forms/SearchInput.tsx:73
-#: src/view/screens/Search/Search.tsx:577
+#: src/view/com/util/forms/SearchInput.tsx:74
+#: src/view/screens/Search/Search.tsx:582
msgid "Clear search query"
msgstr "Borrar consulta de búsqueda"
@@ -497,8 +497,8 @@ msgstr "Redactar la respuesta"
#: src/view/com/modals/Confirm.tsx:75
#: src/view/com/modals/SelfLabel.tsx:154
#: src/view/com/modals/VerifyEmail.tsx:225
-#: src/view/screens/PreferencesHomeFeed.tsx:299
-#: src/view/screens/PreferencesThreads.tsx:153
+#: src/view/screens/PreferencesHomeFeed.tsx:305
+#: src/view/screens/PreferencesThreads.tsx:159
msgid "Confirm"
msgstr "Confirmar"
@@ -522,7 +522,7 @@ msgid "Confirmation code"
msgstr "Código de confirmación"
#: src/view/com/auth/create/CreateAccount.tsx:174
-#: src/view/com/auth/login/LoginForm.tsx:268
+#: src/view/com/auth/login/LoginForm.tsx:273
msgid "Connecting..."
msgstr "Conectando..."
@@ -561,11 +561,11 @@ msgstr "Copiado"
msgid "Copy"
msgstr "Copiar"
-#: src/view/screens/ProfileList.tsx:384
+#: src/view/screens/ProfileList.tsx:385
msgid "Copy link to list"
msgstr "Copia el enlace a la lista"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:131
+#: src/view/com/util/forms/PostDropdownBtn.tsx:139
msgid "Copy link to post"
msgstr "Copia el enlace a la publicación"
@@ -573,7 +573,7 @@ msgstr "Copia el enlace a la publicación"
msgid "Copy link to profile"
msgstr "Copia el enlace al perfil"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:117
+#: src/view/com/util/forms/PostDropdownBtn.tsx:125
msgid "Copy post text"
msgstr "Copiar el texto de la publicación"
@@ -581,11 +581,11 @@ msgstr "Copiar el texto de la publicación"
msgid "Copyright Policy"
msgstr "Política de derechos de autor"
-#: src/view/screens/ProfileFeed.tsx:94
+#: src/view/screens/ProfileFeed.tsx:95
msgid "Could not load feed"
msgstr "No se ha podido cargar las publicaciones"
-#: src/view/screens/ProfileList.tsx:830
+#: src/view/screens/ProfileList.tsx:839
msgid "Could not load list"
msgstr "No se ha podido cargar la lista"
@@ -594,7 +594,7 @@ msgstr "No se ha podido cargar la lista"
msgid "Create a new account"
msgstr "Crear una cuenta nueva"
-#: src/view/com/auth/create/CreateAccount.tsx:120
+#: src/view/com/auth/create/CreateAccount.tsx:121
msgid "Create Account"
msgstr "Crear una cuenta"
@@ -612,11 +612,15 @@ msgstr "Creado {0}"
msgid "Custom domain"
msgstr "Dominio personalizado"
-#: src/view/screens/Settings.tsx:615
+#: src/view/screens/PreferencesExternalEmbeds.tsx:55
+msgid "Customize media from external sites."
+msgstr ""
+
+#: src/view/screens/Settings.tsx:648
msgid "Danger Zone"
msgstr "Zona de peligro"
-#: src/view/screens/Settings.tsx:622
+#: src/view/screens/Settings.tsx:655
msgid "Delete account"
msgstr "Borrar la cuenta"
@@ -629,8 +633,8 @@ msgstr "Borrar la cuenta"
msgid "Delete app password"
msgstr "Borrar la contraseña de la app"
-#: src/view/screens/ProfileList.tsx:351
-#: src/view/screens/ProfileList.tsx:411
+#: src/view/screens/ProfileList.tsx:352
+#: src/view/screens/ProfileList.tsx:412
msgid "Delete List"
msgstr "Borrar la lista"
@@ -638,19 +642,19 @@ msgstr "Borrar la lista"
msgid "Delete my account"
msgstr "Borrar mi cuenta"
-#: src/view/screens/Settings.tsx:632
+#: src/view/screens/Settings.tsx:665
msgid "Delete my account…"
msgstr "Borrar mi cuenta..."
-#: src/view/com/util/forms/PostDropdownBtn.tsx:185
+#: src/view/com/util/forms/PostDropdownBtn.tsx:214
msgid "Delete post"
msgstr "Borrar una publicación"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:189
+#: src/view/com/util/forms/PostDropdownBtn.tsx:218
msgid "Delete this post?"
msgstr "¿Borrar esta publicación?"
-#: src/view/com/post-thread/PostThread.tsx:243
+#: src/view/com/post-thread/PostThread.tsx:242
msgid "Deleted post."
msgstr "Se borró la publicación."
@@ -665,15 +669,19 @@ msgstr "Descripción"
msgid "Dev Server"
msgstr "Servidor de desarrollo"
-#: src/view/screens/Settings.tsx:637
+#: src/view/screens/Settings.tsx:670
msgid "Developer Tools"
msgstr "Herramientas de desarrollador"
-#: src/view/com/composer/Composer.tsx:143
+#: src/view/com/composer/Composer.tsx:211
+msgid "Did you want to say anything?"
+msgstr "¿Quieres decir algo?"
+
+#: src/view/com/composer/Composer.tsx:144
msgid "Discard"
msgstr "Descartar"
-#: src/view/com/composer/Composer.tsx:137
+#: src/view/com/composer/Composer.tsx:138
msgid "Discard draft"
msgstr "Descartar el borrador"
@@ -698,6 +706,7 @@ msgid "Domain verified!"
msgstr "¡Dominio verificado!"
#: src/view/com/auth/onboarding/RecommendedFollows.tsx:86
+#: src/view/com/modals/AltImage.tsx:115
#: src/view/com/modals/ContentFilteringSettings.tsx:88
#: src/view/com/modals/ContentFilteringSettings.tsx:96
#: src/view/com/modals/crop-image/CropImage.web.tsx:152
@@ -707,8 +716,8 @@ msgstr "¡Dominio verificado!"
#: src/view/com/modals/Threadgate.tsx:129
#: src/view/com/modals/Threadgate.tsx:132
#: src/view/com/modals/UserAddRemoveLists.tsx:79
-#: src/view/screens/PreferencesHomeFeed.tsx:302
-#: src/view/screens/PreferencesThreads.tsx:156
+#: src/view/screens/PreferencesHomeFeed.tsx:308
+#: src/view/screens/PreferencesThreads.tsx:162
msgid "Done"
msgstr "Listo"
@@ -725,7 +734,7 @@ msgstr "Cada código funciona una vez. Recibirás más códigos de invitación p
msgid "Edit image"
msgstr "Editar la imagen"
-#: src/view/screens/ProfileList.tsx:399
+#: src/view/screens/ProfileList.tsx:400
msgid "Edit list details"
msgstr "Editar los detalles de la lista"
@@ -750,14 +759,14 @@ msgstr "Editar el perfil"
msgid "Edit Saved Feeds"
msgstr "Editar mis noticias guardadas"
-#: src/view/com/auth/create/Step2.tsx:90
+#: src/view/com/auth/create/Step2.tsx:108
#: src/view/com/auth/login/ForgotPasswordForm.tsx:148
#: src/view/com/modals/ChangeEmail.tsx:141
#: src/view/com/modals/Waitlist.tsx:88
msgid "Email"
msgstr "Correo electrónico"
-#: src/view/com/auth/create/Step2.tsx:81
+#: src/view/com/auth/create/Step2.tsx:99
msgid "Email address"
msgstr "Dirección de correo electrónico"
@@ -769,7 +778,15 @@ msgstr "Correo electrónico actualizado"
msgid "Email:"
msgstr "Correo electrónico:"
-#: src/view/screens/PreferencesHomeFeed.tsx:138
+#: src/view/com/modals/EmbedConsent.tsx:113
+msgid "Enable {0} only"
+msgstr ""
+
+#: src/view/com/modals/EmbedConsent.tsx:97
+msgid "Enable External Media"
+msgstr ""
+
+#: src/view/screens/PreferencesHomeFeed.tsx:144
msgid "Enable this setting to only see replies between people you follow."
msgstr "Activa esta opción para ver sólo las respuestas de las personas a las que sigues."
@@ -789,7 +806,7 @@ msgstr "Introduce el dominio que quieres utilizar"
msgid "Enter the email you used to create your account. We'll send you a \"reset code\" so you can set a new password."
msgstr "Introduce el correo electrónico que utilizaste para crear tu cuenta. Te enviaremos un \"código de restablecimiento\" para que puedas establecer una nueva contraseña."
-#: src/view/com/auth/create/Step2.tsx:86
+#: src/view/com/auth/create/Step2.tsx:104
msgid "Enter your email address"
msgstr "Introduce la dirección de correo electrónico"
@@ -801,7 +818,7 @@ msgstr "Introduce tu nueva dirección de correo electrónico a continuación."
msgid "Enter your username and password"
msgstr "Introduce tu nombre de usuario y contraseña"
-#: src/view/screens/Search/Search.tsx:106
+#: src/view/screens/Search/Search.tsx:105
msgid "Error:"
msgstr "Error:"
@@ -813,12 +830,26 @@ msgstr "Todos"
msgid "Expand alt text"
msgstr "Expandir el texto alt"
+#: src/view/com/modals/EmbedConsent.tsx:64
+msgid "External Media"
+msgstr ""
+
+#: src/view/com/modals/EmbedConsent.tsx:75
+#: src/view/screens/PreferencesExternalEmbeds.tsx:66
+msgid "External media may allow websites to collect information about you and your device. No information is sent or requested until you press the \"play\" button."
+msgstr ""
+
+#: src/view/screens/PreferencesExternalEmbeds.tsx:52
+#: src/view/screens/Settings.tsx:595
+msgid "External Media Preferences"
+msgstr ""
+
#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:109
#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:141
msgid "Failed to load recommended feeds"
msgstr "Error al cargar las noticias recomendadas"
-#: src/view/screens/Feeds.tsx:560
+#: src/view/screens/Feeds.tsx:556
msgid "Feed offline"
msgstr "Noticias fuera de línea"
@@ -826,17 +857,17 @@ msgstr "Noticias fuera de línea"
msgid "Feed Preferences"
msgstr "Preferencias de noticias"
-#: src/view/shell/desktop/RightNav.tsx:65
-#: src/view/shell/Drawer.tsx:292
+#: src/view/shell/desktop/RightNav.tsx:73
+#: src/view/shell/Drawer.tsx:311
msgid "Feedback"
msgstr "Comentarios"
#: src/view/screens/Feeds.tsx:475
#: src/view/screens/Profile.tsx:165
#: src/view/shell/bottom-bar/BottomBar.tsx:181
-#: src/view/shell/desktop/LeftNav.tsx:340
-#: src/view/shell/Drawer.tsx:455
-#: src/view/shell/Drawer.tsx:456
+#: src/view/shell/desktop/LeftNav.tsx:342
+#: src/view/shell/Drawer.tsx:474
+#: src/view/shell/Drawer.tsx:475
msgid "Feeds"
msgstr "Noticias"
@@ -848,11 +879,11 @@ msgstr "Se crean las noticias por los usuarios para crear colecciones de conteni
msgid "Feeds are custom algorithms that users build with a little coding expertise. <0/> for more information."
msgstr "Las noticias son algoritmos personalizados que los usuarios construyen con un poco de experiencia en codificación. <0/> para más información."
-#: src/view/screens/Search/Search.tsx:422
+#: src/view/screens/Search/Search.tsx:427
msgid "Find users on Bluesky"
msgstr "Encontrar usuarios en Bluesky"
-#: src/view/screens/Search/Search.tsx:420
+#: src/view/screens/Search/Search.tsx:425
msgid "Find users with the search tool on the right"
msgstr "Encuentra usuarios con la herramienta de búsqueda de la derecha"
@@ -860,7 +891,7 @@ msgstr "Encuentra usuarios con la herramienta de búsqueda de la derecha"
msgid "Finding similar accounts..."
msgstr "Encontrar cuentas similares..."
-#: src/view/screens/PreferencesHomeFeed.tsx:102
+#: src/view/screens/PreferencesHomeFeed.tsx:108
msgid "Fine-tune the content you see on your home screen."
msgstr "Ajusta el contenido que ves en tu pantalla de inicio."
@@ -880,7 +911,7 @@ msgstr "Sigue a algunos usuarios para empezar. Podemos recomendarte más usuario
msgid "Followed users"
msgstr "Usuarios seguidos"
-#: src/view/screens/PreferencesHomeFeed.tsx:145
+#: src/view/screens/PreferencesHomeFeed.tsx:151
msgid "Followed users only"
msgstr "Solo usuarios seguidos"
@@ -909,11 +940,11 @@ msgstr "Por razones de seguridad, tendremos que enviarte un código de confirmac
msgid "For security reasons, you won't be able to view this again. If you lose this password, you'll need to generate a new one."
msgstr "Por razones de seguridad, no podrás volver a verla. Si pierdes esta contraseña, tendrás que generar una nueva."
-#: src/view/com/auth/login/LoginForm.tsx:231
+#: src/view/com/auth/login/LoginForm.tsx:236
msgid "Forgot"
msgstr "Lo olvidé"
-#: src/view/com/auth/login/LoginForm.tsx:228
+#: src/view/com/auth/login/LoginForm.tsx:233
msgid "Forgot password"
msgstr "Olvidé mi contraseña"
@@ -937,15 +968,15 @@ msgstr "Comenzar"
msgid "Go back"
msgstr "Regresar"
-#: src/view/screens/ProfileFeed.tsx:103
-#: src/view/screens/ProfileFeed.tsx:108
-#: src/view/screens/ProfileList.tsx:839
-#: src/view/screens/ProfileList.tsx:844
+#: src/view/screens/ProfileFeed.tsx:104
+#: src/view/screens/ProfileFeed.tsx:109
+#: src/view/screens/ProfileList.tsx:848
+#: src/view/screens/ProfileList.tsx:853
msgid "Go Back"
msgstr "Regresar"
#: src/view/com/auth/login/ForgotPasswordForm.tsx:181
-#: src/view/com/auth/login/LoginForm.tsx:278
+#: src/view/com/auth/login/LoginForm.tsx:283
#: src/view/com/auth/login/SetNewPasswordForm.tsx:163
msgid "Go to next"
msgstr "Ir al siguiente"
@@ -954,8 +985,8 @@ msgstr "Ir al siguiente"
msgid "Handle"
msgstr "Identificador"
-#: src/view/shell/desktop/RightNav.tsx:94
-#: src/view/shell/Drawer.tsx:302
+#: src/view/shell/desktop/RightNav.tsx:102
+#: src/view/shell/Drawer.tsx:321
msgid "Help"
msgstr "Ayuda"
@@ -963,12 +994,20 @@ msgstr "Ayuda"
msgid "Here is your app password."
msgstr "Aquí tienes tu contraseña de la app."
-#: src/view/com/notifications/FeedItem.tsx:316
+#: src/view/com/notifications/FeedItem.tsx:324
#: src/view/com/util/moderation/ContentHider.tsx:103
msgid "Hide"
msgstr "Ocultar"
-#: src/view/com/notifications/FeedItem.tsx:308
+#: src/view/com/util/forms/PostDropdownBtn.tsx:173
+msgid "Hide post"
+msgstr "Ocultar publicación"
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:177
+msgid "Hide this post?"
+msgstr "¿Ocultar esta publicación?"
+
+#: src/view/com/notifications/FeedItem.tsx:316
msgid "Hide user list"
msgstr "Ocultar la lista de usuarios"
@@ -993,14 +1032,14 @@ msgid "Hmm, we're having trouble finding this feed. It may have been deleted."
msgstr "Tenemos problemas para encontrar esta noticia. Puede que la hayan borrado."
#: src/view/shell/bottom-bar/BottomBar.tsx:137
-#: src/view/shell/desktop/LeftNav.tsx:304
-#: src/view/shell/Drawer.tsx:379
-#: src/view/shell/Drawer.tsx:380
+#: src/view/shell/desktop/LeftNav.tsx:306
+#: src/view/shell/Drawer.tsx:398
+#: src/view/shell/Drawer.tsx:399
msgid "Home"
msgstr "Página inicial"
#: src/view/com/pager/FeedsTabBarMobile.tsx:96
-#: src/view/screens/PreferencesHomeFeed.tsx:95
+#: src/view/screens/PreferencesHomeFeed.tsx:101
#: src/view/screens/Settings.tsx:481
msgid "Home Feed Preferences"
msgstr "Preferencias de noticias de la página inicial"
@@ -1035,7 +1074,7 @@ msgstr "Texto alt de la imagen"
msgid "Image options"
msgstr "Opciones de la imagen"
-#: src/view/com/auth/login/LoginForm.tsx:113
+#: src/view/com/auth/login/LoginForm.tsx:115
msgid "Invalid username or password"
msgstr "Nombre de usuario o contraseña no válidos"
@@ -1048,7 +1087,7 @@ msgstr "Invitar"
msgid "Invite a Friend"
msgstr "Invitar a un amigo"
-#: src/view/com/auth/create/Step2.tsx:57
+#: src/view/com/auth/create/Step2.tsx:72
msgid "Invite code"
msgstr "Código de invitación"
@@ -1056,7 +1095,7 @@ msgstr "Código de invitación"
msgid "Invite code not accepted. Check that you input it correctly and try again."
msgstr "No se acepta el código de invitación. Comprueba que lo has introducido correctamente e inténtalo de nuevo."
-#: src/view/shell/Drawer.tsx:621
+#: src/view/shell/Drawer.tsx:640
msgid "Invite codes: {invitesAvailable} available"
msgstr "Códigos de invitación: {invitesAvailable} disponibles"
@@ -1068,8 +1107,8 @@ msgstr "Tareas"
msgid "Join the waitlist"
msgstr "Únete a la lista de espera"
-#: src/view/com/auth/create/Step2.tsx:68
-#: src/view/com/auth/create/Step2.tsx:72
+#: src/view/com/auth/create/Step2.tsx:86
+#: src/view/com/auth/create/Step2.tsx:90
msgid "Join the waitlist."
msgstr "Únete a la lista de espera."
@@ -1129,7 +1168,7 @@ msgstr "¡Vamos a restablecer tu contraseña!"
msgid "Library"
msgstr "Librería"
-#: src/view/screens/ProfileFeed.tsx:577
+#: src/view/screens/ProfileFeed.tsx:586
msgid "Like this feed"
msgstr "Dar «me gusta» a esta noticia"
@@ -1151,18 +1190,18 @@ msgid "List Name"
msgstr "Nombre de la lista"
#: src/view/screens/Profile.tsx:166
-#: src/view/shell/desktop/LeftNav.tsx:377
-#: src/view/shell/Drawer.tsx:471
-#: src/view/shell/Drawer.tsx:472
+#: src/view/shell/desktop/LeftNav.tsx:379
+#: src/view/shell/Drawer.tsx:490
+#: src/view/shell/Drawer.tsx:491
msgid "Lists"
msgstr "Listas"
-#: src/view/com/post-thread/PostThread.tsx:260
-#: src/view/com/post-thread/PostThread.tsx:268
+#: src/view/com/post-thread/PostThread.tsx:259
+#: src/view/com/post-thread/PostThread.tsx:267
msgid "Load more posts"
msgstr "Cargar más publicaciones"
-#: src/view/screens/Notifications.tsx:144
+#: src/view/screens/Notifications.tsx:148
msgid "Load new notifications"
msgstr "Cargar notificaciones nuevas"
@@ -1186,10 +1225,6 @@ msgstr "Visibilidad de desconexión"
msgid "Login to account that is not listed"
msgstr "Acceder a una cuenta que no está en la lista"
-#: src/view/screens/ProfileFeed.tsx:472
-#~ msgid "Looks like this feed is only available to users with a Bluesky account. Please sign up or sign in to view this feed!"
-#~ msgstr "Parece que este canal de noticias sólo está disponible para usuarios con una cuenta Bluesky. Por favor, ¡regístrate o inicia sesión para ver este canal!"
-
#: src/view/com/modals/LinkWarning.tsx:63
msgid "Make sure this is where you intend to go!"
msgstr "¡Asegúrate de que es aquí a donde pretendes ir!"
@@ -1216,9 +1251,9 @@ msgstr "Mensaje del servidor"
#: src/view/screens/Moderation.tsx:64
#: src/view/screens/Settings.tsx:563
-#: src/view/shell/desktop/LeftNav.tsx:395
-#: src/view/shell/Drawer.tsx:490
-#: src/view/shell/Drawer.tsx:491
+#: src/view/shell/desktop/LeftNav.tsx:397
+#: src/view/shell/Drawer.tsx:509
+#: src/view/shell/Drawer.tsx:510
msgid "Moderation"
msgstr "Moderación"
@@ -1235,28 +1270,32 @@ msgid "More feeds"
msgstr "Más canales de noticias"
#: src/view/com/profile/ProfileHeader.tsx:548
-#: src/view/screens/ProfileFeed.tsx:360
-#: src/view/screens/ProfileList.tsx:583
+#: src/view/screens/ProfileFeed.tsx:361
+#: src/view/screens/ProfileList.tsx:584
msgid "More options"
msgstr "Más opciones"
+#: src/view/screens/PreferencesThreads.tsx:82
+msgid "Most-liked replies first"
+msgstr ""
+
#: src/view/com/profile/ProfileHeader.tsx:370
msgid "Mute Account"
msgstr "Silenciar la cuenta"
-#: src/view/screens/ProfileList.tsx:510
+#: src/view/screens/ProfileList.tsx:511
msgid "Mute accounts"
msgstr "Silenciar las cuentas"
-#: src/view/screens/ProfileList.tsx:457
+#: src/view/screens/ProfileList.tsx:458
msgid "Mute list"
msgstr "Silenciar la lista"
-#: src/view/screens/ProfileList.tsx:270
+#: src/view/screens/ProfileList.tsx:271
msgid "Mute these accounts?"
msgstr "¿Silenciar estas cuentas?"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:149
+#: src/view/com/util/forms/PostDropdownBtn.tsx:157
msgid "Mute thread"
msgstr "Silenciar el hilo"
@@ -1264,15 +1303,15 @@ msgstr "Silenciar el hilo"
msgid "Muted accounts"
msgstr "Cuentas silenciadas"
-#: src/view/screens/ModerationMutedAccounts.tsx:106
+#: src/view/screens/ModerationMutedAccounts.tsx:107
msgid "Muted Accounts"
msgstr "Cuentas silenciadas"
-#: src/view/screens/ModerationMutedAccounts.tsx:114
+#: src/view/screens/ModerationMutedAccounts.tsx:115
msgid "Muted accounts have their posts removed from your feed and from your notifications. Mutes are completely private."
msgstr "Las cuentas silenciadas eliminan sus publicaciones de tu canal de noticias y de tus notificaciones. Las cuentas silenciadas son completamente privadas."
-#: src/view/screens/ProfileList.tsx:272
+#: src/view/screens/ProfileList.tsx:273
msgid "Muting is private. Muted accounts can interact with you, but you will not see their posts or receive notifications from them."
msgstr "Silenciar es privado. Las cuentas silenciadas pueden interactuar contigo, pero no verás sus publicaciones ni recibirás notificaciones suyas."
@@ -1297,6 +1336,11 @@ msgstr "Mis canales de noticias guardados"
msgid "Name"
msgstr "Nombre"
+#: src/view/com/modals/EmbedConsent.tsx:107
+#: src/view/com/modals/EmbedConsent.tsx:123
+msgid "Never load embeds from {0}"
+msgstr ""
+
#: src/view/com/auth/onboarding/WelcomeMobile.tsx:72
msgid "Never lose access to your followers and data."
msgstr "No pierdas nunca el acceso a tus seguidores y datos."
@@ -1307,23 +1351,27 @@ msgid "New"
msgstr "Nuevo"
#: src/view/com/feeds/FeedPage.tsx:200
-#: src/view/screens/Feeds.tsx:511
+#: src/view/screens/Feeds.tsx:507
#: src/view/screens/Profile.tsx:354
-#: src/view/screens/ProfileFeed.tsx:430
-#: src/view/screens/ProfileList.tsx:193
-#: src/view/screens/ProfileList.tsx:221
-#: src/view/shell/desktop/LeftNav.tsx:247
+#: src/view/screens/ProfileFeed.tsx:431
+#: src/view/screens/ProfileList.tsx:194
+#: src/view/screens/ProfileList.tsx:222
+#: src/view/shell/desktop/LeftNav.tsx:248
msgid "New post"
msgstr "Publicación nueva"
-#: src/view/shell/desktop/LeftNav.tsx:257
+#: src/view/shell/desktop/LeftNav.tsx:258
msgid "New Post"
msgstr "Publicación nueva"
+#: src/view/screens/PreferencesThreads.tsx:79
+msgid "Newest replies first"
+msgstr ""
+
#: src/view/com/auth/create/CreateAccount.tsx:154
#: src/view/com/auth/login/ForgotPasswordForm.tsx:174
#: src/view/com/auth/login/ForgotPasswordForm.tsx:184
-#: src/view/com/auth/login/LoginForm.tsx:281
+#: src/view/com/auth/login/LoginForm.tsx:286
#: src/view/com/auth/login/SetNewPasswordForm.tsx:156
#: src/view/com/auth/login/SetNewPasswordForm.tsx:166
#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:79
@@ -1334,14 +1382,17 @@ msgstr "Siguiente"
msgid "Next image"
msgstr "Imagen nueva"
-#: src/view/screens/PreferencesHomeFeed.tsx:191
-#: src/view/screens/PreferencesHomeFeed.tsx:226
-#: src/view/screens/PreferencesHomeFeed.tsx:263
+#: src/view/screens/PreferencesHomeFeed.tsx:126
+#: src/view/screens/PreferencesHomeFeed.tsx:197
+#: src/view/screens/PreferencesHomeFeed.tsx:232
+#: src/view/screens/PreferencesHomeFeed.tsx:269
+#: src/view/screens/PreferencesThreads.tsx:106
+#: src/view/screens/PreferencesThreads.tsx:129
msgid "No"
msgstr "No"
-#: src/view/screens/ProfileFeed.tsx:570
-#: src/view/screens/ProfileList.tsx:711
+#: src/view/screens/ProfileFeed.tsx:579
+#: src/view/screens/ProfileList.tsx:720
msgid "No description"
msgstr "Sin descripción"
@@ -1354,13 +1405,17 @@ msgid "No results found for \"{query}\""
msgstr "No se han encontrado resultados para \"{query}\""
#: src/view/com/modals/ListAddRemoveUsers.tsx:127
-#: src/view/screens/Search/Search.tsx:271
-#: src/view/screens/Search/Search.tsx:299
-#: src/view/screens/Search/Search.tsx:615
+#: src/view/screens/Search/Search.tsx:270
+#: src/view/screens/Search/Search.tsx:298
+#: src/view/screens/Search/Search.tsx:629
#: src/view/shell/desktop/Search.tsx:210
msgid "No results found for {query}"
msgstr "No se han encontrado resultados para {query}"
+#: src/view/com/modals/EmbedConsent.tsx:129
+msgid "No thanks"
+msgstr ""
+
#: src/view/com/modals/Threadgate.tsx:82
msgid "Nobody"
msgstr "Nadie"
@@ -1373,12 +1428,12 @@ msgstr "No aplicable."
msgid "Note: Bluesky is an open and public network. This setting only limits the visibility of your content on the Bluesky app and website, and other apps may not respect this setting. Your content may still be shown to logged-out users by other apps and websites."
msgstr "Nota: Bluesky es una red abierta y pública. Esta configuración sólo limita la visibilidad de tu contenido en la aplicación y el sitio web de Bluesky, y es posible que otras aplicaciones no respeten esta configuración. Otras aplicaciones y sitios web pueden seguir mostrando tu contenido a los usuarios que hayan cerrado sesión."
-#: src/view/screens/Notifications.tsx:109
-#: src/view/screens/Notifications.tsx:133
+#: src/view/screens/Notifications.tsx:113
+#: src/view/screens/Notifications.tsx:137
#: src/view/shell/bottom-bar/BottomBar.tsx:205
-#: src/view/shell/desktop/LeftNav.tsx:359
-#: src/view/shell/Drawer.tsx:416
-#: src/view/shell/Drawer.tsx:417
+#: src/view/shell/desktop/LeftNav.tsx:361
+#: src/view/shell/Drawer.tsx:435
+#: src/view/shell/Drawer.tsx:436
msgid "Notifications"
msgstr "Notificaciones"
@@ -1390,7 +1445,11 @@ msgstr "¡Qué problema!"
msgid "Okay"
msgstr "Está bien"
-#: src/view/com/composer/Composer.tsx:354
+#: src/view/screens/PreferencesThreads.tsx:78
+msgid "Oldest replies first"
+msgstr ""
+
+#: src/view/com/composer/Composer.tsx:363
msgid "One or more images is missing alt text."
msgstr "Falta el texto alternativo en una o varias imágenes."
@@ -1398,6 +1457,11 @@ msgstr "Falta el texto alternativo en una o varias imágenes."
msgid "Only {0} can reply."
msgstr "Solo {0} puede responder."
+#: src/view/com/composer/Composer.tsx:468
+#: src/view/com/composer/Composer.tsx:469
+msgid "Open emoji picker"
+msgstr ""
+
#: src/view/com/pager/FeedsTabBarMobile.tsx:76
msgid "Open navigation"
msgstr "Abrir navegación"
@@ -1406,8 +1470,12 @@ msgstr "Abrir navegación"
msgid "Opens configurable language settings"
msgstr "Abrir la configuración del idioma que se puede ajustar"
-#: src/view/shell/desktop/RightNav.tsx:148
-#: src/view/shell/Drawer.tsx:622
+#: src/view/screens/Settings.tsx:587
+msgid "Opens external embeds settings"
+msgstr ""
+
+#: src/view/shell/desktop/RightNav.tsx:156
+#: src/view/shell/Drawer.tsx:641
msgid "Opens list of invite codes"
msgstr "Abre la lista de códigos de invitación"
@@ -1423,7 +1491,7 @@ msgstr "Abre la configuración de moderación"
msgid "Opens screen with all saved feeds"
msgstr "Abre la pantalla con todas las noticias guardadas"
-#: src/view/screens/Settings.tsx:581
+#: src/view/screens/Settings.tsx:614
msgid "Opens the app password settings page"
msgstr "Abre la página de configuración de la contraseña de la app"
@@ -1431,11 +1499,11 @@ msgstr "Abre la página de configuración de la contraseña de la app"
msgid "Opens the home feed preferences"
msgstr "Abre las preferencias de noticias de la página inicial"
-#: src/view/screens/Settings.tsx:664
+#: src/view/screens/Settings.tsx:697
msgid "Opens the storybook page"
msgstr "Abre la página del libro de cuentos"
-#: src/view/screens/Settings.tsx:644
+#: src/view/screens/Settings.tsx:677
msgid "Opens the system log page"
msgstr "Abre la página de la bitácora del sistema"
@@ -1443,6 +1511,10 @@ msgstr "Abre la página de la bitácora del sistema"
msgid "Opens the threads preferences"
msgstr "Abre las preferencias de hilos"
+#: src/view/com/modals/Threadgate.tsx:89
+msgid "Or combine these options:"
+msgstr ""
+
#: src/view/com/auth/login/ChooseAccountForm.tsx:138
msgid "Other account"
msgstr "Otra cuenta"
@@ -1460,9 +1532,9 @@ msgstr "Otro..."
msgid "Page not found"
msgstr "Página no encontrada"
-#: src/view/com/auth/create/Step2.tsx:101
-#: src/view/com/auth/create/Step2.tsx:111
-#: src/view/com/auth/login/LoginForm.tsx:216
+#: src/view/com/auth/create/Step2.tsx:122
+#: src/view/com/auth/create/Step2.tsx:132
+#: src/view/com/auth/login/LoginForm.tsx:221
#: src/view/com/auth/login/SetNewPasswordForm.tsx:130
#: src/view/com/modals/DeleteAccount.tsx:191
msgid "Password"
@@ -1484,6 +1556,19 @@ msgstr "Imágenes destinadas a adultos."
msgid "Pinned Feeds"
msgstr "Canales de noticias anclados"
+#: src/view/com/util/post-embeds/ExternalGifEmbed.tsx:111
+msgid "Play {0}"
+msgstr ""
+
+#: src/view/com/util/post-embeds/ExternalPlayerEmbed.tsx:54
+#: src/view/com/util/post-embeds/ExternalPlayerEmbed.tsx:55
+msgid "Play Video"
+msgstr ""
+
+#: src/view/com/util/post-embeds/ExternalGifEmbed.tsx:110
+msgid "Plays the GIF"
+msgstr ""
+
#: src/view/com/auth/create/state.ts:116
msgid "Please choose your handle."
msgstr "Por favor, elige tu identificador."
@@ -1511,20 +1596,19 @@ msgstr "Introduce tu contraseña, también:"
#: src/view/com/modals/AppealLabel.tsx:72
#: src/view/com/modals/AppealLabel.tsx:75
msgid "Please tell us why you think this content warning was incorrectly applied!"
-msgstr ""
+msgstr "Por favor, dinos por qué crees que esta advertencia de contenido se ha aplicado incorrectamente!"
-#: src/view/com/modals/AppealLabel.tsx:72
-#: src/view/com/modals/AppealLabel.tsx:75
-#~ msgid "Please tell us why you think this decision was incorrect."
-#~ msgstr "Por favor, dinos por qué crees que esta decisión fue incorrecta."
+#: src/view/com/composer/Composer.tsx:215
+msgid "Please wait for your link card to finish loading"
+msgstr "Por favor, espera a que tu tarjeta de enlace termine de cargarse"
-#: src/view/com/composer/Composer.tsx:337
-#: src/view/com/post-thread/PostThread.tsx:226
+#: src/view/com/composer/Composer.tsx:346
+#: src/view/com/post-thread/PostThread.tsx:225
#: src/view/screens/PostThread.tsx:80
msgid "Post"
msgstr "Publicación"
-#: src/view/com/post-thread/PostThread.tsx:385
+#: src/view/com/post-thread/PostThread.tsx:378
msgid "Post hidden"
msgstr "Publicación oculta"
@@ -1536,7 +1620,7 @@ msgstr "Lenguaje de la publicación"
msgid "Post Languages"
msgstr "Lenguajes de la publicación"
-#: src/view/com/post-thread/PostThread.tsx:437
+#: src/view/com/post-thread/PostThread.tsx:430
msgid "Post not found"
msgstr "Publicación no encontrada"
@@ -1556,15 +1640,18 @@ msgstr "Imagen previa"
msgid "Primary Language"
msgstr "Lenguajes primarios"
-#: src/view/screens/PreferencesThreads.tsx:91
+#: src/view/screens/PreferencesThreads.tsx:97
msgid "Prioritize Your Follows"
msgstr "Priorizar los usuarios a los que sigue"
-#: src/view/shell/desktop/RightNav.tsx:76
+#: src/view/screens/Settings.tsx:570
+#: src/view/shell/desktop/RightNav.tsx:84
msgid "Privacy"
msgstr "Privacidad"
#: src/view/screens/PrivacyPolicy.tsx:29
+#: src/view/screens/Settings.tsx:783
+#: src/view/shell/Drawer.tsx:262
msgid "Privacy Policy"
msgstr "Política de privacidad"
@@ -1573,14 +1660,14 @@ msgid "Processing..."
msgstr "Procesando..."
#: src/view/shell/bottom-bar/BottomBar.tsx:247
-#: src/view/shell/desktop/LeftNav.tsx:413
-#: src/view/shell/Drawer.tsx:69
-#: src/view/shell/Drawer.tsx:525
-#: src/view/shell/Drawer.tsx:526
+#: src/view/shell/desktop/LeftNav.tsx:415
+#: src/view/shell/Drawer.tsx:70
+#: src/view/shell/Drawer.tsx:544
+#: src/view/shell/Drawer.tsx:545
msgid "Profile"
msgstr "Perfil"
-#: src/view/screens/Settings.tsx:789
+#: src/view/screens/Settings.tsx:841
msgid "Protect your account by verifying your email."
msgstr "Protege tu cuenta verificando tu correo electrónico."
@@ -1601,6 +1688,10 @@ msgstr "Citar una publicación"
msgid "Quote Post"
msgstr "Citar una publicación"
+#: src/view/screens/PreferencesThreads.tsx:86
+msgid "Random (aka \"Poster's Roulette\")"
+msgstr ""
+
#: src/view/com/modals/EditImage.tsx:236
msgid "Ratios"
msgstr "Proporciones"
@@ -1635,7 +1726,7 @@ msgstr "Eliminar el canal de noticias"
#: src/view/com/feeds/FeedSourceCard.tsx:105
#: src/view/com/feeds/FeedSourceCard.tsx:172
-#: src/view/screens/ProfileFeed.tsx:270
+#: src/view/screens/ProfileFeed.tsx:271
msgid "Remove from my feeds"
msgstr "Eliminar de mis canales de noticias"
@@ -1668,7 +1759,7 @@ msgstr "Respuestas"
msgid "Replies to this thread are disabled"
msgstr "Las respuestas a este hilo están desactivadas"
-#: src/view/screens/PreferencesHomeFeed.tsx:135
+#: src/view/screens/PreferencesHomeFeed.tsx:141
msgid "Reply Filters"
msgstr "Filtros de respuestas"
@@ -1680,16 +1771,16 @@ msgstr "Informe de {collectionName}"
msgid "Report Account"
msgstr "Informe de la cuenta"
-#: src/view/screens/ProfileFeed.tsx:290
+#: src/view/screens/ProfileFeed.tsx:291
msgid "Report feed"
msgstr "Informe del canal de noticias"
-#: src/view/screens/ProfileList.tsx:425
+#: src/view/screens/ProfileList.tsx:426
msgid "Report List"
msgstr "Informe de la lista"
#: src/view/com/modals/report/SendReportButton.tsx:37
-#: src/view/com/util/forms/PostDropdownBtn.tsx:167
+#: src/view/com/util/forms/PostDropdownBtn.tsx:196
msgid "Report post"
msgstr "Informe de la publicación"
@@ -1711,7 +1802,11 @@ msgstr "Vuelto a publicar por"
msgid "Request Change"
msgstr "Solicitar un cambio"
-#: src/view/com/auth/create/Step2.tsx:53
+#: src/view/screens/Settings.tsx:422
+msgid "Require alt text before posting"
+msgstr ""
+
+#: src/view/com/auth/create/Step2.tsx:68
msgid "Required for this provider"
msgstr "Requerido para este proveedor"
@@ -1719,7 +1814,7 @@ msgstr "Requerido para este proveedor"
msgid "Reset code"
msgstr "Restablecer el código"
-#: src/view/screens/Settings.tsx:686
+#: src/view/screens/Settings.tsx:719
msgid "Reset onboarding state"
msgstr "Restablecer el estado de incorporación"
@@ -1727,30 +1822,29 @@ msgstr "Restablecer el estado de incorporación"
msgid "Reset password"
msgstr "Restablecer la contraseña"
-#: src/view/screens/Settings.tsx:676
+#: src/view/screens/Settings.tsx:709
msgid "Reset preferences state"
msgstr "Restablecer el estado de preferencias"
-#: src/view/screens/Settings.tsx:684
+#: src/view/screens/Settings.tsx:717
msgid "Resets the onboarding state"
msgstr "Restablece el estado de incorporación"
-#: src/view/screens/Settings.tsx:674
+#: src/view/screens/Settings.tsx:707
msgid "Resets the preferences state"
msgstr "Restablecer el estado de preferencias"
#: src/view/com/auth/create/CreateAccount.tsx:163
#: src/view/com/auth/create/CreateAccount.tsx:167
-#: src/view/com/auth/login/LoginForm.tsx:258
-#: src/view/com/auth/login/LoginForm.tsx:261
+#: src/view/com/auth/login/LoginForm.tsx:263
+#: src/view/com/auth/login/LoginForm.tsx:266
#: src/view/com/util/error/ErrorMessage.tsx:55
#: src/view/com/util/error/ErrorScreen.tsx:65
msgid "Retry"
msgstr "Volver a intentar"
-#: src/view/com/modals/AltImage.tsx:115
-#: src/view/com/modals/BirthDateSettings.tsx:93
-#: src/view/com/modals/BirthDateSettings.tsx:96
+#: src/view/com/modals/BirthDateSettings.tsx:94
+#: src/view/com/modals/BirthDateSettings.tsx:97
#: src/view/com/modals/ChangeHandle.tsx:173
#: src/view/com/modals/CreateOrEditList.tsx:249
#: src/view/com/modals/CreateOrEditList.tsx:257
@@ -1779,22 +1873,22 @@ msgid "Saved Feeds"
msgstr "Guardar canales de noticias"
#: src/view/com/modals/ListAddRemoveUsers.tsx:75
-#: src/view/com/util/forms/SearchInput.tsx:64
-#: src/view/screens/Search/Search.tsx:401
-#: src/view/screens/Search/Search.tsx:567
+#: src/view/com/util/forms/SearchInput.tsx:65
+#: src/view/screens/Search/Search.tsx:406
+#: src/view/screens/Search/Search.tsx:572
#: src/view/shell/bottom-bar/BottomBar.tsx:159
-#: src/view/shell/desktop/LeftNav.tsx:322
+#: src/view/shell/desktop/LeftNav.tsx:324
#: src/view/shell/desktop/Search.tsx:161
#: src/view/shell/desktop/Search.tsx:170
-#: src/view/shell/Drawer.tsx:343
-#: src/view/shell/Drawer.tsx:344
+#: src/view/shell/Drawer.tsx:362
+#: src/view/shell/Drawer.tsx:363
msgid "Search"
msgstr "Buscar"
#: src/view/com/auth/LoggedOut.tsx:104
#: src/view/com/auth/LoggedOut.tsx:105
msgid "Search for users"
-msgstr ""
+msgstr "Buscar usuarios"
#: src/view/com/modals/ChangeEmail.tsx:110
msgid "Security Step Required"
@@ -1812,7 +1906,7 @@ msgstr "Seleccionar Bluesky Social"
msgid "Select from an existing account"
msgstr "Selecciona de una cuenta existente"
-#: src/view/com/auth/login/LoginForm.tsx:143
+#: src/view/com/auth/login/LoginForm.tsx:147
msgid "Select service"
msgstr "Selecciona el servicio"
@@ -1840,8 +1934,8 @@ msgstr "Enviar el mensaje"
msgid "Send Email"
msgstr "Enviar el mensaje"
-#: src/view/shell/Drawer.tsx:276
-#: src/view/shell/Drawer.tsx:297
+#: src/view/shell/Drawer.tsx:295
+#: src/view/shell/Drawer.tsx:316
msgid "Send feedback"
msgstr "Enviar comentarios"
@@ -1853,30 +1947,30 @@ msgstr "Enviar el informe"
msgid "Set new password"
msgstr "Establecer la contraseña nueva"
-#: src/view/screens/PreferencesHomeFeed.tsx:216
+#: src/view/screens/PreferencesHomeFeed.tsx:222
msgid "Set this setting to \"No\" to hide all quote posts from your feed. Reposts will still be visible."
msgstr "Establece este ajuste en \"No\" para ocultar todas las publicaciones de citas de tus noticias. Las repeticiones seguirán siendo visibles."
-#: src/view/screens/PreferencesHomeFeed.tsx:113
+#: src/view/screens/PreferencesHomeFeed.tsx:119
msgid "Set this setting to \"No\" to hide all replies from your feed."
msgstr "Establece este ajuste en \"No\" para ocultar todas las respuestas de tus noticias."
-#: src/view/screens/PreferencesHomeFeed.tsx:182
+#: src/view/screens/PreferencesHomeFeed.tsx:188
msgid "Set this setting to \"No\" to hide all reposts from your feed."
msgstr "Establece este ajuste en \"No\" para ocultar todas las veces que se han vuelto a publicar desde tus noticias."
-#: src/view/screens/PreferencesThreads.tsx:116
+#: src/view/screens/PreferencesThreads.tsx:122
msgid "Set this setting to \"Yes\" to show replies in a threaded view. This is an experimental feature."
msgstr "Establece este ajuste en \"Sí\" para mostrar las respuestas en una vista de hilos. Se trata de una función experimental."
-#: src/view/screens/PreferencesHomeFeed.tsx:252
+#: src/view/screens/PreferencesHomeFeed.tsx:258
msgid "Set this setting to \"Yes\" to show samples of your saved feeds in your following feed. This is an experimental feature."
msgstr "Establece este ajuste en \"Sí\" para mostrar muestras de tus noticias guardadas en tu siguiente canal de noticias. Se trata de una función experimental."
#: src/view/screens/Settings.tsx:277
-#: src/view/shell/desktop/LeftNav.tsx:431
-#: src/view/shell/Drawer.tsx:546
-#: src/view/shell/Drawer.tsx:547
+#: src/view/shell/desktop/LeftNav.tsx:433
+#: src/view/shell/Drawer.tsx:565
+#: src/view/shell/Drawer.tsx:566
msgid "Settings"
msgstr "Configuraciones"
@@ -1885,12 +1979,12 @@ msgid "Sexual activity or erotic nudity."
msgstr "Actividad sexual o desnudez erótica."
#: src/view/com/profile/ProfileHeader.tsx:338
-#: src/view/com/util/forms/PostDropdownBtn.tsx:131
-#: src/view/screens/ProfileList.tsx:384
+#: src/view/com/util/forms/PostDropdownBtn.tsx:139
+#: src/view/screens/ProfileList.tsx:385
msgid "Share"
msgstr "Compartir"
-#: src/view/screens/ProfileFeed.tsx:302
+#: src/view/screens/ProfileFeed.tsx:303
msgid "Share feed"
msgstr "Compartir las noticias"
@@ -1903,27 +1997,31 @@ msgstr "Mostrar"
msgid "Show anyway"
msgstr "Mostrar de todas maneras"
-#: src/view/screens/PreferencesHomeFeed.tsx:249
+#: src/view/com/modals/EmbedConsent.tsx:87
+msgid "Show embeds from {0}"
+msgstr ""
+
+#: src/view/screens/PreferencesHomeFeed.tsx:255
msgid "Show Posts from My Feeds"
msgstr "Mostrar publicaciones de mis noticias"
-#: src/view/screens/PreferencesHomeFeed.tsx:213
+#: src/view/screens/PreferencesHomeFeed.tsx:219
msgid "Show Quote Posts"
msgstr "Mostrar publicaciones de citas"
-#: src/view/screens/PreferencesHomeFeed.tsx:110
+#: src/view/screens/PreferencesHomeFeed.tsx:116
msgid "Show Replies"
msgstr "Mostrar respuestas"
-#: src/view/screens/PreferencesThreads.tsx:94
+#: src/view/screens/PreferencesThreads.tsx:100
msgid "Show replies by people you follow before all other replies."
msgstr "Mostrar las respuestas de las personas a quienes sigues antes que el resto de respuestas."
-#: src/view/screens/PreferencesHomeFeed.tsx:179
+#: src/view/screens/PreferencesHomeFeed.tsx:185
msgid "Show Reposts"
msgstr "Mostrar publicaciones que se han publicado nuevamente"
-#: src/view/com/notifications/FeedItem.tsx:337
+#: src/view/com/notifications/FeedItem.tsx:345
msgid "Show users"
msgstr "Mostrar usuarios"
@@ -1956,7 +2054,7 @@ msgstr "Iniciar sesión como {0}"
msgid "Sign in as..."
msgstr "Iniciar sesión como ..."
-#: src/view/com/auth/login/LoginForm.tsx:130
+#: src/view/com/auth/login/LoginForm.tsx:134
msgid "Sign into"
msgstr "Iniciar sesión en"
@@ -2010,11 +2108,11 @@ msgstr "Cuadrado"
msgid "Staging"
msgstr "Puesta en escena"
-#: src/view/screens/Settings.tsx:730
+#: src/view/screens/Settings.tsx:763
msgid "Status page"
msgstr "Página de estado"
-#: src/view/screens/Settings.tsx:666
+#: src/view/screens/Settings.tsx:699
msgid "Storybook"
msgstr "Libro de cuentos"
@@ -2022,15 +2120,15 @@ msgstr "Libro de cuentos"
msgid "Submit"
msgstr "Enviar"
-#: src/view/screens/ProfileList.tsx:574
+#: src/view/screens/ProfileList.tsx:575
msgid "Subscribe"
msgstr "Suscribirse"
-#: src/view/screens/ProfileList.tsx:570
+#: src/view/screens/ProfileList.tsx:571
msgid "Subscribe to this list"
msgstr "Suscribirse a esta lista"
-#: src/view/screens/Search/Search.tsx:357
+#: src/view/screens/Search/Search.tsx:362
msgid "Suggested Follows"
msgstr "Usuarios sugeridos a seguir"
@@ -2043,7 +2141,7 @@ msgstr "Soporte"
msgid "Switch Account"
msgstr "Cambiar a otra cuenta"
-#: src/view/screens/Settings.tsx:646
+#: src/view/screens/Settings.tsx:679
msgid "System log"
msgstr "Bitácora del sistema"
@@ -2051,16 +2149,18 @@ msgstr "Bitácora del sistema"
msgid "Tall"
msgstr "Alto"
-#: src/view/shell/desktop/RightNav.tsx:85
+#: src/view/shell/desktop/RightNav.tsx:93
msgid "Terms"
msgstr "Condiciones"
+#: src/view/screens/Settings.tsx:777
#: src/view/screens/TermsOfService.tsx:29
+#: src/view/shell/Drawer.tsx:256
msgid "Terms of Service"
msgstr "Condiciones de servicio"
#: src/view/com/modals/AppealLabel.tsx:70
-#: src/view/com/modals/report/InputIssueDetails.tsx:50
+#: src/view/com/modals/report/InputIssueDetails.tsx:51
msgid "Text input field"
msgstr "Campo de introducción de texto"
@@ -2076,7 +2176,7 @@ msgstr "Las Directrices Comunitarias se ha trasladado a <0/>"
msgid "The Copyright Policy has been moved to <0/>"
msgstr "La Política de derechos de autor se han trasladado a <0/>"
-#: src/view/com/post-thread/PostThread.tsx:440
+#: src/view/com/post-thread/PostThread.tsx:433
msgid "The post may have been deleted."
msgstr "Es posible que se haya borrado la publicación."
@@ -2096,10 +2196,6 @@ msgstr "Las condiciones de servicio se han trasladado a"
msgid "There was an unexpected issue in the application. Please let us know if this happened to you!"
msgstr "Se ha producido un problema inesperado en la aplicación. Por favor, ¡avísanos si te ha ocurrido esto!"
-#: src/view/com/util/moderation/LabelInfo.tsx:45
-#~ msgid "This {0} has been labeled."
-#~ msgstr "Este {0} ha sido etiquetado."
-
#: src/view/com/util/moderation/ScreenHider.tsx:88
msgid "This {screenDescription} has been flagged:"
msgstr "Esta {screenDescription} ha sido marcada:"
@@ -2108,6 +2204,10 @@ msgstr "Esta {screenDescription} ha sido marcada:"
msgid "This account has requested that users sign in to view their profile."
msgstr "Esta cuenta ha solicitado que los usuarios inicien sesión para ver su perfil."
+#: src/view/com/modals/EmbedConsent.tsx:68
+msgid "This content is hosted by {0}. Do you want to enable external media?"
+msgstr ""
+
#: src/view/com/posts/FeedErrorMessage.tsx:107
msgid "This content is not viewable without a Bluesky account."
msgstr "Este contenido no se puede ver sin una cuenta Bluesky."
@@ -2140,12 +2240,16 @@ msgstr "Esta publicación ha sido eliminada."
msgid "This warning is only available for posts with media attached."
msgstr "Esta advertencia sólo está disponible para las publicaciones con medios adjuntos."
+#: src/view/com/util/forms/PostDropdownBtn.tsx:178
+msgid "This will hide this post from your feeds."
+msgstr "Esto ocultará esta entrada de tus contenidos."
+
#: src/view/screens/PreferencesThreads.tsx:53
#: src/view/screens/Settings.tsx:503
msgid "Thread Preferences"
msgstr "Preferencias de hilos"
-#: src/view/screens/PreferencesThreads.tsx:113
+#: src/view/screens/PreferencesThreads.tsx:119
msgid "Threaded Mode"
msgstr "Modo con hilos"
@@ -2157,9 +2261,9 @@ msgstr "Conmutar el menú desplegable"
msgid "Transformations"
msgstr "Transformaciones"
-#: src/view/com/post-thread/PostThreadItem.tsx:704
-#: src/view/com/post-thread/PostThreadItem.tsx:706
-#: src/view/com/util/forms/PostDropdownBtn.tsx:103
+#: src/view/com/post-thread/PostThreadItem.tsx:705
+#: src/view/com/post-thread/PostThreadItem.tsx:707
+#: src/view/com/util/forms/PostDropdownBtn.tsx:111
msgid "Translate"
msgstr "Traducir"
@@ -2167,17 +2271,17 @@ msgstr "Traducir"
msgid "Try again"
msgstr "Intentar nuevamente"
-#: src/view/screens/ProfileList.tsx:472
+#: src/view/screens/ProfileList.tsx:473
msgid "Un-block list"
msgstr "Desbloquear una lista"
-#: src/view/screens/ProfileList.tsx:457
+#: src/view/screens/ProfileList.tsx:458
msgid "Un-mute list"
msgstr "Desactivar la opción de silenciar la lista"
-#: src/view/com/auth/create/CreateAccount.tsx:64
+#: src/view/com/auth/create/CreateAccount.tsx:65
#: src/view/com/auth/login/Login.tsx:76
-#: src/view/com/auth/login/LoginForm.tsx:117
+#: src/view/com/auth/login/LoginForm.tsx:120
msgid "Unable to contact your service. Please check your Internet connection."
msgstr "No se puede contactar con tu servicio. Comprueba tu conexión a Internet."
@@ -2195,7 +2299,7 @@ msgstr "Desbloquear una cuenta"
msgid "Undo repost"
msgstr "Deshacer esta publicación"
-#: src/view/com/auth/create/state.ts:210
+#: src/view/com/auth/create/state.ts:216
msgid "Unfortunately, you do not meet the requirements to create an account."
msgstr "Lamentablemente, no cumples los requisitos para crear una cuenta."
@@ -2203,11 +2307,11 @@ msgstr "Lamentablemente, no cumples los requisitos para crear una cuenta."
msgid "Unmute Account"
msgstr "Desactivar la opción de silenciar la cuenta"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:149
+#: src/view/com/util/forms/PostDropdownBtn.tsx:157
msgid "Unmute thread"
msgstr "Desactivar la opción de silenciar el hilo"
-#: src/view/screens/ProfileList.tsx:440
+#: src/view/screens/ProfileList.tsx:441
msgid "Unpin moderation list"
msgstr "Desanclar la lista de moderación"
@@ -2251,12 +2355,12 @@ msgstr "Identificador del usuario"
msgid "User Lists"
msgstr "Listas de usuarios"
-#: src/view/com/auth/login/LoginForm.tsx:170
-#: src/view/com/auth/login/LoginForm.tsx:187
+#: src/view/com/auth/login/LoginForm.tsx:174
+#: src/view/com/auth/login/LoginForm.tsx:192
msgid "Username or email address"
msgstr "Nombre de usuario o dirección de correo electrónico"
-#: src/view/screens/ProfileList.tsx:738
+#: src/view/screens/ProfileList.tsx:747
msgid "Users"
msgstr "Usuarios"
@@ -2268,15 +2372,15 @@ msgstr "usuarios seguidos por <0/>"
msgid "Users in \"{0}\""
msgstr "Usuarios en «{0}»"
-#: src/view/screens/Settings.tsx:750
+#: src/view/screens/Settings.tsx:802
msgid "Verify email"
msgstr "Verificar el correo electrónico"
-#: src/view/screens/Settings.tsx:775
+#: src/view/screens/Settings.tsx:827
msgid "Verify my email"
msgstr "Verificar mi correo electrónico"
-#: src/view/screens/Settings.tsx:784
+#: src/view/screens/Settings.tsx:836
msgid "Verify My Email"
msgstr "Verificar mi correo electrónico"
@@ -2297,11 +2401,11 @@ msgstr "Ver el avatar"
msgid "Visit Site"
msgstr "Visitar el sitio"
-#: src/view/com/auth/create/CreateAccount.tsx:121
+#: src/view/com/auth/create/CreateAccount.tsx:122
msgid "We're so excited to have you join us!"
msgstr "¡Nos hace mucha ilusión que te unas a nosotros!"
-#: src/view/screens/Search/Search.tsx:238
+#: src/view/screens/Search/Search.tsx:243
msgid "We're sorry, but your search could not be completed. Please try again in a few minutes."
msgstr "Lo sentimos, pero no se ha podido completar tu búsqueda. Vuelve a intentarlo dentro de unos minutos."
@@ -2317,13 +2421,9 @@ msgstr "Bienvenido a <0>Bluesky0>"
msgid "What is the issue with this {collectionName}?"
msgstr "¿Cuál es el problema con esta {collectionName}?"
-#: src/view/com/auth/SplashScreen.tsx:34
-#~ msgid "What's next?"
-#~ msgstr "¿Qué sigue?"
-
#: src/view/com/auth/SplashScreen.tsx:34
msgid "What's up?"
-msgstr ""
+msgstr "¿Qué hay de nuevo?"
#: src/view/com/modals/lang-settings/PostLanguagesSettings.tsx:78
msgid "Which languages are used in this post?"
@@ -2342,7 +2442,7 @@ msgstr "Quién puede responder"
msgid "Wide"
msgstr "Ancho"
-#: src/view/com/composer/Composer.tsx:409
+#: src/view/com/composer/Composer.tsx:418
msgid "Write post"
msgstr "Redactar una publicación"
@@ -2350,9 +2450,12 @@ msgstr "Redactar una publicación"
msgid "Write your reply"
msgstr "Redactar tu respuesta"
-#: src/view/screens/PreferencesHomeFeed.tsx:192
-#: src/view/screens/PreferencesHomeFeed.tsx:227
-#: src/view/screens/PreferencesHomeFeed.tsx:262
+#: src/view/screens/PreferencesHomeFeed.tsx:126
+#: src/view/screens/PreferencesHomeFeed.tsx:198
+#: src/view/screens/PreferencesHomeFeed.tsx:233
+#: src/view/screens/PreferencesHomeFeed.tsx:268
+#: src/view/screens/PreferencesThreads.tsx:106
+#: src/view/screens/PreferencesThreads.tsx:129
msgid "Yes"
msgstr "Sí"
@@ -2381,20 +2484,20 @@ msgstr "¡No tienes ninguna noticia guardada!"
msgid "You don't have any saved feeds."
msgstr "No tienes ninguna noticia guardada."
-#: src/view/com/post-thread/PostThread.tsx:388
+#: src/view/com/post-thread/PostThread.tsx:381
msgid "You have blocked the author or you have been blocked by the author."
msgstr "Has bloqueado al autor o has sido bloqueado por el autor."
-#: src/view/com/feeds/ProfileFeedgens.tsx:141
+#: src/view/com/feeds/ProfileFeedgens.tsx:134
msgid "You have no feeds."
msgstr "No tienes noticias."
#: src/view/com/lists/MyLists.tsx:89
-#: src/view/com/lists/ProfileLists.tsx:145
+#: src/view/com/lists/ProfileLists.tsx:138
msgid "You have no lists."
msgstr "No tienes listas."
-#: src/view/screens/ModerationBlockedAccounts.tsx:131
+#: src/view/screens/ModerationBlockedAccounts.tsx:132
msgid "You have not blocked any accounts yet. To block an account, go to their profile and selected \"Block account\" from the menu on their account."
msgstr "Aún no has bloqueado ninguna cuenta. Para bloquear una cuenta, ve a su perfil y selecciona \"Bloquear cuenta\" en el menú de su cuenta."
@@ -2402,7 +2505,7 @@ msgstr "Aún no has bloqueado ninguna cuenta. Para bloquear una cuenta, ve a su
msgid "You have not created any app passwords yet. You can create one by pressing the button below."
msgstr "Aún no has creado ninguna contraseña de aplicación. Puedes crear una pulsando el botón de abajo."
-#: src/view/screens/ModerationMutedAccounts.tsx:130
+#: src/view/screens/ModerationMutedAccounts.tsx:131
msgid "You have not muted any accounts yet. To mute an account, go to their profile and selected \"Mute account\" from the menu on their account."
msgstr "Aún no has silenciado ninguna cuenta. Para silenciar una cuenta, ve a su perfil y selecciona \"Silenciar cuenta\" en el menú de su cuenta."
@@ -2410,11 +2513,11 @@ msgstr "Aún no has silenciado ninguna cuenta. Para silenciar una cuenta, ve a s
msgid "You will receive an email with a \"reset code.\" Enter that code here, then enter your new password."
msgstr "Recibirás un correo electrónico con un \"código de restablecimiento\". Introduce ese código aquí y, a continuación, introduce tu nueva contraseña."
-#: src/view/com/auth/create/Step2.tsx:43
+#: src/view/com/auth/create/Step2.tsx:58
msgid "Your account"
msgstr "Tu cuenta"
-#: src/view/com/auth/create/Step2.tsx:122
+#: src/view/com/auth/create/Step2.tsx:146
msgid "Your birth date"
msgstr "Tu fecha de nacimiento"
@@ -2444,8 +2547,8 @@ msgid "Your hosting provider"
msgstr "Tu proveedor de alojamiento"
#: src/view/screens/Settings.tsx:402
-#: src/view/shell/desktop/RightNav.tsx:129
-#: src/view/shell/Drawer.tsx:636
+#: src/view/shell/desktop/RightNav.tsx:137
+#: src/view/shell/Drawer.tsx:655
msgid "Your invite codes are hidden when logged in using an App Password"
msgstr "Tus códigos de invitación están ocultos cuando inicias sesión con una contraseña de la app"
diff --git a/src/locale/locales/fr/messages.po b/src/locale/locales/fr/messages.po
index 25c072ed16..21e8904a65 100644
--- a/src/locale/locales/fr/messages.po
+++ b/src/locale/locales/fr/messages.po
@@ -13,7 +13,7 @@ msgstr ""
"Language-Team: \n"
"Plural-Forms: \n"
-#: src/view/shell/desktop/RightNav.tsx:160
+#: src/view/shell/desktop/RightNav.tsx:168
msgid "{0, plural, one {# invite code available} other {# invite codes available}}"
msgstr "{0, plural, one {# invite code available} other {# invite codes available}}"
@@ -25,21 +25,21 @@ msgstr "{0}"
msgid "{0} {purposeLabel} List"
msgstr "{0} {purposeLabel} Liste"
-#: src/view/shell/desktop/RightNav.tsx:143
+#: src/view/shell/desktop/RightNav.tsx:151
msgid "{invitesAvailable, plural, one {Invite codes: # available} other {Invite codes: # available}}"
msgstr "{invitesAvailable, plural, one {Invite codes: # available} other {Invite codes: # available}}"
#: src/view/screens/Settings.tsx:407
-#: src/view/shell/Drawer.tsx:640
+#: src/view/shell/Drawer.tsx:659
msgid "{invitesAvailable} invite code available"
msgstr "{invitesAvailable} code d’invitation disponible"
#: src/view/screens/Settings.tsx:409
-#: src/view/shell/Drawer.tsx:642
+#: src/view/shell/Drawer.tsx:661
msgid "{invitesAvailable} invite codes available"
msgstr "{invitesAvailable} codes d’invitation disponibles"
-#: src/view/screens/Search/Search.tsx:88
+#: src/view/screens/Search/Search.tsx:87
msgid "{message}"
msgstr "{message}"
@@ -57,7 +57,7 @@ msgstr "<0>Suivre certains0><1>utilisateurs1><2>recommandés2>"
#: src/view/com/util/moderation/LabelInfo.tsx:45
msgid "A content warning has been applied to this {0}."
-msgstr ""
+msgstr "Un avertissement sur le contenu a été appliqué sur ce {0}."
#: src/lib/hooks/useOTAUpdate.ts:16
msgid "A new version of the app is available. Please update to continue using the app."
@@ -68,7 +68,7 @@ msgstr "Une nouvelle version de l’application est disponible. Veuillez faire l
msgid "Accessibility"
msgstr "Accessibilité"
-#: src/view/com/auth/login/LoginForm.tsx:159
+#: src/view/com/auth/login/LoginForm.tsx:163
#: src/view/screens/Settings.tsx:286
msgid "Account"
msgstr "Compte"
@@ -79,7 +79,7 @@ msgstr "Options de compte"
#: src/view/com/modals/ListAddRemoveUsers.tsx:264
#: src/view/com/modals/UserAddRemoveLists.tsx:193
-#: src/view/screens/ProfileList.tsx:754
+#: src/view/screens/ProfileList.tsx:763
msgid "Add"
msgstr "Ajouter"
@@ -87,7 +87,7 @@ msgstr "Ajouter"
msgid "Add a content warning"
msgstr "Ajouter un avertissement sur le contenu"
-#: src/view/screens/ProfileList.tsx:744
+#: src/view/screens/ProfileList.tsx:753
msgid "Add a user to this list"
msgstr "Ajouter un utilisateur à cette liste"
@@ -98,6 +98,7 @@ msgstr "Ajouter un compte"
#: src/view/com/composer/photos/Gallery.tsx:119
#: src/view/com/composer/photos/Gallery.tsx:180
+#: src/view/com/modals/AltImage.tsx:93
msgid "Add alt text"
msgstr "Ajouter un texte alt"
@@ -110,23 +111,23 @@ msgstr "Ajouter des détails"
msgid "Add details to report"
msgstr "Ajouter des détails au rapport"
-#: src/view/com/composer/Composer.tsx:438
+#: src/view/com/composer/Composer.tsx:447
msgid "Add link card"
-msgstr "Ajouter une carte link card"
+msgstr "Ajouter une carte de lien"
-#: src/view/com/composer/Composer.tsx:441
+#: src/view/com/composer/Composer.tsx:450
msgid "Add link card:"
-msgstr "Ajouter une carte link card :"
+msgstr "Ajouter une carte de lien :"
#: src/view/com/modals/ChangeHandle.tsx:415
msgid "Add the following DNS record to your domain:"
-msgstr "Ajoutez le registre DNS suivant à votre domaine :"
+msgstr "Ajoutez l’enregistrement DNS suivant à votre domaine :"
#: src/view/com/profile/ProfileHeader.tsx:353
msgid "Add to Lists"
msgstr "Ajouter aux listes"
-#: src/view/screens/ProfileFeed.tsx:270
+#: src/view/screens/ProfileFeed.tsx:271
msgid "Add to my feeds"
msgstr "Ajouter à mes fils d’actu"
@@ -135,7 +136,7 @@ msgstr "Ajouter à mes fils d’actu"
msgid "Added to list"
msgstr "Ajouté à la liste"
-#: src/view/screens/PreferencesHomeFeed.tsx:164
+#: src/view/screens/PreferencesHomeFeed.tsx:170
msgid "Adjust the number of likes a reply must have to be shown in your feed."
msgstr "Définissez le nombre de likes qu’une réponse doit avoir pour être affichée dans votre fil d’actualité."
@@ -143,7 +144,7 @@ msgstr "Définissez le nombre de likes qu’une réponse doit avoir pour être a
msgid "Adult Content"
msgstr "Contenu pour adultes"
-#: src/view/screens/Settings.tsx:569
+#: src/view/screens/Settings.tsx:602
msgid "Advanced"
msgstr "Avancé"
@@ -167,7 +168,7 @@ msgstr "Un e-mail a été envoyé à {0}. Il comprend un code de confirmation qu
msgid "An email has been sent to your previous address, {0}. It includes a confirmation code which you can enter below."
msgstr "Un courriel a été envoyé à votre ancienne adresse, {0}. Il comprend un code de confirmation que vous pouvez saisir ici."
-#: src/view/com/notifications/FeedItem.tsx:236
+#: src/view/com/notifications/FeedItem.tsx:237
#: src/view/com/threadgate/WhoCanReply.tsx:178
msgid "and"
msgstr "et"
@@ -176,23 +177,22 @@ msgstr "et"
msgid "App Language"
msgstr "Langue de l’application"
-#: src/view/screens/Settings.tsx:589
+#: src/view/screens/Settings.tsx:622
msgid "App passwords"
-msgstr "Mots de passe de l’appli"
+msgstr "Mots de passe d’application"
#: src/view/screens/AppPasswords.tsx:186
msgid "App Passwords"
-msgstr "Mots de passe de l’appli"
+msgstr "Mots de passe d’application"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:207
+#: src/view/com/util/forms/PostDropdownBtn.tsx:236
msgid "Appeal content warning"
-msgstr ""
+msgstr "Faire appel de l’avertissement sur le contenu"
#: src/view/com/modals/AppealLabel.tsx:65
msgid "Appeal Content Warning"
-msgstr ""
+msgstr "Appel de l’avertissement sur le contenu"
-#: src/view/com/modals/AppealLabel.tsx:65
#~ msgid "Appeal Decision"
#~ msgstr "Appel de la décision"
@@ -210,17 +210,17 @@ msgstr "Affichage"
#: src/view/screens/AppPasswords.tsx:223
msgid "Are you sure you want to delete the app password \"{name}\"?"
-msgstr "Êtes-vous sûr de vouloir supprimer le mot de passe de l’application \"{name}\" ?"
+msgstr "Êtes-vous sûr de vouloir supprimer le mot de passe de l’application « {name} » ?"
-#: src/view/com/composer/Composer.tsx:142
+#: src/view/com/composer/Composer.tsx:143
msgid "Are you sure you'd like to discard this draft?"
msgstr "Êtes-vous sûr de vouloir rejeter ce brouillon ?"
-#: src/view/screens/ProfileList.tsx:352
+#: src/view/screens/ProfileList.tsx:353
msgid "Are you sure?"
msgstr "Vous confirmez ?"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:190
+#: src/view/com/util/forms/PostDropdownBtn.tsx:219
msgid "Are you sure? This cannot be undone."
msgstr "Vous confirmez ? Cela ne pourra pas être annulé."
@@ -231,12 +231,12 @@ msgstr "Nudité artistique ou non érotique."
#: src/view/com/auth/create/CreateAccount.tsx:141
#: src/view/com/auth/login/ChooseAccountForm.tsx:151
#: src/view/com/auth/login/ForgotPasswordForm.tsx:166
-#: src/view/com/auth/login/LoginForm.tsx:249
+#: src/view/com/auth/login/LoginForm.tsx:254
#: src/view/com/auth/login/SetNewPasswordForm.tsx:148
-#: src/view/com/modals/report/InputIssueDetails.tsx:45
-#: src/view/com/post-thread/PostThread.tsx:395
-#: src/view/com/post-thread/PostThread.tsx:445
-#: src/view/com/post-thread/PostThread.tsx:453
+#: src/view/com/modals/report/InputIssueDetails.tsx:46
+#: src/view/com/post-thread/PostThread.tsx:388
+#: src/view/com/post-thread/PostThread.tsx:438
+#: src/view/com/post-thread/PostThread.tsx:446
#: src/view/com/profile/ProfileHeader.tsx:672
msgid "Back"
msgstr "Arrière"
@@ -245,8 +245,8 @@ msgstr "Arrière"
msgid "Basics"
msgstr "Principes de base"
-#: src/view/com/auth/create/Step2.tsx:131
-#: src/view/com/modals/BirthDateSettings.tsx:72
+#: src/view/com/auth/create/Step2.tsx:156
+#: src/view/com/modals/BirthDateSettings.tsx:73
msgid "Birthday"
msgstr "Date de naissance"
@@ -259,15 +259,15 @@ msgstr "Date de naissance :"
msgid "Block Account"
msgstr "Bloquer ce compte"
-#: src/view/screens/ProfileList.tsx:522
+#: src/view/screens/ProfileList.tsx:523
msgid "Block accounts"
msgstr "Bloquer ces comptes"
-#: src/view/screens/ProfileList.tsx:472
+#: src/view/screens/ProfileList.tsx:473
msgid "Block list"
msgstr "Liste de blocage"
-#: src/view/screens/ProfileList.tsx:307
+#: src/view/screens/ProfileList.tsx:308
msgid "Block these accounts?"
msgstr "Bloquer ces comptes ?"
@@ -275,7 +275,7 @@ msgstr "Bloquer ces comptes ?"
msgid "Blocked accounts"
msgstr "Comptes bloqués"
-#: src/view/screens/ModerationBlockedAccounts.tsx:106
+#: src/view/screens/ModerationBlockedAccounts.tsx:107
msgid "Blocked Accounts"
msgstr "Comptes bloqués"
@@ -283,15 +283,15 @@ msgstr "Comptes bloqués"
msgid "Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you."
msgstr "Les comptes bloqués ne peuvent pas répondre à vos discussions, vous mentionner ou interagir avec vous."
-#: src/view/screens/ModerationBlockedAccounts.tsx:114
+#: src/view/screens/ModerationBlockedAccounts.tsx:115
msgid "Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you. You will not see their content and they will be prevented from seeing yours."
msgstr "Les comptes bloqués ne peuvent pas répondre à vos discussions, vous mentionner ou interagir avec vous. Vous ne verrez pas leur contenu et ils ne pourront pas voir le vôtre."
-#: src/view/com/post-thread/PostThread.tsx:251
+#: src/view/com/post-thread/PostThread.tsx:250
msgid "Blocked post."
-msgstr "Publication bloquée."
+msgstr "Post bloqué."
-#: src/view/screens/ProfileList.tsx:309
+#: src/view/screens/ProfileList.tsx:310
msgid "Blocking is public. Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you."
msgstr "Le blocage est public. Les comptes bloqués ne peuvent pas répondre à vos discussions, vous mentionner ou interagir avec vous."
@@ -327,7 +327,7 @@ msgstr "Bluesky n’affichera pas votre profil et vos messages à des utilisateu
msgid "Bluesky.Social"
msgstr "Bluesky.Social"
-#: src/view/screens/Settings.tsx:718
+#: src/view/screens/Settings.tsx:751
msgid "Build version {0} {1}"
msgstr "Version Build {0} {1}"
@@ -345,9 +345,8 @@ msgstr "Caméra"
msgid "Can only contain letters, numbers, spaces, dashes, and underscores. Must be at least 4 characters long, but no more than 32 characters long."
msgstr "Ne peut contenir que des lettres, des chiffres, des espaces, des tirets et des tirets bas. La longueur doit être d’au moins 4 caractères, mais pas plus de 32."
-#: src/view/com/composer/Composer.tsx:285
-#: src/view/com/composer/Composer.tsx:288
-#: src/view/com/modals/AltImage.tsx:128
+#: src/view/com/composer/Composer.tsx:294
+#: src/view/com/composer/Composer.tsx:297
#: src/view/com/modals/ChangeEmail.tsx:218
#: src/view/com/modals/ChangeEmail.tsx:220
#: src/view/com/modals/Confirm.tsx:88
@@ -360,7 +359,7 @@ msgstr "Ne peut contenir que des lettres, des chiffres, des espaces, des tirets
#: src/view/com/modals/LinkWarning.tsx:85
#: src/view/com/modals/Repost.tsx:73
#: src/view/com/modals/Waitlist.tsx:136
-#: src/view/screens/Search/Search.tsx:592
+#: src/view/screens/Search/Search.tsx:601
#: src/view/shell/desktop/Search.tsx:182
msgid "Cancel"
msgstr "Annuler"
@@ -368,23 +367,23 @@ msgstr "Annuler"
#: src/view/com/modals/DeleteAccount.tsx:146
#: src/view/com/modals/DeleteAccount.tsx:219
msgid "Cancel account deletion"
-msgstr "Annuler suppression de compte"
+msgstr "Annuler la suppression de compte"
#: src/view/com/modals/AltImage.tsx:123
-msgid "Cancel add image alt text"
-msgstr "Annuler l’ajout d’un texte alt à l’image"
+#~ msgid "Cancel add image alt text"
+#~ msgstr "Annuler l’ajout d’un texte alt à l’image"
#: src/view/com/modals/ChangeHandle.tsx:149
msgid "Cancel change handle"
-msgstr "Annuler changement pseudo"
+msgstr "Annuler le changement de pseudo"
#: src/view/com/modals/crop-image/CropImage.web.tsx:134
msgid "Cancel image crop"
-msgstr "Annuler recadrage de l’image"
+msgstr "Annuler le recadrage de l’image"
#: src/view/com/modals/EditProfile.tsx:243
msgid "Cancel profile editing"
-msgstr "Annuler modification du profil"
+msgstr "Annuler la modification du profil"
#: src/view/com/modals/Repost.tsx:64
msgid "Cancel quote post"
@@ -403,14 +402,14 @@ msgstr "Annuler l’inscription sur la liste d’attente"
msgid "Change"
msgstr "Changer"
-#: src/view/screens/Settings.tsx:601
-#: src/view/screens/Settings.tsx:610
+#: src/view/screens/Settings.tsx:634
+#: src/view/screens/Settings.tsx:643
msgid "Change handle"
-msgstr "Changer pseudo"
+msgstr "Changer le pseudo"
#: src/view/com/modals/ChangeHandle.tsx:161
msgid "Change Handle"
-msgstr "Changer Pseudo"
+msgstr "Changer le pseudo"
#: src/view/com/modals/VerifyEmail.tsx:141
msgid "Change my email"
@@ -432,6 +431,10 @@ msgstr "Consultez quelques utilisateurs recommandés. Suivez-les pour voir des u
msgid "Check your inbox for an email with the confirmation code to enter below:"
msgstr "Consultez votre boîte de réception, vous avez du recevoir un e-mail contenant un code de confirmation à saisir ci-dessous :"
+#: src/view/com/modals/Threadgate.tsx:72
+msgid "Choose \"Everybody\" or \"Nobody\""
+msgstr "Choisir « Tout le monde » ou « Personne »"
+
#: src/view/com/modals/ServerInput.tsx:38
msgid "Choose Service"
msgstr "Choisir un service"
@@ -440,28 +443,28 @@ msgstr "Choisir un service"
msgid "Choose the algorithms that power your experience with custom feeds."
msgstr "Choisissez les algorithmes qui alimentent votre expérience avec des fils d’actualité personnalisés."
-#: src/view/com/auth/create/Step2.tsx:106
+#: src/view/com/auth/create/Step2.tsx:127
msgid "Choose your password"
msgstr "Choisissez votre mot de passe"
-#: src/view/screens/Settings.tsx:694
+#: src/view/screens/Settings.tsx:727
msgid "Clear all legacy storage data"
msgstr "Effacer toutes les données de stockage existantes"
-#: src/view/screens/Settings.tsx:696
+#: src/view/screens/Settings.tsx:729
msgid "Clear all legacy storage data (restart after this)"
msgstr "Effacer toutes les données de stockage existantes (redémarrer ensuite)"
-#: src/view/screens/Settings.tsx:706
+#: src/view/screens/Settings.tsx:739
msgid "Clear all storage data"
msgstr "Effacer toutes les données de stockage"
-#: src/view/screens/Settings.tsx:708
+#: src/view/screens/Settings.tsx:741
msgid "Clear all storage data (restart after this)"
msgstr "Effacer toutes les données de stockage (redémarrer ensuite)"
-#: src/view/com/util/forms/SearchInput.tsx:73
-#: src/view/screens/Search/Search.tsx:577
+#: src/view/com/util/forms/SearchInput.tsx:74
+#: src/view/screens/Search/Search.tsx:582
msgid "Clear search query"
msgstr "Effacer la recherche"
@@ -497,8 +500,8 @@ msgstr "Rédiger une réponse"
#: src/view/com/modals/Confirm.tsx:75
#: src/view/com/modals/SelfLabel.tsx:154
#: src/view/com/modals/VerifyEmail.tsx:225
-#: src/view/screens/PreferencesHomeFeed.tsx:299
-#: src/view/screens/PreferencesThreads.tsx:153
+#: src/view/screens/PreferencesHomeFeed.tsx:305
+#: src/view/screens/PreferencesThreads.tsx:159
msgid "Confirm"
msgstr "Confirmer"
@@ -522,9 +525,9 @@ msgid "Confirmation code"
msgstr "Code de confirmation"
#: src/view/com/auth/create/CreateAccount.tsx:174
-#: src/view/com/auth/login/LoginForm.tsx:268
+#: src/view/com/auth/login/LoginForm.tsx:273
msgid "Connecting..."
-msgstr "Connexion..."
+msgstr "Connexion…"
#: src/view/screens/Moderation.tsx:81
msgid "Content filtering"
@@ -561,31 +564,31 @@ msgstr "Copié"
msgid "Copy"
msgstr "Copie"
-#: src/view/screens/ProfileList.tsx:384
+#: src/view/screens/ProfileList.tsx:385
msgid "Copy link to list"
msgstr "Copier le lien dans la liste"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:131
+#: src/view/com/util/forms/PostDropdownBtn.tsx:139
msgid "Copy link to post"
-msgstr "Copier le lien dans la publication"
+msgstr "Copier le lien vers le post"
#: src/view/com/profile/ProfileHeader.tsx:338
msgid "Copy link to profile"
msgstr "Copier le lien sur le profil"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:117
+#: src/view/com/util/forms/PostDropdownBtn.tsx:125
msgid "Copy post text"
-msgstr "Copier le texte de la publication"
+msgstr "Copier le texte du post"
#: src/view/screens/CopyrightPolicy.tsx:29
msgid "Copyright Policy"
msgstr "Politique sur les droits d’auteur"
-#: src/view/screens/ProfileFeed.tsx:94
+#: src/view/screens/ProfileFeed.tsx:95
msgid "Could not load feed"
msgstr "Impossible de charger le fil d’actu"
-#: src/view/screens/ProfileList.tsx:830
+#: src/view/screens/ProfileList.tsx:839
msgid "Could not load list"
msgstr "Impossible de charger la liste"
@@ -594,7 +597,7 @@ msgstr "Impossible de charger la liste"
msgid "Create a new account"
msgstr "Créer un nouveau compte"
-#: src/view/com/auth/create/CreateAccount.tsx:120
+#: src/view/com/auth/create/CreateAccount.tsx:121
msgid "Create Account"
msgstr "Créer un compte"
@@ -612,25 +615,29 @@ msgstr "{0} créé"
msgid "Custom domain"
msgstr "Domaine personnalisé"
-#: src/view/screens/Settings.tsx:615
+#: src/view/screens/PreferencesExternalEmbeds.tsx:55
+msgid "Customize media from external sites."
+msgstr ""
+
+#: src/view/screens/Settings.tsx:648
msgid "Danger Zone"
msgstr "Zone de danger"
-#: src/view/screens/Settings.tsx:622
+#: src/view/screens/Settings.tsx:655
msgid "Delete account"
-msgstr "Supprimer compte"
+msgstr "Supprimer le compte"
#: src/view/com/modals/DeleteAccount.tsx:83
msgid "Delete Account"
-msgstr "Supprimer compte"
+msgstr "Supprimer le compte"
#: src/view/screens/AppPasswords.tsx:221
#: src/view/screens/AppPasswords.tsx:241
msgid "Delete app password"
msgstr "Supprimer le mot de passe de l’appli"
-#: src/view/screens/ProfileList.tsx:351
-#: src/view/screens/ProfileList.tsx:411
+#: src/view/screens/ProfileList.tsx:352
+#: src/view/screens/ProfileList.tsx:412
msgid "Delete List"
msgstr "Supprimer la liste"
@@ -638,21 +645,21 @@ msgstr "Supprimer la liste"
msgid "Delete my account"
msgstr "Supprimer mon compte"
-#: src/view/screens/Settings.tsx:632
+#: src/view/screens/Settings.tsx:665
msgid "Delete my account…"
-msgstr "Supprimer mon compte..."
+msgstr "Supprimer mon compte…"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:185
+#: src/view/com/util/forms/PostDropdownBtn.tsx:214
msgid "Delete post"
-msgstr "Supprimer publication"
+msgstr "Supprimer le post"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:189
+#: src/view/com/util/forms/PostDropdownBtn.tsx:218
msgid "Delete this post?"
-msgstr "Supprimer cette publication ?"
+msgstr "Supprimer ce post ?"
-#: src/view/com/post-thread/PostThread.tsx:243
+#: src/view/com/post-thread/PostThread.tsx:242
msgid "Deleted post."
-msgstr "Publication supprimée."
+msgstr "Post supprimé."
#: src/view/com/modals/CreateOrEditList.tsx:218
#: src/view/com/modals/CreateOrEditList.tsx:234
@@ -665,21 +672,25 @@ msgstr "Description"
msgid "Dev Server"
msgstr "Serveur de dév"
-#: src/view/screens/Settings.tsx:637
+#: src/view/screens/Settings.tsx:670
msgid "Developer Tools"
-msgstr "Outils du dév"
+msgstr "Outils de dév"
-#: src/view/com/composer/Composer.tsx:143
+#: src/view/com/composer/Composer.tsx:211
+msgid "Did you want to say anything?"
+msgstr "Vous vouliez dire quelque chose ?"
+
+#: src/view/com/composer/Composer.tsx:144
msgid "Discard"
msgstr "Ignorer"
-#: src/view/com/composer/Composer.tsx:137
+#: src/view/com/composer/Composer.tsx:138
msgid "Discard draft"
-msgstr "Ignorer brouillon"
+msgstr "Ignorer le brouillon"
#: src/view/screens/Moderation.tsx:207
msgid "Discourage apps from showing my account to logged-out users"
-msgstr "Empêcher les appli de montrer mon compte aux utilisateurs déconnectés"
+msgstr "Empêcher les applis de montrer mon compte aux utilisateurs déconnectés"
#: src/view/screens/Feeds.tsx:405
msgid "Discover new feeds"
@@ -687,17 +698,18 @@ msgstr "Découvrir de nouveaux fils d’actu"
#: src/view/com/modals/EditProfile.tsx:191
msgid "Display name"
-msgstr "Afficher nom"
+msgstr "Afficher le nom"
#: src/view/com/modals/EditProfile.tsx:179
msgid "Display Name"
-msgstr "Afficher nom"
+msgstr "Afficher le nom"
#: src/view/com/modals/ChangeHandle.tsx:485
msgid "Domain verified!"
msgstr "Domaine vérifié !"
#: src/view/com/auth/onboarding/RecommendedFollows.tsx:86
+#: src/view/com/modals/AltImage.tsx:115
#: src/view/com/modals/ContentFilteringSettings.tsx:88
#: src/view/com/modals/ContentFilteringSettings.tsx:96
#: src/view/com/modals/crop-image/CropImage.web.tsx:152
@@ -707,8 +719,8 @@ msgstr "Domaine vérifié !"
#: src/view/com/modals/Threadgate.tsx:129
#: src/view/com/modals/Threadgate.tsx:132
#: src/view/com/modals/UserAddRemoveLists.tsx:79
-#: src/view/screens/PreferencesHomeFeed.tsx:302
-#: src/view/screens/PreferencesThreads.tsx:156
+#: src/view/screens/PreferencesHomeFeed.tsx:308
+#: src/view/screens/PreferencesThreads.tsx:162
msgid "Done"
msgstr "Terminé"
@@ -725,7 +737,7 @@ msgstr "Chaque code ne fonctionne qu’une seule fois. Vous recevrez régulière
msgid "Edit image"
msgstr "Modifier l’image"
-#: src/view/screens/ProfileList.tsx:399
+#: src/view/screens/ProfileList.tsx:400
msgid "Edit list details"
msgstr "Modifier les infos de la liste"
@@ -740,24 +752,24 @@ msgstr "Modifier mon profil"
#: src/view/com/profile/ProfileHeader.tsx:453
msgid "Edit profile"
-msgstr "Modifier profil"
+msgstr "Modifier le profil"
#: src/view/com/profile/ProfileHeader.tsx:456
msgid "Edit Profile"
-msgstr "Modifier profil"
+msgstr "Modifier le profil"
#: src/view/screens/Feeds.tsx:330
msgid "Edit Saved Feeds"
msgstr "Modifier les fils d’actu enregistrés"
-#: src/view/com/auth/create/Step2.tsx:90
+#: src/view/com/auth/create/Step2.tsx:108
#: src/view/com/auth/login/ForgotPasswordForm.tsx:148
#: src/view/com/modals/ChangeEmail.tsx:141
#: src/view/com/modals/Waitlist.tsx:88
msgid "Email"
msgstr "E-mail"
-#: src/view/com/auth/create/Step2.tsx:81
+#: src/view/com/auth/create/Step2.tsx:99
msgid "Email address"
msgstr "Adresse e-mail"
@@ -769,7 +781,15 @@ msgstr "E-mail mis à jour"
msgid "Email:"
msgstr "E-mail :"
-#: src/view/screens/PreferencesHomeFeed.tsx:138
+#: src/view/com/modals/EmbedConsent.tsx:113
+msgid "Enable {0} only"
+msgstr ""
+
+#: src/view/com/modals/EmbedConsent.tsx:97
+msgid "Enable External Media"
+msgstr ""
+
+#: src/view/screens/PreferencesHomeFeed.tsx:144
msgid "Enable this setting to only see replies between people you follow."
msgstr "Activez ce paramètre pour ne voir que les réponses des personnes que vous suivez."
@@ -789,7 +809,7 @@ msgstr "Entrez le domaine que vous voulez utiliser"
msgid "Enter the email you used to create your account. We'll send you a \"reset code\" so you can set a new password."
msgstr "Saisissez l’e-mail que vous avez utilisé pour créer votre compte. Nous vous enverrons un « code de réinitialisation » afin changer votre mot de passe."
-#: src/view/com/auth/create/Step2.tsx:86
+#: src/view/com/auth/create/Step2.tsx:104
msgid "Enter your email address"
msgstr "Entrez votre e-mail"
@@ -801,7 +821,7 @@ msgstr "Entrez votre nouvelle e-mail ci-dessous."
msgid "Enter your username and password"
msgstr "Entrez votre nom d’utilisateur et votre mot de passe"
-#: src/view/screens/Search/Search.tsx:106
+#: src/view/screens/Search/Search.tsx:105
msgid "Error:"
msgstr "Erreur :"
@@ -813,12 +833,26 @@ msgstr "Tout le monde"
msgid "Expand alt text"
msgstr "Développer le texte alt"
+#: src/view/com/modals/EmbedConsent.tsx:64
+msgid "External Media"
+msgstr ""
+
+#: src/view/com/modals/EmbedConsent.tsx:75
+#: src/view/screens/PreferencesExternalEmbeds.tsx:66
+msgid "External media may allow websites to collect information about you and your device. No information is sent or requested until you press the \"play\" button."
+msgstr ""
+
+#: src/view/screens/PreferencesExternalEmbeds.tsx:52
+#: src/view/screens/Settings.tsx:595
+msgid "External Media Preferences"
+msgstr ""
+
#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:109
#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:141
msgid "Failed to load recommended feeds"
msgstr "Échec du chargement des fils d’actu recommandés"
-#: src/view/screens/Feeds.tsx:560
+#: src/view/screens/Feeds.tsx:556
msgid "Feed offline"
msgstr "Fil d’actu hors ligne"
@@ -826,17 +860,17 @@ msgstr "Fil d’actu hors ligne"
msgid "Feed Preferences"
msgstr "Préférences en matière de fil d’actu"
-#: src/view/shell/desktop/RightNav.tsx:65
-#: src/view/shell/Drawer.tsx:292
+#: src/view/shell/desktop/RightNav.tsx:73
+#: src/view/shell/Drawer.tsx:311
msgid "Feedback"
msgstr "Feedback"
#: src/view/screens/Feeds.tsx:475
#: src/view/screens/Profile.tsx:165
#: src/view/shell/bottom-bar/BottomBar.tsx:181
-#: src/view/shell/desktop/LeftNav.tsx:340
-#: src/view/shell/Drawer.tsx:455
-#: src/view/shell/Drawer.tsx:456
+#: src/view/shell/desktop/LeftNav.tsx:342
+#: src/view/shell/Drawer.tsx:474
+#: src/view/shell/Drawer.tsx:475
msgid "Feeds"
msgstr "Fil d’actu"
@@ -848,19 +882,19 @@ msgstr "Les fils d’actu sont créés par les utilisateurs pour rassembler du c
msgid "Feeds are custom algorithms that users build with a little coding expertise. <0/> for more information."
msgstr "Les fils d’actu sont des algorithmes personnalisés que les utilisateurs construisent avec un peu d’expertise en codage. <0/> pour obtenir de plus amples informations."
-#: src/view/screens/Search/Search.tsx:422
+#: src/view/screens/Search/Search.tsx:427
msgid "Find users on Bluesky"
msgstr "Trouver des utilisateurs sur Bluesky"
-#: src/view/screens/Search/Search.tsx:420
+#: src/view/screens/Search/Search.tsx:425
msgid "Find users with the search tool on the right"
-msgstr "Trouvez des utilisateurs à l’aide de l’outil de recherche, à droite."
+msgstr "Trouvez des utilisateurs à l’aide de l’outil de recherche, à droite"
#: src/view/com/auth/onboarding/RecommendedFollowsItem.tsx:150
msgid "Finding similar accounts..."
-msgstr "Recherche de comptes similaires..."
+msgstr "Recherche de comptes similaires…"
-#: src/view/screens/PreferencesHomeFeed.tsx:102
+#: src/view/screens/PreferencesHomeFeed.tsx:108
msgid "Fine-tune the content you see on your home screen."
msgstr "Affinez le contenu de votre écran d’accueil."
@@ -880,7 +914,7 @@ msgstr "Suivez quelques utilisateurs pour commencer. Nous pouvons vous recommand
msgid "Followed users"
msgstr "Utilisateurs suivis"
-#: src/view/screens/PreferencesHomeFeed.tsx:145
+#: src/view/screens/PreferencesHomeFeed.tsx:151
msgid "Followed users only"
msgstr "Utilisateurs suivis uniquement"
@@ -909,11 +943,11 @@ msgstr "Pour des raisons de sécurité, nous devrons envoyer un code de confirma
msgid "For security reasons, you won't be able to view this again. If you lose this password, you'll need to generate a new one."
msgstr "Pour des raisons de sécurité, vous ne pourrez plus afficher ceci. Si vous perdez ce mot de passe, vous devrez en générer un autre."
-#: src/view/com/auth/login/LoginForm.tsx:231
+#: src/view/com/auth/login/LoginForm.tsx:236
msgid "Forgot"
msgstr "Oublié"
-#: src/view/com/auth/login/LoginForm.tsx:228
+#: src/view/com/auth/login/LoginForm.tsx:233
msgid "Forgot password"
msgstr "Mot de passe oublié"
@@ -937,15 +971,15 @@ msgstr "C’est parti"
msgid "Go back"
msgstr "Retour"
-#: src/view/screens/ProfileFeed.tsx:103
-#: src/view/screens/ProfileFeed.tsx:108
-#: src/view/screens/ProfileList.tsx:839
-#: src/view/screens/ProfileList.tsx:844
+#: src/view/screens/ProfileFeed.tsx:104
+#: src/view/screens/ProfileFeed.tsx:109
+#: src/view/screens/ProfileList.tsx:848
+#: src/view/screens/ProfileList.tsx:853
msgid "Go Back"
msgstr "Retour"
#: src/view/com/auth/login/ForgotPasswordForm.tsx:181
-#: src/view/com/auth/login/LoginForm.tsx:278
+#: src/view/com/auth/login/LoginForm.tsx:283
#: src/view/com/auth/login/SetNewPasswordForm.tsx:163
msgid "Go to next"
msgstr "Aller à la suite"
@@ -954,8 +988,8 @@ msgstr "Aller à la suite"
msgid "Handle"
msgstr "Pseudo"
-#: src/view/shell/desktop/RightNav.tsx:94
-#: src/view/shell/Drawer.tsx:302
+#: src/view/shell/desktop/RightNav.tsx:102
+#: src/view/shell/Drawer.tsx:321
msgid "Help"
msgstr "Aide"
@@ -963,14 +997,22 @@ msgstr "Aide"
msgid "Here is your app password."
msgstr "Voici le mot de passe de votre appli."
-#: src/view/com/notifications/FeedItem.tsx:316
+#: src/view/com/notifications/FeedItem.tsx:324
#: src/view/com/util/moderation/ContentHider.tsx:103
msgid "Hide"
-msgstr "Masquer"
+msgstr "Cacher"
-#: src/view/com/notifications/FeedItem.tsx:308
+#: src/view/com/util/forms/PostDropdownBtn.tsx:173
+msgid "Hide post"
+msgstr "Cacher ce post"
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:177
+msgid "Hide this post?"
+msgstr "Cacher ce post ?"
+
+#: src/view/com/notifications/FeedItem.tsx:316
msgid "Hide user list"
-msgstr "Masquer la liste des utilisateurs"
+msgstr "Cacher la liste des utilisateurs"
#: src/view/com/posts/FeedErrorMessage.tsx:110
msgid "Hmm, some kind of issue occurred when contacting the feed server. Please let the feed owner know about this issue."
@@ -982,25 +1024,25 @@ msgstr "Hmm, le serveur du fils d’actu semble être mal configuré. Veuillez i
#: src/view/com/posts/FeedErrorMessage.tsx:104
msgid "Hmm, the feed server appears to be offline. Please let the feed owner know about this issue."
-msgstr "Mmm... le serveur de fils d’actu semble être hors ligne. Veuillez informer le propriétaire du fil d’actu de ce problème."
+msgstr "Mmm… le serveur de fils d’actu semble être hors ligne. Veuillez informer le propriétaire du fil d’actu de ce problème."
#: src/view/com/posts/FeedErrorMessage.tsx:101
msgid "Hmm, the feed server gave a bad response. Please let the feed owner know about this issue."
-msgstr "Mmm... le serveur de fils d’actu ne répond pas. Veuillez informer le propriétaire du fil d’actu de ce problème."
+msgstr "Mmm… le serveur de fils d’actu ne répond pas. Veuillez informer le propriétaire du fil d’actu de ce problème."
#: src/view/com/posts/FeedErrorMessage.tsx:95
msgid "Hmm, we're having trouble finding this feed. It may have been deleted."
msgstr "Hmm, nous n’arrivons pas à trouver ce fils d’actu. Il a peut-être été supprimé."
#: src/view/shell/bottom-bar/BottomBar.tsx:137
-#: src/view/shell/desktop/LeftNav.tsx:304
-#: src/view/shell/Drawer.tsx:379
-#: src/view/shell/Drawer.tsx:380
+#: src/view/shell/desktop/LeftNav.tsx:306
+#: src/view/shell/Drawer.tsx:398
+#: src/view/shell/Drawer.tsx:399
msgid "Home"
msgstr "Accueil"
#: src/view/com/pager/FeedsTabBarMobile.tsx:96
-#: src/view/screens/PreferencesHomeFeed.tsx:95
+#: src/view/screens/PreferencesHomeFeed.tsx:101
#: src/view/screens/Settings.tsx:481
msgid "Home Feed Preferences"
msgstr "Préférences de fils d’actu de l’accueil"
@@ -1035,7 +1077,7 @@ msgstr "Texte alt de l’image"
msgid "Image options"
msgstr "Options d’images"
-#: src/view/com/auth/login/LoginForm.tsx:113
+#: src/view/com/auth/login/LoginForm.tsx:115
msgid "Invalid username or password"
msgstr "Nom d’utilisateur ou mot de passe incorrect"
@@ -1048,7 +1090,7 @@ msgstr "Inviter"
msgid "Invite a Friend"
msgstr "Inviter un ami"
-#: src/view/com/auth/create/Step2.tsx:57
+#: src/view/com/auth/create/Step2.tsx:72
msgid "Invite code"
msgstr "Code d’invitation"
@@ -1056,7 +1098,7 @@ msgstr "Code d’invitation"
msgid "Invite code not accepted. Check that you input it correctly and try again."
msgstr "Code d’invitation refusé. Vérifiez que vous l’avez saisi correctement et réessayez."
-#: src/view/shell/Drawer.tsx:621
+#: src/view/shell/Drawer.tsx:640
msgid "Invite codes: {invitesAvailable} available"
msgstr "Codes d’invitation : {invitesAvailable} disponible"
@@ -1068,8 +1110,8 @@ msgstr "Emplois"
msgid "Join the waitlist"
msgstr "S’inscrire sur la liste d’attente"
-#: src/view/com/auth/create/Step2.tsx:68
-#: src/view/com/auth/create/Step2.tsx:72
+#: src/view/com/auth/create/Step2.tsx:86
+#: src/view/com/auth/create/Step2.tsx:90
msgid "Join the waitlist."
msgstr "S’inscrire sur la liste d’attente."
@@ -1129,9 +1171,9 @@ msgstr "Réinitialisez votre mot de passe !"
msgid "Library"
msgstr "Bibliothèque"
-#: src/view/screens/ProfileFeed.tsx:577
+#: src/view/screens/ProfileFeed.tsx:586
msgid "Like this feed"
-msgstr "Likez ce fils d’actu"
+msgstr "Liker ce fil d’actu"
#: src/view/screens/PostLikedBy.tsx:27
#: src/view/screens/ProfileFeedLikedBy.tsx:27
@@ -1151,18 +1193,18 @@ msgid "List Name"
msgstr "Nom de liste"
#: src/view/screens/Profile.tsx:166
-#: src/view/shell/desktop/LeftNav.tsx:377
-#: src/view/shell/Drawer.tsx:471
-#: src/view/shell/Drawer.tsx:472
+#: src/view/shell/desktop/LeftNav.tsx:379
+#: src/view/shell/Drawer.tsx:490
+#: src/view/shell/Drawer.tsx:491
msgid "Lists"
msgstr "Listes"
-#: src/view/com/post-thread/PostThread.tsx:260
-#: src/view/com/post-thread/PostThread.tsx:268
+#: src/view/com/post-thread/PostThread.tsx:259
+#: src/view/com/post-thread/PostThread.tsx:267
msgid "Load more posts"
msgstr "Charger plus d’articles"
-#: src/view/screens/Notifications.tsx:144
+#: src/view/screens/Notifications.tsx:148
msgid "Load new notifications"
msgstr "Charger les nouvelles notifications"
@@ -1172,7 +1214,7 @@ msgstr "Charger les nouveaux messages"
#: src/view/com/composer/text-input/mobile/Autocomplete.tsx:95
msgid "Loading..."
-msgstr "Chargement..."
+msgstr "Chargement…"
#: src/view/com/modals/ServerInput.tsx:50
msgid "Local dev server"
@@ -1186,10 +1228,6 @@ msgstr "Visibilité déconnectée"
msgid "Login to account that is not listed"
msgstr "Se connecter à un compte qui n’est pas listé"
-#: src/view/screens/ProfileFeed.tsx:472
-#~ msgid "Looks like this feed is only available to users with a Bluesky account. Please sign up or sign in to view this feed!"
-#~ msgstr "On dirait que ce fils d’actu n’est disponible que pour les utilisateurs disposant d’un compte Bluesky. Veuillez vous inscrire ou vous connecter pour voir ce fils d’actu !"
-
#: src/view/com/modals/LinkWarning.tsx:63
msgid "Make sure this is where you intend to go!"
msgstr "Assurez-vous que c’est bien là que vous avez l’intention d’aller !"
@@ -1216,9 +1254,9 @@ msgstr "Message du serveur"
#: src/view/screens/Moderation.tsx:64
#: src/view/screens/Settings.tsx:563
-#: src/view/shell/desktop/LeftNav.tsx:395
-#: src/view/shell/Drawer.tsx:490
-#: src/view/shell/Drawer.tsx:491
+#: src/view/shell/desktop/LeftNav.tsx:397
+#: src/view/shell/Drawer.tsx:509
+#: src/view/shell/Drawer.tsx:510
msgid "Moderation"
msgstr "Modération"
@@ -1235,46 +1273,50 @@ msgid "More feeds"
msgstr "Plus de fils d’actu"
#: src/view/com/profile/ProfileHeader.tsx:548
-#: src/view/screens/ProfileFeed.tsx:360
-#: src/view/screens/ProfileList.tsx:583
+#: src/view/screens/ProfileFeed.tsx:361
+#: src/view/screens/ProfileList.tsx:584
msgid "More options"
msgstr "Plus d’options"
+#: src/view/screens/PreferencesThreads.tsx:82
+msgid "Most-liked replies first"
+msgstr "Réponses les plus likées en premier"
+
#: src/view/com/profile/ProfileHeader.tsx:370
msgid "Mute Account"
-msgstr "Compte en sourdine"
+msgstr "Masquer le compte"
-#: src/view/screens/ProfileList.tsx:510
+#: src/view/screens/ProfileList.tsx:511
msgid "Mute accounts"
-msgstr "Comptes en sourdine"
+msgstr "Masquer les comptes"
-#: src/view/screens/ProfileList.tsx:457
+#: src/view/screens/ProfileList.tsx:458
msgid "Mute list"
-msgstr "Mettre en sourdine"
+msgstr "Masquer la liste"
-#: src/view/screens/ProfileList.tsx:270
+#: src/view/screens/ProfileList.tsx:271
msgid "Mute these accounts?"
-msgstr "Mettre ces comptes en sourdine ?"
+msgstr "Masquer ces comptes ?"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:149
+#: src/view/com/util/forms/PostDropdownBtn.tsx:157
msgid "Mute thread"
-msgstr "Mettre fil en sourdine"
+msgstr "Masquer ce fil de discussion"
#: src/view/screens/Moderation.tsx:109
msgid "Muted accounts"
-msgstr "Comptes en sourdine"
+msgstr "Comptes masqués"
-#: src/view/screens/ModerationMutedAccounts.tsx:106
+#: src/view/screens/ModerationMutedAccounts.tsx:107
msgid "Muted Accounts"
-msgstr "Comptes en sourdine"
+msgstr "Comptes masqués"
-#: src/view/screens/ModerationMutedAccounts.tsx:114
+#: src/view/screens/ModerationMutedAccounts.tsx:115
msgid "Muted accounts have their posts removed from your feed and from your notifications. Mutes are completely private."
-msgstr "Les comptes mis en sourdine voient leurs publications supprimées de votre fil d’actualité et de vos notifications. Cette option est totalement privée."
+msgstr "Les comptes masqués voient leurs posts supprimés de votre fil d’actualité et de vos notifications. Cette option est totalement privée."
-#: src/view/screens/ProfileList.tsx:272
+#: src/view/screens/ProfileList.tsx:273
msgid "Muting is private. Muted accounts can interact with you, but you will not see their posts or receive notifications from them."
-msgstr "Ce que vous mettez en sourdine reste privé. Les comptes en sourdine peuvent interagir avec vous, mais vous ne verrez pas leurs publications et ne recevrez pas de notifications de leur part."
+msgstr "Ce que vous masquez reste privé. Les comptes masqués peuvent interagir avec vous, mais vous ne verrez pas leurs posts et ne recevrez pas de notifications de leur part."
#: src/view/com/modals/BirthDateSettings.tsx:56
msgid "My Birthday"
@@ -1297,6 +1339,11 @@ msgstr "Mes fils d’actu enregistrés"
msgid "Name"
msgstr "Nom"
+#: src/view/com/modals/EmbedConsent.tsx:107
+#: src/view/com/modals/EmbedConsent.tsx:123
+msgid "Never load embeds from {0}"
+msgstr ""
+
#: src/view/com/auth/onboarding/WelcomeMobile.tsx:72
msgid "Never lose access to your followers and data."
msgstr "Ne perdez jamais l’accès à vos followers et à vos données."
@@ -1307,23 +1354,27 @@ msgid "New"
msgstr "Nouveau"
#: src/view/com/feeds/FeedPage.tsx:200
-#: src/view/screens/Feeds.tsx:511
+#: src/view/screens/Feeds.tsx:507
#: src/view/screens/Profile.tsx:354
-#: src/view/screens/ProfileFeed.tsx:430
-#: src/view/screens/ProfileList.tsx:193
-#: src/view/screens/ProfileList.tsx:221
-#: src/view/shell/desktop/LeftNav.tsx:247
+#: src/view/screens/ProfileFeed.tsx:431
+#: src/view/screens/ProfileList.tsx:194
+#: src/view/screens/ProfileList.tsx:222
+#: src/view/shell/desktop/LeftNav.tsx:248
msgid "New post"
-msgstr "Nouvelle publication"
+msgstr "Nouveau post"
-#: src/view/shell/desktop/LeftNav.tsx:257
+#: src/view/shell/desktop/LeftNav.tsx:258
msgid "New Post"
-msgstr "Nouvelle publication"
+msgstr "Nouveau post"
+
+#: src/view/screens/PreferencesThreads.tsx:79
+msgid "Newest replies first"
+msgstr ""
#: src/view/com/auth/create/CreateAccount.tsx:154
#: src/view/com/auth/login/ForgotPasswordForm.tsx:174
#: src/view/com/auth/login/ForgotPasswordForm.tsx:184
-#: src/view/com/auth/login/LoginForm.tsx:281
+#: src/view/com/auth/login/LoginForm.tsx:286
#: src/view/com/auth/login/SetNewPasswordForm.tsx:156
#: src/view/com/auth/login/SetNewPasswordForm.tsx:166
#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:79
@@ -1334,14 +1385,17 @@ msgstr "Suivant"
msgid "Next image"
msgstr "Image suivante"
-#: src/view/screens/PreferencesHomeFeed.tsx:191
-#: src/view/screens/PreferencesHomeFeed.tsx:226
-#: src/view/screens/PreferencesHomeFeed.tsx:263
+#: src/view/screens/PreferencesHomeFeed.tsx:126
+#: src/view/screens/PreferencesHomeFeed.tsx:197
+#: src/view/screens/PreferencesHomeFeed.tsx:232
+#: src/view/screens/PreferencesHomeFeed.tsx:269
+#: src/view/screens/PreferencesThreads.tsx:106
+#: src/view/screens/PreferencesThreads.tsx:129
msgid "No"
msgstr "Non"
-#: src/view/screens/ProfileFeed.tsx:570
-#: src/view/screens/ProfileList.tsx:711
+#: src/view/screens/ProfileFeed.tsx:579
+#: src/view/screens/ProfileList.tsx:720
msgid "No description"
msgstr "Aucune description"
@@ -1351,16 +1405,20 @@ msgstr "Aucun résultat"
#: src/view/screens/Feeds.tsx:452
msgid "No results found for \"{query}\""
-msgstr "Aucun résultat trouvé pour \"{query}\""
+msgstr "Aucun résultat trouvé pour « {query} »"
#: src/view/com/modals/ListAddRemoveUsers.tsx:127
-#: src/view/screens/Search/Search.tsx:271
-#: src/view/screens/Search/Search.tsx:299
-#: src/view/screens/Search/Search.tsx:615
+#: src/view/screens/Search/Search.tsx:270
+#: src/view/screens/Search/Search.tsx:298
+#: src/view/screens/Search/Search.tsx:629
#: src/view/shell/desktop/Search.tsx:210
msgid "No results found for {query}"
msgstr "Aucun résultat trouvé pour {query}"
+#: src/view/com/modals/EmbedConsent.tsx:129
+msgid "No thanks"
+msgstr ""
+
#: src/view/com/modals/Threadgate.tsx:82
msgid "Nobody"
msgstr "Personne"
@@ -1373,12 +1431,12 @@ msgstr "Sans objet."
msgid "Note: Bluesky is an open and public network. This setting only limits the visibility of your content on the Bluesky app and website, and other apps may not respect this setting. Your content may still be shown to logged-out users by other apps and websites."
msgstr "Remarque : Bluesky est un réseau ouvert et public. Ce paramètre limite uniquement la visibilité de votre contenu sur l’application et le site Web de Bluesky, et d’autres applications peuvent ne pas respecter ce paramètre. Votre contenu peut toujours être montré aux utilisateurs déconnectés par d’autres applications et sites Web."
-#: src/view/screens/Notifications.tsx:109
-#: src/view/screens/Notifications.tsx:133
+#: src/view/screens/Notifications.tsx:113
+#: src/view/screens/Notifications.tsx:137
#: src/view/shell/bottom-bar/BottomBar.tsx:205
-#: src/view/shell/desktop/LeftNav.tsx:359
-#: src/view/shell/Drawer.tsx:416
-#: src/view/shell/Drawer.tsx:417
+#: src/view/shell/desktop/LeftNav.tsx:361
+#: src/view/shell/Drawer.tsx:435
+#: src/view/shell/Drawer.tsx:436
msgid "Notifications"
msgstr "Notifications"
@@ -1390,7 +1448,11 @@ msgstr "Oh non !"
msgid "Okay"
msgstr "D’accord"
-#: src/view/com/composer/Composer.tsx:354
+#: src/view/screens/PreferencesThreads.tsx:78
+msgid "Oldest replies first"
+msgstr "Plus anciennes réponses en premier"
+
+#: src/view/com/composer/Composer.tsx:363
msgid "One or more images is missing alt text."
msgstr "Une ou plusieurs images n’ont pas de texte alt."
@@ -1398,6 +1460,11 @@ msgstr "Une ou plusieurs images n’ont pas de texte alt."
msgid "Only {0} can reply."
msgstr "Seul {0} peut répondre."
+#: src/view/com/composer/Composer.tsx:468
+#: src/view/com/composer/Composer.tsx:469
+msgid "Open emoji picker"
+msgstr "Ouvrir le sélecteur d’emoji"
+
#: src/view/com/pager/FeedsTabBarMobile.tsx:76
msgid "Open navigation"
msgstr "Navigation ouverte"
@@ -1406,8 +1473,12 @@ msgstr "Navigation ouverte"
msgid "Opens configurable language settings"
msgstr "Ouvre les paramètres linguistiques configurables"
-#: src/view/shell/desktop/RightNav.tsx:148
-#: src/view/shell/Drawer.tsx:622
+#: src/view/screens/Settings.tsx:587
+msgid "Opens external embeds settings"
+msgstr ""
+
+#: src/view/shell/desktop/RightNav.tsx:156
+#: src/view/shell/Drawer.tsx:641
msgid "Opens list of invite codes"
msgstr "Ouvre la liste des codes d’invitation"
@@ -1423,7 +1494,7 @@ msgstr "Ouvre les paramètres de modération"
msgid "Opens screen with all saved feeds"
msgstr "Ouvre l’écran avec tous les fils d’actu enregistrés"
-#: src/view/screens/Settings.tsx:581
+#: src/view/screens/Settings.tsx:614
msgid "Opens the app password settings page"
msgstr "Ouvre la page de configuration du mot de passe"
@@ -1431,11 +1502,11 @@ msgstr "Ouvre la page de configuration du mot de passe"
msgid "Opens the home feed preferences"
msgstr "Ouvre les préférences du fil d’accueil"
-#: src/view/screens/Settings.tsx:664
+#: src/view/screens/Settings.tsx:697
msgid "Opens the storybook page"
msgstr "Ouvre la page de l’historique"
-#: src/view/screens/Settings.tsx:644
+#: src/view/screens/Settings.tsx:677
msgid "Opens the system log page"
msgstr "Ouvre la page du journal système"
@@ -1443,6 +1514,10 @@ msgstr "Ouvre la page du journal système"
msgid "Opens the threads preferences"
msgstr "Ouvre les préférences relatives aux fils de discussion"
+#: src/view/com/modals/Threadgate.tsx:89
+msgid "Or combine these options:"
+msgstr "Ou une combinaison de ces options :"
+
#: src/view/com/auth/login/ChooseAccountForm.tsx:138
msgid "Other account"
msgstr "Autre compte"
@@ -1453,16 +1528,16 @@ msgstr "Autre service"
#: src/view/com/composer/select-language/SelectLangBtn.tsx:91
msgid "Other..."
-msgstr "Autre..."
+msgstr "Autre…"
#: src/view/screens/NotFound.tsx:42
#: src/view/screens/NotFound.tsx:45
msgid "Page not found"
msgstr "Page introuvable"
-#: src/view/com/auth/create/Step2.tsx:101
-#: src/view/com/auth/create/Step2.tsx:111
-#: src/view/com/auth/login/LoginForm.tsx:216
+#: src/view/com/auth/create/Step2.tsx:122
+#: src/view/com/auth/create/Step2.tsx:132
+#: src/view/com/auth/login/LoginForm.tsx:221
#: src/view/com/auth/login/SetNewPasswordForm.tsx:130
#: src/view/com/modals/DeleteAccount.tsx:191
msgid "Password"
@@ -1484,6 +1559,19 @@ msgstr "Images destinées aux adultes."
msgid "Pinned Feeds"
msgstr "Fils épinglés"
+#: src/view/com/util/post-embeds/ExternalGifEmbed.tsx:111
+msgid "Play {0}"
+msgstr ""
+
+#: src/view/com/util/post-embeds/ExternalPlayerEmbed.tsx:54
+#: src/view/com/util/post-embeds/ExternalPlayerEmbed.tsx:55
+msgid "Play Video"
+msgstr ""
+
+#: src/view/com/util/post-embeds/ExternalGifEmbed.tsx:110
+msgid "Plays the GIF"
+msgstr ""
+
#: src/view/com/auth/create/state.ts:116
msgid "Please choose your handle."
msgstr "Veuillez choisir votre pseudo."
@@ -1511,38 +1599,40 @@ msgstr "Veuillez également entrer votre mot de passe :"
#: src/view/com/modals/AppealLabel.tsx:72
#: src/view/com/modals/AppealLabel.tsx:75
msgid "Please tell us why you think this content warning was incorrectly applied!"
-msgstr ""
+msgstr "Dites-nous donc pourquoi vous pensez que cet avertissement de contenu a été appliqué à tort !"
-#: src/view/com/modals/AppealLabel.tsx:72
-#: src/view/com/modals/AppealLabel.tsx:75
#~ msgid "Please tell us why you think this decision was incorrect."
#~ msgstr "Dites-nous pourquoi vous pensez que cette décision était incorrecte."
-#: src/view/com/composer/Composer.tsx:337
-#: src/view/com/post-thread/PostThread.tsx:226
+#: src/view/com/composer/Composer.tsx:215
+msgid "Please wait for your link card to finish loading"
+msgstr "Veuillez patienter le temps que votre carte de lien soit chargée"
+
+#: src/view/com/composer/Composer.tsx:346
+#: src/view/com/post-thread/PostThread.tsx:225
#: src/view/screens/PostThread.tsx:80
msgid "Post"
-msgstr "Publication"
+msgstr "Post"
-#: src/view/com/post-thread/PostThread.tsx:385
+#: src/view/com/post-thread/PostThread.tsx:378
msgid "Post hidden"
-msgstr "Publications cachées"
+msgstr "Posts cachés"
#: src/view/com/composer/select-language/SelectLangBtn.tsx:87
msgid "Post language"
-msgstr "Langue de publication"
+msgstr "Langue du post"
#: src/view/com/modals/lang-settings/PostLanguagesSettings.tsx:75
msgid "Post Languages"
-msgstr "Langues de publication"
+msgstr "Langues du post"
-#: src/view/com/post-thread/PostThread.tsx:437
+#: src/view/com/post-thread/PostThread.tsx:430
msgid "Post not found"
-msgstr "Publication introuvable"
+msgstr "Post introuvable"
#: src/view/screens/Profile.tsx:161
msgid "Posts"
-msgstr "Publications"
+msgstr "Posts"
#: src/view/com/modals/LinkWarning.tsx:44
msgid "Potentially Misleading Link"
@@ -1556,37 +1646,40 @@ msgstr "Image précédente"
msgid "Primary Language"
msgstr "Langue principale"
-#: src/view/screens/PreferencesThreads.tsx:91
+#: src/view/screens/PreferencesThreads.tsx:97
msgid "Prioritize Your Follows"
msgstr "Définissez des priorités de vos suivis"
-#: src/view/shell/desktop/RightNav.tsx:76
+#: src/view/screens/Settings.tsx:570
+#: src/view/shell/desktop/RightNav.tsx:84
msgid "Privacy"
msgstr "Vie privée"
#: src/view/screens/PrivacyPolicy.tsx:29
+#: src/view/screens/Settings.tsx:783
+#: src/view/shell/Drawer.tsx:262
msgid "Privacy Policy"
msgstr "Charte de confidentialité"
#: src/view/com/auth/login/ForgotPasswordForm.tsx:190
msgid "Processing..."
-msgstr "Traitement..."
+msgstr "Traitement…"
#: src/view/shell/bottom-bar/BottomBar.tsx:247
-#: src/view/shell/desktop/LeftNav.tsx:413
-#: src/view/shell/Drawer.tsx:69
-#: src/view/shell/Drawer.tsx:525
-#: src/view/shell/Drawer.tsx:526
+#: src/view/shell/desktop/LeftNav.tsx:415
+#: src/view/shell/Drawer.tsx:70
+#: src/view/shell/Drawer.tsx:544
+#: src/view/shell/Drawer.tsx:545
msgid "Profile"
msgstr "Profil"
-#: src/view/screens/Settings.tsx:789
+#: src/view/screens/Settings.tsx:841
msgid "Protect your account by verifying your email."
msgstr "Protégez votre compte en vérifiant votre e-mail."
#: src/view/screens/ModerationModlists.tsx:61
msgid "Public, shareable lists of users to mute or block in bulk."
-msgstr "Listes publiques et partageables d’utilisateurs à mettre en sourdine ou à bloquer."
+msgstr "Listes publiques et partageables d’utilisateurs à masquer ou à bloquer."
#: src/view/screens/Lists.tsx:61
msgid "Public, shareable lists which can drive feeds."
@@ -1595,11 +1688,15 @@ msgstr "Les listes publiques et partageables qui peuvent alimenter les fils d’
#: src/view/com/modals/Repost.tsx:52
#: src/view/com/util/post-ctrls/RepostButton.web.tsx:58
msgid "Quote post"
-msgstr "Citer une publication"
+msgstr "Citer le post"
#: src/view/com/modals/Repost.tsx:56
msgid "Quote Post"
-msgstr "Citer une publication"
+msgstr "Citer un post"
+
+#: src/view/screens/PreferencesThreads.tsx:86
+msgid "Random (aka \"Poster's Roulette\")"
+msgstr ""
#: src/view/com/modals/EditImage.tsx:236
msgid "Ratios"
@@ -1635,25 +1732,25 @@ msgstr "Supprimer fil d’actu"
#: src/view/com/feeds/FeedSourceCard.tsx:105
#: src/view/com/feeds/FeedSourceCard.tsx:172
-#: src/view/screens/ProfileFeed.tsx:270
+#: src/view/screens/ProfileFeed.tsx:271
msgid "Remove from my feeds"
msgstr "Supprimer de mes fils d’actu"
#: src/view/com/composer/photos/Gallery.tsx:167
msgid "Remove image"
-msgstr "Supprimer image"
+msgstr "Supprimer l’image"
#: src/view/com/composer/ExternalEmbed.tsx:70
msgid "Remove image preview"
-msgstr "Supprimer aperçu d’image"
+msgstr "Supprimer l’aperçu d’image"
#: src/view/com/feeds/FeedSourceCard.tsx:173
msgid "Remove this feed from my feeds?"
-msgstr "Supprimer ce fils d’actu ?"
+msgstr "Supprimer ce fil d’actu ?"
#: src/view/com/posts/FeedErrorMessage.tsx:131
msgid "Remove this feed from your saved feeds?"
-msgstr "Supprimer ce fils d’actu de vos fils d’actu enregistrés ?"
+msgstr "Supprimer ce fil d’actu de vos fils d’actu enregistrés ?"
#: src/view/com/modals/ListAddRemoveUsers.tsx:199
#: src/view/com/modals/UserAddRemoveLists.tsx:136
@@ -1668,7 +1765,7 @@ msgstr "Réponses"
msgid "Replies to this thread are disabled"
msgstr "Les réponses à ce fil de discussion sont désactivées"
-#: src/view/screens/PreferencesHomeFeed.tsx:135
+#: src/view/screens/PreferencesHomeFeed.tsx:141
msgid "Reply Filters"
msgstr "Filtres de réponse"
@@ -1678,20 +1775,20 @@ msgstr "Signaler {collectionName}"
#: src/view/com/profile/ProfileHeader.tsx:404
msgid "Report Account"
-msgstr "Signaler Compte"
+msgstr "Signaler le compte"
-#: src/view/screens/ProfileFeed.tsx:290
+#: src/view/screens/ProfileFeed.tsx:291
msgid "Report feed"
-msgstr "Signaler fil d’actu"
+msgstr "Signaler le fil d’actu"
-#: src/view/screens/ProfileList.tsx:425
+#: src/view/screens/ProfileList.tsx:426
msgid "Report List"
-msgstr "Signaler Liste"
+msgstr "Signaler la liste"
#: src/view/com/modals/report/SendReportButton.tsx:37
-#: src/view/com/util/forms/PostDropdownBtn.tsx:167
+#: src/view/com/util/forms/PostDropdownBtn.tsx:196
msgid "Report post"
-msgstr "Signaler publication"
+msgstr "Signaler le post"
#: src/view/com/util/post-ctrls/RepostButton.web.tsx:48
msgid "Repost"
@@ -1711,15 +1808,19 @@ msgstr "Republié par"
msgid "Request Change"
msgstr "Demande de modification"
-#: src/view/com/auth/create/Step2.tsx:53
+#: src/view/screens/Settings.tsx:422
+msgid "Require alt text before posting"
+msgstr "Nécessiter un texte alt avant de publier"
+
+#: src/view/com/auth/create/Step2.tsx:68
msgid "Required for this provider"
msgstr "Obligatoire pour ce fournisseur"
#: src/view/com/auth/login/SetNewPasswordForm.tsx:108
msgid "Reset code"
-msgstr "Réinitialiser code"
+msgstr "Réinitialiser le code"
-#: src/view/screens/Settings.tsx:686
+#: src/view/screens/Settings.tsx:719
msgid "Reset onboarding state"
msgstr "Réinitialisation de l’état d’accueil"
@@ -1727,30 +1828,29 @@ msgstr "Réinitialisation de l’état d’accueil"
msgid "Reset password"
msgstr "Réinitialiser mot de passe"
-#: src/view/screens/Settings.tsx:676
+#: src/view/screens/Settings.tsx:709
msgid "Reset preferences state"
msgstr "Réinitialiser l’état des préférences"
-#: src/view/screens/Settings.tsx:684
+#: src/view/screens/Settings.tsx:717
msgid "Resets the onboarding state"
msgstr "Réinitialise l’état d’accueil"
-#: src/view/screens/Settings.tsx:674
+#: src/view/screens/Settings.tsx:707
msgid "Resets the preferences state"
msgstr "Réinitialise l’état des préférences"
#: src/view/com/auth/create/CreateAccount.tsx:163
#: src/view/com/auth/create/CreateAccount.tsx:167
-#: src/view/com/auth/login/LoginForm.tsx:258
-#: src/view/com/auth/login/LoginForm.tsx:261
+#: src/view/com/auth/login/LoginForm.tsx:263
+#: src/view/com/auth/login/LoginForm.tsx:266
#: src/view/com/util/error/ErrorMessage.tsx:55
#: src/view/com/util/error/ErrorScreen.tsx:65
msgid "Retry"
msgstr "Réessayer"
-#: src/view/com/modals/AltImage.tsx:115
-#: src/view/com/modals/BirthDateSettings.tsx:93
-#: src/view/com/modals/BirthDateSettings.tsx:96
+#: src/view/com/modals/BirthDateSettings.tsx:94
+#: src/view/com/modals/BirthDateSettings.tsx:97
#: src/view/com/modals/ChangeHandle.tsx:173
#: src/view/com/modals/CreateOrEditList.tsx:249
#: src/view/com/modals/CreateOrEditList.tsx:257
@@ -1760,11 +1860,11 @@ msgstr "Enregistrer"
#: src/view/com/modals/AltImage.tsx:106
msgid "Save alt text"
-msgstr "Enregistrer texte alt"
+msgstr "Enregistrer le texte alt"
#: src/view/com/modals/EditProfile.tsx:231
msgid "Save Changes"
-msgstr "Enregistrer modifications"
+msgstr "Enregistrer les modifications"
#: src/view/com/modals/ChangeHandle.tsx:170
msgid "Save handle change"
@@ -1779,22 +1879,22 @@ msgid "Saved Feeds"
msgstr "Fils d’actu enregistrés"
#: src/view/com/modals/ListAddRemoveUsers.tsx:75
-#: src/view/com/util/forms/SearchInput.tsx:64
-#: src/view/screens/Search/Search.tsx:401
-#: src/view/screens/Search/Search.tsx:567
+#: src/view/com/util/forms/SearchInput.tsx:65
+#: src/view/screens/Search/Search.tsx:406
+#: src/view/screens/Search/Search.tsx:572
#: src/view/shell/bottom-bar/BottomBar.tsx:159
-#: src/view/shell/desktop/LeftNav.tsx:322
+#: src/view/shell/desktop/LeftNav.tsx:324
#: src/view/shell/desktop/Search.tsx:161
#: src/view/shell/desktop/Search.tsx:170
-#: src/view/shell/Drawer.tsx:343
-#: src/view/shell/Drawer.tsx:344
+#: src/view/shell/Drawer.tsx:362
+#: src/view/shell/Drawer.tsx:363
msgid "Search"
msgstr "Recherche"
#: src/view/com/auth/LoggedOut.tsx:104
#: src/view/com/auth/LoggedOut.tsx:105
msgid "Search for users"
-msgstr ""
+msgstr "Rechercher des utilisateurs"
#: src/view/com/modals/ChangeEmail.tsx:110
msgid "Security Step Required"
@@ -1812,7 +1912,7 @@ msgstr "Sélectionner Bluesky Social"
msgid "Select from an existing account"
msgstr "Sélectionner un compte existant"
-#: src/view/com/auth/login/LoginForm.tsx:143
+#: src/view/com/auth/login/LoginForm.tsx:147
msgid "Select service"
msgstr "Sélectionner un service"
@@ -1840,43 +1940,43 @@ msgstr "Envoyer e-mail"
msgid "Send Email"
msgstr "Envoyer e-mail"
-#: src/view/shell/Drawer.tsx:276
-#: src/view/shell/Drawer.tsx:297
+#: src/view/shell/Drawer.tsx:295
+#: src/view/shell/Drawer.tsx:316
msgid "Send feedback"
-msgstr "Envoyer commentaire"
+msgstr "Envoyer des commentaires"
#: src/view/com/modals/report/SendReportButton.tsx:45
msgid "Send Report"
-msgstr "Envoyer rapport"
+msgstr "Envoyer le rapport"
#: src/view/com/auth/login/SetNewPasswordForm.tsx:78
msgid "Set new password"
msgstr "Définir un nouveau mot de passe"
-#: src/view/screens/PreferencesHomeFeed.tsx:216
+#: src/view/screens/PreferencesHomeFeed.tsx:222
msgid "Set this setting to \"No\" to hide all quote posts from your feed. Reposts will still be visible."
-msgstr "Choisissez « Non » pour masquer toutes les citations sur votre fils d’actu. Les republications seront toujours visibles."
+msgstr "Choisissez « Non » pour cacher toutes les citations sur votre fils d’actu. Les reposts seront toujours visibles."
-#: src/view/screens/PreferencesHomeFeed.tsx:113
+#: src/view/screens/PreferencesHomeFeed.tsx:119
msgid "Set this setting to \"No\" to hide all replies from your feed."
-msgstr "Choisissez « Non » pour masquer toutes les réponses dans votre fils d’actu."
+msgstr "Choisissez « Non » pour cacher toutes les réponses dans votre fils d’actu."
-#: src/view/screens/PreferencesHomeFeed.tsx:182
+#: src/view/screens/PreferencesHomeFeed.tsx:188
msgid "Set this setting to \"No\" to hide all reposts from your feed."
-msgstr "Choisissez « Non » pour masquer toutes les republications de votre fils d’actu."
+msgstr "Choisissez « Non » pour cacher toutes les reposts de votre fils d’actu."
-#: src/view/screens/PreferencesThreads.tsx:116
+#: src/view/screens/PreferencesThreads.tsx:122
msgid "Set this setting to \"Yes\" to show replies in a threaded view. This is an experimental feature."
msgstr "Choisissez « Oui » pour afficher les réponses dans un fil de discussion. C’est une fonctionnalité expérimentale."
-#: src/view/screens/PreferencesHomeFeed.tsx:252
+#: src/view/screens/PreferencesHomeFeed.tsx:258
msgid "Set this setting to \"Yes\" to show samples of your saved feeds in your following feed. This is an experimental feature."
msgstr "Choisissez « Oui » pour afficher des échantillons de vos fils d’actu enregistrés dans votre fils d’actu suivant. C’est une fonctionnalité expérimentale."
#: src/view/screens/Settings.tsx:277
-#: src/view/shell/desktop/LeftNav.tsx:431
-#: src/view/shell/Drawer.tsx:546
-#: src/view/shell/Drawer.tsx:547
+#: src/view/shell/desktop/LeftNav.tsx:433
+#: src/view/shell/Drawer.tsx:565
+#: src/view/shell/Drawer.tsx:566
msgid "Settings"
msgstr "Paramètres"
@@ -1885,14 +1985,14 @@ msgid "Sexual activity or erotic nudity."
msgstr "Activité sexuelle ou nudité érotique."
#: src/view/com/profile/ProfileHeader.tsx:338
-#: src/view/com/util/forms/PostDropdownBtn.tsx:131
-#: src/view/screens/ProfileList.tsx:384
+#: src/view/com/util/forms/PostDropdownBtn.tsx:139
+#: src/view/screens/ProfileList.tsx:385
msgid "Share"
msgstr "Partager"
-#: src/view/screens/ProfileFeed.tsx:302
+#: src/view/screens/ProfileFeed.tsx:303
msgid "Share feed"
-msgstr "Partager fils d’actu"
+msgstr "Partager le fil d’actu"
#: src/view/com/util/moderation/ContentHider.tsx:105
#: src/view/screens/Settings.tsx:316
@@ -1903,27 +2003,31 @@ msgstr "Afficher"
msgid "Show anyway"
msgstr "Afficher quand même"
-#: src/view/screens/PreferencesHomeFeed.tsx:249
+#: src/view/com/modals/EmbedConsent.tsx:87
+msgid "Show embeds from {0}"
+msgstr ""
+
+#: src/view/screens/PreferencesHomeFeed.tsx:255
msgid "Show Posts from My Feeds"
-msgstr "Afficher les Publications de Mes fils d’actu"
+msgstr "Afficher les posts de mes fils d’actu"
-#: src/view/screens/PreferencesHomeFeed.tsx:213
+#: src/view/screens/PreferencesHomeFeed.tsx:219
msgid "Show Quote Posts"
-msgstr "Afficher les Publications de citation"
+msgstr "Afficher les posts de citation"
-#: src/view/screens/PreferencesHomeFeed.tsx:110
+#: src/view/screens/PreferencesHomeFeed.tsx:116
msgid "Show Replies"
-msgstr "Afficher réponses"
+msgstr "Afficher les réponses"
-#: src/view/screens/PreferencesThreads.tsx:94
+#: src/view/screens/PreferencesThreads.tsx:100
msgid "Show replies by people you follow before all other replies."
msgstr "Afficher les réponses des personnes que vous suivez avant toutes les autres réponses."
-#: src/view/screens/PreferencesHomeFeed.tsx:179
+#: src/view/screens/PreferencesHomeFeed.tsx:185
msgid "Show Reposts"
-msgstr "Afficher les republications"
+msgstr "Afficher les reposts"
-#: src/view/com/notifications/FeedItem.tsx:337
+#: src/view/com/notifications/FeedItem.tsx:345
msgid "Show users"
msgstr "Afficher les utilisateurs"
@@ -1954,9 +2058,9 @@ msgstr "Se connecter en tant que {0}"
#: src/view/com/auth/login/ChooseAccountForm.tsx:118
#: src/view/com/auth/login/Login.tsx:116
msgid "Sign in as..."
-msgstr "Se connecter en tant que..."
+msgstr "Se connecter en tant que…"
-#: src/view/com/auth/login/LoginForm.tsx:130
+#: src/view/com/auth/login/LoginForm.tsx:134
msgid "Sign into"
msgstr "Se connecter à"
@@ -1995,11 +2099,11 @@ msgstr "Ignorer"
#: src/view/screens/PreferencesThreads.tsx:69
msgid "Sort Replies"
-msgstr "Trier réponses"
+msgstr "Trier les réponses"
#: src/view/screens/PreferencesThreads.tsx:72
msgid "Sort replies to the same post by:"
-msgstr "Trier les réponses à la même publication par :"
+msgstr "Trier les réponses au même post par :"
#: src/view/com/modals/crop-image/CropImage.web.tsx:122
msgid "Square"
@@ -2010,11 +2114,11 @@ msgstr "Carré"
msgid "Staging"
msgstr "Mise en scène"
-#: src/view/screens/Settings.tsx:730
+#: src/view/screens/Settings.tsx:763
msgid "Status page"
msgstr "Page de statut"
-#: src/view/screens/Settings.tsx:666
+#: src/view/screens/Settings.tsx:699
msgid "Storybook"
msgstr "Historique"
@@ -2022,15 +2126,15 @@ msgstr "Historique"
msgid "Submit"
msgstr "Envoyer"
-#: src/view/screens/ProfileList.tsx:574
+#: src/view/screens/ProfileList.tsx:575
msgid "Subscribe"
msgstr "S’abonner"
-#: src/view/screens/ProfileList.tsx:570
+#: src/view/screens/ProfileList.tsx:571
msgid "Subscribe to this list"
msgstr "S’abonner à cette liste"
-#: src/view/screens/Search/Search.tsx:357
+#: src/view/screens/Search/Search.tsx:362
msgid "Suggested Follows"
msgstr "Suivis suggérés"
@@ -2043,7 +2147,7 @@ msgstr "Soutien"
msgid "Switch Account"
msgstr "Changer de compte"
-#: src/view/screens/Settings.tsx:646
+#: src/view/screens/Settings.tsx:679
msgid "System log"
msgstr "Journal système"
@@ -2051,16 +2155,18 @@ msgstr "Journal système"
msgid "Tall"
msgstr "Grand"
-#: src/view/shell/desktop/RightNav.tsx:85
+#: src/view/shell/desktop/RightNav.tsx:93
msgid "Terms"
msgstr "Conditions générales"
+#: src/view/screens/Settings.tsx:777
#: src/view/screens/TermsOfService.tsx:29
+#: src/view/shell/Drawer.tsx:256
msgid "Terms of Service"
msgstr "Conditions d’utilisation"
#: src/view/com/modals/AppealLabel.tsx:70
-#: src/view/com/modals/report/InputIssueDetails.tsx:50
+#: src/view/com/modals/report/InputIssueDetails.tsx:51
msgid "Text input field"
msgstr "Champ de saisie de texte"
@@ -2076,9 +2182,9 @@ msgstr "Les lignes directrices communautaires ont été déplacées vers <0/>"
msgid "The Copyright Policy has been moved to <0/>"
msgstr "Notre politique de droits d’auteur a été déplacée vers <0/>"
-#: src/view/com/post-thread/PostThread.tsx:440
+#: src/view/com/post-thread/PostThread.tsx:433
msgid "The post may have been deleted."
-msgstr "Cette publication a peut-être été supprimée."
+msgstr "Ce post a peut-être été supprimé."
#: src/view/screens/PrivacyPolicy.tsx:33
msgid "The Privacy Policy has been moved to <0/>"
@@ -2086,7 +2192,7 @@ msgstr "Notre politique de confidentialité a été déplacée vers <0/>"
#: src/view/screens/Support.tsx:36
msgid "The support form has been moved. If you need help, please<0/> or visit {HELP_DESK_URL} to get in touch with us."
-msgstr "Le formulaire d’assistance a été déplacé. Si vous avez besoin d’aide, veuillez <0/> ou rendez-vous {HELP_DESK_URL} pour nous contacter."
+msgstr "Le formulaire d’assistance a été déplacé. Si vous avez besoin d’aide, veuillez <0/> ou rendez-vous sur {HELP_DESK_URL} pour nous contacter."
#: src/view/screens/TermsOfService.tsx:33
msgid "The Terms of Service have been moved to"
@@ -2096,7 +2202,6 @@ msgstr "Nos conditions d’utilisation ont été déplacées vers"
msgid "There was an unexpected issue in the application. Please let us know if this happened to you!"
msgstr "Un problème inattendu s’est produit dans l’application. N’hésitez pas à nous faire savoir si cela vous est arrivé !"
-#: src/view/com/util/moderation/LabelInfo.tsx:45
#~ msgid "This {0} has been labeled."
#~ msgstr "Ce {0} a été classé."
@@ -2108,6 +2213,10 @@ msgstr "Ce {screenDescription} a été signalé :"
msgid "This account has requested that users sign in to view their profile."
msgstr "Ce compte a demandé aux utilisateurs de s’identifier pour voir son profil."
+#: src/view/com/modals/EmbedConsent.tsx:68
+msgid "This content is hosted by {0}. Do you want to enable external media?"
+msgstr ""
+
#: src/view/com/posts/FeedErrorMessage.tsx:107
msgid "This content is not viewable without a Bluesky account."
msgstr "Ce contenu n’est pas visible sans un compte Bluesky."
@@ -2134,32 +2243,36 @@ msgstr "Ce lien vous conduit au site Web suivant :"
#: src/view/com/post-thread/PostThreadItem.tsx:123
msgid "This post has been deleted."
-msgstr "Cette publication a été supprimée."
+msgstr "Ce post a été supprimé."
#: src/view/com/modals/SelfLabel.tsx:137
msgid "This warning is only available for posts with media attached."
msgstr "Cet avertissement n’est disponible que pour les messages contenant des médias."
+#: src/view/com/util/forms/PostDropdownBtn.tsx:178
+msgid "This will hide this post from your feeds."
+msgstr "Cela va masquer ce post de vos fils d’actu."
+
#: src/view/screens/PreferencesThreads.tsx:53
#: src/view/screens/Settings.tsx:503
msgid "Thread Preferences"
msgstr "Préférences des fils de discussion"
-#: src/view/screens/PreferencesThreads.tsx:113
+#: src/view/screens/PreferencesThreads.tsx:119
msgid "Threaded Mode"
msgstr "Mode arborescent"
#: src/view/com/util/forms/DropdownButton.tsx:230
msgid "Toggle dropdown"
-msgstr "Basculer menu déroulant"
+msgstr "Activer le menu déroulant"
#: src/view/com/modals/EditImage.tsx:271
msgid "Transformations"
msgstr "Transformations"
-#: src/view/com/post-thread/PostThreadItem.tsx:704
-#: src/view/com/post-thread/PostThreadItem.tsx:706
-#: src/view/com/util/forms/PostDropdownBtn.tsx:103
+#: src/view/com/post-thread/PostThreadItem.tsx:705
+#: src/view/com/post-thread/PostThreadItem.tsx:707
+#: src/view/com/util/forms/PostDropdownBtn.tsx:111
msgid "Translate"
msgstr "Traduire"
@@ -2167,17 +2280,17 @@ msgstr "Traduire"
msgid "Try again"
msgstr "Réessayer"
-#: src/view/screens/ProfileList.tsx:472
+#: src/view/screens/ProfileList.tsx:473
msgid "Un-block list"
-msgstr "Débloquer liste"
+msgstr "Débloquer la liste"
-#: src/view/screens/ProfileList.tsx:457
+#: src/view/screens/ProfileList.tsx:458
msgid "Un-mute list"
-msgstr "Désactiver sourdine sur cette liste"
+msgstr "Réafficher cette liste"
-#: src/view/com/auth/create/CreateAccount.tsx:64
+#: src/view/com/auth/create/CreateAccount.tsx:65
#: src/view/com/auth/login/Login.tsx:76
-#: src/view/com/auth/login/LoginForm.tsx:117
+#: src/view/com/auth/login/LoginForm.tsx:120
msgid "Unable to contact your service. Please check your Internet connection."
msgstr "Impossible de contacter votre service. Veuillez vérifier votre connexion Internet."
@@ -2189,25 +2302,25 @@ msgstr "Débloquer"
#: src/view/com/profile/ProfileHeader.tsx:304
#: src/view/com/profile/ProfileHeader.tsx:388
msgid "Unblock Account"
-msgstr "Débloquer compte"
+msgstr "Débloquer le compte"
#: src/view/com/util/post-ctrls/RepostButton.web.tsx:48
msgid "Undo repost"
-msgstr "Annuler transfert"
+msgstr "Annuler le repost"
-#: src/view/com/auth/create/state.ts:210
+#: src/view/com/auth/create/state.ts:216
msgid "Unfortunately, you do not meet the requirements to create an account."
msgstr "Malheureusement, vous ne remplissez pas les conditions requises pour créer un compte."
#: src/view/com/profile/ProfileHeader.tsx:369
msgid "Unmute Account"
-msgstr "Désactiver sourdine sur ce compte"
+msgstr "Réafficher ce compte"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:149
+#: src/view/com/util/forms/PostDropdownBtn.tsx:157
msgid "Unmute thread"
-msgstr "Désactiver sourdine sur ce fil de discussion"
+msgstr "Réafficher ce fil de discussion"
-#: src/view/screens/ProfileList.tsx:440
+#: src/view/screens/ProfileList.tsx:441
msgid "Unpin moderation list"
msgstr "Supprimer la liste de modération"
@@ -2221,7 +2334,7 @@ msgstr "Mise à jour disponible"
#: src/view/com/auth/login/SetNewPasswordForm.tsx:172
msgid "Updating..."
-msgstr "Mise à jour..."
+msgstr "Mise à jour…"
#: src/view/com/modals/ChangeHandle.tsx:453
msgid "Upload a text file to:"
@@ -2251,12 +2364,12 @@ msgstr "Pseudo utilisateur"
msgid "User Lists"
msgstr "Listes d’utilisateurs"
-#: src/view/com/auth/login/LoginForm.tsx:170
-#: src/view/com/auth/login/LoginForm.tsx:187
+#: src/view/com/auth/login/LoginForm.tsx:174
+#: src/view/com/auth/login/LoginForm.tsx:192
msgid "Username or email address"
msgstr "Nom d’utilisateur ou e-mail"
-#: src/view/screens/ProfileList.tsx:738
+#: src/view/screens/ProfileList.tsx:747
msgid "Users"
msgstr "Utilisateurs"
@@ -2266,24 +2379,24 @@ msgstr "utilisateurs suivis par <0/>"
#: src/view/com/modals/Threadgate.tsx:106
msgid "Users in \"{0}\""
-msgstr "Utilisateurs dans \"{0}\""
+msgstr "Utilisateurs dans « {0} »"
-#: src/view/screens/Settings.tsx:750
+#: src/view/screens/Settings.tsx:802
msgid "Verify email"
-msgstr "Confirmer e-mail"
+msgstr "Confirmer l’e-mail"
-#: src/view/screens/Settings.tsx:775
+#: src/view/screens/Settings.tsx:827
msgid "Verify my email"
msgstr "Confirmer mon e-mail"
-#: src/view/screens/Settings.tsx:784
+#: src/view/screens/Settings.tsx:836
msgid "Verify My Email"
msgstr "Confirmer mon e-mail"
#: src/view/com/modals/ChangeEmail.tsx:205
#: src/view/com/modals/ChangeEmail.tsx:207
msgid "Verify New Email"
-msgstr "Confirmer nouvel e-mail"
+msgstr "Confirmer le nouvel e-mail"
#: src/view/screens/Log.tsx:52
msgid "View debug entry"
@@ -2291,17 +2404,17 @@ msgstr "Afficher l’entrée de débogage"
#: src/view/com/profile/ProfileSubpageHeader.tsx:128
msgid "View the avatar"
-msgstr "Afficher avatar"
+msgstr "Afficher l’avatar"
#: src/view/com/modals/LinkWarning.tsx:73
msgid "Visit Site"
msgstr "Visiter le site"
-#: src/view/com/auth/create/CreateAccount.tsx:121
+#: src/view/com/auth/create/CreateAccount.tsx:122
msgid "We're so excited to have you join us!"
msgstr "Nous sommes ravis de vous accueillir !"
-#: src/view/screens/Search/Search.tsx:238
+#: src/view/screens/Search/Search.tsx:243
msgid "We're sorry, but your search could not be completed. Please try again in a few minutes."
msgstr "Nous sommes désolés, mais votre recherche a été annulée. Veuillez réessayer dans quelques minutes."
@@ -2317,17 +2430,13 @@ msgstr "Bienvenue sur <0>Bluesky0>"
msgid "What is the issue with this {collectionName}?"
msgstr "Quel est le problème avec cette {collectionName} ?"
-#: src/view/com/auth/SplashScreen.tsx:34
-#~ msgid "What's next?"
-#~ msgstr "Et après ?"
-
#: src/view/com/auth/SplashScreen.tsx:34
msgid "What's up?"
-msgstr ""
+msgstr "Quoi de neuf ?"
#: src/view/com/modals/lang-settings/PostLanguagesSettings.tsx:78
msgid "Which languages are used in this post?"
-msgstr "Quelles sont les langues utilisées dans cette publication ?"
+msgstr "Quelles sont les langues utilisées dans ce post ?"
#: src/view/com/modals/lang-settings/ContentLanguagesSettings.tsx:77
msgid "Which languages would you like to see in your algorithmic feeds?"
@@ -2342,17 +2451,20 @@ msgstr "Qui peut répondre ?"
msgid "Wide"
msgstr "Large"
-#: src/view/com/composer/Composer.tsx:409
+#: src/view/com/composer/Composer.tsx:418
msgid "Write post"
-msgstr "Rédiger une publication"
+msgstr "Rédiger un post"
#: src/view/com/composer/Prompt.tsx:33
msgid "Write your reply"
msgstr "Rédigez votre réponse"
-#: src/view/screens/PreferencesHomeFeed.tsx:192
-#: src/view/screens/PreferencesHomeFeed.tsx:227
-#: src/view/screens/PreferencesHomeFeed.tsx:262
+#: src/view/screens/PreferencesHomeFeed.tsx:126
+#: src/view/screens/PreferencesHomeFeed.tsx:198
+#: src/view/screens/PreferencesHomeFeed.tsx:233
+#: src/view/screens/PreferencesHomeFeed.tsx:268
+#: src/view/screens/PreferencesThreads.tsx:106
+#: src/view/screens/PreferencesThreads.tsx:129
msgid "Yes"
msgstr "Oui"
@@ -2381,40 +2493,40 @@ msgstr "Vous n’avez encore aucun fil enregistré !"
msgid "You don't have any saved feeds."
msgstr "Vous n’avez encore aucun fil enregistré."
-#: src/view/com/post-thread/PostThread.tsx:388
+#: src/view/com/post-thread/PostThread.tsx:381
msgid "You have blocked the author or you have been blocked by the author."
-msgstr "Vous avez bloqué cet auteur ou il/elle vous a bloqué."
+msgstr "Vous avez bloqué cet auteur ou vous avez été bloqué par celui-ci."
-#: src/view/com/feeds/ProfileFeedgens.tsx:141
+#: src/view/com/feeds/ProfileFeedgens.tsx:134
msgid "You have no feeds."
msgstr "Vous n’avez aucun fil."
#: src/view/com/lists/MyLists.tsx:89
-#: src/view/com/lists/ProfileLists.tsx:145
+#: src/view/com/lists/ProfileLists.tsx:138
msgid "You have no lists."
msgstr "Vous n’avez aucune liste."
-#: src/view/screens/ModerationBlockedAccounts.tsx:131
+#: src/view/screens/ModerationBlockedAccounts.tsx:132
msgid "You have not blocked any accounts yet. To block an account, go to their profile and selected \"Block account\" from the menu on their account."
-msgstr "Vous n’avez pas encore bloqué de comptes. Pour bloquer un compte, accédez à son profil et sélectionnez « Bloquer compte » dans le menu de son compte."
+msgstr "Vous n’avez pas encore bloqué de comptes. Pour bloquer un compte, accédez à son profil et sélectionnez « Bloquer le compte » dans le menu de son compte."
#: src/view/screens/AppPasswords.tsx:86
msgid "You have not created any app passwords yet. You can create one by pressing the button below."
msgstr "Vous n’avez encore créé aucun mot de passe pour l’appli. Vous pouvez en créer un en cliquant sur le bouton suivant."
-#: src/view/screens/ModerationMutedAccounts.tsx:130
+#: src/view/screens/ModerationMutedAccounts.tsx:131
msgid "You have not muted any accounts yet. To mute an account, go to their profile and selected \"Mute account\" from the menu on their account."
-msgstr "Vous n’avez encore mis aucun compte en sourdine. Pour désactiver un compte, allez sur son profil et sélectionnez « Désactiver compte » dans le menu de son compte."
+msgstr "Vous n’avez encore masqué aucun compte. Pour désactiver un compte, allez sur son profil et sélectionnez « Masquer le compte » dans le menu de son compte."
#: src/view/com/auth/login/SetNewPasswordForm.tsx:81
msgid "You will receive an email with a \"reset code.\" Enter that code here, then enter your new password."
msgstr "Vous recevrez un e-mail contenant un « code de réinitialisation » Saisissez ce code ici, puis votre nouveau mot de passe."
-#: src/view/com/auth/create/Step2.tsx:43
+#: src/view/com/auth/create/Step2.tsx:58
msgid "Your account"
msgstr "Votre compte"
-#: src/view/com/auth/create/Step2.tsx:122
+#: src/view/com/auth/create/Step2.tsx:146
msgid "Your birth date"
msgstr "Votre date de naissance"
@@ -2444,14 +2556,14 @@ msgid "Your hosting provider"
msgstr "Votre fournisseur d’hébergement"
#: src/view/screens/Settings.tsx:402
-#: src/view/shell/desktop/RightNav.tsx:129
-#: src/view/shell/Drawer.tsx:636
+#: src/view/shell/desktop/RightNav.tsx:137
+#: src/view/shell/Drawer.tsx:655
msgid "Your invite codes are hidden when logged in using an App Password"
msgstr "Vos codes d’invitation sont cachés lorsque vous êtes connecté à l’aide d’un mot de passe d’application."
#: src/view/com/auth/onboarding/WelcomeMobile.tsx:59
msgid "Your posts, likes, and blocks are public. Mutes are private."
-msgstr "Vos publications, les mentions « J’aime » et les blocages sont publics. Les sourdines sont privées."
+msgstr "Vos posts, les mentions « J’aime » et les blocages sont publics. Les silences (comptes masqués) sont privés."
#: src/view/com/modals/SwitchAccount.tsx:82
msgid "Your profile"
diff --git a/src/locale/locales/hi/messages.js b/src/locale/locales/hi/messages.js
deleted file mode 100644
index fd35fb8a78..0000000000
--- a/src/locale/locales/hi/messages.js
+++ /dev/null
@@ -1 +0,0 @@
-/*eslint-disable*/module.exports={messages:JSON.parse("{\"PBodTo\":\"- फ़ीड का अंत -\",\"EtUMsZ\":\"यह चेतावनी केवल मीडिया वाले पोस्ट के लिए उपलब्ध है।\",\"ebOBhv\":[[\"0\",\"plural\",{\"one\":[\"#\",\" invite code available\"],\"other\":[\"#\",\" invite codes available\"]}]],\"J/hVSQ\":[[\"0\"]],\"hZQerY\":[[\"0\"],\" \",[\"purposeLabel\"],\" सूची\"],\"zgN03j\":[[\"invitesAvailable\",\"plural\",{\"one\":[\"Invite codes: \",\"#\",\" available\"],\"other\":[\"Invite codes: \",\"#\",\" available\"]}]],\"OyEWua\":[[\"invitesAvailable\"],\" invite code available\"],\"eFIdHP\":[[\"invitesAvailable\"],\" invite codes available\"],\"wapGcj\":[[\"message\"]],\"umrH9L\":\"<0/> members\",\"gMjqbV\":\"<0>अपना0><1>पसंदीदा1><2>फ़ीड चुनें2>\",\"F657la\":\"<0>कुछ0><1>पसंदीदा उपयोगकर्ताओं1><2>का अनुसरण करें2>\",\"6RmyWt\":\"<0>इधर आपका ऐप पासवर्ड है।0> इसे अपने हैंडल के साथ दूसरे ऐप में साइन करने के लिए उपयोग करें।।\",\"GH9ldj\":\"<0>Note: This setting may not be respected by third-party apps that display Bluesky content.0>\",\"Ga0T2l\":\"<0>Note: Your profile and posts will remain publicly available. Third-party apps that display Bluesky content may not respect this setting.0>\",\"XCTqGE\":\"ऐप का एक नया संस्करण उपलब्ध है. कृपया ऐप का उपयोग जारी रखने के लिए अपडेट करें।\",\"AnNF5e\":\"प्रवेर्शयोग्यता\",\"AeXO77\":\"अकाउंट\",\"4WY4MD\":\"अकाउंट के विकल्प\",\"m16xKo\":\"ऐड करो\",\"fBBX+K\":\"सामग्री चेतावनी जोड़ें\",\"JU3hs2\":\"इस सूची में किसी को जोड़ें\",\"MPPZ54\":\"अकाउंट जोड़ें\",\"LkA8jz\":\"इस फ़ोटो में विवरण जोड़ें\",\"Z8idyM\":\"विवरण जोड़ें\",\"AoXl11\":\"रिपोर्ट करने के लिए विवरण जोड़ें\",\"iE6B/9\":\"लिंक कार्ड जोड़ें\",\"EXHdP1\":\"लिंक कार्ड जोड़ें:\",\"x6laaL\":\"अपने डोमेन में निम्नलिखित DNS रिकॉर्ड जोड़ें:\",\"UmzMP4\":\"सूचियों में जोड़ें\",\"hCrQ0L\":\"इस फ़ीड को सहेजें\",\"GluCXm\":\"Added to list\",\"jRrQFe\":\"पसंद की संख्या को समायोजित करें उत्तर को आपके फ़ीड में दिखाया जाना चाहिए।।\",\"qLa52r\":\"वयस्क सामग्री\",\"sxkWRg\":\"विकसित\",\"u2HO/d\":\"ALT\",\"u/DP73\":\"वैकल्पिक पाठ\",\"0QlT7/\":\"ऑल्ट टेक्स्ट अंधा और कम दृश्य लोगों के लिए छवियों का वर्णन करता है, और हर किसी को संदर्भ देने में मदद करता है।।\",\"woXbjq\":[[\"0\"],\" को ईमेल भेजा गया है। इसमें एक OTP कोड शामिल है जिसे आप नीचे दर्ज कर सकते हैं।।\"],\"Fon2dK\":[[\"0\"],\" को ईमेल भेजा गया है। इसमें एक OTP कोड शामिल है जिसे आप नीचे दर्ज कर सकते हैं।।\"],\"HZFm5R\":\"और\",\"fdjKGe\":\"ऐप भाषा\",\"SMmUnj\":\"ऐप पासवर्ड\",\"8q4WlH\":\"ऐप पासवर्ड\",\"e6un1h\":\"Appeal Decision\",\"c0PCYD\":\"Appeal this decision\",\"oifO1p\":\"Appeal this decision.\",\"aAIQg2\":\"दिखावट\",\"9K5XIM\":\"Apps that respect this setting, including the official Bluesky app and bsky.app website, won't show your content to logged out users.\",\"SSDZ+T\":[\"क्या आप वाकई ऐप पासवर्ड \\\"\",[\"name\"],\"\\\" हटाना चाहते हैं?\"],\"0BIeIs\":\"क्या आप वाकई इस ड्राफ्ट को हटाना करना चाहेंगे?\",\"6foA8n\":\"क्या आप वास्तव में इसे करना चाहते हैं?\",\"/mSd6b\":\"क्या आप वास्तव में इसे करना चाहते हैं? इसे असंपादित नहीं किया जा सकता है।\",\"EbvWd3\":\"कलात्मक या गैर-कामुक नग्नता।।\",\"uVotT3\":\"Ask apps to limit the visibility of my account\",\"iH8pgl\":\"वापस\",\"ehOkF+\":\"मूल बातें\",\"+gCI2a\":\"जन्मदिन\",\"pieVBA\":\"जन्मदिन:\",\"m1dqxu\":\"खाता ब्लॉक करें\",\"ffIfdM\":\"खाता ब्लॉक करें\",\"hIysMc\":\"Block list\",\"fdYcMy\":\"खाता ब्लॉक करें?\",\"KWykPE\":\"ब्लॉक किए गए खाते\",\"JuqQpF\":\"ब्लॉक किए गए खाते\",\"HG4qt4\":\"अवरुद्ध खाते आपके थ्रेड्स में उत्तर नहीं दे सकते, आपका उल्लेख नहीं कर सकते, या अन्यथा आपके साथ बातचीत नहीं कर सकते।\",\"8LNSUt\":\"अवरुद्ध खाते आपके थ्रेड्स में उत्तर नहीं दे सकते, आपका उल्लेख नहीं कर सकते, या अन्यथा आपके साथ बातचीत नहीं कर सकते। आप उनकी सामग्री नहीं देख पाएंगे और उन्हें आपकी सामग्री देखने से रोका जाएगा।\",\"HFCE4A\":\"ब्लॉक पोस्ट।\",\"zl+QbX\":\"अवरोधन सार्वजनिक है. अवरुद्ध खाते आपके थ्रेड्स में उत्तर नहीं दे सकते, आपका उल्लेख नहीं कर सकते, या अन्यथा आपके साथ बातचीत नहीं कर सकते।\",\"7A9u1j\":\"Bluesky\",\"ZHmKSm\":\"Bluesky लचीला है।।\",\"odLrdl\":\"Bluesky खुला है।।\",\"/LsWK4\":\"Bluesky सार्वजनिक है।।\",\"C50OGr\":\"ब्लूस्की एक स्वस्थ समुदाय बनाने के लिए आमंत्रित करता है। यदि आप किसी को आमंत्रित नहीं करते हैं, तो आप प्रतीक्षा सूची के लिए साइन अप कर सकते हैं और हम जल्द ही एक भेज देंगे।।\",\"u9cCQU\":\"Bluesky will not show your profile and posts to logged-out users. Other apps may not honor this request. This does not make your account private.\",\"klVoaP\":\"Bluesky.Social\",\"qxBitM\":[\"Build version \",[\"0\"],\" \",[\"1\"]],\"rT2cV+\":\"कैमरा\",\"JGGrPC\":\"केवल अक्षर, संख्या, रिक्त स्थान, डैश और अंडरस्कोर हो सकते हैं। कम से कम 4 अक्षर लंबा होना चाहिए, लेकिन 32 अक्षरों से अधिक लंबा नहीं होना चाहिए।।\",\"dEgA5A\":\"कैंसिल\",\"aMH9rr\":\"अकाउंट बंद मत करो\",\"kc3E4R\":\"ऑल्ट टेक्स्ट मत जोड़ें\",\"wg4LHQ\":\"नाम मत बदलो\",\"hFL1Li\":\"तस्वीर को क्रॉप मत करो\",\"tijH8t\":\"प्रोफ़ाइल संपादन मत करो\",\"Qe4C/d\":\"कोटे पोस्ट मत करो\",\"5TviPn\":\"खोज मत करो\",\"nss3UV\":\"प्रतीक्षा सूची पंजीकरण मत करो\",\"o+XJ9D\":\"परिवर्तन\",\"pQco5R\":\"हैंडल बदलें\",\"Q5e1U/\":\"हैंडल बदलें\",\"a3NAfL\":\"मेरा ईमेल बदलें\",\"4vatyk\":\"मेरा ईमेल बदलें\",\"Yn3C90\":\"कुछ अनुशंसित फ़ीड देखें. उन्हें अपनी पिन की गई फ़ीड की सूची में जोड़ने के लिए + टैप करें।\",\"ioZXIH\":\"कुछ अनुशंसित उपयोगकर्ताओं की जाँच करें। ऐसे ही उपयोगकर्ता देखने के लिए उनका अनुसरण करें।\",\"/+X+/K\":\"नीचे प्रवेश करने के लिए OTP कोड के साथ एक ईमेल के लिए अपने इनबॉक्स की जाँच करें:\",\"Rt502e\":\"सेवा चुनें\",\"/L45sc\":\"उन एल्गोरिदम का चयन करें जो कस्टम फीड्स के साथ अपने अनुभव को शक्ति देते हैं।।\",\"Wk8hkn\":\"अपना पासवर्ड चुनें\",\"Us7A1O\":\"Clear all legacy storage data\",\"X3zEXo\":\"Clear all legacy storage data (restart after this)\",\"zxFM2c\":\"Clear all storage data\",\"r+lhUL\":\"Clear all storage data (restart after this)\",\"QbvBNV\":\"खोज क्वेरी साफ़ करें\",\"flH7u/\":\"चेतावनी को बंद करो\",\"hYmnbk\":\"बंद करो\",\"47L1V1\":\"छवि बंद करें\",\"l49ujN\":\"छवि बंद करें\",\"UryHFO\":\"नेविगेशन पाद बंद करें\",\"KHzDTk\":\"समुदाय दिशानिर्देश\",\"o8UUti\":\"जवाब लिखो\",\"7VpPHA\":\"हो गया\",\"q8upsf\":\"बदलाव की पुष्टि करें\",\"8pNKIr\":\"सामग्री भाषा सेटिंग्स की पुष्टि करें\",\"tGg8Kt\":\"खाते को हटा दें\",\"ioZOzk\":\"OTP कोड\",\"J28zul\":\"कनेक्टिंग ..।\",\"l879p1\":\"सामग्री फ़िल्टरिंग\",\"m8j6up\":\"सामग्री फ़िल्टरिंग\",\"/PlAsF\":\"सामग्री भाषा\",\"cogwXi\":\"सामग्री चेतावनी\",\"FG7AQv\":\"सामग्री चेतावनी\",\"xGVfLh\":\"आगे बढ़ें\",\"6V3Ea3\":\"कॉपी कर ली\",\"he3ygx\":\"कॉपी\",\"7LTXf4\":\"Copy link to list\",\"dWsPi5\":\"Copy link to post\",\"jw+abr\":\"Copy link to profile\",\"iQgJaz\":\"पोस्ट टेक्स्ट कॉपी करें\",\"u40k/o\":\"कॉपीराइट नीति\",\"7wWvgo\":\"फ़ीड लोड नहीं कर सकता\",\"8NNr/O\":\"सूची लोड नहीं कर सकता\",\"mpt9T+\":\"नया खाता बनाएं\",\"IS0nrP\":\"खाता बनाएँ\",\"6HbhpU\":\"नया खाता बनाएं\",\"MXSt4t\":[\"बनाया गया \",[\"0\"]],\"GAD3Dx\":\"कस्टम डोमेन\",\"ZQKLI1\":\"खतरा क्षेत्र\",\"pvnfJD\":\"डार्क मोड\",\"ZDGm40\":\"खाता हटाएं\",\"vzX5FB\":\"खाता हटाएं\",\"gUEtxf\":\"अप्प पासवर्ड हटाएं\",\"84uE/A\":\"सूची हटाएँ\",\"ktknoE\":\"मेरा खाता हटाएं\",\"szz0+N\":\"मेरा खाता हटाएं…\",\"04G5Az\":\"पोस्ट को हटाएं\",\"FbPNuJ\":\"इस पोस्ट को डीलीट करें?\",\"u+1OHY\":\"यह पोस्ट मिटाई जा चुकी है\",\"Nu4oKW\":\"विवरण\",\"dacKHE\":\"देव सर्वर\",\"2ygkE8\":\"डेवलपर उपकरण\",\"bzSI52\":\"Discard\",\"BryYJR\":\"ड्राफ्ट हटाएं\",\"9Y7FMD\":\"Discourage apps from showing my account to logged-out users\",\"pbLwal\":\"नए फ़ीड की खोज करें\",\"pfa8F0\":\"नाम\",\"0gS7M5\":\"प्रदर्शन का नाम\",\"iZ5pMB\":\"डोमेन सत्यापित!\",\"DPfwMq\":\"खत्म\",\"zT97vP\":[\"खत्म \",[\"extraText\"]],\"4uwlSD\":\"प्रत्येक कोड एक बार काम करता है। आपको समय-समय पर अधिक आमंत्रण कोड प्राप्त होंगे।\",\"XQFMOm\":\"छवि संपादित करें\",\"S7M0uU\":\"सूची विवरण संपादित करें\",\"cLmurE\":\"मेरी फ़ीड संपादित करें\",\"bRZ5XW\":\"मेरी प्रोफ़ाइल संपादित करें\",\"9OpVZg\":\"मेरी प्रोफ़ाइल संपादित करें\",\"QJQd1J\":\"मेरी प्रोफ़ाइल संपादित करें\",\"Jn7kox\":\"एडिट सेव्ड फीड\",\"O3oNi5\":\"ईमेल\",\"ATGYL1\":\"ईमेल\",\"pJJ0Vp\":\"ईमेल अपडेट किया गया\",\"9Qs99X\":\"ईमेल:\",\"96mted\":\"इस सेटिंग को केवल उन लोगों के बीच जवाब देखने में सक्षम करें जिन्हें आप फॉलो करते हैं।।\",\"9xK+YC\":\"End of feed\",\"YbIxza\":\"अपने प्रदाता का पता दर्ज करें:\",\"BfIgP6\":\"आप जिस डोमेन का उपयोग करना चाहते हैं उसे दर्ज करें\",\"cHrOqs\":\"वह ईमेल दर्ज करें जिसका उपयोग आपने अपना खाता बनाने के लिए किया था। हम आपको एक \\\"reset code\\\" भेजेंगे ताकि आप एक नया पासवर्ड सेट कर सकें।\",\"xRPn3U\":\"अपना ईमेल पता दर्ज करें\",\"+inPGm\":\"नीचे अपना नया ईमेल पता दर्ज करें।।\",\"T0KLp4\":\"अपने यूज़रनेम और पासवर्ड दर्ज करें\",\"4BITzH\":\"Error:\",\"wlzBtv\":\"Everybody\",\"0PkE20\":\"ऑल्ट टेक्स्ट\",\"/5K/KL\":\"अनुशंसित फ़ीड लोड करने में विफल\",\"4yCy8i\":\"फ़ीड ऑफ़लाइन है\",\"N0CqyO\":\"फ़ीड प्राथमिकता\",\"YirHq7\":\"प्रतिक्रिया\",\"2DoBvq\":\"सभी फ़ीड\",\"I3iUBQ\":\"सामग्री को व्यवस्थित करने के लिए उपयोगकर्ताओं द्वारा फ़ीड बनाए जाते हैं। कुछ फ़ीड चुनें जो आपको दिलचस्प लगें।\",\"2+6lmO\":\"फ़ीड कस्टम एल्गोरिदम हैं जिन्हें उपयोगकर्ता थोड़ी कोडिंग विशेषज्ञता के साथ बनाते हैं। <0/> अधिक जानकारी के लिए.\",\"Qzj1WT\":\"मिलते-जुलते खाते ढूँढना\",\"QKSrQV\":\"अपने मुख्य फ़ीड की स्क्रीन पर दिखाई देने वाली सामग्री को ठीक करें।।\",\"r+KeyR\":\"चर्चा धागे को ठीक-ट्यून करें।।\",\"MKEPCY\":\"फॉलो\",\"Wezu5M\":\"आरंभ करने के लिए कुछ उपयोगकर्ताओं का अनुसरण करें. आपको कौन दिलचस्प लगता है, इसके आधार पर हम आपको और अधिक उपयोगकर्ताओं की अनुशंसा कर सकते हैं।\",\"jdbMSV\":\"Followed users\",\"YY2BTA\":\"केवल वे यूजर को फ़ॉलो किया गया\",\"x5LEuB\":\"यह यूजर आपका फ़ोलो करता है\",\"NIjL2Y\":\"फोल्लोविंग\",\"y6sq5j\":\"फोल्लोविंग\",\"p3UO/y\":\"यह यूजर आपका फ़ोलो करता है\",\"5RhDkD\":\"सुरक्षा कारणों के लिए, हमें आपके ईमेल पते पर एक OTP कोड भेजने की आवश्यकता होगी।।\",\"NJPhAO\":\"सुरक्षा कारणों के लिए, आप इसे फिर से देखने में सक्षम नहीं होंगे। यदि आप इस पासवर्ड को खो देते हैं, तो आपको एक नया उत्पन्न करना होगा।।\",\"5bDfuq\":\"भूल\",\"hEPLrs\":\"पासवर्ड भूल गए\",\"dn8X5t\":\"पासवर्ड भूल गए\",\"U+kFad\":\"गैलरी\",\"c3b0B0\":\"प्रारंभ करें\",\"CKyk7Q\":\"वापस जाओ\",\"sr0UJD\":\"वापस जाओ\",\"Rtp0y7\":\"अगला\",\"Nf7oXL\":\"हैंडल\",\"c3XJ18\":\"सहायता\",\"uX/4+/\":\"यहां आपका ऐप पासवर्ड है.\",\"vLyv1R\":\"इसे छिपाएं\",\"qdOx2q\":\"उपयोगकर्ता सूची छुपाएँ\",\"up7j9X\":\"Hmm, some kind of issue occured when contacting the feed server. Please let the feed owner know about this issue.\",\"FynkM2\":\"Hmm, some kind of issue occurred when contacting the feed server. Please let the feed owner know about this issue.\",\"WTcLyw\":\"Hmm, the feed server appears to be misconfigured. Please let the feed owner know about this issue.\",\"/8MHCt\":\"Hmm, the feed server appears to be offline. Please let the feed owner know about this issue.\",\"3zJH1g\":\"Hmm, the feed server gave a bad response. Please let the feed owner know about this issue.\",\"wkCNhr\":\"Hmm, we're having trouble finding this feed. It may have been deleted.\",\"yNNyhI\":\"Hmmm, we're having trouble finding this feed. It may have been deleted.\",\"i0qMbr\":\"होम फीड\",\"sXZ8IU\":\"होम फ़ीड प्राथमिकताएं\",\"yt7fhu\":\"होस्टिंग प्रदाता\",\"s2xA6t\":\"होस्टिंग प्रदाता पता\",\"o+axy6\":\"मेरे पास एक OTP कोड है\",\"wey2os\":\"मेरे पास अपना डोमेन है\",\"WlEcKr\":\"यदि किसी को चुना जाता है, तो सभी उम्र के लिए उपयुक्त है।।\",\"VCk0rR\":\"छवि alt पाठ\",\"STGpNQ\":\"छवि विकल्प\",\"6o7+En\":\"आपके नेटवर्क में\",\"dSKHAa\":\"अवैध उपयोगकर्ता नाम या पासवर्ड\",\"MFKlMB\":\"आमंत्रण भेजो\",\"F5MZVk\":\"एक दोस्त को आमंत्रित करें\",\"6KlkHI\":\"आमंत्रण कोड\",\"MYTV5o\":\"Invite code not accepted. Check that you input it correctly and try again.\",\"UY2916\":[\"Invite codes: \",[\"invitesAvailable\"],\" available\"],\"F75w8j\":\"प्रतीक्षा सूची में शामिल हों\",\"6iVTdm\":\"प्रतीक्षा सूची में शामिल हों।।\",\"SNzppu\":\"वेटरलिस्ट में शामिल हों\",\"Dcq5kL\":\"अपनी भाषा चुने\",\"pVhZHk\":\"भाषा सेटिंग्स\",\"GAmD3h\":\"भाषा\",\"NgeSlx\":\"अधिक जानें\",\"rj0Lke\":\"इस चेतावनी के बारे में अधिक जानें\",\"lvYkpV\":\"Learn more about what is public on Bluesky.\",\"kq2ga7\":\"उन्हें किसी भी भाषा को देखने के लिए अनचेक छोड़ दें।।\",\"QfDITI\":\"लीविंग Bluesky\",\"Esfg1M\":\"चलो अपना पासवर्ड रीसेट करें!\",\"exYcTF\":\"चित्र पुस्तकालय\",\"1njn7W\":\"लाइट मोड\",\"BvSY1i\":\"इस फ़ीड को लाइक करो\",\"8/ALSr\":\"इन यूजर ने लाइक किया है\",\"zZOZj7\":\"Likes\",\"KGL/DU\":\"Limit the visibility of my account\",\"AUSVsF\":\"Limit the visibility of my account to logged-out users\",\"FuZWua\":\"सूची अवतार\",\"8mjA4F\":\"सूची का नाम\",\"h16FyT\":\"सूची\",\"ujW4FW\":\"अधिक पोस्ट लोड करें\",\"7EHsGr\":\"नई सूचनाएं लोड करें\",\"VkLESX\":\"नई पोस्ट लोड करें\",\"Z3FXyt\":\"Loading...\",\"jl0AFf\":\"स्थानीय देव सर्वर\",\"5Aq6mk\":\"Logged-out users\",\"w2yNjr\":\"Logged-out visibility\",\"cR9UpQ\":\"उस खाते में लॉग इन करें जो सूचीबद्ध नहीं है\",\"kkGiug\":\"Looks like this feed is only available to users with a Bluesky account. Please sign up or sign in to view this feed!\",\"2U/gDT\":\"यह सुनिश्चित करने के लिए कि आप कहाँ जाना चाहते हैं!\",\"xYilR2\":\"Media\",\"S9V0C/\":\"mentioned users\",\"31/84x\":\"Mentioned users\",\"zucql+\":\"मेनू\",\"kTQnAw\":\"Message from server\",\"DzmsLV\":\"मॉडरेशन\",\"NTIbv4\":\"मॉडरेशन सूचियाँ\",\"3j2OjF\":\"Moderation Lists\",\"FIJUJb\":\"अधिक फ़ीड\",\"3Siwmw\":\"अधिक विकल्प\",\"Y17r45\":\"पोस्ट विकल्प\",\"RA1KUZ\":\"खाता म्यूट करें\",\"du0opt\":\"खातों को म्यूट करें\",\"25PHAB\":\"Mute list\",\"izOxJM\":\"इन खातों को म्यूट करें?\",\"jq7SjD\":\"थ्रेड म्यूट करें\",\"s22grX\":\"म्यूट किए गए खाते\",\"qUa+lV\":\"म्यूट किए गए खाते\",\"gA0D9A\":\"म्यूट किए गए खातों की पोस्ट आपके फ़ीड और आपकी सूचनाओं से हटा दी जाती हैं। म्यूट पूरी तरह से निजी हैं.\",\"1QJzM7\":\"म्यूट करना निजी है. म्यूट किए गए खाते आपके साथ इंटरैक्ट कर सकते हैं, लेकिन आप उनकी पोस्ट नहीं देखेंगे या उनसे सूचनाएं प्राप्त नहीं करेंगे।\",\"qhwV2C\":\"My Account\",\"Mysqyf\":\"जन्मदिन\",\"6MBNS/\":\"मेरी फ़ीड\",\"hKtWk2\":\"मेरी प्रोफाइल\",\"Ha6iBv\":\"मेरी फ़ीड\",\"6YtxFj\":\"नाम\",\"8yolS6\":\"अपने फ़ॉलोअर्स और डेटा तक पहुंच कभी न खोएं।\",\"isRobC\":\"नया\",\"2B7HLH\":\"नई पोस्ट\",\"FGrimz\":\"नई पोस्ट\",\"hXzOVo\":\"अगला\",\"EatZYJ\":\"अगली फोटो\",\"1UzENP\":\"नहीं\",\"flmDTf\":\"कोई विवरण नहीं\",\"zfN9gJ\":\"No result\",\"fOlAiK\":[\"\\\"\",[\"query\"],\"\\\" के लिए कोई परिणाम नहीं मिला\"],\"kA9DpB\":[[\"0\"],\" के लिए कोई परिणाम नहीं मिला\"],\"SVF205\":[\"No results found for \",[\"query\"]],\"xpF9po\":\"Nobody\",\"ispbnl\":\"लागू नहीं\",\"iyUCYw\":\"लागू नहीं।\",\"ACqM3c\":\"Note: Bluesky is an open and public network, and enabling this will not make your profile private or limit the ability of logged in users to see your posts. This setting only limits the visibility of posts on the Bluesky app and website; third-party apps that display Bluesky content may not respect this setting, and could show your content to logged-out users.\",\"+lYa0i\":\"Note: Bluesky is an open and public network. This setting only limits the visibility of your content on the Bluesky app and website, and other apps may not respect this setting. Your content may still be shown to logged-out users by other apps and websites.\",\"OdiASL\":\"Note: Third-party apps that display Bluesky content may not respect this setting.\",\"iDNBZe\":\"सूचनाएं\",\"5GGAqz\":\"अरे नहीं!\",\"UaXeX3\":\"ठीक है\",\"Cqo2D+\":\"एक या अधिक छवियाँ alt पाठ याद आती हैं।।\",\"Kq2/SU\":[\"Only \",[\"0\"],\" can reply.\"],\"M/Q2aG\":\"ओपन नेविगेशन\",\"M5PuNq\":\"भाषा सेटिंग्स खोलें\",\"S67TOE\":\"Opens list of invite codes\",\"eSqpax\":\"कस्टम डोमेन का उपयोग करने के लिए मोडल खोलें\",\"vYwHHI\":\"मॉडरेशन सेटिंग्स खोलें\",\"0tHyB7\":\"सभी बचाया फ़ीड के साथ स्क्रीन खोलें\",\"nmRoY/\":\"ऐप पासवर्ड सेटिंग पेज खोलें\",\"6e9Apv\":\"होम फीड वरीयताओं को खोलता है\",\"O87Dr/\":\"स्टोरीबुक पेज खोलें\",\"G+PVmg\":\"सिस्टम लॉग पेज खोलें\",\"Jqb7sy\":\"धागे वरीयताओं को खोलता है\",\"b22AVl\":\"अन्य खाता\",\"n+HLOP\":\"अन्य सेवा\",\"1PKxQ7\":\"अन्य..।\",\"8F1i42\":\"पृष्ठ नहीं मिला\",\"8ZsakT\":\"पासवर्ड\",\"ogtYkT\":\"Password updated\",\"DKeVgZ\":\"पासवर्ड अद्यतन!\",\"VeZE5Q\":\"चित्र वयस्कों के लिए थे।।\",\"zgoxy5\":\"पिन किया गया फ़ीड\",\"Aw5fOC\":\"Please choose your handle.\",\"5vI4sE\":\"Please choose your password.\",\"Apyknf\":\"इसे बदलने से पहले कृपया अपने ईमेल की पुष्टि करें। यह एक अस्थायी आवश्यकता है जबकि ईमेल-अपडेटिंग टूल जोड़ा जाता है, और इसे जल्द ही हटा दिया जाएगा।।\",\"9qpQ5O\":\"कृपया इस ऐप पासवर्ड के लिए एक अद्वितीय नाम दर्ज करें या हमारे यादृच्छिक रूप से उत्पन्न एक का उपयोग करें।।\",\"hV+cYN\":\"Please enter your email.\",\"QJr5Xp\":\"कृपया अपना पासवर्ड भी दर्ज करें:\",\"d7tryi\":\"Please tell us why you think this decision was incorrect.\",\"y28hnO\":\"पोस्ट\",\"h5RcXU\":\"छुपा पोस्ट\",\"r5zLS0\":\"पोस्ट भाषा\",\"AzCucI\":\"पोस्ट भाषा\",\"tJFPmV\":\"पोस्ट नहीं मिला\",\"+owNNn\":\"Posts\",\"0+DQbr\":\"शायद एक भ्रामक लिंक\",\"MHk+7g\":\"पिछली छवि\",\"HeBcM5\":\"प्राथमिक भाषा\",\"x8iR7V\":\"अपने फ़ॉलोअर्स को प्राथमिकता दें\",\"rjGI/Q\":\"गोपनीयता\",\"LcET2C\":\"गोपनीयता नीति\",\"k1ifdL\":\"प्रसंस्करण...\",\"vERlcd\":\"प्रोफ़ाइल\",\"MrgqOW\":\"अपने ईमेल को सत्यापित करके अपने खाते को सुरक्षित रखें।।\",\"9nSV9I\":\"Public, shareable lists of users to mute or block in bulk.\",\"p1UmBX\":\"सार्वजनिक, साझा करने योग्य सूचियाँ जो फ़ीड चला सकती हैं।\",\"8HFFRQ\":\"कोटे पोस्ट\",\"+KrAHa\":\"कोटे पोस्ट\",\"WlWsdE\":\"अनुपात\",\"WEYdDv\":\"अनुशंसित\",\"QNzcT3\":\"अनुशंसित फ़ीड\",\"41UoJb\":\"अनुशंसित लोग\",\"t/YqKh\":\"निकालें\",\"p/cRzf\":[\"मेरे फ़ीड से \",[\"0\"],\" हटाएं?\"],\"1O32oy\":\"खाता हटाएं\",\"W44VX5\":\"फ़ीड हटाएँ\",\"Yy3FzB\":\"मेरे फ़ीड से हटाएँ\",\"5ywtDz\":\"छवि निकालें\",\"Dw/XUh\":\"छवि पूर्वावलोकन निकालें\",\"3fdNAy\":\"Remove this feed from my feeds?\",\"TbDEfs\":\"इस फ़ीड को सहेजे गए फ़ीड से हटा दें?\",\"Obm5+c\":\"Removed from list\",\"N8UzTV\":\"Replies\",\"oQPadq\":\"Replies to this thread are disabled\",\"Veu9gK\":\"फिल्टर\",\"lQWbAr\":[\"रिपोर्ट \",[\"collectionName\"]],\"bDHSjj\":\"रिपोर्ट\",\"NKmI9f\":\"रिपोर्ट फ़ीड\",\"6iwm2r\":\"रिपोर्ट सूची\",\"6IcSvC\":\"रिपोर्ट पोस्ट\",\"mkude1\":\"पुन: पोस्ट\",\"JOV5dR\":\"पोस्ट दोबारा पोस्ट करें या उद्धृत करे\",\"0zb9FX\":\"द्वारा दोबारा पोस्ट किया गया\",\"bqG37Z\":\"अनुरोध बदलें\",\"pJoi/P\":\"Request to limit the visibility of my account\",\"2d9VrZ\":\"पोस्ट करने से पहले वैकल्पिक टेक्स्ट की आवश्यकता है\",\"8XIT+P\":\"इस प्रदाता के लिए आवश्यक\",\"vJgYMA\":\"कोड रीसेट करें\",\"xEL92I\":\"ऑनबोर्डिंग स्टेट को रीसेट करें\",\"RfwZxd\":\"पासवर्ड रीसेट\",\"bee/Fw\":\"प्राथमिकताओं को रीसेट करें\",\"wToeoz\":\"ऑनबोर्डिंग स्टेट को रीसेट करें\",\"nIU7qI\":\"प्राथमिकताओं की स्थिति को रीसेट करें\",\"6gRgw8\":\"फिर से कोशिश करो\",\"hAbYQa\":\"हैंडल बदलना फिर से कोशिश करो\",\"tfDRzk\":\"सेव करो\",\"KV2YQQ\":\"सेव ऑल्ट टेक्स्ट\",\"y3aU20\":\"बदलाव सेव करो\",\"IUwGEM\":\"बदलाव सेव करो\",\"Xs07Tg\":\"बदलाव सेव करो\",\"BckA7m\":\"फोटो बदलाव सेव करो\",\"+K+JDj\":\"सहेजे गए फ़ीड\",\"A1taO8\":\"खोज\",\"BF8cu3\":\"Search for posts and users.\",\"CKROFy\":\"सुरक्षा चरण आवश्यक\",\"cNzyJW\":\"आगे क्या है\",\"L5sM7N\":\"Bluesky Social का चयन करें\",\"o3dwub\":\"मौजूदा खाते से चुनें\",\"GGw2AK\":\"सेवा चुनें\",\"vECNLO\":\"चुनें कि आप अपनी सदस्यता वाली फ़ीड में कौन सी भाषाएँ शामिल करना चाहते हैं। यदि कोई भी चयनित नहीं है, तो सभी भाषाएँ दिखाई जाएंगी।\",\"m5aabx\":\"ऐप में प्रदर्शित होने वाले डिफ़ॉल्ट टेक्स्ट के लिए अपनी ऐप भाषा चुनें\",\"TiiOza\":\"अपने फ़ीड में अनुवाद के लिए अपनी पसंदीदा भाषा चुनें।\",\"vp9yIB\":\"पुष्टिकरण ईमेल भेजें\",\"65dxv8\":\"ईमेल भेजें\",\"i/TzEU\":\"ईमेल भेजें\",\"RoafuO\":\"प्रतिक्रिया भेजें\",\"4cijjm\":\"रिपोर्ट भेजें\",\"V/e7nf\":\"नया पासवर्ड सेट करें\",\"gwsie4\":\"अपने फ़ीड से सभी उद्धरण पदों को छिपाने के लिए इस सेटिंग को \\\"नहीं\\\" में सेट करें। Reposts अभी भी दिखाई देगा।।\",\"IZjC3J\":\"इस सेटिंग को अपने फ़ीड से सभी उत्तरों को छिपाने के लिए \\\"नहीं\\\" पर सेट करें।।\",\"KIgU3l\":\"इस सेटिंग को अपने फ़ीड से सभी पोस्ट छिपाने के लिए \\\"नहीं\\\" करने के लिए सेट करें।।\",\"zaAyrz\":\"इस सेटिंग को \\\"हाँ\\\" में सेट करने के लिए एक थ्रेडेड व्यू में जवाब दिखाने के लिए। यह एक प्रयोगात्मक विशेषता है।।\",\"fQV2eE\":\"इस सेटिंग को अपने निम्नलिखित फ़ीड में अपने सहेजे गए फ़ीड के नमूने दिखाने के लिए \\\"हाँ\\\" पर सेट करें। यह एक प्रयोगात्मक विशेषता है।।\",\"Tz0i8g\":\"सेटिंग्स\",\"HfWHhJ\":\"यौन गतिविधि या कामुक नग्नता।।\",\"Z8lGw6\":\"शेयर\",\"P33tEA\":\"Share feed\",\"uIZ2tg\":\"लिंक शेयर करें\",\"8vETh9\":\"दिखाओ\",\"aWAdCb\":\"दिखाओ\",\"NijgXr\":\"मेरी फीड से पोस्ट दिखाएं\",\"T3Mt8m\":\"उद्धरण पोस्ट दिखाओ\",\"BlW8X/\":\"उत्तर दिखाएँ\",\"X4GwDb\":\"अन्य सभी उत्तरों से पहले उन लोगों के उत्तर दिखाएं जिन्हें आप फ़ॉलो करते हैं।\",\"GiogzH\":\"रीपोस्ट दिखाएँ\",\"fhY/fL\":\"लोग दिखाएँ\",\"5lWFkC\":\"साइन इन करें\",\"n1ekoW\":\"साइन इन करें\",\"N9o7n5\":[[\"0\"],\" के रूप में साइन इन करें\"],\"FT1MVS\":\"... के रूप में साइन इन करें\",\"+UpfFC\":\"साइन इन करें\",\"fcWrnU\":\"साइन आउट\",\"e+RpCP\":\"Sign up\",\"MiE4Vp\":\"Sign up or sign in to join the conversation\",\"zU+Ro7\":\"आपने इस रूप में साइन इन करा है:\",\"6Uau97\":\"स्किप\",\"0o5BFH\":\"उत्तर क्रमबद्ध करें\",\"GH1Rgk\":\"उसी पोस्ट के उत्तरों को इस प्रकार क्रमबद्ध करें:\",\"1DA6ap\":\"स्क्वायर\",\"aKEHLj\":\"स्टेजिंग\",\"tgEXwM\":\"स्थिति पृष्ठ\",\"P5jja7\":\"Storybook\",\"hQRttt\":\"Submit\",\"EDl9kS\":\"सब्सक्राइब\",\"5z3ICN\":\"इस सूची को सब्सक्राइब करें\",\"TVFyMD\":\"अनुशंसित लोग\",\"XYLcNv\":\"सहायता\",\"VjWeLI\":\"खाते बदलें\",\"D+NlUC\":\"प्रणाली\",\"fP8jTZ\":\"सिस्टम लॉग\",\"HF6Iah\":\"लंबा\",\"4Y5H+g\":\"शर्तें\",\"xowcRf\":\"सेवा की शर्तें\",\"p8Iz39\":\"पाठ इनपुट फ़ील्ड\",\"GlPXQJ\":\"अनब्लॉक करने के बाद अकाउंट आपसे इंटरैक्ट कर सकेगा।\",\"o4M2MP\":\"सामुदायिक दिशानिर्देशों को <0/> पर स्थानांतरित कर दिया गया है\",\"U42lKc\":\"कॉपीराइट नीति को <0/> पर स्थानांतरित कर दिया गया है\",\"G4EksE\":\"हो सकता है कि यह पोस्ट हटा दी गई हो।\",\"WNR9db\":\"गोपनीयता नीति को <0/> पर स्थानांतरित किया गया है\",\"LbEbIk\":[\"समर्थन प्रपत्र स्थानांतरित कर दिया गया है. यदि आपको सहायता की आवश्यकता है, तो कृपया<0/> या हमसे संपर्क करने के लिए \",[\"HELP_DESK_URL\"],\" पर जाएं।\"],\"FGbRSr\":\"सेवा की शर्तों को स्थानांतरित कर दिया गया है\",\"yUqcy2\":\"एप्लिकेशन में एक अप्रत्याशित समस्या थी. कृपया हमें बताएं कि क्या आपके साथ ऐसा हुआ है!\",\"jSe8k/\":[\"This \",[\"0\"],\" has been labeled.\"],\"KRYn8w\":[\"यह \",[\"screenDescription\"],\" फ्लैग किया गया है:\"],\"aBX1qv\":\"This content is not viewable without a Bluesky account.\",\"xI4xW5\":\"This feed is currently receiving high traffic and is temporarily unavailable. Please try again later.\",\"lm845B\":\"यह जानकारी अन्य उपयोगकर्ताओं के साथ साझा नहीं की जाती है।।\",\"5Pvw/O\":\"अगर आपको कभी अपना ईमेल बदलने या पासवर्ड रीसेट करने की आवश्यकता है तो यह महत्वपूर्ण है।।\",\"sQQfZ9\":\"यह वह सेवा है जो आपको ऑनलाइन रखता है।।\",\"CvX8qs\":\"यह लिंक आपको निम्नलिखित वेबसाइट पर ले जा रहा है:\",\"WKrUVy\":\"इस पोस्ट को हटा दिया गया है।।\",\"qpCA5s\":\"यह चेतावनी केवल मीडिया संलग्न पोस्ट के लिए उपलब्ध है।\",\"u9ThjD\":\"थ्रेड प्राथमिकता\",\"zmXsk5\":\"थ्रेड मोड\",\"1x30Qt\":\"ड्रॉपडाउन टॉगल करें\",\"KFXQEt\":\"परिवर्तन\",\"pi8x/S\":\"अनुवाद\",\"KDw4GX\":\"फिर से कोशिश करो\",\"RF3/jE\":\"Un-block list\",\"+/SGK9\":\"Un-mute list\",\"nc4Wfd\":\"आपकी सेवा से संपर्क करने में असमर्थ। कृपया अपने इंटरनेट कनेक्शन की जांच करें।।\",\"tuS5Jz\":\"अनब्लॉक\",\"0VrZZv\":\"अनब्लॉक खाता\",\"6pYY4t\":\"पुनः पोस्ट पूर्ववत करें\",\"05f3UA\":\"Unfortunately, you do not meet the requirements to create an account.\",\"wx9wqY\":\"अनम्यूट खाता\",\"s12/Py\":\"थ्रेड को अनम्यूट करें\",\"EvGmWj\":\"Unpin moderation list\",\"vaz2uI\":[\"सूची में \",[\"displayName\"],\" अद्यतन करें\"],\"YXMY4w\":\"उपलब्ध अद्यतन\",\"RXbEvi\":\"अद्यतन..।\",\"Vwkfp4\":\"एक पाठ फ़ाइल अपलोड करने के लिए:\",\"jTdnU6\":\"अपने खाते या पासवर्ड को पूर्ण एक्सेस देने के बिना अन्य ब्लूस्की ग्राहकों को लॉगिन करने के लिए ऐप पासवर्ड का उपयोग करें।।\",\"CH1am9\":\"डिफ़ॉल्ट प्रदाता का उपयोग करें\",\"ZG8UvP\":\"अपने हैंडल के साथ दूसरे ऐप में साइन इन करने के लिए इसका उपयोग करें।\",\"cKXwwI\":\"के द्वारा उपयोग:\",\"t4Yp4Z\":\"यूजर हैंडल\",\"8tsrUV\":\"लोग सूचियाँ\",\"nZx9mr\":\"यूजर नाम या ईमेल पता\",\"Sxm8rQ\":\"यूजर लोग\",\"Hbhyg2\":\"users followed by <0/>\",\"1Z9Mdf\":\"Users followed by <0/>\",\"9k1aoj\":[\"Users in \\\"\",[\"0\"],\"\\\"\"],\"MBOY4U\":\"ईमेल सत्यापित करें\",\"Ejyv0o\":\"मेरी ईमेल सत्यापित करें\",\"9czCrB\":\"मेरी ईमेल सत्यापित करें\",\"ibSVGR\":\"नया ईमेल सत्यापित करें\",\"nHsQde\":\"डीबग प्रविष्टि देखें\",\"47jzzd\":\"अवतार देखें\",\"wK4H1r\":\"साइट पर जाएं\",\"qjBGxf\":\"हम आपके हमारी सेवा में शामिल होने को लेकर बहुत उत्साहित हैं!\",\"1xpRAp\":\"We're sorry, but this content is not viewable without a Bluesky account.\",\"2iYPLH\":\"We're sorry, but this feed is currently receiving high traffic and is temporarily unavailable. Please try again later.\",\"WBQOQ0\":\"We're sorry, but your search could not be completed. Please try again in a few minutes.\",\"/mVVX2\":\"हम क्षमा चाहते हैं! हमें वह पेज नहीं मिल रहा जिसे आप ढूंढ रहे थे।\",\"meB+tZ\":\"<0>Bluesky0> में आपका स्वागत है\",\"Mj7rl/\":[\"इस \",[\"collectionName\"],\" के साथ क्या मुद्दा है?\"],\"3qn29J\":\"इस पोस्ट में किस भाषा का उपयोग किया जाता है?\",\"uawiGa\":\"कौन से भाषाएं आपको अपने एल्गोरिदमिक फ़ीड में देखना पसंद करती हैं?\",\"yvDWMs\":\"Who can reply\",\"GKc8LT\":\"Who can reply?\",\"I5S9ZE\":\"चौड़ा\",\"y02THm\":\"पोस्ट लिखो\",\"6ckZRB\":\"अपना जवाब दें\",\"l75CjT\":\"हाँ\",\"STPj0e\":\"आप किसी भी समय होस्टिंग प्रदाताओं को बदल सकते हैं।।\",\"67nRLM\":\"अब आप अपने नए पासवर्ड के साथ साइन इन कर सकते हैं।।\",\"lIcbCU\":\"आपके पास अभी तक कोई आमंत्रण कोड नहीं है! जब आप कुछ अधिक समय के लिए Bluesky पर रहेंगे तो हम आपको कुछ भेजेंगे।\",\"aFZZYi\":\"आपके पास कोई पिन किया हुआ फ़ीड नहीं है.\",\"kX/cKs\":\"You don't have any saved feeds!\",\"nbz3Iq\":\"आपके पास कोई सहेजी गई फ़ीड नहीं है.\",\"RkXibf\":\"आपने लेखक को अवरुद्ध किया है या आपने लेखक द्वारा अवरुद्ध किया है।।\",\"CbrOgr\":\"You have no feeds.\",\"tCLJ9E\":\"आपके पास कोई सूची नहीं है।।\",\"soH9qC\":\"आपने अभी तक कोई भी अकाउंट ब्लॉक नहीं किया है. किसी खाते को ब्लॉक करने के लिए, उनकी प्रोफ़ाइल पर जाएं और उनके खाते के मेनू से \\\"खाता ब्लॉक करें\\\" चुनें।\",\"NDgp3i\":\"आपने अभी तक कोई ऐप पासवर्ड नहीं बनाया है। आप नीचे बटन दबाकर एक बना सकते हैं।।\",\"grqdXb\":\"आपने अभी तक कोई खाता म्यूट नहीं किया है. किसी खाते को म्यूट करने के लिए, उनकी प्रोफ़ाइल पर जाएं और उनके खाते के मेनू से \\\"खाता म्यूट करें\\\" चुनें।\",\"RrDyEb\":\"आपको \\\"reset code\\\" के साथ एक ईमेल प्राप्त होगा। उस कोड को यहाँ दर्ज करें, फिर अपना नया पासवर्ड दर्ज करें।।\",\"gdRnT7\":\"आपका खाता\",\"k7hmsH\":\"जन्म तिथि\",\"tBpzKB\":\"Your email appears to be invalid.\",\"OubkcP\":\"आपका ईमेल बचाया गया है! हम जल्द ही संपर्क में रहेंगे।।\",\"z2L+/9\":\"आपका ईमेल अद्यतन किया गया है लेकिन सत्यापित नहीं किया गया है। अगले चरण के रूप में, कृपया अपना नया ईमेल सत्यापित करें।।\",\"XZlIVw\":\"आपका ईमेल अभी तक सत्यापित नहीं हुआ है। यह एक महत्वपूर्ण सुरक्षा कदम है जिसे हम अनुशंसा करते हैं।।\",\"qv9f4I\":\"आपका पूरा हैंडल होगा\",\"lvcqqG\":\"आपका होस्टिंग प्रदाता\",\"fbFyAZ\":\"Your invite codes are hidden when logged in using an App Password\",\"Oqt/PG\":\"आपकी पोस्ट, पसंद और ब्लॉक सार्वजनिक हैं। म्यूट निजी हैं।।\",\"okRPtW\":\"आपकी प्रोफ़ाइल\",\"rsWkoR\":\"Your profile and account will not be visible to anyone visiting the Bluesky app without an account, or to account holders who are not logged in. Enabling this will not make your profile private.\",\"jjscPy\":\"Your profile and content will not be visible to anyone visiting the Bluesky app without an account. Enabling this will not make your profile private.\",\"ogY7EU\":\"Your profile and posts will not be visible to people visiting the Bluesky app or website without having an account and being logged in.\",\"MvWO9d\":\"आपका यूजर हैंडल\"}")};
\ No newline at end of file
diff --git a/src/locale/locales/hi/messages.po b/src/locale/locales/hi/messages.po
index 9aabca57f1..793175dea6 100644
--- a/src/locale/locales/hi/messages.po
+++ b/src/locale/locales/hi/messages.po
@@ -21,7 +21,7 @@ msgstr ""
#~ msgid ". This warning is only available for posts with media attached."
#~ msgstr "यह चेतावनी केवल मीडिया वाले पोस्ट के लिए उपलब्ध है।"
-#: src/view/shell/desktop/RightNav.tsx:160
+#: src/view/shell/desktop/RightNav.tsx:168
msgid "{0, plural, one {# invite code available} other {# invite codes available}}"
msgstr ""
@@ -33,21 +33,21 @@ msgstr "{0}"
msgid "{0} {purposeLabel} List"
msgstr "{0} {purposeLabel} सूची"
-#: src/view/shell/desktop/RightNav.tsx:143
+#: src/view/shell/desktop/RightNav.tsx:151
msgid "{invitesAvailable, plural, one {Invite codes: # available} other {Invite codes: # available}}"
msgstr ""
#: src/view/screens/Settings.tsx:407
-#: src/view/shell/Drawer.tsx:640
+#: src/view/shell/Drawer.tsx:659
msgid "{invitesAvailable} invite code available"
msgstr ""
#: src/view/screens/Settings.tsx:409
-#: src/view/shell/Drawer.tsx:642
+#: src/view/shell/Drawer.tsx:661
msgid "{invitesAvailable} invite codes available"
msgstr ""
-#: src/view/screens/Search/Search.tsx:88
+#: src/view/screens/Search/Search.tsx:87
msgid "{message}"
msgstr ""
@@ -88,7 +88,7 @@ msgstr "ऐप का एक नया संस्करण उपलब्ध
msgid "Accessibility"
msgstr "प्रवेर्शयोग्यता"
-#: src/view/com/auth/login/LoginForm.tsx:159
+#: src/view/com/auth/login/LoginForm.tsx:163
#: src/view/screens/Settings.tsx:286
msgid "Account"
msgstr "अकाउंट"
@@ -99,7 +99,7 @@ msgstr "अकाउंट के विकल्प"
#: src/view/com/modals/ListAddRemoveUsers.tsx:264
#: src/view/com/modals/UserAddRemoveLists.tsx:193
-#: src/view/screens/ProfileList.tsx:754
+#: src/view/screens/ProfileList.tsx:763
msgid "Add"
msgstr "ऐड करो"
@@ -107,7 +107,7 @@ msgstr "ऐड करो"
msgid "Add a content warning"
msgstr "सामग्री चेतावनी जोड़ें"
-#: src/view/screens/ProfileList.tsx:744
+#: src/view/screens/ProfileList.tsx:753
msgid "Add a user to this list"
msgstr "इस सूची में किसी को जोड़ें"
@@ -118,6 +118,7 @@ msgstr "अकाउंट जोड़ें"
#: src/view/com/composer/photos/Gallery.tsx:119
#: src/view/com/composer/photos/Gallery.tsx:180
+#: src/view/com/modals/AltImage.tsx:93
msgid "Add alt text"
msgstr "इस फ़ोटो में विवरण जोड़ें"
@@ -130,11 +131,11 @@ msgstr "विवरण जोड़ें"
msgid "Add details to report"
msgstr "रिपोर्ट करने के लिए विवरण जोड़ें"
-#: src/view/com/composer/Composer.tsx:438
+#: src/view/com/composer/Composer.tsx:447
msgid "Add link card"
msgstr "लिंक कार्ड जोड़ें"
-#: src/view/com/composer/Composer.tsx:441
+#: src/view/com/composer/Composer.tsx:450
msgid "Add link card:"
msgstr "लिंक कार्ड जोड़ें:"
@@ -146,7 +147,7 @@ msgstr "अपने डोमेन में निम्नलिखित DN
msgid "Add to Lists"
msgstr "सूचियों में जोड़ें"
-#: src/view/screens/ProfileFeed.tsx:270
+#: src/view/screens/ProfileFeed.tsx:271
msgid "Add to my feeds"
msgstr "इस फ़ीड को सहेजें"
@@ -155,7 +156,7 @@ msgstr "इस फ़ीड को सहेजें"
msgid "Added to list"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:164
+#: src/view/screens/PreferencesHomeFeed.tsx:170
msgid "Adjust the number of likes a reply must have to be shown in your feed."
msgstr "पसंद की संख्या को समायोजित करें उत्तर को आपके फ़ीड में दिखाया जाना चाहिए।।"
@@ -163,7 +164,7 @@ msgstr "पसंद की संख्या को समायोजित
msgid "Adult Content"
msgstr "वयस्क सामग्री"
-#: src/view/screens/Settings.tsx:569
+#: src/view/screens/Settings.tsx:602
msgid "Advanced"
msgstr "विकसित"
@@ -187,7 +188,7 @@ msgstr "{0} को ईमेल भेजा गया है। इसमें
msgid "An email has been sent to your previous address, {0}. It includes a confirmation code which you can enter below."
msgstr "{0} को ईमेल भेजा गया है। इसमें एक OTP कोड शामिल है जिसे आप नीचे दर्ज कर सकते हैं।।"
-#: src/view/com/notifications/FeedItem.tsx:236
+#: src/view/com/notifications/FeedItem.tsx:237
#: src/view/com/threadgate/WhoCanReply.tsx:178
msgid "and"
msgstr "और"
@@ -196,7 +197,7 @@ msgstr "और"
msgid "App Language"
msgstr "ऐप भाषा"
-#: src/view/screens/Settings.tsx:589
+#: src/view/screens/Settings.tsx:622
msgid "App passwords"
msgstr "ऐप पासवर्ड"
@@ -204,7 +205,7 @@ msgstr "ऐप पासवर्ड"
msgid "App Passwords"
msgstr "ऐप पासवर्ड"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:207
+#: src/view/com/util/forms/PostDropdownBtn.tsx:236
msgid "Appeal content warning"
msgstr ""
@@ -236,15 +237,15 @@ msgstr "दिखावट"
msgid "Are you sure you want to delete the app password \"{name}\"?"
msgstr "क्या आप वाकई ऐप पासवर्ड \"{name}\" हटाना चाहते हैं?"
-#: src/view/com/composer/Composer.tsx:142
+#: src/view/com/composer/Composer.tsx:143
msgid "Are you sure you'd like to discard this draft?"
msgstr "क्या आप वाकई इस ड्राफ्ट को हटाना करना चाहेंगे?"
-#: src/view/screens/ProfileList.tsx:352
+#: src/view/screens/ProfileList.tsx:353
msgid "Are you sure?"
msgstr "क्या आप वास्तव में इसे करना चाहते हैं?"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:190
+#: src/view/com/util/forms/PostDropdownBtn.tsx:219
msgid "Are you sure? This cannot be undone."
msgstr "क्या आप वास्तव में इसे करना चाहते हैं? इसे असंपादित नहीं किया जा सकता है।"
@@ -259,12 +260,12 @@ msgstr "कलात्मक या गैर-कामुक नग्नत
#: src/view/com/auth/create/CreateAccount.tsx:141
#: src/view/com/auth/login/ChooseAccountForm.tsx:151
#: src/view/com/auth/login/ForgotPasswordForm.tsx:166
-#: src/view/com/auth/login/LoginForm.tsx:249
+#: src/view/com/auth/login/LoginForm.tsx:254
#: src/view/com/auth/login/SetNewPasswordForm.tsx:148
-#: src/view/com/modals/report/InputIssueDetails.tsx:45
-#: src/view/com/post-thread/PostThread.tsx:395
-#: src/view/com/post-thread/PostThread.tsx:445
-#: src/view/com/post-thread/PostThread.tsx:453
+#: src/view/com/modals/report/InputIssueDetails.tsx:46
+#: src/view/com/post-thread/PostThread.tsx:388
+#: src/view/com/post-thread/PostThread.tsx:438
+#: src/view/com/post-thread/PostThread.tsx:446
#: src/view/com/profile/ProfileHeader.tsx:672
msgid "Back"
msgstr "वापस"
@@ -273,8 +274,8 @@ msgstr "वापस"
msgid "Basics"
msgstr "मूल बातें"
-#: src/view/com/auth/create/Step2.tsx:131
-#: src/view/com/modals/BirthDateSettings.tsx:72
+#: src/view/com/auth/create/Step2.tsx:156
+#: src/view/com/modals/BirthDateSettings.tsx:73
msgid "Birthday"
msgstr "जन्मदिन"
@@ -287,15 +288,15 @@ msgstr "जन्मदिन:"
msgid "Block Account"
msgstr "खाता ब्लॉक करें"
-#: src/view/screens/ProfileList.tsx:522
+#: src/view/screens/ProfileList.tsx:523
msgid "Block accounts"
msgstr "खाता ब्लॉक करें"
-#: src/view/screens/ProfileList.tsx:472
+#: src/view/screens/ProfileList.tsx:473
msgid "Block list"
msgstr ""
-#: src/view/screens/ProfileList.tsx:307
+#: src/view/screens/ProfileList.tsx:308
msgid "Block these accounts?"
msgstr "खाता ब्लॉक करें?"
@@ -303,7 +304,7 @@ msgstr "खाता ब्लॉक करें?"
msgid "Blocked accounts"
msgstr "ब्लॉक किए गए खाते"
-#: src/view/screens/ModerationBlockedAccounts.tsx:106
+#: src/view/screens/ModerationBlockedAccounts.tsx:107
msgid "Blocked Accounts"
msgstr "ब्लॉक किए गए खाते"
@@ -311,15 +312,15 @@ msgstr "ब्लॉक किए गए खाते"
msgid "Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you."
msgstr "अवरुद्ध खाते आपके थ्रेड्स में उत्तर नहीं दे सकते, आपका उल्लेख नहीं कर सकते, या अन्यथा आपके साथ बातचीत नहीं कर सकते।"
-#: src/view/screens/ModerationBlockedAccounts.tsx:114
+#: src/view/screens/ModerationBlockedAccounts.tsx:115
msgid "Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you. You will not see their content and they will be prevented from seeing yours."
msgstr "अवरुद्ध खाते आपके थ्रेड्स में उत्तर नहीं दे सकते, आपका उल्लेख नहीं कर सकते, या अन्यथा आपके साथ बातचीत नहीं कर सकते। आप उनकी सामग्री नहीं देख पाएंगे और उन्हें आपकी सामग्री देखने से रोका जाएगा।"
-#: src/view/com/post-thread/PostThread.tsx:251
+#: src/view/com/post-thread/PostThread.tsx:250
msgid "Blocked post."
msgstr "ब्लॉक पोस्ट।"
-#: src/view/screens/ProfileList.tsx:309
+#: src/view/screens/ProfileList.tsx:310
msgid "Blocking is public. Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you."
msgstr "अवरोधन सार्वजनिक है. अवरुद्ध खाते आपके थ्रेड्स में उत्तर नहीं दे सकते, आपका उल्लेख नहीं कर सकते, या अन्यथा आपके साथ बातचीत नहीं कर सकते।"
@@ -355,7 +356,7 @@ msgstr ""
msgid "Bluesky.Social"
msgstr "Bluesky.Social"
-#: src/view/screens/Settings.tsx:718
+#: src/view/screens/Settings.tsx:751
msgid "Build version {0} {1}"
msgstr "Build version {0} {1}"
@@ -373,9 +374,8 @@ msgstr "कैमरा"
msgid "Can only contain letters, numbers, spaces, dashes, and underscores. Must be at least 4 characters long, but no more than 32 characters long."
msgstr "केवल अक्षर, संख्या, रिक्त स्थान, डैश और अंडरस्कोर हो सकते हैं। कम से कम 4 अक्षर लंबा होना चाहिए, लेकिन 32 अक्षरों से अधिक लंबा नहीं होना चाहिए।।"
-#: src/view/com/composer/Composer.tsx:285
-#: src/view/com/composer/Composer.tsx:288
-#: src/view/com/modals/AltImage.tsx:128
+#: src/view/com/composer/Composer.tsx:294
+#: src/view/com/composer/Composer.tsx:297
#: src/view/com/modals/ChangeEmail.tsx:218
#: src/view/com/modals/ChangeEmail.tsx:220
#: src/view/com/modals/Confirm.tsx:88
@@ -388,7 +388,7 @@ msgstr "केवल अक्षर, संख्या, रिक्त स्
#: src/view/com/modals/LinkWarning.tsx:85
#: src/view/com/modals/Repost.tsx:73
#: src/view/com/modals/Waitlist.tsx:136
-#: src/view/screens/Search/Search.tsx:592
+#: src/view/screens/Search/Search.tsx:601
#: src/view/shell/desktop/Search.tsx:182
msgid "Cancel"
msgstr "कैंसिल"
@@ -399,8 +399,8 @@ msgid "Cancel account deletion"
msgstr "अकाउंट बंद मत करो"
#: src/view/com/modals/AltImage.tsx:123
-msgid "Cancel add image alt text"
-msgstr "ऑल्ट टेक्स्ट मत जोड़ें"
+#~ msgid "Cancel add image alt text"
+#~ msgstr "ऑल्ट टेक्स्ट मत जोड़ें"
#: src/view/com/modals/ChangeHandle.tsx:149
msgid "Cancel change handle"
@@ -431,8 +431,8 @@ msgstr "प्रतीक्षा सूची पंजीकरण मत
msgid "Change"
msgstr "परिवर्तन"
-#: src/view/screens/Settings.tsx:601
-#: src/view/screens/Settings.tsx:610
+#: src/view/screens/Settings.tsx:634
+#: src/view/screens/Settings.tsx:643
msgid "Change handle"
msgstr "हैंडल बदलें"
@@ -460,6 +460,10 @@ msgstr "कुछ अनुशंसित उपयोगकर्ताओं
msgid "Check your inbox for an email with the confirmation code to enter below:"
msgstr "नीचे प्रवेश करने के लिए OTP कोड के साथ एक ईमेल के लिए अपने इनबॉक्स की जाँच करें:"
+#: src/view/com/modals/Threadgate.tsx:72
+msgid "Choose \"Everybody\" or \"Nobody\""
+msgstr ""
+
#: src/view/com/modals/ServerInput.tsx:38
msgid "Choose Service"
msgstr "सेवा चुनें"
@@ -468,28 +472,28 @@ msgstr "सेवा चुनें"
msgid "Choose the algorithms that power your experience with custom feeds."
msgstr "उन एल्गोरिदम का चयन करें जो कस्टम फीड्स के साथ अपने अनुभव को शक्ति देते हैं।।"
-#: src/view/com/auth/create/Step2.tsx:106
+#: src/view/com/auth/create/Step2.tsx:127
msgid "Choose your password"
msgstr "अपना पासवर्ड चुनें"
-#: src/view/screens/Settings.tsx:694
+#: src/view/screens/Settings.tsx:727
msgid "Clear all legacy storage data"
msgstr ""
-#: src/view/screens/Settings.tsx:696
+#: src/view/screens/Settings.tsx:729
msgid "Clear all legacy storage data (restart after this)"
msgstr ""
-#: src/view/screens/Settings.tsx:706
+#: src/view/screens/Settings.tsx:739
msgid "Clear all storage data"
msgstr ""
-#: src/view/screens/Settings.tsx:708
+#: src/view/screens/Settings.tsx:741
msgid "Clear all storage data (restart after this)"
msgstr ""
-#: src/view/com/util/forms/SearchInput.tsx:73
-#: src/view/screens/Search/Search.tsx:577
+#: src/view/com/util/forms/SearchInput.tsx:74
+#: src/view/screens/Search/Search.tsx:582
msgid "Clear search query"
msgstr "खोज क्वेरी साफ़ करें"
@@ -525,8 +529,8 @@ msgstr "जवाब लिखो"
#: src/view/com/modals/Confirm.tsx:75
#: src/view/com/modals/SelfLabel.tsx:154
#: src/view/com/modals/VerifyEmail.tsx:225
-#: src/view/screens/PreferencesHomeFeed.tsx:299
-#: src/view/screens/PreferencesThreads.tsx:153
+#: src/view/screens/PreferencesHomeFeed.tsx:305
+#: src/view/screens/PreferencesThreads.tsx:159
msgid "Confirm"
msgstr "हो गया"
@@ -550,7 +554,7 @@ msgid "Confirmation code"
msgstr "OTP कोड"
#: src/view/com/auth/create/CreateAccount.tsx:174
-#: src/view/com/auth/login/LoginForm.tsx:268
+#: src/view/com/auth/login/LoginForm.tsx:273
msgid "Connecting..."
msgstr "कनेक्टिंग ..।"
@@ -589,11 +593,11 @@ msgstr "कॉपी कर ली"
msgid "Copy"
msgstr "कॉपी"
-#: src/view/screens/ProfileList.tsx:384
+#: src/view/screens/ProfileList.tsx:385
msgid "Copy link to list"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:131
+#: src/view/com/util/forms/PostDropdownBtn.tsx:139
msgid "Copy link to post"
msgstr ""
@@ -601,7 +605,7 @@ msgstr ""
msgid "Copy link to profile"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:117
+#: src/view/com/util/forms/PostDropdownBtn.tsx:125
msgid "Copy post text"
msgstr "पोस्ट टेक्स्ट कॉपी करें"
@@ -609,11 +613,11 @@ msgstr "पोस्ट टेक्स्ट कॉपी करें"
msgid "Copyright Policy"
msgstr "कॉपीराइट नीति"
-#: src/view/screens/ProfileFeed.tsx:94
+#: src/view/screens/ProfileFeed.tsx:95
msgid "Could not load feed"
msgstr "फ़ीड लोड नहीं कर सकता"
-#: src/view/screens/ProfileList.tsx:830
+#: src/view/screens/ProfileList.tsx:839
msgid "Could not load list"
msgstr "सूची लोड नहीं कर सकता"
@@ -622,7 +626,7 @@ msgstr "सूची लोड नहीं कर सकता"
msgid "Create a new account"
msgstr "नया खाता बनाएं"
-#: src/view/com/auth/create/CreateAccount.tsx:120
+#: src/view/com/auth/create/CreateAccount.tsx:121
msgid "Create Account"
msgstr "खाता बनाएँ"
@@ -640,7 +644,11 @@ msgstr "बनाया गया {0}"
msgid "Custom domain"
msgstr "कस्टम डोमेन"
-#: src/view/screens/Settings.tsx:615
+#: src/view/screens/PreferencesExternalEmbeds.tsx:55
+msgid "Customize media from external sites."
+msgstr ""
+
+#: src/view/screens/Settings.tsx:648
msgid "Danger Zone"
msgstr "खतरा क्षेत्र"
@@ -648,7 +656,7 @@ msgstr "खतरा क्षेत्र"
#~ msgid "Dark"
#~ msgstr "डार्क मोड"
-#: src/view/screens/Settings.tsx:622
+#: src/view/screens/Settings.tsx:655
msgid "Delete account"
msgstr "खाता हटाएं"
@@ -661,8 +669,8 @@ msgstr "खाता हटाएं"
msgid "Delete app password"
msgstr "अप्प पासवर्ड हटाएं"
-#: src/view/screens/ProfileList.tsx:351
-#: src/view/screens/ProfileList.tsx:411
+#: src/view/screens/ProfileList.tsx:352
+#: src/view/screens/ProfileList.tsx:412
msgid "Delete List"
msgstr "सूची हटाएँ"
@@ -670,19 +678,19 @@ msgstr "सूची हटाएँ"
msgid "Delete my account"
msgstr "मेरा खाता हटाएं"
-#: src/view/screens/Settings.tsx:632
+#: src/view/screens/Settings.tsx:665
msgid "Delete my account…"
msgstr "मेरा खाता हटाएं…"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:185
+#: src/view/com/util/forms/PostDropdownBtn.tsx:214
msgid "Delete post"
msgstr "पोस्ट को हटाएं"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:189
+#: src/view/com/util/forms/PostDropdownBtn.tsx:218
msgid "Delete this post?"
msgstr "इस पोस्ट को डीलीट करें?"
-#: src/view/com/post-thread/PostThread.tsx:243
+#: src/view/com/post-thread/PostThread.tsx:242
msgid "Deleted post."
msgstr "यह पोस्ट मिटाई जा चुकी है"
@@ -697,15 +705,19 @@ msgstr "विवरण"
msgid "Dev Server"
msgstr "देव सर्वर"
-#: src/view/screens/Settings.tsx:637
+#: src/view/screens/Settings.tsx:670
msgid "Developer Tools"
msgstr "डेवलपर उपकरण"
-#: src/view/com/composer/Composer.tsx:143
+#: src/view/com/composer/Composer.tsx:211
+msgid "Did you want to say anything?"
+msgstr ""
+
+#: src/view/com/composer/Composer.tsx:144
msgid "Discard"
msgstr ""
-#: src/view/com/composer/Composer.tsx:137
+#: src/view/com/composer/Composer.tsx:138
msgid "Discard draft"
msgstr "ड्राफ्ट हटाएं"
@@ -730,6 +742,7 @@ msgid "Domain verified!"
msgstr "डोमेन सत्यापित!"
#: src/view/com/auth/onboarding/RecommendedFollows.tsx:86
+#: src/view/com/modals/AltImage.tsx:115
#: src/view/com/modals/ContentFilteringSettings.tsx:88
#: src/view/com/modals/ContentFilteringSettings.tsx:96
#: src/view/com/modals/crop-image/CropImage.web.tsx:152
@@ -739,8 +752,8 @@ msgstr "डोमेन सत्यापित!"
#: src/view/com/modals/Threadgate.tsx:129
#: src/view/com/modals/Threadgate.tsx:132
#: src/view/com/modals/UserAddRemoveLists.tsx:79
-#: src/view/screens/PreferencesHomeFeed.tsx:302
-#: src/view/screens/PreferencesThreads.tsx:156
+#: src/view/screens/PreferencesHomeFeed.tsx:308
+#: src/view/screens/PreferencesThreads.tsx:162
msgid "Done"
msgstr "खत्म"
@@ -757,7 +770,7 @@ msgstr "प्रत्येक कोड एक बार काम करत
msgid "Edit image"
msgstr "छवि संपादित करें"
-#: src/view/screens/ProfileList.tsx:399
+#: src/view/screens/ProfileList.tsx:400
msgid "Edit list details"
msgstr "सूची विवरण संपादित करें"
@@ -782,14 +795,14 @@ msgstr "मेरी प्रोफ़ाइल संपादित करे
msgid "Edit Saved Feeds"
msgstr "एडिट सेव्ड फीड"
-#: src/view/com/auth/create/Step2.tsx:90
+#: src/view/com/auth/create/Step2.tsx:108
#: src/view/com/auth/login/ForgotPasswordForm.tsx:148
#: src/view/com/modals/ChangeEmail.tsx:141
#: src/view/com/modals/Waitlist.tsx:88
msgid "Email"
msgstr "ईमेल"
-#: src/view/com/auth/create/Step2.tsx:81
+#: src/view/com/auth/create/Step2.tsx:99
msgid "Email address"
msgstr "ईमेल"
@@ -801,7 +814,15 @@ msgstr "ईमेल अपडेट किया गया"
msgid "Email:"
msgstr "ईमेल:"
-#: src/view/screens/PreferencesHomeFeed.tsx:138
+#: src/view/com/modals/EmbedConsent.tsx:113
+msgid "Enable {0} only"
+msgstr ""
+
+#: src/view/com/modals/EmbedConsent.tsx:97
+msgid "Enable External Media"
+msgstr ""
+
+#: src/view/screens/PreferencesHomeFeed.tsx:144
msgid "Enable this setting to only see replies between people you follow."
msgstr "इस सेटिंग को केवल उन लोगों के बीच जवाब देखने में सक्षम करें जिन्हें आप फॉलो करते हैं।।"
@@ -821,7 +842,7 @@ msgstr "आप जिस डोमेन का उपयोग करना च
msgid "Enter the email you used to create your account. We'll send you a \"reset code\" so you can set a new password."
msgstr "वह ईमेल दर्ज करें जिसका उपयोग आपने अपना खाता बनाने के लिए किया था। हम आपको एक \"reset code\" भेजेंगे ताकि आप एक नया पासवर्ड सेट कर सकें।"
-#: src/view/com/auth/create/Step2.tsx:86
+#: src/view/com/auth/create/Step2.tsx:104
msgid "Enter your email address"
msgstr "अपना ईमेल पता दर्ज करें"
@@ -833,7 +854,7 @@ msgstr "नीचे अपना नया ईमेल पता दर्ज
msgid "Enter your username and password"
msgstr "अपने यूज़रनेम और पासवर्ड दर्ज करें"
-#: src/view/screens/Search/Search.tsx:106
+#: src/view/screens/Search/Search.tsx:105
msgid "Error:"
msgstr ""
@@ -845,12 +866,26 @@ msgstr ""
msgid "Expand alt text"
msgstr "ऑल्ट टेक्स्ट"
+#: src/view/com/modals/EmbedConsent.tsx:64
+msgid "External Media"
+msgstr ""
+
+#: src/view/com/modals/EmbedConsent.tsx:75
+#: src/view/screens/PreferencesExternalEmbeds.tsx:66
+msgid "External media may allow websites to collect information about you and your device. No information is sent or requested until you press the \"play\" button."
+msgstr ""
+
+#: src/view/screens/PreferencesExternalEmbeds.tsx:52
+#: src/view/screens/Settings.tsx:595
+msgid "External Media Preferences"
+msgstr ""
+
#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:109
#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:141
msgid "Failed to load recommended feeds"
msgstr "अनुशंसित फ़ीड लोड करने में विफल"
-#: src/view/screens/Feeds.tsx:560
+#: src/view/screens/Feeds.tsx:556
msgid "Feed offline"
msgstr "फ़ीड ऑफ़लाइन है"
@@ -858,17 +893,17 @@ msgstr "फ़ीड ऑफ़लाइन है"
msgid "Feed Preferences"
msgstr "फ़ीड प्राथमिकता"
-#: src/view/shell/desktop/RightNav.tsx:65
-#: src/view/shell/Drawer.tsx:292
+#: src/view/shell/desktop/RightNav.tsx:73
+#: src/view/shell/Drawer.tsx:311
msgid "Feedback"
msgstr "प्रतिक्रिया"
#: src/view/screens/Feeds.tsx:475
#: src/view/screens/Profile.tsx:165
#: src/view/shell/bottom-bar/BottomBar.tsx:181
-#: src/view/shell/desktop/LeftNav.tsx:340
-#: src/view/shell/Drawer.tsx:455
-#: src/view/shell/Drawer.tsx:456
+#: src/view/shell/desktop/LeftNav.tsx:342
+#: src/view/shell/Drawer.tsx:474
+#: src/view/shell/Drawer.tsx:475
msgid "Feeds"
msgstr "सभी फ़ीड"
@@ -880,11 +915,11 @@ msgstr "सामग्री को व्यवस्थित करने
msgid "Feeds are custom algorithms that users build with a little coding expertise. <0/> for more information."
msgstr "फ़ीड कस्टम एल्गोरिदम हैं जिन्हें उपयोगकर्ता थोड़ी कोडिंग विशेषज्ञता के साथ बनाते हैं। <0/> अधिक जानकारी के लिए."
-#: src/view/screens/Search/Search.tsx:422
+#: src/view/screens/Search/Search.tsx:427
msgid "Find users on Bluesky"
msgstr ""
-#: src/view/screens/Search/Search.tsx:420
+#: src/view/screens/Search/Search.tsx:425
msgid "Find users with the search tool on the right"
msgstr ""
@@ -892,7 +927,7 @@ msgstr ""
msgid "Finding similar accounts..."
msgstr "मिलते-जुलते खाते ढूँढना"
-#: src/view/screens/PreferencesHomeFeed.tsx:102
+#: src/view/screens/PreferencesHomeFeed.tsx:108
msgid "Fine-tune the content you see on your home screen."
msgstr "अपने मुख्य फ़ीड की स्क्रीन पर दिखाई देने वाली सामग्री को ठीक करें।।"
@@ -912,7 +947,7 @@ msgstr "आरंभ करने के लिए कुछ उपयोगक
msgid "Followed users"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:145
+#: src/view/screens/PreferencesHomeFeed.tsx:151
msgid "Followed users only"
msgstr "केवल वे यूजर को फ़ॉलो किया गया"
@@ -941,11 +976,11 @@ msgstr "सुरक्षा कारणों के लिए, हमें
msgid "For security reasons, you won't be able to view this again. If you lose this password, you'll need to generate a new one."
msgstr "सुरक्षा कारणों के लिए, आप इसे फिर से देखने में सक्षम नहीं होंगे। यदि आप इस पासवर्ड को खो देते हैं, तो आपको एक नया उत्पन्न करना होगा।।"
-#: src/view/com/auth/login/LoginForm.tsx:231
+#: src/view/com/auth/login/LoginForm.tsx:236
msgid "Forgot"
msgstr "भूल"
-#: src/view/com/auth/login/LoginForm.tsx:228
+#: src/view/com/auth/login/LoginForm.tsx:233
msgid "Forgot password"
msgstr "पासवर्ड भूल गए"
@@ -969,15 +1004,15 @@ msgstr "प्रारंभ करें"
msgid "Go back"
msgstr "वापस जाओ"
-#: src/view/screens/ProfileFeed.tsx:103
-#: src/view/screens/ProfileFeed.tsx:108
-#: src/view/screens/ProfileList.tsx:839
-#: src/view/screens/ProfileList.tsx:844
+#: src/view/screens/ProfileFeed.tsx:104
+#: src/view/screens/ProfileFeed.tsx:109
+#: src/view/screens/ProfileList.tsx:848
+#: src/view/screens/ProfileList.tsx:853
msgid "Go Back"
msgstr "वापस जाओ"
#: src/view/com/auth/login/ForgotPasswordForm.tsx:181
-#: src/view/com/auth/login/LoginForm.tsx:278
+#: src/view/com/auth/login/LoginForm.tsx:283
#: src/view/com/auth/login/SetNewPasswordForm.tsx:163
msgid "Go to next"
msgstr "अगला"
@@ -986,8 +1021,8 @@ msgstr "अगला"
msgid "Handle"
msgstr "हैंडल"
-#: src/view/shell/desktop/RightNav.tsx:94
-#: src/view/shell/Drawer.tsx:302
+#: src/view/shell/desktop/RightNav.tsx:102
+#: src/view/shell/Drawer.tsx:321
msgid "Help"
msgstr "सहायता"
@@ -995,12 +1030,20 @@ msgstr "सहायता"
msgid "Here is your app password."
msgstr "यहां आपका ऐप पासवर्ड है."
-#: src/view/com/notifications/FeedItem.tsx:316
+#: src/view/com/notifications/FeedItem.tsx:324
#: src/view/com/util/moderation/ContentHider.tsx:103
msgid "Hide"
msgstr "इसे छिपाएं"
-#: src/view/com/notifications/FeedItem.tsx:308
+#: src/view/com/util/forms/PostDropdownBtn.tsx:173
+msgid "Hide post"
+msgstr ""
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:177
+msgid "Hide this post?"
+msgstr ""
+
+#: src/view/com/notifications/FeedItem.tsx:316
msgid "Hide user list"
msgstr "उपयोगकर्ता सूची छुपाएँ"
@@ -1033,14 +1076,14 @@ msgstr ""
#~ msgstr ""
#: src/view/shell/bottom-bar/BottomBar.tsx:137
-#: src/view/shell/desktop/LeftNav.tsx:304
-#: src/view/shell/Drawer.tsx:379
-#: src/view/shell/Drawer.tsx:380
+#: src/view/shell/desktop/LeftNav.tsx:306
+#: src/view/shell/Drawer.tsx:398
+#: src/view/shell/Drawer.tsx:399
msgid "Home"
msgstr "होम फीड"
#: src/view/com/pager/FeedsTabBarMobile.tsx:96
-#: src/view/screens/PreferencesHomeFeed.tsx:95
+#: src/view/screens/PreferencesHomeFeed.tsx:101
#: src/view/screens/Settings.tsx:481
msgid "Home Feed Preferences"
msgstr "होम फ़ीड प्राथमिकताएं"
@@ -1080,7 +1123,7 @@ msgstr "छवि विकल्प"
#~ msgid "In Your Network"
#~ msgstr "आपके नेटवर्क में"
-#: src/view/com/auth/login/LoginForm.tsx:113
+#: src/view/com/auth/login/LoginForm.tsx:115
msgid "Invalid username or password"
msgstr "अवैध उपयोगकर्ता नाम या पासवर्ड"
@@ -1093,7 +1136,7 @@ msgstr "आमंत्रण भेजो"
msgid "Invite a Friend"
msgstr "एक दोस्त को आमंत्रित करें"
-#: src/view/com/auth/create/Step2.tsx:57
+#: src/view/com/auth/create/Step2.tsx:72
msgid "Invite code"
msgstr "आमंत्रण कोड"
@@ -1101,7 +1144,7 @@ msgstr "आमंत्रण कोड"
msgid "Invite code not accepted. Check that you input it correctly and try again."
msgstr ""
-#: src/view/shell/Drawer.tsx:621
+#: src/view/shell/Drawer.tsx:640
msgid "Invite codes: {invitesAvailable} available"
msgstr ""
@@ -1113,8 +1156,8 @@ msgstr ""
msgid "Join the waitlist"
msgstr "प्रतीक्षा सूची में शामिल हों"
-#: src/view/com/auth/create/Step2.tsx:68
-#: src/view/com/auth/create/Step2.tsx:72
+#: src/view/com/auth/create/Step2.tsx:86
+#: src/view/com/auth/create/Step2.tsx:90
msgid "Join the waitlist."
msgstr "प्रतीक्षा सूची में शामिल हों।।"
@@ -1178,7 +1221,7 @@ msgstr "चित्र पुस्तकालय"
#~ msgid "Light"
#~ msgstr "लाइट मोड"
-#: src/view/screens/ProfileFeed.tsx:577
+#: src/view/screens/ProfileFeed.tsx:586
msgid "Like this feed"
msgstr "इस फ़ीड को लाइक करो"
@@ -1208,18 +1251,18 @@ msgid "List Name"
msgstr "सूची का नाम"
#: src/view/screens/Profile.tsx:166
-#: src/view/shell/desktop/LeftNav.tsx:377
-#: src/view/shell/Drawer.tsx:471
-#: src/view/shell/Drawer.tsx:472
+#: src/view/shell/desktop/LeftNav.tsx:379
+#: src/view/shell/Drawer.tsx:490
+#: src/view/shell/Drawer.tsx:491
msgid "Lists"
msgstr "सूची"
-#: src/view/com/post-thread/PostThread.tsx:260
-#: src/view/com/post-thread/PostThread.tsx:268
+#: src/view/com/post-thread/PostThread.tsx:259
+#: src/view/com/post-thread/PostThread.tsx:267
msgid "Load more posts"
msgstr "अधिक पोस्ट लोड करें"
-#: src/view/screens/Notifications.tsx:144
+#: src/view/screens/Notifications.tsx:148
msgid "Load new notifications"
msgstr "नई सूचनाएं लोड करें"
@@ -1277,9 +1320,9 @@ msgstr ""
#: src/view/screens/Moderation.tsx:64
#: src/view/screens/Settings.tsx:563
-#: src/view/shell/desktop/LeftNav.tsx:395
-#: src/view/shell/Drawer.tsx:490
-#: src/view/shell/Drawer.tsx:491
+#: src/view/shell/desktop/LeftNav.tsx:397
+#: src/view/shell/Drawer.tsx:509
+#: src/view/shell/Drawer.tsx:510
msgid "Moderation"
msgstr "मॉडरेशन"
@@ -1296,8 +1339,8 @@ msgid "More feeds"
msgstr "अधिक फ़ीड"
#: src/view/com/profile/ProfileHeader.tsx:548
-#: src/view/screens/ProfileFeed.tsx:360
-#: src/view/screens/ProfileList.tsx:583
+#: src/view/screens/ProfileFeed.tsx:361
+#: src/view/screens/ProfileList.tsx:584
msgid "More options"
msgstr "अधिक विकल्प"
@@ -1305,23 +1348,27 @@ msgstr "अधिक विकल्प"
#~ msgid "More post options"
#~ msgstr "पोस्ट विकल्प"
+#: src/view/screens/PreferencesThreads.tsx:82
+msgid "Most-liked replies first"
+msgstr ""
+
#: src/view/com/profile/ProfileHeader.tsx:370
msgid "Mute Account"
msgstr "खाता म्यूट करें"
-#: src/view/screens/ProfileList.tsx:510
+#: src/view/screens/ProfileList.tsx:511
msgid "Mute accounts"
msgstr "खातों को म्यूट करें"
-#: src/view/screens/ProfileList.tsx:457
+#: src/view/screens/ProfileList.tsx:458
msgid "Mute list"
msgstr ""
-#: src/view/screens/ProfileList.tsx:270
+#: src/view/screens/ProfileList.tsx:271
msgid "Mute these accounts?"
msgstr "इन खातों को म्यूट करें?"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:149
+#: src/view/com/util/forms/PostDropdownBtn.tsx:157
msgid "Mute thread"
msgstr "थ्रेड म्यूट करें"
@@ -1329,15 +1376,15 @@ msgstr "थ्रेड म्यूट करें"
msgid "Muted accounts"
msgstr "म्यूट किए गए खाते"
-#: src/view/screens/ModerationMutedAccounts.tsx:106
+#: src/view/screens/ModerationMutedAccounts.tsx:107
msgid "Muted Accounts"
msgstr "म्यूट किए गए खाते"
-#: src/view/screens/ModerationMutedAccounts.tsx:114
+#: src/view/screens/ModerationMutedAccounts.tsx:115
msgid "Muted accounts have their posts removed from your feed and from your notifications. Mutes are completely private."
msgstr "म्यूट किए गए खातों की पोस्ट आपके फ़ीड और आपकी सूचनाओं से हटा दी जाती हैं। म्यूट पूरी तरह से निजी हैं."
-#: src/view/screens/ProfileList.tsx:272
+#: src/view/screens/ProfileList.tsx:273
msgid "Muting is private. Muted accounts can interact with you, but you will not see their posts or receive notifications from them."
msgstr "म्यूट करना निजी है. म्यूट किए गए खाते आपके साथ इंटरैक्ट कर सकते हैं, लेकिन आप उनकी पोस्ट नहीं देखेंगे या उनसे सूचनाएं प्राप्त नहीं करेंगे।"
@@ -1366,6 +1413,11 @@ msgstr "मेरी फ़ीड"
msgid "Name"
msgstr "नाम"
+#: src/view/com/modals/EmbedConsent.tsx:107
+#: src/view/com/modals/EmbedConsent.tsx:123
+msgid "Never load embeds from {0}"
+msgstr ""
+
#: src/view/com/auth/onboarding/WelcomeMobile.tsx:72
msgid "Never lose access to your followers and data."
msgstr "अपने फ़ॉलोअर्स और डेटा तक पहुंच कभी न खोएं।"
@@ -1376,23 +1428,27 @@ msgid "New"
msgstr "नया"
#: src/view/com/feeds/FeedPage.tsx:200
-#: src/view/screens/Feeds.tsx:511
+#: src/view/screens/Feeds.tsx:507
#: src/view/screens/Profile.tsx:354
-#: src/view/screens/ProfileFeed.tsx:430
-#: src/view/screens/ProfileList.tsx:193
-#: src/view/screens/ProfileList.tsx:221
-#: src/view/shell/desktop/LeftNav.tsx:247
+#: src/view/screens/ProfileFeed.tsx:431
+#: src/view/screens/ProfileList.tsx:194
+#: src/view/screens/ProfileList.tsx:222
+#: src/view/shell/desktop/LeftNav.tsx:248
msgid "New post"
msgstr "नई पोस्ट"
-#: src/view/shell/desktop/LeftNav.tsx:257
+#: src/view/shell/desktop/LeftNav.tsx:258
msgid "New Post"
msgstr "नई पोस्ट"
+#: src/view/screens/PreferencesThreads.tsx:79
+msgid "Newest replies first"
+msgstr ""
+
#: src/view/com/auth/create/CreateAccount.tsx:154
#: src/view/com/auth/login/ForgotPasswordForm.tsx:174
#: src/view/com/auth/login/ForgotPasswordForm.tsx:184
-#: src/view/com/auth/login/LoginForm.tsx:281
+#: src/view/com/auth/login/LoginForm.tsx:286
#: src/view/com/auth/login/SetNewPasswordForm.tsx:156
#: src/view/com/auth/login/SetNewPasswordForm.tsx:166
#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:79
@@ -1403,14 +1459,17 @@ msgstr "अगला"
msgid "Next image"
msgstr "अगली फोटो"
-#: src/view/screens/PreferencesHomeFeed.tsx:191
-#: src/view/screens/PreferencesHomeFeed.tsx:226
-#: src/view/screens/PreferencesHomeFeed.tsx:263
+#: src/view/screens/PreferencesHomeFeed.tsx:126
+#: src/view/screens/PreferencesHomeFeed.tsx:197
+#: src/view/screens/PreferencesHomeFeed.tsx:232
+#: src/view/screens/PreferencesHomeFeed.tsx:269
+#: src/view/screens/PreferencesThreads.tsx:106
+#: src/view/screens/PreferencesThreads.tsx:129
msgid "No"
msgstr "नहीं"
-#: src/view/screens/ProfileFeed.tsx:570
-#: src/view/screens/ProfileList.tsx:711
+#: src/view/screens/ProfileFeed.tsx:579
+#: src/view/screens/ProfileList.tsx:720
msgid "No description"
msgstr "कोई विवरण नहीं"
@@ -1428,13 +1487,17 @@ msgstr "\"{query}\" के लिए कोई परिणाम नहीं
#~ msgstr "{0} के लिए कोई परिणाम नहीं मिला"
#: src/view/com/modals/ListAddRemoveUsers.tsx:127
-#: src/view/screens/Search/Search.tsx:271
-#: src/view/screens/Search/Search.tsx:299
-#: src/view/screens/Search/Search.tsx:615
+#: src/view/screens/Search/Search.tsx:270
+#: src/view/screens/Search/Search.tsx:298
+#: src/view/screens/Search/Search.tsx:629
#: src/view/shell/desktop/Search.tsx:210
msgid "No results found for {query}"
msgstr ""
+#: src/view/com/modals/EmbedConsent.tsx:129
+msgid "No thanks"
+msgstr ""
+
#: src/view/com/modals/Threadgate.tsx:82
msgid "Nobody"
msgstr ""
@@ -1459,12 +1522,12 @@ msgstr ""
#~ msgid "Note: Third-party apps that display Bluesky content may not respect this setting."
#~ msgstr ""
-#: src/view/screens/Notifications.tsx:109
-#: src/view/screens/Notifications.tsx:133
+#: src/view/screens/Notifications.tsx:113
+#: src/view/screens/Notifications.tsx:137
#: src/view/shell/bottom-bar/BottomBar.tsx:205
-#: src/view/shell/desktop/LeftNav.tsx:359
-#: src/view/shell/Drawer.tsx:416
-#: src/view/shell/Drawer.tsx:417
+#: src/view/shell/desktop/LeftNav.tsx:361
+#: src/view/shell/Drawer.tsx:435
+#: src/view/shell/Drawer.tsx:436
msgid "Notifications"
msgstr "सूचनाएं"
@@ -1476,7 +1539,11 @@ msgstr "अरे नहीं!"
msgid "Okay"
msgstr "ठीक है"
-#: src/view/com/composer/Composer.tsx:354
+#: src/view/screens/PreferencesThreads.tsx:78
+msgid "Oldest replies first"
+msgstr ""
+
+#: src/view/com/composer/Composer.tsx:363
msgid "One or more images is missing alt text."
msgstr "एक या अधिक छवियाँ alt पाठ याद आती हैं।।"
@@ -1484,6 +1551,11 @@ msgstr "एक या अधिक छवियाँ alt पाठ याद
msgid "Only {0} can reply."
msgstr ""
+#: src/view/com/composer/Composer.tsx:468
+#: src/view/com/composer/Composer.tsx:469
+msgid "Open emoji picker"
+msgstr ""
+
#: src/view/com/pager/FeedsTabBarMobile.tsx:76
msgid "Open navigation"
msgstr "ओपन नेविगेशन"
@@ -1492,8 +1564,12 @@ msgstr "ओपन नेविगेशन"
msgid "Opens configurable language settings"
msgstr "भाषा सेटिंग्स खोलें"
-#: src/view/shell/desktop/RightNav.tsx:148
-#: src/view/shell/Drawer.tsx:622
+#: src/view/screens/Settings.tsx:587
+msgid "Opens external embeds settings"
+msgstr ""
+
+#: src/view/shell/desktop/RightNav.tsx:156
+#: src/view/shell/Drawer.tsx:641
msgid "Opens list of invite codes"
msgstr ""
@@ -1509,7 +1585,7 @@ msgstr "मॉडरेशन सेटिंग्स खोलें"
msgid "Opens screen with all saved feeds"
msgstr "सभी बचाया फ़ीड के साथ स्क्रीन खोलें"
-#: src/view/screens/Settings.tsx:581
+#: src/view/screens/Settings.tsx:614
msgid "Opens the app password settings page"
msgstr "ऐप पासवर्ड सेटिंग पेज खोलें"
@@ -1517,11 +1593,11 @@ msgstr "ऐप पासवर्ड सेटिंग पेज खोले
msgid "Opens the home feed preferences"
msgstr "होम फीड वरीयताओं को खोलता है"
-#: src/view/screens/Settings.tsx:664
+#: src/view/screens/Settings.tsx:697
msgid "Opens the storybook page"
msgstr "स्टोरीबुक पेज खोलें"
-#: src/view/screens/Settings.tsx:644
+#: src/view/screens/Settings.tsx:677
msgid "Opens the system log page"
msgstr "सिस्टम लॉग पेज खोलें"
@@ -1529,6 +1605,10 @@ msgstr "सिस्टम लॉग पेज खोलें"
msgid "Opens the threads preferences"
msgstr "धागे वरीयताओं को खोलता है"
+#: src/view/com/modals/Threadgate.tsx:89
+msgid "Or combine these options:"
+msgstr ""
+
#: src/view/com/auth/login/ChooseAccountForm.tsx:138
msgid "Other account"
msgstr "अन्य खाता"
@@ -1546,9 +1626,9 @@ msgstr "अन्य..।"
msgid "Page not found"
msgstr "पृष्ठ नहीं मिला"
-#: src/view/com/auth/create/Step2.tsx:101
-#: src/view/com/auth/create/Step2.tsx:111
-#: src/view/com/auth/login/LoginForm.tsx:216
+#: src/view/com/auth/create/Step2.tsx:122
+#: src/view/com/auth/create/Step2.tsx:132
+#: src/view/com/auth/login/LoginForm.tsx:221
#: src/view/com/auth/login/SetNewPasswordForm.tsx:130
#: src/view/com/modals/DeleteAccount.tsx:191
msgid "Password"
@@ -1570,6 +1650,19 @@ msgstr "चित्र वयस्कों के लिए थे।।"
msgid "Pinned Feeds"
msgstr "पिन किया गया फ़ीड"
+#: src/view/com/util/post-embeds/ExternalGifEmbed.tsx:111
+msgid "Play {0}"
+msgstr ""
+
+#: src/view/com/util/post-embeds/ExternalPlayerEmbed.tsx:54
+#: src/view/com/util/post-embeds/ExternalPlayerEmbed.tsx:55
+msgid "Play Video"
+msgstr ""
+
+#: src/view/com/util/post-embeds/ExternalGifEmbed.tsx:110
+msgid "Plays the GIF"
+msgstr ""
+
#: src/view/com/auth/create/state.ts:116
msgid "Please choose your handle."
msgstr ""
@@ -1604,13 +1697,17 @@ msgstr ""
#~ msgid "Please tell us why you think this decision was incorrect."
#~ msgstr ""
-#: src/view/com/composer/Composer.tsx:337
-#: src/view/com/post-thread/PostThread.tsx:226
+#: src/view/com/composer/Composer.tsx:215
+msgid "Please wait for your link card to finish loading"
+msgstr ""
+
+#: src/view/com/composer/Composer.tsx:346
+#: src/view/com/post-thread/PostThread.tsx:225
#: src/view/screens/PostThread.tsx:80
msgid "Post"
msgstr "पोस्ट"
-#: src/view/com/post-thread/PostThread.tsx:385
+#: src/view/com/post-thread/PostThread.tsx:378
msgid "Post hidden"
msgstr "छुपा पोस्ट"
@@ -1622,7 +1719,7 @@ msgstr "पोस्ट भाषा"
msgid "Post Languages"
msgstr "पोस्ट भाषा"
-#: src/view/com/post-thread/PostThread.tsx:437
+#: src/view/com/post-thread/PostThread.tsx:430
msgid "Post not found"
msgstr "पोस्ट नहीं मिला"
@@ -1642,15 +1739,18 @@ msgstr "पिछली छवि"
msgid "Primary Language"
msgstr "प्राथमिक भाषा"
-#: src/view/screens/PreferencesThreads.tsx:91
+#: src/view/screens/PreferencesThreads.tsx:97
msgid "Prioritize Your Follows"
msgstr "अपने फ़ॉलोअर्स को प्राथमिकता दें"
-#: src/view/shell/desktop/RightNav.tsx:76
+#: src/view/screens/Settings.tsx:570
+#: src/view/shell/desktop/RightNav.tsx:84
msgid "Privacy"
msgstr "गोपनीयता"
#: src/view/screens/PrivacyPolicy.tsx:29
+#: src/view/screens/Settings.tsx:783
+#: src/view/shell/Drawer.tsx:262
msgid "Privacy Policy"
msgstr "गोपनीयता नीति"
@@ -1659,14 +1759,14 @@ msgid "Processing..."
msgstr "प्रसंस्करण..."
#: src/view/shell/bottom-bar/BottomBar.tsx:247
-#: src/view/shell/desktop/LeftNav.tsx:413
-#: src/view/shell/Drawer.tsx:69
-#: src/view/shell/Drawer.tsx:525
-#: src/view/shell/Drawer.tsx:526
+#: src/view/shell/desktop/LeftNav.tsx:415
+#: src/view/shell/Drawer.tsx:70
+#: src/view/shell/Drawer.tsx:544
+#: src/view/shell/Drawer.tsx:545
msgid "Profile"
msgstr "प्रोफ़ाइल"
-#: src/view/screens/Settings.tsx:789
+#: src/view/screens/Settings.tsx:841
msgid "Protect your account by verifying your email."
msgstr "अपने ईमेल को सत्यापित करके अपने खाते को सुरक्षित रखें।।"
@@ -1687,6 +1787,10 @@ msgstr "कोटे पोस्ट"
msgid "Quote Post"
msgstr "कोटे पोस्ट"
+#: src/view/screens/PreferencesThreads.tsx:86
+msgid "Random (aka \"Poster's Roulette\")"
+msgstr ""
+
#: src/view/com/modals/EditImage.tsx:236
msgid "Ratios"
msgstr "अनुपात"
@@ -1726,7 +1830,7 @@ msgstr "फ़ीड हटाएँ"
#: src/view/com/feeds/FeedSourceCard.tsx:105
#: src/view/com/feeds/FeedSourceCard.tsx:172
-#: src/view/screens/ProfileFeed.tsx:270
+#: src/view/screens/ProfileFeed.tsx:271
msgid "Remove from my feeds"
msgstr "मेरे फ़ीड से हटाएँ"
@@ -1759,7 +1863,7 @@ msgstr ""
msgid "Replies to this thread are disabled"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:135
+#: src/view/screens/PreferencesHomeFeed.tsx:141
msgid "Reply Filters"
msgstr "फिल्टर"
@@ -1771,16 +1875,16 @@ msgstr "रिपोर्ट {collectionName}"
msgid "Report Account"
msgstr "रिपोर्ट"
-#: src/view/screens/ProfileFeed.tsx:290
+#: src/view/screens/ProfileFeed.tsx:291
msgid "Report feed"
msgstr "रिपोर्ट फ़ीड"
-#: src/view/screens/ProfileList.tsx:425
+#: src/view/screens/ProfileList.tsx:426
msgid "Report List"
msgstr "रिपोर्ट सूची"
#: src/view/com/modals/report/SendReportButton.tsx:37
-#: src/view/com/util/forms/PostDropdownBtn.tsx:167
+#: src/view/com/util/forms/PostDropdownBtn.tsx:196
msgid "Report post"
msgstr "रिपोर्ट पोस्ट"
@@ -1806,11 +1910,11 @@ msgstr "अनुरोध बदलें"
#~ msgid "Request to limit the visibility of my account"
#~ msgstr ""
-#: src/view/screens/Settings.tsx:382
-#~ msgid "Require alt text before posting"
-#~ msgstr "पोस्ट करने से पहले वैकल्पिक टेक्स्ट की आवश्यकता है"
+#: src/view/screens/Settings.tsx:422
+msgid "Require alt text before posting"
+msgstr "पोस्ट करने से पहले वैकल्पिक टेक्स्ट की आवश्यकता है"
-#: src/view/com/auth/create/Step2.tsx:53
+#: src/view/com/auth/create/Step2.tsx:68
msgid "Required for this provider"
msgstr "इस प्रदाता के लिए आवश्यक"
@@ -1818,7 +1922,7 @@ msgstr "इस प्रदाता के लिए आवश्यक"
msgid "Reset code"
msgstr "कोड रीसेट करें"
-#: src/view/screens/Settings.tsx:686
+#: src/view/screens/Settings.tsx:719
msgid "Reset onboarding state"
msgstr "ऑनबोर्डिंग स्टेट को रीसेट करें"
@@ -1826,22 +1930,22 @@ msgstr "ऑनबोर्डिंग स्टेट को रीसेट
msgid "Reset password"
msgstr "पासवर्ड रीसेट"
-#: src/view/screens/Settings.tsx:676
+#: src/view/screens/Settings.tsx:709
msgid "Reset preferences state"
msgstr "प्राथमिकताओं को रीसेट करें"
-#: src/view/screens/Settings.tsx:684
+#: src/view/screens/Settings.tsx:717
msgid "Resets the onboarding state"
msgstr "ऑनबोर्डिंग स्टेट को रीसेट करें"
-#: src/view/screens/Settings.tsx:674
+#: src/view/screens/Settings.tsx:707
msgid "Resets the preferences state"
msgstr "प्राथमिकताओं की स्थिति को रीसेट करें"
#: src/view/com/auth/create/CreateAccount.tsx:163
#: src/view/com/auth/create/CreateAccount.tsx:167
-#: src/view/com/auth/login/LoginForm.tsx:258
-#: src/view/com/auth/login/LoginForm.tsx:261
+#: src/view/com/auth/login/LoginForm.tsx:263
+#: src/view/com/auth/login/LoginForm.tsx:266
#: src/view/com/util/error/ErrorMessage.tsx:55
#: src/view/com/util/error/ErrorScreen.tsx:65
msgid "Retry"
@@ -1851,9 +1955,8 @@ msgstr "फिर से कोशिश करो"
#~ msgid "Retry change handle"
#~ msgstr "हैंडल बदलना फिर से कोशिश करो"
-#: src/view/com/modals/AltImage.tsx:115
-#: src/view/com/modals/BirthDateSettings.tsx:93
-#: src/view/com/modals/BirthDateSettings.tsx:96
+#: src/view/com/modals/BirthDateSettings.tsx:94
+#: src/view/com/modals/BirthDateSettings.tsx:97
#: src/view/com/modals/ChangeHandle.tsx:173
#: src/view/com/modals/CreateOrEditList.tsx:249
#: src/view/com/modals/CreateOrEditList.tsx:257
@@ -1886,15 +1989,15 @@ msgid "Saved Feeds"
msgstr "सहेजे गए फ़ीड"
#: src/view/com/modals/ListAddRemoveUsers.tsx:75
-#: src/view/com/util/forms/SearchInput.tsx:64
-#: src/view/screens/Search/Search.tsx:401
-#: src/view/screens/Search/Search.tsx:567
+#: src/view/com/util/forms/SearchInput.tsx:65
+#: src/view/screens/Search/Search.tsx:406
+#: src/view/screens/Search/Search.tsx:572
#: src/view/shell/bottom-bar/BottomBar.tsx:159
-#: src/view/shell/desktop/LeftNav.tsx:322
+#: src/view/shell/desktop/LeftNav.tsx:324
#: src/view/shell/desktop/Search.tsx:161
#: src/view/shell/desktop/Search.tsx:170
-#: src/view/shell/Drawer.tsx:343
-#: src/view/shell/Drawer.tsx:344
+#: src/view/shell/Drawer.tsx:362
+#: src/view/shell/Drawer.tsx:363
msgid "Search"
msgstr "खोज"
@@ -1923,7 +2026,7 @@ msgstr "Bluesky Social का चयन करें"
msgid "Select from an existing account"
msgstr "मौजूदा खाते से चुनें"
-#: src/view/com/auth/login/LoginForm.tsx:143
+#: src/view/com/auth/login/LoginForm.tsx:147
msgid "Select service"
msgstr "सेवा चुनें"
@@ -1951,8 +2054,8 @@ msgstr "ईमेल भेजें"
msgid "Send Email"
msgstr "ईमेल भेजें"
-#: src/view/shell/Drawer.tsx:276
-#: src/view/shell/Drawer.tsx:297
+#: src/view/shell/Drawer.tsx:295
+#: src/view/shell/Drawer.tsx:316
msgid "Send feedback"
msgstr "प्रतिक्रिया भेजें"
@@ -1964,30 +2067,30 @@ msgstr "रिपोर्ट भेजें"
msgid "Set new password"
msgstr "नया पासवर्ड सेट करें"
-#: src/view/screens/PreferencesHomeFeed.tsx:216
+#: src/view/screens/PreferencesHomeFeed.tsx:222
msgid "Set this setting to \"No\" to hide all quote posts from your feed. Reposts will still be visible."
msgstr "अपने फ़ीड से सभी उद्धरण पदों को छिपाने के लिए इस सेटिंग को \"नहीं\" में सेट करें। Reposts अभी भी दिखाई देगा।।"
-#: src/view/screens/PreferencesHomeFeed.tsx:113
+#: src/view/screens/PreferencesHomeFeed.tsx:119
msgid "Set this setting to \"No\" to hide all replies from your feed."
msgstr "इस सेटिंग को अपने फ़ीड से सभी उत्तरों को छिपाने के लिए \"नहीं\" पर सेट करें।।"
-#: src/view/screens/PreferencesHomeFeed.tsx:182
+#: src/view/screens/PreferencesHomeFeed.tsx:188
msgid "Set this setting to \"No\" to hide all reposts from your feed."
msgstr "इस सेटिंग को अपने फ़ीड से सभी पोस्ट छिपाने के लिए \"नहीं\" करने के लिए सेट करें।।"
-#: src/view/screens/PreferencesThreads.tsx:116
+#: src/view/screens/PreferencesThreads.tsx:122
msgid "Set this setting to \"Yes\" to show replies in a threaded view. This is an experimental feature."
msgstr "इस सेटिंग को \"हाँ\" में सेट करने के लिए एक थ्रेडेड व्यू में जवाब दिखाने के लिए। यह एक प्रयोगात्मक विशेषता है।।"
-#: src/view/screens/PreferencesHomeFeed.tsx:252
+#: src/view/screens/PreferencesHomeFeed.tsx:258
msgid "Set this setting to \"Yes\" to show samples of your saved feeds in your following feed. This is an experimental feature."
msgstr "इस सेटिंग को अपने निम्नलिखित फ़ीड में अपने सहेजे गए फ़ीड के नमूने दिखाने के लिए \"हाँ\" पर सेट करें। यह एक प्रयोगात्मक विशेषता है।।"
#: src/view/screens/Settings.tsx:277
-#: src/view/shell/desktop/LeftNav.tsx:431
-#: src/view/shell/Drawer.tsx:546
-#: src/view/shell/Drawer.tsx:547
+#: src/view/shell/desktop/LeftNav.tsx:433
+#: src/view/shell/Drawer.tsx:565
+#: src/view/shell/Drawer.tsx:566
msgid "Settings"
msgstr "सेटिंग्स"
@@ -1996,12 +2099,12 @@ msgid "Sexual activity or erotic nudity."
msgstr "यौन गतिविधि या कामुक नग्नता।।"
#: src/view/com/profile/ProfileHeader.tsx:338
-#: src/view/com/util/forms/PostDropdownBtn.tsx:131
-#: src/view/screens/ProfileList.tsx:384
+#: src/view/com/util/forms/PostDropdownBtn.tsx:139
+#: src/view/screens/ProfileList.tsx:385
msgid "Share"
msgstr "शेयर"
-#: src/view/screens/ProfileFeed.tsx:302
+#: src/view/screens/ProfileFeed.tsx:303
msgid "Share feed"
msgstr ""
@@ -2018,27 +2121,31 @@ msgstr "दिखाओ"
msgid "Show anyway"
msgstr "दिखाओ"
-#: src/view/screens/PreferencesHomeFeed.tsx:249
+#: src/view/com/modals/EmbedConsent.tsx:87
+msgid "Show embeds from {0}"
+msgstr ""
+
+#: src/view/screens/PreferencesHomeFeed.tsx:255
msgid "Show Posts from My Feeds"
msgstr "मेरी फीड से पोस्ट दिखाएं"
-#: src/view/screens/PreferencesHomeFeed.tsx:213
+#: src/view/screens/PreferencesHomeFeed.tsx:219
msgid "Show Quote Posts"
msgstr "उद्धरण पोस्ट दिखाओ"
-#: src/view/screens/PreferencesHomeFeed.tsx:110
+#: src/view/screens/PreferencesHomeFeed.tsx:116
msgid "Show Replies"
msgstr "उत्तर दिखाएँ"
-#: src/view/screens/PreferencesThreads.tsx:94
+#: src/view/screens/PreferencesThreads.tsx:100
msgid "Show replies by people you follow before all other replies."
msgstr "अन्य सभी उत्तरों से पहले उन लोगों के उत्तर दिखाएं जिन्हें आप फ़ॉलो करते हैं।"
-#: src/view/screens/PreferencesHomeFeed.tsx:179
+#: src/view/screens/PreferencesHomeFeed.tsx:185
msgid "Show Reposts"
msgstr "रीपोस्ट दिखाएँ"
-#: src/view/com/notifications/FeedItem.tsx:337
+#: src/view/com/notifications/FeedItem.tsx:345
msgid "Show users"
msgstr "लोग दिखाएँ"
@@ -2071,7 +2178,7 @@ msgstr "{0} के रूप में साइन इन करें"
msgid "Sign in as..."
msgstr "... के रूप में साइन इन करें"
-#: src/view/com/auth/login/LoginForm.tsx:130
+#: src/view/com/auth/login/LoginForm.tsx:134
msgid "Sign into"
msgstr "साइन इन करें"
@@ -2125,11 +2232,11 @@ msgstr "स्क्वायर"
msgid "Staging"
msgstr "स्टेजिंग"
-#: src/view/screens/Settings.tsx:730
+#: src/view/screens/Settings.tsx:763
msgid "Status page"
msgstr "स्थिति पृष्ठ"
-#: src/view/screens/Settings.tsx:666
+#: src/view/screens/Settings.tsx:699
msgid "Storybook"
msgstr "Storybook"
@@ -2137,15 +2244,15 @@ msgstr "Storybook"
msgid "Submit"
msgstr ""
-#: src/view/screens/ProfileList.tsx:574
+#: src/view/screens/ProfileList.tsx:575
msgid "Subscribe"
msgstr "सब्सक्राइब"
-#: src/view/screens/ProfileList.tsx:570
+#: src/view/screens/ProfileList.tsx:571
msgid "Subscribe to this list"
msgstr "इस सूची को सब्सक्राइब करें"
-#: src/view/screens/Search/Search.tsx:357
+#: src/view/screens/Search/Search.tsx:362
msgid "Suggested Follows"
msgstr "अनुशंसित लोग"
@@ -2162,7 +2269,7 @@ msgstr "खाते बदलें"
#~ msgid "System"
#~ msgstr "प्रणाली"
-#: src/view/screens/Settings.tsx:646
+#: src/view/screens/Settings.tsx:679
msgid "System log"
msgstr "सिस्टम लॉग"
@@ -2170,16 +2277,18 @@ msgstr "सिस्टम लॉग"
msgid "Tall"
msgstr "लंबा"
-#: src/view/shell/desktop/RightNav.tsx:85
+#: src/view/shell/desktop/RightNav.tsx:93
msgid "Terms"
msgstr "शर्तें"
+#: src/view/screens/Settings.tsx:777
#: src/view/screens/TermsOfService.tsx:29
+#: src/view/shell/Drawer.tsx:256
msgid "Terms of Service"
msgstr "सेवा की शर्तें"
#: src/view/com/modals/AppealLabel.tsx:70
-#: src/view/com/modals/report/InputIssueDetails.tsx:50
+#: src/view/com/modals/report/InputIssueDetails.tsx:51
msgid "Text input field"
msgstr "पाठ इनपुट फ़ील्ड"
@@ -2195,7 +2304,7 @@ msgstr "सामुदायिक दिशानिर्देशों क
msgid "The Copyright Policy has been moved to <0/>"
msgstr "कॉपीराइट नीति को <0/> पर स्थानांतरित कर दिया गया है"
-#: src/view/com/post-thread/PostThread.tsx:440
+#: src/view/com/post-thread/PostThread.tsx:433
msgid "The post may have been deleted."
msgstr "हो सकता है कि यह पोस्ट हटा दी गई हो।"
@@ -2227,6 +2336,10 @@ msgstr "यह {screenDescription} फ्लैग किया गया है
msgid "This account has requested that users sign in to view their profile."
msgstr ""
+#: src/view/com/modals/EmbedConsent.tsx:68
+msgid "This content is hosted by {0}. Do you want to enable external media?"
+msgstr ""
+
#: src/view/com/posts/FeedErrorMessage.tsx:107
msgid "This content is not viewable without a Bluesky account."
msgstr ""
@@ -2259,12 +2372,16 @@ msgstr "इस पोस्ट को हटा दिया गया है।
msgid "This warning is only available for posts with media attached."
msgstr "यह चेतावनी केवल मीडिया संलग्न पोस्ट के लिए उपलब्ध है।"
+#: src/view/com/util/forms/PostDropdownBtn.tsx:178
+msgid "This will hide this post from your feeds."
+msgstr ""
+
#: src/view/screens/PreferencesThreads.tsx:53
#: src/view/screens/Settings.tsx:503
msgid "Thread Preferences"
msgstr "थ्रेड प्राथमिकता"
-#: src/view/screens/PreferencesThreads.tsx:113
+#: src/view/screens/PreferencesThreads.tsx:119
msgid "Threaded Mode"
msgstr "थ्रेड मोड"
@@ -2276,9 +2393,9 @@ msgstr "ड्रॉपडाउन टॉगल करें"
msgid "Transformations"
msgstr "परिवर्तन"
-#: src/view/com/post-thread/PostThreadItem.tsx:704
-#: src/view/com/post-thread/PostThreadItem.tsx:706
-#: src/view/com/util/forms/PostDropdownBtn.tsx:103
+#: src/view/com/post-thread/PostThreadItem.tsx:705
+#: src/view/com/post-thread/PostThreadItem.tsx:707
+#: src/view/com/util/forms/PostDropdownBtn.tsx:111
msgid "Translate"
msgstr "अनुवाद"
@@ -2286,17 +2403,17 @@ msgstr "अनुवाद"
msgid "Try again"
msgstr "फिर से कोशिश करो"
-#: src/view/screens/ProfileList.tsx:472
+#: src/view/screens/ProfileList.tsx:473
msgid "Un-block list"
msgstr ""
-#: src/view/screens/ProfileList.tsx:457
+#: src/view/screens/ProfileList.tsx:458
msgid "Un-mute list"
msgstr ""
-#: src/view/com/auth/create/CreateAccount.tsx:64
+#: src/view/com/auth/create/CreateAccount.tsx:65
#: src/view/com/auth/login/Login.tsx:76
-#: src/view/com/auth/login/LoginForm.tsx:117
+#: src/view/com/auth/login/LoginForm.tsx:120
msgid "Unable to contact your service. Please check your Internet connection."
msgstr "आपकी सेवा से संपर्क करने में असमर्थ। कृपया अपने इंटरनेट कनेक्शन की जांच करें।।"
@@ -2314,7 +2431,7 @@ msgstr "अनब्लॉक खाता"
msgid "Undo repost"
msgstr "पुनः पोस्ट पूर्ववत करें"
-#: src/view/com/auth/create/state.ts:210
+#: src/view/com/auth/create/state.ts:216
msgid "Unfortunately, you do not meet the requirements to create an account."
msgstr ""
@@ -2322,11 +2439,11 @@ msgstr ""
msgid "Unmute Account"
msgstr "अनम्यूट खाता"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:149
+#: src/view/com/util/forms/PostDropdownBtn.tsx:157
msgid "Unmute thread"
msgstr "थ्रेड को अनम्यूट करें"
-#: src/view/screens/ProfileList.tsx:440
+#: src/view/screens/ProfileList.tsx:441
msgid "Unpin moderation list"
msgstr ""
@@ -2370,12 +2487,12 @@ msgstr "यूजर हैंडल"
msgid "User Lists"
msgstr "लोग सूचियाँ"
-#: src/view/com/auth/login/LoginForm.tsx:170
-#: src/view/com/auth/login/LoginForm.tsx:187
+#: src/view/com/auth/login/LoginForm.tsx:174
+#: src/view/com/auth/login/LoginForm.tsx:192
msgid "Username or email address"
msgstr "यूजर नाम या ईमेल पता"
-#: src/view/screens/ProfileList.tsx:738
+#: src/view/screens/ProfileList.tsx:747
msgid "Users"
msgstr "यूजर लोग"
@@ -2391,15 +2508,15 @@ msgstr ""
msgid "Users in \"{0}\""
msgstr ""
-#: src/view/screens/Settings.tsx:750
+#: src/view/screens/Settings.tsx:802
msgid "Verify email"
msgstr "ईमेल सत्यापित करें"
-#: src/view/screens/Settings.tsx:775
+#: src/view/screens/Settings.tsx:827
msgid "Verify my email"
msgstr "मेरी ईमेल सत्यापित करें"
-#: src/view/screens/Settings.tsx:784
+#: src/view/screens/Settings.tsx:836
msgid "Verify My Email"
msgstr "मेरी ईमेल सत्यापित करें"
@@ -2420,7 +2537,7 @@ msgstr "अवतार देखें"
msgid "Visit Site"
msgstr "साइट पर जाएं"
-#: src/view/com/auth/create/CreateAccount.tsx:121
+#: src/view/com/auth/create/CreateAccount.tsx:122
msgid "We're so excited to have you join us!"
msgstr "हम आपके हमारी सेवा में शामिल होने को लेकर बहुत उत्साहित हैं!"
@@ -2432,7 +2549,7 @@ msgstr "हम आपके हमारी सेवा में शामि
#~ msgid "We're sorry, but this feed is currently receiving high traffic and is temporarily unavailable. Please try again later."
#~ msgstr ""
-#: src/view/screens/Search/Search.tsx:238
+#: src/view/screens/Search/Search.tsx:243
msgid "We're sorry, but your search could not be completed. Please try again in a few minutes."
msgstr ""
@@ -2473,7 +2590,7 @@ msgstr ""
msgid "Wide"
msgstr "चौड़ा"
-#: src/view/com/composer/Composer.tsx:409
+#: src/view/com/composer/Composer.tsx:418
msgid "Write post"
msgstr "पोस्ट लिखो"
@@ -2481,9 +2598,12 @@ msgstr "पोस्ट लिखो"
msgid "Write your reply"
msgstr "अपना जवाब दें"
-#: src/view/screens/PreferencesHomeFeed.tsx:192
-#: src/view/screens/PreferencesHomeFeed.tsx:227
-#: src/view/screens/PreferencesHomeFeed.tsx:262
+#: src/view/screens/PreferencesHomeFeed.tsx:126
+#: src/view/screens/PreferencesHomeFeed.tsx:198
+#: src/view/screens/PreferencesHomeFeed.tsx:233
+#: src/view/screens/PreferencesHomeFeed.tsx:268
+#: src/view/screens/PreferencesThreads.tsx:106
+#: src/view/screens/PreferencesThreads.tsx:129
msgid "Yes"
msgstr "हाँ"
@@ -2512,20 +2632,20 @@ msgstr ""
msgid "You don't have any saved feeds."
msgstr "आपके पास कोई सहेजी गई फ़ीड नहीं है."
-#: src/view/com/post-thread/PostThread.tsx:388
+#: src/view/com/post-thread/PostThread.tsx:381
msgid "You have blocked the author or you have been blocked by the author."
msgstr "आपने लेखक को अवरुद्ध किया है या आपने लेखक द्वारा अवरुद्ध किया है।।"
-#: src/view/com/feeds/ProfileFeedgens.tsx:141
+#: src/view/com/feeds/ProfileFeedgens.tsx:134
msgid "You have no feeds."
msgstr ""
#: src/view/com/lists/MyLists.tsx:89
-#: src/view/com/lists/ProfileLists.tsx:145
+#: src/view/com/lists/ProfileLists.tsx:138
msgid "You have no lists."
msgstr "आपके पास कोई सूची नहीं है।।"
-#: src/view/screens/ModerationBlockedAccounts.tsx:131
+#: src/view/screens/ModerationBlockedAccounts.tsx:132
msgid "You have not blocked any accounts yet. To block an account, go to their profile and selected \"Block account\" from the menu on their account."
msgstr "आपने अभी तक कोई भी अकाउंट ब्लॉक नहीं किया है. किसी खाते को ब्लॉक करने के लिए, उनकी प्रोफ़ाइल पर जाएं और उनके खाते के मेनू से \"खाता ब्लॉक करें\" चुनें।"
@@ -2533,7 +2653,7 @@ msgstr "आपने अभी तक कोई भी अकाउंट ब्
msgid "You have not created any app passwords yet. You can create one by pressing the button below."
msgstr "आपने अभी तक कोई ऐप पासवर्ड नहीं बनाया है। आप नीचे बटन दबाकर एक बना सकते हैं।।"
-#: src/view/screens/ModerationMutedAccounts.tsx:130
+#: src/view/screens/ModerationMutedAccounts.tsx:131
msgid "You have not muted any accounts yet. To mute an account, go to their profile and selected \"Mute account\" from the menu on their account."
msgstr "आपने अभी तक कोई खाता म्यूट नहीं किया है. किसी खाते को म्यूट करने के लिए, उनकी प्रोफ़ाइल पर जाएं और उनके खाते के मेनू से \"खाता म्यूट करें\" चुनें।"
@@ -2541,11 +2661,11 @@ msgstr "आपने अभी तक कोई खाता म्यूट न
msgid "You will receive an email with a \"reset code.\" Enter that code here, then enter your new password."
msgstr "आपको \"reset code\" के साथ एक ईमेल प्राप्त होगा। उस कोड को यहाँ दर्ज करें, फिर अपना नया पासवर्ड दर्ज करें।।"
-#: src/view/com/auth/create/Step2.tsx:43
+#: src/view/com/auth/create/Step2.tsx:58
msgid "Your account"
msgstr "आपका खाता"
-#: src/view/com/auth/create/Step2.tsx:122
+#: src/view/com/auth/create/Step2.tsx:146
msgid "Your birth date"
msgstr "जन्म तिथि"
@@ -2575,8 +2695,8 @@ msgid "Your hosting provider"
msgstr "आपका होस्टिंग प्रदाता"
#: src/view/screens/Settings.tsx:402
-#: src/view/shell/desktop/RightNav.tsx:129
-#: src/view/shell/Drawer.tsx:636
+#: src/view/shell/desktop/RightNav.tsx:137
+#: src/view/shell/Drawer.tsx:655
msgid "Your invite codes are hidden when logged in using an App Password"
msgstr ""
diff --git a/src/locale/locales/id/messages.po b/src/locale/locales/id/messages.po
new file mode 100644
index 0000000000..add00b346d
--- /dev/null
+++ b/src/locale/locales/id/messages.po
@@ -0,0 +1,2478 @@
+msgid ""
+msgstr ""
+"POT-Creation-Date: 2023-12-28 11:56+07000\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: @lingui/cli\n"
+"Language: id\n"
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"PO-Revision-Date: \n"
+"Last-Translator: danninov\n"
+"Language-Team: danninov, thinkbyte1024, mary-ext\n"
+"Plural-Forms: \n"
+
+#: src/view/shell/desktop/RightNav.tsx:160
+msgid "{0, plural, one {# invite code available} other {# invite codes available}}"
+msgstr "{0, plural, one {# kode undangan tersedia} other {# kode undangan tersedia}}"
+
+#: src/view/com/modals/Repost.tsx:44
+msgid "{0}"
+msgstr "{0}"
+
+#: src/view/com/modals/CreateOrEditList.tsx:176
+msgid "{0} {purposeLabel} List"
+msgstr "Daftar {purposeLabel} {0}"
+
+#: src/view/shell/desktop/RightNav.tsx:143
+msgid "{invitesAvailable, plural, one {Invite codes: # available} other {Invite codes: # available}}"
+msgstr "{invitesAvailable, plural, one {Kode undangan: # tersedia} other {Kode undangan: # tersedia}}"
+
+#: src/view/screens/Settings.tsx:407
+#: src/view/shell/Drawer.tsx:659
+msgid "{invitesAvailable} invite code available"
+msgstr "{invitesAvailable} kode undangan tersedia"
+
+#: src/view/screens/Settings.tsx:409
+#: src/view/shell/Drawer.tsx:661
+msgid "{invitesAvailable} invite codes available"
+msgstr "{invitesAvailable} kode undangan tersedia"
+
+#: src/view/screens/Search/Search.tsx:87
+msgid "{message}"
+msgstr "{message}"
+
+#: src/view/com/threadgate/WhoCanReply.tsx:158
+msgid "<0/> members"
+msgstr "<0/> anggota"
+
+#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:30
+msgid "<0>Choose your0><1>Recommended1><2>Feeds2>"
+msgstr "<0>Pilih0><1>Rekomendasi1><2>Feed2>"
+
+#: src/view/com/auth/onboarding/RecommendedFollows.tsx:37
+msgid "<0>Follow some0><1>Recommended1><2>Users2>"
+msgstr "<0>Ikuti0><1>Rekomendasi1><2>Pengguna2>"
+
+#: src/view/com/util/moderation/LabelInfo.tsx:45
+msgid "A content warning has been applied to this {0}."
+msgstr "Peringatan konten telah diterapkan pada {0}"
+
+#: src/lib/hooks/useOTAUpdate.ts:16
+msgid "A new version of the app is available. Please update to continue using the app."
+msgstr "Versi terbaru aplikasi telah tersedia. Mohon perbarui untuk melanjutkan."
+
+#: src/view/com/modals/EditImage.tsx:299
+#: src/view/screens/Settings.tsx:417
+msgid "Accessibility"
+msgstr "Aksesibilitas"
+
+#: src/view/com/auth/login/LoginForm.tsx:159
+#: src/view/screens/Settings.tsx:286
+msgid "Account"
+msgstr "Akun"
+
+#: src/view/com/util/AccountDropdownBtn.tsx:41
+msgid "Account options"
+msgstr "Preferensi akun"
+
+#: src/view/com/modals/ListAddRemoveUsers.tsx:264
+#: src/view/com/modals/UserAddRemoveLists.tsx:193
+#: src/view/screens/ProfileList.tsx:754
+msgid "Add"
+msgstr "Tambah"
+
+#: src/view/com/modals/SelfLabel.tsx:56
+msgid "Add a content warning"
+msgstr "Tambahkan peringatan konten"
+
+#: src/view/screens/ProfileList.tsx:744
+msgid "Add a user to this list"
+msgstr "Tambahkan pengguna ke daftar ini"
+
+#: src/view/screens/Settings.tsx:355
+#: src/view/screens/Settings.tsx:364
+msgid "Add account"
+msgstr "Tambahkan akun"
+
+#: src/view/com/composer/photos/Gallery.tsx:119
+#: src/view/com/composer/photos/Gallery.tsx:180
+msgid "Add alt text"
+msgstr "Tambahkan teks alt"
+
+#: src/view/com/modals/report/InputIssueDetails.tsx:41
+#: src/view/com/modals/report/Modal.tsx:191
+msgid "Add details"
+msgstr "Tambahkan detail"
+
+#: src/view/com/modals/report/Modal.tsx:194
+msgid "Add details to report"
+msgstr "Tambahkan detail ke laporan"
+
+#: src/view/com/composer/Composer.tsx:438
+msgid "Add link card"
+msgstr "Tambahkan kartu tautan"
+
+#: src/view/com/composer/Composer.tsx:441
+msgid "Add link card:"
+msgstr "Tambahkan kartu tautan:"
+
+#: src/view/com/modals/ChangeHandle.tsx:415
+msgid "Add the following DNS record to your domain:"
+msgstr "Tambahkan DNS record berikut ke domain Anda:"
+
+#: src/view/com/profile/ProfileHeader.tsx:353
+msgid "Add to Lists"
+msgstr "Tambahkan ke Daftar"
+
+#: src/view/screens/ProfileFeed.tsx:270
+msgid "Add to my feeds"
+msgstr "Tambakan ke feed saya"
+
+#: src/view/com/modals/ListAddRemoveUsers.tsx:191
+#: src/view/com/modals/UserAddRemoveLists.tsx:128
+msgid "Added to list"
+msgstr "Telah ditambahkan ke daftar"
+
+#: src/view/screens/PreferencesHomeFeed.tsx:164
+msgid "Adjust the number of likes a reply must have to be shown in your feed."
+msgstr "Atur jumlah suka dari balasan yang akan ditampilkan di feed Anda."
+
+#: src/view/com/modals/SelfLabel.tsx:75
+msgid "Adult Content"
+msgstr "Konten Dewasa"
+
+#: src/view/screens/Settings.tsx:569
+msgid "Advanced"
+msgstr "Lanjutan"
+
+#: src/view/com/composer/photos/Gallery.tsx:130
+msgid "ALT"
+msgstr "ALT"
+
+#: src/view/com/modals/EditImage.tsx:315
+msgid "Alt text"
+msgstr "Teks alt"
+
+#: src/view/com/composer/photos/Gallery.tsx:209
+msgid "Alt text describes images for blind and low-vision users, and helps give context to everyone."
+msgstr "Teks alt mendeskripsikan gambar untuk pengguna disabilitas netra, serta memberikan konteks ke semua orang."
+
+#: src/view/com/modals/VerifyEmail.tsx:118
+msgid "An email has been sent to {0}. It includes a confirmation code which you can enter below."
+msgstr "Email telah dikirim ke {0} berisikan kode konfirmasi yang bisa dimasukkan di bawah ini."
+
+#: src/view/com/modals/ChangeEmail.tsx:119
+msgid "An email has been sent to your previous address, {0}. It includes a confirmation code which you can enter below."
+msgstr "Email telah dikirim ke alamat Anda sebelumnya, {0}. Masukkan kode konfirmasi yang terdapat di dalamnya di bawah ini."
+
+#: src/view/com/notifications/FeedItem.tsx:236
+#: src/view/com/threadgate/WhoCanReply.tsx:178
+msgid "and"
+msgstr "dan"
+
+#: src/view/screens/LanguageSettings.tsx:95
+msgid "App Language"
+msgstr "Bahasa Aplikasi"
+
+#: src/view/screens/Settings.tsx:589
+msgid "App passwords"
+msgstr "Kata sandi aplikasi"
+
+#: src/view/screens/AppPasswords.tsx:186
+msgid "App Passwords"
+msgstr "Kata sandi Aplikasi"
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:236
+msgid "Appeal content warning"
+msgstr "Ajukan banding peringatan konten"
+
+#: src/view/com/modals/AppealLabel.tsx:65
+msgid "Appeal Content Warning"
+msgstr "Ajukan Banding Peringatan Konten"
+
+#: src/view/com/modals/AppealLabel.tsx:65
+#~ msgid "Appeal Decision"
+#~ msgstr "Keputusan Banding"
+
+#: src/view/com/util/moderation/LabelInfo.tsx:52
+msgid "Appeal this decision"
+msgstr "Ajukan banding untuk keputusan ini"
+
+#: src/view/com/util/moderation/LabelInfo.tsx:56
+msgid "Appeal this decision."
+msgstr "Ajukan banding untuk keputusan ini."
+
+#: src/view/screens/Settings.tsx:432
+msgid "Appearance"
+msgstr "Tampilan"
+
+#: src/view/screens/AppPasswords.tsx:223
+msgid "Are you sure you want to delete the app password \"{name}\"?"
+msgstr "Anda yakin untuk menghapus kata sandi aplikasi \"{name}\"?"
+
+#: src/view/com/composer/Composer.tsx:142
+msgid "Are you sure you'd like to discard this draft?"
+msgstr "Anda yakin untuk membuang draf ini?"
+
+#: src/view/screens/ProfileList.tsx:352
+msgid "Are you sure?"
+msgstr "Anda yakin?"
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:219
+msgid "Are you sure? This cannot be undone."
+msgstr "Anda yakin? Ini tidak dapat dibatalkan"
+
+#: src/view/com/modals/SelfLabel.tsx:123
+msgid "Artistic or non-erotic nudity."
+msgstr "Ketelanjangan artistik atau non-erotis."
+
+#: src/view/com/auth/create/CreateAccount.tsx:141
+#: src/view/com/auth/login/ChooseAccountForm.tsx:151
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:166
+#: src/view/com/auth/login/LoginForm.tsx:249
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:148
+#: src/view/com/modals/report/InputIssueDetails.tsx:45
+#: src/view/com/post-thread/PostThread.tsx:388
+#: src/view/com/post-thread/PostThread.tsx:438
+#: src/view/com/post-thread/PostThread.tsx:446
+#: src/view/com/profile/ProfileHeader.tsx:672
+msgid "Back"
+msgstr "Kembali"
+
+#: src/view/screens/Settings.tsx:461
+msgid "Basics"
+msgstr "Dasar"
+
+#: src/view/com/auth/create/Step2.tsx:131
+#: src/view/com/modals/BirthDateSettings.tsx:72
+msgid "Birthday"
+msgstr "Tanggal lahir"
+
+#: src/view/screens/Settings.tsx:312
+msgid "Birthday:"
+msgstr "Tanggal lahir:"
+
+#: src/view/com/profile/ProfileHeader.tsx:282
+#: src/view/com/profile/ProfileHeader.tsx:389
+msgid "Block Account"
+msgstr "Blokir Akun"
+
+#: src/view/screens/ProfileList.tsx:522
+msgid "Block accounts"
+msgstr "Blokir akun"
+
+#: src/view/screens/ProfileList.tsx:472
+msgid "Block list"
+msgstr "Daftar blokir"
+
+#: src/view/screens/ProfileList.tsx:307
+msgid "Block these accounts?"
+msgstr "Blokir akun ini?"
+
+#: src/view/screens/Moderation.tsx:123
+msgid "Blocked accounts"
+msgstr "Akun yang diblokir"
+
+#: src/view/screens/ModerationBlockedAccounts.tsx:107
+msgid "Blocked Accounts"
+msgstr "Akun yang diblokir"
+
+#: src/view/com/profile/ProfileHeader.tsx:284
+msgid "Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you."
+msgstr "Akun yang diblokir tidak dapat membalas postingan Anda, menyebutkan Anda, dan interaksi lain dengan Anda."
+
+#: src/view/screens/ModerationBlockedAccounts.tsx:115
+msgid "Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you. You will not see their content and they will be prevented from seeing yours."
+msgstr "Akun yang diblokir tidak dapat membalas postingan Anda, menyebutkan Anda, dan interaksi lain dengan Anda. Anda tidak akan melihat konten mereka dan mereka akan dicegah melihat konten Anda."
+
+#: src/view/com/post-thread/PostThread.tsx:250
+msgid "Blocked post."
+msgstr "Postingan yang diblokir."
+
+#: src/view/screens/ProfileList.tsx:309
+msgid "Blocking is public. Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you."
+msgstr "Blokir bersifat publik. Akun yang diblokir tidak dapat membalas postingan Anda, menyebutkan Anda, dan interaksi lain dengan Anda."
+
+#: src/view/com/auth/HomeLoggedOutCTA.tsx:93
+msgid "Blog"
+msgstr "Blog"
+
+#: src/view/com/auth/HomeLoggedOutCTA.tsx:31
+msgid "Bluesky"
+msgstr "Bluesky"
+
+#: src/view/com/auth/onboarding/WelcomeMobile.tsx:80
+msgid "Bluesky is flexible."
+msgstr "Bluesky itu fleksibel."
+
+#: src/view/com/auth/onboarding/WelcomeMobile.tsx:69
+msgid "Bluesky is open."
+msgstr "Bluesky itu terbuka."
+
+#: src/view/com/auth/onboarding/WelcomeMobile.tsx:56
+msgid "Bluesky is public."
+msgstr "Bluesky bersifat publik."
+
+#: src/view/com/modals/Waitlist.tsx:70
+msgid "Bluesky uses invites to build a healthier community. If you don't know anybody with an invite, you can sign up for the waitlist and we'll send one soon."
+msgstr "Bluesky menggunakan undangan untuk membangun komunitas yang sehat. Jika Anda tidak tahu orang lain yang memiliki undangan, Anda bisa mendaftar di daftar tunggu dan kami akan segera mengirimkan undangannya."
+
+#: src/view/screens/Moderation.tsx:225
+msgid "Bluesky will not show your profile and posts to logged-out users. Other apps may not honor this request. This does not make your account private."
+msgstr "Bluesky tidak akan menampilkan profil dan postingan Anda ke pengguna yang tidak login. Aplikasi lain mungkin tidak menghormati permintaan ini. Ini tidak membuat akun Anda menjadi privat."
+
+#: src/view/com/modals/ServerInput.tsx:78
+msgid "Bluesky.Social"
+msgstr "Bluesky.Social"
+
+#: src/view/screens/Settings.tsx:718
+msgid "Build version {0} {1}"
+msgstr "Versi {0} {1}"
+
+#: src/view/com/auth/HomeLoggedOutCTA.tsx:87
+msgid "Business"
+msgstr "Bisnis"
+
+#: src/view/com/composer/photos/OpenCameraBtn.tsx:60
+#: src/view/com/util/UserAvatar.tsx:221
+#: src/view/com/util/UserBanner.tsx:38
+msgid "Camera"
+msgstr "Kamera"
+
+#: src/view/com/modals/AddAppPasswords.tsx:214
+msgid "Can only contain letters, numbers, spaces, dashes, and underscores. Must be at least 4 characters long, but no more than 32 characters long."
+msgstr "Hanya dapat terdiri dari huruf, angka, spasi, tanda hubung dan garis bawah. Minimal 4 karakter, namun tidak boleh lebih dari 32 karakter."
+
+#: src/view/com/composer/Composer.tsx:285
+#: src/view/com/composer/Composer.tsx:288
+#: src/view/com/modals/AltImage.tsx:128
+#: src/view/com/modals/ChangeEmail.tsx:218
+#: src/view/com/modals/ChangeEmail.tsx:220
+#: src/view/com/modals/Confirm.tsx:88
+#: src/view/com/modals/CreateOrEditList.tsx:267
+#: src/view/com/modals/CreateOrEditList.tsx:272
+#: src/view/com/modals/DeleteAccount.tsx:150
+#: src/view/com/modals/DeleteAccount.tsx:223
+#: src/view/com/modals/EditImage.tsx:323
+#: src/view/com/modals/EditProfile.tsx:248
+#: src/view/com/modals/LinkWarning.tsx:85
+#: src/view/com/modals/Repost.tsx:73
+#: src/view/com/modals/Waitlist.tsx:136
+#: src/view/screens/Search/Search.tsx:584
+#: src/view/shell/desktop/Search.tsx:182
+msgid "Cancel"
+msgstr "Batal"
+
+#: src/view/com/modals/DeleteAccount.tsx:146
+#: src/view/com/modals/DeleteAccount.tsx:219
+msgid "Cancel account deletion"
+msgstr "Batal menghapus akun"
+
+#: src/view/com/modals/AltImage.tsx:123
+msgid "Cancel add image alt text"
+msgstr "Batal menambahkan teks alt gambar"
+
+#: src/view/com/modals/ChangeHandle.tsx:149
+msgid "Cancel change handle"
+msgstr "Batal mengubah handle"
+
+#: src/view/com/modals/crop-image/CropImage.web.tsx:134
+msgid "Cancel image crop"
+msgstr "Batal memotong gambar"
+
+#: src/view/com/modals/EditProfile.tsx:243
+msgid "Cancel profile editing"
+msgstr "Batal mengedit profil"
+
+#: src/view/com/modals/Repost.tsx:64
+msgid "Cancel quote post"
+msgstr "Batal mengutip postingan"
+
+#: src/view/com/modals/ListAddRemoveUsers.tsx:87
+#: src/view/shell/desktop/Search.tsx:178
+msgid "Cancel search"
+msgstr "Batal mencari"
+
+#: src/view/com/modals/Waitlist.tsx:132
+msgid "Cancel waitlist signup"
+msgstr "Batal mendaftar di daftar tunggu"
+
+#: src/view/screens/Settings.tsx:306
+msgid "Change"
+msgstr "Ubah"
+
+#: src/view/screens/Settings.tsx:601
+#: src/view/screens/Settings.tsx:610
+msgid "Change handle"
+msgstr "Ubah handle"
+
+#: src/view/com/modals/ChangeHandle.tsx:161
+msgid "Change Handle"
+msgstr "Ubah Handle"
+
+#: src/view/com/modals/VerifyEmail.tsx:141
+msgid "Change my email"
+msgstr "Ubah email saya"
+
+#: src/view/com/modals/ChangeEmail.tsx:109
+msgid "Change Your Email"
+msgstr "Ubah Email Anda"
+
+#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:121
+msgid "Check out some recommended feeds. Tap + to add them to your list of pinned feeds."
+msgstr "Lihat beberapa rekomendasi feed. Ketuk + untuk menambahkan ke daftar feed yang disematkan."
+
+#: src/view/com/auth/onboarding/RecommendedFollows.tsx:185
+msgid "Check out some recommended users. Follow them to see similar users."
+msgstr "Lihat beberapa rekomendasi pengguna. Ikuti mereka untuk melihat pengguna serupa."
+
+#: src/view/com/modals/DeleteAccount.tsx:163
+msgid "Check your inbox for an email with the confirmation code to enter below:"
+msgstr "Periksa kotak masuk email Anda untuk kode konfirmasi dan masukkan di bawah ini:"
+
+#: src/view/com/modals/ServerInput.tsx:38
+msgid "Choose Service"
+msgstr "Pilih Layanan"
+
+#: src/view/com/auth/onboarding/WelcomeMobile.tsx:83
+msgid "Choose the algorithms that power your experience with custom feeds."
+msgstr "Pilih algoritma yang akan digunakan untuk kustom feed Anda."
+
+#: src/view/com/auth/create/Step2.tsx:106
+msgid "Choose your password"
+msgstr "Pilih kata sandi Anda"
+
+#: src/view/screens/Settings.tsx:694
+msgid "Clear all legacy storage data"
+msgstr "Hapus semua data penyimpanan lama"
+
+#: src/view/screens/Settings.tsx:696
+msgid "Clear all legacy storage data (restart after this)"
+msgstr "Hapus semua data penyimpanan lama (mulai ulang setelah ini)"
+
+#: src/view/screens/Settings.tsx:706
+msgid "Clear all storage data"
+msgstr "Hapus semua data penyimpanan"
+
+#: src/view/screens/Settings.tsx:708
+msgid "Clear all storage data (restart after this)"
+msgstr "Hapus semua data penyimpanan (mulai ulang setelah ini)"
+
+#: src/view/com/util/forms/SearchInput.tsx:73
+#: src/view/screens/Search/Search.tsx:569
+msgid "Clear search query"
+msgstr "Hapus kueri pencarian"
+
+#: src/view/com/auth/login/PasswordUpdatedForm.tsx:38
+msgid "Close alert"
+msgstr "Tutup peringatan"
+
+#: src/view/com/util/BottomSheetCustomBackdrop.tsx:33
+msgid "Close bottom drawer"
+msgstr "Tutup kotak bawah"
+
+#: src/view/com/lightbox/ImageViewing/components/ImageDefaultHeader.tsx:26
+msgid "Close image"
+msgstr "Tutup gambar"
+
+#: src/view/com/lightbox/Lightbox.web.tsx:112
+msgid "Close image viewer"
+msgstr "Tutup penampil gambar"
+
+#: src/view/shell/index.web.tsx:49
+msgid "Close navigation footer"
+msgstr "Tutup footer navigasi"
+
+#: src/view/screens/CommunityGuidelines.tsx:32
+msgid "Community Guidelines"
+msgstr "Panduan Komunitas"
+
+#: src/view/com/composer/Prompt.tsx:24
+msgid "Compose reply"
+msgstr "Tulis balasan"
+
+#: src/view/com/modals/AppealLabel.tsx:98
+#: src/view/com/modals/Confirm.tsx:75
+#: src/view/com/modals/SelfLabel.tsx:154
+#: src/view/com/modals/VerifyEmail.tsx:225
+#: src/view/screens/PreferencesHomeFeed.tsx:299
+#: src/view/screens/PreferencesThreads.tsx:153
+msgid "Confirm"
+msgstr "Konfirmasi"
+
+#: src/view/com/modals/ChangeEmail.tsx:193
+#: src/view/com/modals/ChangeEmail.tsx:195
+msgid "Confirm Change"
+msgstr "Konfirmasi Perubahan"
+
+#: src/view/com/modals/lang-settings/ConfirmLanguagesButton.tsx:34
+msgid "Confirm content language settings"
+msgstr "Konfirmasi pengaturan bahasa konten"
+
+#: src/view/com/modals/DeleteAccount.tsx:209
+msgid "Confirm delete account"
+msgstr "Konfirmasi hapus akun"
+
+#: src/view/com/modals/ChangeEmail.tsx:157
+#: src/view/com/modals/DeleteAccount.tsx:176
+#: src/view/com/modals/VerifyEmail.tsx:159
+msgid "Confirmation code"
+msgstr "Código de confirmación"
+
+#: src/view/com/auth/create/CreateAccount.tsx:174
+#: src/view/com/auth/login/LoginForm.tsx:268
+msgid "Connecting..."
+msgstr "Menghubungkan..."
+
+#: src/view/screens/Moderation.tsx:81
+msgid "Content filtering"
+msgstr "Penyaring Konten"
+
+#: src/view/com/modals/ContentFilteringSettings.tsx:44
+msgid "Content Filtering"
+msgstr "Penyaring Konten"
+
+#: src/view/com/modals/lang-settings/ContentLanguagesSettings.tsx:74
+#: src/view/screens/LanguageSettings.tsx:278
+msgid "Content Languages"
+msgstr "Bahasa konten"
+
+#: src/view/com/util/moderation/ScreenHider.tsx:78
+msgid "Content Warning"
+msgstr "Peringatan Konten"
+
+#: src/view/com/composer/labels/LabelsBtn.tsx:31
+msgid "Content warnings"
+msgstr "Peringatan konten"
+
+#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:148
+#: src/view/com/auth/onboarding/RecommendedFollows.tsx:209
+msgid "Continue"
+msgstr "Lanjutkan"
+
+#: src/view/com/modals/AddAppPasswords.tsx:193
+#: src/view/com/modals/InviteCodes.tsx:179
+msgid "Copied"
+msgstr "Disalin"
+
+#: src/view/com/modals/AddAppPasswords.tsx:186
+msgid "Copy"
+msgstr "Salin"
+
+#: src/view/screens/ProfileList.tsx:384
+msgid "Copy link to list"
+msgstr "Salin tautan ke daftar"
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:139
+msgid "Copy link to post"
+msgstr "Salin tautan ke postingan"
+
+#: src/view/com/profile/ProfileHeader.tsx:338
+msgid "Copy link to profile"
+msgstr "Salin tautan ke profil"
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:125
+msgid "Copy post text"
+msgstr "Salin teks postingan"
+
+#: src/view/screens/CopyrightPolicy.tsx:29
+msgid "Copyright Policy"
+msgstr "Kebijakan Hak Cipta"
+
+#: src/view/screens/ProfileFeed.tsx:94
+msgid "Could not load feed"
+msgstr "Tidak dapat memuat feed"
+
+#: src/view/screens/ProfileList.tsx:830
+msgid "Could not load list"
+msgstr "Tidak dapat memuat daftar"
+
+#: src/view/com/auth/HomeLoggedOutCTA.tsx:62
+#: src/view/com/auth/SplashScreen.tsx:46
+msgid "Create a new account"
+msgstr "Buat akun baru"
+
+#: src/view/com/auth/create/CreateAccount.tsx:120
+msgid "Create Account"
+msgstr "Buat Akun"
+
+#: src/view/com/auth/HomeLoggedOutCTA.tsx:54
+#: src/view/com/auth/SplashScreen.tsx:43
+msgid "Create new account"
+msgstr "Buat akun baru"
+
+#: src/view/screens/AppPasswords.tsx:248
+msgid "Created {0}"
+msgstr "Dibuat {0}"
+
+#: src/view/com/modals/ChangeHandle.tsx:387
+#: src/view/com/modals/ServerInput.tsx:102
+msgid "Custom domain"
+msgstr "Domain kustom"
+
+#: src/view/screens/Settings.tsx:615
+msgid "Danger Zone"
+msgstr "Zona Berbahaya"
+
+#: src/view/screens/Settings.tsx:622
+msgid "Delete account"
+msgstr "Hapus akun"
+
+#: src/view/com/modals/DeleteAccount.tsx:83
+msgid "Delete Account"
+msgstr "Hapus Akun"
+
+#: src/view/screens/AppPasswords.tsx:221
+#: src/view/screens/AppPasswords.tsx:241
+msgid "Delete app password"
+msgstr "Hapus kata sandi aplikasi"
+
+#: src/view/screens/ProfileList.tsx:351
+#: src/view/screens/ProfileList.tsx:411
+msgid "Delete List"
+msgstr "Hapus Daftar "
+
+#: src/view/com/modals/DeleteAccount.tsx:212
+msgid "Delete my account"
+msgstr "Hapus akun saya"
+
+#: src/view/screens/Settings.tsx:632
+msgid "Delete my account…"
+msgstr "Menghapus akun saya..."
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:214
+msgid "Delete post"
+msgstr "Hapus postingan"
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:218
+msgid "Delete this post?"
+msgstr "Hapus postingan ini?"
+
+#: src/view/com/post-thread/PostThread.tsx:242
+msgid "Deleted post."
+msgstr "Postingan dihapus."
+
+#: src/view/com/modals/CreateOrEditList.tsx:218
+#: src/view/com/modals/CreateOrEditList.tsx:234
+#: src/view/com/modals/EditProfile.tsx:197
+#: src/view/com/modals/EditProfile.tsx:209
+msgid "Description"
+msgstr "Deskripsi"
+
+#: src/view/com/auth/create/Step1.tsx:96
+msgid "Dev Server"
+msgstr "Server Dev"
+
+#: src/view/screens/Settings.tsx:637
+msgid "Developer Tools"
+msgstr "Alat Pengembang"
+
+#: src/view/com/composer/Composer.tsx:143
+msgid "Discard"
+msgstr "Buang"
+
+#: src/view/com/composer/Composer.tsx:137
+msgid "Discard draft"
+msgstr "Buang draf"
+
+#: src/view/screens/Moderation.tsx:207
+msgid "Discourage apps from showing my account to logged-out users"
+msgstr "Cegah aplikasi untuk menampilkan akun saya ke pengguna yang tidak login"
+
+#: src/view/screens/Feeds.tsx:405
+msgid "Discover new feeds"
+msgstr "Temukan feed baru"
+
+#: src/view/com/modals/EditProfile.tsx:191
+msgid "Display name"
+msgstr "Nama tampilan"
+
+#: src/view/com/modals/EditProfile.tsx:179
+msgid "Display Name"
+msgstr "Nama Tampilan"
+
+#: src/view/com/modals/ChangeHandle.tsx:485
+msgid "Domain verified!"
+msgstr "Domain terverifikasi!"
+
+#: src/view/com/auth/onboarding/RecommendedFollows.tsx:86
+#: src/view/com/modals/ContentFilteringSettings.tsx:88
+#: src/view/com/modals/ContentFilteringSettings.tsx:96
+#: src/view/com/modals/crop-image/CropImage.web.tsx:152
+#: src/view/com/modals/EditImage.tsx:333
+#: src/view/com/modals/ListAddRemoveUsers.tsx:142
+#: src/view/com/modals/SelfLabel.tsx:157
+#: src/view/com/modals/Threadgate.tsx:129
+#: src/view/com/modals/Threadgate.tsx:132
+#: src/view/com/modals/UserAddRemoveLists.tsx:79
+#: src/view/screens/PreferencesHomeFeed.tsx:302
+#: src/view/screens/PreferencesThreads.tsx:156
+msgid "Done"
+msgstr "Selesai"
+
+#: src/view/com/modals/lang-settings/ConfirmLanguagesButton.tsx:42
+msgid "Done{extraText}"
+msgstr "Selesai{extraText}"
+
+#: src/view/com/modals/InviteCodes.tsx:94
+msgid "Each code works once. You'll receive more invite codes periodically."
+msgstr "Tiap kode hanya berlaku sekali. Anda akan mendapatkan tambahan kode undangan secara berkala."
+
+#: src/view/com/composer/photos/Gallery.tsx:144
+#: src/view/com/modals/EditImage.tsx:207
+msgid "Edit image"
+msgstr "Edit gambar"
+
+#: src/view/screens/ProfileList.tsx:399
+msgid "Edit list details"
+msgstr "Edit detail daftar"
+
+#: src/view/screens/Feeds.tsx:367
+#: src/view/screens/SavedFeeds.tsx:84
+msgid "Edit My Feeds"
+msgstr "Edit Feed Saya"
+
+#: src/view/com/modals/EditProfile.tsx:151
+msgid "Edit my profile"
+msgstr "Edit profil saya"
+
+#: src/view/com/profile/ProfileHeader.tsx:453
+msgid "Edit profile"
+msgstr "Edit profil"
+
+#: src/view/com/profile/ProfileHeader.tsx:456
+msgid "Edit Profile"
+msgstr "Edit Profil"
+
+#: src/view/screens/Feeds.tsx:330
+msgid "Edit Saved Feeds"
+msgstr "Edit Feed Tersimpan"
+
+#: src/view/com/auth/create/Step2.tsx:90
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:148
+#: src/view/com/modals/ChangeEmail.tsx:141
+#: src/view/com/modals/Waitlist.tsx:88
+msgid "Email"
+msgstr "Email"
+
+#: src/view/com/auth/create/Step2.tsx:81
+msgid "Email address"
+msgstr "Alamat email"
+
+#: src/view/com/modals/ChangeEmail.tsx:111
+msgid "Email Updated"
+msgstr "Email Diupdate"
+
+#: src/view/screens/Settings.tsx:290
+msgid "Email:"
+msgstr "Email:"
+
+#: src/view/screens/PreferencesHomeFeed.tsx:138
+msgid "Enable this setting to only see replies between people you follow."
+msgstr "Aktifkan opsi ini untuk hanya menampilkan balasan dari akun yang Anda ikuti."
+
+#: src/view/screens/Profile.tsx:426
+msgid "End of feed"
+msgstr "Akhir feed"
+
+#: src/view/com/auth/create/Step1.tsx:71
+msgid "Enter the address of your provider:"
+msgstr "Masukkan alamat provider Anda:"
+
+#: src/view/com/modals/ChangeHandle.tsx:369
+msgid "Enter the domain you want to use"
+msgstr "Masukkan domain yang ingin Anda gunakan"
+
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:101
+msgid "Enter the email you used to create your account. We'll send you a \"reset code\" so you can set a new password."
+msgstr "Masukkan email yang Anda gunakan untuk membuat akun. Kami akan mengirimkan \"kode reset\" untuk mengatur kata sandi baru."
+
+#: src/view/com/auth/create/Step2.tsx:86
+msgid "Enter your email address"
+msgstr "Masukkan email Anda"
+
+#: src/view/com/modals/ChangeEmail.tsx:117
+msgid "Enter your new email address below."
+msgstr "Masukkan email baru Anda."
+
+#: src/view/com/auth/login/Login.tsx:99
+msgid "Enter your username and password"
+msgstr "Masukkan nama pengguna dan kata sandi Anda"
+
+#: src/view/screens/Search/Search.tsx:105
+msgid "Error:"
+msgstr "Eror:"
+
+#: src/view/com/modals/Threadgate.tsx:76
+msgid "Everybody"
+msgstr "Semua orang"
+
+#: src/view/com/lightbox/Lightbox.web.tsx:156
+msgid "Expand alt text"
+msgstr "Tampilkan teks alt"
+
+#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:109
+#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:141
+msgid "Failed to load recommended feeds"
+msgstr "Gagal memuat rekomendasi feed"
+
+#: src/view/screens/Feeds.tsx:554
+msgid "Feed offline"
+msgstr "Feed offline"
+
+#: src/view/com/feeds/FeedPage.tsx:143
+msgid "Feed Preferences"
+msgstr "Preferensi Feed"
+
+#: src/view/shell/desktop/RightNav.tsx:65
+#: src/view/shell/Drawer.tsx:311
+msgid "Feedback"
+msgstr "Masukan"
+
+#: src/view/screens/Feeds.tsx:475
+#: src/view/screens/Profile.tsx:165
+#: src/view/shell/bottom-bar/BottomBar.tsx:181
+#: src/view/shell/desktop/LeftNav.tsx:340
+#: src/view/shell/Drawer.tsx:474
+#: src/view/shell/Drawer.tsx:475
+msgid "Feeds"
+msgstr "Feed"
+
+#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:57
+msgid "Feeds are created by users to curate content. Choose some feeds that you find interesting."
+msgstr "Feed dibuat oleh pengguna untuk mengkurasi konten. Pilih beberapa feed yang menurut Anda menarik."
+
+#: src/view/screens/SavedFeeds.tsx:156
+msgid "Feeds are custom algorithms that users build with a little coding expertise. <0/> for more information."
+msgstr "Feed merupakan algoritma kustom yang dibuat pengguna dengan sedikit kemampuan menulis kode. <0/> untuk informasi lainnya."
+
+#: src/view/screens/Search/Search.tsx:414
+msgid "Find users on Bluesky"
+msgstr "Temukan pengguna di Bluesky"
+
+#: src/view/screens/Search/Search.tsx:412
+msgid "Find users with the search tool on the right"
+msgstr "Temukan pengguna dengan alat pencarian di sebelah kanan"
+
+#: src/view/com/auth/onboarding/RecommendedFollowsItem.tsx:150
+msgid "Finding similar accounts..."
+msgstr "Mencari akun serupa..."
+
+#: src/view/screens/PreferencesHomeFeed.tsx:102
+msgid "Fine-tune the content you see on your home screen."
+msgstr "Atur konten yang Anda lihat di beranda."
+
+#: src/view/screens/PreferencesThreads.tsx:60
+msgid "Fine-tune the discussion threads."
+msgstr "Atur utasan diskusi."
+
+#: src/view/com/profile/ProfileHeader.tsx:538
+msgid "Follow"
+msgstr "Ikuti"
+
+#: src/view/com/auth/onboarding/RecommendedFollows.tsx:64
+msgid "Follow some users to get started. We can recommend you more users based on who you find interesting."
+msgstr "Ikuti beberapa pengguna untuk memulai. Kami dapat merekomendasikan lebih banyak pengguna yang mungkin menarik Anda."
+
+#: src/view/com/modals/Threadgate.tsx:98
+msgid "Followed users"
+msgstr "Pengguna yang diikuti"
+
+#: src/view/screens/PreferencesHomeFeed.tsx:145
+msgid "Followed users only"
+msgstr "Hanya pengguna yang diikuti"
+
+#: src/view/screens/ProfileFollowers.tsx:25
+msgid "Followers"
+msgstr "Pengikut"
+
+#: src/view/com/profile/ProfileHeader.tsx:624
+msgid "following"
+msgstr "mengikuti"
+
+#: src/view/com/profile/ProfileHeader.tsx:522
+#: src/view/screens/ProfileFollows.tsx:25
+msgid "Following"
+msgstr "Mengikuti"
+
+#: src/view/com/profile/ProfileHeader.tsx:571
+msgid "Follows you"
+msgstr "Mengikuti Anda"
+
+#: src/view/com/modals/DeleteAccount.tsx:107
+msgid "For security reasons, we'll need to send a confirmation code to your email address."
+msgstr "Untuk alasan keamanan, kami akan mengirimkan kode konfirmasi ke alamat email Anda."
+
+#: src/view/com/modals/AddAppPasswords.tsx:207
+msgid "For security reasons, you won't be able to view this again. If you lose this password, you'll need to generate a new one."
+msgstr "Untuk alasan keamanan, Anda tidak akan dapat melihat ini lagi. Jika Anda lupa kata sandi ini, Anda harus membuat yang baru."
+
+#: src/view/com/auth/login/LoginForm.tsx:231
+msgid "Forgot"
+msgstr "Lupa"
+
+#: src/view/com/auth/login/LoginForm.tsx:228
+msgid "Forgot password"
+msgstr "Lupa kata sandi"
+
+#: src/view/com/auth/login/Login.tsx:127
+#: src/view/com/auth/login/Login.tsx:143
+msgid "Forgot Password"
+msgstr "Lupa Kata Sandi"
+
+#: src/view/com/composer/photos/SelectPhotoBtn.tsx:43
+msgid "Gallery"
+msgstr "Galeri"
+
+#: src/view/com/modals/VerifyEmail.tsx:183
+msgid "Get Started"
+msgstr "Mulai"
+
+#: src/view/com/auth/LoggedOut.tsx:81
+#: src/view/com/auth/LoggedOut.tsx:82
+#: src/view/com/util/moderation/ScreenHider.tsx:123
+#: src/view/shell/desktop/LeftNav.tsx:104
+msgid "Go back"
+msgstr "Kembali"
+
+#: src/view/screens/ProfileFeed.tsx:103
+#: src/view/screens/ProfileFeed.tsx:108
+#: src/view/screens/ProfileList.tsx:839
+#: src/view/screens/ProfileList.tsx:844
+msgid "Go Back"
+msgstr "Kembali"
+
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:181
+#: src/view/com/auth/login/LoginForm.tsx:278
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:163
+msgid "Go to next"
+msgstr "Berikutnya"
+
+#: src/view/com/modals/ChangeHandle.tsx:265
+msgid "Handle"
+msgstr "Handle"
+
+#: src/view/shell/desktop/RightNav.tsx:94
+#: src/view/shell/Drawer.tsx:321
+msgid "Help"
+msgstr "Bantuan"
+
+#: src/view/com/modals/AddAppPasswords.tsx:148
+msgid "Here is your app password."
+msgstr "Berikut kata sandi aplikasi Anda."
+
+#: src/view/com/notifications/FeedItem.tsx:316
+#: src/view/com/util/moderation/ContentHider.tsx:103
+msgid "Hide"
+msgstr "Sembunyikan"
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:173
+msgid "Hide post"
+msgstr "Sembunyikan postingan"
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:177
+msgid "Hide this post?"
+msgstr "Sembunyikan postingan ini?"
+
+#: src/view/com/notifications/FeedItem.tsx:308
+msgid "Hide user list"
+msgstr "Sembunyikan daftar pengguna"
+
+#: src/view/com/posts/FeedErrorMessage.tsx:110
+msgid "Hmm, some kind of issue occurred when contacting the feed server. Please let the feed owner know about this issue."
+msgstr "Hmm, sepertinya ada masalah saat menghubungi server feed. Beritahu pemilik feed tentang masalah ini."
+
+#: src/view/com/posts/FeedErrorMessage.tsx:98
+msgid "Hmm, the feed server appears to be misconfigured. Please let the feed owner know about this issue."
+msgstr "Hmm, sepertinya adalah kesalahan konfigurasi pada server feed. Beritahu pemilik feed tentang masalah ini."
+
+#: src/view/com/posts/FeedErrorMessage.tsx:104
+msgid "Hmm, the feed server appears to be offline. Please let the feed owner know about this issue."
+msgstr "Hmm, sepertinya server feed offline. Beritahu pemilik feed tentang masalah ini."
+
+#: src/view/com/posts/FeedErrorMessage.tsx:101
+msgid "Hmm, the feed server gave a bad response. Please let the feed owner know about this issue."
+msgstr "Hmm, server feed memberikan respon yang buruk. Beritahu pemilik feed tentang masalah ini."
+
+#: src/view/com/posts/FeedErrorMessage.tsx:95
+msgid "Hmm, we're having trouble finding this feed. It may have been deleted."
+msgstr "Hmm, kami tidak dapat menemukan feed ini. Mungkin sudah dihapus"
+
+#: src/view/shell/bottom-bar/BottomBar.tsx:137
+#: src/view/shell/desktop/LeftNav.tsx:304
+#: src/view/shell/Drawer.tsx:398
+#: src/view/shell/Drawer.tsx:399
+msgid "Home"
+msgstr "Beranda"
+
+#: src/view/com/pager/FeedsTabBarMobile.tsx:96
+#: src/view/screens/PreferencesHomeFeed.tsx:95
+#: src/view/screens/Settings.tsx:481
+msgid "Home Feed Preferences"
+msgstr "Preferensi Feed Beranda"
+
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:114
+msgid "Hosting provider"
+msgstr "Provider hosting"
+
+#: src/view/com/auth/create/Step1.tsx:76
+#: src/view/com/auth/create/Step1.tsx:81
+msgid "Hosting provider address"
+msgstr "Alamat provider hosting"
+
+#: src/view/com/modals/VerifyEmail.tsx:208
+msgid "I have a code"
+msgstr "Saya punya kode"
+
+#: src/view/com/modals/ChangeHandle.tsx:281
+msgid "I have my own domain"
+msgstr "Saya punya domain sendiri"
+
+#: src/view/com/modals/SelfLabel.tsx:127
+msgid "If none are selected, suitable for all ages."
+msgstr "Jika tidak ada yang dipilih, cocok untuk semua umur."
+
+#: src/view/com/modals/AltImage.tsx:97
+msgid "Image alt text"
+msgstr "Teks alt gambar"
+
+#: src/view/com/util/UserAvatar.tsx:308
+#: src/view/com/util/UserBanner.tsx:116
+msgid "Image options"
+msgstr "Pilihan gambar"
+
+#: src/view/com/auth/login/LoginForm.tsx:113
+msgid "Invalid username or password"
+msgstr "Username atau kata sandi salah"
+
+#: src/view/screens/Settings.tsx:383
+msgid "Invite"
+msgstr "Undang"
+
+#: src/view/com/modals/InviteCodes.tsx:91
+#: src/view/screens/Settings.tsx:371
+msgid "Invite a Friend"
+msgstr "Undang Teman"
+
+#: src/view/com/auth/create/Step2.tsx:57
+msgid "Invite code"
+msgstr "Kode Undangan"
+
+#: src/view/com/auth/create/state.ts:136
+msgid "Invite code not accepted. Check that you input it correctly and try again."
+msgstr "Kode undangan salah. Periksa bahwa Anda memasukkannya dengan benar dan coba lagi."
+
+#: src/view/shell/Drawer.tsx:640
+msgid "Invite codes: {invitesAvailable} available"
+msgstr "Kode undangan: {invitesAvailable} tersedia"
+
+#: src/view/com/auth/HomeLoggedOutCTA.tsx:99
+msgid "Jobs"
+msgstr "Karir"
+
+#: src/view/com/modals/Waitlist.tsx:67
+msgid "Join the waitlist"
+msgstr "Gabung ke daftar tunggu"
+
+#: src/view/com/auth/create/Step2.tsx:68
+#: src/view/com/auth/create/Step2.tsx:72
+msgid "Join the waitlist."
+msgstr "Gabung ke daftar tunggu."
+
+#: src/view/com/modals/Waitlist.tsx:124
+msgid "Join Waitlist"
+msgstr "Gabung ke Daftar Tunggu"
+
+#: src/view/com/composer/select-language/SelectLangBtn.tsx:104
+msgid "Language selection"
+msgstr "Pilih bahasa"
+
+#: src/view/screens/LanguageSettings.tsx:89
+msgid "Language Settings"
+msgstr "Pengaturan Bahasa"
+
+#: src/view/screens/Settings.tsx:541
+msgid "Languages"
+msgstr "Bahasa"
+
+#: src/view/com/util/moderation/ContentHider.tsx:101
+msgid "Learn more"
+msgstr "Pelajari lebih lanjut"
+
+#: src/view/com/util/moderation/PostAlerts.tsx:47
+#: src/view/com/util/moderation/ProfileHeaderAlerts.tsx:65
+#: src/view/com/util/moderation/ScreenHider.tsx:104
+msgid "Learn More"
+msgstr "Pelajari Lebih Lanjut"
+
+#: src/view/com/util/moderation/ContentHider.tsx:83
+#: src/view/com/util/moderation/PostAlerts.tsx:40
+#: src/view/com/util/moderation/PostHider.tsx:76
+#: src/view/com/util/moderation/ProfileHeaderAlerts.tsx:49
+#: src/view/com/util/moderation/ScreenHider.tsx:101
+msgid "Learn more about this warning"
+msgstr "Pelajari lebih lanjut tentang peringatan ini"
+
+#: src/view/screens/Moderation.tsx:242
+msgid "Learn more about what is public on Bluesky."
+msgstr "Pelajari lebih lanjut tentang apa yang publik di Bluesky."
+
+#: src/view/com/modals/lang-settings/ContentLanguagesSettings.tsx:82
+msgid "Leave them all unchecked to see any language."
+msgstr "Biarkan semua tidak tercentang untuk melihat bahasa apa pun."
+
+#: src/view/com/modals/LinkWarning.tsx:49
+msgid "Leaving Bluesky"
+msgstr "Meninggalkan Bluesky"
+
+#: src/view/com/auth/login/Login.tsx:128
+#: src/view/com/auth/login/Login.tsx:144
+msgid "Let's get your password reset!"
+msgstr "Reset kata sandi Anda!"
+
+#: src/view/com/util/UserAvatar.tsx:245
+#: src/view/com/util/UserBanner.tsx:60
+msgid "Library"
+msgstr "Pustaka"
+
+#: src/view/screens/ProfileFeed.tsx:577
+msgid "Like this feed"
+msgstr "Suka feed ini"
+
+#: src/view/screens/PostLikedBy.tsx:27
+#: src/view/screens/ProfileFeedLikedBy.tsx:27
+msgid "Liked by"
+msgstr "Disukai oleh"
+
+#: src/view/screens/Profile.tsx:164
+msgid "Likes"
+msgstr "Suka"
+
+#: src/view/com/modals/CreateOrEditList.tsx:186
+msgid "List Avatar"
+msgstr "Avatar Daftar"
+
+#: src/view/com/modals/CreateOrEditList.tsx:199
+msgid "List Name"
+msgstr "Nama Daftar"
+
+#: src/view/screens/Profile.tsx:166
+#: src/view/shell/desktop/LeftNav.tsx:377
+#: src/view/shell/Drawer.tsx:490
+#: src/view/shell/Drawer.tsx:491
+msgid "Lists"
+msgstr "Daftar"
+
+#: src/view/com/post-thread/PostThread.tsx:259
+#: src/view/com/post-thread/PostThread.tsx:267
+msgid "Load more posts"
+msgstr "Muat postingan lainnya"
+
+#: src/view/screens/Notifications.tsx:144
+msgid "Load new notifications"
+msgstr "Muat notifikasi baru"
+
+#: src/view/com/feeds/FeedPage.tsx:189
+msgid "Load new posts"
+msgstr "Muat postingan baru"
+
+#: src/view/com/composer/text-input/mobile/Autocomplete.tsx:95
+msgid "Loading..."
+msgstr "Memuat..."
+
+#: src/view/com/modals/ServerInput.tsx:50
+msgid "Local dev server"
+msgstr "Server dev lokal"
+
+#: src/view/screens/Moderation.tsx:136
+msgid "Logged-out visibility"
+msgstr "Visibilitas pengguna yang tidak login"
+
+#: src/view/com/auth/login/ChooseAccountForm.tsx:133
+msgid "Login to account that is not listed"
+msgstr "Masuk ke akun yang tidak ada di daftar"
+
+#: src/view/screens/ProfileFeed.tsx:472
+#~ msgid "Looks like this feed is only available to users with a Bluesky account. Please sign up or sign in to view this feed!"
+#~ msgstr "Sepertinya feed ini hanya tersedia untuk pengguna dengan akun Bluesky. Silakan daftar atau masuk untuk melihat feed ini!"
+
+#: src/view/com/modals/LinkWarning.tsx:63
+msgid "Make sure this is where you intend to go!"
+msgstr "Pastikan ini adalah website yang Anda tuju!"
+
+#: src/view/screens/Profile.tsx:163
+msgid "Media"
+msgstr "Media"
+
+#: src/view/com/threadgate/WhoCanReply.tsx:139
+msgid "mentioned users"
+msgstr "pengguna yang disebutkan"
+
+#: src/view/com/modals/Threadgate.tsx:93
+msgid "Mentioned users"
+msgstr "Pengguna yang disebutkan"
+
+#: src/view/screens/Search/Search.tsx:529
+msgid "Menu"
+msgstr "Menu"
+
+#: src/view/com/posts/FeedErrorMessage.tsx:194
+msgid "Message from server"
+msgstr "Pesan dari server"
+
+#: src/view/screens/Moderation.tsx:64
+#: src/view/screens/Settings.tsx:563
+#: src/view/shell/desktop/LeftNav.tsx:395
+#: src/view/shell/Drawer.tsx:509
+#: src/view/shell/Drawer.tsx:510
+msgid "Moderation"
+msgstr "Moderasi"
+
+#: src/view/screens/Moderation.tsx:95
+msgid "Moderation lists"
+msgstr "Daftar moderasi"
+
+#: src/view/screens/ModerationModlists.tsx:58
+msgid "Moderation Lists"
+msgstr "Daftar Moderasi"
+
+#: src/view/shell/desktop/Feeds.tsx:53
+msgid "More feeds"
+msgstr "Feed lainnya"
+
+#: src/view/com/profile/ProfileHeader.tsx:548
+#: src/view/screens/ProfileFeed.tsx:360
+#: src/view/screens/ProfileList.tsx:583
+msgid "More options"
+msgstr "Pilihan lainnya"
+
+#: src/view/com/profile/ProfileHeader.tsx:370
+msgid "Mute Account"
+msgstr "Bisukan Akun"
+
+#: src/view/screens/ProfileList.tsx:510
+msgid "Mute accounts"
+msgstr "Bisukan akun"
+
+#: src/view/screens/ProfileList.tsx:457
+msgid "Mute list"
+msgstr "Daftar akun yang dibisukan"
+
+#: src/view/screens/ProfileList.tsx:270
+msgid "Mute these accounts?"
+msgstr "Bisukan akun ini?"
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:157
+msgid "Mute thread"
+msgstr "Bisukan utasan"
+
+#: src/view/screens/Moderation.tsx:109
+msgid "Muted accounts"
+msgstr "Akun yang dibisukan"
+
+#: src/view/screens/ModerationMutedAccounts.tsx:107
+msgid "Muted Accounts"
+msgstr "Akun yang Dibisukan"
+
+#: src/view/screens/ModerationMutedAccounts.tsx:115
+msgid "Muted accounts have their posts removed from your feed and from your notifications. Mutes are completely private."
+msgstr "Postingan dari akun yang dibisukan akan dihilangkan dari feed dan notifikasi Anda. Pembisuan ini bersifat privat."
+
+#: src/view/screens/ProfileList.tsx:272
+msgid "Muting is private. Muted accounts can interact with you, but you will not see their posts or receive notifications from them."
+msgstr "Pembisuan akun bersifat privat. Akun yang dibisukan tetap dapat berinteraksi dengan Anda, namun Anda tidak akan melihat postingan atau notifikasi dari mereka."
+
+#: src/view/com/modals/BirthDateSettings.tsx:56
+msgid "My Birthday"
+msgstr "Tanggal Lahir Saya"
+
+#: src/view/screens/Feeds.tsx:363
+msgid "My Feeds"
+msgstr "Feed Saya"
+
+#: src/view/shell/desktop/LeftNav.tsx:65
+msgid "My Profile"
+msgstr "Profil Saya"
+
+#: src/view/screens/Settings.tsx:520
+msgid "My Saved Feeds"
+msgstr "Feed Tersimpan Saya"
+
+#: src/view/com/modals/AddAppPasswords.tsx:177
+#: src/view/com/modals/CreateOrEditList.tsx:211
+msgid "Name"
+msgstr "Nama"
+
+#: src/view/com/auth/onboarding/WelcomeMobile.tsx:72
+msgid "Never lose access to your followers and data."
+msgstr "Tidak akan lagi kehilangan akses ke data dan pengikut Anda."
+
+#: src/view/screens/Lists.tsx:76
+#: src/view/screens/ModerationModlists.tsx:78
+msgid "New"
+msgstr "Baru"
+
+#: src/view/com/feeds/FeedPage.tsx:200
+#: src/view/screens/Feeds.tsx:505
+#: src/view/screens/Profile.tsx:354
+#: src/view/screens/ProfileFeed.tsx:430
+#: src/view/screens/ProfileList.tsx:193
+#: src/view/screens/ProfileList.tsx:221
+#: src/view/shell/desktop/LeftNav.tsx:247
+msgid "New post"
+msgstr "Postingan baru"
+
+#: src/view/shell/desktop/LeftNav.tsx:257
+msgid "New Post"
+msgstr "Postingan Baru"
+
+#: src/view/com/auth/create/CreateAccount.tsx:154
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:174
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:184
+#: src/view/com/auth/login/LoginForm.tsx:281
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:156
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:166
+#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:79
+msgid "Next"
+msgstr "Berikutnya"
+
+#: src/view/com/lightbox/Lightbox.web.tsx:142
+msgid "Next image"
+msgstr "Gambar berikutnya"
+
+#: src/view/screens/PreferencesHomeFeed.tsx:191
+#: src/view/screens/PreferencesHomeFeed.tsx:226
+#: src/view/screens/PreferencesHomeFeed.tsx:263
+msgid "No"
+msgstr "Tidak"
+
+#: src/view/screens/ProfileFeed.tsx:570
+#: src/view/screens/ProfileList.tsx:711
+msgid "No description"
+msgstr "Tidak ada deskripsi"
+
+#: src/view/com/composer/text-input/mobile/Autocomplete.tsx:97
+msgid "No result"
+msgstr "Tidak ada hasil"
+
+#: src/view/screens/Feeds.tsx:452
+msgid "No results found for \"{query}\""
+msgstr "Tidak ada hasil ditemukan untuk \"{query}\""
+
+#: src/view/com/modals/ListAddRemoveUsers.tsx:127
+#: src/view/screens/Search/Search.tsx:263
+#: src/view/screens/Search/Search.tsx:291
+#: src/view/screens/Search/Search.tsx:607
+#: src/view/shell/desktop/Search.tsx:210
+msgid "No results found for {query}"
+msgstr "Tidak ada hasil ditemukan untuk {query}"
+
+#: src/view/com/modals/Threadgate.tsx:82
+msgid "Nobody"
+msgstr "Tak seorang pun"
+
+#: src/view/com/modals/SelfLabel.tsx:135
+msgid "Not Applicable."
+msgstr "Tidak Berlaku."
+
+#: src/view/screens/Moderation.tsx:232
+msgid "Note: Bluesky is an open and public network. This setting only limits the visibility of your content on the Bluesky app and website, and other apps may not respect this setting. Your content may still be shown to logged-out users by other apps and websites."
+msgstr "Catatan: Bluesky merupakan jaringan terbuka dan publik. Pengaturan ini hanya akan membatasi visibilitas konten Anda pada aplikasi dan website Bluesky, dan aplikasi lain mungkin tidak mengindahkan pengaturan ini. Konten Anda mungkin tetap ditampilkan kepada pengguna yang tidak login oleh aplikasi dan website lain."
+
+#: src/view/screens/Notifications.tsx:109
+#: src/view/screens/Notifications.tsx:133
+#: src/view/shell/bottom-bar/BottomBar.tsx:205
+#: src/view/shell/desktop/LeftNav.tsx:359
+#: src/view/shell/Drawer.tsx:435
+#: src/view/shell/Drawer.tsx:436
+msgid "Notifications"
+msgstr "Notifikasi"
+
+#: src/view/com/util/ErrorBoundary.tsx:34
+msgid "Oh no!"
+msgstr "Oh tidak!"
+
+#: src/view/com/auth/login/PasswordUpdatedForm.tsx:41
+msgid "Okay"
+msgstr "Baiklah"
+
+#: src/view/com/composer/Composer.tsx:354
+msgid "One or more images is missing alt text."
+msgstr "Satu atau lebih gambar belum ada teks alt."
+
+#: src/view/com/threadgate/WhoCanReply.tsx:100
+msgid "Only {0} can reply."
+msgstr "Hanya {0} dapat membalas."
+
+#: src/view/com/pager/FeedsTabBarMobile.tsx:76
+msgid "Open navigation"
+msgstr "Buka navigasi"
+
+#: src/view/screens/Settings.tsx:533
+msgid "Opens configurable language settings"
+msgstr "Buka pengaturan bahasa yang dapat dikonfigurasi"
+
+#: src/view/shell/desktop/RightNav.tsx:148
+#: src/view/shell/Drawer.tsx:641
+msgid "Opens list of invite codes"
+msgstr "Buka daftar kode undangan"
+
+#: src/view/com/modals/ChangeHandle.tsx:279
+msgid "Opens modal for using custom domain"
+msgstr "Buka modal untuk menggunakan domain kustom"
+
+#: src/view/screens/Settings.tsx:558
+msgid "Opens moderation settings"
+msgstr "Buka pengaturan moderasi"
+
+#: src/view/screens/Settings.tsx:514
+msgid "Opens screen with all saved feeds"
+msgstr "Buka halaman dengan semua feed tersimpan"
+
+#: src/view/screens/Settings.tsx:581
+msgid "Opens the app password settings page"
+msgstr "Buka halaman pengaturan kata sandi aplikasi"
+
+#: src/view/screens/Settings.tsx:473
+msgid "Opens the home feed preferences"
+msgstr "Buka preferensi feed beranda"
+
+#: src/view/screens/Settings.tsx:664
+msgid "Opens the storybook page"
+msgstr "Buka halaman storybook"
+
+#: src/view/screens/Settings.tsx:644
+msgid "Opens the system log page"
+msgstr "Buka halaman log sistem"
+
+#: src/view/screens/Settings.tsx:494
+msgid "Opens the threads preferences"
+msgstr "Buka preferensi utasan"
+
+#: src/view/com/auth/login/ChooseAccountForm.tsx:138
+msgid "Other account"
+msgstr "Akun lainnya"
+
+#: src/view/com/modals/ServerInput.tsx:88
+msgid "Other service"
+msgstr "Layanan lainnya"
+
+#: src/view/com/composer/select-language/SelectLangBtn.tsx:91
+msgid "Other..."
+msgstr "Lainnya..."
+
+#: src/view/screens/NotFound.tsx:42
+#: src/view/screens/NotFound.tsx:45
+msgid "Page not found"
+msgstr "Halaman tidak ditemukan"
+
+#: src/view/com/auth/create/Step2.tsx:101
+#: src/view/com/auth/create/Step2.tsx:111
+#: src/view/com/auth/login/LoginForm.tsx:216
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:130
+#: src/view/com/modals/DeleteAccount.tsx:191
+msgid "Password"
+msgstr "Kata sandi"
+
+#: src/view/com/auth/login/Login.tsx:157
+msgid "Password updated"
+msgstr "Kata sandi diganti"
+
+#: src/view/com/auth/login/PasswordUpdatedForm.tsx:28
+msgid "Password updated!"
+msgstr "Kata sandi diganti!"
+
+#: src/view/com/modals/SelfLabel.tsx:121
+msgid "Pictures meant for adults."
+msgstr "Gambar khusus dewasa."
+
+#: src/view/screens/SavedFeeds.tsx:88
+msgid "Pinned Feeds"
+msgstr "Feed Tersemat"
+
+#: src/view/com/auth/create/state.ts:116
+msgid "Please choose your handle."
+msgstr "Silakan pilih handle Anda."
+
+#: src/view/com/auth/create/state.ts:109
+msgid "Please choose your password."
+msgstr "Masukkan kata sandi Anda."
+
+#: src/view/com/modals/ChangeEmail.tsx:67
+msgid "Please confirm your email before changing it. This is a temporary requirement while email-updating tools are added, and it will soon be removed."
+msgstr "Mohon konfirmasi email Anda sebelum menggantinya. Ini adalah syarat sementara sampai alat mengganti-email tersedia, setelah itu syarat ini akan dihilangkan."
+
+#: src/view/com/modals/AddAppPasswords.tsx:140
+msgid "Please enter a unique name for this App Password or use our randomly generated one."
+msgstr "Mohon masukkan nama unik untuk Kata Sandi Aplikasi ini atau gunakan nama acak yang kami buat."
+
+#: src/view/com/auth/create/state.ts:95
+msgid "Please enter your email."
+msgstr "Masukkan email Anda."
+
+#: src/view/com/modals/DeleteAccount.tsx:180
+msgid "Please enter your password as well:"
+msgstr "Masukkan juga kata sandi Anda:"
+
+#: src/view/com/modals/AppealLabel.tsx:72
+#: src/view/com/modals/AppealLabel.tsx:75
+msgid "Please tell us why you think this content warning was incorrectly applied!"
+msgstr "Mohon beritahu kami mengapa menurut Anda peringatan konten ini salah!"
+
+#: src/view/com/modals/AppealLabel.tsx:72
+#: src/view/com/modals/AppealLabel.tsx:75
+#~ msgid "Please tell us why you think this decision was incorrect."
+#~ msgstr "Mohon beritahu kami mengapa menurut Anda keputusan ini salah."
+
+#: src/view/com/composer/Composer.tsx:337
+#: src/view/com/post-thread/PostThread.tsx:225
+#: src/view/screens/PostThread.tsx:80
+msgid "Post"
+msgstr "Posting"
+
+#: src/view/com/post-thread/PostThread.tsx:378
+msgid "Post hidden"
+msgstr "Postingan disembunyikan"
+
+#: src/view/com/composer/select-language/SelectLangBtn.tsx:87
+msgid "Post language"
+msgstr "Bahasa postingan"
+
+#: src/view/com/modals/lang-settings/PostLanguagesSettings.tsx:75
+msgid "Post Languages"
+msgstr "Bahasa Postingan"
+
+#: src/view/com/post-thread/PostThread.tsx:430
+msgid "Post not found"
+msgstr "Postingan tidak ditemukan"
+
+#: src/view/screens/Profile.tsx:161
+msgid "Posts"
+msgstr "Postingan"
+
+#: src/view/com/modals/LinkWarning.tsx:44
+msgid "Potentially Misleading Link"
+msgstr "Tautan yang Mungkin Menyesatkan"
+
+#: src/view/com/lightbox/Lightbox.web.tsx:128
+msgid "Previous image"
+msgstr "Gambar sebelumnya"
+
+#: src/view/screens/LanguageSettings.tsx:187
+msgid "Primary Language"
+msgstr "Bahasa Utama"
+
+#: src/view/screens/PreferencesThreads.tsx:91
+msgid "Prioritize Your Follows"
+msgstr "Prioritaskan Pengikut Anda"
+
+#: src/view/shell/desktop/RightNav.tsx:76
+msgid "Privacy"
+msgstr "Privasi"
+
+#: src/view/screens/PrivacyPolicy.tsx:29
+#: src/view/screens/Settings.tsx:750
+#: src/view/shell/Drawer.tsx:262
+msgid "Privacy Policy"
+msgstr "Kebijakan Privasi"
+
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:190
+msgid "Processing..."
+msgstr "Memproses..."
+
+#: src/view/shell/bottom-bar/BottomBar.tsx:247
+#: src/view/shell/desktop/LeftNav.tsx:413
+#: src/view/shell/Drawer.tsx:70
+#: src/view/shell/Drawer.tsx:544
+#: src/view/shell/Drawer.tsx:545
+msgid "Profile"
+msgstr "Profil"
+
+#: src/view/screens/Settings.tsx:808
+msgid "Protect your account by verifying your email."
+msgstr "Amankan akun Anda dengan memverifikasi email Anda."
+
+#: src/view/screens/ModerationModlists.tsx:61
+msgid "Public, shareable lists of users to mute or block in bulk."
+msgstr "Publik, daftar yang dapat dibagikan oleh pengguna untuk membisukan atau memblokir massal."
+
+#: src/view/screens/Lists.tsx:61
+msgid "Public, shareable lists which can drive feeds."
+msgstr "Publik, daftar yang dapat dibagikan dan dapat berimbas ke feed."
+
+#: src/view/com/modals/Repost.tsx:52
+#: src/view/com/util/post-ctrls/RepostButton.web.tsx:58
+msgid "Quote post"
+msgstr "Kutip postingan"
+
+#: src/view/com/modals/Repost.tsx:56
+msgid "Quote Post"
+msgstr "Kutip Postingan"
+
+#: src/view/com/modals/EditImage.tsx:236
+msgid "Ratios"
+msgstr "Rasio"
+
+#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:116
+msgid "Recommended Feeds"
+msgstr "Feed Direkomendasikan"
+
+#: src/view/com/auth/onboarding/RecommendedFollows.tsx:180
+msgid "Recommended Users"
+msgstr "Pengguna Direkomendasikan"
+
+#: src/view/com/modals/ListAddRemoveUsers.tsx:264
+#: src/view/com/modals/SelfLabel.tsx:83
+#: src/view/com/modals/UserAddRemoveLists.tsx:193
+#: src/view/com/util/UserAvatar.tsx:282
+#: src/view/com/util/UserBanner.tsx:89
+msgid "Remove"
+msgstr "Hapus"
+
+#: src/view/com/feeds/FeedSourceCard.tsx:106
+msgid "Remove {0} from my feeds?"
+msgstr "Hapus {0} dari daftar feed saya?"
+
+#: src/view/com/util/AccountDropdownBtn.tsx:22
+msgid "Remove account"
+msgstr "Hapus akun"
+
+#: src/view/com/posts/FeedErrorMessage.tsx:130
+msgid "Remove feed"
+msgstr "Hapus feed"
+
+#: src/view/com/feeds/FeedSourceCard.tsx:105
+#: src/view/com/feeds/FeedSourceCard.tsx:172
+#: src/view/screens/ProfileFeed.tsx:270
+msgid "Remove from my feeds"
+msgstr "Hapus dari feed saya"
+
+#: src/view/com/composer/photos/Gallery.tsx:167
+msgid "Remove image"
+msgstr "Hapus gambar"
+
+#: src/view/com/composer/ExternalEmbed.tsx:70
+msgid "Remove image preview"
+msgstr "Hapus pratinjau gambar"
+
+#: src/view/com/feeds/FeedSourceCard.tsx:173
+msgid "Remove this feed from my feeds?"
+msgstr "Hapus feed ini dari feed saya?"
+
+#: src/view/com/posts/FeedErrorMessage.tsx:131
+msgid "Remove this feed from your saved feeds?"
+msgstr "Hapus feed ini dari feed tersimpan Anda?"
+
+#: src/view/com/modals/ListAddRemoveUsers.tsx:199
+#: src/view/com/modals/UserAddRemoveLists.tsx:136
+msgid "Removed from list"
+msgstr "Dihapus dari daftar"
+
+#: src/view/screens/Profile.tsx:162
+msgid "Replies"
+msgstr "Balasan"
+
+#: src/view/com/threadgate/WhoCanReply.tsx:98
+msgid "Replies to this thread are disabled"
+msgstr "Balasan ke utas ini dinonaktifkan"
+
+#: src/view/screens/PreferencesHomeFeed.tsx:135
+msgid "Reply Filters"
+msgstr "Penyaring Balasan"
+
+#: src/view/com/modals/report/Modal.tsx:166
+msgid "Report {collectionName}"
+msgstr "Laporkan {collectionName}"
+
+#: src/view/com/profile/ProfileHeader.tsx:404
+msgid "Report Account"
+msgstr "Laporkan Akun"
+
+#: src/view/screens/ProfileFeed.tsx:290
+msgid "Report feed"
+msgstr "Laporkan feed"
+
+#: src/view/screens/ProfileList.tsx:425
+msgid "Report List"
+msgstr "Laporkan Daftar"
+
+#: src/view/com/modals/report/SendReportButton.tsx:37
+#: src/view/com/util/forms/PostDropdownBtn.tsx:196
+msgid "Report post"
+msgstr "Laporkan postingan"
+
+#: src/view/com/util/post-ctrls/RepostButton.web.tsx:48
+msgid "Repost"
+msgstr "Posting ulang"
+
+#: src/view/com/util/post-ctrls/RepostButton.web.tsx:94
+#: src/view/com/util/post-ctrls/RepostButton.web.tsx:105
+msgid "Repost or quote post"
+msgstr "Posting ulang atau kutip postingan"
+
+#: src/view/screens/PostRepostedBy.tsx:27
+msgid "Reposted by"
+msgstr "Diposting ulang oleh"
+
+#: src/view/com/modals/ChangeEmail.tsx:181
+#: src/view/com/modals/ChangeEmail.tsx:183
+msgid "Request Change"
+msgstr "Ajukan Perubahan"
+
+#: src/view/com/auth/create/Step2.tsx:53
+msgid "Required for this provider"
+msgstr "Diwajibkan untuk provider ini"
+
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:108
+msgid "Reset code"
+msgstr "Kode reset"
+
+#: src/view/screens/Settings.tsx:686
+msgid "Reset onboarding state"
+msgstr "Reset status onboarding"
+
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:98
+msgid "Reset password"
+msgstr "Reset kata sandi"
+
+#: src/view/screens/Settings.tsx:676
+msgid "Reset preferences state"
+msgstr Reset status preferensi"
+
+#: src/view/screens/Settings.tsx:684
+msgid "Resets the onboarding state"
+msgstr "Reset status onboarding"
+
+#: src/view/screens/Settings.tsx:674
+msgid "Resets the preferences state"
+msgstr "Reset status preferensi"
+
+#: src/view/com/auth/create/CreateAccount.tsx:163
+#: src/view/com/auth/create/CreateAccount.tsx:167
+#: src/view/com/auth/login/LoginForm.tsx:258
+#: src/view/com/auth/login/LoginForm.tsx:261
+#: src/view/com/util/error/ErrorMessage.tsx:55
+#: src/view/com/util/error/ErrorScreen.tsx:65
+msgid "Retry"
+msgstr "Ulangi"
+
+#: src/view/com/modals/AltImage.tsx:115
+#: src/view/com/modals/BirthDateSettings.tsx:93
+#: src/view/com/modals/BirthDateSettings.tsx:96
+#: src/view/com/modals/ChangeHandle.tsx:173
+#: src/view/com/modals/CreateOrEditList.tsx:249
+#: src/view/com/modals/CreateOrEditList.tsx:257
+#: src/view/com/modals/EditProfile.tsx:223
+msgid "Save"
+msgstr "Simpan"
+
+#: src/view/com/modals/AltImage.tsx:106
+msgid "Save alt text"
+msgstr "Simpan teks alt"
+
+#: src/view/com/modals/EditProfile.tsx:231
+msgid "Save Changes"
+msgstr "Simpan Perubahan"
+
+#: src/view/com/modals/ChangeHandle.tsx:170
+msgid "Save handle change"
+msgstr "Simpan perubahan handle"
+
+#: src/view/com/modals/crop-image/CropImage.web.tsx:144
+msgid "Save image crop"
+msgstr "Simpan potongan gambar"
+
+#: src/view/screens/SavedFeeds.tsx:122
+msgid "Saved Feeds"
+msgstr "Simpan Feed"
+
+#: src/view/com/modals/ListAddRemoveUsers.tsx:75
+#: src/view/com/util/forms/SearchInput.tsx:64
+#: src/view/screens/Search/Search.tsx:393
+#: src/view/screens/Search/Search.tsx:559
+#: src/view/shell/bottom-bar/BottomBar.tsx:159
+#: src/view/shell/desktop/LeftNav.tsx:322
+#: src/view/shell/desktop/Search.tsx:161
+#: src/view/shell/desktop/Search.tsx:170
+#: src/view/shell/Drawer.tsx:362
+#: src/view/shell/Drawer.tsx:363
+msgid "Search"
+msgstr "Cari"
+
+#: src/view/com/auth/LoggedOut.tsx:104
+#: src/view/com/auth/LoggedOut.tsx:105
+msgid "Search for users"
+msgstr "Cari pengguna"
+
+#: src/view/com/modals/ChangeEmail.tsx:110
+msgid "Security Step Required"
+msgstr "Langkah Keamanan Diperlukan"
+
+#: src/view/com/auth/HomeLoggedOutCTA.tsx:39
+msgid "See what's next"
+msgstr "Lihat apa yang akan datang"
+
+#: src/view/com/modals/ServerInput.tsx:75
+msgid "Select Bluesky Social"
+msgstr "Pilih Bluesky Social"
+
+#: src/view/com/auth/login/Login.tsx:117
+msgid "Select from an existing account"
+msgstr "Pilih dari akun yang sudah ada"
+
+#: src/view/com/auth/login/LoginForm.tsx:143
+msgid "Select service"
+msgstr "Pilih layanan"
+
+#: src/view/screens/LanguageSettings.tsx:281
+msgid "Select which languages you want your subscribed feeds to include. If none are selected, all languages will be shown."
+msgstr "Pilih bahasa yang ingin Anda langgani di feed Anda. Jika tidak memilih, maka semua bahasa akan ditampilkan."
+
+#: src/view/screens/LanguageSettings.tsx:98
+msgid "Select your app language for the default text to display in the app"
+msgstr "Pilih bahasa aplikasi Anda untuk tampilan teks bawaan dalam aplikasi"
+
+#: src/view/screens/LanguageSettings.tsx:190
+msgid "Select your preferred language for translations in your feed."
+msgstr "Pilih bahasa yang disukai untuk penerjemahaan feed Anda."
+
+#: src/view/com/modals/VerifyEmail.tsx:196
+msgid "Send Confirmation Email"
+msgstr "Kirim Email Konfirmasi"
+
+#: src/view/com/modals/DeleteAccount.tsx:127
+msgid "Send email"
+msgstr "Kirim email"
+
+#: src/view/com/modals/DeleteAccount.tsx:138
+msgid "Send Email"
+msgstr "Kirim Email"
+
+#: src/view/shell/Drawer.tsx:295
+#: src/view/shell/Drawer.tsx:316
+msgid "Send feedback"
+msgstr "Kirim masukan"
+
+#: src/view/com/modals/report/SendReportButton.tsx:45
+msgid "Send Report"
+msgstr "Kirim Laporan"
+
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:78
+msgid "Set new password"
+msgstr "Buat kata sandi baru"
+
+#: src/view/screens/PreferencesHomeFeed.tsx:216
+msgid "Set this setting to \"No\" to hide all quote posts from your feed. Reposts will still be visible."
+msgstr "Pilih \"Tidak\" untuk menyembunyikan semua kutipan postingan dari feed Anda. Posting ulang tetap akan terlihat."
+
+#: src/view/screens/PreferencesHomeFeed.tsx:113
+msgid "Set this setting to \"No\" to hide all replies from your feed."
+msgstr "Pilih \"Tidak\" untuk menyembunyikan semua balasan dari feed Anda."
+
+#: src/view/screens/PreferencesHomeFeed.tsx:182
+msgid "Set this setting to \"No\" to hide all reposts from your feed."
+msgstr "Pilih \"Tidak\" untuk menyembunyikan semua posting ulang dari feed Anda."
+
+#: src/view/screens/PreferencesThreads.tsx:116
+msgid "Set this setting to \"Yes\" to show replies in a threaded view. This is an experimental feature."
+msgstr "Pilih \"Ya\" untuk menampilkan balasan dalam bentuk utasan. Ini merupakan fitur eksperimental."
+
+#: src/view/screens/PreferencesHomeFeed.tsx:252
+msgid "Set this setting to \"Yes\" to show samples of your saved feeds in your following feed. This is an experimental feature."
+msgstr "Pilih \"Ya\" untuk menampilkan beberapa sampel dari feed tersimpan Anda pada feed mengikuti. Ini merupakan fitur eksperimental."
+
+#: src/view/screens/Settings.tsx:277
+#: src/view/shell/desktop/LeftNav.tsx:431
+#: src/view/shell/Drawer.tsx:565
+#: src/view/shell/Drawer.tsx:566
+msgid "Settings"
+msgstr "Pengaturan"
+
+#: src/view/com/modals/SelfLabel.tsx:125
+msgid "Sexual activity or erotic nudity."
+msgstr "Aktivitas seksual atau ketelanjangan erotis."
+
+#: src/view/com/profile/ProfileHeader.tsx:338
+#: src/view/com/util/forms/PostDropdownBtn.tsx:139
+#: src/view/screens/ProfileList.tsx:384
+msgid "Share"
+msgstr "Bagikan"
+
+#: src/view/screens/ProfileFeed.tsx:302
+msgid "Share feed"
+msgstr "Bagikan feed"
+
+#: src/view/com/util/moderation/ContentHider.tsx:105
+#: src/view/screens/Settings.tsx:316
+msgid "Show"
+msgstr "Tampilkan"
+
+#: src/view/com/util/moderation/ScreenHider.tsx:132
+msgid "Show anyway"
+msgstr "Tetap tampilkan"
+
+#: src/view/screens/PreferencesHomeFeed.tsx:249
+msgid "Show Posts from My Feeds"
+msgstr "Tampilkan Postingan dari Feed Saya"
+
+#: src/view/screens/PreferencesHomeFeed.tsx:213
+msgid "Show Quote Posts"
+msgstr "Tampilkan Kutipan Postingan"
+
+#: src/view/screens/PreferencesHomeFeed.tsx:110
+msgid "Show Replies"
+msgstr "Tampilkan Balasan"
+
+#: src/view/screens/PreferencesThreads.tsx:94
+msgid "Show replies by people you follow before all other replies."
+msgstr "Tampilkan balasan dari orang yang Anda ikuti sebelum balasan lainnya."
+
+#: src/view/screens/PreferencesHomeFeed.tsx:179
+msgid "Show Reposts"
+msgstr "Tampilkan Posting Ulang"
+
+#: src/view/com/notifications/FeedItem.tsx:337
+msgid "Show users"
+msgstr "Tampilkan pengguna"
+
+#: src/view/com/auth/HomeLoggedOutCTA.tsx:70
+#: src/view/com/auth/login/Login.tsx:98
+#: src/view/com/auth/SplashScreen.tsx:54
+#: src/view/shell/bottom-bar/BottomBar.tsx:285
+#: src/view/shell/bottom-bar/BottomBar.tsx:286
+#: src/view/shell/bottom-bar/BottomBar.tsx:288
+#: src/view/shell/bottom-bar/BottomBarWeb.tsx:177
+#: src/view/shell/bottom-bar/BottomBarWeb.tsx:178
+#: src/view/shell/bottom-bar/BottomBarWeb.tsx:180
+#: src/view/shell/NavSignupCard.tsx:58
+#: src/view/shell/NavSignupCard.tsx:59
+msgid "Sign in"
+msgstr "Masuk"
+
+#: src/view/com/auth/HomeLoggedOutCTA.tsx:78
+#: src/view/com/auth/SplashScreen.tsx:57
+#: src/view/com/auth/SplashScreen.web.tsx:87
+msgid "Sign In"
+msgstr "Masuk"
+
+#: src/view/com/auth/login/ChooseAccountForm.tsx:44
+msgid "Sign in as {0}"
+msgstr "Masuk sebagai {0}"
+
+#: src/view/com/auth/login/ChooseAccountForm.tsx:118
+#: src/view/com/auth/login/Login.tsx:116
+msgid "Sign in as..."
+msgstr "Masuk sebagai..."
+
+#: src/view/com/auth/login/LoginForm.tsx:130
+msgid "Sign into"
+msgstr "Masuk ke"
+
+#: src/view/com/modals/SwitchAccount.tsx:64
+#: src/view/com/modals/SwitchAccount.tsx:67
+msgid "Sign out"
+msgstr "Keluar"
+
+#: src/view/shell/bottom-bar/BottomBar.tsx:275
+#: src/view/shell/bottom-bar/BottomBar.tsx:276
+#: src/view/shell/bottom-bar/BottomBar.tsx:278
+#: src/view/shell/bottom-bar/BottomBarWeb.tsx:167
+#: src/view/shell/bottom-bar/BottomBarWeb.tsx:168
+#: src/view/shell/bottom-bar/BottomBarWeb.tsx:170
+#: src/view/shell/NavSignupCard.tsx:49
+#: src/view/shell/NavSignupCard.tsx:50
+#: src/view/shell/NavSignupCard.tsx:52
+msgid "Sign up"
+msgstr "Daftar"
+
+#: src/view/shell/NavSignupCard.tsx:42
+msgid "Sign up or sign in to join the conversation"
+msgstr "Daftar atau masuk untuk bergabung dalam obrolan"
+
+#: src/view/com/util/moderation/ScreenHider.tsx:76
+msgid "Sign-in Required"
+msgstr "Dibutuhkan Masuk"
+
+#: src/view/screens/Settings.tsx:327
+msgid "Signed in as"
+msgstr "Masuk sebagai"
+
+#: src/view/com/auth/onboarding/WelcomeMobile.tsx:33
+msgid "Skip"
+msgstr "Lewati"
+
+#: src/view/screens/PreferencesThreads.tsx:69
+msgid "Sort Replies"
+msgstr "Urutkan Balasan"
+
+#: src/view/screens/PreferencesThreads.tsx:72
+msgid "Sort replies to the same post by:"
+msgstr Urutkan balasan ke postingan yang sama berdasarkan:"
+
+#: src/view/com/modals/crop-image/CropImage.web.tsx:122
+msgid "Square"
+msgstr "Persegi"
+
+#: src/view/com/auth/create/Step1.tsx:90
+#: src/view/com/modals/ServerInput.tsx:62
+msgid "Staging"
+msgstr "Staging"
+
+#: src/view/screens/Settings.tsx:730
+msgid "Status page"
+msgstr "Halaman status"
+
+#: src/view/screens/Settings.tsx:666
+msgid "Storybook"
+msgstr "Storybook"
+
+#: src/view/com/modals/AppealLabel.tsx:101
+msgid "Submit"
+msgstr "Kirim"
+
+#: src/view/screens/ProfileList.tsx:574
+msgid "Subscribe"
+msgstr "Langganan"
+
+#: src/view/screens/ProfileList.tsx:570
+msgid "Subscribe to this list"
+msgstr "Langganan ke daftar ini"
+
+#: src/view/screens/Search/Search.tsx:349
+msgid "Suggested Follows"
+msgstr "Saran untuk Diikuti"
+
+#: src/view/screens/Support.tsx:30
+#: src/view/screens/Support.tsx:33
+msgid "Support"
+msgstr "Dukungan"
+
+#: src/view/com/modals/SwitchAccount.tsx:115
+msgid "Switch Account"
+msgstr "Pindah Akun"
+
+#: src/view/screens/Settings.tsx:646
+msgid "System log"
+msgstr "Log sistem"
+
+#: src/view/com/modals/crop-image/CropImage.web.tsx:112
+msgid "Tall"
+msgstr "Tinggi"
+
+#: src/view/shell/desktop/RightNav.tsx:85
+msgid "Terms"
+msgstr "Ketentuan"
+
+#: src/view/screens/Settings.tsx:744
+#: src/view/screens/TermsOfService.tsx:29
+#: src/view/shell/Drawer.tsx:256
+msgid "Terms of Service"
+msgstr "Ketentuan Layanan"
+
+#: src/view/com/modals/AppealLabel.tsx:70
+#: src/view/com/modals/report/InputIssueDetails.tsx:50
+msgid "Text input field"
+msgstr "Area input teks"
+
+#: src/view/com/profile/ProfileHeader.tsx:306
+msgid "The account will be able to interact with you after unblocking."
+msgstr "Akun ini akan dapat berinteraksi dengan Anda setelah blokir dibuka."
+
+#: src/view/screens/CommunityGuidelines.tsx:36
+msgid "The Community Guidelines have been moved to <0/>"
+msgstr "Panduan Komunitas telah dipindahkan ke <0/>"
+
+#: src/view/screens/CopyrightPolicy.tsx:33
+msgid "The Copyright Policy has been moved to <0/>"
+msgstr "Kebijakan Hak Cipta telah dipindahkan ke <0/>"
+
+#: src/view/com/post-thread/PostThread.tsx:433
+msgid "The post may have been deleted."
+msgstr "Postingan mungkin telah dihapus."
+
+#: src/view/screens/PrivacyPolicy.tsx:33
+msgid "The Privacy Policy has been moved to <0/>"
+msgstr "Kebijakan Privasi telah dipindahkan ke <0/>"
+
+#: src/view/screens/Support.tsx:36
+msgid "The support form has been moved. If you need help, please<0/> or visit {HELP_DESK_URL} to get in touch with us."
+msgstr "Formulir bantuan telah dipindahkan. Jika Anda butuh bantuan, silakan<0/> atau kunjungi {HELP_DESK_URL} untuk menghubungi kami."
+
+#: src/view/screens/TermsOfService.tsx:33
+msgid "The Terms of Service have been moved to"
+msgstr "Ketentuan Layanan telah dipindahkan ke"
+
+#: src/view/com/util/ErrorBoundary.tsx:35
+msgid "There was an unexpected issue in the application. Please let us know if this happened to you!"
+msgstr "Sepertinya ada masalah pada aplikasi. Harap beri tahu kami jika Anda mengalaminya!"
+
+#: src/view/com/util/moderation/LabelInfo.tsx:45
+#~ msgid "This {0} has been labeled."
+#~ msgstr "Ini {0} telah diberi label."
+
+#: src/view/com/util/moderation/ScreenHider.tsx:88
+msgid "This {screenDescription} has been flagged:"
+msgstr "Ini {screenDescription} telah ditandai:"
+
+#: src/view/com/util/moderation/ScreenHider.tsx:83
+msgid "This account has requested that users sign in to view their profile."
+msgstr "Akun ini mewajibkan pengguna untuk masuk agar bisa melihat profilnya."
+
+#: src/view/com/posts/FeedErrorMessage.tsx:107
+msgid "This content is not viewable without a Bluesky account."
+msgstr "Konten ini tidak dapat dilihat tanpa akun Bluesky."
+
+#: src/view/com/posts/FeedErrorMessage.tsx:113
+msgid "This feed is currently receiving high traffic and is temporarily unavailable. Please try again later."
+msgstr "Feed ini sedang menerima terlalu banyak trafik dan sementara tidak tersedia. Silakan coba lagi nanti."
+
+#: src/view/com/modals/BirthDateSettings.tsx:61
+msgid "This information is not shared with other users."
+msgstr "Informasi ini tidak akan dibagikan ke pengguna lainnya."
+
+#: src/view/com/modals/VerifyEmail.tsx:113
+msgid "This is important in case you ever need to change your email or reset your password."
+msgstr "Ini penting jika Anda butuh untuk mengganti email atau reset kata sandi Anda nantinya."
+
+#: src/view/com/auth/create/Step1.tsx:55
+msgid "This is the service that keeps you online."
+msgstr "Ini adalah layanan yang menjaga Anda tetap online."
+
+#: src/view/com/modals/LinkWarning.tsx:56
+msgid "This link is taking you to the following website:"
+msgstr "Tautan ini akan membawa Anda ke website:"
+
+#: src/view/com/post-thread/PostThreadItem.tsx:123
+msgid "This post has been deleted."
+msgstr "Postingan ini telah dihapus."
+
+#: src/view/com/modals/SelfLabel.tsx:137
+msgid "This warning is only available for posts with media attached."
+msgstr "Peringatan ini hanya tersedia untuk postingan dengan lampiran media."
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:178
+msgid "This will hide this post from your feeds."
+msgstr "Ini akan menyembunyikan postingan ini dari feed Anda."
+
+#: src/view/screens/PreferencesThreads.tsx:53
+#: src/view/screens/Settings.tsx:503
+msgid "Thread Preferences"
+msgstr "Preferensi Utasan"
+
+#: src/view/screens/PreferencesThreads.tsx:113
+msgid "Threaded Mode"
+msgstr "Mode Utasan"
+
+#: src/view/com/util/forms/DropdownButton.tsx:230
+msgid "Toggle dropdown"
+msgstr "Beralih dropdown"
+
+#: src/view/com/modals/EditImage.tsx:271
+msgid "Transformations"
+msgstr "Transformasi"
+
+#: src/view/com/post-thread/PostThreadItem.tsx:704
+#: src/view/com/post-thread/PostThreadItem.tsx:706
+#: src/view/com/util/forms/PostDropdownBtn.tsx:111
+msgid "Translate"
+msgstr "Terjemahkan"
+
+#: src/view/com/util/error/ErrorScreen.tsx:73
+msgid "Try again"
+msgstr "Ulangi"
+
+#: src/view/screens/ProfileList.tsx:472
+msgid "Un-block list"
+msgstr "Buka blokir daftar"
+
+#: src/view/screens/ProfileList.tsx:457
+msgid "Un-mute list"
+msgstr "Bunyikan daftar"
+
+#: src/view/com/auth/create/CreateAccount.tsx:64
+#: src/view/com/auth/login/Login.tsx:76
+#: src/view/com/auth/login/LoginForm.tsx:117
+msgid "Unable to contact your service. Please check your Internet connection."
+msgstr "Tidak dapat terhubung ke layanan. Mohon periksa koneksi internet Anda."
+
+#: src/view/com/profile/ProfileHeader.tsx:466
+#: src/view/com/profile/ProfileHeader.tsx:469
+msgid "Unblock"
+msgstr "Buka blokir"
+
+#: src/view/com/profile/ProfileHeader.tsx:304
+#: src/view/com/profile/ProfileHeader.tsx:388
+msgid "Unblock Account"
+msgstr "Buka blokir Akun"
+
+#: src/view/com/util/post-ctrls/RepostButton.web.tsx:48
+msgid "Undo repost"
+msgstr "Batalkan posting ulang"
+
+#: src/view/com/auth/create/state.ts:210
+msgid "Unfortunately, you do not meet the requirements to create an account."
+msgstr "Sayangnya, Anda tidak memenuhi syarat untuk membuat akun."
+
+#: src/view/com/profile/ProfileHeader.tsx:369
+msgid "Unmute Account"
+msgstr "Bunyikan Akun"
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:157
+msgid "Unmute thread"
+msgstr "Bunyikan utasan"
+
+#: src/view/screens/ProfileList.tsx:440
+msgid "Unpin moderation list"
+msgstr "Lepas sematan daftar moderasi"
+
+#: src/view/com/modals/UserAddRemoveLists.tsx:54
+msgid "Update {displayName} in Lists"
+msgstr "Memperbarui {displayName} di Daftar"
+
+#: src/lib/hooks/useOTAUpdate.ts:15
+msgid "Update Available"
+msgstr "Pembaruan Tersedia"
+
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:172
+msgid "Updating..."
+msgstr "Memperbarui..."
+
+#: src/view/com/modals/ChangeHandle.tsx:453
+msgid "Upload a text file to:"
+msgstr "Unggah berkas teks ke:"
+
+#: src/view/screens/AppPasswords.tsx:194
+msgid "Use app passwords to login to other Bluesky clients without giving full access to your account or password."
+msgstr "Gunakan kata sandi aplikasi untuk masuk ke klien Bluesky lainnya tanpa memberikan akses penuh ke akun atau kata sandi Anda."
+
+#: src/view/com/modals/ChangeHandle.tsx:513
+msgid "Use default provider"
+msgstr "Gunakan layanan bawaan"
+
+#: src/view/com/modals/AddAppPasswords.tsx:150
+msgid "Use this to sign into the other app along with your handle."
+msgstr "Gunakan ini untuk masuk ke aplikasi lain dengan handle Anda."
+
+#: src/view/com/modals/InviteCodes.tsx:197
+msgid "Used by:"
+msgstr "Digunakan oleh:"
+
+#: src/view/com/auth/create/Step3.tsx:38
+msgid "User handle"
+msgstr "Handle pengguna"
+
+#: src/view/screens/Lists.tsx:58
+msgid "User Lists"
+msgstr "Daftar Pengguna"
+
+#: src/view/com/auth/login/LoginForm.tsx:170
+#: src/view/com/auth/login/LoginForm.tsx:187
+msgid "Username or email address"
+msgstr "Nama pengguna atau alamat email"
+
+#: src/view/screens/ProfileList.tsx:738
+msgid "Users"
+msgstr "Pengguna"
+
+#: src/view/com/threadgate/WhoCanReply.tsx:143
+msgid "users followed by <0/>"
+msgstr "pengguna yang diikuti <0/>"
+
+#: src/view/com/modals/Threadgate.tsx:106
+msgid "Users in \"{0}\""
+msgstr "Pengguna di \"{0}\""
+
+#: src/view/screens/Settings.tsx:769
+msgid "Verify email"
+msgstr "Verifikasi email"
+
+#: src/view/screens/Settings.tsx:794
+msgid "Verify my email"
+msgstr "Verifikasi email saya"
+
+#: src/view/screens/Settings.tsx:803
+msgid "Verify My Email"
+msgstr "Verifikasi Email Saya"
+
+#: src/view/com/modals/ChangeEmail.tsx:205
+#: src/view/com/modals/ChangeEmail.tsx:207
+msgid "Verify New Email"
+msgstr "Verifikasi Email Baru"
+
+#: src/view/screens/Log.tsx:52
+msgid "View debug entry"
+msgstr "Lihat entri debug"
+
+#: src/view/com/profile/ProfileSubpageHeader.tsx:128
+msgid "View the avatar"
+msgstr "Lihat avatar"
+
+#: src/view/com/modals/LinkWarning.tsx:73
+msgid "Visit Site"
+msgstr "Kunjungi Halaman"
+
+#: src/view/com/auth/create/CreateAccount.tsx:121
+msgid "We're so excited to have you join us!"
+msgstr "Kami sangat senang Anda bergabung dengan kami!"
+
+#: src/view/screens/Search/Search.tsx:236
+msgid "We're sorry, but your search could not be completed. Please try again in a few minutes."
+msgstr "Maaf, pencarian Anda tidak dapat dilakukan. Mohon coba lagi dalam beberapa menit."
+
+#: src/view/screens/NotFound.tsx:48
+msgid "We're sorry! We can't find the page you were looking for."
+msgstr "Maaf! Kami tidak dapat menemukan halaman yang Anda cari."
+
+#: src/view/com/auth/onboarding/WelcomeMobile.tsx:46
+msgid "Welcome to <0>Bluesky0>"
+msgstr "Selamat Datang di <0>Bluesky0>"
+
+#: src/view/com/modals/report/Modal.tsx:169
+msgid "What is the issue with this {collectionName}?"
+msgstr "Apa yang bermasalah dengan {collectionName}?"
+
+#: src/view/com/auth/SplashScreen.tsx:34
+#~ msgid "What's next?"
+#~ msgstr "Apa selanjutnya?"
+
+#: src/view/com/auth/SplashScreen.tsx:34
+msgid "What's up?"
+msgstr "Apa kabar?"
+
+#: src/view/com/modals/lang-settings/PostLanguagesSettings.tsx:78
+msgid "Which languages are used in this post?"
+msgstr "Bahasa apa yang digunakan di postingan ini?"
+
+#: src/view/com/modals/lang-settings/ContentLanguagesSettings.tsx:77
+msgid "Which languages would you like to see in your algorithmic feeds?"
+msgstr "Bahasa apa yang ingin Anda lihat di feed Anda?"
+
+#: src/view/com/composer/threadgate/ThreadgateBtn.tsx:47
+#: src/view/com/modals/Threadgate.tsx:66
+msgid "Who can reply"
+msgstr "Siapa yang dapat membalas"
+
+#: src/view/com/modals/crop-image/CropImage.web.tsx:102
+msgid "Wide"
+msgstr "Lebar"
+
+#: src/view/com/composer/Composer.tsx:409
+msgid "Write post"
+msgstr "Tulis postingan"
+
+#: src/view/com/composer/Prompt.tsx:33
+msgid "Write your reply"
+msgstr "Tulis balasan Anda"
+
+#: src/view/screens/PreferencesHomeFeed.tsx:192
+#: src/view/screens/PreferencesHomeFeed.tsx:227
+#: src/view/screens/PreferencesHomeFeed.tsx:262
+msgid "Yes"
+msgstr "Ya"
+
+#: src/view/com/auth/create/Step1.tsx:106
+msgid "You can change hosting providers at any time."
+msgstr "Anda dapat mengganti layanan hosting kapan pun."
+
+#: src/view/com/auth/login/Login.tsx:158
+#: src/view/com/auth/login/PasswordUpdatedForm.tsx:31
+msgid "You can now sign in with your new password."
+msgstr "Sekarang Anda dapat masuk dengan kata sandi baru."
+
+#: src/view/com/modals/InviteCodes.tsx:64
+msgid "You don't have any invite codes yet! We'll send you some when you've been on Bluesky for a little longer."
+msgstr "Anda belum memiliki kode undangan! Kami akan mengirimkan kode saat Anda sudah sedikit lama di Bluesky."
+
+#: src/view/screens/SavedFeeds.tsx:102
+msgid "You don't have any pinned feeds."
+msgstr "Anda tidak memiliki feed yang disematkan."
+
+#: src/view/screens/Feeds.tsx:383
+msgid "You don't have any saved feeds!"
+msgstr "Anda tidak memiliki feed yang disimpan!"
+
+#: src/view/screens/SavedFeeds.tsx:135
+msgid "You don't have any saved feeds."
+msgstr "Anda tidak memiliki feed yang disimpan."
+
+#: src/view/com/post-thread/PostThread.tsx:381
+msgid "You have blocked the author or you have been blocked by the author."
+msgstr "Anda telah memblokir atau diblokir oleh penulis ini."
+
+#: src/view/com/feeds/ProfileFeedgens.tsx:134
+msgid "You have no feeds."
+msgstr "Anda tidak punya feed."
+
+#: src/view/com/lists/MyLists.tsx:89
+#: src/view/com/lists/ProfileLists.tsx:138
+msgid "You have no lists."
+msgstr "Anda tidak punya daftar."
+
+#: src/view/screens/ModerationBlockedAccounts.tsx:132
+msgid "You have not blocked any accounts yet. To block an account, go to their profile and selected \"Block account\" from the menu on their account."
+msgstr "Anda belum memblokir akun lain. Untuk memblokir akun, kunjungi profil mereka dan pilih \"Blokir akun\" pada menu di akun mereka."
+
+#: src/view/screens/AppPasswords.tsx:86
+msgid "You have not created any app passwords yet. You can create one by pressing the button below."
+msgstr "Anda belum membuat kata sandi aplikasi. Anda dapat membuatnya dengan menekan tombol di bawah ini."
+
+#: src/view/screens/ModerationMutedAccounts.tsx:131
+msgid "You have not muted any accounts yet. To mute an account, go to their profile and selected \"Mute account\" from the menu on their account."
+msgstr "Anda belum membisukan akun lain. Untuk membisukan akun, kunjungi profil mereka dan pilih \"Bisukan akun\" pada menu di akun mereka."
+
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:81
+msgid "You will receive an email with a \"reset code.\" Enter that code here, then enter your new password."
+msgstr "Anda akan menerima email berisikan \"kode reset\". Masukkan kode tersebut di sini, lalu masukkan kata sandi baru."
+
+#: src/view/com/auth/create/Step2.tsx:43
+msgid "Your account"
+msgstr "Akun Anda"
+
+#: src/view/com/auth/create/Step2.tsx:122
+msgid "Your birth date"
+msgstr "Tanggal lahir Anda"
+
+#: src/view/com/auth/create/state.ts:102
+msgid "Your email appears to be invalid."
+msgstr "Email Anda tidak valid."
+
+#: src/view/com/modals/Waitlist.tsx:107
+msgid "Your email has been saved! We'll be in touch soon."
+msgstr "Email Anda telah disimpan. Kami akan segera menghubungi Anda."
+
+#: src/view/com/modals/ChangeEmail.tsx:125
+msgid "Your email has been updated but not verified. As a next step, please verify your new email."
+msgstr "Alamat email Anda telah diperbarui namun belum diverifikasi. Silakan verifikasi alamat email baru Anda."
+
+#: src/view/com/modals/VerifyEmail.tsx:108
+msgid "Your email has not yet been verified. This is an important security step which we recommend."
+msgstr "Alamat email Anda belum diverifikasi. Ini merupakan langkah keamanan penting yang kami rekomendasikan."
+
+#: src/view/com/auth/create/Step3.tsx:42
+#: src/view/com/modals/ChangeHandle.tsx:270
+msgid "Your full handle will be"
+msgstr "Handle lengkap Anda akan menjadi"
+
+#: src/view/com/auth/create/Step1.tsx:53
+msgid "Your hosting provider"
+msgstr "Layanan hosting Anda"
+
+#: src/view/screens/Settings.tsx:402
+#: src/view/shell/desktop/RightNav.tsx:129
+#: src/view/shell/Drawer.tsx:655
+msgid "Your invite codes are hidden when logged in using an App Password"
+msgstr "Kode undangan Anda disembunyikan saat masuk menggunakan Kata Sandi Aplikasi"
+
+#: src/view/com/auth/onboarding/WelcomeMobile.tsx:59
+msgid "Your posts, likes, and blocks are public. Mutes are private."
+msgstr "Postingan, suka, dan blokir Anda bersifat publik. Bisukan bersifat privat."
+
+#: src/view/com/modals/SwitchAccount.tsx:82
+msgid "Your profile"
+msgstr "Profil Anda"
+
+#: src/view/com/auth/create/Step3.tsx:28
+msgid "Your user handle"
+msgstr "Handle Anda"
diff --git a/src/locale/locales/ja/messages.js b/src/locale/locales/ja/messages.js
deleted file mode 100644
index ccfd315f3b..0000000000
--- a/src/locale/locales/ja/messages.js
+++ /dev/null
@@ -1 +0,0 @@
-/*eslint-disable*/module.exports={messages:JSON.parse("{\"ebOBhv\":[[\"0\",\"plural\",{\"one\":[\"#\",\" invite code available\"],\"other\":[\"#\",\" invite codes available\"]}]],\"J/hVSQ\":[[\"0\"]],\"hZQerY\":[[\"0\"],\" \",[\"purposeLabel\"],\" リスト\"],\"zgN03j\":[[\"invitesAvailable\",\"plural\",{\"one\":[\"Invite codes: \",\"#\",\" available\"],\"other\":[\"Invite codes: \",\"#\",\" available\"]}]],\"OyEWua\":[[\"invitesAvailable\"],\" invite code available\"],\"eFIdHP\":[[\"invitesAvailable\"],\" invite codes available\"],\"wapGcj\":[[\"message\"]],\"umrH9L\":\"<0/> members\",\"gMjqbV\":\"<1>推奨1><2>フィード2><0>を選択0>\",\"F657la\":\"<1>推奨1><2>ユーザー2><0>をフォロー0>\",\"XCTqGE\":\"新しいバージョンのアプリが利用可能です。アプリを継続して使用するにはアップデートしてください。\",\"AnNF5e\":\"アクセシビリティ\",\"AeXO77\":\"アカウント\",\"4WY4MD\":\"アカウントオプション\",\"m16xKo\":\"追加\",\"fBBX+K\":\"コンテンツ警告を追加\",\"JU3hs2\":\"リストにユーザーを追加\",\"MPPZ54\":\"アカウントを追加\",\"LkA8jz\":\"ALTテキストを追加\",\"Z8idyM\":\"詳細を追加\",\"AoXl11\":\"レポートに詳細を追加\",\"iE6B/9\":\"リンクカードを追加\",\"EXHdP1\":\"リンクカードの追加:\",\"x6laaL\":\"次のDNSレコードをドメインに追加してください:\",\"UmzMP4\":\"リストに追加\",\"hCrQ0L\":\"マイフィードに追加\",\"GluCXm\":\"リストに追加\",\"jRrQFe\":\"返信がフィードに表示されるために必要な「いいね」の数を調整します。\",\"qLa52r\":\"成人向けコンテンツ\",\"sxkWRg\":\"アドバンス\",\"u2HO/d\":\"ALT\",\"u/DP73\":\"ALTテキスト\",\"0QlT7/\":\"ALTテキストは、視覚障害者や低視力者のために画像を説明し、すべての人に文脈を与えるのに役立ちます。\",\"woXbjq\":[\"Eメールが\",[\"0\"],\"に送信されました。以下に入力できる確認コードが含まれています。\"],\"Fon2dK\":[\"以前のアドレス\",[\"0\"],\"にEメールが送信されました。以下に入力できる確認コードが含まれています。\"],\"HZFm5R\":\"および\",\"fdjKGe\":\"アプリケーション言語\",\"SMmUnj\":\"アプリパスワード\",\"8q4WlH\":\"アプリパスワード\",\"e6un1h\":\"Appeal Decision\",\"c0PCYD\":\"Appeal this decision\",\"oifO1p\":\"Appeal this decision.\",\"aAIQg2\":\"外観\",\"SSDZ+T\":[\"本当にアプリパスワード「\",[\"name\"],\"」を削除しますか?\"],\"0BIeIs\":\"本当にこの下書きを破棄しますか?\",\"6foA8n\":\"本当ですか?\",\"/mSd6b\":\"本当ですか?これは元に戻せません。\",\"EbvWd3\":\"芸術的または非エロティックなヌード。\",\"iH8pgl\":\"戻る\",\"ehOkF+\":\"基本\",\"+gCI2a\":\"誕生日\",\"pieVBA\":\"誕生日:\",\"m1dqxu\":\"アカウントのブロック\",\"ffIfdM\":\"アカウントのブロック\",\"hIysMc\":\"Block list\",\"fdYcMy\":\"これらのアカウントをブロックしますか?\",\"KWykPE\":\"ブロックされたブロック\",\"JuqQpF\":\"ブロックされたアカウント\",\"HG4qt4\":\"ブロックされたアカウントは、スレッド内で返信したり、ユーザーに言及したり、その他の方法でユーザーとやり取りすることはできません。\",\"8LNSUt\":\"ブロックされたアカウントは、スレッド内で返信したり、ユーザーに言及したり、その他の方法でユーザーとやり取りすることはできません。あなたは相手のコンテンツを見ることができず、相手はあなたのコンテンツを見ることができなくなります。\",\"HFCE4A\":\"投稿をブロックしました。\",\"zl+QbX\":\"ブロックは公開されます。ブロックされたアカウントは、スレッド内で返信したり、ユーザーに言及したり、その他の方法でユーザーとやり取りすることはできません。\",\"7A9u1j\":\"Bluesky\",\"ZHmKSm\":\"Blueskyは柔軟です。\",\"odLrdl\":\"Blueskyは開いています。\",\"/LsWK4\":\"Blueskyはオープンです。\",\"C50OGr\":\"Blueskyはより健全なコミュニティを構築するために招待状を使用します。招待状をお持ちでない方の場合、waitlistに申し込めば招待状をお送りします。\",\"u9cCQU\":\"Bluesky will not show your profile and posts to logged-out users. Other apps may not honor this request. This does not make your account private.\",\"klVoaP\":\"Bluesky.Social\",\"qxBitM\":[\"ビルドバージョン \",[\"0\"],\" \",[\"1\"]],\"rT2cV+\":\"カメラ\",\"JGGrPC\":\"文字、数字、スペース、ハイフン、およびアンダースコアのみを含めることができます。長さは4文字以上32文字以下である必要があります。\",\"dEgA5A\":\"キャンセル\",\"aMH9rr\":\"アカウントの削除をキャンセル\",\"kc3E4R\":\"画像のALTテキストの追加をキャンセル\",\"wg4LHQ\":\"ハンドルの変更をキャンセル\",\"hFL1Li\":\"画像の切り抜きをキャンセル\",\"tijH8t\":\"プロフィールの編集をキャンセル\",\"Qe4C/d\":\"引用投稿をキャンセル\",\"5TviPn\":\"検索をキャンセル\",\"nss3UV\":\"Waitlistの登録をキャンセル\",\"o+XJ9D\":\"変更\",\"pQco5R\":\"ハンドルを変更\",\"Q5e1U/\":\"ハンドルを変更\",\"a3NAfL\":\"Eメールの変更\",\"4vatyk\":\"Eメールを変更\",\"Yn3C90\":\"推奨フィードを確認してください。「+」をタップすればフィードに追加されます。\",\"ioZXIH\":\"推奨ユーザーを確認してください。フォローする事であなたに合ったユーザーが見つかるかもしれません。\",\"/+X+/K\":\"Eメールの受信トレイを確認して、以下に入力するコードが記載されたメールが届いていないか確認してください:\",\"Rt502e\":\"サービスを選択\",\"/L45sc\":\"カスタムフィードを使用して経験を強化するアルゴリズムを選択します。\",\"Wk8hkn\":\"パスワードを選択\",\"Us7A1O\":\"レガシーストレージデータをすべてクリア\",\"X3zEXo\":\"すべてのレガシーストレージデータをクリア(この後再起動)\",\"zxFM2c\":\"すべてのストレージデータをクリア\",\"r+lhUL\":\"すべてのストレージデータをクリア(この後再起動)\",\"QbvBNV\":\"検索クエリをクリア\",\"flH7u/\":\"アラートを閉じる\",\"hYmnbk\":\"一番下の引き出しを閉じる\",\"47L1V1\":\"画像を閉じる\",\"l49ujN\":\"画像ビューアを閉じる\",\"UryHFO\":\"ナビゲーションフッターを閉じる\",\"KHzDTk\":\"コミュニティガイドライン\",\"o8UUti\":\"返信を作成\",\"7VpPHA\":\"確認\",\"q8upsf\":\"変更を確認\",\"8pNKIr\":\"コンテンツ言語の設定を確認\",\"tGg8Kt\":\"アカウントの削除を確認\",\"ioZOzk\":\"確認コード\",\"J28zul\":\"接続中...\",\"l879p1\":\"コンテンツフィルタリング\",\"m8j6up\":\"コンテンツフィルタリング\",\"/PlAsF\":\"コンテンツ言語\",\"cogwXi\":\"コンテンツ警告\",\"FG7AQv\":\"コンテンツ警告\",\"xGVfLh\":\"続行\",\"6V3Ea3\":\"コピー済み\",\"he3ygx\":\"コピー\",\"7LTXf4\":\"Copy link to list\",\"dWsPi5\":\"Copy link to post\",\"jw+abr\":\"Copy link to profile\",\"iQgJaz\":\"投稿テキストをコピー\",\"u40k/o\":\"著作権ポリシー\",\"7wWvgo\":\"フィードのロードに失敗\",\"8NNr/O\":\"リストのロードに失敗\",\"mpt9T+\":\"新しいアカウントを作成\",\"IS0nrP\":\"アカウントを作成\",\"6HbhpU\":\"新しいアカウントを作成\",\"MXSt4t\":[\"作成済み \",[\"0\"]],\"GAD3Dx\":\"カスタムドメイン\",\"ZQKLI1\":\"危険地帯\",\"ZDGm40\":\"アカウントを削除\",\"vzX5FB\":\"アカウントを削除\",\"gUEtxf\":\"アプリパスワードを削除\",\"84uE/A\":\"リストを削除\",\"ktknoE\":\"マイアカウントを削除\",\"szz0+N\":\"マイアカウントを削除…\",\"04G5Az\":\"投稿を削除\",\"FbPNuJ\":\"この投稿を削除しますか?\",\"u+1OHY\":\"投稿を削除しました。\",\"Nu4oKW\":\"説明\",\"dacKHE\":\"開発者サーバー\",\"2ygkE8\":\"開発者ツール\",\"bzSI52\":\"破棄\",\"BryYJR\":\"ドラフトを破棄\",\"9Y7FMD\":\"Discourage apps from showing my account to logged-out users\",\"pbLwal\":\"新しいフィードを検出\",\"pfa8F0\":\"表示名\",\"0gS7M5\":\"表示名\",\"iZ5pMB\":\"ドメインを確認しました!\",\"DPfwMq\":\"完了\",\"zT97vP\":[\"完了\",[\"extraText\"]],\"4uwlSD\":\"それぞれのコードは一度ずつ動作します。定期的により多くの招待コードを受け取ります。\",\"XQFMOm\":\"画像を編集\",\"S7M0uU\":\"リストの詳細を編集\",\"cLmurE\":\"マイフィードを編集\",\"bRZ5XW\":\"マイプロフィールを編集\",\"9OpVZg\":\"プロフィールを編集\",\"QJQd1J\":\"プロフィールを編集\",\"Jn7kox\":\"保存済みフィードを編集\",\"O3oNi5\":\"Eメール\",\"ATGYL1\":\"Eメールアドレス\",\"pJJ0Vp\":\"Eメール更新\",\"9Qs99X\":\"Eメール:\",\"96mted\":\"この設定を有効にすると、フォローしているユーザー間の応答だけが表示されます。\",\"9xK+YC\":\"End of feed\",\"YbIxza\":\"プロバイダーのアドレスを入力してください:\",\"BfIgP6\":\"使用するドメインを入力\",\"cHrOqs\":\"アカウントの作成に使用したEメールを入力します。新しいパスワードを設定できるように、「リセットコード」をお送りします。\",\"xRPn3U\":\"Eメールアドレスを入力\",\"+inPGm\":\"以下に新しいメールアドレスを入力してください。\",\"T0KLp4\":\"ユーザー名とパスワードを入力\",\"4BITzH\":\"エラー:\",\"wlzBtv\":\"Everybody\",\"0PkE20\":\"ALTテキストを展開\",\"/5K/KL\":\"推奨フィードのロードに失敗\",\"4yCy8i\":\"フィードはオフライン\",\"N0CqyO\":\"フィード設定\",\"YirHq7\":\"フィードバック\",\"2DoBvq\":\"フィード\",\"I3iUBQ\":\"フィードはコンテンツを整理する為にユーザーによって作成されます。興味具かいフィードをいくつか選択してください。\",\"2+6lmO\":\"フィードはユーザーがプログラミングの専門知識を持って構築するカスタムアルゴリズムです。詳細については、<0/>を参照してください。\",\"Qzj1WT\":\"似通ったアカウントを検索中...\",\"QKSrQV\":\"ホーム画面に表示されるコンテンツを微調整します。\",\"r+KeyR\":\"ディスカッションスレッドを微調整します。\",\"MKEPCY\":\"フォロー\",\"Wezu5M\":\"いくつかのユーザーをフォローして開始します。興味を持っている人に基づいて、より多くのユーザーをお勧めできます。\",\"jdbMSV\":\"Followed users\",\"YY2BTA\":\"フォローされたユーザーのみ\",\"x5LEuB\":\"フォロワー\",\"NIjL2Y\":\"フォロー中\",\"y6sq5j\":\"フォロー中\",\"p3UO/y\":\"あなたをフォロー\",\"5RhDkD\":\"セキュリティ上の理由から、Eメールアドレスに確認コードを送信する必要があります。\",\"NJPhAO\":\"セキュリティ上の理由から、これを再度表示することはできません。このパスワードを紛失した場合は、新しいパスワードを生成する必要があります。\",\"5bDfuq\":\"失念\",\"hEPLrs\":\"パスワードを失念\",\"dn8X5t\":\"パスワードを失念\",\"U+kFad\":\"ギャラリー\",\"c3b0B0\":\"はじめに\",\"CKyk7Q\":\"戻る\",\"sr0UJD\":\"戻る\",\"Rtp0y7\":\"次へ\",\"Nf7oXL\":\"ハンドル\",\"c3XJ18\":\"ヘルプ\",\"uX/4+/\":\"アプリパスワードをお知らせします。\",\"vLyv1R\":\"非表示\",\"qdOx2q\":\"ユーザーリストを非表示にする\",\"FynkM2\":\"Hmm, some kind of issue occurred when contacting the feed server. Please let the feed owner know about this issue.\",\"WTcLyw\":\"Hmm, the feed server appears to be misconfigured. Please let the feed owner know about this issue.\",\"/8MHCt\":\"Hmm, the feed server appears to be offline. Please let the feed owner know about this issue.\",\"3zJH1g\":\"Hmm, the feed server gave a bad response. Please let the feed owner know about this issue.\",\"wkCNhr\":\"Hmm, we're having trouble finding this feed. It may have been deleted.\",\"i0qMbr\":\"ホーム\",\"sXZ8IU\":\"ホームフィード設定\",\"yt7fhu\":\"ホスティングプロバイダー\",\"s2xA6t\":\"ホスティングプロバイダーアドレス\",\"o+axy6\":\"コードを持っている\",\"wey2os\":\"自分のドメインを持っている\",\"WlEcKr\":\"選択されていない場合は、すべての年齢に適しています。\",\"VCk0rR\":\"画像のALTテキスト\",\"STGpNQ\":\"イメージオプション\",\"dSKHAa\":\"無効なユーザー名またはパスワード\",\"MFKlMB\":\"招待\",\"F5MZVk\":\"友人を招待\",\"6KlkHI\":\"招待コード\",\"MYTV5o\":\"招待コードが確認できません。正しく入力されている事を確認し、もう一度実行してください。\",\"UY2916\":[\"Invite codes: \",[\"invitesAvailable\"],\" available\"],\"F75w8j\":\"待機リストに参加\",\"6iVTdm\":\"待機リストに参加します。\",\"SNzppu\":\"待機リストに参加\",\"Dcq5kL\":\"言語選択\",\"pVhZHk\":\"言語設定\",\"GAmD3h\":\"言語\",\"NgeSlx\":\"詳細\",\"rj0Lke\":\"この警告の詳細\",\"lvYkpV\":\"Learn more about what is public on Bluesky.\",\"kq2ga7\":\"どの言語も表示するには、すべてのチェックを外したままにします。\",\"QfDITI\":\"Blueskyから離れる\",\"Esfg1M\":\"パスワードをリセットしましょう!\",\"exYcTF\":\"ライブラリー\",\"BvSY1i\":\"このフィードをいいね\",\"8/ALSr\":\"いいねした人:\",\"zZOZj7\":\"Likes\",\"AUSVsF\":\"Limit the visibility of my account to logged-out users\",\"FuZWua\":\"リストアバター\",\"8mjA4F\":\"リスト名\",\"h16FyT\":\"リスト\",\"ujW4FW\":\"より多くの投稿をロード\",\"7EHsGr\":\"新しい通知をロード\",\"VkLESX\":\"新しい投稿をロード\",\"Z3FXyt\":\"ロード中...\",\"jl0AFf\":\"ローカル開発者サーバー\",\"5Aq6mk\":\"Logged-out users\",\"w2yNjr\":\"Logged-out visibility\",\"cR9UpQ\":\"リストにないアカウントにログイン\",\"kkGiug\":\"Looks like this feed is only available to users with a Bluesky account. Please sign up or sign in to view this feed!\",\"2U/gDT\":\"意図する場所である事を確認してください!\",\"xYilR2\":\"Media\",\"S9V0C/\":\"mentioned users\",\"31/84x\":\"Mentioned users\",\"zucql+\":\"メニュー\",\"kTQnAw\":\"Message from server\",\"DzmsLV\":\"モデレート\",\"NTIbv4\":\"モデレートリスト\",\"3j2OjF\":\"Moderation Lists\",\"FIJUJb\":\"その他のフィード\",\"3Siwmw\":\"その他のオプション\",\"RA1KUZ\":\"アカウントをミュート\",\"du0opt\":\"アカウントをミュート\",\"25PHAB\":\"Mute list\",\"izOxJM\":\"これらのアカウントをミュートしますか?\",\"jq7SjD\":\"スレッドをミュート\",\"s22grX\":\"ミュート済みアカウント\",\"qUa+lV\":\"ミュート済みアカウント\",\"gA0D9A\":\"ミュート済みのアカウントは、フィードと通知からの投稿が削除されます。ミュート設定は知られることはありません。\",\"1QJzM7\":\"ミュートはプライベートです。ミュート済みアカウントはユーザーと相互作用することができますが、そのアカウントの投稿や通知を受信することはできません。\",\"Mysqyf\":\"誕生日\",\"6MBNS/\":\"マイフィード\",\"hKtWk2\":\"マイプロフィール\",\"Ha6iBv\":\"保存済みフィード\",\"6YtxFj\":\"名前\",\"8yolS6\":\"決してフォロワーやデータへのアクセスを失わないでください。\",\"isRobC\":\"新規\",\"2B7HLH\":\"新しい投稿\",\"FGrimz\":\"新しい投稿\",\"hXzOVo\":\"次へ\",\"EatZYJ\":\"次の画像\",\"1UzENP\":\"なし\",\"flmDTf\":\"説明なし\",\"zfN9gJ\":\"結果なし\",\"fOlAiK\":[\"「\\\\\",[\"query\"],\"」の検索結果がない\"],\"SVF205\":[\"\\\\\",[\"query\"],\"の検索結果がない\"],\"xpF9po\":\"Nobody\",\"iyUCYw\":\"該当なし。\",\"ACqM3c\":\"Note: Bluesky is an open and public network, and enabling this will not make your profile private or limit the ability of logged in users to see your posts. This setting only limits the visibility of posts on the Bluesky app and website; third-party apps that display Bluesky content may not respect this setting, and could show your content to logged-out users.\",\"+lYa0i\":\"Note: Bluesky is an open and public network. This setting only limits the visibility of your content on the Bluesky app and website, and other apps may not respect this setting. Your content may still be shown to logged-out users by other apps and websites.\",\"iDNBZe\":\"通知\",\"5GGAqz\":\"ちょっと!\",\"UaXeX3\":\"OK\",\"Cqo2D+\":\"1つ以上の画像にALTテキストがありません。\",\"Kq2/SU\":[\"Only \",[\"0\"],\" can reply.\"],\"M/Q2aG\":\"ナビゲーションを開く\",\"M5PuNq\":\"構成可能な言語設定を開く\",\"S67TOE\":\"Opens list of invite codes\",\"eSqpax\":\"カスタムドメインを使用するためのモーダルを開く\",\"vYwHHI\":\"モデレート設定を開く\",\"0tHyB7\":\"保存されたすべてのフィードで画面を開く\",\"nmRoY/\":\"アプリのパスワード設定ページを開く\",\"6e9Apv\":\"ホームフィード設定を開きます\",\"O87Dr/\":\"ストーリーブックのページを開く\",\"G+PVmg\":\"システムログのページを開く\",\"Jqb7sy\":\"スレッド設定を開きます\",\"b22AVl\":\"その他のアカウント\",\"n+HLOP\":\"その他のサービス\",\"1PKxQ7\":\"その他...\",\"8F1i42\":\"ページが見つからない\",\"8ZsakT\":\"パスワード\",\"ogtYkT\":\"パスワードが更新された\",\"DKeVgZ\":\"パスワードが更新されました!\",\"VeZE5Q\":\"写真は成人向けです。\",\"zgoxy5\":\"ピン接続フィード\",\"Aw5fOC\":\"ハンドルをお選びください。\",\"5vI4sE\":\"パスワードを選択してください。\",\"Apyknf\":\"変更する前にメールを確認してください。これは、Eメールアップデートツールが追加されている間の一時的な要件であり、まもなく削除されます。\",\"9qpQ5O\":\"このアプリパスワードに固有の名前を入力するか、ランダムに生成された名前を使用してください。\",\"hV+cYN\":\"Eメールを入力してください。\",\"QJr5Xp\":\"パスワードも入力してください:\",\"d7tryi\":\"Please tell us why you think this decision was incorrect.\",\"y28hnO\":\"投稿\",\"h5RcXU\":\"投稿非表示\",\"r5zLS0\":\"ポスト言語\",\"AzCucI\":\"投稿言語\",\"tJFPmV\":\"投稿が見つからない\",\"+owNNn\":\"Posts\",\"0+DQbr\":\"誤解を招く可能性のあるリンク\",\"MHk+7g\":\"前の画像\",\"HeBcM5\":\"第一言語\",\"x8iR7V\":\"フォローの優先順位付け\",\"rjGI/Q\":\"プライバシー\",\"LcET2C\":\"プライバシーポリシー\",\"k1ifdL\":\"処理中...\",\"vERlcd\":\"プロフィール\",\"MrgqOW\":\"Eメールを確認してアカウントを保護します。\",\"9nSV9I\":\"Public, shareable lists of users to mute or block in bulk.\",\"p1UmBX\":\"フィードを駆動できるパブリックで共有可能なリスト。\",\"8HFFRQ\":\"引用投稿\",\"+KrAHa\":\"引用投稿\",\"WlWsdE\":\"比率\",\"QNzcT3\":\"推奨フィード\",\"41UoJb\":\"推奨ユーザー\",\"t/YqKh\":\"削除\",\"p/cRzf\":[\"マイフィードから\",[\"0\"],\"を削除しますか?\"],\"1O32oy\":\"アカウントを削除\",\"W44VX5\":\"フィードを削除\",\"Yy3FzB\":\"マイフィードから削除\",\"5ywtDz\":\"イメージを削除\",\"Dw/XUh\":\"イメージプレビューを削除\",\"3fdNAy\":\"Remove this feed from my feeds?\",\"TbDEfs\":\"保存したフィードからこのフィードを削除しますか?\",\"Obm5+c\":\"リストから削除された\",\"N8UzTV\":\"Replies\",\"oQPadq\":\"Replies to this thread are disabled\",\"Veu9gK\":\"返信フィルター\",\"lQWbAr\":[\"レポート \\\\\",[\"collectionName\"]],\"bDHSjj\":\"レポートアカウント\",\"NKmI9f\":\"レポートフィード\",\"6iwm2r\":\"レポートリスト\",\"6IcSvC\":\"レポート投稿\",\"mkude1\":\"再投稿\",\"JOV5dR\":\"再投稿または引用投稿\",\"0zb9FX\":\"再投稿者\",\"bqG37Z\":\"変更を要求\",\"8XIT+P\":\"このプロバイダーに必要\",\"vJgYMA\":\"コードをリセット\",\"xEL92I\":\"オンボード状態をリセット\",\"RfwZxd\":\"パスワードをリセット\",\"bee/Fw\":\"設定をリセット\",\"wToeoz\":\"オンボード状態をリセット\",\"nIU7qI\":\"設定状態をリセット\",\"6gRgw8\":\"再試行\",\"tfDRzk\":\"保存\",\"KV2YQQ\":\"ALTテキストを保存\",\"IUwGEM\":\"変更を保存\",\"Xs07Tg\":\"ハンドルの変更を保存\",\"BckA7m\":\"画像の切り抜きを保存\",\"+K+JDj\":\"保存済みフィード\",\"A1taO8\":\"検索\",\"BF8cu3\":\"投稿とユーザーを検索します。\",\"CKROFy\":\"必要なセキュリティ手順\",\"cNzyJW\":\"次を見る\",\"L5sM7N\":\"Bluesky Socialを選択\",\"o3dwub\":\"既存のアカウントから選択\",\"GGw2AK\":\"サービスを選択\",\"vECNLO\":\"登録済みフィードに含める言語を選択します。選択されていない場合は、すべての言語が表示されます。\",\"m5aabx\":\"アプリに表示するデフォルトのテキストのアプリ言語を選択する\",\"TiiOza\":\"フィード内の翻訳に使用する言語を選択します。\",\"vp9yIB\":\"確認Eメールを送信\",\"65dxv8\":\"Eメールを送信\",\"i/TzEU\":\"Eメールを送信\",\"RoafuO\":\"フィードバックを送信\",\"4cijjm\":\"レポートを送信\",\"V/e7nf\":\"新しいパスワードを設定\",\"gwsie4\":\"フィードから全ての引用投稿を非表示にするには、この設定を「いいえ」にします。再投稿は引き続き表示されます。\",\"IZjC3J\":\"フィードから全ての返信を非表示にするには、この設定を「いいえ」にします。\",\"KIgU3l\":\"フィードから全ての再投稿を非表示にするには、この設定を「いいえ」にします。\",\"zaAyrz\":\"スレッド表示で返信を表示するには、この設定を「はい」にします。これは実験的な機能です。\",\"fQV2eE\":\"保存したフィードのサンプルを次のフィードに表示するには、この設定を「はい」にします。これは実験的な機能です。\",\"Tz0i8g\":\"設定\",\"HfWHhJ\":\"性行為またはエロティックなヌード。\",\"Z8lGw6\":\"共有\",\"P33tEA\":\"フィードを共有\",\"8vETh9\":\"表示\",\"aWAdCb\":\"とにかく表示\",\"NijgXr\":\"マイフィードからの投稿を表示\",\"T3Mt8m\":\"引用投稿を表示\",\"BlW8X/\":\"返信を表示\",\"X4GwDb\":\"他のすべての返信の前に、フォローしている人からの返信を表示します。\",\"GiogzH\":\"再投稿を表示\",\"fhY/fL\":\"ユーザーを表示\",\"5lWFkC\":\"サインイン\",\"n1ekoW\":\"サインイン\",\"N9o7n5\":[[\"0\"],\"としてサインイン\"],\"FT1MVS\":\"...としてサインイン\",\"+UpfFC\":\"サインイン\",\"fcWrnU\":\"サインアウト\",\"e+RpCP\":\"サインアップ\",\"MiE4Vp\":\"登録またはログインして会話に参加する\",\"zU+Ro7\":\"サインイン済み\",\"6Uau97\":\"スキップ\",\"0o5BFH\":\"返信を並び替える\",\"GH1Rgk\":\"次の方法で同じ投稿への返信を並び替えます。\",\"1DA6ap\":\"正方形\",\"aKEHLj\":\"ステージング\",\"tgEXwM\":\"ステータスページ\",\"P5jja7\":\"ストーリーブック\",\"hQRttt\":\"Submit\",\"EDl9kS\":\"登録\",\"5z3ICN\":\"このリストに登録\",\"TVFyMD\":\"推奨されるフォロー\",\"XYLcNv\":\"サポート\",\"VjWeLI\":\"アカウントを切り替える\",\"fP8jTZ\":\"システムログ\",\"HF6Iah\":\"トール\",\"4Y5H+g\":\"条件\",\"xowcRf\":\"利用規約\",\"p8Iz39\":\"テキスト入力フィールド\",\"GlPXQJ\":\"このアカウントは、ブロック解除後にお客様とやり取りすることができます。\",\"o4M2MP\":\"コミュニティ ガイドラインが<0/>に移動された\",\"U42lKc\":\"著作権ポリシーが<0/>に移動された\",\"G4EksE\":\"投稿が削除された可能性があります。\",\"WNR9db\":\"プライバシーポリシーが<0/>に移動された\",\"LbEbIk\":[\"サポートフォームが移動しました。サポートが必要な場合は、<0/>または\\\\\",[\"HELP_DESK_URL\"],\"にアクセスしてご連絡ください。\"],\"FGbRSr\":\"サービス規約が移動された\",\"yUqcy2\":\"アプリケーションに予期しない問題が発生しました。このようなことがありましたらお知らせください!\",\"jSe8k/\":[\"This \",[\"0\"],\" has been labeled.\"],\"KRYn8w\":[\"この\\\\\",[\"screenDescription\"],\"にはフラグが設定されています。\"],\"aBX1qv\":\"This content is not viewable without a Bluesky account.\",\"xI4xW5\":\"This feed is currently receiving high traffic and is temporarily unavailable. Please try again later.\",\"lm845B\":\"この情報は他のユーザーと共有されません。\",\"5Pvw/O\":\"これは、Eメールの変更やパスワードのリセットが必要な場合に重要です。\",\"sQQfZ9\":\"これはオンラインを維持するためのサービスです。\",\"CvX8qs\":\"このリンクは次のウェブサイトへリンクしています:\",\"WKrUVy\":\"この投稿は削除されました。\",\"qpCA5s\":\"この警告は、メディアが接続されている投稿にのみ使用できます。\",\"u9ThjD\":\"スレッドの設定\",\"zmXsk5\":\"スレッドモード\",\"1x30Qt\":\"トグルドロップダウン\",\"KFXQEt\":\"変換\",\"pi8x/S\":\"翻訳\",\"KDw4GX\":\"再試行\",\"RF3/jE\":\"Un-block list\",\"+/SGK9\":\"Un-mute list\",\"nc4Wfd\":\"サービスに接続できません。インターネット接続を確認してください。\",\"tuS5Jz\":\"ブロック解除\",\"0VrZZv\":\"アカウントのブロック解除\",\"6pYY4t\":\"再投稿を元に戻す\",\"05f3UA\":\"残念ながら、アカウントを作成するための要件を満たしていません。\",\"wx9wqY\":\"アカウントのミュート解除\",\"s12/Py\":\"スレッドのミュート解除\",\"EvGmWj\":\"Unpin moderation list\",\"vaz2uI\":[\"リストの\\\\\",[\"displayName\"],\"を更新\"],\"YXMY4w\":\"更新可能\",\"RXbEvi\":\"更新中…\",\"Vwkfp4\":\"テキストファイルのアップロード先:\",\"jTdnU6\":\"他のBlueskyクライアントにアカウントやパスワードにフルアクセスする権限を与えずに、アプリパスワードを使ってログインします。\",\"CH1am9\":\"デフォルトプロバイダーを使用\",\"ZG8UvP\":\"これとハンドルを使って他のアプリにサインインします。\",\"cKXwwI\":\"使用者:\",\"t4Yp4Z\":\"ユーザーハンドル\",\"8tsrUV\":\"ユーザーリスト\",\"nZx9mr\":\"ユーザー名またはEメールアドレス\",\"Sxm8rQ\":\"ユーザー\",\"Hbhyg2\":\"users followed by <0/>\",\"9k1aoj\":[\"Users in \\\"\",[\"0\"],\"\\\"\"],\"MBOY4U\":\"Eメールを確認\",\"Ejyv0o\":\"Eメールを確認\",\"9czCrB\":\"Eメールを確認\",\"ibSVGR\":\"新しいEメールを確認\",\"nHsQde\":\"欠陥事項を表示\",\"47jzzd\":\"アバターを表示\",\"wK4H1r\":\"サイトへアクセス\",\"qjBGxf\":\"あなたが参加してくれることをとても楽しみにしています!\",\"WBQOQ0\":\"申し訳ありませんが、検索を完了できませんでした。数分後に再試行してください。\",\"/mVVX2\":\"申し訳ありません! お探しのページが見つかりません。\",\"meB+tZ\":\"<0>Bluesky0>へようこそ\",\"Mj7rl/\":[\"この\\\\\",[\"collectionName\"],\"の問題は何ですか?\"],\"3qn29J\":\"この投稿ではどの言語が使われていますか?\",\"uawiGa\":\"アルゴリズムフィードに表示する言語を選択しますか?\",\"yvDWMs\":\"Who can reply\",\"I5S9ZE\":\"ワイド\",\"y02THm\":\"投稿を書く\",\"6ckZRB\":\"返信を書く\",\"l75CjT\":\"はい\",\"STPj0e\":\"ホスティングプロバイダはいつでも変更できます。\",\"67nRLM\":\"新しいパスワードでサインインできるようになりました。\",\"lIcbCU\":\"まだ招待コードがありません!Blueskyをもうしばらく利用したらお送りします。\",\"aFZZYi\":\"ピンで固定されたフィードがありません。\",\"kX/cKs\":\"保存されたフィードがありません!\",\"nbz3Iq\":\"保存されたフィードがありません。\",\"RkXibf\":\"著者をブロックしたか、または著者によってブロックされました。\",\"CbrOgr\":\"You have no feeds.\",\"tCLJ9E\":\"リストがありません。\",\"soH9qC\":\"ブロックしているアカウントはまだありません。アカウントをブロックするには、ユーザーのプロフィールに移動し、アカウントメニューから「アカウントをブロック」を選択します。\",\"NDgp3i\":\"アプリパスワードはまだ作成されていません。 下のボタンを押すと作成できます。\",\"grqdXb\":\"ミュートしているアカウントはまだありません。アカウントをミュートするには、プロフィールに移動し、アカウントメニューから「アカウントをミュート」を選択します。\",\"RrDyEb\":\"「リセットコード」が記載されたEメールが届きます。ここにコードを入力し、新しいパスワードを入力します。\",\"gdRnT7\":\"アカウント\",\"k7hmsH\":\"生年月日\",\"tBpzKB\":\"Eメールが無効なようです。\",\"OubkcP\":\"Eメールが保存されました!すぐにご連絡いたします。\",\"z2L+/9\":\"Eメールは更新されましたが、確認されていません。次のステップとして、新しいEメールを確認してください。\",\"XZlIVw\":\"Eメールはまだ確認されていません。これは、当社が推奨する重要なセキュリティステップです。\",\"qv9f4I\":\"フルハンドルは\",\"lvcqqG\":\"ホスティングプロバイダー\",\"fbFyAZ\":\"Your invite codes are hidden when logged in using an App Password\",\"Oqt/PG\":\"投稿、いいね、ブロックは公開されます。ミュートはプライベートです。\",\"okRPtW\":\"プロフィール\",\"ogY7EU\":\"Your profile and posts will not be visible to people visiting the Bluesky app or website without having an account and being logged in.\",\"MvWO9d\":\"ユーザーハンドル\"}")};
\ No newline at end of file
diff --git a/src/locale/locales/ja/messages.po b/src/locale/locales/ja/messages.po
index 4cde1ed952..9620c035a1 100644
--- a/src/locale/locales/ja/messages.po
+++ b/src/locale/locales/ja/messages.po
@@ -5,15 +5,15 @@ msgstr ""
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: @lingui/cli\n"
-"Language: jp\n"
+"Language: ja\n"
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: \n"
-"Last-Translator: Hima-Zinn\n"
+"Last-Translator: noritada\n"
"Language-Team: Hima-Zinn, tkusano, dolciss, oboenikui, noritada\n"
"Plural-Forms: \n"
-#: src/view/shell/desktop/RightNav.tsx:160
+#: src/view/shell/desktop/RightNav.tsx:168
msgid "{0, plural, one {# invite code available} other {# invite codes available}}"
msgstr "{0, plural, other {# 個の招待コードが利用可能}}"
@@ -25,21 +25,21 @@ msgstr "{0}"
msgid "{0} {purposeLabel} List"
msgstr "{0} {purposeLabel} リスト"
-#: src/view/shell/desktop/RightNav.tsx:143
+#: src/view/shell/desktop/RightNav.tsx:151
msgid "{invitesAvailable, plural, one {Invite codes: # available} other {Invite codes: # available}}"
msgstr "{invitesAvailable, plural, other {招待コード: # 個利用可能}}"
#: src/view/screens/Settings.tsx:407
-#: src/view/shell/Drawer.tsx:640
+#: src/view/shell/Drawer.tsx:659
msgid "{invitesAvailable} invite code available"
msgstr "{invitesAvailable}個の招待コードが利用可能"
#: src/view/screens/Settings.tsx:409
-#: src/view/shell/Drawer.tsx:642
+#: src/view/shell/Drawer.tsx:661
msgid "{invitesAvailable} invite codes available"
msgstr "{invitesAvailable}個の招待コードが利用可能"
-#: src/view/screens/Search/Search.tsx:88
+#: src/view/screens/Search/Search.tsx:87
msgid "{message}"
msgstr "{message}"
@@ -68,7 +68,7 @@ msgstr "新しいバージョンのアプリが利用可能です。継続して
msgid "Accessibility"
msgstr "アクセシビリティ"
-#: src/view/com/auth/login/LoginForm.tsx:159
+#: src/view/com/auth/login/LoginForm.tsx:163
#: src/view/screens/Settings.tsx:286
msgid "Account"
msgstr "アカウント"
@@ -79,7 +79,7 @@ msgstr "アカウントオプション"
#: src/view/com/modals/ListAddRemoveUsers.tsx:264
#: src/view/com/modals/UserAddRemoveLists.tsx:193
-#: src/view/screens/ProfileList.tsx:754
+#: src/view/screens/ProfileList.tsx:763
msgid "Add"
msgstr "追加"
@@ -87,7 +87,7 @@ msgstr "追加"
msgid "Add a content warning"
msgstr "コンテンツの警告を追加"
-#: src/view/screens/ProfileList.tsx:744
+#: src/view/screens/ProfileList.tsx:753
msgid "Add a user to this list"
msgstr "リストにユーザーを追加"
@@ -98,6 +98,7 @@ msgstr "アカウントを追加"
#: src/view/com/composer/photos/Gallery.tsx:119
#: src/view/com/composer/photos/Gallery.tsx:180
+#: src/view/com/modals/AltImage.tsx:93
msgid "Add alt text"
msgstr "ALTテキストを追加"
@@ -110,11 +111,11 @@ msgstr "詳細を追加"
msgid "Add details to report"
msgstr "レポートに詳細を追加"
-#: src/view/com/composer/Composer.tsx:438
+#: src/view/com/composer/Composer.tsx:447
msgid "Add link card"
msgstr "リンクカードを追加"
-#: src/view/com/composer/Composer.tsx:441
+#: src/view/com/composer/Composer.tsx:450
msgid "Add link card:"
msgstr "リンクカードを追加:"
@@ -126,7 +127,7 @@ msgstr "次のDNSレコードをドメインに追加してください:"
msgid "Add to Lists"
msgstr "リストに追加"
-#: src/view/screens/ProfileFeed.tsx:270
+#: src/view/screens/ProfileFeed.tsx:271
msgid "Add to my feeds"
msgstr "マイフィードに追加"
@@ -135,7 +136,7 @@ msgstr "マイフィードに追加"
msgid "Added to list"
msgstr "リストに追加"
-#: src/view/screens/PreferencesHomeFeed.tsx:164
+#: src/view/screens/PreferencesHomeFeed.tsx:170
msgid "Adjust the number of likes a reply must have to be shown in your feed."
msgstr "返信がフィードに表示されるために必要な「いいね」の数を調整します。"
@@ -143,7 +144,7 @@ msgstr "返信がフィードに表示されるために必要な「いいね」
msgid "Adult Content"
msgstr "成人向けコンテンツ"
-#: src/view/screens/Settings.tsx:569
+#: src/view/screens/Settings.tsx:602
msgid "Advanced"
msgstr "高度な設定"
@@ -167,7 +168,7 @@ msgstr "メールが{0}に送信されました。以下に入力できる確認
msgid "An email has been sent to your previous address, {0}. It includes a confirmation code which you can enter below."
msgstr "以前のメールアドレス{0}にメールが送信されました。以下に入力できる確認コードがそのメールに記載されています。"
-#: src/view/com/notifications/FeedItem.tsx:236
+#: src/view/com/notifications/FeedItem.tsx:237
#: src/view/com/threadgate/WhoCanReply.tsx:178
msgid "and"
msgstr "および"
@@ -176,7 +177,7 @@ msgstr "および"
msgid "App Language"
msgstr "アプリの言語"
-#: src/view/screens/Settings.tsx:589
+#: src/view/screens/Settings.tsx:622
msgid "App passwords"
msgstr "アプリパスワード"
@@ -184,7 +185,7 @@ msgstr "アプリパスワード"
msgid "App Passwords"
msgstr "アプリパスワード"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:207
+#: src/view/com/util/forms/PostDropdownBtn.tsx:236
msgid "Appeal content warning"
msgstr ""
@@ -212,15 +213,15 @@ msgstr "外観"
msgid "Are you sure you want to delete the app password \"{name}\"?"
msgstr "本当にアプリパスワード「{name}」を削除しますか?"
-#: src/view/com/composer/Composer.tsx:142
+#: src/view/com/composer/Composer.tsx:143
msgid "Are you sure you'd like to discard this draft?"
msgstr "本当にこの下書きを破棄しますか?"
-#: src/view/screens/ProfileList.tsx:352
+#: src/view/screens/ProfileList.tsx:353
msgid "Are you sure?"
msgstr "本当によろしいですか?"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:190
+#: src/view/com/util/forms/PostDropdownBtn.tsx:219
msgid "Are you sure? This cannot be undone."
msgstr "本当によろしいですか?これは元に戻せません。"
@@ -231,12 +232,12 @@ msgstr "芸術的または性的ではないヌード。"
#: src/view/com/auth/create/CreateAccount.tsx:141
#: src/view/com/auth/login/ChooseAccountForm.tsx:151
#: src/view/com/auth/login/ForgotPasswordForm.tsx:166
-#: src/view/com/auth/login/LoginForm.tsx:249
+#: src/view/com/auth/login/LoginForm.tsx:254
#: src/view/com/auth/login/SetNewPasswordForm.tsx:148
-#: src/view/com/modals/report/InputIssueDetails.tsx:45
-#: src/view/com/post-thread/PostThread.tsx:395
-#: src/view/com/post-thread/PostThread.tsx:445
-#: src/view/com/post-thread/PostThread.tsx:453
+#: src/view/com/modals/report/InputIssueDetails.tsx:46
+#: src/view/com/post-thread/PostThread.tsx:388
+#: src/view/com/post-thread/PostThread.tsx:438
+#: src/view/com/post-thread/PostThread.tsx:446
#: src/view/com/profile/ProfileHeader.tsx:672
msgid "Back"
msgstr "戻る"
@@ -245,8 +246,8 @@ msgstr "戻る"
msgid "Basics"
msgstr "基本"
-#: src/view/com/auth/create/Step2.tsx:131
-#: src/view/com/modals/BirthDateSettings.tsx:72
+#: src/view/com/auth/create/Step2.tsx:156
+#: src/view/com/modals/BirthDateSettings.tsx:73
msgid "Birthday"
msgstr "誕生日"
@@ -259,15 +260,15 @@ msgstr "誕生日:"
msgid "Block Account"
msgstr "アカウントをブロック"
-#: src/view/screens/ProfileList.tsx:522
+#: src/view/screens/ProfileList.tsx:523
msgid "Block accounts"
msgstr "アカウントをブロック"
-#: src/view/screens/ProfileList.tsx:472
+#: src/view/screens/ProfileList.tsx:473
msgid "Block list"
msgstr "リストをブロック"
-#: src/view/screens/ProfileList.tsx:307
+#: src/view/screens/ProfileList.tsx:308
msgid "Block these accounts?"
msgstr "これらのアカウントをブロックしますか?"
@@ -275,7 +276,7 @@ msgstr "これらのアカウントをブロックしますか?"
msgid "Blocked accounts"
msgstr "ブロック中のアカウント"
-#: src/view/screens/ModerationBlockedAccounts.tsx:106
+#: src/view/screens/ModerationBlockedAccounts.tsx:107
msgid "Blocked Accounts"
msgstr "ブロック中のアカウント"
@@ -283,15 +284,15 @@ msgstr "ブロック中のアカウント"
msgid "Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you."
msgstr "ブロック中のアカウントは、あなたのスレッドでの返信、あなたへのメンション、その他の方法であなたとやり取りすることはできません。"
-#: src/view/screens/ModerationBlockedAccounts.tsx:114
+#: src/view/screens/ModerationBlockedAccounts.tsx:115
msgid "Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you. You will not see their content and they will be prevented from seeing yours."
msgstr "ブロック中のアカウントは、あなたのスレッドでの返信、あなたへのメンション、その他の方法であなたとやり取りすることはできません。あなたは相手のコンテンツを見ることができず、相手はあなたのコンテンツを見ることができなくなります。"
-#: src/view/com/post-thread/PostThread.tsx:251
+#: src/view/com/post-thread/PostThread.tsx:250
msgid "Blocked post."
msgstr "投稿をブロックしました。"
-#: src/view/screens/ProfileList.tsx:309
+#: src/view/screens/ProfileList.tsx:310
msgid "Blocking is public. Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you."
msgstr "ブロックしたことは公開されます。ブロック中のアカウントは、あなたのスレッドでの返信、あなたへのメンション、その他の方法であなたとやり取りすることはできません。"
@@ -327,7 +328,7 @@ msgstr "Blueskyはログアウトしたユーザーにあなたのプロフィ
msgid "Bluesky.Social"
msgstr "Bluesky.Social"
-#: src/view/screens/Settings.tsx:718
+#: src/view/screens/Settings.tsx:751
msgid "Build version {0} {1}"
msgstr "ビルドバージョン {0} {1}"
@@ -345,9 +346,8 @@ msgstr "カメラ"
msgid "Can only contain letters, numbers, spaces, dashes, and underscores. Must be at least 4 characters long, but no more than 32 characters long."
msgstr "文字、数字、スペース、ハイフン、およびアンダースコアのみが使用可能です。長さは4文字以上32文字以下である必要があります。"
-#: src/view/com/composer/Composer.tsx:285
-#: src/view/com/composer/Composer.tsx:288
-#: src/view/com/modals/AltImage.tsx:128
+#: src/view/com/composer/Composer.tsx:294
+#: src/view/com/composer/Composer.tsx:297
#: src/view/com/modals/ChangeEmail.tsx:218
#: src/view/com/modals/ChangeEmail.tsx:220
#: src/view/com/modals/Confirm.tsx:88
@@ -360,7 +360,7 @@ msgstr "文字、数字、スペース、ハイフン、およびアンダース
#: src/view/com/modals/LinkWarning.tsx:85
#: src/view/com/modals/Repost.tsx:73
#: src/view/com/modals/Waitlist.tsx:136
-#: src/view/screens/Search/Search.tsx:592
+#: src/view/screens/Search/Search.tsx:601
#: src/view/shell/desktop/Search.tsx:182
msgid "Cancel"
msgstr "キャンセル"
@@ -371,8 +371,8 @@ msgid "Cancel account deletion"
msgstr "アカウントの削除をキャンセル"
#: src/view/com/modals/AltImage.tsx:123
-msgid "Cancel add image alt text"
-msgstr "画像のALTテキストの追加をキャンセル"
+#~ msgid "Cancel add image alt text"
+#~ msgstr "画像のALTテキストの追加をキャンセル"
#: src/view/com/modals/ChangeHandle.tsx:149
msgid "Cancel change handle"
@@ -403,8 +403,8 @@ msgstr "Waitlistの登録をキャンセル"
msgid "Change"
msgstr "変更"
-#: src/view/screens/Settings.tsx:601
-#: src/view/screens/Settings.tsx:610
+#: src/view/screens/Settings.tsx:634
+#: src/view/screens/Settings.tsx:643
msgid "Change handle"
msgstr "ハンドルを変更"
@@ -432,6 +432,10 @@ msgstr "おすすめのユーザーを確認してください。フォローす
msgid "Check your inbox for an email with the confirmation code to enter below:"
msgstr "入力したメールアドレスの受信トレイを確認して、以下に入力するための確認コードが記載されたメールが届いていないか確認してください:"
+#: src/view/com/modals/Threadgate.tsx:72
+msgid "Choose \"Everybody\" or \"Nobody\""
+msgstr "「全員」と「返信不可」のどちらかを選択"
+
#: src/view/com/modals/ServerInput.tsx:38
msgid "Choose Service"
msgstr "サービスを選択"
@@ -440,28 +444,28 @@ msgstr "サービスを選択"
msgid "Choose the algorithms that power your experience with custom feeds."
msgstr "カスタムフィードを使用してあなたの体験を強化するアルゴリズムを選択します。"
-#: src/view/com/auth/create/Step2.tsx:106
+#: src/view/com/auth/create/Step2.tsx:127
msgid "Choose your password"
msgstr "パスワードを選択"
-#: src/view/screens/Settings.tsx:694
+#: src/view/screens/Settings.tsx:727
msgid "Clear all legacy storage data"
msgstr "レガシーストレージデータをすべてクリア"
-#: src/view/screens/Settings.tsx:696
+#: src/view/screens/Settings.tsx:729
msgid "Clear all legacy storage data (restart after this)"
msgstr "すべてのレガシーストレージデータをクリア(この後再起動します)"
-#: src/view/screens/Settings.tsx:706
+#: src/view/screens/Settings.tsx:739
msgid "Clear all storage data"
msgstr "すべてのストレージデータをクリア"
-#: src/view/screens/Settings.tsx:708
+#: src/view/screens/Settings.tsx:741
msgid "Clear all storage data (restart after this)"
msgstr "すべてのストレージデータをクリア(この後再起動します)"
-#: src/view/com/util/forms/SearchInput.tsx:73
-#: src/view/screens/Search/Search.tsx:577
+#: src/view/com/util/forms/SearchInput.tsx:74
+#: src/view/screens/Search/Search.tsx:582
msgid "Clear search query"
msgstr "検索クエリをクリア"
@@ -497,8 +501,8 @@ msgstr "返信を作成"
#: src/view/com/modals/Confirm.tsx:75
#: src/view/com/modals/SelfLabel.tsx:154
#: src/view/com/modals/VerifyEmail.tsx:225
-#: src/view/screens/PreferencesHomeFeed.tsx:299
-#: src/view/screens/PreferencesThreads.tsx:153
+#: src/view/screens/PreferencesHomeFeed.tsx:305
+#: src/view/screens/PreferencesThreads.tsx:159
msgid "Confirm"
msgstr "確認"
@@ -522,7 +526,7 @@ msgid "Confirmation code"
msgstr "確認コード"
#: src/view/com/auth/create/CreateAccount.tsx:174
-#: src/view/com/auth/login/LoginForm.tsx:268
+#: src/view/com/auth/login/LoginForm.tsx:273
msgid "Connecting..."
msgstr "接続中..."
@@ -561,11 +565,11 @@ msgstr "コピーしました"
msgid "Copy"
msgstr "コピー"
-#: src/view/screens/ProfileList.tsx:384
+#: src/view/screens/ProfileList.tsx:385
msgid "Copy link to list"
msgstr "リストへのリンクをコピー"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:131
+#: src/view/com/util/forms/PostDropdownBtn.tsx:139
msgid "Copy link to post"
msgstr "投稿へのリンクをコピー"
@@ -573,7 +577,7 @@ msgstr "投稿へのリンクをコピー"
msgid "Copy link to profile"
msgstr "プロフィールへのリンクをコピー"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:117
+#: src/view/com/util/forms/PostDropdownBtn.tsx:125
msgid "Copy post text"
msgstr "投稿のテキストをコピー"
@@ -581,11 +585,11 @@ msgstr "投稿のテキストをコピー"
msgid "Copyright Policy"
msgstr "著作権ポリシー"
-#: src/view/screens/ProfileFeed.tsx:94
+#: src/view/screens/ProfileFeed.tsx:95
msgid "Could not load feed"
msgstr "フィードのロードに失敗しました"
-#: src/view/screens/ProfileList.tsx:830
+#: src/view/screens/ProfileList.tsx:839
msgid "Could not load list"
msgstr "リストのロードに失敗しました"
@@ -594,7 +598,7 @@ msgstr "リストのロードに失敗しました"
msgid "Create a new account"
msgstr "新しいアカウントを作成"
-#: src/view/com/auth/create/CreateAccount.tsx:120
+#: src/view/com/auth/create/CreateAccount.tsx:121
msgid "Create Account"
msgstr "アカウントを作成"
@@ -612,11 +616,15 @@ msgstr "作成済み {0}"
msgid "Custom domain"
msgstr "カスタムドメイン"
-#: src/view/screens/Settings.tsx:615
+#: src/view/screens/PreferencesExternalEmbeds.tsx:55
+msgid "Customize media from external sites."
+msgstr ""
+
+#: src/view/screens/Settings.tsx:648
msgid "Danger Zone"
msgstr "危険地帯"
-#: src/view/screens/Settings.tsx:622
+#: src/view/screens/Settings.tsx:655
msgid "Delete account"
msgstr "アカウントを削除"
@@ -629,8 +637,8 @@ msgstr "アカウントを削除"
msgid "Delete app password"
msgstr "アプリパスワードを削除"
-#: src/view/screens/ProfileList.tsx:351
-#: src/view/screens/ProfileList.tsx:411
+#: src/view/screens/ProfileList.tsx:352
+#: src/view/screens/ProfileList.tsx:412
msgid "Delete List"
msgstr "リストを削除"
@@ -638,19 +646,19 @@ msgstr "リストを削除"
msgid "Delete my account"
msgstr "マイアカウントを削除"
-#: src/view/screens/Settings.tsx:632
+#: src/view/screens/Settings.tsx:665
msgid "Delete my account…"
msgstr "マイアカウントを削除…"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:185
+#: src/view/com/util/forms/PostDropdownBtn.tsx:214
msgid "Delete post"
msgstr "投稿を削除"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:189
+#: src/view/com/util/forms/PostDropdownBtn.tsx:218
msgid "Delete this post?"
msgstr "この投稿を削除しますか?"
-#: src/view/com/post-thread/PostThread.tsx:243
+#: src/view/com/post-thread/PostThread.tsx:242
msgid "Deleted post."
msgstr "投稿を削除しました。"
@@ -665,15 +673,19 @@ msgstr "説明"
msgid "Dev Server"
msgstr "開発者サーバー"
-#: src/view/screens/Settings.tsx:637
+#: src/view/screens/Settings.tsx:670
msgid "Developer Tools"
msgstr "開発者ツール"
-#: src/view/com/composer/Composer.tsx:143
+#: src/view/com/composer/Composer.tsx:211
+msgid "Did you want to say anything?"
+msgstr ""
+
+#: src/view/com/composer/Composer.tsx:144
msgid "Discard"
msgstr "破棄"
-#: src/view/com/composer/Composer.tsx:137
+#: src/view/com/composer/Composer.tsx:138
msgid "Discard draft"
msgstr "下書きを破棄"
@@ -698,6 +710,7 @@ msgid "Domain verified!"
msgstr "ドメインを確認しました!"
#: src/view/com/auth/onboarding/RecommendedFollows.tsx:86
+#: src/view/com/modals/AltImage.tsx:115
#: src/view/com/modals/ContentFilteringSettings.tsx:88
#: src/view/com/modals/ContentFilteringSettings.tsx:96
#: src/view/com/modals/crop-image/CropImage.web.tsx:152
@@ -707,8 +720,8 @@ msgstr "ドメインを確認しました!"
#: src/view/com/modals/Threadgate.tsx:129
#: src/view/com/modals/Threadgate.tsx:132
#: src/view/com/modals/UserAddRemoveLists.tsx:79
-#: src/view/screens/PreferencesHomeFeed.tsx:302
-#: src/view/screens/PreferencesThreads.tsx:156
+#: src/view/screens/PreferencesHomeFeed.tsx:308
+#: src/view/screens/PreferencesThreads.tsx:162
msgid "Done"
msgstr "完了"
@@ -725,7 +738,7 @@ msgstr "それぞれのコードは一度ずつ動作します。定期的に招
msgid "Edit image"
msgstr "画像を編集"
-#: src/view/screens/ProfileList.tsx:399
+#: src/view/screens/ProfileList.tsx:400
msgid "Edit list details"
msgstr "リストの詳細を編集"
@@ -750,14 +763,14 @@ msgstr "プロフィールを編集"
msgid "Edit Saved Feeds"
msgstr "保存されたフィードを編集"
-#: src/view/com/auth/create/Step2.tsx:90
+#: src/view/com/auth/create/Step2.tsx:108
#: src/view/com/auth/login/ForgotPasswordForm.tsx:148
#: src/view/com/modals/ChangeEmail.tsx:141
#: src/view/com/modals/Waitlist.tsx:88
msgid "Email"
msgstr "メールアドレス"
-#: src/view/com/auth/create/Step2.tsx:81
+#: src/view/com/auth/create/Step2.tsx:99
msgid "Email address"
msgstr "メールアドレス"
@@ -769,9 +782,17 @@ msgstr "メールアドレスを更新"
msgid "Email:"
msgstr "メールアドレス:"
-#: src/view/screens/PreferencesHomeFeed.tsx:138
+#: src/view/com/modals/EmbedConsent.tsx:113
+msgid "Enable {0} only"
+msgstr ""
+
+#: src/view/com/modals/EmbedConsent.tsx:97
+msgid "Enable External Media"
+msgstr ""
+
+#: src/view/screens/PreferencesHomeFeed.tsx:144
msgid "Enable this setting to only see replies between people you follow."
-msgstr "この設定を有効にすると、フォローしているユーザー間の返信だけが表示されます。"
+msgstr "この設定を有効にすると、自分がフォローしているユーザーからの返信だけが表示されます。"
#: src/view/screens/Profile.tsx:426
msgid "End of feed"
@@ -789,7 +810,7 @@ msgstr "使用するドメインを入力してください"
msgid "Enter the email you used to create your account. We'll send you a \"reset code\" so you can set a new password."
msgstr "アカウントの作成に使用したメールアドレスを入力します。新しいパスワードを設定できるように、「リセットコード」をお送りします。"
-#: src/view/com/auth/create/Step2.tsx:86
+#: src/view/com/auth/create/Step2.tsx:104
msgid "Enter your email address"
msgstr "メールアドレスを入力してください"
@@ -801,7 +822,7 @@ msgstr "以下に新しいメールアドレスを入力してください。"
msgid "Enter your username and password"
msgstr "ユーザー名とパスワードを入力"
-#: src/view/screens/Search/Search.tsx:106
+#: src/view/screens/Search/Search.tsx:105
msgid "Error:"
msgstr "エラー:"
@@ -813,12 +834,26 @@ msgstr "全員"
msgid "Expand alt text"
msgstr "ALTテキストを展開"
+#: src/view/com/modals/EmbedConsent.tsx:64
+msgid "External Media"
+msgstr ""
+
+#: src/view/com/modals/EmbedConsent.tsx:75
+#: src/view/screens/PreferencesExternalEmbeds.tsx:66
+msgid "External media may allow websites to collect information about you and your device. No information is sent or requested until you press the \"play\" button."
+msgstr ""
+
+#: src/view/screens/PreferencesExternalEmbeds.tsx:52
+#: src/view/screens/Settings.tsx:595
+msgid "External Media Preferences"
+msgstr ""
+
#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:109
#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:141
msgid "Failed to load recommended feeds"
msgstr "おすすめのフィードのロードに失敗しました"
-#: src/view/screens/Feeds.tsx:560
+#: src/view/screens/Feeds.tsx:556
msgid "Feed offline"
msgstr "フィードはオフラインです"
@@ -826,17 +861,17 @@ msgstr "フィードはオフラインです"
msgid "Feed Preferences"
msgstr "フィードの設定"
-#: src/view/shell/desktop/RightNav.tsx:65
-#: src/view/shell/Drawer.tsx:292
+#: src/view/shell/desktop/RightNav.tsx:73
+#: src/view/shell/Drawer.tsx:311
msgid "Feedback"
msgstr "フィードバック"
#: src/view/screens/Feeds.tsx:475
#: src/view/screens/Profile.tsx:165
#: src/view/shell/bottom-bar/BottomBar.tsx:181
-#: src/view/shell/desktop/LeftNav.tsx:340
-#: src/view/shell/Drawer.tsx:455
-#: src/view/shell/Drawer.tsx:456
+#: src/view/shell/desktop/LeftNav.tsx:342
+#: src/view/shell/Drawer.tsx:474
+#: src/view/shell/Drawer.tsx:475
msgid "Feeds"
msgstr "フィード"
@@ -848,11 +883,11 @@ msgstr "フィードはコンテンツを整理する為にユーザーによっ
msgid "Feeds are custom algorithms that users build with a little coding expertise. <0/> for more information."
msgstr "フィードはユーザーがプログラミングの専門知識を持って構築するカスタムアルゴリズムです。詳細については、<0/>を参照してください。"
-#: src/view/screens/Search/Search.tsx:422
+#: src/view/screens/Search/Search.tsx:427
msgid "Find users on Bluesky"
msgstr "Blueskyでユーザーを検索"
-#: src/view/screens/Search/Search.tsx:420
+#: src/view/screens/Search/Search.tsx:425
msgid "Find users with the search tool on the right"
msgstr "右側の検索ツールでユーザーを検索"
@@ -860,7 +895,7 @@ msgstr "右側の検索ツールでユーザーを検索"
msgid "Finding similar accounts..."
msgstr "似ているアカウントを検索中..."
-#: src/view/screens/PreferencesHomeFeed.tsx:102
+#: src/view/screens/PreferencesHomeFeed.tsx:108
msgid "Fine-tune the content you see on your home screen."
msgstr "ホーム画面に表示されるコンテンツを微調整します。"
@@ -878,11 +913,11 @@ msgstr "何人かのユーザーをフォローして開始します。興味を
#: src/view/com/modals/Threadgate.tsx:98
msgid "Followed users"
-msgstr "フォローしているユーザー"
+msgstr "自分がフォローしているユーザー"
-#: src/view/screens/PreferencesHomeFeed.tsx:145
+#: src/view/screens/PreferencesHomeFeed.tsx:151
msgid "Followed users only"
-msgstr "フォローされたユーザーのみ"
+msgstr "自分がフォローしているユーザーのみ"
#: src/view/screens/ProfileFollowers.tsx:25
msgid "Followers"
@@ -909,11 +944,11 @@ msgstr "セキュリティ上の理由から、メールアドレスに確認コ
msgid "For security reasons, you won't be able to view this again. If you lose this password, you'll need to generate a new one."
msgstr "セキュリティ上の理由から、これを再度表示することはできません。このパスワードを紛失した場合は、新しいパスワードを生成する必要があります。"
-#: src/view/com/auth/login/LoginForm.tsx:231
+#: src/view/com/auth/login/LoginForm.tsx:236
msgid "Forgot"
msgstr "忘れた"
-#: src/view/com/auth/login/LoginForm.tsx:228
+#: src/view/com/auth/login/LoginForm.tsx:233
msgid "Forgot password"
msgstr "パスワードを忘れた"
@@ -937,15 +972,15 @@ msgstr "はじめに"
msgid "Go back"
msgstr "戻る"
-#: src/view/screens/ProfileFeed.tsx:103
-#: src/view/screens/ProfileFeed.tsx:108
-#: src/view/screens/ProfileList.tsx:839
-#: src/view/screens/ProfileList.tsx:844
+#: src/view/screens/ProfileFeed.tsx:104
+#: src/view/screens/ProfileFeed.tsx:109
+#: src/view/screens/ProfileList.tsx:848
+#: src/view/screens/ProfileList.tsx:853
msgid "Go Back"
msgstr "戻る"
#: src/view/com/auth/login/ForgotPasswordForm.tsx:181
-#: src/view/com/auth/login/LoginForm.tsx:278
+#: src/view/com/auth/login/LoginForm.tsx:283
#: src/view/com/auth/login/SetNewPasswordForm.tsx:163
msgid "Go to next"
msgstr "次へ"
@@ -954,8 +989,8 @@ msgstr "次へ"
msgid "Handle"
msgstr "ハンドル"
-#: src/view/shell/desktop/RightNav.tsx:94
-#: src/view/shell/Drawer.tsx:302
+#: src/view/shell/desktop/RightNav.tsx:102
+#: src/view/shell/Drawer.tsx:321
msgid "Help"
msgstr "ヘルプ"
@@ -963,12 +998,20 @@ msgstr "ヘルプ"
msgid "Here is your app password."
msgstr "アプリパスワードをお知らせします。"
-#: src/view/com/notifications/FeedItem.tsx:316
+#: src/view/com/notifications/FeedItem.tsx:324
#: src/view/com/util/moderation/ContentHider.tsx:103
msgid "Hide"
msgstr "非表示"
-#: src/view/com/notifications/FeedItem.tsx:308
+#: src/view/com/util/forms/PostDropdownBtn.tsx:173
+msgid "Hide post"
+msgstr "投稿を非表示にする"
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:177
+msgid "Hide this post?"
+msgstr "この投稿を非表示にしますか?"
+
+#: src/view/com/notifications/FeedItem.tsx:316
msgid "Hide user list"
msgstr "ユーザーリストを非表示"
@@ -993,17 +1036,17 @@ msgid "Hmm, we're having trouble finding this feed. It may have been deleted."
msgstr "このフィードが見つからないようです。もしかしたら削除されたのかもしれません。"
#: src/view/shell/bottom-bar/BottomBar.tsx:137
-#: src/view/shell/desktop/LeftNav.tsx:304
-#: src/view/shell/Drawer.tsx:379
-#: src/view/shell/Drawer.tsx:380
+#: src/view/shell/desktop/LeftNav.tsx:306
+#: src/view/shell/Drawer.tsx:398
+#: src/view/shell/Drawer.tsx:399
msgid "Home"
msgstr "ホーム"
#: src/view/com/pager/FeedsTabBarMobile.tsx:96
-#: src/view/screens/PreferencesHomeFeed.tsx:95
+#: src/view/screens/PreferencesHomeFeed.tsx:101
#: src/view/screens/Settings.tsx:481
msgid "Home Feed Preferences"
-msgstr "ホームフィード設定"
+msgstr "ホームフィードの設定"
#: src/view/com/auth/login/ForgotPasswordForm.tsx:114
msgid "Hosting provider"
@@ -1035,7 +1078,7 @@ msgstr "画像のALTテキスト"
msgid "Image options"
msgstr "画像のオプション"
-#: src/view/com/auth/login/LoginForm.tsx:113
+#: src/view/com/auth/login/LoginForm.tsx:115
msgid "Invalid username or password"
msgstr "無効なユーザー名またはパスワード"
@@ -1048,7 +1091,7 @@ msgstr "招待"
msgid "Invite a Friend"
msgstr "友達を招待"
-#: src/view/com/auth/create/Step2.tsx:57
+#: src/view/com/auth/create/Step2.tsx:72
msgid "Invite code"
msgstr "招待コード"
@@ -1056,7 +1099,7 @@ msgstr "招待コード"
msgid "Invite code not accepted. Check that you input it correctly and try again."
msgstr "招待コードが確認できません。正しく入力されていることを確認し、もう一度実行してください。"
-#: src/view/shell/Drawer.tsx:621
+#: src/view/shell/Drawer.tsx:640
msgid "Invite codes: {invitesAvailable} available"
msgstr "使用可能な招待コード: {invitesAvailable} 個"
@@ -1068,8 +1111,8 @@ msgstr "仕事"
msgid "Join the waitlist"
msgstr "Waitlistに参加"
-#: src/view/com/auth/create/Step2.tsx:68
-#: src/view/com/auth/create/Step2.tsx:72
+#: src/view/com/auth/create/Step2.tsx:86
+#: src/view/com/auth/create/Step2.tsx:90
msgid "Join the waitlist."
msgstr "Waitlistに参加します。"
@@ -1129,14 +1172,14 @@ msgstr "パスワードをリセットしましょう!"
msgid "Library"
msgstr "ライブラリー"
-#: src/view/screens/ProfileFeed.tsx:577
+#: src/view/screens/ProfileFeed.tsx:586
msgid "Like this feed"
msgstr "このフィードをいいね"
#: src/view/screens/PostLikedBy.tsx:27
#: src/view/screens/ProfileFeedLikedBy.tsx:27
msgid "Liked by"
-msgstr "いいねした人"
+msgstr "いいねしたユーザー"
#: src/view/screens/Profile.tsx:164
msgid "Likes"
@@ -1148,31 +1191,31 @@ msgstr "いいね"
#: src/view/com/modals/CreateOrEditList.tsx:186
msgid "List Avatar"
-msgstr "リストアバター"
+msgstr "リストのアバター"
#: src/view/com/modals/CreateOrEditList.tsx:199
msgid "List Name"
msgstr "リストの名前"
#: src/view/screens/Profile.tsx:166
-#: src/view/shell/desktop/LeftNav.tsx:377
-#: src/view/shell/Drawer.tsx:471
-#: src/view/shell/Drawer.tsx:472
+#: src/view/shell/desktop/LeftNav.tsx:379
+#: src/view/shell/Drawer.tsx:490
+#: src/view/shell/Drawer.tsx:491
msgid "Lists"
msgstr "リスト"
-#: src/view/com/post-thread/PostThread.tsx:260
-#: src/view/com/post-thread/PostThread.tsx:268
+#: src/view/com/post-thread/PostThread.tsx:259
+#: src/view/com/post-thread/PostThread.tsx:267
msgid "Load more posts"
-msgstr "より多くの投稿をロード"
+msgstr "投稿をさらにロード"
-#: src/view/screens/Notifications.tsx:144
+#: src/view/screens/Notifications.tsx:148
msgid "Load new notifications"
-msgstr "新しい通知をロード"
+msgstr "最新の通知をロード"
#: src/view/com/feeds/FeedPage.tsx:189
msgid "Load new posts"
-msgstr "投稿をロード"
+msgstr "最新の投稿をロード"
#: src/view/com/composer/text-input/mobile/Autocomplete.tsx:95
msgid "Loading..."
@@ -1188,7 +1231,7 @@ msgstr "ローカル開発者サーバー"
#: src/view/screens/Moderation.tsx:136
msgid "Logged-out visibility"
-msgstr "ログアウトした状態の可視性"
+msgstr "ログアウトしたユーザーからの可視性"
#: src/view/com/auth/login/ChooseAccountForm.tsx:133
msgid "Login to account that is not listed"
@@ -1224,9 +1267,9 @@ msgstr "サーバーからのメッセージ"
#: src/view/screens/Moderation.tsx:64
#: src/view/screens/Settings.tsx:563
-#: src/view/shell/desktop/LeftNav.tsx:395
-#: src/view/shell/Drawer.tsx:490
-#: src/view/shell/Drawer.tsx:491
+#: src/view/shell/desktop/LeftNav.tsx:397
+#: src/view/shell/Drawer.tsx:509
+#: src/view/shell/Drawer.tsx:510
msgid "Moderation"
msgstr "モデレーション"
@@ -1243,46 +1286,50 @@ msgid "More feeds"
msgstr "その他のフィード"
#: src/view/com/profile/ProfileHeader.tsx:548
-#: src/view/screens/ProfileFeed.tsx:360
-#: src/view/screens/ProfileList.tsx:583
+#: src/view/screens/ProfileFeed.tsx:361
+#: src/view/screens/ProfileList.tsx:584
msgid "More options"
msgstr "その他のオプション"
+#: src/view/screens/PreferencesThreads.tsx:82
+msgid "Most-liked replies first"
+msgstr "いいねの数が多い順に返信を表示"
+
#: src/view/com/profile/ProfileHeader.tsx:370
msgid "Mute Account"
msgstr "アカウントをミュート"
-#: src/view/screens/ProfileList.tsx:510
+#: src/view/screens/ProfileList.tsx:511
msgid "Mute accounts"
msgstr "アカウントをミュート"
-#: src/view/screens/ProfileList.tsx:457
+#: src/view/screens/ProfileList.tsx:458
msgid "Mute list"
msgstr "リストをミュート"
-#: src/view/screens/ProfileList.tsx:270
+#: src/view/screens/ProfileList.tsx:271
msgid "Mute these accounts?"
msgstr "これらのアカウントをミュートしますか?"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:149
+#: src/view/com/util/forms/PostDropdownBtn.tsx:157
msgid "Mute thread"
msgstr "スレッドをミュート"
#: src/view/screens/Moderation.tsx:109
msgid "Muted accounts"
-msgstr "ミュートされたアカウント"
+msgstr "ミュート中のアカウント"
-#: src/view/screens/ModerationMutedAccounts.tsx:106
+#: src/view/screens/ModerationMutedAccounts.tsx:107
msgid "Muted Accounts"
-msgstr "ミュートされたアカウント"
+msgstr "ミュート中のアカウント"
-#: src/view/screens/ModerationMutedAccounts.tsx:114
+#: src/view/screens/ModerationMutedAccounts.tsx:115
msgid "Muted accounts have their posts removed from your feed and from your notifications. Mutes are completely private."
-msgstr "ミュートをされたアカウントは、フィードと通知からの投稿が削除されます。ミュートの設定は完全に非公開です。"
+msgstr "ミュート中のアカウントの投稿は、フィードや通知から取り除かれます。ミュートの設定は完全に非公開です。"
-#: src/view/screens/ProfileList.tsx:272
+#: src/view/screens/ProfileList.tsx:273
msgid "Muting is private. Muted accounts can interact with you, but you will not see their posts or receive notifications from them."
-msgstr "ミュートは非公開です。ミュートをされたアカウントはあなたと引き続き関わることができますが、そのアカウントの投稿や通知を受信することはできません。"
+msgstr "ミュートの設定は非公開です。ミュート中のアカウントはあなたと引き続き関わることができますが、そのアカウントの投稿や通知を受信することはできません。"
#: src/view/com/modals/BirthDateSettings.tsx:56
msgid "My Birthday"
@@ -1305,6 +1352,11 @@ msgstr "保存されたフィード"
msgid "Name"
msgstr "名前"
+#: src/view/com/modals/EmbedConsent.tsx:107
+#: src/view/com/modals/EmbedConsent.tsx:123
+msgid "Never load embeds from {0}"
+msgstr ""
+
#: src/view/com/auth/onboarding/WelcomeMobile.tsx:72
msgid "Never lose access to your followers and data."
msgstr "フォロワーやデータへのアクセスを失うことはありません。"
@@ -1315,23 +1367,27 @@ msgid "New"
msgstr "新規"
#: src/view/com/feeds/FeedPage.tsx:200
-#: src/view/screens/Feeds.tsx:511
+#: src/view/screens/Feeds.tsx:507
#: src/view/screens/Profile.tsx:354
-#: src/view/screens/ProfileFeed.tsx:430
-#: src/view/screens/ProfileList.tsx:193
-#: src/view/screens/ProfileList.tsx:221
-#: src/view/shell/desktop/LeftNav.tsx:247
+#: src/view/screens/ProfileFeed.tsx:431
+#: src/view/screens/ProfileList.tsx:194
+#: src/view/screens/ProfileList.tsx:222
+#: src/view/shell/desktop/LeftNav.tsx:248
msgid "New post"
msgstr "新しい投稿"
-#: src/view/shell/desktop/LeftNav.tsx:257
+#: src/view/shell/desktop/LeftNav.tsx:258
msgid "New Post"
msgstr "新しい投稿"
+#: src/view/screens/PreferencesThreads.tsx:79
+msgid "Newest replies first"
+msgstr "新しい順に返信を表示"
+
#: src/view/com/auth/create/CreateAccount.tsx:154
#: src/view/com/auth/login/ForgotPasswordForm.tsx:174
#: src/view/com/auth/login/ForgotPasswordForm.tsx:184
-#: src/view/com/auth/login/LoginForm.tsx:281
+#: src/view/com/auth/login/LoginForm.tsx:286
#: src/view/com/auth/login/SetNewPasswordForm.tsx:156
#: src/view/com/auth/login/SetNewPasswordForm.tsx:166
#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:79
@@ -1342,14 +1398,17 @@ msgstr "次へ"
msgid "Next image"
msgstr "次の画像"
-#: src/view/screens/PreferencesHomeFeed.tsx:191
-#: src/view/screens/PreferencesHomeFeed.tsx:226
-#: src/view/screens/PreferencesHomeFeed.tsx:263
+#: src/view/screens/PreferencesHomeFeed.tsx:126
+#: src/view/screens/PreferencesHomeFeed.tsx:197
+#: src/view/screens/PreferencesHomeFeed.tsx:232
+#: src/view/screens/PreferencesHomeFeed.tsx:269
+#: src/view/screens/PreferencesThreads.tsx:106
+#: src/view/screens/PreferencesThreads.tsx:129
msgid "No"
msgstr "いいえ"
-#: src/view/screens/ProfileFeed.tsx:570
-#: src/view/screens/ProfileList.tsx:711
+#: src/view/screens/ProfileFeed.tsx:579
+#: src/view/screens/ProfileList.tsx:720
msgid "No description"
msgstr "説明はありません"
@@ -1362,13 +1421,17 @@ msgid "No results found for \"{query}\""
msgstr "「{query}」の検索結果はありません"
#: src/view/com/modals/ListAddRemoveUsers.tsx:127
-#: src/view/screens/Search/Search.tsx:271
-#: src/view/screens/Search/Search.tsx:299
-#: src/view/screens/Search/Search.tsx:615
+#: src/view/screens/Search/Search.tsx:270
+#: src/view/screens/Search/Search.tsx:298
+#: src/view/screens/Search/Search.tsx:629
#: src/view/shell/desktop/Search.tsx:210
msgid "No results found for {query}"
msgstr "「{query}」の検索結果はありません"
+#: src/view/com/modals/EmbedConsent.tsx:129
+msgid "No thanks"
+msgstr ""
+
#: src/view/com/modals/Threadgate.tsx:82
msgid "Nobody"
msgstr "返信不可"
@@ -1385,12 +1448,12 @@ msgstr "該当なし。"
msgid "Note: Bluesky is an open and public network. This setting only limits the visibility of your content on the Bluesky app and website, and other apps may not respect this setting. Your content may still be shown to logged-out users by other apps and websites."
msgstr "注記:Blueskyはオープンでパブリックなネットワークです。この設定はBlueskyのアプリおよびウェブサイト上のみでのあなたのコンテンツの可視性を制限するものであり、他のアプリではこの設定を尊重しない場合があります。他のアプリやウェブサイトでは、ログアウトしたユーザーにあなたのコンテンツが表示される場合があります。"
-#: src/view/screens/Notifications.tsx:109
-#: src/view/screens/Notifications.tsx:133
+#: src/view/screens/Notifications.tsx:113
+#: src/view/screens/Notifications.tsx:137
#: src/view/shell/bottom-bar/BottomBar.tsx:205
-#: src/view/shell/desktop/LeftNav.tsx:359
-#: src/view/shell/Drawer.tsx:416
-#: src/view/shell/Drawer.tsx:417
+#: src/view/shell/desktop/LeftNav.tsx:361
+#: src/view/shell/Drawer.tsx:435
+#: src/view/shell/Drawer.tsx:436
msgid "Notifications"
msgstr "通知"
@@ -1402,7 +1465,11 @@ msgstr "ちょっと!"
msgid "Okay"
msgstr "OK"
-#: src/view/com/composer/Composer.tsx:354
+#: src/view/screens/PreferencesThreads.tsx:78
+msgid "Oldest replies first"
+msgstr "古い順に返信を表示"
+
+#: src/view/com/composer/Composer.tsx:363
msgid "One or more images is missing alt text."
msgstr "1つもしくは複数の画像にALTテキストがありません。"
@@ -1410,6 +1477,11 @@ msgstr "1つもしくは複数の画像にALTテキストがありません。"
msgid "Only {0} can reply."
msgstr "{0}のみ返信可能"
+#: src/view/com/composer/Composer.tsx:468
+#: src/view/com/composer/Composer.tsx:469
+msgid "Open emoji picker"
+msgstr "絵文字を入力"
+
#: src/view/com/pager/FeedsTabBarMobile.tsx:76
msgid "Open navigation"
msgstr "ナビゲーションを開く"
@@ -1418,8 +1490,12 @@ msgstr "ナビゲーションを開く"
msgid "Opens configurable language settings"
msgstr "構成可能な言語設定を開く"
-#: src/view/shell/desktop/RightNav.tsx:148
-#: src/view/shell/Drawer.tsx:622
+#: src/view/screens/Settings.tsx:587
+msgid "Opens external embeds settings"
+msgstr ""
+
+#: src/view/shell/desktop/RightNav.tsx:156
+#: src/view/shell/Drawer.tsx:641
msgid "Opens list of invite codes"
msgstr "招待コードのリストを開く"
@@ -1435,7 +1511,7 @@ msgstr "モデレーションの設定を開く"
msgid "Opens screen with all saved feeds"
msgstr "保存されたすべてのフィードで画面を開く"
-#: src/view/screens/Settings.tsx:581
+#: src/view/screens/Settings.tsx:614
msgid "Opens the app password settings page"
msgstr "アプリパスワード設定ページを開く"
@@ -1443,11 +1519,11 @@ msgstr "アプリパスワード設定ページを開く"
msgid "Opens the home feed preferences"
msgstr "ホームフィードの設定を開く"
-#: src/view/screens/Settings.tsx:664
+#: src/view/screens/Settings.tsx:697
msgid "Opens the storybook page"
msgstr "ストーリーブックのページを開く"
-#: src/view/screens/Settings.tsx:644
+#: src/view/screens/Settings.tsx:677
msgid "Opens the system log page"
msgstr "システムログのページを開く"
@@ -1455,6 +1531,10 @@ msgstr "システムログのページを開く"
msgid "Opens the threads preferences"
msgstr "スレッドの設定を開く"
+#: src/view/com/modals/Threadgate.tsx:89
+msgid "Or combine these options:"
+msgstr "または以下のオプションを組み合わせてください:"
+
#: src/view/com/auth/login/ChooseAccountForm.tsx:138
msgid "Other account"
msgstr "その他のアカウント"
@@ -1472,9 +1552,9 @@ msgstr "その他..."
msgid "Page not found"
msgstr "ページが見つかりません"
-#: src/view/com/auth/create/Step2.tsx:101
-#: src/view/com/auth/create/Step2.tsx:111
-#: src/view/com/auth/login/LoginForm.tsx:216
+#: src/view/com/auth/create/Step2.tsx:122
+#: src/view/com/auth/create/Step2.tsx:132
+#: src/view/com/auth/login/LoginForm.tsx:221
#: src/view/com/auth/login/SetNewPasswordForm.tsx:130
#: src/view/com/modals/DeleteAccount.tsx:191
msgid "Password"
@@ -1496,6 +1576,19 @@ msgstr "成人向けの写真です。"
msgid "Pinned Feeds"
msgstr "ピン留めされたフィード"
+#: src/view/com/util/post-embeds/ExternalGifEmbed.tsx:111
+msgid "Play {0}"
+msgstr ""
+
+#: src/view/com/util/post-embeds/ExternalPlayerEmbed.tsx:54
+#: src/view/com/util/post-embeds/ExternalPlayerEmbed.tsx:55
+msgid "Play Video"
+msgstr ""
+
+#: src/view/com/util/post-embeds/ExternalGifEmbed.tsx:110
+msgid "Plays the GIF"
+msgstr ""
+
#: src/view/com/auth/create/state.ts:116
msgid "Please choose your handle."
msgstr "ハンドルをお選びください。"
@@ -1530,13 +1623,17 @@ msgstr ""
#~ msgid "Please tell us why you think this decision was incorrect."
#~ msgstr "この判断が誤っていると考える理由を教えてください。"
-#: src/view/com/composer/Composer.tsx:337
-#: src/view/com/post-thread/PostThread.tsx:226
+#: src/view/com/composer/Composer.tsx:215
+msgid "Please wait for your link card to finish loading"
+msgstr "リンクカードがロードされるまでお待ちください"
+
+#: src/view/com/composer/Composer.tsx:346
+#: src/view/com/post-thread/PostThread.tsx:225
#: src/view/screens/PostThread.tsx:80
msgid "Post"
msgstr "投稿"
-#: src/view/com/post-thread/PostThread.tsx:385
+#: src/view/com/post-thread/PostThread.tsx:378
msgid "Post hidden"
msgstr "投稿を非表示"
@@ -1548,7 +1645,7 @@ msgstr "投稿の言語"
msgid "Post Languages"
msgstr "投稿の言語"
-#: src/view/com/post-thread/PostThread.tsx:437
+#: src/view/com/post-thread/PostThread.tsx:430
msgid "Post not found"
msgstr "投稿が見つかりません"
@@ -1568,15 +1665,18 @@ msgstr "前の画像"
msgid "Primary Language"
msgstr "第一言語"
-#: src/view/screens/PreferencesThreads.tsx:91
+#: src/view/screens/PreferencesThreads.tsx:97
msgid "Prioritize Your Follows"
msgstr "あなたのフォローを優先"
-#: src/view/shell/desktop/RightNav.tsx:76
+#: src/view/screens/Settings.tsx:570
+#: src/view/shell/desktop/RightNav.tsx:84
msgid "Privacy"
msgstr "プライバシー"
#: src/view/screens/PrivacyPolicy.tsx:29
+#: src/view/screens/Settings.tsx:783
+#: src/view/shell/Drawer.tsx:262
msgid "Privacy Policy"
msgstr "プライバシーポリシー"
@@ -1585,14 +1685,14 @@ msgid "Processing..."
msgstr "処理中..."
#: src/view/shell/bottom-bar/BottomBar.tsx:247
-#: src/view/shell/desktop/LeftNav.tsx:413
-#: src/view/shell/Drawer.tsx:69
-#: src/view/shell/Drawer.tsx:525
-#: src/view/shell/Drawer.tsx:526
+#: src/view/shell/desktop/LeftNav.tsx:415
+#: src/view/shell/Drawer.tsx:70
+#: src/view/shell/Drawer.tsx:544
+#: src/view/shell/Drawer.tsx:545
msgid "Profile"
msgstr "プロフィール"
-#: src/view/screens/Settings.tsx:789
+#: src/view/screens/Settings.tsx:841
msgid "Protect your account by verifying your email."
msgstr "メールアドレスを確認してアカウントを保護します。"
@@ -1613,6 +1713,10 @@ msgstr "引用"
msgid "Quote Post"
msgstr "引用"
+#: src/view/screens/PreferencesThreads.tsx:86
+msgid "Random (aka \"Poster's Roulette\")"
+msgstr "ランダムな順番で表示(別名「投稿者のルーレット」)"
+
#: src/view/com/modals/EditImage.tsx:236
msgid "Ratios"
msgstr "比率"
@@ -1647,7 +1751,7 @@ msgstr "フィードを削除"
#: src/view/com/feeds/FeedSourceCard.tsx:105
#: src/view/com/feeds/FeedSourceCard.tsx:172
-#: src/view/screens/ProfileFeed.tsx:270
+#: src/view/screens/ProfileFeed.tsx:271
msgid "Remove from my feeds"
msgstr "マイフィードから削除"
@@ -1680,7 +1784,7 @@ msgstr "返信"
msgid "Replies to this thread are disabled"
msgstr "このスレッドへの返信はできません"
-#: src/view/screens/PreferencesHomeFeed.tsx:135
+#: src/view/screens/PreferencesHomeFeed.tsx:141
msgid "Reply Filters"
msgstr "返信のフィルター"
@@ -1692,16 +1796,16 @@ msgstr "{collectionName}を報告"
msgid "Report Account"
msgstr "アカウントを報告"
-#: src/view/screens/ProfileFeed.tsx:290
+#: src/view/screens/ProfileFeed.tsx:291
msgid "Report feed"
msgstr "フィードを報告"
-#: src/view/screens/ProfileList.tsx:425
+#: src/view/screens/ProfileList.tsx:426
msgid "Report List"
msgstr "リストを報告"
#: src/view/com/modals/report/SendReportButton.tsx:37
-#: src/view/com/util/forms/PostDropdownBtn.tsx:167
+#: src/view/com/util/forms/PostDropdownBtn.tsx:196
msgid "Report post"
msgstr "投稿を報告"
@@ -1716,14 +1820,18 @@ msgstr "リポストまたは引用"
#: src/view/screens/PostRepostedBy.tsx:27
msgid "Reposted by"
-msgstr "リポストした人"
+msgstr "リポストしたユーザー"
#: src/view/com/modals/ChangeEmail.tsx:181
#: src/view/com/modals/ChangeEmail.tsx:183
msgid "Request Change"
msgstr "変更を要求"
-#: src/view/com/auth/create/Step2.tsx:53
+#: src/view/screens/Settings.tsx:422
+msgid "Require alt text before posting"
+msgstr "画像投稿時にALTテキストを必須とする"
+
+#: src/view/com/auth/create/Step2.tsx:68
msgid "Required for this provider"
msgstr "このプロバイダーに必要"
@@ -1731,7 +1839,7 @@ msgstr "このプロバイダーに必要"
msgid "Reset code"
msgstr "コードをリセット"
-#: src/view/screens/Settings.tsx:686
+#: src/view/screens/Settings.tsx:719
msgid "Reset onboarding state"
msgstr "オンボーディングの状態をリセット"
@@ -1739,30 +1847,29 @@ msgstr "オンボーディングの状態をリセット"
msgid "Reset password"
msgstr "パスワードをリセット"
-#: src/view/screens/Settings.tsx:676
+#: src/view/screens/Settings.tsx:709
msgid "Reset preferences state"
msgstr "設定をリセット"
-#: src/view/screens/Settings.tsx:684
+#: src/view/screens/Settings.tsx:717
msgid "Resets the onboarding state"
msgstr "オンボーディングの状態をリセット"
-#: src/view/screens/Settings.tsx:674
+#: src/view/screens/Settings.tsx:707
msgid "Resets the preferences state"
msgstr "設定の状態をリセット"
#: src/view/com/auth/create/CreateAccount.tsx:163
#: src/view/com/auth/create/CreateAccount.tsx:167
-#: src/view/com/auth/login/LoginForm.tsx:258
-#: src/view/com/auth/login/LoginForm.tsx:261
+#: src/view/com/auth/login/LoginForm.tsx:263
+#: src/view/com/auth/login/LoginForm.tsx:266
#: src/view/com/util/error/ErrorMessage.tsx:55
#: src/view/com/util/error/ErrorScreen.tsx:65
msgid "Retry"
msgstr "再試行"
-#: src/view/com/modals/AltImage.tsx:115
-#: src/view/com/modals/BirthDateSettings.tsx:93
-#: src/view/com/modals/BirthDateSettings.tsx:96
+#: src/view/com/modals/BirthDateSettings.tsx:94
+#: src/view/com/modals/BirthDateSettings.tsx:97
#: src/view/com/modals/ChangeHandle.tsx:173
#: src/view/com/modals/CreateOrEditList.tsx:249
#: src/view/com/modals/CreateOrEditList.tsx:257
@@ -1791,15 +1898,15 @@ msgid "Saved Feeds"
msgstr "保存されたフィード"
#: src/view/com/modals/ListAddRemoveUsers.tsx:75
-#: src/view/com/util/forms/SearchInput.tsx:64
-#: src/view/screens/Search/Search.tsx:401
-#: src/view/screens/Search/Search.tsx:567
+#: src/view/com/util/forms/SearchInput.tsx:65
+#: src/view/screens/Search/Search.tsx:406
+#: src/view/screens/Search/Search.tsx:572
#: src/view/shell/bottom-bar/BottomBar.tsx:159
-#: src/view/shell/desktop/LeftNav.tsx:322
+#: src/view/shell/desktop/LeftNav.tsx:324
#: src/view/shell/desktop/Search.tsx:161
#: src/view/shell/desktop/Search.tsx:170
-#: src/view/shell/Drawer.tsx:343
-#: src/view/shell/Drawer.tsx:344
+#: src/view/shell/Drawer.tsx:362
+#: src/view/shell/Drawer.tsx:363
msgid "Search"
msgstr "検索"
@@ -1810,7 +1917,7 @@ msgstr "検索"
#: src/view/com/auth/LoggedOut.tsx:104
#: src/view/com/auth/LoggedOut.tsx:105
msgid "Search for users"
-msgstr ""
+msgstr "ユーザーを検索"
#: src/view/com/modals/ChangeEmail.tsx:110
msgid "Security Step Required"
@@ -1828,7 +1935,7 @@ msgstr "Bluesky Socialを選択"
msgid "Select from an existing account"
msgstr "既存のアカウントから選択"
-#: src/view/com/auth/login/LoginForm.tsx:143
+#: src/view/com/auth/login/LoginForm.tsx:147
msgid "Select service"
msgstr "サービスを選択"
@@ -1856,8 +1963,8 @@ msgstr "メールを送信"
msgid "Send Email"
msgstr "メールを送信"
-#: src/view/shell/Drawer.tsx:276
-#: src/view/shell/Drawer.tsx:297
+#: src/view/shell/Drawer.tsx:295
+#: src/view/shell/Drawer.tsx:316
msgid "Send feedback"
msgstr "フィードバックを送信"
@@ -1869,30 +1976,30 @@ msgstr "報告を送信"
msgid "Set new password"
msgstr "新しいパスワードを設定"
-#: src/view/screens/PreferencesHomeFeed.tsx:216
+#: src/view/screens/PreferencesHomeFeed.tsx:222
msgid "Set this setting to \"No\" to hide all quote posts from your feed. Reposts will still be visible."
-msgstr "フィードから全ての引用を非表示にするには、この設定を「いいえ」にします。リポストは引き続き表示されます。"
+msgstr "フィード内の引用をすべて非表示にするには、この設定を「いいえ」にします。リポストは引き続き表示されます。"
-#: src/view/screens/PreferencesHomeFeed.tsx:113
+#: src/view/screens/PreferencesHomeFeed.tsx:119
msgid "Set this setting to \"No\" to hide all replies from your feed."
-msgstr "フィードから全ての返信を非表示にするには、この設定を「いいえ」にします。"
+msgstr "フィード内の返信をすべて非表示にするには、この設定を「いいえ」にします。"
-#: src/view/screens/PreferencesHomeFeed.tsx:182
+#: src/view/screens/PreferencesHomeFeed.tsx:188
msgid "Set this setting to \"No\" to hide all reposts from your feed."
-msgstr "フィードから全てのリポストを非表示にするには、この設定を「いいえ」にします。"
+msgstr "フィード内のリポストをすべて非表示にするには、この設定を「いいえ」にします。"
-#: src/view/screens/PreferencesThreads.tsx:116
+#: src/view/screens/PreferencesThreads.tsx:122
msgid "Set this setting to \"Yes\" to show replies in a threaded view. This is an experimental feature."
msgstr "スレッド表示で返信を表示するには、この設定を「はい」にします。これは実験的な機能です。"
-#: src/view/screens/PreferencesHomeFeed.tsx:252
+#: src/view/screens/PreferencesHomeFeed.tsx:258
msgid "Set this setting to \"Yes\" to show samples of your saved feeds in your following feed. This is an experimental feature."
-msgstr "保存されたフィードのサンプルを次のフィードに表示するには、この設定を「はい」にします。これは実験的な機能です。"
+msgstr "保存されたフィードから投稿を抽出して「Following」フィードに表示するには、この設定を「はい」にします。これは実験的な機能です。"
#: src/view/screens/Settings.tsx:277
-#: src/view/shell/desktop/LeftNav.tsx:431
-#: src/view/shell/Drawer.tsx:546
-#: src/view/shell/Drawer.tsx:547
+#: src/view/shell/desktop/LeftNav.tsx:433
+#: src/view/shell/Drawer.tsx:565
+#: src/view/shell/Drawer.tsx:566
msgid "Settings"
msgstr "設定"
@@ -1901,12 +2008,12 @@ msgid "Sexual activity or erotic nudity."
msgstr "性的行為または性的なヌード。"
#: src/view/com/profile/ProfileHeader.tsx:338
-#: src/view/com/util/forms/PostDropdownBtn.tsx:131
-#: src/view/screens/ProfileList.tsx:384
+#: src/view/com/util/forms/PostDropdownBtn.tsx:139
+#: src/view/screens/ProfileList.tsx:385
msgid "Share"
msgstr "共有"
-#: src/view/screens/ProfileFeed.tsx:302
+#: src/view/screens/ProfileFeed.tsx:303
msgid "Share feed"
msgstr "フィードを共有"
@@ -1919,27 +2026,31 @@ msgstr "表示"
msgid "Show anyway"
msgstr "とにかく表示"
-#: src/view/screens/PreferencesHomeFeed.tsx:249
+#: src/view/com/modals/EmbedConsent.tsx:87
+msgid "Show embeds from {0}"
+msgstr ""
+
+#: src/view/screens/PreferencesHomeFeed.tsx:255
msgid "Show Posts from My Feeds"
msgstr "マイフィードからの投稿を表示"
-#: src/view/screens/PreferencesHomeFeed.tsx:213
+#: src/view/screens/PreferencesHomeFeed.tsx:219
msgid "Show Quote Posts"
msgstr "引用を表示"
-#: src/view/screens/PreferencesHomeFeed.tsx:110
+#: src/view/screens/PreferencesHomeFeed.tsx:116
msgid "Show Replies"
msgstr "返信を表示"
-#: src/view/screens/PreferencesThreads.tsx:94
+#: src/view/screens/PreferencesThreads.tsx:100
msgid "Show replies by people you follow before all other replies."
-msgstr "他のすべての返信の前に、フォローしている人からの返信を表示します。"
+msgstr "自分がフォローしているユーザーからの返信を、他のすべての返信の前に表示します。"
-#: src/view/screens/PreferencesHomeFeed.tsx:179
+#: src/view/screens/PreferencesHomeFeed.tsx:185
msgid "Show Reposts"
msgstr "リポストを表示"
-#: src/view/com/notifications/FeedItem.tsx:337
+#: src/view/com/notifications/FeedItem.tsx:345
msgid "Show users"
msgstr "ユーザーを表示"
@@ -1972,7 +2083,7 @@ msgstr "{0}としてサインイン"
msgid "Sign in as..."
msgstr "アカウントの選択"
-#: src/view/com/auth/login/LoginForm.tsx:130
+#: src/view/com/auth/login/LoginForm.tsx:134
msgid "Sign into"
msgstr "サインイン"
@@ -2026,11 +2137,11 @@ msgstr "正方形"
msgid "Staging"
msgstr "ステージング"
-#: src/view/screens/Settings.tsx:730
+#: src/view/screens/Settings.tsx:763
msgid "Status page"
msgstr "ステータスページ"
-#: src/view/screens/Settings.tsx:666
+#: src/view/screens/Settings.tsx:699
msgid "Storybook"
msgstr "ストーリーブック"
@@ -2038,15 +2149,15 @@ msgstr "ストーリーブック"
msgid "Submit"
msgstr "送信"
-#: src/view/screens/ProfileList.tsx:574
+#: src/view/screens/ProfileList.tsx:575
msgid "Subscribe"
msgstr "登録"
-#: src/view/screens/ProfileList.tsx:570
+#: src/view/screens/ProfileList.tsx:571
msgid "Subscribe to this list"
msgstr "このリストに登録"
-#: src/view/screens/Search/Search.tsx:357
+#: src/view/screens/Search/Search.tsx:362
msgid "Suggested Follows"
msgstr "おすすめのフォロー"
@@ -2059,7 +2170,7 @@ msgstr "サポート"
msgid "Switch Account"
msgstr "アカウントを切り替える"
-#: src/view/screens/Settings.tsx:646
+#: src/view/screens/Settings.tsx:679
msgid "System log"
msgstr "システムログ"
@@ -2067,16 +2178,18 @@ msgstr "システムログ"
msgid "Tall"
msgstr "トール"
-#: src/view/shell/desktop/RightNav.tsx:85
+#: src/view/shell/desktop/RightNav.tsx:93
msgid "Terms"
msgstr "条件"
+#: src/view/screens/Settings.tsx:777
#: src/view/screens/TermsOfService.tsx:29
+#: src/view/shell/Drawer.tsx:256
msgid "Terms of Service"
msgstr "利用規約"
#: src/view/com/modals/AppealLabel.tsx:70
-#: src/view/com/modals/report/InputIssueDetails.tsx:50
+#: src/view/com/modals/report/InputIssueDetails.tsx:51
msgid "Text input field"
msgstr "テキストの入力フィールド"
@@ -2092,7 +2205,7 @@ msgstr "コミュニティガイドラインは<0/>に移動されました"
msgid "The Copyright Policy has been moved to <0/>"
msgstr "著作権ポリシーが<0/>に移動されました"
-#: src/view/com/post-thread/PostThread.tsx:440
+#: src/view/com/post-thread/PostThread.tsx:433
msgid "The post may have been deleted."
msgstr "投稿が削除された可能性があります。"
@@ -2124,6 +2237,10 @@ msgstr "この{screenDescription}にはフラグが設定されています:"
msgid "This account has requested that users sign in to view their profile."
msgstr "このアカウントを閲覧するためにはサインインが必要です。"
+#: src/view/com/modals/EmbedConsent.tsx:68
+msgid "This content is hosted by {0}. Do you want to enable external media?"
+msgstr ""
+
#: src/view/com/posts/FeedErrorMessage.tsx:107
msgid "This content is not viewable without a Bluesky account."
msgstr "このコンテンツはBlueskyのアカウントがないと閲覧できません。"
@@ -2156,12 +2273,16 @@ msgstr "この投稿は削除されました。"
msgid "This warning is only available for posts with media attached."
msgstr "この警告は、メディアが接続されている投稿にのみ使用できます。"
+#: src/view/com/util/forms/PostDropdownBtn.tsx:178
+msgid "This will hide this post from your feeds."
+msgstr "この投稿をあなたのフィードにおいて非表示にします。"
+
#: src/view/screens/PreferencesThreads.tsx:53
#: src/view/screens/Settings.tsx:503
msgid "Thread Preferences"
msgstr "スレッドの設定"
-#: src/view/screens/PreferencesThreads.tsx:113
+#: src/view/screens/PreferencesThreads.tsx:119
msgid "Threaded Mode"
msgstr "スレッドモード"
@@ -2173,9 +2294,9 @@ msgstr "ドロップダウンをトグル"
msgid "Transformations"
msgstr "変換"
-#: src/view/com/post-thread/PostThreadItem.tsx:704
-#: src/view/com/post-thread/PostThreadItem.tsx:706
-#: src/view/com/util/forms/PostDropdownBtn.tsx:103
+#: src/view/com/post-thread/PostThreadItem.tsx:705
+#: src/view/com/post-thread/PostThreadItem.tsx:707
+#: src/view/com/util/forms/PostDropdownBtn.tsx:111
msgid "Translate"
msgstr "翻訳"
@@ -2183,17 +2304,17 @@ msgstr "翻訳"
msgid "Try again"
msgstr "再試行"
-#: src/view/screens/ProfileList.tsx:472
+#: src/view/screens/ProfileList.tsx:473
msgid "Un-block list"
msgstr "リストでのブロックを解除"
-#: src/view/screens/ProfileList.tsx:457
+#: src/view/screens/ProfileList.tsx:458
msgid "Un-mute list"
msgstr "リストでのミュートを解除"
-#: src/view/com/auth/create/CreateAccount.tsx:64
+#: src/view/com/auth/create/CreateAccount.tsx:65
#: src/view/com/auth/login/Login.tsx:76
-#: src/view/com/auth/login/LoginForm.tsx:117
+#: src/view/com/auth/login/LoginForm.tsx:120
msgid "Unable to contact your service. Please check your Internet connection."
msgstr "あなたのサービスに接続できません。インターネットの接続を確認してください。"
@@ -2211,7 +2332,7 @@ msgstr "アカウントのブロックを解除"
msgid "Undo repost"
msgstr "リポストを元に戻す"
-#: src/view/com/auth/create/state.ts:210
+#: src/view/com/auth/create/state.ts:216
msgid "Unfortunately, you do not meet the requirements to create an account."
msgstr "残念ながら、アカウントを作成するための要件を満たしていません。"
@@ -2219,11 +2340,11 @@ msgstr "残念ながら、アカウントを作成するための要件を満た
msgid "Unmute Account"
msgstr "アカウントのミュートを解除"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:149
+#: src/view/com/util/forms/PostDropdownBtn.tsx:157
msgid "Unmute thread"
msgstr "スレッドのミュートを解除"
-#: src/view/screens/ProfileList.tsx:440
+#: src/view/screens/ProfileList.tsx:441
msgid "Unpin moderation list"
msgstr "モデレーションリストのピン留めを解除"
@@ -2267,12 +2388,12 @@ msgstr "ユーザーハンドル"
msgid "User Lists"
msgstr "ユーザーリスト"
-#: src/view/com/auth/login/LoginForm.tsx:170
-#: src/view/com/auth/login/LoginForm.tsx:187
+#: src/view/com/auth/login/LoginForm.tsx:174
+#: src/view/com/auth/login/LoginForm.tsx:192
msgid "Username or email address"
msgstr "ユーザー名またはメールアドレス"
-#: src/view/screens/ProfileList.tsx:738
+#: src/view/screens/ProfileList.tsx:747
msgid "Users"
msgstr "ユーザー"
@@ -2284,15 +2405,15 @@ msgstr "<0/>にフォローされているユーザー"
msgid "Users in \"{0}\""
msgstr "{0}のユーザー"
-#: src/view/screens/Settings.tsx:750
+#: src/view/screens/Settings.tsx:802
msgid "Verify email"
msgstr "メールアドレスを確認"
-#: src/view/screens/Settings.tsx:775
+#: src/view/screens/Settings.tsx:827
msgid "Verify my email"
msgstr "メールアドレスを確認"
-#: src/view/screens/Settings.tsx:784
+#: src/view/screens/Settings.tsx:836
msgid "Verify My Email"
msgstr "メールアドレスを確認"
@@ -2313,11 +2434,11 @@ msgstr "アバターを表示"
msgid "Visit Site"
msgstr "サイトへアクセス"
-#: src/view/com/auth/create/CreateAccount.tsx:121
+#: src/view/com/auth/create/CreateAccount.tsx:122
msgid "We're so excited to have you join us!"
msgstr "私たちはあなたが参加してくれることをとても楽しみにしています!"
-#: src/view/screens/Search/Search.tsx:238
+#: src/view/screens/Search/Search.tsx:243
msgid "We're sorry, but your search could not be completed. Please try again in a few minutes."
msgstr "大変申し訳ありませんが、検索を完了できませんでした。数分後に再試行してください。"
@@ -2348,13 +2469,13 @@ msgstr "アルゴリズムによるフィードにはどの言語を使用しま
#: src/view/com/composer/threadgate/ThreadgateBtn.tsx:47
#: src/view/com/modals/Threadgate.tsx:66
msgid "Who can reply"
-msgstr "返信できる人"
+msgstr "返信できるユーザー"
#: src/view/com/modals/crop-image/CropImage.web.tsx:102
msgid "Wide"
msgstr "ワイド"
-#: src/view/com/composer/Composer.tsx:409
+#: src/view/com/composer/Composer.tsx:418
msgid "Write post"
msgstr "投稿を書く"
@@ -2362,9 +2483,12 @@ msgstr "投稿を書く"
msgid "Write your reply"
msgstr "返信を書く"
-#: src/view/screens/PreferencesHomeFeed.tsx:192
-#: src/view/screens/PreferencesHomeFeed.tsx:227
-#: src/view/screens/PreferencesHomeFeed.tsx:262
+#: src/view/screens/PreferencesHomeFeed.tsx:126
+#: src/view/screens/PreferencesHomeFeed.tsx:198
+#: src/view/screens/PreferencesHomeFeed.tsx:233
+#: src/view/screens/PreferencesHomeFeed.tsx:268
+#: src/view/screens/PreferencesThreads.tsx:106
+#: src/view/screens/PreferencesThreads.tsx:129
msgid "Yes"
msgstr "はい"
@@ -2393,20 +2517,20 @@ msgstr "保存されたフィードがありません!"
msgid "You don't have any saved feeds."
msgstr "保存されたフィードがありません。"
-#: src/view/com/post-thread/PostThread.tsx:388
+#: src/view/com/post-thread/PostThread.tsx:381
msgid "You have blocked the author or you have been blocked by the author."
msgstr "あなたが著者をブロックしているか、または著者によってあなたはブロックされています。"
-#: src/view/com/feeds/ProfileFeedgens.tsx:141
+#: src/view/com/feeds/ProfileFeedgens.tsx:134
msgid "You have no feeds."
msgstr "フィードがありません。"
#: src/view/com/lists/MyLists.tsx:89
-#: src/view/com/lists/ProfileLists.tsx:145
+#: src/view/com/lists/ProfileLists.tsx:138
msgid "You have no lists."
msgstr "リストがありません。"
-#: src/view/screens/ModerationBlockedAccounts.tsx:131
+#: src/view/screens/ModerationBlockedAccounts.tsx:132
msgid "You have not blocked any accounts yet. To block an account, go to their profile and selected \"Block account\" from the menu on their account."
msgstr "ブロック中のアカウントはまだありません。アカウントをブロックするには、ユーザーのプロフィールに移動し、アカウントメニューから「アカウントをブロック」を選択します。"
@@ -2414,7 +2538,7 @@ msgstr "ブロック中のアカウントはまだありません。アカウン
msgid "You have not created any app passwords yet. You can create one by pressing the button below."
msgstr "アプリパスワードはまだ作成されていません。下のボタンを押すと作成できます。"
-#: src/view/screens/ModerationMutedAccounts.tsx:130
+#: src/view/screens/ModerationMutedAccounts.tsx:131
msgid "You have not muted any accounts yet. To mute an account, go to their profile and selected \"Mute account\" from the menu on their account."
msgstr "ミュートしているアカウントはまだありません。アカウントをミュートするには、プロフィールに移動し、アカウントメニューから「アカウントをミュート」を選択します。"
@@ -2422,11 +2546,11 @@ msgstr "ミュートしているアカウントはまだありません。アカ
msgid "You will receive an email with a \"reset code.\" Enter that code here, then enter your new password."
msgstr "「リセットコード」が記載されたメールが届きます。ここにコードを入力し、新しいパスワードを入力します。"
-#: src/view/com/auth/create/Step2.tsx:43
+#: src/view/com/auth/create/Step2.tsx:58
msgid "Your account"
msgstr "あなたのアカウント"
-#: src/view/com/auth/create/Step2.tsx:122
+#: src/view/com/auth/create/Step2.tsx:146
msgid "Your birth date"
msgstr "生年月日"
@@ -2456,8 +2580,8 @@ msgid "Your hosting provider"
msgstr "ホスティングプロバイダー"
#: src/view/screens/Settings.tsx:402
-#: src/view/shell/desktop/RightNav.tsx:129
-#: src/view/shell/Drawer.tsx:636
+#: src/view/shell/desktop/RightNav.tsx:137
+#: src/view/shell/Drawer.tsx:655
msgid "Your invite codes are hidden when logged in using an App Password"
msgstr "アプリパスワードを使用してログインすると、招待コードは非表示になります。"
diff --git a/src/locale/locales/ko/messages.po b/src/locale/locales/ko/messages.po
new file mode 100644
index 0000000000..3aaac3d8d3
--- /dev/null
+++ b/src/locale/locales/ko/messages.po
@@ -0,0 +1,3530 @@
+msgid ""
+msgstr ""
+"POT-Creation-Date: 2023-11-05 16:01-0800\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: @lingui/cli\n"
+"Language: ko\n"
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"PO-Revision-Date: \n"
+"Last-Translator: quiple\n"
+"Language-Team: quiple\n"
+"Plural-Forms: \n"
+
+#: src/view/screens/Profile.tsx:214
+#~ msgid "- end of feed -"
+#~ msgstr "- 피드 끝 -"
+
+#: src/view/com/modals/SelfLabel.tsx:138
+#~ msgid ". This warning is only available for posts with media attached."
+#~ msgstr ". 이 경고는 미디어가 첨부된 게시물에만 사용할 수 있습니다."
+
+#: src/view/shell/desktop/RightNav.tsx:168
+msgid "{0, plural, one {# invite code available} other {# invite codes available}}"
+msgstr "{0, plural, one {초대 코드 #개 사용 가능} other {초대 코드 #개 사용 가능}}"
+
+#: src/view/com/modals/Repost.tsx:44
+msgid "{0}"
+msgstr "{0}"
+
+#: src/view/com/modals/CreateOrEditList.tsx:177
+msgid "{0} {purposeLabel} List"
+msgstr "{purposeLabel} 리스트 {0}"
+
+#: src/lib/strings/time.ts:40
+msgid "{0} at {1}"
+msgstr "{0} {1}"
+
+#: src/lib/strings/time.ts:30
+msgid "{0}d"
+msgstr "{0}일"
+
+#: src/lib/strings/time.ts:28
+msgid "{0}h"
+msgstr "{0}시간"
+
+#: src/lib/strings/time.ts:26
+msgid "{0}m"
+msgstr "{0}분"
+
+#: src/lib/strings/time.ts:32
+msgid "{0}mo"
+msgstr "{0}개월"
+
+#: src/lib/strings/time.ts:24
+msgid "{diffSeconds}s"
+msgstr "{diffSeconds}초"
+
+#: src/view/shell/desktop/RightNav.tsx:151
+msgid "{invitesAvailable, plural, one {Invite codes: # available} other {Invite codes: # available}}"
+msgstr "{invitesAvailable, plural, one {초대 코드: #개 사용 가능} other {초대 코드: #개 사용 가능}}"
+
+#: src/view/screens/Settings.tsx:408
+#: src/view/shell/Drawer.tsx:659
+msgid "{invitesAvailable} invite code available"
+msgstr "초대 코드 {invitesAvailable}개 사용 가능"
+
+#: src/view/screens/Settings.tsx:410
+#: src/view/shell/Drawer.tsx:661
+msgid "{invitesAvailable} invite codes available"
+msgstr "초대 코드 {invitesAvailable}개 사용 가능"
+
+#: src/view/screens/Search/Search.tsx:87
+msgid "{message}"
+msgstr "{message}"
+
+#: src/view/com/modals/CreateOrEditList.tsx:133
+msgid "{purposeLabel} list created"
+msgstr "{purposeLabel} 리스트 생성됨"
+
+#: src/view/com/modals/CreateOrEditList.tsx:124
+msgid "{purposeLabel} list updated"
+msgstr "{purposeLabel} 리스트 업데이트됨"
+
+#: src/view/com/threadgate/WhoCanReply.tsx:158
+msgid "<0/> members"
+msgstr "<0/> 멤버"
+
+#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:30
+msgid "<0>Choose your0><1>Recommended1><2>Feeds2>"
+msgstr "<1>추천 피드1><0>선택하기0>"
+
+#: src/view/com/modals/DeleteAccount.tsx:82
+msgid "<0>Delete Account 0><1><2>\"2><3>{0}3><4>\"4>1>"
+msgstr "<1><2>\"2><3>{0}3><4>\"4>1><0> 계정 삭제0>"
+
+#: src/view/com/auth/onboarding/RecommendedFollows.tsx:37
+msgid "<0>Follow some0><1>Recommended1><2>Users2>"
+msgstr "<1>추천 사용자1><0>팔로우하기0>"
+
+#: src/view/com/modals/AddAppPasswords.tsx:132
+#~ msgid "<0>Here is your app password.0> Use this to sign into the other app along with your handle."
+#~ msgstr "<0>앱 비밀번호입니다.0> 이 비밀번호와 핸들을 사용하여 다른 앱에 로그인하세요."
+
+#: src/view/screens/Moderation.tsx:212
+#~ msgid "<0>Note: This setting may not be respected by third-party apps that display Bluesky content.0>"
+#~ msgstr "<0>참고: Bluesky 콘텐츠를 표시하는 타사 앱은 이 설정을 준수하지 않을 수 있습니다.0>"
+
+#: src/view/screens/Moderation.tsx:212
+#~ msgid "<0>Note: Your profile and posts will remain publicly available. Third-party apps that display Bluesky content may not respect this setting.0>"
+#~ msgstr "<0>참고: 프로필과 게시물은 공개 상태로 유지됩니다. Bluesky 콘텐츠를 표시하는 타사 앱은 이 설정을 준수하지 않을 수 있습니다.0>"
+
+#: src/view/com/auth/onboarding/WelcomeDesktop.tsx:22
+msgid "<0>Welcome to0><1>Bluesky1>"
+msgstr "<1>Bluesky1><0>에 오신 것을 환영합니다0>"
+
+#: src/view/com/util/moderation/LabelInfo.tsx:45
+msgid "A content warning has been applied to this {0}."
+msgstr "이 {0}에 콘텐츠 경고가 적용되었습니다."
+
+#: src/lib/hooks/useOTAUpdate.ts:16
+msgid "A new version of the app is available. Please update to continue using the app."
+msgstr "새 버전의 앱을 사용할 수 있습니다. 앱을 계속 사용하려면 업데이트하세요."
+
+#: src/view/com/modals/EditImage.tsx:299
+#: src/view/screens/Settings.tsx:418
+msgid "Accessibility"
+msgstr "접근성"
+
+#: src/view/com/auth/login/LoginForm.tsx:163
+#: src/view/screens/Settings.tsx:287
+msgid "Account"
+msgstr "계정"
+
+#: src/view/com/profile/ProfileHeader.tsx:293
+msgid "Account blocked"
+msgstr "계정 차단됨"
+
+#: src/view/com/profile/ProfileHeader.tsx:260
+msgid "Account muted"
+msgstr "계정 뮤트됨"
+
+#: src/view/com/util/AccountDropdownBtn.tsx:41
+msgid "Account options"
+msgstr "계정 옵션"
+
+#: src/view/com/util/AccountDropdownBtn.tsx:25
+msgid "Account removed from quick access"
+msgstr "퀵 액세스에서 계정 제거"
+
+#: src/view/com/profile/ProfileHeader.tsx:315
+msgid "Account unblocked"
+msgstr "계정 차단 해제됨"
+
+#: src/view/com/profile/ProfileHeader.tsx:273
+msgid "Account unmuted"
+msgstr "계정 언뮤트됨"
+
+#: src/state/queries/preferences/moderation.ts:138
+msgid "Accounts falsely claiming to be people or orgs"
+msgstr "사람 또는 조직을 사칭하는 계정"
+
+#: src/view/com/auth/onboarding/RecommendedFeedsItem.tsx:151
+#: src/view/com/modals/ListAddRemoveUsers.tsx:264
+#: src/view/com/modals/UserAddRemoveLists.tsx:193
+#: src/view/screens/ProfileList.tsx:772
+msgid "Add"
+msgstr "추가"
+
+#: src/view/com/modals/SelfLabel.tsx:56
+msgid "Add a content warning"
+msgstr "콘텐츠 경고 추가"
+
+#: src/view/screens/ProfileList.tsx:762
+msgid "Add a user to this list"
+msgstr "이 리스트에 사용자 추가"
+
+#: src/view/screens/Settings.tsx:356
+#: src/view/screens/Settings.tsx:365
+msgid "Add account"
+msgstr "계정 추가"
+
+#: src/view/com/composer/photos/Gallery.tsx:119
+#: src/view/com/composer/photos/Gallery.tsx:180
+#: src/view/com/modals/AltImage.tsx:93
+msgid "Add alt text"
+msgstr "대체 텍스트 추가하기"
+
+#: src/view/screens/AppPasswords.tsx:102
+#: src/view/screens/AppPasswords.tsx:143
+#: src/view/screens/AppPasswords.tsx:156
+msgid "Add App Password"
+msgstr "앱 비밀번호 추가"
+
+#: src/view/com/modals/report/InputIssueDetails.tsx:41
+#: src/view/com/modals/report/Modal.tsx:194
+msgid "Add details"
+msgstr "세부 정보 추가"
+
+#: src/view/com/modals/report/Modal.tsx:197
+msgid "Add details to report"
+msgstr "신고 세부 정보 추가"
+
+#: src/view/com/composer/Composer.tsx:449
+msgid "Add link card"
+msgstr "링크 카드 추가"
+
+#: src/view/com/composer/Composer.tsx:452
+msgid "Add link card:"
+msgstr "링크 카드 추가:"
+
+#: src/view/com/modals/ChangeHandle.tsx:415
+msgid "Add the following DNS record to your domain:"
+msgstr "도메인에 다음 DNS 레코드를 추가하세요:"
+
+#: src/view/com/profile/ProfileHeader.tsx:357
+msgid "Add to Lists"
+msgstr "리스트에 추가"
+
+#: src/view/screens/ProfileFeed.tsx:281
+msgid "Add to my feeds"
+msgstr "내 피드에 추가"
+
+#: src/view/com/auth/onboarding/RecommendedFeedsItem.tsx:140
+msgid "Added"
+msgstr "추가됨"
+
+#: src/view/com/modals/ListAddRemoveUsers.tsx:191
+#: src/view/com/modals/UserAddRemoveLists.tsx:128
+msgid "Added to list"
+msgstr "리스트에 추가됨"
+
+#: src/view/com/feeds/FeedSourceCard.tsx:125
+msgid "Added to my feeds"
+msgstr "내 피드에 추가됨"
+
+#: src/view/screens/PreferencesHomeFeed.tsx:173
+msgid "Adjust the number of likes a reply must have to be shown in your feed."
+msgstr "답글이 피드에 표시되기 위해 필요한 좋아요 표시 수를 조정합니다."
+
+#: src/view/com/modals/SelfLabel.tsx:75
+msgid "Adult Content"
+msgstr "성인 콘텐츠"
+
+#: src/view/com/modals/ContentFilteringSettings.tsx:137
+msgid "Adult content can only be enabled via the Web at <0/>."
+msgstr "성인 콘텐츠는 <0/>에서 웹을 통해서만 활성화할 수 있습니다."
+
+#: src/view/screens/Settings.tsx:603
+msgid "Advanced"
+msgstr "고급"
+
+#: src/view/com/auth/login/ChooseAccountForm.tsx:98
+msgid "Already signed in as @{0}"
+msgstr "이미 @{0}(으)로 로그인했습니다."
+
+#: src/view/com/composer/photos/Gallery.tsx:130
+msgid "ALT"
+msgstr "ALT"
+
+#: src/view/com/modals/EditImage.tsx:315
+msgid "Alt text"
+msgstr "대체 텍스트"
+
+#: src/view/com/composer/photos/Gallery.tsx:209
+msgid "Alt text describes images for blind and low-vision users, and helps give context to everyone."
+msgstr "대체 텍스트는 시각장애인과 저시력 사용자를 위해 이미지를 설명하며 모든 사용자의 이해를 돕습니다."
+
+#: src/view/com/modals/VerifyEmail.tsx:120
+msgid "An email has been sent to {0}. It includes a confirmation code which you can enter below."
+msgstr "{0}(으)로 이메일을 전송했습니다. 이 이메일에는 아래에 입력하는 확인 코드가 포함되어 있습니다."
+
+#: src/view/com/modals/ChangeEmail.tsx:119
+msgid "An email has been sent to your previous address, {0}. It includes a confirmation code which you can enter below."
+msgstr "이전 주소인 {0}(으)로 이메일을 전송했습니다. 이 이메일에는 아래에 입력하는 확인 코드가 포함되어 있습니다."
+
+#: src/view/com/modals/report/ReasonOptions.tsx:23
+msgid "An issue not included in these options"
+msgstr "이 옵션에 포함되지 않은 문제"
+
+#: src/view/com/profile/FollowButton.tsx:30
+#: src/view/com/profile/FollowButton.tsx:40
+#: src/view/com/profile/ProfileHeaderSuggestedFollows.tsx:183
+#: src/view/com/profile/ProfileHeaderSuggestedFollows.tsx:193
+msgid "An issue occurred, please try again."
+msgstr "문제가 발생했습니다. 다시 시도해 주세요."
+
+#: src/view/com/auth/create/Policies.tsx:80
+#: src/view/com/notifications/FeedItem.tsx:240
+#: src/view/com/threadgate/WhoCanReply.tsx:178
+msgid "and"
+msgstr "및"
+
+#: src/view/com/modals/report/ReasonOptions.tsx:14
+msgid "Anti-Social Behavior"
+msgstr "반사회적 행위"
+
+#: src/view/screens/LanguageSettings.tsx:95
+msgid "App Language"
+msgstr "앱 언어"
+
+#: src/view/screens/AppPasswords.tsx:228
+msgid "App password deleted"
+msgstr "앱 비밀번호 삭제됨"
+
+#: src/view/com/modals/AddAppPasswords.tsx:133
+msgid "App Password names can only contain letters, numbers, spaces, dashes, and underscores."
+msgstr "앱 비밀번호 이름에는 문자, 숫자, 공백, 대시, 밑줄만 사용할 수 있습니다."
+
+#: src/view/com/modals/AddAppPasswords.tsx:98
+msgid "App Password names must be at least 4 characters long."
+msgstr "앱 비밀번호 이름은 4자 이상이어야 합니다."
+
+#: src/view/screens/Settings.tsx:623
+msgid "App passwords"
+msgstr "앱 비밀번호"
+
+#: src/view/screens/AppPasswords.tsx:187
+msgid "App Passwords"
+msgstr "앱 비밀번호"
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:238
+msgid "Appeal content warning"
+msgstr "콘텐츠 경고 이의신청"
+
+#: src/view/com/modals/AppealLabel.tsx:65
+msgid "Appeal Content Warning"
+msgstr "콘텐츠 경고 이의신청"
+
+#: src/view/com/modals/AppealLabel.tsx:65
+#~ msgid "Appeal Decision"
+#~ msgstr "이의신청"
+
+#: src/view/com/util/moderation/LabelInfo.tsx:52
+msgid "Appeal this decision"
+msgstr "이 결정에 이의신청"
+
+#: src/view/com/util/moderation/LabelInfo.tsx:56
+msgid "Appeal this decision."
+msgstr "이 결정에 이의신청합니다."
+
+#: src/view/screens/Settings.tsx:433
+msgid "Appearance"
+msgstr "모양"
+
+#: src/view/screens/Moderation.tsx:206
+#~ msgid "Apps that respect this setting, including the official Bluesky app and bsky.app website, won't show your content to logged out users."
+#~ msgstr "Bluesky 공식 앱과 bsky.app 웹사이트를 포함하여 이 설정을 준수하는 앱은 로그아웃한 사용자에게 내 콘텐츠를 표시하지 않습니다."
+
+#: src/view/screens/AppPasswords.tsx:224
+msgid "Are you sure you want to delete the app password \"{name}\"?"
+msgstr "앱 비밀번호 \"{name}\"을(를) 삭제하시겠습니까?"
+
+#: src/view/com/composer/Composer.tsx:143
+msgid "Are you sure you'd like to discard this draft?"
+msgstr "이 초안을 삭제하시겠습니까?"
+
+#: src/view/screens/ProfileList.tsx:361
+msgid "Are you sure?"
+msgstr "정말인가요?"
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:221
+msgid "Are you sure? This cannot be undone."
+msgstr "정말인가요? 되돌릴 수 없습니다."
+
+#: src/view/com/modals/SelfLabel.tsx:123
+msgid "Artistic or non-erotic nudity."
+msgstr "선정적이지 않거나 예술적인 노출."
+
+#: src/view/screens/Moderation.tsx:189
+#~ msgid "Ask apps to limit the visibility of my account"
+#~ msgstr "내 계정의 공개 범위를 제한하도록 앱에 요청하기"
+
+#: src/view/com/auth/create/CreateAccount.tsx:141
+#: src/view/com/auth/login/ChooseAccountForm.tsx:151
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:166
+#: src/view/com/auth/login/LoginForm.tsx:254
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:148
+#: src/view/com/modals/report/InputIssueDetails.tsx:46
+#: src/view/com/post-thread/PostThread.tsx:388
+#: src/view/com/post-thread/PostThread.tsx:438
+#: src/view/com/post-thread/PostThread.tsx:446
+#: src/view/com/profile/ProfileHeader.tsx:676
+msgid "Back"
+msgstr "뒤로"
+
+#: src/view/screens/Settings.tsx:462
+msgid "Basics"
+msgstr "기본"
+
+#: src/view/com/auth/create/Step2.tsx:156
+#: src/view/com/modals/BirthDateSettings.tsx:73
+msgid "Birthday"
+msgstr "생년월일"
+
+#: src/view/screens/Settings.tsx:313
+msgid "Birthday:"
+msgstr "생년월일:"
+
+#: src/view/com/profile/ProfileHeader.tsx:286
+#: src/view/com/profile/ProfileHeader.tsx:393
+msgid "Block Account"
+msgstr "계정 차단"
+
+#: src/view/screens/ProfileList.tsx:531
+msgid "Block accounts"
+msgstr "계정 차단"
+
+#: src/view/screens/ProfileList.tsx:481
+msgid "Block list"
+msgstr "리스트 차단"
+
+#: src/view/screens/ProfileList.tsx:312
+msgid "Block these accounts?"
+msgstr "이 계정들을 차단하시겠습니까?"
+
+#: src/view/screens/Moderation.tsx:123
+msgid "Blocked accounts"
+msgstr "차단한 계정"
+
+#: src/view/screens/ModerationBlockedAccounts.tsx:107
+msgid "Blocked Accounts"
+msgstr "차단한 계정"
+
+#: src/view/com/profile/ProfileHeader.tsx:288
+msgid "Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you."
+msgstr "차단한 계정은 내 스레드에 답글을 달거나 나를 멘션하거나 기타 다른 방식으로 나와 상호작용할 수 없습니다."
+
+#: src/view/screens/ModerationBlockedAccounts.tsx:115
+msgid "Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you. You will not see their content and they will be prevented from seeing yours."
+msgstr "차단한 계정은 내 스레드에 답글을 달거나 나를 멘션하거나 기타 다른 방식으로 나와 상호작용할 수 없습니다. 차단한 계정의 콘텐츠를 볼 수 없으며 해당 계정도 내 콘텐츠를 볼 수 없게 됩니다."
+
+#: src/view/com/post-thread/PostThread.tsx:250
+msgid "Blocked post."
+msgstr "차단된 게시물."
+
+#: src/view/screens/ProfileList.tsx:314
+msgid "Blocking is public. Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you."
+msgstr "차단 목록은 공개됩니다. 차단한 계정은 내 스레드에 답글을 달거나 나를 멘션하거나 기타 다른 방식으로 나와 상호작용할 수 없습니다."
+
+#: src/view/com/auth/HomeLoggedOutCTA.tsx:93
+#: src/view/com/auth/SplashScreen.web.tsx:113
+msgid "Blog"
+msgstr "블로그"
+
+#: src/view/com/auth/HomeLoggedOutCTA.tsx:31
+msgid "Bluesky"
+msgstr "Bluesky"
+
+#: src/view/com/auth/onboarding/WelcomeDesktop.tsx:82
+#: src/view/com/auth/onboarding/WelcomeMobile.tsx:80
+msgid "Bluesky is flexible."
+msgstr "Bluesky는 유연합니다."
+
+#: src/view/com/auth/onboarding/WelcomeDesktop.tsx:71
+#: src/view/com/auth/onboarding/WelcomeMobile.tsx:69
+msgid "Bluesky is open."
+msgstr "Bluesky는 열려 있습니다."
+
+#: src/view/com/auth/onboarding/WelcomeDesktop.tsx:58
+#: src/view/com/auth/onboarding/WelcomeMobile.tsx:56
+msgid "Bluesky is public."
+msgstr "Bluesky는 공개적입니다."
+
+#: src/view/com/modals/Waitlist.tsx:70
+msgid "Bluesky uses invites to build a healthier community. If you don't know anybody with an invite, you can sign up for the waitlist and we'll send one soon."
+msgstr "Bluesky는 더 건강한 커뮤니티를 구축하기 위해 초대 방식을 사용합니다. 초대해 준 사람이 없는 경우 대기자 명단에 등록하면 곧 초대를 보내겠습니다."
+
+#: src/view/screens/Moderation.tsx:225
+msgid "Bluesky will not show your profile and posts to logged-out users. Other apps may not honor this request. This does not make your account private."
+msgstr "로그아웃한 사용자에게 내 프로필과 게시물을 표시하지 않습니다. 다른 앱에서는 이 설정을 따르지 않을 수 있습니다. 내 계정을 비공개로 전환하지는 않습니다."
+
+#: src/view/com/modals/ServerInput.tsx:78
+msgid "Bluesky.Social"
+msgstr "Bluesky.Social"
+
+#: src/view/screens/Settings.tsx:752
+msgid "Build version {0} {1}"
+msgstr "빌드 버전 {0} {1}"
+
+#: src/view/com/auth/HomeLoggedOutCTA.tsx:87
+#: src/view/com/auth/SplashScreen.web.tsx:108
+msgid "Business"
+msgstr "비즈니스"
+
+#: src/view/com/auth/create/Policies.tsx:87
+msgid "By creating an account you agree to the {els}."
+msgstr "계정을 만들면 {els}에 동의하는 것입니다."
+
+#: src/view/com/composer/photos/OpenCameraBtn.tsx:60
+#: src/view/com/util/UserAvatar.tsx:221
+#: src/view/com/util/UserBanner.tsx:38
+msgid "Camera"
+msgstr "카메라"
+
+#: src/view/com/modals/AddAppPasswords.tsx:218
+msgid "Can only contain letters, numbers, spaces, dashes, and underscores. Must be at least 4 characters long, but no more than 32 characters long."
+msgstr "글자, 숫자, 공백, 대시, 밑줄만 포함할 수 있습니다. 길이는 4자 이상이어야 하고 32자를 넘지 않아야 합니다."
+
+#: src/view/com/composer/Composer.tsx:296
+#: src/view/com/composer/Composer.tsx:299
+#: src/view/com/modals/ChangeEmail.tsx:218
+#: src/view/com/modals/ChangeEmail.tsx:220
+#: src/view/com/modals/ChangeHandle.tsx:153
+#: src/view/com/modals/Confirm.tsx:88
+#: src/view/com/modals/Confirm.tsx:91
+#: src/view/com/modals/CreateOrEditList.tsx:270
+#: src/view/com/modals/CreateOrEditList.tsx:275
+#: src/view/com/modals/crop-image/CropImage.web.tsx:137
+#: src/view/com/modals/DeleteAccount.tsx:152
+#: src/view/com/modals/DeleteAccount.tsx:225
+#: src/view/com/modals/EditImage.tsx:323
+#: src/view/com/modals/EditProfile.tsx:249
+#: src/view/com/modals/LinkWarning.tsx:85
+#: src/view/com/modals/LinkWarning.tsx:87
+#: src/view/com/modals/Repost.tsx:73
+#: src/view/com/modals/Waitlist.tsx:136
+#: src/view/screens/Search/Search.tsx:601
+#: src/view/shell/desktop/Search.tsx:182
+msgid "Cancel"
+msgstr "취소"
+
+#: src/view/com/modals/DeleteAccount.tsx:148
+#: src/view/com/modals/DeleteAccount.tsx:221
+msgid "Cancel account deletion"
+msgstr "계정 삭제 취소"
+
+#: src/view/com/modals/AltImage.tsx:123
+#~ msgid "Cancel add image alt text"
+#~ msgstr "이미지 대체 텍스트 추가 취소"
+
+#: src/view/com/modals/ChangeHandle.tsx:149
+msgid "Cancel change handle"
+msgstr "핸들 변경 취소"
+
+#: src/view/com/modals/crop-image/CropImage.web.tsx:134
+msgid "Cancel image crop"
+msgstr "이미지 자르기 취소"
+
+#: src/view/com/modals/EditProfile.tsx:244
+msgid "Cancel profile editing"
+msgstr "프로필 편집 취소"
+
+#: src/view/com/modals/Repost.tsx:64
+msgid "Cancel quote post"
+msgstr "게시물 인용 취소"
+
+#: src/view/com/modals/ListAddRemoveUsers.tsx:87
+#: src/view/shell/desktop/Search.tsx:178
+msgid "Cancel search"
+msgstr "검색 취소"
+
+#: src/view/com/modals/Waitlist.tsx:132
+msgid "Cancel waitlist signup"
+msgstr "대기자 명단 등록 취소"
+
+#: src/view/screens/Settings.tsx:307
+msgid "Change"
+msgstr "변경"
+
+#: src/view/screens/Settings.tsx:635
+#: src/view/screens/Settings.tsx:644
+msgid "Change handle"
+msgstr "핸들 변경"
+
+#: src/view/com/modals/ChangeHandle.tsx:161
+msgid "Change Handle"
+msgstr "핸들 변경"
+
+#: src/view/com/modals/VerifyEmail.tsx:143
+msgid "Change my email"
+msgstr "내 이메일 변경"
+
+#: src/view/com/modals/ChangeEmail.tsx:109
+msgid "Change Your Email"
+msgstr "이메일 변경"
+
+#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:121
+msgid "Check out some recommended feeds. Tap + to add them to your list of pinned feeds."
+msgstr "몇 가지 추천 피드를 확인하세요. +를 탭하여 고정된 피드 목록에 추가합니다."
+
+#: src/view/com/auth/onboarding/RecommendedFollows.tsx:185
+msgid "Check out some recommended users. Follow them to see similar users."
+msgstr "추천 사용자를 확인하세요. 해당 사용자를 팔로우하여 비슷한 사용자를 만날 수 있습니다."
+
+#: src/view/com/modals/DeleteAccount.tsx:165
+msgid "Check your inbox for an email with the confirmation code to enter below:"
+msgstr "받은 편지함에서 아래에 입력하는 확인 코드가 포함된 이메일이 있는지 확인하세요:"
+
+#: src/view/com/modals/Threadgate.tsx:72
+msgid "Choose \"Everybody\" or \"Nobody\""
+msgstr "\"모두\" 또는 \"없음\"을 선택하세요."
+
+#: src/view/com/modals/ServerInput.tsx:38
+msgid "Choose Service"
+msgstr "서비스 선택"
+
+#: src/view/com/auth/onboarding/WelcomeDesktop.tsx:85
+#: src/view/com/auth/onboarding/WelcomeMobile.tsx:83
+msgid "Choose the algorithms that power your experience with custom feeds."
+msgstr "맞춤 피드를 통해 사용자 경험을 강화하는 알고리즘을 선택합니다."
+
+#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:65
+#~ msgid "Choose your"
+#~ msgstr "Choose your"
+
+#: src/view/com/auth/create/Step2.tsx:127
+msgid "Choose your password"
+msgstr "비밀번호를 입력하세요"
+
+#: src/view/screens/Settings.tsx:728
+msgid "Clear all legacy storage data"
+msgstr "모든 레거시 스토리지 데이터 지우기"
+
+#: src/view/screens/Settings.tsx:730
+msgid "Clear all legacy storage data (restart after this)"
+msgstr "모든 레거시 스토리지 데이터 지우기 (이후 다시 시작)"
+
+#: src/view/screens/Settings.tsx:740
+msgid "Clear all storage data"
+msgstr "모든 스토리지 데이터 지우기"
+
+#: src/view/screens/Settings.tsx:742
+msgid "Clear all storage data (restart after this)"
+msgstr "모든 스토리지 데이터 지우기 (이후 다시 시작)"
+
+#: src/view/com/util/forms/SearchInput.tsx:74
+#: src/view/screens/Search/Search.tsx:582
+msgid "Clear search query"
+msgstr "검색어 지우기"
+
+#: src/view/com/auth/login/PasswordUpdatedForm.tsx:38
+msgid "Close alert"
+msgstr "알림 닫기"
+
+#: src/view/com/util/BottomSheetCustomBackdrop.tsx:33
+msgid "Close bottom drawer"
+msgstr "하단 서랍 닫기"
+
+#: src/view/com/lightbox/ImageViewing/components/ImageDefaultHeader.tsx:26
+msgid "Close image"
+msgstr "이미지 닫기"
+
+#: src/view/com/lightbox/Lightbox.web.tsx:112
+msgid "Close image viewer"
+msgstr "이미지 뷰어 닫기"
+
+#: src/view/shell/index.web.tsx:49
+msgid "Close navigation footer"
+msgstr "탐색 푸터 닫기"
+
+#: src/view/screens/CommunityGuidelines.tsx:32
+msgid "Community Guidelines"
+msgstr "커뮤니티 가이드라인"
+
+#: src/view/com/composer/Prompt.tsx:24
+msgid "Compose reply"
+msgstr "답글 작성하기"
+
+#: src/view/com/modals/AppealLabel.tsx:98
+#: src/view/com/modals/Confirm.tsx:75
+#: src/view/com/modals/Confirm.tsx:78
+#: src/view/com/modals/SelfLabel.tsx:154
+#: src/view/com/modals/VerifyEmail.tsx:227
+#: src/view/com/modals/VerifyEmail.tsx:229
+#: src/view/screens/PreferencesHomeFeed.tsx:308
+#: src/view/screens/PreferencesThreads.tsx:159
+msgid "Confirm"
+msgstr "확인"
+
+#: src/view/com/modals/ChangeEmail.tsx:193
+#: src/view/com/modals/ChangeEmail.tsx:195
+msgid "Confirm Change"
+msgstr "변경 확인"
+
+#: src/view/com/modals/lang-settings/ConfirmLanguagesButton.tsx:34
+msgid "Confirm content language settings"
+msgstr "콘텐츠 언어 설정 확인"
+
+#: src/view/com/modals/DeleteAccount.tsx:211
+msgid "Confirm delete account"
+msgstr "계정 삭제 확인"
+
+#: src/view/com/modals/ChangeEmail.tsx:157
+#: src/view/com/modals/DeleteAccount.tsx:178
+#: src/view/com/modals/VerifyEmail.tsx:161
+msgid "Confirmation code"
+msgstr "확인 코드"
+
+#: src/view/com/auth/create/CreateAccount.tsx:174
+#: src/view/com/auth/login/LoginForm.tsx:273
+msgid "Connecting..."
+msgstr "연결 중…"
+
+#: src/view/com/modals/report/ReasonOptions.tsx:38
+msgid "Contains copyrighted material"
+msgstr "저작권이 있는 자료가 포함됨"
+
+#: src/view/screens/Moderation.tsx:81
+msgid "Content filtering"
+msgstr "콘텐츠 필터링"
+
+#: src/view/com/modals/ContentFilteringSettings.tsx:44
+msgid "Content Filtering"
+msgstr "콘텐츠 필터링"
+
+#: src/view/com/modals/lang-settings/ContentLanguagesSettings.tsx:74
+#: src/view/screens/LanguageSettings.tsx:278
+msgid "Content Languages"
+msgstr "콘텐츠 언어"
+
+#: src/view/com/util/moderation/ScreenHider.tsx:78
+msgid "Content Warning"
+msgstr "콘텐츠 경고"
+
+#: src/view/com/composer/labels/LabelsBtn.tsx:31
+msgid "Content warnings"
+msgstr "콘텐츠 경고"
+
+#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:148
+#: src/view/com/auth/onboarding/RecommendedFollows.tsx:209
+msgid "Continue"
+msgstr "계속"
+
+#: src/view/com/modals/AddAppPasswords.tsx:197
+#: src/view/com/modals/InviteCodes.tsx:182
+msgid "Copied"
+msgstr "복사됨"
+
+#: src/view/screens/Settings.tsx:236
+msgid "Copied build version to clipboard"
+msgstr "빌드 버전 클립보드에 복사됨"
+
+#: src/lib/sharing.ts:23
+#: src/view/com/modals/AddAppPasswords.tsx:75
+#: src/view/com/modals/ChangeHandle.tsx:325
+#: src/view/com/modals/InviteCodes.tsx:152
+#: src/view/com/util/forms/PostDropdownBtn.tsx:100
+msgid "Copied to clipboard"
+msgstr "클립보드에 복사됨"
+
+#: src/view/com/modals/AddAppPasswords.tsx:190
+msgid "Copy"
+msgstr "복사"
+
+#: src/view/com/modals/ChangeHandle.tsx:479
+msgid "Copy {0}"
+msgstr "{0} 복사"
+
+#: src/view/screens/ProfileList.tsx:393
+msgid "Copy link to list"
+msgstr "리스트 링크 복사"
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:141
+msgid "Copy link to post"
+msgstr "게시물 링크 복사"
+
+#: src/view/com/profile/ProfileHeader.tsx:342
+msgid "Copy link to profile"
+msgstr "프로필 링크 복사"
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:127
+msgid "Copy post text"
+msgstr "게시물 텍스트 복사"
+
+#: src/view/screens/CopyrightPolicy.tsx:29
+msgid "Copyright Policy"
+msgstr "저작권 정책"
+
+#: src/view/com/modals/report/ReasonOptions.tsx:37
+msgid "Copyright Violation"
+msgstr "저작권 침해"
+
+#: src/view/screens/ProfileFeed.tsx:95
+msgid "Could not load feed"
+msgstr "피드를 불러올 수 없습니다"
+
+#: src/view/screens/ProfileList.tsx:848
+msgid "Could not load list"
+msgstr "리스트를 불러올 수 없습니다"
+
+#: src/view/com/auth/HomeLoggedOutCTA.tsx:62
+#: src/view/com/auth/SplashScreen.tsx:46
+#: src/view/com/auth/SplashScreen.web.tsx:78
+msgid "Create a new account"
+msgstr "새 계정 만들기"
+
+#: src/view/com/auth/create/CreateAccount.tsx:121
+msgid "Create Account"
+msgstr "계정 만들기"
+
+#: src/view/com/modals/AddAppPasswords.tsx:228
+msgid "Create App Password"
+msgstr "앱 비밀번호 만들기"
+
+#: src/view/com/auth/HomeLoggedOutCTA.tsx:54
+#: src/view/com/auth/SplashScreen.tsx:43
+msgid "Create new account"
+msgstr "새 계정 만들기"
+
+#: src/view/screens/AppPasswords.tsx:249
+msgid "Created {0}"
+msgstr "{0} 생성됨"
+
+#: src/view/com/modals/ChangeHandle.tsx:387
+#: src/view/com/modals/ServerInput.tsx:102
+msgid "Custom domain"
+msgstr "사용자 지정 도메인"
+
+#: src/view/screens/PreferencesExternalEmbeds.tsx:55
+msgid "Customize media from external sites."
+msgstr "외부 사이트 미디어를 사용자 지정합니다."
+
+#: src/view/screens/Settings.tsx:649
+msgid "Danger Zone"
+msgstr "위험 구역"
+
+#: src/view/screens/Settings.tsx:452
+msgid "Dark"
+msgstr "어두움"
+
+#: src/view/com/auth/create/Step1.tsx:61
+msgid "default"
+msgstr "기본"
+
+#: src/view/screens/Settings.tsx:656
+msgid "Delete account"
+msgstr "계정 삭제"
+
+#: src/view/com/modals/DeleteAccount.tsx:83
+#~ msgid "Delete Account"
+#~ msgstr "계정 삭제"
+
+#: src/view/screens/AppPasswords.tsx:222
+#: src/view/screens/AppPasswords.tsx:242
+msgid "Delete app password"
+msgstr "앱 비밀번호 삭제"
+
+#: src/view/screens/ProfileList.tsx:360
+#: src/view/screens/ProfileList.tsx:420
+msgid "Delete List"
+msgstr "리스트 삭제"
+
+#: src/view/com/modals/DeleteAccount.tsx:214
+msgid "Delete my account"
+msgstr "내 계정 삭제"
+
+#: src/view/screens/Settings.tsx:666
+msgid "Delete my account…"
+msgstr "내 계정 삭제…"
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:216
+msgid "Delete post"
+msgstr "게시물 삭제"
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:220
+msgid "Delete this post?"
+msgstr "이 게시물을 삭제하시겠습니까?"
+
+#: src/view/com/post-thread/PostThread.tsx:242
+msgid "Deleted post."
+msgstr "삭제된 게시물."
+
+#: src/view/com/modals/CreateOrEditList.tsx:221
+#: src/view/com/modals/CreateOrEditList.tsx:237
+#: src/view/com/modals/EditProfile.tsx:198
+#: src/view/com/modals/EditProfile.tsx:210
+msgid "Description"
+msgstr "설명"
+
+#: src/view/com/auth/create/Step1.tsx:96
+msgid "Dev Server"
+msgstr "개발 서버"
+
+#: src/view/screens/Settings.tsx:671
+msgid "Developer Tools"
+msgstr "개발자 도구"
+
+#: src/view/com/composer/Composer.tsx:211
+msgid "Did you want to say anything?"
+msgstr "하고 싶은 말이 있나요?"
+
+#: src/view/com/composer/Composer.tsx:144
+msgid "Discard"
+msgstr "삭제"
+
+#: src/view/com/composer/Composer.tsx:138
+msgid "Discard draft"
+msgstr "초안 삭제"
+
+#: src/view/screens/Moderation.tsx:207
+msgid "Discourage apps from showing my account to logged-out users"
+msgstr "앱이 로그아웃한 사용자에게 내 계정을 표시하지 않도록 설정하기"
+
+#: src/view/com/posts/FollowingEmptyState.tsx:74
+#: src/view/com/posts/FollowingEndOfFeed.tsx:75
+msgid "Discover new custom feeds"
+msgstr "새로운 맞춤 피드 찾아보기"
+
+#: src/view/screens/Feeds.tsx:405
+msgid "Discover new feeds"
+msgstr "새 피드 발견하기"
+
+#: src/view/com/modals/EditProfile.tsx:192
+msgid "Display name"
+msgstr "표시 이름"
+
+#: src/view/com/modals/EditProfile.tsx:180
+msgid "Display Name"
+msgstr "표시 이름"
+
+#: src/view/com/modals/ChangeHandle.tsx:396
+msgid "DNS Panel"
+msgstr "DNS 패널"
+
+#: src/state/queries/preferences/moderation.ts:108
+msgid "Does not include nudity"
+msgstr "신체 노출 미포함"
+
+#: src/view/com/modals/ChangeHandle.tsx:480
+msgid "Domain Value"
+msgstr "도메인 값"
+
+#: src/view/com/modals/ChangeHandle.tsx:487
+msgid "Domain verified!"
+msgstr "도메인을 확인했습니다!"
+
+#: src/view/com/auth/create/Step2.tsx:83
+msgid "Don't have an invite code?"
+msgstr "초대 코드가 없으십니까?"
+
+#: src/view/com/auth/onboarding/RecommendedFollows.tsx:86
+#: src/view/com/modals/AddAppPasswords.tsx:228
+#: src/view/com/modals/AltImage.tsx:115
+#: src/view/com/modals/ContentFilteringSettings.tsx:88
+#: src/view/com/modals/ContentFilteringSettings.tsx:96
+#: src/view/com/modals/crop-image/CropImage.web.tsx:152
+#: src/view/com/modals/EditImage.tsx:333
+#: src/view/com/modals/InviteCodes.tsx:80
+#: src/view/com/modals/InviteCodes.tsx:123
+#: src/view/com/modals/ListAddRemoveUsers.tsx:142
+#: src/view/com/modals/ListAddRemoveUsers.tsx:144
+#: src/view/com/modals/SelfLabel.tsx:157
+#: src/view/com/modals/Threadgate.tsx:129
+#: src/view/com/modals/Threadgate.tsx:132
+#: src/view/com/modals/UserAddRemoveLists.tsx:79
+#: src/view/com/modals/UserAddRemoveLists.tsx:82
+#: src/view/screens/PreferencesHomeFeed.tsx:311
+#: src/view/screens/PreferencesThreads.tsx:162
+msgid "Done"
+msgstr "완료"
+
+#: src/view/com/modals/lang-settings/ConfirmLanguagesButton.tsx:42
+msgid "Done{extraText}"
+msgstr "완료{extraText}"
+
+#: src/view/com/auth/create/Step3.tsx:33
+#: src/view/com/modals/ChangeHandle.tsx:257
+msgid "e.g. alice"
+msgstr "예: alice"
+
+#: src/view/com/modals/EditProfile.tsx:185
+msgid "e.g. Alice Roberts"
+msgstr "예: 앨리스 로버츠"
+
+#: src/view/com/modals/ChangeHandle.tsx:379
+msgid "e.g. alice.com"
+msgstr "예: alice.com"
+
+#: src/view/com/modals/EditProfile.tsx:203
+msgid "e.g. Artist, dog-lover, and avid reader."
+msgstr "예: 예술가, 개 애호가, 독서광."
+
+#: src/view/com/modals/CreateOrEditList.tsx:207
+msgid "e.g. Great Posters"
+msgstr "예: 멋진 포스터"
+
+#: src/view/com/modals/ServerInput.tsx:94
+msgid "e.g. https://bsky.app"
+msgstr "예: https://bsky.app"
+
+#: src/view/com/modals/CreateOrEditList.tsx:208
+msgid "e.g. Spammers"
+msgstr "예: 스팸 계정"
+
+#: src/view/com/modals/CreateOrEditList.tsx:228
+msgid "e.g. The posters who never miss."
+msgstr "예: 놓칠 수 없는 포스터들."
+
+#: src/view/com/modals/CreateOrEditList.tsx:229
+msgid "e.g. Users that repeatedly reply with ads."
+msgstr "예: 반복적으로 광고 답글을 다는 계정."
+
+#: src/view/com/modals/InviteCodes.tsx:96
+msgid "Each code works once. You'll receive more invite codes periodically."
+msgstr "각 코드는 한 번만 사용할 수 있습니다. 주기적으로 더 많은 초대 코드를 받게 됩니다."
+
+#: src/view/com/modals/CreateOrEditList.tsx:178
+msgid "Edit"
+msgstr "편집"
+
+#: src/view/com/composer/photos/Gallery.tsx:144
+#: src/view/com/modals/EditImage.tsx:207
+msgid "Edit image"
+msgstr "이미지 편집"
+
+#: src/view/screens/ProfileList.tsx:408
+msgid "Edit list details"
+msgstr "리스트 세부 정보 편집"
+
+#: src/view/screens/Feeds.tsx:367
+#: src/view/screens/SavedFeeds.tsx:84
+msgid "Edit My Feeds"
+msgstr "내 피드 편집"
+
+#: src/view/com/modals/EditProfile.tsx:152
+msgid "Edit my profile"
+msgstr "내 프로필 편집"
+
+#: src/view/com/profile/ProfileHeader.tsx:457
+msgid "Edit profile"
+msgstr "프로필 편집"
+
+#: src/view/com/profile/ProfileHeader.tsx:460
+msgid "Edit Profile"
+msgstr "프로필 편집"
+
+#: src/view/screens/Feeds.tsx:330
+msgid "Edit Saved Feeds"
+msgstr "저장된 피드 편집"
+
+#: src/view/com/auth/create/Step2.tsx:108
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:148
+#: src/view/com/modals/ChangeEmail.tsx:141
+#: src/view/com/modals/Waitlist.tsx:88
+msgid "Email"
+msgstr "이메일"
+
+#: src/view/com/auth/create/Step2.tsx:99
+msgid "Email address"
+msgstr "이메일 주소"
+
+#: src/view/com/modals/ChangeEmail.tsx:56
+#: src/view/com/modals/ChangeEmail.tsx:88
+msgid "Email updated"
+msgstr "이메일 변경됨"
+
+#: src/view/com/modals/ChangeEmail.tsx:111
+msgid "Email Updated"
+msgstr "이메일 변경됨"
+
+#: src/view/com/modals/VerifyEmail.tsx:78
+msgid "Email verified"
+msgstr "이메일 확인됨"
+
+#: src/view/screens/Settings.tsx:291
+msgid "Email:"
+msgstr "이메일:"
+
+#: src/view/com/modals/EmbedConsent.tsx:113
+msgid "Enable {0} only"
+msgstr "{0}만 사용"
+
+#: src/view/com/modals/ContentFilteringSettings.tsx:158
+msgid "Enable Adult Content"
+msgstr "성인 콘텐츠 활성화"
+
+#: src/view/com/modals/EmbedConsent.tsx:97
+msgid "Enable External Media"
+msgstr "외부 미디어 사용"
+
+#: src/view/screens/PreferencesExternalEmbeds.tsx:75
+msgid "Enable media players for"
+msgstr "미디어 플레이어를 사용할 외부 사이트"
+
+#: src/view/screens/PreferencesHomeFeed.tsx:147
+msgid "Enable this setting to only see replies between people you follow."
+msgstr "내가 팔로우하는 사람들 간의 답글만 표시합니다."
+
+#: src/view/screens/Profile.tsx:427
+msgid "End of feed"
+msgstr "피드 끝"
+
+#: src/view/com/modals/AddAppPasswords.tsx:165
+msgid "Enter a name for this App Password"
+msgstr "이 앱 비밀번호의 이름을 입력하세요"
+
+#: src/view/com/modals/report/InputIssueDetails.tsx:53
+msgid "Enter a reason or any other details here."
+msgstr "여기에 이유 또는 기타 세부 정보를 입력하세요"
+
+#: src/view/com/modals/VerifyEmail.tsx:102
+msgid "Enter Confirmation Code"
+msgstr "확인 코드 입력"
+
+#: src/view/com/auth/create/Step1.tsx:71
+msgid "Enter the address of your provider:"
+msgstr "제공자 주소를 입력하세요:"
+
+#: src/view/com/modals/ChangeHandle.tsx:369
+msgid "Enter the domain you want to use"
+msgstr "사용할 도메인 입력"
+
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:101
+msgid "Enter the email you used to create your account. We'll send you a \"reset code\" so you can set a new password."
+msgstr "계정을 만들 때 사용한 이메일을 입력합니다. 새 비밀번호를 설정할 수 있도록 \"재설정 코드\"를 보내드립니다."
+
+#: src/view/com/modals/Waitlist.tsx:78
+msgid "Enter your email"
+msgstr "이메일을 입력하세요"
+
+#: src/view/com/auth/create/Step2.tsx:104
+msgid "Enter your email address"
+msgstr "이메일 주소를 입력하세요"
+
+#: src/view/com/modals/ChangeEmail.tsx:117
+msgid "Enter your new email address below."
+msgstr "아래에 새 이메일 주소를 입력하세요."
+
+#: src/view/com/auth/login/Login.tsx:99
+msgid "Enter your username and password"
+msgstr "사용자 이름 및 비밀번호 입력"
+
+#: src/view/screens/Search/Search.tsx:105
+msgid "Error:"
+msgstr "오류:"
+
+#: src/view/com/modals/Threadgate.tsx:76
+msgid "Everybody"
+msgstr "모두"
+
+#: src/view/com/modals/report/ReasonOptions.tsx:30
+msgid "Excessive mentions or replies"
+msgstr "과도한 멘션 또는 답글"
+
+#: src/state/queries/preferences/moderation.ts:131
+msgid "Excessive unwanted interactions"
+msgstr "원치 않는 과도한 상호작용"
+
+#: src/view/com/lightbox/Lightbox.web.tsx:156
+msgid "Expand alt text"
+msgstr "대체 텍스트 확장"
+
+#: src/state/queries/preferences/moderation.ts:91
+msgid "Explicit Sexual Images"
+msgstr "노골적인 성적 이미지"
+
+#: src/view/com/modals/EmbedConsent.tsx:64
+msgid "External Media"
+msgstr "외부 미디어"
+
+#: src/view/com/modals/EmbedConsent.tsx:75
+#: src/view/screens/PreferencesExternalEmbeds.tsx:66
+msgid "External media may allow websites to collect information about you and your device. No information is sent or requested until you press the \"play\" button."
+msgstr "외부 미디어는 웹사이트가 나와 내 기기에 대한 정보를 수집하도록 할 수 있습니다. \"재생\" 버튼을 누르기 전까지는 어떠한 정보도 전송되거나 요청되지 않습니다."
+
+#: src/view/screens/PreferencesExternalEmbeds.tsx:52
+#: src/view/screens/Settings.tsx:596
+msgid "External Media Preferences"
+msgstr "외부 미디어 설정"
+
+#: src/view/com/modals/AddAppPasswords.tsx:114
+#: src/view/com/modals/AddAppPasswords.tsx:118
+msgid "Failed to create app password."
+msgstr "앱 비밀번호를 만들지 못했습니다."
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:78
+msgid "Failed to delete post, please try again"
+msgstr "게시물을 삭제하지 못했습니다. 다시 시도해 주세요."
+
+#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:109
+#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:141
+msgid "Failed to load recommended feeds"
+msgstr "추천 피드를 불러오지 못했습니다"
+
+#: src/view/com/lightbox/Lightbox.tsx:83
+msgid "Failed to save image: {0}"
+msgstr "이미지를 저장하지 못했습니다: {0}"
+
+#: src/view/screens/Feeds.tsx:556
+msgid "Feed offline"
+msgstr "피드 오프라인"
+
+#: src/view/com/feeds/FeedPage.tsx:143
+msgid "Feed Preferences"
+msgstr "피드 설정"
+
+#: src/view/shell/desktop/RightNav.tsx:73
+#: src/view/shell/Drawer.tsx:311
+msgid "Feedback"
+msgstr "피드백"
+
+#: src/view/screens/Feeds.tsx:475
+#: src/view/screens/Profile.tsx:165
+#: src/view/shell/bottom-bar/BottomBar.tsx:181
+#: src/view/shell/desktop/LeftNav.tsx:342
+#: src/view/shell/Drawer.tsx:474
+#: src/view/shell/Drawer.tsx:475
+msgid "Feeds"
+msgstr "피드"
+
+#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:57
+msgid "Feeds are created by users to curate content. Choose some feeds that you find interesting."
+msgstr "피드는 콘텐츠를 큐레이션하기 위해 사용자에 의해 만들어집니다. 관심 있는 피드를 선택하세요."
+
+#: src/view/screens/SavedFeeds.tsx:156
+msgid "Feeds are custom algorithms that users build with a little coding expertise. <0/> for more information."
+msgstr "피드는 사용자가 약간의 코딩 전문 지식으로 구축할 수 있는 맞춤 알고리즘입니다. <0/>에서 자세한 내용을 확인하세요."
+
+#: src/view/com/modals/ChangeHandle.tsx:480
+msgid "File Contents"
+msgstr "파일 내용"
+
+#: src/view/com/posts/FollowingEmptyState.tsx:57
+#: src/view/com/posts/FollowingEndOfFeed.tsx:58
+msgid "Find accounts to follow"
+msgstr "팔로우할 계정 찾아보기"
+
+#: src/view/screens/Search/Search.tsx:427
+msgid "Find users on Bluesky"
+msgstr "Bluesky에서 사용자 찾기"
+
+#: src/view/screens/Search/Search.tsx:425
+msgid "Find users with the search tool on the right"
+msgstr "오른쪽의 검색 도구로 사용자 찾기"
+
+#: src/view/com/auth/onboarding/RecommendedFollowsItem.tsx:152
+msgid "Finding similar accounts..."
+msgstr "유사한 계정을 찾는 중…"
+
+#: src/view/screens/PreferencesHomeFeed.tsx:111
+msgid "Fine-tune the content you see on your home screen."
+msgstr "홈 화면에 표시되는 콘텐츠를 미세 조정합니다."
+
+#: src/view/screens/PreferencesThreads.tsx:60
+msgid "Fine-tune the discussion threads."
+msgstr "토론 스레드를 미세 조정합니다."
+
+#: src/view/com/auth/onboarding/RecommendedFollowsItem.tsx:138
+#: src/view/com/profile/FollowButton.tsx:64
+#: src/view/com/profile/ProfileHeader.tsx:542
+#: src/view/com/profile/ProfileHeaderSuggestedFollows.tsx:241
+msgid "Follow"
+msgstr "팔로우"
+
+#: src/view/com/auth/onboarding/RecommendedFollows.tsx:42
+#~ msgid "Follow some"
+#~ msgstr "팔로우:"
+
+#: src/view/com/auth/onboarding/RecommendedFollows.tsx:64
+msgid "Follow some users to get started. We can recommend you more users based on who you find interesting."
+msgstr "일부 사용자를 팔로우하여 시작하세요. 관심 있는 사용자를 기반으로 더 많은 사용자를 추천해 드릴 수 있습니다."
+
+#: src/view/com/modals/Threadgate.tsx:98
+msgid "Followed users"
+msgstr "팔로우한 사용자"
+
+#: src/view/screens/PreferencesHomeFeed.tsx:154
+msgid "Followed users only"
+msgstr "팔로우한 사용자만"
+
+#: src/view/com/notifications/FeedItem.tsx:166
+msgid "followed you"
+msgstr "님이 나를 팔로우했습니다"
+
+#: src/view/screens/ProfileFollowers.tsx:25
+msgid "Followers"
+msgstr "팔로워"
+
+#: src/view/com/profile/ProfileHeader.tsx:628
+msgid "following"
+msgstr "팔로우 중"
+
+#: src/view/com/profile/ProfileHeader.tsx:526
+#: src/view/screens/ProfileFollows.tsx:25
+#: src/view/shell/desktop/Feeds.tsx:27
+msgid "Following"
+msgstr "팔로우 중"
+
+#: src/view/com/profile/ProfileHeader.tsx:196
+msgid "Following {0}"
+msgstr "{0} 팔로우 중"
+
+#: src/view/com/profile/ProfileHeader.tsx:575
+msgid "Follows you"
+msgstr "나를 팔로우함"
+
+#: src/view/com/modals/DeleteAccount.tsx:109
+msgid "For security reasons, we'll need to send a confirmation code to your email address."
+msgstr "보안상의 이유로 이메일 주소로 확인 코드를 보내야 합니다."
+
+#: src/view/com/modals/AddAppPasswords.tsx:211
+msgid "For security reasons, you won't be able to view this again. If you lose this password, you'll need to generate a new one."
+msgstr "보안상의 이유로 이 비밀번호는 다시 볼 수 없습니다. 이 비밀번호를 분실한 경우 새 비밀번호를 생성해야 합니다."
+
+#: src/view/com/auth/login/LoginForm.tsx:236
+msgid "Forgot"
+msgstr "분실"
+
+#: src/view/com/auth/login/LoginForm.tsx:233
+msgid "Forgot password"
+msgstr "비밀번호 분실"
+
+#: src/view/com/auth/login/Login.tsx:127
+#: src/view/com/auth/login/Login.tsx:143
+msgid "Forgot Password"
+msgstr "비밀번호 분실"
+
+#: src/view/com/modals/report/ReasonOptions.tsx:56
+msgid "Frequently Posts Unwanted Content"
+msgstr "원치 않는 콘텐츠를 지속적으로 게시함"
+
+#: src/view/com/posts/FeedItem.tsx:187
+msgid "From <0/>"
+msgstr "<0/>에서"
+
+#: src/view/com/composer/photos/SelectPhotoBtn.tsx:43
+msgid "Gallery"
+msgstr "갤러리"
+
+#: src/view/com/modals/VerifyEmail.tsx:185
+msgid "Get Started"
+msgstr "시작하기"
+
+#: src/view/com/modals/report/ReasonOptions.tsx:19
+msgid "Glaring violations of law or terms of service"
+msgstr "명백한 법률 또는 서비스 이용약관 위반 행위"
+
+#: src/view/com/auth/LoggedOut.tsx:81
+#: src/view/com/auth/LoggedOut.tsx:82
+#: src/view/com/util/moderation/ScreenHider.tsx:123
+#: src/view/shell/desktop/LeftNav.tsx:104
+msgid "Go back"
+msgstr "뒤로"
+
+#: src/view/screens/ProfileFeed.tsx:104
+#: src/view/screens/ProfileFeed.tsx:109
+#: src/view/screens/ProfileList.tsx:857
+#: src/view/screens/ProfileList.tsx:862
+msgid "Go Back"
+msgstr "뒤로"
+
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:181
+#: src/view/com/auth/login/LoginForm.tsx:283
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:163
+msgid "Go to next"
+msgstr "다음"
+
+#: src/state/queries/preferences/moderation.ts:116
+msgid "Gore, self-harm, torture"
+msgstr "고어, 자해, 고문"
+
+#: src/view/com/modals/ChangeHandle.tsx:265
+msgid "Handle"
+msgstr "핸들"
+
+#: src/view/com/modals/report/ReasonOptions.tsx:15
+msgid "Harassment, trolling, or intolerance"
+msgstr "괴롭힘, 허위 정보 게시, 편협성"
+
+#: src/state/queries/preferences/moderation.ts:123
+msgid "Hate Group Iconography"
+msgstr "증오 단체 도상학"
+
+#: src/view/shell/desktop/RightNav.tsx:102
+#: src/view/shell/Drawer.tsx:321
+msgid "Help"
+msgstr "도움말"
+
+#: src/view/com/modals/AddAppPasswords.tsx:152
+msgid "Here is your app password."
+msgstr "앱 비밀번호입니다."
+
+#: src/view/com/modals/ContentFilteringSettings.tsx:211
+#: src/view/com/modals/ContentFilteringSettings.tsx:238
+#: src/view/com/notifications/FeedItem.tsx:327
+#: src/view/com/util/moderation/ContentHider.tsx:103
+msgid "Hide"
+msgstr "숨기기"
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:175
+msgid "Hide post"
+msgstr "게시물 숨기기"
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:179
+msgid "Hide this post?"
+msgstr "이 게시물을 숨기시겠습니까?"
+
+#: src/view/com/notifications/FeedItem.tsx:319
+msgid "Hide user list"
+msgstr "사용자 리스트 숨기기"
+
+#: src/view/com/posts/FeedErrorMessage.tsx:102
+#~ msgid "Hmm, some kind of issue occured when contacting the feed server. Please let the feed owner know about this issue."
+#~ msgstr "피드 서버에 연결하는 중 어떤 문제가 발생했습니다. 피드 소유자에게 이 문제에 대해 알려주세요."
+
+#: src/view/com/posts/FeedErrorMessage.tsx:110
+msgid "Hmm, some kind of issue occurred when contacting the feed server. Please let the feed owner know about this issue."
+msgstr "피드 서버에 연결하는 중 어떤 문제가 발생했습니다. 피드 소유자에게 이 문제에 대해 알려주세요."
+
+#: src/view/com/posts/FeedErrorMessage.tsx:98
+msgid "Hmm, the feed server appears to be misconfigured. Please let the feed owner know about this issue."
+msgstr "피드 서버가 잘못 구성된 것 같습니다. 피드 소유자에게 이 문제에 대해 알려주세요."
+
+#: src/view/com/posts/FeedErrorMessage.tsx:104
+msgid "Hmm, the feed server appears to be offline. Please let the feed owner know about this issue."
+msgstr "피드 서버가 오프라인 상태인 것 같습니다. 피드 소유자에게 이 문제에 대해 알려주세요."
+
+#: src/view/com/posts/FeedErrorMessage.tsx:101
+msgid "Hmm, the feed server gave a bad response. Please let the feed owner know about this issue."
+msgstr "피드 서버에서 잘못된 응답을 보냈습니다. 피드 소유자에게 이 문제에 대해 알려주세요."
+
+#: src/view/com/posts/FeedErrorMessage.tsx:95
+msgid "Hmm, we're having trouble finding this feed. It may have been deleted."
+msgstr "이 피드를 찾는 데 문제가 있습니다. 피드가 삭제되었을 수 있습니다."
+
+#: src/view/com/posts/FeedErrorMessage.tsx:87
+#~ msgid "Hmmm, we're having trouble finding this feed. It may have been deleted."
+#~ msgstr "이 피드를 찾는 데 문제가 있습니다. 피드가 삭제되었을 수 있습니다."
+
+#: src/view/shell/bottom-bar/BottomBar.tsx:137
+#: src/view/shell/desktop/LeftNav.tsx:306
+#: src/view/shell/Drawer.tsx:398
+#: src/view/shell/Drawer.tsx:399
+msgid "Home"
+msgstr "홈"
+
+#: src/view/com/pager/FeedsTabBarMobile.tsx:96
+#: src/view/screens/PreferencesHomeFeed.tsx:104
+#: src/view/screens/Settings.tsx:482
+msgid "Home Feed Preferences"
+msgstr "홈 피드 설정"
+
+#: src/view/com/modals/ChangeHandle.tsx:419
+msgid "Host"
+msgstr "호스트"
+
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:114
+msgid "Hosting provider"
+msgstr "호스팅 제공자"
+
+#: src/view/com/auth/create/Step1.tsx:76
+#: src/view/com/auth/create/Step1.tsx:81
+msgid "Hosting provider address"
+msgstr "호스팅 제공자 주소"
+
+#: src/view/com/modals/VerifyEmail.tsx:210
+msgid "I have a code"
+msgstr "코드가 있습니다"
+
+#: src/view/com/modals/ChangeHandle.tsx:281
+msgid "I have my own domain"
+msgstr "내 도메인을 가지고 있습니다"
+
+#: src/state/queries/preferences/moderation.ts:92
+msgid "i.e. pornography"
+msgstr "예: 포르노그래피"
+
+#: src/view/com/modals/SelfLabel.tsx:127
+msgid "If none are selected, suitable for all ages."
+msgstr "아무것도 선택하지 않으면 모든 연령대에 적합하다는 뜻입니다."
+
+#: src/view/com/auth/create/Policies.tsx:91
+msgid "If you are not yet an adult according to the laws of your country, your parent or legal guardian must read these Terms on your behalf."
+msgstr "본인이 거주하는 국가의 법률에 따라 아직 성인이 아닌 경우, 부모 또는 법적 보호자가 본인을 대신하여 본 약관을 읽어야 합니다."
+
+#: src/view/com/modals/report/ReasonOptions.tsx:18
+msgid "Illegal and Urgent"
+msgstr "불법 및 긴급 사항"
+
+#: src/view/com/modals/AltImage.tsx:97
+msgid "Image alt text"
+msgstr "이미지 대체 텍스트"
+
+#: src/view/com/util/UserAvatar.tsx:308
+#: src/view/com/util/UserBanner.tsx:116
+msgid "Image options"
+msgstr "이미지 옵션"
+
+#: src/state/queries/preferences/moderation.ts:124
+msgid "Images of terror groups, articles covering events, etc."
+msgstr "테러 단체의 이미지, 사건 관련 기사 등"
+
+#: src/state/queries/preferences/moderation.ts:137
+msgid "Impersonation"
+msgstr "사칭"
+
+#: src/view/com/modals/report/ReasonOptions.tsx:53
+msgid "Impersonation or false claims about identity or affiliation"
+msgstr "신원 또는 소속에 대한 사칭 또는 허위 주장"
+
+#: src/view/com/search/Suggestions.tsx:104
+#: src/view/com/search/Suggestions.tsx:115
+#~ msgid "In Your Network"
+#~ msgstr "내 네트워크"
+
+#: src/state/queries/preferences/moderation.ts:100
+msgid "Including non-sexual and artistic"
+msgstr "선정적이지 않거나 예술적 콘텐츠 포함"
+
+#: src/view/com/auth/login/LoginForm.tsx:115
+msgid "Invalid username or password"
+msgstr "잘못된 사용자 이름 또는 비밀번호"
+
+#: src/view/screens/Settings.tsx:384
+msgid "Invite"
+msgstr "초대"
+
+#: src/view/com/modals/InviteCodes.tsx:93
+#: src/view/screens/Settings.tsx:372
+msgid "Invite a Friend"
+msgstr "친구 초대하기"
+
+#: src/view/com/auth/create/Step2.tsx:63
+#: src/view/com/auth/create/Step2.tsx:72
+msgid "Invite code"
+msgstr "초대 코드"
+
+#: src/view/com/auth/create/state.ts:136
+msgid "Invite code not accepted. Check that you input it correctly and try again."
+msgstr "초대 코드가 올바르지 않습니다. 코드를 올바르게 입력했는지 확인한 후 다시 시도하세요."
+
+#: src/view/shell/Drawer.tsx:640
+msgid "Invite codes: {invitesAvailable} available"
+msgstr "초대 코드: {invitesAvailable}개 사용 가능"
+
+#: src/view/com/auth/HomeLoggedOutCTA.tsx:99
+#: src/view/com/auth/SplashScreen.web.tsx:118
+msgid "Jobs"
+msgstr "채용"
+
+#: src/view/com/modals/Waitlist.tsx:67
+msgid "Join the waitlist"
+msgstr "대기자 명단 등록"
+
+#: src/view/com/auth/create/Step2.tsx:86
+#: src/view/com/auth/create/Step2.tsx:90
+msgid "Join the waitlist."
+msgstr "대기자 명단에 등록하세요."
+
+#: src/view/com/modals/Waitlist.tsx:124
+msgid "Join Waitlist"
+msgstr "대기자 명단 등록"
+
+#: src/view/com/composer/select-language/SelectLangBtn.tsx:104
+msgid "Language selection"
+msgstr "언어 선택"
+
+#: src/view/screens/LanguageSettings.tsx:89
+msgid "Language Settings"
+msgstr "언어 설정"
+
+#: src/view/screens/Settings.tsx:542
+msgid "Languages"
+msgstr "언어"
+
+#: src/view/com/auth/create/StepHeader.tsx:14
+msgid "Last step!"
+msgstr "마지막 단계예요!"
+
+#: src/view/com/util/moderation/ContentHider.tsx:101
+msgid "Learn more"
+msgstr "더 알아보기"
+
+#: src/view/com/util/moderation/PostAlerts.tsx:47
+#: src/view/com/util/moderation/ProfileHeaderAlerts.tsx:65
+#: src/view/com/util/moderation/ScreenHider.tsx:104
+msgid "Learn More"
+msgstr "더 알아보기"
+
+#: src/view/com/util/moderation/ContentHider.tsx:83
+#: src/view/com/util/moderation/PostAlerts.tsx:40
+#: src/view/com/util/moderation/PostHider.tsx:76
+#: src/view/com/util/moderation/ProfileHeaderAlerts.tsx:49
+#: src/view/com/util/moderation/ScreenHider.tsx:101
+msgid "Learn more about this warning"
+msgstr "이 경고에 대해 더 알아보기"
+
+#: src/view/screens/Moderation.tsx:242
+msgid "Learn more about what is public on Bluesky."
+msgstr "Bluesky에서 공개되는 항목에 대해 자세히 알아보세요."
+
+#: src/view/com/modals/lang-settings/ContentLanguagesSettings.tsx:82
+msgid "Leave them all unchecked to see any language."
+msgstr "모든 언어를 보려면 모두 선택하지 않은 상태로 두세요."
+
+#: src/view/com/modals/LinkWarning.tsx:49
+msgid "Leaving Bluesky"
+msgstr "Bluesky 떠나기"
+
+#: src/view/screens/Settings.tsx:273
+msgid "Legacy storage cleared, you need to restart the app now."
+msgstr "레거시 스토리지가 지워졌으며 지금 앱을 다시 시작해야 합니다."
+
+#: src/view/com/auth/login/Login.tsx:128
+#: src/view/com/auth/login/Login.tsx:144
+msgid "Let's get your password reset!"
+msgstr "비밀번호를 재설정해 봅시다!"
+
+#: src/view/com/util/UserAvatar.tsx:245
+#: src/view/com/util/UserBanner.tsx:60
+msgid "Library"
+msgstr "라이브러리"
+
+#: src/view/screens/Settings.tsx:446
+msgid "Light"
+msgstr "밝음"
+
+#: src/view/screens/ProfileFeed.tsx:599
+msgid "Like this feed"
+msgstr "이 피드"
+
+#: src/view/screens/PostLikedBy.tsx:27
+#: src/view/screens/ProfileFeedLikedBy.tsx:27
+msgid "Liked by"
+msgstr "좋아요 표시한 계정"
+
+#: src/view/com/notifications/FeedItem.tsx:171
+msgid "liked your custom feed{0}"
+msgstr "님이 내 맞춤 피드{0}을(를) 좋아합니다"
+
+#: src/view/com/notifications/FeedItem.tsx:155
+msgid "liked your post"
+msgstr "님이 내 게시물을 좋아합니다"
+
+#: src/view/screens/Profile.tsx:164
+msgid "Likes"
+msgstr "좋아요"
+
+#: src/view/screens/Moderation.tsx:203
+#~ msgid "Limit the visibility of my account"
+#~ msgstr "내 계정 공개 범위 제한"
+
+#: src/view/screens/Moderation.tsx:203
+#~ msgid "Limit the visibility of my account to logged-out users"
+#~ msgstr "내 계정의 공개 범위를 로그아웃한 사용자로 제한"
+
+#: src/view/com/modals/CreateOrEditList.tsx:187
+msgid "List Avatar"
+msgstr "리스트 아바타"
+
+#: src/view/screens/ProfileList.tsx:320
+msgid "List blocked"
+msgstr "리스트 차단됨"
+
+#: src/view/screens/ProfileList.tsx:364
+msgid "List deleted"
+msgstr "리스트 삭제됨"
+
+#: src/view/screens/ProfileList.tsx:279
+msgid "List muted"
+msgstr "리스트 뮤트됨"
+
+#: src/view/com/modals/CreateOrEditList.tsx:200
+msgid "List Name"
+msgstr "리스트 이름"
+
+#: src/view/screens/ProfileList.tsx:339
+msgid "List unblocked"
+msgstr "리스트 차단 해제됨"
+
+#: src/view/screens/ProfileList.tsx:298
+msgid "List unmuted"
+msgstr "리스트 언뮤트됨"
+
+#: src/view/screens/Profile.tsx:166
+#: src/view/shell/desktop/LeftNav.tsx:379
+#: src/view/shell/Drawer.tsx:490
+#: src/view/shell/Drawer.tsx:491
+msgid "Lists"
+msgstr "리스트"
+
+#: src/view/com/post-thread/PostThread.tsx:259
+#: src/view/com/post-thread/PostThread.tsx:267
+msgid "Load more posts"
+msgstr "더 많은 게시물 불러오기"
+
+#: src/view/screens/Notifications.tsx:148
+msgid "Load new notifications"
+msgstr "새 알림 불러오기"
+
+#: src/view/com/feeds/FeedPage.tsx:189
+#: src/view/screens/ProfileList.tsx:655
+msgid "Load new posts"
+msgstr "새 게시물 불러오기"
+
+#: src/view/com/composer/text-input/mobile/Autocomplete.tsx:95
+msgid "Loading..."
+msgstr "불러오는 중…"
+
+#: src/view/com/modals/ServerInput.tsx:50
+msgid "Local dev server"
+msgstr "로컬 개발 서버"
+
+#: src/view/screens/Moderation.tsx:134
+#~ msgid "Logged-out users"
+#~ msgstr "로그아웃한 사용자"
+
+#: src/view/screens/Moderation.tsx:136
+msgid "Logged-out visibility"
+msgstr "로그아웃 표시"
+
+#: src/view/com/auth/login/ChooseAccountForm.tsx:133
+msgid "Login to account that is not listed"
+msgstr "목록에 없는 계정으로 로그인"
+
+#: src/view/screens/ProfileFeed.tsx:472
+#~ msgid "Looks like this feed is only available to users with a Bluesky account. Please sign up or sign in to view this feed!"
+#~ msgstr "이 피드는 Bluesky 계정이 있는 사용자만 이용할 수 있는 것 같습니다. 이 피드를 보려면 가입하거나 로그인하세요!"
+
+#: src/view/com/modals/LinkWarning.tsx:63
+msgid "Make sure this is where you intend to go!"
+msgstr "이곳이 당신이 가고자 하는 곳인지 확인하세요!"
+
+#: src/view/screens/Profile.tsx:163
+msgid "Media"
+msgstr "미디어"
+
+#: src/view/com/threadgate/WhoCanReply.tsx:139
+msgid "mentioned users"
+msgstr "멘션한 사용자"
+
+#: src/view/com/modals/Threadgate.tsx:93
+msgid "Mentioned users"
+msgstr "멘션한 사용자"
+
+#: src/view/screens/Search/Search.tsx:537
+msgid "Menu"
+msgstr "메뉴"
+
+#: src/view/com/posts/FeedErrorMessage.tsx:194
+msgid "Message from server"
+msgstr "서버에서 보낸 메시지"
+
+#: src/view/com/modals/report/ReasonOptions.tsx:52
+msgid "Misleading Account"
+msgstr "오해의 소지가 있는 계정"
+
+#: src/view/com/modals/CreateOrEditList.tsx:68
+#: src/view/screens/Moderation.tsx:64
+#: src/view/screens/Settings.tsx:564
+#: src/view/shell/desktop/LeftNav.tsx:397
+#: src/view/shell/Drawer.tsx:509
+#: src/view/shell/Drawer.tsx:510
+msgid "Moderation"
+msgstr "검토"
+
+#: src/view/screens/Moderation.tsx:95
+msgid "Moderation lists"
+msgstr "검토 리스트"
+
+#: src/view/screens/ModerationModlists.tsx:58
+msgid "Moderation Lists"
+msgstr "검토 리스트"
+
+#: src/view/shell/desktop/Feeds.tsx:57
+msgid "More feeds"
+msgstr "피드 더 보기"
+
+#: src/view/com/profile/ProfileHeader.tsx:552
+#: src/view/screens/ProfileFeed.tsx:371
+#: src/view/screens/ProfileList.tsx:592
+msgid "More options"
+msgstr "옵션 더 보기"
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:158
+#~ msgid "More post options"
+#~ msgstr "게시물 옵션 더 보기"
+
+#: src/view/screens/PreferencesThreads.tsx:82
+msgid "Most-liked replies first"
+msgstr "좋아요 많은 순"
+
+#: src/view/com/profile/ProfileHeader.tsx:374
+msgid "Mute Account"
+msgstr "계정 뮤트"
+
+#: src/view/screens/ProfileList.tsx:519
+msgid "Mute accounts"
+msgstr "계정 뮤트"
+
+#: src/view/screens/ProfileList.tsx:466
+msgid "Mute list"
+msgstr "리스트 뮤트"
+
+#: src/view/screens/ProfileList.tsx:271
+msgid "Mute these accounts?"
+msgstr "이 계정들을 뮤트하시겠습니까?"
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:159
+msgid "Mute thread"
+msgstr "스레드 뮤트"
+
+#: src/view/screens/Moderation.tsx:109
+msgid "Muted accounts"
+msgstr "뮤트한 계정"
+
+#: src/view/screens/ModerationMutedAccounts.tsx:107
+msgid "Muted Accounts"
+msgstr "뮤트한 계정"
+
+#: src/view/screens/ModerationMutedAccounts.tsx:115
+msgid "Muted accounts have their posts removed from your feed and from your notifications. Mutes are completely private."
+msgstr "계정을 뮤트하면 피드와 알림에서 해당 계정의 게시물이 사라집니다. 뮤트 목록은 완전히 비공개로 유지됩니다."
+
+#: src/view/screens/ProfileList.tsx:273
+msgid "Muting is private. Muted accounts can interact with you, but you will not see their posts or receive notifications from them."
+msgstr "뮤트 목록은 비공개입니다. 뮤트한 계정은 나와 상호작용할 수 있지만 해당 계정의 게시물을 보거나 해당 계정으로부터 알림을 받을 수 없습니다."
+
+#: src/view/screens/Moderation.tsx:134
+#~ msgid "My Account"
+#~ msgstr "내 계정"
+
+#: src/view/com/modals/BirthDateSettings.tsx:56
+msgid "My Birthday"
+msgstr "내 생년월일"
+
+#: src/view/screens/Feeds.tsx:363
+msgid "My Feeds"
+msgstr "내 피드"
+
+#: src/view/shell/desktop/LeftNav.tsx:65
+msgid "My Profile"
+msgstr "내 프로필"
+
+#: src/view/screens/Settings.tsx:521
+msgid "My Saved Feeds"
+msgstr "내 저장된 피드"
+
+#: src/view/com/modals/AddAppPasswords.tsx:181
+#: src/view/com/modals/CreateOrEditList.tsx:214
+msgid "Name"
+msgstr "이름"
+
+#: src/view/com/modals/report/ReasonOptions.tsx:45
+#: src/view/com/modals/report/ReasonOptions.tsx:60
+msgid "Name or Description Violates Community Standards"
+msgstr "이름 또는 설명이 커뮤니티 기준을 위반합니다"
+
+#: src/view/com/modals/EmbedConsent.tsx:107
+#: src/view/com/modals/EmbedConsent.tsx:123
+msgid "Never load embeds from {0}"
+msgstr "{0}에서 임베드를 불러오지 않습니다"
+
+#: src/view/com/auth/onboarding/WelcomeDesktop.tsx:74
+#: src/view/com/auth/onboarding/WelcomeMobile.tsx:72
+msgid "Never lose access to your followers and data."
+msgstr "팔로워와 데이터에 대한 접근 권한을 잃지 않습니다."
+
+#: src/view/com/modals/ChangeHandle.tsx:518
+msgid "Nevermind, create a handle for me"
+msgstr "취소하고 나만의 핸들 만들기"
+
+#: src/view/com/modals/CreateOrEditList.tsx:178
+#: src/view/screens/Lists.tsx:76
+#: src/view/screens/ModerationModlists.tsx:78
+msgid "New"
+msgstr "새로 만들기"
+
+#: src/view/com/feeds/FeedPage.tsx:200
+#: src/view/screens/Feeds.tsx:507
+#: src/view/screens/Profile.tsx:354
+#: src/view/screens/ProfileFeed.tsx:441
+#: src/view/screens/ProfileList.tsx:194
+#: src/view/screens/ProfileList.tsx:222
+#: src/view/shell/desktop/LeftNav.tsx:248
+msgid "New post"
+msgstr "새 게시물"
+
+#: src/view/shell/desktop/LeftNav.tsx:258
+msgid "New Post"
+msgstr "새 게시물"
+
+#: src/view/screens/PreferencesThreads.tsx:79
+msgid "Newest replies first"
+msgstr "새로운 순"
+
+#: src/view/com/auth/create/CreateAccount.tsx:154
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:174
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:184
+#: src/view/com/auth/login/LoginForm.tsx:286
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:156
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:166
+#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:79
+#: src/view/com/auth/onboarding/WelcomeDesktop.tsx:105
+msgid "Next"
+msgstr "다음"
+
+#: src/view/com/lightbox/Lightbox.web.tsx:142
+msgid "Next image"
+msgstr "다음 이미지"
+
+#: src/view/screens/PreferencesHomeFeed.tsx:129
+#: src/view/screens/PreferencesHomeFeed.tsx:200
+#: src/view/screens/PreferencesHomeFeed.tsx:235
+#: src/view/screens/PreferencesHomeFeed.tsx:272
+#: src/view/screens/PreferencesThreads.tsx:106
+#: src/view/screens/PreferencesThreads.tsx:129
+msgid "No"
+msgstr "아니요"
+
+#: src/view/screens/ProfileFeed.tsx:592
+#: src/view/screens/ProfileList.tsx:729
+msgid "No description"
+msgstr "설명 없음"
+
+#: src/view/com/modals/ChangeHandle.tsx:404
+msgid "No DNS Panel"
+msgstr "DNS 패널 없음"
+
+#: src/view/com/profile/ProfileHeader.tsx:217
+msgid "No longer following {0}"
+msgstr "더 이상 {0}(을)를 팔로우하지 않음"
+
+#: src/view/com/composer/text-input/mobile/Autocomplete.tsx:97
+msgid "No result"
+msgstr "결과 없음"
+
+#: src/view/screens/Feeds.tsx:452
+msgid "No results found for \"{query}\""
+msgstr "\"{query}\"에 대한 결과를 찾을 수 없습니다."
+
+#: src/view/com/modals/ListAddUser.tsx:142
+#: src/view/shell/desktop/Search.tsx:112
+#~ msgid "No results found for {0}"
+#~ msgstr "{0}에 대한 결과를 찾을 수 없습니다."
+
+#: src/view/com/modals/ListAddRemoveUsers.tsx:127
+#: src/view/screens/Search/Search.tsx:270
+#: src/view/screens/Search/Search.tsx:298
+#: src/view/screens/Search/Search.tsx:629
+#: src/view/shell/desktop/Search.tsx:210
+msgid "No results found for {query}"
+msgstr "{query}에 대한 결과를 찾을 수 없습니다."
+
+#: src/view/com/modals/EmbedConsent.tsx:129
+msgid "No thanks"
+msgstr "괜찮습니다"
+
+#: src/view/com/modals/Threadgate.tsx:82
+msgid "Nobody"
+msgstr "없음"
+
+#: src/view/com/modals/SelfLabel.tsx:136
+#~ msgid "Not Applicable"
+#~ msgstr "해당 없음"
+
+#: src/view/com/modals/SelfLabel.tsx:135
+msgid "Not Applicable."
+msgstr "해당 없음."
+
+#: src/view/screens/Moderation.tsx:227
+#~ msgid "Note: Bluesky is an open and public network, and enabling this will not make your profile private or limit the ability of logged in users to see your posts. This setting only limits the visibility of posts on the Bluesky app and website; third-party apps that display Bluesky content may not respect this setting, and could show your content to logged-out users."
+#~ msgstr "참고: Bluesky는 개방형 공개 네트워크이므로 이 설정을 사용 설정해도 내 프로필이 비공개로 전환되거나 로그인한 사용자가 내 게시물을 볼 수 있는 기능이 제한되지 않습니다. 이 설정은 Bluesky 앱과 웹사이트의 게시물 공개 여부만 제한하며, Bluesky 콘텐츠를 표시하는 타사 앱은 이 설정을 준수하지 않을 수 있으며, 로그아웃한 사용자에게 내 콘텐츠가 표시될 수 있습니다."
+
+#: src/view/screens/Moderation.tsx:232
+msgid "Note: Bluesky is an open and public network. This setting only limits the visibility of your content on the Bluesky app and website, and other apps may not respect this setting. Your content may still be shown to logged-out users by other apps and websites."
+msgstr "참고: Bluesky는 개방형 공개 네트워크입니다. 이 설정은 Bluesky 앱과 웹사이트에서만 내 콘텐츠가 표시되는 것을 제한하며, 다른 앱에서는 이 설정을 준수하지 않을 수 있습니다. 다른 앱과 웹사이트에서는 로그아웃한 사용자에게 내 콘텐츠가 계속 표시될 수 있습니다."
+
+#: src/view/screens/Moderation.tsx:227
+#~ msgid "Note: Third-party apps that display Bluesky content may not respect this setting."
+#~ msgstr "참고: Bluesky 콘텐츠를 표시하는 타사 앱은 이 설정을 준수하지 않을 수 있습니다."
+
+#: src/view/screens/Notifications.tsx:113
+#: src/view/screens/Notifications.tsx:137
+#: src/view/shell/bottom-bar/BottomBar.tsx:205
+#: src/view/shell/desktop/LeftNav.tsx:361
+#: src/view/shell/Drawer.tsx:435
+#: src/view/shell/Drawer.tsx:436
+msgid "Notifications"
+msgstr "알림"
+
+#: src/lib/strings/time.ts:22
+msgid "now"
+msgstr "지금"
+
+#: src/view/com/modals/report/ReasonOptions.tsx:34
+msgid "Nudity or pornography not labeled as such"
+msgstr "노출 또는 음란물로 설정되지 않은 콘텐츠"
+
+#: src/view/com/util/ErrorBoundary.tsx:34
+msgid "Oh no!"
+msgstr "안 돼!"
+
+#: src/view/com/auth/login/PasswordUpdatedForm.tsx:41
+msgid "Okay"
+msgstr "확인"
+
+#: src/view/screens/PreferencesThreads.tsx:78
+msgid "Oldest replies first"
+msgstr "오래된 순"
+
+#: src/view/screens/Settings.tsx:229
+msgid "Onboarding reset"
+msgstr "온보딩 재설정"
+
+#: src/view/com/composer/Composer.tsx:365
+msgid "One or more images is missing alt text."
+msgstr "하나 이상의 이미지에 대체 텍스트가 누락되었습니다."
+
+#: src/view/com/threadgate/WhoCanReply.tsx:100
+msgid "Only {0} can reply."
+msgstr "{0}만 답글을 달 수 있습니다."
+
+#: src/view/com/composer/Composer.tsx:470
+#: src/view/com/composer/Composer.tsx:471
+msgid "Open emoji picker"
+msgstr "이모티콘 선택기 열기"
+
+#: src/view/com/pager/FeedsTabBarMobile.tsx:76
+msgid "Open navigation"
+msgstr "내비게이션 열기"
+
+#: src/view/screens/Settings.tsx:534
+msgid "Opens configurable language settings"
+msgstr "구성 가능한 언어 설정을 엽니다"
+
+#: src/view/screens/Settings.tsx:588
+msgid "Opens external embeds settings"
+msgstr "외부 임베드 설정을 엽니다"
+
+#: src/view/shell/desktop/RightNav.tsx:156
+#: src/view/shell/Drawer.tsx:641
+msgid "Opens list of invite codes"
+msgstr "초대 코드 목록을 엽니다"
+
+#: src/view/com/modals/ChangeHandle.tsx:279
+msgid "Opens modal for using custom domain"
+msgstr "사용자 지정 도메인을 사용하기 위한 대화 상자를 엽니다"
+
+#: src/view/screens/Settings.tsx:559
+msgid "Opens moderation settings"
+msgstr "검토 설정을 엽니다"
+
+#: src/view/screens/Settings.tsx:515
+msgid "Opens screen with all saved feeds"
+msgstr "모든 저장된 피드 화면을 엽니다"
+
+#: src/view/screens/Settings.tsx:615
+msgid "Opens the app password settings page"
+msgstr "비밀번호 설정 페이지를 엽니다"
+
+#: src/view/screens/Settings.tsx:474
+msgid "Opens the home feed preferences"
+msgstr "홈 피드 설정을 엽니다"
+
+#: src/view/screens/Settings.tsx:698
+msgid "Opens the storybook page"
+msgstr "스토리북 페이지를 엽니다"
+
+#: src/view/screens/Settings.tsx:678
+msgid "Opens the system log page"
+msgstr "시스템 로그 페이지를 엽니다"
+
+#: src/view/screens/Settings.tsx:495
+msgid "Opens the threads preferences"
+msgstr "스레드 설정을 엽니다"
+
+#: src/view/com/modals/Threadgate.tsx:89
+msgid "Or combine these options:"
+msgstr "또는 다음 옵션을 결합하세요:"
+
+#: src/view/com/auth/create/Step1.tsx:67
+#: src/view/com/modals/report/ReasonOptions.tsx:22
+msgid "Other"
+msgstr "기타"
+
+#: src/view/com/auth/login/ChooseAccountForm.tsx:138
+msgid "Other account"
+msgstr "다른 계정"
+
+#: src/state/queries/preferences/moderation.ts:99
+msgid "Other Nudity"
+msgstr "기타 신체 노출"
+
+#: src/view/com/modals/ServerInput.tsx:88
+msgid "Other service"
+msgstr "다른 서비스"
+
+#: src/view/com/composer/select-language/SelectLangBtn.tsx:91
+msgid "Other..."
+msgstr "기타…"
+
+#: src/view/screens/NotFound.tsx:42
+#: src/view/screens/NotFound.tsx:45
+msgid "Page not found"
+msgstr "페이지를 찾을 수 없음"
+
+#: src/view/com/auth/create/Step2.tsx:122
+#: src/view/com/auth/create/Step2.tsx:132
+#: src/view/com/auth/login/LoginForm.tsx:221
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:130
+#: src/view/com/modals/DeleteAccount.tsx:193
+msgid "Password"
+msgstr "비밀번호"
+
+#: src/view/com/auth/login/Login.tsx:157
+msgid "Password updated"
+msgstr "비밀번호 변경됨"
+
+#: src/view/com/auth/login/PasswordUpdatedForm.tsx:28
+msgid "Password updated!"
+msgstr "비밀번호 변경됨"
+
+#: src/view/com/lightbox/Lightbox.tsx:66
+msgid "Permission to access camera roll is required."
+msgstr "앨범에 접근할 수 있는 권한이 필요합니다."
+
+#: src/view/com/lightbox/Lightbox.tsx:72
+msgid "Permission to access camera roll was denied. Please enable it in your system settings."
+msgstr "앨범에 접근할 수 있는 권한이 거부되었습니다. 시스템 설정에서 활성화하세요."
+
+#: src/view/com/modals/SelfLabel.tsx:121
+msgid "Pictures meant for adults."
+msgstr "성인용 사진."
+
+#: src/view/screens/ProfileFeed.tsx:362
+#: src/view/screens/ProfileList.tsx:556
+msgid "Pin to home"
+msgstr "홈에 고정"
+
+#: src/view/screens/SavedFeeds.tsx:88
+msgid "Pinned Feeds"
+msgstr "고정된 피드"
+
+#: src/view/com/util/post-embeds/ExternalGifEmbed.tsx:111
+msgid "Play {0}"
+msgstr "{0} 재생"
+
+#: src/view/com/util/post-embeds/ExternalPlayerEmbed.tsx:54
+#: src/view/com/util/post-embeds/ExternalPlayerEmbed.tsx:55
+msgid "Play Video"
+msgstr "동영상 재생"
+
+#: src/view/com/util/post-embeds/ExternalGifEmbed.tsx:110
+msgid "Plays the GIF"
+msgstr "GIF를 재생합니다"
+
+#: src/view/com/auth/create/state.ts:116
+msgid "Please choose your handle."
+msgstr "핸들을 입력하세요."
+
+#: src/view/com/auth/create/state.ts:109
+msgid "Please choose your password."
+msgstr "비밀번호를 입력하세요."
+
+#: src/view/com/modals/ChangeEmail.tsx:67
+msgid "Please confirm your email before changing it. This is a temporary requirement while email-updating tools are added, and it will soon be removed."
+msgstr "이메일을 변경하기 전에 이메일을 확인해 주세요. 이는 이메일 변경 도구가 추가되는 동안 일시적으로 요구되는 사항이며 곧 제거될 예정입니다."
+
+#: src/view/com/modals/AddAppPasswords.tsx:89
+msgid "Please enter a name for your app password. All spaces is not allowed."
+msgstr "앱 비밀번호의 이름을 입력하세요. 모든 공백 문자는 허용되지 않습니다."
+
+#: src/view/com/modals/AddAppPasswords.tsx:144
+msgid "Please enter a unique name for this App Password or use our randomly generated one."
+msgstr "이 앱 비밀번호에 대해 고유한 이름을 입력하거나 무작위로 생성된 이름을 사용합니다."
+
+#: src/view/com/auth/create/state.ts:95
+msgid "Please enter your email."
+msgstr "이메일을 입력하세요."
+
+#: src/view/com/modals/DeleteAccount.tsx:182
+msgid "Please enter your password as well:"
+msgstr "비밀번호도 입력해 주세요:"
+
+#: src/lib/hooks/useAccountSwitcher.ts:42
+msgid "Please sign in as @{0}"
+msgstr "@{0}(으)로 로그인하세요."
+
+#: src/view/com/modals/AppealLabel.tsx:72
+#: src/view/com/modals/AppealLabel.tsx:75
+msgid "Please tell us why you think this content warning was incorrectly applied!"
+msgstr "이 콘텐츠 경고가 잘못 적용되었다고 생각하는 이유를 알려주세요!"
+
+#: src/view/com/modals/AppealLabel.tsx:72
+#: src/view/com/modals/AppealLabel.tsx:75
+#~ msgid "Please tell us why you think this decision was incorrect."
+#~ msgstr "이 결정이 잘못되었다고 생각하는 이유를 알려주세요."
+
+#: src/view/com/modals/VerifyEmail.tsx:100
+msgid "Please Verify Your Email"
+msgstr "이메일 인증하기"
+
+#: src/view/com/composer/Composer.tsx:215
+msgid "Please wait for your link card to finish loading"
+msgstr "링크 카드를 완전히 불러올 때까지 기다려주세요."
+
+#: src/view/com/post-thread/PostThread.tsx:225
+#: src/view/screens/PostThread.tsx:80
+msgid "Post"
+msgstr "게시물"
+
+#: src/view/com/composer/Composer.tsx:341
+#: src/view/com/composer/Composer.tsx:348
+msgid "Post (verb)"
+msgstr "게시하기"
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:74
+msgid "Post deleted"
+msgstr "게시물 삭제됨"
+
+#: src/view/com/post-thread/PostThread.tsx:378
+msgid "Post hidden"
+msgstr "게시물 숨김"
+
+#: src/view/com/composer/select-language/SelectLangBtn.tsx:87
+msgid "Post language"
+msgstr "게시물 언어"
+
+#: src/view/com/modals/lang-settings/PostLanguagesSettings.tsx:75
+msgid "Post Languages"
+msgstr "게시물 언어"
+
+#: src/view/com/post-thread/PostThread.tsx:430
+msgid "Post not found"
+msgstr "게시물을 찾을 수 없음"
+
+#: src/lib/api/index.ts:242
+msgid "Posting..."
+msgstr "게시하는 중…"
+
+#: src/view/screens/Profile.tsx:161
+msgid "Posts"
+msgstr "게시물"
+
+#: src/view/com/modals/LinkWarning.tsx:44
+msgid "Potentially Misleading Link"
+msgstr "오해의 소지가 있는 링크"
+
+#: src/view/com/lightbox/Lightbox.web.tsx:128
+msgid "Previous image"
+msgstr "이전 이미지"
+
+#: src/view/screens/LanguageSettings.tsx:187
+msgid "Primary Language"
+msgstr "주 언어"
+
+#: src/view/screens/PreferencesThreads.tsx:97
+msgid "Prioritize Your Follows"
+msgstr "내 팔로우 우선시키기"
+
+#: src/view/screens/Settings.tsx:571
+#: src/view/shell/desktop/RightNav.tsx:84
+msgid "Privacy"
+msgstr "개인정보"
+
+#: src/view/com/auth/create/Policies.tsx:69
+#: src/view/screens/PrivacyPolicy.tsx:29
+#: src/view/screens/Settings.tsx:784
+#: src/view/shell/Drawer.tsx:262
+msgid "Privacy Policy"
+msgstr "개인정보 처리방침"
+
+#: src/lib/api/index.ts:80
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:190
+msgid "Processing..."
+msgstr "처리 중…"
+
+#: src/view/shell/bottom-bar/BottomBar.tsx:247
+#: src/view/shell/desktop/LeftNav.tsx:415
+#: src/view/shell/Drawer.tsx:70
+#: src/view/shell/Drawer.tsx:544
+#: src/view/shell/Drawer.tsx:545
+msgid "Profile"
+msgstr "프로필"
+
+#: src/view/com/modals/EditProfile.tsx:128
+msgid "Profile updated"
+msgstr "프로필 업데이트됨"
+
+#: src/view/screens/Settings.tsx:842
+msgid "Protect your account by verifying your email."
+msgstr "이메일을 인증하여 계정을 보호하세요."
+
+#: src/view/screens/ModerationModlists.tsx:61
+msgid "Public, shareable lists of users to mute or block in bulk."
+msgstr "음소거하거나 일괄 차단할 수 있는 공개적이고 공유할 수 있는 사용자 목록입니다."
+
+#: src/view/screens/Lists.tsx:61
+msgid "Public, shareable lists which can drive feeds."
+msgstr "피드를 탐색할 수 있는 공개적이고 공유할 수 있는 목록입니다."
+
+#: src/view/com/composer/Composer.tsx:329
+msgid "Publish post"
+msgstr "게시물 게시하기"
+
+#: src/view/com/composer/Composer.tsx:329
+msgid "Publish reply"
+msgstr "답글 게시하기"
+
+#: src/view/com/modals/Repost.tsx:52
+#: src/view/com/util/post-ctrls/RepostButton.web.tsx:58
+msgid "Quote post"
+msgstr "게시물 인용"
+
+#: src/view/com/modals/Repost.tsx:56
+msgid "Quote Post"
+msgstr "게시물 인용"
+
+#: src/view/screens/PreferencesThreads.tsx:86
+msgid "Random (aka \"Poster's Roulette\")"
+msgstr "무작위"
+
+#: src/view/com/modals/EditImage.tsx:236
+msgid "Ratios"
+msgstr "비율"
+
+#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:73
+#: src/view/com/auth/onboarding/RecommendedFollows.tsx:50
+#~ msgid "Recommended"
+#~ msgstr "추천"
+
+#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:116
+msgid "Recommended Feeds"
+msgstr "추천 피드"
+
+#: src/view/com/auth/onboarding/RecommendedFollows.tsx:180
+msgid "Recommended Users"
+msgstr "추천 사용자"
+
+#: src/view/com/modals/ListAddRemoveUsers.tsx:264
+#: src/view/com/modals/SelfLabel.tsx:83
+#: src/view/com/modals/UserAddRemoveLists.tsx:193
+#: src/view/com/util/UserAvatar.tsx:282
+#: src/view/com/util/UserBanner.tsx:89
+msgid "Remove"
+msgstr "제거"
+
+#: src/view/com/feeds/FeedSourceCard.tsx:106
+msgid "Remove {0} from my feeds?"
+msgstr "{0}을(를) 내 피드에서 제거하시겠습니까?"
+
+#: src/view/com/util/AccountDropdownBtn.tsx:22
+msgid "Remove account"
+msgstr "계정 제거"
+
+#: src/view/com/posts/FeedErrorMessage.tsx:130
+msgid "Remove feed"
+msgstr "피드 제거"
+
+#: src/view/com/feeds/FeedSourceCard.tsx:105
+#: src/view/com/feeds/FeedSourceCard.tsx:172
+#: src/view/screens/ProfileFeed.tsx:281
+msgid "Remove from my feeds"
+msgstr "내 피드에서 제거"
+
+#: src/view/com/composer/photos/Gallery.tsx:167
+msgid "Remove image"
+msgstr "이미지 제거"
+
+#: src/view/com/composer/ExternalEmbed.tsx:70
+msgid "Remove image preview"
+msgstr "이미지 미리보기 제거"
+
+#: src/view/com/feeds/FeedSourceCard.tsx:173
+msgid "Remove this feed from my feeds?"
+msgstr "이 피드를 내 피드에서 제거하시겠습니까?"
+
+#: src/view/com/posts/FeedErrorMessage.tsx:131
+msgid "Remove this feed from your saved feeds?"
+msgstr "이 피드를 저장된 피드에서 제거하시겠습니까?"
+
+#: src/view/com/modals/ListAddRemoveUsers.tsx:199
+#: src/view/com/modals/UserAddRemoveLists.tsx:136
+msgid "Removed from list"
+msgstr "리스트에서 제거됨"
+
+#: src/view/com/feeds/FeedSourceCard.tsx:111
+#: src/view/com/feeds/FeedSourceCard.tsx:178
+msgid "Removed from my feeds"
+msgstr "내 피드에서 제거됨"
+
+#: src/view/screens/Profile.tsx:162
+msgid "Replies"
+msgstr "답글"
+
+#: src/view/com/threadgate/WhoCanReply.tsx:98
+msgid "Replies to this thread are disabled"
+msgstr "이 스레드에 대한 답글이 비활성화됩니다."
+
+#: src/view/com/composer/Composer.tsx:341
+msgid "Reply"
+msgstr "답글"
+
+#: src/view/screens/PreferencesHomeFeed.tsx:144
+msgid "Reply Filters"
+msgstr "답글 필터"
+
+#: src/view/com/post/Post.tsx:164
+#: src/view/com/posts/FeedItem.tsx:285
+msgid "Reply to <0/>"
+msgstr "<0/> 님에게 보내는 답글"
+
+#: src/view/com/modals/report/Modal.tsx:169
+msgid "Report {collectionName}"
+msgstr "{collectionName} 신고"
+
+#: src/view/com/profile/ProfileHeader.tsx:408
+msgid "Report Account"
+msgstr "계정 신고"
+
+#: src/view/screens/ProfileFeed.tsx:301
+msgid "Report feed"
+msgstr "피드 신고"
+
+#: src/view/screens/ProfileList.tsx:434
+msgid "Report List"
+msgstr "리스트 신고"
+
+#: src/view/com/modals/report/SendReportButton.tsx:37
+#: src/view/com/util/forms/PostDropdownBtn.tsx:198
+msgid "Report post"
+msgstr "게시물 신고"
+
+#: src/view/com/util/post-ctrls/RepostButton.web.tsx:48
+msgid "Repost"
+msgstr "재게시"
+
+#: src/view/com/util/post-ctrls/RepostButton.web.tsx:94
+#: src/view/com/util/post-ctrls/RepostButton.web.tsx:105
+msgid "Repost or quote post"
+msgstr "재게시 또는 게시물 인용"
+
+#: src/view/screens/PostRepostedBy.tsx:27
+msgid "Reposted by"
+msgstr "재게시한 계정"
+
+#: src/view/com/posts/FeedItem.tsx:205
+msgid "Reposted by {0}"
+msgstr "{0} 님이 재게시함"
+
+#: src/view/com/posts/FeedItem.tsx:222
+msgid "Reposted by <0/>"
+msgstr "<0/> 님이 재게시함"
+
+#: src/view/com/notifications/FeedItem.tsx:162
+msgid "reposted your post"
+msgstr "님이 내 게시물을 재게시했습니다"
+
+#: src/view/com/modals/ChangeEmail.tsx:181
+#: src/view/com/modals/ChangeEmail.tsx:183
+msgid "Request Change"
+msgstr "변경 요청"
+
+#: src/view/screens/Moderation.tsx:188
+#~ msgid "Request to limit the visibility of my account"
+#~ msgstr "내 계정의 공개 범위 제한 요청하기"
+
+#: src/view/screens/Settings.tsx:423
+msgid "Require alt text before posting"
+msgstr "게시하기 전 대체 텍스트 필수"
+
+#: src/view/com/auth/create/Step2.tsx:68
+msgid "Required for this provider"
+msgstr "이 제공자에서 필수"
+
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:108
+msgid "Reset code"
+msgstr "코드 재설정"
+
+#: src/view/screens/Settings.tsx:720
+msgid "Reset onboarding state"
+msgstr "온보딩 상태 재설정"
+
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:98
+msgid "Reset password"
+msgstr "비밀번호 재설정"
+
+#: src/view/screens/Settings.tsx:710
+msgid "Reset preferences state"
+msgstr "설정 상태 재설정"
+
+#: src/view/screens/Settings.tsx:718
+msgid "Resets the onboarding state"
+msgstr "온보딩 상태 재설정"
+
+#: src/view/screens/Settings.tsx:708
+msgid "Resets the preferences state"
+msgstr "설정 상태 재설정"
+
+#: src/view/com/auth/create/CreateAccount.tsx:163
+#: src/view/com/auth/create/CreateAccount.tsx:167
+#: src/view/com/auth/login/LoginForm.tsx:263
+#: src/view/com/auth/login/LoginForm.tsx:266
+#: src/view/com/util/error/ErrorMessage.tsx:55
+#: src/view/com/util/error/ErrorScreen.tsx:65
+msgid "Retry"
+msgstr "다시 시도"
+
+#: src/view/com/modals/ChangeHandle.tsx:169
+#~ msgid "Retry change handle"
+#~ msgstr "핸들 변경 다시 시도"
+
+#: src/view/com/modals/BirthDateSettings.tsx:94
+#: src/view/com/modals/BirthDateSettings.tsx:97
+#: src/view/com/modals/ChangeHandle.tsx:173
+#: src/view/com/modals/CreateOrEditList.tsx:252
+#: src/view/com/modals/CreateOrEditList.tsx:260
+#: src/view/com/modals/EditProfile.tsx:224
+#: src/view/screens/ProfileFeed.tsx:354
+msgid "Save"
+msgstr "저장"
+
+#: src/view/com/modals/AltImage.tsx:106
+msgid "Save alt text"
+msgstr "대체 텍스트 저장"
+
+#: src/view/com/modals/UserAddRemoveLists.tsx:212
+#~ msgid "Save changes"
+#~ msgstr "변경 사항 저장"
+
+#: src/view/com/modals/EditProfile.tsx:232
+msgid "Save Changes"
+msgstr "변경 사항 저장"
+
+#: src/view/com/modals/ChangeHandle.tsx:170
+msgid "Save handle change"
+msgstr "핸들 변경 저장"
+
+#: src/view/com/modals/crop-image/CropImage.web.tsx:144
+msgid "Save image crop"
+msgstr "이미지 자르기 저장"
+
+#: src/view/screens/SavedFeeds.tsx:122
+msgid "Saved Feeds"
+msgstr "저장된 피드"
+
+#: src/view/com/lightbox/Lightbox.tsx:81
+msgid "Saved to your camera roll."
+msgstr "내 앨범에 저장됨"
+
+#: src/view/com/modals/ListAddRemoveUsers.tsx:75
+#: src/view/com/util/forms/SearchInput.tsx:53
+#: src/view/com/util/forms/SearchInput.tsx:65
+#: src/view/screens/Search/Search.tsx:406
+#: src/view/screens/Search/Search.tsx:559
+#: src/view/screens/Search/Search.tsx:572
+#: src/view/shell/bottom-bar/BottomBar.tsx:159
+#: src/view/shell/desktop/LeftNav.tsx:324
+#: src/view/shell/desktop/Search.tsx:161
+#: src/view/shell/desktop/Search.tsx:170
+#: src/view/shell/Drawer.tsx:362
+#: src/view/shell/Drawer.tsx:363
+msgid "Search"
+msgstr "검색"
+
+#: src/view/screens/Search/Search.tsx:390
+#~ msgid "Search for posts and users."
+#~ msgstr "게시물 및 사용자를 검색합니다."
+
+#: src/view/com/auth/LoggedOut.tsx:104
+#: src/view/com/auth/LoggedOut.tsx:105
+#: src/view/com/modals/ListAddRemoveUsers.tsx:70
+msgid "Search for users"
+msgstr "사용자 검색하기"
+
+#: src/view/com/modals/ChangeEmail.tsx:110
+msgid "Security Step Required"
+msgstr "보안 단계 필요"
+
+#: src/view/screens/SavedFeeds.tsx:163
+msgid "See this guide"
+msgstr "이 가이드"
+
+#: src/view/com/auth/HomeLoggedOutCTA.tsx:39
+msgid "See what's next"
+msgstr "See what's next"
+
+#: src/view/com/modals/ServerInput.tsx:75
+msgid "Select Bluesky Social"
+msgstr "Bluesky Social 선택"
+
+#: src/view/com/auth/login/Login.tsx:117
+msgid "Select from an existing account"
+msgstr "기존 계정에서 선택"
+
+#: src/view/com/auth/login/LoginForm.tsx:147
+msgid "Select service"
+msgstr "서비스 선택"
+
+#: src/view/screens/LanguageSettings.tsx:281
+msgid "Select which languages you want your subscribed feeds to include. If none are selected, all languages will be shown."
+msgstr "구독하는 피드에 포함할 언어를 선택합니다. 선택하지 않으면 모든 언어가 표시됩니다."
+
+#: src/view/screens/LanguageSettings.tsx:98
+msgid "Select your app language for the default text to display in the app"
+msgstr "앱에 표시되는 기본 텍스트 언어를 선택합니다."
+
+#: src/view/screens/LanguageSettings.tsx:190
+msgid "Select your preferred language for translations in your feed."
+msgstr "피드에서 번역을 위해 선호하는 언어를 선택합니다."
+
+#: src/view/com/modals/VerifyEmail.tsx:198
+msgid "Send Confirmation Email"
+msgstr "확인 이메일 전송"
+
+#: src/view/com/modals/DeleteAccount.tsx:129
+msgid "Send email"
+msgstr "이메일 전송"
+
+#: src/view/com/modals/DeleteAccount.tsx:140
+msgid "Send Email"
+msgstr "이메일 전송"
+
+#: src/view/shell/Drawer.tsx:295
+#: src/view/shell/Drawer.tsx:316
+msgid "Send feedback"
+msgstr "피드백 전송"
+
+#: src/view/com/modals/report/SendReportButton.tsx:45
+msgid "Send Report"
+msgstr "신고 전송"
+
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:78
+msgid "Set new password"
+msgstr "새 비밀번호 설정"
+
+#: src/view/screens/PreferencesHomeFeed.tsx:225
+msgid "Set this setting to \"No\" to hide all quote posts from your feed. Reposts will still be visible."
+msgstr "피드에서 모든 인용 게시물을 숨기려면 이 설정을 \"아니요\"로 설정합니다. 재게시는 계속 표시됩니다."
+
+#: src/view/screens/PreferencesHomeFeed.tsx:122
+msgid "Set this setting to \"No\" to hide all replies from your feed."
+msgstr "피드에서 모든 답글을 숨기려면 이 설정을 \"아니요\"로 설정합니다."
+
+#: src/view/screens/PreferencesHomeFeed.tsx:191
+msgid "Set this setting to \"No\" to hide all reposts from your feed."
+msgstr "피드에서 모든 재게시를 숨기려면 이 설정을 \"아니요\"로 설정합니다."
+
+#: src/view/screens/PreferencesThreads.tsx:122
+msgid "Set this setting to \"Yes\" to show replies in a threaded view. This is an experimental feature."
+msgstr "스레드 보기에 답글을 표시하려면 이 설정을 \"예\"로 설정합니다. 이는 실험적인 기능입니다."
+
+#: src/view/screens/PreferencesHomeFeed.tsx:261
+msgid "Set this setting to \"Yes\" to show samples of your saved feeds in your following feed. This is an experimental feature."
+msgstr "팔로우한 피드에 저장된 피드 샘플을 표시하려면 이 설정을 \"예\"로 설정합니다. 이는 실험적인 기능입니다."
+
+#: src/view/screens/Settings.tsx:278
+#: src/view/shell/desktop/LeftNav.tsx:433
+#: src/view/shell/Drawer.tsx:565
+#: src/view/shell/Drawer.tsx:566
+msgid "Settings"
+msgstr "설정"
+
+#: src/view/com/modals/SelfLabel.tsx:125
+msgid "Sexual activity or erotic nudity."
+msgstr "성행위 또는 선정적인 노출."
+
+#: src/state/queries/preferences/moderation.ts:107
+msgid "Sexually Suggestive"
+msgstr "성적 암시"
+
+#: src/view/com/profile/ProfileHeader.tsx:342
+#: src/view/com/util/forms/PostDropdownBtn.tsx:141
+#: src/view/screens/ProfileList.tsx:393
+msgid "Share"
+msgstr "공유"
+
+#: src/view/screens/ProfileFeed.tsx:313
+msgid "Share feed"
+msgstr "피드 공유"
+
+#: src/view/screens/ProfileFeed.tsx:276
+#~ msgid "Share link"
+#~ msgstr "링크 공유"
+
+#: src/view/com/modals/ContentFilteringSettings.tsx:253
+#: src/view/com/util/moderation/ContentHider.tsx:105
+#: src/view/screens/Settings.tsx:317
+msgid "Show"
+msgstr "표시"
+
+#: src/view/screens/PreferencesHomeFeed.tsx:68
+msgid "Show all replies"
+msgstr "모든 답글 표시"
+
+#: src/view/com/util/moderation/ScreenHider.tsx:132
+msgid "Show anyway"
+msgstr "무시하고 표시"
+
+#: src/view/com/modals/EmbedConsent.tsx:87
+msgid "Show embeds from {0}"
+msgstr "{0} 임베드 표시"
+
+#: src/view/com/post/Post.tsx:195
+#: src/view/com/posts/FeedItem.tsx:360
+msgid "Show More"
+msgstr "더 보기"
+
+#: src/view/screens/PreferencesHomeFeed.tsx:258
+msgid "Show Posts from My Feeds"
+msgstr "내 피드에서 게시물 표시"
+
+#: src/view/screens/PreferencesHomeFeed.tsx:222
+msgid "Show Quote Posts"
+msgstr "인용 게시물 표시"
+
+#: src/view/screens/PreferencesHomeFeed.tsx:119
+msgid "Show Replies"
+msgstr "답글 표시"
+
+#: src/view/screens/PreferencesThreads.tsx:100
+msgid "Show replies by people you follow before all other replies."
+msgstr "내가 팔로우하는 사람들의 답글을 다른 모든 답글보다 먼저 표시합니다."
+
+#: src/view/screens/PreferencesHomeFeed.tsx:70
+msgid "Show replies with at least {value} {0}"
+msgstr "좋아요가 {value}개 이상인 답글 표시"
+
+#: src/view/screens/PreferencesHomeFeed.tsx:188
+msgid "Show Reposts"
+msgstr "재게시 표시"
+
+#: src/view/com/notifications/FeedItem.tsx:348
+msgid "Show users"
+msgstr "사용자 표시"
+
+#: src/view/com/auth/HomeLoggedOutCTA.tsx:70
+#: src/view/com/auth/login/Login.tsx:98
+#: src/view/com/auth/SplashScreen.tsx:54
+#: src/view/shell/bottom-bar/BottomBar.tsx:285
+#: src/view/shell/bottom-bar/BottomBar.tsx:286
+#: src/view/shell/bottom-bar/BottomBar.tsx:288
+#: src/view/shell/bottom-bar/BottomBarWeb.tsx:177
+#: src/view/shell/bottom-bar/BottomBarWeb.tsx:178
+#: src/view/shell/bottom-bar/BottomBarWeb.tsx:180
+#: src/view/shell/NavSignupCard.tsx:58
+#: src/view/shell/NavSignupCard.tsx:59
+#: src/view/shell/NavSignupCard.tsx:61
+msgid "Sign in"
+msgstr "로그인"
+
+#: src/view/com/auth/HomeLoggedOutCTA.tsx:78
+#: src/view/com/auth/SplashScreen.tsx:57
+#: src/view/com/auth/SplashScreen.web.tsx:88
+msgid "Sign In"
+msgstr "로그인"
+
+#: src/view/com/auth/login/ChooseAccountForm.tsx:44
+msgid "Sign in as {0}"
+msgstr "{0}(으)로 로그인"
+
+#: src/view/com/auth/login/ChooseAccountForm.tsx:118
+#: src/view/com/auth/login/Login.tsx:116
+msgid "Sign in as..."
+msgstr "로그인"
+
+#: src/view/com/auth/login/LoginForm.tsx:134
+msgid "Sign into"
+msgstr "로그인"
+
+#: src/view/com/modals/SwitchAccount.tsx:64
+#: src/view/com/modals/SwitchAccount.tsx:67
+#: src/view/screens/Settings.tsx:102
+#: src/view/screens/Settings.tsx:105
+msgid "Sign out"
+msgstr "로그아웃"
+
+#: src/view/shell/bottom-bar/BottomBar.tsx:275
+#: src/view/shell/bottom-bar/BottomBar.tsx:276
+#: src/view/shell/bottom-bar/BottomBar.tsx:278
+#: src/view/shell/bottom-bar/BottomBarWeb.tsx:167
+#: src/view/shell/bottom-bar/BottomBarWeb.tsx:168
+#: src/view/shell/bottom-bar/BottomBarWeb.tsx:170
+#: src/view/shell/NavSignupCard.tsx:49
+#: src/view/shell/NavSignupCard.tsx:50
+#: src/view/shell/NavSignupCard.tsx:52
+msgid "Sign up"
+msgstr "가입하기"
+
+#: src/view/shell/NavSignupCard.tsx:42
+msgid "Sign up or sign in to join the conversation"
+msgstr "가입 또는 로그인하여 대화에 참여하세요."
+
+#: src/view/com/util/moderation/ScreenHider.tsx:76
+msgid "Sign-in Required"
+msgstr "로그인 필요"
+
+#: src/view/screens/Settings.tsx:328
+msgid "Signed in as"
+msgstr "로그인한 계정"
+
+#: src/lib/hooks/useAccountSwitcher.ts:36
+#: src/view/com/auth/login/ChooseAccountForm.tsx:103
+msgid "Signed in as @{0}"
+msgstr "@{0}(으)로 로그인했습니다."
+
+#: src/view/com/auth/onboarding/WelcomeMobile.tsx:33
+msgid "Skip"
+msgstr "건너뛰기"
+
+#: src/lib/hooks/useAccountSwitcher.ts:47
+msgid "Sorry! We need you to enter your password."
+msgstr "죄송합니다. 비밀번호를 입력해 주세요."
+
+#: src/App.native.tsx:57
+#~ msgid "Sorry! Your session expired. Please log in again."
+#~ msgstr "죄송합니다. 세션이 만료되었습니다. 다시 로그인해 주세요."
+
+#: src/view/screens/PreferencesThreads.tsx:69
+msgid "Sort Replies"
+msgstr "답글 정렬"
+
+#: src/view/screens/PreferencesThreads.tsx:72
+msgid "Sort replies to the same post by:"
+msgstr "동일한 게시물에 대한 답글을 정렬하는 기준입니다."
+
+#: src/state/queries/preferences/moderation.ts:130
+#: src/view/com/modals/report/ReasonOptions.tsx:29
+msgid "Spam"
+msgstr "스팸"
+
+#: src/view/com/modals/report/ReasonOptions.tsx:57
+msgid "Spam; excessive mentions or replies"
+msgstr "스팸, 과도한 멘션 또는 답글"
+
+#: src/view/com/modals/crop-image/CropImage.web.tsx:122
+msgid "Square"
+msgstr "정사각형"
+
+#: src/view/com/auth/create/Step1.tsx:90
+#: src/view/com/modals/ServerInput.tsx:62
+msgid "Staging"
+msgstr "스테이징"
+
+#: src/view/screens/Settings.tsx:764
+msgid "Status page"
+msgstr "상태 페이지"
+
+#: src/view/com/auth/create/CreateAccount.tsx:120
+msgid "Step {0}"
+msgstr "{0}단계"
+
+#: src/view/com/auth/create/StepHeader.tsx:16
+msgid "Step {step} of 3"
+msgstr "3단계 중 {step}단계"
+
+#: src/view/screens/Settings.tsx:269
+msgid "Storage cleared, you need to restart the app now."
+msgstr "스토리지가 지워졌으며 지금 앱을 다시 시작해야 합니다."
+
+#: src/view/screens/Settings.tsx:700
+msgid "Storybook"
+msgstr "스토리북"
+
+#: src/view/com/modals/AppealLabel.tsx:101
+msgid "Submit"
+msgstr "확인"
+
+#: src/view/screens/ProfileList.tsx:583
+msgid "Subscribe"
+msgstr "구독"
+
+#: src/view/screens/ProfileList.tsx:579
+msgid "Subscribe to this list"
+msgstr "이 리스트로 구독"
+
+#: src/view/screens/Search/Search.tsx:362
+msgid "Suggested Follows"
+msgstr "팔로우 추천"
+
+#: src/view/com/profile/ProfileHeaderSuggestedFollows.tsx:65
+msgid "Suggested for you"
+msgstr "나를 위한 추천"
+
+#: src/view/screens/Support.tsx:30
+#: src/view/screens/Support.tsx:33
+msgid "Support"
+msgstr "지원"
+
+#: src/view/com/modals/SwitchAccount.tsx:115
+msgid "Switch Account"
+msgstr "계정 전환"
+
+#: src/view/screens/Settings.tsx:439
+msgid "System"
+msgstr "시스템"
+
+#: src/view/screens/Settings.tsx:680
+msgid "System log"
+msgstr "시스템 로그"
+
+#: src/view/com/modals/crop-image/CropImage.web.tsx:112
+msgid "Tall"
+msgstr "세로"
+
+#: src/view/shell/desktop/RightNav.tsx:93
+msgid "Terms"
+msgstr "이용약관"
+
+#: src/view/com/auth/create/Policies.tsx:59
+#: src/view/screens/Settings.tsx:778
+#: src/view/screens/TermsOfService.tsx:29
+#: src/view/shell/Drawer.tsx:256
+msgid "Terms of Service"
+msgstr "서비스 이용약관"
+
+#: src/view/com/modals/report/ReasonOptions.tsx:46
+#: src/view/com/modals/report/ReasonOptions.tsx:61
+msgid "Terms used violate community standards"
+msgstr "커뮤니티 표준을 위반하는 용어 사용"
+
+#: src/view/com/modals/AppealLabel.tsx:70
+#: src/view/com/modals/report/InputIssueDetails.tsx:51
+msgid "Text input field"
+msgstr "텍스트 입력 필드"
+
+#: src/view/com/modals/report/Modal.tsx:82
+msgid "Thank you for your report! We'll look into it promptly."
+msgstr "신고해 주셔서 감사합니다! 즉시 검토하겠습니다."
+
+#: src/view/com/modals/ChangeHandle.tsx:464
+msgid "That contains the following:"
+msgstr "텍스트 파일 내용:"
+
+#: src/view/com/profile/ProfileHeader.tsx:310
+msgid "The account will be able to interact with you after unblocking."
+msgstr "차단을 해제하면 해당 계정이 나와 상호작용할 수 있게 됩니다."
+
+#: src/view/screens/CommunityGuidelines.tsx:36
+msgid "The Community Guidelines have been moved to <0/>"
+msgstr "커뮤니티 가이드라인이 <0/>(으)로 이동되었습니다."
+
+#: src/view/screens/CopyrightPolicy.tsx:33
+msgid "The Copyright Policy has been moved to <0/>"
+msgstr "저작권 정책이 <0/>(으)로 이동되었습니다."
+
+#: src/view/com/post-thread/PostThread.tsx:433
+msgid "The post may have been deleted."
+msgstr "게시물이 삭제되었을 수 있습니다."
+
+#: src/view/screens/PrivacyPolicy.tsx:33
+msgid "The Privacy Policy has been moved to <0/>"
+msgstr "개인정보 처리방침이 <0/>(으)로 이동되었습니다."
+
+#: src/view/screens/Support.tsx:36
+msgid "The support form has been moved. If you need help, please<0/> or visit {HELP_DESK_URL} to get in touch with us."
+msgstr "지원 양식이 이동되었습니다. 도움이 필요하다면 {HELP_DESK_URL}을 방문하거나 <0/>로 문의해 주세요."
+
+#: src/view/screens/Debug.tsx:184
+msgid "The task has been completed"
+msgstr "작업을 완료했습니다."
+
+#: src/view/screens/Debug.tsx:188
+msgid "The task has been completed successfully and with no problems"
+msgstr "작업을 문제 없이 성공적으로 완료했습니다."
+
+#: src/view/screens/TermsOfService.tsx:33
+msgid "The Terms of Service have been moved to"
+msgstr "서비스 이용약관이 다음으로 이동되었습니다:"
+
+#: src/view/screens/ProfileFeed.tsx:557
+msgid "There was an an issue contacting the server, please check your internet connection and try again."
+msgstr "서버에 연결하는 동안 문제가 발생했습니다. 인터넷 연결을 확인한 후 다시 시도하세요."
+
+#: src/view/screens/ProfileFeed.tsx:218
+msgid "There was an an issue updating your feeds, please check your internet connection and try again."
+msgstr "피드를 업데이트하는 동안 문제가 발생했습니다. 인터넷 연결을 확인한 후 다시 시도하세요."
+
+#: src/view/screens/ProfileFeed.tsx:245
+#: src/view/screens/ProfileList.tsx:263
+#: src/view/screens/SavedFeeds.tsx:209
+#: src/view/screens/SavedFeeds.tsx:231
+#: src/view/screens/SavedFeeds.tsx:252
+msgid "There was an issue contacting the server"
+msgstr "서버에 연결하는 동안 문제가 발생했습니다."
+
+#: src/view/com/auth/onboarding/RecommendedFeedsItem.tsx:58
+#: src/view/com/auth/onboarding/RecommendedFeedsItem.tsx:67
+#: src/view/com/feeds/FeedSourceCard.tsx:113
+#: src/view/com/feeds/FeedSourceCard.tsx:127
+#: src/view/com/feeds/FeedSourceCard.tsx:181
+msgid "There was an issue contacting your server"
+msgstr "서버에 연결하는 동안 문제가 발생했습니다."
+
+#: src/view/com/modals/ContentFilteringSettings.tsx:126
+msgid "There was an issue syncing your preferences with the server"
+msgstr "설정을 서버와 동기화하는 동안 문제가 발생했습니다."
+
+#: src/view/com/profile/ProfileHeader.tsx:204
+#: src/view/com/profile/ProfileHeader.tsx:225
+#: src/view/com/profile/ProfileHeader.tsx:264
+#: src/view/com/profile/ProfileHeader.tsx:277
+#: src/view/com/profile/ProfileHeader.tsx:297
+#: src/view/com/profile/ProfileHeader.tsx:319
+msgid "There was an issue! {0}"
+msgstr "문제가 발생했습니다! {0}"
+
+#: src/view/screens/ProfileList.tsx:284
+#: src/view/screens/ProfileList.tsx:303
+#: src/view/screens/ProfileList.tsx:325
+#: src/view/screens/ProfileList.tsx:344
+msgid "There was an issue. Please check your internet connection and try again."
+msgstr "문제가 발생했습니다. 인터넷 연결을 확인한 후 다시 시도하세요."
+
+#: src/view/com/util/ErrorBoundary.tsx:35
+msgid "There was an unexpected issue in the application. Please let us know if this happened to you!"
+msgstr "애플리케이션에 예기치 않은 문제가 발생했습니다. 이런 일이 발생하면 저희에게 알려주세요!"
+
+#: src/view/com/util/moderation/LabelInfo.tsx:45
+#~ msgid "This {0} has been labeled."
+#~ msgstr "이 {0}에 레이블이 지정되었습니다."
+
+#: src/view/com/util/moderation/ScreenHider.tsx:88
+msgid "This {screenDescription} has been flagged:"
+msgstr "이 {screenDescription}에 플래그가 지정되었습니다:"
+
+#: src/view/com/util/moderation/ScreenHider.tsx:83
+msgid "This account has requested that users sign in to view their profile."
+msgstr "이 계정의 프로필을 보려면 로그인해야 합니다."
+
+#: src/view/com/modals/EmbedConsent.tsx:68
+msgid "This content is hosted by {0}. Do you want to enable external media?"
+msgstr "이 콘텐츠는 {0}에서 호스팅됩니다. 외부 미디어를 사용하시겠습니까?"
+
+#: src/view/com/posts/FeedErrorMessage.tsx:107
+msgid "This content is not viewable without a Bluesky account."
+msgstr "이 콘텐츠는 Bluesky 계정이 없으면 볼 수 없습니다."
+
+#: src/view/com/posts/FeedErrorMessage.tsx:113
+msgid "This feed is currently receiving high traffic and is temporarily unavailable. Please try again later."
+msgstr "이 피드는 현재 트래픽이 많아 일시적으로 사용할 수 없습니다. 나중에 다시 시도해 주세요."
+
+#: src/view/screens/Profile.tsx:392
+#: src/view/screens/ProfileFeed.tsx:484
+#: src/view/screens/ProfileList.tsx:636
+msgid "This feed is empty!"
+msgstr "이 피드는 비어 있습니다."
+
+#: src/view/com/modals/BirthDateSettings.tsx:61
+msgid "This information is not shared with other users."
+msgstr "이 정보는 다른 사용자와 공유되지 않습니다."
+
+#: src/view/com/modals/VerifyEmail.tsx:115
+msgid "This is important in case you ever need to change your email or reset your password."
+msgstr "이는 이메일을 변경하거나 비밀번호를 재설정해야 할 때 중요한 정보입니다."
+
+#: src/view/com/auth/create/Step1.tsx:55
+msgid "This is the service that keeps you online."
+msgstr "온라인 상태를 유지할 수 있게 하는 서비스입니다."
+
+#: src/view/com/modals/LinkWarning.tsx:56
+msgid "This link is taking you to the following website:"
+msgstr "이 링크를 클릭하면 다음 웹사이트로 이동합니다:"
+
+#: src/view/screens/ProfileList.tsx:794
+msgid "This list is empty!"
+msgstr "이 리스트는 비어 있습니다."
+
+#: src/view/com/modals/AddAppPasswords.tsx:105
+msgid "This name is already in use"
+msgstr "이 이름은 이미 사용 중입니다."
+
+#: src/view/com/post-thread/PostThreadItem.tsx:123
+msgid "This post has been deleted."
+msgstr "이 게시물은 삭제되었습니다."
+
+#: src/view/com/auth/create/Policies.tsx:46
+msgid "This service has not provided terms of service or a privacy policy."
+msgstr "이 서비스에는 서비스 이용약관이나 개인정보 처리방침이 제공되지 않습니다."
+
+#: src/view/com/modals/ChangeHandle.tsx:444
+msgid "This should create a domain record at:"
+msgstr "이 도메인에 레코드가 추가됩니다:"
+
+#: src/view/com/modals/SelfLabel.tsx:137
+msgid "This warning is only available for posts with media attached."
+msgstr "이 경고는 미디어가 첨부된 게시물에만 사용할 수 있습니다."
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:180
+msgid "This will hide this post from your feeds."
+msgstr "피드에서 이 게시물을 숨깁니다."
+
+#: src/view/screens/PreferencesThreads.tsx:53
+#: src/view/screens/Settings.tsx:504
+msgid "Thread Preferences"
+msgstr "스레드 설정"
+
+#: src/view/screens/PreferencesThreads.tsx:119
+msgid "Threaded Mode"
+msgstr "스레드 모드"
+
+#: src/view/com/util/forms/DropdownButton.tsx:230
+msgid "Toggle dropdown"
+msgstr "드롭다운 열기 및 닫기"
+
+#: src/view/com/modals/EditImage.tsx:271
+msgid "Transformations"
+msgstr "변형"
+
+#: src/view/com/post-thread/PostThreadItem.tsx:705
+#: src/view/com/post-thread/PostThreadItem.tsx:707
+#: src/view/com/util/forms/PostDropdownBtn.tsx:113
+msgid "Translate"
+msgstr "번역"
+
+#: src/view/com/util/error/ErrorScreen.tsx:73
+msgid "Try again"
+msgstr "다시 시도"
+
+#: src/view/com/modals/ChangeHandle.tsx:427
+msgid "Type"
+msgstr "유형"
+
+#: src/view/screens/ProfileList.tsx:481
+msgid "Un-block list"
+msgstr "리스트 차단 해제"
+
+#: src/view/screens/ProfileList.tsx:466
+msgid "Un-mute list"
+msgstr "리스트 언뮤트"
+
+#: src/view/com/auth/create/CreateAccount.tsx:65
+#: src/view/com/auth/login/Login.tsx:76
+#: src/view/com/auth/login/LoginForm.tsx:120
+msgid "Unable to contact your service. Please check your Internet connection."
+msgstr "서비스에 연결할 수 없습니다. 인터넷 연결을 확인하세요."
+
+#: src/view/com/profile/ProfileHeader.tsx:470
+#: src/view/com/profile/ProfileHeader.tsx:473
+#: src/view/screens/ProfileList.tsx:565
+msgid "Unblock"
+msgstr "차단 해제"
+
+#: src/view/com/profile/ProfileHeader.tsx:308
+#: src/view/com/profile/ProfileHeader.tsx:392
+msgid "Unblock Account"
+msgstr "계정 차단 해제"
+
+#: src/view/com/util/post-ctrls/RepostButton.web.tsx:48
+msgid "Undo repost"
+msgstr "재게시 취소"
+
+#: src/view/com/auth/onboarding/RecommendedFollowsItem.tsx:138
+#: src/view/com/profile/FollowButton.tsx:55
+#: src/view/com/profile/ProfileHeaderSuggestedFollows.tsx:241
+msgid "Unfollow"
+msgstr "언팔로우"
+
+#: src/view/com/auth/create/state.ts:216
+msgid "Unfortunately, you do not meet the requirements to create an account."
+msgstr "아쉽지만 계정을 만들 수 있는 요건을 충족하지 못했습니다."
+
+#: src/view/screens/ProfileList.tsx:572
+msgid "Unmute"
+msgstr "언뮤트"
+
+#: src/view/com/profile/ProfileHeader.tsx:373
+msgid "Unmute Account"
+msgstr "계정 언뮤트"
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:159
+msgid "Unmute thread"
+msgstr "스레드 언뮤트"
+
+#: src/view/screens/ProfileFeed.tsx:362
+#: src/view/screens/ProfileList.tsx:556
+msgid "Unpin"
+msgstr "고정 해제"
+
+#: src/view/screens/ProfileList.tsx:449
+msgid "Unpin moderation list"
+msgstr "검토 리스트 고정 해제"
+
+#: src/view/screens/ProfileFeed.tsx:354
+msgid "Unsave"
+msgstr "저장 해제"
+
+#: src/view/com/modals/report/ReasonOptions.tsx:33
+msgid "Unwanted Sexual Content"
+msgstr "원치 않는 성적 콘텐츠"
+
+#: src/view/com/modals/UserAddRemoveLists.tsx:54
+msgid "Update {displayName} in Lists"
+msgstr "리스트에서 {displayName} 업데이트"
+
+#: src/lib/hooks/useOTAUpdate.ts:15
+msgid "Update Available"
+msgstr "업데이트 사용 가능"
+
+#: src/view/com/modals/ChangeHandle.tsx:507
+msgid "Update to {handle}"
+msgstr "{handle}로 변경"
+
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:172
+msgid "Updating..."
+msgstr "업데이트 중…"
+
+#: src/view/com/modals/ChangeHandle.tsx:453
+msgid "Upload a text file to:"
+msgstr "텍스트 파일 업로드 경로:"
+
+#: src/lib/api/index.ts:114
+msgid "Uploading image #{0}..."
+msgstr "{0}번째 이미지 업로드 중…"
+
+#: src/lib/api/index.ts:152
+msgid "Uploading link thumbnail..."
+msgstr "링크 미리보기 이미지 업로드 중…"
+
+#: src/view/screens/AppPasswords.tsx:195
+msgid "Use app passwords to login to other Bluesky clients without giving full access to your account or password."
+msgstr "앱 비밀번호를 사용하면 계정이나 비밀번호에 대한 전체 접근 권한을 제공하지 않고도 다른 Bluesky 클라이언트에 로그인할 수 있습니다."
+
+#: src/view/com/modals/ChangeHandle.tsx:515
+msgid "Use default provider"
+msgstr "기본 제공자 사용"
+
+#: src/view/com/modals/AddAppPasswords.tsx:154
+msgid "Use this to sign into the other app along with your handle."
+msgstr "이 비밀번호와 핸들을 사용하여 다른 앱에 로그인하세요."
+
+#: src/view/com/modals/InviteCodes.tsx:200
+msgid "Used by:"
+msgstr "사용 계정:"
+
+#: src/view/com/modals/CreateOrEditList.tsx:68
+msgid "User"
+msgstr "사용자"
+
+#: src/view/com/auth/create/Step3.tsx:38
+msgid "User handle"
+msgstr "사용자 핸들"
+
+#: src/view/screens/Lists.tsx:58
+msgid "User Lists"
+msgstr "사용자 리스트"
+
+#: src/view/com/auth/login/LoginForm.tsx:174
+#: src/view/com/auth/login/LoginForm.tsx:192
+msgid "Username or email address"
+msgstr "사용자 이름 또는 이메일 주소"
+
+#: src/view/screens/ProfileList.tsx:756
+msgid "Users"
+msgstr "사용자"
+
+#: src/view/com/threadgate/WhoCanReply.tsx:143
+msgid "users followed by <0/>"
+msgstr "<0/>(이)가 팔로우한 사용자"
+
+#: src/view/com/threadgate/WhoCanReply.tsx:115
+#~ msgid "Users followed by <0/>"
+#~ msgstr "<0/>(이)가 팔로우한 사용자"
+
+#: src/view/com/modals/Threadgate.tsx:106
+msgid "Users in \"{0}\""
+msgstr "\"{0}\"에 있는 사용자"
+
+#: src/view/com/modals/ChangeHandle.tsx:435
+msgid "Value"
+msgstr "값"
+
+#: src/view/com/modals/ChangeHandle.tsx:508
+msgid "Verify {0}"
+msgstr "{0} 확인"
+
+#: src/view/screens/Settings.tsx:803
+msgid "Verify email"
+msgstr "이메일 인증"
+
+#: src/view/screens/Settings.tsx:828
+msgid "Verify my email"
+msgstr "내 이메일 인증"
+
+#: src/view/screens/Settings.tsx:837
+msgid "Verify My Email"
+msgstr "내 이메일 인증"
+
+#: src/view/com/modals/ChangeEmail.tsx:205
+#: src/view/com/modals/ChangeEmail.tsx:207
+msgid "Verify New Email"
+msgstr "새 이메일 인증"
+
+#: src/view/com/modals/VerifyEmail.tsx:104
+msgid "Verify Your Email"
+msgstr "이메일 인증하기"
+
+#: src/view/screens/Log.tsx:52
+msgid "View debug entry"
+msgstr "디버그 항목 보기"
+
+#: src/view/com/posts/FeedSlice.tsx:103
+msgid "View full thread"
+msgstr "전체 스레드 보기"
+
+#: src/view/com/profile/ProfileSubpageHeader.tsx:128
+msgid "View the avatar"
+msgstr "아바타 보기"
+
+#: src/state/queries/preferences/moderation.ts:115
+msgid "Violent / Bloody"
+msgstr "폭력 및 유혈"
+
+#: src/view/com/modals/LinkWarning.tsx:73
+msgid "Visit Site"
+msgstr "사이트 방문"
+
+#: src/view/com/modals/ContentFilteringSettings.tsx:246
+msgid "Warn"
+msgstr "경고"
+
+#: src/view/com/modals/AppealLabel.tsx:48
+msgid "We'll look into your appeal promptly."
+msgstr "이의신청을 즉시 검토하겠습니다."
+
+#: src/view/com/auth/create/CreateAccount.tsx:122
+msgid "We're so excited to have you join us!"
+msgstr "당신과 함께하게 되어 정말 기쁘네요!"
+
+#: src/view/com/posts/FeedErrorMessage.tsx:99
+#~ msgid "We're sorry, but this content is not viewable without a Bluesky account."
+#~ msgstr "죄송하지만 이 콘텐츠는 Bluesky 계정이 없으면 볼 수 없습니다."
+
+#: src/view/com/posts/FeedErrorMessage.tsx:105
+#~ msgid "We're sorry, but this feed is currently receiving high traffic and is temporarily unavailable. Please try again later."
+#~ msgstr "죄송하지만 현재 트래픽이 많아 이 피드를 일시적으로 사용할 수 없습니다. 잠시 후 다시 시도해 주세요."
+
+#: src/view/screens/Search/Search.tsx:243
+msgid "We're sorry, but your search could not be completed. Please try again in a few minutes."
+msgstr "죄송하지만 검색을 완료할 수 없습니다. 몇 분 후에 다시 시도해 주세요."
+
+#: src/view/screens/NotFound.tsx:48
+msgid "We're sorry! We can't find the page you were looking for."
+msgstr "죄송합니다! 페이지를 찾을 수 없습니다."
+
+#: src/view/com/auth/onboarding/WelcomeMobile.tsx:46
+msgid "Welcome to <0>Bluesky0>"
+msgstr "<0>Bluesky0>에 오신 것을 환영합니다"
+
+#: src/view/com/modals/report/Modal.tsx:172
+msgid "What is the issue with this {collectionName}?"
+msgstr "이 {collectionName}에 어떤 문제가 있습니까?"
+
+#: src/view/com/auth/SplashScreen.tsx:34
+#: src/view/com/composer/Composer.tsx:275
+msgid "What's up?"
+msgstr "무슨 일이 일어나고 있나요?"
+
+#: src/view/com/modals/lang-settings/PostLanguagesSettings.tsx:78
+msgid "Which languages are used in this post?"
+msgstr "이 게시물에는 어떤 언어가 사용됩니까?"
+
+#: src/view/com/modals/lang-settings/ContentLanguagesSettings.tsx:77
+msgid "Which languages would you like to see in your algorithmic feeds?"
+msgstr "알고리즘 피드에 어떤 언어를 표시하시겠습니까?"
+
+#: src/view/com/composer/threadgate/ThreadgateBtn.tsx:47
+#: src/view/com/modals/Threadgate.tsx:66
+msgid "Who can reply"
+msgstr "답글을 달 수 있는 사람"
+
+#: src/view/com/threadgate/WhoCanReply.tsx:79
+#~ msgid "Who can reply?"
+#~ msgstr "답글을 달 수 있는 사람"
+
+#: src/view/com/modals/crop-image/CropImage.web.tsx:102
+msgid "Wide"
+msgstr "가로"
+
+#: src/view/com/composer/Composer.tsx:420
+msgid "Write post"
+msgstr "게시물 작성"
+
+#: src/view/com/composer/Composer.tsx:274
+#: src/view/com/composer/Prompt.tsx:33
+msgid "Write your reply"
+msgstr "답글 작성하기"
+
+#: src/view/screens/PreferencesHomeFeed.tsx:129
+#: src/view/screens/PreferencesHomeFeed.tsx:201
+#: src/view/screens/PreferencesHomeFeed.tsx:236
+#: src/view/screens/PreferencesHomeFeed.tsx:271
+#: src/view/screens/PreferencesThreads.tsx:106
+#: src/view/screens/PreferencesThreads.tsx:129
+msgid "Yes"
+msgstr "예"
+
+#: src/view/com/posts/FollowingEmptyState.tsx:67
+#: src/view/com/posts/FollowingEndOfFeed.tsx:68
+msgid "You can also discover new Custom Feeds to follow."
+msgstr "팔로우할 새로운 맞춤 피드를 찾을 수도 있습니다."
+
+#: src/view/com/auth/create/Step1.tsx:106
+msgid "You can change hosting providers at any time."
+msgstr "언제든지 호스팅 제공자를 변경할 수 있습니다."
+
+#: src/view/com/auth/login/Login.tsx:158
+#: src/view/com/auth/login/PasswordUpdatedForm.tsx:31
+msgid "You can now sign in with your new password."
+msgstr "이제 새 비밀번호로 로그인할 수 있습니다."
+
+#: src/view/com/modals/InviteCodes.tsx:66
+msgid "You don't have any invite codes yet! We'll send you some when you've been on Bluesky for a little longer."
+msgstr "아직 초대 코드가 없습니다! Bluesky를 좀 더 오래 사용하신 후에 보내드리겠습니다."
+
+#: src/view/screens/SavedFeeds.tsx:102
+msgid "You don't have any pinned feeds."
+msgstr "고정된 피드가 없습니다."
+
+#: src/view/screens/Feeds.tsx:383
+msgid "You don't have any saved feeds!"
+msgstr "저장된 피드가 없습니다!"
+
+#: src/view/screens/SavedFeeds.tsx:135
+msgid "You don't have any saved feeds."
+msgstr "저장된 피드가 없습니다."
+
+#: src/view/com/post-thread/PostThread.tsx:381
+msgid "You have blocked the author or you have been blocked by the author."
+msgstr "작성자를 차단했거나 작성자가 나를 차단한 경우입니다."
+
+#: src/view/com/feeds/ProfileFeedgens.tsx:134
+msgid "You have no feeds."
+msgstr "피드가 없습니다."
+
+#: src/view/com/lists/MyLists.tsx:89
+#: src/view/com/lists/ProfileLists.tsx:138
+msgid "You have no lists."
+msgstr "리스트가 없습니다."
+
+#: src/view/screens/ModerationBlockedAccounts.tsx:132
+msgid "You have not blocked any accounts yet. To block an account, go to their profile and selected \"Block account\" from the menu on their account."
+msgstr "아직 어떤 계정도 차단하지 않았습니다. 계정을 차단하려면 해당 계정의 프로필로 이동하여 계정 메뉴에서 \"계정 차단\"을 선택하세요."
+
+#: src/view/screens/AppPasswords.tsx:87
+msgid "You have not created any app passwords yet. You can create one by pressing the button below."
+msgstr "아직 앱 비밀번호를 생성하지 않았습니다. 아래 버튼을 눌러 생성할 수 있습니다."
+
+#: src/view/screens/ModerationMutedAccounts.tsx:131
+msgid "You have not muted any accounts yet. To mute an account, go to their profile and selected \"Mute account\" from the menu on their account."
+msgstr "아직 어떤 계정도 뮤트하지 않았습니다. 계정을 뮤트하려면 해당 계정의 프로필로 이동하여 계정 메뉴에서 \"계정 뮤트\"를 선택하세요."
+
+#: src/view/com/modals/ContentFilteringSettings.tsx:166
+msgid "You must be 18 or older to enable adult content."
+msgstr "성인 콘텐츠를 활성화하려면 18세 이상이어야 합니다."
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:88
+msgid "You will no longer receive notifications for this thread"
+msgstr "이 스레드에 대한 알림을 더 이상 받지 않습니다."
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:91
+msgid "You will now receive notifications for this thread"
+msgstr "이제 이 스레드에 대한 알림을 받습니다."
+
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:81
+msgid "You will receive an email with a \"reset code.\" Enter that code here, then enter your new password."
+msgstr "\"재설정 코드\"가 포함된 이메일을 받게 되면 여기에 해당 코드를 입력한 다음 새 비밀번호를 입력합니다."
+
+#: src/view/com/posts/FollowingEndOfFeed.tsx:48
+msgid "You've reached the end of your feed! Find some more accounts to follow."
+msgstr "피드 끝에 도달했습니다! 팔로우할 계정을 더 찾아보세요."
+
+#: src/view/com/composer/Composer.tsx:264
+msgid "Your {0} has been published"
+msgstr "내 {0}(을)를 게시했습니다."
+
+#: src/view/com/auth/create/Step2.tsx:58
+msgid "Your account"
+msgstr "내 계정"
+
+#: src/view/com/modals/DeleteAccount.tsx:65
+msgid "Your account has been deleted"
+msgstr "계정을 삭제했습니다."
+
+#: src/view/com/auth/create/Step2.tsx:146
+msgid "Your birth date"
+msgstr "생년월일"
+
+#: src/view/com/auth/create/state.ts:102
+msgid "Your email appears to be invalid."
+msgstr "이메일이 잘못된 것 같습니다."
+
+#: src/view/com/modals/Waitlist.tsx:107
+msgid "Your email has been saved! We'll be in touch soon."
+msgstr "이메일이 저장되었습니다! 가까운 시일 내에 연락드리겠습니다."
+
+#: src/view/com/modals/ChangeEmail.tsx:125
+msgid "Your email has been updated but not verified. As a next step, please verify your new email."
+msgstr "이메일이 변경되었지만 인증되지 않았습니다. 다음 단계로 새 이메일을 인증해 주세요."
+
+#: src/view/com/modals/VerifyEmail.tsx:110
+msgid "Your email has not yet been verified. This is an important security step which we recommend."
+msgstr "이메일이 아직 인증되지 않았습니다. 이는 중요한 보안 단계이므로 권장하는 사항입니다."
+
+#: src/view/com/posts/FollowingEmptyState.tsx:47
+msgid "Your following feed is empty! Follow more users to see what's happening."
+msgstr "팔로우 중인 피드가 비어 있습니다! 더 많은 사용자를 팔로우하여 무슨 일이 일어나고 있는지 확인하세요."
+
+#: src/view/com/auth/create/Step3.tsx:42
+#: src/view/com/modals/ChangeHandle.tsx:270
+msgid "Your full handle will be"
+msgstr "내 전체 핸들:"
+
+#: src/view/com/auth/create/Step1.tsx:53
+msgid "Your hosting provider"
+msgstr "호스팅 제공자"
+
+#: src/view/screens/Settings.tsx:403
+#: src/view/shell/desktop/RightNav.tsx:137
+#: src/view/shell/Drawer.tsx:655
+msgid "Your invite codes are hidden when logged in using an App Password"
+msgstr "앱 비밀번호를 사용하여 로그인하면 초대 코드가 숨겨집니다"
+
+#: src/view/com/auth/onboarding/WelcomeDesktop.tsx:61
+#: src/view/com/auth/onboarding/WelcomeMobile.tsx:59
+msgid "Your posts, likes, and blocks are public. Mutes are private."
+msgstr "내 게시물, 좋아요, 차단 목록은 공개됩니다. 뮤트 목록은 공개되지 않습니다."
+
+#: src/view/com/modals/SwitchAccount.tsx:82
+msgid "Your profile"
+msgstr "내 프로필"
+
+#: src/view/screens/Moderation.tsx:205
+#~ msgid "Your profile and account will not be visible to anyone visiting the Bluesky app without an account, or to account holders who are not logged in. Enabling this will not make your profile private."
+#~ msgstr "내 프로필과 계정은 계정 없이 Bluesky 앱을 방문하는 사람이나 로그인하지 않은 계정에게 표시되지 않습니다. 이 기능을 활성화해도 내 프로필이 비공개로 전환되지는 않습니다."
+
+#: src/view/screens/Moderation.tsx:220
+#~ msgid "Your profile and content will not be visible to anyone visiting the Bluesky app without an account. Enabling this will not make your profile private."
+#~ msgstr "내 프로필과 콘텐츠는 계정 없이 Bluesky 앱을 방문하는 사람에게 표시되지 않습니다. 이 기능을 활성화해도 내 프로필이 비공개로 전환되지는 않습니다."
+
+#: src/view/screens/Moderation.tsx:220
+#~ msgid "Your profile and posts will not be visible to people visiting the Bluesky app or website without having an account and being logged in."
+#~ msgstr "계정이 없거나 로그인하지 않은 상태에서 Bluesky 앱이나 웹사이트를 방문하는 사람들에게는 내 프로필과 게시물이 표시되지 않습니다."
+
+#: src/view/com/auth/create/Step3.tsx:28
+msgid "Your user handle"
+msgstr "내 사용자 핸들"
diff --git a/src/locale/locales/pt-BR/messages.po b/src/locale/locales/pt-BR/messages.po
new file mode 100644
index 0000000000..45daf1a9f5
--- /dev/null
+++ b/src/locale/locales/pt-BR/messages.po
@@ -0,0 +1,2733 @@
+msgid ""
+msgstr ""
+"POT-Creation-Date: 2023-12-22 01:56+0530\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: @lingui/cli\n"
+"Language: pt-BR\n"
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"PO-Revision-Date: 2024-01-05 17:00\n"
+"Last-Translator: Maison da Silva\n"
+"Language-Team: maisondasilva\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: src/view/screens/Profile.tsx:214
+#~ msgid "- end of feed -"
+#~ msgstr ""
+
+#: src/view/com/modals/SelfLabel.tsx:138
+#~ msgid ". This warning is only available for posts with media attached."
+#~ msgstr ""
+
+#: src/view/shell/desktop/RightNav.tsx:168
+msgid "{0, plural, one {# invite code available} other {# invite codes available}}"
+msgstr "{0, plural, one {# convite disponível} other {# convites disponíveis}}"
+
+#: src/view/com/modals/Repost.tsx:44
+msgid "{0}"
+msgstr "{0}"
+
+#: src/view/com/modals/CreateOrEditList.tsx:176
+msgid "{0} {purposeLabel} List"
+msgstr "Lista {0} {purposeLabel}"
+
+#: src/view/shell/desktop/RightNav.tsx:151
+msgid "{invitesAvailable, plural, one {Invite codes: # available} other {Invite codes: # available}}"
+msgstr "{invitesAvailable, plural, one {Códigos de convite: # disponível} other {Códigos de convite: # disponíveis}}"
+
+#: src/view/screens/Settings.tsx:407
+#: src/view/shell/Drawer.tsx:659
+msgid "{invitesAvailable} invite code available"
+msgstr "Código de convite {invitesAvailable} disponível"
+
+#: src/view/screens/Settings.tsx:409
+#: src/view/shell/Drawer.tsx:661
+msgid "{invitesAvailable} invite codes available"
+msgstr "Códigos de convite {invitesAvailable} disponíveis"
+
+#: src/view/screens/Search/Search.tsx:87
+msgid "{message}"
+msgstr "{message}"
+
+#: src/view/com/threadgate/WhoCanReply.tsx:158
+msgid "<0/> members"
+msgstr "<0/> membros"
+
+#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:30
+msgid "<0>Choose your0><1>Recommended1><2>Feeds2>"
+msgstr "<0>Escolha seu0><1>Recomendado1><2>Feeds2>"
+
+#: src/view/com/auth/onboarding/RecommendedFollows.tsx:37
+msgid "<0>Follow some0><1>Recommended1><2>Users2>"
+msgstr "<0>Seguir alguns0><1>Recomendado1><2>Usuários2>"
+
+#: src/view/com/modals/AddAppPasswords.tsx:132
+#~ msgid "<0>Here is your app password.0> Use this to sign into the other app along with your handle."
+#~ msgstr ""
+
+#: src/view/screens/Moderation.tsx:212
+#~ msgid "<0>Note: This setting may not be respected by third-party apps that display Bluesky content.0>"
+#~ msgstr ""
+
+#: src/view/screens/Moderation.tsx:212
+#~ msgid "<0>Note: Your profile and posts will remain publicly available. Third-party apps that display Bluesky content may not respect this setting.0>"
+#~ msgstr ""
+
+#: src/view/com/util/moderation/LabelInfo.tsx:45
+msgid "A content warning has been applied to this {0}."
+msgstr "Um aviso de conteúdo foi aplicado a este {0}."
+
+#: src/lib/hooks/useOTAUpdate.ts:16
+msgid "A new version of the app is available. Please update to continue using the app."
+msgstr "Uma nova versão do aplicativo está disponível. Por favor, atualize para continuar usando o aplicativo."
+
+#: src/view/com/modals/EditImage.tsx:299
+#: src/view/screens/Settings.tsx:417
+msgid "Accessibility"
+msgstr "Acessibilidade"
+
+#: src/view/com/auth/login/LoginForm.tsx:163
+#: src/view/screens/Settings.tsx:286
+msgid "Account"
+msgstr "Conta"
+
+#: src/view/com/util/AccountDropdownBtn.tsx:41
+msgid "Account options"
+msgstr "Opções da conta"
+
+#: src/view/com/modals/ListAddRemoveUsers.tsx:264
+#: src/view/com/modals/UserAddRemoveLists.tsx:193
+#: src/view/screens/ProfileList.tsx:763
+msgid "Add"
+msgstr "Adicionar"
+
+#: src/view/com/modals/SelfLabel.tsx:56
+msgid "Add a content warning"
+msgstr "Adicionar um aviso de conteúdo"
+
+#: src/view/screens/ProfileList.tsx:753
+msgid "Add a user to this list"
+msgstr "Adicionar um usuário a esta lista"
+
+#: src/view/screens/Settings.tsx:355
+#: src/view/screens/Settings.tsx:364
+msgid "Add account"
+msgstr "Adicionar conta"
+
+#: src/view/com/composer/photos/Gallery.tsx:119
+#: src/view/com/composer/photos/Gallery.tsx:180
+#: src/view/com/modals/AltImage.tsx:93
+msgid "Add alt text"
+msgstr "Adicionar texto alternativo"
+
+#: src/view/com/modals/report/InputIssueDetails.tsx:41
+#: src/view/com/modals/report/Modal.tsx:191
+msgid "Add details"
+msgstr "Adicionar detalhes"
+
+#: src/view/com/modals/report/Modal.tsx:194
+msgid "Add details to report"
+msgstr "Adicionar detalhes ao relatório"
+
+#: src/view/com/composer/Composer.tsx:447
+msgid "Add link card"
+msgstr "Adicionar cartão de link"
+
+#: src/view/com/composer/Composer.tsx:450
+msgid "Add link card:"
+msgstr "Adicionar cartão de link:"
+
+#: src/view/com/modals/ChangeHandle.tsx:415
+msgid "Add the following DNS record to your domain:"
+msgstr "Adicione o seguinte registro DNS ao seu domínio:"
+
+#: src/view/com/profile/ProfileHeader.tsx:353
+msgid "Add to Lists"
+msgstr "Adicionar às Listas"
+
+#: src/view/screens/ProfileFeed.tsx:271
+msgid "Add to my feeds"
+msgstr "Adicionar aos meus feeds"
+
+#: src/view/com/modals/ListAddRemoveUsers.tsx:191
+#: src/view/com/modals/UserAddRemoveLists.tsx:128
+msgid "Added to list"
+msgstr "Adicionado à lista"
+
+#: src/view/screens/PreferencesHomeFeed.tsx:170
+msgid "Adjust the number of likes a reply must have to be shown in your feed."
+msgstr "Ajuste o número de curtidas que uma resposta deve ser mostrada no seu feed."
+
+#: src/view/com/modals/SelfLabel.tsx:75
+msgid "Adult Content"
+msgstr "Conteúdo Adulto"
+
+#: src/view/screens/Settings.tsx:602
+msgid "Advanced"
+msgstr "Avançado"
+
+#: src/view/com/composer/photos/Gallery.tsx:130
+msgid "ALT"
+msgstr "ALT"
+
+#: src/view/com/modals/EditImage.tsx:315
+msgid "Alt text"
+msgstr "Texto alternativo"
+
+#: src/view/com/composer/photos/Gallery.tsx:209
+msgid "Alt text describes images for blind and low-vision users, and helps give context to everyone."
+msgstr "O texto alternativo descreve imagens para usuários cegos e com baixa visão e ajuda a dar contexto a todos."
+
+#: src/view/com/modals/VerifyEmail.tsx:118
+msgid "An email has been sent to {0}. It includes a confirmation code which you can enter below."
+msgstr "Um email foi enviado para {0}. Ele inclui um código de confirmação que você pode inserir abaixo."
+
+#: src/view/com/modals/ChangeEmail.tsx:119
+msgid "An email has been sent to your previous address, {0}. It includes a confirmation code which you can enter below."
+msgstr "Um email foi enviado para seu endereço anterior, {0}. Ele inclui um código de confirmação que você pode inserir abaixo."
+
+#: src/view/com/notifications/FeedItem.tsx:237
+#: src/view/com/threadgate/WhoCanReply.tsx:178
+msgid "and"
+msgstr "e"
+
+#: src/view/screens/LanguageSettings.tsx:95
+msgid "App Language"
+msgstr "Idioma do aplicativo"
+
+#: src/view/screens/Settings.tsx:622
+msgid "App passwords"
+msgstr "Senhas de aplicativos"
+
+#: src/view/screens/AppPasswords.tsx:186
+msgid "App Passwords"
+msgstr "Senhas de Aplicativos"
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:236
+msgid "Appeal content warning"
+msgstr "Aviso de conteúdo de apelação"
+
+#: src/view/com/modals/AppealLabel.tsx:65
+msgid "Appeal Content Warning"
+msgstr "Aviso de Conteúdo de Apelação"
+
+#: src/view/com/modals/AppealLabel.tsx:65
+#~ msgid "Appeal Decision"
+#~ msgstr ""
+
+#: src/view/com/util/moderation/LabelInfo.tsx:52
+msgid "Appeal this decision"
+msgstr "Apelar a esta decisão"
+
+#: src/view/com/util/moderation/LabelInfo.tsx:56
+msgid "Appeal this decision."
+msgstr "Apelar a esta decisão."
+
+#: src/view/screens/Settings.tsx:432
+msgid "Appearance"
+msgstr "Aparência"
+
+#: src/view/screens/Moderation.tsx:206
+#~ msgid "Apps that respect this setting, including the official Bluesky app and bsky.app website, won't show your content to logged out users."
+#~ msgstr ""
+
+#: src/view/screens/AppPasswords.tsx:223
+msgid "Are you sure you want to delete the app password \"{name}\"?"
+msgstr "Tem certeza de que deseja excluir a senha do aplicativo \"{name}\"?"
+
+#: src/view/com/composer/Composer.tsx:143
+msgid "Are you sure you'd like to discard this draft?"
+msgstr "Tem certeza que deseja descartar este rascunho?"
+
+#: src/view/screens/ProfileList.tsx:353
+msgid "Are you sure?"
+msgstr "Tem certeza?"
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:219
+msgid "Are you sure? This cannot be undone."
+msgstr "Tem certeza? Esta ação não poderá ser desfeita."
+
+#: src/view/com/modals/SelfLabel.tsx:123
+msgid "Artistic or non-erotic nudity."
+msgstr "Nudez artística ou não erótica."
+
+#: src/view/screens/Moderation.tsx:189
+#~ msgid "Ask apps to limit the visibility of my account"
+#~ msgstr ""
+
+#: src/view/com/auth/create/CreateAccount.tsx:141
+#: src/view/com/auth/login/ChooseAccountForm.tsx:151
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:166
+#: src/view/com/auth/login/LoginForm.tsx:254
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:148
+#: src/view/com/modals/report/InputIssueDetails.tsx:46
+#: src/view/com/post-thread/PostThread.tsx:388
+#: src/view/com/post-thread/PostThread.tsx:438
+#: src/view/com/post-thread/PostThread.tsx:446
+#: src/view/com/profile/ProfileHeader.tsx:672
+msgid "Back"
+msgstr "Voltar"
+
+#: src/view/screens/Settings.tsx:461
+msgid "Basics"
+msgstr "Básicos"
+
+#: src/view/com/auth/create/Step2.tsx:156
+#: src/view/com/modals/BirthDateSettings.tsx:73
+msgid "Birthday"
+msgstr "Aniversário"
+
+#: src/view/screens/Settings.tsx:312
+msgid "Birthday:"
+msgstr "Aniversário:"
+
+#: src/view/com/profile/ProfileHeader.tsx:282
+#: src/view/com/profile/ProfileHeader.tsx:389
+msgid "Block Account"
+msgstr "Bloquear Conta"
+
+#: src/view/screens/ProfileList.tsx:523
+msgid "Block accounts"
+msgstr "Bloquear contas"
+
+#: src/view/screens/ProfileList.tsx:473
+msgid "Block list"
+msgstr "Lista de bloqueio"
+
+#: src/view/screens/ProfileList.tsx:308
+msgid "Block these accounts?"
+msgstr "Bloquear esta conta?"
+
+#: src/view/screens/Moderation.tsx:123
+msgid "Blocked accounts"
+msgstr "Contas bloqueadas"
+
+#: src/view/screens/ModerationBlockedAccounts.tsx:107
+msgid "Blocked Accounts"
+msgstr "Contas Bloqueadas"
+
+#: src/view/com/profile/ProfileHeader.tsx:284
+msgid "Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you."
+msgstr "Contas bloqueadas não podem responder em seus tópicos, mencioná-lo ou interagir com você."
+
+#: src/view/screens/ModerationBlockedAccounts.tsx:115
+msgid "Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you. You will not see their content and they will be prevented from seeing yours."
+msgstr "Contas bloqueadas não podem responder em seus tópicos, mencioná-lo ou interagir com você. Você não verá o seu conteúdo e eles serão impedidos de ver o seu."
+
+#: src/view/com/post-thread/PostThread.tsx:250
+msgid "Blocked post."
+msgstr "Post bloqueado."
+
+#: src/view/screens/ProfileList.tsx:310
+msgid "Blocking is public. Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you."
+msgstr "Bloquear é público. Contas bloqueadas não podem responder em seus tópicos, mencioná-lo ou interagir com você."
+
+#: src/view/com/auth/HomeLoggedOutCTA.tsx:93
+msgid "Blog"
+msgstr "Blog"
+
+#: src/view/com/auth/HomeLoggedOutCTA.tsx:31
+msgid "Bluesky"
+msgstr "Bluesky"
+
+#: src/view/com/auth/onboarding/WelcomeMobile.tsx:80
+msgid "Bluesky is flexible."
+msgstr "Bluesky é flexível."
+
+#: src/view/com/auth/onboarding/WelcomeMobile.tsx:69
+msgid "Bluesky is open."
+msgstr "Bluesky está aberto."
+
+#: src/view/com/auth/onboarding/WelcomeMobile.tsx:56
+msgid "Bluesky is public."
+msgstr "Bluesky é público."
+
+#: src/view/com/modals/Waitlist.tsx:70
+msgid "Bluesky uses invites to build a healthier community. If you don't know anybody with an invite, you can sign up for the waitlist and we'll send one soon."
+msgstr "O Bluesky usa convites para criar uma comunidade mais saudável. Se você não conhece ninguém com um convite, você pode se inscrever na lista de espera e nós enviaremos um em breve."
+
+#: src/view/screens/Moderation.tsx:225
+msgid "Bluesky will not show your profile and posts to logged-out users. Other apps may not honor this request. This does not make your account private."
+msgstr "O Bluesky não mostrará seu perfil e publicações para usuários desconectados. Outros aplicativos não podem honrar esta solicitação. Isso não torna a sua conta privada."
+
+#: src/view/com/modals/ServerInput.tsx:78
+msgid "Bluesky.Social"
+msgstr "Bluesky.Social"
+
+#: src/view/screens/Settings.tsx:751
+msgid "Build version {0} {1}"
+msgstr "Versão da compilação {0} {1}"
+
+#: src/view/com/auth/HomeLoggedOutCTA.tsx:87
+msgid "Business"
+msgstr "Negócios"
+
+#: src/view/com/composer/photos/OpenCameraBtn.tsx:60
+#: src/view/com/util/UserAvatar.tsx:221
+#: src/view/com/util/UserBanner.tsx:38
+msgid "Camera"
+msgstr "Câmera"
+
+#: src/view/com/modals/AddAppPasswords.tsx:214
+msgid "Can only contain letters, numbers, spaces, dashes, and underscores. Must be at least 4 characters long, but no more than 32 characters long."
+msgstr "Só pode conter letras, números, espaços, traços e sublinhados. Deve ter pelo menos 4 caracteres, mas não mais de 32 caracteres."
+
+#: src/view/com/composer/Composer.tsx:294
+#: src/view/com/composer/Composer.tsx:297
+#: src/view/com/modals/ChangeEmail.tsx:218
+#: src/view/com/modals/ChangeEmail.tsx:220
+#: src/view/com/modals/Confirm.tsx:88
+#: src/view/com/modals/CreateOrEditList.tsx:267
+#: src/view/com/modals/CreateOrEditList.tsx:272
+#: src/view/com/modals/DeleteAccount.tsx:150
+#: src/view/com/modals/DeleteAccount.tsx:223
+#: src/view/com/modals/EditImage.tsx:323
+#: src/view/com/modals/EditProfile.tsx:248
+#: src/view/com/modals/LinkWarning.tsx:85
+#: src/view/com/modals/Repost.tsx:73
+#: src/view/com/modals/Waitlist.tsx:136
+#: src/view/screens/Search/Search.tsx:601
+#: src/view/shell/desktop/Search.tsx:182
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: src/view/com/modals/DeleteAccount.tsx:146
+#: src/view/com/modals/DeleteAccount.tsx:219
+msgid "Cancel account deletion"
+msgstr "Cancelar exclusão da conta"
+
+#: src/view/com/modals/AltImage.tsx:123
+#~ msgid "Cancel add image alt text"
+#~ msgstr "Cancelar adição de texto alternativo da imagem"
+
+#: src/view/com/modals/ChangeHandle.tsx:149
+msgid "Cancel change handle"
+msgstr "Cancelar alteração de identificador"
+
+#: src/view/com/modals/crop-image/CropImage.web.tsx:134
+msgid "Cancel image crop"
+msgstr "Cancelar corte da imagem"
+
+#: src/view/com/modals/EditProfile.tsx:243
+msgid "Cancel profile editing"
+msgstr "Cancelar edição do perfil"
+
+#: src/view/com/modals/Repost.tsx:64
+msgid "Cancel quote post"
+msgstr "Cancelar citação de um post"
+
+#: src/view/com/modals/ListAddRemoveUsers.tsx:87
+#: src/view/shell/desktop/Search.tsx:178
+msgid "Cancel search"
+msgstr "Cancelar busca"
+
+#: src/view/com/modals/Waitlist.tsx:132
+msgid "Cancel waitlist signup"
+msgstr "Cancelar inscrição na lista de espera"
+
+#: src/view/screens/Settings.tsx:306
+msgid "Change"
+msgstr "Alterar"
+
+#: src/view/screens/Settings.tsx:634
+#: src/view/screens/Settings.tsx:643
+msgid "Change handle"
+msgstr "Alterar Identificador"
+
+#: src/view/com/modals/ChangeHandle.tsx:161
+msgid "Change Handle"
+msgstr "Alterar Identificador"
+
+#: src/view/com/modals/VerifyEmail.tsx:141
+msgid "Change my email"
+msgstr "Alterar meu email"
+
+#: src/view/com/modals/ChangeEmail.tsx:109
+msgid "Change Your Email"
+msgstr "Altere o Seu Email"
+
+#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:121
+msgid "Check out some recommended feeds. Tap + to add them to your list of pinned feeds."
+msgstr "Confira alguns feeds recomendados. Toque em + para adicioná-los a sua lista de feeds fixados."
+
+#: src/view/com/auth/onboarding/RecommendedFollows.tsx:185
+msgid "Check out some recommended users. Follow them to see similar users."
+msgstr "Confira alguns usuários recomendados. Siga-os para ver usuários semelhantes."
+
+#: src/view/com/modals/DeleteAccount.tsx:163
+msgid "Check your inbox for an email with the confirmation code to enter below:"
+msgstr "Verifique sua caixa de entrada para um email com o código de confirmação abaixo:"
+
+#: src/view/com/modals/Threadgate.tsx:72
+msgid "Choose \"Everybody\" or \"Nobody\""
+msgstr "Escolha \"Everybody\" ou \"Nobody\""
+
+#: src/view/com/modals/ServerInput.tsx:38
+msgid "Choose Service"
+msgstr "Escolher o Serviço"
+
+#: src/view/com/auth/onboarding/WelcomeMobile.tsx:83
+msgid "Choose the algorithms that power your experience with custom feeds."
+msgstr "Escolha os algoritmos que alimentam a sua experiência com feeds personalizados."
+
+#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:65
+#~ msgid "Choose your"
+#~ msgstr ""
+
+#: src/view/com/auth/create/Step2.tsx:127
+msgid "Choose your password"
+msgstr "Escolha sua senha"
+
+#: src/view/screens/Settings.tsx:727
+msgid "Clear all legacy storage data"
+msgstr "Limpar todos os dados de armazenamento legados"
+
+#: src/view/screens/Settings.tsx:729
+msgid "Clear all legacy storage data (restart after this)"
+msgstr "Limpar todos os dados de armazenamento legados (reinicie após isso)"
+
+#: src/view/screens/Settings.tsx:739
+msgid "Clear all storage data"
+msgstr "Limpar todos os dados de armazenamento"
+
+#: src/view/screens/Settings.tsx:741
+msgid "Clear all storage data (restart after this)"
+msgstr "Limpar todos os dados de armazenamento (reiniciar após isso)"
+
+#: src/view/com/util/forms/SearchInput.tsx:74
+#: src/view/screens/Search/Search.tsx:582
+msgid "Clear search query"
+msgstr "Limpar consulta de busca"
+
+#: src/view/com/auth/login/PasswordUpdatedForm.tsx:38
+msgid "Close alert"
+msgstr "Fechar alerta"
+
+#: src/view/com/util/BottomSheetCustomBackdrop.tsx:33
+msgid "Close bottom drawer"
+msgstr "Fechar gaveta inferior"
+
+#: src/view/com/lightbox/ImageViewing/components/ImageDefaultHeader.tsx:26
+msgid "Close image"
+msgstr "Fechar imagem"
+
+#: src/view/com/lightbox/Lightbox.web.tsx:112
+msgid "Close image viewer"
+msgstr "Fechar visualizador de imagens"
+
+#: src/view/shell/index.web.tsx:49
+msgid "Close navigation footer"
+msgstr "Feche o painel de navegação"
+
+#: src/view/screens/CommunityGuidelines.tsx:32
+msgid "Community Guidelines"
+msgstr "Diretrizes da Comunidade"
+
+#: src/view/com/composer/Prompt.tsx:24
+msgid "Compose reply"
+msgstr "Escrever resposta"
+
+#: src/view/com/modals/AppealLabel.tsx:98
+#: src/view/com/modals/Confirm.tsx:75
+#: src/view/com/modals/SelfLabel.tsx:154
+#: src/view/com/modals/VerifyEmail.tsx:225
+#: src/view/screens/PreferencesHomeFeed.tsx:305
+#: src/view/screens/PreferencesThreads.tsx:159
+msgid "Confirm"
+msgstr "Confirme"
+
+#: src/view/com/modals/ChangeEmail.tsx:193
+#: src/view/com/modals/ChangeEmail.tsx:195
+msgid "Confirm Change"
+msgstr "Confirmar Alterações"
+
+#: src/view/com/modals/lang-settings/ConfirmLanguagesButton.tsx:34
+msgid "Confirm content language settings"
+msgstr "Confirmar configurações de idioma de conteúdo"
+
+#: src/view/com/modals/DeleteAccount.tsx:209
+msgid "Confirm delete account"
+msgstr "Confirmar a exclusão da conta"
+
+#: src/view/com/modals/ChangeEmail.tsx:157
+#: src/view/com/modals/DeleteAccount.tsx:176
+#: src/view/com/modals/VerifyEmail.tsx:159
+msgid "Confirmation code"
+msgstr "Código de confirmação"
+
+#: src/view/com/auth/create/CreateAccount.tsx:174
+#: src/view/com/auth/login/LoginForm.tsx:273
+msgid "Connecting..."
+msgstr "Conectando..."
+
+#: src/view/screens/Moderation.tsx:81
+msgid "Content filtering"
+msgstr "Filtragem de conteúdo"
+
+#: src/view/com/modals/ContentFilteringSettings.tsx:44
+msgid "Content Filtering"
+msgstr "Filtragem de Conteúdo"
+
+#: src/view/com/modals/lang-settings/ContentLanguagesSettings.tsx:74
+#: src/view/screens/LanguageSettings.tsx:278
+msgid "Content Languages"
+msgstr "Idiomas de Conteúdo"
+
+#: src/view/com/util/moderation/ScreenHider.tsx:78
+msgid "Content Warning"
+msgstr "Aviso de Conteúdo"
+
+#: src/view/com/composer/labels/LabelsBtn.tsx:31
+msgid "Content warnings"
+msgstr "Avisos de conteúdo"
+
+#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:148
+#: src/view/com/auth/onboarding/RecommendedFollows.tsx:209
+msgid "Continue"
+msgstr "Continuar"
+
+#: src/view/com/modals/AddAppPasswords.tsx:193
+#: src/view/com/modals/InviteCodes.tsx:179
+msgid "Copied"
+msgstr "Copiado"
+
+#: src/view/com/modals/AddAppPasswords.tsx:186
+msgid "Copy"
+msgstr "Copiar"
+
+#: src/view/screens/ProfileList.tsx:385
+msgid "Copy link to list"
+msgstr "Copiar link da lista"
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:139
+msgid "Copy link to post"
+msgstr "Copiar link para postar"
+
+#: src/view/com/profile/ProfileHeader.tsx:338
+msgid "Copy link to profile"
+msgstr "Copiar link do perfil"
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:125
+msgid "Copy post text"
+msgstr "Copiar texto da postagem"
+
+#: src/view/screens/CopyrightPolicy.tsx:29
+msgid "Copyright Policy"
+msgstr "Política de Direitos Autorais"
+
+#: src/view/screens/ProfileFeed.tsx:95
+msgid "Could not load feed"
+msgstr "Não foi possível carregar o feed"
+
+#: src/view/screens/ProfileList.tsx:839
+msgid "Could not load list"
+msgstr "Não foi possível carregar a lista"
+
+#: src/view/com/auth/HomeLoggedOutCTA.tsx:62
+#: src/view/com/auth/SplashScreen.tsx:46
+msgid "Create a new account"
+msgstr "Criar uma nova conta"
+
+#: src/view/com/auth/create/CreateAccount.tsx:121
+msgid "Create Account"
+msgstr "Criar Conta"
+
+#: src/view/com/auth/HomeLoggedOutCTA.tsx:54
+#: src/view/com/auth/SplashScreen.tsx:43
+msgid "Create new account"
+msgstr "Criar uma nova conta"
+
+#: src/view/screens/AppPasswords.tsx:248
+msgid "Created {0}"
+msgstr "Criado {0}"
+
+#: src/view/com/modals/ChangeHandle.tsx:387
+#: src/view/com/modals/ServerInput.tsx:102
+msgid "Custom domain"
+msgstr "Domínio personalizado"
+
+#: src/view/screens/PreferencesExternalEmbeds.tsx:55
+msgid "Customize media from external sites."
+msgstr "Personalize a mídia de sites externos."
+
+#: src/view/screens/Settings.tsx:648
+msgid "Danger Zone"
+msgstr "Zona de Perigo"
+
+#: src/view/screens/Settings.tsx:411
+#~ msgid "Dark"
+#~ msgstr ""
+
+#: src/view/screens/Settings.tsx:655
+msgid "Delete account"
+msgstr "Excluir a conta"
+
+#: src/view/com/modals/DeleteAccount.tsx:83
+msgid "Delete Account"
+msgstr "Excluir a Conta"
+
+#: src/view/screens/AppPasswords.tsx:221
+#: src/view/screens/AppPasswords.tsx:241
+msgid "Delete app password"
+msgstr "Excluir senha do aplicativo"
+
+#: src/view/screens/ProfileList.tsx:352
+#: src/view/screens/ProfileList.tsx:412
+msgid "Delete List"
+msgstr "Excluir Lista"
+
+#: src/view/com/modals/DeleteAccount.tsx:212
+msgid "Delete my account"
+msgstr "Excluir minha conta"
+
+#: src/view/screens/Settings.tsx:665
+msgid "Delete my account…"
+msgstr "Excluir minha conta…"
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:214
+msgid "Delete post"
+msgstr "Excluir post"
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:218
+msgid "Delete this post?"
+msgstr "Excluir este post?"
+
+#: src/view/com/post-thread/PostThread.tsx:242
+msgid "Deleted post."
+msgstr "Post excluído."
+
+#: src/view/com/modals/CreateOrEditList.tsx:218
+#: src/view/com/modals/CreateOrEditList.tsx:234
+#: src/view/com/modals/EditProfile.tsx:197
+#: src/view/com/modals/EditProfile.tsx:209
+msgid "Description"
+msgstr "Descrição"
+
+#: src/view/com/auth/create/Step1.tsx:96
+msgid "Dev Server"
+msgstr "Servidor de Desenvolvimento"
+
+#: src/view/screens/Settings.tsx:670
+msgid "Developer Tools"
+msgstr "Ferramentas do Desenvolvedor"
+
+#: src/view/com/composer/Composer.tsx:211
+msgid "Did you want to say anything?"
+msgstr "Você gostaria de dizer alguma coisa?"
+
+#: src/view/com/composer/Composer.tsx:144
+msgid "Discard"
+msgstr "Descartar"
+
+#: src/view/com/composer/Composer.tsx:138
+msgid "Discard draft"
+msgstr "Descartar rascunho"
+
+#: src/view/screens/Moderation.tsx:207
+msgid "Discourage apps from showing my account to logged-out users"
+msgstr "Desencorajar aplicativos de mostrar minha conta para usuários desconectados"
+
+#: src/view/screens/Feeds.tsx:405
+msgid "Discover new feeds"
+msgstr "Descubra novos feeds"
+
+#: src/view/com/modals/EditProfile.tsx:191
+msgid "Display name"
+msgstr "Nome de exibição"
+
+#: src/view/com/modals/EditProfile.tsx:179
+msgid "Display Name"
+msgstr "Nome de Exibição"
+
+#: src/view/com/modals/ChangeHandle.tsx:485
+msgid "Domain verified!"
+msgstr "Domínio verificado!"
+
+#: src/view/com/auth/onboarding/RecommendedFollows.tsx:86
+#: src/view/com/modals/AltImage.tsx:115
+#: src/view/com/modals/ContentFilteringSettings.tsx:88
+#: src/view/com/modals/ContentFilteringSettings.tsx:96
+#: src/view/com/modals/crop-image/CropImage.web.tsx:152
+#: src/view/com/modals/EditImage.tsx:333
+#: src/view/com/modals/ListAddRemoveUsers.tsx:142
+#: src/view/com/modals/SelfLabel.tsx:157
+#: src/view/com/modals/Threadgate.tsx:129
+#: src/view/com/modals/Threadgate.tsx:132
+#: src/view/com/modals/UserAddRemoveLists.tsx:79
+#: src/view/screens/PreferencesHomeFeed.tsx:308
+#: src/view/screens/PreferencesThreads.tsx:162
+msgid "Done"
+msgstr "Feito"
+
+#: src/view/com/modals/lang-settings/ConfirmLanguagesButton.tsx:42
+msgid "Done{extraText}"
+msgstr "Feito{extraText}"
+
+#: src/view/com/modals/InviteCodes.tsx:94
+msgid "Each code works once. You'll receive more invite codes periodically."
+msgstr "Cada código só funciona uma vez. Você receberá mais códigos de convite periodicamente."
+
+#: src/view/com/composer/photos/Gallery.tsx:144
+#: src/view/com/modals/EditImage.tsx:207
+msgid "Edit image"
+msgstr "Editar imagem"
+
+#: src/view/screens/ProfileList.tsx:400
+msgid "Edit list details"
+msgstr "Editar detalhes da lista"
+
+#: src/view/screens/Feeds.tsx:367
+#: src/view/screens/SavedFeeds.tsx:84
+msgid "Edit My Feeds"
+msgstr "Editar Meus Feeds"
+
+#: src/view/com/modals/EditProfile.tsx:151
+msgid "Edit my profile"
+msgstr "Editar meu perfil"
+
+#: src/view/com/profile/ProfileHeader.tsx:453
+msgid "Edit profile"
+msgstr "Editar perfil"
+
+#: src/view/com/profile/ProfileHeader.tsx:456
+msgid "Edit Profile"
+msgstr "Editar Perfil"
+
+#: src/view/screens/Feeds.tsx:330
+msgid "Edit Saved Feeds"
+msgstr "Editar Feeds Salvos"
+
+#: src/view/com/auth/create/Step2.tsx:108
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:148
+#: src/view/com/modals/ChangeEmail.tsx:141
+#: src/view/com/modals/Waitlist.tsx:88
+msgid "Email"
+msgstr "Email"
+
+#: src/view/com/auth/create/Step2.tsx:99
+msgid "Email address"
+msgstr "Endereço de email"
+
+#: src/view/com/modals/ChangeEmail.tsx:111
+msgid "Email Updated"
+msgstr "Email Atualizado"
+
+#: src/view/screens/Settings.tsx:290
+msgid "Email:"
+msgstr "Email:"
+
+#: src/view/com/modals/EmbedConsent.tsx:113
+msgid "Enable {0} only"
+msgstr "Ativar {0} somente"
+
+#: src/view/com/modals/EmbedConsent.tsx:97
+msgid "Enable External Media"
+msgstr "Ativar Mídia Externa"
+
+#: src/view/screens/PreferencesHomeFeed.tsx:144
+msgid "Enable this setting to only see replies between people you follow."
+msgstr "Ative esta configuração para ver apenas as respostas entre as pessoas que você segue."
+
+#: src/view/screens/Profile.tsx:426
+msgid "End of feed"
+msgstr "Fim do feed"
+
+#: src/view/com/auth/create/Step1.tsx:71
+msgid "Enter the address of your provider:"
+msgstr "Digite o endereço do seu provedor:"
+
+#: src/view/com/modals/ChangeHandle.tsx:369
+msgid "Enter the domain you want to use"
+msgstr "Digite o domínio que você deseja usar"
+
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:101
+msgid "Enter the email you used to create your account. We'll send you a \"reset code\" so you can set a new password."
+msgstr "Digite o email que você usou para criar a sua conta. Nós lhe enviaremos um \"código de redefinição\" para que você possa definir uma nova senha."
+
+#: src/view/com/auth/create/Step2.tsx:104
+msgid "Enter your email address"
+msgstr "Digite seu endereço de email"
+
+#: src/view/com/modals/ChangeEmail.tsx:117
+msgid "Enter your new email address below."
+msgstr "Digite seu novo endereço de email abaixo."
+
+#: src/view/com/auth/login/Login.tsx:99
+msgid "Enter your username and password"
+msgstr "Digite seu nome de usuário e senha"
+
+#: src/view/screens/Search/Search.tsx:105
+msgid "Error:"
+msgstr "Erro:"
+
+#: src/view/com/modals/Threadgate.tsx:76
+msgid "Everybody"
+msgstr "Todos"
+
+#: src/view/com/lightbox/Lightbox.web.tsx:156
+msgid "Expand alt text"
+msgstr "Expandir texto alternativo"
+
+#: src/view/com/modals/EmbedConsent.tsx:64
+msgid "External Media"
+msgstr "Mídia Externa"
+
+#: src/view/com/modals/EmbedConsent.tsx:75
+#: src/view/screens/PreferencesExternalEmbeds.tsx:66
+msgid "External media may allow websites to collect information about you and your device. No information is sent or requested until you press the \"play\" button."
+msgstr "A mídia externa pode permitir que os sites coletem informações sobre você e seu dispositivo. Nenhuma informação é enviada ou solicitada até que você pressione o botão \"play\"."
+
+#: src/view/screens/PreferencesExternalEmbeds.tsx:52
+#: src/view/screens/Settings.tsx:595
+msgid "External Media Preferences"
+msgstr "Preferências de Mídia Externa"
+
+#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:109
+#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:141
+msgid "Failed to load recommended feeds"
+msgstr "Falha ao carregar feeds recomendados"
+
+#: src/view/screens/Feeds.tsx:556
+msgid "Feed offline"
+msgstr "Feed offline"
+
+#: src/view/com/feeds/FeedPage.tsx:143
+msgid "Feed Preferences"
+msgstr "Preferências de Feed"
+
+#: src/view/shell/desktop/RightNav.tsx:73
+#: src/view/shell/Drawer.tsx:311
+msgid "Feedback"
+msgstr "Comentários"
+
+#: src/view/screens/Feeds.tsx:475
+#: src/view/screens/Profile.tsx:165
+#: src/view/shell/bottom-bar/BottomBar.tsx:181
+#: src/view/shell/desktop/LeftNav.tsx:342
+#: src/view/shell/Drawer.tsx:474
+#: src/view/shell/Drawer.tsx:475
+msgid "Feeds"
+msgstr "Feeds"
+
+#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:57
+msgid "Feeds are created by users to curate content. Choose some feeds that you find interesting."
+msgstr "Os feeds são criados por usuários para curadoria de conteúdo. Escolha alguns feeds que você acha interessantes."
+
+#: src/view/screens/SavedFeeds.tsx:156
+msgid "Feeds are custom algorithms that users build with a little coding expertise. <0/> for more information."
+msgstr "Os feeds são algoritmos personalizados que os usuários criam com um pouco de experiência em condificação. <0/> para mais informações."
+
+#: src/view/screens/Search/Search.tsx:427
+msgid "Find users on Bluesky"
+msgstr "Encontrar usuários no Bluesky"
+
+#: src/view/screens/Search/Search.tsx:425
+msgid "Find users with the search tool on the right"
+msgstr "Encontre usuários com a ferramenta de busca à direita"
+
+#: src/view/com/auth/onboarding/RecommendedFollowsItem.tsx:150
+msgid "Finding similar accounts..."
+msgstr "Procurando contas semelhantes..."
+
+#: src/view/screens/PreferencesHomeFeed.tsx:108
+msgid "Fine-tune the content you see on your home screen."
+msgstr "Ajuste o conteúdo que você vê na sua tela inicial."
+
+#: src/view/screens/PreferencesThreads.tsx:60
+msgid "Fine-tune the discussion threads."
+msgstr "Ajuste os tópicos de discussão."
+
+#: src/view/com/profile/ProfileHeader.tsx:538
+msgid "Follow"
+msgstr "Seguir"
+
+#: src/view/com/auth/onboarding/RecommendedFollows.tsx:42
+#~ msgid "Follow some"
+#~ msgstr ""
+
+#: src/view/com/auth/onboarding/RecommendedFollows.tsx:64
+msgid "Follow some users to get started. We can recommend you more users based on who you find interesting."
+msgstr "Seguir alguns usuários para começar. Nós podemos recomendar mais usuários com base em quem você acha interessante."
+
+#: src/view/com/modals/Threadgate.tsx:98
+msgid "Followed users"
+msgstr "Usuários seguidos"
+
+#: src/view/screens/PreferencesHomeFeed.tsx:151
+msgid "Followed users only"
+msgstr "Somente usuários seguidos"
+
+#: src/view/screens/ProfileFollowers.tsx:25
+msgid "Followers"
+msgstr "Seguidores"
+
+#: src/view/com/profile/ProfileHeader.tsx:624
+msgid "following"
+msgstr "seguindo"
+
+#: src/view/com/profile/ProfileHeader.tsx:522
+#: src/view/screens/ProfileFollows.tsx:25
+msgid "Following"
+msgstr "Seguindo"
+
+#: src/view/com/profile/ProfileHeader.tsx:571
+msgid "Follows you"
+msgstr "Segue você"
+
+#: src/view/com/modals/DeleteAccount.tsx:107
+msgid "For security reasons, we'll need to send a confirmation code to your email address."
+msgstr "Por motivos de segurança, precisamos enviar um código de confirmação para seu endereço de email."
+
+#: src/view/com/modals/AddAppPasswords.tsx:207
+msgid "For security reasons, you won't be able to view this again. If you lose this password, you'll need to generate a new one."
+msgstr "Por motivos de segurança, você não poderá ver isto novamente. Se você perder esta senha, precisará gerar uma nova."
+
+#: src/view/com/auth/login/LoginForm.tsx:236
+msgid "Forgot"
+msgstr "Esqueceu"
+
+#: src/view/com/auth/login/LoginForm.tsx:233
+msgid "Forgot password"
+msgstr "Esqueci a senha"
+
+#: src/view/com/auth/login/Login.tsx:127
+#: src/view/com/auth/login/Login.tsx:143
+msgid "Forgot Password"
+msgstr "Esqueci a Senha"
+
+#: src/view/com/composer/photos/SelectPhotoBtn.tsx:43
+msgid "Gallery"
+msgstr "Galeria"
+
+#: src/view/com/modals/VerifyEmail.tsx:183
+msgid "Get Started"
+msgstr "Vamos começar"
+
+#: src/view/com/auth/LoggedOut.tsx:81
+#: src/view/com/auth/LoggedOut.tsx:82
+#: src/view/com/util/moderation/ScreenHider.tsx:123
+#: src/view/shell/desktop/LeftNav.tsx:104
+msgid "Go back"
+msgstr "Voltar atrás"
+
+#: src/view/screens/ProfileFeed.tsx:104
+#: src/view/screens/ProfileFeed.tsx:109
+#: src/view/screens/ProfileList.tsx:848
+#: src/view/screens/ProfileList.tsx:853
+msgid "Go Back"
+msgstr "Voltar Atrás"
+
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:181
+#: src/view/com/auth/login/LoginForm.tsx:283
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:163
+msgid "Go to next"
+msgstr "Ir para o próximo"
+
+#: src/view/com/modals/ChangeHandle.tsx:265
+msgid "Handle"
+msgstr "Identificador"
+
+#: src/view/shell/desktop/RightNav.tsx:102
+#: src/view/shell/Drawer.tsx:321
+msgid "Help"
+msgstr "Ajuda"
+
+#: src/view/com/modals/AddAppPasswords.tsx:148
+msgid "Here is your app password."
+msgstr "Aqui está a sua senha do aplicativo."
+
+#: src/view/com/notifications/FeedItem.tsx:324
+#: src/view/com/util/moderation/ContentHider.tsx:103
+msgid "Hide"
+msgstr "Ocultar"
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:173
+msgid "Hide post"
+msgstr "Ocultar post"
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:177
+msgid "Hide this post?"
+msgstr "Ocultar este post?"
+
+#: src/view/com/notifications/FeedItem.tsx:316
+msgid "Hide user list"
+msgstr "Ocultar lista de usuários"
+
+#: src/view/com/posts/FeedErrorMessage.tsx:102
+#~ msgid "Hmm, some kind of issue occured when contacting the feed server. Please let the feed owner know about this issue."
+#~ msgstr ""
+
+#: src/view/com/posts/FeedErrorMessage.tsx:110
+msgid "Hmm, some kind of issue occurred when contacting the feed server. Please let the feed owner know about this issue."
+msgstr "Hmm, ocorreu algum tipo de problema ao entrar em contato com o servidor do feed. Por favor, avise o proprietário do feed sobre este problema."
+
+#: src/view/com/posts/FeedErrorMessage.tsx:98
+msgid "Hmm, the feed server appears to be misconfigured. Please let the feed owner know about this issue."
+msgstr "Hmm, o servidor de feed parece estar mal configurado. Por favor, deixe o proprietário do feed saber sobre este problema."
+
+#: src/view/com/posts/FeedErrorMessage.tsx:104
+msgid "Hmm, the feed server appears to be offline. Please let the feed owner know about this issue."
+msgstr "Hmm, o servidor de feed parece estar offline. Por favor, avise o autor do feed sobre este problema."
+
+#: src/view/com/posts/FeedErrorMessage.tsx:101
+msgid "Hmm, the feed server gave a bad response. Please let the feed owner know about this issue."
+msgstr "Hmm, o servidor de feed deu uma má resposta. Por favor, avise o autor do feed sobre este problema."
+
+#: src/view/com/posts/FeedErrorMessage.tsx:95
+msgid "Hmm, we're having trouble finding this feed. It may have been deleted."
+msgstr "Hmm, estamos com problemas para encontrar este feed. Ele pode ter sido excluído."
+
+#: src/view/com/posts/FeedErrorMessage.tsx:87
+#~ msgid "Hmmm, we're having trouble finding this feed. It may have been deleted."
+#~ msgstr ""
+
+#: src/view/shell/bottom-bar/BottomBar.tsx:137
+#: src/view/shell/desktop/LeftNav.tsx:306
+#: src/view/shell/Drawer.tsx:398
+#: src/view/shell/Drawer.tsx:399
+msgid "Home"
+msgstr "Página Inicial"
+
+#: src/view/com/pager/FeedsTabBarMobile.tsx:96
+#: src/view/screens/PreferencesHomeFeed.tsx:101
+#: src/view/screens/Settings.tsx:481
+msgid "Home Feed Preferences"
+msgstr "Preferências do Feed Inicial"
+
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:114
+msgid "Hosting provider"
+msgstr "Provedor de hospedagem"
+
+#: src/view/com/auth/create/Step1.tsx:76
+#: src/view/com/auth/create/Step1.tsx:81
+msgid "Hosting provider address"
+msgstr "Endereço do provedor de hospedagem"
+
+#: src/view/com/modals/VerifyEmail.tsx:208
+msgid "I have a code"
+msgstr "Eu tenho um código"
+
+#: src/view/com/modals/ChangeHandle.tsx:281
+msgid "I have my own domain"
+msgstr "Eu tenho meu próprio domínio"
+
+#: src/view/com/modals/SelfLabel.tsx:127
+msgid "If none are selected, suitable for all ages."
+msgstr "Se nenhum for selecionado, adequado para todas as idades."
+
+#: src/view/com/modals/AltImage.tsx:97
+msgid "Image alt text"
+msgstr "Texto alternativo da imagem"
+
+#: src/view/com/util/UserAvatar.tsx:308
+#: src/view/com/util/UserBanner.tsx:116
+msgid "Image options"
+msgstr "Opções de imagem"
+
+#: src/view/com/search/Suggestions.tsx:104
+#: src/view/com/search/Suggestions.tsx:115
+#~ msgid "In Your Network"
+#~ msgstr ""
+
+#: src/view/com/auth/login/LoginForm.tsx:115
+msgid "Invalid username or password"
+msgstr "Nome de usuário ou senha inválido"
+
+#: src/view/screens/Settings.tsx:383
+msgid "Invite"
+msgstr "Convite"
+
+#: src/view/com/modals/InviteCodes.tsx:91
+#: src/view/screens/Settings.tsx:371
+msgid "Invite a Friend"
+msgstr "Convide um Amigo"
+
+#: src/view/com/auth/create/Step2.tsx:72
+msgid "Invite code"
+msgstr "Código de convite"
+
+#: src/view/com/auth/create/state.ts:136
+msgid "Invite code not accepted. Check that you input it correctly and try again."
+msgstr "Código de convite não aceito. Verifique se você o inseriu corretamente e tente novamente."
+
+#: src/view/shell/Drawer.tsx:640
+msgid "Invite codes: {invitesAvailable} available"
+msgstr "Códigos de convite: {invitesAvailable} disponível"
+
+#: src/view/com/auth/HomeLoggedOutCTA.tsx:99
+msgid "Jobs"
+msgstr "Empregos"
+
+#: src/view/com/modals/Waitlist.tsx:67
+msgid "Join the waitlist"
+msgstr "Junte-se à lista de espera"
+
+#: src/view/com/auth/create/Step2.tsx:86
+#: src/view/com/auth/create/Step2.tsx:90
+msgid "Join the waitlist."
+msgstr "Junte-se à lista de espera."
+
+#: src/view/com/modals/Waitlist.tsx:124
+msgid "Join Waitlist"
+msgstr "Junte-se à Lista de Espera"
+
+#: src/view/com/composer/select-language/SelectLangBtn.tsx:104
+msgid "Language selection"
+msgstr "Seleção de idioma"
+
+#: src/view/screens/LanguageSettings.tsx:89
+msgid "Language Settings"
+msgstr "Configurações de Idiomas"
+
+#: src/view/screens/Settings.tsx:541
+msgid "Languages"
+msgstr "Idiomas"
+
+#: src/view/com/util/moderation/ContentHider.tsx:101
+msgid "Learn more"
+msgstr "Saiba mais"
+
+#: src/view/com/util/moderation/PostAlerts.tsx:47
+#: src/view/com/util/moderation/ProfileHeaderAlerts.tsx:65
+#: src/view/com/util/moderation/ScreenHider.tsx:104
+msgid "Learn More"
+msgstr "Saiba Mais"
+
+#: src/view/com/util/moderation/ContentHider.tsx:83
+#: src/view/com/util/moderation/PostAlerts.tsx:40
+#: src/view/com/util/moderation/PostHider.tsx:76
+#: src/view/com/util/moderation/ProfileHeaderAlerts.tsx:49
+#: src/view/com/util/moderation/ScreenHider.tsx:101
+msgid "Learn more about this warning"
+msgstr "Saiba mais sobre este aviso"
+
+#: src/view/screens/Moderation.tsx:242
+msgid "Learn more about what is public on Bluesky."
+msgstr "Saiba mais sobre o que é público no Bluesky."
+
+#: src/view/com/modals/lang-settings/ContentLanguagesSettings.tsx:82
+msgid "Leave them all unchecked to see any language."
+msgstr "Deixe todos desmarcados para ver qualquer idioma."
+
+#: src/view/com/modals/LinkWarning.tsx:49
+msgid "Leaving Bluesky"
+msgstr "Saindo do Bluesky"
+
+#: src/view/com/auth/login/Login.tsx:128
+#: src/view/com/auth/login/Login.tsx:144
+msgid "Let's get your password reset!"
+msgstr "Vamos redefinir sua senha!"
+
+#: src/view/com/util/UserAvatar.tsx:245
+#: src/view/com/util/UserBanner.tsx:60
+msgid "Library"
+msgstr "Biblioteca"
+
+#: src/view/screens/Settings.tsx:405
+#~ msgid "Light"
+#~ msgstr ""
+
+#: src/view/screens/ProfileFeed.tsx:586
+msgid "Like this feed"
+msgstr "Curtir este feed"
+
+#: src/view/screens/PostLikedBy.tsx:27
+#: src/view/screens/ProfileFeedLikedBy.tsx:27
+msgid "Liked by"
+msgstr "Curtido por"
+
+#: src/view/screens/Profile.tsx:164
+msgid "Likes"
+msgstr "Curtidas"
+
+#: src/view/screens/Moderation.tsx:203
+#~ msgid "Limit the visibility of my account"
+#~ msgstr ""
+
+#: src/view/screens/Moderation.tsx:203
+#~ msgid "Limit the visibility of my account to logged-out users"
+#~ msgstr ""
+
+#: src/view/com/modals/CreateOrEditList.tsx:186
+msgid "List Avatar"
+msgstr "Listar Avatar"
+
+#: src/view/com/modals/CreateOrEditList.tsx:199
+msgid "List Name"
+msgstr "Lista de Nomes"
+
+#: src/view/screens/Profile.tsx:166
+#: src/view/shell/desktop/LeftNav.tsx:379
+#: src/view/shell/Drawer.tsx:490
+#: src/view/shell/Drawer.tsx:491
+msgid "Lists"
+msgstr "Listas"
+
+#: src/view/com/post-thread/PostThread.tsx:259
+#: src/view/com/post-thread/PostThread.tsx:267
+msgid "Load more posts"
+msgstr "Carregar mais posts"
+
+#: src/view/screens/Notifications.tsx:148
+msgid "Load new notifications"
+msgstr "Carregar novas notificações"
+
+#: src/view/com/feeds/FeedPage.tsx:189
+msgid "Load new posts"
+msgstr "Carregar novos posts"
+
+#: src/view/com/composer/text-input/mobile/Autocomplete.tsx:95
+msgid "Loading..."
+msgstr "Carregando..."
+
+#: src/view/com/modals/ServerInput.tsx:50
+msgid "Local dev server"
+msgstr "Servidor de desenvolvimento local"
+
+#: src/view/screens/Moderation.tsx:134
+#~ msgid "Logged-out users"
+#~ msgstr ""
+
+#: src/view/screens/Moderation.tsx:136
+msgid "Logged-out visibility"
+msgstr "Visibilidade desconectada"
+
+#: src/view/com/auth/login/ChooseAccountForm.tsx:133
+msgid "Login to account that is not listed"
+msgstr "Fazer login em uma conta que não está listada"
+
+#: src/view/screens/ProfileFeed.tsx:472
+#~ msgid "Looks like this feed is only available to users with a Bluesky account. Please sign up or sign in to view this feed!"
+#~ msgstr ""
+
+#: src/view/com/modals/LinkWarning.tsx:63
+msgid "Make sure this is where you intend to go!"
+msgstr "Certifique-se de que é para lá que você pretende ir!"
+
+#: src/view/screens/Profile.tsx:163
+msgid "Media"
+msgstr "Mídia"
+
+#: src/view/com/threadgate/WhoCanReply.tsx:139
+msgid "mentioned users"
+msgstr "usuários mencionados"
+
+#: src/view/com/modals/Threadgate.tsx:93
+msgid "Mentioned users"
+msgstr "Usuários mencionados"
+
+#: src/view/screens/Search/Search.tsx:537
+msgid "Menu"
+msgstr "Menu"
+
+#: src/view/com/posts/FeedErrorMessage.tsx:194
+msgid "Message from server"
+msgstr "Mensagem do servidor"
+
+#: src/view/screens/Moderation.tsx:64
+#: src/view/screens/Settings.tsx:563
+#: src/view/shell/desktop/LeftNav.tsx:397
+#: src/view/shell/Drawer.tsx:509
+#: src/view/shell/Drawer.tsx:510
+msgid "Moderation"
+msgstr "Moderação"
+
+#: src/view/screens/Moderation.tsx:95
+msgid "Moderation lists"
+msgstr "Listas de moderação"
+
+#: src/view/screens/ModerationModlists.tsx:58
+msgid "Moderation Lists"
+msgstr "Listas de Moderação"
+
+#: src/view/shell/desktop/Feeds.tsx:53
+msgid "More feeds"
+msgstr "Mais feeds"
+
+#: src/view/com/profile/ProfileHeader.tsx:548
+#: src/view/screens/ProfileFeed.tsx:361
+#: src/view/screens/ProfileList.tsx:584
+msgid "More options"
+msgstr "Mais opções"
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:158
+#~ msgid "More post options"
+#~ msgstr ""
+
+#: src/view/screens/PreferencesThreads.tsx:82
+msgid "Most-liked replies first"
+msgstr "Respostas mais curtidas primeiro"
+
+#: src/view/com/profile/ProfileHeader.tsx:370
+msgid "Mute Account"
+msgstr "Silenciar Conta"
+
+#: src/view/screens/ProfileList.tsx:511
+msgid "Mute accounts"
+msgstr "Silenciar contas"
+
+#: src/view/screens/ProfileList.tsx:458
+msgid "Mute list"
+msgstr "Lista de silenciados"
+
+#: src/view/screens/ProfileList.tsx:271
+msgid "Mute these accounts?"
+msgstr "Silenciar essas contas?"
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:157
+msgid "Mute thread"
+msgstr "Silenciar tópico"
+
+#: src/view/screens/Moderation.tsx:109
+msgid "Muted accounts"
+msgstr "Contas silenciadas"
+
+#: src/view/screens/ModerationMutedAccounts.tsx:107
+msgid "Muted Accounts"
+msgstr "Contas Silenciadas"
+
+#: src/view/screens/ModerationMutedAccounts.tsx:115
+msgid "Muted accounts have their posts removed from your feed and from your notifications. Mutes are completely private."
+msgstr "Contas silenciadas tem seus posts removidos do seu feed e das suas notificações. Os silenciamentos são completamente privados."
+
+#: src/view/screens/ProfileList.tsx:273
+msgid "Muting is private. Muted accounts can interact with you, but you will not see their posts or receive notifications from them."
+msgstr "Silenciar é privado. Contas silenciadas podem interagir com você, mas você não verá postagens ou receber notificações delas."
+
+#: src/view/screens/Moderation.tsx:134
+#~ msgid "My Account"
+#~ msgstr ""
+
+#: src/view/com/modals/BirthDateSettings.tsx:56
+msgid "My Birthday"
+msgstr "Meu Aniversário"
+
+#: src/view/screens/Feeds.tsx:363
+msgid "My Feeds"
+msgstr "Meus Feeds"
+
+#: src/view/shell/desktop/LeftNav.tsx:65
+msgid "My Profile"
+msgstr "Meu Perfil"
+
+#: src/view/screens/Settings.tsx:520
+msgid "My Saved Feeds"
+msgstr "Meus Feeds Salvos"
+
+#: src/view/com/modals/AddAppPasswords.tsx:177
+#: src/view/com/modals/CreateOrEditList.tsx:211
+msgid "Name"
+msgstr "Nome"
+
+#: src/view/com/modals/EmbedConsent.tsx:107
+#: src/view/com/modals/EmbedConsent.tsx:123
+msgid "Never load embeds from {0}"
+msgstr "Nunca carregue incorporações de {0}"
+
+#: src/view/com/auth/onboarding/WelcomeMobile.tsx:72
+msgid "Never lose access to your followers and data."
+msgstr "Nunca perca o acesso aos seus seguidores e dados."
+
+#: src/view/screens/Lists.tsx:76
+#: src/view/screens/ModerationModlists.tsx:78
+msgid "New"
+msgstr "Novo"
+
+#: src/view/com/feeds/FeedPage.tsx:200
+#: src/view/screens/Feeds.tsx:507
+#: src/view/screens/Profile.tsx:354
+#: src/view/screens/ProfileFeed.tsx:431
+#: src/view/screens/ProfileList.tsx:194
+#: src/view/screens/ProfileList.tsx:222
+#: src/view/shell/desktop/LeftNav.tsx:248
+msgid "New post"
+msgstr "Novo post"
+
+#: src/view/shell/desktop/LeftNav.tsx:258
+msgid "New Post"
+msgstr "Novo Post"
+
+#: src/view/screens/PreferencesThreads.tsx:79
+msgid "Newest replies first"
+msgstr "Respostas mais recentes primeiro"
+
+#: src/view/com/auth/create/CreateAccount.tsx:154
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:174
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:184
+#: src/view/com/auth/login/LoginForm.tsx:286
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:156
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:166
+#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:79
+msgid "Next"
+msgstr "Próximo"
+
+#: src/view/com/lightbox/Lightbox.web.tsx:142
+msgid "Next image"
+msgstr "Próxima imagem"
+
+#: src/view/screens/PreferencesHomeFeed.tsx:126
+#: src/view/screens/PreferencesHomeFeed.tsx:197
+#: src/view/screens/PreferencesHomeFeed.tsx:232
+#: src/view/screens/PreferencesHomeFeed.tsx:269
+#: src/view/screens/PreferencesThreads.tsx:106
+#: src/view/screens/PreferencesThreads.tsx:129
+msgid "No"
+msgstr "Não"
+
+#: src/view/screens/ProfileFeed.tsx:579
+#: src/view/screens/ProfileList.tsx:720
+msgid "No description"
+msgstr "Sem descrição"
+
+#: src/view/com/composer/text-input/mobile/Autocomplete.tsx:97
+msgid "No result"
+msgstr "Nenhum resultado"
+
+#: src/view/screens/Feeds.tsx:452
+msgid "No results found for \"{query}\""
+msgstr "Nenhum resultado encontrado para \"{query}\""
+
+#: src/view/com/modals/ListAddUser.tsx:142
+#: src/view/shell/desktop/Search.tsx:112
+#~ msgid "No results found for {0}"
+#~ msgstr ""
+
+#: src/view/com/modals/ListAddRemoveUsers.tsx:127
+#: src/view/screens/Search/Search.tsx:270
+#: src/view/screens/Search/Search.tsx:298
+#: src/view/screens/Search/Search.tsx:629
+#: src/view/shell/desktop/Search.tsx:210
+msgid "No results found for {query}"
+msgstr "Nenhum resultado encontrado para {query}"
+
+#: src/view/com/modals/EmbedConsent.tsx:129
+msgid "No thanks"
+msgstr "Não, obrigado"
+
+#: src/view/com/modals/Threadgate.tsx:82
+msgid "Nobody"
+msgstr "Ninguém"
+
+#: src/view/com/modals/SelfLabel.tsx:136
+#~ msgid "Not Applicable"
+#~ msgstr ""
+
+#: src/view/com/modals/SelfLabel.tsx:135
+msgid "Not Applicable."
+msgstr "Não Aplicável."
+
+#: src/view/screens/Moderation.tsx:227
+#~ msgid "Note: Bluesky is an open and public network, and enabling this will not make your profile private or limit the ability of logged in users to see your posts. This setting only limits the visibility of posts on the Bluesky app and website; third-party apps that display Bluesky content may not respect this setting, and could show your content to logged-out users."
+#~ msgstr ""
+
+#: src/view/screens/Moderation.tsx:232
+msgid "Note: Bluesky is an open and public network. This setting only limits the visibility of your content on the Bluesky app and website, and other apps may not respect this setting. Your content may still be shown to logged-out users by other apps and websites."
+msgstr "Nota: o Bluesky é uma rede aberta e pública. Essa configuração limita somente a visibilidade do seu conteúdo no site e aplicativo do Bluesky, e outros aplicativos podem não respeitar essa configuração. Seu conteúdo ainda pode ser exibido para usuários desconectados por outros aplicativos e sites."
+
+#: src/view/screens/Moderation.tsx:227
+#~ msgid "Note: Third-party apps that display Bluesky content may not respect this setting."
+#~ msgstr ""
+
+#: src/view/screens/Notifications.tsx:113
+#: src/view/screens/Notifications.tsx:137
+#: src/view/shell/bottom-bar/BottomBar.tsx:205
+#: src/view/shell/desktop/LeftNav.tsx:361
+#: src/view/shell/Drawer.tsx:435
+#: src/view/shell/Drawer.tsx:436
+msgid "Notifications"
+msgstr "Notificações"
+
+#: src/view/com/util/ErrorBoundary.tsx:34
+msgid "Oh no!"
+msgstr "Oh, não!"
+
+#: src/view/com/auth/login/PasswordUpdatedForm.tsx:41
+msgid "Okay"
+msgstr "Ok"
+
+#: src/view/screens/PreferencesThreads.tsx:78
+msgid "Oldest replies first"
+msgstr "Respostas mais antigas primeiro"
+
+#: src/view/com/composer/Composer.tsx:363
+msgid "One or more images is missing alt text."
+msgstr "Uma ou mais imagens estão sem texto alternativo."
+
+#: src/view/com/threadgate/WhoCanReply.tsx:100
+msgid "Only {0} can reply."
+msgstr "Apenas {0} pode responder."
+
+#: src/view/com/composer/Composer.tsx:468
+#: src/view/com/composer/Composer.tsx:469
+msgid "Open emoji picker"
+msgstr "Abrir seletor de emojis"
+
+#: src/view/com/pager/FeedsTabBarMobile.tsx:76
+msgid "Open navigation"
+msgstr "Abrir navegação"
+
+#: src/view/screens/Settings.tsx:533
+msgid "Opens configurable language settings"
+msgstr "Abre definições de idioma configuráveis"
+
+#: src/view/screens/Settings.tsx:587
+msgid "Opens external embeds settings"
+msgstr "Abre as configurações de incorporações externas"
+
+#: src/view/shell/desktop/RightNav.tsx:156
+#: src/view/shell/Drawer.tsx:641
+msgid "Opens list of invite codes"
+msgstr "Abre a lista de códigos de convite"
+
+#: src/view/com/modals/ChangeHandle.tsx:279
+msgid "Opens modal for using custom domain"
+msgstr "Abre modal para usar o domínio personalizado"
+
+#: src/view/screens/Settings.tsx:558
+msgid "Opens moderation settings"
+msgstr "Abre configurações de moderação"
+
+#: src/view/screens/Settings.tsx:514
+msgid "Opens screen with all saved feeds"
+msgstr "Abre a tela com todos os feeds salvos"
+
+#: src/view/screens/Settings.tsx:614
+msgid "Opens the app password settings page"
+msgstr "Abre a página de configurações de senha do aplicativo"
+
+#: src/view/screens/Settings.tsx:473
+msgid "Opens the home feed preferences"
+msgstr "Abre as preferências do feed inicial"
+
+#: src/view/screens/Settings.tsx:697
+msgid "Opens the storybook page"
+msgstr "Abre a página do storybook"
+
+#: src/view/screens/Settings.tsx:677
+msgid "Opens the system log page"
+msgstr "Abre a página de log do sistema"
+
+#: src/view/screens/Settings.tsx:494
+msgid "Opens the threads preferences"
+msgstr "Abrir as preferências dos tópicos"
+
+#: src/view/com/modals/Threadgate.tsx:89
+msgid "Or combine these options:"
+msgstr "Ou combine estas opções:"
+
+#: src/view/com/auth/login/ChooseAccountForm.tsx:138
+msgid "Other account"
+msgstr "Outra conta"
+
+#: src/view/com/modals/ServerInput.tsx:88
+msgid "Other service"
+msgstr "Outro serviço"
+
+#: src/view/com/composer/select-language/SelectLangBtn.tsx:91
+msgid "Other..."
+msgstr "Outro..."
+
+#: src/view/screens/NotFound.tsx:42
+#: src/view/screens/NotFound.tsx:45
+msgid "Page not found"
+msgstr "Página não encontrada"
+
+#: src/view/com/auth/create/Step2.tsx:122
+#: src/view/com/auth/create/Step2.tsx:132
+#: src/view/com/auth/login/LoginForm.tsx:221
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:130
+#: src/view/com/modals/DeleteAccount.tsx:191
+msgid "Password"
+msgstr "Senha"
+
+#: src/view/com/auth/login/Login.tsx:157
+msgid "Password updated"
+msgstr "Senha atualizada"
+
+#: src/view/com/auth/login/PasswordUpdatedForm.tsx:28
+msgid "Password updated!"
+msgstr "Senha atualizada!"
+
+#: src/view/com/modals/SelfLabel.tsx:121
+msgid "Pictures meant for adults."
+msgstr "Imagens destinadas a adultos."
+
+#: src/view/screens/SavedFeeds.tsx:88
+msgid "Pinned Feeds"
+msgstr "Feeds Fixados"
+
+#: src/view/com/util/post-embeds/ExternalGifEmbed.tsx:111
+msgid "Play {0}"
+msgstr "Reproduzir {0}"
+
+#: src/view/com/util/post-embeds/ExternalPlayerEmbed.tsx:54
+#: src/view/com/util/post-embeds/ExternalPlayerEmbed.tsx:55
+msgid "Play Video"
+msgstr "Reproduzir Vídeo"
+
+#: src/view/com/util/post-embeds/ExternalGifEmbed.tsx:110
+msgid "Plays the GIF"
+msgstr "Reproduz o GIF"
+
+#: src/view/com/auth/create/state.ts:116
+msgid "Please choose your handle."
+msgstr "Por favor, escolha o seu identificador."
+
+#: src/view/com/auth/create/state.ts:109
+msgid "Please choose your password."
+msgstr "Por favor, escolha sua senha."
+
+#: src/view/com/modals/ChangeEmail.tsx:67
+msgid "Please confirm your email before changing it. This is a temporary requirement while email-updating tools are added, and it will soon be removed."
+msgstr "Por favor, confirme seu email antes de alterá-lo. Este é um requisito temporário enquanto ferramentas de atualização de email são adicionadas, e em breve serão removidos."
+
+#: src/view/com/modals/AddAppPasswords.tsx:140
+msgid "Please enter a unique name for this App Password or use our randomly generated one."
+msgstr "Por favor, insira um nome único para esta Senha do Aplicativo ou use nossa senha gerada aleatoriamente."
+
+#: src/view/com/auth/create/state.ts:95
+msgid "Please enter your email."
+msgstr "Por favor, digite o seu email."
+
+#: src/view/com/modals/DeleteAccount.tsx:180
+msgid "Please enter your password as well:"
+msgstr "Por favor, digite sua senha também:"
+
+#: src/view/com/modals/AppealLabel.tsx:72
+#: src/view/com/modals/AppealLabel.tsx:75
+msgid "Please tell us why you think this content warning was incorrectly applied!"
+msgstr "Por favor, diga-nos por que você acha que este aviso de conteúdo foi aplicado incorretamente!"
+
+#: src/view/com/modals/AppealLabel.tsx:72
+#: src/view/com/modals/AppealLabel.tsx:75
+#~ msgid "Please tell us why you think this decision was incorrect."
+#~ msgstr ""
+
+#: src/view/com/composer/Composer.tsx:215
+msgid "Please wait for your link card to finish loading"
+msgstr "Aguarde até que o cartão de link termine de carregar"
+
+#: src/view/com/composer/Composer.tsx:346
+#: src/view/com/post-thread/PostThread.tsx:225
+#: src/view/screens/PostThread.tsx:80
+msgid "Post"
+msgstr "Post"
+
+#: src/view/com/post-thread/PostThread.tsx:378
+msgid "Post hidden"
+msgstr "Post oculto"
+
+#: src/view/com/composer/select-language/SelectLangBtn.tsx:87
+msgid "Post language"
+msgstr "Idioma do post"
+
+#: src/view/com/modals/lang-settings/PostLanguagesSettings.tsx:75
+msgid "Post Languages"
+msgstr "Idioma do Post"
+
+#: src/view/com/post-thread/PostThread.tsx:430
+msgid "Post not found"
+msgstr "Post não encontrado"
+
+#: src/view/screens/Profile.tsx:161
+msgid "Posts"
+msgstr "Posts"
+
+#: src/view/com/modals/LinkWarning.tsx:44
+msgid "Potentially Misleading Link"
+msgstr "Link Potencialmente Enganoso"
+
+#: src/view/com/lightbox/Lightbox.web.tsx:128
+msgid "Previous image"
+msgstr "Imagem anterior"
+
+#: src/view/screens/LanguageSettings.tsx:187
+msgid "Primary Language"
+msgstr "Idioma Principal"
+
+#: src/view/screens/PreferencesThreads.tsx:97
+msgid "Prioritize Your Follows"
+msgstr "Priorizar seus Seguidores"
+
+#: src/view/screens/Settings.tsx:570
+#: src/view/shell/desktop/RightNav.tsx:84
+msgid "Privacy"
+msgstr "Privacidade"
+
+#: src/view/screens/PrivacyPolicy.tsx:29
+#: src/view/screens/Settings.tsx:783
+#: src/view/shell/Drawer.tsx:262
+msgid "Privacy Policy"
+msgstr "Política de Privacidade"
+
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:190
+msgid "Processing..."
+msgstr "Processando..."
+
+#: src/view/shell/bottom-bar/BottomBar.tsx:247
+#: src/view/shell/desktop/LeftNav.tsx:415
+#: src/view/shell/Drawer.tsx:70
+#: src/view/shell/Drawer.tsx:544
+#: src/view/shell/Drawer.tsx:545
+msgid "Profile"
+msgstr "Perfil"
+
+#: src/view/screens/Settings.tsx:841
+msgid "Protect your account by verifying your email."
+msgstr "Proteja a sua conta verificando o seu email."
+
+#: src/view/screens/ModerationModlists.tsx:61
+msgid "Public, shareable lists of users to mute or block in bulk."
+msgstr "Listas públicas e compartilháveis de usuários para silenciar ou bloquear em massa."
+
+#: src/view/screens/Lists.tsx:61
+msgid "Public, shareable lists which can drive feeds."
+msgstr "Listas públicas e compartilháveis que podem gerar feeds."
+
+#: src/view/com/modals/Repost.tsx:52
+#: src/view/com/util/post-ctrls/RepostButton.web.tsx:58
+msgid "Quote post"
+msgstr "Citar post"
+
+#: src/view/com/modals/Repost.tsx:56
+msgid "Quote Post"
+msgstr "Citar Post"
+
+#: src/view/screens/PreferencesThreads.tsx:86
+msgid "Random (aka \"Poster's Roulette\")"
+msgstr "Aleatório (também conhecido como \"Poster's Roulette\")"
+
+#: src/view/com/modals/EditImage.tsx:236
+msgid "Ratios"
+msgstr "Índices"
+
+#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:73
+#: src/view/com/auth/onboarding/RecommendedFollows.tsx:50
+#~ msgid "Recommended"
+#~ msgstr ""
+
+#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:116
+msgid "Recommended Feeds"
+msgstr "Feeds Recomendados"
+
+#: src/view/com/auth/onboarding/RecommendedFollows.tsx:180
+msgid "Recommended Users"
+msgstr "Usuários Recomendados"
+
+#: src/view/com/modals/ListAddRemoveUsers.tsx:264
+#: src/view/com/modals/SelfLabel.tsx:83
+#: src/view/com/modals/UserAddRemoveLists.tsx:193
+#: src/view/com/util/UserAvatar.tsx:282
+#: src/view/com/util/UserBanner.tsx:89
+msgid "Remove"
+msgstr "Remover"
+
+#: src/view/com/feeds/FeedSourceCard.tsx:106
+msgid "Remove {0} from my feeds?"
+msgstr "Remover {0} dos meus feeds?"
+
+#: src/view/com/util/AccountDropdownBtn.tsx:22
+msgid "Remove account"
+msgstr "Remover conta"
+
+#: src/view/com/posts/FeedErrorMessage.tsx:130
+msgid "Remove feed"
+msgstr "Remover feed"
+
+#: src/view/com/feeds/FeedSourceCard.tsx:105
+#: src/view/com/feeds/FeedSourceCard.tsx:172
+#: src/view/screens/ProfileFeed.tsx:271
+msgid "Remove from my feeds"
+msgstr "Remover dos meus feeds"
+
+#: src/view/com/composer/photos/Gallery.tsx:167
+msgid "Remove image"
+msgstr "Remover imagem"
+
+#: src/view/com/composer/ExternalEmbed.tsx:70
+msgid "Remove image preview"
+msgstr "Remover visualização da imagem"
+
+#: src/view/com/feeds/FeedSourceCard.tsx:173
+msgid "Remove this feed from my feeds?"
+msgstr "Remover este feed dos meus feeds?"
+
+#: src/view/com/posts/FeedErrorMessage.tsx:131
+msgid "Remove this feed from your saved feeds?"
+msgstr "Remover esse feed de seus feeds salvos?"
+
+#: src/view/com/modals/ListAddRemoveUsers.tsx:199
+#: src/view/com/modals/UserAddRemoveLists.tsx:136
+msgid "Removed from list"
+msgstr "Removido da lista"
+
+#: src/view/screens/Profile.tsx:162
+msgid "Replies"
+msgstr "Respostas"
+
+#: src/view/com/threadgate/WhoCanReply.tsx:98
+msgid "Replies to this thread are disabled"
+msgstr "Respostas para este tópico estão desativadas"
+
+#: src/view/screens/PreferencesHomeFeed.tsx:141
+msgid "Reply Filters"
+msgstr "Filtros de Resposta"
+
+#: src/view/com/modals/report/Modal.tsx:166
+msgid "Report {collectionName}"
+msgstr "Denunciar {collectionName}"
+
+#: src/view/com/profile/ProfileHeader.tsx:404
+msgid "Report Account"
+msgstr "Denunciar Conta"
+
+#: src/view/screens/ProfileFeed.tsx:291
+msgid "Report feed"
+msgstr "Denunciar feed"
+
+#: src/view/screens/ProfileList.tsx:426
+msgid "Report List"
+msgstr "Denunciar Lista"
+
+#: src/view/com/modals/report/SendReportButton.tsx:37
+#: src/view/com/util/forms/PostDropdownBtn.tsx:196
+msgid "Report post"
+msgstr "Denunciar post"
+
+#: src/view/com/util/post-ctrls/RepostButton.web.tsx:48
+msgid "Repost"
+msgstr "Repostar"
+
+#: src/view/com/util/post-ctrls/RepostButton.web.tsx:94
+#: src/view/com/util/post-ctrls/RepostButton.web.tsx:105
+msgid "Repost or quote post"
+msgstr "Repostar ou citar uma post"
+
+#: src/view/screens/PostRepostedBy.tsx:27
+msgid "Reposted by"
+msgstr "Repostado por"
+
+#: src/view/com/modals/ChangeEmail.tsx:181
+#: src/view/com/modals/ChangeEmail.tsx:183
+msgid "Request Change"
+msgstr "Solicitar Alteração"
+
+#: src/view/screens/Moderation.tsx:188
+#~ msgid "Request to limit the visibility of my account"
+#~ msgstr ""
+
+#: src/view/screens/Settings.tsx:422
+msgid "Require alt text before posting"
+msgstr "Exigir texto alternativo antes de postar"
+
+#: src/view/com/auth/create/Step2.tsx:68
+msgid "Required for this provider"
+msgstr "Obrigatório para este provedor"
+
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:108
+msgid "Reset code"
+msgstr "Código de redefinição"
+
+#: src/view/screens/Settings.tsx:719
+msgid "Reset onboarding state"
+msgstr "Redefinir estado de integração"
+
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:98
+msgid "Reset password"
+msgstr "Redefinir senha"
+
+#: src/view/screens/Settings.tsx:709
+msgid "Reset preferences state"
+msgstr "Redefinir estado das preferências"
+
+#: src/view/screens/Settings.tsx:717
+msgid "Resets the onboarding state"
+msgstr "Redefine o estado de integração"
+
+#: src/view/screens/Settings.tsx:707
+msgid "Resets the preferences state"
+msgstr "Redefine o estado das preferências"
+
+#: src/view/com/auth/create/CreateAccount.tsx:163
+#: src/view/com/auth/create/CreateAccount.tsx:167
+#: src/view/com/auth/login/LoginForm.tsx:263
+#: src/view/com/auth/login/LoginForm.tsx:266
+#: src/view/com/util/error/ErrorMessage.tsx:55
+#: src/view/com/util/error/ErrorScreen.tsx:65
+msgid "Retry"
+msgstr "Tente novamente"
+
+#: src/view/com/modals/ChangeHandle.tsx:169
+#~ msgid "Retry change handle"
+#~ msgstr ""
+
+#: src/view/com/modals/BirthDateSettings.tsx:94
+#: src/view/com/modals/BirthDateSettings.tsx:97
+#: src/view/com/modals/ChangeHandle.tsx:173
+#: src/view/com/modals/CreateOrEditList.tsx:249
+#: src/view/com/modals/CreateOrEditList.tsx:257
+#: src/view/com/modals/EditProfile.tsx:223
+msgid "Save"
+msgstr "Salvar"
+
+#: src/view/com/modals/AltImage.tsx:106
+msgid "Save alt text"
+msgstr "Salvar texto alternativo"
+
+#: src/view/com/modals/UserAddRemoveLists.tsx:212
+#~ msgid "Save changes"
+#~ msgstr ""
+
+#: src/view/com/modals/EditProfile.tsx:231
+msgid "Save Changes"
+msgstr "Salvar Alterações"
+
+#: src/view/com/modals/ChangeHandle.tsx:170
+msgid "Save handle change"
+msgstr "Salvar identificador alterado"
+
+#: src/view/com/modals/crop-image/CropImage.web.tsx:144
+msgid "Save image crop"
+msgstr "Salvar corte de imagem"
+
+#: src/view/screens/SavedFeeds.tsx:122
+msgid "Saved Feeds"
+msgstr "Feeds Salvos"
+
+#: src/view/com/modals/ListAddRemoveUsers.tsx:75
+#: src/view/com/util/forms/SearchInput.tsx:65
+#: src/view/screens/Search/Search.tsx:406
+#: src/view/screens/Search/Search.tsx:572
+#: src/view/shell/bottom-bar/BottomBar.tsx:159
+#: src/view/shell/desktop/LeftNav.tsx:324
+#: src/view/shell/desktop/Search.tsx:161
+#: src/view/shell/desktop/Search.tsx:170
+#: src/view/shell/Drawer.tsx:362
+#: src/view/shell/Drawer.tsx:363
+msgid "Search"
+msgstr "Buscar"
+
+#: src/view/screens/Search/Search.tsx:390
+#~ msgid "Search for posts and users."
+#~ msgstr ""
+
+#: src/view/com/auth/LoggedOut.tsx:104
+#: src/view/com/auth/LoggedOut.tsx:105
+msgid "Search for users"
+msgstr "Buscar por usuários"
+
+#: src/view/com/modals/ChangeEmail.tsx:110
+msgid "Security Step Required"
+msgstr "Passo de Segurança Necessário"
+
+#: src/view/com/auth/HomeLoggedOutCTA.tsx:39
+msgid "See what's next"
+msgstr "Veja o que vem a seguir"
+
+#: src/view/com/modals/ServerInput.tsx:75
+msgid "Select Bluesky Social"
+msgstr "Selecione Bluesky Social"
+
+#: src/view/com/auth/login/Login.tsx:117
+msgid "Select from an existing account"
+msgstr "Selecione em uma conta existente"
+
+#: src/view/com/auth/login/LoginForm.tsx:147
+msgid "Select service"
+msgstr "Selecione o serviço"
+
+#: src/view/screens/LanguageSettings.tsx:281
+msgid "Select which languages you want your subscribed feeds to include. If none are selected, all languages will be shown."
+msgstr "Selecione quais idiomas você deseja que seus feeds subscritos incluam. Se nenhum for selecionado, todas as línguas serão exibidas."
+
+#: src/view/screens/LanguageSettings.tsx:98
+msgid "Select your app language for the default text to display in the app"
+msgstr "Selecione o idioma do seu aplicativo para o texto padrão a ser exibido no aplicativo"
+
+#: src/view/screens/LanguageSettings.tsx:190
+msgid "Select your preferred language for translations in your feed."
+msgstr "Selecione seu idioma preferido para as traduções do seu feed."
+
+#: src/view/com/modals/VerifyEmail.tsx:196
+msgid "Send Confirmation Email"
+msgstr "Enviar Email de Confirmação"
+
+#: src/view/com/modals/DeleteAccount.tsx:127
+msgid "Send email"
+msgstr "Enviar email"
+
+#: src/view/com/modals/DeleteAccount.tsx:138
+msgid "Send Email"
+msgstr "Enviar Email"
+
+#: src/view/shell/Drawer.tsx:295
+#: src/view/shell/Drawer.tsx:316
+msgid "Send feedback"
+msgstr "Enviar comentários"
+
+#: src/view/com/modals/report/SendReportButton.tsx:45
+msgid "Send Report"
+msgstr "Enviar um Relatório"
+
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:78
+msgid "Set new password"
+msgstr "Defina uma nova senha"
+
+#: src/view/screens/PreferencesHomeFeed.tsx:222
+msgid "Set this setting to \"No\" to hide all quote posts from your feed. Reposts will still be visible."
+msgstr "Defina esta configuração como \"Não\" para ocultar todos os posts citados do seu feed. Repostagens ainda serão visíveis."
+
+#: src/view/screens/PreferencesHomeFeed.tsx:119
+msgid "Set this setting to \"No\" to hide all replies from your feed."
+msgstr "Defina essa configuração como \"Não\" para ocultar todas as respostas do seu feed."
+
+#: src/view/screens/PreferencesHomeFeed.tsx:188
+msgid "Set this setting to \"No\" to hide all reposts from your feed."
+msgstr "Defina essa configuração como \"Não\" para ocultar todas as repostagens do seu feed."
+
+#: src/view/screens/PreferencesThreads.tsx:122
+msgid "Set this setting to \"Yes\" to show replies in a threaded view. This is an experimental feature."
+msgstr "Defina esta configuração como \"Sim\" para mostrar respostas em uma visualização thread. Este é um recurso experimental."
+
+#: src/view/screens/PreferencesHomeFeed.tsx:258
+msgid "Set this setting to \"Yes\" to show samples of your saved feeds in your following feed. This is an experimental feature."
+msgstr "Defina essa configuração como \"Sim\" para mostrar amostras de seus feeds salvos no seu seguinte feed. Este é um recurso experimental."
+
+#: src/view/screens/Settings.tsx:277
+#: src/view/shell/desktop/LeftNav.tsx:433
+#: src/view/shell/Drawer.tsx:565
+#: src/view/shell/Drawer.tsx:566
+msgid "Settings"
+msgstr "Configurações"
+
+#: src/view/com/modals/SelfLabel.tsx:125
+msgid "Sexual activity or erotic nudity."
+msgstr "Atividade sexual ou nudez erótica."
+
+#: src/view/com/profile/ProfileHeader.tsx:338
+#: src/view/com/util/forms/PostDropdownBtn.tsx:139
+#: src/view/screens/ProfileList.tsx:385
+msgid "Share"
+msgstr "Compartilhar"
+
+#: src/view/screens/ProfileFeed.tsx:303
+msgid "Share feed"
+msgstr "Compartilhar feed"
+
+#: src/view/screens/ProfileFeed.tsx:276
+#~ msgid "Share link"
+#~ msgstr ""
+
+#: src/view/com/util/moderation/ContentHider.tsx:105
+#: src/view/screens/Settings.tsx:316
+msgid "Show"
+msgstr "Mostrar"
+
+#: src/view/com/util/moderation/ScreenHider.tsx:132
+msgid "Show anyway"
+msgstr "Mostrar mesmo assim"
+
+#: src/view/com/modals/EmbedConsent.tsx:87
+msgid "Show embeds from {0}"
+msgstr "Mostrar incorporações de {0}"
+
+#: src/view/screens/PreferencesHomeFeed.tsx:255
+msgid "Show Posts from My Feeds"
+msgstr "Mostrar Posts dos meus Feeds"
+
+#: src/view/screens/PreferencesHomeFeed.tsx:219
+msgid "Show Quote Posts"
+msgstr "Mostrar Posts de Citações"
+
+#: src/view/screens/PreferencesHomeFeed.tsx:116
+msgid "Show Replies"
+msgstr "Mostrar Respostas"
+
+#: src/view/screens/PreferencesThreads.tsx:100
+msgid "Show replies by people you follow before all other replies."
+msgstr "Mostrar as respostas de pessoas que você segue antes de todas as outras respostas."
+
+#: src/view/screens/PreferencesHomeFeed.tsx:185
+msgid "Show Reposts"
+msgstr "Mostrar Repostagens"
+
+#: src/view/com/notifications/FeedItem.tsx:345
+msgid "Show users"
+msgstr "Mostrar usuários"
+
+#: src/view/com/auth/HomeLoggedOutCTA.tsx:70
+#: src/view/com/auth/login/Login.tsx:98
+#: src/view/com/auth/SplashScreen.tsx:54
+#: src/view/shell/bottom-bar/BottomBar.tsx:285
+#: src/view/shell/bottom-bar/BottomBar.tsx:286
+#: src/view/shell/bottom-bar/BottomBar.tsx:288
+#: src/view/shell/bottom-bar/BottomBarWeb.tsx:177
+#: src/view/shell/bottom-bar/BottomBarWeb.tsx:178
+#: src/view/shell/bottom-bar/BottomBarWeb.tsx:180
+#: src/view/shell/NavSignupCard.tsx:58
+#: src/view/shell/NavSignupCard.tsx:59
+msgid "Sign in"
+msgstr "Fazer login"
+
+#: src/view/com/auth/HomeLoggedOutCTA.tsx:78
+#: src/view/com/auth/SplashScreen.tsx:57
+#: src/view/com/auth/SplashScreen.web.tsx:87
+msgid "Sign In"
+msgstr "Fazer Login"
+
+#: src/view/com/auth/login/ChooseAccountForm.tsx:44
+msgid "Sign in as {0}"
+msgstr "Fazer login como {0}"
+
+#: src/view/com/auth/login/ChooseAccountForm.tsx:118
+#: src/view/com/auth/login/Login.tsx:116
+msgid "Sign in as..."
+msgstr "Fazer login como..."
+
+#: src/view/com/auth/login/LoginForm.tsx:134
+msgid "Sign into"
+msgstr "Fazer login"
+
+#: src/view/com/modals/SwitchAccount.tsx:64
+#: src/view/com/modals/SwitchAccount.tsx:67
+msgid "Sign out"
+msgstr "Sair"
+
+#: src/view/shell/bottom-bar/BottomBar.tsx:275
+#: src/view/shell/bottom-bar/BottomBar.tsx:276
+#: src/view/shell/bottom-bar/BottomBar.tsx:278
+#: src/view/shell/bottom-bar/BottomBarWeb.tsx:167
+#: src/view/shell/bottom-bar/BottomBarWeb.tsx:168
+#: src/view/shell/bottom-bar/BottomBarWeb.tsx:170
+#: src/view/shell/NavSignupCard.tsx:49
+#: src/view/shell/NavSignupCard.tsx:50
+#: src/view/shell/NavSignupCard.tsx:52
+msgid "Sign up"
+msgstr "Inscrever-se"
+
+#: src/view/shell/NavSignupCard.tsx:42
+msgid "Sign up or sign in to join the conversation"
+msgstr "Inscreva-se ou faça login para se juntar à conversa"
+
+#: src/view/com/util/moderation/ScreenHider.tsx:76
+msgid "Sign-in Required"
+msgstr "É Necessário Fazer Login"
+
+#: src/view/screens/Settings.tsx:327
+msgid "Signed in as"
+msgstr "Entrou como"
+
+#: src/view/com/auth/onboarding/WelcomeMobile.tsx:33
+msgid "Skip"
+msgstr "Pular"
+
+#: src/view/screens/PreferencesThreads.tsx:69
+msgid "Sort Replies"
+msgstr "Classificar Respostas"
+
+#: src/view/screens/PreferencesThreads.tsx:72
+msgid "Sort replies to the same post by:"
+msgstr "Classificar respostas para o mesmo post por:"
+
+#: src/view/com/modals/crop-image/CropImage.web.tsx:122
+msgid "Square"
+msgstr "Quadrado"
+
+#: src/view/com/auth/create/Step1.tsx:90
+#: src/view/com/modals/ServerInput.tsx:62
+msgid "Staging"
+msgstr "Encenação"
+
+#: src/view/screens/Settings.tsx:763
+msgid "Status page"
+msgstr "Página de status"
+
+#: src/view/screens/Settings.tsx:699
+msgid "Storybook"
+msgstr "Storybook"
+
+#: src/view/com/modals/AppealLabel.tsx:101
+msgid "Submit"
+msgstr "Enviar"
+
+#: src/view/screens/ProfileList.tsx:575
+msgid "Subscribe"
+msgstr "Assinar"
+
+#: src/view/screens/ProfileList.tsx:571
+msgid "Subscribe to this list"
+msgstr "Assinar esta lista"
+
+#: src/view/screens/Search/Search.tsx:362
+msgid "Suggested Follows"
+msgstr "Seguidores Sugeridos"
+
+#: src/view/screens/Support.tsx:30
+#: src/view/screens/Support.tsx:33
+msgid "Support"
+msgstr "Suporte"
+
+#: src/view/com/modals/SwitchAccount.tsx:115
+msgid "Switch Account"
+msgstr "Alterar Conta"
+
+#: src/view/screens/Settings.tsx:398
+#~ msgid "System"
+#~ msgstr ""
+
+#: src/view/screens/Settings.tsx:679
+msgid "System log"
+msgstr "Log do sistema"
+
+#: src/view/com/modals/crop-image/CropImage.web.tsx:112
+msgid "Tall"
+msgstr "Alto"
+
+#: src/view/shell/desktop/RightNav.tsx:93
+msgid "Terms"
+msgstr "Termos"
+
+#: src/view/screens/Settings.tsx:777
+#: src/view/screens/TermsOfService.tsx:29
+#: src/view/shell/Drawer.tsx:256
+msgid "Terms of Service"
+msgstr "Termos de Serviço"
+
+#: src/view/com/modals/AppealLabel.tsx:70
+#: src/view/com/modals/report/InputIssueDetails.tsx:51
+msgid "Text input field"
+msgstr "Campo de entrada de texto"
+
+#: src/view/com/profile/ProfileHeader.tsx:306
+msgid "The account will be able to interact with you after unblocking."
+msgstr "A conta poderá interagir com você após o desbloqueio."
+
+#: src/view/screens/CommunityGuidelines.tsx:36
+msgid "The Community Guidelines have been moved to <0/>"
+msgstr "As Diretrizes da Comunidade foram movidas para <0/>"
+
+#: src/view/screens/CopyrightPolicy.tsx:33
+msgid "The Copyright Policy has been moved to <0/>"
+msgstr "A Política de Direitos Autorais foi movida para <0/>"
+
+#: src/view/com/post-thread/PostThread.tsx:433
+msgid "The post may have been deleted."
+msgstr "O post pode ter sido excluído."
+
+#: src/view/screens/PrivacyPolicy.tsx:33
+msgid "The Privacy Policy has been moved to <0/>"
+msgstr "A Política de Privacidade foi movida para <0/>"
+
+#: src/view/screens/Support.tsx:36
+msgid "The support form has been moved. If you need help, please<0/> or visit {HELP_DESK_URL} to get in touch with us."
+msgstr "O formulário de suporte foi movido. Se precisar de ajuda, por favor <0/> ou visite {HELP_DESK_URL} para entrar em contato conosco."
+
+#: src/view/screens/TermsOfService.tsx:33
+msgid "The Terms of Service have been moved to"
+msgstr "Os Termos de Serviço foram movidos para"
+
+#: src/view/com/util/ErrorBoundary.tsx:35
+msgid "There was an unexpected issue in the application. Please let us know if this happened to you!"
+msgstr "Houve um problema inesperado no aplicativo. Por favor, deixe-nos saber se isso aconteceu com você!"
+
+#: src/view/com/util/moderation/LabelInfo.tsx:45
+#~ msgid "This {0} has been labeled."
+#~ msgstr ""
+
+#: src/view/com/util/moderation/ScreenHider.tsx:88
+msgid "This {screenDescription} has been flagged:"
+msgstr "Este {screenDescription} foi sinalizado:"
+
+#: src/view/com/util/moderation/ScreenHider.tsx:83
+msgid "This account has requested that users sign in to view their profile."
+msgstr "Esta conta solicitou que os usuários fizessem login para visualizar seus perfis."
+
+#: src/view/com/modals/EmbedConsent.tsx:68
+msgid "This content is hosted by {0}. Do you want to enable external media?"
+msgstr "Este conteúdo é hospedado por {0}. Deseja ativar a mídia externa?"
+
+#: src/view/com/posts/FeedErrorMessage.tsx:107
+msgid "This content is not viewable without a Bluesky account."
+msgstr "Este conteúdo não está visível sem uma conta Bluesky."
+
+#: src/view/com/posts/FeedErrorMessage.tsx:113
+msgid "This feed is currently receiving high traffic and is temporarily unavailable. Please try again later."
+msgstr "Este feed está recebendo alto tráfego e está temporariamente indisponível. Por favor, tente novamente mais tarde."
+
+#: src/view/com/modals/BirthDateSettings.tsx:61
+msgid "This information is not shared with other users."
+msgstr "Esta informação não é compartilhada com outros usuários."
+
+#: src/view/com/modals/VerifyEmail.tsx:113
+msgid "This is important in case you ever need to change your email or reset your password."
+msgstr "Isso é importante caso você precise alterar seu email ou redefinir sua senha."
+
+#: src/view/com/auth/create/Step1.tsx:55
+msgid "This is the service that keeps you online."
+msgstr "Este é o serviço que o mantém online."
+
+#: src/view/com/modals/LinkWarning.tsx:56
+msgid "This link is taking you to the following website:"
+msgstr "Esse link está levando você ao seguinte site:"
+
+#: src/view/com/post-thread/PostThreadItem.tsx:123
+msgid "This post has been deleted."
+msgstr "Este post foi excluído."
+
+#: src/view/com/modals/SelfLabel.tsx:137
+msgid "This warning is only available for posts with media attached."
+msgstr "Este aviso só está disponível para publicações com mídia anexada."
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:178
+msgid "This will hide this post from your feeds."
+msgstr "Isso ocultará esse post de seus feeds."
+
+#: src/view/screens/PreferencesThreads.tsx:53
+#: src/view/screens/Settings.tsx:503
+msgid "Thread Preferences"
+msgstr "Preferências de Tópico"
+
+#: src/view/screens/PreferencesThreads.tsx:119
+msgid "Threaded Mode"
+msgstr "Modo Tópico"
+
+#: src/view/com/util/forms/DropdownButton.tsx:230
+msgid "Toggle dropdown"
+msgstr "Alternar menu suspenso"
+
+#: src/view/com/modals/EditImage.tsx:271
+msgid "Transformations"
+msgstr "Transformações"
+
+#: src/view/com/post-thread/PostThreadItem.tsx:705
+#: src/view/com/post-thread/PostThreadItem.tsx:707
+#: src/view/com/util/forms/PostDropdownBtn.tsx:111
+msgid "Translate"
+msgstr "Traduzir"
+
+#: src/view/com/util/error/ErrorScreen.tsx:73
+msgid "Try again"
+msgstr "Tente novamente"
+
+#: src/view/screens/ProfileList.tsx:473
+msgid "Un-block list"
+msgstr "Lista de desbloqueio"
+
+#: src/view/screens/ProfileList.tsx:458
+msgid "Un-mute list"
+msgstr "Lista de não silenciados"
+
+#: src/view/com/auth/create/CreateAccount.tsx:65
+#: src/view/com/auth/login/Login.tsx:76
+#: src/view/com/auth/login/LoginForm.tsx:120
+msgid "Unable to contact your service. Please check your Internet connection."
+msgstr "Não foi possível entrar em contato com seu serviço. Por favor, verifique sua conexão à internet."
+
+#: src/view/com/profile/ProfileHeader.tsx:466
+#: src/view/com/profile/ProfileHeader.tsx:469
+msgid "Unblock"
+msgstr "Desbloquear"
+
+#: src/view/com/profile/ProfileHeader.tsx:304
+#: src/view/com/profile/ProfileHeader.tsx:388
+msgid "Unblock Account"
+msgstr "Desbloquear Conta"
+
+#: src/view/com/util/post-ctrls/RepostButton.web.tsx:48
+msgid "Undo repost"
+msgstr "Desfazer repost"
+
+#: src/view/com/auth/create/state.ts:216
+msgid "Unfortunately, you do not meet the requirements to create an account."
+msgstr "Infelizmente, você não atende aos requisitos para criar uma conta."
+
+#: src/view/com/profile/ProfileHeader.tsx:369
+msgid "Unmute Account"
+msgstr "Não Silenciar Conta"
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:157
+msgid "Unmute thread"
+msgstr "Não silenciar o tópico"
+
+#: src/view/screens/ProfileList.tsx:441
+msgid "Unpin moderation list"
+msgstr "Desafixar lista de moderação"
+
+#: src/view/com/modals/UserAddRemoveLists.tsx:54
+msgid "Update {displayName} in Lists"
+msgstr "Atualizar {displayName} nas Listas"
+
+#: src/lib/hooks/useOTAUpdate.ts:15
+msgid "Update Available"
+msgstr "Atualização Disponível"
+
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:172
+msgid "Updating..."
+msgstr "Atualizando..."
+
+#: src/view/com/modals/ChangeHandle.tsx:453
+msgid "Upload a text file to:"
+msgstr "Carregar um arquivo de texto para:"
+
+#: src/view/screens/AppPasswords.tsx:194
+msgid "Use app passwords to login to other Bluesky clients without giving full access to your account or password."
+msgstr "Use as senhas de aplicativos para fazer login em outros clientes Bluesky sem dar acesso total à sua conta ou senha."
+
+#: src/view/com/modals/ChangeHandle.tsx:513
+msgid "Use default provider"
+msgstr "Usar provedor padrão"
+
+#: src/view/com/modals/AddAppPasswords.tsx:150
+msgid "Use this to sign into the other app along with your handle."
+msgstr "Use isto para entrar no outro aplicativo juntamente com seu identificador."
+
+#: src/view/com/modals/InviteCodes.tsx:197
+msgid "Used by:"
+msgstr "Usado por:"
+
+#: src/view/com/auth/create/Step3.tsx:38
+msgid "User handle"
+msgstr "Identificador de usuário"
+
+#: src/view/screens/Lists.tsx:58
+msgid "User Lists"
+msgstr "Listas de Usuários"
+
+#: src/view/com/auth/login/LoginForm.tsx:174
+#: src/view/com/auth/login/LoginForm.tsx:192
+msgid "Username or email address"
+msgstr "Nome de usuário ou endereço de email"
+
+#: src/view/screens/ProfileList.tsx:747
+msgid "Users"
+msgstr "Usuários"
+
+#: src/view/com/threadgate/WhoCanReply.tsx:143
+msgid "users followed by <0/>"
+msgstr "usuários seguidos por <0/>"
+
+#: src/view/com/threadgate/WhoCanReply.tsx:115
+#~ msgid "Users followed by <0/>"
+#~ msgstr ""
+
+#: src/view/com/modals/Threadgate.tsx:106
+msgid "Users in \"{0}\""
+msgstr "Usuários em \"{0}\""
+
+#: src/view/screens/Settings.tsx:802
+msgid "Verify email"
+msgstr "Verificar email"
+
+#: src/view/screens/Settings.tsx:827
+msgid "Verify my email"
+msgstr "Verificar meu email"
+
+#: src/view/screens/Settings.tsx:836
+msgid "Verify My Email"
+msgstr "Verificar Meu Email"
+
+#: src/view/com/modals/ChangeEmail.tsx:205
+#: src/view/com/modals/ChangeEmail.tsx:207
+msgid "Verify New Email"
+msgstr "Verificar Novo Email"
+
+#: src/view/screens/Log.tsx:52
+msgid "View debug entry"
+msgstr "Ver entrada de depuração"
+
+#: src/view/com/profile/ProfileSubpageHeader.tsx:128
+msgid "View the avatar"
+msgstr "Ver o avatar"
+
+#: src/view/com/modals/LinkWarning.tsx:73
+msgid "Visit Site"
+msgstr "Visitar Site"
+
+#: src/view/com/auth/create/CreateAccount.tsx:122
+msgid "We're so excited to have you join us!"
+msgstr "Estamos muito felizes por você se juntar a nós!"
+
+#: src/view/com/posts/FeedErrorMessage.tsx:99
+#~ msgid "We're sorry, but this content is not viewable without a Bluesky account."
+#~ msgstr ""
+
+#: src/view/com/posts/FeedErrorMessage.tsx:105
+#~ msgid "We're sorry, but this feed is currently receiving high traffic and is temporarily unavailable. Please try again later."
+#~ msgstr ""
+
+#: src/view/screens/Search/Search.tsx:243
+msgid "We're sorry, but your search could not be completed. Please try again in a few minutes."
+msgstr "Lamentamos, mas sua busca não pôde ser concluída. Por favor, tente novamente em alguns minutos."
+
+#: src/view/screens/NotFound.tsx:48
+msgid "We're sorry! We can't find the page you were looking for."
+msgstr "Sentimos muito! Não conseguimos encontrar a página que você estava procurando."
+
+#: src/view/com/auth/onboarding/WelcomeMobile.tsx:46
+msgid "Welcome to <0>Bluesky0>"
+msgstr "Bem-vindo ao <0>Bluesky0>"
+
+#: src/view/com/modals/report/Modal.tsx:169
+msgid "What is the issue with this {collectionName}?"
+msgstr "Qual é o problema com este {collectionName}?"
+
+#: src/view/com/auth/SplashScreen.tsx:34
+msgid "What's up?"
+msgstr "Que há de novo?"
+
+#: src/view/com/modals/lang-settings/PostLanguagesSettings.tsx:78
+msgid "Which languages are used in this post?"
+msgstr "Quais idiomas são usados neste post?"
+
+#: src/view/com/modals/lang-settings/ContentLanguagesSettings.tsx:77
+msgid "Which languages would you like to see in your algorithmic feeds?"
+msgstr "Quais idiomas você gostaria de ver nos seus feeds algoritmo?"
+
+#: src/view/com/composer/threadgate/ThreadgateBtn.tsx:47
+#: src/view/com/modals/Threadgate.tsx:66
+msgid "Who can reply"
+msgstr "Quem pode responder"
+
+#: src/view/com/threadgate/WhoCanReply.tsx:79
+#~ msgid "Who can reply?"
+#~ msgstr ""
+
+#: src/view/com/modals/crop-image/CropImage.web.tsx:102
+msgid "Wide"
+msgstr "Largo"
+
+#: src/view/com/composer/Composer.tsx:418
+msgid "Write post"
+msgstr "Escrever post"
+
+#: src/view/com/composer/Prompt.tsx:33
+msgid "Write your reply"
+msgstr "Escreva sua resposta"
+
+#: src/view/screens/PreferencesHomeFeed.tsx:126
+#: src/view/screens/PreferencesHomeFeed.tsx:198
+#: src/view/screens/PreferencesHomeFeed.tsx:233
+#: src/view/screens/PreferencesHomeFeed.tsx:268
+#: src/view/screens/PreferencesThreads.tsx:106
+#: src/view/screens/PreferencesThreads.tsx:129
+msgid "Yes"
+msgstr "Sim"
+
+#: src/view/com/auth/create/Step1.tsx:106
+msgid "You can change hosting providers at any time."
+msgstr "Você pode alterar os provedores de hospedagem a qualquer momento."
+
+#: src/view/com/auth/login/Login.tsx:158
+#: src/view/com/auth/login/PasswordUpdatedForm.tsx:31
+msgid "You can now sign in with your new password."
+msgstr "Agora você pode entrar com a sua nova senha."
+
+#: src/view/com/modals/InviteCodes.tsx:64
+msgid "You don't have any invite codes yet! We'll send you some when you've been on Bluesky for a little longer."
+msgstr "Você ainda não tem nenhum código de convite! Nós lhe enviaremos alguns quando você estiver no Bluesky por mais um pouco de tempo."
+
+#: src/view/screens/SavedFeeds.tsx:102
+msgid "You don't have any pinned feeds."
+msgstr "Você não tem feeds fixados."
+
+#: src/view/screens/Feeds.tsx:383
+msgid "You don't have any saved feeds!"
+msgstr "Você não tem feeds salvos!"
+
+#: src/view/screens/SavedFeeds.tsx:135
+msgid "You don't have any saved feeds."
+msgstr "Você não tem feeds salvos."
+
+#: src/view/com/post-thread/PostThread.tsx:381
+msgid "You have blocked the author or you have been blocked by the author."
+msgstr "Você bloqueou o autor ou foi bloqueado pelo autor."
+
+#: src/view/com/feeds/ProfileFeedgens.tsx:134
+msgid "You have no feeds."
+msgstr "Você não tem feeds."
+
+#: src/view/com/lists/MyLists.tsx:89
+#: src/view/com/lists/ProfileLists.tsx:138
+msgid "You have no lists."
+msgstr "Você não tem listas."
+
+#: src/view/screens/ModerationBlockedAccounts.tsx:132
+msgid "You have not blocked any accounts yet. To block an account, go to their profile and selected \"Block account\" from the menu on their account."
+msgstr "Você ainda não bloqueou nenhuma conta. Para bloquear uma conta, acesse o perfil e selecione \"Bloquear conta\" no menu da conta."
+
+#: src/view/screens/AppPasswords.tsx:86
+msgid "You have not created any app passwords yet. You can create one by pressing the button below."
+msgstr "Você ainda não criou nenhuma senha do aplicativo. Você pode criar uma pressionando o botão abaixo."
+
+#: src/view/screens/ModerationMutedAccounts.tsx:131
+msgid "You have not muted any accounts yet. To mute an account, go to their profile and selected \"Mute account\" from the menu on their account."
+msgstr "Você ainda não silenciou nenhuma conta. Para silenciar uma conta, vá ao perfil deles e selecione \"Silenciar conta\" no menu em sua conta."
+
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:81
+msgid "You will receive an email with a \"reset code.\" Enter that code here, then enter your new password."
+msgstr "Você receberá um email com um \"código de redefinição\". Digite esse código aqui, e então digite sua nova senha."
+
+#: src/view/com/auth/create/Step2.tsx:58
+msgid "Your account"
+msgstr "Sua conta"
+
+#: src/view/com/auth/create/Step2.tsx:146
+msgid "Your birth date"
+msgstr "Sua data de nascimento"
+
+#: src/view/com/auth/create/state.ts:102
+msgid "Your email appears to be invalid."
+msgstr "Seu email parece ser inválido."
+
+#: src/view/com/modals/Waitlist.tsx:107
+msgid "Your email has been saved! We'll be in touch soon."
+msgstr "Seu email foi salvo! Entraremos em contato em breve."
+
+#: src/view/com/modals/ChangeEmail.tsx:125
+msgid "Your email has been updated but not verified. As a next step, please verify your new email."
+msgstr "Seu email foi atualizado mas não foi verificado. Como próximo passo, por favor verifique seu novo email."
+
+#: src/view/com/modals/VerifyEmail.tsx:108
+msgid "Your email has not yet been verified. This is an important security step which we recommend."
+msgstr "Seu email ainda não foi verificado. Esta é uma etapa de segurança importante que recomendamos."
+
+#: src/view/com/auth/create/Step3.tsx:42
+#: src/view/com/modals/ChangeHandle.tsx:270
+msgid "Your full handle will be"
+msgstr "Seu identificador completo será"
+
+#: src/view/com/auth/create/Step1.tsx:53
+msgid "Your hosting provider"
+msgstr "Seu provedor de hospedagem"
+
+#: src/view/screens/Settings.tsx:402
+#: src/view/shell/desktop/RightNav.tsx:137
+#: src/view/shell/Drawer.tsx:655
+msgid "Your invite codes are hidden when logged in using an App Password"
+msgstr "Seus códigos de convite estão ocultos quando conectado com uma Senha do Aplicativo"
+
+#: src/view/com/auth/onboarding/WelcomeMobile.tsx:59
+msgid "Your posts, likes, and blocks are public. Mutes are private."
+msgstr "Suas postagens, curtidas e blocos são públicos. Mudos são privados."
+
+#: src/view/com/modals/SwitchAccount.tsx:82
+msgid "Your profile"
+msgstr "Seu perfil"
+
+#: src/view/screens/Moderation.tsx:205
+#~ msgid "Your profile and account will not be visible to anyone visiting the Bluesky app without an account, or to account holders who are not logged in. Enabling this will not make your profile private."
+#~ msgstr ""
+
+#: src/view/screens/Moderation.tsx:220
+#~ msgid "Your profile and content will not be visible to anyone visiting the Bluesky app without an account. Enabling this will not make your profile private."
+#~ msgstr ""
+
+#: src/view/screens/Moderation.tsx:220
+#~ msgid "Your profile and posts will not be visible to people visiting the Bluesky app or website without having an account and being logged in."
+#~ msgstr ""
+
+#: src/view/com/auth/create/Step3.tsx:28
+msgid "Your user handle"
+msgstr "Seu identificador de usuário"
diff --git a/src/locale/locales/uk/messages.po b/src/locale/locales/uk/messages.po
new file mode 100644
index 0000000000..114b3164b0
--- /dev/null
+++ b/src/locale/locales/uk/messages.po
@@ -0,0 +1,2739 @@
+msgid ""
+msgstr ""
+"POT-Creation-Date: 2023-11-05 16:01-0800\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: @lingui/cli\n"
+"Language: uk\n"
+"Project-Id-Version: bsky-app-ua\n"
+"Report-Msgid-Bugs-To: \n"
+"PO-Revision-Date: 2024-01-09 23:26\n"
+"Last-Translator: \n"
+"Language-Team: Ukrainian\n"
+"Plural-Forms: nplurals=4; plural=((n%10==1 && n%100!=11) ? 0 : ((n%10 >= 2 && n%10 <=4 && (n%100 < 12 || n%100 > 14)) ? 1 : ((n%10 == 0 || (n%10 >= 5 && n%10 <=9)) || (n%100 >= 11 && n%100 <= 14)) ? 2 : 3));\n"
+"X-Crowdin-Project: bsky-app-ua\n"
+"X-Crowdin-Project-ID: 636504\n"
+"X-Crowdin-Language: uk\n"
+"X-Crowdin-File: /main/src/locale/locales/en/messages.po\n"
+"X-Crowdin-File-ID: 14\n"
+
+#: src/view/screens/Profile.tsx:214
+#~ msgid "- end of feed -"
+#~ msgstr ""
+
+#: src/view/com/modals/SelfLabel.tsx:138
+#~ msgid ". This warning is only available for posts with media attached."
+#~ msgstr ""
+
+#: src/view/shell/desktop/RightNav.tsx:168
+msgid "{0, plural, one {# invite code available} other {# invite codes available}}"
+msgstr "{0, plural, one {Доступний # код запрошення} few {Доступно # коди запрошення} other {Доступно # кодів запрошення}}"
+
+#: src/view/com/modals/Repost.tsx:44
+msgid "{0}"
+msgstr "{0}"
+
+#: src/view/com/modals/CreateOrEditList.tsx:176
+msgid "{0} {purposeLabel} List"
+msgstr "{0} Список {purposeLabel}"
+
+#: src/view/shell/desktop/RightNav.tsx:151
+msgid "{invitesAvailable, plural, one {Invite codes: # available} other {Invite codes: # available}}"
+msgstr "{invitesAvailable, plural, one {Коди запрошень: доступно #} other {Коди запрошень: доступно #}}"
+
+#: src/view/screens/Settings.tsx:407
+#: src/view/shell/Drawer.tsx:659
+msgid "{invitesAvailable} invite code available"
+msgstr "Доступний код запрошення"
+
+#: src/view/screens/Settings.tsx:409
+#: src/view/shell/Drawer.tsx:661
+msgid "{invitesAvailable} invite codes available"
+msgstr "Доступно {invitesAvailable} кодів запрошення"
+
+#: src/view/screens/Search/Search.tsx:87
+msgid "{message}"
+msgstr "{message}"
+
+#: src/view/com/threadgate/WhoCanReply.tsx:158
+msgid "<0/> members"
+msgstr "<0/> учасників"
+
+#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:30
+msgid "<0>Choose your0><1>Recommended1><2>Feeds2>"
+msgstr "<0>Оберіть свої0><1>рекомендовані1><2>стрічки2>"
+
+#: src/view/com/auth/onboarding/RecommendedFollows.tsx:37
+msgid "<0>Follow some0><1>Recommended1><2>Users2>"
+msgstr "<0>Підпишіться на деяких 0><1>рекомендованих 1><2>користувачів2>"
+
+#: src/view/com/modals/AddAppPasswords.tsx:132
+#~ msgid "<0>Here is your app password.0> Use this to sign into the other app along with your handle."
+#~ msgstr ""
+
+#: src/view/screens/Moderation.tsx:212
+#~ msgid "<0>Note: This setting may not be respected by third-party apps that display Bluesky content.0>"
+#~ msgstr ""
+
+#: src/view/screens/Moderation.tsx:212
+#~ msgid "<0>Note: Your profile and posts will remain publicly available. Third-party apps that display Bluesky content may not respect this setting.0>"
+#~ msgstr ""
+
+#: src/view/com/util/moderation/LabelInfo.tsx:45
+msgid "A content warning has been applied to this {0}."
+msgstr "Попередження про вміст було додано до цього {0}."
+
+#: src/lib/hooks/useOTAUpdate.ts:16
+msgid "A new version of the app is available. Please update to continue using the app."
+msgstr "Доступна нова версія. Будь ласка, оновіть застосунок, щоб продовжити ним користуватися."
+
+#: src/view/com/modals/EditImage.tsx:299
+#: src/view/screens/Settings.tsx:417
+msgid "Accessibility"
+msgstr "Доступність"
+
+#: src/view/com/auth/login/LoginForm.tsx:163
+#: src/view/screens/Settings.tsx:286
+msgid "Account"
+msgstr "Обліковий запис"
+
+#: src/view/com/util/AccountDropdownBtn.tsx:41
+msgid "Account options"
+msgstr "Параметри облікового запису"
+
+#: src/view/com/modals/ListAddRemoveUsers.tsx:264
+#: src/view/com/modals/UserAddRemoveLists.tsx:193
+#: src/view/screens/ProfileList.tsx:763
+msgid "Add"
+msgstr "Додати"
+
+#: src/view/com/modals/SelfLabel.tsx:56
+msgid "Add a content warning"
+msgstr "Додати попередження про вміст"
+
+#: src/view/screens/ProfileList.tsx:753
+msgid "Add a user to this list"
+msgstr "Додати користувача до списку"
+
+#: src/view/screens/Settings.tsx:355
+#: src/view/screens/Settings.tsx:364
+msgid "Add account"
+msgstr "Додати обліковий запис"
+
+#: src/view/com/composer/photos/Gallery.tsx:119
+#: src/view/com/composer/photos/Gallery.tsx:180
+#: src/view/com/modals/AltImage.tsx:93
+msgid "Add alt text"
+msgstr "Додати альтернативний текст"
+
+#: src/view/com/modals/report/InputIssueDetails.tsx:41
+#: src/view/com/modals/report/Modal.tsx:191
+msgid "Add details"
+msgstr "Додайте подробиці"
+
+#: src/view/com/modals/report/Modal.tsx:194
+msgid "Add details to report"
+msgstr "Додайте подробиці до скарги"
+
+#: src/view/com/composer/Composer.tsx:447
+msgid "Add link card"
+msgstr "Додати попередній перегляд"
+
+#: src/view/com/composer/Composer.tsx:450
+msgid "Add link card:"
+msgstr "Додати попередній перегляд:"
+
+#: src/view/com/modals/ChangeHandle.tsx:415
+msgid "Add the following DNS record to your domain:"
+msgstr "Додайте наступний DNS-запис до вашого домену:"
+
+#: src/view/com/profile/ProfileHeader.tsx:353
+msgid "Add to Lists"
+msgstr "Додати до списку"
+
+#: src/view/screens/ProfileFeed.tsx:271
+msgid "Add to my feeds"
+msgstr "Додати до моїх стрічок"
+
+#: src/view/com/modals/ListAddRemoveUsers.tsx:191
+#: src/view/com/modals/UserAddRemoveLists.tsx:128
+msgid "Added to list"
+msgstr "Додано до списку"
+
+#: src/view/screens/PreferencesHomeFeed.tsx:170
+msgid "Adjust the number of likes a reply must have to be shown in your feed."
+msgstr "Налаштуйте мінімальну кількість вподобань для того щоб відповідь відобразилася у вашій стрічці."
+
+#: src/view/com/modals/SelfLabel.tsx:75
+msgid "Adult Content"
+msgstr "Вміст для дорослих"
+
+#: src/view/screens/Settings.tsx:602
+msgid "Advanced"
+msgstr "Розширені"
+
+#: src/view/com/composer/photos/Gallery.tsx:130
+msgid "ALT"
+msgstr "ALT"
+
+#: src/view/com/modals/EditImage.tsx:315
+msgid "Alt text"
+msgstr "Альтернативний текст"
+
+#: src/view/com/composer/photos/Gallery.tsx:209
+msgid "Alt text describes images for blind and low-vision users, and helps give context to everyone."
+msgstr "Альтернативний текст описує зображення для незрячих та користувачів із вадами зору, та надає додатковий контекст для всіх."
+
+#: src/view/com/modals/VerifyEmail.tsx:118
+msgid "An email has been sent to {0}. It includes a confirmation code which you can enter below."
+msgstr "Було надіслано лист на адресу {0}. Він містить код підтвердження, який можна ввести нижче."
+
+#: src/view/com/modals/ChangeEmail.tsx:119
+msgid "An email has been sent to your previous address, {0}. It includes a confirmation code which you can enter below."
+msgstr "Було надіслано лист на вашу попередню адресу, {0}. Він містить код підтвердження, який ви можете ввести нижче."
+
+#: src/view/com/notifications/FeedItem.tsx:237
+#: src/view/com/threadgate/WhoCanReply.tsx:178
+msgid "and"
+msgstr "та"
+
+#: src/view/screens/LanguageSettings.tsx:95
+msgid "App Language"
+msgstr "Мова застосунку"
+
+#: src/view/screens/Settings.tsx:622
+msgid "App passwords"
+msgstr "Паролі для застосунків"
+
+#: src/view/screens/AppPasswords.tsx:186
+msgid "App Passwords"
+msgstr "Паролі для застосунків"
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:236
+msgid "Appeal content warning"
+msgstr "Оскаржити попередження про вміст"
+
+#: src/view/com/modals/AppealLabel.tsx:65
+msgid "Appeal Content Warning"
+msgstr "Оскаржити попередження про вміст"
+
+#: src/view/com/modals/AppealLabel.tsx:65
+#~ msgid "Appeal Decision"
+#~ msgstr ""
+
+#: src/view/com/util/moderation/LabelInfo.tsx:52
+msgid "Appeal this decision"
+msgstr "Оскаржити це рішення"
+
+#: src/view/com/util/moderation/LabelInfo.tsx:56
+msgid "Appeal this decision."
+msgstr "Оскаржити це рішення"
+
+#: src/view/screens/Settings.tsx:432
+msgid "Appearance"
+msgstr "Оформлення"
+
+#: src/view/screens/Moderation.tsx:206
+#~ msgid "Apps that respect this setting, including the official Bluesky app and bsky.app website, won't show your content to logged out users."
+#~ msgstr ""
+
+#: src/view/screens/AppPasswords.tsx:223
+msgid "Are you sure you want to delete the app password \"{name}\"?"
+msgstr "Ви дійсно хочете видалити пароль для застосунку \"{name}\"?"
+
+#: src/view/com/composer/Composer.tsx:143
+msgid "Are you sure you'd like to discard this draft?"
+msgstr "Ви дійсно бажаєте видалити цю чернетку?"
+
+#: src/view/screens/ProfileList.tsx:353
+msgid "Are you sure?"
+msgstr "Ви впевнені?"
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:219
+msgid "Are you sure? This cannot be undone."
+msgstr "Ви впевнені? Це не можна буде скасувати."
+
+#: src/view/com/modals/SelfLabel.tsx:123
+msgid "Artistic or non-erotic nudity."
+msgstr "Художня або нееротична оголеність."
+
+#: src/view/screens/Moderation.tsx:189
+#~ msgid "Ask apps to limit the visibility of my account"
+#~ msgstr ""
+
+#: src/view/com/auth/create/CreateAccount.tsx:141
+#: src/view/com/auth/login/ChooseAccountForm.tsx:151
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:166
+#: src/view/com/auth/login/LoginForm.tsx:254
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:148
+#: src/view/com/modals/report/InputIssueDetails.tsx:46
+#: src/view/com/post-thread/PostThread.tsx:388
+#: src/view/com/post-thread/PostThread.tsx:438
+#: src/view/com/post-thread/PostThread.tsx:446
+#: src/view/com/profile/ProfileHeader.tsx:672
+msgid "Back"
+msgstr "Назад"
+
+#: src/view/screens/Settings.tsx:461
+msgid "Basics"
+msgstr "Основні"
+
+#: src/view/com/auth/create/Step2.tsx:156
+#: src/view/com/modals/BirthDateSettings.tsx:73
+msgid "Birthday"
+msgstr "Дата народження"
+
+#: src/view/screens/Settings.tsx:312
+msgid "Birthday:"
+msgstr "Дата народження:"
+
+#: src/view/com/profile/ProfileHeader.tsx:282
+#: src/view/com/profile/ProfileHeader.tsx:389
+msgid "Block Account"
+msgstr "Заблокувати"
+
+#: src/view/screens/ProfileList.tsx:523
+msgid "Block accounts"
+msgstr "Заблокувати облікові записи"
+
+#: src/view/screens/ProfileList.tsx:473
+msgid "Block list"
+msgstr "Заблокувати список"
+
+#: src/view/screens/ProfileList.tsx:308
+msgid "Block these accounts?"
+msgstr "Заблокувати ці облікові записи?"
+
+#: src/view/screens/Moderation.tsx:123
+msgid "Blocked accounts"
+msgstr "Заблоковані облікові записи"
+
+#: src/view/screens/ModerationBlockedAccounts.tsx:107
+msgid "Blocked Accounts"
+msgstr "Заблоковані облікові записи"
+
+#: src/view/com/profile/ProfileHeader.tsx:284
+msgid "Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you."
+msgstr "Заблоковані облікові записи не можуть вам відповідати, згадувати вас у своїх постах, і взаємодіяти з вами будь-яким іншим чином."
+
+#: src/view/screens/ModerationBlockedAccounts.tsx:115
+msgid "Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you. You will not see their content and they will be prevented from seeing yours."
+msgstr "Заблоковані облікові записи не можуть вам відповідати, згадувати вас у своїх постах, і взаємодіяти з вами будь-яким іншим чином. Ви не будете бачити їхні пости і вони не будуть бачити ваші."
+
+#: src/view/com/post-thread/PostThread.tsx:250
+msgid "Blocked post."
+msgstr "Заблокований пост."
+
+#: src/view/screens/ProfileList.tsx:310
+msgid "Blocking is public. Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you."
+msgstr "Блокування - це відкрита інформація. Заблоковані користувачі не можуть відповісти у ваших темах, згадувати вас або іншим чином взаємодіяти з вами."
+
+#: src/view/com/auth/HomeLoggedOutCTA.tsx:93
+msgid "Blog"
+msgstr "Блог"
+
+#: src/view/com/auth/HomeLoggedOutCTA.tsx:31
+msgid "Bluesky"
+msgstr "Bluesky"
+
+#: src/view/com/auth/onboarding/WelcomeMobile.tsx:80
+msgid "Bluesky is flexible."
+msgstr "Bluesky гнучкий."
+
+#: src/view/com/auth/onboarding/WelcomeMobile.tsx:69
+msgid "Bluesky is open."
+msgstr "Bluesky відкритий."
+
+#: src/view/com/auth/onboarding/WelcomeMobile.tsx:56
+msgid "Bluesky is public."
+msgstr "Bluesky публічний."
+
+#: src/view/com/modals/Waitlist.tsx:70
+msgid "Bluesky uses invites to build a healthier community. If you don't know anybody with an invite, you can sign up for the waitlist and we'll send one soon."
+msgstr "Bluesky використовує систему запрошень для створення здоровішої спільноти. Якщо Ви не знаєте когось хто має запрошення, ви можете записатися до черги очікування і ми скоро надішлемо вам код запрошення."
+
+#: src/view/screens/Moderation.tsx:225
+msgid "Bluesky will not show your profile and posts to logged-out users. Other apps may not honor this request. This does not make your account private."
+msgstr "Bluesky не буде показувати ваш профіль і повідомлення відвідувачам без облікового запису. Інші застосунки можуть не слідувати цьому запиту. Це не робить ваш обліковий запис приватним."
+
+#: src/view/com/modals/ServerInput.tsx:78
+msgid "Bluesky.Social"
+msgstr "Bluesky.Social"
+
+#: src/view/screens/Settings.tsx:751
+msgid "Build version {0} {1}"
+msgstr "Версія {0} {1}"
+
+#: src/view/com/auth/HomeLoggedOutCTA.tsx:87
+msgid "Business"
+msgstr "Організація"
+
+#: src/view/com/composer/photos/OpenCameraBtn.tsx:60
+#: src/view/com/util/UserAvatar.tsx:221
+#: src/view/com/util/UserBanner.tsx:38
+msgid "Camera"
+msgstr "Камера"
+
+#: src/view/com/modals/AddAppPasswords.tsx:214
+msgid "Can only contain letters, numbers, spaces, dashes, and underscores. Must be at least 4 characters long, but no more than 32 characters long."
+msgstr "Може містити лише літери, цифри, пробіли, дефіси та знаки підкреслення, і мати довжину від 4 до 32 символів."
+
+#: src/view/com/composer/Composer.tsx:294
+#: src/view/com/composer/Composer.tsx:297
+#: src/view/com/modals/ChangeEmail.tsx:218
+#: src/view/com/modals/ChangeEmail.tsx:220
+#: src/view/com/modals/Confirm.tsx:88
+#: src/view/com/modals/CreateOrEditList.tsx:267
+#: src/view/com/modals/CreateOrEditList.tsx:272
+#: src/view/com/modals/DeleteAccount.tsx:150
+#: src/view/com/modals/DeleteAccount.tsx:223
+#: src/view/com/modals/EditImage.tsx:323
+#: src/view/com/modals/EditProfile.tsx:248
+#: src/view/com/modals/LinkWarning.tsx:85
+#: src/view/com/modals/Repost.tsx:73
+#: src/view/com/modals/Waitlist.tsx:136
+#: src/view/screens/Search/Search.tsx:601
+#: src/view/shell/desktop/Search.tsx:182
+msgid "Cancel"
+msgstr "Скасувати"
+
+#: src/view/com/modals/DeleteAccount.tsx:146
+#: src/view/com/modals/DeleteAccount.tsx:219
+msgid "Cancel account deletion"
+msgstr "Скасувати видалення облікового запису"
+
+#: src/view/com/modals/AltImage.tsx:123
+#~ msgid "Cancel add image alt text"
+#~ msgstr ""
+
+#: src/view/com/modals/ChangeHandle.tsx:149
+msgid "Cancel change handle"
+msgstr "Скасувати зміну псевдоніму"
+
+#: src/view/com/modals/crop-image/CropImage.web.tsx:134
+msgid "Cancel image crop"
+msgstr "Скасувати обрізання зображення"
+
+#: src/view/com/modals/EditProfile.tsx:243
+msgid "Cancel profile editing"
+msgstr "Скасувати редагування профілю"
+
+#: src/view/com/modals/Repost.tsx:64
+msgid "Cancel quote post"
+msgstr "Скасувати цитування повідомлення"
+
+#: src/view/com/modals/ListAddRemoveUsers.tsx:87
+#: src/view/shell/desktop/Search.tsx:178
+msgid "Cancel search"
+msgstr "Скасувати пошук"
+
+#: src/view/com/modals/Waitlist.tsx:132
+msgid "Cancel waitlist signup"
+msgstr "Скасувати запис у чергу очікування"
+
+#: src/view/screens/Settings.tsx:306
+msgid "Change"
+msgstr "Змінити"
+
+#: src/view/screens/Settings.tsx:634
+#: src/view/screens/Settings.tsx:643
+msgid "Change handle"
+msgstr "Змінити псевдонім"
+
+#: src/view/com/modals/ChangeHandle.tsx:161
+msgid "Change Handle"
+msgstr "Змінити псевдонім"
+
+#: src/view/com/modals/VerifyEmail.tsx:141
+msgid "Change my email"
+msgstr "Змінити адресу електронної пошти"
+
+#: src/view/com/modals/ChangeEmail.tsx:109
+msgid "Change Your Email"
+msgstr "Змінити адресу електронної пошти"
+
+#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:121
+msgid "Check out some recommended feeds. Tap + to add them to your list of pinned feeds."
+msgstr "Подивіться на деякі з рекомендованих стрічок. Натисніть +, щоб додати їх до свого списку закріплених стрічок."
+
+#: src/view/com/auth/onboarding/RecommendedFollows.tsx:185
+msgid "Check out some recommended users. Follow them to see similar users."
+msgstr "Подивіться на деяких рекомендованих користувачів. Підпишіться на них щоб бачити схожих користувачів."
+
+#: src/view/com/modals/DeleteAccount.tsx:163
+msgid "Check your inbox for an email with the confirmation code to enter below:"
+msgstr "Пошукайте у вашій поштовій скриньці лист із кодом, щоб ввести нижче:"
+
+#: src/view/com/modals/Threadgate.tsx:72
+msgid "Choose \"Everybody\" or \"Nobody\""
+msgstr "Виберіть \"Усі\" або \"Ніхто\""
+
+#: src/view/com/modals/ServerInput.tsx:38
+msgid "Choose Service"
+msgstr "Оберіть хостинг-провайдера"
+
+#: src/view/com/auth/onboarding/WelcomeMobile.tsx:83
+msgid "Choose the algorithms that power your experience with custom feeds."
+msgstr "Автори стрічок можуть обирати будь-які алгоритми для формування стрічки саме для вас."
+
+#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:65
+#~ msgid "Choose your"
+#~ msgstr ""
+
+#: src/view/com/auth/create/Step2.tsx:127
+msgid "Choose your password"
+msgstr "Вкажіть пароль"
+
+#: src/view/screens/Settings.tsx:727
+msgid "Clear all legacy storage data"
+msgstr ""
+
+#: src/view/screens/Settings.tsx:729
+msgid "Clear all legacy storage data (restart after this)"
+msgstr ""
+
+#: src/view/screens/Settings.tsx:739
+msgid "Clear all storage data"
+msgstr ""
+
+#: src/view/screens/Settings.tsx:741
+msgid "Clear all storage data (restart after this)"
+msgstr ""
+
+#: src/view/com/util/forms/SearchInput.tsx:74
+#: src/view/screens/Search/Search.tsx:582
+msgid "Clear search query"
+msgstr "Очистити пошуковий запит"
+
+#: src/view/com/auth/login/PasswordUpdatedForm.tsx:38
+msgid "Close alert"
+msgstr "Закрити сповіщення"
+
+#: src/view/com/util/BottomSheetCustomBackdrop.tsx:33
+msgid "Close bottom drawer"
+msgstr "Закрити нижнє меню"
+
+#: src/view/com/lightbox/ImageViewing/components/ImageDefaultHeader.tsx:26
+msgid "Close image"
+msgstr "Закрити зображення"
+
+#: src/view/com/lightbox/Lightbox.web.tsx:112
+msgid "Close image viewer"
+msgstr "Закрити перегляд зображення"
+
+#: src/view/shell/index.web.tsx:49
+msgid "Close navigation footer"
+msgstr "Закрити панель навігації"
+
+#: src/view/screens/CommunityGuidelines.tsx:32
+msgid "Community Guidelines"
+msgstr "Правила спільноти"
+
+#: src/view/com/composer/Prompt.tsx:24
+msgid "Compose reply"
+msgstr "Відповісти"
+
+#: src/view/com/modals/AppealLabel.tsx:98
+#: src/view/com/modals/Confirm.tsx:75
+#: src/view/com/modals/SelfLabel.tsx:154
+#: src/view/com/modals/VerifyEmail.tsx:225
+#: src/view/screens/PreferencesHomeFeed.tsx:305
+#: src/view/screens/PreferencesThreads.tsx:159
+msgid "Confirm"
+msgstr "Підтвердити"
+
+#: src/view/com/modals/ChangeEmail.tsx:193
+#: src/view/com/modals/ChangeEmail.tsx:195
+msgid "Confirm Change"
+msgstr "Підтвердити"
+
+#: src/view/com/modals/lang-settings/ConfirmLanguagesButton.tsx:34
+msgid "Confirm content language settings"
+msgstr "Підтвердити перелік мов"
+
+#: src/view/com/modals/DeleteAccount.tsx:209
+msgid "Confirm delete account"
+msgstr "Підтвердити видалення облікового запису"
+
+#: src/view/com/modals/ChangeEmail.tsx:157
+#: src/view/com/modals/DeleteAccount.tsx:176
+#: src/view/com/modals/VerifyEmail.tsx:159
+msgid "Confirmation code"
+msgstr "Код підтвердження"
+
+#: src/view/com/auth/create/CreateAccount.tsx:174
+#: src/view/com/auth/login/LoginForm.tsx:273
+msgid "Connecting..."
+msgstr "З’єднання..."
+
+#: src/view/screens/Moderation.tsx:81
+msgid "Content filtering"
+msgstr "Фільтрування вмісту"
+
+#: src/view/com/modals/ContentFilteringSettings.tsx:44
+msgid "Content Filtering"
+msgstr "Фільтрування вмісту"
+
+#: src/view/com/modals/lang-settings/ContentLanguagesSettings.tsx:74
+#: src/view/screens/LanguageSettings.tsx:278
+msgid "Content Languages"
+msgstr "Мови"
+
+#: src/view/com/util/moderation/ScreenHider.tsx:78
+msgid "Content Warning"
+msgstr "Попередження про вміст"
+
+#: src/view/com/composer/labels/LabelsBtn.tsx:31
+msgid "Content warnings"
+msgstr "Попередження про вміст"
+
+#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:148
+#: src/view/com/auth/onboarding/RecommendedFollows.tsx:209
+msgid "Continue"
+msgstr "Продовжити"
+
+#: src/view/com/modals/AddAppPasswords.tsx:193
+#: src/view/com/modals/InviteCodes.tsx:179
+msgid "Copied"
+msgstr "Скопійовано"
+
+#: src/view/com/modals/AddAppPasswords.tsx:186
+msgid "Copy"
+msgstr "Скопіювати"
+
+#: src/view/screens/ProfileList.tsx:385
+msgid "Copy link to list"
+msgstr "Скопіювати посилання"
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:139
+msgid "Copy link to post"
+msgstr "Скопіювати посилання"
+
+#: src/view/com/profile/ProfileHeader.tsx:338
+msgid "Copy link to profile"
+msgstr "Скопіювати посилання"
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:125
+msgid "Copy post text"
+msgstr "Скопіювати текст"
+
+#: src/view/screens/CopyrightPolicy.tsx:29
+msgid "Copyright Policy"
+msgstr "Політика захисту авторського права"
+
+#: src/view/screens/ProfileFeed.tsx:95
+msgid "Could not load feed"
+msgstr "Не вдалося завантажити стрічку"
+
+#: src/view/screens/ProfileList.tsx:839
+msgid "Could not load list"
+msgstr "Не вдалося завантажити список"
+
+#: src/view/com/auth/HomeLoggedOutCTA.tsx:62
+#: src/view/com/auth/SplashScreen.tsx:46
+msgid "Create a new account"
+msgstr "Створити новий обліковий запис"
+
+#: src/view/com/auth/create/CreateAccount.tsx:121
+msgid "Create Account"
+msgstr "Створити обліковий запис"
+
+#: src/view/com/auth/HomeLoggedOutCTA.tsx:54
+#: src/view/com/auth/SplashScreen.tsx:43
+msgid "Create new account"
+msgstr "Створити новий обліковий запис"
+
+#: src/view/screens/AppPasswords.tsx:248
+msgid "Created {0}"
+msgstr "Створено: {0}"
+
+#: src/view/com/modals/ChangeHandle.tsx:387
+#: src/view/com/modals/ServerInput.tsx:102
+msgid "Custom domain"
+msgstr "Власний домен"
+
+#: src/view/screens/PreferencesExternalEmbeds.tsx:55
+msgid "Customize media from external sites."
+msgstr "Налаштування медіа зі сторонніх вебсайтів."
+
+#: src/view/screens/Settings.tsx:648
+msgid "Danger Zone"
+msgstr "Небезпечна зона"
+
+#: src/view/screens/Settings.tsx:411
+#~ msgid "Dark"
+#~ msgstr ""
+
+#: src/view/screens/Settings.tsx:655
+msgid "Delete account"
+msgstr "Видалити обліковий запис"
+
+#: src/view/com/modals/DeleteAccount.tsx:83
+msgid "Delete Account"
+msgstr "Видалити обліковий запис"
+
+#: src/view/screens/AppPasswords.tsx:221
+#: src/view/screens/AppPasswords.tsx:241
+msgid "Delete app password"
+msgstr "Видалити пароль для застосунку"
+
+#: src/view/screens/ProfileList.tsx:352
+#: src/view/screens/ProfileList.tsx:412
+msgid "Delete List"
+msgstr "Видалити список"
+
+#: src/view/com/modals/DeleteAccount.tsx:212
+msgid "Delete my account"
+msgstr "Видалити мій обліковий запис"
+
+#: src/view/screens/Settings.tsx:665
+msgid "Delete my account…"
+msgstr "Видалити мій обліковий запис…"
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:214
+msgid "Delete post"
+msgstr "Видалити пост"
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:218
+msgid "Delete this post?"
+msgstr "Видалити цей пост?"
+
+#: src/view/com/post-thread/PostThread.tsx:242
+msgid "Deleted post."
+msgstr "Видалений пост."
+
+#: src/view/com/modals/CreateOrEditList.tsx:218
+#: src/view/com/modals/CreateOrEditList.tsx:234
+#: src/view/com/modals/EditProfile.tsx:197
+#: src/view/com/modals/EditProfile.tsx:209
+msgid "Description"
+msgstr "Опис"
+
+#: src/view/com/auth/create/Step1.tsx:96
+msgid "Dev Server"
+msgstr ""
+
+#: src/view/screens/Settings.tsx:670
+msgid "Developer Tools"
+msgstr "Інструменти розробника"
+
+#: src/view/com/composer/Composer.tsx:211
+msgid "Did you want to say anything?"
+msgstr "Порожній пост. Ви хотіли щось написати?"
+
+#: src/view/com/composer/Composer.tsx:144
+msgid "Discard"
+msgstr "Видалити"
+
+#: src/view/com/composer/Composer.tsx:138
+msgid "Discard draft"
+msgstr "Відкинути чернетку"
+
+#: src/view/screens/Moderation.tsx:207
+msgid "Discourage apps from showing my account to logged-out users"
+msgstr "Попросити застосунки не показувати мій обліковий запис без входу"
+
+#: src/view/screens/Feeds.tsx:405
+msgid "Discover new feeds"
+msgstr "Відкрийте для себе нові стрічки"
+
+#: src/view/com/modals/EditProfile.tsx:191
+msgid "Display name"
+msgstr "Ім'я"
+
+#: src/view/com/modals/EditProfile.tsx:179
+msgid "Display Name"
+msgstr "Ім'я"
+
+#: src/view/com/modals/ChangeHandle.tsx:485
+msgid "Domain verified!"
+msgstr "Домен перевірено!"
+
+#: src/view/com/auth/onboarding/RecommendedFollows.tsx:86
+#: src/view/com/modals/AltImage.tsx:115
+#: src/view/com/modals/ContentFilteringSettings.tsx:88
+#: src/view/com/modals/ContentFilteringSettings.tsx:96
+#: src/view/com/modals/crop-image/CropImage.web.tsx:152
+#: src/view/com/modals/EditImage.tsx:333
+#: src/view/com/modals/ListAddRemoveUsers.tsx:142
+#: src/view/com/modals/SelfLabel.tsx:157
+#: src/view/com/modals/Threadgate.tsx:129
+#: src/view/com/modals/Threadgate.tsx:132
+#: src/view/com/modals/UserAddRemoveLists.tsx:79
+#: src/view/screens/PreferencesHomeFeed.tsx:308
+#: src/view/screens/PreferencesThreads.tsx:162
+msgid "Done"
+msgstr "Готово"
+
+#: src/view/com/modals/lang-settings/ConfirmLanguagesButton.tsx:42
+msgid "Done{extraText}"
+msgstr "Готово{extraText}"
+
+#: src/view/com/modals/InviteCodes.tsx:94
+msgid "Each code works once. You'll receive more invite codes periodically."
+msgstr "Кожен код запрошення працює лише один раз. Час від часу ви будете отримувати нові коди."
+
+#: src/view/com/composer/photos/Gallery.tsx:144
+#: src/view/com/modals/EditImage.tsx:207
+msgid "Edit image"
+msgstr "Редагувати зображення"
+
+#: src/view/screens/ProfileList.tsx:400
+msgid "Edit list details"
+msgstr "Редагувати опис списку"
+
+#: src/view/screens/Feeds.tsx:367
+#: src/view/screens/SavedFeeds.tsx:84
+msgid "Edit My Feeds"
+msgstr "Редагувати мої стрічки"
+
+#: src/view/com/modals/EditProfile.tsx:151
+msgid "Edit my profile"
+msgstr "Редагувати мій профіль"
+
+#: src/view/com/profile/ProfileHeader.tsx:453
+msgid "Edit profile"
+msgstr "Редагувати профіль"
+
+#: src/view/com/profile/ProfileHeader.tsx:456
+msgid "Edit Profile"
+msgstr "Редагувати профіль"
+
+#: src/view/screens/Feeds.tsx:330
+msgid "Edit Saved Feeds"
+msgstr "Редагувати збережені стрічки"
+
+#: src/view/com/auth/create/Step2.tsx:108
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:148
+#: src/view/com/modals/ChangeEmail.tsx:141
+#: src/view/com/modals/Waitlist.tsx:88
+msgid "Email"
+msgstr "Ел. адреса"
+
+#: src/view/com/auth/create/Step2.tsx:99
+msgid "Email address"
+msgstr "Адреса електронної пошти"
+
+#: src/view/com/modals/ChangeEmail.tsx:111
+msgid "Email Updated"
+msgstr "Ел. адресу оновлено"
+
+#: src/view/screens/Settings.tsx:290
+msgid "Email:"
+msgstr "Ел. адреса:"
+
+#: src/view/com/modals/EmbedConsent.tsx:113
+msgid "Enable {0} only"
+msgstr "Увімкнути лише {0}"
+
+#: src/view/com/modals/EmbedConsent.tsx:97
+msgid "Enable External Media"
+msgstr "Увімкнути зовнішні медіа"
+
+#: src/view/screens/PreferencesHomeFeed.tsx:144
+msgid "Enable this setting to only see replies between people you follow."
+msgstr "Увімкніть цей параметр, щоб бачити відповіді тільки між людьми, на яких ви підписані."
+
+#: src/view/screens/Profile.tsx:426
+msgid "End of feed"
+msgstr "Кінець стрічки"
+
+#: src/view/com/auth/create/Step1.tsx:71
+msgid "Enter the address of your provider:"
+msgstr "Введіть адресу вашого хостинг-провайдера:"
+
+#: src/view/com/modals/ChangeHandle.tsx:369
+msgid "Enter the domain you want to use"
+msgstr "Введіть домен, який ви хочете використовувати"
+
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:101
+msgid "Enter the email you used to create your account. We'll send you a \"reset code\" so you can set a new password."
+msgstr "Введіть адресу електронної пошти, яку ви використовували для створення облікового запису. Ми надішлемо вам код підтвердження, щоб ви могли встановити новий пароль."
+
+#: src/view/com/auth/create/Step2.tsx:104
+msgid "Enter your email address"
+msgstr "Введіть адресу електронної пошти"
+
+#: src/view/com/modals/ChangeEmail.tsx:117
+msgid "Enter your new email address below."
+msgstr "Введіть нову адресу електронної пошти."
+
+#: src/view/com/auth/login/Login.tsx:99
+msgid "Enter your username and password"
+msgstr "Введіть псевдонім та пароль"
+
+#: src/view/screens/Search/Search.tsx:105
+msgid "Error:"
+msgstr "Помилка:"
+
+#: src/view/com/modals/Threadgate.tsx:76
+msgid "Everybody"
+msgstr "Усі"
+
+#: src/view/com/lightbox/Lightbox.web.tsx:156
+msgid "Expand alt text"
+msgstr "Розгорнути альтернативний текст"
+
+#: src/view/com/modals/EmbedConsent.tsx:64
+msgid "External Media"
+msgstr "Зовнішні медіа"
+
+#: src/view/com/modals/EmbedConsent.tsx:75
+#: src/view/screens/PreferencesExternalEmbeds.tsx:66
+msgid "External media may allow websites to collect information about you and your device. No information is sent or requested until you press the \"play\" button."
+msgstr "Зовнішні медіа можуть дозволяти вебсайтам збирати інформацію про вас та ваш пристрій. Інформація не надсилається та не запитується, допоки не натиснуто кнопку «Відтворити»."
+
+#: src/view/screens/PreferencesExternalEmbeds.tsx:52
+#: src/view/screens/Settings.tsx:595
+msgid "External Media Preferences"
+msgstr "Налаштування зовнішніх медіа"
+
+#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:109
+#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:141
+msgid "Failed to load recommended feeds"
+msgstr "Не вдалося завантажити рекомендації стрічок"
+
+#: src/view/screens/Feeds.tsx:556
+msgid "Feed offline"
+msgstr "Стрічка не працює"
+
+#: src/view/com/feeds/FeedPage.tsx:143
+msgid "Feed Preferences"
+msgstr "Налаштування стрічки"
+
+#: src/view/shell/desktop/RightNav.tsx:73
+#: src/view/shell/Drawer.tsx:311
+msgid "Feedback"
+msgstr "Надіслати відгук"
+
+#: src/view/screens/Feeds.tsx:475
+#: src/view/screens/Profile.tsx:165
+#: src/view/shell/bottom-bar/BottomBar.tsx:181
+#: src/view/shell/desktop/LeftNav.tsx:342
+#: src/view/shell/Drawer.tsx:474
+#: src/view/shell/Drawer.tsx:475
+msgid "Feeds"
+msgstr "Стрічки"
+
+#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:57
+msgid "Feeds are created by users to curate content. Choose some feeds that you find interesting."
+msgstr "Стрічки створюються користувачами для відбору постів. Оберіть стрічки, що вас цікавлять."
+
+#: src/view/screens/SavedFeeds.tsx:156
+msgid "Feeds are custom algorithms that users build with a little coding expertise. <0/> for more information."
+msgstr "Стрічки - це алгоритми, створені користувачами з деяким досвідом програмування. <0/> для додаткової інформації."
+
+#: src/view/screens/Search/Search.tsx:427
+msgid "Find users on Bluesky"
+msgstr "Знайти користувачів у Bluesky"
+
+#: src/view/screens/Search/Search.tsx:425
+msgid "Find users with the search tool on the right"
+msgstr "Знайти користувачів за допомогою поля пошуку справа вгорі"
+
+#: src/view/com/auth/onboarding/RecommendedFollowsItem.tsx:150
+msgid "Finding similar accounts..."
+msgstr "Пошук схожих користувачів..."
+
+#: src/view/screens/PreferencesHomeFeed.tsx:108
+msgid "Fine-tune the content you see on your home screen."
+msgstr "Оберіть, що ви хочете бачити у своїй домашній стрічці."
+
+#: src/view/screens/PreferencesThreads.tsx:60
+msgid "Fine-tune the discussion threads."
+msgstr "Налаштуйте відображення обговорень."
+
+#: src/view/com/profile/ProfileHeader.tsx:538
+msgid "Follow"
+msgstr "Підписатися"
+
+#: src/view/com/auth/onboarding/RecommendedFollows.tsx:42
+#~ msgid "Follow some"
+#~ msgstr ""
+
+#: src/view/com/auth/onboarding/RecommendedFollows.tsx:64
+msgid "Follow some users to get started. We can recommend you more users based on who you find interesting."
+msgstr "Підпишіться на кількох користувачів щоб почати їх читати. Ми зможемо порекомендувати вам більше користувачів, спираючись на те хто вас цікавить."
+
+#: src/view/com/modals/Threadgate.tsx:98
+msgid "Followed users"
+msgstr "Ваші підписки"
+
+#: src/view/screens/PreferencesHomeFeed.tsx:151
+msgid "Followed users only"
+msgstr "Тільки ваші підписки"
+
+#: src/view/screens/ProfileFollowers.tsx:25
+msgid "Followers"
+msgstr "Підписники"
+
+#: src/view/com/profile/ProfileHeader.tsx:624
+msgid "following"
+msgstr "підписок"
+
+#: src/view/com/profile/ProfileHeader.tsx:522
+#: src/view/screens/ProfileFollows.tsx:25
+msgid "Following"
+msgstr "Підписані"
+
+#: src/view/com/profile/ProfileHeader.tsx:571
+msgid "Follows you"
+msgstr "Підписаний(-на) на вас"
+
+#: src/view/com/modals/DeleteAccount.tsx:107
+msgid "For security reasons, we'll need to send a confirmation code to your email address."
+msgstr "З міркувань безпеки нам потрібно буде відправити код підтвердження на вашу електронну адресу."
+
+#: src/view/com/modals/AddAppPasswords.tsx:207
+msgid "For security reasons, you won't be able to view this again. If you lose this password, you'll need to generate a new one."
+msgstr "З міркувань безпеки цей пароль відображається лише один раз. Якщо ви втратите цей пароль, вам потрібно буде згенерувати новий."
+
+#: src/view/com/auth/login/LoginForm.tsx:236
+msgid "Forgot"
+msgstr "Забули пароль"
+
+#: src/view/com/auth/login/LoginForm.tsx:233
+msgid "Forgot password"
+msgstr "Забули пароль"
+
+#: src/view/com/auth/login/Login.tsx:127
+#: src/view/com/auth/login/Login.tsx:143
+msgid "Forgot Password"
+msgstr "Забули пароль"
+
+#: src/view/com/composer/photos/SelectPhotoBtn.tsx:43
+msgid "Gallery"
+msgstr "Галерея"
+
+#: src/view/com/modals/VerifyEmail.tsx:183
+msgid "Get Started"
+msgstr "Почати"
+
+#: src/view/com/auth/LoggedOut.tsx:81
+#: src/view/com/auth/LoggedOut.tsx:82
+#: src/view/com/util/moderation/ScreenHider.tsx:123
+#: src/view/shell/desktop/LeftNav.tsx:104
+msgid "Go back"
+msgstr "Назад"
+
+#: src/view/screens/ProfileFeed.tsx:104
+#: src/view/screens/ProfileFeed.tsx:109
+#: src/view/screens/ProfileList.tsx:848
+#: src/view/screens/ProfileList.tsx:853
+msgid "Go Back"
+msgstr "Назад"
+
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:181
+#: src/view/com/auth/login/LoginForm.tsx:283
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:163
+msgid "Go to next"
+msgstr "Далі"
+
+#: src/view/com/modals/ChangeHandle.tsx:265
+msgid "Handle"
+msgstr "Псевдонім"
+
+#: src/view/shell/desktop/RightNav.tsx:102
+#: src/view/shell/Drawer.tsx:321
+msgid "Help"
+msgstr "Довідка"
+
+#: src/view/com/modals/AddAppPasswords.tsx:148
+msgid "Here is your app password."
+msgstr "Це ваш пароль для застосунків."
+
+#: src/view/com/notifications/FeedItem.tsx:324
+#: src/view/com/util/moderation/ContentHider.tsx:103
+msgid "Hide"
+msgstr "Приховати"
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:173
+msgid "Hide post"
+msgstr "Приховати пост"
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:177
+msgid "Hide this post?"
+msgstr "Приховати цей пост?"
+
+#: src/view/com/notifications/FeedItem.tsx:316
+msgid "Hide user list"
+msgstr "Приховати список користувачів"
+
+#: src/view/com/posts/FeedErrorMessage.tsx:102
+#~ msgid "Hmm, some kind of issue occured when contacting the feed server. Please let the feed owner know about this issue."
+#~ msgstr ""
+
+#: src/view/com/posts/FeedErrorMessage.tsx:110
+msgid "Hmm, some kind of issue occurred when contacting the feed server. Please let the feed owner know about this issue."
+msgstr "Хм, при зв'язку з сервером стрічки виникла якась проблема. Будь ласка, повідомте про це її власника."
+
+#: src/view/com/posts/FeedErrorMessage.tsx:98
+msgid "Hmm, the feed server appears to be misconfigured. Please let the feed owner know about this issue."
+msgstr "Хм, здається сервер стрічки налаштовано неправильно. Будь ласка, повідомте про це її власника."
+
+#: src/view/com/posts/FeedErrorMessage.tsx:104
+msgid "Hmm, the feed server appears to be offline. Please let the feed owner know about this issue."
+msgstr "Хм, здається сервер стрічки зараз не працює. Будь ласка, повідомте про це її власника."
+
+#: src/view/com/posts/FeedErrorMessage.tsx:101
+msgid "Hmm, the feed server gave a bad response. Please let the feed owner know about this issue."
+msgstr "Хм, сервер стрічки надіслав нам незрозумілу відповідь. Будь ласка, повідомте про це її власника."
+
+#: src/view/com/posts/FeedErrorMessage.tsx:95
+msgid "Hmm, we're having trouble finding this feed. It may have been deleted."
+msgstr "Хм, ми не можемо знайти цю стрічку. Можливо вона була видалена."
+
+#: src/view/com/posts/FeedErrorMessage.tsx:87
+#~ msgid "Hmmm, we're having trouble finding this feed. It may have been deleted."
+#~ msgstr ""
+
+#: src/view/shell/bottom-bar/BottomBar.tsx:137
+#: src/view/shell/desktop/LeftNav.tsx:306
+#: src/view/shell/Drawer.tsx:398
+#: src/view/shell/Drawer.tsx:399
+msgid "Home"
+msgstr "Головна"
+
+#: src/view/com/pager/FeedsTabBarMobile.tsx:96
+#: src/view/screens/PreferencesHomeFeed.tsx:101
+#: src/view/screens/Settings.tsx:481
+msgid "Home Feed Preferences"
+msgstr "Налаштування домашньої стрічки"
+
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:114
+msgid "Hosting provider"
+msgstr "Хостинг-провайдер"
+
+#: src/view/com/auth/create/Step1.tsx:76
+#: src/view/com/auth/create/Step1.tsx:81
+msgid "Hosting provider address"
+msgstr "Адреса хостинг-провайдера"
+
+#: src/view/com/modals/VerifyEmail.tsx:208
+msgid "I have a code"
+msgstr "У мене є код"
+
+#: src/view/com/modals/ChangeHandle.tsx:281
+msgid "I have my own domain"
+msgstr "Я маю власний домен"
+
+#: src/view/com/modals/SelfLabel.tsx:127
+msgid "If none are selected, suitable for all ages."
+msgstr "Якщо не вибрано жодного варіанту - підходить для всіх."
+
+#: src/view/com/modals/AltImage.tsx:97
+msgid "Image alt text"
+msgstr "Альтернативний текст"
+
+#: src/view/com/util/UserAvatar.tsx:308
+#: src/view/com/util/UserBanner.tsx:116
+msgid "Image options"
+msgstr "Редагування зображення"
+
+#: src/view/com/search/Suggestions.tsx:104
+#: src/view/com/search/Suggestions.tsx:115
+#~ msgid "In Your Network"
+#~ msgstr ""
+
+#: src/view/com/auth/login/LoginForm.tsx:115
+msgid "Invalid username or password"
+msgstr "Невірне ім'я користувача або пароль"
+
+#: src/view/screens/Settings.tsx:383
+msgid "Invite"
+msgstr "Запросити"
+
+#: src/view/com/modals/InviteCodes.tsx:91
+#: src/view/screens/Settings.tsx:371
+msgid "Invite a Friend"
+msgstr "Запросити друга"
+
+#: src/view/com/auth/create/Step2.tsx:72
+msgid "Invite code"
+msgstr "Код запрошення"
+
+#: src/view/com/auth/create/state.ts:136
+msgid "Invite code not accepted. Check that you input it correctly and try again."
+msgstr "Код запрошення не прийнято. Переконайтеся в його правильності та повторіть спробу."
+
+#: src/view/shell/Drawer.tsx:640
+msgid "Invite codes: {invitesAvailable} available"
+msgstr "Коди запрошення: {invitesAvailable}"
+
+#: src/view/com/auth/HomeLoggedOutCTA.tsx:99
+msgid "Jobs"
+msgstr "Вакансії"
+
+#: src/view/com/modals/Waitlist.tsx:67
+msgid "Join the waitlist"
+msgstr "Приєднатися до черги очікування"
+
+#: src/view/com/auth/create/Step2.tsx:86
+#: src/view/com/auth/create/Step2.tsx:90
+msgid "Join the waitlist."
+msgstr "Приєднатися до черги очікування."
+
+#: src/view/com/modals/Waitlist.tsx:124
+msgid "Join Waitlist"
+msgstr "Приєднатися до черги очікування"
+
+#: src/view/com/composer/select-language/SelectLangBtn.tsx:104
+msgid "Language selection"
+msgstr "Вибір мови"
+
+#: src/view/screens/LanguageSettings.tsx:89
+msgid "Language Settings"
+msgstr "Налаштування мов"
+
+#: src/view/screens/Settings.tsx:541
+msgid "Languages"
+msgstr "Мови"
+
+#: src/view/com/util/moderation/ContentHider.tsx:101
+msgid "Learn more"
+msgstr "Дізнатися більше"
+
+#: src/view/com/util/moderation/PostAlerts.tsx:47
+#: src/view/com/util/moderation/ProfileHeaderAlerts.tsx:65
+#: src/view/com/util/moderation/ScreenHider.tsx:104
+msgid "Learn More"
+msgstr "Дізнатися більше"
+
+#: src/view/com/util/moderation/ContentHider.tsx:83
+#: src/view/com/util/moderation/PostAlerts.tsx:40
+#: src/view/com/util/moderation/PostHider.tsx:76
+#: src/view/com/util/moderation/ProfileHeaderAlerts.tsx:49
+#: src/view/com/util/moderation/ScreenHider.tsx:101
+msgid "Learn more about this warning"
+msgstr "Дізнатися більше про це попередження"
+
+#: src/view/screens/Moderation.tsx:242
+msgid "Learn more about what is public on Bluesky."
+msgstr "Дізнатися більше про те, що є публічним в Bluesky."
+
+#: src/view/com/modals/lang-settings/ContentLanguagesSettings.tsx:82
+msgid "Leave them all unchecked to see any language."
+msgstr "Залиште їх усі невідміченими, щоб бачити пости незалежно від мови."
+
+#: src/view/com/modals/LinkWarning.tsx:49
+msgid "Leaving Bluesky"
+msgstr "Ви залишаєте Bluesky"
+
+#: src/view/com/auth/login/Login.tsx:128
+#: src/view/com/auth/login/Login.tsx:144
+msgid "Let's get your password reset!"
+msgstr "Давайте відновимо ваш пароль!"
+
+#: src/view/com/util/UserAvatar.tsx:245
+#: src/view/com/util/UserBanner.tsx:60
+msgid "Library"
+msgstr "Галерея"
+
+#: src/view/screens/Settings.tsx:405
+#~ msgid "Light"
+#~ msgstr ""
+
+#: src/view/screens/ProfileFeed.tsx:586
+msgid "Like this feed"
+msgstr "Вподобати цю стрічку"
+
+#: src/view/screens/PostLikedBy.tsx:27
+#: src/view/screens/ProfileFeedLikedBy.tsx:27
+msgid "Liked by"
+msgstr "Сподобалося"
+
+#: src/view/screens/Profile.tsx:164
+msgid "Likes"
+msgstr "Вподобання"
+
+#: src/view/screens/Moderation.tsx:203
+#~ msgid "Limit the visibility of my account"
+#~ msgstr ""
+
+#: src/view/screens/Moderation.tsx:203
+#~ msgid "Limit the visibility of my account to logged-out users"
+#~ msgstr ""
+
+#: src/view/com/modals/CreateOrEditList.tsx:186
+msgid "List Avatar"
+msgstr "Аватар списку"
+
+#: src/view/com/modals/CreateOrEditList.tsx:199
+msgid "List Name"
+msgstr "Назва списку"
+
+#: src/view/screens/Profile.tsx:166
+#: src/view/shell/desktop/LeftNav.tsx:379
+#: src/view/shell/Drawer.tsx:490
+#: src/view/shell/Drawer.tsx:491
+msgid "Lists"
+msgstr "Списки"
+
+#: src/view/com/post-thread/PostThread.tsx:259
+#: src/view/com/post-thread/PostThread.tsx:267
+msgid "Load more posts"
+msgstr "Завантажити більше постів"
+
+#: src/view/screens/Notifications.tsx:148
+msgid "Load new notifications"
+msgstr "Завантажити нові сповіщення"
+
+#: src/view/com/feeds/FeedPage.tsx:189
+msgid "Load new posts"
+msgstr "Завантажити нові пости"
+
+#: src/view/com/composer/text-input/mobile/Autocomplete.tsx:95
+msgid "Loading..."
+msgstr "Завантаження..."
+
+#: src/view/com/modals/ServerInput.tsx:50
+msgid "Local dev server"
+msgstr "Локальний сервер розробки"
+
+#: src/view/screens/Moderation.tsx:134
+#~ msgid "Logged-out users"
+#~ msgstr ""
+
+#: src/view/screens/Moderation.tsx:136
+msgid "Logged-out visibility"
+msgstr "Видимість для користувачів без облікового запису"
+
+#: src/view/com/auth/login/ChooseAccountForm.tsx:133
+msgid "Login to account that is not listed"
+msgstr "Увійти до облікового запису, якого немає в списку"
+
+#: src/view/screens/ProfileFeed.tsx:472
+#~ msgid "Looks like this feed is only available to users with a Bluesky account. Please sign up or sign in to view this feed!"
+#~ msgstr ""
+
+#: src/view/com/modals/LinkWarning.tsx:63
+msgid "Make sure this is where you intend to go!"
+msgstr "Переконайтеся, що це дійсно той сайт, що ви збираєтеся відвідати!"
+
+#: src/view/screens/Profile.tsx:163
+msgid "Media"
+msgstr "Медіа"
+
+#: src/view/com/threadgate/WhoCanReply.tsx:139
+msgid "mentioned users"
+msgstr "згадані користувачі"
+
+#: src/view/com/modals/Threadgate.tsx:93
+msgid "Mentioned users"
+msgstr "Згадані користувачі"
+
+#: src/view/screens/Search/Search.tsx:537
+msgid "Menu"
+msgstr "Меню"
+
+#: src/view/com/posts/FeedErrorMessage.tsx:194
+msgid "Message from server"
+msgstr "Повідомлення від сервера"
+
+#: src/view/screens/Moderation.tsx:64
+#: src/view/screens/Settings.tsx:563
+#: src/view/shell/desktop/LeftNav.tsx:397
+#: src/view/shell/Drawer.tsx:509
+#: src/view/shell/Drawer.tsx:510
+msgid "Moderation"
+msgstr "Модерація"
+
+#: src/view/screens/Moderation.tsx:95
+msgid "Moderation lists"
+msgstr "Списки для модерації"
+
+#: src/view/screens/ModerationModlists.tsx:58
+msgid "Moderation Lists"
+msgstr "Списки для модерації"
+
+#: src/view/shell/desktop/Feeds.tsx:53
+msgid "More feeds"
+msgstr "Більше стрічок"
+
+#: src/view/com/profile/ProfileHeader.tsx:548
+#: src/view/screens/ProfileFeed.tsx:361
+#: src/view/screens/ProfileList.tsx:584
+msgid "More options"
+msgstr "Додаткові опції"
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:158
+#~ msgid "More post options"
+#~ msgstr ""
+
+#: src/view/screens/PreferencesThreads.tsx:82
+msgid "Most-liked replies first"
+msgstr "За кількістю вподобань"
+
+#: src/view/com/profile/ProfileHeader.tsx:370
+msgid "Mute Account"
+msgstr "Ігнорувати обліковий запис"
+
+#: src/view/screens/ProfileList.tsx:511
+msgid "Mute accounts"
+msgstr "Ігнорувати облікові записи"
+
+#: src/view/screens/ProfileList.tsx:458
+msgid "Mute list"
+msgstr "Ігнорувати список"
+
+#: src/view/screens/ProfileList.tsx:271
+msgid "Mute these accounts?"
+msgstr "Ігнорувати ці облікові записи?"
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:157
+msgid "Mute thread"
+msgstr "Ігнорувати пост"
+
+#: src/view/screens/Moderation.tsx:109
+msgid "Muted accounts"
+msgstr "Ігноровані облікові записи"
+
+#: src/view/screens/ModerationMutedAccounts.tsx:107
+msgid "Muted Accounts"
+msgstr "Ігноровані облікові записи"
+
+#: src/view/screens/ModerationMutedAccounts.tsx:115
+msgid "Muted accounts have their posts removed from your feed and from your notifications. Mutes are completely private."
+msgstr "Ігноровані облікові записи автоматично вилучаються із вашої стрічки та сповіщень. Ігнорування є повністю приватним."
+
+#: src/view/screens/ProfileList.tsx:273
+msgid "Muting is private. Muted accounts can interact with you, but you will not see their posts or receive notifications from them."
+msgstr "Ігнорування є приватним. Ігноровані користувачі можуть взаємодіяти з вами, але ви не бачитимете їх пости і не отримуватимете від них сповіщень."
+
+#: src/view/screens/Moderation.tsx:134
+#~ msgid "My Account"
+#~ msgstr ""
+
+#: src/view/com/modals/BirthDateSettings.tsx:56
+msgid "My Birthday"
+msgstr "Мій день народження"
+
+#: src/view/screens/Feeds.tsx:363
+msgid "My Feeds"
+msgstr "Мої стрічки"
+
+#: src/view/shell/desktop/LeftNav.tsx:65
+msgid "My Profile"
+msgstr "Мій профіль"
+
+#: src/view/screens/Settings.tsx:520
+msgid "My Saved Feeds"
+msgstr "Мої збережені стрічки"
+
+#: src/view/com/modals/AddAppPasswords.tsx:177
+#: src/view/com/modals/CreateOrEditList.tsx:211
+msgid "Name"
+msgstr "Ім'я"
+
+#: src/view/com/modals/EmbedConsent.tsx:107
+#: src/view/com/modals/EmbedConsent.tsx:123
+msgid "Never load embeds from {0}"
+msgstr "Не завантажувати вбудування з {0}"
+
+#: src/view/com/auth/onboarding/WelcomeMobile.tsx:72
+msgid "Never lose access to your followers and data."
+msgstr "Ніколи не втрачайте доступ до ваших даних та підписників."
+
+#: src/view/screens/Lists.tsx:76
+#: src/view/screens/ModerationModlists.tsx:78
+msgid "New"
+msgstr "Новий"
+
+#: src/view/com/feeds/FeedPage.tsx:200
+#: src/view/screens/Feeds.tsx:507
+#: src/view/screens/Profile.tsx:354
+#: src/view/screens/ProfileFeed.tsx:431
+#: src/view/screens/ProfileList.tsx:194
+#: src/view/screens/ProfileList.tsx:222
+#: src/view/shell/desktop/LeftNav.tsx:248
+msgid "New post"
+msgstr "Новий пост"
+
+#: src/view/shell/desktop/LeftNav.tsx:258
+msgid "New Post"
+msgstr "Новий пост"
+
+#: src/view/screens/PreferencesThreads.tsx:79
+msgid "Newest replies first"
+msgstr "Спочатку найновіші"
+
+#: src/view/com/auth/create/CreateAccount.tsx:154
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:174
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:184
+#: src/view/com/auth/login/LoginForm.tsx:286
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:156
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:166
+#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:79
+msgid "Next"
+msgstr "Далі"
+
+#: src/view/com/lightbox/Lightbox.web.tsx:142
+msgid "Next image"
+msgstr "Наступне зображення"
+
+#: src/view/screens/PreferencesHomeFeed.tsx:126
+#: src/view/screens/PreferencesHomeFeed.tsx:197
+#: src/view/screens/PreferencesHomeFeed.tsx:232
+#: src/view/screens/PreferencesHomeFeed.tsx:269
+#: src/view/screens/PreferencesThreads.tsx:106
+#: src/view/screens/PreferencesThreads.tsx:129
+msgid "No"
+msgstr "Ні"
+
+#: src/view/screens/ProfileFeed.tsx:579
+#: src/view/screens/ProfileList.tsx:720
+msgid "No description"
+msgstr "Опис відсутній"
+
+#: src/view/com/composer/text-input/mobile/Autocomplete.tsx:97
+msgid "No result"
+msgstr "Результати відсутні"
+
+#: src/view/screens/Feeds.tsx:452
+msgid "No results found for \"{query}\""
+msgstr "Нічого не знайдено за запитом «{query}»"
+
+#: src/view/com/modals/ListAddUser.tsx:142
+#: src/view/shell/desktop/Search.tsx:112
+#~ msgid "No results found for {0}"
+#~ msgstr ""
+
+#: src/view/com/modals/ListAddRemoveUsers.tsx:127
+#: src/view/screens/Search/Search.tsx:270
+#: src/view/screens/Search/Search.tsx:298
+#: src/view/screens/Search/Search.tsx:629
+#: src/view/shell/desktop/Search.tsx:210
+msgid "No results found for {query}"
+msgstr "Нічого не знайдено за запитом «{query}»"
+
+#: src/view/com/modals/EmbedConsent.tsx:129
+msgid "No thanks"
+msgstr "Ні, дякую"
+
+#: src/view/com/modals/Threadgate.tsx:82
+msgid "Nobody"
+msgstr "Ніхто"
+
+#: src/view/com/modals/SelfLabel.tsx:136
+#~ msgid "Not Applicable"
+#~ msgstr ""
+
+#: src/view/com/modals/SelfLabel.tsx:135
+msgid "Not Applicable."
+msgstr "Не застосовно."
+
+#: src/view/screens/Moderation.tsx:227
+#~ msgid "Note: Bluesky is an open and public network, and enabling this will not make your profile private or limit the ability of logged in users to see your posts. This setting only limits the visibility of posts on the Bluesky app and website; third-party apps that display Bluesky content may not respect this setting, and could show your content to logged-out users."
+#~ msgstr ""
+
+#: src/view/screens/Moderation.tsx:232
+msgid "Note: Bluesky is an open and public network. This setting only limits the visibility of your content on the Bluesky app and website, and other apps may not respect this setting. Your content may still be shown to logged-out users by other apps and websites."
+msgstr "Примітка: Bluesky є відкритою і публічною мережею. Цей параметр обмежує видимість вашого вмісту лише у застосунках і на сайті Bluesky, але інші застосунки можуть цього не дотримуватися. Ваш вміст все ще може бути показаний відвідувачам без облікового запису іншими застосунками і вебсайтами."
+
+#: src/view/screens/Moderation.tsx:227
+#~ msgid "Note: Third-party apps that display Bluesky content may not respect this setting."
+#~ msgstr ""
+
+#: src/view/screens/Notifications.tsx:113
+#: src/view/screens/Notifications.tsx:137
+#: src/view/shell/bottom-bar/BottomBar.tsx:205
+#: src/view/shell/desktop/LeftNav.tsx:361
+#: src/view/shell/Drawer.tsx:435
+#: src/view/shell/Drawer.tsx:436
+msgid "Notifications"
+msgstr "Сповіщення"
+
+#: src/view/com/util/ErrorBoundary.tsx:34
+msgid "Oh no!"
+msgstr "О, ні!"
+
+#: src/view/com/auth/login/PasswordUpdatedForm.tsx:41
+msgid "Okay"
+msgstr "Добре"
+
+#: src/view/screens/PreferencesThreads.tsx:78
+msgid "Oldest replies first"
+msgstr "Спочатку найдавніші"
+
+#: src/view/com/composer/Composer.tsx:363
+msgid "One or more images is missing alt text."
+msgstr "Для одного або кількох зображень відсутній альтернативний текст."
+
+#: src/view/com/threadgate/WhoCanReply.tsx:100
+msgid "Only {0} can reply."
+msgstr "Тільки {0} можуть відповідати."
+
+#: src/view/com/composer/Composer.tsx:468
+#: src/view/com/composer/Composer.tsx:469
+msgid "Open emoji picker"
+msgstr "Емоджі"
+
+#: src/view/com/pager/FeedsTabBarMobile.tsx:76
+msgid "Open navigation"
+msgstr "Відкрити навігацію"
+
+#: src/view/screens/Settings.tsx:533
+msgid "Opens configurable language settings"
+msgstr "Відкриває налаштування мов"
+
+#: src/view/screens/Settings.tsx:587
+msgid "Opens external embeds settings"
+msgstr "Відкриває налаштування зовнішніх вбудувань"
+
+#: src/view/shell/desktop/RightNav.tsx:156
+#: src/view/shell/Drawer.tsx:641
+msgid "Opens list of invite codes"
+msgstr "Відкриває список кодів запрошення"
+
+#: src/view/com/modals/ChangeHandle.tsx:279
+msgid "Opens modal for using custom domain"
+msgstr "Відкриває діалог налаштування власного домену як псевдоніму"
+
+#: src/view/screens/Settings.tsx:558
+msgid "Opens moderation settings"
+msgstr "Відкриває налаштування модерації"
+
+#: src/view/screens/Settings.tsx:514
+msgid "Opens screen with all saved feeds"
+msgstr "Відкриває сторінку з усіма збереженими стрічками"
+
+#: src/view/screens/Settings.tsx:614
+msgid "Opens the app password settings page"
+msgstr "Відкриває налаштування паролів для застосунків"
+
+#: src/view/screens/Settings.tsx:473
+msgid "Opens the home feed preferences"
+msgstr "Відкриває налаштування домашньої стрічки"
+
+#: src/view/screens/Settings.tsx:697
+msgid "Opens the storybook page"
+msgstr ""
+
+#: src/view/screens/Settings.tsx:677
+msgid "Opens the system log page"
+msgstr "Відкриває системний журнал"
+
+#: src/view/screens/Settings.tsx:494
+msgid "Opens the threads preferences"
+msgstr "Відкриває налаштування гілок"
+
+#: src/view/com/modals/Threadgate.tsx:89
+msgid "Or combine these options:"
+msgstr "Або якісь із наступних варіантів:"
+
+#: src/view/com/auth/login/ChooseAccountForm.tsx:138
+msgid "Other account"
+msgstr "Інший обліковий запис"
+
+#: src/view/com/modals/ServerInput.tsx:88
+msgid "Other service"
+msgstr "Інший хостинг-провайдер"
+
+#: src/view/com/composer/select-language/SelectLangBtn.tsx:91
+msgid "Other..."
+msgstr "Інші..."
+
+#: src/view/screens/NotFound.tsx:42
+#: src/view/screens/NotFound.tsx:45
+msgid "Page not found"
+msgstr "Сторінку не знайдено"
+
+#: src/view/com/auth/create/Step2.tsx:122
+#: src/view/com/auth/create/Step2.tsx:132
+#: src/view/com/auth/login/LoginForm.tsx:221
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:130
+#: src/view/com/modals/DeleteAccount.tsx:191
+msgid "Password"
+msgstr "Пароль"
+
+#: src/view/com/auth/login/Login.tsx:157
+msgid "Password updated"
+msgstr "Пароль змінено"
+
+#: src/view/com/auth/login/PasswordUpdatedForm.tsx:28
+msgid "Password updated!"
+msgstr "Пароль змінено!"
+
+#: src/view/com/modals/SelfLabel.tsx:121
+msgid "Pictures meant for adults."
+msgstr "Зображення, призначені для дорослих."
+
+#: src/view/screens/SavedFeeds.tsx:88
+msgid "Pinned Feeds"
+msgstr "Закріплені стрічки"
+
+#: src/view/com/util/post-embeds/ExternalGifEmbed.tsx:111
+msgid "Play {0}"
+msgstr "Відтворити {0}"
+
+#: src/view/com/util/post-embeds/ExternalPlayerEmbed.tsx:54
+#: src/view/com/util/post-embeds/ExternalPlayerEmbed.tsx:55
+msgid "Play Video"
+msgstr "Відтворити відео"
+
+#: src/view/com/util/post-embeds/ExternalGifEmbed.tsx:110
+msgid "Plays the GIF"
+msgstr "Відтворює GIF"
+
+#: src/view/com/auth/create/state.ts:116
+msgid "Please choose your handle."
+msgstr "Будь ласка, оберіть псевдонім."
+
+#: src/view/com/auth/create/state.ts:109
+msgid "Please choose your password."
+msgstr "Будь ласка, оберіть ваш пароль."
+
+#: src/view/com/modals/ChangeEmail.tsx:67
+msgid "Please confirm your email before changing it. This is a temporary requirement while email-updating tools are added, and it will soon be removed."
+msgstr "Будь ласка, підтвердіть вашу електронну адресу, перш ніж змінити її. Це тимчасова вимога під час додавання інструментів оновлення електронної адреси, незабаром її видалять."
+
+#: src/view/com/modals/AddAppPasswords.tsx:140
+msgid "Please enter a unique name for this App Password or use our randomly generated one."
+msgstr "Будь ласка, введіть унікальну назву для цього паролю або використовуйте нашу випадково згенеровану."
+
+#: src/view/com/auth/create/state.ts:95
+msgid "Please enter your email."
+msgstr "Будь ласка, введіть адресу ел. пошти."
+
+#: src/view/com/modals/DeleteAccount.tsx:180
+msgid "Please enter your password as well:"
+msgstr "Будь ласка, також введіть ваш пароль:"
+
+#: src/view/com/modals/AppealLabel.tsx:72
+#: src/view/com/modals/AppealLabel.tsx:75
+msgid "Please tell us why you think this content warning was incorrectly applied!"
+msgstr "Будь ласка, вкажіть чому ви вважаєте що попередження про вміст було додано неправильно?"
+
+#: src/view/com/modals/AppealLabel.tsx:72
+#: src/view/com/modals/AppealLabel.tsx:75
+#~ msgid "Please tell us why you think this decision was incorrect."
+#~ msgstr ""
+
+#: src/view/com/composer/Composer.tsx:215
+msgid "Please wait for your link card to finish loading"
+msgstr "Будь ласка, зачекайте доки завершиться створення попереднього перегляду для посилання"
+
+#: src/view/com/composer/Composer.tsx:346
+#: src/view/com/post-thread/PostThread.tsx:225
+#: src/view/screens/PostThread.tsx:80
+msgid "Post"
+msgstr "Пост"
+
+#: src/view/com/post-thread/PostThread.tsx:378
+msgid "Post hidden"
+msgstr "Пост приховано"
+
+#: src/view/com/composer/select-language/SelectLangBtn.tsx:87
+msgid "Post language"
+msgstr "Мова посту"
+
+#: src/view/com/modals/lang-settings/PostLanguagesSettings.tsx:75
+msgid "Post Languages"
+msgstr "Мови посту"
+
+#: src/view/com/post-thread/PostThread.tsx:430
+msgid "Post not found"
+msgstr "Пост не знайдено"
+
+#: src/view/screens/Profile.tsx:161
+msgid "Posts"
+msgstr "Пости"
+
+#: src/view/com/modals/LinkWarning.tsx:44
+msgid "Potentially Misleading Link"
+msgstr "Потенційно оманливе посилання"
+
+#: src/view/com/lightbox/Lightbox.web.tsx:128
+msgid "Previous image"
+msgstr "Попереднє зображення"
+
+#: src/view/screens/LanguageSettings.tsx:187
+msgid "Primary Language"
+msgstr "Основна мова"
+
+#: src/view/screens/PreferencesThreads.tsx:97
+msgid "Prioritize Your Follows"
+msgstr "Пріоритезувати ваші підписки"
+
+#: src/view/screens/Settings.tsx:570
+#: src/view/shell/desktop/RightNav.tsx:84
+msgid "Privacy"
+msgstr "Конфіденційність"
+
+#: src/view/screens/PrivacyPolicy.tsx:29
+#: src/view/screens/Settings.tsx:783
+#: src/view/shell/Drawer.tsx:262
+msgid "Privacy Policy"
+msgstr "Політика конфіденційності"
+
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:190
+msgid "Processing..."
+msgstr "Обробка..."
+
+#: src/view/shell/bottom-bar/BottomBar.tsx:247
+#: src/view/shell/desktop/LeftNav.tsx:415
+#: src/view/shell/Drawer.tsx:70
+#: src/view/shell/Drawer.tsx:544
+#: src/view/shell/Drawer.tsx:545
+msgid "Profile"
+msgstr "Профіль"
+
+#: src/view/screens/Settings.tsx:841
+msgid "Protect your account by verifying your email."
+msgstr "Захистіть свій обліковий запис, підтвердивши свою електронну адресу."
+
+#: src/view/screens/ModerationModlists.tsx:61
+msgid "Public, shareable lists of users to mute or block in bulk."
+msgstr "Публічні, поширювані списки користувачів для ігнорування або блокування."
+
+#: src/view/screens/Lists.tsx:61
+msgid "Public, shareable lists which can drive feeds."
+msgstr "Публічні, поширювані списки для створення стрічок."
+
+#: src/view/com/modals/Repost.tsx:52
+#: src/view/com/util/post-ctrls/RepostButton.web.tsx:58
+msgid "Quote post"
+msgstr "Цитувати пост"
+
+#: src/view/com/modals/Repost.tsx:56
+msgid "Quote Post"
+msgstr "Цитувати пост"
+
+#: src/view/screens/PreferencesThreads.tsx:86
+msgid "Random (aka \"Poster's Roulette\")"
+msgstr "У випадковому порядку"
+
+#: src/view/com/modals/EditImage.tsx:236
+msgid "Ratios"
+msgstr "Співвідношення сторін"
+
+#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:73
+#: src/view/com/auth/onboarding/RecommendedFollows.tsx:50
+#~ msgid "Recommended"
+#~ msgstr ""
+
+#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:116
+msgid "Recommended Feeds"
+msgstr "Рекомендовані стрічки"
+
+#: src/view/com/auth/onboarding/RecommendedFollows.tsx:180
+msgid "Recommended Users"
+msgstr "Рекомендовані користувачі"
+
+#: src/view/com/modals/ListAddRemoveUsers.tsx:264
+#: src/view/com/modals/SelfLabel.tsx:83
+#: src/view/com/modals/UserAddRemoveLists.tsx:193
+#: src/view/com/util/UserAvatar.tsx:282
+#: src/view/com/util/UserBanner.tsx:89
+msgid "Remove"
+msgstr "Вилучити"
+
+#: src/view/com/feeds/FeedSourceCard.tsx:106
+msgid "Remove {0} from my feeds?"
+msgstr "Вилучити {0} зі збережених стрічок?"
+
+#: src/view/com/util/AccountDropdownBtn.tsx:22
+msgid "Remove account"
+msgstr "Вилучити обліковий запис"
+
+#: src/view/com/posts/FeedErrorMessage.tsx:130
+msgid "Remove feed"
+msgstr "Вилучити стрічку"
+
+#: src/view/com/feeds/FeedSourceCard.tsx:105
+#: src/view/com/feeds/FeedSourceCard.tsx:172
+#: src/view/screens/ProfileFeed.tsx:271
+msgid "Remove from my feeds"
+msgstr "Вилучити з моїх стрічок"
+
+#: src/view/com/composer/photos/Gallery.tsx:167
+msgid "Remove image"
+msgstr "Вилучити зображення"
+
+#: src/view/com/composer/ExternalEmbed.tsx:70
+msgid "Remove image preview"
+msgstr "Вилучити попередній перегляд зображення"
+
+#: src/view/com/feeds/FeedSourceCard.tsx:173
+msgid "Remove this feed from my feeds?"
+msgstr "Вилучити цю стрічку з ваших стрічок?"
+
+#: src/view/com/posts/FeedErrorMessage.tsx:131
+msgid "Remove this feed from your saved feeds?"
+msgstr "Вилучити цю стрічку зі збережених стрічок?"
+
+#: src/view/com/modals/ListAddRemoveUsers.tsx:199
+#: src/view/com/modals/UserAddRemoveLists.tsx:136
+msgid "Removed from list"
+msgstr "Вилучено зі списку"
+
+#: src/view/screens/Profile.tsx:162
+msgid "Replies"
+msgstr "Відповіді"
+
+#: src/view/com/threadgate/WhoCanReply.tsx:98
+msgid "Replies to this thread are disabled"
+msgstr "Відповіді до цього посту вимкнено"
+
+#: src/view/screens/PreferencesHomeFeed.tsx:141
+msgid "Reply Filters"
+msgstr "Які відповіді показувати"
+
+#: src/view/com/modals/report/Modal.tsx:166
+msgid "Report {collectionName}"
+msgstr "Поскаржитись на {collectionName}"
+
+#: src/view/com/profile/ProfileHeader.tsx:404
+msgid "Report Account"
+msgstr "Поскаржитись на обліковий запис"
+
+#: src/view/screens/ProfileFeed.tsx:291
+msgid "Report feed"
+msgstr "Поскаржитись на стрічку"
+
+#: src/view/screens/ProfileList.tsx:426
+msgid "Report List"
+msgstr "Поскаржитись на список"
+
+#: src/view/com/modals/report/SendReportButton.tsx:37
+#: src/view/com/util/forms/PostDropdownBtn.tsx:196
+msgid "Report post"
+msgstr "Поскаржитись на пост"
+
+#: src/view/com/util/post-ctrls/RepostButton.web.tsx:48
+msgid "Repost"
+msgstr "Репостити"
+
+#: src/view/com/util/post-ctrls/RepostButton.web.tsx:94
+#: src/view/com/util/post-ctrls/RepostButton.web.tsx:105
+msgid "Repost or quote post"
+msgstr "Репостити або цитувати"
+
+#: src/view/screens/PostRepostedBy.tsx:27
+msgid "Reposted by"
+msgstr "Репост"
+
+#: src/view/com/modals/ChangeEmail.tsx:181
+#: src/view/com/modals/ChangeEmail.tsx:183
+msgid "Request Change"
+msgstr "Змінити"
+
+#: src/view/screens/Moderation.tsx:188
+#~ msgid "Request to limit the visibility of my account"
+#~ msgstr ""
+
+#: src/view/screens/Settings.tsx:422
+msgid "Require alt text before posting"
+msgstr "Вимагати альтернативний текст до зображень перед публікацією"
+
+#: src/view/com/auth/create/Step2.tsx:68
+msgid "Required for this provider"
+msgstr "Вимагається цим хостинг-провайдером"
+
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:108
+msgid "Reset code"
+msgstr "Код підтвердження"
+
+#: src/view/screens/Settings.tsx:719
+msgid "Reset onboarding state"
+msgstr ""
+
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:98
+msgid "Reset password"
+msgstr "Скинути пароль"
+
+#: src/view/screens/Settings.tsx:709
+msgid "Reset preferences state"
+msgstr ""
+
+#: src/view/screens/Settings.tsx:717
+msgid "Resets the onboarding state"
+msgstr ""
+
+#: src/view/screens/Settings.tsx:707
+msgid "Resets the preferences state"
+msgstr ""
+
+#: src/view/com/auth/create/CreateAccount.tsx:163
+#: src/view/com/auth/create/CreateAccount.tsx:167
+#: src/view/com/auth/login/LoginForm.tsx:263
+#: src/view/com/auth/login/LoginForm.tsx:266
+#: src/view/com/util/error/ErrorMessage.tsx:55
+#: src/view/com/util/error/ErrorScreen.tsx:65
+msgid "Retry"
+msgstr "Повторити спробу"
+
+#: src/view/com/modals/ChangeHandle.tsx:169
+#~ msgid "Retry change handle"
+#~ msgstr ""
+
+#: src/view/com/modals/BirthDateSettings.tsx:94
+#: src/view/com/modals/BirthDateSettings.tsx:97
+#: src/view/com/modals/ChangeHandle.tsx:173
+#: src/view/com/modals/CreateOrEditList.tsx:249
+#: src/view/com/modals/CreateOrEditList.tsx:257
+#: src/view/com/modals/EditProfile.tsx:223
+msgid "Save"
+msgstr "Зберегти"
+
+#: src/view/com/modals/AltImage.tsx:106
+msgid "Save alt text"
+msgstr "Зберегти альтернативний текст"
+
+#: src/view/com/modals/UserAddRemoveLists.tsx:212
+#~ msgid "Save changes"
+#~ msgstr ""
+
+#: src/view/com/modals/EditProfile.tsx:231
+msgid "Save Changes"
+msgstr "Зберегти зміни"
+
+#: src/view/com/modals/ChangeHandle.tsx:170
+msgid "Save handle change"
+msgstr "Зберегти новий псевдонім"
+
+#: src/view/com/modals/crop-image/CropImage.web.tsx:144
+msgid "Save image crop"
+msgstr "Обрізати зображення"
+
+#: src/view/screens/SavedFeeds.tsx:122
+msgid "Saved Feeds"
+msgstr "Збережені стрічки"
+
+#: src/view/com/modals/ListAddRemoveUsers.tsx:75
+#: src/view/com/util/forms/SearchInput.tsx:65
+#: src/view/screens/Search/Search.tsx:406
+#: src/view/screens/Search/Search.tsx:572
+#: src/view/shell/bottom-bar/BottomBar.tsx:159
+#: src/view/shell/desktop/LeftNav.tsx:324
+#: src/view/shell/desktop/Search.tsx:161
+#: src/view/shell/desktop/Search.tsx:170
+#: src/view/shell/Drawer.tsx:362
+#: src/view/shell/Drawer.tsx:363
+msgid "Search"
+msgstr "Пошук"
+
+#: src/view/screens/Search/Search.tsx:390
+#~ msgid "Search for posts and users."
+#~ msgstr ""
+
+#: src/view/com/auth/LoggedOut.tsx:104
+#: src/view/com/auth/LoggedOut.tsx:105
+msgid "Search for users"
+msgstr "Пошук користувачів"
+
+#: src/view/com/modals/ChangeEmail.tsx:110
+msgid "Security Step Required"
+msgstr "Потрібен код підтвердження"
+
+#: src/view/com/auth/HomeLoggedOutCTA.tsx:39
+msgid "See what's next"
+msgstr "Що далі?"
+
+#: src/view/com/modals/ServerInput.tsx:75
+msgid "Select Bluesky Social"
+msgstr "Вибрати Bluesky Social"
+
+#: src/view/com/auth/login/Login.tsx:117
+msgid "Select from an existing account"
+msgstr "Вибрати існуючий обліковий запис"
+
+#: src/view/com/auth/login/LoginForm.tsx:147
+msgid "Select service"
+msgstr "Вибрати хостинг-провайдера"
+
+#: src/view/screens/LanguageSettings.tsx:281
+msgid "Select which languages you want your subscribed feeds to include. If none are selected, all languages will be shown."
+msgstr "Оберіть мови постів, які ви хочете бачити у збережених стрічках. Якщо не вибрано жодної - буде показано пости всіма мовами."
+
+#: src/view/screens/LanguageSettings.tsx:98
+msgid "Select your app language for the default text to display in the app"
+msgstr "Оберіть мову інтерфейсу"
+
+#: src/view/screens/LanguageSettings.tsx:190
+msgid "Select your preferred language for translations in your feed."
+msgstr "Оберіть бажану мову для перекладів у вашій стрічці."
+
+#: src/view/com/modals/VerifyEmail.tsx:196
+msgid "Send Confirmation Email"
+msgstr "Надіслати лист із кодом підтвердження"
+
+#: src/view/com/modals/DeleteAccount.tsx:127
+msgid "Send email"
+msgstr "Надіслати ел. листа"
+
+#: src/view/com/modals/DeleteAccount.tsx:138
+msgid "Send Email"
+msgstr "Надіслати ел. листа"
+
+#: src/view/shell/Drawer.tsx:295
+#: src/view/shell/Drawer.tsx:316
+msgid "Send feedback"
+msgstr "Надіслати відгук"
+
+#: src/view/com/modals/report/SendReportButton.tsx:45
+msgid "Send Report"
+msgstr "Поскаржитись"
+
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:78
+msgid "Set new password"
+msgstr "Зміна пароля"
+
+#: src/view/screens/PreferencesHomeFeed.tsx:222
+msgid "Set this setting to \"No\" to hide all quote posts from your feed. Reposts will still be visible."
+msgstr "Вимкніть це налаштування, щоб приховати всі цитовані пости у вашій стрічці. Не впливає на репости без цитування."
+
+#: src/view/screens/PreferencesHomeFeed.tsx:119
+msgid "Set this setting to \"No\" to hide all replies from your feed."
+msgstr "Вимкніть це налаштування, щоб приховати всі відповіді у вашій стрічці."
+
+#: src/view/screens/PreferencesHomeFeed.tsx:188
+msgid "Set this setting to \"No\" to hide all reposts from your feed."
+msgstr "Вимкніть це налаштування, щоб приховати всі репости у вашій стрічці."
+
+#: src/view/screens/PreferencesThreads.tsx:122
+msgid "Set this setting to \"Yes\" to show replies in a threaded view. This is an experimental feature."
+msgstr "Увімкніть це налаштування, щоб показувати відповіді у вигляді гілок. Це експериментальна функція."
+
+#: src/view/screens/PreferencesHomeFeed.tsx:258
+msgid "Set this setting to \"Yes\" to show samples of your saved feeds in your following feed. This is an experimental feature."
+msgstr "Увімкніть це налаштування, щоб іноді бачити пости зі збережених стрічок у вашій домашній стрічці. Це експериментальна функція."
+
+#: src/view/screens/Settings.tsx:277
+#: src/view/shell/desktop/LeftNav.tsx:433
+#: src/view/shell/Drawer.tsx:565
+#: src/view/shell/Drawer.tsx:566
+msgid "Settings"
+msgstr "Налаштування"
+
+#: src/view/com/modals/SelfLabel.tsx:125
+msgid "Sexual activity or erotic nudity."
+msgstr "Сексуальна активність або еротична оголеність."
+
+#: src/view/com/profile/ProfileHeader.tsx:338
+#: src/view/com/util/forms/PostDropdownBtn.tsx:139
+#: src/view/screens/ProfileList.tsx:385
+msgid "Share"
+msgstr "Поширити"
+
+#: src/view/screens/ProfileFeed.tsx:303
+msgid "Share feed"
+msgstr "Поширити стрічку"
+
+#: src/view/screens/ProfileFeed.tsx:276
+#~ msgid "Share link"
+#~ msgstr ""
+
+#: src/view/com/util/moderation/ContentHider.tsx:105
+#: src/view/screens/Settings.tsx:316
+msgid "Show"
+msgstr "Показати"
+
+#: src/view/com/util/moderation/ScreenHider.tsx:132
+msgid "Show anyway"
+msgstr "Всеодно показати"
+
+#: src/view/com/modals/EmbedConsent.tsx:87
+msgid "Show embeds from {0}"
+msgstr "Показати вбудування з {0}"
+
+#: src/view/screens/PreferencesHomeFeed.tsx:255
+msgid "Show Posts from My Feeds"
+msgstr "Показувати пости зі збережених стрічок"
+
+#: src/view/screens/PreferencesHomeFeed.tsx:219
+msgid "Show Quote Posts"
+msgstr "Показувати цитати"
+
+#: src/view/screens/PreferencesHomeFeed.tsx:116
+msgid "Show Replies"
+msgstr "Показувати відповіді"
+
+#: src/view/screens/PreferencesThreads.tsx:100
+msgid "Show replies by people you follow before all other replies."
+msgstr "Показувати відповіді від людей, за якими ви слідкуєте, вище інших."
+
+#: src/view/screens/PreferencesHomeFeed.tsx:185
+msgid "Show Reposts"
+msgstr "Показувати репости"
+
+#: src/view/com/notifications/FeedItem.tsx:345
+msgid "Show users"
+msgstr "Показати користувачів"
+
+#: src/view/com/auth/HomeLoggedOutCTA.tsx:70
+#: src/view/com/auth/login/Login.tsx:98
+#: src/view/com/auth/SplashScreen.tsx:54
+#: src/view/shell/bottom-bar/BottomBar.tsx:285
+#: src/view/shell/bottom-bar/BottomBar.tsx:286
+#: src/view/shell/bottom-bar/BottomBar.tsx:288
+#: src/view/shell/bottom-bar/BottomBarWeb.tsx:177
+#: src/view/shell/bottom-bar/BottomBarWeb.tsx:178
+#: src/view/shell/bottom-bar/BottomBarWeb.tsx:180
+#: src/view/shell/NavSignupCard.tsx:58
+#: src/view/shell/NavSignupCard.tsx:59
+msgid "Sign in"
+msgstr "Увійти"
+
+#: src/view/com/auth/HomeLoggedOutCTA.tsx:78
+#: src/view/com/auth/SplashScreen.tsx:57
+#: src/view/com/auth/SplashScreen.web.tsx:87
+msgid "Sign In"
+msgstr "Увійти"
+
+#: src/view/com/auth/login/ChooseAccountForm.tsx:44
+msgid "Sign in as {0}"
+msgstr "Увійти як {0}"
+
+#: src/view/com/auth/login/ChooseAccountForm.tsx:118
+#: src/view/com/auth/login/Login.tsx:116
+msgid "Sign in as..."
+msgstr "Увійти як..."
+
+#: src/view/com/auth/login/LoginForm.tsx:134
+msgid "Sign into"
+msgstr "Увійти до"
+
+#: src/view/com/modals/SwitchAccount.tsx:64
+#: src/view/com/modals/SwitchAccount.tsx:67
+msgid "Sign out"
+msgstr "Вийти"
+
+#: src/view/shell/bottom-bar/BottomBar.tsx:275
+#: src/view/shell/bottom-bar/BottomBar.tsx:276
+#: src/view/shell/bottom-bar/BottomBar.tsx:278
+#: src/view/shell/bottom-bar/BottomBarWeb.tsx:167
+#: src/view/shell/bottom-bar/BottomBarWeb.tsx:168
+#: src/view/shell/bottom-bar/BottomBarWeb.tsx:170
+#: src/view/shell/NavSignupCard.tsx:49
+#: src/view/shell/NavSignupCard.tsx:50
+#: src/view/shell/NavSignupCard.tsx:52
+msgid "Sign up"
+msgstr "Зареєструватися"
+
+#: src/view/shell/NavSignupCard.tsx:42
+msgid "Sign up or sign in to join the conversation"
+msgstr "Зареєструйтеся або увійдіть, щоб приєднатися до розмови"
+
+#: src/view/com/util/moderation/ScreenHider.tsx:76
+msgid "Sign-in Required"
+msgstr "Необхідно увійти для перегляду"
+
+#: src/view/screens/Settings.tsx:327
+msgid "Signed in as"
+msgstr "Ви увійшли як"
+
+#: src/view/com/auth/onboarding/WelcomeMobile.tsx:33
+msgid "Skip"
+msgstr "Пропустити"
+
+#: src/view/screens/PreferencesThreads.tsx:69
+msgid "Sort Replies"
+msgstr "Сортувати відповіді"
+
+#: src/view/screens/PreferencesThreads.tsx:72
+msgid "Sort replies to the same post by:"
+msgstr "Оберіть, як сортувати відповіді до постів:"
+
+#: src/view/com/modals/crop-image/CropImage.web.tsx:122
+msgid "Square"
+msgstr "Квадратне"
+
+#: src/view/com/auth/create/Step1.tsx:90
+#: src/view/com/modals/ServerInput.tsx:62
+msgid "Staging"
+msgstr ""
+
+#: src/view/screens/Settings.tsx:763
+msgid "Status page"
+msgstr "Сторінка стану"
+
+#: src/view/screens/Settings.tsx:699
+msgid "Storybook"
+msgstr ""
+
+#: src/view/com/modals/AppealLabel.tsx:101
+msgid "Submit"
+msgstr "Надіслати"
+
+#: src/view/screens/ProfileList.tsx:575
+msgid "Subscribe"
+msgstr "Підписатися"
+
+#: src/view/screens/ProfileList.tsx:571
+msgid "Subscribe to this list"
+msgstr "Підписатися на цей список"
+
+#: src/view/screens/Search/Search.tsx:362
+msgid "Suggested Follows"
+msgstr "Пропоновані підписки"
+
+#: src/view/screens/Support.tsx:30
+#: src/view/screens/Support.tsx:33
+msgid "Support"
+msgstr "Підтримка"
+
+#: src/view/com/modals/SwitchAccount.tsx:115
+msgid "Switch Account"
+msgstr "Перемикнути обліковий запис"
+
+#: src/view/screens/Settings.tsx:398
+#~ msgid "System"
+#~ msgstr ""
+
+#: src/view/screens/Settings.tsx:679
+msgid "System log"
+msgstr "Системний журнал"
+
+#: src/view/com/modals/crop-image/CropImage.web.tsx:112
+msgid "Tall"
+msgstr "Високе"
+
+#: src/view/shell/desktop/RightNav.tsx:93
+msgid "Terms"
+msgstr "Умови"
+
+#: src/view/screens/Settings.tsx:777
+#: src/view/screens/TermsOfService.tsx:29
+#: src/view/shell/Drawer.tsx:256
+msgid "Terms of Service"
+msgstr "Умови Використання"
+
+#: src/view/com/modals/AppealLabel.tsx:70
+#: src/view/com/modals/report/InputIssueDetails.tsx:51
+msgid "Text input field"
+msgstr "Поле вводу тексту"
+
+#: src/view/com/profile/ProfileHeader.tsx:306
+msgid "The account will be able to interact with you after unblocking."
+msgstr "Обліковий запис зможе взаємодіяти з вами після розблокування."
+
+#: src/view/screens/CommunityGuidelines.tsx:36
+msgid "The Community Guidelines have been moved to <0/>"
+msgstr "Правила Спільноти переміщено до <0/>"
+
+#: src/view/screens/CopyrightPolicy.tsx:33
+msgid "The Copyright Policy has been moved to <0/>"
+msgstr "Політику захисту авторського права переміщено до <0/>"
+
+#: src/view/com/post-thread/PostThread.tsx:433
+msgid "The post may have been deleted."
+msgstr "Можливо цей пост було видалено."
+
+#: src/view/screens/PrivacyPolicy.tsx:33
+msgid "The Privacy Policy has been moved to <0/>"
+msgstr "Політика конфіденційності була переміщена до <0/>"
+
+#: src/view/screens/Support.tsx:36
+msgid "The support form has been moved. If you need help, please<0/> or visit {HELP_DESK_URL} to get in touch with us."
+msgstr "Форма підтримки була переміщена. Якщо вам потрібна допомога, будь ласка, <0/> або відвідайте {HELP_DESK_URL}, щоб зв'язатися з нами."
+
+#: src/view/screens/TermsOfService.tsx:33
+msgid "The Terms of Service have been moved to"
+msgstr "Умови Використання перенесено до"
+
+#: src/view/com/util/ErrorBoundary.tsx:35
+msgid "There was an unexpected issue in the application. Please let us know if this happened to you!"
+msgstr "У застосунку сталася неочікувана проблема. Будь ласка, повідомте нас, якщо ви отримали це повідомлення!"
+
+#: src/view/com/util/moderation/LabelInfo.tsx:45
+#~ msgid "This {0} has been labeled."
+#~ msgstr ""
+
+#: src/view/com/util/moderation/ScreenHider.tsx:88
+msgid "This {screenDescription} has been flagged:"
+msgstr "Цей {screenDescription} був позначений:"
+
+#: src/view/com/util/moderation/ScreenHider.tsx:83
+msgid "This account has requested that users sign in to view their profile."
+msgstr "Цей користувач вказав, що не хоче, аби його профіль бачили відвідувачі без облікового запису."
+
+#: src/view/com/modals/EmbedConsent.tsx:68
+msgid "This content is hosted by {0}. Do you want to enable external media?"
+msgstr "Цей вміст розміщено {0}. Увімкнути зовнішні медіа?"
+
+#: src/view/com/posts/FeedErrorMessage.tsx:107
+msgid "This content is not viewable without a Bluesky account."
+msgstr "Цей вміст не доступний для перегляду без облікового запису Bluesky."
+
+#: src/view/com/posts/FeedErrorMessage.tsx:113
+msgid "This feed is currently receiving high traffic and is temporarily unavailable. Please try again later."
+msgstr "Ця стрічка зараз отримує забагато запитів і тимчасово недоступна. Спробуйте ще раз пізніше."
+
+#: src/view/com/modals/BirthDateSettings.tsx:61
+msgid "This information is not shared with other users."
+msgstr "Ця інформація не розкривається іншим користувачам."
+
+#: src/view/com/modals/VerifyEmail.tsx:113
+msgid "This is important in case you ever need to change your email or reset your password."
+msgstr "Це важливо для випадку, якщо вам коли-небудь потрібно буде змінити адресу електронної пошти або відновити пароль."
+
+#: src/view/com/auth/create/Step1.tsx:55
+msgid "This is the service that keeps you online."
+msgstr "Це сервіс який зберігає дані вашого облікового запису."
+
+#: src/view/com/modals/LinkWarning.tsx:56
+msgid "This link is taking you to the following website:"
+msgstr "Це посилання веде на сайт:"
+
+#: src/view/com/post-thread/PostThreadItem.tsx:123
+msgid "This post has been deleted."
+msgstr "Цей пост було видалено."
+
+#: src/view/com/modals/SelfLabel.tsx:137
+msgid "This warning is only available for posts with media attached."
+msgstr "Це попередження доступне тільки для записів з прикріпленими медіа-файлами."
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:178
+msgid "This will hide this post from your feeds."
+msgstr "Це приховає цей пост із вашої стрічки."
+
+#: src/view/screens/PreferencesThreads.tsx:53
+#: src/view/screens/Settings.tsx:503
+msgid "Thread Preferences"
+msgstr "Налаштування гілок"
+
+#: src/view/screens/PreferencesThreads.tsx:119
+msgid "Threaded Mode"
+msgstr "Режим гілок"
+
+#: src/view/com/util/forms/DropdownButton.tsx:230
+msgid "Toggle dropdown"
+msgstr "Розкрити/сховати"
+
+#: src/view/com/modals/EditImage.tsx:271
+msgid "Transformations"
+msgstr "Редагування"
+
+#: src/view/com/post-thread/PostThreadItem.tsx:705
+#: src/view/com/post-thread/PostThreadItem.tsx:707
+#: src/view/com/util/forms/PostDropdownBtn.tsx:111
+msgid "Translate"
+msgstr "Перекласти"
+
+#: src/view/com/util/error/ErrorScreen.tsx:73
+msgid "Try again"
+msgstr "Спробувати ще раз"
+
+#: src/view/screens/ProfileList.tsx:473
+msgid "Un-block list"
+msgstr "Розблокувати список"
+
+#: src/view/screens/ProfileList.tsx:458
+msgid "Un-mute list"
+msgstr "Перестати ігнорувати"
+
+#: src/view/com/auth/create/CreateAccount.tsx:65
+#: src/view/com/auth/login/Login.tsx:76
+#: src/view/com/auth/login/LoginForm.tsx:120
+msgid "Unable to contact your service. Please check your Internet connection."
+msgstr "Не вдалося зв'язатися з вашим хостинг-провайдером. Перевірте ваше підключення до Інтернету."
+
+#: src/view/com/profile/ProfileHeader.tsx:466
+#: src/view/com/profile/ProfileHeader.tsx:469
+msgid "Unblock"
+msgstr "Розблокувати"
+
+#: src/view/com/profile/ProfileHeader.tsx:304
+#: src/view/com/profile/ProfileHeader.tsx:388
+msgid "Unblock Account"
+msgstr "Розблокувати обліковий запис"
+
+#: src/view/com/util/post-ctrls/RepostButton.web.tsx:48
+msgid "Undo repost"
+msgstr "Скасувати репост"
+
+#: src/view/com/auth/create/state.ts:216
+msgid "Unfortunately, you do not meet the requirements to create an account."
+msgstr "На жаль, ви не відповідаєте вимогам для створення облікового запису."
+
+#: src/view/com/profile/ProfileHeader.tsx:369
+msgid "Unmute Account"
+msgstr "Перестати ігнорувати"
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:157
+msgid "Unmute thread"
+msgstr "Перестати ігнорувати"
+
+#: src/view/screens/ProfileList.tsx:441
+msgid "Unpin moderation list"
+msgstr "Відкріпити список модерації"
+
+#: src/view/com/modals/UserAddRemoveLists.tsx:54
+msgid "Update {displayName} in Lists"
+msgstr "Змінити належність {displayName} до списків"
+
+#: src/lib/hooks/useOTAUpdate.ts:15
+msgid "Update Available"
+msgstr "Доступне оновлення"
+
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:172
+msgid "Updating..."
+msgstr "Оновлення..."
+
+#: src/view/com/modals/ChangeHandle.tsx:453
+msgid "Upload a text file to:"
+msgstr "Завантажити текстовий файл до:"
+
+#: src/view/screens/AppPasswords.tsx:194
+msgid "Use app passwords to login to other Bluesky clients without giving full access to your account or password."
+msgstr "Використовуйте паролі для застосунків для входу в інших застосунках для Bluesky. Це дозволить використовувати їх, не надаючи повний доступ до вашого облікового запису і вашого основного пароля."
+
+#: src/view/com/modals/ChangeHandle.tsx:513
+msgid "Use default provider"
+msgstr "Використовувати провайдера за замовчуванням"
+
+#: src/view/com/modals/AddAppPasswords.tsx:150
+msgid "Use this to sign into the other app along with your handle."
+msgstr "Скористайтесь ним для входу в інші застосунки."
+
+#: src/view/com/modals/InviteCodes.tsx:197
+msgid "Used by:"
+msgstr "Використано:"
+
+#: src/view/com/auth/create/Step3.tsx:38
+msgid "User handle"
+msgstr "Псевдонім"
+
+#: src/view/screens/Lists.tsx:58
+msgid "User Lists"
+msgstr "Списки користувачів"
+
+#: src/view/com/auth/login/LoginForm.tsx:174
+#: src/view/com/auth/login/LoginForm.tsx:192
+msgid "Username or email address"
+msgstr "Ім'я користувача або електронна адреса"
+
+#: src/view/screens/ProfileList.tsx:747
+msgid "Users"
+msgstr "Користувачі"
+
+#: src/view/com/threadgate/WhoCanReply.tsx:143
+msgid "users followed by <0/>"
+msgstr "користувачі, на яких підписані <0/>"
+
+#: src/view/com/threadgate/WhoCanReply.tsx:115
+#~ msgid "Users followed by <0/>"
+#~ msgstr ""
+
+#: src/view/com/modals/Threadgate.tsx:106
+msgid "Users in \"{0}\""
+msgstr "Користувачі в «{0}»"
+
+#: src/view/screens/Settings.tsx:802
+msgid "Verify email"
+msgstr "Підтвердити електронну адресу"
+
+#: src/view/screens/Settings.tsx:827
+msgid "Verify my email"
+msgstr "Підтвердити мою електронну адресу"
+
+#: src/view/screens/Settings.tsx:836
+msgid "Verify My Email"
+msgstr "Підтвердити мою електронну адресу"
+
+#: src/view/com/modals/ChangeEmail.tsx:205
+#: src/view/com/modals/ChangeEmail.tsx:207
+msgid "Verify New Email"
+msgstr "Підтвердити нову адресу електронної пошти"
+
+#: src/view/screens/Log.tsx:52
+msgid "View debug entry"
+msgstr "Переглянути запис для налагодження"
+
+#: src/view/com/profile/ProfileSubpageHeader.tsx:128
+msgid "View the avatar"
+msgstr "Переглянути аватар"
+
+#: src/view/com/modals/LinkWarning.tsx:73
+msgid "Visit Site"
+msgstr "Відвідати сайт"
+
+#: src/view/com/auth/create/CreateAccount.tsx:122
+msgid "We're so excited to have you join us!"
+msgstr "Ми дуже раді, що ви приєдналися!"
+
+#: src/view/com/posts/FeedErrorMessage.tsx:99
+#~ msgid "We're sorry, but this content is not viewable without a Bluesky account."
+#~ msgstr ""
+
+#: src/view/com/posts/FeedErrorMessage.tsx:105
+#~ msgid "We're sorry, but this feed is currently receiving high traffic and is temporarily unavailable. Please try again later."
+#~ msgstr ""
+
+#: src/view/screens/Search/Search.tsx:243
+msgid "We're sorry, but your search could not be completed. Please try again in a few minutes."
+msgstr "Даруйте, нам не вдалося виконати пошук за вашим запитом. Будь ласка, спробуйте ще раз через кілька хвилин."
+
+#: src/view/screens/NotFound.tsx:48
+msgid "We're sorry! We can't find the page you were looking for."
+msgstr "Нам дуже прикро! Ми не можемо знайти сторінку, яку ви шукали."
+
+#: src/view/com/auth/onboarding/WelcomeMobile.tsx:46
+msgid "Welcome to <0>Bluesky0>"
+msgstr "Ласкаво просимо до <0>Bluesky0>"
+
+#: src/view/com/modals/report/Modal.tsx:169
+msgid "What is the issue with this {collectionName}?"
+msgstr "Яка проблема з {collectionName}?"
+
+#: src/view/com/auth/SplashScreen.tsx:34
+msgid "What's up?"
+msgstr "Як справи?"
+
+#: src/view/com/modals/lang-settings/PostLanguagesSettings.tsx:78
+msgid "Which languages are used in this post?"
+msgstr "Які мови використані в цьому пості?"
+
+#: src/view/com/modals/lang-settings/ContentLanguagesSettings.tsx:77
+msgid "Which languages would you like to see in your algorithmic feeds?"
+msgstr "Якими мовами ви хочете бачити пости у алгоритмічних стрічках?"
+
+#: src/view/com/composer/threadgate/ThreadgateBtn.tsx:47
+#: src/view/com/modals/Threadgate.tsx:66
+msgid "Who can reply"
+msgstr "Хто може відповідати"
+
+#: src/view/com/threadgate/WhoCanReply.tsx:79
+#~ msgid "Who can reply?"
+#~ msgstr ""
+
+#: src/view/com/modals/crop-image/CropImage.web.tsx:102
+msgid "Wide"
+msgstr "Широке"
+
+#: src/view/com/composer/Composer.tsx:418
+msgid "Write post"
+msgstr "Написати пост"
+
+#: src/view/com/composer/Prompt.tsx:33
+msgid "Write your reply"
+msgstr "Написати відповідь"
+
+#: src/view/screens/PreferencesHomeFeed.tsx:126
+#: src/view/screens/PreferencesHomeFeed.tsx:198
+#: src/view/screens/PreferencesHomeFeed.tsx:233
+#: src/view/screens/PreferencesHomeFeed.tsx:268
+#: src/view/screens/PreferencesThreads.tsx:106
+#: src/view/screens/PreferencesThreads.tsx:129
+msgid "Yes"
+msgstr "Так"
+
+#: src/view/com/auth/create/Step1.tsx:106
+msgid "You can change hosting providers at any time."
+msgstr "Ви можете змінити хостинг-провайдера у будь-який час."
+
+#: src/view/com/auth/login/Login.tsx:158
+#: src/view/com/auth/login/PasswordUpdatedForm.tsx:31
+msgid "You can now sign in with your new password."
+msgstr "Тепер ви можете увійти за допомогою нового пароля."
+
+#: src/view/com/modals/InviteCodes.tsx:64
+msgid "You don't have any invite codes yet! We'll send you some when you've been on Bluesky for a little longer."
+msgstr "У вас ще немає кодів запрошення! З часом ми надамо вам декілька."
+
+#: src/view/screens/SavedFeeds.tsx:102
+msgid "You don't have any pinned feeds."
+msgstr "У вас немає закріплених стрічок."
+
+#: src/view/screens/Feeds.tsx:383
+msgid "You don't have any saved feeds!"
+msgstr "У вас немає збережених стрічок!"
+
+#: src/view/screens/SavedFeeds.tsx:135
+msgid "You don't have any saved feeds."
+msgstr "У вас немає збережених стрічок."
+
+#: src/view/com/post-thread/PostThread.tsx:381
+msgid "You have blocked the author or you have been blocked by the author."
+msgstr "Ви заблокували автора або автор заблокував вас."
+
+#: src/view/com/feeds/ProfileFeedgens.tsx:134
+msgid "You have no feeds."
+msgstr "У вас немає стрічок."
+
+#: src/view/com/lists/MyLists.tsx:89
+#: src/view/com/lists/ProfileLists.tsx:138
+msgid "You have no lists."
+msgstr "У вас немає списків."
+
+#: src/view/screens/ModerationBlockedAccounts.tsx:132
+msgid "You have not blocked any accounts yet. To block an account, go to their profile and selected \"Block account\" from the menu on their account."
+msgstr "Ви ще не заблокували жодного облікового запису. Щоб заблокувати когось, перейдіть до їх профілю та виберіть опцію \"Заблокувати\" у меню їх облікового запису."
+
+#: src/view/screens/AppPasswords.tsx:86
+msgid "You have not created any app passwords yet. You can create one by pressing the button below."
+msgstr "Ви ще не створили жодного пароля для застосунків. Ви можете створити новий пароль, натиснувши кнопку нижче."
+
+#: src/view/screens/ModerationMutedAccounts.tsx:131
+msgid "You have not muted any accounts yet. To mute an account, go to their profile and selected \"Mute account\" from the menu on their account."
+msgstr "Ви ще не ігноруєте жодного облікового запису. Щоб ігнорувати когось, перейдіть до їх профілю та виберіть опцію \"Ігнорувати\" у меню їх облікового запису."
+
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:81
+msgid "You will receive an email with a \"reset code.\" Enter that code here, then enter your new password."
+msgstr "Ви отримаєте електронний лист із кодом підтвердження. Введіть цей код тут, а потім введіть новий пароль."
+
+#: src/view/com/auth/create/Step2.tsx:58
+msgid "Your account"
+msgstr "Ваш акаунт"
+
+#: src/view/com/auth/create/Step2.tsx:146
+msgid "Your birth date"
+msgstr "Ваша дата народження"
+
+#: src/view/com/auth/create/state.ts:102
+msgid "Your email appears to be invalid."
+msgstr "Не вдалося розпізнати адресу електронної пошти."
+
+#: src/view/com/modals/Waitlist.tsx:107
+msgid "Your email has been saved! We'll be in touch soon."
+msgstr "Вашу електронну адресу збережено! Ми скоро зв'яжемося з вами."
+
+#: src/view/com/modals/ChangeEmail.tsx:125
+msgid "Your email has been updated but not verified. As a next step, please verify your new email."
+msgstr "Вашу адресу електронної пошти було змінено, але ще не підтверджено. Для підтвердження, будь ласка, перевірте вашу поштову скриньку за новою адресою."
+
+#: src/view/com/modals/VerifyEmail.tsx:108
+msgid "Your email has not yet been verified. This is an important security step which we recommend."
+msgstr "Ваша електронна пошта ще не підтверджена. Це важливий крок для безпеки вашого облікового запису, який ми рекомендуємо вам зробити."
+
+#: src/view/com/auth/create/Step3.tsx:42
+#: src/view/com/modals/ChangeHandle.tsx:270
+msgid "Your full handle will be"
+msgstr "Ваш повний псевдонім буде"
+
+#: src/view/com/auth/create/Step1.tsx:53
+msgid "Your hosting provider"
+msgstr "Ваш хостинг-провайдер"
+
+#: src/view/screens/Settings.tsx:402
+#: src/view/shell/desktop/RightNav.tsx:137
+#: src/view/shell/Drawer.tsx:655
+msgid "Your invite codes are hidden when logged in using an App Password"
+msgstr "Ваші коди запрошення приховано, якщо ви увійшли за допомогою пароля для застосунків"
+
+#: src/view/com/auth/onboarding/WelcomeMobile.tsx:59
+msgid "Your posts, likes, and blocks are public. Mutes are private."
+msgstr "Ваші повідомлення, вподобання і блоки є публічними. Ігнорування - приватні."
+
+#: src/view/com/modals/SwitchAccount.tsx:82
+msgid "Your profile"
+msgstr "Ваш профіль"
+
+#: src/view/screens/Moderation.tsx:205
+#~ msgid "Your profile and account will not be visible to anyone visiting the Bluesky app without an account, or to account holders who are not logged in. Enabling this will not make your profile private."
+#~ msgstr ""
+
+#: src/view/screens/Moderation.tsx:220
+#~ msgid "Your profile and content will not be visible to anyone visiting the Bluesky app without an account. Enabling this will not make your profile private."
+#~ msgstr ""
+
+#: src/view/screens/Moderation.tsx:220
+#~ msgid "Your profile and posts will not be visible to people visiting the Bluesky app or website without having an account and being logged in."
+#~ msgstr ""
+
+#: src/view/com/auth/create/Step3.tsx:28
+msgid "Your user handle"
+msgstr "Ваш псевдонім"
+
diff --git a/src/platform/crypto.ts b/src/platform/crypto.ts
new file mode 100644
index 0000000000..c7deb21ccb
--- /dev/null
+++ b/src/platform/crypto.ts
@@ -0,0 +1,7 @@
+// HACK
+// expo-modules-core tries to require('crypto') in uuid.web.js
+// and while it tries to detect web crypto before doing so, our
+// build fails when it tries to do this require. We use a babel
+// and tsconfig alias to direct it here
+// -prf
+export default crypto
diff --git a/src/platform/detection.ts b/src/platform/detection.ts
index f4f7be240d..150fc1fe33 100644
--- a/src/platform/detection.ts
+++ b/src/platform/detection.ts
@@ -14,5 +14,7 @@ export const isMobileWeb =
global.window.matchMedia(isMobileWebMediaQuery)?.matches
export const deviceLocales = dedupArray(
- getLocales?.().map?.(locale => locale.languageCode),
-)
+ getLocales?.()
+ .map?.(locale => locale.languageCode)
+ .filter(code => typeof code === 'string'),
+) as string[]
diff --git a/src/routes.ts b/src/routes.ts
index bb2421987a..e58fddd429 100644
--- a/src/routes.ts
+++ b/src/routes.ts
@@ -26,6 +26,7 @@ export const router = new Router({
AppPasswords: '/settings/app-passwords',
PreferencesHomeFeed: '/settings/home-feed',
PreferencesThreads: '/settings/threads',
+ PreferencesExternalEmbeds: '/settings/external-embeds',
SavedFeeds: '/settings/saved-feeds',
Support: '/support',
PrivacyPolicy: '/support/privacy',
diff --git a/src/state/modals/index.tsx b/src/state/modals/index.tsx
index 81a220d1b3..8c32c472a6 100644
--- a/src/state/modals/index.tsx
+++ b/src/state/modals/index.tsx
@@ -6,6 +6,7 @@ import {Image as RNImage} from 'react-native-image-crop-picker'
import {ImageModel} from '#/state/models/media/image'
import {GalleryModel} from '#/state/models/media/gallery'
import {useNonReactiveCallback} from '#/lib/hooks/useNonReactiveCallback'
+import {EmbedPlayerSource} from '#/lib/strings/embed-player.ts'
import {ThreadgateSetting} from '../queries/threadgate'
export interface ConfirmModal {
@@ -180,6 +181,12 @@ export interface LinkWarningModal {
href: string
}
+export interface EmbedConsentModal {
+ name: 'embed-consent'
+ source: EmbedPlayerSource
+ onAccept: () => void
+}
+
export type Modal =
// Account
| AddAppPasswordModal
@@ -223,6 +230,7 @@ export type Modal =
// Generic
| ConfirmModal
| LinkWarningModal
+ | EmbedConsentModal
const ModalContext = React.createContext<{
isModalActive: boolean
diff --git a/src/state/persisted/legacy.ts b/src/state/persisted/legacy.ts
index f689c3d063..334ef1d92a 100644
--- a/src/state/persisted/legacy.ts
+++ b/src/state/persisted/legacy.ts
@@ -108,6 +108,8 @@ export function transform(legacy: Partial): Schema {
onboarding: {
step: legacy.onboarding?.step || defaults.onboarding.step,
},
+ hiddenPosts: defaults.hiddenPosts,
+ externalEmbeds: defaults.externalEmbeds,
}
}
diff --git a/src/state/persisted/schema.ts b/src/state/persisted/schema.ts
index 5ed8e01f34..6a26cedae5 100644
--- a/src/state/persisted/schema.ts
+++ b/src/state/persisted/schema.ts
@@ -1,6 +1,8 @@
import {z} from 'zod'
import {deviceLocales} from '#/platform/detection'
+const externalEmbedOptions = ['show', 'hide'] as const
+
// only data needed for rendering account page
const accountSchema = z.object({
service: z.string(),
@@ -30,6 +32,19 @@ export const schema = z.object({
appLanguage: z.string(),
}),
requireAltTextEnabled: z.boolean(), // should move to server
+ externalEmbeds: z
+ .object({
+ giphy: z.enum(externalEmbedOptions).optional(),
+ tenor: z.enum(externalEmbedOptions).optional(),
+ youtube: z.enum(externalEmbedOptions).optional(),
+ youtubeShorts: z.enum(externalEmbedOptions).optional(),
+ twitch: z.enum(externalEmbedOptions).optional(),
+ vimeo: z.enum(externalEmbedOptions).optional(),
+ spotify: z.enum(externalEmbedOptions).optional(),
+ appleMusic: z.enum(externalEmbedOptions).optional(),
+ soundcloud: z.enum(externalEmbedOptions).optional(),
+ })
+ .optional(),
mutedThreads: z.array(z.string()), // should move to server
invites: z.object({
copiedInvites: z.array(z.string()),
@@ -37,6 +52,7 @@ export const schema = z.object({
onboarding: z.object({
step: z.string(),
}),
+ hiddenPosts: z.array(z.string()).optional(), // should move to server
})
export type Schema = z.infer
@@ -59,6 +75,7 @@ export const defaults: Schema = {
appLanguage: deviceLocales[0] || 'en',
},
requireAltTextEnabled: false,
+ externalEmbeds: {},
mutedThreads: [],
invites: {
copiedInvites: [],
@@ -66,4 +83,5 @@ export const defaults: Schema = {
onboarding: {
step: 'Home',
},
+ hiddenPosts: [],
}
diff --git a/src/state/preferences/external-embeds-prefs.tsx b/src/state/preferences/external-embeds-prefs.tsx
new file mode 100644
index 0000000000..0f6385fe8e
--- /dev/null
+++ b/src/state/preferences/external-embeds-prefs.tsx
@@ -0,0 +1,54 @@
+import React from 'react'
+import * as persisted from '#/state/persisted'
+import {EmbedPlayerSource} from 'lib/strings/embed-player'
+
+type StateContext = persisted.Schema['externalEmbeds']
+type SetContext = (source: EmbedPlayerSource, value: 'show' | 'hide') => void
+
+const stateContext = React.createContext(
+ persisted.defaults.externalEmbeds,
+)
+const setContext = React.createContext({} as SetContext)
+
+export function Provider({children}: React.PropsWithChildren<{}>) {
+ const [state, setState] = React.useState(persisted.get('externalEmbeds'))
+
+ const setStateWrapped = React.useCallback(
+ (source: EmbedPlayerSource, value: 'show' | 'hide') => {
+ setState(prev => {
+ persisted.write('externalEmbeds', {
+ ...prev,
+ [source]: value,
+ })
+
+ return {
+ ...prev,
+ [source]: value,
+ }
+ })
+ },
+ [setState],
+ )
+
+ React.useEffect(() => {
+ return persisted.onUpdate(() => {
+ setState(persisted.get('externalEmbeds'))
+ })
+ }, [setStateWrapped])
+
+ return (
+
+
+ {children}
+
+
+ )
+}
+
+export function useExternalEmbedsPrefs() {
+ return React.useContext(stateContext)
+}
+
+export function useSetExternalEmbedPref() {
+ return React.useContext(setContext)
+}
diff --git a/src/state/preferences/hidden-posts.tsx b/src/state/preferences/hidden-posts.tsx
new file mode 100644
index 0000000000..11119ce758
--- /dev/null
+++ b/src/state/preferences/hidden-posts.tsx
@@ -0,0 +1,64 @@
+import React from 'react'
+import * as persisted from '#/state/persisted'
+
+type SetStateCb = (
+ s: persisted.Schema['hiddenPosts'],
+) => persisted.Schema['hiddenPosts']
+type StateContext = persisted.Schema['hiddenPosts']
+type ApiContext = {
+ hidePost: ({uri}: {uri: string}) => void
+ unhidePost: ({uri}: {uri: string}) => void
+}
+
+const stateContext = React.createContext(
+ persisted.defaults.hiddenPosts,
+)
+const apiContext = React.createContext({
+ hidePost: () => {},
+ unhidePost: () => {},
+})
+
+export function Provider({children}: React.PropsWithChildren<{}>) {
+ const [state, setState] = React.useState(persisted.get('hiddenPosts'))
+
+ const setStateWrapped = React.useCallback(
+ (fn: SetStateCb) => {
+ const s = fn(persisted.get('hiddenPosts'))
+ setState(s)
+ persisted.write('hiddenPosts', s)
+ },
+ [setState],
+ )
+
+ const api = React.useMemo(
+ () => ({
+ hidePost: ({uri}: {uri: string}) => {
+ setStateWrapped(s => [...(s || []), uri])
+ },
+ unhidePost: ({uri}: {uri: string}) => {
+ setStateWrapped(s => (s || []).filter(u => u !== uri))
+ },
+ }),
+ [setStateWrapped],
+ )
+
+ React.useEffect(() => {
+ return persisted.onUpdate(() => {
+ setState(persisted.get('hiddenPosts'))
+ })
+ }, [setStateWrapped])
+
+ return (
+
+ {children}
+
+ )
+}
+
+export function useHiddenPosts() {
+ return React.useContext(stateContext)
+}
+
+export function useHiddenPostsApi() {
+ return React.useContext(apiContext)
+}
diff --git a/src/state/preferences/index.tsx b/src/state/preferences/index.tsx
index 1f4348cfc2..cc2d9244c3 100644
--- a/src/state/preferences/index.tsx
+++ b/src/state/preferences/index.tsx
@@ -1,17 +1,28 @@
import React from 'react'
import {Provider as LanguagesProvider} from './languages'
import {Provider as AltTextRequiredProvider} from '../preferences/alt-text-required'
+import {Provider as HiddenPostsProvider} from '../preferences/hidden-posts'
+import {Provider as ExternalEmbedsProvider} from './external-embeds-prefs'
export {useLanguagePrefs, useLanguagePrefsApi} from './languages'
export {
useRequireAltTextEnabled,
useSetRequireAltTextEnabled,
} from './alt-text-required'
+export {
+ useExternalEmbedsPrefs,
+ useSetExternalEmbedPref,
+} from './external-embeds-prefs'
+export * from './hidden-posts'
export function Provider({children}: React.PropsWithChildren<{}>) {
return (
- {children}
+
+
+ {children}
+
+
)
}
diff --git a/src/state/queries/actor-autocomplete.ts b/src/state/queries/actor-autocomplete.ts
index 709a15b407..ba9f97004e 100644
--- a/src/state/queries/actor-autocomplete.ts
+++ b/src/state/queries/actor-autocomplete.ts
@@ -24,6 +24,8 @@ export function useActorAutocompleteQuery(prefix: string) {
const {data: follows, isFetching} = useMyFollowsQuery()
const moderationOpts = useModerationOpts()
+ prefix = prefix.toLowerCase()
+
return useQuery({
staleTime: STALE.MINUTES.ONE,
queryKey: RQKEY(prefix || ''),
@@ -112,7 +114,7 @@ function computeSuggestions(
}
return items.filter(profile => {
const mod = moderateProfile(profile, moderationOpts)
- return !mod.account.filter
+ return !mod.account.filter && mod.account.cause?.type !== 'muted'
})
}
diff --git a/src/state/queries/app-passwords.ts b/src/state/queries/app-passwords.ts
index 4b9e09a8d6..014244f01c 100644
--- a/src/state/queries/app-passwords.ts
+++ b/src/state/queries/app-passwords.ts
@@ -9,7 +9,6 @@ export const RQKEY = () => ['app-passwords']
export function useAppPasswordsQuery() {
return useQuery({
staleTime: STALE.MINUTES.FIVE,
- refetchInterval: STALE.MINUTES.ONE,
queryKey: RQKEY(),
queryFn: async () => {
const res = await getAgent().com.atproto.server.listAppPasswords({})
diff --git a/src/state/queries/feed.ts b/src/state/queries/feed.ts
index c87e95f030..7a55b4e186 100644
--- a/src/state/queries/feed.ts
+++ b/src/state/queries/feed.ts
@@ -218,11 +218,13 @@ const FOLLOWING_FEED_STUB: FeedSourceInfo = {
export function usePinnedFeedsInfos(): {
feeds: FeedSourceInfo[]
hasPinnedCustom: boolean
+ isLoading: boolean
} {
const queryClient = useQueryClient()
const [tabs, setTabs] = React.useState([
FOLLOWING_FEED_STUB,
])
+ const [isLoading, setLoading] = React.useState(true)
const {data: preferences} = usePreferencesQuery()
const hasPinnedCustom = React.useMemo(() => {
@@ -284,10 +286,11 @@ export function usePinnedFeedsInfos(): {
) as FeedSourceInfo[]
setTabs([FOLLOWING_FEED_STUB].concat(views))
+ setLoading(false)
}
fetchFeedInfo()
}, [queryClient, setTabs, preferences?.feeds?.pinned])
- return {feeds: tabs, hasPinnedCustom}
+ return {feeds: tabs, hasPinnedCustom, isLoading}
}
diff --git a/src/state/queries/invites.ts b/src/state/queries/invites.ts
index bfea402e1a..9ae9c707f4 100644
--- a/src/state/queries/invites.ts
+++ b/src/state/queries/invites.ts
@@ -16,7 +16,6 @@ export type InviteCodesQueryResponse = Exclude<
export function useInviteCodesQuery() {
return useQuery({
staleTime: STALE.MINUTES.FIVE,
- refetchInterval: STALE.MINUTES.FIVE,
queryKey: ['inviteCodes'],
queryFn: async () => {
const res = await getAgent()
diff --git a/src/state/queries/notifications/types.ts b/src/state/queries/notifications/types.ts
index 86a9bb1399..812236cf06 100644
--- a/src/state/queries/notifications/types.ts
+++ b/src/state/queries/notifications/types.ts
@@ -35,4 +35,5 @@ export interface CachedFeedPage {
usableInFeed: boolean
syncedAt: Date
data: FeedPage | undefined
+ unreadCount: number
}
diff --git a/src/state/queries/notifications/unread.tsx b/src/state/queries/notifications/unread.tsx
index a189f20e42..49bb5a29d3 100644
--- a/src/state/queries/notifications/unread.tsx
+++ b/src/state/queries/notifications/unread.tsx
@@ -15,6 +15,7 @@ import {useMutedThreads} from '#/state/muted-threads'
import {RQKEY as RQKEY_NOTIFS} from './feed'
import {logger} from '#/logger'
import {truncateAndInvalidate} from '../util'
+import {AppState} from 'react-native'
const UPDATE_INTERVAL = 30 * 1e3 // 30sec
@@ -24,7 +25,10 @@ type StateContext = string
interface ApiContext {
markAllRead: () => Promise
- checkUnread: (opts?: {invalidate?: boolean}) => Promise
+ checkUnread: (opts?: {
+ invalidate?: boolean
+ isPoll?: boolean
+ }) => Promise
getCachedUnreadPage: () => FeedPage | undefined
}
@@ -49,6 +53,7 @@ export function Provider({children}: React.PropsWithChildren<{}>) {
usableInFeed: false,
syncedAt: new Date(),
data: undefined,
+ unreadCount: 0,
})
// periodic sync
@@ -57,7 +62,10 @@ export function Provider({children}: React.PropsWithChildren<{}>) {
return
}
checkUnreadRef.current() // fire on init
- const interval = setInterval(checkUnreadRef.current, UPDATE_INTERVAL)
+ const interval = setInterval(
+ () => checkUnreadRef.current?.({isPoll: true}),
+ UPDATE_INTERVAL,
+ )
return () => clearInterval(interval)
}, [hasSession])
@@ -68,6 +76,12 @@ export function Provider({children}: React.PropsWithChildren<{}>) {
usableInFeed: false,
syncedAt: new Date(),
data: undefined,
+ unreadCount:
+ data.event === '30+'
+ ? 30
+ : data.event === ''
+ ? 0
+ : parseInt(data.event, 10) || 1,
}
setNumUnread(data.event)
}
@@ -89,11 +103,28 @@ export function Provider({children}: React.PropsWithChildren<{}>) {
// update & broadcast
setNumUnread('')
broadcast.postMessage({event: ''})
+ if (isNative) {
+ Notifications.setBadgeCountAsync(0)
+ }
},
- async checkUnread({invalidate}: {invalidate?: boolean} = {}) {
+ async checkUnread({
+ invalidate,
+ isPoll,
+ }: {invalidate?: boolean; isPoll?: boolean} = {}) {
try {
if (!getAgent().session) return
+ if (AppState.currentState !== 'active') {
+ return
+ }
+
+ // reduce polling if unread count is set
+ if (isPoll && cacheRef.current?.unreadCount !== 0) {
+ // if hit 30+ then don't poll, otherwise reduce polling by 50%
+ if (cacheRef.current?.unreadCount >= 30 || Math.random() >= 0.5) {
+ return
+ }
+ }
// count
const page = await fetchPage({
@@ -126,6 +157,7 @@ export function Provider({children}: React.PropsWithChildren<{}>) {
usableInFeed: !!invalidate, // will be used immediately
data: page,
syncedAt: !lastIndexed || now > lastIndexed ? now : lastIndexed,
+ unreadCount,
}
// update & broadcast
diff --git a/src/state/queries/notifications/util.ts b/src/state/queries/notifications/util.ts
index cc59431632..411a0f791d 100644
--- a/src/state/queries/notifications/util.ts
+++ b/src/state/queries/notifications/util.ts
@@ -2,12 +2,12 @@ import {
AppBskyNotificationListNotifications,
ModerationOpts,
moderateProfile,
- moderatePost,
AppBskyFeedDefs,
AppBskyFeedPost,
AppBskyFeedRepost,
AppBskyFeedLike,
} from '@atproto/api'
+import {moderatePost_wrapped as moderatePost} from '#/lib/moderatePost_wrapped'
import chunk from 'lodash.chunk'
import {QueryClient} from '@tanstack/react-query'
import {getAgent} from '../../session'
@@ -156,7 +156,7 @@ async function fetchSubjects(
): Promise
+
)
diff --git a/src/view/com/auth/create/Step1.tsx b/src/view/com/auth/create/Step1.tsx
index c9d19e8686..0f8581c0be 100644
--- a/src/view/com/auth/create/Step1.tsx
+++ b/src/view/com/auth/create/Step1.tsx
@@ -77,7 +77,7 @@ export function Step1({
value={uiState.serviceUrl}
editable
onChange={onChangeServiceUrl}
- accessibilityHint="Input hosting provider address"
+ accessibilityHint={_(msg`Input hosting provider address`)}
accessibilityLabel={_(msg`Hosting provider address`)}
accessibilityLabelledBy="addressProvider"
/>
@@ -125,6 +125,7 @@ function Option({
}>) {
const theme = useTheme()
const pal = usePalette('default')
+ const {_} = useLingui()
const circleFillStyle = React.useMemo(
() => ({
backgroundColor: theme.palette.primary.background,
@@ -139,7 +140,7 @@ function Option({
testID={testID}
accessibilityRole="button"
accessibilityLabel={label}
- accessibilityHint={`Sets hosting provider to ${label}`}>
+ accessibilityHint={_(msg`Sets hosting provider to ${label}`)}>
{isSelected ? (
diff --git a/src/view/com/auth/create/Step2.tsx b/src/view/com/auth/create/Step2.tsx
index 89fd070ad1..53e1e02c9b 100644
--- a/src/view/com/auth/create/Step2.tsx
+++ b/src/view/com/auth/create/Step2.tsx
@@ -13,6 +13,17 @@ import {isWeb} from 'platform/detection'
import {Trans, msg} from '@lingui/macro'
import {useLingui} from '@lingui/react'
import {useModalControls} from '#/state/modals'
+import {logger} from '#/logger'
+
+function sanitizeDate(date: Date): Date {
+ if (!date || date.toString() === 'Invalid Date') {
+ logger.error(`Create account: handled invalid date for birthDate`, {
+ hasDate: !!date,
+ })
+ return new Date()
+ }
+ return date
+}
/** STEP 2: Your account
* @field Invite code or waitlist
@@ -38,6 +49,10 @@ export function Step2({
openModal({name: 'waitlist'})
}, [openModal])
+ const birthDate = React.useMemo(() => {
+ return sanitizeDate(uiState.birthDate)
+ }, [uiState.birthDate])
+
return (
@@ -45,7 +60,7 @@ export function Step2({
{uiState.isInviteCodeRequired && (
- Invite code
+ Invite code
uiDispatch({type: 'set-invite-code', value})}
accessibilityLabel={_(msg`Invite code`)}
- accessibilityHint="Input invite code to proceed"
+ accessibilityHint={_(msg`Input invite code to proceed`)}
+ autoCapitalize="none"
+ autoComplete="off"
+ autoCorrect={false}
/>
)}
{!uiState.inviteCode && uiState.isInviteCodeRequired ? (
- Don't have an invite code?{' '}
+ Don't have an invite code?{' '}
uiDispatch({type: 'set-email', value})}
accessibilityLabel={_(msg`Email`)}
- accessibilityHint="Input email for Bluesky waitlist"
+ accessibilityHint={_(msg`Input email for Bluesky waitlist`)}
accessibilityLabelledBy="email"
+ autoCapitalize="none"
+ autoComplete="off"
+ autoCorrect={false}
/>
@@ -109,8 +130,11 @@ export function Step2({
secureTextEntry
onChange={value => uiDispatch({type: 'set-password', value})}
accessibilityLabel={_(msg`Password`)}
- accessibilityHint="Set password"
+ accessibilityHint={_(msg`Set password`)}
accessibilityLabelledBy="password"
+ autoCapitalize="none"
+ autoComplete="off"
+ autoCorrect={false}
/>
@@ -122,14 +146,15 @@ export function Step2({
Your birth date
uiDispatch({type: 'set-birth-date', value})}
buttonType="default-light"
buttonStyle={[pal.border, styles.dateInputButton]}
buttonLabelType="lg"
accessibilityLabel={_(msg`Birthday`)}
- accessibilityHint="Enter your birth date"
+ accessibilityHint={_(msg`Enter your birth date`)}
accessibilityLabelledBy="birthDate"
/>
diff --git a/src/view/com/auth/create/Step3.tsx b/src/view/com/auth/create/Step3.tsx
index 4c8a58519a..2b2b9f7fef 100644
--- a/src/view/com/auth/create/Step3.tsx
+++ b/src/view/com/auth/create/Step3.tsx
@@ -36,7 +36,7 @@ export function Step3({
onChange={value => uiDispatch({type: 'set-handle', value})}
// TODO: Add explicit text label
accessibilityLabel={_(msg`User handle`)}
- accessibilityHint="Input your user handle"
+ accessibilityHint={_(msg`Input your user handle`)}
/>
Your full handle will be{' '}
diff --git a/src/view/com/auth/create/StepHeader.tsx b/src/view/com/auth/create/StepHeader.tsx
index 4b4eb5d23b..41f9120517 100644
--- a/src/view/com/auth/create/StepHeader.tsx
+++ b/src/view/com/auth/create/StepHeader.tsx
@@ -2,13 +2,18 @@ import React from 'react'
import {StyleSheet, View} from 'react-native'
import {Text} from 'view/com/util/text/Text'
import {usePalette} from 'lib/hooks/usePalette'
+import {Trans} from '@lingui/macro'
export function StepHeader({step, title}: {step: string; title: string}) {
const pal = usePalette('default')
return (
- {step === '3' ? 'Last step!' : <>Step {step} of 3>}
+ {step === '3' ? (
+ Last step!
+ ) : (
+ Step {step} of 3
+ )}
{title}
diff --git a/src/view/com/auth/create/state.ts b/src/view/com/auth/create/state.ts
index a77d2a44fe..62a8495b38 100644
--- a/src/view/com/auth/create/state.ts
+++ b/src/view/com/auth/create/state.ts
@@ -136,7 +136,13 @@ export async function submit({
msg`Invite code not accepted. Check that you input it correctly and try again.`,
)
}
- logger.error('Failed to create account', {error: e})
+
+ if ([400, 429].includes(e.status)) {
+ logger.warn('Failed to create account', {error: e})
+ } else {
+ logger.error(`Failed to create account (${e.status} status)`, {error: e})
+ }
+
uiDispatch({type: 'set-processing', value: false})
uiDispatch({type: 'set-error', value: cleanError(errMsg)})
throw e
diff --git a/src/view/com/auth/login/ChooseAccountForm.tsx b/src/view/com/auth/login/ChooseAccountForm.tsx
index 73ddfc9d63..32cd8315d3 100644
--- a/src/view/com/auth/login/ChooseAccountForm.tsx
+++ b/src/view/com/auth/login/ChooseAccountForm.tsx
@@ -42,7 +42,7 @@ function AccountItem({
onPress={onPress}
accessibilityRole="button"
accessibilityLabel={_(msg`Sign in as ${account.handle}`)}
- accessibilityHint="Double tap to sign in">
+ accessibilityHint={_(msg`Double tap to sign in`)}>
@@ -95,19 +95,19 @@ export const ChooseAccountForm = ({
if (account.accessJwt) {
if (account.did === currentAccount?.did) {
setShowLoggedOut(false)
- Toast.show(`Already signed in as @${account.handle}`)
+ Toast.show(_(msg`Already signed in as @${account.handle}`))
} else {
await initSession(account)
track('Sign In', {resumedSession: true})
setTimeout(() => {
- Toast.show(`Signed in as @${account.handle}`)
+ Toast.show(_(msg`Signed in as @${account.handle}`))
}, 100)
}
} else {
onSelectAccount(account)
}
},
- [currentAccount, track, initSession, onSelectAccount, setShowLoggedOut],
+ [currentAccount, track, initSession, onSelectAccount, setShowLoggedOut, _],
)
return (
diff --git a/src/view/com/auth/login/ForgotPasswordForm.tsx b/src/view/com/auth/login/ForgotPasswordForm.tsx
index 215c393d9d..f9bb64f98e 100644
--- a/src/view/com/auth/login/ForgotPasswordForm.tsx
+++ b/src/view/com/auth/login/ForgotPasswordForm.tsx
@@ -67,7 +67,7 @@ export const ForgotPasswordForm = ({
const onPressNext = async () => {
if (!EmailValidator.validate(email)) {
- return setError('Your email appears to be invalid.')
+ return setError(_(msg`Your email appears to be invalid.`))
}
setError('')
@@ -83,7 +83,9 @@ export const ForgotPasswordForm = ({
setIsProcessing(false)
if (isNetworkError(e)) {
setError(
- 'Unable to contact your service. Please check your Internet connection.',
+ _(
+ msg`Unable to contact your service. Please check your Internet connection.`,
+ ),
)
} else {
setError(cleanError(errMsg))
@@ -112,7 +114,9 @@ export const ForgotPasswordForm = ({
onPress={onPressSelectService}
accessibilityRole="button"
accessibilityLabel={_(msg`Hosting provider`)}
- accessibilityHint="Sets hosting provider for password reset">
+ accessibilityHint={_(
+ msg`Sets hosting provider for password reset`,
+ )}>
@@ -179,7 +183,7 @@ export const ForgotPasswordForm = ({
onPress={onPressNext}
accessibilityRole="button"
accessibilityLabel={_(msg`Go to next`)}
- accessibilityHint="Navigates to the next screen">
+ accessibilityHint={_(msg`Navigates to the next screen`)}>
Next
diff --git a/src/view/com/auth/login/LoginForm.tsx b/src/view/com/auth/login/LoginForm.tsx
index a39d0d9bfe..10608a54be 100644
--- a/src/view/com/auth/login/LoginForm.tsx
+++ b/src/view/com/auth/login/LoginForm.tsx
@@ -107,17 +107,21 @@ export const LoginForm = ({
})
} catch (e: any) {
const errMsg = e.toString()
- logger.warn('Failed to login', {error: e})
setIsProcessing(false)
if (errMsg.includes('Authentication Required')) {
+ logger.info('Failed to login due to invalid credentials', {
+ error: errMsg,
+ })
setError(_(msg`Invalid username or password`))
} else if (isNetworkError(e)) {
+ logger.warn('Failed to login due to network error', {error: errMsg})
setError(
_(
msg`Unable to contact your service. Please check your Internet connection.`,
),
)
} else {
+ logger.warn('Failed to login', {error: errMsg})
setError(cleanError(errMsg))
}
}
@@ -141,7 +145,7 @@ export const LoginForm = ({
onPress={onPressSelectService}
accessibilityRole="button"
accessibilityLabel={_(msg`Select service`)}
- accessibilityHint="Sets server for the Bluesky client">
+ accessibilityHint={_(msg`Sets server for the Bluesky client`)}>
{toNiceDomain(serviceUrl)}
@@ -174,6 +178,7 @@ export const LoginForm = ({
autoCorrect={false}
autoComplete="username"
returnKeyType="next"
+ textContentType="username"
onSubmitEditing={() => {
passwordInputRef.current?.focus()
}}
@@ -185,7 +190,9 @@ export const LoginForm = ({
}
editable={!isProcessing}
accessibilityLabel={_(msg`Username or email address`)}
- accessibilityHint="Input the username or email address you used at signup"
+ accessibilityHint={_(
+ msg`Input the username or email address you used at signup`,
+ )}
/>
@@ -216,8 +223,8 @@ export const LoginForm = ({
accessibilityLabel={_(msg`Password`)}
accessibilityHint={
identifier === ''
- ? 'Input your password'
- : `Input the password tied to ${identifier}`
+ ? _(msg`Input your password`)
+ : _(msg`Input the password tied to ${identifier}`)
}
/>
+ accessibilityHint={_(msg`Opens password reset form`)}>
Forgot
@@ -256,7 +263,7 @@ export const LoginForm = ({
onPress={onPressRetryConnect}
accessibilityRole="button"
accessibilityLabel={_(msg`Retry`)}
- accessibilityHint="Retries login">
+ accessibilityHint={_(msg`Retries login`)}>
Retry
@@ -276,7 +283,7 @@ export const LoginForm = ({
onPress={onPressNext}
accessibilityRole="button"
accessibilityLabel={_(msg`Go to next`)}
- accessibilityHint="Navigates to the next screen">
+ accessibilityHint={_(msg`Navigates to the next screen`)}>
Next
diff --git a/src/view/com/auth/login/PasswordUpdatedForm.tsx b/src/view/com/auth/login/PasswordUpdatedForm.tsx
index 1e07588a91..71f750b141 100644
--- a/src/view/com/auth/login/PasswordUpdatedForm.tsx
+++ b/src/view/com/auth/login/PasswordUpdatedForm.tsx
@@ -36,7 +36,7 @@ export const PasswordUpdatedForm = ({
onPress={onPressNext}
accessibilityRole="button"
accessibilityLabel={_(msg`Close alert`)}
- accessibilityHint="Closes password update alert">
+ accessibilityHint={_(msg`Closes password update alert`)}>
Okay
diff --git a/src/view/com/auth/login/SetNewPasswordForm.tsx b/src/view/com/auth/login/SetNewPasswordForm.tsx
index 2bb614df24..630c6afdec 100644
--- a/src/view/com/auth/login/SetNewPasswordForm.tsx
+++ b/src/view/com/auth/login/SetNewPasswordForm.tsx
@@ -95,7 +95,7 @@ export const SetNewPasswordForm = ({
@@ -117,7 +119,7 @@ export const SetNewPasswordForm = ({
@@ -161,7 +163,7 @@ export const SetNewPasswordForm = ({
onPress={onPressNext}
accessibilityRole="button"
accessibilityLabel={_(msg`Go to next`)}
- accessibilityHint="Navigates to the next screen">
+ accessibilityHint={_(msg`Navigates to the next screen`)}>
Next
diff --git a/src/view/com/auth/onboarding/RecommendedFeedsItem.tsx b/src/view/com/auth/onboarding/RecommendedFeedsItem.tsx
index fcc4572afc..63fb0ec158 100644
--- a/src/view/com/auth/onboarding/RecommendedFeedsItem.tsx
+++ b/src/view/com/auth/onboarding/RecommendedFeedsItem.tsx
@@ -18,6 +18,8 @@ import {
} from '#/state/queries/preferences'
import {logger} from '#/logger'
import {useAnalytics} from '#/lib/analytics/analytics'
+import {Trans, msg} from '@lingui/macro'
+import {useLingui} from '@lingui/react'
export function RecommendedFeedsItem({
item,
@@ -26,6 +28,7 @@ export function RecommendedFeedsItem({
}) {
const {isMobile} = useWebMediaQueries()
const pal = usePalette('default')
+ const {_} = useLingui()
const {data: preferences} = usePreferencesQuery()
const {
mutateAsync: pinFeed,
@@ -51,7 +54,7 @@ export function RecommendedFeedsItem({
await removeFeed({uri: item.uri})
resetRemoveFeed()
} catch (e) {
- Toast.show('There was an issue contacting your server')
+ Toast.show(_(msg`There was an issue contacting your server`))
logger.error('Failed to unsave feed', {error: e})
}
} else {
@@ -60,7 +63,7 @@ export function RecommendedFeedsItem({
resetPinFeed()
track('Onboarding:CustomFeedAdded')
} catch (e) {
- Toast.show('There was an issue contacting your server')
+ Toast.show(_(msg`There was an issue contacting your server`))
logger.error('Failed to pin feed', {error: e})
}
}
@@ -94,7 +97,7 @@ export function RecommendedFeedsItem({
- by {sanitizeHandle(item.creator.handle, '@')}
+ by {sanitizeHandle(item.creator.handle, '@')}
{item.description ? (
@@ -133,7 +136,7 @@ export function RecommendedFeedsItem({
color={pal.colors.textInverted}
/>
- Added
+ Added
>
) : (
@@ -144,7 +147,7 @@ export function RecommendedFeedsItem({
color={pal.colors.textInverted}
/>
- Add
+ Add
>
)}
diff --git a/src/view/com/auth/onboarding/RecommendedFollows.tsx b/src/view/com/auth/onboarding/RecommendedFollows.tsx
index 372bbec6a5..93cfb73866 100644
--- a/src/view/com/auth/onboarding/RecommendedFollows.tsx
+++ b/src/view/com/auth/onboarding/RecommendedFollows.tsx
@@ -83,7 +83,7 @@ export function RecommendedFollows({next}: Props) {
- Done
+ Done
diff --git a/src/view/com/auth/onboarding/WelcomeDesktop.tsx b/src/view/com/auth/onboarding/WelcomeDesktop.tsx
index 1a30c17f94..fdb31197c0 100644
--- a/src/view/com/auth/onboarding/WelcomeDesktop.tsx
+++ b/src/view/com/auth/onboarding/WelcomeDesktop.tsx
@@ -7,6 +7,7 @@ import {usePalette} from 'lib/hooks/usePalette'
import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
import {TitleColumnLayout} from 'view/com/util/layouts/TitleColumnLayout'
import {Button} from 'view/com/util/forms/Button'
+import {Trans} from '@lingui/macro'
type Props = {
next: () => void
@@ -17,7 +18,7 @@ export function WelcomeDesktop({next}: Props) {
const pal = usePalette('default')
const horizontal = useMediaQuery({minWidth: 1300})
const title = (
- <>
+
Bluesky
- >
+
)
return (
- Bluesky is public.
+ Bluesky is public.
- Your posts, likes, and blocks are public. Mutes are private.
+
+ Your posts, likes, and blocks are public. Mutes are private.
+
@@ -63,10 +66,10 @@ export function WelcomeDesktop({next}: Props) {
- Bluesky is open.
+ Bluesky is open.
- Never lose access to your followers and data.
+ Never lose access to your followers and data.
@@ -74,10 +77,13 @@ export function WelcomeDesktop({next}: Props) {
- Bluesky is flexible.
+ Bluesky is flexible.
- Choose the algorithms that power your experience with custom feeds.
+
+ Choose the algorithms that power your experience with custom
+ feeds.
+
@@ -94,7 +100,7 @@ export function WelcomeDesktop({next}: Props) {
- Next
+ Next
diff --git a/src/view/com/composer/Composer.tsx b/src/view/com/composer/Composer.tsx
index 64427b837e..e24fdcf3e1 100644
--- a/src/view/com/composer/Composer.tsx
+++ b/src/view/com/composer/Composer.tsx
@@ -6,6 +6,7 @@ import {
Keyboard,
KeyboardAvoidingView,
Platform,
+ Pressable,
ScrollView,
StyleSheet,
TouchableOpacity,
@@ -28,8 +29,6 @@ import {UserAvatar} from '../util/UserAvatar'
import * as apilib from 'lib/api/index'
import {ComposerOpts} from 'state/shell/composer'
import {s, colors, gradients} from 'lib/styles'
-import {sanitizeDisplayName} from 'lib/strings/display-names'
-import {sanitizeHandle} from 'lib/strings/handles'
import {cleanError} from 'lib/strings/errors'
import {shortenLinks} from 'lib/strings/rich-text-manip'
import {toShortUrl} from 'lib/strings/url-helpers'
@@ -46,7 +45,6 @@ import {Gallery} from './photos/Gallery'
import {MAX_GRAPHEME_LENGTH} from 'lib/constants'
import {LabelsBtn} from './labels/LabelsBtn'
import {SelectLangBtn} from './select-language/SelectLangBtn'
-import {EmojiPickerButton} from './text-input/web/EmojiPicker.web'
import {insertMentionAt} from 'lib/strings/mention-manip'
import {Trans, msg} from '@lingui/macro'
import {useLingui} from '@lingui/react'
@@ -63,6 +61,7 @@ import {useComposerControls} from '#/state/shell/composer'
import {emitPostCreated} from '#/state/events'
import {ThreadgateSetting} from '#/state/queries/threadgate'
import {logger} from '#/logger'
+import {ComposerReplyTo} from 'view/com/composer/ComposerReplyTo'
type Props = ComposerOpts
export const ComposePost = observer(function ComposePost({
@@ -70,6 +69,7 @@ export const ComposePost = observer(function ComposePost({
onPost,
quote: initQuote,
mention: initMention,
+ openPicker,
}: Props) {
const {currentAccount} = useSession()
const {data: currentProfile} = useProfileQuery({did: currentAccount!.did})
@@ -207,7 +207,11 @@ export const ComposePost = observer(function ComposePost({
setError('')
if (richtext.text.trim().length === 0 && gallery.isEmpty && !extLink) {
- setError('Did you want to say anything?')
+ setError(_(msg`Did you want to say anything?`))
+ return
+ }
+ if (extLink?.isLoading) {
+ setError(_(msg`Please wait for your link card to finish loading`))
return
}
@@ -256,7 +260,11 @@ export const ComposePost = observer(function ComposePost({
setLangPrefs.savePostLanguageToHistory()
onPost?.()
onClose()
- Toast.show(`Your ${replyTo ? 'reply' : 'post'} has been published`)
+ Toast.show(
+ replyTo
+ ? _(msg`Your reply has been published`)
+ : _(msg`Your post has been published`),
+ )
}
const canPost = useMemo(
@@ -265,11 +273,17 @@ export const ComposePost = observer(function ComposePost({
(!requireAltTextEnabled || !gallery.needsAltText),
[graphemeLength, requireAltTextEnabled, gallery.needsAltText],
)
- const selectTextInputPlaceholder = replyTo ? 'Write your reply' : `What's up?`
+ const selectTextInputPlaceholder = replyTo
+ ? _(msg`Write your reply`)
+ : _(msg`What's up?`)
const canSelectImages = useMemo(() => gallery.size < 4, [gallery.size])
const hasMedia = gallery.size > 0 || Boolean(extLink)
+ const onEmojiButtonPress = useCallback(() => {
+ openPicker?.(textInput.current?.getCursorPosition())
+ }, [openPicker])
+
return (
+ accessibilityHint={_(
+ msg`Closes post composer and discards post draft`,
+ )}>
Cancel
@@ -315,7 +331,7 @@ export const ComposePost = observer(function ComposePost({
onPress={onPressPublish}
accessibilityRole="button"
accessibilityLabel={
- replyTo ? 'Publish reply' : 'Publish post'
+ replyTo ? _(msg`Publish reply`) : _(msg`Publish post`)
}
accessibilityHint="">
- {replyTo ? 'Reply' : 'Post'}
+ {replyTo ? (
+ Reply
+ ) : (
+ Post
+ )}
) : (
- Post
+ Post
)}
@@ -370,22 +390,7 @@ export const ComposePost = observer(function ComposePost({
- {replyTo ? (
-
-
-
-
- {sanitizeDisplayName(
- replyTo.author.displayName ||
- sanitizeHandle(replyTo.author.handle),
- )}
-
-
- {replyTo.text}
-
-
-
- ) : undefined}
+ {replyTo ? : undefined}
@@ -436,9 +443,11 @@ export const ComposePost = observer(function ComposePost({
onPress={() => onPressAddLinkCard(url)}
accessibilityRole="button"
accessibilityLabel={_(msg`Add link card`)}
- accessibilityHint={`Creates a card with a thumbnail. The card links to ${url}`}>
+ accessibilityHint={_(
+ msg`Creates a card with a thumbnail. The card links to ${url}`,
+ )}>
- Add link card:
+ Add link card:{' '}
{toShortUrl(url)}
@@ -452,7 +461,19 @@ export const ComposePost = observer(function ComposePost({
>
) : null}
- {!isMobile ? : null}
+ {!isMobile ? (
+
+
+
+ ) : null}
@@ -528,17 +549,6 @@ const styles = StyleSheet.create({
textInputLayoutMobile: {
flex: 1,
},
- replyToLayout: {
- flexDirection: 'row',
- borderTopWidth: 1,
- paddingTop: 16,
- paddingBottom: 16,
- },
- replyToPost: {
- flex: 1,
- paddingLeft: 13,
- paddingRight: 8,
- },
addExtLinkBtn: {
borderWidth: 1,
borderRadius: 24,
diff --git a/src/view/com/composer/ComposerReplyTo.tsx b/src/view/com/composer/ComposerReplyTo.tsx
new file mode 100644
index 0000000000..678c8581f8
--- /dev/null
+++ b/src/view/com/composer/ComposerReplyTo.tsx
@@ -0,0 +1,254 @@
+import React from 'react'
+import {LayoutAnimation, Pressable, StyleSheet, View} from 'react-native'
+import {Image} from 'expo-image'
+import {useLingui} from '@lingui/react'
+import {msg} from '@lingui/macro'
+import {
+ AppBskyEmbedImages,
+ AppBskyEmbedRecord,
+ AppBskyEmbedRecordWithMedia,
+ AppBskyFeedPost,
+} from '@atproto/api'
+import {ComposerOptsPostRef} from 'state/shell/composer'
+import {usePalette} from 'lib/hooks/usePalette'
+import {sanitizeDisplayName} from 'lib/strings/display-names'
+import {sanitizeHandle} from 'lib/strings/handles'
+import {UserAvatar} from 'view/com/util/UserAvatar'
+import {Text} from 'view/com/util/text/Text'
+import QuoteEmbed from 'view/com/util/post-embeds/QuoteEmbed'
+
+export function ComposerReplyTo({replyTo}: {replyTo: ComposerOptsPostRef}) {
+ const pal = usePalette('default')
+ const {_} = useLingui()
+ const {embed} = replyTo
+
+ const [showFull, setShowFull] = React.useState(false)
+
+ const onPress = React.useCallback(() => {
+ setShowFull(prev => !prev)
+ LayoutAnimation.configureNext({
+ duration: 350,
+ update: {type: 'spring', springDamping: 0.7},
+ })
+ }, [])
+
+ const quote = React.useMemo(() => {
+ if (
+ AppBskyEmbedRecord.isView(embed) &&
+ AppBskyEmbedRecord.isViewRecord(embed.record) &&
+ AppBskyFeedPost.isRecord(embed.record.value)
+ ) {
+ // Not going to include the images right now
+ return {
+ author: embed.record.author,
+ cid: embed.record.cid,
+ uri: embed.record.uri,
+ indexedAt: embed.record.indexedAt,
+ text: embed.record.value.text,
+ }
+ } else if (
+ AppBskyEmbedRecordWithMedia.isView(embed) &&
+ AppBskyEmbedRecord.isViewRecord(embed.record.record) &&
+ AppBskyFeedPost.isRecord(embed.record.record.value)
+ ) {
+ return {
+ author: embed.record.record.author,
+ cid: embed.record.record.cid,
+ uri: embed.record.record.uri,
+ indexedAt: embed.record.record.indexedAt,
+ text: embed.record.record.value.text,
+ }
+ }
+ }, [embed])
+
+ const images = React.useMemo(() => {
+ if (AppBskyEmbedImages.isView(embed)) {
+ return embed.images
+ } else if (
+ AppBskyEmbedRecordWithMedia.isView(embed) &&
+ AppBskyEmbedImages.isView(embed.media)
+ ) {
+ return embed.media.images
+ }
+ }, [embed])
+
+ return (
+
+
+
+
+ {sanitizeDisplayName(
+ replyTo.author.displayName || sanitizeHandle(replyTo.author.handle),
+ )}
+
+
+
+
+ {replyTo.text}
+
+
+ {images && (
+
+ )}
+
+ {showFull && quote && }
+
+
+ )
+}
+
+function ComposerReplyToImages({
+ images,
+}: {
+ images: AppBskyEmbedImages.ViewImage[]
+ showFull: boolean
+}) {
+ return (
+
+
+ {(images.length === 1 && (
+
+ )) ||
+ (images.length === 2 && (
+
+
+
+
+ )) ||
+ (images.length === 3 && (
+
+
+
+
+
+
+
+ )) ||
+ (images.length === 4 && (
+
+
+
+
+
+
+
+
+
+
+ ))}
+
+
+ )
+}
+
+const styles = StyleSheet.create({
+ replyToLayout: {
+ flexDirection: 'row',
+ borderTopWidth: 1,
+ paddingTop: 16,
+ paddingBottom: 16,
+ },
+ replyToPost: {
+ flex: 1,
+ paddingLeft: 13,
+ paddingRight: 8,
+ },
+ replyToBody: {
+ flexDirection: 'row',
+ gap: 10,
+ },
+ replyToText: {
+ flex: 1,
+ flexGrow: 1,
+ },
+ imagesContainer: {
+ borderRadius: 6,
+ overflow: 'hidden',
+ marginTop: 2,
+ },
+ imagesInner: {
+ gap: 2,
+ },
+ imagesRow: {
+ flexDirection: 'row',
+ },
+ singleImage: {
+ width: 65,
+ height: 65,
+ },
+ doubleImageTall: {
+ width: 32.5,
+ height: 65,
+ },
+ doubleImage: {
+ width: 32.5,
+ height: 32.5,
+ },
+})
diff --git a/src/view/com/composer/ExternalEmbed.tsx b/src/view/com/composer/ExternalEmbed.tsx
index 502e4b4d2d..02dd1bbd75 100644
--- a/src/view/com/composer/ExternalEmbed.tsx
+++ b/src/view/com/composer/ExternalEmbed.tsx
@@ -68,7 +68,7 @@ export const ExternalEmbed = ({
onPress={onRemove}
accessibilityRole="button"
accessibilityLabel={_(msg`Remove image preview`)}
- accessibilityHint={`Removes default thumbnail from ${link.uri}`}
+ accessibilityHint={_(msg`Removes default thumbnail from ${link.uri}`)}
onAccessibilityEscape={onRemove}>
diff --git a/src/view/com/composer/Prompt.tsx b/src/view/com/composer/Prompt.tsx
index 9964359acb..632bb2634b 100644
--- a/src/view/com/composer/Prompt.tsx
+++ b/src/view/com/composer/Prompt.tsx
@@ -22,7 +22,7 @@ export function ComposePrompt({onPressCompose}: {onPressCompose: () => void}) {
onPress={() => onPressCompose()}
accessibilityRole="button"
accessibilityLabel={_(msg`Compose reply`)}
- accessibilityHint="Opens composer">
+ accessibilityHint={_(msg`Opens composer`)}>
+ accessibilityHint={_(msg`Opens camera on device`)}>
+ accessibilityHint={_(msg`Opens device photo gallery`)}>
void
blur: () => void
+ getCursorPosition: () => DOMRect | undefined
}
interface TextInputProps extends ComponentProps {
@@ -74,6 +75,7 @@ export const TextInput = forwardRef(function TextInputImpl(
blur: () => {
textInput.current?.blur()
},
+ getCursorPosition: () => undefined, // Not implemented on native
}))
const onChangeText = useCallback(
diff --git a/src/view/com/composer/text-input/TextInput.web.tsx b/src/view/com/composer/text-input/TextInput.web.tsx
index 206a3205b2..ec3a042a3e 100644
--- a/src/view/com/composer/text-input/TextInput.web.tsx
+++ b/src/view/com/composer/text-input/TextInput.web.tsx
@@ -22,6 +22,7 @@ import {useActorAutocompleteFn} from '#/state/queries/actor-autocomplete'
export interface TextInputRef {
focus: () => void
blur: () => void
+ getCursorPosition: () => DOMRect | undefined
}
interface TextInputProps {
@@ -169,6 +170,10 @@ export const TextInput = React.forwardRef(function TextInputImpl(
React.useImperativeHandle(ref, () => ({
focus: () => {}, // TODO
blur: () => {}, // TODO
+ getCursorPosition: () => {
+ const pos = editor?.state.selection.$anchor.pos
+ return pos ? editor?.view.coordsAtPos(pos) : undefined
+ },
}))
return (
diff --git a/src/view/com/composer/text-input/web/Autocomplete.tsx b/src/view/com/composer/text-input/web/Autocomplete.tsx
index 51197b8e4d..76058fed34 100644
--- a/src/view/com/composer/text-input/web/Autocomplete.tsx
+++ b/src/view/com/composer/text-input/web/Autocomplete.tsx
@@ -17,6 +17,7 @@ import {usePalette} from 'lib/hooks/usePalette'
import {Text} from 'view/com/util/text/Text'
import {UserAvatar} from 'view/com/util/UserAvatar'
import {useGrapheme} from '../hooks/useGrapheme'
+import {Trans} from '@lingui/macro'
interface MentionListRef {
onKeyDown: (props: SuggestionKeyDownProps) => boolean
@@ -187,7 +188,7 @@ const MentionList = forwardRef(
})
) : (
- No result
+ No result
)}
diff --git a/src/view/com/composer/text-input/web/EmojiPicker.web.tsx b/src/view/com/composer/text-input/web/EmojiPicker.web.tsx
index 575b5dd22d..1493621160 100644
--- a/src/view/com/composer/text-input/web/EmojiPicker.web.tsx
+++ b/src/view/com/composer/text-input/web/EmojiPicker.web.tsx
@@ -1,11 +1,17 @@
import React from 'react'
import Picker from '@emoji-mart/react'
-import {StyleSheet, TouchableWithoutFeedback, View} from 'react-native'
-import * as DropdownMenu from '@radix-ui/react-dropdown-menu'
+import {
+ StyleSheet,
+ TouchableWithoutFeedback,
+ useWindowDimensions,
+ View,
+} from 'react-native'
import {textInputWebEmitter} from '../TextInput.web'
-import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
-import {usePalette} from 'lib/hooks/usePalette'
-import {useMediaQuery} from 'react-responsive'
+
+const HEIGHT_OFFSET = 40
+const WIDTH_OFFSET = 100
+const PICKER_HEIGHT = 435 + HEIGHT_OFFSET
+const PICKER_WIDTH = 350 + WIDTH_OFFSET
export type Emoji = {
aliases?: string[]
@@ -18,59 +24,87 @@ export type Emoji = {
unified: string
}
-export function EmojiPickerButton() {
- const pal = usePalette('default')
- const [open, setOpen] = React.useState(false)
- const onOpenChange = (o: boolean) => {
- setOpen(o)
- }
- const close = () => {
- setOpen(false)
- }
-
- return (
-
-
-
-
-
-
-
-
-
- )
+export interface EmojiPickerState {
+ isOpen: boolean
+ pos: {top: number; left: number; right: number; bottom: number}
}
-export function EmojiPicker({close}: {close: () => void}) {
+interface IProps {
+ state: EmojiPickerState
+ close: () => void
+}
+
+export function EmojiPicker({state, close}: IProps) {
+ const {height, width} = useWindowDimensions()
+
+ const isShiftDown = React.useRef(false)
+
+ const position = React.useMemo(() => {
+ const fitsBelow = state.pos.top + PICKER_HEIGHT < height
+ const fitsAbove = PICKER_HEIGHT < state.pos.top
+ const placeOnLeft = PICKER_WIDTH < state.pos.left
+ const screenYMiddle = height / 2 - PICKER_HEIGHT / 2
+
+ if (fitsBelow) {
+ return {
+ top: state.pos.top + HEIGHT_OFFSET,
+ }
+ } else if (fitsAbove) {
+ return {
+ bottom: height - state.pos.bottom + HEIGHT_OFFSET,
+ }
+ } else {
+ return {
+ top: screenYMiddle,
+ left: placeOnLeft ? state.pos.left - PICKER_WIDTH : undefined,
+ right: !placeOnLeft
+ ? width - state.pos.right - PICKER_WIDTH
+ : undefined,
+ }
+ }
+ }, [state.pos, height, width])
+
+ React.useEffect(() => {
+ if (!state.isOpen) return
+
+ const onKeyDown = (e: KeyboardEvent) => {
+ if (e.key === 'Shift') {
+ isShiftDown.current = true
+ }
+ }
+ const onKeyUp = (e: KeyboardEvent) => {
+ if (e.key === 'Shift') {
+ isShiftDown.current = false
+ }
+ }
+ window.addEventListener('keydown', onKeyDown, true)
+ window.addEventListener('keyup', onKeyUp, true)
+
+ return () => {
+ window.removeEventListener('keydown', onKeyDown, true)
+ window.removeEventListener('keyup', onKeyUp, true)
+ }
+ }, [state.isOpen])
+
const onInsert = (emoji: Emoji) => {
textInputWebEmitter.emit('emoji-inserted', emoji)
- close()
+
+ if (!isShiftDown.current) {
+ close()
+ }
}
- const reducedPadding = useMediaQuery({query: '(max-height: 750px)'})
- const noPadding = useMediaQuery({query: '(max-height: 550px)'})
- const noPicker = useMediaQuery({query: '(max-height: 350px)'})
+
+ if (!state.isOpen) return null
return (
- // eslint-disable-next-line react-native-a11y/has-valid-accessibility-descriptors
-
+
{/* eslint-disable-next-line react-native-a11y/has-valid-accessibility-descriptors */}
- {
- e.stopPropagation() // prevent event from bubbling up to the mask
- }}>
-
+ e.stopPropagation()}>
+
{
return (await import('./EmojiPickerData.json')).default
@@ -94,15 +128,7 @@ const styles = StyleSheet.create({
right: 0,
width: '100%',
height: '100%',
- },
- trigger: {
- backgroundColor: 'transparent',
- // @ts-ignore web only
- border: 'none',
- paddingTop: 4,
- paddingLeft: 12,
- paddingRight: 12,
- cursor: 'pointer',
+ alignItems: 'center',
},
picker: {
marginHorizontal: 'auto',
diff --git a/src/view/com/feeds/FeedPage.tsx b/src/view/com/feeds/FeedPage.tsx
index 84d49e3b09..49f2809819 100644
--- a/src/view/com/feeds/FeedPage.tsx
+++ b/src/view/com/feeds/FeedPage.tsx
@@ -174,6 +174,7 @@ export function FeedPage({
feed={feed}
feedParams={feedParams}
pollInterval={POLL_FREQ}
+ disablePoll={hasNew}
scrollElRef={scrollElRef}
onScrolledDownChange={setIsScrolledDown}
onHasNew={setHasNew}
@@ -197,7 +198,7 @@ export function FeedPage({
onPress={onPressCompose}
icon={}
accessibilityRole="button"
- accessibilityLabel={_(msg`New post`)}
+ accessibilityLabel={_(msg({message: `New post`, context: 'action'}))}
accessibilityHint=""
/>
)}
diff --git a/src/view/com/feeds/FeedSourceCard.tsx b/src/view/com/feeds/FeedSourceCard.tsx
index 99e2b474f6..4871638407 100644
--- a/src/view/com/feeds/FeedSourceCard.tsx
+++ b/src/view/com/feeds/FeedSourceCard.tsx
@@ -14,7 +14,7 @@ import * as Toast from 'view/com/util/Toast'
import {sanitizeHandle} from 'lib/strings/handles'
import {logger} from '#/logger'
import {useModalControls} from '#/state/modals'
-import {msg} from '@lingui/macro'
+import {Trans, msg} from '@lingui/macro'
import {useLingui} from '@lingui/react'
import {
usePinFeedMutation,
@@ -108,9 +108,9 @@ export function FeedSourceCardLoaded({
try {
await removeFeed({uri: feed.uri})
// await item.unsave()
- Toast.show('Removed from my feeds')
+ Toast.show(_(msg`Removed from my feeds`))
} catch (e) {
- Toast.show('There was an issue contacting your server')
+ Toast.show(_(msg`There was an issue contacting your server`))
logger.error('Failed to unsave feed', {error: e})
}
},
@@ -122,9 +122,9 @@ export function FeedSourceCardLoaded({
} else {
await saveFeed({uri: feed.uri})
}
- Toast.show('Added to my feeds')
+ Toast.show(_(msg`Added to my feeds`))
} catch (e) {
- Toast.show('There was an issue contacting your server')
+ Toast.show(_(msg`There was an issue contacting your server`))
logger.error('Failed to save feed', {error: e})
}
}
@@ -164,7 +164,7 @@ export function FeedSourceCardLoaded({
testID={`feed-${feedUri}-toggleSave`}
disabled={isRemovePending}
accessibilityRole="button"
- accessibilityLabel={'Remove from my feeds'}
+ accessibilityLabel={_(msg`Remove from my feeds`)}
accessibilityHint=""
onPress={() => {
openModal({
@@ -175,9 +175,11 @@ export function FeedSourceCardLoaded({
try {
await removeFeed({uri: feedUri})
// await item.unsave()
- Toast.show('Removed from my feeds')
+ Toast.show(_(msg`Removed from my feeds`))
} catch (e) {
- Toast.show('There was an issue contacting your server')
+ Toast.show(
+ _(msg`There was an issue contacting your server`),
+ )
logger.error('Failed to unsave feed', {error: e})
}
},
@@ -223,19 +225,22 @@ export function FeedSourceCardLoaded({
{feed.displayName}
- {feed.type === 'feed' ? 'Feed' : 'List'} by{' '}
- {sanitizeHandle(feed.creatorHandle, '@')}
+ {feed.type === 'feed' ? (
+ Feed by {sanitizeHandle(feed.creatorHandle, '@')}
+ ) : (
+ List by {sanitizeHandle(feed.creatorHandle, '@')}
+ )}
{showSaveBtn && feed.type === 'feed' && (
-
+
- Liked by {feed.likeCount || 0}{' '}
- {pluralize(feed.likeCount || 0, 'user')}
+
+ Liked by {feed.likeCount || 0}{' '}
+ {pluralize(feed.likeCount || 0, 'user')}
+
) : null}
diff --git a/src/view/com/feeds/ProfileFeedgens.tsx b/src/view/com/feeds/ProfileFeedgens.tsx
index 8665fbfacf..f558eb18cb 100644
--- a/src/view/com/feeds/ProfileFeedgens.tsx
+++ b/src/view/com/feeds/ProfileFeedgens.tsx
@@ -9,13 +9,14 @@ import {Text} from '../util/text/Text'
import {usePalette} from 'lib/hooks/usePalette'
import {useProfileFeedgensQuery, RQKEY} from '#/state/queries/profile-feedgens'
import {logger} from '#/logger'
-import {Trans} from '@lingui/macro'
+import {Trans, msg} from '@lingui/macro'
import {cleanError} from '#/lib/strings/errors'
import {useTheme} from '#/lib/ThemeContext'
import {usePreferencesQuery} from '#/state/queries/preferences'
import {hydrateFeedGenerator} from '#/state/queries/feed'
import {FeedLoadingPlaceholder} from '#/view/com/util/LoadingPlaceholder'
import {isNative} from '#/platform/detection'
+import {useLingui} from '@lingui/react'
const LOADING = {_reactKey: '__loading__'}
const EMPTY = {_reactKey: '__empty__'}
@@ -43,6 +44,7 @@ export const ProfileFeedgens = React.forwardRef<
ref,
) {
const pal = usePalette('default')
+ const {_} = useLingui()
const theme = useTheme()
const [isPTRing, setIsPTRing] = React.useState(false)
const opts = React.useMemo(() => ({enabled}), [enabled])
@@ -142,7 +144,9 @@ export const ProfileFeedgens = React.forwardRef<
} else if (item === LOAD_MORE_ERROR_ITEM) {
return (
)
@@ -162,7 +166,7 @@ export const ProfileFeedgens = React.forwardRef<
}
return null
},
- [error, refetch, onPressRetryLoadMore, pal, preferences],
+ [error, refetch, onPressRetryLoadMore, pal, preferences, _],
)
return (
diff --git a/src/view/com/lightbox/ImageViewing/components/ImageDefaultHeader.tsx b/src/view/com/lightbox/ImageViewing/components/ImageDefaultHeader.tsx
index c806bc6a6c..3401adaff4 100644
--- a/src/view/com/lightbox/ImageViewing/components/ImageDefaultHeader.tsx
+++ b/src/view/com/lightbox/ImageViewing/components/ImageDefaultHeader.tsx
@@ -24,7 +24,7 @@ const ImageDefaultHeader = ({onRequestClose}: Props) => (
hitSlop={HIT_SLOP}
accessibilityRole="button"
accessibilityLabel={t`Close image`}
- accessibilityHint="Closes viewer for header image"
+ accessibilityHint={t`Closes viewer for header image`}
onAccessibilityEscape={onRequestClose}>
✕
diff --git a/src/view/com/lightbox/ImageViewing/components/ImageItem/ImageItem.android.tsx b/src/view/com/lightbox/ImageViewing/components/ImageItem/ImageItem.android.tsx
index ea740ec912..003ad61ba6 100644
--- a/src/view/com/lightbox/ImageViewing/components/ImageItem/ImageItem.android.tsx
+++ b/src/view/com/lightbox/ImageViewing/components/ImageItem/ImageItem.android.tsx
@@ -320,6 +320,7 @@ const ImageItem = ({
accessibilityLabel={imageSrc.alt}
accessibilityHint=""
onLoad={() => setIsLoaded(true)}
+ cachePolicy="memory"
/>
diff --git a/src/view/com/lightbox/Lightbox.tsx b/src/view/com/lightbox/Lightbox.tsx
index 8a18df33fb..2271bb9fb1 100644
--- a/src/view/com/lightbox/Lightbox.tsx
+++ b/src/view/com/lightbox/Lightbox.tsx
@@ -15,6 +15,8 @@ import {
ProfileImageLightbox,
ImagesLightbox,
} from '#/state/lightbox'
+import {Trans, msg} from '@lingui/macro'
+import {useLingui} from '@lingui/react'
export function Lightbox() {
const {activeLightbox} = useLightbox()
@@ -53,6 +55,7 @@ export function Lightbox() {
}
function LightboxFooter({imageIndex}: {imageIndex: number}) {
+ const {_} = useLingui()
const {activeLightbox} = useLightbox()
const [isAltExpanded, setAltExpanded] = React.useState(false)
const [permissionResponse, requestPermission] = MediaLibrary.usePermissions()
@@ -60,12 +63,14 @@ function LightboxFooter({imageIndex}: {imageIndex: number}) {
const saveImageToAlbumWithToasts = React.useCallback(
async (uri: string) => {
if (!permissionResponse || permissionResponse.granted === false) {
- Toast.show('Permission to access camera roll is required.')
+ Toast.show(_(msg`Permission to access camera roll is required.`))
if (permissionResponse?.canAskAgain) {
requestPermission()
} else {
Toast.show(
- 'Permission to access camera roll was denied. Please enable it in your system settings.',
+ _(
+ msg`Permission to access camera roll was denied. Please enable it in your system settings.`,
+ ),
)
}
return
@@ -78,7 +83,7 @@ function LightboxFooter({imageIndex}: {imageIndex: number}) {
Toast.show(`Failed to save image: ${String(e)}`)
}
},
- [permissionResponse, requestPermission],
+ [permissionResponse, requestPermission, _],
)
const lightbox = activeLightbox
@@ -117,7 +122,7 @@ function LightboxFooter({imageIndex}: {imageIndex: number}) {
onPress={() => saveImageToAlbumWithToasts(uri)}>
- Save
+ Save
diff --git a/src/view/com/lightbox/Lightbox.web.tsx b/src/view/com/lightbox/Lightbox.web.tsx
index f01b14a44c..fb97c30a45 100644
--- a/src/view/com/lightbox/Lightbox.web.tsx
+++ b/src/view/com/lightbox/Lightbox.web.tsx
@@ -117,7 +117,7 @@ function LightboxInner({
onPress={onClose}
accessibilityRole="button"
accessibilityLabel={_(msg`Close image viewer`)}
- accessibilityHint="Exits image view"
+ accessibilityHint={_(msg`Exits image view`)}
onAccessibilityEscape={onClose}>
{
setAltExpanded(!isAltExpanded)
}}>
diff --git a/src/view/com/lists/ListCard.tsx b/src/view/com/lists/ListCard.tsx
index 774e9e916e..28e98144a4 100644
--- a/src/view/com/lists/ListCard.tsx
+++ b/src/view/com/lists/ListCard.tsx
@@ -11,6 +11,7 @@ import {useSession} from '#/state/session'
import {sanitizeDisplayName} from 'lib/strings/display-names'
import {sanitizeHandle} from 'lib/strings/handles'
import {makeProfileLink} from 'lib/routes/links'
+import {Trans} from '@lingui/macro'
export const ListCard = ({
testID,
@@ -76,19 +77,28 @@ export const ListCard = ({
{sanitizeDisplayName(list.name)}
- {list.purpose === 'app.bsky.graph.defs#curatelist' && 'User list '}
+ {list.purpose === 'app.bsky.graph.defs#curatelist' &&
+ (list.creator.did === currentAccount?.did ? (
+ User list by you
+ ) : (
+
+ User list by {sanitizeHandle(list.creator.handle, '@')}
+
+ ))}
{list.purpose === 'app.bsky.graph.defs#modlist' &&
- 'Moderation list '}
- by{' '}
- {list.creator.did === currentAccount?.did
- ? 'you'
- : sanitizeHandle(list.creator.handle, '@')}
+ (list.creator.did === currentAccount?.did ? (
+ Moderation list by you
+ ) : (
+
+ Moderation list by {sanitizeHandle(list.creator.handle, '@')}
+
+ ))}
{!!list.viewer?.muted && (
- Subscribed
+ Subscribed
diff --git a/src/view/com/lists/ListMembers.tsx b/src/view/com/lists/ListMembers.tsx
index 2aef7d766e..212244cd83 100644
--- a/src/view/com/lists/ListMembers.tsx
+++ b/src/view/com/lists/ListMembers.tsx
@@ -20,6 +20,8 @@ import {logger} from '#/logger'
import {useModalControls} from '#/state/modals'
import {useSession} from '#/state/session'
import {cleanError} from '#/lib/strings/errors'
+import {useLingui} from '@lingui/react'
+import {msg} from '@lingui/macro'
const LOADING_ITEM = {_reactKey: '__loading__'}
const EMPTY_ITEM = {_reactKey: '__empty__'}
@@ -50,6 +52,7 @@ export function ListMembers({
desktopFixedHeightOffset?: number
}) {
const {track} = useAnalytics()
+ const {_} = useLingui()
const [isRefreshing, setIsRefreshing] = React.useState(false)
const {isMobile} = useWebMediaQueries()
const {openModal} = useModalControls()
@@ -143,12 +146,12 @@ export function ListMembers({
) : (
@@ -184,7 +188,7 @@ export function Component({}: {}) {
onPress={onCopy}
accessibilityRole="button"
accessibilityLabel={_(msg`Copy`)}
- accessibilityHint="Copies app password">
+ accessibilityHint={_(msg`Copies app password`)}>
{appPassword}
@@ -221,7 +225,7 @@ export function Component({}: {}) {
+
)
}
const styles = StyleSheet.create({
- container: {
- flex: 1,
- height: '100%',
- width: '100%',
- paddingVertical: isWeb ? 0 : 18,
- },
scrollContainer: {
flex: 1,
height: '100%',
paddingHorizontal: isWeb ? 0 : 12,
+ paddingVertical: isWeb ? 0 : 24,
},
scrollInner: {
gap: 12,
+ paddingTop: isWeb ? 0 : 12,
},
imageContainer: {
borderRadius: 8,
@@ -173,5 +155,6 @@ const styles = StyleSheet.create({
},
buttonControls: {
gap: 8,
+ paddingBottom: isWeb ? 0 : 50,
},
})
diff --git a/src/view/com/modals/AppealLabel.tsx b/src/view/com/modals/AppealLabel.tsx
index edc6f4cd01..b0aaaf6255 100644
--- a/src/view/com/modals/AppealLabel.tsx
+++ b/src/view/com/modals/AppealLabel.tsx
@@ -38,14 +38,14 @@ export function Component(props: ReportComponentProps) {
? 'com.atproto.repo.strongRef'
: 'com.atproto.admin.defs#repoRef'
await getAgent().createModerationReport({
- reasonType: ComAtprotoModerationDefs.REASONOTHER,
+ reasonType: ComAtprotoModerationDefs.REASONAPPEAL,
subject: {
$type,
...props,
},
reason: details,
})
- Toast.show("We'll look into your appeal promptly.")
+ Toast.show(_(msg`We'll look into your appeal promptly.`))
} finally {
closeModal()
}
diff --git a/src/view/com/modals/BirthDateSettings.tsx b/src/view/com/modals/BirthDateSettings.tsx
index c78f06ed43..5ebc611376 100644
--- a/src/view/com/modals/BirthDateSettings.tsx
+++ b/src/view/com/modals/BirthDateSettings.tsx
@@ -23,7 +23,7 @@ import {
} from '#/state/queries/preferences'
import {logger} from '#/logger'
-export const snapPoints = ['50%']
+export const snapPoints = ['50%', '90%']
function Inner({preferences}: {preferences: UsePreferencesQueryResponse}) {
const pal = usePalette('default')
@@ -63,6 +63,7 @@ function Inner({preferences}: {preferences: UsePreferencesQueryResponse}) {
diff --git a/src/view/com/modals/ChangeEmail.tsx b/src/view/com/modals/ChangeEmail.tsx
index 44b102fa0b..c5672bc814 100644
--- a/src/view/com/modals/ChangeEmail.tsx
+++ b/src/view/com/modals/ChangeEmail.tsx
@@ -38,7 +38,7 @@ export function Component() {
const onRequestChange = async () => {
if (email === currentAccount?.email) {
- setError('Enter your new email above')
+ setError(_(msg`Enter your new email above`))
return
}
setError('')
@@ -53,7 +53,7 @@ export function Component() {
email: email.trim(),
emailConfirmed: false,
})
- Toast.show('Email updated')
+ Toast.show(_(msg`Email updated`))
setStage(Stages.Done)
}
} catch (e) {
@@ -85,7 +85,7 @@ export function Component() {
email: email.trim(),
emailConfirmed: false,
})
- Toast.show('Email updated')
+ Toast.show(_(msg`Email updated`))
setStage(Stages.Done)
} catch (e) {
setError(cleanError(String(e)))
diff --git a/src/view/com/modals/ChangeHandle.tsx b/src/view/com/modals/ChangeHandle.tsx
index 31f6d6ea7e..e578fa7da5 100644
--- a/src/view/com/modals/ChangeHandle.tsx
+++ b/src/view/com/modals/ChangeHandle.tsx
@@ -147,7 +147,7 @@ export function Inner({
onPress={onPressCancel}
accessibilityRole="button"
accessibilityLabel={_(msg`Cancel change handle`)}
- accessibilityHint="Exits handle change process"
+ accessibilityHint={_(msg`Exits handle change process`)}
onAccessibilityEscape={onPressCancel}>
Cancel
@@ -168,7 +168,7 @@ export function Inner({
onPress={onPressSave}
accessibilityRole="button"
accessibilityLabel={_(msg`Save handle change`)}
- accessibilityHint={`Saves handle change to ${handle}`}>
+ accessibilityHint={_(msg`Saves handle change to ${handle}`)}>
Save
@@ -263,14 +263,16 @@ function ProvidedHandleForm({
editable={!isProcessing}
accessible={true}
accessibilityLabel={_(msg`Handle`)}
- accessibilityHint="Sets Bluesky username"
+ accessibilityHint={_(msg`Sets Bluesky username`)}
/>
- Your full handle will be{' '}
-
- @{createFullHandle(handle, userDomain)}
-
+
+ Your full handle will be{' '}
+
+ @{createFullHandle(handle, userDomain)}
+
+
- {confirmBtnText ?? 'Confirm'}
+ {confirmBtnText ?? Confirm}
)}
@@ -85,10 +85,10 @@ export function Component({
onPress={onPressCancel}
style={[styles.btnCancel, s.mt10]}
accessibilityRole="button"
- accessibilityLabel={_(msg`Cancel`)}
+ accessibilityLabel={_(msg({message: 'Cancel', context: 'action'}))}
accessibilityHint="">
- {cancelBtnText ?? 'Cancel'}
+ {cancelBtnText ?? Cancel}
)}
diff --git a/src/view/com/modals/ContentFilteringSettings.tsx b/src/view/com/modals/ContentFilteringSettings.tsx
index 8b42e1b1d3..d681fbf0b2 100644
--- a/src/view/com/modals/ContentFilteringSettings.tsx
+++ b/src/view/com/modals/ContentFilteringSettings.tsx
@@ -104,6 +104,7 @@ export function Component({}: {}) {
function AdultContentEnabledPref() {
const pal = usePalette('default')
+ const {_} = useLingui()
const {data: preferences} = usePreferencesQuery()
const {mutate, variables} = usePreferencesSetAdultContentMutation()
const {openModal} = useModalControls()
@@ -121,36 +122,44 @@ function AdultContentEnabledPref() {
enabled: !(variables?.enabled ?? preferences?.adultContentEnabled),
})
} catch (e) {
- Toast.show('There was an issue syncing your preferences with the server')
+ Toast.show(
+ _(msg`There was an issue syncing your preferences with the server`),
+ )
logger.error('Failed to update preferences with server', {error: e})
}
- }, [variables, preferences, mutate])
+ }, [variables, preferences, mutate, _])
return (
{isIOS ? (
preferences?.adultContentEnabled ? null : (
- Adult content can only be enabled via the Web at{' '}
-
- .
+
+ Adult content can only be enabled via the Web at{' '}
+
+ .
+
)
) : typeof preferences?.birthDate === 'undefined' ? (
- Confirm your age to enable adult content.
+ Confirm your age to enable adult content.
-
+
) : (preferences.userAge || 0) >= 18 ? (
- You must be 18 or older to enable adult content.
+ You must be 18 or older to enable adult content.
-
+
)}
@@ -203,7 +216,7 @@ function ContentLabelPref({
{disabled || !visibility ? (
- Hide
+ Hide
) : (
onChange(value)}
accessibilityRole="button"
accessibilityLabel={value}
- accessibilityHint={`Set ${value} for ${labelGroup} content moderation policy`}>
+ accessibilityHint={_(
+ msg`Set ${value} for ${labelGroup} content moderation policy`,
+ )}>
{label}
diff --git a/src/view/com/modals/CreateOrEditList.tsx b/src/view/com/modals/CreateOrEditList.tsx
index 8d13cdf2fa..bd1eb33935 100644
--- a/src/view/com/modals/CreateOrEditList.tsx
+++ b/src/view/com/modals/CreateOrEditList.tsx
@@ -65,7 +65,6 @@ export function Component({
return 'app.bsky.graph.defs#curatelist'
}, [list, purpose])
const isCurateList = activePurpose === 'app.bsky.graph.defs#curatelist'
- const purposeLabel = isCurateList ? 'User' : 'Moderation'
const [isProcessing, setProcessing] = useState(false)
const [name, setName] = useState(list?.name || '')
@@ -106,7 +105,7 @@ export function Component({
}
const nameTrimmed = name.trim()
if (!nameTrimmed) {
- setError('Name is required')
+ setError(_(msg`Name is required`))
return
}
setProcessing(true)
@@ -121,7 +120,11 @@ export function Component({
description: description.trim(),
avatar: newAvatar,
})
- Toast.show(`${purposeLabel} list updated`)
+ Toast.show(
+ isCurateList
+ ? _(msg`User list updated`)
+ : _(msg`Moderation list updated`),
+ )
onSave?.(list.uri)
} else {
const res = await listCreateMutation.mutateAsync({
@@ -130,14 +133,20 @@ export function Component({
description,
avatar: newAvatar,
})
- Toast.show(`${purposeLabel} list created`)
+ Toast.show(
+ isCurateList
+ ? _(msg`User list created`)
+ : _(msg`Moderation list created`),
+ )
onSave?.(res.uri)
}
closeModal()
} catch (e: any) {
if (isNetworkError(e)) {
setError(
- 'Failed to create the list. Check your internet connection and try again.',
+ _(
+ msg`Failed to create the list. Check your internet connection and try again.`,
+ ),
)
} else {
setError(cleanError(e))
@@ -153,13 +162,13 @@ export function Component({
closeModal,
activePurpose,
isCurateList,
- purposeLabel,
name,
description,
newAvatar,
list,
listMetadataMutation,
listCreateMutation,
+ _,
])
return (
@@ -174,7 +183,17 @@ export function Component({
testID="createOrEditListModal">
- {list ? 'Edit' : 'New'} {purposeLabel} List
+ {isCurateList ? (
+ list ? (
+ Edit User List
+ ) : (
+ New User List
+ )
+ ) : list ? (
+ Edit Moderation List
+ ) : (
+ New Moderation List
+ )}
{error !== '' && (
@@ -202,7 +221,9 @@ export function Component({
testID="editNameInput"
style={[styles.textInput, pal.border, pal.text]}
placeholder={
- isCurateList ? 'e.g. Great Posters' : 'e.g. Spammers'
+ isCurateList
+ ? _(msg`e.g. Great Posters`)
+ : _(msg`e.g. Spammers`)
}
placeholderTextColor={colors.gray4}
value={name}
@@ -222,8 +243,8 @@ export function Component({
style={[styles.textArea, pal.border, pal.text]}
placeholder={
isCurateList
- ? 'e.g. The posters who never miss.'
- : 'e.g. Users that repeatedly reply with ads.'
+ ? _(msg`e.g. The posters who never miss.`)
+ : _(msg`e.g. Users that repeatedly reply with ads.`)
}
placeholderTextColor={colors.gray4}
keyboardAppearance={theme.colorScheme}
@@ -254,7 +275,7 @@ export function Component({
end={{x: 1, y: 1}}
style={[styles.btn]}>
- Save
+ Save
@@ -269,7 +290,7 @@ export function Component({
onAccessibilityEscape={onPressCancel}>
- Cancel
+ Cancel
diff --git a/src/view/com/modals/DeleteAccount.tsx b/src/view/com/modals/DeleteAccount.tsx
index ee16d46b3b..0cfc098d44 100644
--- a/src/view/com/modals/DeleteAccount.tsx
+++ b/src/view/com/modals/DeleteAccount.tsx
@@ -62,7 +62,7 @@ export function Component({}: {}) {
password,
token,
})
- Toast.show('Your account has been deleted')
+ Toast.show(_(msg`Your account has been deleted`))
resetToTab('HomeTab')
removeAccount(currentAccount)
clearCurrentAccount()
@@ -125,7 +125,9 @@ export function Component({}: {}) {
onPress={onPressSendEmail}
accessibilityRole="button"
accessibilityLabel={_(msg`Send email`)}
- accessibilityHint="Sends email with confirmation code for account deletion">
+ accessibilityHint={_(
+ msg`Sends email with confirmation code for account deletion`,
+ )}>
- Send Email
+ Send Email
@@ -147,7 +149,7 @@ export function Component({}: {}) {
accessibilityHint=""
onAccessibilityEscape={onCancel}>
- Cancel
+ Cancel
>
@@ -174,7 +176,9 @@ export function Component({}: {}) {
onChangeText={setConfirmCode}
accessibilityLabelledBy="confirmationCode"
accessibilityLabel={_(msg`Confirmation code`)}
- accessibilityHint="Input confirmation code for account deletion"
+ accessibilityHint={_(
+ msg`Input confirmation code for account deletion`,
+ )}
/>
Please enter your password as well:
@@ -189,7 +193,7 @@ export function Component({}: {}) {
onChangeText={setPassword}
accessibilityLabelledBy="password"
accessibilityLabel={_(msg`Password`)}
- accessibilityHint="Input password for account deletion"
+ accessibilityHint={_(msg`Input password for account deletion`)}
/>
{error ? (
@@ -220,7 +224,7 @@ export function Component({}: {}) {
accessibilityHint="Exits account deletion process"
onAccessibilityEscape={onCancel}>
- Cancel
+ Cancel
>
diff --git a/src/view/com/modals/EditImage.tsx b/src/view/com/modals/EditImage.tsx
index 753907472d..3b35ffee21 100644
--- a/src/view/com/modals/EditImage.tsx
+++ b/src/view/com/modals/EditImage.tsx
@@ -112,16 +112,16 @@ export const Component = observer(function EditImageImpl({
// },
{
name: 'flip' as const,
- label: 'Flip horizontal',
+ label: _(msg`Flip horizontal`),
onPress: onFlipHorizontal,
},
{
name: 'flip' as const,
- label: 'Flip vertically',
+ label: _(msg`Flip vertically`),
onPress: onFlipVertical,
},
],
- [onFlipHorizontal, onFlipVertical],
+ [onFlipHorizontal, onFlipVertical, _],
)
useEffect(() => {
@@ -284,7 +284,7 @@ export const Component = observer(function EditImageImpl({
size={label?.startsWith('Flip') ? 22 : 24}
style={[
pal.text,
- label === 'Flip vertically'
+ label === _(msg`Flip vertically`)
? styles.flipVertical
: undefined,
]}
@@ -330,7 +330,7 @@ export const Component = observer(function EditImageImpl({
end={{x: 1, y: 1}}
style={[styles.btn]}>
- Done
+ Done
diff --git a/src/view/com/modals/EditProfile.tsx b/src/view/com/modals/EditProfile.tsx
index e044f8c0e2..dd8ac9ae7c 100644
--- a/src/view/com/modals/EditProfile.tsx
+++ b/src/view/com/modals/EditProfile.tsx
@@ -125,7 +125,7 @@ export function Component({
newUserAvatar,
newUserBanner,
})
- Toast.show('Profile updated')
+ Toast.show(_(msg`Profile updated`))
onUpdate?.()
closeModal()
} catch (e: any) {
@@ -142,6 +142,7 @@ export function Component({
newUserAvatar,
newUserBanner,
setImageError,
+ _,
])
return (
@@ -181,7 +182,7 @@ export function Component({
@@ -189,7 +190,7 @@ export function Component({
}
accessible={true}
accessibilityLabel={_(msg`Display name`)}
- accessibilityHint="Edit your display name"
+ accessibilityHint={_(msg`Edit your display name`)}
/>
@@ -199,7 +200,7 @@ export function Component({
setDescription(enforceLen(v, MAX_DESCRIPTION))}
accessible={true}
accessibilityLabel={_(msg`Description`)}
- accessibilityHint="Edit your profile description"
+ accessibilityHint={_(msg`Edit your profile description`)}
/>
{updateMutation.isPending ? (
@@ -221,7 +222,7 @@ export function Component({
onPress={onPressSave}
accessibilityRole="button"
accessibilityLabel={_(msg`Save`)}
- accessibilityHint="Saves any changes to your profile">
+ accessibilityHint={_(msg`Saves any changes to your profile`)}>
void
+ source: EmbedPlayerSource
+}) {
+ const pal = usePalette('default')
+ const {closeModal} = useModalControls()
+ const {_} = useLingui()
+ const setExternalEmbedPref = useSetExternalEmbedPref()
+ const {isMobile} = useWebMediaQueries()
+
+ const onShowAllPress = React.useCallback(() => {
+ for (const key of embedPlayerSources) {
+ setExternalEmbedPref(key, 'show')
+ }
+ onAccept()
+ closeModal()
+ }, [closeModal, onAccept, setExternalEmbedPref])
+
+ const onShowPress = React.useCallback(() => {
+ setExternalEmbedPref(source, 'show')
+ onAccept()
+ closeModal()
+ }, [closeModal, onAccept, setExternalEmbedPref, source])
+
+ const onHidePress = React.useCallback(() => {
+ setExternalEmbedPref(source, 'hide')
+ closeModal()
+ }, [closeModal, setExternalEmbedPref, source])
+
+ return (
+
+
+ External Media
+
+
+
+
+ This content is hosted by {externalEmbedLabels[source]}. Do you want
+ to enable external media?
+
+
+
+
+
+ External media may allow websites to collect information about you and
+ your device. No information is sent or requested until you press the
+ "play" button.
+
+
+
+
+
+
+ Enable External Media
+
+
+
+
+
+
+
+ Enable {externalEmbedLabels[source]} only
+
+
+
+
+
+
+
+ No thanks
+
+
+
+
+ )
+}
+
+const styles = StyleSheet.create({
+ title: {
+ textAlign: 'center',
+ fontWeight: 'bold',
+ fontSize: 24,
+ marginBottom: 12,
+ },
+ btn: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ justifyContent: 'center',
+ width: '100%',
+ borderRadius: 32,
+ padding: 14,
+ backgroundColor: colors.gray1,
+ },
+})
diff --git a/src/view/com/modals/InviteCodes.tsx b/src/view/com/modals/InviteCodes.tsx
index 0ebb545cfe..c0318df015 100644
--- a/src/view/com/modals/InviteCodes.tsx
+++ b/src/view/com/modals/InviteCodes.tsx
@@ -18,7 +18,7 @@ import {ScrollView} from './util'
import {usePalette} from 'lib/hooks/usePalette'
import {isWeb} from 'platform/detection'
import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries'
-import {Trans} from '@lingui/macro'
+import {Trans, msg} from '@lingui/macro'
import {cleanError} from 'lib/strings/errors'
import {useModalControls} from '#/state/modals'
import {useInvitesState, useInvitesAPI} from '#/state/invites'
@@ -30,6 +30,7 @@ import {
useInviteCodesQuery,
InviteCodesQueryResponse,
} from '#/state/queries/invites'
+import {useLingui} from '@lingui/react'
export const snapPoints = ['70%']
@@ -49,6 +50,7 @@ export function Component() {
export function Inner({invites}: {invites: InviteCodesQueryResponse}) {
const pal = usePalette('default')
+ const {_} = useLingui()
const {closeModal} = useModalControls()
const {isTabletOrDesktop} = useWebMediaQueries()
@@ -75,7 +77,7 @@ export function Inner({invites}: {invites: InviteCodesQueryResponse}) {
]}>
- {list.purpose === 'app.bsky.graph.defs#curatelist' && 'User list '}
- {list.purpose === 'app.bsky.graph.defs#modlist' && 'Moderation list '}
- by{' '}
- {list.creator.did === currentAccount?.did
- ? 'you'
- : sanitizeHandle(list.creator.handle, '@')}
+ {list.purpose === 'app.bsky.graph.defs#curatelist' &&
+ (list.creator.did === currentAccount?.did ? (
+ User list by you
+ ) : (
+
+ User list by {sanitizeHandle(list.creator.handle, '@')}
+
+ ))}
+ {list.purpose === 'app.bsky.graph.defs#modlist' &&
+ (list.creator.did === currentAccount?.did ? (
+ Moderation list by you
+ ) : (
+
+ Moderation list by {sanitizeHandle(list.creator.handle, '@')}
+
+ ))}
diff --git a/src/view/com/modals/VerifyEmail.tsx b/src/view/com/modals/VerifyEmail.tsx
index 4f2b1aadf8..30a57afc58 100644
--- a/src/view/com/modals/VerifyEmail.tsx
+++ b/src/view/com/modals/VerifyEmail.tsx
@@ -75,7 +75,7 @@ export function Component({showReminder}: {showReminder?: boolean}) {
token: confirmationCode.trim(),
})
updateCurrentAccount({emailConfirmed: true})
- Toast.show('Email verified')
+ Toast.show(_(msg`Email verified`))
closeModal()
} catch (e) {
setError(cleanError(String(e)))
@@ -97,9 +97,15 @@ export function Component({showReminder}: {showReminder?: boolean}) {
{stage === Stages.Reminder && }
- {stage === Stages.Reminder ? 'Please Verify Your Email' : ''}
- {stage === Stages.ConfirmCode ? 'Enter Confirmation Code' : ''}
- {stage === Stages.Email ? 'Verify Your Email' : ''}
+ {stage === Stages.Reminder ? (
+ Please Verify Your Email
+ ) : stage === Stages.Email ? (
+ Verify Your Email
+ ) : stage === Stages.ConfirmCode ? (
+ Enter Confirmation Code
+ ) : (
+ ''
+ )}
@@ -133,7 +139,7 @@ export function Component({showReminder}: {showReminder?: boolean}) {
size={16}
/>
- {currentAccount?.email || '(no email)'}
+ {currentAccount?.email || _(msg`(no email)`)}
setStage(Stages.Email)}
accessibilityLabel={_(msg`Get Started`)}
accessibilityHint=""
- label="Get Started"
+ label={_(msg`Get Started`)}
labelContainerStyle={{justifyContent: 'center', padding: 4}}
labelStyle={[s.f18]}
/>
@@ -195,7 +201,7 @@ export function Component({showReminder}: {showReminder?: boolean}) {
onPress={onSendEmail}
accessibilityLabel={_(msg`Send Confirmation Email`)}
accessibilityHint=""
- label="Send Confirmation Email"
+ label={_(msg`Send Confirmation Email`)}
labelContainerStyle={{
justifyContent: 'center',
padding: 4,
@@ -207,7 +213,7 @@ export function Component({showReminder}: {showReminder?: boolean}) {
type="default"
accessibilityLabel={_(msg`I have a code`)}
accessibilityHint=""
- label="I have a confirmation code"
+ label={_(msg`I have a confirmation code`)}
labelContainerStyle={{
justifyContent: 'center',
padding: 4,
@@ -224,7 +230,7 @@ export function Component({showReminder}: {showReminder?: boolean}) {
onPress={onConfirm}
accessibilityLabel={_(msg`Confirm`)}
accessibilityHint=""
- label="Confirm"
+ label={_(msg`Confirm`)}
labelContainerStyle={{justifyContent: 'center', padding: 4}}
labelStyle={[s.f18]}
/>
@@ -236,10 +242,16 @@ export function Component({showReminder}: {showReminder?: boolean}) {
closeModal()
}}
accessibilityLabel={
- stage === Stages.Reminder ? 'Not right now' : 'Cancel'
+ stage === Stages.Reminder
+ ? _(msg`Not right now`)
+ : _(msg`Cancel`)
}
accessibilityHint=""
- label={stage === Stages.Reminder ? 'Not right now' : 'Cancel'}
+ label={
+ stage === Stages.Reminder
+ ? _(msg`Not right now`)
+ : _(msg`Cancel`)
+ }
labelContainerStyle={{justifyContent: 'center', padding: 4}}
labelStyle={[s.f18]}
/>
diff --git a/src/view/com/modals/Waitlist.tsx b/src/view/com/modals/Waitlist.tsx
index a31545c0a0..263dd27a2f 100644
--- a/src/view/com/modals/Waitlist.tsx
+++ b/src/view/com/modals/Waitlist.tsx
@@ -48,7 +48,7 @@ export function Component({}: {}) {
} else {
setError(
resBody.error ||
- 'Something went wrong. Check your email and try again.',
+ _(msg`Something went wrong. Check your email and try again.`),
)
}
} catch (e: any) {
@@ -75,7 +75,7 @@ export function Component({}: {}) {
{error ? (
@@ -114,7 +116,9 @@ export function Component({}: {}) {
+ accessibilityHint={_(
+ msg`Confirms signing up ${email} to the waitlist`,
+ )}>
Cancel
diff --git a/src/view/com/modals/report/InputIssueDetails.tsx b/src/view/com/modals/report/InputIssueDetails.tsx
index 2f701b7995..2bc86f75e7 100644
--- a/src/view/com/modals/report/InputIssueDetails.tsx
+++ b/src/view/com/modals/report/InputIssueDetails.tsx
@@ -42,7 +42,8 @@ export function InputIssueDetails({
accessibilityHint="Add more details to your report">
- Back
+ {' '}
+ Back
diff --git a/src/view/com/modals/report/Modal.tsx b/src/view/com/modals/report/Modal.tsx
index 60c3f06b77..afd0d417dc 100644
--- a/src/view/com/modals/report/Modal.tsx
+++ b/src/view/com/modals/report/Modal.tsx
@@ -44,9 +44,9 @@ export function Component(content: ReportComponentProps) {
const {isMobile} = useWebMediaQueries()
const [isProcessing, setIsProcessing] = useState(false)
const [showDetailsInput, setShowDetailsInput] = useState(false)
- const [error, setError] = useState()
- const [issue, setIssue] = useState()
- const [details, setDetails] = useState()
+ const [error, setError] = useState('')
+ const [issue, setIssue] = useState('')
+ const [details, setDetails] = useState('')
const isAccountReport = 'did' in content
const subjectKey = isAccountReport ? content.did : content.uri
const atUri = useMemo(
diff --git a/src/view/com/notifications/Feed.tsx b/src/view/com/notifications/Feed.tsx
index a99fe2c1dd..2088acbac5 100644
--- a/src/view/com/notifications/Feed.tsx
+++ b/src/view/com/notifications/Feed.tsx
@@ -13,6 +13,8 @@ import {logger} from '#/logger'
import {cleanError} from '#/lib/strings/errors'
import {useModerationOpts} from '#/state/queries/preferences'
import {List, ListRef} from '../util/List'
+import {useLingui} from '@lingui/react'
+import {msg} from '@lingui/macro'
const EMPTY_FEED_ITEM = {_reactKey: '__empty__'}
const LOAD_MORE_ERROR_ITEM = {_reactKey: '__load_more_error__'}
@@ -31,6 +33,7 @@ export function Feed({
}) {
const [isPTRing, setIsPTRing] = React.useState(false)
+ const {_} = useLingui()
const moderationOpts = useModerationOpts()
const {checkUnread} = useUnreadNotificationsApi()
const {
@@ -101,14 +104,16 @@ export function Feed({
return (
)
} else if (item === LOAD_MORE_ERROR_ITEM) {
return (
)
@@ -117,7 +122,7 @@ export function Feed({
}
return
},
- [onPressRetryLoadMore, moderationOpts],
+ [onPressRetryLoadMore, moderationOpts, _],
)
const FeedFooter = React.useCallback(
diff --git a/src/view/com/notifications/FeedItem.tsx b/src/view/com/notifications/FeedItem.tsx
index aaa2ea2c63..e9d8b63e26 100644
--- a/src/view/com/notifications/FeedItem.tsx
+++ b/src/view/com/notifications/FeedItem.tsx
@@ -42,6 +42,7 @@ import {TimeElapsed} from '../util/TimeElapsed'
import {isWeb} from 'platform/detection'
import {Trans, msg} from '@lingui/macro'
import {useLingui} from '@lingui/react'
+import {FeedSourceCard} from '../feeds/FeedSourceCard'
const MAX_AUTHORS = 5
@@ -64,6 +65,7 @@ let FeedItem = ({
moderationOpts: ModerationOpts
}): React.ReactNode => {
const pal = usePalette('default')
+ const {_} = useLingui()
const [isAuthorsExpanded, setAuthorsExpanded] = useState(false)
const itemHref = useMemo(() => {
if (item.type === 'post-like' || item.type === 'repost') {
@@ -112,7 +114,7 @@ let FeedItem = ({
]
}, [item, moderationOpts])
- if (item.subjectUri && !item.subject) {
+ if (item.subjectUri && !item.subject && item.type !== 'feedgen-like') {
// don't render anything if the target post was deleted or unfindable
return
}
@@ -150,24 +152,26 @@ let FeedItem = ({
let icon: Props['icon'] | 'HeartIconSolid'
let iconStyle: Props['style'] = []
if (item.type === 'post-like') {
- action = 'liked your post'
+ action = _(msg`liked your post`)
icon = 'HeartIconSolid'
iconStyle = [
s.likeColor as FontAwesomeIconStyle,
{position: 'relative', top: -4},
]
} else if (item.type === 'repost') {
- action = 'reposted your post'
+ action = _(msg`reposted your post`)
icon = 'retweet'
iconStyle = [s.green3 as FontAwesomeIconStyle]
} else if (item.type === 'follow') {
- action = 'followed you'
+ action = _(msg`followed you`)
icon = 'user-plus'
iconStyle = [s.blue3 as FontAwesomeIconStyle]
} else if (item.type === 'feedgen-like') {
- action = `liked your custom feed${
- item.subjectUri ? ` '${new AtUri(item.subjectUri).rkey}}'` : ''
- }`
+ action = _(
+ msg`liked your custom feed${
+ item.subjectUri ? ` '${new AtUri(item.subjectUri).rkey}'` : ''
+ }`,
+ )
icon = 'HeartIconSolid'
iconStyle = [
s.likeColor as FontAwesomeIconStyle,
@@ -256,6 +260,13 @@ let FeedItem = ({
{item.type === 'post-like' || item.type === 'repost' ? (
) : null}
+ {item.type === 'feedgen-like' && item.subjectUri ? (
+
+ ) : null}
)
@@ -306,14 +317,16 @@ function CondensedAuthorsList({
onPress={onToggleAuthorsExpanded}
accessibilityRole="button"
accessibilityLabel={_(msg`Hide user list`)}
- accessibilityHint="Collapses list of users for a given notification">
+ accessibilityHint={_(
+ msg`Collapses list of users for a given notification`,
+ )}>
- Hide
+ Hide
@@ -335,7 +348,9 @@ function CondensedAuthorsList({
return (
{authors.slice(0, MAX_AUTHORS).map(author => (
@@ -496,6 +511,12 @@ const styles = StyleSheet.create({
marginLeft: 2,
opacity: 0.8,
},
+ feedcard: {
+ borderWidth: 1,
+ borderRadius: 8,
+ paddingVertical: 12,
+ marginTop: 6,
+ },
addedContainer: {
paddingTop: 4,
diff --git a/src/view/com/pager/FeedsTabBarMobile.tsx b/src/view/com/pager/FeedsTabBarMobile.tsx
index 0727a51ac0..9b286b81e3 100644
--- a/src/view/com/pager/FeedsTabBarMobile.tsx
+++ b/src/view/com/pager/FeedsTabBarMobile.tsx
@@ -74,7 +74,9 @@ export function FeedsTabBar(
onPress={onPressAvi}
accessibilityRole="button"
accessibilityLabel={_(msg`Open navigation`)}
- accessibilityHint="Access profile and other navigation links"
+ accessibilityHint={_(
+ msg`Access profile and other navigation links`,
+ )}
hitSlop={HITSLOP_10}>
{
if (item === TOP_COMPONENT) {
- return isTablet ? : null
+ return isTablet ? (
+
+ ) : null
} else if (item === PARENT_SPINNER) {
return (
@@ -411,7 +415,7 @@ function PostThreadBlocked() {
style={[pal.link as FontAwesomeIconStyle, s.mr5]}
size={14}
/>
- Back
+ Back
diff --git a/src/view/com/post-thread/PostThreadItem.tsx b/src/view/com/post-thread/PostThreadItem.tsx
index 2ff8030714..cd218a0623 100644
--- a/src/view/com/post-thread/PostThreadItem.tsx
+++ b/src/view/com/post-thread/PostThreadItem.tsx
@@ -5,9 +5,9 @@ import {
AppBskyFeedDefs,
AppBskyFeedPost,
RichText as RichTextAPI,
- moderatePost,
PostModeration,
} from '@atproto/api'
+import {moderatePost_wrapped as moderatePost} from '#/lib/moderatePost_wrapped'
import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
import {Link, TextLink} from '../util/Link'
import {RichText} from '../util/text/RichText'
@@ -158,6 +158,7 @@ let PostThreadItemLoaded = ({
onPostReply: () => void
}): React.ReactNode => {
const pal = usePalette('default')
+ const {_} = useLingui()
const langPrefs = useLanguagePrefs()
const {openComposer} = useComposerControls()
const {currentAccount} = useSession()
@@ -172,7 +173,7 @@ let PostThreadItemLoaded = ({
const urip = new AtUri(post.uri)
return makeProfileLink(post.author, 'post', urip.rkey)
}, [post.uri, post.author])
- const itemTitle = `Post by ${post.author.handle}`
+ const itemTitle = _(msg`Post by ${post.author.handle}`)
const authorHref = makeProfileLink(post.author)
const authorTitle = post.author.handle
const isAuthorMuted = post.author.viewer?.muted
@@ -180,15 +181,15 @@ let PostThreadItemLoaded = ({
const urip = new AtUri(post.uri)
return makeProfileLink(post.author, 'post', urip.rkey, 'liked-by')
}, [post.uri, post.author])
- const likesTitle = 'Likes on this post'
+ const likesTitle = _(msg`Likes on this post`)
const repostsHref = React.useMemo(() => {
const urip = new AtUri(post.uri)
return makeProfileLink(post.author, 'post', urip.rkey, 'reposted-by')
}, [post.uri, post.author])
- const repostsTitle = 'Reposts of this post'
- const isSelfLabeledPost =
+ const repostsTitle = _(msg`Reposts of this post`)
+ const isModeratedPost =
moderation.decisions.post.cause?.type === 'label' &&
- moderation.decisions.post.cause.label.src === currentAccount?.did
+ moderation.decisions.post.cause.label.src !== currentAccount?.did
const translatorUrl = getTranslatorLink(
record?.text || '',
@@ -214,6 +215,7 @@ let PostThreadItemLoaded = ({
displayName: post.author.displayName,
avatar: post.author.avatar,
},
+ embed: post.embed,
},
onPost: onPostReply,
})
@@ -224,7 +226,7 @@ let PostThreadItemLoaded = ({
}, [setLimitLines])
if (!record) {
- return
+ return
}
if (isHighlightedPost) {
@@ -334,8 +336,9 @@ let PostThreadItemLoaded = ({
postCid={post.cid}
postUri={post.uri}
record={record}
+ richText={richText}
showAppealLabelItem={
- post.author.did === currentAccount?.did && !isSelfLabeledPost
+ post.author.did === currentAccount?.did && isModeratedPost
}
style={{
paddingVertical: 6,
@@ -437,6 +440,7 @@ let PostThreadItemLoaded = ({
big
post={post}
record={record}
+ richText={richText}
onPressReply={onPressReply}
/>
@@ -539,6 +543,7 @@ let PostThreadItemLoaded = ({
timestamp={post.indexedAt}
postHref={postHref}
showAvatar={isThreadedChild}
+ avatarModeration={moderation.avatar}
avatarSize={28}
displayNameType="md-bold"
displayNameStyle={isThreadedChild && s.ml2}
@@ -561,7 +566,7 @@ let PostThreadItemLoaded = ({
) : undefined}
{limitLines ? (
diff --git a/src/view/com/post/Post.tsx b/src/view/com/post/Post.tsx
index 9b1bf7a496..f035c32ad6 100644
--- a/src/view/com/post/Post.tsx
+++ b/src/view/com/post/Post.tsx
@@ -4,10 +4,10 @@ import {
AppBskyFeedDefs,
AppBskyFeedPost,
AtUri,
- moderatePost,
PostModeration,
RichText as RichTextAPI,
} from '@atproto/api'
+import {moderatePost_wrapped as moderatePost} from '#/lib/moderatePost_wrapped'
import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
import {Link, TextLink} from '../util/Link'
import {UserInfoText} from '../util/UserInfoText'
@@ -27,6 +27,8 @@ import {countLines} from 'lib/strings/helpers'
import {useModerationOpts} from '#/state/queries/preferences'
import {useComposerControls} from '#/state/shell/composer'
import {Shadow, usePostShadow, POST_TOMBSTONE} from '#/state/cache/post-shadow'
+import {Trans, msg} from '@lingui/macro'
+import {useLingui} from '@lingui/react'
export function Post({
post,
@@ -95,6 +97,7 @@ function PostInner({
style?: StyleProp
}) {
const pal = usePalette('default')
+ const {_} = useLingui()
const {openComposer} = useComposerControls()
const [limitLines, setLimitLines] = useState(
() => countLines(richText?.text) >= MAX_POST_LINES,
@@ -118,6 +121,7 @@ function PostInner({
displayName: post.author.displayName,
avatar: post.author.avatar,
},
+ embed: post.embed,
},
})
}, [openComposer, post, record])
@@ -158,13 +162,15 @@ function PostInner({
style={[pal.textLight, s.mr2]}
lineHeight={1.2}
numberOfLines={1}>
- Reply to{' '}
-
+
+ Reply to{' '}
+
+
)}
@@ -187,7 +193,7 @@ function PostInner({
) : undefined}
{limitLines ? (
) : null}
-
+
@@ -221,6 +232,7 @@ const styles = StyleSheet.create({
paddingBottom: 5,
paddingLeft: 10,
borderTopWidth: 1,
+ // @ts-ignore web only -prf
cursor: 'pointer',
},
layout: {
diff --git a/src/view/com/posts/CustomFeedEmptyState.tsx b/src/view/com/posts/CustomFeedEmptyState.tsx
index e83a94f03c..62a10fd197 100644
--- a/src/view/com/posts/CustomFeedEmptyState.tsx
+++ b/src/view/com/posts/CustomFeedEmptyState.tsx
@@ -12,6 +12,7 @@ import {NavigationProp} from 'lib/routes/types'
import {usePalette} from 'lib/hooks/usePalette'
import {s} from 'lib/styles'
import {isWeb} from 'platform/detection'
+import {Trans} from '@lingui/macro'
export function CustomFeedEmptyState() {
const pal = usePalette('default')
@@ -33,15 +34,17 @@ export function CustomFeedEmptyState() {
- This feed is empty! You may need to follow more users or tune your
- language settings.
+
+ This feed is empty! You may need to follow more users or tune your
+ language settings.
+