diff --git a/.github/workflows/build-submit-android.yml b/.github/workflows/build-submit-android.yml
new file mode 100644
index 0000000000..8cbd90984c
--- /dev/null
+++ b/.github/workflows/build-submit-android.yml
@@ -0,0 +1,65 @@
+---
+name: Build and Submit Android
+
+on:
+ workflow_dispatch:
+ inputs:
+ profile:
+ type: choice
+ description: Build profile to use
+ options:
+ - production
+
+jobs:
+ build:
+ name: Build and Submit Android
+ runs-on: ubuntu-latest
+ steps:
+ - name: Check for EXPO_TOKEN
+ run: >
+ if [ -z "${{ secrets.EXPO_TOKEN }}" ]; then
+ echo "You must provide an EXPO_TOKEN secret linked to this project's Expo account in this repo's secrets. Learn more: https://docs.expo.dev/eas-update/github-actions"
+ exit 1
+ fi
+
+ - name: ā¬ļø Checkout
+ uses: actions/checkout@v4
+
+ - name: š§ Setup Node
+ uses: actions/setup-node@v4
+ with:
+ node-version-file: .nvmrc
+ cache: yarn
+
+ - name: šØ Setup EAS
+ uses: expo/expo-github-action@v8
+ with:
+ expo-version: latest
+ eas-version: latest
+ token: ${{ secrets.EXPO_TOKEN }}
+
+ - name: āļø Setup EAS local builds
+ run: yarn global add eas-cli-local-build-plugin
+
+ - uses: actions/setup-java@v4
+ with:
+ distribution: 'temurin'
+ java-version: '17'
+
+ - name: āļø Install dependencies
+ run: yarn install
+
+ - name: š¤ Compile translations
+ run: yarn intl:build
+
+ - name: āļø Write environment variables
+ run: |
+ export json='${{ secrets.GOOGLE_SERVICES_TOKEN }}'
+ echo "${{ secrets.ENV_TOKEN }}" > .env
+ echo "$json" > google-services.json
+
+ - name: šļø EAS Build
+ run: yarn use-build-number eas build -p android --profile production --local --output build.aab --non-interactive
+
+ - name: š Deploy
+ run: eas submit -p android --non-interactive --path build.aab
diff --git a/.github/workflows/build-submit-ios.yml b/.github/workflows/build-submit-ios.yml
new file mode 100644
index 0000000000..f5188b4b4b
--- /dev/null
+++ b/.github/workflows/build-submit-ios.yml
@@ -0,0 +1,75 @@
+---
+name: Build and Submit iOS
+
+on:
+ schedule:
+ - cron: '0 5 * * *'
+ workflow_dispatch:
+ inputs:
+ profile:
+ type: choice
+ description: Build profile to use
+ options:
+ - production
+
+jobs:
+ build:
+ name: Build and Submit iOS
+ runs-on: macos-14
+ steps:
+ - name: Check for EXPO_TOKEN
+ run: >
+ if [ -z "${{ secrets.EXPO_TOKEN }}" ]; then
+ echo "You must provide an EXPO_TOKEN secret linked to this project's Expo account in this repo's secrets. Learn more: https://docs.expo.dev/eas-update/github-actions"
+ exit 1
+ fi
+
+ - name: ā¬ļø Checkout
+ uses: actions/checkout@v4
+
+ - name: š§ Setup Node
+ uses: actions/setup-node@v4
+ with:
+ node-version-file: .nvmrc
+ cache: yarn
+
+ - name: šØ Setup EAS
+ uses: expo/expo-github-action@v8
+ with:
+ expo-version: latest
+ eas-version: latest
+ token: ${{ secrets.EXPO_TOKEN }}
+
+ - name: āļø Setup EAS local builds
+ run: yarn global add eas-cli-local-build-plugin
+
+ - name: āļø Install dependencies
+ run: yarn install
+
+ - name: āļø Setup Cocoapods
+ uses: maxim-lobanov/setup-cocoapods@v1
+ with:
+ version: 1.14.3
+
+ - name: š¾ Cache Pods
+ uses: actions/cache@v3
+ id: pods-cache
+ with:
+ path: ./ios/Pods
+ # We'll use the yarn.lock for our hash since we don't yet have a Podfile.lock. Pod versions will not
+ # change unless the yarn version changes as well.
+ key: ${{ runner.os }}-pods-${{ hashFiles('yarn.lock') }}
+
+ - name: š¤ Compile translations
+ run: yarn intl:build
+
+ - name: āļø Write environment variables
+ run: |
+ echo "${{ secrets.ENV_TOKEN }}" > .env
+ echo "${{ secrets.GOOGLE_SERVICES_TOKEN }}" > google-services.json
+
+ - name: šļø EAS Build
+ run: yarn use-build-number eas build -p ios --profile production --local --output build.ipa --non-interactive
+
+ - name: š Deploy
+ run: eas submit -p ios --non-interactive --path build.ipa
diff --git a/.github/workflows/deploy-nightly-testflight.yml b/.github/workflows/deploy-nightly-testflight.yml
deleted file mode 100644
index e3875899ee..0000000000
--- a/.github/workflows/deploy-nightly-testflight.yml
+++ /dev/null
@@ -1,52 +0,0 @@
-name: Deploy Nightly Testflight Release
-
-on:
- schedule:
- - cron: '0 5 * * *'
-
-jobs:
- build:
- name: Deploy Nightly Testflight Release
- runs-on: ubuntu-latest
- permissions:
- contents: write
-
- steps:
- - name: Check for EXPO_TOKEN
- run: |
- if [ -z "${{ secrets.EXPO_TOKEN }}" ]; then
- echo "You must provide an EXPO_TOKEN secret linked to this project's Expo account in this repo's secrets. Learn more: https://docs.expo.dev/eas-update/github-actions"
- exit 1
- fi
-
- - name: Checkout
- uses: actions/checkout@v4
-
- - name: Setup Node
- uses: actions/setup-node@v3
- with:
- node-version: 18.x
- cache: yarn
-
- - name: Setup EAS
- uses: expo/expo-github-action@v8
- with:
- eas-version: latest
- token: ${{ secrets.EXPO_TOKEN }}
-
- - name: Install dependencies
- run: yarn install
-
- - name: Bump build number
- run: yarn bump:ios
-
- - name: EAS build and submit
- run: eas build -p ios --profile production --auto-submit --non-interactive
-
- - name: Commit
- uses: stefanzweifel/git-auto-commit-action@v5
- with:
- commit_message: Nightly iOS Build Bump
- branch: main
- commit_user_name: github-actions[bot]
- commit_user_email: github-actions[bot]@users.noreply.github.com
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index 508da536b5..9aa55ca07a 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -32,12 +32,12 @@ jobs:
name: Run tests
runs-on: ubuntu-latest
steps:
- - name: Install node 18
- uses: actions/setup-node@v4
- with:
- node-version: 18
- name: Check out Git repository
uses: actions/checkout@v3
+ - name: Install node
+ uses: actions/setup-node@v4
+ with:
+ node-version-file: .nvmrc
- name: Yarn install
uses: Wandalen/wretry.action@master
with:
diff --git a/.nvmrc b/.nvmrc
new file mode 100644
index 0000000000..3c032078a4
--- /dev/null
+++ b/.nvmrc
@@ -0,0 +1 @@
+18
diff --git a/Dockerfile b/Dockerfile
index 47afa61a36..3ad05b6ec6 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -23,7 +23,7 @@ COPY . .
RUN mkdir --parents $NVM_DIR && \
wget \
--output-document=/tmp/nvm-install.sh \
- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh && \
+ https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh && \
bash /tmp/nvm-install.sh
RUN \. "$NVM_DIR/nvm.sh" && \
@@ -31,7 +31,7 @@ RUN \. "$NVM_DIR/nvm.sh" && \
nvm use $NODE_VERSION && \
npm install --global yarn && \
yarn && \
- yarn intl:compile && \
+ yarn intl:build && \
yarn build-web
# DEBUG
diff --git a/README.md b/README.md
index 0cbfe77377..49c4b016ff 100644
--- a/README.md
+++ b/README.md
@@ -65,8 +65,6 @@ If you discover any security issues, please send an email to security@bsky.app.
Bluesky is an open social network built on the AT Protocol, a flexible technology that will never lock developers out of the ecosystems that they help build. With atproto, third-party can be as seamless as first-party through custom feeds, federated services, clients, and more.
-If you're a developer interested in building on atproto, we'd love to email you a Bluesky invite code. Simply share your GitHub (or similar) profile with us via [this form](https://forms.gle/BF21oxVNZiDjDhXF9).
-
## License (MIT)
See [./LICENSE](./LICENSE) for the full license.
diff --git a/app.config.js b/app.config.js
index 9814065f4d..2552d34897 100644
--- a/app.config.js
+++ b/app.config.js
@@ -11,24 +11,23 @@ const DARK_SPLASH_CONFIG = {
resizeMode: 'cover',
}
-module.exports = function () {
+const SPLASH_CONFIG_ANDROID = {
+ backgroundColor: '#0c7cff',
+ image: './assets/splash.png',
+ resizeMode: 'cover',
+}
+const DARK_SPLASH_CONFIG_ANDROID = {
+ backgroundColor: '#0f141b',
+ image: './assets/splash-dark.png',
+ resizeMode: 'cover',
+}
+
+module.exports = function (config) {
/**
* App version number. Should be incremented as part of a release cycle.
*/
const VERSION = pkg.version
- /**
- * iOS build number. Must be incremented for each TestFlight version.
- * WARNING: Always leave this variable on line 24! If it is moved, you need to update ./scripts/bumpIosBuildNumber.sh
- */
- const IOS_BUILD_NUMBER = '7'
-
- /**
- * Android build number. Must be incremented for each release.
- * WARNING: Always leave this variable on line 30! If it is moved, you need to update ./scripts/bumpAndroidBuildNumber.sh
- */
- const ANDROID_VERSION_CODE = 62
-
/**
* Uses built-in Expo env vars
*
@@ -36,11 +35,10 @@ module.exports = function () {
*/
const PLATFORM = process.env.EAS_BUILD_PLATFORM
- /**
- * Additional granularity for the `dist` field
- */
const DIST_BUILD_NUMBER =
- PLATFORM === 'android' ? ANDROID_VERSION_CODE : IOS_BUILD_NUMBER
+ PLATFORM === 'android'
+ ? process.env.BSKY_ANDROID_VERSION_CODE
+ : process.env.BSKY_IOS_BUILD_NUMBER
return {
expo: {
@@ -57,7 +55,6 @@ module.exports = function () {
userInterfaceStyle: 'automatic',
splash: SPLASH_CONFIG,
ios: {
- buildNumber: IOS_BUILD_NUMBER,
supportsTablet: false,
bundleIdentifier: 'xyz.blueskyweb.app',
config: {
@@ -79,13 +76,15 @@ module.exports = function () {
...SPLASH_CONFIG,
dark: DARK_SPLASH_CONFIG,
},
+ entitlements: {
+ 'com.apple.security.application-groups': 'group.app.bsky',
+ },
},
androidStatusBar: {
- barStyle: 'dark-content',
- backgroundColor: '#ffffff',
+ barStyle: 'light-content',
+ backgroundColor: '#00000000',
},
android: {
- versionCode: ANDROID_VERSION_CODE,
icon: './assets/icon.png',
adaptiveIcon: {
foregroundImage: './assets/icon-android-foreground.png',
@@ -104,13 +103,17 @@ module.exports = function () {
scheme: 'https',
host: 'bsky.app',
},
+ {
+ scheme: 'http',
+ host: 'localhost:19006',
+ },
],
category: ['BROWSABLE', 'DEFAULT'],
},
],
splash: {
- ...SPLASH_CONFIG,
- dark: DARK_SPLASH_CONFIG,
+ ...SPLASH_CONFIG_ANDROID,
+ dark: DARK_SPLASH_CONFIG_ANDROID,
},
},
web: {
@@ -129,12 +132,14 @@ module.exports = function () {
{
ios: {
deploymentTarget: '13.4',
+ newArchEnabled: false,
},
android: {
compileSdkVersion: 34,
targetSdkVersion: 34,
buildToolsVersion: '34.0.0',
kotlinVersion: '1.8.0',
+ newArchEnabled: false,
},
},
],
@@ -148,13 +153,33 @@ module.exports = function () {
'expo-notifications',
{
icon: './assets/icon-android-notification.png',
- color: '#ffffff',
+ color: '#1185fe',
},
],
'./plugins/withAndroidManifestPlugin.js',
+ './plugins/withAndroidManifestFCMIconPlugin.js',
+ './plugins/withAndroidStylesWindowBackgroundPlugin.js',
+ './plugins/shareExtension/withShareExtensions.js',
].filter(Boolean),
extra: {
eas: {
+ build: {
+ experimental: {
+ ios: {
+ appExtensions: [
+ {
+ targetName: 'Share-with-Bluesky',
+ bundleIdentifier: 'xyz.blueskyweb.app.Share-with-Bluesky',
+ entitlements: {
+ 'com.apple.security.application-groups': [
+ 'group.app.bsky',
+ ],
+ },
+ },
+ ],
+ },
+ },
+ },
projectId: '55bd077a-d905-4184-9c7f-94789ba0f302',
},
},
diff --git a/assets/icons/checkThick_stroke2_corner0_rounded.svg b/assets/icons/checkThick_stroke2_corner0_rounded.svg
new file mode 100644
index 0000000000..54af3e8598
--- /dev/null
+++ b/assets/icons/checkThick_stroke2_corner0_rounded.svg
@@ -0,0 +1 @@
+
diff --git a/assets/icons/clipboard_stroke2_corner2_rounded.svg b/assets/icons/clipboard_stroke2_corner2_rounded.svg
new file mode 100644
index 0000000000..f403cfb929
--- /dev/null
+++ b/assets/icons/clipboard_stroke2_corner2_rounded.svg
@@ -0,0 +1 @@
+
diff --git a/assets/icons/magnifyingGlass2_stroke2_corner0_rounded.svg b/assets/icons/magnifyingGlass2_stroke2_corner0_rounded.svg
new file mode 100644
index 0000000000..2759aaf2cc
--- /dev/null
+++ b/assets/icons/magnifyingGlass2_stroke2_corner0_rounded.svg
@@ -0,0 +1 @@
+
diff --git a/assets/icons/mute_stroke2_corner0_rounded.svg b/assets/icons/mute_stroke2_corner0_rounded.svg
new file mode 100644
index 0000000000..8ebecb3920
--- /dev/null
+++ b/assets/icons/mute_stroke2_corner0_rounded.svg
@@ -0,0 +1 @@
+
diff --git a/assets/icons/pageText_stroke2_corner0_rounded.svg b/assets/icons/pageText_stroke2_corner0_rounded.svg
new file mode 100644
index 0000000000..826a36cd7e
--- /dev/null
+++ b/assets/icons/pageText_stroke2_corner0_rounded.svg
@@ -0,0 +1 @@
+
diff --git a/bskyweb/README.md b/bskyweb/README.md
index c8efe04482..640c30f4ad 100644
--- a/bskyweb/README.md
+++ b/bskyweb/README.md
@@ -6,9 +6,9 @@ To build the SPA bundle (`bundle.web.js`), first get a JavaScript development
environment set up. Either follow the top-level README, or something quick
like:
- # install nodejs 18 (specifically)
- nvm install 18
- nvm use 18
+ # install nodejs
+ nvm install
+ nvm use
npm install --global yarn
# setup tools and deps (in top level of this repo)
diff --git a/bskyweb/cmd/bskyweb/mailmodo.go b/bskyweb/cmd/bskyweb/mailmodo.go
deleted file mode 100644
index e892971f9c..0000000000
--- a/bskyweb/cmd/bskyweb/mailmodo.go
+++ /dev/null
@@ -1,70 +0,0 @@
-package main
-
-import (
- "bytes"
- "context"
- "crypto/sha256"
- "encoding/json"
- "fmt"
- "net/http"
- "time"
-)
-
-type Mailmodo struct {
- httpClient *http.Client
- APIKey string
- BaseURL string
- ListName string
-}
-
-func NewMailmodo(apiKey, listName string) *Mailmodo {
- return &Mailmodo{
- APIKey: apiKey,
- BaseURL: "https://api.mailmodo.com/api/v1",
- httpClient: &http.Client{},
- ListName: listName,
- }
-}
-
-func (m *Mailmodo) request(ctx context.Context, httpMethod string, apiMethod string, data any) error {
- endpoint := fmt.Sprintf("%s/%s", m.BaseURL, apiMethod)
- js, err := json.Marshal(data)
- if err != nil {
- return fmt.Errorf("Mailmodo JSON encoding failed: %w", err)
- }
- req, err := http.NewRequestWithContext(ctx, httpMethod, endpoint, bytes.NewBuffer(js))
- if err != nil {
- return fmt.Errorf("Mailmodo HTTP creating request %s %s failed: %w", httpMethod, apiMethod, err)
- }
- req.Header.Set("mmApiKey", m.APIKey)
- req.Header.Set("Content-Type", "application/json")
-
- res, err := m.httpClient.Do(req)
- if err != nil {
- return fmt.Errorf("Mailmodo HTTP making request %s %s failed: %w", httpMethod, apiMethod, err)
- }
- defer res.Body.Close()
-
- status := struct {
- Success bool `json:"success"`
- Message string `json:"message"`
- }{}
- if err := json.NewDecoder(res.Body).Decode(&status); err != nil {
- return fmt.Errorf("Mailmodo HTTP parsing response %s %s failed: %w", httpMethod, apiMethod, err)
- }
- if !status.Success {
- return fmt.Errorf("Mailmodo API response %s %s failed: %s", httpMethod, apiMethod, status.Message)
- }
- return nil
-}
-
-func (m *Mailmodo) AddToList(ctx context.Context, email string) error {
- return m.request(ctx, "POST", "addToList", map[string]any{
- "listName": m.ListName,
- "email": email,
- "data": map[string]any{
- "email_hashed": fmt.Sprintf("%x", sha256.Sum256([]byte(email))),
- },
- "created_at": time.Now().UTC().Format(time.RFC3339),
- })
-}
diff --git a/bskyweb/cmd/bskyweb/main.go b/bskyweb/cmd/bskyweb/main.go
index a2952cae2b..5185ff573a 100644
--- a/bskyweb/cmd/bskyweb/main.go
+++ b/bskyweb/cmd/bskyweb/main.go
@@ -40,18 +40,6 @@ func run(args []string) {
// retain old PDS env var for easy transition
EnvVars: []string{"ATP_APPVIEW_HOST", "ATP_PDS_HOST"},
},
- &cli.StringFlag{
- Name: "mailmodo-api-key",
- Usage: "Mailmodo API key",
- Required: false,
- EnvVars: []string{"MAILMODO_API_KEY"},
- },
- &cli.StringFlag{
- Name: "mailmodo-list-name",
- Usage: "Mailmodo contact list to add email addresses to",
- Required: false,
- EnvVars: []string{"MAILMODO_LIST_NAME"},
- },
&cli.StringFlag{
Name: "http-address",
Usage: "Specify the local IP/port to bind to",
diff --git a/bskyweb/cmd/bskyweb/server.go b/bskyweb/cmd/bskyweb/server.go
index 76b7bcc06b..e159d780a2 100644
--- a/bskyweb/cmd/bskyweb/server.go
+++ b/bskyweb/cmd/bskyweb/server.go
@@ -2,11 +2,9 @@ package main
import (
"context"
- "encoding/json"
"errors"
"fmt"
"io/fs"
- "io/ioutil"
"net/http"
"os"
"os/signal"
@@ -29,25 +27,19 @@ import (
)
type Server struct {
- echo *echo.Echo
- httpd *http.Server
- mailmodo *Mailmodo
- xrpcc *xrpc.Client
+ echo *echo.Echo
+ httpd *http.Server
+ xrpcc *xrpc.Client
}
func serve(cctx *cli.Context) error {
debug := cctx.Bool("debug")
httpAddress := cctx.String("http-address")
appviewHost := cctx.String("appview-host")
- mailmodoAPIKey := cctx.String("mailmodo-api-key")
- mailmodoListName := cctx.String("mailmodo-list-name")
// Echo
e := echo.New()
- // Mailmodo client.
- mailmodo := NewMailmodo(mailmodoAPIKey, mailmodoListName)
-
// create a new session (no auth)
xrpcc := &xrpc.Client{
Client: cliutil.NewHttpClient(),
@@ -77,9 +69,8 @@ func serve(cctx *cli.Context) error {
// server
//
server := &Server{
- echo: e,
- mailmodo: mailmodo,
- xrpcc: xrpcc,
+ echo: e,
+ xrpcc: xrpcc,
}
// Create the HTTP server.
@@ -180,6 +171,7 @@ func serve(cctx *cli.Context) error {
e.GET("/", server.WebHome)
// generic routes
+ e.GET("/hashtag/:tag", server.WebGeneric)
e.GET("/search", server.WebGeneric)
e.GET("/feeds", server.WebGeneric)
e.GET("/notifications", server.WebGeneric)
@@ -191,7 +183,7 @@ func serve(cctx *cli.Context) error {
e.GET("/settings", server.WebGeneric)
e.GET("/settings/language", server.WebGeneric)
e.GET("/settings/app-passwords", server.WebGeneric)
- e.GET("/settings/home-feed", server.WebGeneric)
+ e.GET("/settings/following-feed", server.WebGeneric)
e.GET("/settings/saved-feeds", server.WebGeneric)
e.GET("/settings/threads", server.WebGeneric)
e.GET("/settings/external-embeds", server.WebGeneric)
@@ -202,6 +194,7 @@ func serve(cctx *cli.Context) error {
e.GET("/support/tos", server.WebGeneric)
e.GET("/support/community-guidelines", server.WebGeneric)
e.GET("/support/copyright", server.WebGeneric)
+ e.GET("/intent/compose", server.WebGeneric)
// profile endpoints; only first populates info
e.GET("/profile/:handleOrDID", server.WebProfile)
@@ -219,9 +212,6 @@ func serve(cctx *cli.Context) error {
e.GET("/profile/:handleOrDID/post/:rkey/liked-by", server.WebGeneric)
e.GET("/profile/:handleOrDID/post/:rkey/reposted-by", server.WebGeneric)
- // Mailmodo
- e.POST("/api/waitlist", server.apiWaitlist)
-
// Start the server.
log.Infof("starting server address=%s", httpAddress)
go func() {
@@ -396,36 +386,3 @@ func (srv *Server) WebProfile(c echo.Context) error {
data["requestHost"] = req.Host
return c.Render(http.StatusOK, "profile.html", data)
}
-
-func (srv *Server) apiWaitlist(c echo.Context) error {
- type jsonError struct {
- Error string `json:"error"`
- }
-
- // Read the API request.
- type apiRequest struct {
- Email string `json:"email"`
- }
-
- bodyReader := http.MaxBytesReader(c.Response(), c.Request().Body, 16*1024)
- payload, err := ioutil.ReadAll(bodyReader)
- if err != nil {
- return err
- }
- var req apiRequest
- if err := json.Unmarshal(payload, &req); err != nil {
- return c.JSON(http.StatusBadRequest, jsonError{Error: "Invalid API request"})
- }
-
- if req.Email == "" {
- return c.JSON(http.StatusBadRequest, jsonError{Error: "Please enter a valid email address."})
- }
-
- if err := srv.mailmodo.AddToList(c.Request().Context(), req.Email); err != nil {
- log.Errorf("adding email to waitlist failed: %s", err)
- return c.JSON(http.StatusBadRequest, jsonError{
- Error: "Storing email in waitlist failed. Please enter a valid email address.",
- })
- }
- return c.JSON(http.StatusOK, map[string]bool{"success": true})
-}
diff --git a/bskyweb/templates/base.html b/bskyweb/templates/base.html
index 7513d6fd27..55447552ea 100644
--- a/bskyweb/templates/base.html
+++ b/bskyweb/templates/base.html
@@ -4,6 +4,11 @@
+
+
+
{%- block head_title -%}Bluesky{%- endblock -%}
@@ -39,6 +44,12 @@
scrollbar-gutter: stable both-edges;
}
+ /* Buttons and inputs have a font set by UA, so we'll have to reset that */
+ button, input, textarea {
+ font: inherit;
+ line-height: inherit;
+ }
+
/* Color theming */
/* Default will always be white */
:root {
@@ -200,16 +211,23 @@
[data-tooltip]:hover::before {
display:block;
}
+
+ /* NativeDropdown component */
+ .radix-dropdown-item:focus,
+ .nativeDropdown-item:focus {
+ outline: none;
+ }
{% include "scripts.html" %}
-
+
+
{% block html_head_extra -%}{%- endblock %}
diff --git a/eas.json b/eas.json
index 75254d293e..2b4c7cb612 100644
--- a/eas.json
+++ b/eas.json
@@ -1,7 +1,8 @@
{
"cli": {
"version": ">= 3.8.1",
- "promptToConfigurePushNotifications": false
+ "promptToConfigurePushNotifications": false,
+ "appVersionSource": "remote"
},
"build": {
"base": {
@@ -28,7 +29,21 @@
"production": {
"extends": "base",
"ios": {
- "resourceClass": "large"
+ "resourceClass": "large",
+ "autoIncrement": true
+ },
+ "android": {
+ "autoIncrement": true
+ },
+ "channel": "production"
+ },
+ "github": {
+ "extends": "base",
+ "ios": {
+ "autoIncrement": true
+ },
+ "android": {
+ "autoIncrement": true
},
"channel": "production"
}
diff --git a/index.web.js b/index.web.js
index 4dee831cda..9623734512 100644
--- a/index.web.js
+++ b/index.web.js
@@ -1,3 +1,5 @@
+import '#/platform/markBundleStartTime'
+
import '#/platform/polyfills'
import {registerRootComponent} from 'expo'
import {doPolyfill} from '#/lib/api/api-polyfill'
diff --git a/modules/Share-with-Bluesky/Info.plist b/modules/Share-with-Bluesky/Info.plist
new file mode 100644
index 0000000000..90fe923455
--- /dev/null
+++ b/modules/Share-with-Bluesky/Info.plist
@@ -0,0 +1,41 @@
+
+
+
+
+ NSExtension
+
+ NSExtensionPrincipalClass
+ $(PRODUCT_MODULE_NAME).ShareViewController
+ NSExtensionAttributes
+
+ NSExtensionActivationRule
+
+ NSExtensionActivationSupportsText
+
+ NSExtensionActivationSupportsWebURLWithMaxCount
+ 1
+ NSExtensionActivationSupportsImageWithMaxCount
+ 10
+
+
+ NSExtensionPointIdentifier
+ com.apple.share-services
+
+ MainAppScheme
+ bluesky
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundleDisplayName
+ Extension
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleVersion
+ $(CURRENT_PROJECT_VERSION)
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundlePackageType
+ $(PRODUCT_BUNDLE_PACKAGE_TYPE)
+ CFBundleShortVersionString
+ $(MARKETING_VERSION)
+
+
diff --git a/modules/Share-with-Bluesky/Share-with-Bluesky.entitlements b/modules/Share-with-Bluesky/Share-with-Bluesky.entitlements
new file mode 100644
index 0000000000..d2253d31f8
--- /dev/null
+++ b/modules/Share-with-Bluesky/Share-with-Bluesky.entitlements
@@ -0,0 +1,10 @@
+
+
+
+
+ com.apple.security.application-groups
+
+ group.app.bsky
+
+
+
diff --git a/modules/Share-with-Bluesky/ShareViewController.swift b/modules/Share-with-Bluesky/ShareViewController.swift
new file mode 100644
index 0000000000..4c1d635ce3
--- /dev/null
+++ b/modules/Share-with-Bluesky/ShareViewController.swift
@@ -0,0 +1,153 @@
+import UIKit
+
+class ShareViewController: UIViewController {
+ // This allows other forks to use this extension while also changing their
+ // scheme.
+ let appScheme = Bundle.main.object(forInfoDictionaryKey: "MainAppScheme") as? String ?? "bluesky"
+
+ //
+ override func viewDidAppear(_ animated: Bool) {
+ super.viewDidAppear(animated)
+
+ guard let extensionItem = extensionContext?.inputItems.first as? NSExtensionItem,
+ let attachments = extensionItem.attachments,
+ let firstAttachment = extensionItem.attachments?.first
+ else {
+ self.completeRequest()
+ return
+ }
+
+ Task {
+ if firstAttachment.hasItemConformingToTypeIdentifier("public.text") {
+ await self.handleText(item: firstAttachment)
+ } else if firstAttachment.hasItemConformingToTypeIdentifier("public.url") {
+ await self.handleUrl(item: firstAttachment)
+ } else if firstAttachment.hasItemConformingToTypeIdentifier("public.image") {
+ await self.handleImages(items: attachments)
+ } else {
+ self.completeRequest()
+ }
+ }
+ }
+
+ private func handleText(item: NSItemProvider) async -> Void {
+ do {
+ if let data = try await item.loadItem(forTypeIdentifier: "public.text") as? String {
+ if let encoded = data.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed),
+ let url = URL(string: "\(self.appScheme)://intent/compose?text=\(encoded)")
+ {
+ _ = self.openURL(url)
+ }
+ }
+ self.completeRequest()
+ } catch {
+ self.completeRequest()
+ }
+ }
+
+ private func handleUrl(item: NSItemProvider) async -> Void {
+ do {
+ if let data = try await item.loadItem(forTypeIdentifier: "public.url") as? URL {
+ if let encoded = data.absoluteString.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed),
+ let url = URL(string: "\(self.appScheme)://intent/compose?text=\(encoded)")
+ {
+ _ = self.openURL(url)
+ }
+ }
+ self.completeRequest()
+ } catch {
+ self.completeRequest()
+ }
+ }
+
+ private func handleImages(items: [NSItemProvider]) async -> Void {
+ let firstFourItems: [NSItemProvider]
+ if items.count < 4 {
+ firstFourItems = items
+ } else {
+ firstFourItems = Array(items[0...3])
+ }
+
+ var valid = true
+ var imageUris = ""
+
+ for (index, item) in firstFourItems.enumerated() {
+ var imageUriInfo: String? = nil
+
+ do {
+ if let dataUri = try await item.loadItem(forTypeIdentifier: "public.image") as? URL {
+ // We need to duplicate this image, since we don't have access to the outgoing temp directory
+ // We also will get the image dimensions here, sinze RN makes it difficult to get those dimensions for local files
+ let data = try Data(contentsOf: dataUri)
+ let image = UIImage(data: data)
+ imageUriInfo = self.saveImageWithInfo(image)
+ } else if let image = try await item.loadItem(forTypeIdentifier: "public.image") as? UIImage {
+ imageUriInfo = self.saveImageWithInfo(image)
+ }
+ } catch {
+ valid = false
+ }
+
+ if let imageUriInfo = imageUriInfo {
+ imageUris.append(imageUriInfo)
+ if index < items.count - 1 {
+ imageUris.append(",")
+ }
+ } else {
+ valid = false
+ }
+ }
+
+ if valid,
+ let encoded = imageUris.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed),
+ let url = URL(string: "\(self.appScheme)://intent/compose?imageUris=\(encoded)")
+ {
+ _ = self.openURL(url)
+ }
+
+ self.completeRequest()
+ }
+
+ private func saveImageWithInfo(_ image: UIImage?) -> String? {
+ guard let image = image else {
+ return nil
+ }
+
+ do {
+ // Saving this file to the bundle group's directory lets us access it from
+ // inside of the app. Otherwise, we wouldn't have access even though the
+ // extension does.
+ if let dir = FileManager()
+ .containerURL(
+ forSecurityApplicationGroupIdentifier: "group.app.bsky")
+ {
+ let filePath = "\(dir.absoluteString)\(ProcessInfo.processInfo.globallyUniqueString).jpeg"
+
+ if let newUri = URL(string: filePath),
+ let jpegData = image.jpegData(compressionQuality: 1)
+ {
+ try jpegData.write(to: newUri)
+ return "\(newUri.absoluteString)|\(image.size.width)|\(image.size.height)"
+ }
+ }
+ return nil
+ } catch {
+ return nil
+ }
+ }
+
+ private func completeRequest() -> Void {
+ self.extensionContext?.completeRequest(returningItems: nil)
+ }
+
+ @objc func openURL(_ url: URL) -> Bool {
+ var responder: UIResponder? = self
+ while responder != nil {
+ if let application = responder as? UIApplication {
+ return application.perform(#selector(openURL(_:)), with: url) != nil
+ }
+ responder = responder?.next
+ }
+ return false
+ }
+}
diff --git a/modules/expo-receive-android-intents/README.md b/modules/expo-receive-android-intents/README.md
new file mode 100644
index 0000000000..7e8506860c
--- /dev/null
+++ b/modules/expo-receive-android-intents/README.md
@@ -0,0 +1,8 @@
+# Expo Receive Android Intents
+
+This module handles incoming intents on Android. Handled intents are `text/plain` and `image/*` (single or multiple).
+The module handles saving images to the app's filesystem for access within the app, limiting the selection of images
+to a max of four, and handling intent types. No JS code is required for this module, and it is no-op on non-android
+platforms.
+
+No installation is required. Gradle will automatically add this module on build.
diff --git a/modules/expo-receive-android-intents/android/.gitignore b/modules/expo-receive-android-intents/android/.gitignore
new file mode 100644
index 0000000000..877b87e9a5
--- /dev/null
+++ b/modules/expo-receive-android-intents/android/.gitignore
@@ -0,0 +1,15 @@
+# OSX
+#
+.DS_Store
+
+# Android/IntelliJ
+#
+build/
+.idea
+.gradle
+local.properties
+*.iml
+*.hprof
+
+# Bundle artifacts
+*.jsbundle
diff --git a/modules/expo-receive-android-intents/android/build.gradle b/modules/expo-receive-android-intents/android/build.gradle
new file mode 100644
index 0000000000..3712dda40f
--- /dev/null
+++ b/modules/expo-receive-android-intents/android/build.gradle
@@ -0,0 +1,92 @@
+apply plugin: 'com.android.library'
+apply plugin: 'kotlin-android'
+apply plugin: 'maven-publish'
+
+group = 'xyz.blueskyweb.app.exporeceiveandroidintents'
+version = '0.4.1'
+
+buildscript {
+ def expoModulesCorePlugin = new File(project(":expo-modules-core").projectDir.absolutePath, "ExpoModulesCorePlugin.gradle")
+ if (expoModulesCorePlugin.exists()) {
+ apply from: expoModulesCorePlugin
+ applyKotlinExpoModulesCorePlugin()
+ }
+
+ // Simple helper that allows the root project to override versions declared by this library.
+ ext.safeExtGet = { prop, fallback ->
+ rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
+ }
+
+ // Ensures backward compatibility
+ ext.getKotlinVersion = {
+ if (ext.has("kotlinVersion")) {
+ ext.kotlinVersion()
+ } else {
+ ext.safeExtGet("kotlinVersion", "1.8.10")
+ }
+ }
+
+ repositories {
+ mavenCentral()
+ }
+
+ dependencies {
+ classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${getKotlinVersion()}")
+ }
+}
+
+afterEvaluate {
+ publishing {
+ publications {
+ release(MavenPublication) {
+ from components.release
+ }
+ }
+ repositories {
+ maven {
+ url = mavenLocal().url
+ }
+ }
+ }
+}
+
+android {
+ compileSdkVersion safeExtGet("compileSdkVersion", 33)
+
+ def agpVersion = com.android.Version.ANDROID_GRADLE_PLUGIN_VERSION
+ if (agpVersion.tokenize('.')[0].toInteger() < 8) {
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_11
+ targetCompatibility JavaVersion.VERSION_11
+ }
+
+ kotlinOptions {
+ jvmTarget = JavaVersion.VERSION_11.majorVersion
+ }
+ }
+
+ namespace "xyz.blueskyweb.app.exporeceiveandroidintents"
+ defaultConfig {
+ minSdkVersion safeExtGet("minSdkVersion", 21)
+ targetSdkVersion safeExtGet("targetSdkVersion", 34)
+ versionCode 1
+ versionName "0.4.1"
+ }
+ lintOptions {
+ abortOnError false
+ }
+ publishing {
+ singleVariant("release") {
+ withSourcesJar()
+ }
+ }
+}
+
+repositories {
+ mavenCentral()
+}
+
+dependencies {
+ implementation project(':expo-modules-core')
+ implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:${getKotlinVersion()}"
+}
diff --git a/modules/expo-receive-android-intents/android/src/main/AndroidManifest.xml b/modules/expo-receive-android-intents/android/src/main/AndroidManifest.xml
new file mode 100644
index 0000000000..bdae66c8f5
--- /dev/null
+++ b/modules/expo-receive-android-intents/android/src/main/AndroidManifest.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/modules/expo-receive-android-intents/android/src/main/java/xyz/blueskyweb/app/exporeceiveandroidintents/ExpoReceiveAndroidIntentsModule.kt b/modules/expo-receive-android-intents/android/src/main/java/xyz/blueskyweb/app/exporeceiveandroidintents/ExpoReceiveAndroidIntentsModule.kt
new file mode 100644
index 0000000000..c2e17fb80a
--- /dev/null
+++ b/modules/expo-receive-android-intents/android/src/main/java/xyz/blueskyweb/app/exporeceiveandroidintents/ExpoReceiveAndroidIntentsModule.kt
@@ -0,0 +1,119 @@
+package xyz.blueskyweb.app.exporeceiveandroidintents
+
+import android.content.Intent
+import android.graphics.Bitmap
+import android.net.Uri
+import android.os.Build
+import android.provider.MediaStore
+import androidx.core.net.toUri
+import expo.modules.kotlin.modules.Module
+import expo.modules.kotlin.modules.ModuleDefinition
+import java.io.File
+import java.io.FileOutputStream
+import java.net.URLEncoder
+
+class ExpoReceiveAndroidIntentsModule : Module() {
+ override fun definition() = ModuleDefinition {
+ Name("ExpoReceiveAndroidIntents")
+
+ OnNewIntent {
+ handleIntent(it)
+ }
+ }
+
+ private fun handleIntent(intent: Intent?) {
+ if(appContext.currentActivity == null || intent == null) return
+
+ if (intent.action == Intent.ACTION_SEND) {
+ if (intent.type == "text/plain") {
+ handleTextIntent(intent)
+ } else if (intent.type.toString().startsWith("image/")) {
+ handleImageIntent(intent)
+ }
+ } else if (intent.action == Intent.ACTION_SEND_MULTIPLE) {
+ if (intent.type.toString().startsWith("image/")) {
+ handleImagesIntent(intent)
+ }
+ }
+ }
+
+ private fun handleTextIntent(intent: Intent) {
+ intent.getStringExtra(Intent.EXTRA_TEXT)?.let {
+ val encoded = URLEncoder.encode(it, "UTF-8")
+ "bluesky://intent/compose?text=${encoded}".toUri().let { uri ->
+ val newIntent = Intent(Intent.ACTION_VIEW, uri)
+ appContext.currentActivity?.startActivity(newIntent)
+ }
+ }
+ }
+
+ private fun handleImageIntent(intent: Intent) {
+ val uri = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
+ intent.getParcelableExtra(Intent.EXTRA_STREAM, Uri::class.java)
+ } else {
+ intent.getParcelableExtra(Intent.EXTRA_STREAM)
+ }
+ if (uri == null) return
+
+ handleImageIntents(listOf(uri))
+ }
+
+ private fun handleImagesIntent(intent: Intent) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
+ intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM, Uri::class.java)?.let {
+ handleImageIntents(it.filterIsInstance().take(4))
+ }
+ } else {
+ intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM)?.let {
+ handleImageIntents(it.filterIsInstance().take(4))
+ }
+ }
+ }
+
+ private fun handleImageIntents(uris: List) {
+ var allParams = ""
+
+ uris.forEachIndexed { index, uri ->
+ val info = getImageInfo(uri)
+ val params = buildUriData(info)
+ allParams = "${allParams}${params}"
+
+ if (index < uris.count() - 1) {
+ allParams = "${allParams},"
+ }
+ }
+
+ val encoded = URLEncoder.encode(allParams, "UTF-8")
+
+ "bluesky://intent/compose?imageUris=${encoded}".toUri().let {
+ val newIntent = Intent(Intent.ACTION_VIEW, it)
+ appContext.currentActivity?.startActivity(newIntent)
+ }
+ }
+
+ private fun getImageInfo(uri: Uri): Map {
+ val bitmap = MediaStore.Images.Media.getBitmap(appContext.currentActivity?.contentResolver, uri)
+ // We have to save this so that we can access it later when uploading the image.
+ // createTempFile will automatically place a unique string between "img" and "temp.jpeg"
+ val file = File.createTempFile("img", "temp.jpeg", appContext.currentActivity?.cacheDir)
+ val out = FileOutputStream(file)
+ bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out)
+ out.flush()
+ out.close()
+
+ return mapOf(
+ "width" to bitmap.width,
+ "height" to bitmap.height,
+ "path" to file.path.toString()
+ )
+ }
+
+ // We will pas the width and height to the app here, since getting measurements
+ // on the RN side is a bit more involved, and we already have them here anyway.
+ private fun buildUriData(info: Map): String {
+ val path = info.getValue("path")
+ val width = info.getValue("width")
+ val height = info.getValue("height")
+ return "file://${path}|${width}|${height}"
+ }
+}
diff --git a/modules/expo-receive-android-intents/expo-module.config.json b/modules/expo-receive-android-intents/expo-module.config.json
new file mode 100644
index 0000000000..8f01fb6c9f
--- /dev/null
+++ b/modules/expo-receive-android-intents/expo-module.config.json
@@ -0,0 +1,6 @@
+{
+ "platforms": ["android"],
+ "android": {
+ "modules": ["xyz.blueskyweb.app.exporeceiveandroidintents.ExpoReceiveAndroidIntentsModule"]
+ }
+}
diff --git a/modules/react-native-ui-text-view/ios/RNUITextView.swift b/modules/react-native-ui-text-view/ios/RNUITextView.swift
index 9c21d45b5e..3fb55873dc 100644
--- a/modules/react-native-ui-text-view/ios/RNUITextView.swift
+++ b/modules/react-native-ui-text-view/ios/RNUITextView.swift
@@ -108,14 +108,26 @@ class RNUITextView: UIView {
fractionOfDistanceBetweenInsertionPoints: nil
)
+ var lastUpperBound: String.Index? = nil
for child in self.reactSubviews() {
if let child = child as? RNUITextViewChild, let childText = child.text {
let fullText = self.textView.attributedText.string
- let range = fullText.range(of: childText)
-
+
+ // We want to skip over the children we have already checked, otherwise we could run into
+ // collisions of similar strings (i.e. links that get shortened to the same hostname but
+ // different paths)
+ let range = fullText.range(of: childText, options: [], range: (lastUpperBound ?? String.Index(utf16Offset: 0, in: fullText) )..= lowerBound.utf16Offset(in: fullText) && charIndex <= upperBound.utf16Offset(in: fullText) {
+ let lowerOffset = lowerBound.utf16Offset(in: fullText)
+ let upperOffset = upperBound.utf16Offset(in: fullText)
+
+ if charIndex >= lowerOffset,
+ charIndex <= upperOffset
+ {
return child
+ } else {
+ lastUpperBound = upperBound
}
}
}
diff --git a/modules/react-native-ui-text-view/ios/RNUITextViewManager.m b/modules/react-native-ui-text-view/ios/RNUITextViewManager.m
index 9a6f0285cb..32dfb3b285 100644
--- a/modules/react-native-ui-text-view/ios/RNUITextViewManager.m
+++ b/modules/react-native-ui-text-view/ios/RNUITextViewManager.m
@@ -4,6 +4,7 @@
RCT_REMAP_SHADOW_PROPERTY(numberOfLines, numberOfLines, NSInteger)
RCT_REMAP_SHADOW_PROPERTY(allowsFontScaling, allowsFontScaling, BOOL)
+RCT_EXPORT_VIEW_PROPERTY(numberOfLines, NSInteger)
RCT_EXPORT_VIEW_PROPERTY(onTextLayout, RCTDirectEventBlock)
RCT_EXPORT_VIEW_PROPERTY(ellipsizeMode, NSString)
RCT_EXPORT_VIEW_PROPERTY(selectable, BOOL)
diff --git a/modules/react-native-ui-text-view/ios/RNUITextViewShadow.swift b/modules/react-native-ui-text-view/ios/RNUITextViewShadow.swift
index 4f3eda43c9..5a462f6b62 100644
--- a/modules/react-native-ui-text-view/ios/RNUITextViewShadow.swift
+++ b/modules/react-native-ui-text-view/ios/RNUITextViewShadow.swift
@@ -40,19 +40,19 @@ class RNUITextViewShadow: RCTShadowView {
self.setAttributedText()
}
- // Tell yoga not to use flexbox
+ // Returning true here will tell Yoga to not use flexbox and instead use our custom measure func.
override func isYogaLeafNode() -> Bool {
return true
}
- // We only need to insert text children
+ // We should only insert children that are UITextView shadows
override func insertReactSubview(_ subview: RCTShadowView!, at atIndex: Int) {
if subview.isKind(of: RNUITextViewChildShadow.self) {
super.insertReactSubview(subview, at: atIndex)
}
}
- // Whenever the subvies update, set the text
+ // Every time the subviews change, we need to reformat and render the text.
override func didUpdateReactSubviews() {
self.setAttributedText()
}
@@ -64,7 +64,7 @@ class RNUITextViewShadow: RCTShadowView {
return
}
- // Update the text
+ // Since we are inside the shadow view here, we have to find the real view and update the text.
self.bridge.uiManager.addUIBlock { uiManager, viewRegistry in
guard let textView = viewRegistry?[self.reactTag] as? RNUITextView else {
return
@@ -100,18 +100,25 @@ class RNUITextViewShadow: RCTShadowView {
// Create the attributed string with the generic attributes
let string = NSMutableAttributedString(string: child.text, attributes: attributes)
- // Set the paragraph style attributes if necessary
+ // Set the paragraph style attributes if necessary. We can check this by seeing if the provided
+ // line height is not 0.0.
let paragraphStyle = NSMutableParagraphStyle()
if child.lineHeight != 0.0 {
- paragraphStyle.minimumLineHeight = child.lineHeight
- paragraphStyle.maximumLineHeight = child.lineHeight
+ // Whenever we change the line height for the text, we are also removing the DynamicType
+ // adjustment for line height. We need to get the multiplier and apply that to the
+ // line height.
+ let scaleMultiplier = scaledFontSize / child.fontSize
+ paragraphStyle.minimumLineHeight = child.lineHeight * scaleMultiplier
+ paragraphStyle.maximumLineHeight = child.lineHeight * scaleMultiplier
+
string.addAttribute(
NSAttributedString.Key.paragraphStyle,
value: paragraphStyle,
range: NSMakeRange(0, string.length)
)
- // Store that height
+ // To calcualte the size of the text without creating a new UILabel or UITextView, we have
+ // to store this line height for later.
self.lineHeight = child.lineHeight
} else {
self.lineHeight = font.lineHeight
@@ -124,24 +131,22 @@ class RNUITextViewShadow: RCTShadowView {
self.dirtyLayout()
}
- // Create a YGSize based on the max width
+ // To create the needed size we need to:
+ // 1. Get the max size that we can use for the view
+ // 2. Calculate the height of the text based on that max size
+ // 3. Determine how many lines the text is, and limit that number if it exceeds the max
+ // 4. Set the frame size and return the YGSize. YGSize requires Float values while CGSize needs CGFloat
func getNeededSize(maxWidth: Float) -> YGSize {
- // Create the max size and figure out the size of the entire text
let maxSize = CGSize(width: CGFloat(maxWidth), height: CGFloat(MAXFLOAT))
let textSize = self.attributedText.boundingRect(with: maxSize, options: .usesLineFragmentOrigin, context: nil)
- // Figure out how many total lines there are
- let totalLines = Int(ceil(textSize.height / self.lineHeight))
+ var totalLines = Int(ceil(textSize.height / self.lineHeight))
- // Default to the text size
- var neededSize: CGSize = textSize.size
-
- // If the total lines > max number, return size with the max
if self.numberOfLines != 0, totalLines > self.numberOfLines {
- neededSize = CGSize(width: CGFloat(maxWidth), height: CGFloat(CGFloat(self.numberOfLines) * self.lineHeight))
+ totalLines = self.numberOfLines
}
- self.frameSize = neededSize
- return YGSize(width: Float(neededSize.width), height: Float(neededSize.height))
+ self.frameSize = CGSize(width: CGFloat(maxWidth), height: CGFloat(CGFloat(totalLines) * self.lineHeight))
+ return YGSize(width: Float(self.frameSize.width), height: Float(self.frameSize.height))
}
}
diff --git a/package.json b/package.json
index d5b68abea2..2d7415c7a1 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "bsky.app",
- "version": "1.68.0",
+ "version": "1.72.0",
"private": true,
"engines": {
"node": ">=18"
@@ -12,8 +12,12 @@
"android": "npx expo run:android",
"ios": "npx expo run:ios",
"web": "npx expo start --web",
+ "use-build-number": "./scripts/useBuildNumberEnv.sh",
"build-web": "npx expo export:web && node ./scripts/post-web-build.js && cp -v ./web-build/static/js/*.* ./bskyweb/static/js/",
- "build-all": "yarn intl:build && eas build --platform all",
+ "build-all": "yarn intl:build && yarn use-build-number eas build --platform all",
+ "build-ios": "yarn use-build-number eas build -p ios",
+ "build-android": "yarn use-build-number eas build -p android",
+ "build": "yarn use-build-number eas build",
"start": "npx expo start --dev-client",
"start:prod": "npx expo start --dev-client --no-dev --minify",
"clean-cache": "rm -rf node_modules/.cache/babel-loader/*",
@@ -32,17 +36,15 @@
"perf:test:measure": "NODE_ENV=test flashlight test --bundleId xyz.blueskyweb.app --testCommand 'yarn perf:test' --duration 150000 --resultsFilePath .perf/results.json",
"perf:test:results": "NODE_ENV=test flashlight report .perf/results.json",
"perf:measure": "NODE_ENV=test flashlight measure",
- "intl:build": "yarn intl:check && yarn intl:compile",
+ "intl:build": "yarn intl:extract && 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",
"nuke": "rm -rf ./node_modules && rm -rf ./ios && rm -rf ./android",
- "bump": "./scripts/bumpIosBuildNumber.sh && ./scripts/bumpAndroidBuildNumber.sh",
- "bump:ios": "./scripts/bumpIosBuildNumber.sh",
- "bump:android": "./scripts/bumpAndroidBuildNumber.sh"
+ "update-extensions": "scripts/updateExtensions.sh"
},
"dependencies": {
- "@atproto/api": "^0.9.5",
+ "@atproto/api": "^0.10.5",
"@bam.tech/react-native-image-resizer": "^3.0.4",
"@braintree/sanitize-url": "^6.0.2",
"@emoji-mart/react": "^1.1.1",
@@ -56,11 +58,11 @@
"@lingui/react": "^4.5.0",
"@mattermost/react-native-paste-input": "^0.6.4",
"@miblanchard/react-native-slider": "^2.3.1",
+ "@radix-ui/react-dropdown-menu": "^2.0.6",
"@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.6.1",
"@react-native-masked-view/masked-view": "0.3.0",
"@react-native-menu/menu": "^0.8.0",
"@react-native-picker/picker": "2.6.1",
@@ -108,6 +110,7 @@
"expo-image": "~1.10.3",
"expo-image-manipulator": "^11.8.0",
"expo-image-picker": "~14.7.1",
+ "expo-linking": "^6.2.2",
"expo-localization": "~14.8.2",
"expo-media-library": "~15.9.1",
"expo-notifications": "~0.27.3",
@@ -123,7 +126,6 @@
"js-sha256": "^0.9.0",
"jwt-decode": "^4.0.0",
"lande": "^1.0.10",
- "libphonenumber-js": "^1.10.53",
"lodash.chunk": "^4.2.0",
"lodash.debounce": "^4.0.8",
"lodash.isequal": "^4.5.0",
@@ -137,7 +139,7 @@
"mobx": "^6.6.1",
"mobx-react-lite": "^3.4.0",
"mobx-utils": "^6.0.6",
- "nanoid": "^5.0.2",
+ "nanoid": "^5.0.5",
"normalize-url": "^8.0.0",
"patch-package": "^6.5.1",
"postinstall-postinstall": "^2.1.0",
@@ -146,8 +148,10 @@
"react-avatar-editor": "^13.0.0",
"react-circular-progressbar": "^2.1.0",
"react-dom": "^18.2.0",
+ "react-keyed-flatten-children": "^3.0.0",
"react-native": "0.73.2",
"react-native-appstate-hook": "^1.0.6",
+ "react-native-date-picker": "^4.4.0",
"react-native-drawer-layout": "^4.0.0-alpha.3",
"react-native-fs": "^2.20.0",
"react-native-gesture-handler": "~2.14.0",
@@ -176,6 +180,8 @@
"react-responsive": "^9.0.2",
"rn-fetch-blob": "^0.12.0",
"sentry-expo": "~7.0.1",
+ "statsig-react": "^1.36.0",
+ "statsig-react-native-expo": "^4.6.1",
"tippy.js": "^6.3.7",
"tlds": "^1.234.0",
"use-deep-compare": "^1.1.0",
diff --git a/patches/@react-navigation+native+6.1.7.patch b/patches/@react-navigation+native+6.1.7.patch
new file mode 100644
index 0000000000..b604e2c1aa
--- /dev/null
+++ b/patches/@react-navigation+native+6.1.7.patch
@@ -0,0 +1,56 @@
+diff --git a/node_modules/@react-navigation/native/lib/commonjs/useLinking.js b/node_modules/@react-navigation/native/lib/commonjs/useLinking.js
+index ef4f368..2b0da35 100644
+--- a/node_modules/@react-navigation/native/lib/commonjs/useLinking.js
++++ b/node_modules/@react-navigation/native/lib/commonjs/useLinking.js
+@@ -273,8 +273,12 @@ function useLinking(ref, _ref) {
+ });
+ const currentIndex = history.index;
+ try {
+- if (nextIndex !== -1 && nextIndex < currentIndex) {
+- // An existing entry for this path exists and it's less than current index, go back to that
++ if (
++ nextIndex !== -1 &&
++ nextIndex < currentIndex &&
++ // We should only go back if the entry exists and it's less than current index
++ history.get(nextIndex - currentIndex)
++ ) { // An existing entry for this path exists and it's less than current index, go back to that
+ await history.go(nextIndex - currentIndex);
+ } else {
+ // We couldn't find an existing entry to go back to, so we'll go back by the delta
+diff --git a/node_modules/@react-navigation/native/lib/module/useLinking.js b/node_modules/@react-navigation/native/lib/module/useLinking.js
+index 62a3b43..11a5a28 100644
+--- a/node_modules/@react-navigation/native/lib/module/useLinking.js
++++ b/node_modules/@react-navigation/native/lib/module/useLinking.js
+@@ -264,8 +264,12 @@ export default function useLinking(ref, _ref) {
+ });
+ const currentIndex = history.index;
+ try {
+- if (nextIndex !== -1 && nextIndex < currentIndex) {
+- // An existing entry for this path exists and it's less than current index, go back to that
++ if (
++ nextIndex !== -1 &&
++ nextIndex < currentIndex &&
++ // We should only go back if the entry exists and it's less than current index
++ history.get(nextIndex - currentIndex)
++ ) { // An existing entry for this path exists and it's less than current index, go back to that
+ await history.go(nextIndex - currentIndex);
+ } else {
+ // We couldn't find an existing entry to go back to, so we'll go back by the delta
+diff --git a/node_modules/@react-navigation/native/src/useLinking.tsx b/node_modules/@react-navigation/native/src/useLinking.tsx
+index 3db40b7..9ba4ecd 100644
+--- a/node_modules/@react-navigation/native/src/useLinking.tsx
++++ b/node_modules/@react-navigation/native/src/useLinking.tsx
+@@ -381,7 +381,12 @@ export default function useLinking(
+ const currentIndex = history.index;
+
+ try {
+- if (nextIndex !== -1 && nextIndex < currentIndex) {
++ if (
++ nextIndex !== -1 &&
++ nextIndex < currentIndex &&
++ // We should only go back if the entry exists and it's less than current index
++ history.get(nextIndex - currentIndex)
++ ) {
+ // An existing entry for this path exists and it's less than current index, go back to that
+ await history.go(nextIndex - currentIndex);
+ } else {
diff --git a/patches/@react-navigation+native+6.1.7.patch.md b/patches/@react-navigation+native+6.1.7.patch.md
new file mode 100644
index 0000000000..60b0d4e140
--- /dev/null
+++ b/patches/@react-navigation+native+6.1.7.patch.md
@@ -0,0 +1,5 @@
+# React Navigation history bug patch
+
+This patches react-navigation to fix the issues in https://github.com/bluesky-social/social-app/issues/710.
+
+This is based on the PR found at https://github.com/react-navigation/react-navigation/pull/11833
diff --git a/plugins/shareExtension/README.md b/plugins/shareExtension/README.md
new file mode 100644
index 0000000000..2b57e624ae
--- /dev/null
+++ b/plugins/shareExtension/README.md
@@ -0,0 +1,22 @@
+# Share extension plugin for Expo
+
+This plugin handles moving the necessary files into their respective iOS and Android targets and updating the build
+phases, plists, manifests, etc.
+
+## Steps
+
+### ios
+
+1. Update entitlements
+2. Set the app group to group.
+3. Add the extension plist
+4. Add the view controller
+5. Update the xcode project's build phases
+
+### android
+
+1. Update the manifest with the intents the app can receive
+
+## Credits
+
+Adapted from https://github.com/andrew-levy/react-native-safari-extension and https://github.com/timedtext/expo-config-plugin-ios-share-extension/blob/master/src/withShareExtensionXcodeTarget.ts
diff --git a/plugins/shareExtension/withAppEntitlements.js b/plugins/shareExtension/withAppEntitlements.js
new file mode 100644
index 0000000000..4ce81ea611
--- /dev/null
+++ b/plugins/shareExtension/withAppEntitlements.js
@@ -0,0 +1,13 @@
+const {withEntitlementsPlist} = require('@expo/config-plugins')
+
+const withAppEntitlements = config => {
+ // eslint-disable-next-line no-shadow
+ return withEntitlementsPlist(config, async config => {
+ config.modResults['com.apple.security.application-groups'] = [
+ `group.app.bsky`,
+ ]
+ return config
+ })
+}
+
+module.exports = {withAppEntitlements}
diff --git a/plugins/shareExtension/withExtensionEntitlements.js b/plugins/shareExtension/withExtensionEntitlements.js
new file mode 100644
index 0000000000..7bee79d1a6
--- /dev/null
+++ b/plugins/shareExtension/withExtensionEntitlements.js
@@ -0,0 +1,31 @@
+const {withInfoPlist} = require('@expo/config-plugins')
+const plist = require('@expo/plist')
+const path = require('path')
+const fs = require('fs')
+
+const withExtensionEntitlements = (config, {extensionName}) => {
+ // eslint-disable-next-line no-shadow
+ return withInfoPlist(config, config => {
+ const extensionEntitlementsPath = path.join(
+ config.modRequest.platformProjectRoot,
+ extensionName,
+ `${extensionName}.entitlements`,
+ )
+
+ const shareExtensionEntitlements = {
+ 'com.apple.security.application-groups': [`group.app.bsky`],
+ }
+
+ fs.mkdirSync(path.dirname(extensionEntitlementsPath), {
+ recursive: true,
+ })
+ fs.writeFileSync(
+ extensionEntitlementsPath,
+ plist.default.build(shareExtensionEntitlements),
+ )
+
+ return config
+ })
+}
+
+module.exports = {withExtensionEntitlements}
diff --git a/plugins/shareExtension/withExtensionInfoPlist.js b/plugins/shareExtension/withExtensionInfoPlist.js
new file mode 100644
index 0000000000..9afc4d5f92
--- /dev/null
+++ b/plugins/shareExtension/withExtensionInfoPlist.js
@@ -0,0 +1,39 @@
+const {withInfoPlist} = require('@expo/config-plugins')
+const plist = require('@expo/plist')
+const path = require('path')
+const fs = require('fs')
+
+const withExtensionInfoPlist = (config, {extensionName}) => {
+ // eslint-disable-next-line no-shadow
+ return withInfoPlist(config, config => {
+ const plistPath = path.join(
+ config.modRequest.projectRoot,
+ 'modules',
+ extensionName,
+ 'Info.plist',
+ )
+ const targetPath = path.join(
+ config.modRequest.platformProjectRoot,
+ extensionName,
+ 'Info.plist',
+ )
+
+ const extPlist = plist.default.parse(fs.readFileSync(plistPath).toString())
+
+ extPlist.MainAppScheme = config.scheme
+ extPlist.CFBundleName = '$(PRODUCT_NAME)'
+ extPlist.CFBundleDisplayName = 'Extension'
+ extPlist.CFBundleIdentifier = '$(PRODUCT_BUNDLE_IDENTIFIER)'
+ extPlist.CFBundleVersion = '$(CURRENT_PROJECT_VERSION)'
+ extPlist.CFBundleExecutable = '$(EXECUTABLE_NAME)'
+ extPlist.CFBundlePackageType = '$(PRODUCT_BUNDLE_PACKAGE_TYPE)'
+ extPlist.CFBundleShortVersionString = '$(MARKETING_VERSION)'
+
+ fs.mkdirSync(path.dirname(targetPath), {recursive: true})
+ fs.writeFileSync(targetPath, plist.default.build(extPlist))
+
+ return config
+ })
+}
+
+module.exports = {withExtensionInfoPlist}
diff --git a/plugins/shareExtension/withExtensionViewController.js b/plugins/shareExtension/withExtensionViewController.js
new file mode 100644
index 0000000000..cd29bea7da
--- /dev/null
+++ b/plugins/shareExtension/withExtensionViewController.js
@@ -0,0 +1,31 @@
+const {withXcodeProject} = require('@expo/config-plugins')
+const path = require('path')
+const fs = require('fs')
+
+const withExtensionViewController = (
+ config,
+ {controllerName, extensionName},
+) => {
+ // eslint-disable-next-line no-shadow
+ return withXcodeProject(config, config => {
+ const controllerPath = path.join(
+ config.modRequest.projectRoot,
+ 'modules',
+ extensionName,
+ `${controllerName}.swift`,
+ )
+
+ const targetPath = path.join(
+ config.modRequest.platformProjectRoot,
+ extensionName,
+ `${controllerName}.swift`,
+ )
+
+ fs.mkdirSync(path.dirname(targetPath), {recursive: true})
+ fs.copyFileSync(controllerPath, targetPath)
+
+ return config
+ })
+}
+
+module.exports = {withExtensionViewController}
diff --git a/plugins/shareExtension/withIntentFilters.js b/plugins/shareExtension/withIntentFilters.js
new file mode 100644
index 0000000000..605fcfd052
--- /dev/null
+++ b/plugins/shareExtension/withIntentFilters.js
@@ -0,0 +1,89 @@
+const {withAndroidManifest} = require('@expo/config-plugins')
+
+const withIntentFilters = config => {
+ // eslint-disable-next-line no-shadow
+ return withAndroidManifest(config, config => {
+ const intents = [
+ {
+ action: [
+ {
+ $: {
+ 'android:name': 'android.intent.action.SEND',
+ },
+ },
+ ],
+ category: [
+ {
+ $: {
+ 'android:name': 'android.intent.category.DEFAULT',
+ },
+ },
+ ],
+ data: [
+ {
+ $: {
+ 'android:mimeType': 'image/*',
+ },
+ },
+ ],
+ },
+ {
+ action: [
+ {
+ $: {
+ 'android:name': 'android.intent.action.SEND',
+ },
+ },
+ ],
+ category: [
+ {
+ $: {
+ 'android:name': 'android.intent.category.DEFAULT',
+ },
+ },
+ ],
+ data: [
+ {
+ $: {
+ 'android:mimeType': 'text/plain',
+ },
+ },
+ ],
+ },
+ {
+ action: [
+ {
+ $: {
+ 'android:name': 'android.intent.action.SEND_MULTIPLE',
+ },
+ },
+ ],
+ category: [
+ {
+ $: {
+ 'android:name': 'android.intent.category.DEFAULT',
+ },
+ },
+ ],
+ data: [
+ {
+ $: {
+ 'android:mimeType': 'image/*',
+ },
+ },
+ ],
+ },
+ ]
+
+ const intentFilter =
+ config.modResults.manifest.application?.[0].activity?.[0]['intent-filter']
+
+ if (intentFilter) {
+ intentFilter.push(...intents)
+ }
+
+ return config
+ })
+}
+
+module.exports = {withIntentFilters}
diff --git a/plugins/shareExtension/withShareExtensions.js b/plugins/shareExtension/withShareExtensions.js
new file mode 100644
index 0000000000..55a26c75eb
--- /dev/null
+++ b/plugins/shareExtension/withShareExtensions.js
@@ -0,0 +1,47 @@
+const {withPlugins} = require('@expo/config-plugins')
+const {withAppEntitlements} = require('./withAppEntitlements')
+const {withXcodeTarget} = require('./withXcodeTarget')
+const {withExtensionEntitlements} = require('./withExtensionEntitlements')
+const {withExtensionInfoPlist} = require('./withExtensionInfoPlist')
+const {withExtensionViewController} = require('./withExtensionViewController')
+const {withIntentFilters} = require('./withIntentFilters')
+
+const SHARE_EXTENSION_NAME = 'Share-with-Bluesky'
+const SHARE_EXTENSION_CONTROLLER_NAME = 'ShareViewController'
+
+const withShareExtensions = config => {
+ return withPlugins(config, [
+ // IOS
+ withAppEntitlements,
+ [
+ withExtensionEntitlements,
+ {
+ extensionName: SHARE_EXTENSION_NAME,
+ },
+ ],
+ [
+ withExtensionInfoPlist,
+ {
+ extensionName: SHARE_EXTENSION_NAME,
+ },
+ ],
+ [
+ withExtensionViewController,
+ {
+ extensionName: SHARE_EXTENSION_NAME,
+ controllerName: SHARE_EXTENSION_CONTROLLER_NAME,
+ },
+ ],
+ [
+ withXcodeTarget,
+ {
+ extensionName: SHARE_EXTENSION_NAME,
+ controllerName: SHARE_EXTENSION_CONTROLLER_NAME,
+ },
+ ],
+ // Android
+ withIntentFilters,
+ ])
+}
+
+module.exports = withShareExtensions
diff --git a/plugins/shareExtension/withXcodeTarget.js b/plugins/shareExtension/withXcodeTarget.js
new file mode 100644
index 0000000000..ce70b392d4
--- /dev/null
+++ b/plugins/shareExtension/withXcodeTarget.js
@@ -0,0 +1,63 @@
+const {withXcodeProject} = require('@expo/config-plugins')
+
+const withXcodeTarget = (config, {extensionName, controllerName}) => {
+ // eslint-disable-next-line no-shadow
+ return withXcodeProject(config, config => {
+ const pbxProject = config.modResults
+
+ const target = pbxProject.addTarget(
+ extensionName,
+ 'app_extension',
+ extensionName,
+ )
+ pbxProject.addBuildPhase([], 'PBXSourcesBuildPhase', 'Sources', target.uuid)
+ pbxProject.addBuildPhase(
+ [],
+ 'PBXResourcesBuildPhase',
+ 'Resources',
+ target.uuid,
+ )
+ const pbxGroupKey = pbxProject.pbxCreateGroup(extensionName, extensionName)
+ pbxProject.addFile(`${extensionName}/Info.plist`, pbxGroupKey)
+ pbxProject.addSourceFile(
+ `${extensionName}/${controllerName}.swift`,
+ {target: target.uuid},
+ pbxGroupKey,
+ )
+
+ var configurations = pbxProject.pbxXCBuildConfigurationSection()
+ for (var key in configurations) {
+ if (typeof configurations[key].buildSettings !== 'undefined') {
+ var buildSettingsObj = configurations[key].buildSettings
+ if (
+ typeof buildSettingsObj.PRODUCT_NAME !== 'undefined' &&
+ buildSettingsObj.PRODUCT_NAME === `"${extensionName}"`
+ ) {
+ buildSettingsObj.CLANG_ENABLE_MODULES = 'YES'
+ buildSettingsObj.INFOPLIST_FILE = `"${extensionName}/Info.plist"`
+ buildSettingsObj.CODE_SIGN_ENTITLEMENTS = `"${extensionName}/${extensionName}.entitlements"`
+ buildSettingsObj.CODE_SIGN_STYLE = 'Automatic'
+ buildSettingsObj.CURRENT_PROJECT_VERSION = `"${config.ios?.buildNumber}"`
+ buildSettingsObj.GENERATE_INFOPLIST_FILE = 'YES'
+ buildSettingsObj.MARKETING_VERSION = `"${config.version}"`
+ buildSettingsObj.PRODUCT_BUNDLE_IDENTIFIER = `"${config.ios?.bundleIdentifier}.${extensionName}"`
+ buildSettingsObj.SWIFT_EMIT_LOC_STRINGS = 'YES'
+ buildSettingsObj.SWIFT_VERSION = '5.0'
+ buildSettingsObj.TARGETED_DEVICE_FAMILY = `"1,2"`
+ buildSettingsObj.DEVELOPMENT_TEAM = 'B3LX46C5HS'
+ }
+ }
+ }
+
+ pbxProject.addTargetAttribute(
+ 'DevelopmentTeam',
+ 'B3LX46C5HS',
+ extensionName,
+ )
+ pbxProject.addTargetAttribute('DevelopmentTeam', 'B3LX46C5HS')
+
+ return config
+ })
+}
+
+module.exports = {withXcodeTarget}
diff --git a/plugins/withAndroidManifestFCMIconPlugin.js b/plugins/withAndroidManifestFCMIconPlugin.js
new file mode 100644
index 0000000000..066a975d87
--- /dev/null
+++ b/plugins/withAndroidManifestFCMIconPlugin.js
@@ -0,0 +1,37 @@
+const {withAndroidManifest} = require('expo/config-plugins')
+
+module.exports = function withAndroidManifestFCMIconPlugin(appConfig) {
+ return withAndroidManifest(appConfig, function (decoratedAppConfig) {
+ try {
+ function addOrModifyMetaData(metaData, name, resource) {
+ const elem = metaData.find(elem => elem.$['android:name'] === name)
+ if (elem === undefined) {
+ metaData.push({
+ $: {
+ 'android:name': name,
+ 'android:resource': resource,
+ },
+ })
+ } else {
+ elem.$['android:resource'] = resource
+ }
+ }
+ const androidManifest = decoratedAppConfig.modResults.manifest
+ const metaData = androidManifest.application[0]['meta-data']
+ addOrModifyMetaData(
+ metaData,
+ 'com.google.firebase.messaging.default_notification_color',
+ '@color/notification_icon_color',
+ )
+ addOrModifyMetaData(
+ metaData,
+ 'com.google.firebase.messaging.default_notification_icon',
+ '@drawable/notification_icon',
+ )
+ return decoratedAppConfig
+ } catch (e) {
+ console.error(`withAndroidManifestFCMIconPlugin failed`, e)
+ }
+ return decoratedAppConfig
+ })
+}
diff --git a/plugins/withAndroidStylesWindowBackgroundPlugin.js b/plugins/withAndroidStylesWindowBackgroundPlugin.js
new file mode 100644
index 0000000000..427f43df07
--- /dev/null
+++ b/plugins/withAndroidStylesWindowBackgroundPlugin.js
@@ -0,0 +1,20 @@
+const {withAndroidStyles, AndroidConfig} = require('@expo/config-plugins')
+
+module.exports = function withAndroidStylesWindowBackgroundPlugin(appConfig) {
+ return withAndroidStyles(appConfig, function (decoratedAppConfig) {
+ try {
+ decoratedAppConfig.modResults = AndroidConfig.Styles.assignStylesValue(
+ decoratedAppConfig.modResults,
+ {
+ add: true,
+ parent: AndroidConfig.Styles.getAppThemeLightNoActionBarGroup(),
+ name: 'android:windowBackground',
+ value: '@drawable/splashscreen',
+ },
+ )
+ } catch (e) {
+ console.error(`withAndroidStylesWindowBackgroundPlugin failed`, e)
+ }
+ return decoratedAppConfig
+ })
+}
diff --git a/scripts/README.md b/scripts/README.md
new file mode 100644
index 0000000000..99d6236f90
--- /dev/null
+++ b/scripts/README.md
@@ -0,0 +1,5 @@
+# Tool Scripts
+
+## updateExtensions.sh
+
+Updates the extensions in `/modules` with the current iOS/Android project changes.
diff --git a/scripts/bumpAndroidBuildNumber.sh b/scripts/bumpAndroidBuildNumber.sh
deleted file mode 100755
index 105f1296d4..0000000000
--- a/scripts/bumpAndroidBuildNumber.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/sh
-# The number here should always be the line number the iOS build variable is on
-line=$(sed "30q;d" ./app.config.js)
-currentBuildNumber=$(echo "$line" | grep -oE '[0-9]+([.][0-9]+)?')
-newBuildNumber=$((currentBuildNumber+1))
-newBuildVariable="const ANDROID_VERSION_CODE = '$newBuildNumber'"
-sed -i.bak "30s/.*/ $newBuildVariable/" ./app.config.js
-rm -rf ./app.config.js.bak
-
-echo "Android build number bumped to $newBuildNumber"
diff --git a/scripts/bumpIosBuildNumber.sh b/scripts/bumpIosBuildNumber.sh
deleted file mode 100755
index b78d2e69db..0000000000
--- a/scripts/bumpIosBuildNumber.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/sh
-# The number here should always be the line number the iOS build variable is on
-line=$(sed "24q;d" ./app.config.js)
-currentBuildNumber=$(echo "$line" | grep -oE '[0-9]+([.][0-9]+)?')
-newBuildNumber=$((currentBuildNumber+1))
-newBuildVariable="const IOS_BUILD_NUMBER = '$newBuildNumber'"
-sed -i.bak "24s/.*/ $newBuildVariable/" ./app.config.js
-rm -rf ./app.config.js.bak
-
-echo "iOS build number bumped to $newBuildNumber"
diff --git a/scripts/updateExtensions.sh b/scripts/updateExtensions.sh
new file mode 100755
index 0000000000..f4e462b744
--- /dev/null
+++ b/scripts/updateExtensions.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+IOS_SHARE_EXTENSION_DIRECTORY="./ios/Share-with-Bluesky"
+MODULES_DIRECTORY="./modules"
+
+if [ ! -d $IOS_SHARE_EXTENSION_DIRECTORY ]; then
+ echo "$IOS_SHARE_EXTENSION_DIRECTORY not found inside of your iOS project."
+ exit 1
+else
+ cp -R $IOS_SHARE_EXTENSION_DIRECTORY $MODULES_DIRECTORY
+fi
diff --git a/scripts/useBuildNumberEnv.sh b/scripts/useBuildNumberEnv.sh
new file mode 100755
index 0000000000..fe273d3948
--- /dev/null
+++ b/scripts/useBuildNumberEnv.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+outputIos=$(eas build:version:get -p ios)
+outputAndroid=$(eas build:version:get -p android)
+currentIosVersion=${outputIos#*buildNumber - }
+currentAndroidVersion=${outputAndroid#*versionCode - }
+
+BSKY_IOS_BUILD_NUMBER=$((currentIosVersion+1))
+BSKY_ANDROID_VERSION_CODE=$((currentAndroidVersion+1))
+
+bash -c "BSKY_IOS_BUILD_NUMBER=$BSKY_IOS_BUILD_NUMBER BSKY_ANDROID_VERSION_CODE=$BSKY_ANDROID_VERSION_CODE $*"
+
diff --git a/src/App.native.tsx b/src/App.native.tsx
index 1284154f3b..eff8ab0997 100644
--- a/src/App.native.tsx
+++ b/src/App.native.tsx
@@ -43,8 +43,12 @@ import {Provider as UnreadNotifsProvider} from 'state/queries/notifications/unre
import * as persisted from '#/state/persisted'
import {Splash} from '#/Splash'
import {Provider as PortalProvider} from '#/components/Portal'
+import {Provider as StatsigProvider} from '#/lib/statsig/statsig'
import {msg} from '@lingui/macro'
import {useLingui} from '@lingui/react'
+import {useIntentHandler} from 'lib/hooks/useIntentHandler'
+import {StatusBar} from 'expo-status-bar'
+import {isAndroid} from 'platform/detection'
SplashScreen.preventAutoHideAsync()
@@ -53,6 +57,7 @@ function InnerApp() {
const {resumeSession} = useSessionApi()
const theme = useColorModeTheme()
const {_} = useLingui()
+ useIntentHandler()
// init
useEffect(() => {
@@ -67,26 +72,29 @@ function InnerApp() {
return (
+ {isAndroid && }
-
-
-
-
- {/* All components should be within this provider */}
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+ {/* All components should be within this provider */}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/App.web.tsx b/src/App.web.tsx
index f10bb194d4..eb2e425930 100644
--- a/src/App.web.tsx
+++ b/src/App.web.tsx
@@ -32,11 +32,14 @@ import {
import {Provider as UnreadNotifsProvider} from 'state/queries/notifications/unread'
import * as persisted from '#/state/persisted'
import {Provider as PortalProvider} from '#/components/Portal'
+import {Provider as StatsigProvider} from '#/lib/statsig/statsig'
+import {useIntentHandler} from 'lib/hooks/useIntentHandler'
function InnerApp() {
const {isInitialLoad, currentAccount} = useSession()
const {resumeSession} = useSessionApi()
const theme = useColorModeTheme()
+ useIntentHandler()
// init
useEffect(() => {
@@ -52,21 +55,23 @@ function InnerApp() {
-
-
-
-
- {/* 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 897d86e40f..8a9f69b5de 100644
--- a/src/Navigation.tsx
+++ b/src/Navigation.tsx
@@ -71,12 +71,14 @@ import {AppPasswords} from 'view/screens/AppPasswords'
import {ModerationMutedAccounts} from 'view/screens/ModerationMutedAccounts'
import {ModerationBlockedAccounts} from 'view/screens/ModerationBlockedAccounts'
import {SavedFeeds} from 'view/screens/SavedFeeds'
-import {PreferencesHomeFeed} from 'view/screens/PreferencesHomeFeed'
+import {PreferencesFollowingFeed} from 'view/screens/PreferencesFollowingFeed'
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'
+import HashtagScreen from '#/screens/Hashtag'
+import {logEvent} from './lib/statsig/statsig'
const navigationRef = createNavigationContainerRef()
@@ -242,9 +244,12 @@ function commonScreens(Stack: typeof HomeTab, unreadCountLabel?: string) {
options={{title: title(msg`Edit My Feeds`), requireAuth: true}}
/>
PreferencesHomeFeed}
- options={{title: title(msg`Home Feed Preferences`), requireAuth: true}}
+ name="PreferencesFollowingFeed"
+ getComponent={() => PreferencesFollowingFeed}
+ options={{
+ title: title(msg`Following Feed Preferences`),
+ requireAuth: true,
+ }}
/>
+ HashtagScreen}
+ options={{title: title(msg`Hashtag`)}}
+ />
>
)
}
@@ -457,7 +467,8 @@ const FlatNavigator = () => {
*/
const LINKING = {
- prefixes: ['bsky://', 'https://bsky.app'],
+ // TODO figure out what we are going to use
+ prefixes: ['bsky://', 'bluesky://', 'https://bsky.app'],
getPathFromState(state: State) {
// find the current node in the navigation tree
@@ -476,6 +487,18 @@ const LINKING = {
getStateFromPath(path: string) {
const [name, params] = router.matchPath(path)
+
+ // Any time we receive a url that starts with `intent/` we want to ignore it here. It will be handled in the
+ // intent handler hook. We should check for the trailing slash, because if there isn't one then it isn't a valid
+ // intent
+ // On web, there is no route state that's created by default, so we should initialize it as the home route. On
+ // native, since the home tab and the home screen are defined as initial routes, we don't need to return a state
+ // since it will be created by react-navigation.
+ if (path.includes('intent/')) {
+ if (isNative) return
+ return buildStateObject('Flat', 'Home', params)
+ }
+
if (isNative) {
if (name === 'Search') {
return buildStateObject('SearchTab', 'Search', params)
@@ -494,7 +517,8 @@ const LINKING = {
},
])
} else {
- return buildStateObject('Flat', name, params)
+ const res = buildStateObject('Flat', name, params)
+ return res
}
},
}
@@ -626,11 +650,14 @@ function logModuleInitTime() {
return
}
didInit = true
+
const initMs = Math.round(
// @ts-ignore Emitted by Metro in the bundle prelude
performance.now() - global.__BUNDLE_START_TIME__,
)
console.log(`Time to first paint: ${initMs} ms`)
+ logEvent('init', initMs)
+
if (__DEV__) {
// This log is noisy, so keep false committed
const shouldLog = false
diff --git a/src/Splash.tsx b/src/Splash.tsx
index 80d0a66e75..42a21c0839 100644
--- a/src/Splash.tsx
+++ b/src/Splash.tsx
@@ -21,7 +21,6 @@ import {useSafeAreaInsets} from 'react-native-safe-area-context'
import Svg, {Path, SvgProps} from 'react-native-svg'
import {isAndroid} from '#/platform/detection'
-import {useThemePrefs} from 'state/shell'
import {Logotype} from '#/view/icons/Logotype'
// @ts-ignore
@@ -75,10 +74,8 @@ export function Splash(props: React.PropsWithChildren) {
isLayoutReady &&
reduceMotion !== undefined
- const {colorMode} = useThemePrefs()
const colorScheme = useColorScheme()
- const themeName = colorMode === 'system' ? colorScheme : colorMode
- const isDarkMode = themeName === 'dark'
+ const isDarkMode = colorScheme === 'dark'
const logoAnimation = useAnimatedStyle(() => {
return {
@@ -184,6 +181,8 @@ export function Splash(props: React.PropsWithChildren) {
const logoAnimations =
reduceMotion === true ? reducedLogoAnimation : logoAnimation
+ // special off-spec color for dark mode
+ const logoBg = isDarkMode ? '#0F1824' : '#fff'
return (
@@ -235,7 +234,7 @@ export function Splash(props: React.PropsWithChildren) {
},
]}>
@@ -256,14 +255,16 @@ export function Splash(props: React.PropsWithChildren) {
transform: [{translateY: -(insets.top / 2)}, {scale: 0.1}], // scale from 1000px to 100px
},
]}>
-
+
}>
{!isAnimationComplete && (
)}
diff --git a/src/alf/atoms.ts b/src/alf/atoms.ts
index bbf7e32431..fff3a4d8bd 100644
--- a/src/alf/atoms.ts
+++ b/src/alf/atoms.ts
@@ -1,3 +1,4 @@
+import {web, native} from '#/alf/util/platform'
import * as tokens from '#/alf/tokens'
export const atoms = {
@@ -113,6 +114,9 @@ export const atoms = {
flex_wrap: {
flexWrap: 'wrap',
},
+ flex_0: {
+ flex: web('0 0 auto') || (native(0) as number),
+ },
flex_1: {
flex: 1,
},
@@ -122,6 +126,9 @@ export const atoms = {
flex_shrink: {
flexShrink: 1,
},
+ justify_start: {
+ justifyContent: 'flex-start',
+ },
justify_center: {
justifyContent: 'center',
},
@@ -140,10 +147,31 @@ export const atoms = {
align_end: {
alignItems: 'flex-end',
},
+ self_auto: {
+ alignSelf: 'auto',
+ },
+ self_start: {
+ alignSelf: 'flex-start',
+ },
+ self_end: {
+ alignSelf: 'flex-end',
+ },
+ self_center: {
+ alignSelf: 'center',
+ },
+ self_stretch: {
+ alignSelf: 'stretch',
+ },
+ self_baseline: {
+ alignSelf: 'baseline',
+ },
/*
* Text
*/
+ text_left: {
+ textAlign: 'left',
+ },
text_center: {
textAlign: 'center',
},
@@ -152,53 +180,75 @@ export const atoms = {
},
text_2xs: {
fontSize: tokens.fontSize._2xs,
+ letterSpacing: 0.25,
},
text_xs: {
fontSize: tokens.fontSize.xs,
+ letterSpacing: 0.25,
},
text_sm: {
fontSize: tokens.fontSize.sm,
+ letterSpacing: 0.25,
},
text_md: {
fontSize: tokens.fontSize.md,
+ letterSpacing: 0.25,
},
text_lg: {
fontSize: tokens.fontSize.lg,
+ letterSpacing: 0.25,
},
text_xl: {
fontSize: tokens.fontSize.xl,
+ letterSpacing: 0.25,
},
text_2xl: {
fontSize: tokens.fontSize._2xl,
+ letterSpacing: 0.25,
},
text_3xl: {
fontSize: tokens.fontSize._3xl,
+ letterSpacing: 0.25,
},
text_4xl: {
fontSize: tokens.fontSize._4xl,
+ letterSpacing: 0.25,
},
text_5xl: {
fontSize: tokens.fontSize._5xl,
+ letterSpacing: 0.25,
},
leading_tight: {
lineHeight: 1.15,
},
leading_snug: {
- lineHeight: 1.25,
+ lineHeight: 1.3,
},
leading_normal: {
lineHeight: 1.5,
},
+ tracking_normal: {
+ letterSpacing: 0,
+ },
+ tracking_wide: {
+ letterSpacing: 0.25,
+ },
font_normal: {
fontWeight: tokens.fontWeight.normal,
},
font_bold: {
fontWeight: tokens.fontWeight.semibold,
},
+ italic: {
+ fontStyle: 'italic',
+ },
/*
* Border
*/
+ border_0: {
+ borderWidth: 0,
+ },
border: {
borderWidth: 1,
},
@@ -208,6 +258,12 @@ export const atoms = {
border_b: {
borderBottomWidth: 1,
},
+ border_l: {
+ borderLeftWidth: 1,
+ },
+ border_r: {
+ borderRightWidth: 1,
+ },
/*
* Shadow
diff --git a/src/alf/index.tsx b/src/alf/index.tsx
index 06d6ebf01c..27738e91de 100644
--- a/src/alf/index.tsx
+++ b/src/alf/index.tsx
@@ -17,7 +17,7 @@ const breakpoints: {
[key: string]: number
} = {
gtMobile: 800,
- gtTablet: 1200,
+ gtTablet: 1300,
}
function getActiveBreakpoints({width}: {width: number}) {
const active: (keyof typeof breakpoints)[] = Object.keys(breakpoints).filter(
diff --git a/src/alf/themes.ts b/src/alf/themes.ts
index 72e08e8941..0c95a459ed 100644
--- a/src/alf/themes.ts
+++ b/src/alf/themes.ts
@@ -1,6 +1,7 @@
import * as tokens from '#/alf/tokens'
import type {Mutable} from '#/alf/types'
import {atoms} from '#/alf/atoms'
+import {BLUE_HUE, GREEN_HUE, RED_HUE} from '#/alf/util/colorGeneration'
export type ThemeName = 'light' | 'dim' | 'dark'
export type ReadonlyTheme = typeof light
@@ -132,21 +133,63 @@ export const darkPalette: Palette = {
export const dimPalette: Palette = {
...darkPalette,
- black: tokens.color.gray_1000,
+ black: `hsl(${BLUE_HUE}, 28%, ${tokens.dimScale[0]}%)`,
- contrast_25: tokens.color.gray_975,
- contrast_50: tokens.color.gray_950,
- contrast_100: tokens.color.gray_900,
- contrast_200: tokens.color.gray_800,
- contrast_300: tokens.color.gray_700,
- contrast_400: tokens.color.gray_600,
- contrast_500: tokens.color.gray_500,
- contrast_600: tokens.color.gray_400,
- contrast_700: tokens.color.gray_300,
- contrast_800: tokens.color.gray_200,
- contrast_900: tokens.color.gray_100,
- contrast_950: tokens.color.gray_50,
- contrast_975: tokens.color.gray_25,
+ contrast_25: `hsl(${BLUE_HUE}, 28%, ${tokens.dimScale[1]}%)`,
+ contrast_50: `hsl(${BLUE_HUE}, 28%, ${tokens.dimScale[2]}%)`,
+ contrast_100: `hsl(${BLUE_HUE}, 28%, ${tokens.dimScale[3]}%)`,
+ contrast_200: `hsl(${BLUE_HUE}, 28%, ${tokens.dimScale[4]}%)`,
+ contrast_300: `hsl(${BLUE_HUE}, 24%, ${tokens.dimScale[5]}%)`,
+ contrast_400: `hsl(${BLUE_HUE}, 24%, ${tokens.dimScale[6]}%)`,
+ contrast_500: `hsl(${BLUE_HUE}, 20%, ${tokens.dimScale[7]}%)`,
+ contrast_600: `hsl(${BLUE_HUE}, 20%, ${tokens.dimScale[8]}%)`,
+ contrast_700: `hsl(${BLUE_HUE}, 20%, ${tokens.dimScale[9]}%)`,
+ contrast_800: `hsl(${BLUE_HUE}, 20%, ${tokens.dimScale[10]}%)`,
+ contrast_900: `hsl(${BLUE_HUE}, 20%, ${tokens.dimScale[11]}%)`,
+ contrast_950: `hsl(${BLUE_HUE}, 20%, ${tokens.dimScale[12]}%)`,
+ contrast_975: `hsl(${BLUE_HUE}, 20%, ${tokens.dimScale[13]}%)`,
+
+ primary_25: `hsl(${BLUE_HUE}, 99%, ${tokens.dimScale[13]}%)`,
+ primary_50: `hsl(${BLUE_HUE}, 99%, ${tokens.dimScale[12]}%)`,
+ primary_100: `hsl(${BLUE_HUE}, 99%, ${tokens.dimScale[11]}%)`,
+ primary_200: `hsl(${BLUE_HUE}, 99%, ${tokens.dimScale[10]}%)`,
+ primary_300: `hsl(${BLUE_HUE}, 99%, ${tokens.dimScale[9]}%)`,
+ primary_400: `hsl(${BLUE_HUE}, 99%, ${tokens.dimScale[8]}%)`,
+ primary_500: `hsl(${BLUE_HUE}, 99%, ${tokens.dimScale[7]}%)`,
+ primary_600: `hsl(${BLUE_HUE}, 95%, ${tokens.dimScale[6]}%)`,
+ primary_700: `hsl(${BLUE_HUE}, 90%, ${tokens.dimScale[5]}%)`,
+ primary_800: `hsl(${BLUE_HUE}, 82%, ${tokens.dimScale[4]}%)`,
+ primary_900: `hsl(${BLUE_HUE}, 70%, ${tokens.dimScale[3]}%)`,
+ primary_950: `hsl(${BLUE_HUE}, 60%, ${tokens.dimScale[2]}%)`,
+ primary_975: `hsl(${BLUE_HUE}, 50%, ${tokens.dimScale[1]}%)`,
+
+ positive_25: `hsl(${GREEN_HUE}, 82%, ${tokens.dimScale[13]}%)`,
+ positive_50: `hsl(${GREEN_HUE}, 82%, ${tokens.dimScale[12]}%)`,
+ positive_100: `hsl(${GREEN_HUE}, 82%, ${tokens.dimScale[11]}%)`,
+ positive_200: `hsl(${GREEN_HUE}, 82%, ${tokens.dimScale[10]}%)`,
+ positive_300: `hsl(${GREEN_HUE}, 82%, ${tokens.dimScale[9]}%)`,
+ positive_400: `hsl(${GREEN_HUE}, 82%, ${tokens.dimScale[8]}%)`,
+ positive_500: `hsl(${GREEN_HUE}, 82%, ${tokens.dimScale[7]}%)`,
+ positive_600: `hsl(${GREEN_HUE}, 82%, ${tokens.dimScale[6]}%)`,
+ positive_700: `hsl(${GREEN_HUE}, 82%, ${tokens.dimScale[5]}%)`,
+ positive_800: `hsl(${GREEN_HUE}, 82%, ${tokens.dimScale[4]}%)`,
+ positive_900: `hsl(${GREEN_HUE}, 70%, ${tokens.dimScale[3]}%)`,
+ positive_950: `hsl(${GREEN_HUE}, 60%, ${tokens.dimScale[2]}%)`,
+ positive_975: `hsl(${GREEN_HUE}, 50%, ${tokens.dimScale[1]}%)`,
+
+ negative_25: `hsl(${RED_HUE}, 91%, ${tokens.dimScale[13]}%)`,
+ negative_50: `hsl(${RED_HUE}, 91%, ${tokens.dimScale[12]}%)`,
+ negative_100: `hsl(${RED_HUE}, 91%, ${tokens.dimScale[11]}%)`,
+ negative_200: `hsl(${RED_HUE}, 91%, ${tokens.dimScale[10]}%)`,
+ negative_300: `hsl(${RED_HUE}, 91%, ${tokens.dimScale[9]}%)`,
+ negative_400: `hsl(${RED_HUE}, 91%, ${tokens.dimScale[8]}%)`,
+ negative_500: `hsl(${RED_HUE}, 91%, ${tokens.dimScale[7]}%)`,
+ negative_600: `hsl(${RED_HUE}, 91%, ${tokens.dimScale[6]}%)`,
+ negative_700: `hsl(${RED_HUE}, 91%, ${tokens.dimScale[5]}%)`,
+ negative_800: `hsl(${RED_HUE}, 88%, ${tokens.dimScale[4]}%)`,
+ negative_900: `hsl(${RED_HUE}, 84%, ${tokens.dimScale[3]}%)`,
+ negative_950: `hsl(${RED_HUE}, 80%, ${tokens.dimScale[2]}%)`,
+ negative_975: `hsl(${RED_HUE}, 70%, ${tokens.dimScale[1]}%)`,
} as const
export const light = {
@@ -325,6 +368,7 @@ export const dark: Theme = {
export const dim: Theme = {
...dark,
name: 'dim',
+ palette: dimPalette,
atoms: {
...dark.atoms,
text: {
@@ -393,5 +437,20 @@ export const dim: Theme = {
border_contrast_high: {
borderColor: dimPalette.contrast_300,
},
+ shadow_sm: {
+ ...atoms.shadow_sm,
+ shadowOpacity: 0.7,
+ shadowColor: `hsl(${BLUE_HUE}, 28%, 6%)`,
+ },
+ shadow_md: {
+ ...atoms.shadow_md,
+ shadowOpacity: 0.7,
+ shadowColor: `hsl(${BLUE_HUE}, 28%, 6%)`,
+ },
+ shadow_lg: {
+ ...atoms.shadow_lg,
+ shadowOpacity: 0.7,
+ shadowColor: `hsl(${BLUE_HUE}, 28%, 6%)`,
+ },
},
}
diff --git a/src/alf/tokens.ts b/src/alf/tokens.ts
index f0b8c7c692..b1468f461d 100644
--- a/src/alf/tokens.ts
+++ b/src/alf/tokens.ts
@@ -1,25 +1,32 @@
-const BLUE_HUE = 211
-const RED_HUE = 346
-const GREEN_HUE = 152
+import {
+ BLUE_HUE,
+ RED_HUE,
+ GREEN_HUE,
+ generateScale,
+} from '#/alf/util/colorGeneration'
+
+export const scale = generateScale(6, 100)
+// dim shifted 6% lighter
+export const dimScale = generateScale(12, 100)
export const color = {
trueBlack: '#000000',
- gray_0: `hsl(${BLUE_HUE}, 20%, 100%)`,
- gray_25: `hsl(${BLUE_HUE}, 20%, 97%)`,
- gray_50: `hsl(${BLUE_HUE}, 20%, 95%)`,
- gray_100: `hsl(${BLUE_HUE}, 20%, 90%)`,
- gray_200: `hsl(${BLUE_HUE}, 20%, 80%)`,
- gray_300: `hsl(${BLUE_HUE}, 20%, 70%)`,
- gray_400: `hsl(${BLUE_HUE}, 20%, 60%)`,
- gray_500: `hsl(${BLUE_HUE}, 20%, 50%)`,
- gray_600: `hsl(${BLUE_HUE}, 24%, 42%)`,
- gray_700: `hsl(${BLUE_HUE}, 24%, 34%)`,
- gray_800: `hsl(${BLUE_HUE}, 28%, 26%)`,
- gray_900: `hsl(${BLUE_HUE}, 28%, 18%)`,
- gray_950: `hsl(${BLUE_HUE}, 28%, 10%)`,
- gray_975: `hsl(${BLUE_HUE}, 28%, 7%)`,
- gray_1000: `hsl(${BLUE_HUE}, 28%, 4%)`,
+ gray_0: `hsl(${BLUE_HUE}, 20%, ${scale[14]}%)`,
+ gray_25: `hsl(${BLUE_HUE}, 20%, ${scale[13]}%)`,
+ gray_50: `hsl(${BLUE_HUE}, 20%, ${scale[12]}%)`,
+ gray_100: `hsl(${BLUE_HUE}, 20%, ${scale[11]}%)`,
+ gray_200: `hsl(${BLUE_HUE}, 20%, ${scale[10]}%)`,
+ gray_300: `hsl(${BLUE_HUE}, 20%, ${scale[9]}%)`,
+ gray_400: `hsl(${BLUE_HUE}, 20%, ${scale[8]}%)`,
+ gray_500: `hsl(${BLUE_HUE}, 20%, ${scale[7]}%)`,
+ gray_600: `hsl(${BLUE_HUE}, 24%, ${scale[6]}%)`,
+ gray_700: `hsl(${BLUE_HUE}, 24%, ${scale[5]}%)`,
+ gray_800: `hsl(${BLUE_HUE}, 28%, ${scale[4]}%)`,
+ gray_900: `hsl(${BLUE_HUE}, 28%, ${scale[3]}%)`,
+ gray_950: `hsl(${BLUE_HUE}, 28%, ${scale[2]}%)`,
+ gray_975: `hsl(${BLUE_HUE}, 28%, ${scale[1]}%)`,
+ gray_1000: `hsl(${BLUE_HUE}, 28%, ${scale[0]}%)`,
blue_25: `hsl(${BLUE_HUE}, 99%, 97%)`,
blue_50: `hsl(${BLUE_HUE}, 99%, 95%)`,
diff --git a/src/alf/util/colorGeneration.ts b/src/alf/util/colorGeneration.ts
new file mode 100644
index 0000000000..929a01d3a7
--- /dev/null
+++ b/src/alf/util/colorGeneration.ts
@@ -0,0 +1,17 @@
+export const BLUE_HUE = 211
+export const RED_HUE = 346
+export const GREEN_HUE = 152
+
+/**
+ * Smooth progression of lightness "stops" for generating HSL colors.
+ */
+export const COLOR_STOPS = [
+ 0, 0.05, 0.1, 0.15, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.85, 0.9, 0.95, 1,
+]
+
+export function generateScale(start: number, end: number) {
+ const range = end - start
+ return COLOR_STOPS.map(stop => {
+ return start + range * stop
+ })
+}
diff --git a/src/alf/util/platform.ts b/src/alf/util/platform.ts
index 544f5480b6..294e08a8b0 100644
--- a/src/alf/util/platform.ts
+++ b/src/alf/util/platform.ts
@@ -1,25 +1,25 @@
-import {Platform} from 'react-native'
+import {isAndroid, isIOS, isNative, isWeb} from 'platform/detection'
export function web(value: any) {
- return Platform.select({
- web: value,
- })
+ if (isWeb) {
+ return value
+ }
}
export function ios(value: any) {
- return Platform.select({
- ios: value,
- })
+ if (isIOS) {
+ return value
+ }
}
export function android(value: any) {
- return Platform.select({
- android: value,
- })
+ if (isAndroid) {
+ return value
+ }
}
export function native(value: any) {
- return Platform.select({
- native: value,
- })
+ if (isNative) {
+ return value
+ }
}
diff --git a/src/alf/util/useColorModeTheme.ts b/src/alf/util/useColorModeTheme.ts
index 48cf904fe1..4f8921bf9b 100644
--- a/src/alf/util/useColorModeTheme.ts
+++ b/src/alf/util/useColorModeTheme.ts
@@ -13,7 +13,7 @@ export function useColorModeTheme(): ThemeName {
React.useLayoutEffect(() => {
const theme = getThemeName(colorScheme, colorMode, darkTheme)
updateDocument(theme)
- updateSystemBackground(theme)
+ SystemUI.setBackgroundColorAsync(getBackgroundColor(theme))
}, [colorMode, colorScheme, darkTheme])
return React.useMemo(
@@ -42,23 +42,24 @@ function updateDocument(theme: ThemeName) {
if (isWeb && typeof window !== 'undefined') {
// @ts-ignore web only
const html = window.document.documentElement
+ // @ts-ignore web only
+ const meta = window.document.querySelector('meta[name="theme-color"]')
+
// remove any other color mode classes
html.className = html.className.replace(/(theme)--\w+/g, '')
-
html.classList.add(`theme--${theme}`)
+ // set color to 'theme-color' meta tag
+ meta?.setAttribute('content', getBackgroundColor(theme))
}
}
-function updateSystemBackground(theme: ThemeName) {
+function getBackgroundColor(theme: ThemeName): string {
switch (theme) {
case 'light':
- SystemUI.setBackgroundColorAsync(light.atoms.bg.backgroundColor)
- break
+ return light.atoms.bg.backgroundColor
case 'dark':
- SystemUI.setBackgroundColorAsync(dark.atoms.bg.backgroundColor)
- break
+ return dark.atoms.bg.backgroundColor
case 'dim':
- SystemUI.setBackgroundColorAsync(dim.atoms.bg.backgroundColor)
- break
+ return dim.atoms.bg.backgroundColor
}
}
diff --git a/src/components/Button.tsx b/src/components/Button.tsx
index 68cee43745..5361be963a 100644
--- a/src/components/Button.tsx
+++ b/src/components/Button.tsx
@@ -27,7 +27,7 @@ export type ButtonColor =
| 'gradient_sunset'
| 'gradient_nordic'
| 'gradient_bonfire'
-export type ButtonSize = 'small' | 'large'
+export type ButtonSize = 'tiny' | 'small' | 'large'
export type ButtonShape = 'round' | 'square' | 'default'
export type VariantProps = {
/**
@@ -48,25 +48,32 @@ export type VariantProps = {
shape?: ButtonShape
}
-export type ButtonProps = React.PropsWithChildren<
- Pick &
- AccessibilityProps &
- VariantProps & {
- testID?: string
- label: string
- style?: StyleProp
- }
->
+export type ButtonState = {
+ hovered: boolean
+ focused: boolean
+ pressed: boolean
+ disabled: boolean
+}
+
+export type ButtonContext = VariantProps & ButtonState
+
+export type ButtonProps = Pick<
+ PressableProps,
+ 'disabled' | 'onPress' | 'testID'
+> &
+ AccessibilityProps &
+ VariantProps & {
+ testID?: string
+ label: string
+ style?: StyleProp
+ children:
+ | React.ReactNode
+ | string
+ | ((context: ButtonContext) => React.ReactNode | string)
+ }
export type ButtonTextProps = TextProps & VariantProps & {disabled?: boolean}
-const Context = React.createContext<
- VariantProps & {
- hovered: boolean
- focused: boolean
- pressed: boolean
- disabled: boolean
- }
->({
+const Context = React.createContext({
hovered: false,
focused: false,
pressed: false,
@@ -158,7 +165,7 @@ export function Button({
if (!disabled) {
baseStyles.push(a.border, {
- borderColor: tokens.color.blue_500,
+ borderColor: t.palette.primary_500,
})
hoverStyles.push(a.border, {
backgroundColor: light
@@ -167,7 +174,7 @@ export function Button({
})
} else {
baseStyles.push(a.border, {
- borderColor: light ? tokens.color.blue_200 : tokens.color.blue_900,
+ borderColor: light ? t.palette.primary_200 : t.palette.primary_900,
})
}
} else if (variant === 'ghost') {
@@ -184,20 +191,14 @@ export function Button({
if (variant === 'solid') {
if (!disabled) {
baseStyles.push({
- backgroundColor: light
- ? tokens.color.gray_50
- : tokens.color.gray_900,
+ backgroundColor: t.palette.contrast_50,
})
hoverStyles.push({
- backgroundColor: light
- ? tokens.color.gray_100
- : tokens.color.gray_950,
+ backgroundColor: t.palette.contrast_100,
})
} else {
baseStyles.push({
- backgroundColor: light
- ? tokens.color.gray_200
- : tokens.color.gray_950,
+ backgroundColor: t.palette.contrast_200,
})
}
} else if (variant === 'outline') {
@@ -207,21 +208,19 @@ export function Button({
if (!disabled) {
baseStyles.push(a.border, {
- borderColor: light ? tokens.color.gray_300 : tokens.color.gray_700,
+ borderColor: t.palette.contrast_300,
})
- hoverStyles.push(a.border, t.atoms.bg_contrast_50)
+ hoverStyles.push(t.atoms.bg_contrast_50)
} else {
baseStyles.push(a.border, {
- borderColor: light ? tokens.color.gray_200 : tokens.color.gray_800,
+ borderColor: t.palette.contrast_200,
})
}
} else if (variant === 'ghost') {
if (!disabled) {
baseStyles.push(t.atoms.bg)
hoverStyles.push({
- backgroundColor: light
- ? tokens.color.gray_100
- : tokens.color.gray_900,
+ backgroundColor: t.palette.contrast_100,
})
}
}
@@ -229,14 +228,14 @@ export function Button({
if (variant === 'solid') {
if (!disabled) {
baseStyles.push({
- backgroundColor: t.palette.negative_400,
+ backgroundColor: t.palette.negative_500,
})
hoverStyles.push({
- backgroundColor: t.palette.negative_500,
+ backgroundColor: t.palette.negative_600,
})
} else {
baseStyles.push({
- backgroundColor: t.palette.negative_600,
+ backgroundColor: t.palette.negative_700,
})
}
} else if (variant === 'outline') {
@@ -246,7 +245,7 @@ export function Button({
if (!disabled) {
baseStyles.push(a.border, {
- borderColor: t.palette.negative_400,
+ borderColor: t.palette.negative_500,
})
hoverStyles.push(a.border, {
backgroundColor: light
@@ -266,7 +265,7 @@ export function Button({
hoverStyles.push({
backgroundColor: light
? t.palette.negative_100
- : t.palette.negative_950,
+ : t.palette.negative_975,
})
}
}
@@ -277,6 +276,8 @@ export function Button({
baseStyles.push({paddingVertical: 15}, a.px_2xl, a.rounded_sm, a.gap_md)
} else if (size === 'small') {
baseStyles.push({paddingVertical: 9}, a.px_lg, a.rounded_sm, a.gap_sm)
+ } else if (size === 'tiny') {
+ baseStyles.push({paddingVertical: 4}, a.px_sm, a.rounded_xs, a.gap_xs)
}
} else if (shape === 'round' || shape === 'square') {
if (size === 'large') {
@@ -287,12 +288,18 @@ export function Button({
}
} else if (size === 'small') {
baseStyles.push({height: 40, width: 40})
+ } else if (size === 'tiny') {
+ baseStyles.push({height: 20, width: 20})
}
if (shape === 'round') {
baseStyles.push(a.rounded_full)
} else if (shape === 'square') {
- baseStyles.push(a.rounded_sm)
+ if (size === 'tiny') {
+ baseStyles.push(a.rounded_xs)
+ } else {
+ baseStyles.push(a.rounded_sm)
+ }
}
}
@@ -338,7 +345,7 @@ export function Button({
}
}, [variant, color])
- const context = React.useMemo(
+ const context = React.useMemo(
() => ({
...state,
variant,
@@ -349,6 +356,8 @@ export function Button({
[state, variant, color, size, disabled],
)
+ const flattenedBaseStyles = flatten(baseStyles)
+
return (
{variant === 'gradient' && (
-
+
+
+
)}
{typeof children === 'string' ? (
{children}
+ ) : typeof children === 'function' ? (
+ children(context)
) : (
children
)}
@@ -435,31 +453,31 @@ export function useSharedButtonTextStyles() {
if (variant === 'solid' || variant === 'gradient') {
if (!disabled) {
baseStyles.push({
- color: light ? tokens.color.gray_700 : tokens.color.gray_100,
+ color: t.palette.contrast_700,
})
} else {
baseStyles.push({
- color: light ? tokens.color.gray_400 : tokens.color.gray_700,
+ color: t.palette.contrast_400,
})
}
} else if (variant === 'outline') {
if (!disabled) {
baseStyles.push({
- color: light ? tokens.color.gray_600 : tokens.color.gray_300,
+ color: t.palette.contrast_600,
})
} else {
baseStyles.push({
- color: light ? tokens.color.gray_400 : tokens.color.gray_700,
+ color: t.palette.contrast_300,
})
}
} else if (variant === 'ghost') {
if (!disabled) {
baseStyles.push({
- color: light ? tokens.color.gray_600 : tokens.color.gray_300,
+ color: t.palette.contrast_600,
})
} else {
baseStyles.push({
- color: light ? tokens.color.gray_400 : tokens.color.gray_600,
+ color: t.palette.contrast_300,
})
}
}
@@ -493,6 +511,8 @@ export function useSharedButtonTextStyles() {
if (size === 'large') {
baseStyles.push(a.text_md, android({paddingBottom: 1}))
+ } else if (size === 'tiny') {
+ baseStyles.push(a.text_xs, android({paddingBottom: 1}))
} else {
baseStyles.push(a.text_sm, android({paddingBottom: 1}))
}
@@ -514,9 +534,11 @@ export function ButtonText({children, style, ...rest}: ButtonTextProps) {
export function ButtonIcon({
icon: Comp,
position,
+ size: iconSize,
}: {
icon: React.ComponentType
position?: 'left' | 'right'
+ size?: SVGIconProps['size']
}) {
const {size, disabled} = useButtonContext()
const textStyles = useSharedButtonTextStyles()
@@ -532,7 +554,9 @@ export function ButtonIcon({
},
]}>
diff --git a/src/components/Dialog/context.ts b/src/components/Dialog/context.ts
index b28b9f5a25..9b571e8e9c 100644
--- a/src/components/Dialog/context.ts
+++ b/src/components/Dialog/context.ts
@@ -1,7 +1,11 @@
import React from 'react'
import {useDialogStateContext} from '#/state/dialogs'
-import {DialogContextProps, DialogControlProps} from '#/components/Dialog/types'
+import {
+ DialogContextProps,
+ DialogControlRefProps,
+ DialogOuterProps,
+} from '#/components/Dialog/types'
export const Context = React.createContext({
close: () => {},
@@ -11,13 +15,14 @@ export function useDialogContext() {
return React.useContext(Context)
}
-export function useDialogControl() {
+export function useDialogControl(): DialogOuterProps['control'] {
const id = React.useId()
- const control = React.useRef({
+ const control = React.useRef({
open: () => {},
close: () => {},
})
- const {activeDialogs} = useDialogStateContext()
+ const {activeDialogs, openDialogs} = useDialogStateContext()
+ const isOpen = openDialogs.includes(id)
React.useEffect(() => {
activeDialogs.current.set(id, control)
@@ -27,9 +32,18 @@ export function useDialogControl() {
}
}, [id, activeDialogs])
- return {
- ref: control,
- open: () => control.current.open(),
- close: () => control.current.close(),
- }
+ return React.useMemo(
+ () => ({
+ id,
+ ref: control,
+ isOpen,
+ open: () => {
+ control.current.open()
+ },
+ close: cb => {
+ control.current.close(cb)
+ },
+ }),
+ [id, control, isOpen],
+ )
}
diff --git a/src/components/Dialog/index.tsx b/src/components/Dialog/index.tsx
index 9132e68de5..f0e7b7e82b 100644
--- a/src/components/Dialog/index.tsx
+++ b/src/components/Dialog/index.tsx
@@ -1,16 +1,21 @@
import React, {useImperativeHandle} from 'react'
-import {View, Dimensions} from 'react-native'
+import {View, Dimensions, Keyboard, Pressable} from 'react-native'
import BottomSheet, {
- BottomSheetBackdrop,
+ BottomSheetBackdropProps,
BottomSheetScrollView,
BottomSheetTextInput,
BottomSheetView,
+ useBottomSheet,
+ WINDOW_HEIGHT,
} from '@gorhom/bottom-sheet'
import {useSafeAreaInsets} from 'react-native-safe-area-context'
+import Animated, {useAnimatedStyle} from 'react-native-reanimated'
-import {useTheme, atoms as a} from '#/alf'
+import {useTheme, atoms as a, flatten} from '#/alf'
import {Portal} from '#/components/Portal'
import {createInput} from '#/components/forms/TextField'
+import {logger} from '#/logger'
+import {useDialogStateControlContext} from '#/state/dialogs'
import {
DialogOuterProps,
@@ -24,6 +29,47 @@ export * from '#/components/Dialog/types'
// @ts-ignore
export const Input = createInput(BottomSheetTextInput)
+function Backdrop(props: BottomSheetBackdropProps) {
+ const t = useTheme()
+ const bottomSheet = useBottomSheet()
+
+ const animatedStyle = useAnimatedStyle(() => {
+ const opacity =
+ (Math.abs(WINDOW_HEIGHT - props.animatedPosition.value) - 50) / 1000
+
+ return {
+ opacity: Math.min(Math.max(opacity, 0), 0.55),
+ }
+ })
+
+ const onPress = React.useCallback(() => {
+ bottomSheet.close()
+ }, [bottomSheet])
+
+ return (
+
+
+
+ )
+}
+
export function Outer({
children,
control,
@@ -35,12 +81,32 @@ export function Outer({
const sheetOptions = nativeOptions?.sheet || {}
const hasSnapPoints = !!sheetOptions.snapPoints
const insets = useSafeAreaInsets()
+ const closeCallback = React.useRef<() => void>()
+ const {setDialogIsOpen} = useDialogStateControlContext()
- const open = React.useCallback((i = 0) => {
- sheet.current?.snapToIndex(i)
- }, [])
+ /*
+ * Used to manage open/closed, but index is otherwise handled internally by `BottomSheet`
+ */
+ const [openIndex, setOpenIndex] = React.useState(-1)
- const close = React.useCallback(() => {
+ /*
+ * `openIndex` is the index of the snap point to open the bottom sheet to. If >0, the bottom sheet is open.
+ */
+ const isOpen = openIndex > -1
+
+ const open = React.useCallback(
+ ({index} = {}) => {
+ setDialogIsOpen(control.id, true)
+ // can be set to any index of `snapPoints`, but `0` is the first i.e. "open"
+ setOpenIndex(index || 0)
+ },
+ [setOpenIndex, setDialogIsOpen, control.id],
+ )
+
+ const close = React.useCallback(cb => {
+ if (cb && typeof cb === 'function') {
+ closeCallback.current = cb
+ }
sheet.current?.close()
}, [])
@@ -53,81 +119,91 @@ export function Outer({
[open, close],
)
- const onChange = React.useCallback(
- (index: number) => {
- if (index === -1) {
- onClose?.()
- }
- },
- [onClose],
- )
+ const onCloseInner = React.useCallback(() => {
+ Keyboard.dismiss()
+ try {
+ closeCallback.current?.()
+ } catch (e: any) {
+ logger.error(`Dialog closeCallback failed`, {
+ message: e.message,
+ })
+ } finally {
+ closeCallback.current = undefined
+ }
+ setDialogIsOpen(control.id, false)
+ onClose?.()
+ setOpenIndex(-1)
+ }, [control.id, onClose, setDialogIsOpen])
const context = React.useMemo(() => ({close}), [close])
return (
-
- (
-
- )}
- handleIndicatorStyle={{backgroundColor: t.palette.primary_500}}
- handleStyle={{display: 'none'}}
- onChange={onChange}>
-
-
- {children}
-
-
-
+ isOpen && (
+
+
+
+
+
+ {children}
+
+
+
+
+ )
)
}
-// TODO a11y props here, or is that handled by the sheet?
-export function Inner(props: DialogInnerProps) {
+export function Inner({children, style}: DialogInnerProps) {
const insets = useSafeAreaInsets()
return (
- {props.children}
+ {children}
)
}
-export function ScrollableInner(props: DialogInnerProps) {
+export function ScrollableInner({children, style}: DialogInnerProps) {
const insets = useSafeAreaInsets()
return (
- {props.children}
+ {children}
)
@@ -150,8 +228,15 @@ export function ScrollableInner(props: DialogInnerProps) {
export function Handle() {
const t = useTheme()
+
+ const onTouchStart = React.useCallback(() => {
+ Keyboard.dismiss()
+ }, [])
+
return (
-
+
e.stopPropagation()
export function Outer({
+ children,
control,
onClose,
- children,
}: React.PropsWithChildren) {
const {_} = useLingui()
const t = useTheme()
const {gtMobile} = useBreakpoints()
const [isOpen, setIsOpen] = React.useState(false)
const [isVisible, setIsVisible] = React.useState(true)
+ const {setDialogIsOpen} = useDialogStateControlContext()
const open = React.useCallback(() => {
setIsOpen(true)
- }, [setIsOpen])
+ setDialogIsOpen(control.id, true)
+ }, [setIsOpen, setDialogIsOpen, control.id])
const close = React.useCallback(async () => {
setIsVisible(false)
await new Promise(resolve => setTimeout(resolve, 150))
setIsOpen(false)
setIsVisible(true)
+ setDialogIsOpen(control.id, false)
onClose?.()
- }, [onClose, setIsOpen])
+ }, [onClose, setIsOpen, setDialogIsOpen, control.id])
useImperativeHandle(
control.ref,
@@ -147,7 +153,7 @@ export function Inner({
a.rounded_md,
a.w_full,
a.border,
- gtMobile ? a.p_xl : a.p_lg,
+ gtMobile ? a.p_2xl : a.p_xl,
t.atoms.bg,
{
maxWidth: 600,
@@ -156,7 +162,7 @@ export function Inner({
shadowOpacity: t.name === 'light' ? 0.1 : 0.4,
shadowRadius: 30,
},
- ...(Array.isArray(style) ? style : [style || {}]),
+ flatten(style),
]}>
{children}
@@ -170,25 +176,28 @@ export function Handle() {
return null
}
-/**
- * TODO(eric) unused rn
- */
-// export function Close() {
-// const {_} = useLingui()
-// const t = useTheme()
-// const {close} = useDialogContext()
-// return (
-//
-//
-//
-// )
-// }
+export function Close() {
+ const {_} = useLingui()
+ const {close} = React.useContext(Context)
+ return (
+
+
+
+ )
+}
diff --git a/src/components/Dialog/types.ts b/src/components/Dialog/types.ts
index d36784183c..fa9398fe05 100644
--- a/src/components/Dialog/types.ts
+++ b/src/components/Dialog/types.ts
@@ -1,24 +1,46 @@
import React from 'react'
-import type {ViewStyle, AccessibilityProps} from 'react-native'
+import type {AccessibilityProps} from 'react-native'
import {BottomSheetProps} from '@gorhom/bottom-sheet'
+import {ViewStyleProp} from '#/alf'
+
type A11yProps = Required
-export type DialogContextProps = {
- close: () => void
+/**
+ * Mutated by useImperativeHandle to provide a public API for controlling the
+ * dialog. The methods here will actually become the handlers defined within
+ * the `Dialog.Outer` component.
+ */
+export type DialogControlRefProps = {
+ open: (options?: DialogControlOpenOptions) => void
+ close: (callback?: () => void) => void
}
-export type DialogControlProps = {
- open: (index?: number) => void
- close: () => void
+/**
+ * The return type of the useDialogControl hook.
+ */
+export type DialogControlProps = DialogControlRefProps & {
+ id: string
+ ref: React.RefObject
+ isOpen: boolean
+}
+
+export type DialogContextProps = {
+ close: DialogControlProps['close']
+}
+
+export type DialogControlOpenOptions = {
+ /**
+ * NATIVE ONLY
+ *
+ * Optional index of the snap point to open the bottom sheet to. Defaults to
+ * 0, which is the first snap point (i.e. "open").
+ */
+ index?: number
}
export type DialogOuterProps = {
- control: {
- ref: React.RefObject
- open: (index?: number) => void
- close: () => void
- }
+ control: DialogControlProps
onClose?: () => void
nativeOptions?: {
sheet?: Omit
@@ -26,10 +48,7 @@ export type DialogOuterProps = {
webOptions?: {}
}
-type DialogInnerPropsBase = React.PropsWithChildren<{
- style?: ViewStyle
-}> &
- T
+type DialogInnerPropsBase = React.PropsWithChildren & T
export type DialogInnerProps =
| DialogInnerPropsBase<{
label?: undefined
diff --git a/src/components/Link.tsx b/src/components/Link.tsx
index 763f07ca93..8c963909be 100644
--- a/src/components/Link.tsx
+++ b/src/components/Link.tsx
@@ -1,9 +1,5 @@
import React from 'react'
-import {
- GestureResponderEvent,
- Linking,
- TouchableWithoutFeedback,
-} from 'react-native'
+import {GestureResponderEvent} from 'react-native'
import {
useLinkProps,
useNavigation,
@@ -13,7 +9,7 @@ import {sanitizeUrl} from '@braintree/sanitize-url'
import {useInteractionState} from '#/components/hooks/useInteractionState'
import {isWeb} from '#/platform/detection'
-import {useTheme, web, flatten, TextStyleProp} from '#/alf'
+import {useTheme, web, flatten, TextStyleProp, atoms as a} from '#/alf'
import {Button, ButtonProps} from '#/components/Button'
import {AllNavigatorParams, NavigationProp} from '#/lib/routes/types'
import {
@@ -23,7 +19,8 @@ import {
} from '#/lib/strings/url-helpers'
import {useModalControls} from '#/state/modals'
import {router} from '#/routes'
-import {Text} from '#/components/Typography'
+import {Text, TextProps} from '#/components/Typography'
+import {useOpenLink} from 'state/preferences/in-app-browser'
/**
* Only available within a `Link`, since that inherits from `Button`.
@@ -35,6 +32,13 @@ type BaseLinkProps = Pick<
Parameters>[0],
'to'
> & {
+ testID?: string
+
+ /**
+ * Label for a11y. Defaults to the href.
+ */
+ label?: string
+
/**
* The React Navigation `StackAction` to perform when the link is pressed.
*/
@@ -45,14 +49,28 @@ type BaseLinkProps = Pick<
*
* Note: atm this only works for `InlineLink`s with a string child.
*/
- warnOnMismatchingTextChild?: boolean
+ disableMismatchWarning?: boolean
+
+ /**
+ * Callback for when the link is pressed. Prevent default and return `false`
+ * to exit early and prevent navigation.
+ *
+ * DO NOT use this for navigation, that's what the `to` prop is for.
+ */
+ onPress?: (e: GestureResponderEvent) => void | false
+
+ /**
+ * Web-only attribute. Sets `download` attr on web.
+ */
+ download?: string
}
export function useLink({
to,
displayText,
action = 'push',
- warnOnMismatchingTextChild,
+ disableMismatchWarning,
+ onPress: outerOnPress,
}: BaseLinkProps & {
displayText: string
}) {
@@ -63,11 +81,16 @@ export function useLink({
})
const isExternal = isExternalUrl(href)
const {openModal, closeModal} = useModalControls()
+ const openLink = useOpenLink()
const onPress = React.useCallback(
(e: GestureResponderEvent) => {
+ const exitEarlyIfFalse = outerOnPress?.(e)
+
+ if (exitEarlyIfFalse === false) return
+
const requiresWarning = Boolean(
- warnOnMismatchingTextChild &&
+ !disableMismatchWarning &&
displayText &&
isExternal &&
linkRequiresWarning(href, displayText),
@@ -85,7 +108,7 @@ export function useLink({
e.preventDefault()
if (isExternal) {
- Linking.openURL(href)
+ openLink(href)
} else {
/**
* A `GestureResponderEvent`, but cast to `any` to avoid using a bunch
@@ -103,7 +126,7 @@ export function useLink({
href.startsWith('http') ||
href.startsWith('mailto')
) {
- Linking.openURL(href)
+ openLink(href)
} else {
closeModal() // close any active modals
@@ -124,14 +147,16 @@ export function useLink({
}
},
[
- href,
- isExternal,
- warnOnMismatchingTextChild,
- navigation,
- action,
+ outerOnPress,
+ disableMismatchWarning,
displayText,
- closeModal,
+ isExternal,
+ href,
openModal,
+ openLink,
+ closeModal,
+ action,
+ navigation,
],
)
@@ -142,17 +167,8 @@ export function useLink({
}
}
-export type LinkProps = Omit &
- Omit & {
- /**
- * Label for a11y. Defaults to the href.
- */
- label?: string
- /**
- * Web-only attribute. Sets `download` attr on web.
- */
- download?: string
- }
+export type LinkProps = Omit &
+ Omit
/**
* A interactive element that renders as a `` tag on the web. On mobile it
@@ -166,6 +182,7 @@ export function Link({
children,
to,
action = 'push',
+ onPress: outerOnPress,
download,
...rest
}: LinkProps) {
@@ -173,24 +190,26 @@ export function Link({
to,
displayText: typeof children === 'string' ? children : '',
action,
+ onPress: outerOnPress,
})
return (
)
diff --git a/src/components/RichText.tsx b/src/components/RichText.tsx
index 068ee99e07..1a14415cf8 100644
--- a/src/components/RichText.tsx
+++ b/src/components/RichText.tsx
@@ -1,11 +1,15 @@
import React from 'react'
import {RichText as RichTextAPI, AppBskyRichtextFacet} from '@atproto/api'
+import {useLingui} from '@lingui/react'
+import {msg} from '@lingui/macro'
-import {atoms as a, TextStyleProp} from '#/alf'
+import {atoms as a, TextStyleProp, flatten, useTheme, web, native} from '#/alf'
import {InlineLink} from '#/components/Link'
-import {Text} from '#/components/Typography'
+import {Text, TextProps} from '#/components/Typography'
import {toShortUrl} from 'lib/strings/url-helpers'
-import {getAgent} from '#/state/session'
+import {TagMenu, useTagMenuControl} from '#/components/TagMenu'
+import {isNative} from '#/platform/detection'
+import {useInteractionState} from '#/components/hooks/useInteractionState'
const WORD_WRAP = {wordWrap: 1}
@@ -15,34 +19,24 @@ export function RichText({
style,
numberOfLines,
disableLinks,
- resolveFacets = false,
-}: TextStyleProp & {
- value: RichTextAPI | string
- testID?: string
- numberOfLines?: number
- disableLinks?: boolean
- resolveFacets?: boolean
-}) {
- const detected = React.useRef(false)
- const [richText, setRichText] = React.useState(() =>
- value instanceof RichTextAPI ? value : new RichTextAPI({text: value}),
+ selectable,
+ enableTags = false,
+ authorHandle,
+}: TextStyleProp &
+ Pick & {
+ value: RichTextAPI | string
+ testID?: string
+ numberOfLines?: number
+ disableLinks?: boolean
+ enableTags?: boolean
+ authorHandle?: string
+ }) {
+ const richText = React.useMemo(
+ () =>
+ value instanceof RichTextAPI ? value : new RichTextAPI({text: value}),
+ [value],
)
- const styles = [a.leading_normal, style]
-
- React.useEffect(() => {
- if (!resolveFacets) return
-
- async function detectFacets() {
- const rt = new RichTextAPI({text: richText.text})
- await rt.detectFacets(getAgent())
- setRichText(rt)
- }
-
- if (!detected.current) {
- detected.current = true
- detectFacets()
- }
- }, [richText, setRichText, resolveFacets])
+ const styles = [a.leading_snug, flatten(style)]
const {text, facets} = richText
@@ -50,6 +44,7 @@ export function RichText({
if (text.length <= 5 && /^\p{Extended_Pictographic}+$/u.test(text)) {
return (
+ dataSet={WORD_WRAP}>
{toShortUrl(segment.text)}
,
)
}
+ } else if (
+ !disableLinks &&
+ enableTags &&
+ tag &&
+ AppBskyRichtextFacet.validateTag(tag).success
+ ) {
+ els.push(
+ ,
+ )
} else {
els.push(segment.text)
}
@@ -120,6 +134,7 @@ export function RichText({
return (
)
}
+
+function RichTextTag({
+ text,
+ tag,
+ style,
+ selectable,
+ authorHandle,
+}: {
+ text: string
+ tag: string
+ selectable?: boolean
+ authorHandle?: string
+} & TextStyleProp) {
+ const t = useTheme()
+ const {_} = useLingui()
+ const control = useTagMenuControl()
+ const {
+ state: hovered,
+ onIn: onHoverIn,
+ onOut: onHoverOut,
+ } = useInteractionState()
+ const {state: focused, onIn: onFocus, onOut: onBlur} = useInteractionState()
+ const {
+ state: pressed,
+ onIn: onPressIn,
+ onOut: onPressOut,
+ } = useInteractionState()
+
+ const open = React.useCallback(() => {
+ control.open()
+ }, [control])
+
+ /*
+ * N.B. On web, this is wrapped in another pressable comopnent with a11y
+ * labels, etc. That's why only some of these props are applied here.
+ */
+
+ return (
+
+
+
+ {text}
+
+
+
+ )
+}
diff --git a/src/components/TagMenu/index.tsx b/src/components/TagMenu/index.tsx
new file mode 100644
index 0000000000..849a3f42d1
--- /dev/null
+++ b/src/components/TagMenu/index.tsx
@@ -0,0 +1,275 @@
+import React from 'react'
+import {View} from 'react-native'
+import {useNavigation} from '@react-navigation/native'
+import {useLingui} from '@lingui/react'
+import {msg, Trans} from '@lingui/macro'
+
+import {atoms as a, native, useTheme} from '#/alf'
+import * as Dialog from '#/components/Dialog'
+import {Text} from '#/components/Typography'
+import {Button, ButtonText} from '#/components/Button'
+import {MagnifyingGlass2_Stroke2_Corner0_Rounded as Search} from '#/components/icons/MagnifyingGlass2'
+import {Person_Stroke2_Corner0_Rounded as Person} from '#/components/icons/Person'
+import {Mute_Stroke2_Corner0_Rounded as Mute} from '#/components/icons/Mute'
+import {Divider} from '#/components/Divider'
+import {Link} from '#/components/Link'
+import {makeSearchLink} from '#/lib/routes/links'
+import {NavigationProp} from '#/lib/routes/types'
+import {
+ usePreferencesQuery,
+ useUpsertMutedWordsMutation,
+ useRemoveMutedWordMutation,
+} from '#/state/queries/preferences'
+import {Loader} from '#/components/Loader'
+import {isInvalidHandle} from '#/lib/strings/handles'
+
+export function useTagMenuControl() {
+ return Dialog.useDialogControl()
+}
+
+export function TagMenu({
+ children,
+ control,
+ tag,
+ authorHandle,
+}: React.PropsWithChildren<{
+ control: Dialog.DialogOuterProps['control']
+ /**
+ * This should be the sanitized tag value from the facet itself, not the
+ * "display" value with a leading `#`.
+ */
+ tag: string
+ authorHandle?: string
+}>) {
+ const {_} = useLingui()
+ const t = useTheme()
+ const navigation = useNavigation()
+ const {isLoading: isPreferencesLoading, data: preferences} =
+ usePreferencesQuery()
+ const {
+ mutateAsync: upsertMutedWord,
+ variables: optimisticUpsert,
+ reset: resetUpsert,
+ } = useUpsertMutedWordsMutation()
+ const {
+ mutateAsync: removeMutedWord,
+ variables: optimisticRemove,
+ reset: resetRemove,
+ } = useRemoveMutedWordMutation()
+ const displayTag = '#' + tag
+
+ const isMuted = Boolean(
+ (preferences?.mutedWords?.find(
+ m => m.value === tag && m.targets.includes('tag'),
+ ) ??
+ optimisticUpsert?.find(
+ m => m.value === tag && m.targets.includes('tag'),
+ )) &&
+ !(optimisticRemove?.value === tag),
+ )
+
+ return (
+ <>
+ {children}
+
+
+
+
+
+ {isPreferencesLoading ? (
+
+
+
+ ) : (
+ <>
+
+ {
+ e.preventDefault()
+
+ control.close(() => {
+ navigation.push('Hashtag', {
+ tag: encodeURIComponent(tag),
+ })
+ })
+
+ return false
+ }}>
+
+
+
+
+ See{' '}
+
+ {displayTag}
+ {' '}
+ posts
+
+
+
+
+
+ {authorHandle && !isInvalidHandle(authorHandle) && (
+ <>
+
+
+ {
+ e.preventDefault()
+
+ control.close(() => {
+ navigation.push('Hashtag', {
+ tag: encodeURIComponent(tag),
+ author: authorHandle,
+ })
+ })
+
+ return false
+ }}>
+
+
+
+
+ See{' '}
+
+ {displayTag}
+ {' '}
+ posts by this user
+
+
+
+
+ >
+ )}
+
+ {preferences ? (
+ <>
+
+
+ {
+ control.close(() => {
+ if (isMuted) {
+ resetUpsert()
+ removeMutedWord({
+ value: tag,
+ targets: ['tag'],
+ })
+ } else {
+ resetRemove()
+ upsertMutedWord([{value: tag, targets: ['tag']}])
+ }
+ })
+ }}>
+
+
+
+ {isMuted ? _(msg`Unmute`) : _(msg`Mute`)}{' '}
+
+ {displayTag}
+ {' '}
+ posts
+
+
+
+ >
+ ) : null}
+
+
+ control.close()}>
+ Cancel
+
+ >
+ )}
+
+
+ >
+ )
+}
diff --git a/src/components/TagMenu/index.web.tsx b/src/components/TagMenu/index.web.tsx
new file mode 100644
index 0000000000..8245bd0191
--- /dev/null
+++ b/src/components/TagMenu/index.web.tsx
@@ -0,0 +1,149 @@
+import React from 'react'
+import {msg} from '@lingui/macro'
+import {useLingui} from '@lingui/react'
+import {useNavigation} from '@react-navigation/native'
+
+import {isInvalidHandle} from '#/lib/strings/handles'
+import {EventStopper} from '#/view/com/util/EventStopper'
+import {NativeDropdown} from '#/view/com/util/forms/NativeDropdown'
+import {NavigationProp} from '#/lib/routes/types'
+import {
+ usePreferencesQuery,
+ useUpsertMutedWordsMutation,
+ useRemoveMutedWordMutation,
+} from '#/state/queries/preferences'
+import {enforceLen} from '#/lib/strings/helpers'
+import {web} from '#/alf'
+import * as Dialog from '#/components/Dialog'
+
+export function useTagMenuControl(): Dialog.DialogControlProps {
+ return {
+ id: '',
+ // @ts-ignore
+ ref: null,
+ open: () => {
+ throw new Error(`TagMenu controls are only available on native platforms`)
+ },
+ close: () => {
+ throw new Error(`TagMenu controls are only available on native platforms`)
+ },
+ }
+}
+
+export function TagMenu({
+ children,
+ tag,
+ authorHandle,
+}: React.PropsWithChildren<{
+ /**
+ * This should be the sanitized tag value from the facet itself, not the
+ * "display" value with a leading `#`.
+ */
+ tag: string
+ authorHandle?: string
+}>) {
+ const {_} = useLingui()
+ const navigation = useNavigation()
+ const {data: preferences} = usePreferencesQuery()
+ const {mutateAsync: upsertMutedWord, variables: optimisticUpsert} =
+ useUpsertMutedWordsMutation()
+ const {mutateAsync: removeMutedWord, variables: optimisticRemove} =
+ useRemoveMutedWordMutation()
+ const isMuted = Boolean(
+ (preferences?.mutedWords?.find(
+ m => m.value === tag && m.targets.includes('tag'),
+ ) ??
+ optimisticUpsert?.find(
+ m => m.value === tag && m.targets.includes('tag'),
+ )) &&
+ !(optimisticRemove?.value === tag),
+ )
+ const truncatedTag = '#' + enforceLen(tag, 15, true, 'middle')
+
+ const dropdownItems = React.useMemo(() => {
+ return [
+ {
+ label: _(msg`See ${truncatedTag} posts`),
+ onPress() {
+ navigation.push('Hashtag', {
+ tag: encodeURIComponent(tag),
+ })
+ },
+ testID: 'tagMenuSearch',
+ icon: {
+ ios: {
+ name: 'magnifyingglass',
+ },
+ android: '',
+ web: 'magnifying-glass',
+ },
+ },
+ authorHandle &&
+ !isInvalidHandle(authorHandle) && {
+ label: _(msg`See ${truncatedTag} posts by user`),
+ onPress() {
+ navigation.push('Hashtag', {
+ tag: encodeURIComponent(tag),
+ author: authorHandle,
+ })
+ },
+ testID: 'tagMenuSeachByUser',
+ icon: {
+ ios: {
+ name: 'magnifyingglass',
+ },
+ android: '',
+ web: ['far', 'user'],
+ },
+ },
+ preferences && {
+ label: 'separator',
+ },
+ preferences && {
+ label: isMuted
+ ? _(msg`Unmute ${truncatedTag}`)
+ : _(msg`Mute ${truncatedTag}`),
+ onPress() {
+ if (isMuted) {
+ removeMutedWord({value: tag, targets: ['tag']})
+ } else {
+ upsertMutedWord([{value: tag, targets: ['tag']}])
+ }
+ },
+ testID: 'tagMenuMute',
+ icon: {
+ ios: {
+ name: 'speaker.slash',
+ },
+ android: 'ic_menu_sort_alphabetically',
+ web: isMuted ? 'eye' : ['far', 'eye-slash'],
+ },
+ },
+ ].filter(Boolean)
+ }, [
+ _,
+ authorHandle,
+ isMuted,
+ navigation,
+ preferences,
+ tag,
+ truncatedTag,
+ upsertMutedWord,
+ removeMutedWord,
+ ])
+
+ return (
+
+
+ {children}
+
+
+ )
+}
diff --git a/src/components/Typography.tsx b/src/components/Typography.tsx
index b34f51018e..c9ab7a8a12 100644
--- a/src/components/Typography.tsx
+++ b/src/components/Typography.tsx
@@ -1,7 +1,16 @@
import React from 'react'
-import {Text as RNText, TextStyle, TextProps} from 'react-native'
+import {Text as RNText, TextStyle, TextProps as RNTextProps} from 'react-native'
+import {UITextView} from 'react-native-ui-text-view'
import {useTheme, atoms, web, flatten} from '#/alf'
+import {isIOS} from '#/platform/detection'
+
+export type TextProps = RNTextProps & {
+ /**
+ * Lets the user select text, to use the native copy and paste functionality.
+ */
+ selectable?: boolean
+}
/**
* Util to calculate lineHeight from a text size atom and a leading atom
@@ -44,27 +53,24 @@ function normalizeTextStyles(styles: TextStyle[]) {
/**
* Our main text component. Use this most of the time.
*/
-export function Text({style, ...rest}: TextProps) {
+export function Text({style, selectable, ...rest}: TextProps) {
const t = useTheme()
const s = normalizeTextStyles([atoms.text_sm, t.atoms.text, flatten(style)])
- return
+ return selectable && isIOS ? (
+
+ ) : (
+
+ )
}
export function createHeadingElement({level}: {level: number}) {
return function HeadingElement({style, ...rest}: TextProps) {
- const t = useTheme()
const attr =
web({
role: 'heading',
'aria-level': level,
}) || {}
- return (
-
- )
+ return
}
}
@@ -78,21 +84,15 @@ export const H4 = createHeadingElement({level: 4})
export const H5 = createHeadingElement({level: 5})
export const H6 = createHeadingElement({level: 6})
export function P({style, ...rest}: TextProps) {
- const t = useTheme()
const attr =
web({
role: 'paragraph',
}) || {}
return (
-
)
}
diff --git a/src/components/dialogs/Context.tsx b/src/components/dialogs/Context.tsx
new file mode 100644
index 0000000000..d86c90a92e
--- /dev/null
+++ b/src/components/dialogs/Context.tsx
@@ -0,0 +1,29 @@
+import React from 'react'
+
+import * as Dialog from '#/components/Dialog'
+
+type Control = Dialog.DialogOuterProps['control']
+
+type ControlsContext = {
+ mutedWordsDialogControl: Control
+}
+
+const ControlsContext = React.createContext({
+ mutedWordsDialogControl: {} as Control,
+})
+
+export function useGlobalDialogsControlContext() {
+ return React.useContext(ControlsContext)
+}
+
+export function Provider({children}: React.PropsWithChildren<{}>) {
+ const mutedWordsDialogControl = Dialog.useDialogControl()
+ const ctx = React.useMemo(
+ () => ({mutedWordsDialogControl}),
+ [mutedWordsDialogControl],
+ )
+
+ return (
+ {children}
+ )
+}
diff --git a/src/components/dialogs/MutedWords.tsx b/src/components/dialogs/MutedWords.tsx
new file mode 100644
index 0000000000..658ba2aae0
--- /dev/null
+++ b/src/components/dialogs/MutedWords.tsx
@@ -0,0 +1,389 @@
+import React from 'react'
+import {Keyboard, View} from 'react-native'
+import {msg, Trans} from '@lingui/macro'
+import {useLingui} from '@lingui/react'
+import {AppBskyActorDefs, sanitizeMutedWordValue} from '@atproto/api'
+
+import {
+ usePreferencesQuery,
+ useUpsertMutedWordsMutation,
+ useRemoveMutedWordMutation,
+} from '#/state/queries/preferences'
+import {isNative} from '#/platform/detection'
+import {
+ atoms as a,
+ useTheme,
+ useBreakpoints,
+ ViewStyleProp,
+ web,
+ native,
+} from '#/alf'
+import {Text} from '#/components/Typography'
+import {Button, ButtonIcon, ButtonText} from '#/components/Button'
+import {PlusLarge_Stroke2_Corner0_Rounded as Plus} from '#/components/icons/Plus'
+import {TimesLarge_Stroke2_Corner0_Rounded as X} from '#/components/icons/Times'
+import {Hashtag_Stroke2_Corner0_Rounded as Hashtag} from '#/components/icons/Hashtag'
+import {PageText_Stroke2_Corner0_Rounded as PageText} from '#/components/icons/PageText'
+import {Divider} from '#/components/Divider'
+import {Loader} from '#/components/Loader'
+import {logger} from '#/logger'
+import * as Dialog from '#/components/Dialog'
+import * as Toggle from '#/components/forms/Toggle'
+import * as Prompt from '#/components/Prompt'
+
+import {useGlobalDialogsControlContext} from '#/components/dialogs/Context'
+
+export function MutedWordsDialog() {
+ const {mutedWordsDialogControl: control} = useGlobalDialogsControlContext()
+ return (
+
+
+
+
+ )
+}
+
+function MutedWordsInner({}: {control: Dialog.DialogOuterProps['control']}) {
+ const t = useTheme()
+ const {_} = useLingui()
+ const {gtMobile} = useBreakpoints()
+ const {
+ isLoading: isPreferencesLoading,
+ data: preferences,
+ error: preferencesError,
+ } = usePreferencesQuery()
+ const {isPending, mutateAsync: addMutedWord} = useUpsertMutedWordsMutation()
+ const [field, setField] = React.useState('')
+ const [options, setOptions] = React.useState(['content'])
+ const [error, setError] = React.useState('')
+
+ const submit = React.useCallback(async () => {
+ const sanitizedValue = sanitizeMutedWordValue(field)
+ const targets = ['tag', options.includes('content') && 'content'].filter(
+ Boolean,
+ ) as AppBskyActorDefs.MutedWord['targets']
+
+ if (!sanitizedValue || !targets.length) {
+ setField('')
+ setError(_(msg`Please enter a valid word, tag, or phrase to mute`))
+ return
+ }
+
+ try {
+ // send raw value and rely on SDK as sanitization source of truth
+ await addMutedWord([{value: field, targets}])
+ setField('')
+ } catch (e: any) {
+ logger.error(`Failed to save muted word`, {message: e.message})
+ setError(e.message)
+ }
+ }, [_, field, options, addMutedWord, setField])
+
+ return (
+
+
+
+ Add muted words and tags
+
+
+
+ Posts can be muted based on their text, their tags, or both.
+
+
+
+
+ {
+ if (error) {
+ setError('')
+ }
+ setField(value)
+ }}
+ onSubmitEditing={submit}
+ />
+
+
+
+
+
+
+
+
+ Mute in text & tags
+
+
+
+
+
+
+
+
+
+
+
+ Mute in tags only
+
+
+
+
+
+
+
+
+ Add
+
+
+
+
+
+
+ {error && (
+
+
+ {error}
+
+
+ )}
+
+
+
+ We recommend avoiding common words that appear in many posts,
+ since it can result in no posts being shown.
+
+
+
+
+
+
+
+
+ Your muted words
+
+
+ {isPreferencesLoading ? (
+
+ ) : preferencesError || !preferences ? (
+
+
+
+ We're sorry, but we weren't able to load your muted words at
+ this time. Please try again.
+
+
+
+ ) : preferences.mutedWords.length ? (
+ [...preferences.mutedWords]
+ .reverse()
+ .map((word, i) => (
+
+ ))
+ ) : (
+
+
+ You haven't muted any words or tags yet
+
+
+ )}
+
+
+ {isNative && }
+
+
+
+
+ )
+}
+
+function MutedWordRow({
+ style,
+ word,
+}: ViewStyleProp & {word: AppBskyActorDefs.MutedWord}) {
+ const t = useTheme()
+ const {_} = useLingui()
+ const {isPending, mutateAsync: removeMutedWord} = useRemoveMutedWordMutation()
+ const control = Prompt.usePromptControl()
+
+ const remove = React.useCallback(async () => {
+ control.close()
+ removeMutedWord(word)
+ }, [removeMutedWord, word, control])
+
+ return (
+ <>
+
+
+ Are you sure?
+
+
+
+ This will delete {word.value} from your muted words. You can always
+ add it back later.
+
+
+
+
+
+ Nevermind
+
+
+
+
+ Remove
+
+
+
+
+
+
+
+ {word.value}
+
+
+
+ {word.targets.map(target => (
+
+
+ {target === 'content' ? _(msg`text`) : _(msg`tag`)}
+
+
+ ))}
+
+ control.open()}
+ style={[a.ml_sm]}>
+
+
+
+
+ >
+ )
+}
+
+function TargetToggle({children}: React.PropsWithChildren<{}>) {
+ const t = useTheme()
+ const ctx = Toggle.useItemContext()
+ const {gtMobile} = useBreakpoints()
+ return (
+
+ {children}
+
+ )
+}
diff --git a/src/components/forms/DateField/index.android.tsx b/src/components/forms/DateField/index.android.tsx
index 83fa285f5f..451810a5ea 100644
--- a/src/components/forms/DateField/index.android.tsx
+++ b/src/components/forms/DateField/index.android.tsx
@@ -1,8 +1,5 @@
import React from 'react'
import {View, Pressable} from 'react-native'
-import DateTimePicker, {
- BaseProps as DateTimePickerProps,
-} from '@react-native-community/datetimepicker'
import {useTheme, atoms} from '#/alf'
import {Text} from '#/components/Typography'
@@ -15,6 +12,8 @@ import {
localizeDate,
toSimpleDateString,
} from '#/components/forms/DateField/utils'
+import DatePicker from 'react-native-date-picker'
+import {isAndroid} from 'platform/detection'
export * as utils from '#/components/forms/DateField/utils'
export const Label = TextField.Label
@@ -38,20 +37,20 @@ export function DateField({
const {chromeFocus, chromeError, chromeErrorHover} =
TextField.useSharedInputStyles()
- const onChangeInternal = React.useCallback<
- Required['onChange']
- >(
- (_event, date) => {
+ const onChangeInternal = React.useCallback(
+ (date: Date) => {
setOpen(false)
- if (date) {
- const formatted = toSimpleDateString(date)
- onChangeDate(formatted)
- }
+ const formatted = toSimpleDateString(date)
+ onChangeDate(formatted)
},
[onChangeDate, setOpen],
)
+ const onCancel = React.useCallback(() => {
+ setOpen(false)
+ }, [])
+
return (
{open && (
-
)}
diff --git a/src/components/forms/DateField/index.tsx b/src/components/forms/DateField/index.tsx
index c359a9d460..49e47a01e3 100644
--- a/src/components/forms/DateField/index.tsx
+++ b/src/components/forms/DateField/index.tsx
@@ -1,13 +1,11 @@
import React from 'react'
import {View} from 'react-native'
-import DateTimePicker, {
- DateTimePickerEvent,
-} from '@react-native-community/datetimepicker'
import {useTheme, atoms} from '#/alf'
import * as TextField from '#/components/forms/TextField'
import {toSimpleDateString} from '#/components/forms/DateField/utils'
import {DateFieldProps} from '#/components/forms/DateField/types'
+import DatePicker from 'react-native-date-picker'
export * as utils from '#/components/forms/DateField/utils'
export const Label = TextField.Label
@@ -28,7 +26,7 @@ export function DateField({
const t = useTheme()
const onChangeInternal = React.useCallback(
- (event: DateTimePickerEvent, date: Date | undefined) => {
+ (date: Date | undefined) => {
if (date) {
const formatted = toSimpleDateString(date)
onChangeDate(formatted)
@@ -39,17 +37,15 @@ export function DateField({
return (
-
)
diff --git a/src/components/forms/TextField.tsx b/src/components/forms/TextField.tsx
index ebf2e47506..b37f4bfae9 100644
--- a/src/components/forms/TextField.tsx
+++ b/src/components/forms/TextField.tsx
@@ -10,7 +10,7 @@ import {
} from 'react-native'
import {HITSLOP_20} from 'lib/constants'
-import {useTheme, atoms as a, web, tokens, android} from '#/alf'
+import {useTheme, atoms as a, web, android} from '#/alf'
import {Text} from '#/components/Typography'
import {useInteractionState} from '#/components/hooks/useInteractionState'
import {Props as SVGIconProps} from '#/components/icons/common'
@@ -72,7 +72,7 @@ export function Root({children, isInvalid = false}: RootProps) {
return (
inputRef.current?.focus(),
onMouseOver: onHoverIn,
@@ -110,7 +110,7 @@ export function useSharedInputStyles() {
{
backgroundColor:
t.name === 'light' ? t.palette.negative_25 : t.palette.negative_900,
- borderColor: tokens.color.red_500,
+ borderColor: t.palette.negative_500,
},
]
diff --git a/src/components/forms/Toggle.tsx b/src/components/forms/Toggle.tsx
index 9369423f20..a83f92a2a6 100644
--- a/src/components/forms/Toggle.tsx
+++ b/src/components/forms/Toggle.tsx
@@ -5,6 +5,7 @@ import {HITSLOP_10} from 'lib/constants'
import {useTheme, atoms as a, web, native, flatten, ViewStyleProp} from '#/alf'
import {Text} from '#/components/Typography'
import {useInteractionState} from '#/components/hooks/useInteractionState'
+import {CheckThick_Stroke2_Corner0_Rounded as Checkmark} from '#/components/icons/Check'
export type ItemState = {
name: string
@@ -300,7 +301,7 @@ export function createSharedToggleStyles({
if (isInvalid) {
base.push({
backgroundColor:
- t.name === 'light' ? t.palette.negative_25 : t.palette.negative_900,
+ t.name === 'light' ? t.palette.negative_25 : t.palette.negative_975,
borderColor:
t.name === 'light' ? t.palette.negative_300 : t.palette.negative_800,
})
@@ -309,7 +310,7 @@ export function createSharedToggleStyles({
baseHover.push({
backgroundColor:
t.name === 'light' ? t.palette.negative_25 : t.palette.negative_900,
- borderColor: t.palette.negative_500,
+ borderColor: t.palette.negative_600,
})
}
}
@@ -331,15 +332,14 @@ export function createSharedToggleStyles({
export function Checkbox() {
const t = useTheme()
const {selected, hovered, focused, disabled, isInvalid} = useItemContext()
- const {baseStyles, baseHoverStyles, indicatorStyles} =
- createSharedToggleStyles({
- theme: t,
- hovered,
- focused,
- selected,
- disabled,
- isInvalid,
- })
+ const {baseStyles, baseHoverStyles} = createSharedToggleStyles({
+ theme: t,
+ hovered,
+ focused,
+ selected,
+ disabled,
+ isInvalid,
+ })
return (
- {selected ? (
-
- ) : null}
+ {selected ? : null}
)
}
diff --git a/src/components/icons/Check.tsx b/src/components/icons/Check.tsx
index 24316c7849..fe9883baf8 100644
--- a/src/components/icons/Check.tsx
+++ b/src/components/icons/Check.tsx
@@ -3,3 +3,7 @@ import {createSinglePathSVG} from './TEMPLATE'
export const Check_Stroke2_Corner0_Rounded = createSinglePathSVG({
path: 'M21.59 3.193a1 1 0 0 1 .217 1.397l-11.706 16a1 1 0 0 1-1.429.193l-6.294-5a1 1 0 1 1 1.244-1.566l5.48 4.353 11.09-15.16a1 1 0 0 1 1.398-.217Z',
})
+
+export const CheckThick_Stroke2_Corner0_Rounded = createSinglePathSVG({
+ path: 'M21.474 2.98a2.5 2.5 0 0 1 .545 3.494l-10.222 14a2.5 2.5 0 0 1-3.528.52L2.49 16.617a2.5 2.5 0 0 1 3.018-3.986l3.75 2.84L17.98 3.525a2.5 2.5 0 0 1 3.493-.545Z',
+})
diff --git a/src/components/icons/Clipboard.tsx b/src/components/icons/Clipboard.tsx
new file mode 100644
index 0000000000..0135992b4c
--- /dev/null
+++ b/src/components/icons/Clipboard.tsx
@@ -0,0 +1,5 @@
+import {createSinglePathSVG} from './TEMPLATE'
+
+export const Clipboard_Stroke2_Corner2_Rounded = createSinglePathSVG({
+ path: 'M8.17 4A3.001 3.001 0 0 1 11 2h2c1.306 0 2.418.835 2.83 2H17a3 3 0 0 1 3 3v12a3 3 0 0 1-3 3H7a3 3 0 0 1-3-3V7a3 3 0 0 1 3-3h1.17ZM8 6H7a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V7a1 1 0 0 0-1-1h-1v1a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1V6Zm6 0V5a1 1 0 0 0-1-1h-2a1 1 0 0 0-1 1v1h4Z',
+})
diff --git a/src/components/icons/Group3.tsx b/src/components/icons/Group3.tsx
index 2bb16ba870..9e5ab8893a 100644
--- a/src/components/icons/Group3.tsx
+++ b/src/components/icons/Group3.tsx
@@ -1,5 +1,5 @@
import {createSinglePathSVG} from './TEMPLATE'
export const Group3_Stroke2_Corner0_Rounded = createSinglePathSVG({
- path: 'M17 16H21.1456C20.8246 11.4468 17.7199 9.48509 15.0001 10.1147M10 4C10 5.65685 8.65685 7 7 7C5.34315 7 4 5.65685 4 4C4 2.34315 5.34315 1 7 1C8.65685 1 10 2.34315 10 4ZM18.5 4.5C18.5 5.88071 17.3807 7 16 7C14.6193 7 13.5 5.88071 13.5 4.5C13.5 3.11929 14.6193 2 16 2C17.3807 2 18.5 3.11929 18.5 4.5ZM1 17H13C12.3421 7.66667 1.65792 7.66667 1 17Z',
+ path: 'M8 5a2 2 0 1 0 0 4 2 2 0 0 0 0-4ZM4 7a4 4 0 1 1 8 0 4 4 0 0 1-8 0Zm13-1a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3Zm-3.5 1.5a3.5 3.5 0 1 1 7 0 3.5 3.5 0 0 1-7 0Zm5.826 7.376c-.919-.779-2.052-1.03-3.1-.787a1 1 0 0 1-.451-1.949c1.671-.386 3.45.028 4.844 1.211 1.397 1.185 2.348 3.084 2.524 5.579a1 1 0 0 1-.997 1.07H18a1 1 0 1 1 0-2h3.007c-.29-1.47-.935-2.49-1.681-3.124ZM3.126 19h9.747c-.61-3.495-2.867-5-4.873-5-2.006 0-4.263 1.505-4.873 5ZM8 12c3.47 0 6.64 2.857 6.998 7.93A1 1 0 0 1 14 21H2a1 1 0 0 1-.998-1.07C1.36 14.857 4.53 12 8 12Z',
})
diff --git a/src/components/icons/MagnifyingGlass2.tsx b/src/components/icons/MagnifyingGlass2.tsx
new file mode 100644
index 0000000000..3ca4034001
--- /dev/null
+++ b/src/components/icons/MagnifyingGlass2.tsx
@@ -0,0 +1,5 @@
+import {createSinglePathSVG} from './TEMPLATE'
+
+export const MagnifyingGlass2_Stroke2_Corner0_Rounded = createSinglePathSVG({
+ path: 'M11 5a6 6 0 1 0 0 12 6 6 0 0 0 0-12Zm-8 6a8 8 0 1 1 14.32 4.906l3.387 3.387a1 1 0 0 1-1.414 1.414l-3.387-3.387A8 8 0 0 1 3 11Z',
+})
diff --git a/src/components/icons/Mute.tsx b/src/components/icons/Mute.tsx
new file mode 100644
index 0000000000..0065707870
--- /dev/null
+++ b/src/components/icons/Mute.tsx
@@ -0,0 +1,5 @@
+import {createSinglePathSVG} from './TEMPLATE'
+
+export const Mute_Stroke2_Corner0_Rounded = createSinglePathSVG({
+ path: 'M20.707 3.293a1 1 0 0 1 0 1.414l-16 16a1 1 0 0 1-1.414-1.414l2.616-2.616A1.998 1.998 0 0 1 5 15V9a2 2 0 0 1 2-2h2.697l5.748-3.832A1 1 0 0 1 17 4v1.586l2.293-2.293a1 1 0 0 1 1.414 0ZM15 7.586 7.586 15H7V9h2.697a2 2 0 0 0 1.11-.336L15 5.87v1.717Zm2 3.657-2 2v4.888l-2.933-1.955-1.442 1.442 4.82 3.214A1 1 0 0 0 17 20v-8.757Z',
+})
diff --git a/src/components/icons/PageText.tsx b/src/components/icons/PageText.tsx
new file mode 100644
index 0000000000..25fbde3392
--- /dev/null
+++ b/src/components/icons/PageText.tsx
@@ -0,0 +1,5 @@
+import {createSinglePathSVG} from './TEMPLATE'
+
+export const PageText_Stroke2_Corner0_Rounded = createSinglePathSVG({
+ path: 'M5 2a1 1 0 0 0-1 1v18a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H5Zm1 18V4h12v16H6Zm3-6a1 1 0 1 0 0 2h2a1 1 0 1 0 0-2H9Zm-1-3a1 1 0 0 1 1-1h6a1 1 0 1 1 0 2H9a1 1 0 0 1-1-1Zm1-5a1 1 0 0 0 0 2h6a1 1 0 1 0 0-2H9Z',
+})
diff --git a/src/components/icons/Person.tsx b/src/components/icons/Person.tsx
new file mode 100644
index 0000000000..6d09148c9d
--- /dev/null
+++ b/src/components/icons/Person.tsx
@@ -0,0 +1,5 @@
+import {createSinglePathSVG} from './TEMPLATE'
+
+export const Person_Stroke2_Corner0_Rounded = createSinglePathSVG({
+ path: 'M12 4a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5ZM7.5 6.5a4.5 4.5 0 1 1 9 0 4.5 4.5 0 0 1-9 0ZM5.678 19h12.644c-.71-2.909-3.092-5-6.322-5s-5.613 2.091-6.322 5Zm-2.174.906C3.917 15.521 7.242 12 12 12c4.758 0 8.083 3.521 8.496 7.906A1 1 0 0 1 19.5 21h-15a1 1 0 0 1-.996-1.094Z',
+})
diff --git a/src/lib/__tests__/moderatePost_wrapped.test.ts b/src/lib/__tests__/moderatePost_wrapped.test.ts
new file mode 100644
index 0000000000..45566281af
--- /dev/null
+++ b/src/lib/__tests__/moderatePost_wrapped.test.ts
@@ -0,0 +1,692 @@
+import {describe, it, expect} from '@jest/globals'
+import {RichText} from '@atproto/api'
+
+import {hasMutedWord} from '../moderatePost_wrapped'
+
+describe(`hasMutedWord`, () => {
+ describe(`tags`, () => {
+ it(`match: outline tag`, () => {
+ const rt = new RichText({
+ text: `This is a post #inlineTag`,
+ })
+ rt.detectFacetsWithoutResolution()
+
+ const match = hasMutedWord({
+ mutedWords: [{value: 'outlineTag', targets: ['tag']}],
+ text: rt.text,
+ facets: rt.facets,
+ outlineTags: ['outlineTag'],
+ isOwnPost: false,
+ })
+
+ expect(match).toBe(true)
+ })
+
+ it(`match: inline tag`, () => {
+ const rt = new RichText({
+ text: `This is a post #inlineTag`,
+ })
+ rt.detectFacetsWithoutResolution()
+
+ const match = hasMutedWord({
+ mutedWords: [{value: 'inlineTag', targets: ['tag']}],
+ text: rt.text,
+ facets: rt.facets,
+ outlineTags: ['outlineTag'],
+ isOwnPost: false,
+ })
+
+ expect(match).toBe(true)
+ })
+
+ it(`match: content target matches inline tag`, () => {
+ const rt = new RichText({
+ text: `This is a post #inlineTag`,
+ })
+ rt.detectFacetsWithoutResolution()
+
+ const match = hasMutedWord({
+ mutedWords: [{value: 'inlineTag', targets: ['content']}],
+ text: rt.text,
+ facets: rt.facets,
+ outlineTags: ['outlineTag'],
+ isOwnPost: false,
+ })
+
+ expect(match).toBe(true)
+ })
+
+ it(`no match: only tag targets`, () => {
+ const rt = new RichText({
+ text: `This is a post`,
+ })
+ rt.detectFacetsWithoutResolution()
+
+ const match = hasMutedWord({
+ mutedWords: [{value: 'inlineTag', targets: ['tag']}],
+ text: rt.text,
+ facets: rt.facets,
+ outlineTags: [],
+ isOwnPost: false,
+ })
+
+ expect(match).toBe(false)
+ })
+ })
+
+ describe(`early exits`, () => {
+ it(`match: single character åø`, () => {
+ /**
+ * @see https://bsky.app/profile/mukuuji.bsky.social/post/3klji4fvsdk2c
+ */
+ const rt = new RichText({
+ text: `ę¹ååøęć§ć`,
+ })
+ rt.detectFacetsWithoutResolution()
+
+ const match = hasMutedWord({
+ mutedWords: [{value: 'åø', targets: ['content']}],
+ text: rt.text,
+ facets: rt.facets,
+ outlineTags: [],
+ isOwnPost: false,
+ })
+
+ expect(match).toBe(true)
+ })
+
+ it(`no match: long muted word, short post`, () => {
+ const rt = new RichText({
+ text: `hey`,
+ })
+ rt.detectFacetsWithoutResolution()
+
+ const match = hasMutedWord({
+ mutedWords: [{value: 'politics', targets: ['content']}],
+ text: rt.text,
+ facets: rt.facets,
+ outlineTags: [],
+ isOwnPost: false,
+ })
+
+ expect(match).toBe(false)
+ })
+
+ it(`match: exact text`, () => {
+ const rt = new RichText({
+ text: `javascript`,
+ })
+ rt.detectFacetsWithoutResolution()
+
+ const match = hasMutedWord({
+ mutedWords: [{value: 'javascript', targets: ['content']}],
+ text: rt.text,
+ facets: rt.facets,
+ outlineTags: [],
+ isOwnPost: false,
+ })
+
+ expect(match).toBe(true)
+ })
+ })
+
+ describe(`general content`, () => {
+ it(`match: word within post`, () => {
+ const rt = new RichText({
+ text: `This is a post about javascript`,
+ })
+ rt.detectFacetsWithoutResolution()
+
+ const match = hasMutedWord({
+ mutedWords: [{value: 'javascript', targets: ['content']}],
+ text: rt.text,
+ facets: rt.facets,
+ outlineTags: [],
+ isOwnPost: false,
+ })
+
+ expect(match).toBe(true)
+ })
+
+ it(`no match: partial word`, () => {
+ const rt = new RichText({
+ text: `Use your brain, Eric`,
+ })
+ rt.detectFacetsWithoutResolution()
+
+ const match = hasMutedWord({
+ mutedWords: [{value: 'ai', targets: ['content']}],
+ text: rt.text,
+ facets: rt.facets,
+ outlineTags: [],
+ isOwnPost: false,
+ })
+
+ expect(match).toBe(false)
+ })
+
+ it(`match: multiline`, () => {
+ const rt = new RichText({
+ text: `Use your\n\tbrain, Eric`,
+ })
+ rt.detectFacetsWithoutResolution()
+
+ const match = hasMutedWord({
+ mutedWords: [{value: 'brain', targets: ['content']}],
+ text: rt.text,
+ facets: rt.facets,
+ outlineTags: [],
+ isOwnPost: false,
+ })
+
+ expect(match).toBe(true)
+ })
+
+ it(`match: :)`, () => {
+ const rt = new RichText({
+ text: `So happy :)`,
+ })
+ rt.detectFacetsWithoutResolution()
+
+ const match = hasMutedWord({
+ mutedWords: [{value: `:)`, targets: ['content']}],
+ text: rt.text,
+ facets: rt.facets,
+ outlineTags: [],
+ isOwnPost: false,
+ })
+
+ expect(match).toBe(true)
+ })
+ })
+
+ describe(`punctuation semi-fuzzy`, () => {
+ describe(`yay!`, () => {
+ const rt = new RichText({
+ text: `We're federating, yay!`,
+ })
+ rt.detectFacetsWithoutResolution()
+
+ it(`match: yay!`, () => {
+ const match = hasMutedWord({
+ mutedWords: [{value: 'yay!', targets: ['content']}],
+ text: rt.text,
+ facets: rt.facets,
+ outlineTags: [],
+ isOwnPost: false,
+ })
+
+ expect(match).toBe(true)
+ })
+
+ it(`match: yay`, () => {
+ const match = hasMutedWord({
+ mutedWords: [{value: 'yay', targets: ['content']}],
+ text: rt.text,
+ facets: rt.facets,
+ outlineTags: [],
+ isOwnPost: false,
+ })
+
+ expect(match).toBe(true)
+ })
+ })
+
+ describe(`y!ppee!!`, () => {
+ const rt = new RichText({
+ text: `We're federating, y!ppee!!`,
+ })
+ rt.detectFacetsWithoutResolution()
+
+ it(`match: y!ppee`, () => {
+ const match = hasMutedWord({
+ mutedWords: [{value: 'y!ppee', targets: ['content']}],
+ text: rt.text,
+ facets: rt.facets,
+ outlineTags: [],
+ isOwnPost: false,
+ })
+
+ expect(match).toBe(true)
+ })
+
+ // single exclamation point, source has double
+ it(`no match: y!ppee!`, () => {
+ const match = hasMutedWord({
+ mutedWords: [{value: 'y!ppee!', targets: ['content']}],
+ text: rt.text,
+ facets: rt.facets,
+ outlineTags: [],
+ isOwnPost: false,
+ })
+
+ expect(match).toBe(true)
+ })
+ })
+
+ describe(`Why so S@assy?`, () => {
+ const rt = new RichText({
+ text: `Why so S@assy?`,
+ })
+ rt.detectFacetsWithoutResolution()
+
+ it(`match: S@assy`, () => {
+ const match = hasMutedWord({
+ mutedWords: [{value: 'S@assy', targets: ['content']}],
+ text: rt.text,
+ facets: rt.facets,
+ outlineTags: [],
+ isOwnPost: false,
+ })
+
+ expect(match).toBe(true)
+ })
+
+ it(`match: s@assy`, () => {
+ const match = hasMutedWord({
+ mutedWords: [{value: 's@assy', targets: ['content']}],
+ text: rt.text,
+ facets: rt.facets,
+ outlineTags: [],
+ isOwnPost: false,
+ })
+
+ expect(match).toBe(true)
+ })
+ })
+
+ describe(`New York Times`, () => {
+ const rt = new RichText({
+ text: `New York Times`,
+ })
+ rt.detectFacetsWithoutResolution()
+
+ // case insensitive
+ it(`match: new york times`, () => {
+ const match = hasMutedWord({
+ mutedWords: [{value: 'new york times', targets: ['content']}],
+ text: rt.text,
+ facets: rt.facets,
+ outlineTags: [],
+ isOwnPost: false,
+ })
+
+ expect(match).toBe(true)
+ })
+ })
+
+ describe(`!command`, () => {
+ const rt = new RichText({
+ text: `Idk maybe a bot !command`,
+ })
+ rt.detectFacetsWithoutResolution()
+
+ it(`match: !command`, () => {
+ const match = hasMutedWord({
+ mutedWords: [{value: `!command`, targets: ['content']}],
+ text: rt.text,
+ facets: rt.facets,
+ outlineTags: [],
+ isOwnPost: false,
+ })
+
+ expect(match).toBe(true)
+ })
+
+ it(`match: command`, () => {
+ const match = hasMutedWord({
+ mutedWords: [{value: `command`, targets: ['content']}],
+ text: rt.text,
+ facets: rt.facets,
+ outlineTags: [],
+ isOwnPost: false,
+ })
+
+ expect(match).toBe(true)
+ })
+
+ it(`no match: !command`, () => {
+ const rt = new RichText({
+ text: `Idk maybe a bot command`,
+ })
+ rt.detectFacetsWithoutResolution()
+
+ const match = hasMutedWord({
+ mutedWords: [{value: `!command`, targets: ['content']}],
+ text: rt.text,
+ facets: rt.facets,
+ outlineTags: [],
+ isOwnPost: false,
+ })
+
+ expect(match).toBe(false)
+ })
+ })
+
+ describe(`e/acc`, () => {
+ const rt = new RichText({
+ text: `I'm e/acc pilled`,
+ })
+ rt.detectFacetsWithoutResolution()
+
+ it(`match: e/acc`, () => {
+ const match = hasMutedWord({
+ mutedWords: [{value: `e/acc`, targets: ['content']}],
+ text: rt.text,
+ facets: rt.facets,
+ outlineTags: [],
+ isOwnPost: false,
+ })
+
+ expect(match).toBe(true)
+ })
+
+ it(`match: acc`, () => {
+ const match = hasMutedWord({
+ mutedWords: [{value: `acc`, targets: ['content']}],
+ text: rt.text,
+ facets: rt.facets,
+ outlineTags: [],
+ isOwnPost: false,
+ })
+
+ expect(match).toBe(true)
+ })
+ })
+
+ describe(`super-bad`, () => {
+ const rt = new RichText({
+ text: `I'm super-bad`,
+ })
+ rt.detectFacetsWithoutResolution()
+
+ it(`match: super-bad`, () => {
+ const match = hasMutedWord({
+ mutedWords: [{value: `super-bad`, targets: ['content']}],
+ text: rt.text,
+ facets: rt.facets,
+ outlineTags: [],
+ isOwnPost: false,
+ })
+
+ expect(match).toBe(true)
+ })
+
+ it(`match: super`, () => {
+ const match = hasMutedWord({
+ mutedWords: [{value: `super`, targets: ['content']}],
+ text: rt.text,
+ facets: rt.facets,
+ outlineTags: [],
+ isOwnPost: false,
+ })
+
+ expect(match).toBe(true)
+ })
+
+ it(`match: super bad`, () => {
+ const match = hasMutedWord({
+ mutedWords: [{value: `super bad`, targets: ['content']}],
+ text: rt.text,
+ facets: rt.facets,
+ outlineTags: [],
+ isOwnPost: false,
+ })
+
+ expect(match).toBe(true)
+ })
+
+ it(`match: superbad`, () => {
+ const match = hasMutedWord({
+ mutedWords: [{value: `superbad`, targets: ['content']}],
+ text: rt.text,
+ facets: rt.facets,
+ outlineTags: [],
+ isOwnPost: false,
+ })
+
+ expect(match).toBe(false)
+ })
+ })
+
+ describe(`idk_what_this_would_be`, () => {
+ const rt = new RichText({
+ text: `Weird post with idk_what_this_would_be`,
+ })
+ rt.detectFacetsWithoutResolution()
+
+ it(`match: idk what this would be`, () => {
+ const match = hasMutedWord({
+ mutedWords: [{value: `idk what this would be`, targets: ['content']}],
+ text: rt.text,
+ facets: rt.facets,
+ outlineTags: [],
+ isOwnPost: false,
+ })
+
+ expect(match).toBe(true)
+ })
+
+ it(`no match: idk what this would be for`, () => {
+ // extra word
+ const match = hasMutedWord({
+ mutedWords: [
+ {value: `idk what this would be for`, targets: ['content']},
+ ],
+ text: rt.text,
+ facets: rt.facets,
+ outlineTags: [],
+ isOwnPost: false,
+ })
+
+ expect(match).toBe(false)
+ })
+
+ it(`match: idk`, () => {
+ // extra word
+ const match = hasMutedWord({
+ mutedWords: [{value: `idk`, targets: ['content']}],
+ text: rt.text,
+ facets: rt.facets,
+ outlineTags: [],
+ isOwnPost: false,
+ })
+
+ expect(match).toBe(true)
+ })
+
+ it(`match: idkwhatthiswouldbe`, () => {
+ const match = hasMutedWord({
+ mutedWords: [{value: `idkwhatthiswouldbe`, targets: ['content']}],
+ text: rt.text,
+ facets: rt.facets,
+ outlineTags: [],
+ isOwnPost: false,
+ })
+
+ expect(match).toBe(false)
+ })
+ })
+
+ describe(`parentheses`, () => {
+ const rt = new RichText({
+ text: `Post with context(iykyk)`,
+ })
+ rt.detectFacetsWithoutResolution()
+
+ it(`match: context(iykyk)`, () => {
+ const match = hasMutedWord({
+ mutedWords: [{value: `context(iykyk)`, targets: ['content']}],
+ text: rt.text,
+ facets: rt.facets,
+ outlineTags: [],
+ isOwnPost: false,
+ })
+
+ expect(match).toBe(true)
+ })
+
+ it(`match: context`, () => {
+ const match = hasMutedWord({
+ mutedWords: [{value: `context`, targets: ['content']}],
+ text: rt.text,
+ facets: rt.facets,
+ outlineTags: [],
+ isOwnPost: false,
+ })
+
+ expect(match).toBe(true)
+ })
+
+ it(`match: iykyk`, () => {
+ const match = hasMutedWord({
+ mutedWords: [{value: `iykyk`, targets: ['content']}],
+ text: rt.text,
+ facets: rt.facets,
+ outlineTags: [],
+ isOwnPost: false,
+ })
+
+ expect(match).toBe(true)
+ })
+
+ it(`match: (iykyk)`, () => {
+ const match = hasMutedWord({
+ mutedWords: [{value: `(iykyk)`, targets: ['content']}],
+ text: rt.text,
+ facets: rt.facets,
+ outlineTags: [],
+ isOwnPost: false,
+ })
+
+ expect(match).toBe(true)
+ })
+ })
+
+ describe(`š¦`, () => {
+ const rt = new RichText({
+ text: `Post with š¦`,
+ })
+ rt.detectFacetsWithoutResolution()
+
+ it(`match: š¦`, () => {
+ const match = hasMutedWord({
+ mutedWords: [{value: `š¦`, targets: ['content']}],
+ text: rt.text,
+ facets: rt.facets,
+ outlineTags: [],
+ isOwnPost: false,
+ })
+
+ expect(match).toBe(true)
+ })
+ })
+ })
+
+ describe(`phrases`, () => {
+ describe(`I like turtles, or how I learned to stop worrying and love the internet.`, () => {
+ const rt = new RichText({
+ text: `I like turtles, or how I learned to stop worrying and love the internet.`,
+ })
+ rt.detectFacetsWithoutResolution()
+
+ it(`match: stop worrying`, () => {
+ const match = hasMutedWord({
+ mutedWords: [{value: 'stop worrying', targets: ['content']}],
+ text: rt.text,
+ facets: rt.facets,
+ outlineTags: [],
+ isOwnPost: false,
+ })
+
+ expect(match).toBe(true)
+ })
+
+ it(`match: turtles, or how`, () => {
+ const match = hasMutedWord({
+ mutedWords: [{value: 'turtles, or how', targets: ['content']}],
+ text: rt.text,
+ facets: rt.facets,
+ outlineTags: [],
+ isOwnPost: false,
+ })
+
+ expect(match).toBe(true)
+ })
+ })
+ })
+
+ describe(`languages without spaces`, () => {
+ // I love turtles, or how I learned to stop worrying and love the internet
+ describe(`ē§ćÆć«ć”ć儽ćć§ććć¾ććÆć©ć®ććć«ćć¦åæé
ććć®ćććć¦ć¤ć³ćæć¼ććććęććććć«ćŖć£ćć®ć`, () => {
+ const rt = new RichText({
+ text: `ē§ćÆć«ć”ć儽ćć§ććć¾ććÆć©ć®ććć«ćć¦åæé
ććć®ćććć¦ć¤ć³ćæć¼ććććęććććć«ćŖć£ćć®ć`,
+ })
+ rt.detectFacetsWithoutResolution()
+
+ // internet
+ it(`match: ć¤ć³ćæć¼ććć`, () => {
+ const match = hasMutedWord({
+ mutedWords: [{value: 'ć¤ć³ćæć¼ććć', targets: ['content']}],
+ text: rt.text,
+ facets: rt.facets,
+ outlineTags: [],
+ languages: ['ja'],
+ isOwnPost: false,
+ })
+
+ expect(match).toBe(true)
+ })
+ })
+ })
+
+ describe(`doesn't mute own post`, () => {
+ it(`does mute if it isn't own post`, () => {
+ const rt = new RichText({
+ text: `Mute words!`,
+ })
+
+ const match = hasMutedWord({
+ mutedWords: [{value: 'words', targets: ['content']}],
+ text: rt.text,
+ facets: rt.facets,
+ outlineTags: [],
+ isOwnPost: false,
+ })
+
+ expect(match).toBe(true)
+ })
+
+ it(`doesn't mute own post when muted word is in text`, () => {
+ const rt = new RichText({
+ text: `Mute words!`,
+ })
+
+ const match = hasMutedWord({
+ mutedWords: [{value: 'words', targets: ['content']}],
+ text: rt.text,
+ facets: rt.facets,
+ outlineTags: [],
+ isOwnPost: true,
+ })
+
+ expect(match).toBe(false)
+ })
+
+ it(`doesn't mute own post when muted word is in tags`, () => {
+ const rt = new RichText({
+ text: `Mute #words!`,
+ })
+
+ const match = hasMutedWord({
+ mutedWords: [{value: 'words', targets: ['tags']}],
+ text: rt.text,
+ facets: rt.facets,
+ outlineTags: [],
+ isOwnPost: true,
+ })
+
+ expect(match).toBe(false)
+ })
+ })
+})
diff --git a/src/lib/api/index.ts b/src/lib/api/index.ts
index 440dfa5ee3..5fb7fe50e6 100644
--- a/src/lib/api/index.ts
+++ b/src/lib/api/index.ts
@@ -104,18 +104,18 @@ export async function post(agent: BskyAgent, opts: PostOpts) {
// add image embed if present
if (opts.images?.length) {
- logger.info(`Uploading images`, {
+ logger.debug(`Uploading images`, {
count: opts.images.length,
})
const images: AppBskyEmbedImages.Image[] = []
for (const image of opts.images) {
opts.onStateChange?.(`Uploading image #${images.length + 1}...`)
- logger.info(`Compressing image`)
+ logger.debug(`Compressing image`)
await image.compress()
const path = image.compressed?.path ?? image.path
const {width, height} = image.compressed || image
- logger.info(`Uploading image`)
+ logger.debug(`Uploading image`)
const res = await uploadBlob(agent, path, 'image/jpeg')
images.push({
image: res.data.blob,
diff --git a/src/lib/constants.ts b/src/lib/constants.ts
index aec8338d03..e868443950 100644
--- a/src/lib/constants.ts
+++ b/src/lib/constants.ts
@@ -3,9 +3,8 @@ import {Insets, Platform} from 'react-native'
export const LOCAL_DEV_SERVICE =
Platform.OS === 'android' ? 'http://10.0.2.2:2583' : 'http://localhost:2583'
export const STAGING_SERVICE = 'https://staging.bsky.dev'
-export const PROD_SERVICE = 'https://bsky.social'
-export const DEFAULT_SERVICE = PROD_SERVICE
-
+export const BSKY_SERVICE = 'https://bsky.social'
+export const DEFAULT_SERVICE = BSKY_SERVICE
const HELP_DESK_LANG = 'en-us'
export const HELP_DESK_URL = `https://blueskyweb.zendesk.com/hc/${HELP_DESK_LANG}`
@@ -36,92 +35,12 @@ export const MAX_GRAPHEME_LENGTH = 300
// but increasing limit per user feedback
export const MAX_ALT_TEXT = 1000
-export function IS_LOCAL_DEV(url: string) {
- return url.includes('localhost')
+export function IS_PROD_SERVICE(url?: string) {
+ return url && url !== STAGING_SERVICE && url !== LOCAL_DEV_SERVICE
}
-export function IS_STAGING(url: string) {
- return url.startsWith('https://staging.bsky.dev')
-}
-
-export function IS_PROD(url: string) {
- // NOTE
- // until open federation, "production" is defined as the main server
- // this definition will not work once federation is enabled!
- // -prf
- return (
- url.startsWith('https://bsky.social') ||
- url.startsWith('https://api.bsky.app') ||
- /bsky\.network\/?$/.test(url)
- )
-}
-
-export const PROD_TEAM_HANDLES = [
- 'jay.bsky.social',
- 'pfrazee.com',
- 'divy.zone',
- 'dholms.xyz',
- 'why.bsky.world',
- 'iamrosewang.bsky.social',
-]
-export const STAGING_TEAM_HANDLES = [
- 'arcalinea.staging.bsky.dev',
- 'paul.staging.bsky.dev',
- 'paul2.staging.bsky.dev',
-]
-export const DEV_TEAM_HANDLES = ['alice.test', 'bob.test', 'carla.test']
-
-export function TEAM_HANDLES(serviceUrl: string) {
- if (serviceUrl.includes('localhost')) {
- return DEV_TEAM_HANDLES
- } else if (serviceUrl.includes('staging')) {
- return STAGING_TEAM_HANDLES
- } else {
- return PROD_TEAM_HANDLES
- }
-}
-
-export const STAGING_DEFAULT_FEED = (rkey: string) =>
- `at://did:plc:wqzurwm3kmaig6e6hnc2gqwo/app.bsky.feed.generator/${rkey}`
export const PROD_DEFAULT_FEED = (rkey: string) =>
`at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.generator/${rkey}`
-export async function DEFAULT_FEEDS(
- serviceUrl: string,
- resolveHandle: (name: string) => Promise,
-) {
- // TODO: remove this when the test suite no longer relies on it
- if (IS_LOCAL_DEV(serviceUrl)) {
- // local dev
- const aliceDid = await resolveHandle('alice.test')
- return {
- pinned: [
- `at://${aliceDid}/app.bsky.feed.generator/alice-favs`,
- `at://${aliceDid}/app.bsky.feed.generator/alice-favs2`,
- ],
- saved: [
- `at://${aliceDid}/app.bsky.feed.generator/alice-favs`,
- `at://${aliceDid}/app.bsky.feed.generator/alice-favs2`,
- ],
- }
- } else if (IS_STAGING(serviceUrl)) {
- // staging
- return {
- pinned: [STAGING_DEFAULT_FEED('whats-hot')],
- saved: [
- STAGING_DEFAULT_FEED('bsky-team'),
- STAGING_DEFAULT_FEED('with-friends'),
- STAGING_DEFAULT_FEED('whats-hot'),
- STAGING_DEFAULT_FEED('hot-classic'),
- ],
- }
- } else {
- // production
- return {
- pinned: [PROD_DEFAULT_FEED('whats-hot')],
- saved: [PROD_DEFAULT_FEED('whats-hot')],
- }
- }
-}
export const POST_IMG_MAX = {
width: 2000,
@@ -135,13 +54,11 @@ export const STAGING_LINK_META_PROXY =
export const PROD_LINK_META_PROXY = 'https://cardyb.bsky.app/v1/extract?url='
export function LINK_META_PROXY(serviceUrl: string) {
- if (IS_LOCAL_DEV(serviceUrl)) {
- return STAGING_LINK_META_PROXY
- } else if (IS_STAGING(serviceUrl)) {
- return STAGING_LINK_META_PROXY
- } else {
+ if (IS_PROD_SERVICE(serviceUrl)) {
return PROD_LINK_META_PROXY
}
+
+ return STAGING_LINK_META_PROXY
}
export const STATUS_PAGE_URL = 'https://status.bsky.app/'
@@ -158,3 +75,9 @@ export const HITSLOP_20 = createHitslop(20)
export const HITSLOP_30 = createHitslop(30)
export const BACK_HITSLOP = HITSLOP_30
export const MAX_POST_LINES = 25
+
+export const BSKY_FEED_OWNER_DIDS = [
+ 'did:plc:z72i7hdynmk6r22z27h6tvur',
+ 'did:plc:vpkhqolt662uhesyj6nxm7ys',
+ 'did:plc:q6gjnaw2blty4crticxkmujt',
+]
diff --git a/src/lib/country-codes.ts b/src/lib/country-codes.ts
deleted file mode 100644
index 9c9da84cff..0000000000
--- a/src/lib/country-codes.ts
+++ /dev/null
@@ -1,256 +0,0 @@
-import {CountryCode} from 'libphonenumber-js'
-
-// ISO 3166-1 alpha-2 codes
-
-export interface CountryCodeMap {
- code2: CountryCode
- name: string
-}
-
-export const COUNTRY_CODES: CountryCodeMap[] = [
- {code2: 'AF', name: 'Afghanistan (+93)'},
- {code2: 'AX', name: 'Ć
land Islands (+358)'},
- {code2: 'AL', name: 'Albania (+355)'},
- {code2: 'DZ', name: 'Algeria (+213)'},
- {code2: 'AS', name: 'American Samoa (+1)'},
- {code2: 'AD', name: 'Andorra (+376)'},
- {code2: 'AO', name: 'Angola (+244)'},
- {code2: 'AI', name: 'Anguilla (+1)'},
- {code2: 'AG', name: 'Antigua and Barbuda (+1)'},
- {code2: 'AR', name: 'Argentina (+54)'},
- {code2: 'AM', name: 'Armenia (+374)'},
- {code2: 'AW', name: 'Aruba (+297)'},
- {code2: 'AU', name: 'Australia (+61)'},
- {code2: 'AT', name: 'Austria (+43)'},
- {code2: 'AZ', name: 'Azerbaijan (+994)'},
- {code2: 'BS', name: 'Bahamas (+1)'},
- {code2: 'BH', name: 'Bahrain (+973)'},
- {code2: 'BD', name: 'Bangladesh (+880)'},
- {code2: 'BB', name: 'Barbados (+1)'},
- {code2: 'BY', name: 'Belarus (+375)'},
- {code2: 'BE', name: 'Belgium (+32)'},
- {code2: 'BZ', name: 'Belize (+501)'},
- {code2: 'BJ', name: 'Benin (+229)'},
- {code2: 'BM', name: 'Bermuda (+1)'},
- {code2: 'BT', name: 'Bhutan (+975)'},
- {code2: 'BO', name: 'Bolivia (Plurinational State of) (+591)'},
- {code2: 'BQ', name: 'Bonaire, Sint Eustatius and Saba (+599)'},
- {code2: 'BA', name: 'Bosnia and Herzegovina (+387)'},
- {code2: 'BW', name: 'Botswana (+267)'},
- {code2: 'BR', name: 'Brazil (+55)'},
- {code2: 'IO', name: 'British Indian Ocean Territory (+246)'},
- {code2: 'BN', name: 'Brunei Darussalam (+673)'},
- {code2: 'BG', name: 'Bulgaria (+359)'},
- {code2: 'BF', name: 'Burkina Faso (+226)'},
- {code2: 'BI', name: 'Burundi (+257)'},
- {code2: 'CV', name: 'Cabo Verde (+238)'},
- {code2: 'KH', name: 'Cambodia (+855)'},
- {code2: 'CM', name: 'Cameroon (+237)'},
- {code2: 'CA', name: 'Canada (+1)'},
- {code2: 'KY', name: 'Cayman Islands (+1)'},
- {code2: 'CF', name: 'Central African Republic (+236)'},
- {code2: 'TD', name: 'Chad (+235)'},
- {code2: 'CL', name: 'Chile (+56)'},
- {code2: 'CN', name: 'China (+86)'},
- {code2: 'CX', name: 'Christmas Island (+61)'},
- {code2: 'CC', name: 'Cocos (Keeling) Islands (+61)'},
- {code2: 'CO', name: 'Colombia (+57)'},
- {code2: 'KM', name: 'Comoros (+269)'},
- {code2: 'CG', name: 'Congo (+242)'},
- {code2: 'CD', name: 'Congo, Democratic Republic of the (+243)'},
- {code2: 'CK', name: 'Cook Islands (+682)'},
- {code2: 'CR', name: 'Costa Rica (+506)'},
- {code2: 'CI', name: "CƓte d'Ivoire (+225)"},
- {code2: 'HR', name: 'Croatia (+385)'},
- {code2: 'CU', name: 'Cuba (+53)'},
- {code2: 'CW', name: 'CuraƧao (+599)'},
- {code2: 'CY', name: 'Cyprus (+357)'},
- {code2: 'CZ', name: 'Czechia (+420)'},
- {code2: 'DK', name: 'Denmark (+45)'},
- {code2: 'DJ', name: 'Djibouti (+253)'},
- {code2: 'DM', name: 'Dominica (+1)'},
- {code2: 'DO', name: 'Dominican Republic (+1)'},
- {code2: 'EC', name: 'Ecuador (+593)'},
- {code2: 'EG', name: 'Egypt (+20)'},
- {code2: 'SV', name: 'El Salvador (+503)'},
- {code2: 'GQ', name: 'Equatorial Guinea (+240)'},
- {code2: 'ER', name: 'Eritrea (+291)'},
- {code2: 'EE', name: 'Estonia (+372)'},
- {code2: 'SZ', name: 'Eswatini (+268)'},
- {code2: 'ET', name: 'Ethiopia (+251)'},
- {code2: 'FK', name: 'Falkland Islands (Malvinas) (+500)'},
- {code2: 'FO', name: 'Faroe Islands (+298)'},
- {code2: 'FJ', name: 'Fiji (+679)'},
- {code2: 'FI', name: 'Finland (+358)'},
- {code2: 'FR', name: 'France (+33)'},
- {code2: 'GF', name: 'French Guiana (+594)'},
- {code2: 'PF', name: 'French Polynesia (+689)'},
- {code2: 'GA', name: 'Gabon (+241)'},
- {code2: 'GM', name: 'Gambia (+220)'},
- {code2: 'GE', name: 'Georgia (+995)'},
- {code2: 'DE', name: 'Germany (+49)'},
- {code2: 'GH', name: 'Ghana (+233)'},
- {code2: 'GI', name: 'Gibraltar (+350)'},
- {code2: 'GR', name: 'Greece (+30)'},
- {code2: 'GL', name: 'Greenland (+299)'},
- {code2: 'GD', name: 'Grenada (+1)'},
- {code2: 'GP', name: 'Guadeloupe (+590)'},
- {code2: 'GU', name: 'Guam (+1)'},
- {code2: 'GT', name: 'Guatemala (+502)'},
- {code2: 'GG', name: 'Guernsey (+44)'},
- {code2: 'GN', name: 'Guinea (+224)'},
- {code2: 'GW', name: 'Guinea-Bissau (+245)'},
- {code2: 'GY', name: 'Guyana (+592)'},
- {code2: 'HT', name: 'Haiti (+509)'},
- {code2: 'VA', name: 'Holy See (+39)'},
- {code2: 'HN', name: 'Honduras (+504)'},
- {code2: 'HK', name: 'Hong Kong (+852)'},
- {code2: 'HU', name: 'Hungary (+36)'},
- {code2: 'IS', name: 'Iceland (+354)'},
- {code2: 'IN', name: 'India (+91)'},
- {code2: 'ID', name: 'Indonesia (+62)'},
- {code2: 'IR', name: 'Iran (Islamic Republic of) (+98)'},
- {code2: 'IQ', name: 'Iraq (+964)'},
- {code2: 'IE', name: 'Ireland (+353)'},
- {code2: 'IM', name: 'Isle of Man (+44)'},
- {code2: 'IL', name: 'Israel (+972)'},
- {code2: 'IT', name: 'Italy (+39)'},
- {code2: 'JM', name: 'Jamaica (+1)'},
- {code2: 'JP', name: 'Japan (+81)'},
- {code2: 'JE', name: 'Jersey (+44)'},
- {code2: 'JO', name: 'Jordan (+962)'},
- {code2: 'KZ', name: 'Kazakhstan (+7)'},
- {code2: 'KE', name: 'Kenya (+254)'},
- {code2: 'KI', name: 'Kiribati (+686)'},
- {code2: 'KP', name: "Korea (Democratic People's Republic of) (+850)"},
- {code2: 'KR', name: 'Korea, Republic of (+82)'},
- {code2: 'KW', name: 'Kuwait (+965)'},
- {code2: 'KG', name: 'Kyrgyzstan (+996)'},
- {code2: 'LA', name: "Lao People's Democratic Republic (+856)"},
- {code2: 'LV', name: 'Latvia (+371)'},
- {code2: 'LB', name: 'Lebanon (+961)'},
- {code2: 'LS', name: 'Lesotho (+266)'},
- {code2: 'LR', name: 'Liberia (+231)'},
- {code2: 'LY', name: 'Libya (+218)'},
- {code2: 'LI', name: 'Liechtenstein (+423)'},
- {code2: 'LT', name: 'Lithuania (+370)'},
- {code2: 'LU', name: 'Luxembourg (+352)'},
- {code2: 'MO', name: 'Macao (+853)'},
- {code2: 'MG', name: 'Madagascar (+261)'},
- {code2: 'MW', name: 'Malawi (+265)'},
- {code2: 'MY', name: 'Malaysia (+60)'},
- {code2: 'MV', name: 'Maldives (+960)'},
- {code2: 'ML', name: 'Mali (+223)'},
- {code2: 'MT', name: 'Malta (+356)'},
- {code2: 'MH', name: 'Marshall Islands (+692)'},
- {code2: 'MQ', name: 'Martinique (+596)'},
- {code2: 'MR', name: 'Mauritania (+222)'},
- {code2: 'MU', name: 'Mauritius (+230)'},
- {code2: 'YT', name: 'Mayotte (+262)'},
- {code2: 'MX', name: 'Mexico (+52)'},
- {code2: 'FM', name: 'Micronesia (Federated States of) (+691)'},
- {code2: 'MD', name: 'Moldova, Republic of (+373)'},
- {code2: 'MC', name: 'Monaco (+377)'},
- {code2: 'MN', name: 'Mongolia (+976)'},
- {code2: 'ME', name: 'Montenegro (+382)'},
- {code2: 'MS', name: 'Montserrat (+1)'},
- {code2: 'MA', name: 'Morocco (+212)'},
- {code2: 'MZ', name: 'Mozambique (+258)'},
- {code2: 'MM', name: 'Myanmar (+95)'},
- {code2: 'NA', name: 'Namibia (+264)'},
- {code2: 'NR', name: 'Nauru (+674)'},
- {code2: 'NP', name: 'Nepal (+977)'},
- {code2: 'NL', name: 'Netherlands, Kingdom of the (+31)'},
- {code2: 'NC', name: 'New Caledonia (+687)'},
- {code2: 'NZ', name: 'New Zealand (+64)'},
- {code2: 'NI', name: 'Nicaragua (+505)'},
- {code2: 'NE', name: 'Niger (+227)'},
- {code2: 'NG', name: 'Nigeria (+234)'},
- {code2: 'NU', name: 'Niue (+683)'},
- {code2: 'NF', name: 'Norfolk Island (+672)'},
- {code2: 'MK', name: 'North Macedonia (+389)'},
- {code2: 'MP', name: 'Northern Mariana Islands (+1)'},
- {code2: 'NO', name: 'Norway (+47)'},
- {code2: 'OM', name: 'Oman (+968)'},
- {code2: 'PK', name: 'Pakistan (+92)'},
- {code2: 'PW', name: 'Palau (+680)'},
- {code2: 'PS', name: 'Palestine, State of (+970)'},
- {code2: 'PA', name: 'Panama (+507)'},
- {code2: 'PG', name: 'Papua New Guinea (+675)'},
- {code2: 'PY', name: 'Paraguay (+595)'},
- {code2: 'PE', name: 'Peru (+51)'},
- {code2: 'PH', name: 'Philippines (+63)'},
- {code2: 'PL', name: 'Poland (+48)'},
- {code2: 'PT', name: 'Portugal (+351)'},
- {code2: 'PR', name: 'Puerto Rico (+1)'},
- {code2: 'QA', name: 'Qatar (+974)'},
- {code2: 'RE', name: 'RƩunion (+262)'},
- {code2: 'RO', name: 'Romania (+40)'},
- {code2: 'RU', name: 'Russian Federation (+7)'},
- {code2: 'RW', name: 'Rwanda (+250)'},
- {code2: 'BL', name: 'Saint BarthƩlemy (+590)'},
- {code2: 'SH', name: 'Saint Helena, Ascension and Tristan da Cunha (+290)'},
- {code2: 'KN', name: 'Saint Kitts and Nevis (+1)'},
- {code2: 'LC', name: 'Saint Lucia (+1)'},
- {code2: 'MF', name: 'Saint Martin (French part) (+590)'},
- {code2: 'PM', name: 'Saint Pierre and Miquelon (+508)'},
- {code2: 'VC', name: 'Saint Vincent and the Grenadines (+1)'},
- {code2: 'WS', name: 'Samoa (+685)'},
- {code2: 'SM', name: 'San Marino (+378)'},
- {code2: 'ST', name: 'Sao Tome and Principe (+239)'},
- {code2: 'SA', name: 'Saudi Arabia (+966)'},
- {code2: 'SN', name: 'Senegal (+221)'},
- {code2: 'RS', name: 'Serbia (+381)'},
- {code2: 'SC', name: 'Seychelles (+248)'},
- {code2: 'SL', name: 'Sierra Leone (+232)'},
- {code2: 'SG', name: 'Singapore (+65)'},
- {code2: 'SX', name: 'Sint Maarten (Dutch part) (+1)'},
- {code2: 'SK', name: 'Slovakia (+421)'},
- {code2: 'SI', name: 'Slovenia (+386)'},
- {code2: 'SB', name: 'Solomon Islands (+677)'},
- {code2: 'SO', name: 'Somalia (+252)'},
- {code2: 'ZA', name: 'South Africa (+27)'},
- {code2: 'SS', name: 'South Sudan (+211)'},
- {code2: 'ES', name: 'Spain (+34)'},
- {code2: 'LK', name: 'Sri Lanka (+94)'},
- {code2: 'SD', name: 'Sudan (+249)'},
- {code2: 'SR', name: 'Suriname (+597)'},
- {code2: 'SJ', name: 'Svalbard and Jan Mayen (+47)'},
- {code2: 'SE', name: 'Sweden (+46)'},
- {code2: 'CH', name: 'Switzerland (+41)'},
- {code2: 'SY', name: 'Syrian Arab Republic (+963)'},
- {code2: 'TW', name: 'Taiwan (+886)'},
- {code2: 'TJ', name: 'Tajikistan (+992)'},
- {code2: 'TZ', name: 'Tanzania, United Republic of (+255)'},
- {code2: 'TH', name: 'Thailand (+66)'},
- {code2: 'TL', name: 'Timor-Leste (+670)'},
- {code2: 'TG', name: 'Togo (+228)'},
- {code2: 'TK', name: 'Tokelau (+690)'},
- {code2: 'TO', name: 'Tonga (+676)'},
- {code2: 'TT', name: 'Trinidad and Tobago (+1)'},
- {code2: 'TN', name: 'Tunisia (+216)'},
- {code2: 'TR', name: 'Türkiye (+90)'},
- {code2: 'TM', name: 'Turkmenistan (+993)'},
- {code2: 'TC', name: 'Turks and Caicos Islands (+1)'},
- {code2: 'TV', name: 'Tuvalu (+688)'},
- {code2: 'UG', name: 'Uganda (+256)'},
- {code2: 'UA', name: 'Ukraine (+380)'},
- {code2: 'AE', name: 'United Arab Emirates (+971)'},
- {
- code2: 'GB',
- name: 'United Kingdom of Great Britain and Northern Ireland (+44)',
- },
- {code2: 'US', name: 'United States of America (+1)'},
- {code2: 'UY', name: 'Uruguay (+598)'},
- {code2: 'UZ', name: 'Uzbekistan (+998)'},
- {code2: 'VU', name: 'Vanuatu (+678)'},
- {code2: 'VE', name: 'Venezuela (Bolivarian Republic of) (+58)'},
- {code2: 'VN', name: 'Viet Nam (+84)'},
- {code2: 'VG', name: 'Virgin Islands (British) (+1)'},
- {code2: 'VI', name: 'Virgin Islands (U.S.) (+1)'},
- {code2: 'WF', name: 'Wallis and Futuna (+681)'},
- {code2: 'EH', name: 'Western Sahara (+212)'},
- {code2: 'YE', name: 'Yemen (+967)'},
- {code2: 'ZM', name: 'Zambia (+260)'},
- {code2: 'ZW', name: 'Zimbabwe (+263)'},
-]
diff --git a/src/lib/hooks/useInitialNumToRender.ts b/src/lib/hooks/useInitialNumToRender.ts
new file mode 100644
index 0000000000..942f0404ab
--- /dev/null
+++ b/src/lib/hooks/useInitialNumToRender.ts
@@ -0,0 +1,11 @@
+import React from 'react'
+import {Dimensions} from 'react-native'
+
+const MIN_POST_HEIGHT = 100
+
+export function useInitialNumToRender(minItemHeight: number = MIN_POST_HEIGHT) {
+ return React.useMemo(() => {
+ const screenHeight = Dimensions.get('window').height
+ return Math.ceil(screenHeight / minItemHeight) + 1
+ }, [minItemHeight])
+}
diff --git a/src/lib/hooks/useIntentHandler.ts b/src/lib/hooks/useIntentHandler.ts
new file mode 100644
index 0000000000..8741530b50
--- /dev/null
+++ b/src/lib/hooks/useIntentHandler.ts
@@ -0,0 +1,93 @@
+import React from 'react'
+import * as Linking from 'expo-linking'
+import {isNative} from 'platform/detection'
+import {useComposerControls} from 'state/shell'
+import {useSession} from 'state/session'
+import {useCloseAllActiveElements} from 'state/util'
+
+type IntentType = 'compose'
+
+const VALID_IMAGE_REGEX = /^[\w.:\-_/]+\|\d+(\.\d+)?\|\d+(\.\d+)?$/
+
+export function useIntentHandler() {
+ const incomingUrl = Linking.useURL()
+ const composeIntent = useComposeIntent()
+
+ React.useEffect(() => {
+ const handleIncomingURL = (url: string) => {
+ // We want to be able to support bluesky:// deeplinks. It's unnatural for someone to use a deeplink with three
+ // slashes, like bluesky:///intent/follow. However, supporting just two slashes causes us to have to take care
+ // of two cases when parsing the url. If we ensure there is a third slash, we can always ensure the first
+ // path parameter is in pathname rather than in hostname.
+ if (url.startsWith('bluesky://') && !url.startsWith('bluesky:///')) {
+ url = url.replace('bluesky://', 'bluesky:///')
+ }
+
+ const urlp = new URL(url)
+ const [_, intent, intentType] = urlp.pathname.split('/')
+
+ // On native, our links look like bluesky://intent/SomeIntent, so we have to check the hostname for the
+ // intent check. On web, we have to check the first part of the path since we have an actual hostname
+ const isIntent = intent === 'intent'
+ const params = urlp.searchParams
+
+ if (!isIntent) return
+
+ switch (intentType as IntentType) {
+ case 'compose': {
+ composeIntent({
+ text: params.get('text'),
+ imageUrisStr: params.get('imageUris'),
+ })
+ }
+ }
+ }
+
+ if (incomingUrl) handleIncomingURL(incomingUrl)
+ }, [incomingUrl, composeIntent])
+}
+
+function useComposeIntent() {
+ const closeAllActiveElements = useCloseAllActiveElements()
+ const {openComposer} = useComposerControls()
+ const {hasSession} = useSession()
+
+ return React.useCallback(
+ ({
+ text,
+ imageUrisStr,
+ }: {
+ text: string | null
+ imageUrisStr: string | null // unused for right now, will be used later with intents
+ }) => {
+ if (!hasSession) return
+
+ closeAllActiveElements()
+
+ const imageUris = imageUrisStr
+ ?.split(',')
+ .filter(part => {
+ // For some security, we're going to filter out any image uri that is external. We don't want someone to
+ // be able to provide some link like "bluesky://intent/compose?imageUris=https://IHaveYourIpNow.com/image.jpeg
+ // and we load that image
+ if (part.includes('https://') || part.includes('http://')) {
+ return false
+ }
+ // We also should just filter out cases that don't have all the info we need
+ return VALID_IMAGE_REGEX.test(part)
+ })
+ .map(part => {
+ const [uri, width, height] = part.split('|')
+ return {uri, width: Number(width), height: Number(height)}
+ })
+
+ setTimeout(() => {
+ openComposer({
+ text: text ?? undefined,
+ imageUris: isNative ? imageUris : undefined,
+ })
+ }, 500)
+ },
+ [hasSession, closeAllActiveElements, openComposer],
+ )
+}
diff --git a/src/lib/link-meta/link-meta.ts b/src/lib/link-meta/link-meta.ts
index c7c8d4130a..fa951432e8 100644
--- a/src/lib/link-meta/link-meta.ts
+++ b/src/lib/link-meta/link-meta.ts
@@ -26,7 +26,7 @@ export interface LinkMeta {
export async function getLinkMeta(
agent: BskyAgent,
url: string,
- timeout = 5e3,
+ timeout = 15e3,
): Promise {
if (isBskyAppUrl(url)) {
return extractBskyMeta(agent, url)
diff --git a/src/lib/moderatePost_wrapped.ts b/src/lib/moderatePost_wrapped.ts
index 2195b23044..9f6fa9c076 100644
--- a/src/lib/moderatePost_wrapped.ts
+++ b/src/lib/moderatePost_wrapped.ts
@@ -2,19 +2,152 @@ import {
AppBskyEmbedRecord,
AppBskyEmbedRecordWithMedia,
moderatePost,
+ AppBskyActorDefs,
+ AppBskyFeedPost,
+ AppBskyRichtextFacet,
+ AppBskyEmbedImages,
+ AppBskyEmbedExternal,
} from '@atproto/api'
type ModeratePost = typeof moderatePost
type Options = Parameters[1] & {
hiddenPosts?: string[]
+ mutedWords?: AppBskyActorDefs.MutedWord[]
+}
+
+const REGEX = {
+ LEADING_TRAILING_PUNCTUATION: /(?:^\p{P}+|\p{P}+$)/gu,
+ ESCAPE: /[[\]{}()*+?.\\^$|\s]/g,
+ SEPARATORS: /[\/\-\ā\ā\(\)\[\]\_]+/g,
+ WORD_BOUNDARY: /[\s\n\t\r\f\v]+?/g,
+}
+
+/**
+ * List of 2-letter lang codes for languages that either don't use spaces, or
+ * don't use spaces in a way conducive to word-based filtering.
+ *
+ * For these, we use a simple `String.includes` to check for a match.
+ */
+const LANGUAGE_EXCEPTIONS = [
+ 'ja', // Japanese
+ 'zh', // Chinese
+ 'ko', // Korean
+ 'th', // Thai
+ 'vi', // Vietnamese
+]
+
+export function hasMutedWord({
+ mutedWords,
+ text,
+ facets,
+ outlineTags,
+ languages,
+ isOwnPost,
+}: {
+ mutedWords: AppBskyActorDefs.MutedWord[]
+ text: string
+ facets?: AppBskyRichtextFacet.Main[]
+ outlineTags?: string[]
+ languages?: string[]
+ isOwnPost: boolean
+}) {
+ if (isOwnPost) return false
+
+ const exception = LANGUAGE_EXCEPTIONS.includes(languages?.[0] || '')
+ const tags = ([] as string[])
+ .concat(outlineTags || [])
+ .concat(
+ facets
+ ?.filter(facet => {
+ return facet.features.find(feature =>
+ AppBskyRichtextFacet.isTag(feature),
+ )
+ })
+ .map(t => t.features[0].tag as string) || [],
+ )
+ .map(t => t.toLowerCase())
+
+ for (const mute of mutedWords) {
+ const mutedWord = mute.value.toLowerCase()
+ const postText = text.toLowerCase()
+
+ // `content` applies to tags as well
+ if (tags.includes(mutedWord)) return true
+ // rest of the checks are for `content` only
+ if (!mute.targets.includes('content')) continue
+ // single character or other exception, has to use includes
+ if ((mutedWord.length === 1 || exception) && postText.includes(mutedWord))
+ return true
+ // too long
+ if (mutedWord.length > postText.length) continue
+ // exact match
+ if (mutedWord === postText) return true
+ // any muted phrase with space or punctuation
+ if (/(?:\s|\p{P})+?/u.test(mutedWord) && postText.includes(mutedWord))
+ return true
+
+ // check individual character groups
+ const words = postText.split(REGEX.WORD_BOUNDARY)
+ for (const word of words) {
+ if (word === mutedWord) return true
+
+ // compare word without leading/trailing punctuation, but allow internal
+ // punctuation (such as `s@ssy`)
+ const wordTrimmedPunctuation = word.replace(
+ REGEX.LEADING_TRAILING_PUNCTUATION,
+ '',
+ )
+
+ if (mutedWord === wordTrimmedPunctuation) return true
+ if (mutedWord.length > wordTrimmedPunctuation.length) continue
+
+ // handle hyphenated, slash separated words, etc
+ if (REGEX.SEPARATORS.test(wordTrimmedPunctuation)) {
+ // check against full normalized phrase
+ const wordNormalizedSeparators = wordTrimmedPunctuation.replace(
+ REGEX.SEPARATORS,
+ ' ',
+ )
+ const mutedWordNormalizedSeparators = mutedWord.replace(
+ REGEX.SEPARATORS,
+ ' ',
+ )
+ // hyphenated (or other sep) to spaced words
+ if (wordNormalizedSeparators === mutedWordNormalizedSeparators)
+ return true
+
+ /* Disabled for now e.g. `super-cool` to `supercool`
+ const wordNormalizedCompressed = wordNormalizedSeparators.replace(
+ REGEX.WORD_BOUNDARY,
+ '',
+ )
+ const mutedWordNormalizedCompressed =
+ mutedWordNormalizedSeparators.replace(/\s+?/g, '')
+ // hyphenated (or other sep) to non-hyphenated contiguous word
+ if (mutedWordNormalizedCompressed === wordNormalizedCompressed)
+ return true
+ */
+
+ // then individual parts of separated phrases/words
+ const wordParts = wordTrimmedPunctuation.split(REGEX.SEPARATORS)
+ for (const wp of wordParts) {
+ // still retain internal punctuation
+ if (wp === mutedWord) return true
+ }
+ }
+ }
+ }
+
+ return false
}
export function moderatePost_wrapped(
subject: Parameters[0],
opts: Options,
) {
- const {hiddenPosts = [], ...options} = opts
+ const {hiddenPosts = [], mutedWords = [], ...options} = opts
const moderations = moderatePost(subject, options)
+ const isOwnPost = subject.author.did === opts.userDid
if (hiddenPosts.includes(subject.uri)) {
moderations.content.filter = true
@@ -29,8 +162,53 @@ export function moderatePost_wrapped(
}
}
+ if (AppBskyFeedPost.isRecord(subject.record)) {
+ let muted = hasMutedWord({
+ mutedWords,
+ text: subject.record.text,
+ facets: subject.record.facets || [],
+ outlineTags: subject.record.tags || [],
+ languages: subject.record.langs,
+ isOwnPost,
+ })
+
+ if (
+ subject.record.embed &&
+ AppBskyEmbedImages.isMain(subject.record.embed)
+ ) {
+ for (const image of subject.record.embed.images) {
+ muted =
+ muted ||
+ hasMutedWord({
+ mutedWords,
+ text: image.alt,
+ facets: [],
+ outlineTags: [],
+ languages: subject.record.langs,
+ isOwnPost,
+ })
+ }
+ }
+
+ if (muted) {
+ 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: 'muted-word',
+ source: {type: 'user'},
+ priority: 1,
+ }
+ }
+ }
+ }
+
if (subject.embed) {
let embedHidden = false
+ let embedMuted = false
+ let externalMuted = false
+
if (AppBskyEmbedRecord.isViewRecord(subject.embed.record)) {
embedHidden = hiddenPosts.includes(subject.embed.record.uri)
}
@@ -40,6 +218,139 @@ export function moderatePost_wrapped(
) {
embedHidden = hiddenPosts.includes(subject.embed.record.record.uri)
}
+
+ if (AppBskyEmbedRecord.isViewRecord(subject.embed.record)) {
+ if (AppBskyFeedPost.isRecord(subject.embed.record.value)) {
+ const embeddedPost = subject.embed.record.value
+
+ embedMuted =
+ embedMuted ||
+ hasMutedWord({
+ mutedWords,
+ text: embeddedPost.text,
+ facets: embeddedPost.facets,
+ outlineTags: embeddedPost.tags,
+ languages: embeddedPost.langs,
+ isOwnPost,
+ })
+
+ if (AppBskyEmbedImages.isMain(embeddedPost.embed)) {
+ for (const image of embeddedPost.embed.images) {
+ embedMuted =
+ embedMuted ||
+ hasMutedWord({
+ mutedWords,
+ text: image.alt,
+ facets: [],
+ outlineTags: [],
+ languages: embeddedPost.langs,
+ isOwnPost,
+ })
+ }
+ }
+
+ if (AppBskyEmbedExternal.isMain(embeddedPost.embed)) {
+ const {external} = embeddedPost.embed
+
+ embedMuted =
+ embedMuted ||
+ hasMutedWord({
+ mutedWords,
+ text: external.title + ' ' + external.description,
+ facets: [],
+ outlineTags: [],
+ languages: [],
+ isOwnPost,
+ })
+ }
+
+ if (AppBskyEmbedRecordWithMedia.isMain(embeddedPost.embed)) {
+ if (AppBskyEmbedExternal.isMain(embeddedPost.embed.media)) {
+ const {external} = embeddedPost.embed.media
+
+ embedMuted =
+ embedMuted ||
+ hasMutedWord({
+ mutedWords,
+ text: external.title + ' ' + external.description,
+ facets: [],
+ outlineTags: [],
+ languages: [],
+ isOwnPost,
+ })
+ }
+
+ if (AppBskyEmbedImages.isMain(embeddedPost.embed.media)) {
+ for (const image of embeddedPost.embed.media.images) {
+ embedMuted =
+ embedMuted ||
+ hasMutedWord({
+ mutedWords,
+ text: image.alt,
+ facets: [],
+ outlineTags: [],
+ languages: AppBskyFeedPost.isRecord(embeddedPost.record)
+ ? embeddedPost.langs
+ : [],
+ isOwnPost,
+ })
+ }
+ }
+ }
+ }
+ }
+
+ if (AppBskyEmbedExternal.isView(subject.embed)) {
+ const {external} = subject.embed
+
+ externalMuted =
+ externalMuted ||
+ hasMutedWord({
+ mutedWords,
+ text: external.title + ' ' + external.description,
+ facets: [],
+ outlineTags: [],
+ languages: [],
+ isOwnPost,
+ })
+ }
+
+ if (
+ AppBskyEmbedRecordWithMedia.isView(subject.embed) &&
+ AppBskyEmbedRecord.isViewRecord(subject.embed.record.record)
+ ) {
+ if (AppBskyFeedPost.isRecord(subject.embed.record.record.value)) {
+ const post = subject.embed.record.record.value
+ embedMuted =
+ embedMuted ||
+ hasMutedWord({
+ mutedWords,
+ text: post.text,
+ facets: post.facets,
+ outlineTags: post.tags,
+ languages: post.langs,
+ isOwnPost,
+ })
+ }
+
+ if (AppBskyEmbedImages.isView(subject.embed.media)) {
+ for (const image of subject.embed.media.images) {
+ embedMuted =
+ embedMuted ||
+ hasMutedWord({
+ mutedWords,
+ text: image.alt,
+ facets: [],
+ outlineTags: [],
+ languages: AppBskyFeedPost.isRecord(subject.record)
+ ? subject.record.langs
+ : [],
+ isOwnPost,
+ })
+ }
+ }
+ }
+
if (embedHidden) {
moderations.embed.filter = true
moderations.embed.blur = true
@@ -51,6 +362,17 @@ export function moderatePost_wrapped(
priority: 1,
}
}
+ } else if (externalMuted || embedMuted) {
+ 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: 'muted-word',
+ source: {type: 'user'},
+ priority: 1,
+ }
+ }
}
}
diff --git a/src/lib/moderation.ts b/src/lib/moderation.ts
index bf19c208ad..b6ebb47a02 100644
--- a/src/lib/moderation.ts
+++ b/src/lib/moderation.ts
@@ -67,6 +67,13 @@ export function describeModerationCause(
description: 'You have hidden this post',
}
}
+ // @ts-ignore Temporary extension to the moderation system -prf
+ if (cause.type === 'muted-word') {
+ return {
+ name: 'Post hidden by muted word',
+ description: `You've chosen to hide a word or tag within this post.`,
+ }
+ }
return cause.labelDef.strings[context].en
}
diff --git a/src/lib/routes/links.ts b/src/lib/routes/links.ts
index 538f30cd31..9dfdab909b 100644
--- a/src/lib/routes/links.ts
+++ b/src/lib/routes/links.ts
@@ -25,3 +25,13 @@ export function makeCustomFeedLink(
export function makeListLink(did: string, rkey: string, ...segments: string[]) {
return [`/profile`, did, 'lists', rkey, ...segments].join('/')
}
+
+export function makeTagLink(did: string) {
+ return `/search?q=${encodeURIComponent(did)}`
+}
+
+export function makeSearchLink(props: {query: string; from?: 'me' | string}) {
+ return `/search?q=${encodeURIComponent(
+ props.query + (props.from ? ` from:${props.from}` : ''),
+ )}`
+}
diff --git a/src/lib/routes/types.ts b/src/lib/routes/types.ts
index 90ae758304..6756a62a67 100644
--- a/src/lib/routes/types.ts
+++ b/src/lib/routes/types.ts
@@ -30,9 +30,11 @@ export type CommonNavigatorParams = {
CopyrightPolicy: undefined
AppPasswords: undefined
SavedFeeds: undefined
- PreferencesHomeFeed: undefined
+ PreferencesFollowingFeed: undefined
PreferencesThreads: undefined
PreferencesExternalEmbeds: undefined
+ Search: {q?: string}
+ Hashtag: {tag: string; author?: string}
}
export type BottomTabNavigatorParams = CommonNavigatorParams & {
@@ -68,6 +70,7 @@ export type FlatNavigatorParams = CommonNavigatorParams & {
Search: {q?: string}
Feeds: undefined
Notifications: undefined
+ Hashtag: {tag: string; author?: string}
}
export type AllNavigatorParams = CommonNavigatorParams & {
@@ -80,6 +83,7 @@ export type AllNavigatorParams = CommonNavigatorParams & {
NotificationsTab: undefined
Notifications: undefined
MyProfileTab: undefined
+ Hashtag: {tag: string; author?: string}
}
// NOTE
diff --git a/src/lib/statsig/statsig.tsx b/src/lib/statsig/statsig.tsx
new file mode 100644
index 0000000000..43822dda85
--- /dev/null
+++ b/src/lib/statsig/statsig.tsx
@@ -0,0 +1,63 @@
+import React from 'react'
+import {
+ Statsig,
+ StatsigProvider,
+ useGate as useStatsigGate,
+} from 'statsig-react-native-expo'
+import {useSession} from '../../state/session'
+import {sha256} from 'js-sha256'
+
+const statsigOptions = {
+ environment: {
+ tier: process.env.NODE_ENV === 'development' ? 'development' : 'production',
+ },
+ // Don't block on waiting for network. The fetched config will kick in on next load.
+ // This ensures the UI is always consistent and doesn't update mid-session.
+ // Note this makes cold load (no local storage) and private mode return `false` for all gates.
+ initTimeoutMs: 1,
+}
+
+export function logEvent(
+ eventName: string,
+ value?: string | number | null,
+ metadata?: Record | null,
+) {
+ Statsig.logEvent(eventName, value, metadata)
+}
+
+export function useGate(gateName: string) {
+ const {isLoading, value} = useStatsigGate(gateName)
+ if (isLoading) {
+ // This should not happen because of waitForInitialization={true}.
+ console.error('Did not expected isLoading to ever be true.')
+ }
+ return value
+}
+
+function toStatsigUser(did: string | undefined) {
+ let userID: string | undefined
+ if (did) {
+ userID = sha256(did)
+ }
+ return {userID}
+}
+
+export function Provider({children}: {children: React.ReactNode}) {
+ const {currentAccount} = useSession()
+ const currentStatsigUser = React.useMemo(
+ () => toStatsigUser(currentAccount?.did),
+ [currentAccount?.did],
+ )
+ return (
+
+ {children}
+
+ )
+}
diff --git a/src/lib/statsig/statsig.web.tsx b/src/lib/statsig/statsig.web.tsx
new file mode 100644
index 0000000000..fc66e8d9fd
--- /dev/null
+++ b/src/lib/statsig/statsig.web.tsx
@@ -0,0 +1,63 @@
+import React from 'react'
+import {
+ Statsig,
+ StatsigProvider,
+ useGate as useStatsigGate,
+} from 'statsig-react'
+import {useSession} from '../../state/session'
+import {sha256} from 'js-sha256'
+
+const statsigOptions = {
+ environment: {
+ tier: process.env.NODE_ENV === 'development' ? 'development' : 'production',
+ },
+ // Don't block on waiting for network. The fetched config will kick in on next load.
+ // This ensures the UI is always consistent and doesn't update mid-session.
+ // Note this makes cold load (no local storage) and private mode return `false` for all gates.
+ initTimeoutMs: 1,
+}
+
+export function logEvent(
+ eventName: string,
+ value?: string | number | null,
+ metadata?: Record | null,
+) {
+ Statsig.logEvent(eventName, value, metadata)
+}
+
+export function useGate(gateName: string) {
+ const {isLoading, value} = useStatsigGate(gateName)
+ if (isLoading) {
+ // This should not happen because of waitForInitialization={true}.
+ console.error('Did not expected isLoading to ever be true.')
+ }
+ return value
+}
+
+function toStatsigUser(did: string | undefined) {
+ let userID: string | undefined
+ if (did) {
+ userID = sha256(did)
+ }
+ return {userID}
+}
+
+export function Provider({children}: {children: React.ReactNode}) {
+ const {currentAccount} = useSession()
+ const currentStatsigUser = React.useMemo(
+ () => toStatsigUser(currentAccount?.did),
+ [currentAccount?.did],
+ )
+ return (
+
+ {children}
+
+ )
+}
diff --git a/src/lib/strings/embed-player.ts b/src/lib/strings/embed-player.ts
index 21a575b91c..1cf3b12937 100644
--- a/src/lib/strings/embed-player.ts
+++ b/src/lib/strings/embed-player.ts
@@ -343,45 +343,45 @@ export function parseEmbedPlayerFromUrl(
}
}
-export function getPlayerHeight({
+export function getPlayerAspect({
type,
- width,
hasThumb,
+ width,
}: {
type: EmbedPlayerParams['type']
- width: number
hasThumb: boolean
-}) {
- if (!hasThumb) return (width / 16) * 9
+ width: number
+}): {aspectRatio?: number; height?: number} {
+ if (!hasThumb) return {aspectRatio: 16 / 9}
switch (type) {
case 'youtube_video':
case 'twitch_video':
case 'vimeo_video':
- return (width / 16) * 9
+ return {aspectRatio: 16 / 9}
case 'youtube_short':
if (SCREEN_HEIGHT < 600) {
- return ((width / 9) * 16) / 1.75
+ return {aspectRatio: (9 / 16) * 1.75}
} else {
- return ((width / 9) * 16) / 1.5
+ return {aspectRatio: (9 / 16) * 1.5}
}
case 'spotify_album':
case 'apple_music_album':
case 'apple_music_playlist':
case 'spotify_playlist':
case 'soundcloud_set':
- return 380
+ return {height: 380}
case 'spotify_song':
if (width <= 300) {
- return 155
+ return {height: 155}
}
- return 232
+ return {height: 232}
case 'soundcloud_track':
- return 165
+ return {height: 165}
case 'apple_music_song':
- return 150
+ return {height: 150}
default:
- return width
+ return {aspectRatio: 16 / 9}
}
}
diff --git a/src/lib/strings/handles.ts b/src/lib/strings/handles.ts
index 6ce4624357..a18fef453e 100644
--- a/src/lib/strings/handles.ts
+++ b/src/lib/strings/handles.ts
@@ -1,3 +1,8 @@
+// Regex from the go implementation
+// https://github.com/bluesky-social/indigo/blob/main/atproto/syntax/handle.go#L10
+const VALIDATE_REGEX =
+ /^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$/
+
export function makeValidHandle(str: string): string {
if (str.length > 20) {
str = str.slice(0, 20)
@@ -19,3 +24,27 @@ export function isInvalidHandle(handle: string): boolean {
export function sanitizeHandle(handle: string, prefix = ''): string {
return isInvalidHandle(handle) ? 'ā Invalid Handle' : `${prefix}${handle}`
}
+
+export interface IsValidHandle {
+ handleChars: boolean
+ frontLength: boolean
+ totalLength: boolean
+ overall: boolean
+}
+
+// More checks from https://github.com/bluesky-social/atproto/blob/main/packages/pds/src/handle/index.ts#L72
+export function validateHandle(str: string, userDomain: string): IsValidHandle {
+ const fullHandle = createFullHandle(str, userDomain)
+
+ const results = {
+ handleChars:
+ !str || (VALIDATE_REGEX.test(fullHandle) && !str.includes('.')),
+ frontLength: str.length >= 3,
+ totalLength: fullHandle.length <= 253,
+ }
+
+ return {
+ ...results,
+ overall: !Object.values(results).includes(false),
+ }
+}
diff --git a/src/lib/strings/helpers.ts b/src/lib/strings/helpers.ts
index e2abe90195..de4562d2c8 100644
--- a/src/lib/strings/helpers.ts
+++ b/src/lib/strings/helpers.ts
@@ -8,10 +8,27 @@ export function pluralize(n: number, base: string, plural?: string): string {
return base + 's'
}
-export function enforceLen(str: string, len: number, ellipsis = false): string {
+export function enforceLen(
+ str: string,
+ len: number,
+ ellipsis = false,
+ mode: 'end' | 'middle' = 'end',
+): string {
str = str || ''
if (str.length > len) {
- return str.slice(0, len) + (ellipsis ? '...' : '')
+ if (ellipsis) {
+ if (mode === 'end') {
+ return str.slice(0, len) + 'ā¦'
+ } else if (mode === 'middle') {
+ const half = Math.floor(len / 2)
+ return str.slice(0, half) + 'ā¦' + str.slice(-half)
+ } else {
+ // fallback
+ return str.slice(0, len)
+ }
+ } else {
+ return str.slice(0, len)
+ }
}
return str
}
diff --git a/src/lib/strings/time.ts b/src/lib/strings/time.ts
index 05a60e94bc..3e162af1a2 100644
--- a/src/lib/strings/time.ts
+++ b/src/lib/strings/time.ts
@@ -23,7 +23,7 @@ export function ago(date: number | string | Date): string {
} else if (diffSeconds < DAY) {
return `${Math.floor(diffSeconds / HOUR)}h`
} else if (diffSeconds < MONTH) {
- return `${Math.floor(diffSeconds / DAY)}d`
+ return `${Math.round(diffSeconds / DAY)}d`
} else if (diffSeconds < YEAR) {
return `${Math.floor(diffSeconds / MONTH)}mo`
} else {
diff --git a/src/lib/strings/url-helpers.ts b/src/lib/strings/url-helpers.ts
index 8a71718c8d..7729e4a382 100644
--- a/src/lib/strings/url-helpers.ts
+++ b/src/lib/strings/url-helpers.ts
@@ -1,5 +1,5 @@
import {AtUri} from '@atproto/api'
-import {PROD_SERVICE} from 'lib/constants'
+import {BSKY_SERVICE} from 'lib/constants'
import TLDs from 'tlds'
import psl from 'psl'
@@ -28,7 +28,7 @@ export function makeRecordUri(
export function toNiceDomain(url: string): string {
try {
const urlp = new URL(url)
- if (`https://${urlp.host}` === PROD_SERVICE) {
+ if (`https://${urlp.host}` === BSKY_SERVICE) {
return 'Bluesky Social'
}
return urlp.host ? urlp.host : url
@@ -148,6 +148,11 @@ export function feedUriToHref(url: string): string {
export function linkRequiresWarning(uri: string, label: string) {
const labelDomain = labelToDomain(label)
+ // If the uri started with a / we know it is internal.
+ if (uri.startsWith('/')) {
+ return false
+ }
+
let urip
try {
urip = new URL(uri)
@@ -156,18 +161,15 @@ export function linkRequiresWarning(uri: string, label: string) {
}
const host = urip.hostname.toLowerCase()
-
- if (host === 'bsky.app') {
+ // Hosts that end with bsky.app or bsky.social should be trusted by default.
+ if (
+ host.endsWith('bsky.app') ||
+ host.endsWith('bsky.social') ||
+ host.endsWith('blueskyweb.xyz')
+ ) {
// if this is a link to internal content,
// warn if it represents itself as a URL to another app
- if (
- labelDomain &&
- labelDomain !== 'bsky.app' &&
- isPossiblyAUrl(labelDomain)
- ) {
- return true
- }
- return false
+ return !!labelDomain && labelDomain !== host && isPossiblyAUrl(labelDomain)
} else {
// if this is a link to external content,
// warn if the label doesnt match the target
diff --git a/src/lib/themes.ts b/src/lib/themes.ts
index 9a3880b92c..bd75aabea6 100644
--- a/src/lib/themes.ts
+++ b/src/lib/themes.ts
@@ -306,7 +306,7 @@ export const darkTheme: Theme = {
// non-standard
textVeryLight: darkPalette.contrast_400,
- replyLine: darkPalette.contrast_100,
+ replyLine: darkPalette.contrast_200,
replyLineDot: darkPalette.contrast_200,
unreadNotifBg: darkPalette.primary_975,
unreadNotifBorder: darkPalette.primary_900,
@@ -344,6 +344,25 @@ export const dimTheme: Theme = {
default: {
...darkTheme.palette.default,
background: dimPalette.black,
+ backgroundLight: dimPalette.contrast_50,
+ text: dimPalette.white,
+ textLight: dimPalette.contrast_700,
+ textInverted: dimPalette.black,
+ link: dimPalette.primary_500,
+ border: dimPalette.contrast_100,
+ borderDark: dimPalette.contrast_200,
+ icon: dimPalette.contrast_500,
+
+ // non-standard
+ textVeryLight: dimPalette.contrast_400,
+ replyLine: dimPalette.contrast_200,
+ replyLineDot: dimPalette.contrast_200,
+ unreadNotifBg: dimPalette.primary_975,
+ unreadNotifBorder: dimPalette.primary_900,
+ postCtrl: dimPalette.contrast_500,
+ brandText: dimPalette.primary_500,
+ emptyStateIcon: dimPalette.contrast_300,
+ borderLinkHover: dimPalette.contrast_300,
},
},
}
diff --git a/src/locale/locales/ca/messages.po b/src/locale/locales/ca/messages.po
index cec44e512d..927599ab43 100644
--- a/src/locale/locales/ca/messages.po
+++ b/src/locale/locales/ca/messages.po
@@ -32,7 +32,7 @@ msgstr "(sense correu)"
#~ msgid "{0} {purposeLabel} List"
#~ msgstr "Llista {purposeLabel} {0}"
-#: src/view/com/profile/ProfileHeader.tsx:592
+#: src/view/com/profile/ProfileHeader.tsx:593
msgid "{following} following"
msgstr "{following} seguint"
@@ -62,7 +62,7 @@ msgstr "{numUnreadNotifications} no llegides"
msgid "<0/> members"
msgstr "<0/> membres"
-#: src/view/com/profile/ProfileHeader.tsx:594
+#: src/view/com/profile/ProfileHeader.tsx:595
msgid "<0>{following} 0><1>following1>"
msgstr "<0>{following} 0><1>seguint1>"
@@ -78,7 +78,7 @@ msgstr "<0>Segueix alguns0><1>usuaris1><2>recomanats2>"
msgid "<0>Welcome to0><1>Bluesky1>"
msgstr "<0>Benvingut a0><1>Bluesky1>"
-#: src/view/com/profile/ProfileHeader.tsx:557
+#: src/view/com/profile/ProfileHeader.tsx:558
msgid "ā Invalid Handle"
msgstr "ā Identificador invĆ lid"
@@ -91,11 +91,11 @@ msgid "A new version of the app is available. Please update to continue using th
msgstr "Hi ha una nova versió d'aquesta aplicació. Actualitza-la per continuar."
#: src/view/com/util/ViewHeader.tsx:83
-#: src/view/screens/Search/Search.tsx:624
+#: src/view/screens/Search/Search.tsx:647
msgid "Access navigation links and settings"
msgstr "Accedeix als enllaços de navegació i configuració"
-#: src/view/com/pager/FeedsTabBarMobile.tsx:89
+#: src/view/com/home/HomeHeaderLayoutMobile.tsx:51
msgid "Access profile and other navigation links"
msgstr "Accedeix al perfil i altres enllaços de navegació"
@@ -110,11 +110,11 @@ msgstr "Accessibilitat"
msgid "Account"
msgstr "Compte"
-#: src/view/com/profile/ProfileHeader.tsx:245
+#: src/view/com/profile/ProfileHeader.tsx:246
msgid "Account blocked"
msgstr "Compte bloquejat"
-#: src/view/com/profile/ProfileHeader.tsx:212
+#: src/view/com/profile/ProfileHeader.tsx:213
msgid "Account muted"
msgstr "Compte silenciat"
@@ -134,14 +134,15 @@ msgstr "Opcions del compte"
msgid "Account removed from quick access"
msgstr "Compte eliminat de l'accés rà pid"
-#: src/view/com/profile/ProfileHeader.tsx:267
+#: src/view/com/profile/ProfileHeader.tsx:268
msgid "Account unblocked"
msgstr "Compte desbloquejat"
-#: src/view/com/profile/ProfileHeader.tsx:225
+#: src/view/com/profile/ProfileHeader.tsx:226
msgid "Account unmuted"
msgstr "Compte no silenciat"
+#: src/components/dialogs/MutedWords.tsx:147
#: src/view/com/auth/onboarding/RecommendedFeedsItem.tsx:150
#: src/view/com/modals/ListAddRemoveUsers.tsx:264
#: src/view/com/modals/UserAddRemoveLists.tsx:219
@@ -183,24 +184,32 @@ msgstr "Afegeix detalls"
msgid "Add details to report"
msgstr "Afegeix detalls a l'informe"
-#: src/view/com/composer/Composer.tsx:446
+#: src/view/com/composer/Composer.tsx:453
msgid "Add link card"
msgstr "Afegeix una targeta a l'enllaƧ"
-#: src/view/com/composer/Composer.tsx:451
+#: src/view/com/composer/Composer.tsx:458
msgid "Add link card:"
msgstr "Afegeix una targeta a l'enllaƧ:"
+#: src/components/dialogs/MutedWords.tsx:140
+msgid "Add mute word for configured settings"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:74
+msgid "Add muted words and tags"
+msgstr ""
+
#: src/view/com/modals/ChangeHandle.tsx:417
msgid "Add the following DNS record to your domain:"
msgstr "Afegeix el següent registre DNS al teu domini:"
-#: src/view/com/profile/ProfileHeader.tsx:309
+#: src/view/com/profile/ProfileHeader.tsx:310
msgid "Add to Lists"
msgstr "Afegeix a les llistes"
-#: src/view/com/feeds/FeedSourceCard.tsx:243
-#: src/view/screens/ProfileFeed.tsx:272
+#: src/view/com/feeds/FeedSourceCard.tsx:245
+#: src/view/screens/ProfileFeed.tsx:273
msgid "Add to my feeds"
msgstr "Afegeix als meus canals"
@@ -213,11 +222,11 @@ msgstr "Afegit"
msgid "Added to list"
msgstr "Afegit a la llista"
-#: src/view/com/feeds/FeedSourceCard.tsx:125
+#: src/view/com/feeds/FeedSourceCard.tsx:127
msgid "Added to my feeds"
msgstr "Afegit als meus canals"
-#: src/view/screens/PreferencesHomeFeed.tsx:173
+#: src/view/screens/PreferencesFollowingFeed.tsx:173
msgid "Adjust the number of likes a reply must have to be shown in your feed."
msgstr "Ajusta el nombre de m'agrades que hagi de tenir una resposta per aparĆØixer al teu canal."
@@ -233,6 +242,10 @@ msgstr "El contingut per a adults nomƩs es pot habilitar via web a <0/>."
msgid "Advanced"
msgstr "AvanƧat"
+#: src/view/screens/Feeds.tsx:666
+msgid "All the feeds you've saved, right in one place."
+msgstr ""
+
#: src/view/com/auth/login/ForgotPasswordForm.tsx:221
#: src/view/com/modals/ChangePassword.tsx:168
msgid "Already have a code?"
@@ -306,7 +319,7 @@ msgstr "Configuració de la contrasenya d'aplicació"
msgid "App Passwords"
msgstr "Contrasenyes de l'aplicació"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:250
+#: src/view/com/util/forms/PostDropdownBtn.tsx:295
msgid "Appeal content warning"
msgstr "Advertència d'apel·lació sobre el contingut"
@@ -333,15 +346,16 @@ msgstr "AparenƧa"
msgid "Are you sure you want to delete the app password \"{name}\"?"
msgstr "Confirmes que vols eliminar la contrasenya de l'aplicació \"{name}\"?"
-#: src/view/com/composer/Composer.tsx:143
+#: src/view/com/composer/Composer.tsx:150
msgid "Are you sure you'd like to discard this draft?"
msgstr "Confirmes que vols descartar aquest esborrany?"
-#: src/view/screens/ProfileList.tsx:364
+#: src/components/dialogs/MutedWords.tsx:233
+#: src/view/screens/ProfileList.tsx:365
msgid "Are you sure?"
msgstr "Ho confirmes?"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:233
+#: src/view/com/util/forms/PostDropdownBtn.tsx:278
msgid "Are you sure? This cannot be undone."
msgstr "Ho confirmes? Aquesta acció no es pot desfer."
@@ -357,21 +371,21 @@ msgstr ""
msgid "Artistic or non-erotic nudity."
msgstr "Nuesa artĆstica o no eròtica."
-#: src/view/com/auth/create/CreateAccount.tsx:147
+#: src/view/com/auth/create/CreateAccount.tsx:158
#: src/view/com/auth/login/ChooseAccountForm.tsx:151
#: src/view/com/auth/login/ForgotPasswordForm.tsx:174
#: src/view/com/auth/login/LoginForm.tsx:259
#: src/view/com/auth/login/SetNewPasswordForm.tsx:179
#: src/view/com/modals/report/InputIssueDetails.tsx:46
-#: src/view/com/post-thread/PostThread.tsx:408
-#: src/view/com/post-thread/PostThread.tsx:458
-#: src/view/com/post-thread/PostThread.tsx:466
-#: src/view/com/profile/ProfileHeader.tsx:648
+#: src/view/com/post-thread/PostThread.tsx:472
+#: src/view/com/post-thread/PostThread.tsx:522
+#: src/view/com/post-thread/PostThread.tsx:530
+#: src/view/com/profile/ProfileHeader.tsx:649
#: src/view/com/util/ViewHeader.tsx:81
msgid "Back"
msgstr "Endarrere"
-#: src/view/com/post-thread/PostThread.tsx:416
+#: src/view/com/post-thread/PostThread.tsx:480
msgctxt "action"
msgid "Back"
msgstr "Endarrere"
@@ -384,7 +398,7 @@ msgstr ""
msgid "Basics"
msgstr "Conceptes bĆ sics"
-#: src/view/com/auth/create/Step1.tsx:246
+#: src/view/com/auth/create/Step1.tsx:250
#: src/view/com/modals/BirthDateSettings.tsx:73
msgid "Birthday"
msgstr "Aniversari"
@@ -393,33 +407,33 @@ msgstr "Aniversari"
msgid "Birthday:"
msgstr "Aniversari:"
-#: src/view/com/profile/ProfileHeader.tsx:238
-#: src/view/com/profile/ProfileHeader.tsx:345
+#: src/view/com/profile/ProfileHeader.tsx:239
+#: src/view/com/profile/ProfileHeader.tsx:346
msgid "Block Account"
msgstr "Bloqueja el compte"
-#: src/view/screens/ProfileList.tsx:555
+#: src/view/screens/ProfileList.tsx:556
msgid "Block accounts"
msgstr "Bloqueja comptes"
-#: src/view/screens/ProfileList.tsx:505
+#: src/view/screens/ProfileList.tsx:506
msgid "Block list"
msgstr "Bloqueja una llista"
-#: src/view/screens/ProfileList.tsx:315
+#: src/view/screens/ProfileList.tsx:316
msgid "Block these accounts?"
msgstr "Vols bloquejar aquests comptes?"
-#: src/view/screens/ProfileList.tsx:319
+#: src/view/screens/ProfileList.tsx:320
msgid "Block this List"
msgstr "Bloqueja la llista"
-#: src/view/com/lists/ListCard.tsx:109
-#: src/view/com/util/post-embeds/QuoteEmbed.tsx:60
+#: src/view/com/lists/ListCard.tsx:110
+#: src/view/com/util/post-embeds/QuoteEmbed.tsx:61
msgid "Blocked"
msgstr "Bloquejada"
-#: src/view/screens/Moderation.tsx:123
+#: src/view/screens/Moderation.tsx:142
msgid "Blocked accounts"
msgstr "Comptes bloquejats"
@@ -428,7 +442,7 @@ msgstr "Comptes bloquejats"
msgid "Blocked Accounts"
msgstr "Comptes bloquejats"
-#: src/view/com/profile/ProfileHeader.tsx:240
+#: src/view/com/profile/ProfileHeader.tsx:241
msgid "Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you."
msgstr "Els comptes bloquejats no poden respondre cap fil teu, ni anomenar-te ni interactuar amb tu de cap manera."
@@ -436,15 +450,16 @@ msgstr "Els comptes bloquejats no poden respondre cap fil teu, ni anomenar-te ni
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 "Els comptes bloquejats no poden respondre a cap fil teu, ni anomenar-te ni interactuar amb tu de cap manera. No veurĆ s mai el seu contingut ni ells el teu."
-#: src/view/com/post-thread/PostThread.tsx:267
+#: src/view/com/post-thread/PostThread.tsx:324
msgid "Blocked post."
msgstr "Publicació bloquejada."
-#: src/view/screens/ProfileList.tsx:317
+#: src/view/screens/ProfileList.tsx:318
msgid "Blocking is public. Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you."
msgstr "El bloqueig és públic. Els comptes bloquejats no poden respondre els teus fils, ni mencionar-te ni interactuar amb tu de cap manera."
#: src/view/com/auth/HomeLoggedOutCTA.tsx:93
+#: src/view/com/auth/SplashScreen.web.tsx:133
msgid "Blog"
msgstr "Blog"
@@ -477,7 +492,7 @@ msgstr "Bluesky és públic."
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 utilitza les invitacions per construir una comunitat saludable. Si no coneixes ningĆŗ amb invitacions, pots apuntar-te a la llista d'espera i te n'enviarem una aviat."
-#: src/view/screens/Moderation.tsx:226
+#: src/view/screens/Moderation.tsx:245
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 no mostrarà el teu perfil ni les publicacions als usuaris que no estiguin registrats. Altres aplicacions poden no seguir aquesta demanda. Això no fa que el teu compte sigui privat."
@@ -494,6 +509,7 @@ msgid "Build version {0} {1}"
msgstr "Versió {0} {1}"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:87
+#: src/view/com/auth/SplashScreen.web.tsx:128
msgid "Business"
msgstr "Negocis"
@@ -528,8 +544,8 @@ msgid "Can only contain letters, numbers, spaces, dashes, and underscores. Must
msgstr "Només pot tenir lletres, números, espais, guions i guions baixos. Ha de tenir almenys 4 carà cters i no més de 32."
#: src/components/Prompt.tsx:91
-#: src/view/com/composer/Composer.tsx:300
-#: src/view/com/composer/Composer.tsx:305
+#: src/view/com/composer/Composer.tsx:307
+#: src/view/com/composer/Composer.tsx:312
#: src/view/com/modals/ChangeEmail.tsx:218
#: src/view/com/modals/ChangeEmail.tsx:220
#: src/view/com/modals/ChangePassword.tsx:265
@@ -543,7 +559,7 @@ msgstr "Només pot tenir lletres, números, espais, guions i guions baixos. Ha d
#: src/view/com/modals/VerifyEmail.tsx:247
#: src/view/com/modals/VerifyEmail.tsx:253
#: src/view/com/modals/Waitlist.tsx:142
-#: src/view/screens/Search/Search.tsx:693
+#: src/view/screens/Search/Search.tsx:716
#: src/view/shell/desktop/Search.tsx:238
msgid "Cancel"
msgstr "CancelĀ·la"
@@ -675,7 +691,7 @@ msgstr "Tria els algoritmes que potenciaran la teva experiĆØncia amb els canals
msgid "Choose your main feeds"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:215
+#: src/view/com/auth/create/Step1.tsx:219
msgid "Choose your password"
msgstr "Tria la teva contrasenya"
@@ -698,7 +714,7 @@ msgid "Clear all storage data (restart after this)"
msgstr "Esborra totes les dades emmagatzemades (i desprƩs reinicia)"
#: src/view/com/util/forms/SearchInput.tsx:88
-#: src/view/screens/Search/Search.tsx:674
+#: src/view/screens/Search/Search.tsx:697
msgid "Clear search query"
msgstr "Esborra la cerca"
@@ -706,6 +722,11 @@ msgstr "Esborra la cerca"
msgid "click here"
msgstr "clica aquĆ"
+#: src/components/RichText.tsx:189
+#: src/components/TagMenu/index.web.tsx:125
+msgid "Click here to open tag menu for {tag}"
+msgstr ""
+
#: src/screens/Onboarding/index.tsx:35
msgid "Climate"
msgstr ""
@@ -715,7 +736,8 @@ msgstr ""
msgid "Close"
msgstr ""
-#: src/components/Dialog/index.web.tsx:78
+#: src/components/Dialog/index.web.tsx:80
+#: src/components/Dialog/index.web.tsx:194
msgid "Close active dialog"
msgstr "Tanca el diĆ leg actiu"
@@ -735,11 +757,15 @@ msgstr "Tanca la imatge"
msgid "Close image viewer"
msgstr "Tanca el visor d'imatges"
-#: src/view/shell/index.web.tsx:49
+#: src/view/shell/index.web.tsx:51
msgid "Close navigation footer"
msgstr "Tanca el peu de la navegació"
-#: src/view/shell/index.web.tsx:50
+#: src/components/TagMenu/index.tsx:266
+msgid "Close this dialog"
+msgstr ""
+
+#: src/view/shell/index.web.tsx:52
msgid "Closes bottom navigation bar"
msgstr "Tanca la barra de navegació inferior"
@@ -747,7 +773,7 @@ msgstr "Tanca la barra de navegació inferior"
msgid "Closes password update alert"
msgstr "Tanca l'alerta d'actualització de contrasenya"
-#: src/view/com/composer/Composer.tsx:302
+#: src/view/com/composer/Composer.tsx:309
msgid "Closes post composer and discards post draft"
msgstr "Tanca l'editor de la publicació i descarta l'esborrany"
@@ -776,7 +802,11 @@ msgstr "Directrius de la comunitat"
msgid "Complete onboarding and start using your account"
msgstr ""
-#: src/view/com/composer/Composer.tsx:417
+#: src/view/com/auth/create/Step3.tsx:73
+msgid "Complete the challenge"
+msgstr ""
+
+#: src/view/com/composer/Composer.tsx:424
msgid "Compose posts up to {MAX_GRAPHEME_LENGTH} characters in length"
msgstr "Crea publicacions de fins a {MAX_GRAPHEME_LENGTH} carĆ cters"
@@ -793,7 +823,7 @@ msgstr ""
#: src/view/com/modals/SelfLabel.tsx:154
#: src/view/com/modals/VerifyEmail.tsx:231
#: src/view/com/modals/VerifyEmail.tsx:233
-#: src/view/screens/PreferencesHomeFeed.tsx:308
+#: src/view/screens/PreferencesFollowingFeed.tsx:308
#: src/view/screens/PreferencesThreads.tsx:159
msgid "Confirm"
msgstr "Confirma"
@@ -831,16 +861,16 @@ msgstr "Codi de confirmació"
msgid "Confirms signing up {email} to the waitlist"
msgstr "Confirma afegir {email} a la llista d'espera"
-#: src/view/com/auth/create/CreateAccount.tsx:182
+#: src/view/com/auth/create/CreateAccount.tsx:193
#: src/view/com/auth/login/LoginForm.tsx:278
msgid "Connecting..."
msgstr "Connectantā¦"
-#: src/view/com/auth/create/CreateAccount.tsx:202
+#: src/view/com/auth/create/CreateAccount.tsx:213
msgid "Contact support"
msgstr "Contacta amb suport"
-#: src/view/screens/Moderation.tsx:81
+#: src/view/screens/Moderation.tsx:83
msgid "Content filtering"
msgstr "Filtre de contingut"
@@ -870,7 +900,7 @@ msgstr "AdvertĆØncies del contingut"
#: src/screens/Onboarding/StepFollowingFeed.tsx:153
#: src/screens/Onboarding/StepInterests/index.tsx:248
#: src/screens/Onboarding/StepModeration/index.tsx:118
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:108
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:114
#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:148
#: src/view/com/auth/onboarding/RecommendedFollows.tsx:209
msgid "Continue"
@@ -879,7 +909,7 @@ msgstr "Continua"
#: src/screens/Onboarding/StepFollowingFeed.tsx:150
#: src/screens/Onboarding/StepInterests/index.tsx:245
#: src/screens/Onboarding/StepModeration/index.tsx:115
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:105
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:111
msgid "Continue to next step"
msgstr ""
@@ -906,7 +936,7 @@ msgstr "Número de versió copiat en memòria"
#: src/view/com/modals/AddAppPasswords.tsx:76
#: src/view/com/modals/InviteCodes.tsx:152
-#: src/view/com/util/forms/PostDropdownBtn.tsx:112
+#: src/view/com/util/forms/PostDropdownBtn.tsx:143
msgid "Copied to clipboard"
msgstr "Copiat en memòria"
@@ -918,19 +948,19 @@ msgstr "Copia la contrasenya d'aplicació"
msgid "Copy"
msgstr "Copia"
-#: src/view/screens/ProfileList.tsx:417
+#: src/view/screens/ProfileList.tsx:418
msgid "Copy link to list"
msgstr "Copia l'enllaƧ a la llista"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:153
+#: src/view/com/util/forms/PostDropdownBtn.tsx:184
msgid "Copy link to post"
msgstr "Copia l'enllaç a la publicació"
-#: src/view/com/profile/ProfileHeader.tsx:294
+#: src/view/com/profile/ProfileHeader.tsx:295
msgid "Copy link to profile"
msgstr "Copia l'enllaƧ al perfil"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:139
+#: src/view/com/util/forms/PostDropdownBtn.tsx:170
msgid "Copy post text"
msgstr "Copia el text de la publicació"
@@ -939,7 +969,7 @@ msgstr "Copia el text de la publicació"
msgid "Copyright Policy"
msgstr "PolĆtica de drets d'autor"
-#: src/view/screens/ProfileFeed.tsx:96
+#: src/view/screens/ProfileFeed.tsx:97
msgid "Could not load feed"
msgstr "No es pot carregar el canal"
@@ -948,12 +978,12 @@ msgid "Could not load list"
msgstr "No es pot carregar la llista"
#: src/view/com/auth/create/Step2.tsx:91
-msgid "Country"
-msgstr "PaĆs"
+#~ msgid "Country"
+#~ msgstr "PaĆs"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:62
-#: src/view/com/auth/SplashScreen.tsx:46
-#: src/view/com/auth/SplashScreen.web.tsx:77
+#: src/view/com/auth/SplashScreen.tsx:71
+#: src/view/com/auth/SplashScreen.web.tsx:81
msgid "Create a new account"
msgstr "Crea un nou compte"
@@ -961,7 +991,7 @@ msgstr "Crea un nou compte"
msgid "Create a new Bluesky account"
msgstr "Crea un nou compte de Bluesky"
-#: src/view/com/auth/create/CreateAccount.tsx:122
+#: src/view/com/auth/create/CreateAccount.tsx:133
msgid "Create Account"
msgstr "Crea un compte"
@@ -970,7 +1000,7 @@ msgid "Create App Password"
msgstr "Crea una contrasenya d'aplicació"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:54
-#: src/view/com/auth/SplashScreen.tsx:43
+#: src/view/com/auth/SplashScreen.tsx:68
msgid "Create new account"
msgstr "Crea un nou compte"
@@ -986,7 +1016,7 @@ msgstr "Creat per <0/>"
msgid "Created by you"
msgstr "Creat per tu"
-#: src/view/com/composer/Composer.tsx:448
+#: src/view/com/composer/Composer.tsx:455
msgid "Creates a card with a thumbnail. The card links to {url}"
msgstr "Crea una targeta amb una minuatura. La targeta enllaƧa a {url}"
@@ -1004,6 +1034,7 @@ msgid "Custom domain"
msgstr "Domini personalitzat"
#: src/screens/Onboarding/StepAlgoFeeds/index.tsx:106
+#: src/view/screens/Feeds.tsx:692
msgid "Custom feeds built by the community bring you new experiences and help you find the content you love."
msgstr ""
@@ -1045,8 +1076,8 @@ msgstr "Elimina el compte"
msgid "Delete app password"
msgstr "Elimina la contrasenya d'aplicació"
-#: src/view/screens/ProfileList.tsx:363
-#: src/view/screens/ProfileList.tsx:444
+#: src/view/screens/ProfileList.tsx:364
+#: src/view/screens/ProfileList.tsx:445
msgid "Delete List"
msgstr "Elimina la llista"
@@ -1062,19 +1093,19 @@ msgstr "Elimina el meu compte"
msgid "Delete My Accountā¦"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:228
+#: src/view/com/util/forms/PostDropdownBtn.tsx:273
msgid "Delete post"
msgstr "Elimina la publicació"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:232
+#: src/view/com/util/forms/PostDropdownBtn.tsx:277
msgid "Delete this post?"
msgstr "Vols eliminar aquesta publicació?"
-#: src/view/com/util/post-embeds/QuoteEmbed.tsx:69
+#: src/view/com/util/post-embeds/QuoteEmbed.tsx:70
msgid "Deleted"
msgstr "Eliminat"
-#: src/view/com/post-thread/PostThread.tsx:259
+#: src/view/com/post-thread/PostThread.tsx:316
msgid "Deleted post."
msgstr "Publicació eliminada."
@@ -1093,7 +1124,7 @@ msgstr "Descripció"
#~ msgid "Developer Tools"
#~ msgstr "Eines de desenvolupador"
-#: src/view/com/composer/Composer.tsx:211
+#: src/view/com/composer/Composer.tsx:218
msgid "Did you want to say anything?"
msgstr "Vols dir alguna cosa?"
@@ -1101,15 +1132,15 @@ msgstr "Vols dir alguna cosa?"
msgid "Dim"
msgstr ""
-#: src/view/com/composer/Composer.tsx:144
+#: src/view/com/composer/Composer.tsx:151
msgid "Discard"
msgstr "Descarta"
-#: src/view/com/composer/Composer.tsx:138
+#: src/view/com/composer/Composer.tsx:145
msgid "Discard draft"
msgstr "Descarta l'esborrany"
-#: src/view/screens/Moderation.tsx:207
+#: src/view/screens/Moderation.tsx:226
msgid "Discourage apps from showing my account to logged-out users"
msgstr "Evita que les aplicacions mostrin el meu compte als usuaris no connectats"
@@ -1119,8 +1150,12 @@ msgid "Discover new custom feeds"
msgstr "Descobreix nous canals personalitzats"
#: src/view/screens/Feeds.tsx:473
-msgid "Discover new feeds"
-msgstr "Descobreix nous canals"
+#~ msgid "Discover new feeds"
+#~ msgstr "Descobreix nous canals"
+
+#: src/view/screens/Feeds.tsx:689
+msgid "Discover New Feeds"
+msgstr ""
#: src/view/com/modals/EditProfile.tsx:192
msgid "Display name"
@@ -1134,7 +1169,7 @@ msgstr "Nom mostrat"
msgid "Domain verified!"
msgstr "Domini verificat!"
-#: src/view/com/auth/create/Step1.tsx:166
+#: src/view/com/auth/create/Step1.tsx:170
msgid "Don't have an invite code?"
msgstr "No tens un codi d'invitació?"
@@ -1161,7 +1196,7 @@ msgstr "Fet"
#: src/view/com/modals/InviteCodes.tsx:80
#: src/view/com/modals/InviteCodes.tsx:123
#: src/view/com/modals/ListAddRemoveUsers.tsx:142
-#: src/view/screens/PreferencesHomeFeed.tsx:311
+#: src/view/screens/PreferencesFollowingFeed.tsx:311
#: src/view/screens/Settings/ExportCarDialog.tsx:93
#: src/view/screens/Settings/ExportCarDialog.tsx:94
msgid "Done"
@@ -1184,7 +1219,7 @@ msgstr ""
msgid "Download CAR file"
msgstr ""
-#: src/view/com/composer/text-input/TextInput.web.tsx:247
+#: src/view/com/composer/text-input/TextInput.web.tsx:249
msgid "Drop to add images"
msgstr ""
@@ -1230,7 +1265,7 @@ msgstr "Edita"
msgid "Edit image"
msgstr "Edita la imatge"
-#: src/view/screens/ProfileList.tsx:432
+#: src/view/screens/ProfileList.tsx:433
msgid "Edit list details"
msgstr "Edita els detalls de la llista"
@@ -1248,15 +1283,16 @@ msgstr "Edita els meus canals"
msgid "Edit my profile"
msgstr "Edita el meu perfil"
-#: src/view/com/profile/ProfileHeader.tsx:417
+#: src/view/com/profile/ProfileHeader.tsx:418
msgid "Edit profile"
msgstr "Edita el perfil"
-#: src/view/com/profile/ProfileHeader.tsx:422
+#: src/view/com/profile/ProfileHeader.tsx:423
msgid "Edit Profile"
msgstr "Edita el perfil"
-#: src/view/screens/Feeds.tsx:356
+#: src/view/com/home/HomeHeaderLayout.web.tsx:59
+#: src/view/screens/Feeds.tsx:355
msgid "Edit Saved Feeds"
msgstr "Edita els meus canals guardats"
@@ -1276,16 +1312,14 @@ msgstr "Edita la descripció del teu perfil"
msgid "Education"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:195
-#: src/view/com/auth/create/Step2.tsx:194
-#: src/view/com/auth/create/Step2.tsx:269
+#: src/view/com/auth/create/Step1.tsx:199
#: src/view/com/auth/login/ForgotPasswordForm.tsx:156
#: src/view/com/modals/ChangeEmail.tsx:141
#: src/view/com/modals/Waitlist.tsx:88
msgid "Email"
msgstr "Correu"
-#: src/view/com/auth/create/Step1.tsx:186
+#: src/view/com/auth/create/Step1.tsx:190
#: src/view/com/auth/login/ForgotPasswordForm.tsx:147
msgid "Email address"
msgstr "AdreƧa de correu"
@@ -1328,7 +1362,7 @@ msgstr "Habilita el contingut extern"
msgid "Enable media players for"
msgstr "Habilita reproductors de contingut per"
-#: src/view/screens/PreferencesHomeFeed.tsx:147
+#: src/view/screens/PreferencesFollowingFeed.tsx:147
msgid "Enable this setting to only see replies between people you follow."
msgstr "Activa aquesta opció per veure només les respostes entre els comptes que segueixes."
@@ -1340,6 +1374,11 @@ msgstr "Fi del canal"
msgid "Enter a name for this App Password"
msgstr "Posa un nom a aquesta contrasenya d'aplicació"
+#: src/components/dialogs/MutedWords.tsx:87
+#: src/components/dialogs/MutedWords.tsx:88
+msgid "Enter a word or tag"
+msgstr ""
+
#: src/view/com/modals/VerifyEmail.tsx:105
msgid "Enter Confirmation Code"
msgstr "Entra el codi de confirmació"
@@ -1360,7 +1399,7 @@ msgstr "Introdueix el domini que vols utilitzar"
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 "Introdueix el correu que vas fer servir per crear el teu compte. T'enviarem un \"codi de restabliment\" perquĆØ puguis posar una nova contrasenya."
-#: src/view/com/auth/create/Step1.tsx:247
+#: src/view/com/auth/create/Step1.tsx:251
#: src/view/com/modals/BirthDateSettings.tsx:74
msgid "Enter your birth date"
msgstr "Introdueix la teva data de naixement"
@@ -1369,7 +1408,7 @@ msgstr "Introdueix la teva data de naixement"
msgid "Enter your email"
msgstr "Introdueix el teu correu"
-#: src/view/com/auth/create/Step1.tsx:191
+#: src/view/com/auth/create/Step1.tsx:195
msgid "Enter your email address"
msgstr "Introdueix el teu correu"
@@ -1382,14 +1421,18 @@ msgid "Enter your new email address below."
msgstr "Introdueix el teu nou correu a continuació."
#: src/view/com/auth/create/Step2.tsx:188
-msgid "Enter your phone number"
-msgstr "Introdueix el teu telĆØfon"
+#~ msgid "Enter your phone number"
+#~ msgstr "Introdueix el teu telĆØfon"
#: src/view/com/auth/login/Login.tsx:99
msgid "Enter your username and password"
msgstr "Introdueix el teu usuari i contrasenya"
-#: src/view/screens/Search/Search.tsx:109
+#: src/view/com/auth/create/Step3.tsx:67
+msgid "Error receiving captcha response."
+msgstr ""
+
+#: src/view/screens/Search/Search.tsx:110
msgid "Error:"
msgstr "Error:"
@@ -1441,7 +1484,7 @@ msgstr "Contingut extern"
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 "El contingut extern pot permetre que algunes webs recullin informació sobre tu i el teu dispositiu. No s'envia ni es demana cap informació fins que premis el botó \"reproduir\"."
-#: src/Navigation.tsx:258
+#: src/Navigation.tsx:261
#: src/view/screens/PreferencesExternalEmbeds.tsx:52
#: src/view/screens/Settings/index.tsx:657
msgid "External Media Preferences"
@@ -1460,7 +1503,7 @@ msgstr "No s'ha pogut crear la contrasenya d'aplicació"
msgid "Failed to create the list. Check your internet connection and try again."
msgstr "No s'ha pogut crear la llista. Comprova la teva connexió a internet i torna-ho a provar."
-#: src/view/com/util/forms/PostDropdownBtn.tsx:88
+#: src/view/com/util/forms/PostDropdownBtn.tsx:110
msgid "Failed to delete post, please try again"
msgstr "No s'ha pogut esborrar la publicació, torna-ho a provar"
@@ -1473,25 +1516,26 @@ msgstr "Error en carregar els canals recomanats"
msgid "Feed"
msgstr "Canal"
-#: src/view/com/feeds/FeedSourceCard.tsx:229
+#: src/view/com/feeds/FeedSourceCard.tsx:231
msgid "Feed by {0}"
msgstr "Canal per {0}"
-#: src/view/screens/Feeds.tsx:631
+#: src/view/screens/Feeds.tsx:605
msgid "Feed offline"
msgstr "Canal fora de lĆnia"
#: src/view/com/feeds/FeedPage.tsx:143
-msgid "Feed Preferences"
-msgstr "PreferĆØncies del canal"
+#~ msgid "Feed Preferences"
+#~ msgstr "PreferĆØncies del canal"
-#: src/view/shell/desktop/RightNav.tsx:69
+#: src/view/shell/desktop/RightNav.tsx:61
#: src/view/shell/Drawer.tsx:311
msgid "Feedback"
msgstr "Comentaris"
-#: src/Navigation.tsx:442
-#: src/view/screens/Feeds.tsx:548
+#: src/Navigation.tsx:445
+#: src/view/screens/Feeds.tsx:419
+#: src/view/screens/Feeds.tsx:524
#: src/view/screens/Profile.tsx:184
#: src/view/shell/bottom-bar/BottomBar.tsx:181
#: src/view/shell/desktop/LeftNav.tsx:342
@@ -1508,7 +1552,7 @@ msgstr "Els canals són creats pels usuaris per curar contingut. Tria els canals
msgid "Feeds are custom algorithms that users build with a little coding expertise. <0/> for more information."
msgstr "Els canals són algoritmes personalitzats creats per usuaris que coneixen una mica de codi. <0/> per a més informació."
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:70
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:76
msgid "Feeds can be topical as well!"
msgstr ""
@@ -1522,11 +1566,11 @@ msgstr ""
msgid "Find accounts to follow"
msgstr "Troba comptes per seguir"
-#: src/view/screens/Search/Search.tsx:439
+#: src/view/screens/Search/Search.tsx:440
msgid "Find users on Bluesky"
msgstr "Troba usuaris a Bluesky"
-#: src/view/screens/Search/Search.tsx:437
+#: src/view/screens/Search/Search.tsx:438
msgid "Find users with the search tool on the right"
msgstr "Troba usuaris amb l'eina de cerca de la dreta"
@@ -1534,9 +1578,13 @@ msgstr "Troba usuaris amb l'eina de cerca de la dreta"
msgid "Finding similar accounts..."
msgstr "Troba comptes similarsā¦"
+#: src/view/screens/PreferencesFollowingFeed.tsx:111
+msgid "Fine-tune the content you see on your Following feed."
+msgstr ""
+
#: src/view/screens/PreferencesHomeFeed.tsx:111
-msgid "Fine-tune the content you see on your home screen."
-msgstr "Ajusta el contingut que es veu a la teva pantalla d'inici."
+#~ msgid "Fine-tune the content you see on your home screen."
+#~ msgstr "Ajusta el contingut que es veu a la teva pantalla d'inici."
#: src/view/screens/PreferencesThreads.tsx:60
msgid "Fine-tune the discussion threads."
@@ -1561,7 +1609,7 @@ msgstr "Gira verticalment"
#: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:181
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:136
-#: src/view/com/profile/ProfileHeader.tsx:512
+#: src/view/com/profile/ProfileHeader.tsx:513
msgid "Follow"
msgstr "Segueix"
@@ -1572,7 +1620,7 @@ msgstr "Segueix"
#: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:58
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:122
-#: src/view/com/profile/ProfileHeader.tsx:503
+#: src/view/com/profile/ProfileHeader.tsx:504
msgid "Follow {0}"
msgstr "Segueix {0}"
@@ -1596,7 +1644,7 @@ msgstr "Seguit per {0}"
msgid "Followed users"
msgstr "Usuaris seguits"
-#: src/view/screens/PreferencesHomeFeed.tsx:154
+#: src/view/screens/PreferencesFollowingFeed.tsx:154
msgid "Followed users only"
msgstr "NomƩs els usuaris seguits"
@@ -1613,16 +1661,24 @@ msgstr "Seguidors"
#~ msgstr "seguint"
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:136
-#: src/view/com/profile/ProfileHeader.tsx:494
+#: src/view/com/profile/ProfileHeader.tsx:495
#: src/view/screens/ProfileFollows.tsx:25
msgid "Following"
msgstr "Seguint"
-#: src/view/com/profile/ProfileHeader.tsx:148
+#: src/view/com/profile/ProfileHeader.tsx:149
msgid "Following {0}"
msgstr "Seguint {0}"
-#: src/view/com/profile/ProfileHeader.tsx:545
+#: src/Navigation.tsx:248
+#: src/view/com/home/HomeHeaderLayout.web.tsx:45
+#: src/view/com/home/HomeHeaderLayoutMobile.tsx:83
+#: src/view/screens/PreferencesFollowingFeed.tsx:104
+#: src/view/screens/Settings/index.tsx:543
+msgid "Following Feed Preferences"
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:546
msgid "Follows you"
msgstr "Et segueix"
@@ -1676,8 +1732,8 @@ msgstr "ComenƧa"
msgid "Go back"
msgstr "Ves enrere"
-#: src/view/screens/ProfileFeed.tsx:105
-#: src/view/screens/ProfileFeed.tsx:110
+#: src/view/screens/ProfileFeed.tsx:106
+#: src/view/screens/ProfileFeed.tsx:111
#: src/view/screens/ProfileList.tsx:897
#: src/view/screens/ProfileList.tsx:902
msgid "Go Back"
@@ -1688,7 +1744,7 @@ msgstr "Ves enrere"
msgid "Go back to previous step"
msgstr ""
-#: src/view/screens/Search/Search.tsx:724
+#: src/view/screens/Search/Search.tsx:747
#: src/view/shell/desktop/Search.tsx:262
msgid "Go to @{queryMaybeHandle}"
msgstr "VƩs a @{queryMaybeHandle}"
@@ -1705,11 +1761,15 @@ msgstr "Ves al següent"
msgid "Handle"
msgstr "Identificador"
-#: src/view/com/auth/create/CreateAccount.tsx:197
+#: src/components/RichText.tsx:188
+msgid "Hashtag: {tag}"
+msgstr ""
+
+#: src/view/com/auth/create/CreateAccount.tsx:208
msgid "Having trouble?"
msgstr "Tens problemes?"
-#: src/view/shell/desktop/RightNav.tsx:98
+#: src/view/shell/desktop/RightNav.tsx:90
#: src/view/shell/Drawer.tsx:321
msgid "Help"
msgstr "Ajuda"
@@ -1718,11 +1778,11 @@ msgstr "Ajuda"
msgid "Here are some accounts for you to follow"
msgstr ""
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:79
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:85
msgid "Here are some popular topical feeds. You can choose to follow as many as you like."
msgstr ""
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:74
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:80
msgid "Here are some topical feeds based on your interests: {interestsText}. You can choose to follow as many as you like."
msgstr ""
@@ -1743,7 +1803,7 @@ msgctxt "action"
msgid "Hide"
msgstr "Amaga"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:187
+#: src/view/com/util/forms/PostDropdownBtn.tsx:232
msgid "Hide post"
msgstr "Amaga l'entrada"
@@ -1752,7 +1812,7 @@ msgstr "Amaga l'entrada"
msgid "Hide the content"
msgstr "Amaga el contingut"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:191
+#: src/view/com/util/forms/PostDropdownBtn.tsx:236
msgid "Hide this post?"
msgstr "Vols amagar aquesta entrada?"
@@ -1760,7 +1820,7 @@ msgstr "Vols amagar aquesta entrada?"
msgid "Hide user list"
msgstr "Amaga la llista d'usuaris"
-#: src/view/com/profile/ProfileHeader.tsx:486
+#: src/view/com/profile/ProfileHeader.tsx:487
msgid "Hides posts from {0} in your feed"
msgstr "Amaga les publicacions de {0} al teu canal"
@@ -1784,7 +1844,7 @@ msgstr "El servidor del canal ha donat una resposta incorrecta. Avisa al propiet
msgid "Hmm, we're having trouble finding this feed. It may have been deleted."
msgstr "Tenim problemes per trobar aquest canal. Potser ha estat eliminat."
-#: src/Navigation.tsx:432
+#: src/Navigation.tsx:435
#: src/view/shell/bottom-bar/BottomBar.tsx:137
#: src/view/shell/desktop/LeftNav.tsx:306
#: src/view/shell/Drawer.tsx:398
@@ -1796,10 +1856,10 @@ msgstr "Inici"
#: src/view/com/pager/FeedsTabBarMobile.tsx:123
#: src/view/screens/PreferencesHomeFeed.tsx:104
#: src/view/screens/Settings/index.tsx:543
-msgid "Home Feed Preferences"
-msgstr "PreferĆØncies dels canals a l'inici"
+#~ msgid "Home Feed Preferences"
+#~ msgstr "PreferĆØncies dels canals a l'inici"
-#: src/view/com/auth/create/Step1.tsx:78
+#: src/view/com/auth/create/Step1.tsx:82
#: src/view/com/auth/login/ForgotPasswordForm.tsx:120
msgid "Hosting provider"
msgstr "ProveĆÆdor d'allotjament"
@@ -1858,11 +1918,11 @@ msgstr "Introdueix el codi que s'ha enviat al teu correu per restablir la contra
msgid "Input confirmation code for account deletion"
msgstr "Introdueix el codi de confirmació per eliminar el compte"
-#: src/view/com/auth/create/Step1.tsx:196
+#: src/view/com/auth/create/Step1.tsx:200
msgid "Input email for Bluesky account"
msgstr "Introdueix el correu del compte de Bluesky"
-#: src/view/com/auth/create/Step1.tsx:154
+#: src/view/com/auth/create/Step1.tsx:158
msgid "Input invite code to proceed"
msgstr "Introdueix el codi d'invitació per continuar"
@@ -1879,8 +1939,8 @@ msgid "Input password for account deletion"
msgstr "Introdueix la contrasenya per elimiar el compte"
#: src/view/com/auth/create/Step2.tsx:196
-msgid "Input phone number for SMS verification"
-msgstr "Introdueix el telèfon per la verificació per SMS"
+#~ msgid "Input phone number for SMS verification"
+#~ msgstr "Introdueix el telèfon per la verificació per SMS"
#: src/view/com/auth/login/LoginForm.tsx:230
msgid "Input the password tied to {identifier}"
@@ -1891,8 +1951,8 @@ msgid "Input the username or email address you used at signup"
msgstr "Introdueix el nom d'usuari o correu que vas utilitzar per registrar-te"
#: src/view/com/auth/create/Step2.tsx:271
-msgid "Input the verification code we have texted to you"
-msgstr "Introdueix el codi de verificació que t'hem enviat"
+#~ msgid "Input the verification code we have texted to you"
+#~ msgstr "Introdueix el codi de verificació que t'hem enviat"
#: src/view/com/modals/Waitlist.tsx:90
msgid "Input your email to get on the Bluesky waitlist"
@@ -1902,11 +1962,11 @@ msgstr "Introdueix el teu correu per afegir-te a la llista d'espera de Bluesky"
msgid "Input your password"
msgstr "Introdueix la teva contrasenya"
-#: src/view/com/auth/create/Step3.tsx:42
+#: src/view/com/auth/create/Step2.tsx:80
msgid "Input your user handle"
msgstr "Introdueix el teu identificador d'usuari"
-#: src/view/com/post-thread/PostThreadItem.tsx:225
+#: src/view/com/post-thread/PostThreadItem.tsx:226
msgid "Invalid or unsupported post record"
msgstr "Registre de publicació no và lid o no admès"
@@ -1922,12 +1982,12 @@ msgstr "Nom d'usuari o contrasenya incorrectes"
msgid "Invite a Friend"
msgstr "Convida un amic"
-#: src/view/com/auth/create/Step1.tsx:144
-#: src/view/com/auth/create/Step1.tsx:153
+#: src/view/com/auth/create/Step1.tsx:148
+#: src/view/com/auth/create/Step1.tsx:157
msgid "Invite code"
msgstr "Codi d'invitació"
-#: src/view/com/auth/create/state.ts:199
+#: src/view/com/auth/create/state.ts:158
msgid "Invite code not accepted. Check that you input it correctly and try again."
msgstr "Codi d'invitació rebutjat. Comprova que l'has entrat correctament i torna-ho a provar."
@@ -1948,6 +2008,7 @@ msgid "It shows posts from the people you follow as they happen."
msgstr ""
#: src/view/com/auth/HomeLoggedOutCTA.tsx:99
+#: src/view/com/auth/SplashScreen.web.tsx:138
msgid "Jobs"
msgstr "Feines"
@@ -1955,8 +2016,8 @@ msgstr "Feines"
msgid "Join the waitlist"
msgstr "Uneix-te a la llista d'espera"
-#: src/view/com/auth/create/Step1.tsx:170
#: src/view/com/auth/create/Step1.tsx:174
+#: src/view/com/auth/create/Step1.tsx:178
msgid "Join the waitlist."
msgstr "Uneix-te a la llista d'espera."
@@ -2007,7 +2068,7 @@ msgstr "Més informació"
msgid "Learn more about this warning"
msgstr "Més informació d'aquesta advertència"
-#: src/view/screens/Moderation.tsx:243
+#: src/view/screens/Moderation.tsx:262
msgid "Learn more about what is public on Bluesky."
msgstr "Més informació sobre què és públic a Bluesky."
@@ -2063,7 +2124,7 @@ msgstr "Li ha agradat a"
msgid "Liked By"
msgstr ""
-#: src/view/com/feeds/FeedSourceCard.tsx:277
+#: src/view/com/feeds/FeedSourceCard.tsx:279
msgid "Liked by {0} {1}"
msgstr "Li ha agradat a {0} {1}"
@@ -2087,7 +2148,7 @@ msgstr "li ha agradat la teva publicació"
msgid "Likes"
msgstr "M'agrades"
-#: src/view/com/post-thread/PostThreadItem.tsx:182
+#: src/view/com/post-thread/PostThreadItem.tsx:183
msgid "Likes on this post"
msgstr "M'agrades a aquesta publicació"
@@ -2099,19 +2160,19 @@ msgstr "Llista"
msgid "List Avatar"
msgstr "Avatar de la llista"
-#: src/view/screens/ProfileList.tsx:323
+#: src/view/screens/ProfileList.tsx:324
msgid "List blocked"
msgstr "Llista bloquejada"
-#: src/view/com/feeds/FeedSourceCard.tsx:231
+#: src/view/com/feeds/FeedSourceCard.tsx:233
msgid "List by {0}"
msgstr "Llista per {0}"
-#: src/view/screens/ProfileList.tsx:377
+#: src/view/screens/ProfileList.tsx:378
msgid "List deleted"
msgstr "Llista eliminada"
-#: src/view/screens/ProfileList.tsx:282
+#: src/view/screens/ProfileList.tsx:283
msgid "List muted"
msgstr "Llista silenciada"
@@ -2119,11 +2180,11 @@ msgstr "Llista silenciada"
msgid "List Name"
msgstr "Nom de la llista"
-#: src/view/screens/ProfileList.tsx:342
+#: src/view/screens/ProfileList.tsx:343
msgid "List unblocked"
msgstr "Llista desbloquejada"
-#: src/view/screens/ProfileList.tsx:301
+#: src/view/screens/ProfileList.tsx:302
msgid "List unmuted"
msgstr "Llista no silenciada"
@@ -2135,8 +2196,8 @@ msgstr "Llista no silenciada"
msgid "Lists"
msgstr "Llistes"
-#: src/view/com/post-thread/PostThread.tsx:276
-#: src/view/com/post-thread/PostThread.tsx:284
+#: src/view/com/post-thread/PostThread.tsx:333
+#: src/view/com/post-thread/PostThread.tsx:341
msgid "Load more posts"
msgstr "Carrega mƩs publicacions"
@@ -2144,10 +2205,10 @@ msgstr "Carrega mƩs publicacions"
msgid "Load new notifications"
msgstr "Carrega noves notificacions"
-#: src/view/com/feeds/FeedPage.tsx:190
+#: src/view/com/feeds/FeedPage.tsx:115
#: src/view/screens/Profile.tsx:440
-#: src/view/screens/ProfileFeed.tsx:494
-#: src/view/screens/ProfileList.tsx:680
+#: src/view/screens/ProfileFeed.tsx:495
+#: src/view/screens/ProfileList.tsx:681
msgid "Load new posts"
msgstr "Carrega noves publicacions"
@@ -2170,7 +2231,7 @@ msgstr "Registre"
msgid "Log out"
msgstr ""
-#: src/view/screens/Moderation.tsx:136
+#: src/view/screens/Moderation.tsx:155
msgid "Logged-out visibility"
msgstr "Visibilitat pels usuaris no connectats"
@@ -2185,6 +2246,18 @@ msgstr "Accedeix a un compte que no estĆ llistat"
msgid "Make sure this is where you intend to go!"
msgstr "Assegura't que és aquà on vols anar!"
+#: src/components/dialogs/MutedWords.tsx:71
+msgid "Manage your muted words and tags"
+msgstr ""
+
+#: src/view/com/auth/create/Step2.tsx:118
+msgid "May not be longer than 253 characters"
+msgstr ""
+
+#: src/view/com/auth/create/Step2.tsx:109
+msgid "May only contain letters and numbers"
+msgstr ""
+
#: src/view/screens/Profile.tsx:182
msgid "Media"
msgstr "Contingut"
@@ -2198,7 +2271,7 @@ msgid "Mentioned users"
msgstr "Usuaris mencionats"
#: src/view/com/util/ViewHeader.tsx:81
-#: src/view/screens/Search/Search.tsx:623
+#: src/view/screens/Search/Search.tsx:646
msgid "Menu"
msgstr "MenĆŗ"
@@ -2211,7 +2284,7 @@ msgid "Message from server: {0}"
msgstr "Missatge del servidor: {0}"
#: src/Navigation.tsx:115
-#: src/view/screens/Moderation.tsx:64
+#: src/view/screens/Moderation.tsx:66
#: src/view/screens/Settings/index.tsx:625
#: src/view/shell/desktop/LeftNav.tsx:397
#: src/view/shell/Drawer.tsx:511
@@ -2219,7 +2292,7 @@ msgstr "Missatge del servidor: {0}"
msgid "Moderation"
msgstr "Moderació"
-#: src/view/com/lists/ListCard.tsx:92
+#: src/view/com/lists/ListCard.tsx:93
#: src/view/com/modals/UserAddRemoveLists.tsx:206
msgid "Moderation list by {0}"
msgstr "Llista de moderació per {0}"
@@ -2228,7 +2301,7 @@ msgstr "Llista de moderació per {0}"
msgid "Moderation list by <0/>"
msgstr "Llista de moderació per <0/>"
-#: src/view/com/lists/ListCard.tsx:90
+#: src/view/com/lists/ListCard.tsx:91
#: src/view/com/modals/UserAddRemoveLists.tsx:204
#: src/view/screens/ProfileList.tsx:772
msgid "Moderation list by you"
@@ -2242,7 +2315,7 @@ msgstr "S'ha creat la llista de moderació"
msgid "Moderation list updated"
msgstr "S'ha actualitzat la llista de moderació"
-#: src/view/screens/Moderation.tsx:95
+#: src/view/screens/Moderation.tsx:114
msgid "Moderation lists"
msgstr "Llistes de moderació"
@@ -2263,13 +2336,13 @@ msgstr "El moderador ha decidit establir un advertiment general sobre el conting
msgid "More feeds"
msgstr "MƩs canals"
-#: src/view/com/profile/ProfileHeader.tsx:522
-#: src/view/screens/ProfileFeed.tsx:362
-#: src/view/screens/ProfileList.tsx:616
+#: src/view/com/profile/ProfileHeader.tsx:523
+#: src/view/screens/ProfileFeed.tsx:363
+#: src/view/screens/ProfileList.tsx:617
msgid "More options"
msgstr "MƩs opcions"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:270
+#: src/view/com/util/forms/PostDropdownBtn.tsx:315
msgid "More post options"
msgstr "Més opcions de publicació"
@@ -2277,35 +2350,71 @@ msgstr "Més opcions de publicació"
msgid "Most-liked replies first"
msgstr "Respostes amb mƩs m'agrada primer"
-#: src/view/com/profile/ProfileHeader.tsx:326
+#: src/view/com/auth/create/Step2.tsx:122
+msgid "Must be at least 3 characters"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:253
+msgid "Mute"
+msgstr ""
+
+#: src/components/TagMenu/index.web.tsx:91
+msgid "Mute {truncatedTag}"
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:327
msgid "Mute Account"
msgstr "Silenciar el compte"
-#: src/view/screens/ProfileList.tsx:543
+#: src/view/screens/ProfileList.tsx:544
msgid "Mute accounts"
msgstr "Silencia els comptes"
-#: src/view/screens/ProfileList.tsx:490
+#: src/components/TagMenu/index.tsx:211
+msgid "Mute all {tag} posts"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:131
+msgid "Mute in tags only"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:116
+msgid "Mute in text & tags"
+msgstr ""
+
+#: src/view/screens/ProfileList.tsx:491
msgid "Mute list"
msgstr "Silencia la llista"
-#: src/view/screens/ProfileList.tsx:274
+#: src/view/screens/ProfileList.tsx:275
msgid "Mute these accounts?"
msgstr "Vols silenciar aquests comptes?"
-#: src/view/screens/ProfileList.tsx:278
+#: src/view/screens/ProfileList.tsx:279
msgid "Mute this List"
msgstr "Silencia aquesta llista"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:171
+#: src/components/dialogs/MutedWords.tsx:109
+msgid "Mute this word in post text and tags"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:124
+msgid "Mute this word in tags only"
+msgstr ""
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:202
msgid "Mute thread"
msgstr "Silencia el fil de debat"
-#: src/view/com/lists/ListCard.tsx:101
+#: src/view/com/util/forms/PostDropdownBtn.tsx:216
+msgid "Mute words & tags"
+msgstr ""
+
+#: src/view/com/lists/ListCard.tsx:102
msgid "Muted"
msgstr "Silenciada"
-#: src/view/screens/Moderation.tsx:109
+#: src/view/screens/Moderation.tsx:128
msgid "Muted accounts"
msgstr "Comptes silenciats"
@@ -2318,7 +2427,11 @@ msgstr "Comptes silenciats"
msgid "Muted accounts have their posts removed from your feed and from your notifications. Mutes are completely private."
msgstr "Les publicacions dels comptes silenciats seran eliminats del teu canal i de les teves notificacions. Silenciar comptes Ʃs completament privat."
-#: src/view/screens/ProfileList.tsx:276
+#: src/view/screens/Moderation.tsx:100
+msgid "Muted words & tags"
+msgstr ""
+
+#: src/view/screens/ProfileList.tsx:277
msgid "Muting is private. Muted accounts can interact with you, but you will not see their posts or receive notifications from them."
msgstr "Silenciar és privat. Els comptes silenciats poden interactuar amb tu, però tu no veuràs les seves publicacions ni rebràs notificacions seves."
@@ -2326,7 +2439,7 @@ msgstr "Silenciar Ʃs privat. Els comptes silenciats poden interactuar amb tu, p
msgid "My Birthday"
msgstr "El meu aniversari"
-#: src/view/screens/Feeds.tsx:419
+#: src/view/screens/Feeds.tsx:663
msgid "My Feeds"
msgstr "Els meus canals"
@@ -2381,6 +2494,10 @@ msgstr "No perdis mai accƩs als teus seguidors ni a les teves dades."
msgid "Never lose access to your followers or data."
msgstr ""
+#: src/components/dialogs/MutedWords.tsx:244
+msgid "Nevermind"
+msgstr ""
+
#: src/view/screens/Lists.tsx:76
msgctxt "action"
msgid "New"
@@ -2402,17 +2519,17 @@ msgstr "Nova contrasenya"
msgid "New Password"
msgstr ""
-#: src/view/com/feeds/FeedPage.tsx:201
+#: src/view/com/feeds/FeedPage.tsx:126
msgctxt "action"
msgid "New post"
msgstr "Nova publicació"
-#: src/view/screens/Feeds.tsx:581
+#: src/view/screens/Feeds.tsx:555
#: src/view/screens/Notifications.tsx:168
#: src/view/screens/Profile.tsx:382
-#: src/view/screens/ProfileFeed.tsx:432
-#: src/view/screens/ProfileList.tsx:195
-#: src/view/screens/ProfileList.tsx:223
+#: src/view/screens/ProfileFeed.tsx:433
+#: src/view/screens/ProfileList.tsx:196
+#: src/view/screens/ProfileList.tsx:224
#: src/view/shell/desktop/LeftNav.tsx:248
msgid "New post"
msgstr "Nova publicació"
@@ -2438,7 +2555,7 @@ msgstr "Les respostes mƩs noves primer"
msgid "News"
msgstr ""
-#: src/view/com/auth/create/CreateAccount.tsx:161
+#: src/view/com/auth/create/CreateAccount.tsx:172
#: src/view/com/auth/login/ForgotPasswordForm.tsx:182
#: src/view/com/auth/login/ForgotPasswordForm.tsx:192
#: src/view/com/auth/login/LoginForm.tsx:291
@@ -2459,10 +2576,10 @@ msgstr "Següent"
msgid "Next image"
msgstr "Següent imatge"
-#: 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/PreferencesFollowingFeed.tsx:129
+#: src/view/screens/PreferencesFollowingFeed.tsx:200
+#: src/view/screens/PreferencesFollowingFeed.tsx:235
+#: src/view/screens/PreferencesFollowingFeed.tsx:272
#: src/view/screens/PreferencesThreads.tsx:106
#: src/view/screens/PreferencesThreads.tsx:129
msgid "No"
@@ -2473,7 +2590,7 @@ msgstr "No"
msgid "No description"
msgstr "Cap descripció"
-#: src/view/com/profile/ProfileHeader.tsx:169
+#: src/view/com/profile/ProfileHeader.tsx:170
msgid "No longer following {0}"
msgstr "Ja no segueixes a {0}"
@@ -2486,13 +2603,13 @@ msgstr "Encara no tens cap notificació"
msgid "No result"
msgstr "Cap resultat"
-#: src/view/screens/Feeds.tsx:524
+#: src/view/screens/Feeds.tsx:495
msgid "No results found for \"{query}\""
msgstr "No s'han trobat resultats per \"{query}\""
#: src/view/com/modals/ListAddRemoveUsers.tsx:127
-#: src/view/screens/Search/Search.tsx:280
-#: src/view/screens/Search/Search.tsx:308
+#: src/view/screens/Search/Search.tsx:281
+#: src/view/screens/Search/Search.tsx:309
msgid "No results found for {query}"
msgstr "No s'han trobat resultats per {query}"
@@ -2518,11 +2635,11 @@ msgstr "No s'ha trobat"
msgid "Not right now"
msgstr "Ara mateix no"
-#: src/view/screens/Moderation.tsx:233
+#: src/view/screens/Moderation.tsx:252
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 és una xarxa oberta i pública. Aquesta configuració tan sols limita el teu contingut a l'aplicació de Bluesky i a la web, altres aplicacions poden no respectar-ho. El teu contingut pot ser mostrat a usuaris no connectats per altres aplicacions i webs."
-#: src/Navigation.tsx:447
+#: src/Navigation.tsx:450
#: src/view/screens/Notifications.tsx:124
#: src/view/screens/Notifications.tsx:148
#: src/view/shell/bottom-bar/BottomBar.tsx:205
@@ -2556,7 +2673,7 @@ msgstr "Respostes mƩs antigues primer"
msgid "Onboarding reset"
msgstr "Restableix la incorporació"
-#: src/view/com/composer/Composer.tsx:375
+#: src/view/com/composer/Composer.tsx:382
msgid "One or more images is missing alt text."
msgstr "Falta el text alternatiu a una o mƩs imatges."
@@ -2573,8 +2690,12 @@ msgstr "Ostres!"
msgid "Open"
msgstr ""
-#: src/view/com/composer/Composer.tsx:470
-#: src/view/com/composer/Composer.tsx:471
+#: src/view/screens/Moderation.tsx:75
+msgid "Open content filtering settings"
+msgstr ""
+
+#: src/view/com/composer/Composer.tsx:477
+#: src/view/com/composer/Composer.tsx:478
msgid "Open emoji picker"
msgstr "Obre el selector d'emojis"
@@ -2582,7 +2703,11 @@ msgstr "Obre el selector d'emojis"
msgid "Open links with in-app browser"
msgstr "Obre els enllaços al navegador de l'aplicació"
-#: src/view/com/pager/FeedsTabBarMobile.tsx:87
+#: src/view/screens/Moderation.tsx:92
+msgid "Open muted words settings"
+msgstr ""
+
+#: src/view/com/home/HomeHeaderLayoutMobile.tsx:49
msgid "Open navigation"
msgstr "Obre la navegació"
@@ -2618,7 +2743,7 @@ msgstr "Obre la configuració d'idioma"
msgid "Opens device photo gallery"
msgstr "Obre la galeria fotogrĆ fica del dispositiu"
-#: src/view/com/profile/ProfileHeader.tsx:419
+#: src/view/com/profile/ProfileHeader.tsx:420
msgid "Opens editor for profile display name, avatar, background image, and description"
msgstr "Obre l'editor del perfil per editar el nom, avatar, imatge de fons i descripció"
@@ -2626,11 +2751,11 @@ msgstr "Obre l'editor del perfil per editar el nom, avatar, imatge de fons i des
msgid "Opens external embeds settings"
msgstr "Obre la configuració per les incrustacions externes"
-#: src/view/com/profile/ProfileHeader.tsx:574
+#: src/view/com/profile/ProfileHeader.tsx:575
msgid "Opens followers list"
msgstr "Obre la llista de seguidors"
-#: src/view/com/profile/ProfileHeader.tsx:593
+#: src/view/com/profile/ProfileHeader.tsx:594
msgid "Opens following list"
msgstr "Obre la llista de seguits"
@@ -2658,7 +2783,8 @@ msgstr "Obre la configuració de la moderació"
msgid "Opens password reset form"
msgstr "Obre el formulari de restabliment de la contrasenya"
-#: src/view/screens/Feeds.tsx:357
+#: src/view/com/home/HomeHeaderLayout.web.tsx:60
+#: src/view/screens/Feeds.tsx:356
msgid "Opens screen to edit Saved Feeds"
msgstr "Obre pantalla per editar els canals desats"
@@ -2714,8 +2840,8 @@ msgstr "PĆ gina no trobada"
msgid "Page Not Found"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:210
-#: src/view/com/auth/create/Step1.tsx:220
+#: src/view/com/auth/create/Step1.tsx:214
+#: src/view/com/auth/create/Step1.tsx:224
#: src/view/com/auth/login/LoginForm.tsx:226
#: src/view/com/auth/login/SetNewPasswordForm.tsx:161
#: src/view/com/modals/DeleteAccount.tsx:202
@@ -2751,15 +2877,15 @@ msgid "Pets"
msgstr ""
#: src/view/com/auth/create/Step2.tsx:183
-msgid "Phone number"
-msgstr "TelĆØfon"
+#~ msgid "Phone number"
+#~ msgstr "TelĆØfon"
#: src/view/com/modals/SelfLabel.tsx:121
msgid "Pictures meant for adults."
msgstr "Imatges destinades a adults."
-#: src/view/screens/ProfileFeed.tsx:353
-#: src/view/screens/ProfileList.tsx:580
+#: src/view/screens/ProfileFeed.tsx:354
+#: src/view/screens/ProfileList.tsx:581
msgid "Pin to home"
msgstr "Fixa a l'inici"
@@ -2780,14 +2906,18 @@ msgstr "Reprodueix el vĆdeo"
msgid "Plays the GIF"
msgstr "Reprodueix el GIF"
-#: src/view/com/auth/create/state.ts:177
+#: src/view/com/auth/create/state.ts:124
msgid "Please choose your handle."
msgstr "Tria el teu identificador."
-#: src/view/com/auth/create/state.ts:160
+#: src/view/com/auth/create/state.ts:117
msgid "Please choose your password."
msgstr "Tria la teva contrasenya."
+#: src/view/com/auth/create/state.ts:131
+msgid "Please complete the verification captcha."
+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 "Confirma el teu correu abans de canviar-lo. Aquest és un requisit temporal mentre no s'afegeixin eines per actualitzar el correu. Aviat no serà necessari,"
@@ -2797,22 +2927,22 @@ msgid "Please enter a name for your app password. All spaces is not allowed."
msgstr "Introdueix un nom per a la contrasenya de la vostra aplicació. No es permeten tot en espais."
#: src/view/com/auth/create/Step2.tsx:206
-msgid "Please enter a phone number that can receive SMS text messages."
-msgstr "Introdueix un telĆØfon que pugui rebre missatges SMS"
+#~ msgid "Please enter a phone number that can receive SMS text messages."
+#~ msgstr "Introdueix un telĆØfon que pugui rebre missatges SMS"
#: src/view/com/modals/AddAppPasswords.tsx:145
msgid "Please enter a unique name for this App Password or use our randomly generated one."
msgstr "Introdueix un nom únic per aquesta contrasenya d'aplicació o fes servir un nom generat aleatòriament."
#: src/view/com/auth/create/state.ts:170
-msgid "Please enter the code you received by SMS."
-msgstr "Introdueix el codi que has rebut per SMS"
+#~ msgid "Please enter the code you received by SMS."
+#~ msgstr "Introdueix el codi que has rebut per SMS"
#: src/view/com/auth/create/Step2.tsx:282
-msgid "Please enter the verification code sent to {phoneNumberFormatted}."
-msgstr "Introdueix el codi de verificació enviat a {phoneNumberFormatted}"
+#~ msgid "Please enter the verification code sent to {phoneNumberFormatted}."
+#~ msgstr "Introdueix el codi de verificació enviat a {phoneNumberFormatted}"
-#: src/view/com/auth/create/state.ts:146
+#: src/view/com/auth/create/state.ts:103
msgid "Please enter your email."
msgstr "Introdueix el teu correu."
@@ -2832,7 +2962,7 @@ msgstr "Digues-nos per quĆØ creus que s'ha aplicat incorrectament l'advertĆØncia
msgid "Please Verify Your Email"
msgstr "Verifica el teu correu"
-#: src/view/com/composer/Composer.tsx:215
+#: src/view/com/composer/Composer.tsx:222
msgid "Please wait for your link card to finish loading"
msgstr "Espera que es generi la targeta de l'enllaƧ"
@@ -2844,13 +2974,13 @@ msgstr ""
msgid "Porn"
msgstr "Pornografia"
-#: src/view/com/composer/Composer.tsx:350
-#: src/view/com/composer/Composer.tsx:358
+#: src/view/com/composer/Composer.tsx:357
+#: src/view/com/composer/Composer.tsx:365
msgctxt "action"
msgid "Post"
msgstr "Publica"
-#: src/view/com/post-thread/PostThread.tsx:246
+#: src/view/com/post-thread/PostThread.tsx:303
msgctxt "description"
msgid "Post"
msgstr "Publicació"
@@ -2861,7 +2991,7 @@ msgstr "Publicació"
#~ msgid "Post"
#~ msgstr "Publicació"
-#: src/view/com/post-thread/PostThreadItem.tsx:174
+#: src/view/com/post-thread/PostThreadItem.tsx:175
msgid "Post by {0}"
msgstr "Publicació per {0}"
@@ -2871,11 +3001,11 @@ msgstr "Publicació per {0}"
msgid "Post by @{0}"
msgstr "Publicació per @{0}"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:84
+#: src/view/com/util/forms/PostDropdownBtn.tsx:90
msgid "Post deleted"
msgstr "Publicació eliminada"
-#: src/view/com/post-thread/PostThread.tsx:398
+#: src/view/com/post-thread/PostThread.tsx:462
msgid "Post hidden"
msgstr "Publicació oculta"
@@ -2887,14 +3017,22 @@ msgstr "Idioma de la publicació"
msgid "Post Languages"
msgstr "Idiomes de les publicacions"
-#: src/view/com/post-thread/PostThread.tsx:450
+#: src/view/com/post-thread/PostThread.tsx:514
msgid "Post not found"
msgstr "Publicació no trobada"
+#: src/components/TagMenu/index.tsx:257
+msgid "posts"
+msgstr ""
+
#: src/view/screens/Profile.tsx:180
msgid "Posts"
msgstr "Publicacions"
+#: src/components/dialogs/MutedWords.tsx:77
+msgid "Posts can be muted based on their text, their tags, or both."
+msgstr ""
+
#: src/view/com/posts/FeedErrorMessage.tsx:64
msgid "Posts hidden"
msgstr "Publicacions amagades"
@@ -2916,7 +3054,7 @@ msgid "Prioritize Your Follows"
msgstr "Prioritza els usuaris que segueixes"
#: src/view/screens/Settings/index.tsx:632
-#: src/view/shell/desktop/RightNav.tsx:80
+#: src/view/shell/desktop/RightNav.tsx:72
msgid "Privacy"
msgstr "Privacitat"
@@ -2959,11 +3097,11 @@ msgstr "Llistes d'usuaris per silenciar o bloquejar en massa, pĆŗbliques i per c
msgid "Public, shareable lists which can drive feeds."
msgstr "Llistes que poden nodrir canals, pĆŗbliques i per compartir."
-#: src/view/com/composer/Composer.tsx:335
+#: src/view/com/composer/Composer.tsx:342
msgid "Publish post"
msgstr "Publica"
-#: src/view/com/composer/Composer.tsx:335
+#: src/view/com/composer/Composer.tsx:342
msgid "Publish reply"
msgstr "Publica la resposta"
@@ -3001,6 +3139,7 @@ msgstr "Canals recomanats"
msgid "Recommended Users"
msgstr "Usuaris recomanats"
+#: src/components/dialogs/MutedWords.tsx:249
#: src/view/com/modals/ListAddRemoveUsers.tsx:264
#: src/view/com/modals/SelfLabel.tsx:83
#: src/view/com/modals/UserAddRemoveLists.tsx:219
@@ -3009,7 +3148,7 @@ msgstr "Usuaris recomanats"
msgid "Remove"
msgstr "Elimina"
-#: src/view/com/feeds/FeedSourceCard.tsx:106
+#: src/view/com/feeds/FeedSourceCard.tsx:108
msgid "Remove {0} from my feeds?"
msgstr "Vols eliminar {0} dels teus canals?"
@@ -3022,11 +3161,11 @@ msgstr "Elimina el compte"
msgid "Remove feed"
msgstr "Elimina el canal"
-#: src/view/com/feeds/FeedSourceCard.tsx:105
-#: src/view/com/feeds/FeedSourceCard.tsx:167
-#: src/view/com/feeds/FeedSourceCard.tsx:172
-#: src/view/com/feeds/FeedSourceCard.tsx:243
-#: src/view/screens/ProfileFeed.tsx:272
+#: src/view/com/feeds/FeedSourceCard.tsx:107
+#: src/view/com/feeds/FeedSourceCard.tsx:169
+#: src/view/com/feeds/FeedSourceCard.tsx:174
+#: src/view/com/feeds/FeedSourceCard.tsx:245
+#: src/view/screens/ProfileFeed.tsx:273
msgid "Remove from my feeds"
msgstr "Elimina dels meus canals"
@@ -3038,11 +3177,15 @@ msgstr "Elimina la imatge"
msgid "Remove image preview"
msgstr "Elimina la visualització prèvia de la imatge"
+#: src/components/dialogs/MutedWords.tsx:294
+msgid "Remove mute word from your list"
+msgstr ""
+
#: src/view/com/modals/Repost.tsx:47
msgid "Remove repost"
msgstr "Elimina la republicació"
-#: src/view/com/feeds/FeedSourceCard.tsx:173
+#: src/view/com/feeds/FeedSourceCard.tsx:175
msgid "Remove this feed from my feeds?"
msgstr "Vols eliminar aquest canal dels meus canals?"
@@ -3055,8 +3198,8 @@ msgstr "Vols eliminar aquest canal dels teus canals desats?"
msgid "Removed from list"
msgstr "Elimina de la llista"
-#: src/view/com/feeds/FeedSourceCard.tsx:111
-#: src/view/com/feeds/FeedSourceCard.tsx:178
+#: src/view/com/feeds/FeedSourceCard.tsx:113
+#: src/view/com/feeds/FeedSourceCard.tsx:180
msgid "Removed from my feeds"
msgstr "Eliminat dels meus canals"
@@ -3072,16 +3215,16 @@ msgstr "Respostes"
msgid "Replies to this thread are disabled"
msgstr "Les respostes a aquest fil de debat estan deshabilitades"
-#: src/view/com/composer/Composer.tsx:348
+#: src/view/com/composer/Composer.tsx:355
msgctxt "action"
msgid "Reply"
msgstr "Respon"
-#: src/view/screens/PreferencesHomeFeed.tsx:144
+#: src/view/screens/PreferencesFollowingFeed.tsx:144
msgid "Reply Filters"
msgstr "Filtres de resposta"
-#: src/view/com/post/Post.tsx:166
+#: src/view/com/post/Post.tsx:167
#: src/view/com/posts/FeedItem.tsx:287
msgctxt "description"
msgid "Reply to <0/>"
@@ -3091,20 +3234,20 @@ msgstr "Resposta a <0/>"
msgid "Report {collectionName}"
msgstr "Informa de {collectionName}"
-#: src/view/com/profile/ProfileHeader.tsx:360
+#: src/view/com/profile/ProfileHeader.tsx:361
msgid "Report Account"
msgstr "Informa del compte"
-#: src/view/screens/ProfileFeed.tsx:292
+#: src/view/screens/ProfileFeed.tsx:293
msgid "Report feed"
msgstr "Informa del canal"
-#: src/view/screens/ProfileList.tsx:458
+#: src/view/screens/ProfileList.tsx:459
msgid "Report List"
msgstr "Informa de la llista"
#: src/view/com/modals/report/SendReportButton.tsx:37
-#: src/view/com/util/forms/PostDropdownBtn.tsx:210
+#: src/view/com/util/forms/PostDropdownBtn.tsx:255
msgid "Report post"
msgstr "Informa de la publicació"
@@ -3149,7 +3292,7 @@ msgstr "Republicada per <0/>"
msgid "reposted your post"
msgstr "ha republicat la teva publicació"
-#: src/view/com/post-thread/PostThreadItem.tsx:187
+#: src/view/com/post-thread/PostThreadItem.tsx:188
msgid "Reposts of this post"
msgstr "Republicacions d'aquesta publicació"
@@ -3159,8 +3302,8 @@ msgid "Request Change"
msgstr "Demana un canvi"
#: src/view/com/auth/create/Step2.tsx:219
-msgid "Request code"
-msgstr "Demana un codi"
+#~ msgid "Request code"
+#~ msgstr "Demana un codi"
#: src/view/com/modals/ChangePassword.tsx:239
#: src/view/com/modals/ChangePassword.tsx:241
@@ -3171,7 +3314,7 @@ msgstr ""
msgid "Require alt text before posting"
msgstr "Requereix un text alternatiu abans de publicar"
-#: src/view/com/auth/create/Step1.tsx:149
+#: src/view/com/auth/create/Step1.tsx:153
msgid "Required for this provider"
msgstr "Requerit per aquest proveĆÆdor"
@@ -3223,9 +3366,8 @@ msgstr "Torna a intentar l'última acció, que ha donat error"
#: src/screens/Onboarding/StepInterests/index.tsx:221
#: src/screens/Onboarding/StepInterests/index.tsx:224
-#: src/view/com/auth/create/CreateAccount.tsx:170
-#: src/view/com/auth/create/CreateAccount.tsx:175
-#: src/view/com/auth/create/Step2.tsx:255
+#: src/view/com/auth/create/CreateAccount.tsx:181
+#: src/view/com/auth/create/CreateAccount.tsx:186
#: src/view/com/auth/login/LoginForm.tsx:268
#: src/view/com/auth/login/LoginForm.tsx:271
#: src/view/com/util/error/ErrorMessage.tsx:55
@@ -3234,16 +3376,16 @@ msgid "Retry"
msgstr "Torna-ho a provar"
#: src/view/com/auth/create/Step2.tsx:247
-msgid "Retry."
-msgstr "Torna-ho a provar"
+#~ msgid "Retry."
+#~ msgstr "Torna-ho a provar"
#: src/view/screens/ProfileList.tsx:898
msgid "Return to previous page"
msgstr "Torna a la pĆ gina anterior"
#: src/view/shell/desktop/RightNav.tsx:55
-msgid "SANDBOX. Posts and accounts are not permanent."
-msgstr "ENTORN DE PROVES. Les publicacions i els comptes no són permanents."
+#~ msgid "SANDBOX. Posts and accounts are not permanent."
+#~ msgstr "ENTORN DE PROVES. Les publicacions i els comptes no són permanents."
#: src/view/com/lightbox/Lightbox.tsx:132
#: src/view/com/modals/CreateOrEditList.tsx:345
@@ -3256,7 +3398,7 @@ msgstr "Desa"
#: src/view/com/modals/ChangeHandle.tsx:173
#: src/view/com/modals/CreateOrEditList.tsx:337
#: src/view/com/modals/EditProfile.tsx:224
-#: src/view/screens/ProfileFeed.tsx:345
+#: src/view/screens/ProfileFeed.tsx:346
msgid "Save"
msgstr "Desa"
@@ -3296,14 +3438,14 @@ msgstr ""
msgid "Scroll to top"
msgstr "DesplaƧa't cap a dalt"
-#: src/Navigation.tsx:437
+#: src/Navigation.tsx:440
#: src/view/com/auth/LoggedOut.tsx:122
#: src/view/com/modals/ListAddRemoveUsers.tsx:75
#: src/view/com/util/forms/SearchInput.tsx:67
#: src/view/com/util/forms/SearchInput.tsx:79
-#: src/view/screens/Search/Search.tsx:418
-#: src/view/screens/Search/Search.tsx:645
-#: src/view/screens/Search/Search.tsx:663
+#: src/view/screens/Search/Search.tsx:419
+#: src/view/screens/Search/Search.tsx:668
+#: src/view/screens/Search/Search.tsx:686
#: src/view/shell/bottom-bar/BottomBar.tsx:159
#: src/view/shell/desktop/LeftNav.tsx:324
#: src/view/shell/desktop/Search.tsx:214
@@ -3313,11 +3455,19 @@ msgstr "DesplaƧa't cap a dalt"
msgid "Search"
msgstr "Cerca"
-#: src/view/screens/Search/Search.tsx:712
+#: src/view/screens/Search/Search.tsx:735
#: src/view/shell/desktop/Search.tsx:255
msgid "Search for \"{query}\""
msgstr "Cerca per \"{query}\""
+#: src/components/TagMenu/index.tsx:145
+msgid "Search for all posts by @{authorHandle} with tag {tag}"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:90
+msgid "Search for all posts with tag {tag}"
+msgstr ""
+
#: src/view/com/auth/LoggedOut.tsx:104
#: src/view/com/auth/LoggedOut.tsx:105
#: src/view/com/modals/ListAddRemoveUsers.tsx:70
@@ -3328,6 +3478,22 @@ msgstr "Cerca usuaris"
msgid "Security Step Required"
msgstr "Es requereix un pas de seguretat"
+#: src/components/TagMenu/index.web.tsx:50
+msgid "See {truncatedTag} posts"
+msgstr ""
+
+#: src/components/TagMenu/index.web.tsx:67
+msgid "See {truncatedTag} posts by user"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:128
+msgid "See <0>{tag}0> posts"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:189
+msgid "See <0>{tag}0> posts by this user"
+msgstr ""
+
#: src/view/screens/SavedFeeds.tsx:163
msgid "See this guide"
msgstr "Consulta aquesta guia"
@@ -3352,7 +3518,7 @@ msgstr "Selecciona d'un compte existent"
msgid "Select option {i} of {numItems}"
msgstr "Selecciona l'opció {i} de {numItems}"
-#: src/view/com/auth/create/Step1.tsx:99
+#: src/view/com/auth/create/Step1.tsx:103
#: src/view/com/auth/login/LoginForm.tsx:150
msgid "Select service"
msgstr "Selecciona el servei"
@@ -3365,7 +3531,7 @@ msgstr ""
msgid "Select the service that hosts your data."
msgstr ""
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:90
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:96
msgid "Select topical feeds to follow from the list below"
msgstr ""
@@ -3386,8 +3552,8 @@ msgid "Select your interests from the options below"
msgstr ""
#: src/view/com/auth/create/Step2.tsx:155
-msgid "Select your phone's country"
-msgstr "Selecciona el paĆs del teu telĆØfon"
+#~ msgid "Select your phone's country"
+#~ msgstr "Selecciona el paĆs del teu telĆØfon"
#: src/view/screens/LanguageSettings.tsx:190
msgid "Select your preferred language for translations in your feed."
@@ -3470,19 +3636,19 @@ msgstr ""
msgid "Set new password"
msgstr "Estableix una nova contrasenya"
-#: src/view/com/auth/create/Step1.tsx:221
+#: src/view/com/auth/create/Step1.tsx:225
msgid "Set password"
msgstr "Estableix una contrasenya"
-#: src/view/screens/PreferencesHomeFeed.tsx:225
+#: src/view/screens/PreferencesFollowingFeed.tsx:225
msgid "Set this setting to \"No\" to hide all quote posts from your feed. Reposts will still be visible."
msgstr "Posa \"No\" a aquesta opció per amagar totes les publicacions citades del teu canal. Les republicacions encara seran visibles."
-#: src/view/screens/PreferencesHomeFeed.tsx:122
+#: src/view/screens/PreferencesFollowingFeed.tsx:122
msgid "Set this setting to \"No\" to hide all replies from your feed."
msgstr "Posa \"No\" a aquesta opció per amagar totes les respostes del teu canal."
-#: src/view/screens/PreferencesHomeFeed.tsx:191
+#: src/view/screens/PreferencesFollowingFeed.tsx:191
msgid "Set this setting to \"No\" to hide all reposts from your feed."
msgstr "Posa \"No\" a aquesta opció per amagar totes les republicacions del teu canal."
@@ -3491,8 +3657,12 @@ msgid "Set this setting to \"Yes\" to show replies in a threaded view. This is a
msgstr "Posa \"SĆ\" a aquesta opció per mostrar les respostes en vista de fil de debat. Aquesta Ć©s una opció experimental."
#: 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 "Posa \"SĆ\" a aquesta opció per mostrar algunes publicacions dels teus canals en el teu canal de seguits. Aquesta Ć©s una opció experimental."
+#~ msgid "Set this setting to \"Yes\" to show samples of your saved feeds in your following feed. This is an experimental feature."
+#~ msgstr "Posa \"SĆ\" a aquesta opció per mostrar algunes publicacions dels teus canals en el teu canal de seguits. Aquesta Ć©s una opció experimental."
+
+#: src/view/screens/PreferencesFollowingFeed.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/screens/Onboarding/Layout.tsx:50
msgid "Set up your account"
@@ -3510,7 +3680,7 @@ msgstr "Estableix un correu per restablir la contrasenya"
msgid "Sets hosting provider for password reset"
msgstr "Estableix un proveĆÆdor d'allotjament per restablir la contrasenya"
-#: src/view/com/auth/create/Step1.tsx:100
+#: src/view/com/auth/create/Step1.tsx:104
#: src/view/com/auth/login/LoginForm.tsx:151
msgid "Sets server for the Bluesky client"
msgstr "Estableix el servidor pel cient de Bluesky"
@@ -3532,13 +3702,13 @@ msgctxt "action"
msgid "Share"
msgstr "Comparteix"
-#: src/view/com/profile/ProfileHeader.tsx:294
-#: src/view/com/util/forms/PostDropdownBtn.tsx:153
-#: src/view/screens/ProfileList.tsx:417
+#: src/view/com/profile/ProfileHeader.tsx:295
+#: src/view/com/util/forms/PostDropdownBtn.tsx:184
+#: src/view/screens/ProfileList.tsx:418
msgid "Share"
msgstr "Comparteix"
-#: src/view/screens/ProfileFeed.tsx:304
+#: src/view/screens/ProfileFeed.tsx:305
msgid "Share feed"
msgstr "Comparteix el canal"
@@ -3550,7 +3720,7 @@ msgstr "Comparteix el canal"
msgid "Show"
msgstr "Mostra"
-#: src/view/screens/PreferencesHomeFeed.tsx:68
+#: src/view/screens/PreferencesFollowingFeed.tsx:68
msgid "Show all replies"
msgstr "Mostra totes les respostes"
@@ -3562,21 +3732,21 @@ msgstr "Mostra igualment"
msgid "Show embeds from {0}"
msgstr "Mostra els incrustats de {0}"
-#: src/view/com/profile/ProfileHeader.tsx:458
+#: src/view/com/profile/ProfileHeader.tsx:459
msgid "Show follows similar to {0}"
msgstr "Mostra seguidors semblants a {0}"
-#: src/view/com/post-thread/PostThreadItem.tsx:539
-#: src/view/com/post/Post.tsx:197
+#: src/view/com/post-thread/PostThreadItem.tsx:538
+#: src/view/com/post/Post.tsx:198
#: src/view/com/posts/FeedItem.tsx:363
msgid "Show More"
msgstr "Mostra mƩs"
-#: src/view/screens/PreferencesHomeFeed.tsx:258
+#: src/view/screens/PreferencesFollowingFeed.tsx:258
msgid "Show Posts from My Feeds"
msgstr "Mostra les publicacions dels meus canals"
-#: src/view/screens/PreferencesHomeFeed.tsx:222
+#: src/view/screens/PreferencesFollowingFeed.tsx:222
msgid "Show Quote Posts"
msgstr "Mostra les publicacions citades"
@@ -3592,7 +3762,7 @@ msgstr ""
msgid "Show re-posts in Following feed"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:119
+#: src/view/screens/PreferencesFollowingFeed.tsx:119
msgid "Show Replies"
msgstr "Mostra les respostes"
@@ -3608,11 +3778,11 @@ msgstr ""
msgid "Show replies in Following feed"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:70
+#: src/view/screens/PreferencesFollowingFeed.tsx:70
msgid "Show replies with at least {value} {0}"
msgstr "Mostra respostes amb almenys {value} {0}"
-#: src/view/screens/PreferencesHomeFeed.tsx:188
+#: src/view/screens/PreferencesFollowingFeed.tsx:188
msgid "Show Reposts"
msgstr "Mostra republicacions"
@@ -3629,18 +3799,18 @@ msgstr "Mostra el contingut"
msgid "Show users"
msgstr "Mostra usuaris"
-#: src/view/com/profile/ProfileHeader.tsx:461
+#: src/view/com/profile/ProfileHeader.tsx:462
msgid "Shows a list of users similar to this user."
msgstr "Mostra una llista d'usuaris semblants a aquest"
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:124
-#: src/view/com/profile/ProfileHeader.tsx:505
+#: src/view/com/profile/ProfileHeader.tsx:506
msgid "Shows posts from {0} in your feed"
msgstr "Mostra les publicacions de {0} al teu canal"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:70
#: src/view/com/auth/login/Login.tsx:98
-#: src/view/com/auth/SplashScreen.tsx:54
+#: src/view/com/auth/SplashScreen.tsx:79
#: src/view/shell/bottom-bar/BottomBar.tsx:285
#: src/view/shell/bottom-bar/BottomBar.tsx:286
#: src/view/shell/bottom-bar/BottomBar.tsx:288
@@ -3653,8 +3823,8 @@ msgid "Sign in"
msgstr "Inicia sessió"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:78
-#: src/view/com/auth/SplashScreen.tsx:57
-#: src/view/com/auth/SplashScreen.web.tsx:87
+#: src/view/com/auth/SplashScreen.tsx:82
+#: src/view/com/auth/SplashScreen.web.tsx:91
msgid "Sign In"
msgstr "Inicia sessió"
@@ -3721,8 +3891,8 @@ msgid "Skip this flow"
msgstr ""
#: src/view/com/auth/create/Step2.tsx:82
-msgid "SMS verification"
-msgstr "Verificació per SMS"
+#~ msgid "SMS verification"
+#~ msgstr "Verificació per SMS"
#: src/screens/Onboarding/index.tsx:40
msgid "Software Dev"
@@ -3736,7 +3906,7 @@ msgstr ""
msgid "Something went wrong. Check your email and try again."
msgstr "Alguna cosa ha fallat. Comprova el teu correu i torna-ho a provar."
-#: src/App.native.tsx:61
+#: src/App.native.tsx:63
msgid "Sorry! Your session expired. Please log in again."
msgstr "La teva sessió ha caducat. Torna a inciar-la."
@@ -3781,7 +3951,7 @@ msgstr "Historial"
msgid "Submit"
msgstr "Envia"
-#: src/view/screens/ProfileList.tsx:607
+#: src/view/screens/ProfileList.tsx:608
msgid "Subscribe"
msgstr "Subscriure's"
@@ -3790,11 +3960,11 @@ msgstr "Subscriure's"
msgid "Subscribe to the {0} feed"
msgstr ""
-#: src/view/screens/ProfileList.tsx:603
+#: src/view/screens/ProfileList.tsx:604
msgid "Subscribe to this list"
msgstr "Subscriure's a la llista"
-#: src/view/screens/Search/Search.tsx:373
+#: src/view/screens/Search/Search.tsx:374
msgid "Suggested Follows"
msgstr "Usuaris suggerits per seguir"
@@ -3838,6 +4008,14 @@ msgstr "Sistema"
msgid "System log"
msgstr "Registres del sistema"
+#: src/components/dialogs/MutedWords.tsx:288
+msgid "tag"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:74
+msgid "Tag menu: {tag}"
+msgstr ""
+
#: src/view/com/modals/crop-image/CropImage.web.tsx:112
msgid "Tall"
msgstr "Alt"
@@ -3850,7 +4028,7 @@ msgstr "Toca per veure-ho completament"
msgid "Tech"
msgstr ""
-#: src/view/shell/desktop/RightNav.tsx:89
+#: src/view/shell/desktop/RightNav.tsx:81
msgid "Terms"
msgstr "Condicions"
@@ -3861,12 +4039,20 @@ msgstr "Condicions"
msgid "Terms of Service"
msgstr "Condicions del servei"
+#: src/components/dialogs/MutedWords.tsx:288
+msgid "text"
+msgstr ""
+
#: src/view/com/modals/AppealLabel.tsx:70
#: src/view/com/modals/report/InputIssueDetails.tsx:51
msgid "Text input field"
msgstr "Camp d'introducció de text"
-#: src/view/com/profile/ProfileHeader.tsx:262
+#: src/view/com/auth/create/CreateAccount.tsx:94
+msgid "That handle is already taken."
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:263
msgid "The account will be able to interact with you after unblocking."
msgstr "El compte podrà interactuar amb tu després del desbloqueig."
@@ -3882,7 +4068,7 @@ msgstr "La polĆtica de drets d'autoria ha estat traslladada a <0/>"
msgid "The following steps will help customize your Bluesky experience."
msgstr ""
-#: src/view/com/post-thread/PostThread.tsx:453
+#: src/view/com/post-thread/PostThread.tsx:517
msgid "The post may have been deleted."
msgstr "Ćs possible que la publicació s'hagi esborrat."
@@ -3906,7 +4092,7 @@ msgstr "Les condicions del servei han estat traslladades a "
msgid "There are many feeds to try:"
msgstr ""
-#: src/view/screens/ProfileFeed.tsx:549
+#: src/view/screens/ProfileFeed.tsx:550
msgid "There was an an issue contacting the server, please check your internet connection and try again."
msgstr "Hi ha hagut un problema per contactar amb el servidor, comprova la teva connexió a internet i torna-ho a provar"
@@ -3914,12 +4100,12 @@ msgstr "Hi ha hagut un problema per contactar amb el servidor, comprova la teva
msgid "There was an an issue removing this feed. Please check your internet connection and try again."
msgstr "Hi ha hagut un problema per eliminar aquest canal, comprova la teva connexió a internet i torna-ho a provar"
-#: src/view/screens/ProfileFeed.tsx:209
+#: src/view/screens/ProfileFeed.tsx:210
msgid "There was an an issue updating your feeds, please check your internet connection and try again."
msgstr "Hi ha hagut un problema per actualitzar els teus canals, comprova la teva connexió a internet i torna-ho a provar"
-#: src/view/screens/ProfileFeed.tsx:236
-#: src/view/screens/ProfileList.tsx:266
+#: src/view/screens/ProfileFeed.tsx:237
+#: src/view/screens/ProfileList.tsx:267
#: src/view/screens/SavedFeeds.tsx:209
#: src/view/screens/SavedFeeds.tsx:231
#: src/view/screens/SavedFeeds.tsx:252
@@ -3928,9 +4114,9 @@ msgstr "Hi ha hagut un problema per contactar amb el servidor"
#: src/view/com/auth/onboarding/RecommendedFeedsItem.tsx:57
#: src/view/com/auth/onboarding/RecommendedFeedsItem.tsx:66
-#: src/view/com/feeds/FeedSourceCard.tsx:113
-#: src/view/com/feeds/FeedSourceCard.tsx:127
-#: src/view/com/feeds/FeedSourceCard.tsx:181
+#: src/view/com/feeds/FeedSourceCard.tsx:115
+#: src/view/com/feeds/FeedSourceCard.tsx:129
+#: src/view/com/feeds/FeedSourceCard.tsx:183
msgid "There was an issue contacting your server"
msgstr "Hi ha hagut un problema per contactar amb el teu servidor"
@@ -3962,19 +4148,19 @@ msgstr "Hi ha hagut un problema en obtenir les teves contrasenyes d'aplicació"
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:93
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:105
-#: src/view/com/profile/ProfileHeader.tsx:156
-#: src/view/com/profile/ProfileHeader.tsx:177
-#: src/view/com/profile/ProfileHeader.tsx:216
-#: src/view/com/profile/ProfileHeader.tsx:229
-#: src/view/com/profile/ProfileHeader.tsx:249
-#: src/view/com/profile/ProfileHeader.tsx:271
+#: src/view/com/profile/ProfileHeader.tsx:157
+#: src/view/com/profile/ProfileHeader.tsx:178
+#: src/view/com/profile/ProfileHeader.tsx:217
+#: src/view/com/profile/ProfileHeader.tsx:230
+#: src/view/com/profile/ProfileHeader.tsx:250
+#: src/view/com/profile/ProfileHeader.tsx:272
msgid "There was an issue! {0}"
msgstr "Hi ha hagut un problema! {0}"
-#: src/view/screens/ProfileList.tsx:287
-#: src/view/screens/ProfileList.tsx:306
-#: src/view/screens/ProfileList.tsx:328
-#: src/view/screens/ProfileList.tsx:347
+#: src/view/screens/ProfileList.tsx:288
+#: src/view/screens/ProfileList.tsx:307
+#: src/view/screens/ProfileList.tsx:329
+#: src/view/screens/ProfileList.tsx:348
msgid "There was an issue. Please check your internet connection and try again."
msgstr "Hi ha hagut un problema. Comprova la teva connexió a internet i torna-ho a provar."
@@ -3987,8 +4173,8 @@ msgid "There's been a rush of new users to Bluesky! We'll activate your account
msgstr ""
#: src/view/com/auth/create/Step2.tsx:55
-msgid "There's something wrong with this number. Please choose your country and enter your full phone number!"
-msgstr "Aquest telĆØfon Ć©s erroni. Tria el teu paĆs i introdueix el teu telĆØfon complert"
+#~ msgid "There's something wrong with this number. Please choose your country and enter your full phone number!"
+#~ msgstr "Aquest telĆØfon Ć©s erroni. Tria el teu paĆs i introdueix el teu telĆØfon complert"
#: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:138
msgid "These are popular accounts you might like:"
@@ -4026,8 +4212,8 @@ msgid "This feed is currently receiving high traffic and is temporarily unavaila
msgstr "Aquest canal està rebent moltes visites actualment i està temporalment inactiu. Prova-ho més tard."
#: src/view/screens/Profile.tsx:420
-#: src/view/screens/ProfileFeed.tsx:475
-#: src/view/screens/ProfileList.tsx:660
+#: src/view/screens/ProfileFeed.tsx:476
+#: src/view/screens/ProfileList.tsx:661
msgid "This feed is empty!"
msgstr "Aquest canal estĆ buit!"
@@ -4059,7 +4245,7 @@ msgstr "Aquesta llista estĆ buida!"
msgid "This name is already in use"
msgstr "Aquest nom ja estĆ en Ćŗs"
-#: src/view/com/post-thread/PostThreadItem.tsx:122
+#: src/view/com/post-thread/PostThreadItem.tsx:125
msgid "This post has been deleted."
msgstr "Aquesta publicació ha estat esborrada."
@@ -4083,7 +4269,11 @@ msgstr ""
msgid "This warning is only available for posts with media attached."
msgstr "Aquesta advertència només està disponible per publicacions amb contingut adjuntat."
-#: src/view/com/util/forms/PostDropdownBtn.tsx:192
+#: src/components/dialogs/MutedWords.tsx:236
+msgid "This will delete {0} from your muted words. You can always add it back later."
+msgstr ""
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:237
msgid "This will hide this post from your feeds."
msgstr "Això amagarà aquesta publicació dels teus canals."
@@ -4096,10 +4286,14 @@ msgstr "PreferĆØncies dels fils de debat"
msgid "Threaded Mode"
msgstr "Mode fils de debat"
-#: src/Navigation.tsx:252
+#: src/Navigation.tsx:255
msgid "Threads Preferences"
msgstr "PreferĆØncies dels fils de debat"
+#: src/components/dialogs/MutedWords.tsx:95
+msgid "Toggle between muted word options."
+msgstr ""
+
#: src/view/com/util/forms/DropdownButton.tsx:246
msgid "Toggle dropdown"
msgstr "Commuta el menĆŗ desplegable"
@@ -4108,9 +4302,9 @@ msgstr "Commuta el menĆŗ desplegable"
msgid "Transformations"
msgstr "Transformacions"
-#: src/view/com/post-thread/PostThreadItem.tsx:686
-#: src/view/com/post-thread/PostThreadItem.tsx:688
-#: src/view/com/util/forms/PostDropdownBtn.tsx:125
+#: src/view/com/post-thread/PostThreadItem.tsx:685
+#: src/view/com/post-thread/PostThreadItem.tsx:687
+#: src/view/com/util/forms/PostDropdownBtn.tsx:156
msgid "Translate"
msgstr "Tradueix"
@@ -4123,15 +4317,15 @@ msgstr "Torna-ho a provar"
#~ msgid "Try again"
#~ msgstr "Torna-ho a provar"
-#: src/view/screens/ProfileList.tsx:505
+#: src/view/screens/ProfileList.tsx:506
msgid "Un-block list"
msgstr "Desbloqueja la llista"
-#: src/view/screens/ProfileList.tsx:490
+#: src/view/screens/ProfileList.tsx:491
msgid "Un-mute list"
msgstr "Deixa de silenciar la llista"
-#: src/view/com/auth/create/CreateAccount.tsx:66
+#: src/view/com/auth/create/CreateAccount.tsx:58
#: src/view/com/auth/login/ForgotPasswordForm.tsx:87
#: src/view/com/auth/login/Login.tsx:76
#: src/view/com/auth/login/LoginForm.tsx:118
@@ -4139,18 +4333,18 @@ msgstr "Deixa de silenciar la llista"
msgid "Unable to contact your service. Please check your Internet connection."
msgstr "No es pot contactar amb el teu servei. Comprova la teva connexió a internet."
-#: src/view/com/profile/ProfileHeader.tsx:432
-#: src/view/screens/ProfileList.tsx:589
+#: src/view/com/profile/ProfileHeader.tsx:433
+#: src/view/screens/ProfileList.tsx:590
msgid "Unblock"
msgstr "Desbloqueja"
-#: src/view/com/profile/ProfileHeader.tsx:435
+#: src/view/com/profile/ProfileHeader.tsx:436
msgctxt "action"
msgid "Unblock"
msgstr "Desbloqueja"
-#: src/view/com/profile/ProfileHeader.tsx:260
-#: src/view/com/profile/ProfileHeader.tsx:344
+#: src/view/com/profile/ProfileHeader.tsx:261
+#: src/view/com/profile/ProfileHeader.tsx:345
msgid "Unblock Account"
msgstr "Desbloqueja el compte"
@@ -4166,11 +4360,11 @@ msgctxt "action"
msgid "Unfollow"
msgstr "Deixa de seguir"
-#: src/view/com/profile/ProfileHeader.tsx:484
+#: src/view/com/profile/ProfileHeader.tsx:485
msgid "Unfollow {0}"
msgstr "Deixa de seguir a {0}"
-#: src/view/com/auth/create/state.ts:300
+#: src/view/com/auth/create/state.ts:262
msgid "Unfortunately, you do not meet the requirements to create an account."
msgstr "No compleixes les condicions per crear un compte."
@@ -4179,28 +4373,37 @@ msgstr "No compleixes les condicions per crear un compte."
msgid "Unlike"
msgstr "DesfƩs el m'agrada"
-#: src/view/screens/ProfileList.tsx:596
+#: src/components/TagMenu/index.tsx:253
+#: src/view/screens/ProfileList.tsx:597
msgid "Unmute"
msgstr "Deixa de silenciar"
-#: src/view/com/profile/ProfileHeader.tsx:325
+#: src/components/TagMenu/index.web.tsx:90
+msgid "Unmute {truncatedTag}"
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:326
msgid "Unmute Account"
msgstr "Deixa de silenciar el compte"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:171
+#: src/components/TagMenu/index.tsx:210
+msgid "Unmute all {tag} posts"
+msgstr ""
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:202
msgid "Unmute thread"
msgstr "Deixa de silenciar el fil de debat"
-#: src/view/screens/ProfileFeed.tsx:353
-#: src/view/screens/ProfileList.tsx:580
+#: src/view/screens/ProfileFeed.tsx:354
+#: src/view/screens/ProfileList.tsx:581
msgid "Unpin"
msgstr "Deixa de fixar"
-#: src/view/screens/ProfileList.tsx:473
+#: src/view/screens/ProfileList.tsx:474
msgid "Unpin moderation list"
msgstr "Desancora la llista de moderació"
-#: src/view/screens/ProfileFeed.tsx:345
+#: src/view/screens/ProfileFeed.tsx:346
msgid "Unsave"
msgstr "No desis"
@@ -4262,11 +4465,11 @@ msgstr "Usuari bloquejat per una llista"
msgid "User Blocks You"
msgstr "L'usuari t'ha bloquejat"
-#: src/view/com/auth/create/Step3.tsx:41
+#: src/view/com/auth/create/Step2.tsx:79
msgid "User handle"
msgstr "Identificador d'usuari"
-#: src/view/com/lists/ListCard.tsx:84
+#: src/view/com/lists/ListCard.tsx:85
#: src/view/com/modals/UserAddRemoveLists.tsx:198
msgid "User list by {0}"
msgstr "Llista d'usuaris per {0}"
@@ -4275,7 +4478,7 @@ msgstr "Llista d'usuaris per {0}"
msgid "User list by <0/>"
msgstr "Llista d'usuaris feta per <0/>"
-#: src/view/com/lists/ListCard.tsx:82
+#: src/view/com/lists/ListCard.tsx:83
#: src/view/com/modals/UserAddRemoveLists.tsx:196
#: src/view/screens/ProfileList.tsx:760
msgid "User list by you"
@@ -4311,8 +4514,8 @@ msgid "Users in \"{0}\""
msgstr "Usuaris a \"{0}\""
#: src/view/com/auth/create/Step2.tsx:243
-msgid "Verification code"
-msgstr "Codi de verificació"
+#~ msgid "Verification code"
+#~ msgstr "Codi de verificació"
#: src/view/screens/Settings/index.tsx:910
msgid "Verify email"
@@ -4339,7 +4542,7 @@ msgstr "Verifica el teu correu"
msgid "Video Games"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:661
+#: src/view/com/profile/ProfileHeader.tsx:662
msgid "View {0}'s avatar"
msgstr "Veure l'avatar de {0}"
@@ -4384,6 +4587,10 @@ msgstr ""
msgid "We ran out of posts from your follows. Here's the latest from <0/>."
msgstr "Ja no hi ha més publicacions dels usuaris que segueixes. Aquà n'hi ha altres de <0/>."
+#: src/components/dialogs/MutedWords.tsx:161
+msgid "We recommend avoiding common words that appear in many posts, since it can result in no posts being shown."
+msgstr ""
+
#: src/screens/Onboarding/StepAlgoFeeds/index.tsx:124
msgid "We recommend our \"Discover\" feed:"
msgstr ""
@@ -4404,15 +4611,19 @@ msgstr "Analitzarem la teva apel·lació rà pidament."
msgid "We'll use this to help customize your experience."
msgstr ""
-#: src/view/com/auth/create/CreateAccount.tsx:123
+#: src/view/com/auth/create/CreateAccount.tsx:134
msgid "We're so excited to have you join us!"
msgstr "Ens fa molta il·lusió que t'uneixis a nosaltres!"
-#: src/view/screens/ProfileList.tsx:85
+#: src/view/screens/ProfileList.tsx:86
msgid "We're sorry, but we were unable to resolve this list. If this persists, please contact the list creator, @{handleOrDid}."
msgstr "Ho sentim, però no hem pogut resoldre aquesta llista. Si això continua, posa't en contacte amb el creador de la llista, @{handleOrDid}."
-#: src/view/screens/Search/Search.tsx:253
+#: src/components/dialogs/MutedWords.tsx:182
+msgid "We're sorry, but we weren't able to load your muted words at this time. Please try again."
+msgstr ""
+
+#: src/view/screens/Search/Search.tsx:254
msgid "We're sorry, but your search could not be completed. Please try again in a few minutes."
msgstr "Ens sap greu, però la teva cerca no s'ha pogut fer. Prova-ho d'aquà una estona."
@@ -4435,8 +4646,8 @@ msgstr "Quin problema hi ha amb {collectionName}?"
#~ msgid "What's next?"
#~ msgstr "¿Qué sigue?"
-#: src/view/com/auth/SplashScreen.tsx:34
-#: src/view/com/composer/Composer.tsx:279
+#: src/view/com/auth/SplashScreen.tsx:59
+#: src/view/com/composer/Composer.tsx:286
msgid "What's up?"
msgstr "QuĆØ hi ha de nou"
@@ -4457,11 +4668,11 @@ msgstr "Qui hi pot respondre"
msgid "Wide"
msgstr "Amplada"
-#: src/view/com/composer/Composer.tsx:415
+#: src/view/com/composer/Composer.tsx:422
msgid "Write post"
msgstr "Escriu una publicació"
-#: src/view/com/composer/Composer.tsx:278
+#: src/view/com/composer/Composer.tsx:285
#: src/view/com/composer/Prompt.tsx:33
msgid "Write your reply"
msgstr "Escriu la teva resposta"
@@ -4471,14 +4682,14 @@ msgid "Writers"
msgstr ""
#: src/view/com/auth/create/Step2.tsx:263
-msgid "XXXXXX"
-msgstr "XXXXXX"
+#~ msgid "XXXXXX"
+#~ msgstr "XXXXXX"
#: src/view/com/composer/select-language/SuggestedLanguage.tsx:77
-#: 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/PreferencesFollowingFeed.tsx:129
+#: src/view/screens/PreferencesFollowingFeed.tsx:201
+#: src/view/screens/PreferencesFollowingFeed.tsx:236
+#: src/view/screens/PreferencesFollowingFeed.tsx:271
#: src/view/screens/PreferencesThreads.tsx:106
#: src/view/screens/PreferencesThreads.tsx:129
msgid "Yes"
@@ -4514,7 +4725,7 @@ msgstr "Encara no tens codis d'invitació! Te n'enviarem quan portis una mica m
msgid "You don't have any pinned feeds."
msgstr "No tens cap canal fixat."
-#: src/view/screens/Feeds.tsx:451
+#: src/view/screens/Feeds.tsx:452
msgid "You don't have any saved feeds!"
msgstr "No tens cap canal desat!"
@@ -4522,7 +4733,7 @@ msgstr "No tens cap canal desat!"
msgid "You don't have any saved feeds."
msgstr "No tens cap canal desat."
-#: src/view/com/post-thread/PostThread.tsx:401
+#: src/view/com/post-thread/PostThread.tsx:465
msgid "You have blocked the author or you have been blocked by the author."
msgstr "Has bloquejat l'autor o has estat bloquejat per ell."
@@ -4562,6 +4773,10 @@ msgstr "Encara no has creat cap contrasenya d'aplicació. Pots fer-ho amb el bot
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 "Encara no has silenciat cap compte. Per fer-ho, vés al seu perfil i selecciona \"Silencia compte\" en el menú del seu compte."
+#: src/components/dialogs/MutedWords.tsx:202
+msgid "You haven't muted any words or tags yet"
+msgstr ""
+
#: src/view/com/modals/ContentFilteringSettings.tsx:175
msgid "You must be 18 or older to enable adult content."
msgstr "Has de tenir 18 anys o mƩs per habilitar el contingut per a adults."
@@ -4570,11 +4785,11 @@ msgstr "Has de tenir 18 anys o mƩs per habilitar el contingut per a adults."
msgid "You must be 18 years or older to enable adult content"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:98
+#: src/view/com/util/forms/PostDropdownBtn.tsx:129
msgid "You will no longer receive notifications for this thread"
msgstr "Ja no rebràs més notificacions d'aquest debat"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:101
+#: src/view/com/util/forms/PostDropdownBtn.tsx:132
msgid "You will now receive notifications for this thread"
msgstr "Ara rebrĆ s notificacions d'aquest debat"
@@ -4612,7 +4827,7 @@ msgstr "El teu compte s'ha eliminat"
msgid "Your account repository, containing all public data records, can be downloaded as a \"CAR\" file. This file does not include media embeds, such as images, or your private data, which must be fetched separately."
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:234
+#: src/view/com/auth/create/Step1.tsx:238
msgid "Your birth date"
msgstr "La teva data de naixement"
@@ -4624,7 +4839,7 @@ msgstr "La teva elecció es desarà , però es pot canviar més endavant a la con
msgid "Your default feed is \"Following\""
msgstr ""
-#: src/view/com/auth/create/state.ts:153
+#: src/view/com/auth/create/state.ts:110
#: src/view/com/auth/login/ForgotPasswordForm.tsx:70
#: src/view/com/modals/ChangePassword.tsx:54
msgid "Your email appears to be invalid."
@@ -4646,7 +4861,7 @@ msgstr "El teu correu encara no s'ha verificat. Et recomanem fer-ho per segureta
msgid "Your following feed is empty! Follow more users to see what's happening."
msgstr "El teu canal de seguint està buit! Segueix a més usuaris per saber què està passant."
-#: src/view/com/auth/create/Step3.tsx:45
+#: src/view/com/auth/create/Step2.tsx:83
msgid "Your full handle will be"
msgstr "El teu identificador complet serĆ "
@@ -4664,11 +4879,15 @@ msgstr "El teu identificador complet serĆ <0>@{0}0>"
#~ msgid "Your invite codes are hidden when logged in using an App Password"
#~ msgstr "Els teus codis d'invitació no es mostren quan has iniciat sessió amb una contrasenya d'aplicació"
+#: src/components/dialogs/MutedWords.tsx:173
+msgid "Your muted words"
+msgstr ""
+
#: src/view/com/modals/ChangePassword.tsx:155
msgid "Your password has been changed successfully!"
msgstr ""
-#: src/view/com/composer/Composer.tsx:267
+#: src/view/com/composer/Composer.tsx:274
msgid "Your post has been published"
msgstr "S'ha publicat"
@@ -4683,10 +4902,10 @@ msgstr "Les teves publicacions, m'agrades i bloquejos són públics. Els comptes
msgid "Your profile"
msgstr "El teu perfil"
-#: src/view/com/composer/Composer.tsx:266
+#: src/view/com/composer/Composer.tsx:273
msgid "Your reply has been published"
msgstr "S'ha publicat a teva resposta"
-#: src/view/com/auth/create/Step3.tsx:28
+#: src/view/com/auth/create/Step2.tsx:65
msgid "Your user handle"
msgstr "El teu identificador d'usuari"
diff --git a/src/locale/locales/de/messages.po b/src/locale/locales/de/messages.po
index f57972c923..1c41880336 100644
--- a/src/locale/locales/de/messages.po
+++ b/src/locale/locales/de/messages.po
@@ -21,7 +21,7 @@ msgstr ""
#~ msgid "{0, plural, one {# invite code available} other {# invite codes available}}"
#~ msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:592
+#: src/view/com/profile/ProfileHeader.tsx:593
msgid "{following} following"
msgstr ""
@@ -47,7 +47,7 @@ msgstr ""
msgid "<0/> members"
msgstr "<0/> Mitglieder"
-#: src/view/com/profile/ProfileHeader.tsx:594
+#: src/view/com/profile/ProfileHeader.tsx:595
msgid "<0>{following} 0><1>following1>"
msgstr ""
@@ -63,7 +63,7 @@ msgstr "<0>Folge einigen0><1>empfohlenen1><2>Nutzern2>"
msgid "<0>Welcome to0><1>Bluesky1>"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:557
+#: src/view/com/profile/ProfileHeader.tsx:558
msgid "ā Invalid Handle"
msgstr ""
@@ -76,11 +76,11 @@ msgid "A new version of the app is available. Please update to continue using th
msgstr "Eine neue Version der App ist verfügbar. Bitte aktualisiere die App, um sie weiter nutzen zu können."
#: src/view/com/util/ViewHeader.tsx:83
-#: src/view/screens/Search/Search.tsx:624
+#: src/view/screens/Search/Search.tsx:647
msgid "Access navigation links and settings"
msgstr ""
-#: src/view/com/pager/FeedsTabBarMobile.tsx:89
+#: src/view/com/home/HomeHeaderLayoutMobile.tsx:51
msgid "Access profile and other navigation links"
msgstr ""
@@ -95,11 +95,11 @@ msgstr "Barrierefreiheit"
msgid "Account"
msgstr "Konto"
-#: src/view/com/profile/ProfileHeader.tsx:245
+#: src/view/com/profile/ProfileHeader.tsx:246
msgid "Account blocked"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:212
+#: src/view/com/profile/ProfileHeader.tsx:213
msgid "Account muted"
msgstr ""
@@ -119,14 +119,15 @@ msgstr "Kontoeinstellungen"
msgid "Account removed from quick access"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:267
+#: src/view/com/profile/ProfileHeader.tsx:268
msgid "Account unblocked"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:225
+#: src/view/com/profile/ProfileHeader.tsx:226
msgid "Account unmuted"
msgstr ""
+#: src/components/dialogs/MutedWords.tsx:147
#: src/view/com/auth/onboarding/RecommendedFeedsItem.tsx:150
#: src/view/com/modals/ListAddRemoveUsers.tsx:264
#: src/view/com/modals/UserAddRemoveLists.tsx:219
@@ -168,24 +169,32 @@ msgstr "Details hinzufügen"
msgid "Add details to report"
msgstr "Details zum Report hinzufügen"
-#: src/view/com/composer/Composer.tsx:446
+#: src/view/com/composer/Composer.tsx:453
msgid "Add link card"
msgstr "Link-Karte hinzufügen"
-#: src/view/com/composer/Composer.tsx:451
+#: src/view/com/composer/Composer.tsx:458
msgid "Add link card:"
msgstr "Link-Karte hinzufügen:"
+#: src/components/dialogs/MutedWords.tsx:140
+msgid "Add mute word for configured settings"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:74
+msgid "Add muted words and tags"
+msgstr ""
+
#: src/view/com/modals/ChangeHandle.tsx:417
msgid "Add the following DNS record to your domain:"
msgstr "Füge den folgenden DNS-Eintrag zu deiner Domain hinzu:"
-#: src/view/com/profile/ProfileHeader.tsx:309
+#: src/view/com/profile/ProfileHeader.tsx:310
msgid "Add to Lists"
msgstr "Zu Listen hinzufügen"
-#: src/view/com/feeds/FeedSourceCard.tsx:243
-#: src/view/screens/ProfileFeed.tsx:272
+#: src/view/com/feeds/FeedSourceCard.tsx:245
+#: src/view/screens/ProfileFeed.tsx:273
msgid "Add to my feeds"
msgstr "Zu meinen Feeds hinzufügen"
@@ -198,11 +207,11 @@ msgstr ""
msgid "Added to list"
msgstr "Zur Liste hinzugefügt"
-#: src/view/com/feeds/FeedSourceCard.tsx:125
+#: src/view/com/feeds/FeedSourceCard.tsx:127
msgid "Added to my feeds"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:173
+#: src/view/screens/PreferencesFollowingFeed.tsx:173
msgid "Adjust the number of likes a reply must have to be shown in your feed."
msgstr "Passe die Anzahl der Likes an, die eine Antwort haben muss, um in deinem Feed angezeigt zu werden."
@@ -222,6 +231,10 @@ msgstr ""
msgid "Advanced"
msgstr "Erweitert"
+#: src/view/screens/Feeds.tsx:666
+msgid "All the feeds you've saved, right in one place."
+msgstr ""
+
#: src/view/com/auth/login/ForgotPasswordForm.tsx:221
#: src/view/com/modals/ChangePassword.tsx:168
msgid "Already have a code?"
@@ -295,7 +308,7 @@ msgstr ""
msgid "App Passwords"
msgstr "App-Passwƶrter"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:250
+#: src/view/com/util/forms/PostDropdownBtn.tsx:295
msgid "Appeal content warning"
msgstr ""
@@ -319,15 +332,16 @@ msgstr "Erscheinungsbild"
msgid "Are you sure you want to delete the app password \"{name}\"?"
msgstr "Bist du sicher, dass du das App-Passwort \"{name}\" lƶschen mƶchtest?"
-#: src/view/com/composer/Composer.tsx:143
+#: src/view/com/composer/Composer.tsx:150
msgid "Are you sure you'd like to discard this draft?"
msgstr "Bist du sicher, dass du diesen Entwurf verwerfen mƶchtest?"
-#: src/view/screens/ProfileList.tsx:364
+#: src/components/dialogs/MutedWords.tsx:233
+#: src/view/screens/ProfileList.tsx:365
msgid "Are you sure?"
msgstr "Bist du sicher?"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:233
+#: src/view/com/util/forms/PostDropdownBtn.tsx:278
msgid "Are you sure? This cannot be undone."
msgstr "Bist du sicher? Dies kann nicht rückgängig gemacht werden."
@@ -343,21 +357,21 @@ msgstr ""
msgid "Artistic or non-erotic nudity."
msgstr "Künstlerische oder nicht-erotische Nacktheit."
-#: src/view/com/auth/create/CreateAccount.tsx:147
+#: src/view/com/auth/create/CreateAccount.tsx:158
#: src/view/com/auth/login/ChooseAccountForm.tsx:151
#: src/view/com/auth/login/ForgotPasswordForm.tsx:174
#: src/view/com/auth/login/LoginForm.tsx:259
#: src/view/com/auth/login/SetNewPasswordForm.tsx:179
#: src/view/com/modals/report/InputIssueDetails.tsx:46
-#: src/view/com/post-thread/PostThread.tsx:408
-#: src/view/com/post-thread/PostThread.tsx:458
-#: src/view/com/post-thread/PostThread.tsx:466
-#: src/view/com/profile/ProfileHeader.tsx:648
+#: src/view/com/post-thread/PostThread.tsx:472
+#: src/view/com/post-thread/PostThread.tsx:522
+#: src/view/com/post-thread/PostThread.tsx:530
+#: src/view/com/profile/ProfileHeader.tsx:649
#: src/view/com/util/ViewHeader.tsx:81
msgid "Back"
msgstr "Zurück"
-#: src/view/com/post-thread/PostThread.tsx:416
+#: src/view/com/post-thread/PostThread.tsx:480
msgctxt "action"
msgid "Back"
msgstr ""
@@ -370,7 +384,7 @@ msgstr ""
msgid "Basics"
msgstr "Grundlagen"
-#: src/view/com/auth/create/Step1.tsx:246
+#: src/view/com/auth/create/Step1.tsx:250
#: src/view/com/modals/BirthDateSettings.tsx:73
msgid "Birthday"
msgstr "Geburtstag"
@@ -379,33 +393,33 @@ msgstr "Geburtstag"
msgid "Birthday:"
msgstr "Geburtstag:"
-#: src/view/com/profile/ProfileHeader.tsx:238
-#: src/view/com/profile/ProfileHeader.tsx:345
+#: src/view/com/profile/ProfileHeader.tsx:239
+#: src/view/com/profile/ProfileHeader.tsx:346
msgid "Block Account"
msgstr ""
-#: src/view/screens/ProfileList.tsx:555
+#: src/view/screens/ProfileList.tsx:556
msgid "Block accounts"
msgstr ""
-#: src/view/screens/ProfileList.tsx:505
+#: src/view/screens/ProfileList.tsx:506
msgid "Block list"
msgstr "Blockliste"
-#: src/view/screens/ProfileList.tsx:315
+#: src/view/screens/ProfileList.tsx:316
msgid "Block these accounts?"
msgstr "Diese Konten blockieren?"
-#: src/view/screens/ProfileList.tsx:319
+#: src/view/screens/ProfileList.tsx:320
msgid "Block this List"
msgstr ""
-#: src/view/com/lists/ListCard.tsx:109
-#: src/view/com/util/post-embeds/QuoteEmbed.tsx:60
+#: src/view/com/lists/ListCard.tsx:110
+#: src/view/com/util/post-embeds/QuoteEmbed.tsx:61
msgid "Blocked"
msgstr ""
-#: src/view/screens/Moderation.tsx:123
+#: src/view/screens/Moderation.tsx:142
msgid "Blocked accounts"
msgstr "Blockierte Konten"
@@ -414,7 +428,7 @@ msgstr "Blockierte Konten"
msgid "Blocked Accounts"
msgstr "Blockierte Konten"
-#: src/view/com/profile/ProfileHeader.tsx:240
+#: src/view/com/profile/ProfileHeader.tsx:241
msgid "Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you."
msgstr "Blockierte Konten kƶnnen nicht in deinen Threads antworten, dich erwƤhnen oder anderweitig mit dir interagieren."
@@ -422,15 +436,16 @@ msgstr "Blockierte Konten kƶnnen nicht in deinen Threads antworten, dich erwƤh
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 "Blockierte Konten kƶnnen nicht in deinen Threads antworten, dich erwƤhnen oder anderweitig mit dir interagieren. Du wirst ihre Inhalte nicht sehen und sie werden daran gehindert, deine zu sehen."
-#: src/view/com/post-thread/PostThread.tsx:267
+#: src/view/com/post-thread/PostThread.tsx:324
msgid "Blocked post."
msgstr "Gesperrter Beitrag."
-#: src/view/screens/ProfileList.tsx:317
+#: src/view/screens/ProfileList.tsx:318
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 deinen Threads antworten, dich erwƤhnen oder anderweitig mit dir interagieren."
#: src/view/com/auth/HomeLoggedOutCTA.tsx:93
+#: src/view/com/auth/SplashScreen.web.tsx:133
msgid "Blog"
msgstr "Blog"
@@ -463,7 +478,7 @@ msgstr "Bluesky ist ƶffentlich."
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 nutzt Einladungen, um eine gesündere Community aufzubauen. Wenn du niemanden kennst, der eine Einladung hat, kannst du dich auf die Warteliste setzen lassen und wir schicken dir bald eine zu."
-#: src/view/screens/Moderation.tsx:226
+#: src/view/screens/Moderation.tsx:245
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 zeigt dein Profil und deine Beiträge nicht für abgemeldete Nutzer an. Andere Apps kommen dieser Aufforderung möglicherweise nicht nach."
@@ -480,6 +495,7 @@ msgid "Build version {0} {1}"
msgstr "Build-Version {0} {1}"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:87
+#: src/view/com/auth/SplashScreen.web.tsx:128
msgid "Business"
msgstr "Business"
@@ -514,8 +530,8 @@ msgid "Can only contain letters, numbers, spaces, dashes, and underscores. Must
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/components/Prompt.tsx:91
-#: src/view/com/composer/Composer.tsx:300
-#: src/view/com/composer/Composer.tsx:305
+#: src/view/com/composer/Composer.tsx:307
+#: src/view/com/composer/Composer.tsx:312
#: src/view/com/modals/ChangeEmail.tsx:218
#: src/view/com/modals/ChangeEmail.tsx:220
#: src/view/com/modals/ChangePassword.tsx:265
@@ -529,7 +545,7 @@ msgstr "Darf nur Buchstaben, Zahlen, Leerzeichen, Bindestriche und Unterstriche
#: src/view/com/modals/VerifyEmail.tsx:247
#: src/view/com/modals/VerifyEmail.tsx:253
#: src/view/com/modals/Waitlist.tsx:142
-#: src/view/screens/Search/Search.tsx:693
+#: src/view/screens/Search/Search.tsx:716
#: src/view/shell/desktop/Search.tsx:238
msgid "Cancel"
msgstr "Abbrechen"
@@ -657,7 +673,7 @@ msgstr ""
msgid "Choose your main feeds"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:215
+#: src/view/com/auth/create/Step1.tsx:219
msgid "Choose your password"
msgstr "WƤhle dein Passwort"
@@ -680,7 +696,7 @@ msgid "Clear all storage data (restart after this)"
msgstr "Alle Speicherdaten lƶschen (danach neu starten)"
#: src/view/com/util/forms/SearchInput.tsx:88
-#: src/view/screens/Search/Search.tsx:674
+#: src/view/screens/Search/Search.tsx:697
msgid "Clear search query"
msgstr "Suchanfrage lƶschen"
@@ -688,6 +704,11 @@ msgstr "Suchanfrage lƶschen"
msgid "click here"
msgstr ""
+#: src/components/RichText.tsx:189
+#: src/components/TagMenu/index.web.tsx:125
+msgid "Click here to open tag menu for {tag}"
+msgstr ""
+
#: src/screens/Onboarding/index.tsx:35
msgid "Climate"
msgstr ""
@@ -697,7 +718,8 @@ msgstr ""
msgid "Close"
msgstr ""
-#: src/components/Dialog/index.web.tsx:78
+#: src/components/Dialog/index.web.tsx:80
+#: src/components/Dialog/index.web.tsx:194
msgid "Close active dialog"
msgstr ""
@@ -717,11 +739,15 @@ msgstr "Bild schlieĆen"
msgid "Close image viewer"
msgstr ""
-#: src/view/shell/index.web.tsx:49
+#: src/view/shell/index.web.tsx:51
msgid "Close navigation footer"
msgstr ""
-#: src/view/shell/index.web.tsx:50
+#: src/components/TagMenu/index.tsx:266
+msgid "Close this dialog"
+msgstr ""
+
+#: src/view/shell/index.web.tsx:52
msgid "Closes bottom navigation bar"
msgstr ""
@@ -729,7 +755,7 @@ msgstr ""
msgid "Closes password update alert"
msgstr ""
-#: src/view/com/composer/Composer.tsx:302
+#: src/view/com/composer/Composer.tsx:309
msgid "Closes post composer and discards post draft"
msgstr ""
@@ -758,7 +784,11 @@ msgstr "Community-Richtlinien"
msgid "Complete onboarding and start using your account"
msgstr ""
-#: src/view/com/composer/Composer.tsx:417
+#: src/view/com/auth/create/Step3.tsx:73
+msgid "Complete the challenge"
+msgstr ""
+
+#: src/view/com/composer/Composer.tsx:424
msgid "Compose posts up to {MAX_GRAPHEME_LENGTH} characters in length"
msgstr ""
@@ -775,7 +805,7 @@ msgstr ""
#: src/view/com/modals/SelfLabel.tsx:154
#: src/view/com/modals/VerifyEmail.tsx:231
#: src/view/com/modals/VerifyEmail.tsx:233
-#: src/view/screens/PreferencesHomeFeed.tsx:308
+#: src/view/screens/PreferencesFollowingFeed.tsx:308
#: src/view/screens/PreferencesThreads.tsx:159
msgid "Confirm"
msgstr "BestƤtigen"
@@ -813,16 +843,16 @@ msgstr "BestƤtigungscode"
msgid "Confirms signing up {email} to the waitlist"
msgstr ""
-#: src/view/com/auth/create/CreateAccount.tsx:182
+#: src/view/com/auth/create/CreateAccount.tsx:193
#: src/view/com/auth/login/LoginForm.tsx:278
msgid "Connecting..."
msgstr "Verbinden..."
-#: src/view/com/auth/create/CreateAccount.tsx:202
+#: src/view/com/auth/create/CreateAccount.tsx:213
msgid "Contact support"
msgstr ""
-#: src/view/screens/Moderation.tsx:81
+#: src/view/screens/Moderation.tsx:83
msgid "Content filtering"
msgstr "Inhaltsfilterung"
@@ -852,7 +882,7 @@ msgstr "Inhaltswarnungen"
#: src/screens/Onboarding/StepFollowingFeed.tsx:153
#: src/screens/Onboarding/StepInterests/index.tsx:248
#: src/screens/Onboarding/StepModeration/index.tsx:118
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:108
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:114
#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:148
#: src/view/com/auth/onboarding/RecommendedFollows.tsx:209
msgid "Continue"
@@ -861,7 +891,7 @@ msgstr "Fortfahren"
#: src/screens/Onboarding/StepFollowingFeed.tsx:150
#: src/screens/Onboarding/StepInterests/index.tsx:245
#: src/screens/Onboarding/StepModeration/index.tsx:115
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:105
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:111
msgid "Continue to next step"
msgstr ""
@@ -888,7 +918,7 @@ msgstr ""
#: src/view/com/modals/AddAppPasswords.tsx:76
#: src/view/com/modals/InviteCodes.tsx:152
-#: src/view/com/util/forms/PostDropdownBtn.tsx:112
+#: src/view/com/util/forms/PostDropdownBtn.tsx:143
msgid "Copied to clipboard"
msgstr ""
@@ -900,19 +930,19 @@ msgstr ""
msgid "Copy"
msgstr "Kopieren"
-#: src/view/screens/ProfileList.tsx:417
+#: src/view/screens/ProfileList.tsx:418
msgid "Copy link to list"
msgstr "Link zur Liste kopieren"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:153
+#: src/view/com/util/forms/PostDropdownBtn.tsx:184
msgid "Copy link to post"
msgstr "Link zum Beitrag kopieren"
-#: src/view/com/profile/ProfileHeader.tsx:294
+#: src/view/com/profile/ProfileHeader.tsx:295
msgid "Copy link to profile"
msgstr "Link zum Profil kopieren"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:139
+#: src/view/com/util/forms/PostDropdownBtn.tsx:170
msgid "Copy post text"
msgstr ""
@@ -921,7 +951,7 @@ msgstr ""
msgid "Copyright Policy"
msgstr ""
-#: src/view/screens/ProfileFeed.tsx:96
+#: src/view/screens/ProfileFeed.tsx:97
msgid "Could not load feed"
msgstr "Feed konnte nicht geladen werden"
@@ -930,12 +960,12 @@ msgid "Could not load list"
msgstr "Liste konnte nicht geladen werden"
#: src/view/com/auth/create/Step2.tsx:91
-msgid "Country"
-msgstr ""
+#~ msgid "Country"
+#~ msgstr ""
#: src/view/com/auth/HomeLoggedOutCTA.tsx:62
-#: src/view/com/auth/SplashScreen.tsx:46
-#: src/view/com/auth/SplashScreen.web.tsx:77
+#: src/view/com/auth/SplashScreen.tsx:71
+#: src/view/com/auth/SplashScreen.web.tsx:81
msgid "Create a new account"
msgstr "Ein neues Konto erstellen"
@@ -943,7 +973,7 @@ msgstr "Ein neues Konto erstellen"
msgid "Create a new Bluesky account"
msgstr ""
-#: src/view/com/auth/create/CreateAccount.tsx:122
+#: src/view/com/auth/create/CreateAccount.tsx:133
msgid "Create Account"
msgstr "Konto erstellen"
@@ -952,7 +982,7 @@ msgid "Create App Password"
msgstr ""
#: src/view/com/auth/HomeLoggedOutCTA.tsx:54
-#: src/view/com/auth/SplashScreen.tsx:43
+#: src/view/com/auth/SplashScreen.tsx:68
msgid "Create new account"
msgstr "Neues Konto erstellen"
@@ -968,7 +998,7 @@ msgstr ""
msgid "Created by you"
msgstr ""
-#: src/view/com/composer/Composer.tsx:448
+#: src/view/com/composer/Composer.tsx:455
msgid "Creates a card with a thumbnail. The card links to {url}"
msgstr ""
@@ -986,6 +1016,7 @@ msgid "Custom domain"
msgstr "Benutzerdefinierte Domain"
#: src/screens/Onboarding/StepAlgoFeeds/index.tsx:106
+#: src/view/screens/Feeds.tsx:692
msgid "Custom feeds built by the community bring you new experiences and help you find the content you love."
msgstr ""
@@ -1027,8 +1058,8 @@ msgstr "Konto lƶschen"
msgid "Delete app password"
msgstr "App-Passwort lƶschen"
-#: src/view/screens/ProfileList.tsx:363
-#: src/view/screens/ProfileList.tsx:444
+#: src/view/screens/ProfileList.tsx:364
+#: src/view/screens/ProfileList.tsx:445
msgid "Delete List"
msgstr "Liste lƶschen"
@@ -1044,19 +1075,19 @@ msgstr "Mein Konto lƶschen"
msgid "Delete My Accountā¦"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:228
+#: src/view/com/util/forms/PostDropdownBtn.tsx:273
msgid "Delete post"
msgstr "Beitrag lƶschen"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:232
+#: src/view/com/util/forms/PostDropdownBtn.tsx:277
msgid "Delete this post?"
msgstr "Diesen Beitrag lƶschen?"
-#: src/view/com/util/post-embeds/QuoteEmbed.tsx:69
+#: src/view/com/util/post-embeds/QuoteEmbed.tsx:70
msgid "Deleted"
msgstr ""
-#: src/view/com/post-thread/PostThread.tsx:259
+#: src/view/com/post-thread/PostThread.tsx:316
msgid "Deleted post."
msgstr "Gelƶschter Beitrag."
@@ -1071,7 +1102,7 @@ msgstr "Beschreibung"
#~ msgid "Developer Tools"
#~ msgstr "Entwickler-Tools"
-#: src/view/com/composer/Composer.tsx:211
+#: src/view/com/composer/Composer.tsx:218
msgid "Did you want to say anything?"
msgstr ""
@@ -1079,15 +1110,15 @@ msgstr ""
msgid "Dim"
msgstr ""
-#: src/view/com/composer/Composer.tsx:144
+#: src/view/com/composer/Composer.tsx:151
msgid "Discard"
msgstr "Verwerfen"
-#: src/view/com/composer/Composer.tsx:138
+#: src/view/com/composer/Composer.tsx:145
msgid "Discard draft"
msgstr "Entwurf verwerfen"
-#: src/view/screens/Moderation.tsx:207
+#: src/view/screens/Moderation.tsx:226
msgid "Discourage apps from showing my account to logged-out users"
msgstr "Apps daran hindern, abgemeldeten Nutzern mein Konto zu zeigen"
@@ -1097,8 +1128,12 @@ msgid "Discover new custom feeds"
msgstr ""
#: src/view/screens/Feeds.tsx:473
-msgid "Discover new feeds"
-msgstr "Entdecke neue Feeds"
+#~ msgid "Discover new feeds"
+#~ msgstr "Entdecke neue Feeds"
+
+#: src/view/screens/Feeds.tsx:689
+msgid "Discover New Feeds"
+msgstr ""
#: src/view/com/modals/EditProfile.tsx:192
msgid "Display name"
@@ -1112,7 +1147,7 @@ msgstr "Anzeigename"
msgid "Domain verified!"
msgstr "Domain verifiziert!"
-#: src/view/com/auth/create/Step1.tsx:166
+#: src/view/com/auth/create/Step1.tsx:170
msgid "Don't have an invite code?"
msgstr ""
@@ -1139,7 +1174,7 @@ msgstr ""
#: src/view/com/modals/InviteCodes.tsx:80
#: src/view/com/modals/InviteCodes.tsx:123
#: src/view/com/modals/ListAddRemoveUsers.tsx:142
-#: src/view/screens/PreferencesHomeFeed.tsx:311
+#: src/view/screens/PreferencesFollowingFeed.tsx:311
#: src/view/screens/Settings/ExportCarDialog.tsx:93
#: src/view/screens/Settings/ExportCarDialog.tsx:94
msgid "Done"
@@ -1162,7 +1197,7 @@ msgstr ""
msgid "Download CAR file"
msgstr ""
-#: src/view/com/composer/text-input/TextInput.web.tsx:247
+#: src/view/com/composer/text-input/TextInput.web.tsx:249
msgid "Drop to add images"
msgstr ""
@@ -1208,7 +1243,7 @@ msgstr ""
msgid "Edit image"
msgstr "Bild bearbeiten"
-#: src/view/screens/ProfileList.tsx:432
+#: src/view/screens/ProfileList.tsx:433
msgid "Edit list details"
msgstr "Details der Liste bearbeiten"
@@ -1226,15 +1261,16 @@ msgstr "Meine Feeds bearbeiten"
msgid "Edit my profile"
msgstr "Mein Profil bearbeiten"
-#: src/view/com/profile/ProfileHeader.tsx:417
+#: src/view/com/profile/ProfileHeader.tsx:418
msgid "Edit profile"
msgstr "Profil bearbeiten"
-#: src/view/com/profile/ProfileHeader.tsx:422
+#: src/view/com/profile/ProfileHeader.tsx:423
msgid "Edit Profile"
msgstr "Profil bearbeiten"
-#: src/view/screens/Feeds.tsx:356
+#: src/view/com/home/HomeHeaderLayout.web.tsx:59
+#: src/view/screens/Feeds.tsx:355
msgid "Edit Saved Feeds"
msgstr "Gespeicherte Feeds bearbeiten"
@@ -1254,16 +1290,14 @@ msgstr ""
msgid "Education"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:195
-#: src/view/com/auth/create/Step2.tsx:194
-#: src/view/com/auth/create/Step2.tsx:269
+#: src/view/com/auth/create/Step1.tsx:199
#: src/view/com/auth/login/ForgotPasswordForm.tsx:156
#: src/view/com/modals/ChangeEmail.tsx:141
#: src/view/com/modals/Waitlist.tsx:88
msgid "Email"
msgstr "E-Mail"
-#: src/view/com/auth/create/Step1.tsx:186
+#: src/view/com/auth/create/Step1.tsx:190
#: src/view/com/auth/login/ForgotPasswordForm.tsx:147
msgid "Email address"
msgstr "E-Mail-Adresse"
@@ -1306,7 +1340,7 @@ msgstr ""
msgid "Enable media players for"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:147
+#: src/view/screens/PreferencesFollowingFeed.tsx:147
msgid "Enable this setting to only see replies between people you follow."
msgstr "Aktiviere diese Einstellung, um nur Antworten von Personen zu sehen, denen du folgst."
@@ -1318,6 +1352,11 @@ msgstr "Ende des Feeds"
msgid "Enter a name for this App Password"
msgstr ""
+#: src/components/dialogs/MutedWords.tsx:87
+#: src/components/dialogs/MutedWords.tsx:88
+msgid "Enter a word or tag"
+msgstr ""
+
#: src/view/com/modals/VerifyEmail.tsx:105
msgid "Enter Confirmation Code"
msgstr ""
@@ -1334,7 +1373,7 @@ msgstr "Gib die Domain ein, die du verwenden mƶchtest"
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 "Gib die E-Mail ein, die du zur Erstellung deines Kontos verwendet hast. Wir schicken dir einen \"Reset-Code\", damit du ein neues Passwort festlegen kannst."
-#: src/view/com/auth/create/Step1.tsx:247
+#: src/view/com/auth/create/Step1.tsx:251
#: src/view/com/modals/BirthDateSettings.tsx:74
msgid "Enter your birth date"
msgstr ""
@@ -1343,7 +1382,7 @@ msgstr ""
msgid "Enter your email"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:191
+#: src/view/com/auth/create/Step1.tsx:195
msgid "Enter your email address"
msgstr "Gib deine E-Mail-Adresse ein"
@@ -1356,14 +1395,18 @@ msgid "Enter your new email address below."
msgstr "Gib unten deine neue E-Mail-Adresse ein."
#: src/view/com/auth/create/Step2.tsx:188
-msgid "Enter your phone number"
-msgstr ""
+#~ msgid "Enter your phone number"
+#~ msgstr ""
#: src/view/com/auth/login/Login.tsx:99
msgid "Enter your username and password"
msgstr "Gib deinen Benutzernamen und dein Passwort ein"
-#: src/view/screens/Search/Search.tsx:109
+#: src/view/com/auth/create/Step3.tsx:67
+msgid "Error receiving captcha response."
+msgstr ""
+
+#: src/view/screens/Search/Search.tsx:110
msgid "Error:"
msgstr "Fehler:"
@@ -1415,7 +1458,7 @@ msgstr ""
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/Navigation.tsx:258
+#: src/Navigation.tsx:261
#: src/view/screens/PreferencesExternalEmbeds.tsx:52
#: src/view/screens/Settings/index.tsx:657
msgid "External Media Preferences"
@@ -1434,7 +1477,7 @@ msgstr ""
msgid "Failed to create the list. Check your internet connection and try again."
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:88
+#: src/view/com/util/forms/PostDropdownBtn.tsx:110
msgid "Failed to delete post, please try again"
msgstr ""
@@ -1447,25 +1490,26 @@ msgstr "Empfohlene Feeds konnten nicht geladen werden"
msgid "Feed"
msgstr ""
-#: src/view/com/feeds/FeedSourceCard.tsx:229
+#: src/view/com/feeds/FeedSourceCard.tsx:231
msgid "Feed by {0}"
msgstr ""
-#: src/view/screens/Feeds.tsx:631
+#: src/view/screens/Feeds.tsx:605
msgid "Feed offline"
msgstr "Feed offline"
#: src/view/com/feeds/FeedPage.tsx:143
-msgid "Feed Preferences"
-msgstr "Feed-Einstellungen"
+#~ msgid "Feed Preferences"
+#~ msgstr "Feed-Einstellungen"
-#: src/view/shell/desktop/RightNav.tsx:69
+#: src/view/shell/desktop/RightNav.tsx:61
#: src/view/shell/Drawer.tsx:311
msgid "Feedback"
msgstr "Feedback"
-#: src/Navigation.tsx:442
-#: src/view/screens/Feeds.tsx:548
+#: src/Navigation.tsx:445
+#: src/view/screens/Feeds.tsx:419
+#: src/view/screens/Feeds.tsx:524
#: src/view/screens/Profile.tsx:184
#: src/view/shell/bottom-bar/BottomBar.tsx:181
#: src/view/shell/desktop/LeftNav.tsx:342
@@ -1490,7 +1534,7 @@ msgstr "Feeds werden von Nutzern erstellt, um Inhalte zu kuratieren. WƤhle eini
msgid "Feeds are custom algorithms that users build with a little coding expertise. <0/> for more information."
msgstr "Feeds sind benutzerdefinierte Algorithmen, die Nutzer mit ein wenig Programmierkenntnisse erstellen. <0/> für mehr Informationen."
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:70
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:76
msgid "Feeds can be topical as well!"
msgstr ""
@@ -1504,11 +1548,11 @@ msgstr ""
msgid "Find accounts to follow"
msgstr ""
-#: src/view/screens/Search/Search.tsx:439
+#: src/view/screens/Search/Search.tsx:440
msgid "Find users on Bluesky"
msgstr "Nutzer auf Bluesky finden"
-#: src/view/screens/Search/Search.tsx:437
+#: src/view/screens/Search/Search.tsx:438
msgid "Find users with the search tool on the right"
msgstr "Finde Nutzer mit der Suchfunktion auf der rechten Seite"
@@ -1516,10 +1560,14 @@ msgstr "Finde Nutzer mit der Suchfunktion auf der rechten Seite"
msgid "Finding similar accounts..."
msgstr "Suche nach Ƥhnlichen Konten..."
-#: src/view/screens/PreferencesHomeFeed.tsx:111
-msgid "Fine-tune the content you see on your home screen."
+#: src/view/screens/PreferencesFollowingFeed.tsx:111
+msgid "Fine-tune the content you see on your Following feed."
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 ""
@@ -1543,7 +1591,7 @@ msgstr ""
#: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:181
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:136
-#: src/view/com/profile/ProfileHeader.tsx:512
+#: src/view/com/profile/ProfileHeader.tsx:513
msgid "Follow"
msgstr "Folgen"
@@ -1554,7 +1602,7 @@ msgstr ""
#: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:58
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:122
-#: src/view/com/profile/ProfileHeader.tsx:503
+#: src/view/com/profile/ProfileHeader.tsx:504
msgid "Follow {0}"
msgstr ""
@@ -1578,7 +1626,7 @@ msgstr ""
msgid "Followed users"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:154
+#: src/view/screens/PreferencesFollowingFeed.tsx:154
msgid "Followed users only"
msgstr ""
@@ -1591,16 +1639,24 @@ msgid "Followers"
msgstr "Follower"
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:136
-#: src/view/com/profile/ProfileHeader.tsx:494
+#: src/view/com/profile/ProfileHeader.tsx:495
#: src/view/screens/ProfileFollows.tsx:25
msgid "Following"
msgstr "Folge ich"
-#: src/view/com/profile/ProfileHeader.tsx:148
+#: src/view/com/profile/ProfileHeader.tsx:149
msgid "Following {0}"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:545
+#: src/Navigation.tsx:248
+#: src/view/com/home/HomeHeaderLayout.web.tsx:45
+#: src/view/com/home/HomeHeaderLayoutMobile.tsx:83
+#: src/view/screens/PreferencesFollowingFeed.tsx:104
+#: src/view/screens/Settings/index.tsx:543
+msgid "Following Feed Preferences"
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:546
msgid "Follows you"
msgstr "Folgt dir"
@@ -1654,8 +1710,8 @@ msgstr "Los geht's"
msgid "Go back"
msgstr "Gehe zurück"
-#: src/view/screens/ProfileFeed.tsx:105
-#: src/view/screens/ProfileFeed.tsx:110
+#: src/view/screens/ProfileFeed.tsx:106
+#: src/view/screens/ProfileFeed.tsx:111
#: src/view/screens/ProfileList.tsx:897
#: src/view/screens/ProfileList.tsx:902
msgid "Go Back"
@@ -1666,7 +1722,7 @@ msgstr "Gehe zurück"
msgid "Go back to previous step"
msgstr ""
-#: src/view/screens/Search/Search.tsx:724
+#: src/view/screens/Search/Search.tsx:747
#: src/view/shell/desktop/Search.tsx:262
msgid "Go to @{queryMaybeHandle}"
msgstr ""
@@ -1683,11 +1739,15 @@ msgstr "Gehe zum nƤchsten"
msgid "Handle"
msgstr "Handle"
-#: src/view/com/auth/create/CreateAccount.tsx:197
+#: src/components/RichText.tsx:188
+msgid "Hashtag: {tag}"
+msgstr ""
+
+#: src/view/com/auth/create/CreateAccount.tsx:208
msgid "Having trouble?"
msgstr ""
-#: src/view/shell/desktop/RightNav.tsx:98
+#: src/view/shell/desktop/RightNav.tsx:90
#: src/view/shell/Drawer.tsx:321
msgid "Help"
msgstr "Hilfe"
@@ -1696,11 +1756,11 @@ msgstr "Hilfe"
msgid "Here are some accounts for you to follow"
msgstr ""
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:79
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:85
msgid "Here are some popular topical feeds. You can choose to follow as many as you like."
msgstr ""
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:74
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:80
msgid "Here are some topical feeds based on your interests: {interestsText}. You can choose to follow as many as you like."
msgstr ""
@@ -1721,7 +1781,7 @@ msgctxt "action"
msgid "Hide"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:187
+#: src/view/com/util/forms/PostDropdownBtn.tsx:232
msgid "Hide post"
msgstr "Beitrag ausblenden"
@@ -1730,7 +1790,7 @@ msgstr "Beitrag ausblenden"
msgid "Hide the content"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:191
+#: src/view/com/util/forms/PostDropdownBtn.tsx:236
msgid "Hide this post?"
msgstr "Diesen Beitrag ausblenden?"
@@ -1738,7 +1798,7 @@ msgstr "Diesen Beitrag ausblenden?"
msgid "Hide user list"
msgstr "Benutzerliste ausblenden"
-#: src/view/com/profile/ProfileHeader.tsx:486
+#: src/view/com/profile/ProfileHeader.tsx:487
msgid "Hides posts from {0} in your feed"
msgstr ""
@@ -1762,7 +1822,7 @@ msgstr "Hmm, der Feed-Server hat eine schlechte Antwort gegeben. Bitte informier
msgid "Hmm, we're having trouble finding this feed. It may have been deleted."
msgstr "Hm, wir haben Probleme, diesen Feed zu finden. Mƶglicherweise wurde er gelƶscht."
-#: src/Navigation.tsx:432
+#: src/Navigation.tsx:435
#: src/view/shell/bottom-bar/BottomBar.tsx:137
#: src/view/shell/desktop/LeftNav.tsx:306
#: src/view/shell/Drawer.tsx:398
@@ -1774,10 +1834,10 @@ msgstr "Home"
#: src/view/com/pager/FeedsTabBarMobile.tsx:123
#: src/view/screens/PreferencesHomeFeed.tsx:104
#: src/view/screens/Settings/index.tsx:543
-msgid "Home Feed Preferences"
-msgstr "Home-Feed-Einstellungen"
+#~ msgid "Home Feed Preferences"
+#~ msgstr "Home-Feed-Einstellungen"
-#: src/view/com/auth/create/Step1.tsx:78
+#: src/view/com/auth/create/Step1.tsx:82
#: src/view/com/auth/login/ForgotPasswordForm.tsx:120
msgid "Hosting provider"
msgstr "Hosting-Anbieter"
@@ -1831,11 +1891,11 @@ msgstr ""
msgid "Input confirmation code for account deletion"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:196
+#: src/view/com/auth/create/Step1.tsx:200
msgid "Input email for Bluesky account"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:154
+#: src/view/com/auth/create/Step1.tsx:158
msgid "Input invite code to proceed"
msgstr ""
@@ -1852,8 +1912,8 @@ msgid "Input password for account deletion"
msgstr ""
#: src/view/com/auth/create/Step2.tsx:196
-msgid "Input phone number for SMS verification"
-msgstr ""
+#~ msgid "Input phone number for SMS verification"
+#~ msgstr ""
#: src/view/com/auth/login/LoginForm.tsx:230
msgid "Input the password tied to {identifier}"
@@ -1864,8 +1924,8 @@ msgid "Input the username or email address you used at signup"
msgstr ""
#: src/view/com/auth/create/Step2.tsx:271
-msgid "Input the verification code we have texted to you"
-msgstr ""
+#~ msgid "Input the verification code we have texted to you"
+#~ msgstr ""
#: src/view/com/modals/Waitlist.tsx:90
msgid "Input your email to get on the Bluesky waitlist"
@@ -1875,11 +1935,11 @@ msgstr ""
msgid "Input your password"
msgstr ""
-#: src/view/com/auth/create/Step3.tsx:42
+#: src/view/com/auth/create/Step2.tsx:80
msgid "Input your user handle"
msgstr ""
-#: src/view/com/post-thread/PostThreadItem.tsx:225
+#: src/view/com/post-thread/PostThreadItem.tsx:226
msgid "Invalid or unsupported post record"
msgstr ""
@@ -1895,12 +1955,12 @@ msgstr "Ungültiger Benutzername oder Passwort"
msgid "Invite a Friend"
msgstr "Einen Freund einladen"
-#: src/view/com/auth/create/Step1.tsx:144
-#: src/view/com/auth/create/Step1.tsx:153
+#: src/view/com/auth/create/Step1.tsx:148
+#: src/view/com/auth/create/Step1.tsx:157
msgid "Invite code"
msgstr "Einladungscode"
-#: src/view/com/auth/create/state.ts:199
+#: src/view/com/auth/create/state.ts:158
msgid "Invite code not accepted. Check that you input it correctly and try again."
msgstr "Einladungscode nicht akzeptiert. Ćberprüfe, ob du ihn richtig eingegeben hast und versuche es erneut."
@@ -1921,6 +1981,7 @@ msgid "It shows posts from the people you follow as they happen."
msgstr ""
#: src/view/com/auth/HomeLoggedOutCTA.tsx:99
+#: src/view/com/auth/SplashScreen.web.tsx:138
msgid "Jobs"
msgstr "Jobs"
@@ -1928,8 +1989,8 @@ msgstr "Jobs"
msgid "Join the waitlist"
msgstr "Der Warteliste beitreten"
-#: src/view/com/auth/create/Step1.tsx:170
#: src/view/com/auth/create/Step1.tsx:174
+#: src/view/com/auth/create/Step1.tsx:178
msgid "Join the waitlist."
msgstr "Der Warteliste beitreten."
@@ -1980,7 +2041,7 @@ msgstr "Mehr erfahren"
msgid "Learn more about this warning"
msgstr "Erfahre mehr über diese Warnung"
-#: src/view/screens/Moderation.tsx:243
+#: src/view/screens/Moderation.tsx:262
msgid "Learn more about what is public on Bluesky."
msgstr "Erfahre mehr darüber, was auf Bluesky öffentlich ist."
@@ -2036,7 +2097,7 @@ msgstr ""
msgid "Liked By"
msgstr ""
-#: src/view/com/feeds/FeedSourceCard.tsx:277
+#: src/view/com/feeds/FeedSourceCard.tsx:279
msgid "Liked by {0} {1}"
msgstr ""
@@ -2056,7 +2117,7 @@ msgstr ""
msgid "Likes"
msgstr ""
-#: src/view/com/post-thread/PostThreadItem.tsx:182
+#: src/view/com/post-thread/PostThreadItem.tsx:183
msgid "Likes on this post"
msgstr ""
@@ -2068,19 +2129,19 @@ msgstr ""
msgid "List Avatar"
msgstr ""
-#: src/view/screens/ProfileList.tsx:323
+#: src/view/screens/ProfileList.tsx:324
msgid "List blocked"
msgstr ""
-#: src/view/com/feeds/FeedSourceCard.tsx:231
+#: src/view/com/feeds/FeedSourceCard.tsx:233
msgid "List by {0}"
msgstr ""
-#: src/view/screens/ProfileList.tsx:377
+#: src/view/screens/ProfileList.tsx:378
msgid "List deleted"
msgstr ""
-#: src/view/screens/ProfileList.tsx:282
+#: src/view/screens/ProfileList.tsx:283
msgid "List muted"
msgstr ""
@@ -2088,11 +2149,11 @@ msgstr ""
msgid "List Name"
msgstr ""
-#: src/view/screens/ProfileList.tsx:342
+#: src/view/screens/ProfileList.tsx:343
msgid "List unblocked"
msgstr ""
-#: src/view/screens/ProfileList.tsx:301
+#: src/view/screens/ProfileList.tsx:302
msgid "List unmuted"
msgstr ""
@@ -2104,8 +2165,8 @@ msgstr ""
msgid "Lists"
msgstr "Listen"
-#: src/view/com/post-thread/PostThread.tsx:276
-#: src/view/com/post-thread/PostThread.tsx:284
+#: src/view/com/post-thread/PostThread.tsx:333
+#: src/view/com/post-thread/PostThread.tsx:341
msgid "Load more posts"
msgstr "Mehr BeitrƤge laden"
@@ -2113,10 +2174,10 @@ msgstr "Mehr BeitrƤge laden"
msgid "Load new notifications"
msgstr "Neue Benachrichtigungen laden"
-#: src/view/com/feeds/FeedPage.tsx:190
+#: src/view/com/feeds/FeedPage.tsx:115
#: src/view/screens/Profile.tsx:440
-#: src/view/screens/ProfileFeed.tsx:494
-#: src/view/screens/ProfileList.tsx:680
+#: src/view/screens/ProfileFeed.tsx:495
+#: src/view/screens/ProfileList.tsx:681
msgid "Load new posts"
msgstr "Neue BeitrƤge laden"
@@ -2139,7 +2200,7 @@ msgstr ""
msgid "Log out"
msgstr ""
-#: src/view/screens/Moderation.tsx:136
+#: src/view/screens/Moderation.tsx:155
msgid "Logged-out visibility"
msgstr ""
@@ -2151,6 +2212,18 @@ msgstr "Anmeldung bei einem Konto, das nicht aufgelistet ist"
msgid "Make sure this is where you intend to go!"
msgstr "Vergewissere dich, dass du auch wirklich dorthin gehen willst!"
+#: src/components/dialogs/MutedWords.tsx:71
+msgid "Manage your muted words and tags"
+msgstr ""
+
+#: src/view/com/auth/create/Step2.tsx:118
+msgid "May not be longer than 253 characters"
+msgstr ""
+
+#: src/view/com/auth/create/Step2.tsx:109
+msgid "May only contain letters and numbers"
+msgstr ""
+
#: src/view/screens/Profile.tsx:182
msgid "Media"
msgstr "Medien"
@@ -2164,7 +2237,7 @@ msgid "Mentioned users"
msgstr "ErwƤhnte Benutzer"
#: src/view/com/util/ViewHeader.tsx:81
-#: src/view/screens/Search/Search.tsx:623
+#: src/view/screens/Search/Search.tsx:646
msgid "Menu"
msgstr "Menü"
@@ -2173,7 +2246,7 @@ msgid "Message from server: {0}"
msgstr "Nachricht vom Server: {0}"
#: src/Navigation.tsx:115
-#: src/view/screens/Moderation.tsx:64
+#: src/view/screens/Moderation.tsx:66
#: src/view/screens/Settings/index.tsx:625
#: src/view/shell/desktop/LeftNav.tsx:397
#: src/view/shell/Drawer.tsx:511
@@ -2181,7 +2254,7 @@ msgstr "Nachricht vom Server: {0}"
msgid "Moderation"
msgstr "Moderation"
-#: src/view/com/lists/ListCard.tsx:92
+#: src/view/com/lists/ListCard.tsx:93
#: src/view/com/modals/UserAddRemoveLists.tsx:206
msgid "Moderation list by {0}"
msgstr ""
@@ -2190,7 +2263,7 @@ msgstr ""
msgid "Moderation list by <0/>"
msgstr ""
-#: src/view/com/lists/ListCard.tsx:90
+#: src/view/com/lists/ListCard.tsx:91
#: src/view/com/modals/UserAddRemoveLists.tsx:204
#: src/view/screens/ProfileList.tsx:772
msgid "Moderation list by you"
@@ -2204,7 +2277,7 @@ msgstr ""
msgid "Moderation list updated"
msgstr ""
-#: src/view/screens/Moderation.tsx:95
+#: src/view/screens/Moderation.tsx:114
msgid "Moderation lists"
msgstr "Moderationslisten"
@@ -2225,13 +2298,13 @@ msgstr ""
msgid "More feeds"
msgstr "Mehr Feeds"
-#: src/view/com/profile/ProfileHeader.tsx:522
-#: src/view/screens/ProfileFeed.tsx:362
-#: src/view/screens/ProfileList.tsx:616
+#: src/view/com/profile/ProfileHeader.tsx:523
+#: src/view/screens/ProfileFeed.tsx:363
+#: src/view/screens/ProfileList.tsx:617
msgid "More options"
msgstr "Mehr Optionen"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:270
+#: src/view/com/util/forms/PostDropdownBtn.tsx:315
msgid "More post options"
msgstr ""
@@ -2239,35 +2312,71 @@ msgstr ""
msgid "Most-liked replies first"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:326
+#: src/view/com/auth/create/Step2.tsx:122
+msgid "Must be at least 3 characters"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:253
+msgid "Mute"
+msgstr ""
+
+#: src/components/TagMenu/index.web.tsx:91
+msgid "Mute {truncatedTag}"
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:327
msgid "Mute Account"
msgstr "Konto stummschalten"
-#: src/view/screens/ProfileList.tsx:543
+#: src/view/screens/ProfileList.tsx:544
msgid "Mute accounts"
msgstr "Konten stummschalten"
-#: src/view/screens/ProfileList.tsx:490
+#: src/components/TagMenu/index.tsx:211
+msgid "Mute all {tag} posts"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:131
+msgid "Mute in tags only"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:116
+msgid "Mute in text & tags"
+msgstr ""
+
+#: src/view/screens/ProfileList.tsx:491
msgid "Mute list"
msgstr ""
-#: src/view/screens/ProfileList.tsx:274
+#: src/view/screens/ProfileList.tsx:275
msgid "Mute these accounts?"
msgstr "Diese Konten stummschalten?"
-#: src/view/screens/ProfileList.tsx:278
+#: src/view/screens/ProfileList.tsx:279
msgid "Mute this List"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:171
+#: src/components/dialogs/MutedWords.tsx:109
+msgid "Mute this word in post text and tags"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:124
+msgid "Mute this word in tags only"
+msgstr ""
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:202
msgid "Mute thread"
msgstr "Thread stummschalten"
-#: src/view/com/lists/ListCard.tsx:101
+#: src/view/com/util/forms/PostDropdownBtn.tsx:216
+msgid "Mute words & tags"
+msgstr ""
+
+#: src/view/com/lists/ListCard.tsx:102
msgid "Muted"
msgstr ""
-#: src/view/screens/Moderation.tsx:109
+#: src/view/screens/Moderation.tsx:128
msgid "Muted accounts"
msgstr "Stummgeschaltete Konten"
@@ -2280,7 +2389,11 @@ msgstr "Stummgeschaltete Konten"
msgid "Muted accounts have their posts removed from your feed and from your notifications. Mutes are completely private."
msgstr "Bei stummgeschalteten Konten werden ihre BeitrƤge aus deinem Feed und deinen Benachrichtigungen entfernt. Stummschaltungen sind vƶllig privat."
-#: src/view/screens/ProfileList.tsx:276
+#: src/view/screens/Moderation.tsx:100
+msgid "Muted words & tags"
+msgstr ""
+
+#: src/view/screens/ProfileList.tsx:277
msgid "Muting is private. Muted accounts can interact with you, but you will not see their posts or receive notifications from them."
msgstr "Stummschaltung ist privat. Stummgeschaltete Konten kƶnnen mit dir interagieren, aber du siehst ihre BeitrƤge nicht und erhƤltst keine Benachrichtigungen von ihnen."
@@ -2288,7 +2401,7 @@ msgstr "Stummschaltung ist privat. Stummgeschaltete Konten kƶnnen mit dir inter
msgid "My Birthday"
msgstr "Mein Geburtstag"
-#: src/view/screens/Feeds.tsx:419
+#: src/view/screens/Feeds.tsx:663
msgid "My Feeds"
msgstr "Meine Feeds"
@@ -2343,6 +2456,10 @@ msgstr "Verliere nie den Zugriff auf deine Follower und Daten."
msgid "Never lose access to your followers or data."
msgstr ""
+#: src/components/dialogs/MutedWords.tsx:244
+msgid "Nevermind"
+msgstr ""
+
#: src/view/screens/Lists.tsx:76
msgctxt "action"
msgid "New"
@@ -2364,17 +2481,17 @@ msgstr ""
msgid "New Password"
msgstr ""
-#: src/view/com/feeds/FeedPage.tsx:201
+#: src/view/com/feeds/FeedPage.tsx:126
msgctxt "action"
msgid "New post"
msgstr ""
-#: src/view/screens/Feeds.tsx:581
+#: src/view/screens/Feeds.tsx:555
#: src/view/screens/Notifications.tsx:168
#: src/view/screens/Profile.tsx:382
-#: src/view/screens/ProfileFeed.tsx:432
-#: src/view/screens/ProfileList.tsx:195
-#: src/view/screens/ProfileList.tsx:223
+#: src/view/screens/ProfileFeed.tsx:433
+#: src/view/screens/ProfileList.tsx:196
+#: src/view/screens/ProfileList.tsx:224
#: src/view/shell/desktop/LeftNav.tsx:248
msgid "New post"
msgstr "Neuer Beitrag"
@@ -2396,7 +2513,7 @@ msgstr ""
msgid "News"
msgstr ""
-#: src/view/com/auth/create/CreateAccount.tsx:161
+#: src/view/com/auth/create/CreateAccount.tsx:172
#: src/view/com/auth/login/ForgotPasswordForm.tsx:182
#: src/view/com/auth/login/ForgotPasswordForm.tsx:192
#: src/view/com/auth/login/LoginForm.tsx:291
@@ -2417,10 +2534,10 @@ msgstr ""
msgid "Next image"
msgstr "NƤchstes Bild"
-#: 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/PreferencesFollowingFeed.tsx:129
+#: src/view/screens/PreferencesFollowingFeed.tsx:200
+#: src/view/screens/PreferencesFollowingFeed.tsx:235
+#: src/view/screens/PreferencesFollowingFeed.tsx:272
#: src/view/screens/PreferencesThreads.tsx:106
#: src/view/screens/PreferencesThreads.tsx:129
msgid "No"
@@ -2431,7 +2548,7 @@ msgstr "Nein"
msgid "No description"
msgstr "Keine Beschreibung"
-#: src/view/com/profile/ProfileHeader.tsx:169
+#: src/view/com/profile/ProfileHeader.tsx:170
msgid "No longer following {0}"
msgstr ""
@@ -2444,13 +2561,13 @@ msgstr ""
msgid "No result"
msgstr "Kein Ergebnis"
-#: src/view/screens/Feeds.tsx:524
+#: src/view/screens/Feeds.tsx:495
msgid "No results found for \"{query}\""
msgstr "Keine Ergebnisse für \"{query}\" gefunden"
#: src/view/com/modals/ListAddRemoveUsers.tsx:127
-#: src/view/screens/Search/Search.tsx:280
-#: src/view/screens/Search/Search.tsx:308
+#: src/view/screens/Search/Search.tsx:281
+#: src/view/screens/Search/Search.tsx:309
msgid "No results found for {query}"
msgstr "Keine Ergebnisse für {query} gefunden"
@@ -2476,11 +2593,11 @@ msgstr ""
msgid "Not right now"
msgstr ""
-#: src/view/screens/Moderation.tsx:233
+#: src/view/screens/Moderation.tsx:252
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 lediglich die Sichtbarkeit deiner Inhalte in der Bluesky-App und auf der Website ein. Andere Apps respektieren diese Einstellung mƶglicherweise nicht. Deine Inhalte werden abgemeldeten Nutzern mƶglicherweise weiterhin in anderen Apps und Websites angezeigt."
-#: src/Navigation.tsx:447
+#: src/Navigation.tsx:450
#: src/view/screens/Notifications.tsx:124
#: src/view/screens/Notifications.tsx:148
#: src/view/shell/bottom-bar/BottomBar.tsx:205
@@ -2514,7 +2631,7 @@ msgstr ""
msgid "Onboarding reset"
msgstr ""
-#: src/view/com/composer/Composer.tsx:375
+#: src/view/com/composer/Composer.tsx:382
msgid "One or more images is missing alt text."
msgstr "Bei einem oder mehreren Bildern fehlt der Alt-Text."
@@ -2531,8 +2648,12 @@ msgstr ""
msgid "Open"
msgstr ""
-#: src/view/com/composer/Composer.tsx:470
-#: src/view/com/composer/Composer.tsx:471
+#: src/view/screens/Moderation.tsx:75
+msgid "Open content filtering settings"
+msgstr ""
+
+#: src/view/com/composer/Composer.tsx:477
+#: src/view/com/composer/Composer.tsx:478
msgid "Open emoji picker"
msgstr ""
@@ -2540,7 +2661,11 @@ msgstr ""
msgid "Open links with in-app browser"
msgstr ""
-#: src/view/com/pager/FeedsTabBarMobile.tsx:87
+#: src/view/screens/Moderation.tsx:92
+msgid "Open muted words settings"
+msgstr ""
+
+#: src/view/com/home/HomeHeaderLayoutMobile.tsx:49
msgid "Open navigation"
msgstr "Navigation ƶffnen"
@@ -2576,7 +2701,7 @@ msgstr "Ćffnet die konfigurierbaren Spracheinstellungen"
msgid "Opens device photo gallery"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:419
+#: src/view/com/profile/ProfileHeader.tsx:420
msgid "Opens editor for profile display name, avatar, background image, and description"
msgstr ""
@@ -2584,11 +2709,11 @@ msgstr ""
msgid "Opens external embeds settings"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:574
+#: src/view/com/profile/ProfileHeader.tsx:575
msgid "Opens followers list"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:593
+#: src/view/com/profile/ProfileHeader.tsx:594
msgid "Opens following list"
msgstr ""
@@ -2616,7 +2741,8 @@ msgstr "Ćffnet die Moderationseinstellungen"
msgid "Opens password reset form"
msgstr ""
-#: src/view/screens/Feeds.tsx:357
+#: src/view/com/home/HomeHeaderLayout.web.tsx:60
+#: src/view/screens/Feeds.tsx:356
msgid "Opens screen to edit Saved Feeds"
msgstr ""
@@ -2672,8 +2798,8 @@ msgstr "Seite nicht gefunden"
msgid "Page Not Found"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:210
-#: src/view/com/auth/create/Step1.tsx:220
+#: src/view/com/auth/create/Step1.tsx:214
+#: src/view/com/auth/create/Step1.tsx:224
#: src/view/com/auth/login/LoginForm.tsx:226
#: src/view/com/auth/login/SetNewPasswordForm.tsx:161
#: src/view/com/modals/DeleteAccount.tsx:202
@@ -2709,15 +2835,15 @@ msgid "Pets"
msgstr ""
#: src/view/com/auth/create/Step2.tsx:183
-msgid "Phone number"
-msgstr ""
+#~ msgid "Phone number"
+#~ msgstr ""
#: src/view/com/modals/SelfLabel.tsx:121
msgid "Pictures meant for adults."
msgstr "Bilder, die für Erwachsene bestimmt sind."
-#: src/view/screens/ProfileFeed.tsx:353
-#: src/view/screens/ProfileList.tsx:580
+#: src/view/screens/ProfileFeed.tsx:354
+#: src/view/screens/ProfileList.tsx:581
msgid "Pin to home"
msgstr ""
@@ -2738,14 +2864,18 @@ msgstr ""
msgid "Plays the GIF"
msgstr ""
-#: src/view/com/auth/create/state.ts:177
+#: src/view/com/auth/create/state.ts:124
msgid "Please choose your handle."
msgstr "Bitte wƤhle deinen Handle."
-#: src/view/com/auth/create/state.ts:160
+#: src/view/com/auth/create/state.ts:117
msgid "Please choose your password."
msgstr "Bitte wƤhle dein Passwort."
+#: src/view/com/auth/create/state.ts:131
+msgid "Please complete the verification captcha."
+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 "Bitte bestätige deine E-Mail, bevor du sie änderst. Dies ist eine vorübergehende Anforderung, während E-Mail-Aktualisierungstools hinzugefügt werden, und wird bald wieder entfernt."
@@ -2755,22 +2885,22 @@ msgid "Please enter a name for your app password. All spaces is not allowed."
msgstr ""
#: src/view/com/auth/create/Step2.tsx:206
-msgid "Please enter a phone number that can receive SMS text messages."
-msgstr ""
+#~ msgid "Please enter a phone number that can receive SMS text messages."
+#~ msgstr ""
#: src/view/com/modals/AddAppPasswords.tsx:145
msgid "Please enter a unique name for this App Password or use our randomly generated one."
msgstr ""
#: src/view/com/auth/create/state.ts:170
-msgid "Please enter the code you received by SMS."
-msgstr ""
+#~ msgid "Please enter the code you received by SMS."
+#~ msgstr ""
#: src/view/com/auth/create/Step2.tsx:282
-msgid "Please enter the verification code sent to {phoneNumberFormatted}."
-msgstr ""
+#~ msgid "Please enter the verification code sent to {phoneNumberFormatted}."
+#~ msgstr ""
-#: src/view/com/auth/create/state.ts:146
+#: src/view/com/auth/create/state.ts:103
msgid "Please enter your email."
msgstr "Bitte gib deine E-Mail ein."
@@ -2787,7 +2917,7 @@ msgstr "Bitte teile uns mit, warum du denkst, dass diese Inhaltswarnung falsch a
msgid "Please Verify Your Email"
msgstr ""
-#: src/view/com/composer/Composer.tsx:215
+#: src/view/com/composer/Composer.tsx:222
msgid "Please wait for your link card to finish loading"
msgstr ""
@@ -2799,18 +2929,18 @@ msgstr ""
msgid "Porn"
msgstr ""
-#: src/view/com/composer/Composer.tsx:350
-#: src/view/com/composer/Composer.tsx:358
+#: src/view/com/composer/Composer.tsx:357
+#: src/view/com/composer/Composer.tsx:365
msgctxt "action"
msgid "Post"
msgstr ""
-#: src/view/com/post-thread/PostThread.tsx:246
+#: src/view/com/post-thread/PostThread.tsx:303
msgctxt "description"
msgid "Post"
msgstr "Beitrag"
-#: src/view/com/post-thread/PostThreadItem.tsx:174
+#: src/view/com/post-thread/PostThreadItem.tsx:175
msgid "Post by {0}"
msgstr ""
@@ -2820,11 +2950,11 @@ msgstr ""
msgid "Post by @{0}"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:84
+#: src/view/com/util/forms/PostDropdownBtn.tsx:90
msgid "Post deleted"
msgstr ""
-#: src/view/com/post-thread/PostThread.tsx:398
+#: src/view/com/post-thread/PostThread.tsx:462
msgid "Post hidden"
msgstr "Beitrag ausgeblendet"
@@ -2836,14 +2966,22 @@ msgstr "Beitragssprache"
msgid "Post Languages"
msgstr "Beitragssprachen"
-#: src/view/com/post-thread/PostThread.tsx:450
+#: src/view/com/post-thread/PostThread.tsx:514
msgid "Post not found"
msgstr "Beitrag nicht gefunden"
+#: src/components/TagMenu/index.tsx:257
+msgid "posts"
+msgstr ""
+
#: src/view/screens/Profile.tsx:180
msgid "Posts"
msgstr "BeitrƤge"
+#: src/components/dialogs/MutedWords.tsx:77
+msgid "Posts can be muted based on their text, their tags, or both."
+msgstr ""
+
#: src/view/com/posts/FeedErrorMessage.tsx:64
msgid "Posts hidden"
msgstr ""
@@ -2865,7 +3003,7 @@ msgid "Prioritize Your Follows"
msgstr "Priorisiere deine Follower"
#: src/view/screens/Settings/index.tsx:632
-#: src/view/shell/desktop/RightNav.tsx:80
+#: src/view/shell/desktop/RightNav.tsx:72
msgid "Privacy"
msgstr "PrivatsphƤre"
@@ -2908,11 +3046,11 @@ msgstr "Ćffentliche, gemeinsam nutzbare Listen von Nutzern, die du stummschalte
msgid "Public, shareable lists which can drive feeds."
msgstr "Ćffentliche, gemeinsam nutzbare Listen, die Feeds steuern kƶnnen."
-#: src/view/com/composer/Composer.tsx:335
+#: src/view/com/composer/Composer.tsx:342
msgid "Publish post"
msgstr ""
-#: src/view/com/composer/Composer.tsx:335
+#: src/view/com/composer/Composer.tsx:342
msgid "Publish reply"
msgstr ""
@@ -2946,6 +3084,7 @@ msgstr "Empfohlene Feeds"
msgid "Recommended Users"
msgstr "Empfohlene Nutzer"
+#: src/components/dialogs/MutedWords.tsx:249
#: src/view/com/modals/ListAddRemoveUsers.tsx:264
#: src/view/com/modals/SelfLabel.tsx:83
#: src/view/com/modals/UserAddRemoveLists.tsx:219
@@ -2954,7 +3093,7 @@ msgstr "Empfohlene Nutzer"
msgid "Remove"
msgstr "Entfernen"
-#: src/view/com/feeds/FeedSourceCard.tsx:106
+#: src/view/com/feeds/FeedSourceCard.tsx:108
msgid "Remove {0} from my feeds?"
msgstr "{0} aus meinen Feeds entfernen?"
@@ -2967,11 +3106,11 @@ msgstr "Konto entfernen"
msgid "Remove feed"
msgstr "Feed entfernen"
-#: src/view/com/feeds/FeedSourceCard.tsx:105
-#: src/view/com/feeds/FeedSourceCard.tsx:167
-#: src/view/com/feeds/FeedSourceCard.tsx:172
-#: src/view/com/feeds/FeedSourceCard.tsx:243
-#: src/view/screens/ProfileFeed.tsx:272
+#: src/view/com/feeds/FeedSourceCard.tsx:107
+#: src/view/com/feeds/FeedSourceCard.tsx:169
+#: src/view/com/feeds/FeedSourceCard.tsx:174
+#: src/view/com/feeds/FeedSourceCard.tsx:245
+#: src/view/screens/ProfileFeed.tsx:273
msgid "Remove from my feeds"
msgstr "Aus meinen Feeds entfernen"
@@ -2983,11 +3122,15 @@ msgstr "Bild entfernen"
msgid "Remove image preview"
msgstr "Bildvorschau entfernen"
+#: src/components/dialogs/MutedWords.tsx:294
+msgid "Remove mute word from your list"
+msgstr ""
+
#: src/view/com/modals/Repost.tsx:47
msgid "Remove repost"
msgstr ""
-#: src/view/com/feeds/FeedSourceCard.tsx:173
+#: src/view/com/feeds/FeedSourceCard.tsx:175
msgid "Remove this feed from my feeds?"
msgstr "Diesen Feed aus meinen Feeds entfernen?"
@@ -3000,8 +3143,8 @@ msgstr "Diesen Feed aus deinen gespeicherten Feeds entfernen?"
msgid "Removed from list"
msgstr "Aus der Liste entfernt"
-#: src/view/com/feeds/FeedSourceCard.tsx:111
-#: src/view/com/feeds/FeedSourceCard.tsx:178
+#: src/view/com/feeds/FeedSourceCard.tsx:113
+#: src/view/com/feeds/FeedSourceCard.tsx:180
msgid "Removed from my feeds"
msgstr ""
@@ -3017,16 +3160,16 @@ msgstr "Antworten"
msgid "Replies to this thread are disabled"
msgstr "Antworten auf diesen Thread sind deaktiviert"
-#: src/view/com/composer/Composer.tsx:348
+#: src/view/com/composer/Composer.tsx:355
msgctxt "action"
msgid "Reply"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:144
+#: src/view/screens/PreferencesFollowingFeed.tsx:144
msgid "Reply Filters"
msgstr "Antwortfilter"
-#: src/view/com/post/Post.tsx:166
+#: src/view/com/post/Post.tsx:167
#: src/view/com/posts/FeedItem.tsx:287
msgctxt "description"
msgid "Reply to <0/>"
@@ -3036,20 +3179,20 @@ msgstr ""
msgid "Report {collectionName}"
msgstr "{collectionName} melden"
-#: src/view/com/profile/ProfileHeader.tsx:360
+#: src/view/com/profile/ProfileHeader.tsx:361
msgid "Report Account"
msgstr "Konto melden"
-#: src/view/screens/ProfileFeed.tsx:292
+#: src/view/screens/ProfileFeed.tsx:293
msgid "Report feed"
msgstr "Feed melden"
-#: src/view/screens/ProfileList.tsx:458
+#: src/view/screens/ProfileList.tsx:459
msgid "Report List"
msgstr "Liste melden"
#: src/view/com/modals/report/SendReportButton.tsx:37
-#: src/view/com/util/forms/PostDropdownBtn.tsx:210
+#: src/view/com/util/forms/PostDropdownBtn.tsx:255
msgid "Report post"
msgstr "Beitrag melden"
@@ -3086,7 +3229,7 @@ msgstr ""
msgid "reposted your post"
msgstr ""
-#: src/view/com/post-thread/PostThreadItem.tsx:187
+#: src/view/com/post-thread/PostThreadItem.tsx:188
msgid "Reposts of this post"
msgstr ""
@@ -3096,8 +3239,8 @@ msgid "Request Change"
msgstr "Ćnderung anfordern"
#: src/view/com/auth/create/Step2.tsx:219
-msgid "Request code"
-msgstr ""
+#~ msgid "Request code"
+#~ msgstr ""
#: src/view/com/modals/ChangePassword.tsx:239
#: src/view/com/modals/ChangePassword.tsx:241
@@ -3108,7 +3251,7 @@ msgstr ""
msgid "Require alt text before posting"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:149
+#: src/view/com/auth/create/Step1.tsx:153
msgid "Required for this provider"
msgstr "Für diesen Anbieter erforderlich"
@@ -3160,9 +3303,8 @@ msgstr ""
#: src/screens/Onboarding/StepInterests/index.tsx:221
#: src/screens/Onboarding/StepInterests/index.tsx:224
-#: src/view/com/auth/create/CreateAccount.tsx:170
-#: src/view/com/auth/create/CreateAccount.tsx:175
-#: src/view/com/auth/create/Step2.tsx:255
+#: src/view/com/auth/create/CreateAccount.tsx:181
+#: src/view/com/auth/create/CreateAccount.tsx:186
#: src/view/com/auth/login/LoginForm.tsx:268
#: src/view/com/auth/login/LoginForm.tsx:271
#: src/view/com/util/error/ErrorMessage.tsx:55
@@ -3171,16 +3313,16 @@ msgid "Retry"
msgstr "Wiederholen"
#: src/view/com/auth/create/Step2.tsx:247
-msgid "Retry."
-msgstr ""
+#~ msgid "Retry."
+#~ msgstr ""
#: src/view/screens/ProfileList.tsx:898
msgid "Return to previous page"
msgstr ""
#: src/view/shell/desktop/RightNav.tsx:55
-msgid "SANDBOX. Posts and accounts are not permanent."
-msgstr ""
+#~ msgid "SANDBOX. Posts and accounts are not permanent."
+#~ msgstr ""
#: src/view/com/lightbox/Lightbox.tsx:132
#: src/view/com/modals/CreateOrEditList.tsx:345
@@ -3193,7 +3335,7 @@ msgstr ""
#: src/view/com/modals/ChangeHandle.tsx:173
#: src/view/com/modals/CreateOrEditList.tsx:337
#: src/view/com/modals/EditProfile.tsx:224
-#: src/view/screens/ProfileFeed.tsx:345
+#: src/view/screens/ProfileFeed.tsx:346
msgid "Save"
msgstr "Speichern"
@@ -3233,14 +3375,14 @@ msgstr ""
msgid "Scroll to top"
msgstr ""
-#: src/Navigation.tsx:437
+#: src/Navigation.tsx:440
#: src/view/com/auth/LoggedOut.tsx:122
#: src/view/com/modals/ListAddRemoveUsers.tsx:75
#: src/view/com/util/forms/SearchInput.tsx:67
#: src/view/com/util/forms/SearchInput.tsx:79
-#: src/view/screens/Search/Search.tsx:418
-#: src/view/screens/Search/Search.tsx:645
-#: src/view/screens/Search/Search.tsx:663
+#: src/view/screens/Search/Search.tsx:419
+#: src/view/screens/Search/Search.tsx:668
+#: src/view/screens/Search/Search.tsx:686
#: src/view/shell/bottom-bar/BottomBar.tsx:159
#: src/view/shell/desktop/LeftNav.tsx:324
#: src/view/shell/desktop/Search.tsx:214
@@ -3250,11 +3392,19 @@ msgstr ""
msgid "Search"
msgstr "Suche"
-#: src/view/screens/Search/Search.tsx:712
+#: src/view/screens/Search/Search.tsx:735
#: src/view/shell/desktop/Search.tsx:255
msgid "Search for \"{query}\""
msgstr ""
+#: src/components/TagMenu/index.tsx:145
+msgid "Search for all posts by @{authorHandle} with tag {tag}"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:90
+msgid "Search for all posts with tag {tag}"
+msgstr ""
+
#: src/view/com/auth/LoggedOut.tsx:104
#: src/view/com/auth/LoggedOut.tsx:105
#: src/view/com/modals/ListAddRemoveUsers.tsx:70
@@ -3265,6 +3415,22 @@ msgstr "Nach Nutzern suchen"
msgid "Security Step Required"
msgstr "Sicherheitsschritt erforderlich"
+#: src/components/TagMenu/index.web.tsx:50
+msgid "See {truncatedTag} posts"
+msgstr ""
+
+#: src/components/TagMenu/index.web.tsx:67
+msgid "See {truncatedTag} posts by user"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:128
+msgid "See <0>{tag}0> posts"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:189
+msgid "See <0>{tag}0> posts by this user"
+msgstr ""
+
#: src/view/screens/SavedFeeds.tsx:163
msgid "See this guide"
msgstr ""
@@ -3289,7 +3455,7 @@ msgstr "Von einem bestehenden Konto auswƤhlen"
msgid "Select option {i} of {numItems}"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:99
+#: src/view/com/auth/create/Step1.tsx:103
#: src/view/com/auth/login/LoginForm.tsx:150
msgid "Select service"
msgstr "Service auswƤhlen"
@@ -3306,7 +3472,7 @@ msgstr ""
#~ msgid "Select the types of content that you want to see (or not see), and we'll handle the rest."
#~ msgstr ""
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:90
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:96
msgid "Select topical feeds to follow from the list below"
msgstr ""
@@ -3327,8 +3493,8 @@ msgid "Select your interests from the options below"
msgstr ""
#: src/view/com/auth/create/Step2.tsx:155
-msgid "Select your phone's country"
-msgstr ""
+#~ msgid "Select your phone's country"
+#~ msgstr ""
#: src/view/screens/LanguageSettings.tsx:190
msgid "Select your preferred language for translations in your feed."
@@ -3407,19 +3573,19 @@ msgstr ""
msgid "Set new password"
msgstr "Neues Passwort festlegen"
-#: src/view/com/auth/create/Step1.tsx:221
+#: src/view/com/auth/create/Step1.tsx:225
msgid "Set password"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:225
+#: src/view/screens/PreferencesFollowingFeed.tsx:225
msgid "Set this setting to \"No\" to hide all quote posts from your feed. Reposts will still be visible."
msgstr "Setze diese Einstellung auf \"Nein\", um alle ZitatbeitrƤge aus deinem Feed auszublenden. Reposts sind weiterhin sichtbar."
-#: src/view/screens/PreferencesHomeFeed.tsx:122
+#: src/view/screens/PreferencesFollowingFeed.tsx:122
msgid "Set this setting to \"No\" to hide all replies from your feed."
msgstr "Setze diese Einstellung auf \"Nein\", um alle Antworten aus deinem Feed auszublenden."
-#: src/view/screens/PreferencesHomeFeed.tsx:191
+#: src/view/screens/PreferencesFollowingFeed.tsx:191
msgid "Set this setting to \"No\" to hide all reposts from your feed."
msgstr "Setze diese Einstellung auf \"Nein\", um alle Reposts aus deinem Feed auszublenden."
@@ -3428,8 +3594,12 @@ msgid "Set this setting to \"Yes\" to show replies in a threaded view. This is a
msgstr "Setze diese Einstellung auf \"Ja\", um Antworten in einer Thread-Ansicht anzuzeigen. Dies ist eine experimentelle Funktion."
#: 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 "Setze diese Einstellung auf \"Ja\", um Beispiele für deine gespeicherten Feeds in deinem folgenden Feed anzuzeigen. Dies ist eine experimentelle Funktion."
+#~ msgid "Set this setting to \"Yes\" to show samples of your saved feeds in your following feed. This is an experimental feature."
+#~ msgstr "Setze diese Einstellung auf \"Ja\", um Beispiele für deine gespeicherten Feeds in deinem folgenden Feed anzuzeigen. Dies ist eine experimentelle Funktion."
+
+#: src/view/screens/PreferencesFollowingFeed.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/screens/Onboarding/Layout.tsx:50
msgid "Set up your account"
@@ -3447,7 +3617,7 @@ msgstr ""
msgid "Sets hosting provider for password reset"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:100
+#: src/view/com/auth/create/Step1.tsx:104
#: src/view/com/auth/login/LoginForm.tsx:151
msgid "Sets server for the Bluesky client"
msgstr ""
@@ -3469,13 +3639,13 @@ msgctxt "action"
msgid "Share"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:294
-#: src/view/com/util/forms/PostDropdownBtn.tsx:153
-#: src/view/screens/ProfileList.tsx:417
+#: src/view/com/profile/ProfileHeader.tsx:295
+#: src/view/com/util/forms/PostDropdownBtn.tsx:184
+#: src/view/screens/ProfileList.tsx:418
msgid "Share"
msgstr "Teilen"
-#: src/view/screens/ProfileFeed.tsx:304
+#: src/view/screens/ProfileFeed.tsx:305
msgid "Share feed"
msgstr "Feed teilen"
@@ -3487,7 +3657,7 @@ msgstr "Feed teilen"
msgid "Show"
msgstr "Anzeigen"
-#: src/view/screens/PreferencesHomeFeed.tsx:68
+#: src/view/screens/PreferencesFollowingFeed.tsx:68
msgid "Show all replies"
msgstr ""
@@ -3499,21 +3669,21 @@ msgstr "Trotzdem anzeigen"
msgid "Show embeds from {0}"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:458
+#: src/view/com/profile/ProfileHeader.tsx:459
msgid "Show follows similar to {0}"
msgstr ""
-#: src/view/com/post-thread/PostThreadItem.tsx:539
-#: src/view/com/post/Post.tsx:197
+#: src/view/com/post-thread/PostThreadItem.tsx:538
+#: src/view/com/post/Post.tsx:198
#: src/view/com/posts/FeedItem.tsx:363
msgid "Show More"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:258
+#: src/view/screens/PreferencesFollowingFeed.tsx:258
msgid "Show Posts from My Feeds"
msgstr "BeitrƤge aus meinen Feeds anzeigen"
-#: src/view/screens/PreferencesHomeFeed.tsx:222
+#: src/view/screens/PreferencesFollowingFeed.tsx:222
msgid "Show Quote Posts"
msgstr ""
@@ -3529,7 +3699,7 @@ msgstr ""
msgid "Show re-posts in Following feed"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:119
+#: src/view/screens/PreferencesFollowingFeed.tsx:119
msgid "Show Replies"
msgstr "Antworten anzeigen"
@@ -3545,11 +3715,11 @@ msgstr ""
msgid "Show replies in Following feed"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:70
+#: src/view/screens/PreferencesFollowingFeed.tsx:70
msgid "Show replies with at least {value} {0}"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:188
+#: src/view/screens/PreferencesFollowingFeed.tsx:188
msgid "Show Reposts"
msgstr "Reposts anzeigen"
@@ -3566,18 +3736,18 @@ msgstr ""
msgid "Show users"
msgstr "Nutzer anzeigen"
-#: src/view/com/profile/ProfileHeader.tsx:461
+#: src/view/com/profile/ProfileHeader.tsx:462
msgid "Shows a list of users similar to this user."
msgstr ""
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:124
-#: src/view/com/profile/ProfileHeader.tsx:505
+#: src/view/com/profile/ProfileHeader.tsx:506
msgid "Shows posts from {0} in your feed"
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/com/auth/SplashScreen.tsx:79
#: src/view/shell/bottom-bar/BottomBar.tsx:285
#: src/view/shell/bottom-bar/BottomBar.tsx:286
#: src/view/shell/bottom-bar/BottomBar.tsx:288
@@ -3590,8 +3760,8 @@ msgid "Sign in"
msgstr "Anmelden"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:78
-#: src/view/com/auth/SplashScreen.tsx:57
-#: src/view/com/auth/SplashScreen.web.tsx:87
+#: src/view/com/auth/SplashScreen.tsx:82
+#: src/view/com/auth/SplashScreen.web.tsx:91
msgid "Sign In"
msgstr "Anmelden"
@@ -3658,8 +3828,8 @@ msgid "Skip this flow"
msgstr ""
#: src/view/com/auth/create/Step2.tsx:82
-msgid "SMS verification"
-msgstr ""
+#~ msgid "SMS verification"
+#~ msgstr ""
#: src/screens/Onboarding/index.tsx:40
msgid "Software Dev"
@@ -3673,7 +3843,7 @@ msgstr ""
msgid "Something went wrong. Check your email and try again."
msgstr ""
-#: src/App.native.tsx:61
+#: src/App.native.tsx:63
msgid "Sorry! Your session expired. Please log in again."
msgstr ""
@@ -3718,7 +3888,7 @@ msgstr ""
msgid "Submit"
msgstr "Einreichen"
-#: src/view/screens/ProfileList.tsx:607
+#: src/view/screens/ProfileList.tsx:608
msgid "Subscribe"
msgstr "Abonnieren"
@@ -3727,11 +3897,11 @@ msgstr "Abonnieren"
msgid "Subscribe to the {0} feed"
msgstr ""
-#: src/view/screens/ProfileList.tsx:603
+#: src/view/screens/ProfileList.tsx:604
msgid "Subscribe to this list"
msgstr "Abonniere diese Liste"
-#: src/view/screens/Search/Search.tsx:373
+#: src/view/screens/Search/Search.tsx:374
msgid "Suggested Follows"
msgstr "Vorgeschlagene Follower"
@@ -3775,6 +3945,14 @@ msgstr ""
msgid "System log"
msgstr "Systemprotokoll"
+#: src/components/dialogs/MutedWords.tsx:288
+msgid "tag"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:74
+msgid "Tag menu: {tag}"
+msgstr ""
+
#: src/view/com/modals/crop-image/CropImage.web.tsx:112
msgid "Tall"
msgstr "GroĆ"
@@ -3787,7 +3965,7 @@ msgstr ""
msgid "Tech"
msgstr ""
-#: src/view/shell/desktop/RightNav.tsx:89
+#: src/view/shell/desktop/RightNav.tsx:81
msgid "Terms"
msgstr "Bedingungen"
@@ -3798,12 +3976,20 @@ msgstr "Bedingungen"
msgid "Terms of Service"
msgstr "Nutzungsbedingungen"
+#: src/components/dialogs/MutedWords.tsx:288
+msgid "text"
+msgstr ""
+
#: src/view/com/modals/AppealLabel.tsx:70
#: src/view/com/modals/report/InputIssueDetails.tsx:51
msgid "Text input field"
msgstr "Text-Eingabefeld"
-#: src/view/com/profile/ProfileHeader.tsx:262
+#: src/view/com/auth/create/CreateAccount.tsx:94
+msgid "That handle is already taken."
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:263
msgid "The account will be able to interact with you after unblocking."
msgstr ""
@@ -3819,7 +4005,7 @@ msgstr ""
msgid "The following steps will help customize your Bluesky experience."
msgstr ""
-#: src/view/com/post-thread/PostThread.tsx:453
+#: src/view/com/post-thread/PostThread.tsx:517
msgid "The post may have been deleted."
msgstr "Mƶglicherweise wurde der Post gelƶscht."
@@ -3839,7 +4025,7 @@ msgstr ""
msgid "There are many feeds to try:"
msgstr ""
-#: src/view/screens/ProfileFeed.tsx:549
+#: src/view/screens/ProfileFeed.tsx:550
msgid "There was an an issue contacting the server, please check your internet connection and try again."
msgstr ""
@@ -3847,12 +4033,12 @@ msgstr ""
msgid "There was an an issue removing this feed. Please check your internet connection and try again."
msgstr ""
-#: src/view/screens/ProfileFeed.tsx:209
+#: src/view/screens/ProfileFeed.tsx:210
msgid "There was an an issue updating your feeds, please check your internet connection and try again."
msgstr ""
-#: src/view/screens/ProfileFeed.tsx:236
-#: src/view/screens/ProfileList.tsx:266
+#: src/view/screens/ProfileFeed.tsx:237
+#: src/view/screens/ProfileList.tsx:267
#: src/view/screens/SavedFeeds.tsx:209
#: src/view/screens/SavedFeeds.tsx:231
#: src/view/screens/SavedFeeds.tsx:252
@@ -3861,9 +4047,9 @@ msgstr ""
#: src/view/com/auth/onboarding/RecommendedFeedsItem.tsx:57
#: src/view/com/auth/onboarding/RecommendedFeedsItem.tsx:66
-#: src/view/com/feeds/FeedSourceCard.tsx:113
-#: src/view/com/feeds/FeedSourceCard.tsx:127
-#: src/view/com/feeds/FeedSourceCard.tsx:181
+#: src/view/com/feeds/FeedSourceCard.tsx:115
+#: src/view/com/feeds/FeedSourceCard.tsx:129
+#: src/view/com/feeds/FeedSourceCard.tsx:183
msgid "There was an issue contacting your server"
msgstr ""
@@ -3895,19 +4081,19 @@ msgstr ""
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:93
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:105
-#: src/view/com/profile/ProfileHeader.tsx:156
-#: src/view/com/profile/ProfileHeader.tsx:177
-#: src/view/com/profile/ProfileHeader.tsx:216
-#: src/view/com/profile/ProfileHeader.tsx:229
-#: src/view/com/profile/ProfileHeader.tsx:249
-#: src/view/com/profile/ProfileHeader.tsx:271
+#: src/view/com/profile/ProfileHeader.tsx:157
+#: src/view/com/profile/ProfileHeader.tsx:178
+#: src/view/com/profile/ProfileHeader.tsx:217
+#: src/view/com/profile/ProfileHeader.tsx:230
+#: src/view/com/profile/ProfileHeader.tsx:250
+#: src/view/com/profile/ProfileHeader.tsx:272
msgid "There was an issue! {0}"
msgstr ""
-#: src/view/screens/ProfileList.tsx:287
-#: src/view/screens/ProfileList.tsx:306
-#: src/view/screens/ProfileList.tsx:328
-#: src/view/screens/ProfileList.tsx:347
+#: src/view/screens/ProfileList.tsx:288
+#: src/view/screens/ProfileList.tsx:307
+#: src/view/screens/ProfileList.tsx:329
+#: src/view/screens/ProfileList.tsx:348
msgid "There was an issue. Please check your internet connection and try again."
msgstr ""
@@ -3920,8 +4106,8 @@ msgid "There's been a rush of new users to Bluesky! We'll activate your account
msgstr ""
#: src/view/com/auth/create/Step2.tsx:55
-msgid "There's something wrong with this number. Please choose your country and enter your full phone number!"
-msgstr ""
+#~ msgid "There's something wrong with this number. Please choose your country and enter your full phone number!"
+#~ msgstr ""
#: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:138
msgid "These are popular accounts you might like:"
@@ -3956,8 +4142,8 @@ msgid "This feed is currently receiving high traffic and is temporarily unavaila
msgstr "Dieser Feed wird derzeit stark frequentiert und ist vorübergehend nicht verfügbar. Bitte versuche es später erneut."
#: src/view/screens/Profile.tsx:420
-#: src/view/screens/ProfileFeed.tsx:475
-#: src/view/screens/ProfileList.tsx:660
+#: src/view/screens/ProfileFeed.tsx:476
+#: src/view/screens/ProfileList.tsx:661
msgid "This feed is empty!"
msgstr ""
@@ -3985,7 +4171,7 @@ msgstr ""
msgid "This name is already in use"
msgstr ""
-#: src/view/com/post-thread/PostThreadItem.tsx:122
+#: src/view/com/post-thread/PostThreadItem.tsx:125
msgid "This post has been deleted."
msgstr "Dieser Beitrag wurde gelƶscht."
@@ -4009,7 +4195,11 @@ msgstr ""
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:192
+#: src/components/dialogs/MutedWords.tsx:236
+msgid "This will delete {0} from your muted words. You can always add it back later."
+msgstr ""
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:237
msgid "This will hide this post from your feeds."
msgstr "Dadurch wird dieser Beitrag aus deinen Feeds ausgeblendet."
@@ -4022,10 +4212,14 @@ msgstr "Thread-Einstellungen"
msgid "Threaded Mode"
msgstr ""
-#: src/Navigation.tsx:252
+#: src/Navigation.tsx:255
msgid "Threads Preferences"
msgstr ""
+#: src/components/dialogs/MutedWords.tsx:95
+msgid "Toggle between muted word options."
+msgstr ""
+
#: src/view/com/util/forms/DropdownButton.tsx:246
msgid "Toggle dropdown"
msgstr ""
@@ -4034,9 +4228,9 @@ msgstr ""
msgid "Transformations"
msgstr ""
-#: src/view/com/post-thread/PostThreadItem.tsx:686
-#: src/view/com/post-thread/PostThreadItem.tsx:688
-#: src/view/com/util/forms/PostDropdownBtn.tsx:125
+#: src/view/com/post-thread/PostThreadItem.tsx:685
+#: src/view/com/post-thread/PostThreadItem.tsx:687
+#: src/view/com/util/forms/PostDropdownBtn.tsx:156
msgid "Translate"
msgstr "Ćbersetzen"
@@ -4045,15 +4239,15 @@ msgctxt "action"
msgid "Try again"
msgstr "Erneut versuchen"
-#: src/view/screens/ProfileList.tsx:505
+#: src/view/screens/ProfileList.tsx:506
msgid "Un-block list"
msgstr ""
-#: src/view/screens/ProfileList.tsx:490
+#: src/view/screens/ProfileList.tsx:491
msgid "Un-mute list"
msgstr ""
-#: src/view/com/auth/create/CreateAccount.tsx:66
+#: src/view/com/auth/create/CreateAccount.tsx:58
#: src/view/com/auth/login/ForgotPasswordForm.tsx:87
#: src/view/com/auth/login/Login.tsx:76
#: src/view/com/auth/login/LoginForm.tsx:118
@@ -4061,18 +4255,18 @@ msgstr ""
msgid "Unable to contact your service. Please check your Internet connection."
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:432
-#: src/view/screens/ProfileList.tsx:589
+#: src/view/com/profile/ProfileHeader.tsx:433
+#: src/view/screens/ProfileList.tsx:590
msgid "Unblock"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:435
+#: src/view/com/profile/ProfileHeader.tsx:436
msgctxt "action"
msgid "Unblock"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:260
-#: src/view/com/profile/ProfileHeader.tsx:344
+#: src/view/com/profile/ProfileHeader.tsx:261
+#: src/view/com/profile/ProfileHeader.tsx:345
msgid "Unblock Account"
msgstr ""
@@ -4088,11 +4282,11 @@ msgctxt "action"
msgid "Unfollow"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:484
+#: src/view/com/profile/ProfileHeader.tsx:485
msgid "Unfollow {0}"
msgstr ""
-#: src/view/com/auth/create/state.ts:300
+#: src/view/com/auth/create/state.ts:262
msgid "Unfortunately, you do not meet the requirements to create an account."
msgstr "Leider erfüllst du nicht die Voraussetzungen, um einen Account zu erstellen."
@@ -4101,28 +4295,37 @@ msgstr "Leider erfüllst du nicht die Voraussetzungen, um einen Account zu erste
msgid "Unlike"
msgstr ""
-#: src/view/screens/ProfileList.tsx:596
+#: src/components/TagMenu/index.tsx:253
+#: src/view/screens/ProfileList.tsx:597
msgid "Unmute"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:325
+#: src/components/TagMenu/index.web.tsx:90
+msgid "Unmute {truncatedTag}"
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:326
msgid "Unmute Account"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:171
+#: src/components/TagMenu/index.tsx:210
+msgid "Unmute all {tag} posts"
+msgstr ""
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:202
msgid "Unmute thread"
msgstr ""
-#: src/view/screens/ProfileFeed.tsx:353
-#: src/view/screens/ProfileList.tsx:580
+#: src/view/screens/ProfileFeed.tsx:354
+#: src/view/screens/ProfileList.tsx:581
msgid "Unpin"
msgstr ""
-#: src/view/screens/ProfileList.tsx:473
+#: src/view/screens/ProfileList.tsx:474
msgid "Unpin moderation list"
msgstr ""
-#: src/view/screens/ProfileFeed.tsx:345
+#: src/view/screens/ProfileFeed.tsx:346
msgid "Unsave"
msgstr ""
@@ -4184,11 +4387,11 @@ msgstr ""
msgid "User Blocks You"
msgstr ""
-#: src/view/com/auth/create/Step3.tsx:41
+#: src/view/com/auth/create/Step2.tsx:79
msgid "User handle"
msgstr "Benutzerhandle"
-#: src/view/com/lists/ListCard.tsx:84
+#: src/view/com/lists/ListCard.tsx:85
#: src/view/com/modals/UserAddRemoveLists.tsx:198
msgid "User list by {0}"
msgstr ""
@@ -4197,7 +4400,7 @@ msgstr ""
msgid "User list by <0/>"
msgstr ""
-#: src/view/com/lists/ListCard.tsx:82
+#: src/view/com/lists/ListCard.tsx:83
#: src/view/com/modals/UserAddRemoveLists.tsx:196
#: src/view/screens/ProfileList.tsx:760
msgid "User list by you"
@@ -4233,8 +4436,8 @@ msgid "Users in \"{0}\""
msgstr ""
#: src/view/com/auth/create/Step2.tsx:243
-msgid "Verification code"
-msgstr ""
+#~ msgid "Verification code"
+#~ msgstr ""
#: src/view/screens/Settings/index.tsx:910
msgid "Verify email"
@@ -4261,7 +4464,7 @@ msgstr ""
msgid "Video Games"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:661
+#: src/view/com/profile/ProfileHeader.tsx:662
msgid "View {0}'s avatar"
msgstr ""
@@ -4310,6 +4513,10 @@ msgstr ""
#~ msgid "We recommend \"For You\" by Skygaze:"
#~ msgstr ""
+#: src/components/dialogs/MutedWords.tsx:161
+msgid "We recommend avoiding common words that appear in many posts, since it can result in no posts being shown."
+msgstr ""
+
#: src/screens/Onboarding/StepAlgoFeeds/index.tsx:124
msgid "We recommend our \"Discover\" feed:"
msgstr ""
@@ -4330,15 +4537,19 @@ msgstr ""
msgid "We'll use this to help customize your experience."
msgstr ""
-#: src/view/com/auth/create/CreateAccount.tsx:123
+#: src/view/com/auth/create/CreateAccount.tsx:134
msgid "We're so excited to have you join us!"
msgstr "Wir freuen uns sehr, dass du dabei bist!"
-#: src/view/screens/ProfileList.tsx:85
+#: src/view/screens/ProfileList.tsx:86
msgid "We're sorry, but we were unable to resolve this list. If this persists, please contact the list creator, @{handleOrDid}."
msgstr ""
-#: src/view/screens/Search/Search.tsx:253
+#: src/components/dialogs/MutedWords.tsx:182
+msgid "We're sorry, but we weren't able to load your muted words at this time. Please try again."
+msgstr ""
+
+#: src/view/screens/Search/Search.tsx:254
msgid "We're sorry, but your search could not be completed. Please try again in a few minutes."
msgstr "Es tut uns leid, aber deine Suche konnte nicht abgeschlossen werden. Bitte versuche es in ein paar Minuten erneut."
@@ -4358,8 +4569,8 @@ msgstr ""
msgid "What is the issue with this {collectionName}?"
msgstr ""
-#: src/view/com/auth/SplashScreen.tsx:34
-#: src/view/com/composer/Composer.tsx:279
+#: src/view/com/auth/SplashScreen.tsx:59
+#: src/view/com/composer/Composer.tsx:286
msgid "What's up?"
msgstr "Was gibt's?"
@@ -4380,11 +4591,11 @@ msgstr "Wer antworten kann"
msgid "Wide"
msgstr "Breit"
-#: src/view/com/composer/Composer.tsx:415
+#: src/view/com/composer/Composer.tsx:422
msgid "Write post"
msgstr "Beitrag verfassen"
-#: src/view/com/composer/Composer.tsx:278
+#: src/view/com/composer/Composer.tsx:285
#: src/view/com/composer/Prompt.tsx:33
msgid "Write your reply"
msgstr "Schreibe deine Antwort"
@@ -4394,14 +4605,14 @@ msgid "Writers"
msgstr ""
#: src/view/com/auth/create/Step2.tsx:263
-msgid "XXXXXX"
-msgstr ""
+#~ msgid "XXXXXX"
+#~ msgstr ""
#: src/view/com/composer/select-language/SuggestedLanguage.tsx:77
-#: 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/PreferencesFollowingFeed.tsx:129
+#: src/view/screens/PreferencesFollowingFeed.tsx:201
+#: src/view/screens/PreferencesFollowingFeed.tsx:236
+#: src/view/screens/PreferencesFollowingFeed.tsx:271
#: src/view/screens/PreferencesThreads.tsx:106
#: src/view/screens/PreferencesThreads.tsx:129
msgid "Yes"
@@ -4441,7 +4652,7 @@ msgstr "Du hast noch keine Einladungscodes! Wir schicken dir welche, wenn du sch
msgid "You don't have any pinned feeds."
msgstr "Du hast keine angehefteten Feeds."
-#: src/view/screens/Feeds.tsx:451
+#: src/view/screens/Feeds.tsx:452
msgid "You don't have any saved feeds!"
msgstr "Du hast keine gespeicherten Feeds!"
@@ -4449,7 +4660,7 @@ msgstr "Du hast keine gespeicherten Feeds!"
msgid "You don't have any saved feeds."
msgstr "Du hast keine gespeicherten Feeds."
-#: src/view/com/post-thread/PostThread.tsx:401
+#: src/view/com/post-thread/PostThread.tsx:465
msgid "You have blocked the author or you have been blocked by the author."
msgstr "Du hast den Verfasser blockiert oder du wurdest vom Verfasser blockiert."
@@ -4489,6 +4700,10 @@ msgstr "Du hast noch keine App-Passwƶrter erstellt. Du kannst eines erstellen,
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/components/dialogs/MutedWords.tsx:202
+msgid "You haven't muted any words or tags yet"
+msgstr ""
+
#: src/view/com/modals/ContentFilteringSettings.tsx:175
msgid "You must be 18 or older to enable adult content."
msgstr ""
@@ -4497,11 +4712,11 @@ msgstr ""
msgid "You must be 18 years or older to enable adult content"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:98
+#: src/view/com/util/forms/PostDropdownBtn.tsx:129
msgid "You will no longer receive notifications for this thread"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:101
+#: src/view/com/util/forms/PostDropdownBtn.tsx:132
msgid "You will now receive notifications for this thread"
msgstr ""
@@ -4539,7 +4754,7 @@ msgstr ""
msgid "Your account repository, containing all public data records, can be downloaded as a \"CAR\" file. This file does not include media embeds, such as images, or your private data, which must be fetched separately."
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:234
+#: src/view/com/auth/create/Step1.tsx:238
msgid "Your birth date"
msgstr "Dein Geburtsdatum"
@@ -4551,7 +4766,7 @@ msgstr ""
msgid "Your default feed is \"Following\""
msgstr ""
-#: src/view/com/auth/create/state.ts:153
+#: src/view/com/auth/create/state.ts:110
#: src/view/com/auth/login/ForgotPasswordForm.tsx:70
#: src/view/com/modals/ChangePassword.tsx:54
msgid "Your email appears to be invalid."
@@ -4573,7 +4788,7 @@ msgstr "Deine E-Mail wurde noch nicht bestƤtigt. Dies ist ein wichtiger Sicherh
msgid "Your following feed is empty! Follow more users to see what's happening."
msgstr ""
-#: src/view/com/auth/create/Step3.tsx:45
+#: src/view/com/auth/create/Step2.tsx:83
msgid "Your full handle will be"
msgstr ""
@@ -4587,11 +4802,15 @@ msgstr ""
#~ msgid "Your invite codes are hidden when logged in using an App Password"
#~ msgstr "Deine Einladungscodes werden ausgeblendet, wenn du dich mit einem App-Passwort anmeldest"
+#: src/components/dialogs/MutedWords.tsx:173
+msgid "Your muted words"
+msgstr ""
+
#: src/view/com/modals/ChangePassword.tsx:155
msgid "Your password has been changed successfully!"
msgstr ""
-#: src/view/com/composer/Composer.tsx:267
+#: src/view/com/composer/Composer.tsx:274
msgid "Your post has been published"
msgstr ""
@@ -4606,10 +4825,10 @@ msgstr "Deine BeitrƤge, Likes und Blockierungen sind ƶffentlich. Stummschaltun
msgid "Your profile"
msgstr "Dein Profil"
-#: src/view/com/composer/Composer.tsx:266
+#: src/view/com/composer/Composer.tsx:273
msgid "Your reply has been published"
msgstr ""
-#: src/view/com/auth/create/Step3.tsx:28
+#: src/view/com/auth/create/Step2.tsx:65
msgid "Your user handle"
msgstr "Dein Benutzerhandle"
diff --git a/src/locale/locales/en/messages.po b/src/locale/locales/en/messages.po
index ec78c370e6..cc40e1f0ef 100644
--- a/src/locale/locales/en/messages.po
+++ b/src/locale/locales/en/messages.po
@@ -21,7 +21,7 @@ msgstr ""
#~ msgid "{0, plural, one {# invite code available} other {# invite codes available}}"
#~ msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:592
+#: src/view/com/profile/ProfileHeader.tsx:593
msgid "{following} following"
msgstr ""
@@ -47,7 +47,7 @@ msgstr ""
msgid "<0/> members"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:594
+#: src/view/com/profile/ProfileHeader.tsx:595
msgid "<0>{following} 0><1>following1>"
msgstr ""
@@ -63,7 +63,7 @@ msgstr ""
msgid "<0>Welcome to0><1>Bluesky1>"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:557
+#: src/view/com/profile/ProfileHeader.tsx:558
msgid "ā Invalid Handle"
msgstr ""
@@ -76,11 +76,11 @@ msgid "A new version of the app is available. Please update to continue using th
msgstr ""
#: src/view/com/util/ViewHeader.tsx:83
-#: src/view/screens/Search/Search.tsx:624
+#: src/view/screens/Search/Search.tsx:647
msgid "Access navigation links and settings"
msgstr ""
-#: src/view/com/pager/FeedsTabBarMobile.tsx:89
+#: src/view/com/home/HomeHeaderLayoutMobile.tsx:51
msgid "Access profile and other navigation links"
msgstr ""
@@ -95,11 +95,11 @@ msgstr ""
msgid "Account"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:245
+#: src/view/com/profile/ProfileHeader.tsx:246
msgid "Account blocked"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:212
+#: src/view/com/profile/ProfileHeader.tsx:213
msgid "Account muted"
msgstr ""
@@ -119,14 +119,15 @@ msgstr ""
msgid "Account removed from quick access"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:267
+#: src/view/com/profile/ProfileHeader.tsx:268
msgid "Account unblocked"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:225
+#: src/view/com/profile/ProfileHeader.tsx:226
msgid "Account unmuted"
msgstr ""
+#: src/components/dialogs/MutedWords.tsx:147
#: src/view/com/auth/onboarding/RecommendedFeedsItem.tsx:150
#: src/view/com/modals/ListAddRemoveUsers.tsx:264
#: src/view/com/modals/UserAddRemoveLists.tsx:219
@@ -168,24 +169,32 @@ msgstr ""
msgid "Add details to report"
msgstr ""
-#: src/view/com/composer/Composer.tsx:446
+#: src/view/com/composer/Composer.tsx:453
msgid "Add link card"
msgstr ""
-#: src/view/com/composer/Composer.tsx:451
+#: src/view/com/composer/Composer.tsx:458
msgid "Add link card:"
msgstr ""
+#: src/components/dialogs/MutedWords.tsx:140
+msgid "Add mute word for configured settings"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:74
+msgid "Add muted words and tags"
+msgstr ""
+
#: src/view/com/modals/ChangeHandle.tsx:417
msgid "Add the following DNS record to your domain:"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:309
+#: src/view/com/profile/ProfileHeader.tsx:310
msgid "Add to Lists"
msgstr ""
-#: src/view/com/feeds/FeedSourceCard.tsx:243
-#: src/view/screens/ProfileFeed.tsx:272
+#: src/view/com/feeds/FeedSourceCard.tsx:245
+#: src/view/screens/ProfileFeed.tsx:273
msgid "Add to my feeds"
msgstr ""
@@ -198,11 +207,11 @@ msgstr ""
msgid "Added to list"
msgstr ""
-#: src/view/com/feeds/FeedSourceCard.tsx:125
+#: src/view/com/feeds/FeedSourceCard.tsx:127
msgid "Added to my feeds"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:173
+#: src/view/screens/PreferencesFollowingFeed.tsx:173
msgid "Adjust the number of likes a reply must have to be shown in your feed."
msgstr ""
@@ -222,6 +231,10 @@ msgstr ""
msgid "Advanced"
msgstr ""
+#: src/view/screens/Feeds.tsx:666
+msgid "All the feeds you've saved, right in one place."
+msgstr ""
+
#: src/view/com/auth/login/ForgotPasswordForm.tsx:221
#: src/view/com/modals/ChangePassword.tsx:168
msgid "Already have a code?"
@@ -295,7 +308,7 @@ msgstr ""
msgid "App Passwords"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:250
+#: src/view/com/util/forms/PostDropdownBtn.tsx:295
msgid "Appeal content warning"
msgstr ""
@@ -319,15 +332,16 @@ msgstr ""
msgid "Are you sure you want to delete the app password \"{name}\"?"
msgstr ""
-#: src/view/com/composer/Composer.tsx:143
+#: src/view/com/composer/Composer.tsx:150
msgid "Are you sure you'd like to discard this draft?"
msgstr ""
-#: src/view/screens/ProfileList.tsx:364
+#: src/components/dialogs/MutedWords.tsx:233
+#: src/view/screens/ProfileList.tsx:365
msgid "Are you sure?"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:233
+#: src/view/com/util/forms/PostDropdownBtn.tsx:278
msgid "Are you sure? This cannot be undone."
msgstr ""
@@ -343,21 +357,21 @@ msgstr ""
msgid "Artistic or non-erotic nudity."
msgstr ""
-#: src/view/com/auth/create/CreateAccount.tsx:147
+#: src/view/com/auth/create/CreateAccount.tsx:158
#: src/view/com/auth/login/ChooseAccountForm.tsx:151
#: src/view/com/auth/login/ForgotPasswordForm.tsx:174
#: src/view/com/auth/login/LoginForm.tsx:259
#: src/view/com/auth/login/SetNewPasswordForm.tsx:179
#: src/view/com/modals/report/InputIssueDetails.tsx:46
-#: src/view/com/post-thread/PostThread.tsx:408
-#: src/view/com/post-thread/PostThread.tsx:458
-#: src/view/com/post-thread/PostThread.tsx:466
-#: src/view/com/profile/ProfileHeader.tsx:648
+#: src/view/com/post-thread/PostThread.tsx:472
+#: src/view/com/post-thread/PostThread.tsx:522
+#: src/view/com/post-thread/PostThread.tsx:530
+#: src/view/com/profile/ProfileHeader.tsx:649
#: src/view/com/util/ViewHeader.tsx:81
msgid "Back"
msgstr ""
-#: src/view/com/post-thread/PostThread.tsx:416
+#: src/view/com/post-thread/PostThread.tsx:480
msgctxt "action"
msgid "Back"
msgstr ""
@@ -370,7 +384,7 @@ msgstr ""
msgid "Basics"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:246
+#: src/view/com/auth/create/Step1.tsx:250
#: src/view/com/modals/BirthDateSettings.tsx:73
msgid "Birthday"
msgstr ""
@@ -379,33 +393,33 @@ msgstr ""
msgid "Birthday:"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:238
-#: src/view/com/profile/ProfileHeader.tsx:345
+#: src/view/com/profile/ProfileHeader.tsx:239
+#: src/view/com/profile/ProfileHeader.tsx:346
msgid "Block Account"
msgstr ""
-#: src/view/screens/ProfileList.tsx:555
+#: src/view/screens/ProfileList.tsx:556
msgid "Block accounts"
msgstr ""
-#: src/view/screens/ProfileList.tsx:505
+#: src/view/screens/ProfileList.tsx:506
msgid "Block list"
msgstr ""
-#: src/view/screens/ProfileList.tsx:315
+#: src/view/screens/ProfileList.tsx:316
msgid "Block these accounts?"
msgstr ""
-#: src/view/screens/ProfileList.tsx:319
+#: src/view/screens/ProfileList.tsx:320
msgid "Block this List"
msgstr ""
-#: src/view/com/lists/ListCard.tsx:109
-#: src/view/com/util/post-embeds/QuoteEmbed.tsx:60
+#: src/view/com/lists/ListCard.tsx:110
+#: src/view/com/util/post-embeds/QuoteEmbed.tsx:61
msgid "Blocked"
msgstr ""
-#: src/view/screens/Moderation.tsx:123
+#: src/view/screens/Moderation.tsx:142
msgid "Blocked accounts"
msgstr ""
@@ -414,7 +428,7 @@ msgstr ""
msgid "Blocked Accounts"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:240
+#: src/view/com/profile/ProfileHeader.tsx:241
msgid "Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you."
msgstr ""
@@ -422,15 +436,16 @@ msgstr ""
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:267
+#: src/view/com/post-thread/PostThread.tsx:324
msgid "Blocked post."
msgstr ""
-#: src/view/screens/ProfileList.tsx:317
+#: src/view/screens/ProfileList.tsx:318
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:133
msgid "Blog"
msgstr ""
@@ -463,7 +478,7 @@ msgstr ""
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 ""
-#: src/view/screens/Moderation.tsx:226
+#: src/view/screens/Moderation.tsx:245
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 ""
@@ -480,6 +495,7 @@ msgid "Build version {0} {1}"
msgstr ""
#: src/view/com/auth/HomeLoggedOutCTA.tsx:87
+#: src/view/com/auth/SplashScreen.web.tsx:128
msgid "Business"
msgstr ""
@@ -514,8 +530,8 @@ msgid "Can only contain letters, numbers, spaces, dashes, and underscores. Must
msgstr ""
#: src/components/Prompt.tsx:91
-#: src/view/com/composer/Composer.tsx:300
-#: src/view/com/composer/Composer.tsx:305
+#: src/view/com/composer/Composer.tsx:307
+#: src/view/com/composer/Composer.tsx:312
#: src/view/com/modals/ChangeEmail.tsx:218
#: src/view/com/modals/ChangeEmail.tsx:220
#: src/view/com/modals/ChangePassword.tsx:265
@@ -529,7 +545,7 @@ msgstr ""
#: src/view/com/modals/VerifyEmail.tsx:247
#: src/view/com/modals/VerifyEmail.tsx:253
#: src/view/com/modals/Waitlist.tsx:142
-#: src/view/screens/Search/Search.tsx:693
+#: src/view/screens/Search/Search.tsx:716
#: src/view/shell/desktop/Search.tsx:238
msgid "Cancel"
msgstr ""
@@ -657,7 +673,7 @@ msgstr ""
msgid "Choose your main feeds"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:215
+#: src/view/com/auth/create/Step1.tsx:219
msgid "Choose your password"
msgstr ""
@@ -680,7 +696,7 @@ msgid "Clear all storage data (restart after this)"
msgstr ""
#: src/view/com/util/forms/SearchInput.tsx:88
-#: src/view/screens/Search/Search.tsx:674
+#: src/view/screens/Search/Search.tsx:697
msgid "Clear search query"
msgstr ""
@@ -688,6 +704,11 @@ msgstr ""
msgid "click here"
msgstr ""
+#: src/components/RichText.tsx:189
+#: src/components/TagMenu/index.web.tsx:125
+msgid "Click here to open tag menu for {tag}"
+msgstr ""
+
#: src/screens/Onboarding/index.tsx:35
msgid "Climate"
msgstr ""
@@ -697,7 +718,8 @@ msgstr ""
msgid "Close"
msgstr ""
-#: src/components/Dialog/index.web.tsx:78
+#: src/components/Dialog/index.web.tsx:80
+#: src/components/Dialog/index.web.tsx:194
msgid "Close active dialog"
msgstr ""
@@ -717,11 +739,15 @@ msgstr ""
msgid "Close image viewer"
msgstr ""
-#: src/view/shell/index.web.tsx:49
+#: src/view/shell/index.web.tsx:51
msgid "Close navigation footer"
msgstr ""
-#: src/view/shell/index.web.tsx:50
+#: src/components/TagMenu/index.tsx:266
+msgid "Close this dialog"
+msgstr ""
+
+#: src/view/shell/index.web.tsx:52
msgid "Closes bottom navigation bar"
msgstr ""
@@ -729,7 +755,7 @@ msgstr ""
msgid "Closes password update alert"
msgstr ""
-#: src/view/com/composer/Composer.tsx:302
+#: src/view/com/composer/Composer.tsx:309
msgid "Closes post composer and discards post draft"
msgstr ""
@@ -758,7 +784,11 @@ msgstr ""
msgid "Complete onboarding and start using your account"
msgstr ""
-#: src/view/com/composer/Composer.tsx:417
+#: src/view/com/auth/create/Step3.tsx:73
+msgid "Complete the challenge"
+msgstr ""
+
+#: src/view/com/composer/Composer.tsx:424
msgid "Compose posts up to {MAX_GRAPHEME_LENGTH} characters in length"
msgstr ""
@@ -775,7 +805,7 @@ msgstr ""
#: src/view/com/modals/SelfLabel.tsx:154
#: src/view/com/modals/VerifyEmail.tsx:231
#: src/view/com/modals/VerifyEmail.tsx:233
-#: src/view/screens/PreferencesHomeFeed.tsx:308
+#: src/view/screens/PreferencesFollowingFeed.tsx:308
#: src/view/screens/PreferencesThreads.tsx:159
msgid "Confirm"
msgstr ""
@@ -813,16 +843,16 @@ msgstr ""
msgid "Confirms signing up {email} to the waitlist"
msgstr ""
-#: src/view/com/auth/create/CreateAccount.tsx:182
+#: src/view/com/auth/create/CreateAccount.tsx:193
#: src/view/com/auth/login/LoginForm.tsx:278
msgid "Connecting..."
msgstr ""
-#: src/view/com/auth/create/CreateAccount.tsx:202
+#: src/view/com/auth/create/CreateAccount.tsx:213
msgid "Contact support"
msgstr ""
-#: src/view/screens/Moderation.tsx:81
+#: src/view/screens/Moderation.tsx:83
msgid "Content filtering"
msgstr ""
@@ -852,7 +882,7 @@ msgstr ""
#: src/screens/Onboarding/StepFollowingFeed.tsx:153
#: src/screens/Onboarding/StepInterests/index.tsx:248
#: src/screens/Onboarding/StepModeration/index.tsx:118
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:108
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:114
#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:148
#: src/view/com/auth/onboarding/RecommendedFollows.tsx:209
msgid "Continue"
@@ -861,7 +891,7 @@ msgstr ""
#: src/screens/Onboarding/StepFollowingFeed.tsx:150
#: src/screens/Onboarding/StepInterests/index.tsx:245
#: src/screens/Onboarding/StepModeration/index.tsx:115
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:105
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:111
msgid "Continue to next step"
msgstr ""
@@ -888,7 +918,7 @@ msgstr ""
#: src/view/com/modals/AddAppPasswords.tsx:76
#: src/view/com/modals/InviteCodes.tsx:152
-#: src/view/com/util/forms/PostDropdownBtn.tsx:112
+#: src/view/com/util/forms/PostDropdownBtn.tsx:143
msgid "Copied to clipboard"
msgstr ""
@@ -900,19 +930,19 @@ msgstr ""
msgid "Copy"
msgstr ""
-#: src/view/screens/ProfileList.tsx:417
+#: src/view/screens/ProfileList.tsx:418
msgid "Copy link to list"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:153
+#: src/view/com/util/forms/PostDropdownBtn.tsx:184
msgid "Copy link to post"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:294
+#: src/view/com/profile/ProfileHeader.tsx:295
msgid "Copy link to profile"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:139
+#: src/view/com/util/forms/PostDropdownBtn.tsx:170
msgid "Copy post text"
msgstr ""
@@ -921,7 +951,7 @@ msgstr ""
msgid "Copyright Policy"
msgstr ""
-#: src/view/screens/ProfileFeed.tsx:96
+#: src/view/screens/ProfileFeed.tsx:97
msgid "Could not load feed"
msgstr ""
@@ -930,12 +960,12 @@ msgid "Could not load list"
msgstr ""
#: src/view/com/auth/create/Step2.tsx:91
-msgid "Country"
-msgstr ""
+#~ msgid "Country"
+#~ msgstr ""
#: src/view/com/auth/HomeLoggedOutCTA.tsx:62
-#: src/view/com/auth/SplashScreen.tsx:46
-#: src/view/com/auth/SplashScreen.web.tsx:77
+#: src/view/com/auth/SplashScreen.tsx:71
+#: src/view/com/auth/SplashScreen.web.tsx:81
msgid "Create a new account"
msgstr ""
@@ -943,7 +973,7 @@ msgstr ""
msgid "Create a new Bluesky account"
msgstr ""
-#: src/view/com/auth/create/CreateAccount.tsx:122
+#: src/view/com/auth/create/CreateAccount.tsx:133
msgid "Create Account"
msgstr ""
@@ -952,7 +982,7 @@ msgid "Create App Password"
msgstr ""
#: src/view/com/auth/HomeLoggedOutCTA.tsx:54
-#: src/view/com/auth/SplashScreen.tsx:43
+#: src/view/com/auth/SplashScreen.tsx:68
msgid "Create new account"
msgstr ""
@@ -968,7 +998,7 @@ msgstr ""
msgid "Created by you"
msgstr ""
-#: src/view/com/composer/Composer.tsx:448
+#: src/view/com/composer/Composer.tsx:455
msgid "Creates a card with a thumbnail. The card links to {url}"
msgstr ""
@@ -986,6 +1016,7 @@ msgid "Custom domain"
msgstr ""
#: src/screens/Onboarding/StepAlgoFeeds/index.tsx:106
+#: src/view/screens/Feeds.tsx:692
msgid "Custom feeds built by the community bring you new experiences and help you find the content you love."
msgstr ""
@@ -1027,8 +1058,8 @@ msgstr ""
msgid "Delete app password"
msgstr ""
-#: src/view/screens/ProfileList.tsx:363
-#: src/view/screens/ProfileList.tsx:444
+#: src/view/screens/ProfileList.tsx:364
+#: src/view/screens/ProfileList.tsx:445
msgid "Delete List"
msgstr ""
@@ -1044,19 +1075,19 @@ msgstr ""
msgid "Delete My Accountā¦"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:228
+#: src/view/com/util/forms/PostDropdownBtn.tsx:273
msgid "Delete post"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:232
+#: src/view/com/util/forms/PostDropdownBtn.tsx:277
msgid "Delete this post?"
msgstr ""
-#: src/view/com/util/post-embeds/QuoteEmbed.tsx:69
+#: src/view/com/util/post-embeds/QuoteEmbed.tsx:70
msgid "Deleted"
msgstr ""
-#: src/view/com/post-thread/PostThread.tsx:259
+#: src/view/com/post-thread/PostThread.tsx:316
msgid "Deleted post."
msgstr ""
@@ -1071,7 +1102,7 @@ msgstr ""
#~ msgid "Developer Tools"
#~ msgstr ""
-#: src/view/com/composer/Composer.tsx:211
+#: src/view/com/composer/Composer.tsx:218
msgid "Did you want to say anything?"
msgstr ""
@@ -1079,15 +1110,15 @@ msgstr ""
msgid "Dim"
msgstr ""
-#: src/view/com/composer/Composer.tsx:144
+#: src/view/com/composer/Composer.tsx:151
msgid "Discard"
msgstr ""
-#: src/view/com/composer/Composer.tsx:138
+#: src/view/com/composer/Composer.tsx:145
msgid "Discard draft"
msgstr ""
-#: src/view/screens/Moderation.tsx:207
+#: src/view/screens/Moderation.tsx:226
msgid "Discourage apps from showing my account to logged-out users"
msgstr ""
@@ -1097,7 +1128,11 @@ msgid "Discover new custom feeds"
msgstr ""
#: src/view/screens/Feeds.tsx:473
-msgid "Discover new feeds"
+#~ msgid "Discover new feeds"
+#~ msgstr ""
+
+#: src/view/screens/Feeds.tsx:689
+msgid "Discover New Feeds"
msgstr ""
#: src/view/com/modals/EditProfile.tsx:192
@@ -1112,7 +1147,7 @@ msgstr ""
msgid "Domain verified!"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:166
+#: src/view/com/auth/create/Step1.tsx:170
msgid "Don't have an invite code?"
msgstr ""
@@ -1139,7 +1174,7 @@ msgstr ""
#: src/view/com/modals/InviteCodes.tsx:80
#: src/view/com/modals/InviteCodes.tsx:123
#: src/view/com/modals/ListAddRemoveUsers.tsx:142
-#: src/view/screens/PreferencesHomeFeed.tsx:311
+#: src/view/screens/PreferencesFollowingFeed.tsx:311
#: src/view/screens/Settings/ExportCarDialog.tsx:93
#: src/view/screens/Settings/ExportCarDialog.tsx:94
msgid "Done"
@@ -1162,7 +1197,7 @@ msgstr ""
msgid "Download CAR file"
msgstr ""
-#: src/view/com/composer/text-input/TextInput.web.tsx:247
+#: src/view/com/composer/text-input/TextInput.web.tsx:249
msgid "Drop to add images"
msgstr ""
@@ -1208,7 +1243,7 @@ msgstr ""
msgid "Edit image"
msgstr ""
-#: src/view/screens/ProfileList.tsx:432
+#: src/view/screens/ProfileList.tsx:433
msgid "Edit list details"
msgstr ""
@@ -1226,15 +1261,16 @@ msgstr ""
msgid "Edit my profile"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:417
+#: src/view/com/profile/ProfileHeader.tsx:418
msgid "Edit profile"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:422
+#: src/view/com/profile/ProfileHeader.tsx:423
msgid "Edit Profile"
msgstr ""
-#: src/view/screens/Feeds.tsx:356
+#: src/view/com/home/HomeHeaderLayout.web.tsx:59
+#: src/view/screens/Feeds.tsx:355
msgid "Edit Saved Feeds"
msgstr ""
@@ -1254,16 +1290,14 @@ msgstr ""
msgid "Education"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:195
-#: src/view/com/auth/create/Step2.tsx:194
-#: src/view/com/auth/create/Step2.tsx:269
+#: src/view/com/auth/create/Step1.tsx:199
#: src/view/com/auth/login/ForgotPasswordForm.tsx:156
#: src/view/com/modals/ChangeEmail.tsx:141
#: src/view/com/modals/Waitlist.tsx:88
msgid "Email"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:186
+#: src/view/com/auth/create/Step1.tsx:190
#: src/view/com/auth/login/ForgotPasswordForm.tsx:147
msgid "Email address"
msgstr ""
@@ -1306,7 +1340,7 @@ msgstr ""
msgid "Enable media players for"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:147
+#: src/view/screens/PreferencesFollowingFeed.tsx:147
msgid "Enable this setting to only see replies between people you follow."
msgstr ""
@@ -1318,6 +1352,11 @@ msgstr ""
msgid "Enter a name for this App Password"
msgstr ""
+#: src/components/dialogs/MutedWords.tsx:87
+#: src/components/dialogs/MutedWords.tsx:88
+msgid "Enter a word or tag"
+msgstr ""
+
#: src/view/com/modals/VerifyEmail.tsx:105
msgid "Enter Confirmation Code"
msgstr ""
@@ -1334,7 +1373,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/Step1.tsx:247
+#: src/view/com/auth/create/Step1.tsx:251
#: src/view/com/modals/BirthDateSettings.tsx:74
msgid "Enter your birth date"
msgstr ""
@@ -1343,7 +1382,7 @@ msgstr ""
msgid "Enter your email"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:191
+#: src/view/com/auth/create/Step1.tsx:195
msgid "Enter your email address"
msgstr ""
@@ -1356,14 +1395,18 @@ msgid "Enter your new email address below."
msgstr ""
#: src/view/com/auth/create/Step2.tsx:188
-msgid "Enter your phone number"
-msgstr ""
+#~ msgid "Enter your phone number"
+#~ msgstr ""
#: src/view/com/auth/login/Login.tsx:99
msgid "Enter your username and password"
msgstr ""
-#: src/view/screens/Search/Search.tsx:109
+#: src/view/com/auth/create/Step3.tsx:67
+msgid "Error receiving captcha response."
+msgstr ""
+
+#: src/view/screens/Search/Search.tsx:110
msgid "Error:"
msgstr ""
@@ -1415,7 +1458,7 @@ msgstr ""
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/Navigation.tsx:258
+#: src/Navigation.tsx:261
#: src/view/screens/PreferencesExternalEmbeds.tsx:52
#: src/view/screens/Settings/index.tsx:657
msgid "External Media Preferences"
@@ -1434,7 +1477,7 @@ msgstr ""
msgid "Failed to create the list. Check your internet connection and try again."
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:88
+#: src/view/com/util/forms/PostDropdownBtn.tsx:110
msgid "Failed to delete post, please try again"
msgstr ""
@@ -1447,25 +1490,26 @@ msgstr ""
msgid "Feed"
msgstr ""
-#: src/view/com/feeds/FeedSourceCard.tsx:229
+#: src/view/com/feeds/FeedSourceCard.tsx:231
msgid "Feed by {0}"
msgstr ""
-#: src/view/screens/Feeds.tsx:631
+#: src/view/screens/Feeds.tsx:605
msgid "Feed offline"
msgstr ""
#: src/view/com/feeds/FeedPage.tsx:143
-msgid "Feed Preferences"
-msgstr ""
+#~ msgid "Feed Preferences"
+#~ msgstr ""
-#: src/view/shell/desktop/RightNav.tsx:69
+#: src/view/shell/desktop/RightNav.tsx:61
#: src/view/shell/Drawer.tsx:311
msgid "Feedback"
msgstr ""
-#: src/Navigation.tsx:442
-#: src/view/screens/Feeds.tsx:548
+#: src/Navigation.tsx:445
+#: src/view/screens/Feeds.tsx:419
+#: src/view/screens/Feeds.tsx:524
#: src/view/screens/Profile.tsx:184
#: src/view/shell/bottom-bar/BottomBar.tsx:181
#: src/view/shell/desktop/LeftNav.tsx:342
@@ -1490,7 +1534,7 @@ msgstr ""
msgid "Feeds are custom algorithms that users build with a little coding expertise. <0/> for more information."
msgstr ""
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:70
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:76
msgid "Feeds can be topical as well!"
msgstr ""
@@ -1504,11 +1548,11 @@ msgstr ""
msgid "Find accounts to follow"
msgstr ""
-#: src/view/screens/Search/Search.tsx:439
+#: src/view/screens/Search/Search.tsx:440
msgid "Find users on Bluesky"
msgstr ""
-#: src/view/screens/Search/Search.tsx:437
+#: src/view/screens/Search/Search.tsx:438
msgid "Find users with the search tool on the right"
msgstr ""
@@ -1516,10 +1560,14 @@ msgstr ""
msgid "Finding similar accounts..."
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:111
-msgid "Fine-tune the content you see on your home screen."
+#: src/view/screens/PreferencesFollowingFeed.tsx:111
+msgid "Fine-tune the content you see on your Following feed."
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 ""
@@ -1543,7 +1591,7 @@ msgstr ""
#: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:181
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:136
-#: src/view/com/profile/ProfileHeader.tsx:512
+#: src/view/com/profile/ProfileHeader.tsx:513
msgid "Follow"
msgstr ""
@@ -1554,7 +1602,7 @@ msgstr ""
#: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:58
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:122
-#: src/view/com/profile/ProfileHeader.tsx:503
+#: src/view/com/profile/ProfileHeader.tsx:504
msgid "Follow {0}"
msgstr ""
@@ -1578,7 +1626,7 @@ msgstr ""
msgid "Followed users"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:154
+#: src/view/screens/PreferencesFollowingFeed.tsx:154
msgid "Followed users only"
msgstr ""
@@ -1591,16 +1639,24 @@ msgid "Followers"
msgstr ""
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:136
-#: src/view/com/profile/ProfileHeader.tsx:494
+#: src/view/com/profile/ProfileHeader.tsx:495
#: src/view/screens/ProfileFollows.tsx:25
msgid "Following"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:148
+#: src/view/com/profile/ProfileHeader.tsx:149
msgid "Following {0}"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:545
+#: src/Navigation.tsx:248
+#: src/view/com/home/HomeHeaderLayout.web.tsx:45
+#: src/view/com/home/HomeHeaderLayoutMobile.tsx:83
+#: src/view/screens/PreferencesFollowingFeed.tsx:104
+#: src/view/screens/Settings/index.tsx:543
+msgid "Following Feed Preferences"
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:546
msgid "Follows you"
msgstr ""
@@ -1654,8 +1710,8 @@ msgstr ""
msgid "Go back"
msgstr ""
-#: src/view/screens/ProfileFeed.tsx:105
-#: src/view/screens/ProfileFeed.tsx:110
+#: src/view/screens/ProfileFeed.tsx:106
+#: src/view/screens/ProfileFeed.tsx:111
#: src/view/screens/ProfileList.tsx:897
#: src/view/screens/ProfileList.tsx:902
msgid "Go Back"
@@ -1666,7 +1722,7 @@ msgstr ""
msgid "Go back to previous step"
msgstr ""
-#: src/view/screens/Search/Search.tsx:724
+#: src/view/screens/Search/Search.tsx:747
#: src/view/shell/desktop/Search.tsx:262
msgid "Go to @{queryMaybeHandle}"
msgstr ""
@@ -1683,11 +1739,15 @@ msgstr ""
msgid "Handle"
msgstr ""
-#: src/view/com/auth/create/CreateAccount.tsx:197
+#: src/components/RichText.tsx:188
+msgid "Hashtag: {tag}"
+msgstr ""
+
+#: src/view/com/auth/create/CreateAccount.tsx:208
msgid "Having trouble?"
msgstr ""
-#: src/view/shell/desktop/RightNav.tsx:98
+#: src/view/shell/desktop/RightNav.tsx:90
#: src/view/shell/Drawer.tsx:321
msgid "Help"
msgstr ""
@@ -1696,11 +1756,11 @@ msgstr ""
msgid "Here are some accounts for you to follow"
msgstr ""
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:79
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:85
msgid "Here are some popular topical feeds. You can choose to follow as many as you like."
msgstr ""
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:74
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:80
msgid "Here are some topical feeds based on your interests: {interestsText}. You can choose to follow as many as you like."
msgstr ""
@@ -1721,7 +1781,7 @@ msgctxt "action"
msgid "Hide"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:187
+#: src/view/com/util/forms/PostDropdownBtn.tsx:232
msgid "Hide post"
msgstr ""
@@ -1730,7 +1790,7 @@ msgstr ""
msgid "Hide the content"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:191
+#: src/view/com/util/forms/PostDropdownBtn.tsx:236
msgid "Hide this post?"
msgstr ""
@@ -1738,7 +1798,7 @@ msgstr ""
msgid "Hide user list"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:486
+#: src/view/com/profile/ProfileHeader.tsx:487
msgid "Hides posts from {0} in your feed"
msgstr ""
@@ -1762,7 +1822,7 @@ msgstr ""
msgid "Hmm, we're having trouble finding this feed. It may have been deleted."
msgstr ""
-#: src/Navigation.tsx:432
+#: src/Navigation.tsx:435
#: src/view/shell/bottom-bar/BottomBar.tsx:137
#: src/view/shell/desktop/LeftNav.tsx:306
#: src/view/shell/Drawer.tsx:398
@@ -1774,10 +1834,10 @@ msgstr ""
#: src/view/com/pager/FeedsTabBarMobile.tsx:123
#: src/view/screens/PreferencesHomeFeed.tsx:104
#: src/view/screens/Settings/index.tsx:543
-msgid "Home Feed Preferences"
-msgstr ""
+#~ msgid "Home Feed Preferences"
+#~ msgstr ""
-#: src/view/com/auth/create/Step1.tsx:78
+#: src/view/com/auth/create/Step1.tsx:82
#: src/view/com/auth/login/ForgotPasswordForm.tsx:120
msgid "Hosting provider"
msgstr ""
@@ -1831,11 +1891,11 @@ msgstr ""
msgid "Input confirmation code for account deletion"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:196
+#: src/view/com/auth/create/Step1.tsx:200
msgid "Input email for Bluesky account"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:154
+#: src/view/com/auth/create/Step1.tsx:158
msgid "Input invite code to proceed"
msgstr ""
@@ -1852,8 +1912,8 @@ msgid "Input password for account deletion"
msgstr ""
#: src/view/com/auth/create/Step2.tsx:196
-msgid "Input phone number for SMS verification"
-msgstr ""
+#~ msgid "Input phone number for SMS verification"
+#~ msgstr ""
#: src/view/com/auth/login/LoginForm.tsx:230
msgid "Input the password tied to {identifier}"
@@ -1864,8 +1924,8 @@ msgid "Input the username or email address you used at signup"
msgstr ""
#: src/view/com/auth/create/Step2.tsx:271
-msgid "Input the verification code we have texted to you"
-msgstr ""
+#~ msgid "Input the verification code we have texted to you"
+#~ msgstr ""
#: src/view/com/modals/Waitlist.tsx:90
msgid "Input your email to get on the Bluesky waitlist"
@@ -1875,11 +1935,11 @@ msgstr ""
msgid "Input your password"
msgstr ""
-#: src/view/com/auth/create/Step3.tsx:42
+#: src/view/com/auth/create/Step2.tsx:80
msgid "Input your user handle"
msgstr ""
-#: src/view/com/post-thread/PostThreadItem.tsx:225
+#: src/view/com/post-thread/PostThreadItem.tsx:226
msgid "Invalid or unsupported post record"
msgstr ""
@@ -1895,12 +1955,12 @@ msgstr ""
msgid "Invite a Friend"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:144
-#: src/view/com/auth/create/Step1.tsx:153
+#: src/view/com/auth/create/Step1.tsx:148
+#: src/view/com/auth/create/Step1.tsx:157
msgid "Invite code"
msgstr ""
-#: src/view/com/auth/create/state.ts:199
+#: src/view/com/auth/create/state.ts:158
msgid "Invite code not accepted. Check that you input it correctly and try again."
msgstr ""
@@ -1921,6 +1981,7 @@ msgid "It shows posts from the people you follow as they happen."
msgstr ""
#: src/view/com/auth/HomeLoggedOutCTA.tsx:99
+#: src/view/com/auth/SplashScreen.web.tsx:138
msgid "Jobs"
msgstr ""
@@ -1928,8 +1989,8 @@ msgstr ""
msgid "Join the waitlist"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:170
#: src/view/com/auth/create/Step1.tsx:174
+#: src/view/com/auth/create/Step1.tsx:178
msgid "Join the waitlist."
msgstr ""
@@ -1980,7 +2041,7 @@ msgstr ""
msgid "Learn more about this warning"
msgstr ""
-#: src/view/screens/Moderation.tsx:243
+#: src/view/screens/Moderation.tsx:262
msgid "Learn more about what is public on Bluesky."
msgstr ""
@@ -2036,7 +2097,7 @@ msgstr ""
msgid "Liked By"
msgstr ""
-#: src/view/com/feeds/FeedSourceCard.tsx:277
+#: src/view/com/feeds/FeedSourceCard.tsx:279
msgid "Liked by {0} {1}"
msgstr ""
@@ -2056,7 +2117,7 @@ msgstr ""
msgid "Likes"
msgstr ""
-#: src/view/com/post-thread/PostThreadItem.tsx:182
+#: src/view/com/post-thread/PostThreadItem.tsx:183
msgid "Likes on this post"
msgstr ""
@@ -2068,19 +2129,19 @@ msgstr ""
msgid "List Avatar"
msgstr ""
-#: src/view/screens/ProfileList.tsx:323
+#: src/view/screens/ProfileList.tsx:324
msgid "List blocked"
msgstr ""
-#: src/view/com/feeds/FeedSourceCard.tsx:231
+#: src/view/com/feeds/FeedSourceCard.tsx:233
msgid "List by {0}"
msgstr ""
-#: src/view/screens/ProfileList.tsx:377
+#: src/view/screens/ProfileList.tsx:378
msgid "List deleted"
msgstr ""
-#: src/view/screens/ProfileList.tsx:282
+#: src/view/screens/ProfileList.tsx:283
msgid "List muted"
msgstr ""
@@ -2088,11 +2149,11 @@ msgstr ""
msgid "List Name"
msgstr ""
-#: src/view/screens/ProfileList.tsx:342
+#: src/view/screens/ProfileList.tsx:343
msgid "List unblocked"
msgstr ""
-#: src/view/screens/ProfileList.tsx:301
+#: src/view/screens/ProfileList.tsx:302
msgid "List unmuted"
msgstr ""
@@ -2104,8 +2165,8 @@ msgstr ""
msgid "Lists"
msgstr ""
-#: src/view/com/post-thread/PostThread.tsx:276
-#: src/view/com/post-thread/PostThread.tsx:284
+#: src/view/com/post-thread/PostThread.tsx:333
+#: src/view/com/post-thread/PostThread.tsx:341
msgid "Load more posts"
msgstr ""
@@ -2113,10 +2174,10 @@ msgstr ""
msgid "Load new notifications"
msgstr ""
-#: src/view/com/feeds/FeedPage.tsx:190
+#: src/view/com/feeds/FeedPage.tsx:115
#: src/view/screens/Profile.tsx:440
-#: src/view/screens/ProfileFeed.tsx:494
-#: src/view/screens/ProfileList.tsx:680
+#: src/view/screens/ProfileFeed.tsx:495
+#: src/view/screens/ProfileList.tsx:681
msgid "Load new posts"
msgstr ""
@@ -2139,7 +2200,7 @@ msgstr ""
msgid "Log out"
msgstr ""
-#: src/view/screens/Moderation.tsx:136
+#: src/view/screens/Moderation.tsx:155
msgid "Logged-out visibility"
msgstr ""
@@ -2151,6 +2212,18 @@ msgstr ""
msgid "Make sure this is where you intend to go!"
msgstr ""
+#: src/components/dialogs/MutedWords.tsx:71
+msgid "Manage your muted words and tags"
+msgstr ""
+
+#: src/view/com/auth/create/Step2.tsx:118
+msgid "May not be longer than 253 characters"
+msgstr ""
+
+#: src/view/com/auth/create/Step2.tsx:109
+msgid "May only contain letters and numbers"
+msgstr ""
+
#: src/view/screens/Profile.tsx:182
msgid "Media"
msgstr ""
@@ -2164,7 +2237,7 @@ msgid "Mentioned users"
msgstr ""
#: src/view/com/util/ViewHeader.tsx:81
-#: src/view/screens/Search/Search.tsx:623
+#: src/view/screens/Search/Search.tsx:646
msgid "Menu"
msgstr ""
@@ -2173,7 +2246,7 @@ msgid "Message from server: {0}"
msgstr ""
#: src/Navigation.tsx:115
-#: src/view/screens/Moderation.tsx:64
+#: src/view/screens/Moderation.tsx:66
#: src/view/screens/Settings/index.tsx:625
#: src/view/shell/desktop/LeftNav.tsx:397
#: src/view/shell/Drawer.tsx:511
@@ -2181,7 +2254,7 @@ msgstr ""
msgid "Moderation"
msgstr ""
-#: src/view/com/lists/ListCard.tsx:92
+#: src/view/com/lists/ListCard.tsx:93
#: src/view/com/modals/UserAddRemoveLists.tsx:206
msgid "Moderation list by {0}"
msgstr ""
@@ -2190,7 +2263,7 @@ msgstr ""
msgid "Moderation list by <0/>"
msgstr ""
-#: src/view/com/lists/ListCard.tsx:90
+#: src/view/com/lists/ListCard.tsx:91
#: src/view/com/modals/UserAddRemoveLists.tsx:204
#: src/view/screens/ProfileList.tsx:772
msgid "Moderation list by you"
@@ -2204,7 +2277,7 @@ msgstr ""
msgid "Moderation list updated"
msgstr ""
-#: src/view/screens/Moderation.tsx:95
+#: src/view/screens/Moderation.tsx:114
msgid "Moderation lists"
msgstr ""
@@ -2225,13 +2298,13 @@ msgstr ""
msgid "More feeds"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:522
-#: src/view/screens/ProfileFeed.tsx:362
-#: src/view/screens/ProfileList.tsx:616
+#: src/view/com/profile/ProfileHeader.tsx:523
+#: src/view/screens/ProfileFeed.tsx:363
+#: src/view/screens/ProfileList.tsx:617
msgid "More options"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:270
+#: src/view/com/util/forms/PostDropdownBtn.tsx:315
msgid "More post options"
msgstr ""
@@ -2239,35 +2312,71 @@ msgstr ""
msgid "Most-liked replies first"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:326
+#: src/view/com/auth/create/Step2.tsx:122
+msgid "Must be at least 3 characters"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:253
+msgid "Mute"
+msgstr ""
+
+#: src/components/TagMenu/index.web.tsx:91
+msgid "Mute {truncatedTag}"
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:327
msgid "Mute Account"
msgstr ""
-#: src/view/screens/ProfileList.tsx:543
+#: src/view/screens/ProfileList.tsx:544
msgid "Mute accounts"
msgstr ""
-#: src/view/screens/ProfileList.tsx:490
+#: src/components/TagMenu/index.tsx:211
+msgid "Mute all {tag} posts"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:131
+msgid "Mute in tags only"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:116
+msgid "Mute in text & tags"
+msgstr ""
+
+#: src/view/screens/ProfileList.tsx:491
msgid "Mute list"
msgstr ""
-#: src/view/screens/ProfileList.tsx:274
+#: src/view/screens/ProfileList.tsx:275
msgid "Mute these accounts?"
msgstr ""
-#: src/view/screens/ProfileList.tsx:278
+#: src/view/screens/ProfileList.tsx:279
msgid "Mute this List"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:171
+#: src/components/dialogs/MutedWords.tsx:109
+msgid "Mute this word in post text and tags"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:124
+msgid "Mute this word in tags only"
+msgstr ""
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:202
msgid "Mute thread"
msgstr ""
-#: src/view/com/lists/ListCard.tsx:101
+#: src/view/com/util/forms/PostDropdownBtn.tsx:216
+msgid "Mute words & tags"
+msgstr ""
+
+#: src/view/com/lists/ListCard.tsx:102
msgid "Muted"
msgstr ""
-#: src/view/screens/Moderation.tsx:109
+#: src/view/screens/Moderation.tsx:128
msgid "Muted accounts"
msgstr ""
@@ -2280,7 +2389,11 @@ msgstr ""
msgid "Muted accounts have their posts removed from your feed and from your notifications. Mutes are completely private."
msgstr ""
-#: src/view/screens/ProfileList.tsx:276
+#: src/view/screens/Moderation.tsx:100
+msgid "Muted words & tags"
+msgstr ""
+
+#: src/view/screens/ProfileList.tsx:277
msgid "Muting is private. Muted accounts can interact with you, but you will not see their posts or receive notifications from them."
msgstr ""
@@ -2288,7 +2401,7 @@ msgstr ""
msgid "My Birthday"
msgstr ""
-#: src/view/screens/Feeds.tsx:419
+#: src/view/screens/Feeds.tsx:663
msgid "My Feeds"
msgstr ""
@@ -2343,6 +2456,10 @@ msgstr ""
msgid "Never lose access to your followers or data."
msgstr ""
+#: src/components/dialogs/MutedWords.tsx:244
+msgid "Nevermind"
+msgstr ""
+
#: src/view/screens/Lists.tsx:76
msgctxt "action"
msgid "New"
@@ -2364,17 +2481,17 @@ msgstr ""
msgid "New Password"
msgstr ""
-#: src/view/com/feeds/FeedPage.tsx:201
+#: src/view/com/feeds/FeedPage.tsx:126
msgctxt "action"
msgid "New post"
msgstr ""
-#: src/view/screens/Feeds.tsx:581
+#: src/view/screens/Feeds.tsx:555
#: src/view/screens/Notifications.tsx:168
#: src/view/screens/Profile.tsx:382
-#: src/view/screens/ProfileFeed.tsx:432
-#: src/view/screens/ProfileList.tsx:195
-#: src/view/screens/ProfileList.tsx:223
+#: src/view/screens/ProfileFeed.tsx:433
+#: src/view/screens/ProfileList.tsx:196
+#: src/view/screens/ProfileList.tsx:224
#: src/view/shell/desktop/LeftNav.tsx:248
msgid "New post"
msgstr ""
@@ -2396,7 +2513,7 @@ msgstr ""
msgid "News"
msgstr ""
-#: src/view/com/auth/create/CreateAccount.tsx:161
+#: src/view/com/auth/create/CreateAccount.tsx:172
#: src/view/com/auth/login/ForgotPasswordForm.tsx:182
#: src/view/com/auth/login/ForgotPasswordForm.tsx:192
#: src/view/com/auth/login/LoginForm.tsx:291
@@ -2417,10 +2534,10 @@ msgstr ""
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/PreferencesFollowingFeed.tsx:129
+#: src/view/screens/PreferencesFollowingFeed.tsx:200
+#: src/view/screens/PreferencesFollowingFeed.tsx:235
+#: src/view/screens/PreferencesFollowingFeed.tsx:272
#: src/view/screens/PreferencesThreads.tsx:106
#: src/view/screens/PreferencesThreads.tsx:129
msgid "No"
@@ -2431,7 +2548,7 @@ msgstr ""
msgid "No description"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:169
+#: src/view/com/profile/ProfileHeader.tsx:170
msgid "No longer following {0}"
msgstr ""
@@ -2444,13 +2561,13 @@ msgstr ""
msgid "No result"
msgstr ""
-#: src/view/screens/Feeds.tsx:524
+#: src/view/screens/Feeds.tsx:495
msgid "No results found for \"{query}\""
msgstr ""
#: src/view/com/modals/ListAddRemoveUsers.tsx:127
-#: src/view/screens/Search/Search.tsx:280
-#: src/view/screens/Search/Search.tsx:308
+#: src/view/screens/Search/Search.tsx:281
+#: src/view/screens/Search/Search.tsx:309
msgid "No results found for {query}"
msgstr ""
@@ -2476,11 +2593,11 @@ msgstr ""
msgid "Not right now"
msgstr ""
-#: src/view/screens/Moderation.tsx:233
+#: src/view/screens/Moderation.tsx:252
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 ""
-#: src/Navigation.tsx:447
+#: src/Navigation.tsx:450
#: src/view/screens/Notifications.tsx:124
#: src/view/screens/Notifications.tsx:148
#: src/view/shell/bottom-bar/BottomBar.tsx:205
@@ -2514,7 +2631,7 @@ msgstr ""
msgid "Onboarding reset"
msgstr ""
-#: src/view/com/composer/Composer.tsx:375
+#: src/view/com/composer/Composer.tsx:382
msgid "One or more images is missing alt text."
msgstr ""
@@ -2531,8 +2648,12 @@ msgstr ""
msgid "Open"
msgstr ""
-#: src/view/com/composer/Composer.tsx:470
-#: src/view/com/composer/Composer.tsx:471
+#: src/view/screens/Moderation.tsx:75
+msgid "Open content filtering settings"
+msgstr ""
+
+#: src/view/com/composer/Composer.tsx:477
+#: src/view/com/composer/Composer.tsx:478
msgid "Open emoji picker"
msgstr ""
@@ -2540,7 +2661,11 @@ msgstr ""
msgid "Open links with in-app browser"
msgstr ""
-#: src/view/com/pager/FeedsTabBarMobile.tsx:87
+#: src/view/screens/Moderation.tsx:92
+msgid "Open muted words settings"
+msgstr ""
+
+#: src/view/com/home/HomeHeaderLayoutMobile.tsx:49
msgid "Open navigation"
msgstr ""
@@ -2576,7 +2701,7 @@ msgstr ""
msgid "Opens device photo gallery"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:419
+#: src/view/com/profile/ProfileHeader.tsx:420
msgid "Opens editor for profile display name, avatar, background image, and description"
msgstr ""
@@ -2584,11 +2709,11 @@ msgstr ""
msgid "Opens external embeds settings"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:574
+#: src/view/com/profile/ProfileHeader.tsx:575
msgid "Opens followers list"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:593
+#: src/view/com/profile/ProfileHeader.tsx:594
msgid "Opens following list"
msgstr ""
@@ -2616,7 +2741,8 @@ msgstr ""
msgid "Opens password reset form"
msgstr ""
-#: src/view/screens/Feeds.tsx:357
+#: src/view/com/home/HomeHeaderLayout.web.tsx:60
+#: src/view/screens/Feeds.tsx:356
msgid "Opens screen to edit Saved Feeds"
msgstr ""
@@ -2672,8 +2798,8 @@ msgstr ""
msgid "Page Not Found"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:210
-#: src/view/com/auth/create/Step1.tsx:220
+#: src/view/com/auth/create/Step1.tsx:214
+#: src/view/com/auth/create/Step1.tsx:224
#: src/view/com/auth/login/LoginForm.tsx:226
#: src/view/com/auth/login/SetNewPasswordForm.tsx:161
#: src/view/com/modals/DeleteAccount.tsx:202
@@ -2709,15 +2835,15 @@ msgid "Pets"
msgstr ""
#: src/view/com/auth/create/Step2.tsx:183
-msgid "Phone number"
-msgstr ""
+#~ msgid "Phone number"
+#~ msgstr ""
#: src/view/com/modals/SelfLabel.tsx:121
msgid "Pictures meant for adults."
msgstr ""
-#: src/view/screens/ProfileFeed.tsx:353
-#: src/view/screens/ProfileList.tsx:580
+#: src/view/screens/ProfileFeed.tsx:354
+#: src/view/screens/ProfileList.tsx:581
msgid "Pin to home"
msgstr ""
@@ -2738,14 +2864,18 @@ msgstr ""
msgid "Plays the GIF"
msgstr ""
-#: src/view/com/auth/create/state.ts:177
+#: src/view/com/auth/create/state.ts:124
msgid "Please choose your handle."
msgstr ""
-#: src/view/com/auth/create/state.ts:160
+#: src/view/com/auth/create/state.ts:117
msgid "Please choose your password."
msgstr ""
+#: src/view/com/auth/create/state.ts:131
+msgid "Please complete the verification captcha."
+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 ""
@@ -2755,22 +2885,22 @@ msgid "Please enter a name for your app password. All spaces is not allowed."
msgstr ""
#: src/view/com/auth/create/Step2.tsx:206
-msgid "Please enter a phone number that can receive SMS text messages."
-msgstr ""
+#~ msgid "Please enter a phone number that can receive SMS text messages."
+#~ msgstr ""
#: src/view/com/modals/AddAppPasswords.tsx:145
msgid "Please enter a unique name for this App Password or use our randomly generated one."
msgstr ""
#: src/view/com/auth/create/state.ts:170
-msgid "Please enter the code you received by SMS."
-msgstr ""
+#~ msgid "Please enter the code you received by SMS."
+#~ msgstr ""
#: src/view/com/auth/create/Step2.tsx:282
-msgid "Please enter the verification code sent to {phoneNumberFormatted}."
-msgstr ""
+#~ msgid "Please enter the verification code sent to {phoneNumberFormatted}."
+#~ msgstr ""
-#: src/view/com/auth/create/state.ts:146
+#: src/view/com/auth/create/state.ts:103
msgid "Please enter your email."
msgstr ""
@@ -2792,7 +2922,7 @@ msgstr ""
msgid "Please Verify Your Email"
msgstr ""
-#: src/view/com/composer/Composer.tsx:215
+#: src/view/com/composer/Composer.tsx:222
msgid "Please wait for your link card to finish loading"
msgstr ""
@@ -2804,18 +2934,18 @@ msgstr ""
msgid "Porn"
msgstr ""
-#: src/view/com/composer/Composer.tsx:350
-#: src/view/com/composer/Composer.tsx:358
+#: src/view/com/composer/Composer.tsx:357
+#: src/view/com/composer/Composer.tsx:365
msgctxt "action"
msgid "Post"
msgstr ""
-#: src/view/com/post-thread/PostThread.tsx:246
+#: src/view/com/post-thread/PostThread.tsx:303
msgctxt "description"
msgid "Post"
msgstr ""
-#: src/view/com/post-thread/PostThreadItem.tsx:174
+#: src/view/com/post-thread/PostThreadItem.tsx:175
msgid "Post by {0}"
msgstr ""
@@ -2825,11 +2955,11 @@ msgstr ""
msgid "Post by @{0}"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:84
+#: src/view/com/util/forms/PostDropdownBtn.tsx:90
msgid "Post deleted"
msgstr ""
-#: src/view/com/post-thread/PostThread.tsx:398
+#: src/view/com/post-thread/PostThread.tsx:462
msgid "Post hidden"
msgstr ""
@@ -2841,14 +2971,22 @@ msgstr ""
msgid "Post Languages"
msgstr ""
-#: src/view/com/post-thread/PostThread.tsx:450
+#: src/view/com/post-thread/PostThread.tsx:514
msgid "Post not found"
msgstr ""
+#: src/components/TagMenu/index.tsx:257
+msgid "posts"
+msgstr ""
+
#: src/view/screens/Profile.tsx:180
msgid "Posts"
msgstr ""
+#: src/components/dialogs/MutedWords.tsx:77
+msgid "Posts can be muted based on their text, their tags, or both."
+msgstr ""
+
#: src/view/com/posts/FeedErrorMessage.tsx:64
msgid "Posts hidden"
msgstr ""
@@ -2870,7 +3008,7 @@ msgid "Prioritize Your Follows"
msgstr ""
#: src/view/screens/Settings/index.tsx:632
-#: src/view/shell/desktop/RightNav.tsx:80
+#: src/view/shell/desktop/RightNav.tsx:72
msgid "Privacy"
msgstr ""
@@ -2913,11 +3051,11 @@ msgstr ""
msgid "Public, shareable lists which can drive feeds."
msgstr ""
-#: src/view/com/composer/Composer.tsx:335
+#: src/view/com/composer/Composer.tsx:342
msgid "Publish post"
msgstr ""
-#: src/view/com/composer/Composer.tsx:335
+#: src/view/com/composer/Composer.tsx:342
msgid "Publish reply"
msgstr ""
@@ -2951,6 +3089,7 @@ msgstr ""
msgid "Recommended Users"
msgstr ""
+#: src/components/dialogs/MutedWords.tsx:249
#: src/view/com/modals/ListAddRemoveUsers.tsx:264
#: src/view/com/modals/SelfLabel.tsx:83
#: src/view/com/modals/UserAddRemoveLists.tsx:219
@@ -2959,7 +3098,7 @@ msgstr ""
msgid "Remove"
msgstr ""
-#: src/view/com/feeds/FeedSourceCard.tsx:106
+#: src/view/com/feeds/FeedSourceCard.tsx:108
msgid "Remove {0} from my feeds?"
msgstr ""
@@ -2972,11 +3111,11 @@ msgstr ""
msgid "Remove feed"
msgstr ""
-#: src/view/com/feeds/FeedSourceCard.tsx:105
-#: src/view/com/feeds/FeedSourceCard.tsx:167
-#: src/view/com/feeds/FeedSourceCard.tsx:172
-#: src/view/com/feeds/FeedSourceCard.tsx:243
-#: src/view/screens/ProfileFeed.tsx:272
+#: src/view/com/feeds/FeedSourceCard.tsx:107
+#: src/view/com/feeds/FeedSourceCard.tsx:169
+#: src/view/com/feeds/FeedSourceCard.tsx:174
+#: src/view/com/feeds/FeedSourceCard.tsx:245
+#: src/view/screens/ProfileFeed.tsx:273
msgid "Remove from my feeds"
msgstr ""
@@ -2988,11 +3127,15 @@ msgstr ""
msgid "Remove image preview"
msgstr ""
+#: src/components/dialogs/MutedWords.tsx:294
+msgid "Remove mute word from your list"
+msgstr ""
+
#: src/view/com/modals/Repost.tsx:47
msgid "Remove repost"
msgstr ""
-#: src/view/com/feeds/FeedSourceCard.tsx:173
+#: src/view/com/feeds/FeedSourceCard.tsx:175
msgid "Remove this feed from my feeds?"
msgstr ""
@@ -3005,8 +3148,8 @@ msgstr ""
msgid "Removed from list"
msgstr ""
-#: src/view/com/feeds/FeedSourceCard.tsx:111
-#: src/view/com/feeds/FeedSourceCard.tsx:178
+#: src/view/com/feeds/FeedSourceCard.tsx:113
+#: src/view/com/feeds/FeedSourceCard.tsx:180
msgid "Removed from my feeds"
msgstr ""
@@ -3022,16 +3165,16 @@ msgstr ""
msgid "Replies to this thread are disabled"
msgstr ""
-#: src/view/com/composer/Composer.tsx:348
+#: src/view/com/composer/Composer.tsx:355
msgctxt "action"
msgid "Reply"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:144
+#: src/view/screens/PreferencesFollowingFeed.tsx:144
msgid "Reply Filters"
msgstr ""
-#: src/view/com/post/Post.tsx:166
+#: src/view/com/post/Post.tsx:167
#: src/view/com/posts/FeedItem.tsx:287
msgctxt "description"
msgid "Reply to <0/>"
@@ -3041,20 +3184,20 @@ msgstr ""
msgid "Report {collectionName}"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:360
+#: src/view/com/profile/ProfileHeader.tsx:361
msgid "Report Account"
msgstr ""
-#: src/view/screens/ProfileFeed.tsx:292
+#: src/view/screens/ProfileFeed.tsx:293
msgid "Report feed"
msgstr ""
-#: src/view/screens/ProfileList.tsx:458
+#: src/view/screens/ProfileList.tsx:459
msgid "Report List"
msgstr ""
#: src/view/com/modals/report/SendReportButton.tsx:37
-#: src/view/com/util/forms/PostDropdownBtn.tsx:210
+#: src/view/com/util/forms/PostDropdownBtn.tsx:255
msgid "Report post"
msgstr ""
@@ -3091,7 +3234,7 @@ msgstr ""
msgid "reposted your post"
msgstr ""
-#: src/view/com/post-thread/PostThreadItem.tsx:187
+#: src/view/com/post-thread/PostThreadItem.tsx:188
msgid "Reposts of this post"
msgstr ""
@@ -3101,8 +3244,8 @@ msgid "Request Change"
msgstr ""
#: src/view/com/auth/create/Step2.tsx:219
-msgid "Request code"
-msgstr ""
+#~ msgid "Request code"
+#~ msgstr ""
#: src/view/com/modals/ChangePassword.tsx:239
#: src/view/com/modals/ChangePassword.tsx:241
@@ -3113,7 +3256,7 @@ msgstr ""
msgid "Require alt text before posting"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:149
+#: src/view/com/auth/create/Step1.tsx:153
msgid "Required for this provider"
msgstr ""
@@ -3165,9 +3308,8 @@ msgstr ""
#: src/screens/Onboarding/StepInterests/index.tsx:221
#: src/screens/Onboarding/StepInterests/index.tsx:224
-#: src/view/com/auth/create/CreateAccount.tsx:170
-#: src/view/com/auth/create/CreateAccount.tsx:175
-#: src/view/com/auth/create/Step2.tsx:255
+#: src/view/com/auth/create/CreateAccount.tsx:181
+#: src/view/com/auth/create/CreateAccount.tsx:186
#: src/view/com/auth/login/LoginForm.tsx:268
#: src/view/com/auth/login/LoginForm.tsx:271
#: src/view/com/util/error/ErrorMessage.tsx:55
@@ -3176,16 +3318,16 @@ msgid "Retry"
msgstr ""
#: src/view/com/auth/create/Step2.tsx:247
-msgid "Retry."
-msgstr ""
+#~ msgid "Retry."
+#~ msgstr ""
#: src/view/screens/ProfileList.tsx:898
msgid "Return to previous page"
msgstr ""
#: src/view/shell/desktop/RightNav.tsx:55
-msgid "SANDBOX. Posts and accounts are not permanent."
-msgstr ""
+#~ msgid "SANDBOX. Posts and accounts are not permanent."
+#~ msgstr ""
#: src/view/com/lightbox/Lightbox.tsx:132
#: src/view/com/modals/CreateOrEditList.tsx:345
@@ -3198,7 +3340,7 @@ msgstr ""
#: src/view/com/modals/ChangeHandle.tsx:173
#: src/view/com/modals/CreateOrEditList.tsx:337
#: src/view/com/modals/EditProfile.tsx:224
-#: src/view/screens/ProfileFeed.tsx:345
+#: src/view/screens/ProfileFeed.tsx:346
msgid "Save"
msgstr ""
@@ -3238,14 +3380,14 @@ msgstr ""
msgid "Scroll to top"
msgstr ""
-#: src/Navigation.tsx:437
+#: src/Navigation.tsx:440
#: src/view/com/auth/LoggedOut.tsx:122
#: src/view/com/modals/ListAddRemoveUsers.tsx:75
#: src/view/com/util/forms/SearchInput.tsx:67
#: src/view/com/util/forms/SearchInput.tsx:79
-#: src/view/screens/Search/Search.tsx:418
-#: src/view/screens/Search/Search.tsx:645
-#: src/view/screens/Search/Search.tsx:663
+#: src/view/screens/Search/Search.tsx:419
+#: src/view/screens/Search/Search.tsx:668
+#: src/view/screens/Search/Search.tsx:686
#: src/view/shell/bottom-bar/BottomBar.tsx:159
#: src/view/shell/desktop/LeftNav.tsx:324
#: src/view/shell/desktop/Search.tsx:214
@@ -3255,11 +3397,19 @@ msgstr ""
msgid "Search"
msgstr ""
-#: src/view/screens/Search/Search.tsx:712
+#: src/view/screens/Search/Search.tsx:735
#: src/view/shell/desktop/Search.tsx:255
msgid "Search for \"{query}\""
msgstr ""
+#: src/components/TagMenu/index.tsx:145
+msgid "Search for all posts by @{authorHandle} with tag {tag}"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:90
+msgid "Search for all posts with tag {tag}"
+msgstr ""
+
#: src/view/com/auth/LoggedOut.tsx:104
#: src/view/com/auth/LoggedOut.tsx:105
#: src/view/com/modals/ListAddRemoveUsers.tsx:70
@@ -3270,6 +3420,22 @@ msgstr ""
msgid "Security Step Required"
msgstr ""
+#: src/components/TagMenu/index.web.tsx:50
+msgid "See {truncatedTag} posts"
+msgstr ""
+
+#: src/components/TagMenu/index.web.tsx:67
+msgid "See {truncatedTag} posts by user"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:128
+msgid "See <0>{tag}0> posts"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:189
+msgid "See <0>{tag}0> posts by this user"
+msgstr ""
+
#: src/view/screens/SavedFeeds.tsx:163
msgid "See this guide"
msgstr ""
@@ -3294,7 +3460,7 @@ msgstr ""
msgid "Select option {i} of {numItems}"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:99
+#: src/view/com/auth/create/Step1.tsx:103
#: src/view/com/auth/login/LoginForm.tsx:150
msgid "Select service"
msgstr ""
@@ -3311,7 +3477,7 @@ msgstr ""
#~ msgid "Select the types of content that you want to see (or not see), and we'll handle the rest."
#~ msgstr ""
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:90
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:96
msgid "Select topical feeds to follow from the list below"
msgstr ""
@@ -3332,8 +3498,8 @@ msgid "Select your interests from the options below"
msgstr ""
#: src/view/com/auth/create/Step2.tsx:155
-msgid "Select your phone's country"
-msgstr ""
+#~ msgid "Select your phone's country"
+#~ msgstr ""
#: src/view/screens/LanguageSettings.tsx:190
msgid "Select your preferred language for translations in your feed."
@@ -3412,19 +3578,19 @@ msgstr ""
msgid "Set new password"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:221
+#: src/view/com/auth/create/Step1.tsx:225
msgid "Set password"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:225
+#: src/view/screens/PreferencesFollowingFeed.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
+#: src/view/screens/PreferencesFollowingFeed.tsx:122
msgid "Set this setting to \"No\" to hide all replies from your feed."
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:191
+#: src/view/screens/PreferencesFollowingFeed.tsx:191
msgid "Set this setting to \"No\" to hide all reposts from your feed."
msgstr ""
@@ -3433,7 +3599,11 @@ msgid "Set this setting to \"Yes\" to show replies in a threaded view. This is a
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."
+#~ 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/PreferencesFollowingFeed.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/screens/Onboarding/Layout.tsx:50
@@ -3452,7 +3622,7 @@ msgstr ""
msgid "Sets hosting provider for password reset"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:100
+#: src/view/com/auth/create/Step1.tsx:104
#: src/view/com/auth/login/LoginForm.tsx:151
msgid "Sets server for the Bluesky client"
msgstr ""
@@ -3474,13 +3644,13 @@ msgctxt "action"
msgid "Share"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:294
-#: src/view/com/util/forms/PostDropdownBtn.tsx:153
-#: src/view/screens/ProfileList.tsx:417
+#: src/view/com/profile/ProfileHeader.tsx:295
+#: src/view/com/util/forms/PostDropdownBtn.tsx:184
+#: src/view/screens/ProfileList.tsx:418
msgid "Share"
msgstr ""
-#: src/view/screens/ProfileFeed.tsx:304
+#: src/view/screens/ProfileFeed.tsx:305
msgid "Share feed"
msgstr ""
@@ -3492,7 +3662,7 @@ msgstr ""
msgid "Show"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:68
+#: src/view/screens/PreferencesFollowingFeed.tsx:68
msgid "Show all replies"
msgstr ""
@@ -3504,21 +3674,21 @@ msgstr ""
msgid "Show embeds from {0}"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:458
+#: src/view/com/profile/ProfileHeader.tsx:459
msgid "Show follows similar to {0}"
msgstr ""
-#: src/view/com/post-thread/PostThreadItem.tsx:539
-#: src/view/com/post/Post.tsx:197
+#: src/view/com/post-thread/PostThreadItem.tsx:538
+#: src/view/com/post/Post.tsx:198
#: src/view/com/posts/FeedItem.tsx:363
msgid "Show More"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:258
+#: src/view/screens/PreferencesFollowingFeed.tsx:258
msgid "Show Posts from My Feeds"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:222
+#: src/view/screens/PreferencesFollowingFeed.tsx:222
msgid "Show Quote Posts"
msgstr ""
@@ -3534,7 +3704,7 @@ msgstr ""
msgid "Show re-posts in Following feed"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:119
+#: src/view/screens/PreferencesFollowingFeed.tsx:119
msgid "Show Replies"
msgstr ""
@@ -3550,11 +3720,11 @@ msgstr ""
msgid "Show replies in Following feed"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:70
+#: src/view/screens/PreferencesFollowingFeed.tsx:70
msgid "Show replies with at least {value} {0}"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:188
+#: src/view/screens/PreferencesFollowingFeed.tsx:188
msgid "Show Reposts"
msgstr ""
@@ -3571,18 +3741,18 @@ msgstr ""
msgid "Show users"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:461
+#: src/view/com/profile/ProfileHeader.tsx:462
msgid "Shows a list of users similar to this user."
msgstr ""
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:124
-#: src/view/com/profile/ProfileHeader.tsx:505
+#: src/view/com/profile/ProfileHeader.tsx:506
msgid "Shows posts from {0} in your feed"
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/com/auth/SplashScreen.tsx:79
#: src/view/shell/bottom-bar/BottomBar.tsx:285
#: src/view/shell/bottom-bar/BottomBar.tsx:286
#: src/view/shell/bottom-bar/BottomBar.tsx:288
@@ -3595,8 +3765,8 @@ 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
+#: src/view/com/auth/SplashScreen.tsx:82
+#: src/view/com/auth/SplashScreen.web.tsx:91
msgid "Sign In"
msgstr ""
@@ -3663,8 +3833,8 @@ msgid "Skip this flow"
msgstr ""
#: src/view/com/auth/create/Step2.tsx:82
-msgid "SMS verification"
-msgstr ""
+#~ msgid "SMS verification"
+#~ msgstr ""
#: src/screens/Onboarding/index.tsx:40
msgid "Software Dev"
@@ -3678,7 +3848,7 @@ msgstr ""
msgid "Something went wrong. Check your email and try again."
msgstr ""
-#: src/App.native.tsx:61
+#: src/App.native.tsx:63
msgid "Sorry! Your session expired. Please log in again."
msgstr ""
@@ -3723,7 +3893,7 @@ msgstr ""
msgid "Submit"
msgstr "Submit"
-#: src/view/screens/ProfileList.tsx:607
+#: src/view/screens/ProfileList.tsx:608
msgid "Subscribe"
msgstr ""
@@ -3732,11 +3902,11 @@ msgstr ""
msgid "Subscribe to the {0} feed"
msgstr ""
-#: src/view/screens/ProfileList.tsx:603
+#: src/view/screens/ProfileList.tsx:604
msgid "Subscribe to this list"
msgstr ""
-#: src/view/screens/Search/Search.tsx:373
+#: src/view/screens/Search/Search.tsx:374
msgid "Suggested Follows"
msgstr ""
@@ -3780,6 +3950,14 @@ msgstr ""
msgid "System log"
msgstr ""
+#: src/components/dialogs/MutedWords.tsx:288
+msgid "tag"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:74
+msgid "Tag menu: {tag}"
+msgstr ""
+
#: src/view/com/modals/crop-image/CropImage.web.tsx:112
msgid "Tall"
msgstr ""
@@ -3792,7 +3970,7 @@ msgstr ""
msgid "Tech"
msgstr ""
-#: src/view/shell/desktop/RightNav.tsx:89
+#: src/view/shell/desktop/RightNav.tsx:81
msgid "Terms"
msgstr ""
@@ -3803,12 +3981,20 @@ msgstr ""
msgid "Terms of Service"
msgstr ""
+#: src/components/dialogs/MutedWords.tsx:288
+msgid "text"
+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:262
+#: src/view/com/auth/create/CreateAccount.tsx:94
+msgid "That handle is already taken."
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:263
msgid "The account will be able to interact with you after unblocking."
msgstr ""
@@ -3824,7 +4010,7 @@ msgstr ""
msgid "The following steps will help customize your Bluesky experience."
msgstr ""
-#: src/view/com/post-thread/PostThread.tsx:453
+#: src/view/com/post-thread/PostThread.tsx:517
msgid "The post may have been deleted."
msgstr ""
@@ -3844,7 +4030,7 @@ msgstr ""
msgid "There are many feeds to try:"
msgstr ""
-#: src/view/screens/ProfileFeed.tsx:549
+#: src/view/screens/ProfileFeed.tsx:550
msgid "There was an an issue contacting the server, please check your internet connection and try again."
msgstr ""
@@ -3852,12 +4038,12 @@ msgstr ""
msgid "There was an an issue removing this feed. Please check your internet connection and try again."
msgstr ""
-#: src/view/screens/ProfileFeed.tsx:209
+#: src/view/screens/ProfileFeed.tsx:210
msgid "There was an an issue updating your feeds, please check your internet connection and try again."
msgstr ""
-#: src/view/screens/ProfileFeed.tsx:236
-#: src/view/screens/ProfileList.tsx:266
+#: src/view/screens/ProfileFeed.tsx:237
+#: src/view/screens/ProfileList.tsx:267
#: src/view/screens/SavedFeeds.tsx:209
#: src/view/screens/SavedFeeds.tsx:231
#: src/view/screens/SavedFeeds.tsx:252
@@ -3866,9 +4052,9 @@ msgstr ""
#: src/view/com/auth/onboarding/RecommendedFeedsItem.tsx:57
#: src/view/com/auth/onboarding/RecommendedFeedsItem.tsx:66
-#: src/view/com/feeds/FeedSourceCard.tsx:113
-#: src/view/com/feeds/FeedSourceCard.tsx:127
-#: src/view/com/feeds/FeedSourceCard.tsx:181
+#: src/view/com/feeds/FeedSourceCard.tsx:115
+#: src/view/com/feeds/FeedSourceCard.tsx:129
+#: src/view/com/feeds/FeedSourceCard.tsx:183
msgid "There was an issue contacting your server"
msgstr ""
@@ -3900,19 +4086,19 @@ msgstr ""
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:93
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:105
-#: src/view/com/profile/ProfileHeader.tsx:156
-#: src/view/com/profile/ProfileHeader.tsx:177
-#: src/view/com/profile/ProfileHeader.tsx:216
-#: src/view/com/profile/ProfileHeader.tsx:229
-#: src/view/com/profile/ProfileHeader.tsx:249
-#: src/view/com/profile/ProfileHeader.tsx:271
+#: src/view/com/profile/ProfileHeader.tsx:157
+#: src/view/com/profile/ProfileHeader.tsx:178
+#: src/view/com/profile/ProfileHeader.tsx:217
+#: src/view/com/profile/ProfileHeader.tsx:230
+#: src/view/com/profile/ProfileHeader.tsx:250
+#: src/view/com/profile/ProfileHeader.tsx:272
msgid "There was an issue! {0}"
msgstr ""
-#: src/view/screens/ProfileList.tsx:287
-#: src/view/screens/ProfileList.tsx:306
-#: src/view/screens/ProfileList.tsx:328
-#: src/view/screens/ProfileList.tsx:347
+#: src/view/screens/ProfileList.tsx:288
+#: src/view/screens/ProfileList.tsx:307
+#: src/view/screens/ProfileList.tsx:329
+#: src/view/screens/ProfileList.tsx:348
msgid "There was an issue. Please check your internet connection and try again."
msgstr ""
@@ -3925,8 +4111,8 @@ msgid "There's been a rush of new users to Bluesky! We'll activate your account
msgstr ""
#: src/view/com/auth/create/Step2.tsx:55
-msgid "There's something wrong with this number. Please choose your country and enter your full phone number!"
-msgstr ""
+#~ msgid "There's something wrong with this number. Please choose your country and enter your full phone number!"
+#~ msgstr ""
#: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:138
msgid "These are popular accounts you might like:"
@@ -3961,8 +4147,8 @@ msgid "This feed is currently receiving high traffic and is temporarily unavaila
msgstr ""
#: src/view/screens/Profile.tsx:420
-#: src/view/screens/ProfileFeed.tsx:475
-#: src/view/screens/ProfileList.tsx:660
+#: src/view/screens/ProfileFeed.tsx:476
+#: src/view/screens/ProfileList.tsx:661
msgid "This feed is empty!"
msgstr ""
@@ -3990,7 +4176,7 @@ msgstr ""
msgid "This name is already in use"
msgstr ""
-#: src/view/com/post-thread/PostThreadItem.tsx:122
+#: src/view/com/post-thread/PostThreadItem.tsx:125
msgid "This post has been deleted."
msgstr ""
@@ -4014,7 +4200,11 @@ msgstr ""
msgid "This warning is only available for posts with media attached."
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:192
+#: src/components/dialogs/MutedWords.tsx:236
+msgid "This will delete {0} from your muted words. You can always add it back later."
+msgstr ""
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:237
msgid "This will hide this post from your feeds."
msgstr ""
@@ -4027,10 +4217,14 @@ msgstr ""
msgid "Threaded Mode"
msgstr ""
-#: src/Navigation.tsx:252
+#: src/Navigation.tsx:255
msgid "Threads Preferences"
msgstr ""
+#: src/components/dialogs/MutedWords.tsx:95
+msgid "Toggle between muted word options."
+msgstr ""
+
#: src/view/com/util/forms/DropdownButton.tsx:246
msgid "Toggle dropdown"
msgstr ""
@@ -4039,9 +4233,9 @@ msgstr ""
msgid "Transformations"
msgstr ""
-#: src/view/com/post-thread/PostThreadItem.tsx:686
-#: src/view/com/post-thread/PostThreadItem.tsx:688
-#: src/view/com/util/forms/PostDropdownBtn.tsx:125
+#: src/view/com/post-thread/PostThreadItem.tsx:685
+#: src/view/com/post-thread/PostThreadItem.tsx:687
+#: src/view/com/util/forms/PostDropdownBtn.tsx:156
msgid "Translate"
msgstr ""
@@ -4050,15 +4244,15 @@ msgctxt "action"
msgid "Try again"
msgstr ""
-#: src/view/screens/ProfileList.tsx:505
+#: src/view/screens/ProfileList.tsx:506
msgid "Un-block list"
msgstr ""
-#: src/view/screens/ProfileList.tsx:490
+#: src/view/screens/ProfileList.tsx:491
msgid "Un-mute list"
msgstr ""
-#: src/view/com/auth/create/CreateAccount.tsx:66
+#: src/view/com/auth/create/CreateAccount.tsx:58
#: src/view/com/auth/login/ForgotPasswordForm.tsx:87
#: src/view/com/auth/login/Login.tsx:76
#: src/view/com/auth/login/LoginForm.tsx:118
@@ -4066,18 +4260,18 @@ msgstr ""
msgid "Unable to contact your service. Please check your Internet connection."
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:432
-#: src/view/screens/ProfileList.tsx:589
+#: src/view/com/profile/ProfileHeader.tsx:433
+#: src/view/screens/ProfileList.tsx:590
msgid "Unblock"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:435
+#: src/view/com/profile/ProfileHeader.tsx:436
msgctxt "action"
msgid "Unblock"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:260
-#: src/view/com/profile/ProfileHeader.tsx:344
+#: src/view/com/profile/ProfileHeader.tsx:261
+#: src/view/com/profile/ProfileHeader.tsx:345
msgid "Unblock Account"
msgstr ""
@@ -4093,11 +4287,11 @@ msgctxt "action"
msgid "Unfollow"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:484
+#: src/view/com/profile/ProfileHeader.tsx:485
msgid "Unfollow {0}"
msgstr ""
-#: src/view/com/auth/create/state.ts:300
+#: src/view/com/auth/create/state.ts:262
msgid "Unfortunately, you do not meet the requirements to create an account."
msgstr ""
@@ -4106,28 +4300,37 @@ msgstr ""
msgid "Unlike"
msgstr ""
-#: src/view/screens/ProfileList.tsx:596
+#: src/components/TagMenu/index.tsx:253
+#: src/view/screens/ProfileList.tsx:597
msgid "Unmute"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:325
+#: src/components/TagMenu/index.web.tsx:90
+msgid "Unmute {truncatedTag}"
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:326
msgid "Unmute Account"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:171
+#: src/components/TagMenu/index.tsx:210
+msgid "Unmute all {tag} posts"
+msgstr ""
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:202
msgid "Unmute thread"
msgstr ""
-#: src/view/screens/ProfileFeed.tsx:353
-#: src/view/screens/ProfileList.tsx:580
+#: src/view/screens/ProfileFeed.tsx:354
+#: src/view/screens/ProfileList.tsx:581
msgid "Unpin"
msgstr ""
-#: src/view/screens/ProfileList.tsx:473
+#: src/view/screens/ProfileList.tsx:474
msgid "Unpin moderation list"
msgstr ""
-#: src/view/screens/ProfileFeed.tsx:345
+#: src/view/screens/ProfileFeed.tsx:346
msgid "Unsave"
msgstr ""
@@ -4189,11 +4392,11 @@ msgstr ""
msgid "User Blocks You"
msgstr ""
-#: src/view/com/auth/create/Step3.tsx:41
+#: src/view/com/auth/create/Step2.tsx:79
msgid "User handle"
msgstr ""
-#: src/view/com/lists/ListCard.tsx:84
+#: src/view/com/lists/ListCard.tsx:85
#: src/view/com/modals/UserAddRemoveLists.tsx:198
msgid "User list by {0}"
msgstr ""
@@ -4202,7 +4405,7 @@ msgstr ""
msgid "User list by <0/>"
msgstr ""
-#: src/view/com/lists/ListCard.tsx:82
+#: src/view/com/lists/ListCard.tsx:83
#: src/view/com/modals/UserAddRemoveLists.tsx:196
#: src/view/screens/ProfileList.tsx:760
msgid "User list by you"
@@ -4238,8 +4441,8 @@ msgid "Users in \"{0}\""
msgstr ""
#: src/view/com/auth/create/Step2.tsx:243
-msgid "Verification code"
-msgstr ""
+#~ msgid "Verification code"
+#~ msgstr ""
#: src/view/screens/Settings/index.tsx:910
msgid "Verify email"
@@ -4266,7 +4469,7 @@ msgstr ""
msgid "Video Games"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:661
+#: src/view/com/profile/ProfileHeader.tsx:662
msgid "View {0}'s avatar"
msgstr ""
@@ -4315,6 +4518,10 @@ msgstr ""
#~ msgid "We recommend \"For You\" by Skygaze:"
#~ msgstr ""
+#: src/components/dialogs/MutedWords.tsx:161
+msgid "We recommend avoiding common words that appear in many posts, since it can result in no posts being shown."
+msgstr ""
+
#: src/screens/Onboarding/StepAlgoFeeds/index.tsx:124
msgid "We recommend our \"Discover\" feed:"
msgstr ""
@@ -4335,15 +4542,19 @@ msgstr ""
msgid "We'll use this to help customize your experience."
msgstr ""
-#: src/view/com/auth/create/CreateAccount.tsx:123
+#: src/view/com/auth/create/CreateAccount.tsx:134
msgid "We're so excited to have you join us!"
msgstr ""
-#: src/view/screens/ProfileList.tsx:85
+#: src/view/screens/ProfileList.tsx:86
msgid "We're sorry, but we were unable to resolve this list. If this persists, please contact the list creator, @{handleOrDid}."
msgstr ""
-#: src/view/screens/Search/Search.tsx:253
+#: src/components/dialogs/MutedWords.tsx:182
+msgid "We're sorry, but we weren't able to load your muted words at this time. Please try again."
+msgstr ""
+
+#: src/view/screens/Search/Search.tsx:254
msgid "We're sorry, but your search could not be completed. Please try again in a few minutes."
msgstr ""
@@ -4363,8 +4574,8 @@ msgstr ""
msgid "What is the issue with this {collectionName}?"
msgstr ""
-#: src/view/com/auth/SplashScreen.tsx:34
-#: src/view/com/composer/Composer.tsx:279
+#: src/view/com/auth/SplashScreen.tsx:59
+#: src/view/com/composer/Composer.tsx:286
msgid "What's up?"
msgstr ""
@@ -4385,11 +4596,11 @@ msgstr ""
msgid "Wide"
msgstr ""
-#: src/view/com/composer/Composer.tsx:415
+#: src/view/com/composer/Composer.tsx:422
msgid "Write post"
msgstr ""
-#: src/view/com/composer/Composer.tsx:278
+#: src/view/com/composer/Composer.tsx:285
#: src/view/com/composer/Prompt.tsx:33
msgid "Write your reply"
msgstr ""
@@ -4399,14 +4610,14 @@ msgid "Writers"
msgstr ""
#: src/view/com/auth/create/Step2.tsx:263
-msgid "XXXXXX"
-msgstr ""
+#~ msgid "XXXXXX"
+#~ msgstr ""
#: src/view/com/composer/select-language/SuggestedLanguage.tsx:77
-#: 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/PreferencesFollowingFeed.tsx:129
+#: src/view/screens/PreferencesFollowingFeed.tsx:201
+#: src/view/screens/PreferencesFollowingFeed.tsx:236
+#: src/view/screens/PreferencesFollowingFeed.tsx:271
#: src/view/screens/PreferencesThreads.tsx:106
#: src/view/screens/PreferencesThreads.tsx:129
msgid "Yes"
@@ -4446,7 +4657,7 @@ msgstr ""
msgid "You don't have any pinned feeds."
msgstr ""
-#: src/view/screens/Feeds.tsx:451
+#: src/view/screens/Feeds.tsx:452
msgid "You don't have any saved feeds!"
msgstr ""
@@ -4454,7 +4665,7 @@ msgstr ""
msgid "You don't have any saved feeds."
msgstr ""
-#: src/view/com/post-thread/PostThread.tsx:401
+#: src/view/com/post-thread/PostThread.tsx:465
msgid "You have blocked the author or you have been blocked by the author."
msgstr ""
@@ -4494,6 +4705,10 @@ msgstr ""
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/components/dialogs/MutedWords.tsx:202
+msgid "You haven't muted any words or tags yet"
+msgstr ""
+
#: src/view/com/modals/ContentFilteringSettings.tsx:175
msgid "You must be 18 or older to enable adult content."
msgstr ""
@@ -4502,11 +4717,11 @@ msgstr ""
msgid "You must be 18 years or older to enable adult content"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:98
+#: src/view/com/util/forms/PostDropdownBtn.tsx:129
msgid "You will no longer receive notifications for this thread"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:101
+#: src/view/com/util/forms/PostDropdownBtn.tsx:132
msgid "You will now receive notifications for this thread"
msgstr ""
@@ -4544,7 +4759,7 @@ msgstr ""
msgid "Your account repository, containing all public data records, can be downloaded as a \"CAR\" file. This file does not include media embeds, such as images, or your private data, which must be fetched separately."
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:234
+#: src/view/com/auth/create/Step1.tsx:238
msgid "Your birth date"
msgstr ""
@@ -4556,7 +4771,7 @@ msgstr ""
msgid "Your default feed is \"Following\""
msgstr ""
-#: src/view/com/auth/create/state.ts:153
+#: src/view/com/auth/create/state.ts:110
#: src/view/com/auth/login/ForgotPasswordForm.tsx:70
#: src/view/com/modals/ChangePassword.tsx:54
msgid "Your email appears to be invalid."
@@ -4578,7 +4793,7 @@ msgstr ""
msgid "Your following feed is empty! Follow more users to see what's happening."
msgstr ""
-#: src/view/com/auth/create/Step3.tsx:45
+#: src/view/com/auth/create/Step2.tsx:83
msgid "Your full handle will be"
msgstr ""
@@ -4592,11 +4807,15 @@ msgstr ""
#~ msgid "Your invite codes are hidden when logged in using an App Password"
#~ msgstr ""
+#: src/components/dialogs/MutedWords.tsx:173
+msgid "Your muted words"
+msgstr ""
+
#: src/view/com/modals/ChangePassword.tsx:155
msgid "Your password has been changed successfully!"
msgstr ""
-#: src/view/com/composer/Composer.tsx:267
+#: src/view/com/composer/Composer.tsx:274
msgid "Your post has been published"
msgstr ""
@@ -4611,10 +4830,10 @@ msgstr ""
msgid "Your profile"
msgstr ""
-#: src/view/com/composer/Composer.tsx:266
+#: src/view/com/composer/Composer.tsx:273
msgid "Your reply has been published"
msgstr ""
-#: src/view/com/auth/create/Step3.tsx:28
+#: src/view/com/auth/create/Step2.tsx:65
msgid "Your user handle"
msgstr ""
diff --git a/src/locale/locales/es/messages.po b/src/locale/locales/es/messages.po
index e77af75a2c..fed1beb6cb 100644
--- a/src/locale/locales/es/messages.po
+++ b/src/locale/locales/es/messages.po
@@ -21,7 +21,7 @@ msgstr ""
#~ msgid "{0, plural, one {# invite code available} other {# invite codes available}}"
#~ msgstr "{0, plural, one {# invite code available} other {# invite codes available}}"
-#: src/view/com/profile/ProfileHeader.tsx:592
+#: src/view/com/profile/ProfileHeader.tsx:593
msgid "{following} following"
msgstr ""
@@ -47,7 +47,7 @@ msgstr ""
msgid "<0/> members"
msgstr "<0/> miembros"
-#: src/view/com/profile/ProfileHeader.tsx:594
+#: src/view/com/profile/ProfileHeader.tsx:595
msgid "<0>{following} 0><1>following1>"
msgstr ""
@@ -63,7 +63,7 @@ msgstr "<0>Sigue a algunos0><1>usuarios1><2>recomendados2>"
msgid "<0>Welcome to0><1>Bluesky1>"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:557
+#: src/view/com/profile/ProfileHeader.tsx:558
msgid "ā Invalid Handle"
msgstr ""
@@ -76,11 +76,11 @@ msgid "A new version of the app is available. Please update to continue using th
msgstr "Ya estĆ” disponible una nueva versión de la aplicación. ActualĆzala para seguir utilizĆ”ndola."
#: src/view/com/util/ViewHeader.tsx:83
-#: src/view/screens/Search/Search.tsx:624
+#: src/view/screens/Search/Search.tsx:647
msgid "Access navigation links and settings"
msgstr ""
-#: src/view/com/pager/FeedsTabBarMobile.tsx:89
+#: src/view/com/home/HomeHeaderLayoutMobile.tsx:51
msgid "Access profile and other navigation links"
msgstr ""
@@ -95,11 +95,11 @@ msgstr "Accesibilidad"
msgid "Account"
msgstr "Cuenta"
-#: src/view/com/profile/ProfileHeader.tsx:245
+#: src/view/com/profile/ProfileHeader.tsx:246
msgid "Account blocked"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:212
+#: src/view/com/profile/ProfileHeader.tsx:213
msgid "Account muted"
msgstr ""
@@ -119,14 +119,15 @@ msgstr "Opciones de la cuenta"
msgid "Account removed from quick access"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:267
+#: src/view/com/profile/ProfileHeader.tsx:268
msgid "Account unblocked"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:225
+#: src/view/com/profile/ProfileHeader.tsx:226
msgid "Account unmuted"
msgstr ""
+#: src/components/dialogs/MutedWords.tsx:147
#: src/view/com/auth/onboarding/RecommendedFeedsItem.tsx:150
#: src/view/com/modals/ListAddRemoveUsers.tsx:264
#: src/view/com/modals/UserAddRemoveLists.tsx:219
@@ -168,24 +169,32 @@ msgstr "Agregar detalles"
msgid "Add details to report"
msgstr "Agregar detalles al informe"
-#: src/view/com/composer/Composer.tsx:446
+#: src/view/com/composer/Composer.tsx:453
msgid "Add link card"
msgstr "Agregar una tarjeta de enlace"
-#: src/view/com/composer/Composer.tsx:451
+#: src/view/com/composer/Composer.tsx:458
msgid "Add link card:"
msgstr "Agregar una tarjeta de enlace:"
+#: src/components/dialogs/MutedWords.tsx:140
+msgid "Add mute word for configured settings"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:74
+msgid "Add muted words and tags"
+msgstr ""
+
#: src/view/com/modals/ChangeHandle.tsx:417
msgid "Add the following DNS record to your domain:"
msgstr "AƱade el siguiente registro DNS a tu dominio:"
-#: src/view/com/profile/ProfileHeader.tsx:309
+#: src/view/com/profile/ProfileHeader.tsx:310
msgid "Add to Lists"
msgstr "Agregar a listas"
-#: src/view/com/feeds/FeedSourceCard.tsx:243
-#: src/view/screens/ProfileFeed.tsx:272
+#: src/view/com/feeds/FeedSourceCard.tsx:245
+#: src/view/screens/ProfileFeed.tsx:273
msgid "Add to my feeds"
msgstr "Agregar a mis noticias"
@@ -198,11 +207,11 @@ msgstr ""
msgid "Added to list"
msgstr "Agregar a una lista"
-#: src/view/com/feeds/FeedSourceCard.tsx:125
+#: src/view/com/feeds/FeedSourceCard.tsx:127
msgid "Added to my feeds"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:173
+#: src/view/screens/PreferencesFollowingFeed.tsx:173
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."
@@ -222,6 +231,10 @@ msgstr ""
msgid "Advanced"
msgstr "Avanzado"
+#: src/view/screens/Feeds.tsx:666
+msgid "All the feeds you've saved, right in one place."
+msgstr ""
+
#: src/view/com/auth/login/ForgotPasswordForm.tsx:221
#: src/view/com/modals/ChangePassword.tsx:168
msgid "Already have a code?"
@@ -295,7 +308,7 @@ msgstr ""
msgid "App Passwords"
msgstr "ContraseƱas de la app"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:250
+#: src/view/com/util/forms/PostDropdownBtn.tsx:295
msgid "Appeal content warning"
msgstr "Aviso sobre el contenido del recurso"
@@ -319,15 +332,16 @@ 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:143
+#: src/view/com/composer/Composer.tsx:150
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:364
+#: src/components/dialogs/MutedWords.tsx:233
+#: src/view/screens/ProfileList.tsx:365
msgid "Are you sure?"
msgstr "¿EstÔs seguro?"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:233
+#: src/view/com/util/forms/PostDropdownBtn.tsx:278
msgid "Are you sure? This cannot be undone."
msgstr "¿EstÔs seguro? Esto no puede deshacerse."
@@ -343,21 +357,21 @@ msgstr ""
msgid "Artistic or non-erotic nudity."
msgstr "Desnudez artĆstica o no erótica."
-#: src/view/com/auth/create/CreateAccount.tsx:147
+#: src/view/com/auth/create/CreateAccount.tsx:158
#: src/view/com/auth/login/ChooseAccountForm.tsx:151
#: src/view/com/auth/login/ForgotPasswordForm.tsx:174
#: src/view/com/auth/login/LoginForm.tsx:259
#: src/view/com/auth/login/SetNewPasswordForm.tsx:179
#: src/view/com/modals/report/InputIssueDetails.tsx:46
-#: src/view/com/post-thread/PostThread.tsx:408
-#: src/view/com/post-thread/PostThread.tsx:458
-#: src/view/com/post-thread/PostThread.tsx:466
-#: src/view/com/profile/ProfileHeader.tsx:648
+#: src/view/com/post-thread/PostThread.tsx:472
+#: src/view/com/post-thread/PostThread.tsx:522
+#: src/view/com/post-thread/PostThread.tsx:530
+#: src/view/com/profile/ProfileHeader.tsx:649
#: src/view/com/util/ViewHeader.tsx:81
msgid "Back"
msgstr "Regresar"
-#: src/view/com/post-thread/PostThread.tsx:416
+#: src/view/com/post-thread/PostThread.tsx:480
msgctxt "action"
msgid "Back"
msgstr ""
@@ -370,7 +384,7 @@ msgstr ""
msgid "Basics"
msgstr "Conceptos bƔsicos"
-#: src/view/com/auth/create/Step1.tsx:246
+#: src/view/com/auth/create/Step1.tsx:250
#: src/view/com/modals/BirthDateSettings.tsx:73
msgid "Birthday"
msgstr "CumpleaƱos"
@@ -379,33 +393,33 @@ msgstr "CumpleaƱos"
msgid "Birthday:"
msgstr "CumpleaƱos:"
-#: src/view/com/profile/ProfileHeader.tsx:238
-#: src/view/com/profile/ProfileHeader.tsx:345
+#: src/view/com/profile/ProfileHeader.tsx:239
+#: src/view/com/profile/ProfileHeader.tsx:346
msgid "Block Account"
msgstr "Bloquear una cuenta"
-#: src/view/screens/ProfileList.tsx:555
+#: src/view/screens/ProfileList.tsx:556
msgid "Block accounts"
msgstr "Bloquear cuentas"
-#: src/view/screens/ProfileList.tsx:505
+#: src/view/screens/ProfileList.tsx:506
msgid "Block list"
msgstr "Bloquear una lista"
-#: src/view/screens/ProfileList.tsx:315
+#: src/view/screens/ProfileList.tsx:316
msgid "Block these accounts?"
msgstr "ĀæBloquear estas cuentas?"
-#: src/view/screens/ProfileList.tsx:319
+#: src/view/screens/ProfileList.tsx:320
msgid "Block this List"
msgstr ""
-#: src/view/com/lists/ListCard.tsx:109
-#: src/view/com/util/post-embeds/QuoteEmbed.tsx:60
+#: src/view/com/lists/ListCard.tsx:110
+#: src/view/com/util/post-embeds/QuoteEmbed.tsx:61
msgid "Blocked"
msgstr ""
-#: src/view/screens/Moderation.tsx:123
+#: src/view/screens/Moderation.tsx:142
msgid "Blocked accounts"
msgstr "Cuentas bloqueadas"
@@ -414,7 +428,7 @@ msgstr "Cuentas bloqueadas"
msgid "Blocked Accounts"
msgstr "Cuentas bloqueadas"
-#: src/view/com/profile/ProfileHeader.tsx:240
+#: src/view/com/profile/ProfileHeader.tsx:241
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."
@@ -422,15 +436,16 @@ msgstr "Las cuentas bloqueadas no pueden responder en tus hilos, mencionarte ni
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:267
+#: src/view/com/post-thread/PostThread.tsx:324
msgid "Blocked post."
msgstr "Publicación bloqueada."
-#: src/view/screens/ProfileList.tsx:317
+#: src/view/screens/ProfileList.tsx:318
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."
#: src/view/com/auth/HomeLoggedOutCTA.tsx:93
+#: src/view/com/auth/SplashScreen.web.tsx:133
msgid "Blog"
msgstr "Blog"
@@ -463,7 +478,7 @@ msgstr "Bluesky es pĆŗblico."
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 utiliza las invitaciones para construir una comunidad mÔs saludable. Si no conoces a nadie con una invitación, puedes apuntarte a la lista de espera y te enviaremos una en breve."
-#: src/view/screens/Moderation.tsx:226
+#: src/view/screens/Moderation.tsx:245
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 no mostrarÔ tu perfil ni tus publicaciones a los usuarios que hayan cerrado sesión. Es posible que otras aplicaciones no acepten esta solicitud. Esto no hace que tu cuenta sea privada."
@@ -480,6 +495,7 @@ msgid "Build version {0} {1}"
msgstr "Versión {0} {1}"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:87
+#: src/view/com/auth/SplashScreen.web.tsx:128
msgid "Business"
msgstr "Negocios"
@@ -514,8 +530,8 @@ msgid "Can only contain letters, numbers, spaces, dashes, and underscores. Must
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/components/Prompt.tsx:91
-#: src/view/com/composer/Composer.tsx:300
-#: src/view/com/composer/Composer.tsx:305
+#: src/view/com/composer/Composer.tsx:307
+#: src/view/com/composer/Composer.tsx:312
#: src/view/com/modals/ChangeEmail.tsx:218
#: src/view/com/modals/ChangeEmail.tsx:220
#: src/view/com/modals/ChangePassword.tsx:265
@@ -529,7 +545,7 @@ msgstr "Sólo puede contener letras, números, espacios, guiones y guiones bajos
#: src/view/com/modals/VerifyEmail.tsx:247
#: src/view/com/modals/VerifyEmail.tsx:253
#: src/view/com/modals/Waitlist.tsx:142
-#: src/view/screens/Search/Search.tsx:693
+#: src/view/screens/Search/Search.tsx:716
#: src/view/shell/desktop/Search.tsx:238
msgid "Cancel"
msgstr "Cancelar"
@@ -657,7 +673,7 @@ msgstr "Elige los algoritmos que potencian tu experiencia con publicaciones pers
msgid "Choose your main feeds"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:215
+#: src/view/com/auth/create/Step1.tsx:219
msgid "Choose your password"
msgstr "Elige tu contraseƱa"
@@ -680,7 +696,7 @@ 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:88
-#: src/view/screens/Search/Search.tsx:674
+#: src/view/screens/Search/Search.tsx:697
msgid "Clear search query"
msgstr "Borrar consulta de bĆŗsqueda"
@@ -688,6 +704,11 @@ msgstr "Borrar consulta de bĆŗsqueda"
msgid "click here"
msgstr ""
+#: src/components/RichText.tsx:189
+#: src/components/TagMenu/index.web.tsx:125
+msgid "Click here to open tag menu for {tag}"
+msgstr ""
+
#: src/screens/Onboarding/index.tsx:35
msgid "Climate"
msgstr ""
@@ -697,7 +718,8 @@ msgstr ""
msgid "Close"
msgstr ""
-#: src/components/Dialog/index.web.tsx:78
+#: src/components/Dialog/index.web.tsx:80
+#: src/components/Dialog/index.web.tsx:194
msgid "Close active dialog"
msgstr ""
@@ -717,11 +739,15 @@ msgstr "Cerrar la imagen"
msgid "Close image viewer"
msgstr "Cerrar el visor de imagen"
-#: src/view/shell/index.web.tsx:49
+#: src/view/shell/index.web.tsx:51
msgid "Close navigation footer"
msgstr "Cerrar el pie de pÔgina de navegación"
-#: src/view/shell/index.web.tsx:50
+#: src/components/TagMenu/index.tsx:266
+msgid "Close this dialog"
+msgstr ""
+
+#: src/view/shell/index.web.tsx:52
msgid "Closes bottom navigation bar"
msgstr ""
@@ -729,7 +755,7 @@ msgstr ""
msgid "Closes password update alert"
msgstr ""
-#: src/view/com/composer/Composer.tsx:302
+#: src/view/com/composer/Composer.tsx:309
msgid "Closes post composer and discards post draft"
msgstr ""
@@ -758,7 +784,11 @@ msgstr "Directrices de la comunidad"
msgid "Complete onboarding and start using your account"
msgstr ""
-#: src/view/com/composer/Composer.tsx:417
+#: src/view/com/auth/create/Step3.tsx:73
+msgid "Complete the challenge"
+msgstr ""
+
+#: src/view/com/composer/Composer.tsx:424
msgid "Compose posts up to {MAX_GRAPHEME_LENGTH} characters in length"
msgstr ""
@@ -775,7 +805,7 @@ msgstr ""
#: src/view/com/modals/SelfLabel.tsx:154
#: src/view/com/modals/VerifyEmail.tsx:231
#: src/view/com/modals/VerifyEmail.tsx:233
-#: src/view/screens/PreferencesHomeFeed.tsx:308
+#: src/view/screens/PreferencesFollowingFeed.tsx:308
#: src/view/screens/PreferencesThreads.tsx:159
msgid "Confirm"
msgstr "Confirmar"
@@ -813,16 +843,16 @@ msgstr "Código de confirmación"
msgid "Confirms signing up {email} to the waitlist"
msgstr ""
-#: src/view/com/auth/create/CreateAccount.tsx:182
+#: src/view/com/auth/create/CreateAccount.tsx:193
#: src/view/com/auth/login/LoginForm.tsx:278
msgid "Connecting..."
msgstr "Conectando..."
-#: src/view/com/auth/create/CreateAccount.tsx:202
+#: src/view/com/auth/create/CreateAccount.tsx:213
msgid "Contact support"
msgstr ""
-#: src/view/screens/Moderation.tsx:81
+#: src/view/screens/Moderation.tsx:83
msgid "Content filtering"
msgstr "Filtro de contenido"
@@ -852,7 +882,7 @@ msgstr "Advertencias de contenido"
#: src/screens/Onboarding/StepFollowingFeed.tsx:153
#: src/screens/Onboarding/StepInterests/index.tsx:248
#: src/screens/Onboarding/StepModeration/index.tsx:118
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:108
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:114
#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:148
#: src/view/com/auth/onboarding/RecommendedFollows.tsx:209
msgid "Continue"
@@ -861,7 +891,7 @@ msgstr "Continuar"
#: src/screens/Onboarding/StepFollowingFeed.tsx:150
#: src/screens/Onboarding/StepInterests/index.tsx:245
#: src/screens/Onboarding/StepModeration/index.tsx:115
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:105
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:111
msgid "Continue to next step"
msgstr ""
@@ -888,7 +918,7 @@ msgstr ""
#: src/view/com/modals/AddAppPasswords.tsx:76
#: src/view/com/modals/InviteCodes.tsx:152
-#: src/view/com/util/forms/PostDropdownBtn.tsx:112
+#: src/view/com/util/forms/PostDropdownBtn.tsx:143
msgid "Copied to clipboard"
msgstr ""
@@ -900,19 +930,19 @@ msgstr ""
msgid "Copy"
msgstr "Copiar"
-#: src/view/screens/ProfileList.tsx:417
+#: src/view/screens/ProfileList.tsx:418
msgid "Copy link to list"
msgstr "Copia el enlace a la lista"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:153
+#: src/view/com/util/forms/PostDropdownBtn.tsx:184
msgid "Copy link to post"
msgstr "Copia el enlace a la publicación"
-#: src/view/com/profile/ProfileHeader.tsx:294
+#: src/view/com/profile/ProfileHeader.tsx:295
msgid "Copy link to profile"
msgstr "Copia el enlace al perfil"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:139
+#: src/view/com/util/forms/PostDropdownBtn.tsx:170
msgid "Copy post text"
msgstr "Copiar el texto de la publicación"
@@ -921,7 +951,7 @@ msgstr "Copiar el texto de la publicación"
msgid "Copyright Policy"
msgstr "PolĆtica de derechos de autor"
-#: src/view/screens/ProfileFeed.tsx:96
+#: src/view/screens/ProfileFeed.tsx:97
msgid "Could not load feed"
msgstr "No se ha podido cargar las publicaciones"
@@ -930,12 +960,12 @@ msgid "Could not load list"
msgstr "No se ha podido cargar la lista"
#: src/view/com/auth/create/Step2.tsx:91
-msgid "Country"
-msgstr ""
+#~ msgid "Country"
+#~ msgstr ""
#: src/view/com/auth/HomeLoggedOutCTA.tsx:62
-#: src/view/com/auth/SplashScreen.tsx:46
-#: src/view/com/auth/SplashScreen.web.tsx:77
+#: src/view/com/auth/SplashScreen.tsx:71
+#: src/view/com/auth/SplashScreen.web.tsx:81
msgid "Create a new account"
msgstr "Crear una cuenta nueva"
@@ -943,7 +973,7 @@ msgstr "Crear una cuenta nueva"
msgid "Create a new Bluesky account"
msgstr ""
-#: src/view/com/auth/create/CreateAccount.tsx:122
+#: src/view/com/auth/create/CreateAccount.tsx:133
msgid "Create Account"
msgstr "Crear una cuenta"
@@ -952,7 +982,7 @@ msgid "Create App Password"
msgstr ""
#: src/view/com/auth/HomeLoggedOutCTA.tsx:54
-#: src/view/com/auth/SplashScreen.tsx:43
+#: src/view/com/auth/SplashScreen.tsx:68
msgid "Create new account"
msgstr "Crear una cuenta nueva"
@@ -968,7 +998,7 @@ msgstr ""
msgid "Created by you"
msgstr ""
-#: src/view/com/composer/Composer.tsx:448
+#: src/view/com/composer/Composer.tsx:455
msgid "Creates a card with a thumbnail. The card links to {url}"
msgstr ""
@@ -986,6 +1016,7 @@ msgid "Custom domain"
msgstr "Dominio personalizado"
#: src/screens/Onboarding/StepAlgoFeeds/index.tsx:106
+#: src/view/screens/Feeds.tsx:692
msgid "Custom feeds built by the community bring you new experiences and help you find the content you love."
msgstr ""
@@ -1027,8 +1058,8 @@ msgstr "Borrar la cuenta"
msgid "Delete app password"
msgstr "Borrar la contraseƱa de la app"
-#: src/view/screens/ProfileList.tsx:363
-#: src/view/screens/ProfileList.tsx:444
+#: src/view/screens/ProfileList.tsx:364
+#: src/view/screens/ProfileList.tsx:445
msgid "Delete List"
msgstr "Borrar la lista"
@@ -1044,19 +1075,19 @@ msgstr "Borrar mi cuenta"
msgid "Delete My Accountā¦"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:228
+#: src/view/com/util/forms/PostDropdownBtn.tsx:273
msgid "Delete post"
msgstr "Borrar una publicación"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:232
+#: src/view/com/util/forms/PostDropdownBtn.tsx:277
msgid "Delete this post?"
msgstr "¿Borrar esta publicación?"
-#: src/view/com/util/post-embeds/QuoteEmbed.tsx:69
+#: src/view/com/util/post-embeds/QuoteEmbed.tsx:70
msgid "Deleted"
msgstr ""
-#: src/view/com/post-thread/PostThread.tsx:259
+#: src/view/com/post-thread/PostThread.tsx:316
msgid "Deleted post."
msgstr "Se borró la publicación."
@@ -1071,7 +1102,7 @@ msgstr "Descripción"
#~ msgid "Developer Tools"
#~ msgstr "Herramientas de desarrollador"
-#: src/view/com/composer/Composer.tsx:211
+#: src/view/com/composer/Composer.tsx:218
msgid "Did you want to say anything?"
msgstr "ĀæQuieres decir algo?"
@@ -1079,15 +1110,15 @@ msgstr "ĀæQuieres decir algo?"
msgid "Dim"
msgstr ""
-#: src/view/com/composer/Composer.tsx:144
+#: src/view/com/composer/Composer.tsx:151
msgid "Discard"
msgstr "Descartar"
-#: src/view/com/composer/Composer.tsx:138
+#: src/view/com/composer/Composer.tsx:145
msgid "Discard draft"
msgstr "Descartar el borrador"
-#: src/view/screens/Moderation.tsx:207
+#: src/view/screens/Moderation.tsx:226
msgid "Discourage apps from showing my account to logged-out users"
msgstr "Evitar que las aplicaciones muestren mi cuenta a los usuarios desconectados"
@@ -1097,8 +1128,12 @@ msgid "Discover new custom feeds"
msgstr ""
#: src/view/screens/Feeds.tsx:473
-msgid "Discover new feeds"
-msgstr "Descubrir nuevas publicaciones"
+#~ msgid "Discover new feeds"
+#~ msgstr "Descubrir nuevas publicaciones"
+
+#: src/view/screens/Feeds.tsx:689
+msgid "Discover New Feeds"
+msgstr ""
#: src/view/com/modals/EditProfile.tsx:192
msgid "Display name"
@@ -1112,7 +1147,7 @@ msgstr "Mostrar el nombre"
msgid "Domain verified!"
msgstr "”Dominio verificado!"
-#: src/view/com/auth/create/Step1.tsx:166
+#: src/view/com/auth/create/Step1.tsx:170
msgid "Don't have an invite code?"
msgstr ""
@@ -1139,7 +1174,7 @@ msgstr ""
#: src/view/com/modals/InviteCodes.tsx:80
#: src/view/com/modals/InviteCodes.tsx:123
#: src/view/com/modals/ListAddRemoveUsers.tsx:142
-#: src/view/screens/PreferencesHomeFeed.tsx:311
+#: src/view/screens/PreferencesFollowingFeed.tsx:311
#: src/view/screens/Settings/ExportCarDialog.tsx:93
#: src/view/screens/Settings/ExportCarDialog.tsx:94
msgid "Done"
@@ -1162,7 +1197,7 @@ msgstr ""
msgid "Download CAR file"
msgstr ""
-#: src/view/com/composer/text-input/TextInput.web.tsx:247
+#: src/view/com/composer/text-input/TextInput.web.tsx:249
msgid "Drop to add images"
msgstr ""
@@ -1208,7 +1243,7 @@ msgstr ""
msgid "Edit image"
msgstr "Editar la imagen"
-#: src/view/screens/ProfileList.tsx:432
+#: src/view/screens/ProfileList.tsx:433
msgid "Edit list details"
msgstr "Editar los detalles de la lista"
@@ -1226,15 +1261,16 @@ msgstr "Editar mis noticias"
msgid "Edit my profile"
msgstr "Editar mi perfil"
-#: src/view/com/profile/ProfileHeader.tsx:417
+#: src/view/com/profile/ProfileHeader.tsx:418
msgid "Edit profile"
msgstr "Editar el perfil"
-#: src/view/com/profile/ProfileHeader.tsx:422
+#: src/view/com/profile/ProfileHeader.tsx:423
msgid "Edit Profile"
msgstr "Editar el perfil"
-#: src/view/screens/Feeds.tsx:356
+#: src/view/com/home/HomeHeaderLayout.web.tsx:59
+#: src/view/screens/Feeds.tsx:355
msgid "Edit Saved Feeds"
msgstr "Editar mis noticias guardadas"
@@ -1254,16 +1290,14 @@ msgstr ""
msgid "Education"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:195
-#: src/view/com/auth/create/Step2.tsx:194
-#: src/view/com/auth/create/Step2.tsx:269
+#: src/view/com/auth/create/Step1.tsx:199
#: src/view/com/auth/login/ForgotPasswordForm.tsx:156
#: 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/Step1.tsx:186
+#: src/view/com/auth/create/Step1.tsx:190
#: src/view/com/auth/login/ForgotPasswordForm.tsx:147
msgid "Email address"
msgstr "Dirección de correo electrónico"
@@ -1306,7 +1340,7 @@ msgstr ""
msgid "Enable media players for"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:147
+#: src/view/screens/PreferencesFollowingFeed.tsx:147
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."
@@ -1318,6 +1352,11 @@ msgstr "Fin de noticias"
msgid "Enter a name for this App Password"
msgstr ""
+#: src/components/dialogs/MutedWords.tsx:87
+#: src/components/dialogs/MutedWords.tsx:88
+msgid "Enter a word or tag"
+msgstr ""
+
#: src/view/com/modals/VerifyEmail.tsx:105
msgid "Enter Confirmation Code"
msgstr ""
@@ -1334,7 +1373,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/Step1.tsx:247
+#: src/view/com/auth/create/Step1.tsx:251
#: src/view/com/modals/BirthDateSettings.tsx:74
msgid "Enter your birth date"
msgstr ""
@@ -1343,7 +1382,7 @@ msgstr ""
msgid "Enter your email"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:191
+#: src/view/com/auth/create/Step1.tsx:195
msgid "Enter your email address"
msgstr "Introduce la dirección de correo electrónico"
@@ -1356,14 +1395,18 @@ msgid "Enter your new email address below."
msgstr "Introduce tu nueva dirección de correo electrónico a continuación."
#: src/view/com/auth/create/Step2.tsx:188
-msgid "Enter your phone number"
-msgstr ""
+#~ msgid "Enter your phone number"
+#~ msgstr ""
#: src/view/com/auth/login/Login.tsx:99
msgid "Enter your username and password"
msgstr "Introduce tu nombre de usuario y contraseƱa"
-#: src/view/screens/Search/Search.tsx:109
+#: src/view/com/auth/create/Step3.tsx:67
+msgid "Error receiving captcha response."
+msgstr ""
+
+#: src/view/screens/Search/Search.tsx:110
msgid "Error:"
msgstr "Error:"
@@ -1415,7 +1458,7 @@ msgstr ""
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/Navigation.tsx:258
+#: src/Navigation.tsx:261
#: src/view/screens/PreferencesExternalEmbeds.tsx:52
#: src/view/screens/Settings/index.tsx:657
msgid "External Media Preferences"
@@ -1434,7 +1477,7 @@ msgstr ""
msgid "Failed to create the list. Check your internet connection and try again."
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:88
+#: src/view/com/util/forms/PostDropdownBtn.tsx:110
msgid "Failed to delete post, please try again"
msgstr ""
@@ -1447,25 +1490,26 @@ msgstr "Error al cargar las noticias recomendadas"
msgid "Feed"
msgstr ""
-#: src/view/com/feeds/FeedSourceCard.tsx:229
+#: src/view/com/feeds/FeedSourceCard.tsx:231
msgid "Feed by {0}"
msgstr ""
-#: src/view/screens/Feeds.tsx:631
+#: src/view/screens/Feeds.tsx:605
msgid "Feed offline"
msgstr "Noticias fuera de lĆnea"
#: src/view/com/feeds/FeedPage.tsx:143
-msgid "Feed Preferences"
-msgstr "Preferencias de noticias"
+#~ msgid "Feed Preferences"
+#~ msgstr "Preferencias de noticias"
-#: src/view/shell/desktop/RightNav.tsx:69
+#: src/view/shell/desktop/RightNav.tsx:61
#: src/view/shell/Drawer.tsx:311
msgid "Feedback"
msgstr "Comentarios"
-#: src/Navigation.tsx:442
-#: src/view/screens/Feeds.tsx:548
+#: src/Navigation.tsx:445
+#: src/view/screens/Feeds.tsx:419
+#: src/view/screens/Feeds.tsx:524
#: src/view/screens/Profile.tsx:184
#: src/view/shell/bottom-bar/BottomBar.tsx:181
#: src/view/shell/desktop/LeftNav.tsx:342
@@ -1490,7 +1534,7 @@ 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/screens/Onboarding/StepTopicalFeeds.tsx:70
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:76
msgid "Feeds can be topical as well!"
msgstr ""
@@ -1504,11 +1548,11 @@ msgstr ""
msgid "Find accounts to follow"
msgstr ""
-#: src/view/screens/Search/Search.tsx:439
+#: src/view/screens/Search/Search.tsx:440
msgid "Find users on Bluesky"
msgstr "Encontrar usuarios en Bluesky"
-#: src/view/screens/Search/Search.tsx:437
+#: src/view/screens/Search/Search.tsx:438
msgid "Find users with the search tool on the right"
msgstr "Encuentra usuarios con la herramienta de bĆŗsqueda de la derecha"
@@ -1516,9 +1560,13 @@ msgstr "Encuentra usuarios con la herramienta de bĆŗsqueda de la derecha"
msgid "Finding similar accounts..."
msgstr "Encontrar cuentas similares..."
+#: src/view/screens/PreferencesFollowingFeed.tsx:111
+msgid "Fine-tune the content you see on your Following feed."
+msgstr ""
+
#: src/view/screens/PreferencesHomeFeed.tsx:111
-msgid "Fine-tune the content you see on your home screen."
-msgstr "Ajusta el contenido que ves en tu pantalla de inicio."
+#~ msgid "Fine-tune the content you see on your home screen."
+#~ msgstr "Ajusta el contenido que ves en tu pantalla de inicio."
#: src/view/screens/PreferencesThreads.tsx:60
msgid "Fine-tune the discussion threads."
@@ -1543,7 +1591,7 @@ msgstr ""
#: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:181
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:136
-#: src/view/com/profile/ProfileHeader.tsx:512
+#: src/view/com/profile/ProfileHeader.tsx:513
msgid "Follow"
msgstr "Seguir"
@@ -1554,7 +1602,7 @@ msgstr ""
#: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:58
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:122
-#: src/view/com/profile/ProfileHeader.tsx:503
+#: src/view/com/profile/ProfileHeader.tsx:504
msgid "Follow {0}"
msgstr ""
@@ -1578,7 +1626,7 @@ msgstr ""
msgid "Followed users"
msgstr "Usuarios seguidos"
-#: src/view/screens/PreferencesHomeFeed.tsx:154
+#: src/view/screens/PreferencesFollowingFeed.tsx:154
msgid "Followed users only"
msgstr "Solo usuarios seguidos"
@@ -1591,16 +1639,24 @@ msgid "Followers"
msgstr "Seguidores"
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:136
-#: src/view/com/profile/ProfileHeader.tsx:494
+#: src/view/com/profile/ProfileHeader.tsx:495
#: src/view/screens/ProfileFollows.tsx:25
msgid "Following"
msgstr "Siguiendo"
-#: src/view/com/profile/ProfileHeader.tsx:148
+#: src/view/com/profile/ProfileHeader.tsx:149
msgid "Following {0}"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:545
+#: src/Navigation.tsx:248
+#: src/view/com/home/HomeHeaderLayout.web.tsx:45
+#: src/view/com/home/HomeHeaderLayoutMobile.tsx:83
+#: src/view/screens/PreferencesFollowingFeed.tsx:104
+#: src/view/screens/Settings/index.tsx:543
+msgid "Following Feed Preferences"
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:546
msgid "Follows you"
msgstr "Te siguen"
@@ -1654,8 +1710,8 @@ msgstr "Comenzar"
msgid "Go back"
msgstr "Regresar"
-#: src/view/screens/ProfileFeed.tsx:105
-#: src/view/screens/ProfileFeed.tsx:110
+#: src/view/screens/ProfileFeed.tsx:106
+#: src/view/screens/ProfileFeed.tsx:111
#: src/view/screens/ProfileList.tsx:897
#: src/view/screens/ProfileList.tsx:902
msgid "Go Back"
@@ -1666,7 +1722,7 @@ msgstr "Regresar"
msgid "Go back to previous step"
msgstr ""
-#: src/view/screens/Search/Search.tsx:724
+#: src/view/screens/Search/Search.tsx:747
#: src/view/shell/desktop/Search.tsx:262
msgid "Go to @{queryMaybeHandle}"
msgstr ""
@@ -1683,11 +1739,15 @@ msgstr "Ir al siguiente"
msgid "Handle"
msgstr "Identificador"
-#: src/view/com/auth/create/CreateAccount.tsx:197
+#: src/components/RichText.tsx:188
+msgid "Hashtag: {tag}"
+msgstr ""
+
+#: src/view/com/auth/create/CreateAccount.tsx:208
msgid "Having trouble?"
msgstr ""
-#: src/view/shell/desktop/RightNav.tsx:98
+#: src/view/shell/desktop/RightNav.tsx:90
#: src/view/shell/Drawer.tsx:321
msgid "Help"
msgstr "Ayuda"
@@ -1696,11 +1756,11 @@ msgstr "Ayuda"
msgid "Here are some accounts for you to follow"
msgstr ""
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:79
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:85
msgid "Here are some popular topical feeds. You can choose to follow as many as you like."
msgstr ""
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:74
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:80
msgid "Here are some topical feeds based on your interests: {interestsText}. You can choose to follow as many as you like."
msgstr ""
@@ -1721,7 +1781,7 @@ msgctxt "action"
msgid "Hide"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:187
+#: src/view/com/util/forms/PostDropdownBtn.tsx:232
msgid "Hide post"
msgstr "Ocultar publicación"
@@ -1730,7 +1790,7 @@ msgstr "Ocultar publicación"
msgid "Hide the content"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:191
+#: src/view/com/util/forms/PostDropdownBtn.tsx:236
msgid "Hide this post?"
msgstr "¿Ocultar esta publicación?"
@@ -1738,7 +1798,7 @@ msgstr "¿Ocultar esta publicación?"
msgid "Hide user list"
msgstr "Ocultar la lista de usuarios"
-#: src/view/com/profile/ProfileHeader.tsx:486
+#: src/view/com/profile/ProfileHeader.tsx:487
msgid "Hides posts from {0} in your feed"
msgstr ""
@@ -1762,7 +1822,7 @@ msgstr "El servidor de noticias ha respondido de forma incorrecta. Por favor, in
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/Navigation.tsx:432
+#: src/Navigation.tsx:435
#: src/view/shell/bottom-bar/BottomBar.tsx:137
#: src/view/shell/desktop/LeftNav.tsx:306
#: src/view/shell/Drawer.tsx:398
@@ -1774,10 +1834,10 @@ msgstr "PƔgina inicial"
#: src/view/com/pager/FeedsTabBarMobile.tsx:123
#: src/view/screens/PreferencesHomeFeed.tsx:104
#: src/view/screens/Settings/index.tsx:543
-msgid "Home Feed Preferences"
-msgstr "Preferencias de noticias de la pƔgina inicial"
+#~ msgid "Home Feed Preferences"
+#~ msgstr "Preferencias de noticias de la pƔgina inicial"
-#: src/view/com/auth/create/Step1.tsx:78
+#: src/view/com/auth/create/Step1.tsx:82
#: src/view/com/auth/login/ForgotPasswordForm.tsx:120
msgid "Hosting provider"
msgstr "Proveedor de alojamiento"
@@ -1831,11 +1891,11 @@ msgstr ""
msgid "Input confirmation code for account deletion"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:196
+#: src/view/com/auth/create/Step1.tsx:200
msgid "Input email for Bluesky account"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:154
+#: src/view/com/auth/create/Step1.tsx:158
msgid "Input invite code to proceed"
msgstr ""
@@ -1852,8 +1912,8 @@ msgid "Input password for account deletion"
msgstr ""
#: src/view/com/auth/create/Step2.tsx:196
-msgid "Input phone number for SMS verification"
-msgstr ""
+#~ msgid "Input phone number for SMS verification"
+#~ msgstr ""
#: src/view/com/auth/login/LoginForm.tsx:230
msgid "Input the password tied to {identifier}"
@@ -1864,8 +1924,8 @@ msgid "Input the username or email address you used at signup"
msgstr ""
#: src/view/com/auth/create/Step2.tsx:271
-msgid "Input the verification code we have texted to you"
-msgstr ""
+#~ msgid "Input the verification code we have texted to you"
+#~ msgstr ""
#: src/view/com/modals/Waitlist.tsx:90
msgid "Input your email to get on the Bluesky waitlist"
@@ -1875,11 +1935,11 @@ msgstr ""
msgid "Input your password"
msgstr ""
-#: src/view/com/auth/create/Step3.tsx:42
+#: src/view/com/auth/create/Step2.tsx:80
msgid "Input your user handle"
msgstr ""
-#: src/view/com/post-thread/PostThreadItem.tsx:225
+#: src/view/com/post-thread/PostThreadItem.tsx:226
msgid "Invalid or unsupported post record"
msgstr ""
@@ -1895,12 +1955,12 @@ msgstr "Nombre de usuario o contraseƱa no vƔlidos"
msgid "Invite a Friend"
msgstr "Invitar a un amigo"
-#: src/view/com/auth/create/Step1.tsx:144
-#: src/view/com/auth/create/Step1.tsx:153
+#: src/view/com/auth/create/Step1.tsx:148
+#: src/view/com/auth/create/Step1.tsx:157
msgid "Invite code"
msgstr "Código de invitación"
-#: src/view/com/auth/create/state.ts:199
+#: src/view/com/auth/create/state.ts:158
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."
@@ -1921,6 +1981,7 @@ msgid "It shows posts from the people you follow as they happen."
msgstr ""
#: src/view/com/auth/HomeLoggedOutCTA.tsx:99
+#: src/view/com/auth/SplashScreen.web.tsx:138
msgid "Jobs"
msgstr "Tareas"
@@ -1928,8 +1989,8 @@ msgstr "Tareas"
msgid "Join the waitlist"
msgstr "Ćnete a la lista de espera"
-#: src/view/com/auth/create/Step1.tsx:170
#: src/view/com/auth/create/Step1.tsx:174
+#: src/view/com/auth/create/Step1.tsx:178
msgid "Join the waitlist."
msgstr "Ćnete a la lista de espera."
@@ -1980,7 +2041,7 @@ msgstr "Aprender mƔs"
msgid "Learn more about this warning"
msgstr "Aprender mƔs acerca de esta advertencia"
-#: src/view/screens/Moderation.tsx:243
+#: src/view/screens/Moderation.tsx:262
msgid "Learn more about what is public on Bluesky."
msgstr "MÔs información sobre lo que es público en Bluesky."
@@ -2036,7 +2097,7 @@ msgstr "Le ha gustado a"
msgid "Liked By"
msgstr ""
-#: src/view/com/feeds/FeedSourceCard.tsx:277
+#: src/view/com/feeds/FeedSourceCard.tsx:279
msgid "Liked by {0} {1}"
msgstr ""
@@ -2056,7 +2117,7 @@ msgstr ""
msgid "Likes"
msgstr "Cantidad de «Me gusta»"
-#: src/view/com/post-thread/PostThreadItem.tsx:182
+#: src/view/com/post-thread/PostThreadItem.tsx:183
msgid "Likes on this post"
msgstr ""
@@ -2068,19 +2129,19 @@ msgstr ""
msgid "List Avatar"
msgstr "Avatar de la lista"
-#: src/view/screens/ProfileList.tsx:323
+#: src/view/screens/ProfileList.tsx:324
msgid "List blocked"
msgstr ""
-#: src/view/com/feeds/FeedSourceCard.tsx:231
+#: src/view/com/feeds/FeedSourceCard.tsx:233
msgid "List by {0}"
msgstr ""
-#: src/view/screens/ProfileList.tsx:377
+#: src/view/screens/ProfileList.tsx:378
msgid "List deleted"
msgstr ""
-#: src/view/screens/ProfileList.tsx:282
+#: src/view/screens/ProfileList.tsx:283
msgid "List muted"
msgstr ""
@@ -2088,11 +2149,11 @@ msgstr ""
msgid "List Name"
msgstr "Nombre de la lista"
-#: src/view/screens/ProfileList.tsx:342
+#: src/view/screens/ProfileList.tsx:343
msgid "List unblocked"
msgstr ""
-#: src/view/screens/ProfileList.tsx:301
+#: src/view/screens/ProfileList.tsx:302
msgid "List unmuted"
msgstr ""
@@ -2104,8 +2165,8 @@ msgstr ""
msgid "Lists"
msgstr "Listas"
-#: src/view/com/post-thread/PostThread.tsx:276
-#: src/view/com/post-thread/PostThread.tsx:284
+#: src/view/com/post-thread/PostThread.tsx:333
+#: src/view/com/post-thread/PostThread.tsx:341
msgid "Load more posts"
msgstr "Cargar mƔs publicaciones"
@@ -2113,10 +2174,10 @@ msgstr "Cargar mƔs publicaciones"
msgid "Load new notifications"
msgstr "Cargar notificaciones nuevas"
-#: src/view/com/feeds/FeedPage.tsx:190
+#: src/view/com/feeds/FeedPage.tsx:115
#: src/view/screens/Profile.tsx:440
-#: src/view/screens/ProfileFeed.tsx:494
-#: src/view/screens/ProfileList.tsx:680
+#: src/view/screens/ProfileFeed.tsx:495
+#: src/view/screens/ProfileList.tsx:681
msgid "Load new posts"
msgstr "Cargar publicaciones nuevas"
@@ -2139,7 +2200,7 @@ msgstr ""
msgid "Log out"
msgstr ""
-#: src/view/screens/Moderation.tsx:136
+#: src/view/screens/Moderation.tsx:155
msgid "Logged-out visibility"
msgstr "Visibilidad de desconexión"
@@ -2151,6 +2212,18 @@ msgstr "Acceder a una cuenta que no estĆ” en la lista"
msgid "Make sure this is where you intend to go!"
msgstr "”Asegúrate de que es aquà a donde pretendes ir!"
+#: src/components/dialogs/MutedWords.tsx:71
+msgid "Manage your muted words and tags"
+msgstr ""
+
+#: src/view/com/auth/create/Step2.tsx:118
+msgid "May not be longer than 253 characters"
+msgstr ""
+
+#: src/view/com/auth/create/Step2.tsx:109
+msgid "May only contain letters and numbers"
+msgstr ""
+
#: src/view/screens/Profile.tsx:182
msgid "Media"
msgstr "Medios"
@@ -2164,7 +2237,7 @@ msgid "Mentioned users"
msgstr "Usuarios mencionados"
#: src/view/com/util/ViewHeader.tsx:81
-#: src/view/screens/Search/Search.tsx:623
+#: src/view/screens/Search/Search.tsx:646
msgid "Menu"
msgstr "MenĆŗ"
@@ -2173,7 +2246,7 @@ msgid "Message from server: {0}"
msgstr "Mensaje del servidor: {0}"
#: src/Navigation.tsx:115
-#: src/view/screens/Moderation.tsx:64
+#: src/view/screens/Moderation.tsx:66
#: src/view/screens/Settings/index.tsx:625
#: src/view/shell/desktop/LeftNav.tsx:397
#: src/view/shell/Drawer.tsx:511
@@ -2181,7 +2254,7 @@ msgstr "Mensaje del servidor: {0}"
msgid "Moderation"
msgstr "Moderación"
-#: src/view/com/lists/ListCard.tsx:92
+#: src/view/com/lists/ListCard.tsx:93
#: src/view/com/modals/UserAddRemoveLists.tsx:206
msgid "Moderation list by {0}"
msgstr ""
@@ -2190,7 +2263,7 @@ msgstr ""
msgid "Moderation list by <0/>"
msgstr ""
-#: src/view/com/lists/ListCard.tsx:90
+#: src/view/com/lists/ListCard.tsx:91
#: src/view/com/modals/UserAddRemoveLists.tsx:204
#: src/view/screens/ProfileList.tsx:772
msgid "Moderation list by you"
@@ -2204,7 +2277,7 @@ msgstr ""
msgid "Moderation list updated"
msgstr ""
-#: src/view/screens/Moderation.tsx:95
+#: src/view/screens/Moderation.tsx:114
msgid "Moderation lists"
msgstr "Listas de moderación"
@@ -2225,13 +2298,13 @@ msgstr ""
msgid "More feeds"
msgstr "MƔs canales de noticias"
-#: src/view/com/profile/ProfileHeader.tsx:522
-#: src/view/screens/ProfileFeed.tsx:362
-#: src/view/screens/ProfileList.tsx:616
+#: src/view/com/profile/ProfileHeader.tsx:523
+#: src/view/screens/ProfileFeed.tsx:363
+#: src/view/screens/ProfileList.tsx:617
msgid "More options"
msgstr "MƔs opciones"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:270
+#: src/view/com/util/forms/PostDropdownBtn.tsx:315
msgid "More post options"
msgstr ""
@@ -2239,35 +2312,71 @@ msgstr ""
msgid "Most-liked replies first"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:326
+#: src/view/com/auth/create/Step2.tsx:122
+msgid "Must be at least 3 characters"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:253
+msgid "Mute"
+msgstr ""
+
+#: src/components/TagMenu/index.web.tsx:91
+msgid "Mute {truncatedTag}"
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:327
msgid "Mute Account"
msgstr "Silenciar la cuenta"
-#: src/view/screens/ProfileList.tsx:543
+#: src/view/screens/ProfileList.tsx:544
msgid "Mute accounts"
msgstr "Silenciar las cuentas"
-#: src/view/screens/ProfileList.tsx:490
+#: src/components/TagMenu/index.tsx:211
+msgid "Mute all {tag} posts"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:131
+msgid "Mute in tags only"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:116
+msgid "Mute in text & tags"
+msgstr ""
+
+#: src/view/screens/ProfileList.tsx:491
msgid "Mute list"
msgstr "Silenciar la lista"
-#: src/view/screens/ProfileList.tsx:274
+#: src/view/screens/ProfileList.tsx:275
msgid "Mute these accounts?"
msgstr "ĀæSilenciar estas cuentas?"
-#: src/view/screens/ProfileList.tsx:278
+#: src/view/screens/ProfileList.tsx:279
msgid "Mute this List"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:171
+#: src/components/dialogs/MutedWords.tsx:109
+msgid "Mute this word in post text and tags"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:124
+msgid "Mute this word in tags only"
+msgstr ""
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:202
msgid "Mute thread"
msgstr "Silenciar el hilo"
-#: src/view/com/lists/ListCard.tsx:101
+#: src/view/com/util/forms/PostDropdownBtn.tsx:216
+msgid "Mute words & tags"
+msgstr ""
+
+#: src/view/com/lists/ListCard.tsx:102
msgid "Muted"
msgstr ""
-#: src/view/screens/Moderation.tsx:109
+#: src/view/screens/Moderation.tsx:128
msgid "Muted accounts"
msgstr "Cuentas silenciadas"
@@ -2280,7 +2389,11 @@ msgstr "Cuentas silenciadas"
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:276
+#: src/view/screens/Moderation.tsx:100
+msgid "Muted words & tags"
+msgstr ""
+
+#: src/view/screens/ProfileList.tsx:277
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."
@@ -2288,7 +2401,7 @@ msgstr "Silenciar es privado. Las cuentas silenciadas pueden interactuar contigo
msgid "My Birthday"
msgstr "Mi cumpleaƱos"
-#: src/view/screens/Feeds.tsx:419
+#: src/view/screens/Feeds.tsx:663
msgid "My Feeds"
msgstr "Mis canales de noticias"
@@ -2343,6 +2456,10 @@ msgstr "No pierdas nunca el acceso a tus seguidores y datos."
msgid "Never lose access to your followers or data."
msgstr ""
+#: src/components/dialogs/MutedWords.tsx:244
+msgid "Nevermind"
+msgstr ""
+
#: src/view/screens/Lists.tsx:76
msgctxt "action"
msgid "New"
@@ -2364,17 +2481,17 @@ msgstr ""
msgid "New Password"
msgstr ""
-#: src/view/com/feeds/FeedPage.tsx:201
+#: src/view/com/feeds/FeedPage.tsx:126
msgctxt "action"
msgid "New post"
msgstr ""
-#: src/view/screens/Feeds.tsx:581
+#: src/view/screens/Feeds.tsx:555
#: src/view/screens/Notifications.tsx:168
#: src/view/screens/Profile.tsx:382
-#: src/view/screens/ProfileFeed.tsx:432
-#: src/view/screens/ProfileList.tsx:195
-#: src/view/screens/ProfileList.tsx:223
+#: src/view/screens/ProfileFeed.tsx:433
+#: src/view/screens/ProfileList.tsx:196
+#: src/view/screens/ProfileList.tsx:224
#: src/view/shell/desktop/LeftNav.tsx:248
msgid "New post"
msgstr "Publicación nueva"
@@ -2396,7 +2513,7 @@ msgstr ""
msgid "News"
msgstr ""
-#: src/view/com/auth/create/CreateAccount.tsx:161
+#: src/view/com/auth/create/CreateAccount.tsx:172
#: src/view/com/auth/login/ForgotPasswordForm.tsx:182
#: src/view/com/auth/login/ForgotPasswordForm.tsx:192
#: src/view/com/auth/login/LoginForm.tsx:291
@@ -2417,10 +2534,10 @@ msgstr ""
msgid "Next image"
msgstr "Imagen nueva"
-#: 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/PreferencesFollowingFeed.tsx:129
+#: src/view/screens/PreferencesFollowingFeed.tsx:200
+#: src/view/screens/PreferencesFollowingFeed.tsx:235
+#: src/view/screens/PreferencesFollowingFeed.tsx:272
#: src/view/screens/PreferencesThreads.tsx:106
#: src/view/screens/PreferencesThreads.tsx:129
msgid "No"
@@ -2431,7 +2548,7 @@ msgstr "No"
msgid "No description"
msgstr "Sin descripción"
-#: src/view/com/profile/ProfileHeader.tsx:169
+#: src/view/com/profile/ProfileHeader.tsx:170
msgid "No longer following {0}"
msgstr ""
@@ -2444,13 +2561,13 @@ msgstr ""
msgid "No result"
msgstr "Sin resultados"
-#: src/view/screens/Feeds.tsx:524
+#: src/view/screens/Feeds.tsx:495
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:280
-#: src/view/screens/Search/Search.tsx:308
+#: src/view/screens/Search/Search.tsx:281
+#: src/view/screens/Search/Search.tsx:309
msgid "No results found for {query}"
msgstr "No se han encontrado resultados para {query}"
@@ -2476,11 +2593,11 @@ msgstr ""
msgid "Not right now"
msgstr ""
-#: src/view/screens/Moderation.tsx:233
+#: src/view/screens/Moderation.tsx:252
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/Navigation.tsx:447
+#: src/Navigation.tsx:450
#: src/view/screens/Notifications.tsx:124
#: src/view/screens/Notifications.tsx:148
#: src/view/shell/bottom-bar/BottomBar.tsx:205
@@ -2514,7 +2631,7 @@ msgstr ""
msgid "Onboarding reset"
msgstr ""
-#: src/view/com/composer/Composer.tsx:375
+#: src/view/com/composer/Composer.tsx:382
msgid "One or more images is missing alt text."
msgstr "Falta el texto alternativo en una o varias imƔgenes."
@@ -2531,8 +2648,12 @@ msgstr ""
msgid "Open"
msgstr ""
-#: src/view/com/composer/Composer.tsx:470
-#: src/view/com/composer/Composer.tsx:471
+#: src/view/screens/Moderation.tsx:75
+msgid "Open content filtering settings"
+msgstr ""
+
+#: src/view/com/composer/Composer.tsx:477
+#: src/view/com/composer/Composer.tsx:478
msgid "Open emoji picker"
msgstr ""
@@ -2540,7 +2661,11 @@ msgstr ""
msgid "Open links with in-app browser"
msgstr ""
-#: src/view/com/pager/FeedsTabBarMobile.tsx:87
+#: src/view/screens/Moderation.tsx:92
+msgid "Open muted words settings"
+msgstr ""
+
+#: src/view/com/home/HomeHeaderLayoutMobile.tsx:49
msgid "Open navigation"
msgstr "Abrir navegación"
@@ -2576,7 +2701,7 @@ msgstr "Abrir la configuración del idioma que se puede ajustar"
msgid "Opens device photo gallery"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:419
+#: src/view/com/profile/ProfileHeader.tsx:420
msgid "Opens editor for profile display name, avatar, background image, and description"
msgstr ""
@@ -2584,11 +2709,11 @@ msgstr ""
msgid "Opens external embeds settings"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:574
+#: src/view/com/profile/ProfileHeader.tsx:575
msgid "Opens followers list"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:593
+#: src/view/com/profile/ProfileHeader.tsx:594
msgid "Opens following list"
msgstr ""
@@ -2616,7 +2741,8 @@ msgstr "Abre la configuración de moderación"
msgid "Opens password reset form"
msgstr ""
-#: src/view/screens/Feeds.tsx:357
+#: src/view/com/home/HomeHeaderLayout.web.tsx:60
+#: src/view/screens/Feeds.tsx:356
msgid "Opens screen to edit Saved Feeds"
msgstr ""
@@ -2672,8 +2798,8 @@ msgstr "PƔgina no encontrada"
msgid "Page Not Found"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:210
-#: src/view/com/auth/create/Step1.tsx:220
+#: src/view/com/auth/create/Step1.tsx:214
+#: src/view/com/auth/create/Step1.tsx:224
#: src/view/com/auth/login/LoginForm.tsx:226
#: src/view/com/auth/login/SetNewPasswordForm.tsx:161
#: src/view/com/modals/DeleteAccount.tsx:202
@@ -2709,15 +2835,15 @@ msgid "Pets"
msgstr ""
#: src/view/com/auth/create/Step2.tsx:183
-msgid "Phone number"
-msgstr ""
+#~ msgid "Phone number"
+#~ msgstr ""
#: src/view/com/modals/SelfLabel.tsx:121
msgid "Pictures meant for adults."
msgstr "ImƔgenes destinadas a adultos."
-#: src/view/screens/ProfileFeed.tsx:353
-#: src/view/screens/ProfileList.tsx:580
+#: src/view/screens/ProfileFeed.tsx:354
+#: src/view/screens/ProfileList.tsx:581
msgid "Pin to home"
msgstr ""
@@ -2738,14 +2864,18 @@ msgstr ""
msgid "Plays the GIF"
msgstr ""
-#: src/view/com/auth/create/state.ts:177
+#: src/view/com/auth/create/state.ts:124
msgid "Please choose your handle."
msgstr "Por favor, elige tu identificador."
-#: src/view/com/auth/create/state.ts:160
+#: src/view/com/auth/create/state.ts:117
msgid "Please choose your password."
msgstr "Por favor, elige tu contraseƱa."
+#: src/view/com/auth/create/state.ts:131
+msgid "Please complete the verification captcha."
+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 "Por favor, confirma tu correo electrónico antes de cambiarlo. Se trata de un requisito temporal mientras se añaden herramientas de actualización de correo electrónico, y pronto se eliminarÔ."
@@ -2755,22 +2885,22 @@ msgid "Please enter a name for your app password. All spaces is not allowed."
msgstr ""
#: src/view/com/auth/create/Step2.tsx:206
-msgid "Please enter a phone number that can receive SMS text messages."
-msgstr ""
+#~ msgid "Please enter a phone number that can receive SMS text messages."
+#~ msgstr ""
#: src/view/com/modals/AddAppPasswords.tsx:145
msgid "Please enter a unique name for this App Password or use our randomly generated one."
msgstr "Introduce un nombre único para la contraseña de esta app o utiliza una generada aleatoriamente."
#: src/view/com/auth/create/state.ts:170
-msgid "Please enter the code you received by SMS."
-msgstr ""
+#~ msgid "Please enter the code you received by SMS."
+#~ msgstr ""
#: src/view/com/auth/create/Step2.tsx:282
-msgid "Please enter the verification code sent to {phoneNumberFormatted}."
-msgstr ""
+#~ msgid "Please enter the verification code sent to {phoneNumberFormatted}."
+#~ msgstr ""
-#: src/view/com/auth/create/state.ts:146
+#: src/view/com/auth/create/state.ts:103
msgid "Please enter your email."
msgstr "Introduce tu correo electrónico."
@@ -2787,7 +2917,7 @@ msgstr "Por favor, dinos por quƩ crees que esta advertencia de contenido se ha
msgid "Please Verify Your Email"
msgstr ""
-#: src/view/com/composer/Composer.tsx:215
+#: src/view/com/composer/Composer.tsx:222
msgid "Please wait for your link card to finish loading"
msgstr "Por favor, espera a que tu tarjeta de enlace termine de cargarse"
@@ -2799,18 +2929,18 @@ msgstr ""
msgid "Porn"
msgstr ""
-#: src/view/com/composer/Composer.tsx:350
-#: src/view/com/composer/Composer.tsx:358
+#: src/view/com/composer/Composer.tsx:357
+#: src/view/com/composer/Composer.tsx:365
msgctxt "action"
msgid "Post"
msgstr ""
-#: src/view/com/post-thread/PostThread.tsx:246
+#: src/view/com/post-thread/PostThread.tsx:303
msgctxt "description"
msgid "Post"
msgstr "Publicación"
-#: src/view/com/post-thread/PostThreadItem.tsx:174
+#: src/view/com/post-thread/PostThreadItem.tsx:175
msgid "Post by {0}"
msgstr ""
@@ -2820,11 +2950,11 @@ msgstr ""
msgid "Post by @{0}"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:84
+#: src/view/com/util/forms/PostDropdownBtn.tsx:90
msgid "Post deleted"
msgstr ""
-#: src/view/com/post-thread/PostThread.tsx:398
+#: src/view/com/post-thread/PostThread.tsx:462
msgid "Post hidden"
msgstr "Publicación oculta"
@@ -2836,14 +2966,22 @@ msgstr "Lenguaje de la publicación"
msgid "Post Languages"
msgstr "Lenguajes de la publicación"
-#: src/view/com/post-thread/PostThread.tsx:450
+#: src/view/com/post-thread/PostThread.tsx:514
msgid "Post not found"
msgstr "Publicación no encontrada"
+#: src/components/TagMenu/index.tsx:257
+msgid "posts"
+msgstr ""
+
#: src/view/screens/Profile.tsx:180
msgid "Posts"
msgstr "Publicaciones"
+#: src/components/dialogs/MutedWords.tsx:77
+msgid "Posts can be muted based on their text, their tags, or both."
+msgstr ""
+
#: src/view/com/posts/FeedErrorMessage.tsx:64
msgid "Posts hidden"
msgstr ""
@@ -2865,7 +3003,7 @@ msgid "Prioritize Your Follows"
msgstr "Priorizar los usuarios a los que sigue"
#: src/view/screens/Settings/index.tsx:632
-#: src/view/shell/desktop/RightNav.tsx:80
+#: src/view/shell/desktop/RightNav.tsx:72
msgid "Privacy"
msgstr "Privacidad"
@@ -2908,11 +3046,11 @@ msgstr "Listas pĆŗblicas y compartibles de usuarios para silenciar o bloquear en
msgid "Public, shareable lists which can drive feeds."
msgstr "Listas pĆŗblicas y compartibles que pueden impulsar las noticias."
-#: src/view/com/composer/Composer.tsx:335
+#: src/view/com/composer/Composer.tsx:342
msgid "Publish post"
msgstr ""
-#: src/view/com/composer/Composer.tsx:335
+#: src/view/com/composer/Composer.tsx:342
msgid "Publish reply"
msgstr ""
@@ -2946,6 +3084,7 @@ msgstr "Canales de noticias recomendados"
msgid "Recommended Users"
msgstr "Usuarios recomendados"
+#: src/components/dialogs/MutedWords.tsx:249
#: src/view/com/modals/ListAddRemoveUsers.tsx:264
#: src/view/com/modals/SelfLabel.tsx:83
#: src/view/com/modals/UserAddRemoveLists.tsx:219
@@ -2954,7 +3093,7 @@ msgstr "Usuarios recomendados"
msgid "Remove"
msgstr "Eliminar"
-#: src/view/com/feeds/FeedSourceCard.tsx:106
+#: src/view/com/feeds/FeedSourceCard.tsx:108
msgid "Remove {0} from my feeds?"
msgstr "ĀæEliminar {0} de mis canales de noticias?"
@@ -2967,11 +3106,11 @@ msgstr "Eliminar la cuenta"
msgid "Remove feed"
msgstr "Eliminar el canal de noticias"
-#: src/view/com/feeds/FeedSourceCard.tsx:105
-#: src/view/com/feeds/FeedSourceCard.tsx:167
-#: src/view/com/feeds/FeedSourceCard.tsx:172
-#: src/view/com/feeds/FeedSourceCard.tsx:243
-#: src/view/screens/ProfileFeed.tsx:272
+#: src/view/com/feeds/FeedSourceCard.tsx:107
+#: src/view/com/feeds/FeedSourceCard.tsx:169
+#: src/view/com/feeds/FeedSourceCard.tsx:174
+#: src/view/com/feeds/FeedSourceCard.tsx:245
+#: src/view/screens/ProfileFeed.tsx:273
msgid "Remove from my feeds"
msgstr "Eliminar de mis canales de noticias"
@@ -2983,11 +3122,15 @@ msgstr "Eliminar la imagen"
msgid "Remove image preview"
msgstr "Eliminar la vista previa de la imagen"
+#: src/components/dialogs/MutedWords.tsx:294
+msgid "Remove mute word from your list"
+msgstr ""
+
#: src/view/com/modals/Repost.tsx:47
msgid "Remove repost"
msgstr ""
-#: src/view/com/feeds/FeedSourceCard.tsx:173
+#: src/view/com/feeds/FeedSourceCard.tsx:175
msgid "Remove this feed from my feeds?"
msgstr "ĀæEliminar este canal de mis canales de noticias?"
@@ -3000,8 +3143,8 @@ msgstr "ĀæEliminar este canal de mis canales de noticias guardados?"
msgid "Removed from list"
msgstr "Eliminar de la lista"
-#: src/view/com/feeds/FeedSourceCard.tsx:111
-#: src/view/com/feeds/FeedSourceCard.tsx:178
+#: src/view/com/feeds/FeedSourceCard.tsx:113
+#: src/view/com/feeds/FeedSourceCard.tsx:180
msgid "Removed from my feeds"
msgstr ""
@@ -3017,16 +3160,16 @@ msgstr "Respuestas"
msgid "Replies to this thread are disabled"
msgstr "Las respuestas a este hilo estƔn desactivadas"
-#: src/view/com/composer/Composer.tsx:348
+#: src/view/com/composer/Composer.tsx:355
msgctxt "action"
msgid "Reply"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:144
+#: src/view/screens/PreferencesFollowingFeed.tsx:144
msgid "Reply Filters"
msgstr "Filtros de respuestas"
-#: src/view/com/post/Post.tsx:166
+#: src/view/com/post/Post.tsx:167
#: src/view/com/posts/FeedItem.tsx:287
msgctxt "description"
msgid "Reply to <0/>"
@@ -3036,20 +3179,20 @@ msgstr ""
msgid "Report {collectionName}"
msgstr "Informe de {collectionName}"
-#: src/view/com/profile/ProfileHeader.tsx:360
+#: src/view/com/profile/ProfileHeader.tsx:361
msgid "Report Account"
msgstr "Informe de la cuenta"
-#: src/view/screens/ProfileFeed.tsx:292
+#: src/view/screens/ProfileFeed.tsx:293
msgid "Report feed"
msgstr "Informe del canal de noticias"
-#: src/view/screens/ProfileList.tsx:458
+#: src/view/screens/ProfileList.tsx:459
msgid "Report List"
msgstr "Informe de la lista"
#: src/view/com/modals/report/SendReportButton.tsx:37
-#: src/view/com/util/forms/PostDropdownBtn.tsx:210
+#: src/view/com/util/forms/PostDropdownBtn.tsx:255
msgid "Report post"
msgstr "Informe de la publicación"
@@ -3086,7 +3229,7 @@ msgstr "Vuelto a publicar por <0/>"
msgid "reposted your post"
msgstr ""
-#: src/view/com/post-thread/PostThreadItem.tsx:187
+#: src/view/com/post-thread/PostThreadItem.tsx:188
msgid "Reposts of this post"
msgstr ""
@@ -3096,8 +3239,8 @@ msgid "Request Change"
msgstr "Solicitar un cambio"
#: src/view/com/auth/create/Step2.tsx:219
-msgid "Request code"
-msgstr ""
+#~ msgid "Request code"
+#~ msgstr ""
#: src/view/com/modals/ChangePassword.tsx:239
#: src/view/com/modals/ChangePassword.tsx:241
@@ -3108,7 +3251,7 @@ msgstr ""
msgid "Require alt text before posting"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:149
+#: src/view/com/auth/create/Step1.tsx:153
msgid "Required for this provider"
msgstr "Requerido para este proveedor"
@@ -3160,9 +3303,8 @@ msgstr ""
#: src/screens/Onboarding/StepInterests/index.tsx:221
#: src/screens/Onboarding/StepInterests/index.tsx:224
-#: src/view/com/auth/create/CreateAccount.tsx:170
-#: src/view/com/auth/create/CreateAccount.tsx:175
-#: src/view/com/auth/create/Step2.tsx:255
+#: src/view/com/auth/create/CreateAccount.tsx:181
+#: src/view/com/auth/create/CreateAccount.tsx:186
#: src/view/com/auth/login/LoginForm.tsx:268
#: src/view/com/auth/login/LoginForm.tsx:271
#: src/view/com/util/error/ErrorMessage.tsx:55
@@ -3171,16 +3313,16 @@ msgid "Retry"
msgstr "Volver a intentar"
#: src/view/com/auth/create/Step2.tsx:247
-msgid "Retry."
-msgstr ""
+#~ msgid "Retry."
+#~ msgstr ""
#: src/view/screens/ProfileList.tsx:898
msgid "Return to previous page"
msgstr ""
#: src/view/shell/desktop/RightNav.tsx:55
-msgid "SANDBOX. Posts and accounts are not permanent."
-msgstr ""
+#~ msgid "SANDBOX. Posts and accounts are not permanent."
+#~ msgstr ""
#: src/view/com/lightbox/Lightbox.tsx:132
#: src/view/com/modals/CreateOrEditList.tsx:345
@@ -3193,7 +3335,7 @@ msgstr ""
#: src/view/com/modals/ChangeHandle.tsx:173
#: src/view/com/modals/CreateOrEditList.tsx:337
#: src/view/com/modals/EditProfile.tsx:224
-#: src/view/screens/ProfileFeed.tsx:345
+#: src/view/screens/ProfileFeed.tsx:346
msgid "Save"
msgstr "Guardar"
@@ -3233,14 +3375,14 @@ msgstr ""
msgid "Scroll to top"
msgstr ""
-#: src/Navigation.tsx:437
+#: src/Navigation.tsx:440
#: src/view/com/auth/LoggedOut.tsx:122
#: src/view/com/modals/ListAddRemoveUsers.tsx:75
#: src/view/com/util/forms/SearchInput.tsx:67
#: src/view/com/util/forms/SearchInput.tsx:79
-#: src/view/screens/Search/Search.tsx:418
-#: src/view/screens/Search/Search.tsx:645
-#: src/view/screens/Search/Search.tsx:663
+#: src/view/screens/Search/Search.tsx:419
+#: src/view/screens/Search/Search.tsx:668
+#: src/view/screens/Search/Search.tsx:686
#: src/view/shell/bottom-bar/BottomBar.tsx:159
#: src/view/shell/desktop/LeftNav.tsx:324
#: src/view/shell/desktop/Search.tsx:214
@@ -3250,11 +3392,19 @@ msgstr ""
msgid "Search"
msgstr "Buscar"
-#: src/view/screens/Search/Search.tsx:712
+#: src/view/screens/Search/Search.tsx:735
#: src/view/shell/desktop/Search.tsx:255
msgid "Search for \"{query}\""
msgstr ""
+#: src/components/TagMenu/index.tsx:145
+msgid "Search for all posts by @{authorHandle} with tag {tag}"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:90
+msgid "Search for all posts with tag {tag}"
+msgstr ""
+
#: src/view/com/auth/LoggedOut.tsx:104
#: src/view/com/auth/LoggedOut.tsx:105
#: src/view/com/modals/ListAddRemoveUsers.tsx:70
@@ -3265,6 +3415,22 @@ msgstr "Buscar usuarios"
msgid "Security Step Required"
msgstr "Se requiere un paso de seguridad"
+#: src/components/TagMenu/index.web.tsx:50
+msgid "See {truncatedTag} posts"
+msgstr ""
+
+#: src/components/TagMenu/index.web.tsx:67
+msgid "See {truncatedTag} posts by user"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:128
+msgid "See <0>{tag}0> posts"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:189
+msgid "See <0>{tag}0> posts by this user"
+msgstr ""
+
#: src/view/screens/SavedFeeds.tsx:163
msgid "See this guide"
msgstr ""
@@ -3289,7 +3455,7 @@ msgstr "Selecciona de una cuenta existente"
msgid "Select option {i} of {numItems}"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:99
+#: src/view/com/auth/create/Step1.tsx:103
#: src/view/com/auth/login/LoginForm.tsx:150
msgid "Select service"
msgstr "Selecciona el servicio"
@@ -3306,7 +3472,7 @@ msgstr ""
#~ msgid "Select the types of content that you want to see (or not see), and we'll handle the rest."
#~ msgstr ""
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:90
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:96
msgid "Select topical feeds to follow from the list below"
msgstr ""
@@ -3327,8 +3493,8 @@ msgid "Select your interests from the options below"
msgstr ""
#: src/view/com/auth/create/Step2.tsx:155
-msgid "Select your phone's country"
-msgstr ""
+#~ msgid "Select your phone's country"
+#~ msgstr ""
#: src/view/screens/LanguageSettings.tsx:190
msgid "Select your preferred language for translations in your feed."
@@ -3407,19 +3573,19 @@ msgstr ""
msgid "Set new password"
msgstr "Establecer la contraseƱa nueva"
-#: src/view/com/auth/create/Step1.tsx:221
+#: src/view/com/auth/create/Step1.tsx:225
msgid "Set password"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:225
+#: src/view/screens/PreferencesFollowingFeed.tsx:225
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:122
+#: src/view/screens/PreferencesFollowingFeed.tsx:122
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:191
+#: src/view/screens/PreferencesFollowingFeed.tsx:191
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."
@@ -3428,8 +3594,12 @@ msgid "Set this setting to \"Yes\" to show replies in a threaded view. This is a
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:261
-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."
+#~ 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/PreferencesFollowingFeed.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/screens/Onboarding/Layout.tsx:50
msgid "Set up your account"
@@ -3447,7 +3617,7 @@ msgstr ""
msgid "Sets hosting provider for password reset"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:100
+#: src/view/com/auth/create/Step1.tsx:104
#: src/view/com/auth/login/LoginForm.tsx:151
msgid "Sets server for the Bluesky client"
msgstr ""
@@ -3469,13 +3639,13 @@ msgctxt "action"
msgid "Share"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:294
-#: src/view/com/util/forms/PostDropdownBtn.tsx:153
-#: src/view/screens/ProfileList.tsx:417
+#: src/view/com/profile/ProfileHeader.tsx:295
+#: src/view/com/util/forms/PostDropdownBtn.tsx:184
+#: src/view/screens/ProfileList.tsx:418
msgid "Share"
msgstr "Compartir"
-#: src/view/screens/ProfileFeed.tsx:304
+#: src/view/screens/ProfileFeed.tsx:305
msgid "Share feed"
msgstr "Compartir las noticias"
@@ -3487,7 +3657,7 @@ msgstr "Compartir las noticias"
msgid "Show"
msgstr "Mostrar"
-#: src/view/screens/PreferencesHomeFeed.tsx:68
+#: src/view/screens/PreferencesFollowingFeed.tsx:68
msgid "Show all replies"
msgstr ""
@@ -3499,21 +3669,21 @@ msgstr "Mostrar de todas maneras"
msgid "Show embeds from {0}"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:458
+#: src/view/com/profile/ProfileHeader.tsx:459
msgid "Show follows similar to {0}"
msgstr ""
-#: src/view/com/post-thread/PostThreadItem.tsx:539
-#: src/view/com/post/Post.tsx:197
+#: src/view/com/post-thread/PostThreadItem.tsx:538
+#: src/view/com/post/Post.tsx:198
#: src/view/com/posts/FeedItem.tsx:363
msgid "Show More"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:258
+#: src/view/screens/PreferencesFollowingFeed.tsx:258
msgid "Show Posts from My Feeds"
msgstr "Mostrar publicaciones de mis noticias"
-#: src/view/screens/PreferencesHomeFeed.tsx:222
+#: src/view/screens/PreferencesFollowingFeed.tsx:222
msgid "Show Quote Posts"
msgstr "Mostrar publicaciones de citas"
@@ -3529,7 +3699,7 @@ msgstr ""
msgid "Show re-posts in Following feed"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:119
+#: src/view/screens/PreferencesFollowingFeed.tsx:119
msgid "Show Replies"
msgstr "Mostrar respuestas"
@@ -3545,11 +3715,11 @@ msgstr ""
msgid "Show replies in Following feed"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:70
+#: src/view/screens/PreferencesFollowingFeed.tsx:70
msgid "Show replies with at least {value} {0}"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:188
+#: src/view/screens/PreferencesFollowingFeed.tsx:188
msgid "Show Reposts"
msgstr "Mostrar publicaciones que se han publicado nuevamente"
@@ -3566,18 +3736,18 @@ msgstr ""
msgid "Show users"
msgstr "Mostrar usuarios"
-#: src/view/com/profile/ProfileHeader.tsx:461
+#: src/view/com/profile/ProfileHeader.tsx:462
msgid "Shows a list of users similar to this user."
msgstr ""
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:124
-#: src/view/com/profile/ProfileHeader.tsx:505
+#: src/view/com/profile/ProfileHeader.tsx:506
msgid "Shows posts from {0} in your feed"
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/com/auth/SplashScreen.tsx:79
#: src/view/shell/bottom-bar/BottomBar.tsx:285
#: src/view/shell/bottom-bar/BottomBar.tsx:286
#: src/view/shell/bottom-bar/BottomBar.tsx:288
@@ -3590,8 +3760,8 @@ msgid "Sign in"
msgstr "Iniciar sesión"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:78
-#: src/view/com/auth/SplashScreen.tsx:57
-#: src/view/com/auth/SplashScreen.web.tsx:87
+#: src/view/com/auth/SplashScreen.tsx:82
+#: src/view/com/auth/SplashScreen.web.tsx:91
msgid "Sign In"
msgstr "Iniciar sesión"
@@ -3658,8 +3828,8 @@ msgid "Skip this flow"
msgstr ""
#: src/view/com/auth/create/Step2.tsx:82
-msgid "SMS verification"
-msgstr ""
+#~ msgid "SMS verification"
+#~ msgstr ""
#: src/screens/Onboarding/index.tsx:40
msgid "Software Dev"
@@ -3673,7 +3843,7 @@ msgstr ""
msgid "Something went wrong. Check your email and try again."
msgstr ""
-#: src/App.native.tsx:61
+#: src/App.native.tsx:63
msgid "Sorry! Your session expired. Please log in again."
msgstr ""
@@ -3718,7 +3888,7 @@ msgstr "Libro de cuentos"
msgid "Submit"
msgstr "Enviar"
-#: src/view/screens/ProfileList.tsx:607
+#: src/view/screens/ProfileList.tsx:608
msgid "Subscribe"
msgstr "Suscribirse"
@@ -3727,11 +3897,11 @@ msgstr "Suscribirse"
msgid "Subscribe to the {0} feed"
msgstr ""
-#: src/view/screens/ProfileList.tsx:603
+#: src/view/screens/ProfileList.tsx:604
msgid "Subscribe to this list"
msgstr "Suscribirse a esta lista"
-#: src/view/screens/Search/Search.tsx:373
+#: src/view/screens/Search/Search.tsx:374
msgid "Suggested Follows"
msgstr "Usuarios sugeridos a seguir"
@@ -3775,6 +3945,14 @@ msgstr ""
msgid "System log"
msgstr "BitƔcora del sistema"
+#: src/components/dialogs/MutedWords.tsx:288
+msgid "tag"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:74
+msgid "Tag menu: {tag}"
+msgstr ""
+
#: src/view/com/modals/crop-image/CropImage.web.tsx:112
msgid "Tall"
msgstr "Alto"
@@ -3787,7 +3965,7 @@ msgstr ""
msgid "Tech"
msgstr ""
-#: src/view/shell/desktop/RightNav.tsx:89
+#: src/view/shell/desktop/RightNav.tsx:81
msgid "Terms"
msgstr "Condiciones"
@@ -3798,12 +3976,20 @@ msgstr "Condiciones"
msgid "Terms of Service"
msgstr "Condiciones de servicio"
+#: src/components/dialogs/MutedWords.tsx:288
+msgid "text"
+msgstr ""
+
#: src/view/com/modals/AppealLabel.tsx:70
#: src/view/com/modals/report/InputIssueDetails.tsx:51
msgid "Text input field"
msgstr "Campo de introducción de texto"
-#: src/view/com/profile/ProfileHeader.tsx:262
+#: src/view/com/auth/create/CreateAccount.tsx:94
+msgid "That handle is already taken."
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:263
msgid "The account will be able to interact with you after unblocking."
msgstr "La cuenta podrĆ” interactuar contigo tras el desbloqueo."
@@ -3819,7 +4005,7 @@ msgstr "La PolĆtica de derechos de autor se han trasladado a <0/>"
msgid "The following steps will help customize your Bluesky experience."
msgstr ""
-#: src/view/com/post-thread/PostThread.tsx:453
+#: src/view/com/post-thread/PostThread.tsx:517
msgid "The post may have been deleted."
msgstr "Es posible que se haya borrado la publicación."
@@ -3839,7 +4025,7 @@ msgstr "Las condiciones de servicio se han trasladado a"
msgid "There are many feeds to try:"
msgstr ""
-#: src/view/screens/ProfileFeed.tsx:549
+#: src/view/screens/ProfileFeed.tsx:550
msgid "There was an an issue contacting the server, please check your internet connection and try again."
msgstr ""
@@ -3847,12 +4033,12 @@ msgstr ""
msgid "There was an an issue removing this feed. Please check your internet connection and try again."
msgstr ""
-#: src/view/screens/ProfileFeed.tsx:209
+#: src/view/screens/ProfileFeed.tsx:210
msgid "There was an an issue updating your feeds, please check your internet connection and try again."
msgstr ""
-#: src/view/screens/ProfileFeed.tsx:236
-#: src/view/screens/ProfileList.tsx:266
+#: src/view/screens/ProfileFeed.tsx:237
+#: src/view/screens/ProfileList.tsx:267
#: src/view/screens/SavedFeeds.tsx:209
#: src/view/screens/SavedFeeds.tsx:231
#: src/view/screens/SavedFeeds.tsx:252
@@ -3861,9 +4047,9 @@ msgstr ""
#: src/view/com/auth/onboarding/RecommendedFeedsItem.tsx:57
#: src/view/com/auth/onboarding/RecommendedFeedsItem.tsx:66
-#: src/view/com/feeds/FeedSourceCard.tsx:113
-#: src/view/com/feeds/FeedSourceCard.tsx:127
-#: src/view/com/feeds/FeedSourceCard.tsx:181
+#: src/view/com/feeds/FeedSourceCard.tsx:115
+#: src/view/com/feeds/FeedSourceCard.tsx:129
+#: src/view/com/feeds/FeedSourceCard.tsx:183
msgid "There was an issue contacting your server"
msgstr ""
@@ -3895,19 +4081,19 @@ msgstr ""
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:93
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:105
-#: src/view/com/profile/ProfileHeader.tsx:156
-#: src/view/com/profile/ProfileHeader.tsx:177
-#: src/view/com/profile/ProfileHeader.tsx:216
-#: src/view/com/profile/ProfileHeader.tsx:229
-#: src/view/com/profile/ProfileHeader.tsx:249
-#: src/view/com/profile/ProfileHeader.tsx:271
+#: src/view/com/profile/ProfileHeader.tsx:157
+#: src/view/com/profile/ProfileHeader.tsx:178
+#: src/view/com/profile/ProfileHeader.tsx:217
+#: src/view/com/profile/ProfileHeader.tsx:230
+#: src/view/com/profile/ProfileHeader.tsx:250
+#: src/view/com/profile/ProfileHeader.tsx:272
msgid "There was an issue! {0}"
msgstr ""
-#: src/view/screens/ProfileList.tsx:287
-#: src/view/screens/ProfileList.tsx:306
-#: src/view/screens/ProfileList.tsx:328
-#: src/view/screens/ProfileList.tsx:347
+#: src/view/screens/ProfileList.tsx:288
+#: src/view/screens/ProfileList.tsx:307
+#: src/view/screens/ProfileList.tsx:329
+#: src/view/screens/ProfileList.tsx:348
msgid "There was an issue. Please check your internet connection and try again."
msgstr ""
@@ -3920,8 +4106,8 @@ msgid "There's been a rush of new users to Bluesky! We'll activate your account
msgstr ""
#: src/view/com/auth/create/Step2.tsx:55
-msgid "There's something wrong with this number. Please choose your country and enter your full phone number!"
-msgstr ""
+#~ msgid "There's something wrong with this number. Please choose your country and enter your full phone number!"
+#~ msgstr ""
#: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:138
msgid "These are popular accounts you might like:"
@@ -3956,8 +4142,8 @@ msgid "This feed is currently receiving high traffic and is temporarily unavaila
msgstr "Este canal de noticias estƔ recibiendo mucho trƔfico y no estƔ disponible temporalmente. Vuelve a intentarlo mƔs tarde."
#: src/view/screens/Profile.tsx:420
-#: src/view/screens/ProfileFeed.tsx:475
-#: src/view/screens/ProfileList.tsx:660
+#: src/view/screens/ProfileFeed.tsx:476
+#: src/view/screens/ProfileList.tsx:661
msgid "This feed is empty!"
msgstr ""
@@ -3985,7 +4171,7 @@ msgstr ""
msgid "This name is already in use"
msgstr ""
-#: src/view/com/post-thread/PostThreadItem.tsx:122
+#: src/view/com/post-thread/PostThreadItem.tsx:125
msgid "This post has been deleted."
msgstr "Esta publicación ha sido eliminada."
@@ -4009,7 +4195,11 @@ msgstr ""
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:192
+#: src/components/dialogs/MutedWords.tsx:236
+msgid "This will delete {0} from your muted words. You can always add it back later."
+msgstr ""
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:237
msgid "This will hide this post from your feeds."
msgstr "Esto ocultarĆ” esta entrada de tus contenidos."
@@ -4022,10 +4212,14 @@ msgstr "Preferencias de hilos"
msgid "Threaded Mode"
msgstr "Modo con hilos"
-#: src/Navigation.tsx:252
+#: src/Navigation.tsx:255
msgid "Threads Preferences"
msgstr ""
+#: src/components/dialogs/MutedWords.tsx:95
+msgid "Toggle between muted word options."
+msgstr ""
+
#: src/view/com/util/forms/DropdownButton.tsx:246
msgid "Toggle dropdown"
msgstr "Conmutar el menĆŗ desplegable"
@@ -4034,9 +4228,9 @@ msgstr "Conmutar el menĆŗ desplegable"
msgid "Transformations"
msgstr "Transformaciones"
-#: src/view/com/post-thread/PostThreadItem.tsx:686
-#: src/view/com/post-thread/PostThreadItem.tsx:688
-#: src/view/com/util/forms/PostDropdownBtn.tsx:125
+#: src/view/com/post-thread/PostThreadItem.tsx:685
+#: src/view/com/post-thread/PostThreadItem.tsx:687
+#: src/view/com/util/forms/PostDropdownBtn.tsx:156
msgid "Translate"
msgstr "Traducir"
@@ -4045,15 +4239,15 @@ msgctxt "action"
msgid "Try again"
msgstr "Intentar nuevamente"
-#: src/view/screens/ProfileList.tsx:505
+#: src/view/screens/ProfileList.tsx:506
msgid "Un-block list"
msgstr "Desbloquear una lista"
-#: src/view/screens/ProfileList.tsx:490
+#: src/view/screens/ProfileList.tsx:491
msgid "Un-mute list"
msgstr "Desactivar la opción de silenciar la lista"
-#: src/view/com/auth/create/CreateAccount.tsx:66
+#: src/view/com/auth/create/CreateAccount.tsx:58
#: src/view/com/auth/login/ForgotPasswordForm.tsx:87
#: src/view/com/auth/login/Login.tsx:76
#: src/view/com/auth/login/LoginForm.tsx:118
@@ -4061,18 +4255,18 @@ msgstr "Desactivar la opción de silenciar la lista"
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."
-#: src/view/com/profile/ProfileHeader.tsx:432
-#: src/view/screens/ProfileList.tsx:589
+#: src/view/com/profile/ProfileHeader.tsx:433
+#: src/view/screens/ProfileList.tsx:590
msgid "Unblock"
msgstr "Desbloquear"
-#: src/view/com/profile/ProfileHeader.tsx:435
+#: src/view/com/profile/ProfileHeader.tsx:436
msgctxt "action"
msgid "Unblock"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:260
-#: src/view/com/profile/ProfileHeader.tsx:344
+#: src/view/com/profile/ProfileHeader.tsx:261
+#: src/view/com/profile/ProfileHeader.tsx:345
msgid "Unblock Account"
msgstr "Desbloquear una cuenta"
@@ -4088,11 +4282,11 @@ msgctxt "action"
msgid "Unfollow"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:484
+#: src/view/com/profile/ProfileHeader.tsx:485
msgid "Unfollow {0}"
msgstr ""
-#: src/view/com/auth/create/state.ts:300
+#: src/view/com/auth/create/state.ts:262
msgid "Unfortunately, you do not meet the requirements to create an account."
msgstr "Lamentablemente, no cumples los requisitos para crear una cuenta."
@@ -4101,28 +4295,37 @@ msgstr "Lamentablemente, no cumples los requisitos para crear una cuenta."
msgid "Unlike"
msgstr ""
-#: src/view/screens/ProfileList.tsx:596
+#: src/components/TagMenu/index.tsx:253
+#: src/view/screens/ProfileList.tsx:597
msgid "Unmute"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:325
+#: src/components/TagMenu/index.web.tsx:90
+msgid "Unmute {truncatedTag}"
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:326
msgid "Unmute Account"
msgstr "Desactivar la opción de silenciar la cuenta"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:171
+#: src/components/TagMenu/index.tsx:210
+msgid "Unmute all {tag} posts"
+msgstr ""
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:202
msgid "Unmute thread"
msgstr "Desactivar la opción de silenciar el hilo"
-#: src/view/screens/ProfileFeed.tsx:353
-#: src/view/screens/ProfileList.tsx:580
+#: src/view/screens/ProfileFeed.tsx:354
+#: src/view/screens/ProfileList.tsx:581
msgid "Unpin"
msgstr ""
-#: src/view/screens/ProfileList.tsx:473
+#: src/view/screens/ProfileList.tsx:474
msgid "Unpin moderation list"
msgstr "Desanclar la lista de moderación"
-#: src/view/screens/ProfileFeed.tsx:345
+#: src/view/screens/ProfileFeed.tsx:346
msgid "Unsave"
msgstr ""
@@ -4184,11 +4387,11 @@ msgstr ""
msgid "User Blocks You"
msgstr ""
-#: src/view/com/auth/create/Step3.tsx:41
+#: src/view/com/auth/create/Step2.tsx:79
msgid "User handle"
msgstr "Identificador del usuario"
-#: src/view/com/lists/ListCard.tsx:84
+#: src/view/com/lists/ListCard.tsx:85
#: src/view/com/modals/UserAddRemoveLists.tsx:198
msgid "User list by {0}"
msgstr ""
@@ -4197,7 +4400,7 @@ msgstr ""
msgid "User list by <0/>"
msgstr ""
-#: src/view/com/lists/ListCard.tsx:82
+#: src/view/com/lists/ListCard.tsx:83
#: src/view/com/modals/UserAddRemoveLists.tsx:196
#: src/view/screens/ProfileList.tsx:760
msgid "User list by you"
@@ -4233,8 +4436,8 @@ msgid "Users in \"{0}\""
msgstr "Usuarios en Ā«{0}Ā»"
#: src/view/com/auth/create/Step2.tsx:243
-msgid "Verification code"
-msgstr ""
+#~ msgid "Verification code"
+#~ msgstr ""
#: src/view/screens/Settings/index.tsx:910
msgid "Verify email"
@@ -4261,7 +4464,7 @@ msgstr ""
msgid "Video Games"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:661
+#: src/view/com/profile/ProfileHeader.tsx:662
msgid "View {0}'s avatar"
msgstr ""
@@ -4310,6 +4513,10 @@ msgstr ""
#~ msgid "We recommend \"For You\" by Skygaze:"
#~ msgstr ""
+#: src/components/dialogs/MutedWords.tsx:161
+msgid "We recommend avoiding common words that appear in many posts, since it can result in no posts being shown."
+msgstr ""
+
#: src/screens/Onboarding/StepAlgoFeeds/index.tsx:124
msgid "We recommend our \"Discover\" feed:"
msgstr ""
@@ -4330,15 +4537,19 @@ msgstr ""
msgid "We'll use this to help customize your experience."
msgstr ""
-#: src/view/com/auth/create/CreateAccount.tsx:123
+#: src/view/com/auth/create/CreateAccount.tsx:134
msgid "We're so excited to have you join us!"
msgstr "”Nos hace mucha ilusión que te unas a nosotros!"
-#: src/view/screens/ProfileList.tsx:85
+#: src/view/screens/ProfileList.tsx:86
msgid "We're sorry, but we were unable to resolve this list. If this persists, please contact the list creator, @{handleOrDid}."
msgstr ""
-#: src/view/screens/Search/Search.tsx:253
+#: src/components/dialogs/MutedWords.tsx:182
+msgid "We're sorry, but we weren't able to load your muted words at this time. Please try again."
+msgstr ""
+
+#: src/view/screens/Search/Search.tsx:254
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."
@@ -4358,8 +4569,8 @@ msgstr ""
msgid "What is the issue with this {collectionName}?"
msgstr "¿CuÔl es el problema con esta {collectionName}?"
-#: src/view/com/auth/SplashScreen.tsx:34
-#: src/view/com/composer/Composer.tsx:279
+#: src/view/com/auth/SplashScreen.tsx:59
+#: src/view/com/composer/Composer.tsx:286
msgid "What's up?"
msgstr "¿Qué hay de nuevo?"
@@ -4380,11 +4591,11 @@ msgstr "QuiƩn puede responder"
msgid "Wide"
msgstr "Ancho"
-#: src/view/com/composer/Composer.tsx:415
+#: src/view/com/composer/Composer.tsx:422
msgid "Write post"
msgstr "Redactar una publicación"
-#: src/view/com/composer/Composer.tsx:278
+#: src/view/com/composer/Composer.tsx:285
#: src/view/com/composer/Prompt.tsx:33
msgid "Write your reply"
msgstr "Redactar tu respuesta"
@@ -4394,14 +4605,14 @@ msgid "Writers"
msgstr ""
#: src/view/com/auth/create/Step2.tsx:263
-msgid "XXXXXX"
-msgstr ""
+#~ msgid "XXXXXX"
+#~ msgstr ""
#: src/view/com/composer/select-language/SuggestedLanguage.tsx:77
-#: 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/PreferencesFollowingFeed.tsx:129
+#: src/view/screens/PreferencesFollowingFeed.tsx:201
+#: src/view/screens/PreferencesFollowingFeed.tsx:236
+#: src/view/screens/PreferencesFollowingFeed.tsx:271
#: src/view/screens/PreferencesThreads.tsx:106
#: src/view/screens/PreferencesThreads.tsx:129
msgid "Yes"
@@ -4441,7 +4652,7 @@ msgstr "”Aún no tienes códigos de invitación! Te enviaremos algunos cuando l
msgid "You don't have any pinned feeds."
msgstr "No tienes ninguna noticia anclada."
-#: src/view/screens/Feeds.tsx:451
+#: src/view/screens/Feeds.tsx:452
msgid "You don't have any saved feeds!"
msgstr "”No tienes ninguna noticia guardada!"
@@ -4449,7 +4660,7 @@ 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:401
+#: src/view/com/post-thread/PostThread.tsx:465
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."
@@ -4489,6 +4700,10 @@ msgstr "Aún no has creado ninguna contraseña de aplicación. Puedes crear una
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."
+#: src/components/dialogs/MutedWords.tsx:202
+msgid "You haven't muted any words or tags yet"
+msgstr ""
+
#: src/view/com/modals/ContentFilteringSettings.tsx:175
msgid "You must be 18 or older to enable adult content."
msgstr ""
@@ -4497,11 +4712,11 @@ msgstr ""
msgid "You must be 18 years or older to enable adult content"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:98
+#: src/view/com/util/forms/PostDropdownBtn.tsx:129
msgid "You will no longer receive notifications for this thread"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:101
+#: src/view/com/util/forms/PostDropdownBtn.tsx:132
msgid "You will now receive notifications for this thread"
msgstr ""
@@ -4539,7 +4754,7 @@ msgstr ""
msgid "Your account repository, containing all public data records, can be downloaded as a \"CAR\" file. This file does not include media embeds, such as images, or your private data, which must be fetched separately."
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:234
+#: src/view/com/auth/create/Step1.tsx:238
msgid "Your birth date"
msgstr "Tu fecha de nacimiento"
@@ -4551,7 +4766,7 @@ msgstr ""
msgid "Your default feed is \"Following\""
msgstr ""
-#: src/view/com/auth/create/state.ts:153
+#: src/view/com/auth/create/state.ts:110
#: src/view/com/auth/login/ForgotPasswordForm.tsx:70
#: src/view/com/modals/ChangePassword.tsx:54
msgid "Your email appears to be invalid."
@@ -4573,7 +4788,7 @@ msgstr "Tu correo electrónico aún no ha sido verificado. Este es un paso de se
msgid "Your following feed is empty! Follow more users to see what's happening."
msgstr ""
-#: src/view/com/auth/create/Step3.tsx:45
+#: src/view/com/auth/create/Step2.tsx:83
msgid "Your full handle will be"
msgstr "Tu identificador completo serĆ”"
@@ -4587,11 +4802,15 @@ msgstr ""
#~ 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"
+#: src/components/dialogs/MutedWords.tsx:173
+msgid "Your muted words"
+msgstr ""
+
#: src/view/com/modals/ChangePassword.tsx:155
msgid "Your password has been changed successfully!"
msgstr ""
-#: src/view/com/composer/Composer.tsx:267
+#: src/view/com/composer/Composer.tsx:274
msgid "Your post has been published"
msgstr ""
@@ -4606,10 +4825,10 @@ msgstr "Tus publicaciones, Me gustas y bloqueos son pĆŗblicos. Las cuentas silen
msgid "Your profile"
msgstr "Tu perfil"
-#: src/view/com/composer/Composer.tsx:266
+#: src/view/com/composer/Composer.tsx:273
msgid "Your reply has been published"
msgstr ""
-#: src/view/com/auth/create/Step3.tsx:28
+#: src/view/com/auth/create/Step2.tsx:65
msgid "Your user handle"
msgstr "Tu identificador del usuario"
diff --git a/src/locale/locales/fr/messages.po b/src/locale/locales/fr/messages.po
index 932cf681d1..44b9fb9a2b 100644
--- a/src/locale/locales/fr/messages.po
+++ b/src/locale/locales/fr/messages.po
@@ -21,7 +21,7 @@ msgstr "(pas dāe-mail)"
#~ msgid "{0, plural, one {# invite code available} other {# invite codes available}}"
#~ msgstr "{0, plural, one {# code dāinvitation disponible} other {# codes dāinvitations disponibles}}"
-#: src/view/com/profile/ProfileHeader.tsx:592
+#: src/view/com/profile/ProfileHeader.tsx:593
msgid "{following} following"
msgstr "{following} abonnements"
@@ -51,7 +51,7 @@ msgstr "{numUnreadNotifications} non lus"
msgid "<0/> members"
msgstr "<0/> membres"
-#: src/view/com/profile/ProfileHeader.tsx:594
+#: src/view/com/profile/ProfileHeader.tsx:595
msgid "<0>{following} 0><1>following1>"
msgstr "<0>{following} 0><1>abonnements1>"
@@ -67,7 +67,7 @@ msgstr "<0>Suivre certains0><1>comptes1><2>recommandƩs2>"
msgid "<0>Welcome to0><1>Bluesky1>"
msgstr "<0>Bienvenue sur0><1>Bluesky1>"
-#: src/view/com/profile/ProfileHeader.tsx:557
+#: src/view/com/profile/ProfileHeader.tsx:558
msgid "ā Invalid Handle"
msgstr "ā Pseudo invalide"
@@ -80,11 +80,11 @@ msgid "A new version of the app is available. Please update to continue using th
msgstr "Une nouvelle version de lāapplication est disponible. Veuillez faire la mise Ć jour pour continuer Ć utiliser lāapplication."
#: src/view/com/util/ViewHeader.tsx:83
-#: src/view/screens/Search/Search.tsx:624
+#: src/view/screens/Search/Search.tsx:647
msgid "Access navigation links and settings"
msgstr "AccĆØde aux liens de navigation et aux paramĆØtres"
-#: src/view/com/pager/FeedsTabBarMobile.tsx:89
+#: src/view/com/home/HomeHeaderLayoutMobile.tsx:51
msgid "Access profile and other navigation links"
msgstr "AccĆØde au profil et aux autres liens de navigation"
@@ -99,11 +99,11 @@ msgstr "AccessibilitƩ"
msgid "Account"
msgstr "Compte"
-#: src/view/com/profile/ProfileHeader.tsx:245
+#: src/view/com/profile/ProfileHeader.tsx:246
msgid "Account blocked"
msgstr "Compte bloquƩ"
-#: src/view/com/profile/ProfileHeader.tsx:212
+#: src/view/com/profile/ProfileHeader.tsx:213
msgid "Account muted"
msgstr "Compte masquƩ"
@@ -123,14 +123,15 @@ msgstr "Options de compte"
msgid "Account removed from quick access"
msgstr "Compte supprimĆ© de lāaccĆØs rapide"
-#: src/view/com/profile/ProfileHeader.tsx:267
+#: src/view/com/profile/ProfileHeader.tsx:268
msgid "Account unblocked"
msgstr "Compte dƩbloquƩ"
-#: src/view/com/profile/ProfileHeader.tsx:225
+#: src/view/com/profile/ProfileHeader.tsx:226
msgid "Account unmuted"
msgstr "Compte dƩmasquƩ"
+#: src/components/dialogs/MutedWords.tsx:147
#: src/view/com/auth/onboarding/RecommendedFeedsItem.tsx:150
#: src/view/com/modals/ListAddRemoveUsers.tsx:264
#: src/view/com/modals/UserAddRemoveLists.tsx:219
@@ -172,24 +173,32 @@ msgstr "Ajouter des dƩtails"
msgid "Add details to report"
msgstr "Ajouter des dƩtails au rapport"
-#: src/view/com/composer/Composer.tsx:446
+#: src/view/com/composer/Composer.tsx:453
msgid "Add link card"
msgstr "Ajouter une carte de lien"
-#: src/view/com/composer/Composer.tsx:451
+#: src/view/com/composer/Composer.tsx:458
msgid "Add link card:"
msgstr "Ajouter une carte de lien :"
+#: src/components/dialogs/MutedWords.tsx:140
+msgid "Add mute word for configured settings"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:74
+msgid "Add muted words and tags"
+msgstr ""
+
#: src/view/com/modals/ChangeHandle.tsx:417
msgid "Add the following DNS record to your domain:"
msgstr "Ajoutez lāenregistrement DNS suivant Ć votre domaine :"
-#: src/view/com/profile/ProfileHeader.tsx:309
+#: src/view/com/profile/ProfileHeader.tsx:310
msgid "Add to Lists"
msgstr "Ajouter aux listes"
-#: src/view/com/feeds/FeedSourceCard.tsx:243
-#: src/view/screens/ProfileFeed.tsx:272
+#: src/view/com/feeds/FeedSourceCard.tsx:245
+#: src/view/screens/ProfileFeed.tsx:273
msgid "Add to my feeds"
msgstr "Ajouter Ć mes fils dāactu"
@@ -202,11 +211,11 @@ msgstr "AjoutƩ"
msgid "Added to list"
msgstr "Ajouté à la liste"
-#: src/view/com/feeds/FeedSourceCard.tsx:125
+#: src/view/com/feeds/FeedSourceCard.tsx:127
msgid "Added to my feeds"
msgstr "AjoutĆ© Ć mes fils dāactu"
-#: src/view/screens/PreferencesHomeFeed.tsx:173
+#: src/view/screens/PreferencesFollowingFeed.tsx:173
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Ć©."
@@ -226,6 +235,10 @@ msgstr "Le contenu pour adultes ne peut être activé que via le Web à <0/>."
msgid "Advanced"
msgstr "AvancƩ"
+#: src/view/screens/Feeds.tsx:666
+msgid "All the feeds you've saved, right in one place."
+msgstr ""
+
#: src/view/com/auth/login/ForgotPasswordForm.tsx:221
#: src/view/com/modals/ChangePassword.tsx:168
msgid "Already have a code?"
@@ -299,7 +312,7 @@ msgstr "ParamĆØtres de mot de passe dāapplication"
msgid "App Passwords"
msgstr "Mots de passe dāapplication"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:250
+#: src/view/com/util/forms/PostDropdownBtn.tsx:295
msgid "Appeal content warning"
msgstr "Faire appel de lāavertissement sur le contenu"
@@ -323,15 +336,16 @@ msgstr "Affichage"
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} Ā» ?"
-#: src/view/com/composer/Composer.tsx:143
+#: src/view/com/composer/Composer.tsx:150
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:364
+#: src/components/dialogs/MutedWords.tsx:233
+#: src/view/screens/ProfileList.tsx:365
msgid "Are you sure?"
msgstr "Vous confirmez ?"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:233
+#: src/view/com/util/forms/PostDropdownBtn.tsx:278
msgid "Are you sure? This cannot be undone."
msgstr "Vous confirmez ? Cela ne pourra pas être annulé."
@@ -347,21 +361,21 @@ msgstr ""
msgid "Artistic or non-erotic nudity."
msgstr "NuditƩ artistique ou non Ʃrotique."
-#: src/view/com/auth/create/CreateAccount.tsx:147
+#: src/view/com/auth/create/CreateAccount.tsx:158
#: src/view/com/auth/login/ChooseAccountForm.tsx:151
#: src/view/com/auth/login/ForgotPasswordForm.tsx:174
#: src/view/com/auth/login/LoginForm.tsx:259
#: src/view/com/auth/login/SetNewPasswordForm.tsx:179
#: src/view/com/modals/report/InputIssueDetails.tsx:46
-#: src/view/com/post-thread/PostThread.tsx:408
-#: src/view/com/post-thread/PostThread.tsx:458
-#: src/view/com/post-thread/PostThread.tsx:466
-#: src/view/com/profile/ProfileHeader.tsx:648
+#: src/view/com/post-thread/PostThread.tsx:472
+#: src/view/com/post-thread/PostThread.tsx:522
+#: src/view/com/post-thread/PostThread.tsx:530
+#: src/view/com/profile/ProfileHeader.tsx:649
#: src/view/com/util/ViewHeader.tsx:81
msgid "Back"
msgstr "ArriĆØre"
-#: src/view/com/post-thread/PostThread.tsx:416
+#: src/view/com/post-thread/PostThread.tsx:480
msgctxt "action"
msgid "Back"
msgstr "Retour"
@@ -374,7 +388,7 @@ msgstr ""
msgid "Basics"
msgstr "Principes de base"
-#: src/view/com/auth/create/Step1.tsx:246
+#: src/view/com/auth/create/Step1.tsx:250
#: src/view/com/modals/BirthDateSettings.tsx:73
msgid "Birthday"
msgstr "Date de naissance"
@@ -383,33 +397,33 @@ msgstr "Date de naissance"
msgid "Birthday:"
msgstr "Date de naissance :"
-#: src/view/com/profile/ProfileHeader.tsx:238
-#: src/view/com/profile/ProfileHeader.tsx:345
+#: src/view/com/profile/ProfileHeader.tsx:239
+#: src/view/com/profile/ProfileHeader.tsx:346
msgid "Block Account"
msgstr "Bloquer ce compte"
-#: src/view/screens/ProfileList.tsx:555
+#: src/view/screens/ProfileList.tsx:556
msgid "Block accounts"
msgstr "Bloquer ces comptes"
-#: src/view/screens/ProfileList.tsx:505
+#: src/view/screens/ProfileList.tsx:506
msgid "Block list"
msgstr "Liste de blocage"
-#: src/view/screens/ProfileList.tsx:315
+#: src/view/screens/ProfileList.tsx:316
msgid "Block these accounts?"
msgstr "Bloquer ces comptes ?"
-#: src/view/screens/ProfileList.tsx:319
+#: src/view/screens/ProfileList.tsx:320
msgid "Block this List"
msgstr "Bloquer cette liste"
-#: src/view/com/lists/ListCard.tsx:109
-#: src/view/com/util/post-embeds/QuoteEmbed.tsx:60
+#: src/view/com/lists/ListCard.tsx:110
+#: src/view/com/util/post-embeds/QuoteEmbed.tsx:61
msgid "Blocked"
msgstr "BloquƩ"
-#: src/view/screens/Moderation.tsx:123
+#: src/view/screens/Moderation.tsx:142
msgid "Blocked accounts"
msgstr "Comptes bloquƩs"
@@ -418,7 +432,7 @@ msgstr "Comptes bloquƩs"
msgid "Blocked Accounts"
msgstr "Comptes bloquƩs"
-#: src/view/com/profile/ProfileHeader.tsx:240
+#: src/view/com/profile/ProfileHeader.tsx:241
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."
@@ -426,15 +440,16 @@ msgstr "Les comptes bloqués ne peuvent pas répondre à vos discussions, vous m
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:267
+#: src/view/com/post-thread/PostThread.tsx:324
msgid "Blocked post."
msgstr "Post bloquƩ."
-#: src/view/screens/ProfileList.tsx:317
+#: src/view/screens/ProfileList.tsx:318
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."
#: src/view/com/auth/HomeLoggedOutCTA.tsx:93
+#: src/view/com/auth/SplashScreen.web.tsx:133
msgid "Blog"
msgstr "Blog"
@@ -467,7 +482,7 @@ msgstr "Bluesky est public."
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 distribue des invitations pour construire une communautĆ© plus saine. Si personne ne peut vous donner une invitation, vous pouvez vous inscrire sur notre liste dāattente et nous vous en enverrons une bientĆ“t."
-#: src/view/screens/Moderation.tsx:226
+#: src/view/screens/Moderation.tsx:245
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 nāaffichera pas votre profil et vos messages Ć des personnes non connectĆ©es. Il est possible que dāautres applications nāhonorent pas cette demande. Cela ne privatise pas votre compte."
@@ -484,6 +499,7 @@ msgid "Build version {0} {1}"
msgstr "Version Build {0} {1}"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:87
+#: src/view/com/auth/SplashScreen.web.tsx:128
msgid "Business"
msgstr "Affaires"
@@ -518,8 +534,8 @@ msgid "Can only contain letters, numbers, spaces, dashes, and underscores. Must
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/components/Prompt.tsx:91
-#: src/view/com/composer/Composer.tsx:300
-#: src/view/com/composer/Composer.tsx:305
+#: src/view/com/composer/Composer.tsx:307
+#: src/view/com/composer/Composer.tsx:312
#: src/view/com/modals/ChangeEmail.tsx:218
#: src/view/com/modals/ChangeEmail.tsx:220
#: src/view/com/modals/ChangePassword.tsx:265
@@ -533,7 +549,7 @@ msgstr "Ne peut contenir que des lettres, des chiffres, des espaces, des tirets
#: src/view/com/modals/VerifyEmail.tsx:247
#: src/view/com/modals/VerifyEmail.tsx:253
#: src/view/com/modals/Waitlist.tsx:142
-#: src/view/screens/Search/Search.tsx:693
+#: src/view/screens/Search/Search.tsx:716
#: src/view/shell/desktop/Search.tsx:238
msgid "Cancel"
msgstr "Annuler"
@@ -661,7 +677,7 @@ msgstr "Choisissez les algorithmes qui alimentent votre expƩrience avec des fil
msgid "Choose your main feeds"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:215
+#: src/view/com/auth/create/Step1.tsx:219
msgid "Choose your password"
msgstr "Choisissez votre mot de passe"
@@ -684,7 +700,7 @@ 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:88
-#: src/view/screens/Search/Search.tsx:674
+#: src/view/screens/Search/Search.tsx:697
msgid "Clear search query"
msgstr "Effacer la recherche"
@@ -692,6 +708,11 @@ msgstr "Effacer la recherche"
msgid "click here"
msgstr "cliquez ici"
+#: src/components/RichText.tsx:189
+#: src/components/TagMenu/index.web.tsx:125
+msgid "Click here to open tag menu for {tag}"
+msgstr ""
+
#: src/screens/Onboarding/index.tsx:35
msgid "Climate"
msgstr ""
@@ -701,7 +722,8 @@ msgstr ""
msgid "Close"
msgstr ""
-#: src/components/Dialog/index.web.tsx:78
+#: src/components/Dialog/index.web.tsx:80
+#: src/components/Dialog/index.web.tsx:194
msgid "Close active dialog"
msgstr ""
@@ -721,11 +743,15 @@ msgstr "Fermer lāimage"
msgid "Close image viewer"
msgstr "Fermer la visionneuse dāimages"
-#: src/view/shell/index.web.tsx:49
+#: src/view/shell/index.web.tsx:51
msgid "Close navigation footer"
msgstr "Fermer le pied de page de navigation"
-#: src/view/shell/index.web.tsx:50
+#: src/components/TagMenu/index.tsx:266
+msgid "Close this dialog"
+msgstr ""
+
+#: src/view/shell/index.web.tsx:52
msgid "Closes bottom navigation bar"
msgstr "Ferme la barre de navigation du bas"
@@ -733,7 +759,7 @@ msgstr "Ferme la barre de navigation du bas"
msgid "Closes password update alert"
msgstr "Ferme la notification de mise Ć jour du mot de passe"
-#: src/view/com/composer/Composer.tsx:302
+#: src/view/com/composer/Composer.tsx:309
msgid "Closes post composer and discards post draft"
msgstr "Ferme la fenêtre de rédaction et supprime le brouillon"
@@ -762,7 +788,11 @@ msgstr "Directives communautaires"
msgid "Complete onboarding and start using your account"
msgstr ""
-#: src/view/com/composer/Composer.tsx:417
+#: src/view/com/auth/create/Step3.tsx:73
+msgid "Complete the challenge"
+msgstr ""
+
+#: src/view/com/composer/Composer.tsx:424
msgid "Compose posts up to {MAX_GRAPHEME_LENGTH} characters in length"
msgstr "Permet dāĆ©crire des messages de {MAX_GRAPHEME_LENGTH} caractĆØres maximum"
@@ -779,7 +809,7 @@ msgstr ""
#: src/view/com/modals/SelfLabel.tsx:154
#: src/view/com/modals/VerifyEmail.tsx:231
#: src/view/com/modals/VerifyEmail.tsx:233
-#: src/view/screens/PreferencesHomeFeed.tsx:308
+#: src/view/screens/PreferencesFollowingFeed.tsx:308
#: src/view/screens/PreferencesThreads.tsx:159
msgid "Confirm"
msgstr "Confirmer"
@@ -817,16 +847,16 @@ msgstr "Code de confirmation"
msgid "Confirms signing up {email} to the waitlist"
msgstr "Confirme lāinscription de {email} sur la liste dāattente"
-#: src/view/com/auth/create/CreateAccount.tsx:182
+#: src/view/com/auth/create/CreateAccount.tsx:193
#: src/view/com/auth/login/LoginForm.tsx:278
msgid "Connecting..."
msgstr "Connexionā¦"
-#: src/view/com/auth/create/CreateAccount.tsx:202
+#: src/view/com/auth/create/CreateAccount.tsx:213
msgid "Contact support"
msgstr ""
-#: src/view/screens/Moderation.tsx:81
+#: src/view/screens/Moderation.tsx:83
msgid "Content filtering"
msgstr "Filtrage du contenu"
@@ -856,7 +886,7 @@ msgstr "Avertissements sur le contenu"
#: src/screens/Onboarding/StepFollowingFeed.tsx:153
#: src/screens/Onboarding/StepInterests/index.tsx:248
#: src/screens/Onboarding/StepModeration/index.tsx:118
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:108
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:114
#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:148
#: src/view/com/auth/onboarding/RecommendedFollows.tsx:209
msgid "Continue"
@@ -865,7 +895,7 @@ msgstr "Continuer"
#: src/screens/Onboarding/StepFollowingFeed.tsx:150
#: src/screens/Onboarding/StepInterests/index.tsx:245
#: src/screens/Onboarding/StepModeration/index.tsx:115
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:105
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:111
msgid "Continue to next step"
msgstr ""
@@ -892,7 +922,7 @@ msgstr "Version de build copiƩe dans le presse-papier"
#: src/view/com/modals/AddAppPasswords.tsx:76
#: src/view/com/modals/InviteCodes.tsx:152
-#: src/view/com/util/forms/PostDropdownBtn.tsx:112
+#: src/view/com/util/forms/PostDropdownBtn.tsx:143
msgid "Copied to clipboard"
msgstr "CopiƩ dans le presse-papier"
@@ -904,19 +934,19 @@ msgstr "Copie le mot de passe dāapplication"
msgid "Copy"
msgstr "Copie"
-#: src/view/screens/ProfileList.tsx:417
+#: src/view/screens/ProfileList.tsx:418
msgid "Copy link to list"
msgstr "Copier le lien vers la liste"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:153
+#: src/view/com/util/forms/PostDropdownBtn.tsx:184
msgid "Copy link to post"
msgstr "Copier le lien vers le post"
-#: src/view/com/profile/ProfileHeader.tsx:294
+#: src/view/com/profile/ProfileHeader.tsx:295
msgid "Copy link to profile"
msgstr "Copier le lien vers le profil"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:139
+#: src/view/com/util/forms/PostDropdownBtn.tsx:170
msgid "Copy post text"
msgstr "Copier le texte du post"
@@ -925,7 +955,7 @@ msgstr "Copier le texte du post"
msgid "Copyright Policy"
msgstr "Politique sur les droits dāauteur"
-#: src/view/screens/ProfileFeed.tsx:96
+#: src/view/screens/ProfileFeed.tsx:97
msgid "Could not load feed"
msgstr "Impossible de charger le fil dāactu"
@@ -934,12 +964,12 @@ msgid "Could not load list"
msgstr "Impossible de charger la liste"
#: src/view/com/auth/create/Step2.tsx:91
-msgid "Country"
-msgstr ""
+#~ msgid "Country"
+#~ msgstr ""
#: src/view/com/auth/HomeLoggedOutCTA.tsx:62
-#: src/view/com/auth/SplashScreen.tsx:46
-#: src/view/com/auth/SplashScreen.web.tsx:77
+#: src/view/com/auth/SplashScreen.tsx:71
+#: src/view/com/auth/SplashScreen.web.tsx:81
msgid "Create a new account"
msgstr "CrƩer un nouveau compte"
@@ -947,7 +977,7 @@ msgstr "CrƩer un nouveau compte"
msgid "Create a new Bluesky account"
msgstr "CrƩer un compte Bluesky"
-#: src/view/com/auth/create/CreateAccount.tsx:122
+#: src/view/com/auth/create/CreateAccount.tsx:133
msgid "Create Account"
msgstr "CrƩer un compte"
@@ -956,7 +986,7 @@ msgid "Create App Password"
msgstr "CrĆ©er un mot de passe dāapplication"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:54
-#: src/view/com/auth/SplashScreen.tsx:43
+#: src/view/com/auth/SplashScreen.tsx:68
msgid "Create new account"
msgstr "CrƩer un nouveau compte"
@@ -972,7 +1002,7 @@ msgstr "CrƩƩe par <0/>"
msgid "Created by you"
msgstr "CrƩƩe par vous"
-#: src/view/com/composer/Composer.tsx:448
+#: src/view/com/composer/Composer.tsx:455
msgid "Creates a card with a thumbnail. The card links to {url}"
msgstr "CrƩe une carte avec une miniature. La carte pointe vers {url}"
@@ -990,6 +1020,7 @@ msgid "Custom domain"
msgstr "Domaine personnalisƩ"
#: src/screens/Onboarding/StepAlgoFeeds/index.tsx:106
+#: src/view/screens/Feeds.tsx:692
msgid "Custom feeds built by the community bring you new experiences and help you find the content you love."
msgstr ""
@@ -1031,8 +1062,8 @@ msgstr "Supprimer le compte"
msgid "Delete app password"
msgstr "Supprimer le mot de passe de lāappli"
-#: src/view/screens/ProfileList.tsx:363
-#: src/view/screens/ProfileList.tsx:444
+#: src/view/screens/ProfileList.tsx:364
+#: src/view/screens/ProfileList.tsx:445
msgid "Delete List"
msgstr "Supprimer la liste"
@@ -1048,19 +1079,19 @@ msgstr "Supprimer mon compte"
msgid "Delete My Accountā¦"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:228
+#: src/view/com/util/forms/PostDropdownBtn.tsx:273
msgid "Delete post"
msgstr "Supprimer le post"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:232
+#: src/view/com/util/forms/PostDropdownBtn.tsx:277
msgid "Delete this post?"
msgstr "Supprimer ce post ?"
-#: src/view/com/util/post-embeds/QuoteEmbed.tsx:69
+#: src/view/com/util/post-embeds/QuoteEmbed.tsx:70
msgid "Deleted"
msgstr "SupprimƩ"
-#: src/view/com/post-thread/PostThread.tsx:259
+#: src/view/com/post-thread/PostThread.tsx:316
msgid "Deleted post."
msgstr "Post supprimƩ."
@@ -1075,7 +1106,7 @@ msgstr "Description"
#~ msgid "Developer Tools"
#~ msgstr "Outils de dƩv"
-#: src/view/com/composer/Composer.tsx:211
+#: src/view/com/composer/Composer.tsx:218
msgid "Did you want to say anything?"
msgstr "Vous vouliez dire quelque chose ?"
@@ -1083,15 +1114,15 @@ msgstr "Vous vouliez dire quelque chose ?"
msgid "Dim"
msgstr ""
-#: src/view/com/composer/Composer.tsx:144
+#: src/view/com/composer/Composer.tsx:151
msgid "Discard"
msgstr "Ignorer"
-#: src/view/com/composer/Composer.tsx:138
+#: src/view/com/composer/Composer.tsx:145
msgid "Discard draft"
msgstr "Ignorer le brouillon"
-#: src/view/screens/Moderation.tsx:207
+#: src/view/screens/Moderation.tsx:226
msgid "Discourage apps from showing my account to logged-out users"
msgstr "Empêcher les applis de montrer mon compte aux personnes non connectées"
@@ -1101,8 +1132,12 @@ msgid "Discover new custom feeds"
msgstr "DĆ©couvrir des fils dāactu personnalisĆ©s"
#: src/view/screens/Feeds.tsx:473
-msgid "Discover new feeds"
-msgstr "DĆ©couvrir de nouveaux fils dāactu"
+#~ msgid "Discover new feeds"
+#~ msgstr "DĆ©couvrir de nouveaux fils dāactu"
+
+#: src/view/screens/Feeds.tsx:689
+msgid "Discover New Feeds"
+msgstr ""
#: src/view/com/modals/EditProfile.tsx:192
msgid "Display name"
@@ -1116,7 +1151,7 @@ msgstr "Afficher le nom"
msgid "Domain verified!"
msgstr "Domaine vƩrifiƩ !"
-#: src/view/com/auth/create/Step1.tsx:166
+#: src/view/com/auth/create/Step1.tsx:170
msgid "Don't have an invite code?"
msgstr "Pas de code dāinvitation ?"
@@ -1143,7 +1178,7 @@ msgstr "Terminer"
#: src/view/com/modals/InviteCodes.tsx:80
#: src/view/com/modals/InviteCodes.tsx:123
#: src/view/com/modals/ListAddRemoveUsers.tsx:142
-#: src/view/screens/PreferencesHomeFeed.tsx:311
+#: src/view/screens/PreferencesFollowingFeed.tsx:311
#: src/view/screens/Settings/ExportCarDialog.tsx:93
#: src/view/screens/Settings/ExportCarDialog.tsx:94
msgid "Done"
@@ -1166,7 +1201,7 @@ msgstr ""
msgid "Download CAR file"
msgstr ""
-#: src/view/com/composer/text-input/TextInput.web.tsx:247
+#: src/view/com/composer/text-input/TextInput.web.tsx:249
msgid "Drop to add images"
msgstr ""
@@ -1212,7 +1247,7 @@ msgstr "Modifier"
msgid "Edit image"
msgstr "Modifier lāimage"
-#: src/view/screens/ProfileList.tsx:432
+#: src/view/screens/ProfileList.tsx:433
msgid "Edit list details"
msgstr "Modifier les infos de la liste"
@@ -1230,15 +1265,16 @@ msgstr "Modifier mes fils dāactu"
msgid "Edit my profile"
msgstr "Modifier mon profil"
-#: src/view/com/profile/ProfileHeader.tsx:417
+#: src/view/com/profile/ProfileHeader.tsx:418
msgid "Edit profile"
msgstr "Modifier le profil"
-#: src/view/com/profile/ProfileHeader.tsx:422
+#: src/view/com/profile/ProfileHeader.tsx:423
msgid "Edit Profile"
msgstr "Modifier le profil"
-#: src/view/screens/Feeds.tsx:356
+#: src/view/com/home/HomeHeaderLayout.web.tsx:59
+#: src/view/screens/Feeds.tsx:355
msgid "Edit Saved Feeds"
msgstr "Modifier les fils dāactu enregistrĆ©s"
@@ -1258,16 +1294,14 @@ msgstr "Modifier votre description de profil"
msgid "Education"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:195
-#: src/view/com/auth/create/Step2.tsx:194
-#: src/view/com/auth/create/Step2.tsx:269
+#: src/view/com/auth/create/Step1.tsx:199
#: src/view/com/auth/login/ForgotPasswordForm.tsx:156
#: src/view/com/modals/ChangeEmail.tsx:141
#: src/view/com/modals/Waitlist.tsx:88
msgid "Email"
msgstr "E-mail"
-#: src/view/com/auth/create/Step1.tsx:186
+#: src/view/com/auth/create/Step1.tsx:190
#: src/view/com/auth/login/ForgotPasswordForm.tsx:147
msgid "Email address"
msgstr "Adresse e-mail"
@@ -1310,7 +1344,7 @@ msgstr "Activer les mƩdias externes"
msgid "Enable media players for"
msgstr "Activer les lecteurs mƩdias pour"
-#: src/view/screens/PreferencesHomeFeed.tsx:147
+#: src/view/screens/PreferencesFollowingFeed.tsx:147
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."
@@ -1322,6 +1356,11 @@ msgstr "Fin du fil dāactu"
msgid "Enter a name for this App Password"
msgstr "Entrer un nom pour ce mot de passe dāapplication"
+#: src/components/dialogs/MutedWords.tsx:87
+#: src/components/dialogs/MutedWords.tsx:88
+msgid "Enter a word or tag"
+msgstr ""
+
#: src/view/com/modals/VerifyEmail.tsx:105
msgid "Enter Confirmation Code"
msgstr "Entrer un code de confirmation"
@@ -1338,7 +1377,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/Step1.tsx:247
+#: src/view/com/auth/create/Step1.tsx:251
#: src/view/com/modals/BirthDateSettings.tsx:74
msgid "Enter your birth date"
msgstr "Saisissez votre date de naissance"
@@ -1347,7 +1386,7 @@ msgstr "Saisissez votre date de naissance"
msgid "Enter your email"
msgstr "Entrez votre e-mail"
-#: src/view/com/auth/create/Step1.tsx:191
+#: src/view/com/auth/create/Step1.tsx:195
msgid "Enter your email address"
msgstr "Entrez votre e-mail"
@@ -1360,14 +1399,18 @@ msgid "Enter your new email address below."
msgstr "Entrez votre nouvelle e-mail ci-dessous."
#: src/view/com/auth/create/Step2.tsx:188
-msgid "Enter your phone number"
-msgstr ""
+#~ msgid "Enter your phone number"
+#~ msgstr ""
#: src/view/com/auth/login/Login.tsx:99
msgid "Enter your username and password"
msgstr "Entrez votre pseudo et votre mot de passe"
-#: src/view/screens/Search/Search.tsx:109
+#: src/view/com/auth/create/Step3.tsx:67
+msgid "Error receiving captcha response."
+msgstr ""
+
+#: src/view/screens/Search/Search.tsx:110
msgid "Error:"
msgstr "Erreur :"
@@ -1419,7 +1462,7 @@ msgstr "MƩdia externe"
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 "Les mĆ©dias externes peuvent permettre Ć des sites web de collecter des informations sur vous et votre appareil. Aucune information nāest envoyĆ©e ou demandĆ©e tant que vous nāappuyez pas sur le bouton de lecture."
-#: src/Navigation.tsx:258
+#: src/Navigation.tsx:261
#: src/view/screens/PreferencesExternalEmbeds.tsx:52
#: src/view/screens/Settings/index.tsx:657
msgid "External Media Preferences"
@@ -1438,7 +1481,7 @@ msgstr "Ćchec de la crĆ©ation du mot de passe dāapplication."
msgid "Failed to create the list. Check your internet connection and try again."
msgstr "Ćchec de la crĆ©ation de la liste. VĆ©rifiez votre connexion Internet et rĆ©essayez."
-#: src/view/com/util/forms/PostDropdownBtn.tsx:88
+#: src/view/com/util/forms/PostDropdownBtn.tsx:110
msgid "Failed to delete post, please try again"
msgstr "Ćchec de la suppression du post, veuillez rĆ©essayer"
@@ -1451,25 +1494,26 @@ msgstr "Ćchec du chargement des fils dāactu recommandĆ©s"
msgid "Feed"
msgstr "Fil dāactu"
-#: src/view/com/feeds/FeedSourceCard.tsx:229
+#: src/view/com/feeds/FeedSourceCard.tsx:231
msgid "Feed by {0}"
msgstr "Fil dāactu par {0}"
-#: src/view/screens/Feeds.tsx:631
+#: src/view/screens/Feeds.tsx:605
msgid "Feed offline"
msgstr "Fil dāactu hors ligne"
#: src/view/com/feeds/FeedPage.tsx:143
-msgid "Feed Preferences"
-msgstr "PrĆ©fĆ©rences en matiĆØre de fil dāactu"
+#~ msgid "Feed Preferences"
+#~ msgstr "PrĆ©fĆ©rences en matiĆØre de fil dāactu"
-#: src/view/shell/desktop/RightNav.tsx:69
+#: src/view/shell/desktop/RightNav.tsx:61
#: src/view/shell/Drawer.tsx:311
msgid "Feedback"
msgstr "Feedback"
-#: src/Navigation.tsx:442
-#: src/view/screens/Feeds.tsx:548
+#: src/Navigation.tsx:445
+#: src/view/screens/Feeds.tsx:419
+#: src/view/screens/Feeds.tsx:524
#: src/view/screens/Profile.tsx:184
#: src/view/shell/bottom-bar/BottomBar.tsx:181
#: src/view/shell/desktop/LeftNav.tsx:342
@@ -1494,7 +1538,7 @@ msgstr "Les fils dāactu sont crƩƩs par dāautres personnes pour rassembler
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 qui se construisent avec un peu dāexpertise en programmation. <0/> pour plus dāinformations."
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:70
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:76
msgid "Feeds can be topical as well!"
msgstr ""
@@ -1508,11 +1552,11 @@ msgstr ""
msgid "Find accounts to follow"
msgstr "Trouver des comptes Ć suivre"
-#: src/view/screens/Search/Search.tsx:439
+#: src/view/screens/Search/Search.tsx:440
msgid "Find users on Bluesky"
msgstr "Trouver des comptes sur Bluesky"
-#: src/view/screens/Search/Search.tsx:437
+#: src/view/screens/Search/Search.tsx:438
msgid "Find users with the search tool on the right"
msgstr "Trouvez des comptes Ć lāaide de lāoutil de recherche, Ć droite"
@@ -1520,9 +1564,13 @@ msgstr "Trouvez des comptes Ć lāaide de lāoutil de recherche, Ć droite"
msgid "Finding similar accounts..."
msgstr "Recherche de comptes similairesā¦"
+#: src/view/screens/PreferencesFollowingFeed.tsx:111
+msgid "Fine-tune the content you see on your Following feed."
+msgstr ""
+
#: src/view/screens/PreferencesHomeFeed.tsx:111
-msgid "Fine-tune the content you see on your home screen."
-msgstr "Affine le contenu affichĆ© sur votre Ć©cran dāaccueil."
+#~ msgid "Fine-tune the content you see on your home screen."
+#~ msgstr "Affine le contenu affichĆ© sur votre Ć©cran dāaccueil."
#: src/view/screens/PreferencesThreads.tsx:60
msgid "Fine-tune the discussion threads."
@@ -1547,7 +1595,7 @@ msgstr "Miroir vertical"
#: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:181
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:136
-#: src/view/com/profile/ProfileHeader.tsx:512
+#: src/view/com/profile/ProfileHeader.tsx:513
msgid "Follow"
msgstr "Suivre"
@@ -1558,7 +1606,7 @@ msgstr "Suivre"
#: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:58
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:122
-#: src/view/com/profile/ProfileHeader.tsx:503
+#: src/view/com/profile/ProfileHeader.tsx:504
msgid "Follow {0}"
msgstr "Suivre {0}"
@@ -1582,7 +1630,7 @@ msgstr "Suivi par {0}"
msgid "Followed users"
msgstr "Comptes suivis"
-#: src/view/screens/PreferencesHomeFeed.tsx:154
+#: src/view/screens/PreferencesFollowingFeed.tsx:154
msgid "Followed users only"
msgstr "Comptes suivis uniquement"
@@ -1595,16 +1643,24 @@ msgid "Followers"
msgstr "Abonné·e·s"
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:136
-#: src/view/com/profile/ProfileHeader.tsx:494
+#: src/view/com/profile/ProfileHeader.tsx:495
#: src/view/screens/ProfileFollows.tsx:25
msgid "Following"
msgstr "Suivi"
-#: src/view/com/profile/ProfileHeader.tsx:148
+#: src/view/com/profile/ProfileHeader.tsx:149
msgid "Following {0}"
msgstr "Suit {0}"
-#: src/view/com/profile/ProfileHeader.tsx:545
+#: src/Navigation.tsx:248
+#: src/view/com/home/HomeHeaderLayout.web.tsx:45
+#: src/view/com/home/HomeHeaderLayoutMobile.tsx:83
+#: src/view/screens/PreferencesFollowingFeed.tsx:104
+#: src/view/screens/Settings/index.tsx:543
+msgid "Following Feed Preferences"
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:546
msgid "Follows you"
msgstr "Vous suit"
@@ -1658,8 +1714,8 @@ msgstr "Cāest parti"
msgid "Go back"
msgstr "Retour"
-#: src/view/screens/ProfileFeed.tsx:105
-#: src/view/screens/ProfileFeed.tsx:110
+#: src/view/screens/ProfileFeed.tsx:106
+#: src/view/screens/ProfileFeed.tsx:111
#: src/view/screens/ProfileList.tsx:897
#: src/view/screens/ProfileList.tsx:902
msgid "Go Back"
@@ -1670,7 +1726,7 @@ msgstr "Retour"
msgid "Go back to previous step"
msgstr ""
-#: src/view/screens/Search/Search.tsx:724
+#: src/view/screens/Search/Search.tsx:747
#: src/view/shell/desktop/Search.tsx:262
msgid "Go to @{queryMaybeHandle}"
msgstr ""
@@ -1687,11 +1743,15 @@ msgstr "Aller Ć la suite"
msgid "Handle"
msgstr "Pseudo"
-#: src/view/com/auth/create/CreateAccount.tsx:197
+#: src/components/RichText.tsx:188
+msgid "Hashtag: {tag}"
+msgstr ""
+
+#: src/view/com/auth/create/CreateAccount.tsx:208
msgid "Having trouble?"
msgstr ""
-#: src/view/shell/desktop/RightNav.tsx:98
+#: src/view/shell/desktop/RightNav.tsx:90
#: src/view/shell/Drawer.tsx:321
msgid "Help"
msgstr "Aide"
@@ -1700,11 +1760,11 @@ msgstr "Aide"
msgid "Here are some accounts for you to follow"
msgstr ""
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:79
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:85
msgid "Here are some popular topical feeds. You can choose to follow as many as you like."
msgstr ""
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:74
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:80
msgid "Here are some topical feeds based on your interests: {interestsText}. You can choose to follow as many as you like."
msgstr ""
@@ -1725,7 +1785,7 @@ msgctxt "action"
msgid "Hide"
msgstr "Cacher"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:187
+#: src/view/com/util/forms/PostDropdownBtn.tsx:232
msgid "Hide post"
msgstr "Cacher ce post"
@@ -1734,7 +1794,7 @@ msgstr "Cacher ce post"
msgid "Hide the content"
msgstr "Cacher ce contenu"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:191
+#: src/view/com/util/forms/PostDropdownBtn.tsx:236
msgid "Hide this post?"
msgstr "Cacher ce post ?"
@@ -1742,7 +1802,7 @@ msgstr "Cacher ce post ?"
msgid "Hide user list"
msgstr "Cacher la liste des comptes"
-#: src/view/com/profile/ProfileHeader.tsx:486
+#: src/view/com/profile/ProfileHeader.tsx:487
msgid "Hides posts from {0} in your feed"
msgstr "Masque les posts de {0} dans votre fil dāactu"
@@ -1766,7 +1826,7 @@ msgstr "Mmm⦠le serveur de fils dāactu ne rĆ©pond pas. Veuillez informer la
msgid "Hmm, we're having trouble finding this feed. It may have been deleted."
msgstr "Hmm, nous nāarrivons pas Ć trouver ce fil dāactu. Il a peut-ĆŖtre Ć©tĆ© supprimĆ©."
-#: src/Navigation.tsx:432
+#: src/Navigation.tsx:435
#: src/view/shell/bottom-bar/BottomBar.tsx:137
#: src/view/shell/desktop/LeftNav.tsx:306
#: src/view/shell/Drawer.tsx:398
@@ -1778,10 +1838,10 @@ msgstr "Accueil"
#: src/view/com/pager/FeedsTabBarMobile.tsx:123
#: src/view/screens/PreferencesHomeFeed.tsx:104
#: src/view/screens/Settings/index.tsx:543
-msgid "Home Feed Preferences"
-msgstr "PrĆ©fĆ©rences de fils dāactu de lāaccueil"
+#~ msgid "Home Feed Preferences"
+#~ msgstr "PrĆ©fĆ©rences de fils dāactu de lāaccueil"
-#: src/view/com/auth/create/Step1.tsx:78
+#: src/view/com/auth/create/Step1.tsx:82
#: src/view/com/auth/login/ForgotPasswordForm.tsx:120
msgid "Hosting provider"
msgstr "HƩbergeur"
@@ -1835,11 +1895,11 @@ msgstr "Entrez le code envoyé à votre e-mail pour réinitialiser le mot de pas
msgid "Input confirmation code for account deletion"
msgstr "Entrez le code de confirmation pour supprimer le compte"
-#: src/view/com/auth/create/Step1.tsx:196
+#: src/view/com/auth/create/Step1.tsx:200
msgid "Input email for Bluesky account"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:154
+#: src/view/com/auth/create/Step1.tsx:158
msgid "Input invite code to proceed"
msgstr "Entrez le code dāinvitation pour continuer"
@@ -1856,8 +1916,8 @@ msgid "Input password for account deletion"
msgstr "Entrez le mot de passe pour la suppression du compte"
#: src/view/com/auth/create/Step2.tsx:196
-msgid "Input phone number for SMS verification"
-msgstr ""
+#~ msgid "Input phone number for SMS verification"
+#~ msgstr ""
#: src/view/com/auth/login/LoginForm.tsx:230
msgid "Input the password tied to {identifier}"
@@ -1868,8 +1928,8 @@ msgid "Input the username or email address you used at signup"
msgstr "Entrez le pseudo ou lāadresse e-mail que vous avez utilisĆ© lors de lāinscription"
#: src/view/com/auth/create/Step2.tsx:271
-msgid "Input the verification code we have texted to you"
-msgstr ""
+#~ msgid "Input the verification code we have texted to you"
+#~ msgstr ""
#: src/view/com/modals/Waitlist.tsx:90
msgid "Input your email to get on the Bluesky waitlist"
@@ -1879,11 +1939,11 @@ msgstr "Entrez votre e-mail pour vous inscrire sur la liste dāattente de Blues
msgid "Input your password"
msgstr "Entrez votre mot de passe"
-#: src/view/com/auth/create/Step3.tsx:42
+#: src/view/com/auth/create/Step2.tsx:80
msgid "Input your user handle"
msgstr "Entrez votre pseudo"
-#: src/view/com/post-thread/PostThreadItem.tsx:225
+#: src/view/com/post-thread/PostThreadItem.tsx:226
msgid "Invalid or unsupported post record"
msgstr "Enregistrement de post invalide ou non pris en charge"
@@ -1899,12 +1959,12 @@ msgstr "Pseudo ou mot de passe incorrect"
msgid "Invite a Friend"
msgstr "Inviter un ami"
-#: src/view/com/auth/create/Step1.tsx:144
-#: src/view/com/auth/create/Step1.tsx:153
+#: src/view/com/auth/create/Step1.tsx:148
+#: src/view/com/auth/create/Step1.tsx:157
msgid "Invite code"
msgstr "Code dāinvitation"
-#: src/view/com/auth/create/state.ts:199
+#: src/view/com/auth/create/state.ts:158
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."
@@ -1925,6 +1985,7 @@ msgid "It shows posts from the people you follow as they happen."
msgstr ""
#: src/view/com/auth/HomeLoggedOutCTA.tsx:99
+#: src/view/com/auth/SplashScreen.web.tsx:138
msgid "Jobs"
msgstr "Emplois"
@@ -1932,8 +1993,8 @@ msgstr "Emplois"
msgid "Join the waitlist"
msgstr "Sāinscrire sur la liste dāattente"
-#: src/view/com/auth/create/Step1.tsx:170
#: src/view/com/auth/create/Step1.tsx:174
+#: src/view/com/auth/create/Step1.tsx:178
msgid "Join the waitlist."
msgstr "Sāinscrire sur la liste dāattente."
@@ -1984,7 +2045,7 @@ msgstr "En savoir plus"
msgid "Learn more about this warning"
msgstr "En savoir plus sur cet avertissement"
-#: src/view/screens/Moderation.tsx:243
+#: src/view/screens/Moderation.tsx:262
msgid "Learn more about what is public on Bluesky."
msgstr "En savoir plus sur ce qui est public sur Bluesky."
@@ -2040,7 +2101,7 @@ msgstr "LikƩ par"
msgid "Liked By"
msgstr ""
-#: src/view/com/feeds/FeedSourceCard.tsx:277
+#: src/view/com/feeds/FeedSourceCard.tsx:279
msgid "Liked by {0} {1}"
msgstr "LikƩ par {0} {1}"
@@ -2060,7 +2121,7 @@ msgstr "likƩ votre post"
msgid "Likes"
msgstr "Likes"
-#: src/view/com/post-thread/PostThreadItem.tsx:182
+#: src/view/com/post-thread/PostThreadItem.tsx:183
msgid "Likes on this post"
msgstr "Likes sur ce post"
@@ -2072,19 +2133,19 @@ msgstr "Liste"
msgid "List Avatar"
msgstr "Liste des avatars"
-#: src/view/screens/ProfileList.tsx:323
+#: src/view/screens/ProfileList.tsx:324
msgid "List blocked"
msgstr "Liste bloquƩe"
-#: src/view/com/feeds/FeedSourceCard.tsx:231
+#: src/view/com/feeds/FeedSourceCard.tsx:233
msgid "List by {0}"
msgstr "Liste par {0}"
-#: src/view/screens/ProfileList.tsx:377
+#: src/view/screens/ProfileList.tsx:378
msgid "List deleted"
msgstr "Liste supprimƩe"
-#: src/view/screens/ProfileList.tsx:282
+#: src/view/screens/ProfileList.tsx:283
msgid "List muted"
msgstr "Liste masquƩe"
@@ -2092,11 +2153,11 @@ msgstr "Liste masquƩe"
msgid "List Name"
msgstr "Nom de liste"
-#: src/view/screens/ProfileList.tsx:342
+#: src/view/screens/ProfileList.tsx:343
msgid "List unblocked"
msgstr "Liste dƩbloquƩe"
-#: src/view/screens/ProfileList.tsx:301
+#: src/view/screens/ProfileList.tsx:302
msgid "List unmuted"
msgstr "Liste dƩmasquƩe"
@@ -2108,8 +2169,8 @@ msgstr "Liste dƩmasquƩe"
msgid "Lists"
msgstr "Listes"
-#: src/view/com/post-thread/PostThread.tsx:276
-#: src/view/com/post-thread/PostThread.tsx:284
+#: src/view/com/post-thread/PostThread.tsx:333
+#: src/view/com/post-thread/PostThread.tsx:341
msgid "Load more posts"
msgstr "Charger plus dāarticles"
@@ -2117,10 +2178,10 @@ msgstr "Charger plus dāarticles"
msgid "Load new notifications"
msgstr "Charger les nouvelles notifications"
-#: src/view/com/feeds/FeedPage.tsx:190
+#: src/view/com/feeds/FeedPage.tsx:115
#: src/view/screens/Profile.tsx:440
-#: src/view/screens/ProfileFeed.tsx:494
-#: src/view/screens/ProfileList.tsx:680
+#: src/view/screens/ProfileFeed.tsx:495
+#: src/view/screens/ProfileList.tsx:681
msgid "Load new posts"
msgstr "Charger les nouveaux messages"
@@ -2143,7 +2204,7 @@ msgstr "Journaux"
msgid "Log out"
msgstr ""
-#: src/view/screens/Moderation.tsx:136
+#: src/view/screens/Moderation.tsx:155
msgid "Logged-out visibility"
msgstr "VisibilitƩ dƩconnectƩe"
@@ -2155,6 +2216,18 @@ msgstr "Se connecter Ć un compte qui nāest pas listĆ©"
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 !"
+#: src/components/dialogs/MutedWords.tsx:71
+msgid "Manage your muted words and tags"
+msgstr ""
+
+#: src/view/com/auth/create/Step2.tsx:118
+msgid "May not be longer than 253 characters"
+msgstr ""
+
+#: src/view/com/auth/create/Step2.tsx:109
+msgid "May only contain letters and numbers"
+msgstr ""
+
#: src/view/screens/Profile.tsx:182
msgid "Media"
msgstr "MƩdia"
@@ -2168,7 +2241,7 @@ msgid "Mentioned users"
msgstr "Comptes mentionnƩs"
#: src/view/com/util/ViewHeader.tsx:81
-#: src/view/screens/Search/Search.tsx:623
+#: src/view/screens/Search/Search.tsx:646
msgid "Menu"
msgstr "Menu"
@@ -2177,7 +2250,7 @@ msgid "Message from server: {0}"
msgstr "Message du serveur : {0}"
#: src/Navigation.tsx:115
-#: src/view/screens/Moderation.tsx:64
+#: src/view/screens/Moderation.tsx:66
#: src/view/screens/Settings/index.tsx:625
#: src/view/shell/desktop/LeftNav.tsx:397
#: src/view/shell/Drawer.tsx:511
@@ -2185,7 +2258,7 @@ msgstr "Message du serveur : {0}"
msgid "Moderation"
msgstr "ModƩration"
-#: src/view/com/lists/ListCard.tsx:92
+#: src/view/com/lists/ListCard.tsx:93
#: src/view/com/modals/UserAddRemoveLists.tsx:206
msgid "Moderation list by {0}"
msgstr "Liste de modƩration par {0}"
@@ -2194,7 +2267,7 @@ msgstr "Liste de modƩration par {0}"
msgid "Moderation list by <0/>"
msgstr "Liste de modƩration par <0/>"
-#: src/view/com/lists/ListCard.tsx:90
+#: src/view/com/lists/ListCard.tsx:91
#: src/view/com/modals/UserAddRemoveLists.tsx:204
#: src/view/screens/ProfileList.tsx:772
msgid "Moderation list by you"
@@ -2208,7 +2281,7 @@ msgstr "Liste de modƩration crƩƩe"
msgid "Moderation list updated"
msgstr "Liste de modération mise à jour"
-#: src/view/screens/Moderation.tsx:95
+#: src/view/screens/Moderation.tsx:114
msgid "Moderation lists"
msgstr "Listes de modƩration"
@@ -2229,13 +2302,13 @@ msgstr "La modĆ©ration a choisi dāajouter un avertissement gĆ©nĆ©ral sur le co
msgid "More feeds"
msgstr "Plus de fils dāactu"
-#: src/view/com/profile/ProfileHeader.tsx:522
-#: src/view/screens/ProfileFeed.tsx:362
-#: src/view/screens/ProfileList.tsx:616
+#: src/view/com/profile/ProfileHeader.tsx:523
+#: src/view/screens/ProfileFeed.tsx:363
+#: src/view/screens/ProfileList.tsx:617
msgid "More options"
msgstr "Plus dāoptions"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:270
+#: src/view/com/util/forms/PostDropdownBtn.tsx:315
msgid "More post options"
msgstr "Plus dāoptions de post"
@@ -2243,35 +2316,71 @@ msgstr "Plus dāoptions de post"
msgid "Most-liked replies first"
msgstr "RƩponses les plus likƩes en premier"
-#: src/view/com/profile/ProfileHeader.tsx:326
+#: src/view/com/auth/create/Step2.tsx:122
+msgid "Must be at least 3 characters"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:253
+msgid "Mute"
+msgstr ""
+
+#: src/components/TagMenu/index.web.tsx:91
+msgid "Mute {truncatedTag}"
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:327
msgid "Mute Account"
msgstr "Masquer le compte"
-#: src/view/screens/ProfileList.tsx:543
+#: src/view/screens/ProfileList.tsx:544
msgid "Mute accounts"
msgstr "Masquer les comptes"
-#: src/view/screens/ProfileList.tsx:490
+#: src/components/TagMenu/index.tsx:211
+msgid "Mute all {tag} posts"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:131
+msgid "Mute in tags only"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:116
+msgid "Mute in text & tags"
+msgstr ""
+
+#: src/view/screens/ProfileList.tsx:491
msgid "Mute list"
msgstr "Masquer la liste"
-#: src/view/screens/ProfileList.tsx:274
+#: src/view/screens/ProfileList.tsx:275
msgid "Mute these accounts?"
msgstr "Masquer ces comptes ?"
-#: src/view/screens/ProfileList.tsx:278
+#: src/view/screens/ProfileList.tsx:279
msgid "Mute this List"
msgstr "Masquer cette liste"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:171
+#: src/components/dialogs/MutedWords.tsx:109
+msgid "Mute this word in post text and tags"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:124
+msgid "Mute this word in tags only"
+msgstr ""
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:202
msgid "Mute thread"
msgstr "Masquer ce fil de discussion"
-#: src/view/com/lists/ListCard.tsx:101
+#: src/view/com/util/forms/PostDropdownBtn.tsx:216
+msgid "Mute words & tags"
+msgstr ""
+
+#: src/view/com/lists/ListCard.tsx:102
msgid "Muted"
msgstr ""
-#: src/view/screens/Moderation.tsx:109
+#: src/view/screens/Moderation.tsx:128
msgid "Muted accounts"
msgstr "Comptes masquƩs"
@@ -2284,7 +2393,11 @@ msgstr "Comptes masquƩs"
msgid "Muted accounts have their posts removed from your feed and from your notifications. Mutes are completely private."
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:276
+#: src/view/screens/Moderation.tsx:100
+msgid "Muted words & tags"
+msgstr ""
+
+#: src/view/screens/ProfileList.tsx:277
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 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."
@@ -2292,7 +2405,7 @@ msgstr "Ce que vous masquez reste privƩ. Les comptes masquƩs peuvent interagir
msgid "My Birthday"
msgstr "Ma date de naissance"
-#: src/view/screens/Feeds.tsx:419
+#: src/view/screens/Feeds.tsx:663
msgid "My Feeds"
msgstr "Mes fils dāactu"
@@ -2347,6 +2460,10 @@ msgstr "Ne perdez jamais lāaccĆØs Ć vos followers et Ć vos donnĆ©es."
msgid "Never lose access to your followers or data."
msgstr ""
+#: src/components/dialogs/MutedWords.tsx:244
+msgid "Nevermind"
+msgstr ""
+
#: src/view/screens/Lists.tsx:76
msgctxt "action"
msgid "New"
@@ -2368,17 +2485,17 @@ msgstr "Nouveau mot de passe"
msgid "New Password"
msgstr ""
-#: src/view/com/feeds/FeedPage.tsx:201
+#: src/view/com/feeds/FeedPage.tsx:126
msgctxt "action"
msgid "New post"
msgstr "Nouveau post"
-#: src/view/screens/Feeds.tsx:581
+#: src/view/screens/Feeds.tsx:555
#: src/view/screens/Notifications.tsx:168
#: src/view/screens/Profile.tsx:382
-#: src/view/screens/ProfileFeed.tsx:432
-#: src/view/screens/ProfileList.tsx:195
-#: src/view/screens/ProfileList.tsx:223
+#: src/view/screens/ProfileFeed.tsx:433
+#: src/view/screens/ProfileList.tsx:196
+#: src/view/screens/ProfileList.tsx:224
#: src/view/shell/desktop/LeftNav.tsx:248
msgid "New post"
msgstr "Nouveau post"
@@ -2400,7 +2517,7 @@ msgstr "RƩponses les plus rƩcentes en premier"
msgid "News"
msgstr ""
-#: src/view/com/auth/create/CreateAccount.tsx:161
+#: src/view/com/auth/create/CreateAccount.tsx:172
#: src/view/com/auth/login/ForgotPasswordForm.tsx:182
#: src/view/com/auth/login/ForgotPasswordForm.tsx:192
#: src/view/com/auth/login/LoginForm.tsx:291
@@ -2421,10 +2538,10 @@ msgstr "Suivant"
msgid "Next image"
msgstr "Image suivante"
-#: 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/PreferencesFollowingFeed.tsx:129
+#: src/view/screens/PreferencesFollowingFeed.tsx:200
+#: src/view/screens/PreferencesFollowingFeed.tsx:235
+#: src/view/screens/PreferencesFollowingFeed.tsx:272
#: src/view/screens/PreferencesThreads.tsx:106
#: src/view/screens/PreferencesThreads.tsx:129
msgid "No"
@@ -2435,7 +2552,7 @@ msgstr "Non"
msgid "No description"
msgstr "Aucune description"
-#: src/view/com/profile/ProfileHeader.tsx:169
+#: src/view/com/profile/ProfileHeader.tsx:170
msgid "No longer following {0}"
msgstr "Ne suit plus {0}"
@@ -2448,13 +2565,13 @@ msgstr "Pas encore de notifications !"
msgid "No result"
msgstr "Aucun rƩsultat"
-#: src/view/screens/Feeds.tsx:524
+#: src/view/screens/Feeds.tsx:495
msgid "No results found for \"{query}\""
msgstr "Aucun résultat trouvé pour « {query} »"
#: src/view/com/modals/ListAddRemoveUsers.tsx:127
-#: src/view/screens/Search/Search.tsx:280
-#: src/view/screens/Search/Search.tsx:308
+#: src/view/screens/Search/Search.tsx:281
+#: src/view/screens/Search/Search.tsx:309
msgid "No results found for {query}"
msgstr "Aucun rƩsultat trouvƩ pour {query}"
@@ -2480,11 +2597,11 @@ msgstr "Introuvable"
msgid "Not right now"
msgstr "Pas maintenant"
-#: src/view/screens/Moderation.tsx:233
+#: src/view/screens/Moderation.tsx:252
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 personnes non connectĆ©es par dāautres applications et sites Web."
-#: src/Navigation.tsx:447
+#: src/Navigation.tsx:450
#: src/view/screens/Notifications.tsx:124
#: src/view/screens/Notifications.tsx:148
#: src/view/shell/bottom-bar/BottomBar.tsx:205
@@ -2518,7 +2635,7 @@ msgstr "Plus anciennes rƩponses en premier"
msgid "Onboarding reset"
msgstr "RƩinitialiser le didacticiel"
-#: src/view/com/composer/Composer.tsx:375
+#: src/view/com/composer/Composer.tsx:382
msgid "One or more images is missing alt text."
msgstr "Une ou plusieurs images nāont pas de texte alt."
@@ -2535,8 +2652,12 @@ msgstr "Oups !"
msgid "Open"
msgstr ""
-#: src/view/com/composer/Composer.tsx:470
-#: src/view/com/composer/Composer.tsx:471
+#: src/view/screens/Moderation.tsx:75
+msgid "Open content filtering settings"
+msgstr ""
+
+#: src/view/com/composer/Composer.tsx:477
+#: src/view/com/composer/Composer.tsx:478
msgid "Open emoji picker"
msgstr "Ouvrir le sĆ©lecteur dāemoji"
@@ -2544,7 +2665,11 @@ msgstr "Ouvrir le sĆ©lecteur dāemoji"
msgid "Open links with in-app browser"
msgstr ""
-#: src/view/com/pager/FeedsTabBarMobile.tsx:87
+#: src/view/screens/Moderation.tsx:92
+msgid "Open muted words settings"
+msgstr ""
+
+#: src/view/com/home/HomeHeaderLayoutMobile.tsx:49
msgid "Open navigation"
msgstr "Navigation ouverte"
@@ -2580,7 +2705,7 @@ msgstr "Ouvre les paramĆØtres linguistiques configurables"
msgid "Opens device photo gallery"
msgstr "Ouvre la galerie de photos de lāappareil"
-#: src/view/com/profile/ProfileHeader.tsx:419
+#: src/view/com/profile/ProfileHeader.tsx:420
msgid "Opens editor for profile display name, avatar, background image, and description"
msgstr "Ouvre lāĆ©diteur pour le nom dāaffichage du profil, lāavatar, lāimage dāarriĆØre-plan et la description"
@@ -2588,11 +2713,11 @@ msgstr "Ouvre lāĆ©diteur pour le nom dāaffichage du profil, lāavatar, lā
msgid "Opens external embeds settings"
msgstr "Ouvre les paramĆØtres dāintĆ©gration externe"
-#: src/view/com/profile/ProfileHeader.tsx:574
+#: src/view/com/profile/ProfileHeader.tsx:575
msgid "Opens followers list"
msgstr "Ouvre la liste des comptes abonnƩs"
-#: src/view/com/profile/ProfileHeader.tsx:593
+#: src/view/com/profile/ProfileHeader.tsx:594
msgid "Opens following list"
msgstr "Ouvre la liste des abonnements"
@@ -2620,7 +2745,8 @@ msgstr "Ouvre les paramètres de modération"
msgid "Opens password reset form"
msgstr "Ouvre le formulaire de rƩinitialisation du mot de passe"
-#: src/view/screens/Feeds.tsx:357
+#: src/view/com/home/HomeHeaderLayout.web.tsx:60
+#: src/view/screens/Feeds.tsx:356
msgid "Opens screen to edit Saved Feeds"
msgstr "Ouvre lāĆ©cran pour modifier les fils dāactu enregistrĆ©s"
@@ -2676,8 +2802,8 @@ msgstr "Page introuvable"
msgid "Page Not Found"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:210
-#: src/view/com/auth/create/Step1.tsx:220
+#: src/view/com/auth/create/Step1.tsx:214
+#: src/view/com/auth/create/Step1.tsx:224
#: src/view/com/auth/login/LoginForm.tsx:226
#: src/view/com/auth/login/SetNewPasswordForm.tsx:161
#: src/view/com/modals/DeleteAccount.tsx:202
@@ -2713,15 +2839,15 @@ msgid "Pets"
msgstr ""
#: src/view/com/auth/create/Step2.tsx:183
-msgid "Phone number"
-msgstr ""
+#~ msgid "Phone number"
+#~ msgstr ""
#: src/view/com/modals/SelfLabel.tsx:121
msgid "Pictures meant for adults."
msgstr "Images destinƩes aux adultes."
-#: src/view/screens/ProfileFeed.tsx:353
-#: src/view/screens/ProfileList.tsx:580
+#: src/view/screens/ProfileFeed.tsx:354
+#: src/view/screens/ProfileList.tsx:581
msgid "Pin to home"
msgstr "Ajouter Ć lāaccueil"
@@ -2742,14 +2868,18 @@ msgstr "Lire la vidƩo"
msgid "Plays the GIF"
msgstr "Lit le GIF"
-#: src/view/com/auth/create/state.ts:177
+#: src/view/com/auth/create/state.ts:124
msgid "Please choose your handle."
msgstr "Veuillez choisir votre pseudo."
-#: src/view/com/auth/create/state.ts:160
+#: src/view/com/auth/create/state.ts:117
msgid "Please choose your password."
msgstr "Veuillez choisir votre mot de passe."
+#: src/view/com/auth/create/state.ts:131
+msgid "Please complete the verification captcha."
+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 "Veuillez confirmer votre e-mail avant de le modifier. Ceci est temporairement requis pendant que des outils de mise Ć jour dāe-mail sont ajoutĆ©s, cette Ć©tape ne sera bientĆ“t plus nĆ©cessaire."
@@ -2759,22 +2889,22 @@ msgid "Please enter a name for your app password. All spaces is not allowed."
msgstr "Veuillez entrer un nom pour votre mot de passe dāapplication. Les espaces ne sont pas autorisĆ©s."
#: src/view/com/auth/create/Step2.tsx:206
-msgid "Please enter a phone number that can receive SMS text messages."
-msgstr ""
+#~ msgid "Please enter a phone number that can receive SMS text messages."
+#~ msgstr ""
#: src/view/com/modals/AddAppPasswords.tsx:145
msgid "Please enter a unique name for this App Password or use our randomly generated one."
msgstr "Veuillez saisir un nom unique pour le mot de passe de lāapplication ou utiliser celui que nous avons gĆ©nĆ©rĆ© de maniĆØre alĆ©atoire."
#: src/view/com/auth/create/state.ts:170
-msgid "Please enter the code you received by SMS."
-msgstr ""
+#~ msgid "Please enter the code you received by SMS."
+#~ msgstr ""
#: src/view/com/auth/create/Step2.tsx:282
-msgid "Please enter the verification code sent to {phoneNumberFormatted}."
-msgstr ""
+#~ msgid "Please enter the verification code sent to {phoneNumberFormatted}."
+#~ msgstr ""
-#: src/view/com/auth/create/state.ts:146
+#: src/view/com/auth/create/state.ts:103
msgid "Please enter your email."
msgstr "Veuillez entrer votre e-mail."
@@ -2791,7 +2921,7 @@ msgstr "Dites-nous donc pourquoi vous pensez que cet avertissement de contenu a
msgid "Please Verify Your Email"
msgstr "Veuillez vƩrifier votre e-mail"
-#: src/view/com/composer/Composer.tsx:215
+#: src/view/com/composer/Composer.tsx:222
msgid "Please wait for your link card to finish loading"
msgstr "Veuillez patienter le temps que votre carte de lien soit chargƩe"
@@ -2803,18 +2933,18 @@ msgstr ""
msgid "Porn"
msgstr "Porno"
-#: src/view/com/composer/Composer.tsx:350
-#: src/view/com/composer/Composer.tsx:358
+#: src/view/com/composer/Composer.tsx:357
+#: src/view/com/composer/Composer.tsx:365
msgctxt "action"
msgid "Post"
msgstr "Poster"
-#: src/view/com/post-thread/PostThread.tsx:246
+#: src/view/com/post-thread/PostThread.tsx:303
msgctxt "description"
msgid "Post"
msgstr "Post"
-#: src/view/com/post-thread/PostThreadItem.tsx:174
+#: src/view/com/post-thread/PostThreadItem.tsx:175
msgid "Post by {0}"
msgstr "Post de {0}"
@@ -2824,11 +2954,11 @@ msgstr "Post de {0}"
msgid "Post by @{0}"
msgstr "Post de @{0}"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:84
+#: src/view/com/util/forms/PostDropdownBtn.tsx:90
msgid "Post deleted"
msgstr "Post supprimƩ"
-#: src/view/com/post-thread/PostThread.tsx:398
+#: src/view/com/post-thread/PostThread.tsx:462
msgid "Post hidden"
msgstr "Post cachƩ"
@@ -2840,14 +2970,22 @@ msgstr "Langue du post"
msgid "Post Languages"
msgstr "Langues du post"
-#: src/view/com/post-thread/PostThread.tsx:450
+#: src/view/com/post-thread/PostThread.tsx:514
msgid "Post not found"
msgstr "Post introuvable"
+#: src/components/TagMenu/index.tsx:257
+msgid "posts"
+msgstr ""
+
#: src/view/screens/Profile.tsx:180
msgid "Posts"
msgstr "Posts"
+#: src/components/dialogs/MutedWords.tsx:77
+msgid "Posts can be muted based on their text, their tags, or both."
+msgstr ""
+
#: src/view/com/posts/FeedErrorMessage.tsx:64
msgid "Posts hidden"
msgstr "Posts cachƩs"
@@ -2869,7 +3007,7 @@ msgid "Prioritize Your Follows"
msgstr "DƩfinissez des prioritƩs de vos suivis"
#: src/view/screens/Settings/index.tsx:632
-#: src/view/shell/desktop/RightNav.tsx:80
+#: src/view/shell/desktop/RightNav.tsx:72
msgid "Privacy"
msgstr "Vie privƩe"
@@ -2912,11 +3050,11 @@ msgstr "Listes publiques et partageables de comptes Ć masquer ou Ć bloquer."
msgid "Public, shareable lists which can drive feeds."
msgstr "Les listes publiques et partageables qui peuvent alimenter les fils dāactu."
-#: src/view/com/composer/Composer.tsx:335
+#: src/view/com/composer/Composer.tsx:342
msgid "Publish post"
msgstr "Publier le post"
-#: src/view/com/composer/Composer.tsx:335
+#: src/view/com/composer/Composer.tsx:342
msgid "Publish reply"
msgstr "Publier la rƩponse"
@@ -2950,6 +3088,7 @@ msgstr "Fils dāactu recommandĆ©s"
msgid "Recommended Users"
msgstr "Comptes recommandƩs"
+#: src/components/dialogs/MutedWords.tsx:249
#: src/view/com/modals/ListAddRemoveUsers.tsx:264
#: src/view/com/modals/SelfLabel.tsx:83
#: src/view/com/modals/UserAddRemoveLists.tsx:219
@@ -2958,7 +3097,7 @@ msgstr "Comptes recommandƩs"
msgid "Remove"
msgstr "Supprimer"
-#: src/view/com/feeds/FeedSourceCard.tsx:106
+#: src/view/com/feeds/FeedSourceCard.tsx:108
msgid "Remove {0} from my feeds?"
msgstr "Supprimer {0} de mes fils dāactu ?"
@@ -2971,11 +3110,11 @@ msgstr "Supprimer compte"
msgid "Remove feed"
msgstr "Supprimer fil dāactu"
-#: src/view/com/feeds/FeedSourceCard.tsx:105
-#: src/view/com/feeds/FeedSourceCard.tsx:167
-#: src/view/com/feeds/FeedSourceCard.tsx:172
-#: src/view/com/feeds/FeedSourceCard.tsx:243
-#: src/view/screens/ProfileFeed.tsx:272
+#: src/view/com/feeds/FeedSourceCard.tsx:107
+#: src/view/com/feeds/FeedSourceCard.tsx:169
+#: src/view/com/feeds/FeedSourceCard.tsx:174
+#: src/view/com/feeds/FeedSourceCard.tsx:245
+#: src/view/screens/ProfileFeed.tsx:273
msgid "Remove from my feeds"
msgstr "Supprimer de mes fils dāactu"
@@ -2987,11 +3126,15 @@ msgstr "Supprimer lāimage"
msgid "Remove image preview"
msgstr "Supprimer lāaperƧu dāimage"
+#: src/components/dialogs/MutedWords.tsx:294
+msgid "Remove mute word from your list"
+msgstr ""
+
#: src/view/com/modals/Repost.tsx:47
msgid "Remove repost"
msgstr "Supprimer le repost"
-#: src/view/com/feeds/FeedSourceCard.tsx:173
+#: src/view/com/feeds/FeedSourceCard.tsx:175
msgid "Remove this feed from my feeds?"
msgstr "Supprimer ce fil dāactu ?"
@@ -3004,8 +3147,8 @@ msgstr "Supprimer ce fil dāactu de vos fils dāactu enregistrĆ©s ?"
msgid "Removed from list"
msgstr "SupprimƩ de la liste"
-#: src/view/com/feeds/FeedSourceCard.tsx:111
-#: src/view/com/feeds/FeedSourceCard.tsx:178
+#: src/view/com/feeds/FeedSourceCard.tsx:113
+#: src/view/com/feeds/FeedSourceCard.tsx:180
msgid "Removed from my feeds"
msgstr "SupprimĆ© de mes fils dāactu"
@@ -3021,16 +3164,16 @@ msgstr "RƩponses"
msgid "Replies to this thread are disabled"
msgstr "Les réponses à ce fil de discussion sont désactivées"
-#: src/view/com/composer/Composer.tsx:348
+#: src/view/com/composer/Composer.tsx:355
msgctxt "action"
msgid "Reply"
msgstr "RƩpondre"
-#: src/view/screens/PreferencesHomeFeed.tsx:144
+#: src/view/screens/PreferencesFollowingFeed.tsx:144
msgid "Reply Filters"
msgstr "Filtres de rƩponse"
-#: src/view/com/post/Post.tsx:166
+#: src/view/com/post/Post.tsx:167
#: src/view/com/posts/FeedItem.tsx:287
msgctxt "description"
msgid "Reply to <0/>"
@@ -3040,20 +3183,20 @@ msgstr "Réponse à <0/>"
msgid "Report {collectionName}"
msgstr "Signaler {collectionName}"
-#: src/view/com/profile/ProfileHeader.tsx:360
+#: src/view/com/profile/ProfileHeader.tsx:361
msgid "Report Account"
msgstr "Signaler le compte"
-#: src/view/screens/ProfileFeed.tsx:292
+#: src/view/screens/ProfileFeed.tsx:293
msgid "Report feed"
msgstr "Signaler le fil dāactu"
-#: src/view/screens/ProfileList.tsx:458
+#: src/view/screens/ProfileList.tsx:459
msgid "Report List"
msgstr "Signaler la liste"
#: src/view/com/modals/report/SendReportButton.tsx:37
-#: src/view/com/util/forms/PostDropdownBtn.tsx:210
+#: src/view/com/util/forms/PostDropdownBtn.tsx:255
msgid "Report post"
msgstr "Signaler le post"
@@ -3090,7 +3233,7 @@ msgstr "RepubliƩ par <0/>"
msgid "reposted your post"
msgstr "a republiƩ votre post"
-#: src/view/com/post-thread/PostThreadItem.tsx:187
+#: src/view/com/post-thread/PostThreadItem.tsx:188
msgid "Reposts of this post"
msgstr "Reposts de ce post"
@@ -3100,8 +3243,8 @@ msgid "Request Change"
msgstr "Demande de modification"
#: src/view/com/auth/create/Step2.tsx:219
-msgid "Request code"
-msgstr ""
+#~ msgid "Request code"
+#~ msgstr ""
#: src/view/com/modals/ChangePassword.tsx:239
#: src/view/com/modals/ChangePassword.tsx:241
@@ -3112,7 +3255,7 @@ msgstr ""
msgid "Require alt text before posting"
msgstr "NƩcessiter un texte alt avant de publier"
-#: src/view/com/auth/create/Step1.tsx:149
+#: src/view/com/auth/create/Step1.tsx:153
msgid "Required for this provider"
msgstr "Obligatoire pour cet hƩbergeur"
@@ -3164,9 +3307,8 @@ msgstr "Réessaye la dernière action, qui a échoué"
#: src/screens/Onboarding/StepInterests/index.tsx:221
#: src/screens/Onboarding/StepInterests/index.tsx:224
-#: src/view/com/auth/create/CreateAccount.tsx:170
-#: src/view/com/auth/create/CreateAccount.tsx:175
-#: src/view/com/auth/create/Step2.tsx:255
+#: src/view/com/auth/create/CreateAccount.tsx:181
+#: src/view/com/auth/create/CreateAccount.tsx:186
#: src/view/com/auth/login/LoginForm.tsx:268
#: src/view/com/auth/login/LoginForm.tsx:271
#: src/view/com/util/error/ErrorMessage.tsx:55
@@ -3175,16 +3317,16 @@ msgid "Retry"
msgstr "RƩessayer"
#: src/view/com/auth/create/Step2.tsx:247
-msgid "Retry."
-msgstr ""
+#~ msgid "Retry."
+#~ msgstr ""
#: src/view/screens/ProfileList.tsx:898
msgid "Return to previous page"
msgstr "Retourne à la page précédente"
#: src/view/shell/desktop/RightNav.tsx:55
-msgid "SANDBOX. Posts and accounts are not permanent."
-msgstr "SANDBOX. Les posts et les comptes ne sont pas permanents."
+#~ msgid "SANDBOX. Posts and accounts are not permanent."
+#~ msgstr "SANDBOX. Les posts et les comptes ne sont pas permanents."
#: src/view/com/lightbox/Lightbox.tsx:132
#: src/view/com/modals/CreateOrEditList.tsx:345
@@ -3197,7 +3339,7 @@ msgstr "Enregistrer"
#: src/view/com/modals/ChangeHandle.tsx:173
#: src/view/com/modals/CreateOrEditList.tsx:337
#: src/view/com/modals/EditProfile.tsx:224
-#: src/view/screens/ProfileFeed.tsx:345
+#: src/view/screens/ProfileFeed.tsx:346
msgid "Save"
msgstr "Enregistrer"
@@ -3237,14 +3379,14 @@ msgstr ""
msgid "Scroll to top"
msgstr "Remonter en haut"
-#: src/Navigation.tsx:437
+#: src/Navigation.tsx:440
#: src/view/com/auth/LoggedOut.tsx:122
#: src/view/com/modals/ListAddRemoveUsers.tsx:75
#: src/view/com/util/forms/SearchInput.tsx:67
#: src/view/com/util/forms/SearchInput.tsx:79
-#: src/view/screens/Search/Search.tsx:418
-#: src/view/screens/Search/Search.tsx:645
-#: src/view/screens/Search/Search.tsx:663
+#: src/view/screens/Search/Search.tsx:419
+#: src/view/screens/Search/Search.tsx:668
+#: src/view/screens/Search/Search.tsx:686
#: src/view/shell/bottom-bar/BottomBar.tsx:159
#: src/view/shell/desktop/LeftNav.tsx:324
#: src/view/shell/desktop/Search.tsx:214
@@ -3254,11 +3396,19 @@ msgstr "Remonter en haut"
msgid "Search"
msgstr "Recherche"
-#: src/view/screens/Search/Search.tsx:712
+#: src/view/screens/Search/Search.tsx:735
#: src/view/shell/desktop/Search.tsx:255
msgid "Search for \"{query}\""
msgstr ""
+#: src/components/TagMenu/index.tsx:145
+msgid "Search for all posts by @{authorHandle} with tag {tag}"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:90
+msgid "Search for all posts with tag {tag}"
+msgstr ""
+
#: src/view/com/auth/LoggedOut.tsx:104
#: src/view/com/auth/LoggedOut.tsx:105
#: src/view/com/modals/ListAddRemoveUsers.tsx:70
@@ -3269,6 +3419,22 @@ msgstr "Rechercher des comptes"
msgid "Security Step Required"
msgstr "Ćtape de sĆ©curitĆ© requise"
+#: src/components/TagMenu/index.web.tsx:50
+msgid "See {truncatedTag} posts"
+msgstr ""
+
+#: src/components/TagMenu/index.web.tsx:67
+msgid "See {truncatedTag} posts by user"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:128
+msgid "See <0>{tag}0> posts"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:189
+msgid "See <0>{tag}0> posts by this user"
+msgstr ""
+
#: src/view/screens/SavedFeeds.tsx:163
msgid "See this guide"
msgstr "Voir ce guide"
@@ -3293,7 +3459,7 @@ msgstr "SƩlectionner un compte existant"
msgid "Select option {i} of {numItems}"
msgstr "SĆ©lectionne lāoption {i} sur {numItems}"
-#: src/view/com/auth/create/Step1.tsx:99
+#: src/view/com/auth/create/Step1.tsx:103
#: src/view/com/auth/login/LoginForm.tsx:150
msgid "Select service"
msgstr "SƩlectionner un service"
@@ -3310,7 +3476,7 @@ msgstr ""
#~ msgid "Select the types of content that you want to see (or not see), and we'll handle the rest."
#~ msgstr ""
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:90
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:96
msgid "Select topical feeds to follow from the list below"
msgstr ""
@@ -3331,8 +3497,8 @@ msgid "Select your interests from the options below"
msgstr ""
#: src/view/com/auth/create/Step2.tsx:155
-msgid "Select your phone's country"
-msgstr ""
+#~ msgid "Select your phone's country"
+#~ msgstr ""
#: src/view/screens/LanguageSettings.tsx:190
msgid "Select your preferred language for translations in your feed."
@@ -3411,19 +3577,19 @@ msgstr ""
msgid "Set new password"
msgstr "DƩfinir un nouveau mot de passe"
-#: src/view/com/auth/create/Step1.tsx:221
+#: src/view/com/auth/create/Step1.tsx:225
msgid "Set password"
msgstr "DƩfinit le mot de passe"
-#: src/view/screens/PreferencesHomeFeed.tsx:225
+#: src/view/screens/PreferencesFollowingFeed.tsx:225
msgid "Set this setting to \"No\" to hide all quote posts from your feed. Reposts will still be visible."
msgstr "Choisissez Ā« Non Ā» pour cacher toutes les citations sur votre fils dāactu. Les reposts seront toujours visibles."
-#: src/view/screens/PreferencesHomeFeed.tsx:122
+#: src/view/screens/PreferencesFollowingFeed.tsx:122
msgid "Set this setting to \"No\" to hide all replies from your feed."
msgstr "Choisissez Ā« Non Ā» pour cacher toutes les rĆ©ponses dans votre fils dāactu."
-#: src/view/screens/PreferencesHomeFeed.tsx:191
+#: src/view/screens/PreferencesFollowingFeed.tsx:191
msgid "Set this setting to \"No\" to hide all reposts from your feed."
msgstr "Choisissez Ā« Non Ā» pour cacher toutes les reposts de votre fils dāactu."
@@ -3432,8 +3598,12 @@ msgid "Set this setting to \"Yes\" to show replies in a threaded view. This is a
msgstr "Choisissez Ā« Oui Ā» pour afficher les rĆ©ponses dans un fil de discussion. Cāest une fonctionnalitĆ© expĆ©rimentale."
#: 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 "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."
+#~ 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/PreferencesFollowingFeed.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/screens/Onboarding/Layout.tsx:50
msgid "Set up your account"
@@ -3451,7 +3621,7 @@ msgstr "DĆ©finit lāe-mail pour la rĆ©initialisation du mot de passe"
msgid "Sets hosting provider for password reset"
msgstr "DĆ©finit lāhĆ©bergeur pour la rĆ©initialisation du mot de passe"
-#: src/view/com/auth/create/Step1.tsx:100
+#: src/view/com/auth/create/Step1.tsx:104
#: src/view/com/auth/login/LoginForm.tsx:151
msgid "Sets server for the Bluesky client"
msgstr "DƩfinit le serveur pour le client Bluesky"
@@ -3473,13 +3643,13 @@ msgctxt "action"
msgid "Share"
msgstr "Partager"
-#: src/view/com/profile/ProfileHeader.tsx:294
-#: src/view/com/util/forms/PostDropdownBtn.tsx:153
-#: src/view/screens/ProfileList.tsx:417
+#: src/view/com/profile/ProfileHeader.tsx:295
+#: src/view/com/util/forms/PostDropdownBtn.tsx:184
+#: src/view/screens/ProfileList.tsx:418
msgid "Share"
msgstr "Partager"
-#: src/view/screens/ProfileFeed.tsx:304
+#: src/view/screens/ProfileFeed.tsx:305
msgid "Share feed"
msgstr "Partager le fil dāactu"
@@ -3491,7 +3661,7 @@ msgstr "Partager le fil dāactu"
msgid "Show"
msgstr "Afficher"
-#: src/view/screens/PreferencesHomeFeed.tsx:68
+#: src/view/screens/PreferencesFollowingFeed.tsx:68
msgid "Show all replies"
msgstr "Afficher toutes les rƩponses"
@@ -3503,21 +3673,21 @@ msgstr "Afficher quand mĆŖme"
msgid "Show embeds from {0}"
msgstr "Afficher les intƩgrations de {0}"
-#: src/view/com/profile/ProfileHeader.tsx:458
+#: src/view/com/profile/ProfileHeader.tsx:459
msgid "Show follows similar to {0}"
msgstr "Afficher les suivis similaires Ć {0}"
-#: src/view/com/post-thread/PostThreadItem.tsx:539
-#: src/view/com/post/Post.tsx:197
+#: src/view/com/post-thread/PostThreadItem.tsx:538
+#: src/view/com/post/Post.tsx:198
#: src/view/com/posts/FeedItem.tsx:363
msgid "Show More"
msgstr "Voir plus"
-#: src/view/screens/PreferencesHomeFeed.tsx:258
+#: src/view/screens/PreferencesFollowingFeed.tsx:258
msgid "Show Posts from My Feeds"
msgstr "Afficher les posts de mes fils dāactu"
-#: src/view/screens/PreferencesHomeFeed.tsx:222
+#: src/view/screens/PreferencesFollowingFeed.tsx:222
msgid "Show Quote Posts"
msgstr "Afficher les citations"
@@ -3533,7 +3703,7 @@ msgstr ""
msgid "Show re-posts in Following feed"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:119
+#: src/view/screens/PreferencesFollowingFeed.tsx:119
msgid "Show Replies"
msgstr "Afficher les rƩponses"
@@ -3549,11 +3719,11 @@ msgstr ""
msgid "Show replies in Following feed"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:70
+#: src/view/screens/PreferencesFollowingFeed.tsx:70
msgid "Show replies with at least {value} {0}"
msgstr "Afficher les rƩponses avec au moins {value} {0}"
-#: src/view/screens/PreferencesHomeFeed.tsx:188
+#: src/view/screens/PreferencesFollowingFeed.tsx:188
msgid "Show Reposts"
msgstr "Afficher les reposts"
@@ -3570,18 +3740,18 @@ msgstr "Afficher le contenu"
msgid "Show users"
msgstr "Afficher les comptes"
-#: src/view/com/profile/ProfileHeader.tsx:461
+#: src/view/com/profile/ProfileHeader.tsx:462
msgid "Shows a list of users similar to this user."
msgstr "Affiche une liste de comptes similaires Ć ce compte."
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:124
-#: src/view/com/profile/ProfileHeader.tsx:505
+#: src/view/com/profile/ProfileHeader.tsx:506
msgid "Shows posts from {0} in your feed"
msgstr "Affiche les posts de {0} dans votre fil dāactu"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:70
#: src/view/com/auth/login/Login.tsx:98
-#: src/view/com/auth/SplashScreen.tsx:54
+#: src/view/com/auth/SplashScreen.tsx:79
#: src/view/shell/bottom-bar/BottomBar.tsx:285
#: src/view/shell/bottom-bar/BottomBar.tsx:286
#: src/view/shell/bottom-bar/BottomBar.tsx:288
@@ -3594,8 +3764,8 @@ msgid "Sign in"
msgstr "Connexion"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:78
-#: src/view/com/auth/SplashScreen.tsx:57
-#: src/view/com/auth/SplashScreen.web.tsx:87
+#: src/view/com/auth/SplashScreen.tsx:82
+#: src/view/com/auth/SplashScreen.web.tsx:91
msgid "Sign In"
msgstr "Connexion"
@@ -3662,8 +3832,8 @@ msgid "Skip this flow"
msgstr ""
#: src/view/com/auth/create/Step2.tsx:82
-msgid "SMS verification"
-msgstr ""
+#~ msgid "SMS verification"
+#~ msgstr ""
#: src/screens/Onboarding/index.tsx:40
msgid "Software Dev"
@@ -3677,7 +3847,7 @@ msgstr ""
msgid "Something went wrong. Check your email and try again."
msgstr "Quelque chose nāa pas marchĆ©. VĆ©rifiez vos e-mails et rĆ©essayez."
-#: src/App.native.tsx:61
+#: src/App.native.tsx:63
msgid "Sorry! Your session expired. Please log in again."
msgstr "DƩsolƩ ! Votre session a expirƩ. Essayez de vous reconnecter."
@@ -3722,7 +3892,7 @@ msgstr "Historique"
msgid "Submit"
msgstr "Envoyer"
-#: src/view/screens/ProfileList.tsx:607
+#: src/view/screens/ProfileList.tsx:608
msgid "Subscribe"
msgstr "Sāabonner"
@@ -3731,11 +3901,11 @@ msgstr "Sāabonner"
msgid "Subscribe to the {0} feed"
msgstr ""
-#: src/view/screens/ProfileList.tsx:603
+#: src/view/screens/ProfileList.tsx:604
msgid "Subscribe to this list"
msgstr "Sāabonner Ć cette liste"
-#: src/view/screens/Search/Search.tsx:373
+#: src/view/screens/Search/Search.tsx:374
msgid "Suggested Follows"
msgstr "Suivis suggƩrƩs"
@@ -3779,6 +3949,14 @@ msgstr "SystĆØme"
msgid "System log"
msgstr "Journal systĆØme"
+#: src/components/dialogs/MutedWords.tsx:288
+msgid "tag"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:74
+msgid "Tag menu: {tag}"
+msgstr ""
+
#: src/view/com/modals/crop-image/CropImage.web.tsx:112
msgid "Tall"
msgstr "Grand"
@@ -3791,7 +3969,7 @@ msgstr "Tapper pour voir en entier"
msgid "Tech"
msgstr ""
-#: src/view/shell/desktop/RightNav.tsx:89
+#: src/view/shell/desktop/RightNav.tsx:81
msgid "Terms"
msgstr "Conditions gƩnƩrales"
@@ -3802,12 +3980,20 @@ msgstr "Conditions gƩnƩrales"
msgid "Terms of Service"
msgstr "Conditions dāutilisation"
+#: src/components/dialogs/MutedWords.tsx:288
+msgid "text"
+msgstr ""
+
#: src/view/com/modals/AppealLabel.tsx:70
#: src/view/com/modals/report/InputIssueDetails.tsx:51
msgid "Text input field"
msgstr "Champ de saisie de texte"
-#: src/view/com/profile/ProfileHeader.tsx:262
+#: src/view/com/auth/create/CreateAccount.tsx:94
+msgid "That handle is already taken."
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:263
msgid "The account will be able to interact with you after unblocking."
msgstr "Ce compte pourra interagir avec vous après le déblocage."
@@ -3823,7 +4009,7 @@ msgstr "Notre politique de droits dāauteur a Ć©tĆ© dĆ©placĆ©e vers <0/>"
msgid "The following steps will help customize your Bluesky experience."
msgstr ""
-#: src/view/com/post-thread/PostThread.tsx:453
+#: src/view/com/post-thread/PostThread.tsx:517
msgid "The post may have been deleted."
msgstr "Ce post a peut-être été supprimé."
@@ -3843,7 +4029,7 @@ msgstr "Nos conditions dāutilisation ont Ć©tĆ© dĆ©placĆ©es vers"
msgid "There are many feeds to try:"
msgstr ""
-#: src/view/screens/ProfileFeed.tsx:549
+#: src/view/screens/ProfileFeed.tsx:550
msgid "There was an an issue contacting the server, please check your internet connection and try again."
msgstr "Il y a eu un problème de connexion au serveur, veuillez vérifier votre connexion Internet et réessayez."
@@ -3851,12 +4037,12 @@ msgstr "Il y a eu un problème de connexion au serveur, veuillez vérifier votre
msgid "There was an an issue removing this feed. Please check your internet connection and try again."
msgstr "Il y a eu un problème lors de la suppression du fil, veuillez vérifier votre connexion Internet et réessayez."
-#: src/view/screens/ProfileFeed.tsx:209
+#: src/view/screens/ProfileFeed.tsx:210
msgid "There was an an issue updating your feeds, please check your internet connection and try again."
msgstr "Il y a eu un problĆØme lors de la mise Ć jour de vos fils dāactu, veuillez vĆ©rifier votre connexion Internet et rĆ©essayez."
-#: src/view/screens/ProfileFeed.tsx:236
-#: src/view/screens/ProfileList.tsx:266
+#: src/view/screens/ProfileFeed.tsx:237
+#: src/view/screens/ProfileList.tsx:267
#: src/view/screens/SavedFeeds.tsx:209
#: src/view/screens/SavedFeeds.tsx:231
#: src/view/screens/SavedFeeds.tsx:252
@@ -3865,9 +4051,9 @@ msgstr "Il y a eu un problĆØme de connexion au serveur"
#: src/view/com/auth/onboarding/RecommendedFeedsItem.tsx:57
#: src/view/com/auth/onboarding/RecommendedFeedsItem.tsx:66
-#: src/view/com/feeds/FeedSourceCard.tsx:113
-#: src/view/com/feeds/FeedSourceCard.tsx:127
-#: src/view/com/feeds/FeedSourceCard.tsx:181
+#: src/view/com/feeds/FeedSourceCard.tsx:115
+#: src/view/com/feeds/FeedSourceCard.tsx:129
+#: src/view/com/feeds/FeedSourceCard.tsx:183
msgid "There was an issue contacting your server"
msgstr "Il y a eu un problĆØme de connexion Ć votre serveur"
@@ -3899,19 +4085,19 @@ msgstr "Il y a eu un problème lors de la récupération de vos mots de passe d
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:93
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:105
-#: src/view/com/profile/ProfileHeader.tsx:156
-#: src/view/com/profile/ProfileHeader.tsx:177
-#: src/view/com/profile/ProfileHeader.tsx:216
-#: src/view/com/profile/ProfileHeader.tsx:229
-#: src/view/com/profile/ProfileHeader.tsx:249
-#: src/view/com/profile/ProfileHeader.tsx:271
+#: src/view/com/profile/ProfileHeader.tsx:157
+#: src/view/com/profile/ProfileHeader.tsx:178
+#: src/view/com/profile/ProfileHeader.tsx:217
+#: src/view/com/profile/ProfileHeader.tsx:230
+#: src/view/com/profile/ProfileHeader.tsx:250
+#: src/view/com/profile/ProfileHeader.tsx:272
msgid "There was an issue! {0}"
msgstr "Il y a eu un problĆØme ! {0}"
-#: src/view/screens/ProfileList.tsx:287
-#: src/view/screens/ProfileList.tsx:306
-#: src/view/screens/ProfileList.tsx:328
-#: src/view/screens/ProfileList.tsx:347
+#: src/view/screens/ProfileList.tsx:288
+#: src/view/screens/ProfileList.tsx:307
+#: src/view/screens/ProfileList.tsx:329
+#: src/view/screens/ProfileList.tsx:348
msgid "There was an issue. Please check your internet connection and try again."
msgstr "Il y a eu un problème. Veuillez vérifier votre connexion Internet et réessayez."
@@ -3924,8 +4110,8 @@ msgid "There's been a rush of new users to Bluesky! We'll activate your account
msgstr ""
#: src/view/com/auth/create/Step2.tsx:55
-msgid "There's something wrong with this number. Please choose your country and enter your full phone number!"
-msgstr ""
+#~ msgid "There's something wrong with this number. Please choose your country and enter your full phone number!"
+#~ msgstr ""
#: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:138
msgid "These are popular accounts you might like:"
@@ -3960,8 +4146,8 @@ msgid "This feed is currently receiving high traffic and is temporarily unavaila
msgstr "Ce fil dāactu reƧoit actuellement un trafic important, il est temporairement indisponible. Veuillez rĆ©essayer plus tard."
#: src/view/screens/Profile.tsx:420
-#: src/view/screens/ProfileFeed.tsx:475
-#: src/view/screens/ProfileList.tsx:660
+#: src/view/screens/ProfileFeed.tsx:476
+#: src/view/screens/ProfileList.tsx:661
msgid "This feed is empty!"
msgstr "Ce fil dāactu est vide !"
@@ -3989,7 +4175,7 @@ msgstr "Cette liste est vide !"
msgid "This name is already in use"
msgstr "Ce nom est déjà utilisé"
-#: src/view/com/post-thread/PostThreadItem.tsx:122
+#: src/view/com/post-thread/PostThreadItem.tsx:125
msgid "This post has been deleted."
msgstr "Ce post a ƩtƩ supprimƩ."
@@ -4013,7 +4199,11 @@ msgstr ""
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:192
+#: src/components/dialogs/MutedWords.tsx:236
+msgid "This will delete {0} from your muted words. You can always add it back later."
+msgstr ""
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:237
msgid "This will hide this post from your feeds."
msgstr "Cela va masquer ce post de vos fils dāactu."
@@ -4026,10 +4216,14 @@ msgstr "PrƩfƩrences des fils de discussion"
msgid "Threaded Mode"
msgstr "Mode arborescent"
-#: src/Navigation.tsx:252
+#: src/Navigation.tsx:255
msgid "Threads Preferences"
msgstr "PrƩfƩrences de fils de discussion"
+#: src/components/dialogs/MutedWords.tsx:95
+msgid "Toggle between muted word options."
+msgstr ""
+
#: src/view/com/util/forms/DropdownButton.tsx:246
msgid "Toggle dropdown"
msgstr "Activer le menu dƩroulant"
@@ -4038,9 +4232,9 @@ msgstr "Activer le menu dƩroulant"
msgid "Transformations"
msgstr "Transformations"
-#: src/view/com/post-thread/PostThreadItem.tsx:686
-#: src/view/com/post-thread/PostThreadItem.tsx:688
-#: src/view/com/util/forms/PostDropdownBtn.tsx:125
+#: src/view/com/post-thread/PostThreadItem.tsx:685
+#: src/view/com/post-thread/PostThreadItem.tsx:687
+#: src/view/com/util/forms/PostDropdownBtn.tsx:156
msgid "Translate"
msgstr "Traduire"
@@ -4049,15 +4243,15 @@ msgctxt "action"
msgid "Try again"
msgstr "RƩessayer"
-#: src/view/screens/ProfileList.tsx:505
+#: src/view/screens/ProfileList.tsx:506
msgid "Un-block list"
msgstr "DƩbloquer la liste"
-#: src/view/screens/ProfileList.tsx:490
+#: src/view/screens/ProfileList.tsx:491
msgid "Un-mute list"
msgstr "RƩafficher cette liste"
-#: src/view/com/auth/create/CreateAccount.tsx:66
+#: src/view/com/auth/create/CreateAccount.tsx:58
#: src/view/com/auth/login/ForgotPasswordForm.tsx:87
#: src/view/com/auth/login/Login.tsx:76
#: src/view/com/auth/login/LoginForm.tsx:118
@@ -4065,18 +4259,18 @@ msgstr "RƩafficher cette liste"
msgid "Unable to contact your service. Please check your Internet connection."
msgstr "Impossible de contacter votre service. Veuillez vƩrifier votre connexion Internet."
-#: src/view/com/profile/ProfileHeader.tsx:432
-#: src/view/screens/ProfileList.tsx:589
+#: src/view/com/profile/ProfileHeader.tsx:433
+#: src/view/screens/ProfileList.tsx:590
msgid "Unblock"
msgstr "DƩbloquer"
-#: src/view/com/profile/ProfileHeader.tsx:435
+#: src/view/com/profile/ProfileHeader.tsx:436
msgctxt "action"
msgid "Unblock"
msgstr "DƩbloquer"
-#: src/view/com/profile/ProfileHeader.tsx:260
-#: src/view/com/profile/ProfileHeader.tsx:344
+#: src/view/com/profile/ProfileHeader.tsx:261
+#: src/view/com/profile/ProfileHeader.tsx:345
msgid "Unblock Account"
msgstr "DƩbloquer le compte"
@@ -4092,11 +4286,11 @@ msgctxt "action"
msgid "Unfollow"
msgstr "Se dƩsabonner"
-#: src/view/com/profile/ProfileHeader.tsx:484
+#: src/view/com/profile/ProfileHeader.tsx:485
msgid "Unfollow {0}"
msgstr "Se dƩsabonner de {0}"
-#: src/view/com/auth/create/state.ts:300
+#: src/view/com/auth/create/state.ts:262
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."
@@ -4105,28 +4299,37 @@ msgstr "Malheureusement, vous ne remplissez pas les conditions requises pour cr
msgid "Unlike"
msgstr "DƩliker"
-#: src/view/screens/ProfileList.tsx:596
+#: src/components/TagMenu/index.tsx:253
+#: src/view/screens/ProfileList.tsx:597
msgid "Unmute"
msgstr "RƩafficher"
-#: src/view/com/profile/ProfileHeader.tsx:325
+#: src/components/TagMenu/index.web.tsx:90
+msgid "Unmute {truncatedTag}"
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:326
msgid "Unmute Account"
msgstr "RƩafficher ce compte"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:171
+#: src/components/TagMenu/index.tsx:210
+msgid "Unmute all {tag} posts"
+msgstr ""
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:202
msgid "Unmute thread"
msgstr "RƩafficher ce fil de discussion"
-#: src/view/screens/ProfileFeed.tsx:353
-#: src/view/screens/ProfileList.tsx:580
+#: src/view/screens/ProfileFeed.tsx:354
+#: src/view/screens/ProfileList.tsx:581
msgid "Unpin"
msgstr "DƩsƩpingler"
-#: src/view/screens/ProfileList.tsx:473
+#: src/view/screens/ProfileList.tsx:474
msgid "Unpin moderation list"
msgstr "Supprimer la liste de modƩration"
-#: src/view/screens/ProfileFeed.tsx:345
+#: src/view/screens/ProfileFeed.tsx:346
msgid "Unsave"
msgstr "Supprimer"
@@ -4188,11 +4391,11 @@ msgstr "Compte bloquƩ par liste"
msgid "User Blocks You"
msgstr "Compte qui vous bloque"
-#: src/view/com/auth/create/Step3.tsx:41
+#: src/view/com/auth/create/Step2.tsx:79
msgid "User handle"
msgstr "Pseudo"
-#: src/view/com/lists/ListCard.tsx:84
+#: src/view/com/lists/ListCard.tsx:85
#: src/view/com/modals/UserAddRemoveLists.tsx:198
msgid "User list by {0}"
msgstr "Liste de compte de {0}"
@@ -4201,7 +4404,7 @@ msgstr "Liste de compte de {0}"
msgid "User list by <0/>"
msgstr "Liste de compte par <0/>"
-#: src/view/com/lists/ListCard.tsx:82
+#: src/view/com/lists/ListCard.tsx:83
#: src/view/com/modals/UserAddRemoveLists.tsx:196
#: src/view/screens/ProfileList.tsx:760
msgid "User list by you"
@@ -4237,8 +4440,8 @@ msgid "Users in \"{0}\""
msgstr "Comptes dans Ā« {0} Ā»"
#: src/view/com/auth/create/Step2.tsx:243
-msgid "Verification code"
-msgstr ""
+#~ msgid "Verification code"
+#~ msgstr ""
#: src/view/screens/Settings/index.tsx:910
msgid "Verify email"
@@ -4265,7 +4468,7 @@ msgstr "VƩrifiez votre e-mail"
msgid "Video Games"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:661
+#: src/view/com/profile/ProfileHeader.tsx:662
msgid "View {0}'s avatar"
msgstr "Voir lāavatar de {0}"
@@ -4314,6 +4517,10 @@ msgstr ""
#~ msgid "We recommend \"For You\" by Skygaze:"
#~ msgstr ""
+#: src/components/dialogs/MutedWords.tsx:161
+msgid "We recommend avoiding common words that appear in many posts, since it can result in no posts being shown."
+msgstr ""
+
#: src/screens/Onboarding/StepAlgoFeeds/index.tsx:124
msgid "We recommend our \"Discover\" feed:"
msgstr ""
@@ -4334,15 +4541,19 @@ msgstr "Nous examinerons votre appel rapidement."
msgid "We'll use this to help customize your experience."
msgstr ""
-#: src/view/com/auth/create/CreateAccount.tsx:123
+#: src/view/com/auth/create/CreateAccount.tsx:134
msgid "We're so excited to have you join us!"
msgstr "Nous sommes ravis de vous accueillir !"
-#: src/view/screens/ProfileList.tsx:85
+#: src/view/screens/ProfileList.tsx:86
msgid "We're sorry, but we were unable to resolve this list. If this persists, please contact the list creator, @{handleOrDid}."
msgstr "Nous sommes dĆ©solĆ©s, mais nous nāavons pas pu charger cette liste. Si cela persiste, veuillez contacter lāorigine de la liste, @{handleOrDid}."
-#: src/view/screens/Search/Search.tsx:253
+#: src/components/dialogs/MutedWords.tsx:182
+msgid "We're sorry, but we weren't able to load your muted words at this time. Please try again."
+msgstr ""
+
+#: src/view/screens/Search/Search.tsx:254
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."
@@ -4362,8 +4573,8 @@ msgstr ""
msgid "What is the issue with this {collectionName}?"
msgstr "Quel est le problĆØme avec cette {collectionName} ?"
-#: src/view/com/auth/SplashScreen.tsx:34
-#: src/view/com/composer/Composer.tsx:279
+#: src/view/com/auth/SplashScreen.tsx:59
+#: src/view/com/composer/Composer.tsx:286
msgid "What's up?"
msgstr "Quoi de neuf ?"
@@ -4384,11 +4595,11 @@ msgstr "Qui peut rƩpondre ?"
msgid "Wide"
msgstr "Large"
-#: src/view/com/composer/Composer.tsx:415
+#: src/view/com/composer/Composer.tsx:422
msgid "Write post"
msgstr "RƩdiger un post"
-#: src/view/com/composer/Composer.tsx:278
+#: src/view/com/composer/Composer.tsx:285
#: src/view/com/composer/Prompt.tsx:33
msgid "Write your reply"
msgstr "RƩdigez votre rƩponse"
@@ -4398,14 +4609,14 @@ msgid "Writers"
msgstr ""
#: src/view/com/auth/create/Step2.tsx:263
-msgid "XXXXXX"
-msgstr ""
+#~ msgid "XXXXXX"
+#~ msgstr ""
#: src/view/com/composer/select-language/SuggestedLanguage.tsx:77
-#: 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/PreferencesFollowingFeed.tsx:129
+#: src/view/screens/PreferencesFollowingFeed.tsx:201
+#: src/view/screens/PreferencesFollowingFeed.tsx:236
+#: src/view/screens/PreferencesFollowingFeed.tsx:271
#: src/view/screens/PreferencesThreads.tsx:106
#: src/view/screens/PreferencesThreads.tsx:129
msgid "Yes"
@@ -4445,7 +4656,7 @@ msgstr "Vous nāavez encore aucun code dāinvitation ! Nous vous en enverrons
msgid "You don't have any pinned feeds."
msgstr "Vous nāavez encore aucun fil Ć©pinglĆ©."
-#: src/view/screens/Feeds.tsx:451
+#: src/view/screens/Feeds.tsx:452
msgid "You don't have any saved feeds!"
msgstr "Vous nāavez encore aucun fil enregistrĆ© !"
@@ -4453,7 +4664,7 @@ 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:401
+#: src/view/com/post-thread/PostThread.tsx:465
msgid "You have blocked the author or you have been blocked by the author."
msgstr "Vous avez bloquƩ cet auteur ou vous avez ƩtƩ bloquƩ par celui-ci."
@@ -4493,6 +4704,10 @@ msgstr "Vous nāavez encore crƩƩ aucun mot de passe pour lāappli. Vous pouv
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 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/components/dialogs/MutedWords.tsx:202
+msgid "You haven't muted any words or tags yet"
+msgstr ""
+
#: src/view/com/modals/ContentFilteringSettings.tsx:175
msgid "You must be 18 or older to enable adult content."
msgstr "Vous devez avoir 18 ans ou plus pour activer le contenu pour adultes."
@@ -4501,11 +4716,11 @@ msgstr "Vous devez avoir 18 ans ou plus pour activer le contenu pour adultes."
msgid "You must be 18 years or older to enable adult content"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:98
+#: src/view/com/util/forms/PostDropdownBtn.tsx:129
msgid "You will no longer receive notifications for this thread"
msgstr "Vous ne recevrez plus de notifications pour ce fil de discussion"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:101
+#: src/view/com/util/forms/PostDropdownBtn.tsx:132
msgid "You will now receive notifications for this thread"
msgstr "Vous recevrez dƩsormais des notifications pour ce fil de discussion"
@@ -4543,7 +4758,7 @@ msgstr "Votre compte a ƩtƩ supprimƩ"
msgid "Your account repository, containing all public data records, can be downloaded as a \"CAR\" file. This file does not include media embeds, such as images, or your private data, which must be fetched separately."
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:234
+#: src/view/com/auth/create/Step1.tsx:238
msgid "Your birth date"
msgstr "Votre date de naissance"
@@ -4555,7 +4770,7 @@ msgstr ""
msgid "Your default feed is \"Following\""
msgstr ""
-#: src/view/com/auth/create/state.ts:153
+#: src/view/com/auth/create/state.ts:110
#: src/view/com/auth/login/ForgotPasswordForm.tsx:70
#: src/view/com/modals/ChangePassword.tsx:54
msgid "Your email appears to be invalid."
@@ -4577,7 +4792,7 @@ msgstr "Votre e-mail nāa pas encore Ć©tĆ© vĆ©rifiĆ©. Il sāagit dāune mesur
msgid "Your following feed is empty! Follow more users to see what's happening."
msgstr "Votre fil dāactu des comptes suivis est vide ! Suivez plus de comptes pour voir ce qui se passe."
-#: src/view/com/auth/create/Step3.tsx:45
+#: src/view/com/auth/create/Step2.tsx:83
msgid "Your full handle will be"
msgstr "Votre nom complet sera"
@@ -4591,11 +4806,15 @@ msgstr "Votre pseudo complet sera <0>@{0}0>"
#~ 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/components/dialogs/MutedWords.tsx:173
+msgid "Your muted words"
+msgstr ""
+
#: src/view/com/modals/ChangePassword.tsx:155
msgid "Your password has been changed successfully!"
msgstr ""
-#: src/view/com/composer/Composer.tsx:267
+#: src/view/com/composer/Composer.tsx:274
msgid "Your post has been published"
msgstr "Votre post a ƩtƩ publiƩ"
@@ -4610,10 +4829,10 @@ msgstr "Vos posts, les likes et les blocages sont publics. Les silences (comptes
msgid "Your profile"
msgstr "Votre profil"
-#: src/view/com/composer/Composer.tsx:266
+#: src/view/com/composer/Composer.tsx:273
msgid "Your reply has been published"
msgstr "Votre rƩponse a ƩtƩ publiƩe"
-#: src/view/com/auth/create/Step3.tsx:28
+#: src/view/com/auth/create/Step2.tsx:65
msgid "Your user handle"
msgstr "Votre pseudo"
diff --git a/src/locale/locales/hi/messages.po b/src/locale/locales/hi/messages.po
index 0569ae2993..7d852d0b5a 100644
--- a/src/locale/locales/hi/messages.po
+++ b/src/locale/locales/hi/messages.po
@@ -21,7 +21,7 @@ msgstr ""
#~ msgid "{0, plural, one {# invite code available} other {# invite codes available}}"
#~ msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:592
+#: src/view/com/profile/ProfileHeader.tsx:593
msgid "{following} following"
msgstr ""
@@ -47,7 +47,7 @@ msgstr ""
msgid "<0/> members"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:594
+#: src/view/com/profile/ProfileHeader.tsx:595
msgid "<0>{following} 0><1>following1>"
msgstr ""
@@ -67,7 +67,7 @@ msgstr "<0>ą¤ą„ą¤0><1>ą¤Ŗą¤øą¤ą¤¦ą„दा ą¤ą¤Ŗą¤Æą„ą¤ą¤ą¤°ą„ता
msgid "<0>Welcome to0><1>Bluesky1>"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:557
+#: src/view/com/profile/ProfileHeader.tsx:558
msgid "ā Invalid Handle"
msgstr ""
@@ -80,11 +80,11 @@ msgid "A new version of the app is available. Please update to continue using th
msgstr "ą¤ą¤Ŗ ą¤ą¤¾ ą¤ą¤ नया ą¤øą¤ą¤øą„ą¤ą¤°ą¤£ ą¤ą¤Ŗą¤²ą¤¬ą„ध हą„. ą¤ą„पया ą¤ą¤Ŗ ą¤ą¤¾ ą¤ą¤Ŗą¤Æą„ą¤ ą¤ą¤¾ą¤°ą„ ą¤°ą¤ą¤Øą„ ą¤ą„ लिठą¤
ą¤Ŗą¤”ą„ą¤ ą¤ą¤°ą„ą¤ą„¤"
#: src/view/com/util/ViewHeader.tsx:83
-#: src/view/screens/Search/Search.tsx:624
+#: src/view/screens/Search/Search.tsx:647
msgid "Access navigation links and settings"
msgstr ""
-#: src/view/com/pager/FeedsTabBarMobile.tsx:89
+#: src/view/com/home/HomeHeaderLayoutMobile.tsx:51
msgid "Access profile and other navigation links"
msgstr ""
@@ -99,11 +99,11 @@ msgstr "ą¤Ŗą„ą¤°ą¤µą„ą¤°ą„ą¤¶ą¤Æą„ą¤ą„यता"
msgid "Account"
msgstr "ą¤
ą¤ą¤¾ą¤ą¤ą¤"
-#: src/view/com/profile/ProfileHeader.tsx:245
+#: src/view/com/profile/ProfileHeader.tsx:246
msgid "Account blocked"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:212
+#: src/view/com/profile/ProfileHeader.tsx:213
msgid "Account muted"
msgstr ""
@@ -123,14 +123,15 @@ msgstr "ą¤
ą¤ą¤¾ą¤ą¤ą¤ ą¤ą„ ą¤µą¤æą¤ą¤²ą„प"
msgid "Account removed from quick access"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:267
+#: src/view/com/profile/ProfileHeader.tsx:268
msgid "Account unblocked"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:225
+#: src/view/com/profile/ProfileHeader.tsx:226
msgid "Account unmuted"
msgstr ""
+#: src/components/dialogs/MutedWords.tsx:147
#: src/view/com/auth/onboarding/RecommendedFeedsItem.tsx:150
#: src/view/com/modals/ListAddRemoveUsers.tsx:264
#: src/view/com/modals/UserAddRemoveLists.tsx:219
@@ -172,24 +173,32 @@ msgstr "विवरण ą¤ą„ą¤”ą¤¼ą„ą¤"
msgid "Add details to report"
msgstr "ą¤°ą¤æą¤Ŗą„ą¤°ą„ą¤ ą¤ą¤°ą¤Øą„ ą¤ą„ लिठविवरण ą¤ą„ą¤”ą¤¼ą„ą¤"
-#: src/view/com/composer/Composer.tsx:446
+#: src/view/com/composer/Composer.tsx:453
msgid "Add link card"
msgstr "ą¤²ą¤æą¤ą¤ ą¤ą¤¾ą¤°ą„औ ą¤ą„ą¤”ą¤¼ą„ą¤"
-#: src/view/com/composer/Composer.tsx:451
+#: src/view/com/composer/Composer.tsx:458
msgid "Add link card:"
msgstr "ą¤²ą¤æą¤ą¤ ą¤ą¤¾ą¤°ą„औ ą¤ą„ą¤”ą¤¼ą„ą¤:"
+#: src/components/dialogs/MutedWords.tsx:140
+msgid "Add mute word for configured settings"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:74
+msgid "Add muted words and tags"
+msgstr ""
+
#: src/view/com/modals/ChangeHandle.tsx:417
msgid "Add the following DNS record to your domain:"
msgstr "ą¤
ą¤Ŗą¤Øą„ ą¤”ą„ą¤®ą„न ą¤®ą„ą¤ ą¤Øą¤æą¤®ą„ą¤Øą¤²ą¤æą¤ą¤æą¤¤ DNS ą¤°ą¤æą¤ą„ą¤°ą„ą¤” ą¤ą„ą¤”ą¤¼ą„ą¤:"
-#: src/view/com/profile/ProfileHeader.tsx:309
+#: src/view/com/profile/ProfileHeader.tsx:310
msgid "Add to Lists"
msgstr "ą¤øą„ą¤ą¤æą¤Æą„ą¤ ą¤®ą„ą¤ ą¤ą„ą¤”ą¤¼ą„ą¤"
-#: src/view/com/feeds/FeedSourceCard.tsx:243
-#: src/view/screens/ProfileFeed.tsx:272
+#: src/view/com/feeds/FeedSourceCard.tsx:245
+#: src/view/screens/ProfileFeed.tsx:273
msgid "Add to my feeds"
msgstr "ą¤ą¤ø ą¤«ą¤¼ą„ą¤” ą¤ą„ ą¤øą¤¹ą„ą¤ą„ą¤"
@@ -202,11 +211,11 @@ msgstr ""
msgid "Added to list"
msgstr ""
-#: src/view/com/feeds/FeedSourceCard.tsx:125
+#: src/view/com/feeds/FeedSourceCard.tsx:127
msgid "Added to my feeds"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:173
+#: src/view/screens/PreferencesFollowingFeed.tsx:173
msgid "Adjust the number of likes a reply must have to be shown in your feed."
msgstr "ą¤Ŗą¤øą¤ą¤¦ ą¤ą„ ą¤øą¤ą¤ą„या ą¤ą„ ą¤øą¤®ą¤¾ą¤Æą„ą¤ą¤æą¤¤ ą¤ą¤°ą„ą¤ ą¤ą¤¤ą„तर ą¤ą„ ą¤ą¤Ŗą¤ą„ ą¤«ą¤¼ą„ą¤” ą¤®ą„ą¤ ą¤¦ą¤æą¤ą¤¾ą¤Æą¤¾ ą¤ą¤¾ą¤Øą¤¾ ą¤ą¤¾ą¤¹ą¤æą¤ą„¤ą„¤"
@@ -226,6 +235,10 @@ msgstr ""
msgid "Advanced"
msgstr "ą¤µą¤æą¤ą¤øą¤æą¤¤"
+#: src/view/screens/Feeds.tsx:666
+msgid "All the feeds you've saved, right in one place."
+msgstr ""
+
#: src/view/com/auth/login/ForgotPasswordForm.tsx:221
#: src/view/com/modals/ChangePassword.tsx:168
msgid "Already have a code?"
@@ -299,7 +312,7 @@ msgstr ""
msgid "App Passwords"
msgstr "ą¤ą¤Ŗ ą¤Ŗą¤¾ą¤øą¤µą¤°ą„ą¤”"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:250
+#: src/view/com/util/forms/PostDropdownBtn.tsx:295
msgid "Appeal content warning"
msgstr ""
@@ -323,15 +336,16 @@ msgstr "ą¤¦ą¤æą¤ą¤¾ą¤µą¤"
msgid "Are you sure you want to delete the app password \"{name}\"?"
msgstr "ą¤ą„या ą¤ą¤Ŗ ą¤µą¤¾ą¤ą¤ ą¤ą¤Ŗ ą¤Ŗą¤¾ą¤øą¤µą¤°ą„ą¤” \"{name}\" ą¤¹ą¤ą¤¾ą¤Øą¤¾ ą¤ą¤¾ą¤¹ą¤¤ą„ ą¤¹ą„ą¤?"
-#: src/view/com/composer/Composer.tsx:143
+#: src/view/com/composer/Composer.tsx:150
msgid "Are you sure you'd like to discard this draft?"
msgstr "ą¤ą„या ą¤ą¤Ŗ ą¤µą¤¾ą¤ą¤ ą¤ą¤ø ą¤”ą„ą¤°ą¤¾ą¤«ą„ą¤ ą¤ą„ ą¤¹ą¤ą¤¾ą¤Øą¤¾ ą¤ą¤°ą¤Øą¤¾ ą¤ą¤¾ą¤¹ą„ą¤ą¤ą„?"
-#: src/view/screens/ProfileList.tsx:364
+#: src/components/dialogs/MutedWords.tsx:233
+#: src/view/screens/ProfileList.tsx:365
msgid "Are you sure?"
msgstr "ą¤ą„या ą¤ą¤Ŗ ą¤µą¤¾ą¤øą„ą¤¤ą¤µ ą¤®ą„ą¤ ą¤ą¤øą„ ą¤ą¤°ą¤Øą¤¾ ą¤ą¤¾ą¤¹ą¤¤ą„ ą¤¹ą„ą¤?"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:233
+#: src/view/com/util/forms/PostDropdownBtn.tsx:278
msgid "Are you sure? This cannot be undone."
msgstr "ą¤ą„या ą¤ą¤Ŗ ą¤µą¤¾ą¤øą„ą¤¤ą¤µ ą¤®ą„ą¤ ą¤ą¤øą„ ą¤ą¤°ą¤Øą¤¾ ą¤ą¤¾ą¤¹ą¤¤ą„ ą¤¹ą„ą¤? ą¤ą¤øą„ ą¤
ą¤øą¤ą¤Ŗą¤¾ą¤¦ą¤æą¤¤ ą¤Øą¤¹ą„ą¤ ą¤ą¤æą¤Æą¤¾ ą¤ą¤¾ ą¤øą¤ą¤¤ą¤¾ ą¤¹ą„ą„¤"
@@ -347,21 +361,21 @@ msgstr ""
msgid "Artistic or non-erotic nudity."
msgstr "ą¤ą¤²ą¤¾ą¤¤ą„मठया ą¤ą„र-ą¤ą¤¾ą¤®ą„ą¤ ą¤Øą¤ą„ą¤Øą¤¤ą¤¾ą„¤ą„¤"
-#: src/view/com/auth/create/CreateAccount.tsx:147
+#: src/view/com/auth/create/CreateAccount.tsx:158
#: src/view/com/auth/login/ChooseAccountForm.tsx:151
#: src/view/com/auth/login/ForgotPasswordForm.tsx:174
#: src/view/com/auth/login/LoginForm.tsx:259
#: src/view/com/auth/login/SetNewPasswordForm.tsx:179
#: src/view/com/modals/report/InputIssueDetails.tsx:46
-#: src/view/com/post-thread/PostThread.tsx:408
-#: src/view/com/post-thread/PostThread.tsx:458
-#: src/view/com/post-thread/PostThread.tsx:466
-#: src/view/com/profile/ProfileHeader.tsx:648
+#: src/view/com/post-thread/PostThread.tsx:472
+#: src/view/com/post-thread/PostThread.tsx:522
+#: src/view/com/post-thread/PostThread.tsx:530
+#: src/view/com/profile/ProfileHeader.tsx:649
#: src/view/com/util/ViewHeader.tsx:81
msgid "Back"
msgstr "वापस"
-#: src/view/com/post-thread/PostThread.tsx:416
+#: src/view/com/post-thread/PostThread.tsx:480
msgctxt "action"
msgid "Back"
msgstr ""
@@ -374,7 +388,7 @@ msgstr ""
msgid "Basics"
msgstr "ą¤®ą„ą¤² ą¤¬ą¤¾ą¤¤ą„ą¤"
-#: src/view/com/auth/create/Step1.tsx:246
+#: src/view/com/auth/create/Step1.tsx:250
#: src/view/com/modals/BirthDateSettings.tsx:73
msgid "Birthday"
msgstr "ą¤ą¤Øą„मदिन"
@@ -383,33 +397,33 @@ msgstr "ą¤ą¤Øą„मदिन"
msgid "Birthday:"
msgstr "ą¤ą¤Øą„मदिन:"
-#: src/view/com/profile/ProfileHeader.tsx:238
-#: src/view/com/profile/ProfileHeader.tsx:345
+#: src/view/com/profile/ProfileHeader.tsx:239
+#: src/view/com/profile/ProfileHeader.tsx:346
msgid "Block Account"
msgstr "ą¤ą¤¾ą¤¤ą¤¾ ą¤¬ą„ą¤²ą„ą¤ ą¤ą¤°ą„ą¤"
-#: src/view/screens/ProfileList.tsx:555
+#: src/view/screens/ProfileList.tsx:556
msgid "Block accounts"
msgstr "ą¤ą¤¾ą¤¤ą¤¾ ą¤¬ą„ą¤²ą„ą¤ ą¤ą¤°ą„ą¤"
-#: src/view/screens/ProfileList.tsx:505
+#: src/view/screens/ProfileList.tsx:506
msgid "Block list"
msgstr ""
-#: src/view/screens/ProfileList.tsx:315
+#: src/view/screens/ProfileList.tsx:316
msgid "Block these accounts?"
msgstr "ą¤ą¤¾ą¤¤ą¤¾ ą¤¬ą„ą¤²ą„ą¤ ą¤ą¤°ą„ą¤?"
-#: src/view/screens/ProfileList.tsx:319
+#: src/view/screens/ProfileList.tsx:320
msgid "Block this List"
msgstr ""
-#: src/view/com/lists/ListCard.tsx:109
-#: src/view/com/util/post-embeds/QuoteEmbed.tsx:60
+#: src/view/com/lists/ListCard.tsx:110
+#: src/view/com/util/post-embeds/QuoteEmbed.tsx:61
msgid "Blocked"
msgstr ""
-#: src/view/screens/Moderation.tsx:123
+#: src/view/screens/Moderation.tsx:142
msgid "Blocked accounts"
msgstr "ą¤¬ą„ą¤²ą„ą¤ ą¤ą¤æą¤ ą¤ą¤ ą¤ą¤¾ą¤¤ą„"
@@ -418,7 +432,7 @@ msgstr "ą¤¬ą„ą¤²ą„ą¤ ą¤ą¤æą¤ ą¤ą¤ ą¤ą¤¾ą¤¤ą„"
msgid "Blocked Accounts"
msgstr "ą¤¬ą„ą¤²ą„ą¤ ą¤ą¤æą¤ ą¤ą¤ ą¤ą¤¾ą¤¤ą„"
-#: src/view/com/profile/ProfileHeader.tsx:240
+#: src/view/com/profile/ProfileHeader.tsx:241
msgid "Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you."
msgstr "ą¤
ą¤µą¤°ą„ą¤¦ą„ध ą¤ą¤¾ą¤¤ą„ ą¤ą¤Ŗą¤ą„ ą¤„ą„ą¤°ą„ą¤”ą„ą¤ø ą¤®ą„ą¤ ą¤ą¤¤ą„तर ą¤Øą¤¹ą„ą¤ ą¤¦ą„ ą¤øą¤ą¤¤ą„, ą¤ą¤Ŗą¤ą¤¾ ą¤ą¤²ą„ą¤²ą„ą¤ ą¤Øą¤¹ą„ą¤ ą¤ą¤° ą¤øą¤ą¤¤ą„, या ą¤
ą¤Øą„ą¤Æą¤„ा ą¤ą¤Ŗą¤ą„ साऄ ą¤¬ą¤¾ą¤¤ą¤ą„त ą¤Øą¤¹ą„ą¤ ą¤ą¤° ą¤øą¤ą¤¤ą„ą„¤"
@@ -426,15 +440,16 @@ msgstr "ą¤
ą¤µą¤°ą„ą¤¦ą„ध ą¤ą¤¾ą¤¤ą„ ą¤ą¤Ŗą¤ą„ ą¤„ą„ą¤°ą„ą¤”ą„ą¤ø
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:267
+#: src/view/com/post-thread/PostThread.tsx:324
msgid "Blocked post."
msgstr "ą¤¬ą„ą¤²ą„ą¤ ą¤Ŗą„ą¤øą„ą¤ą„¤"
-#: src/view/screens/ProfileList.tsx:317
+#: src/view/screens/ProfileList.tsx:318
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:133
msgid "Blog"
msgstr ""
@@ -467,7 +482,7 @@ msgstr "Bluesky ą¤øą¤¾ą¤°ą„ą¤µą¤ą¤Øą¤æą¤ ą¤¹ą„ą„¤ą„¤"
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 "ą¤¬ą„ą¤²ą„ą¤øą„ą¤ą„ ą¤ą¤ ą¤øą„ą¤µą¤øą„ऄ ą¤øą¤®ą„ą¤¦ą¤¾ą¤Æ ą¤¬ą¤Øą¤¾ą¤Øą„ ą¤ą„ ą¤²ą¤æą¤ ą¤ą¤®ą¤ą¤¤ą„रित ą¤ą¤°ą¤¤ą¤¾ ą¤¹ą„ą„¤ यदि ą¤ą¤Ŗ ą¤ą¤æą¤øą„ ą¤ą„ ą¤ą¤®ą¤ą¤¤ą„रित ą¤Øą¤¹ą„ą¤ ą¤ą¤°ą¤¤ą„ ą¤¹ą„ą¤, ą¤¤ą„ ą¤ą¤Ŗ ą¤Ŗą„ą¤°ą¤¤ą„ą¤ą„षा ą¤øą„ą¤ą„ ą¤ą„ ą¤²ą¤æą¤ ą¤øą¤¾ą¤ą¤Ø ą¤
प ą¤ą¤° ą¤øą¤ą¤¤ą„ ą¤¹ą„ą¤ ą¤ą¤° हम ą¤ą¤²ą„द ą¤¹ą„ ą¤ą¤ ą¤ą„ą¤ ą¤¦ą„ą¤ą¤ą„ą„¤ą„¤"
-#: src/view/screens/Moderation.tsx:226
+#: src/view/screens/Moderation.tsx:245
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 ""
@@ -484,6 +499,7 @@ msgid "Build version {0} {1}"
msgstr "Build version {0} {1}"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:87
+#: src/view/com/auth/SplashScreen.web.tsx:128
msgid "Business"
msgstr ""
@@ -518,8 +534,8 @@ msgid "Can only contain letters, numbers, spaces, dashes, and underscores. Must
msgstr "ą¤ą„वल ą¤
ą¤ą„षर, ą¤øą¤ą¤ą„या, ą¤°ą¤æą¤ą„त ą¤øą„ą¤„ान, ą¤”ą„ą¤¶ ą¤ą¤° ą¤
ą¤ą¤”ą¤°ą¤øą„ą¤ą„र ą¤¹ą„ ą¤øą¤ą¤¤ą„ ą¤¹ą„ą¤ą„¤ ą¤ą¤® ą¤øą„ ą¤ą¤® 4 ą¤
ą¤ą„षर ą¤²ą¤ą¤¬ą¤¾ ą¤¹ą„ą¤Øą¤¾ ą¤ą¤¾ą¤¹ą¤æą¤, ą¤²ą„ą¤ą¤æą¤Ø 32 ą¤
ą¤ą„ą¤·ą¤°ą„ą¤ ą¤øą„ ą¤
ą¤§ą¤æą¤ ą¤²ą¤ą¤¬ą¤¾ ą¤Øą¤¹ą„ą¤ ą¤¹ą„ą¤Øą¤¾ ą¤ą¤¾ą¤¹ą¤æą¤ą„¤ą„¤"
#: src/components/Prompt.tsx:91
-#: src/view/com/composer/Composer.tsx:300
-#: src/view/com/composer/Composer.tsx:305
+#: src/view/com/composer/Composer.tsx:307
+#: src/view/com/composer/Composer.tsx:312
#: src/view/com/modals/ChangeEmail.tsx:218
#: src/view/com/modals/ChangeEmail.tsx:220
#: src/view/com/modals/ChangePassword.tsx:265
@@ -533,7 +549,7 @@ msgstr "ą¤ą„वल ą¤
ą¤ą„षर, ą¤øą¤ą¤ą„या, ą¤°ą¤æą¤ą„त सą„
#: src/view/com/modals/VerifyEmail.tsx:247
#: src/view/com/modals/VerifyEmail.tsx:253
#: src/view/com/modals/Waitlist.tsx:142
-#: src/view/screens/Search/Search.tsx:693
+#: src/view/screens/Search/Search.tsx:716
#: src/view/shell/desktop/Search.tsx:238
msgid "Cancel"
msgstr "ą¤ą„ą¤ą¤øą¤æą¤²"
@@ -661,7 +677,7 @@ msgstr "ą¤ą¤Ø ą¤ą¤²ą„ą¤ą„रिदम ą¤ą¤¾ ą¤ą¤Æą¤Ø ą¤ą¤°ą„ą¤ ą¤ą„
msgid "Choose your main feeds"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:215
+#: src/view/com/auth/create/Step1.tsx:219
msgid "Choose your password"
msgstr "ą¤
पना ą¤Ŗą¤¾ą¤øą¤µą¤°ą„ą¤” ą¤ą„ą¤Øą„ą¤"
@@ -684,7 +700,7 @@ msgid "Clear all storage data (restart after this)"
msgstr ""
#: src/view/com/util/forms/SearchInput.tsx:88
-#: src/view/screens/Search/Search.tsx:674
+#: src/view/screens/Search/Search.tsx:697
msgid "Clear search query"
msgstr "ą¤ą„ą¤ ą¤ą„ą¤µą„ą¤°ą„ साफ़ ą¤ą¤°ą„ą¤"
@@ -692,6 +708,11 @@ msgstr "ą¤ą„ą¤ ą¤ą„ą¤µą„ą¤°ą„ साफ़ ą¤ą¤°ą„ą¤"
msgid "click here"
msgstr ""
+#: src/components/RichText.tsx:189
+#: src/components/TagMenu/index.web.tsx:125
+msgid "Click here to open tag menu for {tag}"
+msgstr ""
+
#: src/screens/Onboarding/index.tsx:35
msgid "Climate"
msgstr ""
@@ -701,7 +722,8 @@ msgstr ""
msgid "Close"
msgstr ""
-#: src/components/Dialog/index.web.tsx:78
+#: src/components/Dialog/index.web.tsx:80
+#: src/components/Dialog/index.web.tsx:194
msgid "Close active dialog"
msgstr ""
@@ -721,11 +743,15 @@ msgstr "ą¤ą¤µą¤æ ą¤¬ą¤ą¤¦ ą¤ą¤°ą„ą¤"
msgid "Close image viewer"
msgstr "ą¤ą¤µą¤æ ą¤¬ą¤ą¤¦ ą¤ą¤°ą„ą¤"
-#: src/view/shell/index.web.tsx:49
+#: src/view/shell/index.web.tsx:51
msgid "Close navigation footer"
msgstr "ą¤Øą„ą¤µą¤æą¤ą„शन पाद ą¤¬ą¤ą¤¦ ą¤ą¤°ą„ą¤"
-#: src/view/shell/index.web.tsx:50
+#: src/components/TagMenu/index.tsx:266
+msgid "Close this dialog"
+msgstr ""
+
+#: src/view/shell/index.web.tsx:52
msgid "Closes bottom navigation bar"
msgstr ""
@@ -733,7 +759,7 @@ msgstr ""
msgid "Closes password update alert"
msgstr ""
-#: src/view/com/composer/Composer.tsx:302
+#: src/view/com/composer/Composer.tsx:309
msgid "Closes post composer and discards post draft"
msgstr ""
@@ -762,7 +788,11 @@ msgstr "ą¤øą¤®ą„ą¤¦ą¤¾ą¤Æ ą¤¦ą¤æą¤¶ą¤¾ą¤Øą¤æą¤°ą„ą¤¦ą„श"
msgid "Complete onboarding and start using your account"
msgstr ""
-#: src/view/com/composer/Composer.tsx:417
+#: src/view/com/auth/create/Step3.tsx:73
+msgid "Complete the challenge"
+msgstr ""
+
+#: src/view/com/composer/Composer.tsx:424
msgid "Compose posts up to {MAX_GRAPHEME_LENGTH} characters in length"
msgstr ""
@@ -779,7 +809,7 @@ msgstr ""
#: src/view/com/modals/SelfLabel.tsx:154
#: src/view/com/modals/VerifyEmail.tsx:231
#: src/view/com/modals/VerifyEmail.tsx:233
-#: src/view/screens/PreferencesHomeFeed.tsx:308
+#: src/view/screens/PreferencesFollowingFeed.tsx:308
#: src/view/screens/PreferencesThreads.tsx:159
msgid "Confirm"
msgstr "ą¤¹ą„ ą¤ą¤Æą¤¾"
@@ -817,16 +847,16 @@ msgstr "OTP ą¤ą„औ"
msgid "Confirms signing up {email} to the waitlist"
msgstr ""
-#: src/view/com/auth/create/CreateAccount.tsx:182
+#: src/view/com/auth/create/CreateAccount.tsx:193
#: src/view/com/auth/login/LoginForm.tsx:278
msgid "Connecting..."
msgstr "ą¤ą¤Øą„ą¤ą„ą¤ą¤æą¤ą¤ ..ą„¤"
-#: src/view/com/auth/create/CreateAccount.tsx:202
+#: src/view/com/auth/create/CreateAccount.tsx:213
msgid "Contact support"
msgstr ""
-#: src/view/screens/Moderation.tsx:81
+#: src/view/screens/Moderation.tsx:83
msgid "Content filtering"
msgstr "ą¤øą¤¾ą¤®ą¤ą„ą¤°ą„ ą¤«ą¤¼ą¤æą¤²ą„ą¤ą¤°ą¤æą¤ą¤"
@@ -856,7 +886,7 @@ msgstr "ą¤øą¤¾ą¤®ą¤ą„ą¤°ą„ ą¤ą„तावनą„"
#: src/screens/Onboarding/StepFollowingFeed.tsx:153
#: src/screens/Onboarding/StepInterests/index.tsx:248
#: src/screens/Onboarding/StepModeration/index.tsx:118
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:108
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:114
#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:148
#: src/view/com/auth/onboarding/RecommendedFollows.tsx:209
msgid "Continue"
@@ -865,7 +895,7 @@ msgstr "ą¤ą¤ą„ ą¤¬ą¤¢ą¤¼ą„ą¤"
#: src/screens/Onboarding/StepFollowingFeed.tsx:150
#: src/screens/Onboarding/StepInterests/index.tsx:245
#: src/screens/Onboarding/StepModeration/index.tsx:115
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:105
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:111
msgid "Continue to next step"
msgstr ""
@@ -892,7 +922,7 @@ msgstr ""
#: src/view/com/modals/AddAppPasswords.tsx:76
#: src/view/com/modals/InviteCodes.tsx:152
-#: src/view/com/util/forms/PostDropdownBtn.tsx:112
+#: src/view/com/util/forms/PostDropdownBtn.tsx:143
msgid "Copied to clipboard"
msgstr ""
@@ -904,19 +934,19 @@ msgstr ""
msgid "Copy"
msgstr "ą¤ą„पą„"
-#: src/view/screens/ProfileList.tsx:417
+#: src/view/screens/ProfileList.tsx:418
msgid "Copy link to list"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:153
+#: src/view/com/util/forms/PostDropdownBtn.tsx:184
msgid "Copy link to post"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:294
+#: src/view/com/profile/ProfileHeader.tsx:295
msgid "Copy link to profile"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:139
+#: src/view/com/util/forms/PostDropdownBtn.tsx:170
msgid "Copy post text"
msgstr "ą¤Ŗą„ą¤øą„ą¤ ą¤ą„ą¤ą„ą¤øą„ą¤ ą¤ą„ą¤Ŗą„ ą¤ą¤°ą„ą¤"
@@ -925,7 +955,7 @@ msgstr "ą¤Ŗą„ą¤øą„ą¤ ą¤ą„ą¤ą„ą¤øą„ą¤ ą¤ą„ą¤Ŗą„ ą¤ą¤°ą„ą¤"
msgid "Copyright Policy"
msgstr "ą¤ą„ą¤Ŗą„ą¤°ą¤¾ą¤ą¤ ą¤Øą„ą¤¤ą¤æ"
-#: src/view/screens/ProfileFeed.tsx:96
+#: src/view/screens/ProfileFeed.tsx:97
msgid "Could not load feed"
msgstr "ą¤«ą¤¼ą„ą¤” ą¤²ą„ą¤” ą¤Øą¤¹ą„ą¤ ą¤ą¤° ą¤øą¤ą¤¤ą¤¾"
@@ -934,12 +964,12 @@ msgid "Could not load list"
msgstr "ą¤øą„ą¤ą„ ą¤²ą„ą¤” ą¤Øą¤¹ą„ą¤ ą¤ą¤° ą¤øą¤ą¤¤ą¤¾"
#: src/view/com/auth/create/Step2.tsx:91
-msgid "Country"
-msgstr ""
+#~ msgid "Country"
+#~ msgstr ""
#: src/view/com/auth/HomeLoggedOutCTA.tsx:62
-#: src/view/com/auth/SplashScreen.tsx:46
-#: src/view/com/auth/SplashScreen.web.tsx:77
+#: src/view/com/auth/SplashScreen.tsx:71
+#: src/view/com/auth/SplashScreen.web.tsx:81
msgid "Create a new account"
msgstr "नया ą¤ą¤¾ą¤¤ą¤¾ ą¤¬ą¤Øą¤¾ą¤ą¤"
@@ -947,7 +977,7 @@ msgstr "नया ą¤ą¤¾ą¤¤ą¤¾ ą¤¬ą¤Øą¤¾ą¤ą¤"
msgid "Create a new Bluesky account"
msgstr ""
-#: src/view/com/auth/create/CreateAccount.tsx:122
+#: src/view/com/auth/create/CreateAccount.tsx:133
msgid "Create Account"
msgstr "ą¤ą¤¾ą¤¤ą¤¾ ą¤¬ą¤Øą¤¾ą¤ą¤"
@@ -956,7 +986,7 @@ msgid "Create App Password"
msgstr ""
#: src/view/com/auth/HomeLoggedOutCTA.tsx:54
-#: src/view/com/auth/SplashScreen.tsx:43
+#: src/view/com/auth/SplashScreen.tsx:68
msgid "Create new account"
msgstr "नया ą¤ą¤¾ą¤¤ą¤¾ ą¤¬ą¤Øą¤¾ą¤ą¤"
@@ -972,7 +1002,7 @@ msgstr ""
msgid "Created by you"
msgstr ""
-#: src/view/com/composer/Composer.tsx:448
+#: src/view/com/composer/Composer.tsx:455
msgid "Creates a card with a thumbnail. The card links to {url}"
msgstr ""
@@ -990,6 +1020,7 @@ msgid "Custom domain"
msgstr "ą¤ą¤øą„ą¤ą¤® ą¤”ą„ą¤®ą„न"
#: src/screens/Onboarding/StepAlgoFeeds/index.tsx:106
+#: src/view/screens/Feeds.tsx:692
msgid "Custom feeds built by the community bring you new experiences and help you find the content you love."
msgstr ""
@@ -1031,8 +1062,8 @@ msgstr "ą¤ą¤¾ą¤¤ą¤¾ ą¤¹ą¤ą¤¾ą¤ą¤"
msgid "Delete app password"
msgstr "ą¤
ą¤Ŗą„ą¤Ŗ ą¤Ŗą¤¾ą¤øą¤µą¤°ą„ą¤” ą¤¹ą¤ą¤¾ą¤ą¤"
-#: src/view/screens/ProfileList.tsx:363
-#: src/view/screens/ProfileList.tsx:444
+#: src/view/screens/ProfileList.tsx:364
+#: src/view/screens/ProfileList.tsx:445
msgid "Delete List"
msgstr "ą¤øą„ą¤ą„ ą¤¹ą¤ą¤¾ą¤ą¤"
@@ -1048,19 +1079,19 @@ msgstr "ą¤®ą„ą¤°ą¤¾ ą¤ą¤¾ą¤¤ą¤¾ ą¤¹ą¤ą¤¾ą¤ą¤"
msgid "Delete My Accountā¦"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:228
+#: src/view/com/util/forms/PostDropdownBtn.tsx:273
msgid "Delete post"
msgstr "ą¤Ŗą„ą¤øą„ą¤ ą¤ą„ ą¤¹ą¤ą¤¾ą¤ą¤"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:232
+#: src/view/com/util/forms/PostDropdownBtn.tsx:277
msgid "Delete this post?"
msgstr "ą¤ą¤ø ą¤Ŗą„ą¤øą„ą¤ ą¤ą„ ą¤”ą„ą¤²ą„ą¤ ą¤ą¤°ą„ą¤?"
-#: src/view/com/util/post-embeds/QuoteEmbed.tsx:69
+#: src/view/com/util/post-embeds/QuoteEmbed.tsx:70
msgid "Deleted"
msgstr ""
-#: src/view/com/post-thread/PostThread.tsx:259
+#: src/view/com/post-thread/PostThread.tsx:316
msgid "Deleted post."
msgstr "यह ą¤Ŗą„ą¤øą„ą¤ ą¤®ą¤æą¤ą¤¾ą¤ ą¤ą¤¾ ą¤ą„ą¤ą„ हą„"
@@ -1075,7 +1106,7 @@ msgstr "विवरण"
#~ msgid "Developer Tools"
#~ msgstr "ą¤”ą„ą¤µą¤²ą¤Ŗą¤° ą¤ą¤Ŗą¤ą¤°ą¤£"
-#: src/view/com/composer/Composer.tsx:211
+#: src/view/com/composer/Composer.tsx:218
msgid "Did you want to say anything?"
msgstr ""
@@ -1083,15 +1114,15 @@ msgstr ""
msgid "Dim"
msgstr ""
-#: src/view/com/composer/Composer.tsx:144
+#: src/view/com/composer/Composer.tsx:151
msgid "Discard"
msgstr ""
-#: src/view/com/composer/Composer.tsx:138
+#: src/view/com/composer/Composer.tsx:145
msgid "Discard draft"
msgstr "ą¤”ą„ą¤°ą¤¾ą¤«ą„ą¤ ą¤¹ą¤ą¤¾ą¤ą¤"
-#: src/view/screens/Moderation.tsx:207
+#: src/view/screens/Moderation.tsx:226
msgid "Discourage apps from showing my account to logged-out users"
msgstr ""
@@ -1101,8 +1132,12 @@ msgid "Discover new custom feeds"
msgstr ""
#: src/view/screens/Feeds.tsx:473
-msgid "Discover new feeds"
-msgstr "ą¤Øą¤ ą¤«ą¤¼ą„ą¤” ą¤ą„ ą¤ą„ą¤ ą¤ą¤°ą„ą¤"
+#~ msgid "Discover new feeds"
+#~ msgstr "ą¤Øą¤ ą¤«ą¤¼ą„ą¤” ą¤ą„ ą¤ą„ą¤ ą¤ą¤°ą„ą¤"
+
+#: src/view/screens/Feeds.tsx:689
+msgid "Discover New Feeds"
+msgstr ""
#: src/view/com/modals/EditProfile.tsx:192
msgid "Display name"
@@ -1116,7 +1151,7 @@ msgstr "ą¤Ŗą„ą¤°ą¤¦ą¤°ą„शन ą¤ą¤¾ नाम"
msgid "Domain verified!"
msgstr "ą¤”ą„ą¤®ą„न ą¤øą¤¤ą„ą¤Æą¤¾ą¤Ŗą¤æą¤¤!"
-#: src/view/com/auth/create/Step1.tsx:166
+#: src/view/com/auth/create/Step1.tsx:170
msgid "Don't have an invite code?"
msgstr ""
@@ -1143,7 +1178,7 @@ msgstr ""
#: src/view/com/modals/InviteCodes.tsx:80
#: src/view/com/modals/InviteCodes.tsx:123
#: src/view/com/modals/ListAddRemoveUsers.tsx:142
-#: src/view/screens/PreferencesHomeFeed.tsx:311
+#: src/view/screens/PreferencesFollowingFeed.tsx:311
#: src/view/screens/Settings/ExportCarDialog.tsx:93
#: src/view/screens/Settings/ExportCarDialog.tsx:94
msgid "Done"
@@ -1166,7 +1201,7 @@ msgstr ""
msgid "Download CAR file"
msgstr ""
-#: src/view/com/composer/text-input/TextInput.web.tsx:247
+#: src/view/com/composer/text-input/TextInput.web.tsx:249
msgid "Drop to add images"
msgstr ""
@@ -1212,7 +1247,7 @@ msgstr ""
msgid "Edit image"
msgstr "ą¤ą¤µą¤æ ą¤øą¤ą¤Ŗą¤¾ą¤¦ą¤æą¤¤ ą¤ą¤°ą„ą¤"
-#: src/view/screens/ProfileList.tsx:432
+#: src/view/screens/ProfileList.tsx:433
msgid "Edit list details"
msgstr "ą¤øą„ą¤ą„ विवरण ą¤øą¤ą¤Ŗą¤¾ą¤¦ą¤æą¤¤ ą¤ą¤°ą„ą¤"
@@ -1230,15 +1265,16 @@ msgstr "ą¤®ą„ą¤°ą„ ą¤«ą¤¼ą„ą¤” ą¤øą¤ą¤Ŗą¤¾ą¤¦ą¤æą¤¤ ą¤ą¤°ą„ą¤"
msgid "Edit my profile"
msgstr "ą¤®ą„ą¤°ą„ ą¤Ŗą„ą¤°ą„ą¤«ą¤¼ą¤¾ą¤ą¤² ą¤øą¤ą¤Ŗą¤¾ą¤¦ą¤æą¤¤ ą¤ą¤°ą„ą¤"
-#: src/view/com/profile/ProfileHeader.tsx:417
+#: src/view/com/profile/ProfileHeader.tsx:418
msgid "Edit profile"
msgstr "ą¤®ą„ą¤°ą„ ą¤Ŗą„ą¤°ą„ą¤«ą¤¼ą¤¾ą¤ą¤² ą¤øą¤ą¤Ŗą¤¾ą¤¦ą¤æą¤¤ ą¤ą¤°ą„ą¤"
-#: src/view/com/profile/ProfileHeader.tsx:422
+#: src/view/com/profile/ProfileHeader.tsx:423
msgid "Edit Profile"
msgstr "ą¤®ą„ą¤°ą„ ą¤Ŗą„ą¤°ą„ą¤«ą¤¼ą¤¾ą¤ą¤² ą¤øą¤ą¤Ŗą¤¾ą¤¦ą¤æą¤¤ ą¤ą¤°ą„ą¤"
-#: src/view/screens/Feeds.tsx:356
+#: src/view/com/home/HomeHeaderLayout.web.tsx:59
+#: src/view/screens/Feeds.tsx:355
msgid "Edit Saved Feeds"
msgstr "ą¤ą¤”ą¤æą¤ ą¤øą„ą¤µą„औ ą¤«ą„ą¤”"
@@ -1258,16 +1294,14 @@ msgstr ""
msgid "Education"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:195
-#: src/view/com/auth/create/Step2.tsx:194
-#: src/view/com/auth/create/Step2.tsx:269
+#: src/view/com/auth/create/Step1.tsx:199
#: src/view/com/auth/login/ForgotPasswordForm.tsx:156
#: src/view/com/modals/ChangeEmail.tsx:141
#: src/view/com/modals/Waitlist.tsx:88
msgid "Email"
msgstr "ą¤ą¤®ą„ल"
-#: src/view/com/auth/create/Step1.tsx:186
+#: src/view/com/auth/create/Step1.tsx:190
#: src/view/com/auth/login/ForgotPasswordForm.tsx:147
msgid "Email address"
msgstr "ą¤ą¤®ą„ल"
@@ -1310,7 +1344,7 @@ msgstr ""
msgid "Enable media players for"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:147
+#: src/view/screens/PreferencesFollowingFeed.tsx:147
msgid "Enable this setting to only see replies between people you follow."
msgstr "ą¤ą¤ø ą¤øą„ą¤ą¤æą¤ą¤ ą¤ą„ ą¤ą„वल ą¤ą¤Ø ą¤²ą„ą¤ą„ą¤ ą¤ą„ ą¤¬ą„ą¤ ą¤ą¤µą¤¾ą¤¬ ą¤¦ą„ą¤ą¤Øą„ ą¤®ą„ą¤ ą¤øą¤ą„षम ą¤ą¤°ą„ą¤ ą¤ą¤æą¤Øą„ą¤¹ą„ą¤ ą¤ą¤Ŗ ą¤«ą„ą¤²ą„ ą¤ą¤°ą¤¤ą„ ą¤¹ą„ą¤ą„¤ą„¤"
@@ -1322,6 +1356,11 @@ msgstr ""
msgid "Enter a name for this App Password"
msgstr ""
+#: src/components/dialogs/MutedWords.tsx:87
+#: src/components/dialogs/MutedWords.tsx:88
+msgid "Enter a word or tag"
+msgstr ""
+
#: src/view/com/modals/VerifyEmail.tsx:105
msgid "Enter Confirmation Code"
msgstr ""
@@ -1338,7 +1377,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/Step1.tsx:247
+#: src/view/com/auth/create/Step1.tsx:251
#: src/view/com/modals/BirthDateSettings.tsx:74
msgid "Enter your birth date"
msgstr ""
@@ -1347,7 +1386,7 @@ msgstr ""
msgid "Enter your email"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:191
+#: src/view/com/auth/create/Step1.tsx:195
msgid "Enter your email address"
msgstr "ą¤
पना ą¤ą¤®ą„ल पता ą¤¦ą¤°ą„ą¤ ą¤ą¤°ą„ą¤"
@@ -1360,14 +1399,18 @@ msgid "Enter your new email address below."
msgstr "ą¤Øą„ą¤ą„ ą¤
पना नया ą¤ą¤®ą„ल पता ą¤¦ą¤°ą„ą¤ ą¤ą¤°ą„ą¤ą„¤ą„¤"
#: src/view/com/auth/create/Step2.tsx:188
-msgid "Enter your phone number"
-msgstr ""
+#~ msgid "Enter your phone number"
+#~ msgstr ""
#: src/view/com/auth/login/Login.tsx:99
msgid "Enter your username and password"
msgstr "ą¤
ą¤Ŗą¤Øą„ ą¤Æą„ą¤ą¤¼ą¤°ą¤Øą„म ą¤ą¤° ą¤Ŗą¤¾ą¤øą¤µą¤°ą„ą¤” ą¤¦ą¤°ą„ą¤ ą¤ą¤°ą„ą¤"
-#: src/view/screens/Search/Search.tsx:109
+#: src/view/com/auth/create/Step3.tsx:67
+msgid "Error receiving captcha response."
+msgstr ""
+
+#: src/view/screens/Search/Search.tsx:110
msgid "Error:"
msgstr ""
@@ -1419,7 +1462,7 @@ msgstr ""
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/Navigation.tsx:258
+#: src/Navigation.tsx:261
#: src/view/screens/PreferencesExternalEmbeds.tsx:52
#: src/view/screens/Settings/index.tsx:657
msgid "External Media Preferences"
@@ -1438,7 +1481,7 @@ msgstr ""
msgid "Failed to create the list. Check your internet connection and try again."
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:88
+#: src/view/com/util/forms/PostDropdownBtn.tsx:110
msgid "Failed to delete post, please try again"
msgstr ""
@@ -1451,25 +1494,26 @@ msgstr "ą¤
ą¤Øą„ą¤¶ą¤ą¤øą¤æą¤¤ ą¤«ą¤¼ą„ą¤” ą¤²ą„ą¤” ą¤ą¤°ą¤Øą„ ą¤®ą„ą¤
msgid "Feed"
msgstr ""
-#: src/view/com/feeds/FeedSourceCard.tsx:229
+#: src/view/com/feeds/FeedSourceCard.tsx:231
msgid "Feed by {0}"
msgstr ""
-#: src/view/screens/Feeds.tsx:631
+#: src/view/screens/Feeds.tsx:605
msgid "Feed offline"
msgstr "ą¤«ą¤¼ą„ą¤” ą¤ą¤«ą¤¼ą¤²ą¤¾ą¤ą¤Ø हą„"
#: src/view/com/feeds/FeedPage.tsx:143
-msgid "Feed Preferences"
-msgstr "ą¤«ą¤¼ą„ą¤” ą¤Ŗą„ą¤°ą¤¾ą¤„ą¤®ą¤æą¤ą¤¤ą¤¾"
+#~ msgid "Feed Preferences"
+#~ msgstr "ą¤«ą¤¼ą„ą¤” ą¤Ŗą„ą¤°ą¤¾ą¤„ą¤®ą¤æą¤ą¤¤ą¤¾"
-#: src/view/shell/desktop/RightNav.tsx:69
+#: src/view/shell/desktop/RightNav.tsx:61
#: src/view/shell/Drawer.tsx:311
msgid "Feedback"
msgstr "ą¤Ŗą„ą¤°ą¤¤ą¤æą¤ą„रिया"
-#: src/Navigation.tsx:442
-#: src/view/screens/Feeds.tsx:548
+#: src/Navigation.tsx:445
+#: src/view/screens/Feeds.tsx:419
+#: src/view/screens/Feeds.tsx:524
#: src/view/screens/Profile.tsx:184
#: src/view/shell/bottom-bar/BottomBar.tsx:181
#: src/view/shell/desktop/LeftNav.tsx:342
@@ -1494,7 +1538,7 @@ msgstr "ą¤øą¤¾ą¤®ą¤ą„ą¤°ą„ ą¤ą„ ą¤µą„ą¤Æą¤µą¤øą„ऄित ą¤ą¤°ą¤Øą„
msgid "Feeds are custom algorithms that users build with a little coding expertise. <0/> for more information."
msgstr "ą¤«ą¤¼ą„ą¤” ą¤ą¤øą„ą¤ą¤® ą¤ą¤²ą„ą¤ą„रिदम ą¤¹ą„ą¤ ą¤ą¤æą¤Øą„ą¤¹ą„ą¤ ą¤ą¤Ŗą¤Æą„ą¤ą¤ą¤°ą„ता ą¤„ą„ą¤”ą¤¼ą„ ą¤ą„ą¤”ą¤æą¤ą¤ ą¤µą¤æą¤¶ą„ą¤·ą¤ą„ą¤ą¤¤ą¤¾ ą¤ą„ साऄ ą¤¬ą¤Øą¤¾ą¤¤ą„ ą¤¹ą„ą¤ą„¤ <0/> ą¤
ą¤§ą¤æą¤ ą¤ą¤¾ą¤Øą¤ą¤¾ą¤°ą„ ą¤ą„ लिą¤."
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:70
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:76
msgid "Feeds can be topical as well!"
msgstr ""
@@ -1508,11 +1552,11 @@ msgstr ""
msgid "Find accounts to follow"
msgstr ""
-#: src/view/screens/Search/Search.tsx:439
+#: src/view/screens/Search/Search.tsx:440
msgid "Find users on Bluesky"
msgstr ""
-#: src/view/screens/Search/Search.tsx:437
+#: src/view/screens/Search/Search.tsx:438
msgid "Find users with the search tool on the right"
msgstr ""
@@ -1520,9 +1564,13 @@ msgstr ""
msgid "Finding similar accounts..."
msgstr "मिलतą„-ą¤ą„ą¤²ą¤¤ą„ ą¤ą¤¾ą¤¤ą„ ą¤¢ą„ą¤ą¤¢ą¤Øą¤¾"
+#: src/view/screens/PreferencesFollowingFeed.tsx:111
+msgid "Fine-tune the content you see on your Following feed."
+msgstr ""
+
#: src/view/screens/PreferencesHomeFeed.tsx:111
-msgid "Fine-tune the content you see on your home screen."
-msgstr "ą¤
ą¤Ŗą¤Øą„ ą¤®ą„ą¤ą„य ą¤«ą¤¼ą„ą¤” ą¤ą„ ą¤øą„ą¤ą„ą¤°ą„ą¤Ø पर ą¤¦ą¤æą¤ą¤¾ą¤ ą¤¦ą„ą¤Øą„ ą¤µą¤¾ą¤²ą„ ą¤øą¤¾ą¤®ą¤ą„ą¤°ą„ ą¤ą„ ą¤ ą„ą¤ ą¤ą¤°ą„ą¤ą„¤ą„¤"
+#~ msgid "Fine-tune the content you see on your home screen."
+#~ msgstr "ą¤
ą¤Ŗą¤Øą„ ą¤®ą„ą¤ą„य ą¤«ą¤¼ą„ą¤” ą¤ą„ ą¤øą„ą¤ą„ą¤°ą„ą¤Ø पर ą¤¦ą¤æą¤ą¤¾ą¤ ą¤¦ą„ą¤Øą„ ą¤µą¤¾ą¤²ą„ ą¤øą¤¾ą¤®ą¤ą„ą¤°ą„ ą¤ą„ ą¤ ą„ą¤ ą¤ą¤°ą„ą¤ą„¤ą„¤"
#: src/view/screens/PreferencesThreads.tsx:60
msgid "Fine-tune the discussion threads."
@@ -1547,7 +1595,7 @@ msgstr ""
#: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:181
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:136
-#: src/view/com/profile/ProfileHeader.tsx:512
+#: src/view/com/profile/ProfileHeader.tsx:513
msgid "Follow"
msgstr "ą¤«ą„ą¤²ą„"
@@ -1558,7 +1606,7 @@ msgstr ""
#: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:58
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:122
-#: src/view/com/profile/ProfileHeader.tsx:503
+#: src/view/com/profile/ProfileHeader.tsx:504
msgid "Follow {0}"
msgstr ""
@@ -1582,7 +1630,7 @@ msgstr ""
msgid "Followed users"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:154
+#: src/view/screens/PreferencesFollowingFeed.tsx:154
msgid "Followed users only"
msgstr "ą¤ą„वल ą¤µą„ ą¤Æą„ą¤ą¤° ą¤ą„ ą¤«ą¤¼ą„ą¤²ą„ ą¤ą¤æą¤Æą¤¾ ą¤ą¤Æą¤¾"
@@ -1595,16 +1643,24 @@ msgid "Followers"
msgstr "यह ą¤Æą„ą¤ą¤° ą¤ą¤Ŗą¤ą¤¾ ą¤«ą¤¼ą„ą¤²ą„ ą¤ą¤°ą¤¤ą¤¾ हą„"
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:136
-#: src/view/com/profile/ProfileHeader.tsx:494
+#: src/view/com/profile/ProfileHeader.tsx:495
#: src/view/screens/ProfileFollows.tsx:25
msgid "Following"
msgstr "ą¤«ą„ą¤²ą„ą¤²ą„ą¤µą¤æą¤ą¤"
-#: src/view/com/profile/ProfileHeader.tsx:148
+#: src/view/com/profile/ProfileHeader.tsx:149
msgid "Following {0}"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:545
+#: src/Navigation.tsx:248
+#: src/view/com/home/HomeHeaderLayout.web.tsx:45
+#: src/view/com/home/HomeHeaderLayoutMobile.tsx:83
+#: src/view/screens/PreferencesFollowingFeed.tsx:104
+#: src/view/screens/Settings/index.tsx:543
+msgid "Following Feed Preferences"
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:546
msgid "Follows you"
msgstr "यह ą¤Æą„ą¤ą¤° ą¤ą¤Ŗą¤ą¤¾ ą¤«ą¤¼ą„ą¤²ą„ ą¤ą¤°ą¤¤ą¤¾ हą„"
@@ -1658,8 +1714,8 @@ msgstr "ą¤Ŗą„ą¤°ą¤¾ą¤°ą¤ą¤ ą¤ą¤°ą„ą¤"
msgid "Go back"
msgstr "वापस ą¤ą¤¾ą¤"
-#: src/view/screens/ProfileFeed.tsx:105
-#: src/view/screens/ProfileFeed.tsx:110
+#: src/view/screens/ProfileFeed.tsx:106
+#: src/view/screens/ProfileFeed.tsx:111
#: src/view/screens/ProfileList.tsx:897
#: src/view/screens/ProfileList.tsx:902
msgid "Go Back"
@@ -1670,7 +1726,7 @@ msgstr "वापस ą¤ą¤¾ą¤"
msgid "Go back to previous step"
msgstr ""
-#: src/view/screens/Search/Search.tsx:724
+#: src/view/screens/Search/Search.tsx:747
#: src/view/shell/desktop/Search.tsx:262
msgid "Go to @{queryMaybeHandle}"
msgstr ""
@@ -1687,11 +1743,15 @@ msgstr "ą¤
ą¤ą¤²ą¤¾"
msgid "Handle"
msgstr "ą¤¹ą„ą¤ą¤”ल"
-#: src/view/com/auth/create/CreateAccount.tsx:197
+#: src/components/RichText.tsx:188
+msgid "Hashtag: {tag}"
+msgstr ""
+
+#: src/view/com/auth/create/CreateAccount.tsx:208
msgid "Having trouble?"
msgstr ""
-#: src/view/shell/desktop/RightNav.tsx:98
+#: src/view/shell/desktop/RightNav.tsx:90
#: src/view/shell/Drawer.tsx:321
msgid "Help"
msgstr "सहायता"
@@ -1700,11 +1760,11 @@ msgstr "सहायता"
msgid "Here are some accounts for you to follow"
msgstr ""
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:79
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:85
msgid "Here are some popular topical feeds. You can choose to follow as many as you like."
msgstr ""
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:74
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:80
msgid "Here are some topical feeds based on your interests: {interestsText}. You can choose to follow as many as you like."
msgstr ""
@@ -1725,7 +1785,7 @@ msgctxt "action"
msgid "Hide"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:187
+#: src/view/com/util/forms/PostDropdownBtn.tsx:232
msgid "Hide post"
msgstr ""
@@ -1734,7 +1794,7 @@ msgstr ""
msgid "Hide the content"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:191
+#: src/view/com/util/forms/PostDropdownBtn.tsx:236
msgid "Hide this post?"
msgstr ""
@@ -1742,7 +1802,7 @@ msgstr ""
msgid "Hide user list"
msgstr "ą¤ą¤Ŗą¤Æą„ą¤ą¤ą¤°ą„ता ą¤øą„ą¤ą„ ą¤ą„ą¤Ŗą¤¾ą¤ą¤"
-#: src/view/com/profile/ProfileHeader.tsx:486
+#: src/view/com/profile/ProfileHeader.tsx:487
msgid "Hides posts from {0} in your feed"
msgstr ""
@@ -1766,7 +1826,7 @@ msgstr ""
msgid "Hmm, we're having trouble finding this feed. It may have been deleted."
msgstr ""
-#: src/Navigation.tsx:432
+#: src/Navigation.tsx:435
#: src/view/shell/bottom-bar/BottomBar.tsx:137
#: src/view/shell/desktop/LeftNav.tsx:306
#: src/view/shell/Drawer.tsx:398
@@ -1778,10 +1838,10 @@ msgstr "ą¤¹ą„ą¤® ą¤«ą„ą¤”"
#: src/view/com/pager/FeedsTabBarMobile.tsx:123
#: src/view/screens/PreferencesHomeFeed.tsx:104
#: src/view/screens/Settings/index.tsx:543
-msgid "Home Feed Preferences"
-msgstr "ą¤¹ą„ą¤® ą¤«ą¤¼ą„ą¤” ą¤Ŗą„ą¤°ą¤¾ą¤„ą¤®ą¤æą¤ą¤¤ą¤¾ą¤ą¤"
+#~ msgid "Home Feed Preferences"
+#~ msgstr "ą¤¹ą„ą¤® ą¤«ą¤¼ą„ą¤” ą¤Ŗą„ą¤°ą¤¾ą¤„ą¤®ą¤æą¤ą¤¤ą¤¾ą¤ą¤"
-#: src/view/com/auth/create/Step1.tsx:78
+#: src/view/com/auth/create/Step1.tsx:82
#: src/view/com/auth/login/ForgotPasswordForm.tsx:120
msgid "Hosting provider"
msgstr "ą¤¹ą„ą¤øą„ą¤ą¤æą¤ą¤ ą¤Ŗą„ą¤°ą¤¦ą¤¾ą¤¤ą¤¾"
@@ -1835,11 +1895,11 @@ msgstr ""
msgid "Input confirmation code for account deletion"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:196
+#: src/view/com/auth/create/Step1.tsx:200
msgid "Input email for Bluesky account"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:154
+#: src/view/com/auth/create/Step1.tsx:158
msgid "Input invite code to proceed"
msgstr ""
@@ -1856,8 +1916,8 @@ msgid "Input password for account deletion"
msgstr ""
#: src/view/com/auth/create/Step2.tsx:196
-msgid "Input phone number for SMS verification"
-msgstr ""
+#~ msgid "Input phone number for SMS verification"
+#~ msgstr ""
#: src/view/com/auth/login/LoginForm.tsx:230
msgid "Input the password tied to {identifier}"
@@ -1868,8 +1928,8 @@ msgid "Input the username or email address you used at signup"
msgstr ""
#: src/view/com/auth/create/Step2.tsx:271
-msgid "Input the verification code we have texted to you"
-msgstr ""
+#~ msgid "Input the verification code we have texted to you"
+#~ msgstr ""
#: src/view/com/modals/Waitlist.tsx:90
msgid "Input your email to get on the Bluesky waitlist"
@@ -1879,11 +1939,11 @@ msgstr ""
msgid "Input your password"
msgstr ""
-#: src/view/com/auth/create/Step3.tsx:42
+#: src/view/com/auth/create/Step2.tsx:80
msgid "Input your user handle"
msgstr ""
-#: src/view/com/post-thread/PostThreadItem.tsx:225
+#: src/view/com/post-thread/PostThreadItem.tsx:226
msgid "Invalid or unsupported post record"
msgstr ""
@@ -1899,12 +1959,12 @@ msgstr "ą¤
ą¤µą„ą¤§ ą¤ą¤Ŗą¤Æą„ą¤ą¤ą¤°ą„ता नाम या पास
msgid "Invite a Friend"
msgstr "ą¤ą¤ ą¤¦ą„ą¤øą„त ą¤ą„ ą¤ą¤®ą¤ą¤¤ą„रित ą¤ą¤°ą„ą¤"
-#: src/view/com/auth/create/Step1.tsx:144
-#: src/view/com/auth/create/Step1.tsx:153
+#: src/view/com/auth/create/Step1.tsx:148
+#: src/view/com/auth/create/Step1.tsx:157
msgid "Invite code"
msgstr "ą¤ą¤®ą¤ą¤¤ą„रण ą¤ą„औ"
-#: src/view/com/auth/create/state.ts:199
+#: src/view/com/auth/create/state.ts:158
msgid "Invite code not accepted. Check that you input it correctly and try again."
msgstr ""
@@ -1925,6 +1985,7 @@ msgid "It shows posts from the people you follow as they happen."
msgstr ""
#: src/view/com/auth/HomeLoggedOutCTA.tsx:99
+#: src/view/com/auth/SplashScreen.web.tsx:138
msgid "Jobs"
msgstr ""
@@ -1932,8 +1993,8 @@ msgstr ""
msgid "Join the waitlist"
msgstr "ą¤Ŗą„ą¤°ą¤¤ą„ą¤ą„षा ą¤øą„ą¤ą„ ą¤®ą„ą¤ शामिल ą¤¹ą„ą¤"
-#: src/view/com/auth/create/Step1.tsx:170
#: src/view/com/auth/create/Step1.tsx:174
+#: src/view/com/auth/create/Step1.tsx:178
msgid "Join the waitlist."
msgstr "ą¤Ŗą„ą¤°ą¤¤ą„ą¤ą„षा ą¤øą„ą¤ą„ ą¤®ą„ą¤ शामिल ą¤¹ą„ą¤ą„¤ą„¤"
@@ -1984,7 +2045,7 @@ msgstr "ą¤
ą¤§ą¤æą¤ ą¤ą¤¾ą¤Øą„ą¤"
msgid "Learn more about this warning"
msgstr "ą¤ą¤ø ą¤ą„ą¤¤ą¤¾ą¤µą¤Øą„ ą¤ą„ ą¤¬ą¤¾ą¤°ą„ ą¤®ą„ą¤ ą¤
ą¤§ą¤æą¤ ą¤ą¤¾ą¤Øą„ą¤"
-#: src/view/screens/Moderation.tsx:243
+#: src/view/screens/Moderation.tsx:262
msgid "Learn more about what is public on Bluesky."
msgstr ""
@@ -2040,7 +2101,7 @@ msgstr "ą¤ą¤Ø ą¤Æą„ą¤ą¤° ą¤Øą„ ą¤²ą¤¾ą¤ą¤ ą¤ą¤æą¤Æą¤¾ हą„"
msgid "Liked By"
msgstr ""
-#: src/view/com/feeds/FeedSourceCard.tsx:277
+#: src/view/com/feeds/FeedSourceCard.tsx:279
msgid "Liked by {0} {1}"
msgstr ""
@@ -2060,7 +2121,7 @@ msgstr ""
msgid "Likes"
msgstr ""
-#: src/view/com/post-thread/PostThreadItem.tsx:182
+#: src/view/com/post-thread/PostThreadItem.tsx:183
msgid "Likes on this post"
msgstr ""
@@ -2072,19 +2133,19 @@ msgstr ""
msgid "List Avatar"
msgstr "ą¤øą„ą¤ą„ ą¤
वतार"
-#: src/view/screens/ProfileList.tsx:323
+#: src/view/screens/ProfileList.tsx:324
msgid "List blocked"
msgstr ""
-#: src/view/com/feeds/FeedSourceCard.tsx:231
+#: src/view/com/feeds/FeedSourceCard.tsx:233
msgid "List by {0}"
msgstr ""
-#: src/view/screens/ProfileList.tsx:377
+#: src/view/screens/ProfileList.tsx:378
msgid "List deleted"
msgstr ""
-#: src/view/screens/ProfileList.tsx:282
+#: src/view/screens/ProfileList.tsx:283
msgid "List muted"
msgstr ""
@@ -2092,11 +2153,11 @@ msgstr ""
msgid "List Name"
msgstr "ą¤øą„ą¤ą„ ą¤ą¤¾ नाम"
-#: src/view/screens/ProfileList.tsx:342
+#: src/view/screens/ProfileList.tsx:343
msgid "List unblocked"
msgstr ""
-#: src/view/screens/ProfileList.tsx:301
+#: src/view/screens/ProfileList.tsx:302
msgid "List unmuted"
msgstr ""
@@ -2108,8 +2169,8 @@ msgstr ""
msgid "Lists"
msgstr "ą¤øą„ą¤ą„"
-#: src/view/com/post-thread/PostThread.tsx:276
-#: src/view/com/post-thread/PostThread.tsx:284
+#: src/view/com/post-thread/PostThread.tsx:333
+#: src/view/com/post-thread/PostThread.tsx:341
msgid "Load more posts"
msgstr "ą¤
ą¤§ą¤æą¤ ą¤Ŗą„ą¤øą„ą¤ ą¤²ą„ą¤” ą¤ą¤°ą„ą¤"
@@ -2117,10 +2178,10 @@ msgstr "ą¤
ą¤§ą¤æą¤ ą¤Ŗą„ą¤øą„ą¤ ą¤²ą„ą¤” ą¤ą¤°ą„ą¤"
msgid "Load new notifications"
msgstr "ą¤Øą¤ ą¤øą„ą¤ą¤Øą¤¾ą¤ą¤ ą¤²ą„ą¤” ą¤ą¤°ą„ą¤"
-#: src/view/com/feeds/FeedPage.tsx:190
+#: src/view/com/feeds/FeedPage.tsx:115
#: src/view/screens/Profile.tsx:440
-#: src/view/screens/ProfileFeed.tsx:494
-#: src/view/screens/ProfileList.tsx:680
+#: src/view/screens/ProfileFeed.tsx:495
+#: src/view/screens/ProfileList.tsx:681
msgid "Load new posts"
msgstr "ą¤Øą¤ ą¤Ŗą„ą¤øą„ą¤ ą¤²ą„ą¤” ą¤ą¤°ą„ą¤"
@@ -2143,7 +2204,7 @@ msgstr ""
msgid "Log out"
msgstr ""
-#: src/view/screens/Moderation.tsx:136
+#: src/view/screens/Moderation.tsx:155
msgid "Logged-out visibility"
msgstr ""
@@ -2155,6 +2216,18 @@ msgstr "ą¤ą¤ø ą¤ą¤¾ą¤¤ą„ ą¤®ą„ą¤ ą¤²ą„ą¤ ą¤ą¤Ø ą¤ą¤°ą„ą¤ ą¤ą„ स
msgid "Make sure this is where you intend to go!"
msgstr "यह ą¤øą„ą¤Øą¤æą¤¶ą„ą¤ą¤æą¤¤ ą¤ą¤°ą¤Øą„ ą¤ą„ ą¤²ą¤æą¤ ą¤ą¤æ ą¤ą¤Ŗ ą¤ą¤¹ą¤¾ą¤ ą¤ą¤¾ą¤Øą¤¾ ą¤ą¤¾ą¤¹ą¤¤ą„ ą¤¹ą„ą¤!"
+#: src/components/dialogs/MutedWords.tsx:71
+msgid "Manage your muted words and tags"
+msgstr ""
+
+#: src/view/com/auth/create/Step2.tsx:118
+msgid "May not be longer than 253 characters"
+msgstr ""
+
+#: src/view/com/auth/create/Step2.tsx:109
+msgid "May only contain letters and numbers"
+msgstr ""
+
#: src/view/screens/Profile.tsx:182
msgid "Media"
msgstr ""
@@ -2168,7 +2241,7 @@ msgid "Mentioned users"
msgstr ""
#: src/view/com/util/ViewHeader.tsx:81
-#: src/view/screens/Search/Search.tsx:623
+#: src/view/screens/Search/Search.tsx:646
msgid "Menu"
msgstr "ą¤®ą„ą¤Øą„"
@@ -2177,7 +2250,7 @@ msgid "Message from server: {0}"
msgstr ""
#: src/Navigation.tsx:115
-#: src/view/screens/Moderation.tsx:64
+#: src/view/screens/Moderation.tsx:66
#: src/view/screens/Settings/index.tsx:625
#: src/view/shell/desktop/LeftNav.tsx:397
#: src/view/shell/Drawer.tsx:511
@@ -2185,7 +2258,7 @@ msgstr ""
msgid "Moderation"
msgstr "ą¤®ą„ą¤”ą¤°ą„ą¤¶ą¤Ø"
-#: src/view/com/lists/ListCard.tsx:92
+#: src/view/com/lists/ListCard.tsx:93
#: src/view/com/modals/UserAddRemoveLists.tsx:206
msgid "Moderation list by {0}"
msgstr ""
@@ -2194,7 +2267,7 @@ msgstr ""
msgid "Moderation list by <0/>"
msgstr ""
-#: src/view/com/lists/ListCard.tsx:90
+#: src/view/com/lists/ListCard.tsx:91
#: src/view/com/modals/UserAddRemoveLists.tsx:204
#: src/view/screens/ProfileList.tsx:772
msgid "Moderation list by you"
@@ -2208,7 +2281,7 @@ msgstr ""
msgid "Moderation list updated"
msgstr ""
-#: src/view/screens/Moderation.tsx:95
+#: src/view/screens/Moderation.tsx:114
msgid "Moderation lists"
msgstr "ą¤®ą„ą¤”ą¤°ą„ą¤¶ą¤Ø ą¤øą„ą¤ą¤æą¤Æą¤¾ą¤"
@@ -2229,13 +2302,13 @@ msgstr ""
msgid "More feeds"
msgstr "ą¤
ą¤§ą¤æą¤ ą¤«ą¤¼ą„ą¤”"
-#: src/view/com/profile/ProfileHeader.tsx:522
-#: src/view/screens/ProfileFeed.tsx:362
-#: src/view/screens/ProfileList.tsx:616
+#: src/view/com/profile/ProfileHeader.tsx:523
+#: src/view/screens/ProfileFeed.tsx:363
+#: src/view/screens/ProfileList.tsx:617
msgid "More options"
msgstr "ą¤
ą¤§ą¤æą¤ ą¤µą¤æą¤ą¤²ą„प"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:270
+#: src/view/com/util/forms/PostDropdownBtn.tsx:315
msgid "More post options"
msgstr "ą¤Ŗą„ą¤øą„ą¤ ą¤µą¤æą¤ą¤²ą„प"
@@ -2243,35 +2316,71 @@ msgstr "ą¤Ŗą„ą¤øą„ą¤ ą¤µą¤æą¤ą¤²ą„प"
msgid "Most-liked replies first"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:326
+#: src/view/com/auth/create/Step2.tsx:122
+msgid "Must be at least 3 characters"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:253
+msgid "Mute"
+msgstr ""
+
+#: src/components/TagMenu/index.web.tsx:91
+msgid "Mute {truncatedTag}"
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:327
msgid "Mute Account"
msgstr "ą¤ą¤¾ą¤¤ą¤¾ ą¤®ą„ą¤Æą„ą¤ ą¤ą¤°ą„ą¤"
-#: src/view/screens/ProfileList.tsx:543
+#: src/view/screens/ProfileList.tsx:544
msgid "Mute accounts"
msgstr "ą¤ą¤¾ą¤¤ą„ą¤ ą¤ą„ ą¤®ą„ą¤Æą„ą¤ ą¤ą¤°ą„ą¤"
-#: src/view/screens/ProfileList.tsx:490
+#: src/components/TagMenu/index.tsx:211
+msgid "Mute all {tag} posts"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:131
+msgid "Mute in tags only"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:116
+msgid "Mute in text & tags"
+msgstr ""
+
+#: src/view/screens/ProfileList.tsx:491
msgid "Mute list"
msgstr ""
-#: src/view/screens/ProfileList.tsx:274
+#: src/view/screens/ProfileList.tsx:275
msgid "Mute these accounts?"
msgstr "ą¤ą¤Ø ą¤ą¤¾ą¤¤ą„ą¤ ą¤ą„ ą¤®ą„ą¤Æą„ą¤ ą¤ą¤°ą„ą¤?"
-#: src/view/screens/ProfileList.tsx:278
+#: src/view/screens/ProfileList.tsx:279
msgid "Mute this List"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:171
+#: src/components/dialogs/MutedWords.tsx:109
+msgid "Mute this word in post text and tags"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:124
+msgid "Mute this word in tags only"
+msgstr ""
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:202
msgid "Mute thread"
msgstr "ą¤„ą„ą¤°ą„औ ą¤®ą„ą¤Æą„ą¤ ą¤ą¤°ą„ą¤"
-#: src/view/com/lists/ListCard.tsx:101
+#: src/view/com/util/forms/PostDropdownBtn.tsx:216
+msgid "Mute words & tags"
+msgstr ""
+
+#: src/view/com/lists/ListCard.tsx:102
msgid "Muted"
msgstr ""
-#: src/view/screens/Moderation.tsx:109
+#: src/view/screens/Moderation.tsx:128
msgid "Muted accounts"
msgstr "ą¤®ą„ą¤Æą„ą¤ ą¤ą¤æą¤ ą¤ą¤ ą¤ą¤¾ą¤¤ą„"
@@ -2284,7 +2393,11 @@ msgstr "ą¤®ą„ą¤Æą„ą¤ ą¤ą¤æą¤ ą¤ą¤ ą¤ą¤¾ą¤¤ą„"
msgid "Muted accounts have their posts removed from your feed and from your notifications. Mutes are completely private."
msgstr "ą¤®ą„ą¤Æą„ą¤ ą¤ą¤æą¤ ą¤ą¤ ą¤ą¤¾ą¤¤ą„ą¤ ą¤ą„ ą¤Ŗą„ą¤øą„ą¤ ą¤ą¤Ŗą¤ą„ ą¤«ą¤¼ą„ą¤” ą¤ą¤° ą¤ą¤Ŗą¤ą„ ą¤øą„ą¤ą¤Øą¤¾ą¤ą¤ ą¤øą„ ą¤¹ą¤ą¤¾ ą¤¦ą„ ą¤ą¤¾ą¤¤ą„ ą¤¹ą„ą¤ą„¤ ą¤®ą„ą¤Æą„ą¤ ą¤Ŗą„ą¤°ą„ तरह ą¤øą„ ą¤Øą¤æą¤ą„ ą¤¹ą„ą¤."
-#: src/view/screens/ProfileList.tsx:276
+#: src/view/screens/Moderation.tsx:100
+msgid "Muted words & tags"
+msgstr ""
+
+#: src/view/screens/ProfileList.tsx:277
msgid "Muting is private. Muted accounts can interact with you, but you will not see their posts or receive notifications from them."
msgstr "ą¤®ą„ą¤Æą„ą¤ ą¤ą¤°ą¤Øą¤¾ ą¤Øą¤æą¤ą„ हą„. ą¤®ą„ą¤Æą„ą¤ ą¤ą¤æą¤ ą¤ą¤ ą¤ą¤¾ą¤¤ą„ ą¤ą¤Ŗą¤ą„ साऄ ą¤ą¤ą¤ą¤°ą„ą¤ą„ą¤ ą¤ą¤° ą¤øą¤ą¤¤ą„ ą¤¹ą„ą¤, ą¤²ą„ą¤ą¤æą¤Ø ą¤ą¤Ŗ ą¤ą¤Øą¤ą„ ą¤Ŗą„ą¤øą„ą¤ ą¤Øą¤¹ą„ą¤ ą¤¦ą„ą¤ą„ą¤ą¤ą„ या ą¤ą¤Øą¤øą„ ą¤øą„ą¤ą¤Øą¤¾ą¤ą¤ ą¤Ŗą„ą¤°ą¤¾ą¤Ŗą„त ą¤Øą¤¹ą„ą¤ ą¤ą¤°ą„ą¤ą¤ą„ą„¤"
@@ -2292,7 +2405,7 @@ msgstr "ą¤®ą„ą¤Æą„ą¤ ą¤ą¤°ą¤Øą¤¾ ą¤Øą¤æą¤ą„ हą„. ą¤®ą„ą¤Æą„ą¤ ą¤ą¤æ
msgid "My Birthday"
msgstr "ą¤ą¤Øą„मदिन"
-#: src/view/screens/Feeds.tsx:419
+#: src/view/screens/Feeds.tsx:663
msgid "My Feeds"
msgstr "ą¤®ą„ą¤°ą„ ą¤«ą¤¼ą„ą¤”"
@@ -2347,6 +2460,10 @@ msgstr "ą¤
ą¤Ŗą¤Øą„ ą¤«ą¤¼ą„ą¤²ą„ą¤
ą¤°ą„ą¤ø ą¤ą¤° ą¤”ą„ą¤ą¤¾ तठप
msgid "Never lose access to your followers or data."
msgstr ""
+#: src/components/dialogs/MutedWords.tsx:244
+msgid "Nevermind"
+msgstr ""
+
#: src/view/screens/Lists.tsx:76
msgctxt "action"
msgid "New"
@@ -2368,17 +2485,17 @@ msgstr ""
msgid "New Password"
msgstr ""
-#: src/view/com/feeds/FeedPage.tsx:201
+#: src/view/com/feeds/FeedPage.tsx:126
msgctxt "action"
msgid "New post"
msgstr ""
-#: src/view/screens/Feeds.tsx:581
+#: src/view/screens/Feeds.tsx:555
#: src/view/screens/Notifications.tsx:168
#: src/view/screens/Profile.tsx:382
-#: src/view/screens/ProfileFeed.tsx:432
-#: src/view/screens/ProfileList.tsx:195
-#: src/view/screens/ProfileList.tsx:223
+#: src/view/screens/ProfileFeed.tsx:433
+#: src/view/screens/ProfileList.tsx:196
+#: src/view/screens/ProfileList.tsx:224
#: src/view/shell/desktop/LeftNav.tsx:248
msgid "New post"
msgstr "ą¤Øą¤ ą¤Ŗą„ą¤øą„ą¤"
@@ -2400,7 +2517,7 @@ msgstr ""
msgid "News"
msgstr ""
-#: src/view/com/auth/create/CreateAccount.tsx:161
+#: src/view/com/auth/create/CreateAccount.tsx:172
#: src/view/com/auth/login/ForgotPasswordForm.tsx:182
#: src/view/com/auth/login/ForgotPasswordForm.tsx:192
#: src/view/com/auth/login/LoginForm.tsx:291
@@ -2421,10 +2538,10 @@ msgstr ""
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/PreferencesFollowingFeed.tsx:129
+#: src/view/screens/PreferencesFollowingFeed.tsx:200
+#: src/view/screens/PreferencesFollowingFeed.tsx:235
+#: src/view/screens/PreferencesFollowingFeed.tsx:272
#: src/view/screens/PreferencesThreads.tsx:106
#: src/view/screens/PreferencesThreads.tsx:129
msgid "No"
@@ -2435,7 +2552,7 @@ msgstr "ą¤Øą¤¹ą„ą¤"
msgid "No description"
msgstr "ą¤ą„ठविवरण ą¤Øą¤¹ą„ą¤"
-#: src/view/com/profile/ProfileHeader.tsx:169
+#: src/view/com/profile/ProfileHeader.tsx:170
msgid "No longer following {0}"
msgstr ""
@@ -2448,13 +2565,13 @@ msgstr ""
msgid "No result"
msgstr ""
-#: src/view/screens/Feeds.tsx:524
+#: src/view/screens/Feeds.tsx:495
msgid "No results found for \"{query}\""
msgstr "\"{query}\" ą¤ą„ ą¤²ą¤æą¤ ą¤ą„ठपरिणाम ą¤Øą¤¹ą„ą¤ मिला"
#: src/view/com/modals/ListAddRemoveUsers.tsx:127
-#: src/view/screens/Search/Search.tsx:280
-#: src/view/screens/Search/Search.tsx:308
+#: src/view/screens/Search/Search.tsx:281
+#: src/view/screens/Search/Search.tsx:309
msgid "No results found for {query}"
msgstr "{query} ą¤ą„ ą¤²ą¤æą¤ ą¤ą„ठपरिणाम ą¤Øą¤¹ą„ą¤ मिला\""
@@ -2480,11 +2597,11 @@ msgstr ""
msgid "Not right now"
msgstr ""
-#: src/view/screens/Moderation.tsx:233
+#: src/view/screens/Moderation.tsx:252
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 ""
-#: src/Navigation.tsx:447
+#: src/Navigation.tsx:450
#: src/view/screens/Notifications.tsx:124
#: src/view/screens/Notifications.tsx:148
#: src/view/shell/bottom-bar/BottomBar.tsx:205
@@ -2518,7 +2635,7 @@ msgstr ""
msgid "Onboarding reset"
msgstr ""
-#: src/view/com/composer/Composer.tsx:375
+#: src/view/com/composer/Composer.tsx:382
msgid "One or more images is missing alt text."
msgstr "ą¤ą¤ या ą¤
ą¤§ą¤æą¤ ą¤ą¤µą¤æą¤Æą¤¾ą¤ alt पाठयाद ą¤ą¤¤ą„ ą¤¹ą„ą¤ą„¤ą„¤"
@@ -2535,8 +2652,12 @@ msgstr ""
msgid "Open"
msgstr ""
-#: src/view/com/composer/Composer.tsx:470
-#: src/view/com/composer/Composer.tsx:471
+#: src/view/screens/Moderation.tsx:75
+msgid "Open content filtering settings"
+msgstr ""
+
+#: src/view/com/composer/Composer.tsx:477
+#: src/view/com/composer/Composer.tsx:478
msgid "Open emoji picker"
msgstr ""
@@ -2544,7 +2665,11 @@ msgstr ""
msgid "Open links with in-app browser"
msgstr ""
-#: src/view/com/pager/FeedsTabBarMobile.tsx:87
+#: src/view/screens/Moderation.tsx:92
+msgid "Open muted words settings"
+msgstr ""
+
+#: src/view/com/home/HomeHeaderLayoutMobile.tsx:49
msgid "Open navigation"
msgstr "ą¤ą¤Ŗą¤Ø ą¤Øą„ą¤µą¤æą¤ą„शन"
@@ -2580,7 +2705,7 @@ msgstr "ą¤ą¤¾ą¤·ą¤¾ ą¤øą„ą¤ą¤æą¤ą¤ą„स ą¤ą„ą¤²ą„ą¤"
msgid "Opens device photo gallery"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:419
+#: src/view/com/profile/ProfileHeader.tsx:420
msgid "Opens editor for profile display name, avatar, background image, and description"
msgstr ""
@@ -2588,11 +2713,11 @@ msgstr ""
msgid "Opens external embeds settings"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:574
+#: src/view/com/profile/ProfileHeader.tsx:575
msgid "Opens followers list"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:593
+#: src/view/com/profile/ProfileHeader.tsx:594
msgid "Opens following list"
msgstr ""
@@ -2620,7 +2745,8 @@ msgstr "ą¤®ą„ą¤”ą¤°ą„ą¤¶ą¤Ø ą¤øą„ą¤ą¤æą¤ą¤ą„स ą¤ą„ą¤²ą„ą¤"
msgid "Opens password reset form"
msgstr ""
-#: src/view/screens/Feeds.tsx:357
+#: src/view/com/home/HomeHeaderLayout.web.tsx:60
+#: src/view/screens/Feeds.tsx:356
msgid "Opens screen to edit Saved Feeds"
msgstr ""
@@ -2680,8 +2806,8 @@ msgstr "ą¤Ŗą„ą¤·ą„ą¤ ą¤Øą¤¹ą„ą¤ मिला"
msgid "Page Not Found"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:210
-#: src/view/com/auth/create/Step1.tsx:220
+#: src/view/com/auth/create/Step1.tsx:214
+#: src/view/com/auth/create/Step1.tsx:224
#: src/view/com/auth/login/LoginForm.tsx:226
#: src/view/com/auth/login/SetNewPasswordForm.tsx:161
#: src/view/com/modals/DeleteAccount.tsx:202
@@ -2717,15 +2843,15 @@ msgid "Pets"
msgstr ""
#: src/view/com/auth/create/Step2.tsx:183
-msgid "Phone number"
-msgstr ""
+#~ msgid "Phone number"
+#~ msgstr ""
#: src/view/com/modals/SelfLabel.tsx:121
msgid "Pictures meant for adults."
msgstr "ą¤ą¤æą¤¤ą„र ą¤µą¤Æą¤øą„ą¤ą„ą¤ ą¤ą„ ą¤²ą¤æą¤ ą¤„ą„ą„¤ą„¤"
-#: src/view/screens/ProfileFeed.tsx:353
-#: src/view/screens/ProfileList.tsx:580
+#: src/view/screens/ProfileFeed.tsx:354
+#: src/view/screens/ProfileList.tsx:581
msgid "Pin to home"
msgstr ""
@@ -2746,14 +2872,18 @@ msgstr ""
msgid "Plays the GIF"
msgstr ""
-#: src/view/com/auth/create/state.ts:177
+#: src/view/com/auth/create/state.ts:124
msgid "Please choose your handle."
msgstr ""
-#: src/view/com/auth/create/state.ts:160
+#: src/view/com/auth/create/state.ts:117
msgid "Please choose your password."
msgstr ""
+#: src/view/com/auth/create/state.ts:131
+msgid "Please complete the verification captcha."
+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 "ą¤ą¤øą„ ą¤¬ą¤¦ą¤²ą¤Øą„ ą¤øą„ ą¤Ŗą¤¹ą¤²ą„ ą¤ą„पया ą¤
ą¤Ŗą¤Øą„ ą¤ą¤®ą„ल ą¤ą„ ą¤Ŗą„ą¤·ą„ą¤ą¤æ ą¤ą¤°ą„ą¤ą„¤ यह ą¤ą¤ ą¤
ą¤øą„ą¤„ą¤¾ą¤Æą„ ą¤ą¤µą¤¶ą„ą¤Æą¤ą¤¤ą¤¾ ą¤¹ą„ ą¤ą¤¬ą¤ą¤æ ą¤ą¤®ą„ल-ą¤
ą¤Ŗą¤”ą„ą¤ą¤æą¤ą¤ ą¤ą„ल ą¤ą„औ़ा ą¤ą¤¾ą¤¤ą¤¾ हą„, ą¤ą¤° ą¤ą¤øą„ ą¤ą¤²ą„द ą¤¹ą„ ą¤¹ą¤ą¤¾ दिया ą¤ą¤¾ą¤ą¤ą¤¾ą„¤ą„¤"
@@ -2763,22 +2893,22 @@ msgid "Please enter a name for your app password. All spaces is not allowed."
msgstr ""
#: src/view/com/auth/create/Step2.tsx:206
-msgid "Please enter a phone number that can receive SMS text messages."
-msgstr ""
+#~ msgid "Please enter a phone number that can receive SMS text messages."
+#~ msgstr ""
#: src/view/com/modals/AddAppPasswords.tsx:145
msgid "Please enter a unique name for this App Password or use our randomly generated one."
msgstr "ą¤ą„पया ą¤ą¤ø ą¤ą¤Ŗ ą¤Ŗą¤¾ą¤øą¤µą¤°ą„ą¤” ą¤ą„ ą¤²ą¤æą¤ ą¤ą¤ ą¤
ą¤¦ą„ą¤µą¤æą¤¤ą„य नाम ą¤¦ą¤°ą„ą¤ ą¤ą¤°ą„ठया ą¤¹ą¤®ą¤¾ą¤°ą„ ą¤Æą¤¾ą¤¦ą„ą¤ą„ą¤ą¤æą¤ ą¤°ą„ą¤Ŗ ą¤øą„ ą¤ą¤¤ą„ą¤Ŗą¤Øą„ą¤Ø ą¤ą¤ ą¤ą¤¾ ą¤ą¤Ŗą¤Æą„ą¤ ą¤ą¤°ą„ą¤ą„¤ą„¤"
#: src/view/com/auth/create/state.ts:170
-msgid "Please enter the code you received by SMS."
-msgstr ""
+#~ msgid "Please enter the code you received by SMS."
+#~ msgstr ""
#: src/view/com/auth/create/Step2.tsx:282
-msgid "Please enter the verification code sent to {phoneNumberFormatted}."
-msgstr ""
+#~ msgid "Please enter the verification code sent to {phoneNumberFormatted}."
+#~ msgstr ""
-#: src/view/com/auth/create/state.ts:146
+#: src/view/com/auth/create/state.ts:103
msgid "Please enter your email."
msgstr ""
@@ -2795,7 +2925,7 @@ msgstr ""
msgid "Please Verify Your Email"
msgstr ""
-#: src/view/com/composer/Composer.tsx:215
+#: src/view/com/composer/Composer.tsx:222
msgid "Please wait for your link card to finish loading"
msgstr ""
@@ -2807,18 +2937,18 @@ msgstr ""
msgid "Porn"
msgstr ""
-#: src/view/com/composer/Composer.tsx:350
-#: src/view/com/composer/Composer.tsx:358
+#: src/view/com/composer/Composer.tsx:357
+#: src/view/com/composer/Composer.tsx:365
msgctxt "action"
msgid "Post"
msgstr ""
-#: src/view/com/post-thread/PostThread.tsx:246
+#: src/view/com/post-thread/PostThread.tsx:303
msgctxt "description"
msgid "Post"
msgstr "ą¤Ŗą„ą¤øą„ą¤"
-#: src/view/com/post-thread/PostThreadItem.tsx:174
+#: src/view/com/post-thread/PostThreadItem.tsx:175
msgid "Post by {0}"
msgstr ""
@@ -2828,11 +2958,11 @@ msgstr ""
msgid "Post by @{0}"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:84
+#: src/view/com/util/forms/PostDropdownBtn.tsx:90
msgid "Post deleted"
msgstr ""
-#: src/view/com/post-thread/PostThread.tsx:398
+#: src/view/com/post-thread/PostThread.tsx:462
msgid "Post hidden"
msgstr "ą¤ą„पा ą¤Ŗą„ą¤øą„ą¤"
@@ -2844,14 +2974,22 @@ msgstr "ą¤Ŗą„ą¤øą„ą¤ ą¤ą¤¾ą¤·ą¤¾"
msgid "Post Languages"
msgstr "ą¤Ŗą„ą¤øą„ą¤ ą¤ą¤¾ą¤·ą¤¾"
-#: src/view/com/post-thread/PostThread.tsx:450
+#: src/view/com/post-thread/PostThread.tsx:514
msgid "Post not found"
msgstr "ą¤Ŗą„ą¤øą„ą¤ ą¤Øą¤¹ą„ą¤ मिला"
+#: src/components/TagMenu/index.tsx:257
+msgid "posts"
+msgstr ""
+
#: src/view/screens/Profile.tsx:180
msgid "Posts"
msgstr ""
+#: src/components/dialogs/MutedWords.tsx:77
+msgid "Posts can be muted based on their text, their tags, or both."
+msgstr ""
+
#: src/view/com/posts/FeedErrorMessage.tsx:64
msgid "Posts hidden"
msgstr ""
@@ -2873,7 +3011,7 @@ msgid "Prioritize Your Follows"
msgstr "ą¤
ą¤Ŗą¤Øą„ ą¤«ą¤¼ą„ą¤²ą„ą¤
ą¤°ą„ą¤ø ą¤ą„ ą¤Ŗą„ą¤°ą¤¾ą¤„ą¤®ą¤æą¤ą¤¤ą¤¾ ą¤¦ą„ą¤"
#: src/view/screens/Settings/index.tsx:632
-#: src/view/shell/desktop/RightNav.tsx:80
+#: src/view/shell/desktop/RightNav.tsx:72
msgid "Privacy"
msgstr "ą¤ą„ą¤Ŗą¤Øą„ą¤Æą¤¤ą¤¾"
@@ -2916,11 +3054,11 @@ msgstr ""
msgid "Public, shareable lists which can drive feeds."
msgstr "ą¤øą¤¾ą¤°ą„ą¤µą¤ą¤Øą¤æą¤, ą¤øą¤¾ą¤ą¤¾ ą¤ą¤°ą¤Øą„ ą¤Æą„ą¤ą„य ą¤øą„ą¤ą¤æą¤Æą¤¾ą¤ ą¤ą„ ą¤«ą¤¼ą„ą¤” ą¤ą¤²ą¤¾ ą¤øą¤ą¤¤ą„ ą¤¹ą„ą¤ą„¤"
-#: src/view/com/composer/Composer.tsx:335
+#: src/view/com/composer/Composer.tsx:342
msgid "Publish post"
msgstr ""
-#: src/view/com/composer/Composer.tsx:335
+#: src/view/com/composer/Composer.tsx:342
msgid "Publish reply"
msgstr ""
@@ -2954,6 +3092,7 @@ msgstr "ą¤
ą¤Øą„ą¤¶ą¤ą¤øą¤æą¤¤ ą¤«ą¤¼ą„ą¤”"
msgid "Recommended Users"
msgstr "ą¤
ą¤Øą„ą¤¶ą¤ą¤øą¤æą¤¤ ą¤²ą„ą¤"
+#: src/components/dialogs/MutedWords.tsx:249
#: src/view/com/modals/ListAddRemoveUsers.tsx:264
#: src/view/com/modals/SelfLabel.tsx:83
#: src/view/com/modals/UserAddRemoveLists.tsx:219
@@ -2962,7 +3101,7 @@ msgstr "ą¤
ą¤Øą„ą¤¶ą¤ą¤øą¤æą¤¤ ą¤²ą„ą¤"
msgid "Remove"
msgstr "ą¤Øą¤æą¤ą¤¾ą¤²ą„ą¤"
-#: src/view/com/feeds/FeedSourceCard.tsx:106
+#: src/view/com/feeds/FeedSourceCard.tsx:108
msgid "Remove {0} from my feeds?"
msgstr "ą¤®ą„ą¤°ą„ ą¤«ą¤¼ą„ą¤” ą¤øą„ {0} ą¤¹ą¤ą¤¾ą¤ą¤?"
@@ -2975,11 +3114,11 @@ msgstr "ą¤ą¤¾ą¤¤ą¤¾ ą¤¹ą¤ą¤¾ą¤ą¤"
msgid "Remove feed"
msgstr "ą¤«ą¤¼ą„ą¤” ą¤¹ą¤ą¤¾ą¤ą¤"
-#: src/view/com/feeds/FeedSourceCard.tsx:105
-#: src/view/com/feeds/FeedSourceCard.tsx:167
-#: src/view/com/feeds/FeedSourceCard.tsx:172
-#: src/view/com/feeds/FeedSourceCard.tsx:243
-#: src/view/screens/ProfileFeed.tsx:272
+#: src/view/com/feeds/FeedSourceCard.tsx:107
+#: src/view/com/feeds/FeedSourceCard.tsx:169
+#: src/view/com/feeds/FeedSourceCard.tsx:174
+#: src/view/com/feeds/FeedSourceCard.tsx:245
+#: src/view/screens/ProfileFeed.tsx:273
msgid "Remove from my feeds"
msgstr "ą¤®ą„ą¤°ą„ ą¤«ą¤¼ą„ą¤” ą¤øą„ ą¤¹ą¤ą¤¾ą¤ą¤"
@@ -2991,11 +3130,15 @@ msgstr "ą¤ą¤µą¤æ ą¤Øą¤æą¤ą¤¾ą¤²ą„ą¤"
msgid "Remove image preview"
msgstr "ą¤ą¤µą¤æ ą¤Ŗą„ą¤°ą„ą¤µą¤¾ą¤µą¤²ą„ą¤ą¤Ø ą¤Øą¤æą¤ą¤¾ą¤²ą„ą¤"
+#: src/components/dialogs/MutedWords.tsx:294
+msgid "Remove mute word from your list"
+msgstr ""
+
#: src/view/com/modals/Repost.tsx:47
msgid "Remove repost"
msgstr ""
-#: src/view/com/feeds/FeedSourceCard.tsx:173
+#: src/view/com/feeds/FeedSourceCard.tsx:175
msgid "Remove this feed from my feeds?"
msgstr ""
@@ -3008,8 +3151,8 @@ msgstr "ą¤ą¤ø ą¤«ą¤¼ą„ą¤” ą¤ą„ ą¤øą¤¹ą„ą¤ą„ ą¤ą¤ ą¤«ą¤¼ą„ą¤” सą„
msgid "Removed from list"
msgstr ""
-#: src/view/com/feeds/FeedSourceCard.tsx:111
-#: src/view/com/feeds/FeedSourceCard.tsx:178
+#: src/view/com/feeds/FeedSourceCard.tsx:113
+#: src/view/com/feeds/FeedSourceCard.tsx:180
msgid "Removed from my feeds"
msgstr ""
@@ -3025,16 +3168,16 @@ msgstr ""
msgid "Replies to this thread are disabled"
msgstr ""
-#: src/view/com/composer/Composer.tsx:348
+#: src/view/com/composer/Composer.tsx:355
msgctxt "action"
msgid "Reply"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:144
+#: src/view/screens/PreferencesFollowingFeed.tsx:144
msgid "Reply Filters"
msgstr "ą¤«ą¤æą¤²ą„ą¤ą¤°"
-#: src/view/com/post/Post.tsx:166
+#: src/view/com/post/Post.tsx:167
#: src/view/com/posts/FeedItem.tsx:287
msgctxt "description"
msgid "Reply to <0/>"
@@ -3044,20 +3187,20 @@ msgstr ""
msgid "Report {collectionName}"
msgstr "ą¤°ą¤æą¤Ŗą„ą¤°ą„ठ{collectionName}"
-#: src/view/com/profile/ProfileHeader.tsx:360
+#: src/view/com/profile/ProfileHeader.tsx:361
msgid "Report Account"
msgstr "ą¤°ą¤æą¤Ŗą„ą¤°ą„ą¤"
-#: src/view/screens/ProfileFeed.tsx:292
+#: src/view/screens/ProfileFeed.tsx:293
msgid "Report feed"
msgstr "ą¤°ą¤æą¤Ŗą„ą¤°ą„ą¤ ą¤«ą¤¼ą„ą¤”"
-#: src/view/screens/ProfileList.tsx:458
+#: src/view/screens/ProfileList.tsx:459
msgid "Report List"
msgstr "ą¤°ą¤æą¤Ŗą„ą¤°ą„ą¤ ą¤øą„ą¤ą„"
#: src/view/com/modals/report/SendReportButton.tsx:37
-#: src/view/com/util/forms/PostDropdownBtn.tsx:210
+#: src/view/com/util/forms/PostDropdownBtn.tsx:255
msgid "Report post"
msgstr "ą¤°ą¤æą¤Ŗą„ą¤°ą„ą¤ ą¤Ŗą„ą¤øą„ą¤"
@@ -3094,7 +3237,7 @@ msgstr ""
msgid "reposted your post"
msgstr ""
-#: src/view/com/post-thread/PostThreadItem.tsx:187
+#: src/view/com/post-thread/PostThreadItem.tsx:188
msgid "Reposts of this post"
msgstr ""
@@ -3104,8 +3247,8 @@ msgid "Request Change"
msgstr "ą¤
ą¤Øą„ą¤°ą„ध ą¤¬ą¤¦ą¤²ą„ą¤"
#: src/view/com/auth/create/Step2.tsx:219
-msgid "Request code"
-msgstr ""
+#~ msgid "Request code"
+#~ msgstr ""
#: src/view/com/modals/ChangePassword.tsx:239
#: src/view/com/modals/ChangePassword.tsx:241
@@ -3116,7 +3259,7 @@ msgstr ""
msgid "Require alt text before posting"
msgstr "ą¤Ŗą„ą¤øą„ą¤ ą¤ą¤°ą¤Øą„ ą¤øą„ ą¤Ŗą¤¹ą¤²ą„ ą¤µą„ą¤ą¤²ą„ą¤Ŗą¤æą¤ ą¤ą„ą¤ą„ą¤øą„ą¤ ą¤ą„ ą¤ą¤µą¤¶ą„ą¤Æą¤ą¤¤ą¤¾ हą„"
-#: src/view/com/auth/create/Step1.tsx:149
+#: src/view/com/auth/create/Step1.tsx:153
msgid "Required for this provider"
msgstr "ą¤ą¤ø ą¤Ŗą„ą¤°ą¤¦ą¤¾ą¤¤ą¤¾ ą¤ą„ ą¤²ą¤æą¤ ą¤ą¤µą¤¶ą„यą¤"
@@ -3168,9 +3311,8 @@ msgstr ""
#: src/screens/Onboarding/StepInterests/index.tsx:221
#: src/screens/Onboarding/StepInterests/index.tsx:224
-#: src/view/com/auth/create/CreateAccount.tsx:170
-#: src/view/com/auth/create/CreateAccount.tsx:175
-#: src/view/com/auth/create/Step2.tsx:255
+#: src/view/com/auth/create/CreateAccount.tsx:181
+#: src/view/com/auth/create/CreateAccount.tsx:186
#: src/view/com/auth/login/LoginForm.tsx:268
#: src/view/com/auth/login/LoginForm.tsx:271
#: src/view/com/util/error/ErrorMessage.tsx:55
@@ -3179,16 +3321,16 @@ msgid "Retry"
msgstr "फिर ą¤øą„ ą¤ą„शिश ą¤ą¤°ą„"
#: src/view/com/auth/create/Step2.tsx:247
-msgid "Retry."
-msgstr ""
+#~ msgid "Retry."
+#~ msgstr ""
#: src/view/screens/ProfileList.tsx:898
msgid "Return to previous page"
msgstr ""
#: src/view/shell/desktop/RightNav.tsx:55
-msgid "SANDBOX. Posts and accounts are not permanent."
-msgstr ""
+#~ msgid "SANDBOX. Posts and accounts are not permanent."
+#~ msgstr ""
#: src/view/com/lightbox/Lightbox.tsx:132
#: src/view/com/modals/CreateOrEditList.tsx:345
@@ -3201,7 +3343,7 @@ msgstr ""
#: src/view/com/modals/ChangeHandle.tsx:173
#: src/view/com/modals/CreateOrEditList.tsx:337
#: src/view/com/modals/EditProfile.tsx:224
-#: src/view/screens/ProfileFeed.tsx:345
+#: src/view/screens/ProfileFeed.tsx:346
msgid "Save"
msgstr "ą¤øą„ą¤µ ą¤ą¤°ą„"
@@ -3241,14 +3383,14 @@ msgstr ""
msgid "Scroll to top"
msgstr ""
-#: src/Navigation.tsx:437
+#: src/Navigation.tsx:440
#: src/view/com/auth/LoggedOut.tsx:122
#: src/view/com/modals/ListAddRemoveUsers.tsx:75
#: src/view/com/util/forms/SearchInput.tsx:67
#: src/view/com/util/forms/SearchInput.tsx:79
-#: src/view/screens/Search/Search.tsx:418
-#: src/view/screens/Search/Search.tsx:645
-#: src/view/screens/Search/Search.tsx:663
+#: src/view/screens/Search/Search.tsx:419
+#: src/view/screens/Search/Search.tsx:668
+#: src/view/screens/Search/Search.tsx:686
#: src/view/shell/bottom-bar/BottomBar.tsx:159
#: src/view/shell/desktop/LeftNav.tsx:324
#: src/view/shell/desktop/Search.tsx:214
@@ -3258,11 +3400,19 @@ msgstr ""
msgid "Search"
msgstr "ą¤ą„ą¤"
-#: src/view/screens/Search/Search.tsx:712
+#: src/view/screens/Search/Search.tsx:735
#: src/view/shell/desktop/Search.tsx:255
msgid "Search for \"{query}\""
msgstr ""
+#: src/components/TagMenu/index.tsx:145
+msgid "Search for all posts by @{authorHandle} with tag {tag}"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:90
+msgid "Search for all posts with tag {tag}"
+msgstr ""
+
#: src/view/com/auth/LoggedOut.tsx:104
#: src/view/com/auth/LoggedOut.tsx:105
#: src/view/com/modals/ListAddRemoveUsers.tsx:70
@@ -3273,6 +3423,22 @@ msgstr ""
msgid "Security Step Required"
msgstr "ą¤øą„ą¤°ą¤ą„षा ą¤ą¤°ą¤£ ą¤ą¤µą¤¶ą„यą¤"
+#: src/components/TagMenu/index.web.tsx:50
+msgid "See {truncatedTag} posts"
+msgstr ""
+
+#: src/components/TagMenu/index.web.tsx:67
+msgid "See {truncatedTag} posts by user"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:128
+msgid "See <0>{tag}0> posts"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:189
+msgid "See <0>{tag}0> posts by this user"
+msgstr ""
+
#: src/view/screens/SavedFeeds.tsx:163
msgid "See this guide"
msgstr ""
@@ -3297,7 +3463,7 @@ msgstr "ą¤®ą„ą¤ą„दा ą¤ą¤¾ą¤¤ą„ ą¤øą„ ą¤ą„ą¤Øą„ą¤"
msgid "Select option {i} of {numItems}"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:99
+#: src/view/com/auth/create/Step1.tsx:103
#: src/view/com/auth/login/LoginForm.tsx:150
msgid "Select service"
msgstr "ą¤øą„ą¤µą¤¾ ą¤ą„ą¤Øą„ą¤"
@@ -3314,7 +3480,7 @@ msgstr ""
#~ msgid "Select the types of content that you want to see (or not see), and we'll handle the rest."
#~ msgstr ""
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:90
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:96
msgid "Select topical feeds to follow from the list below"
msgstr ""
@@ -3335,8 +3501,8 @@ msgid "Select your interests from the options below"
msgstr ""
#: src/view/com/auth/create/Step2.tsx:155
-msgid "Select your phone's country"
-msgstr ""
+#~ msgid "Select your phone's country"
+#~ msgstr ""
#: src/view/screens/LanguageSettings.tsx:190
msgid "Select your preferred language for translations in your feed."
@@ -3415,19 +3581,19 @@ msgstr ""
msgid "Set new password"
msgstr "नया ą¤Ŗą¤¾ą¤øą¤µą¤°ą„ą¤” ą¤øą„ą¤ ą¤ą¤°ą„ą¤"
-#: src/view/com/auth/create/Step1.tsx:221
+#: src/view/com/auth/create/Step1.tsx:225
msgid "Set password"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:225
+#: src/view/screens/PreferencesFollowingFeed.tsx:225
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:122
+#: src/view/screens/PreferencesFollowingFeed.tsx:122
msgid "Set this setting to \"No\" to hide all replies from your feed."
msgstr "ą¤ą¤ø ą¤øą„ą¤ą¤æą¤ą¤ ą¤ą„ ą¤
ą¤Ŗą¤Øą„ ą¤«ą¤¼ą„ą¤” ą¤øą„ ą¤øą¤ą„ ą¤ą¤¤ą„ą¤¤ą¤°ą„ą¤ ą¤ą„ ą¤ą¤æą¤Ŗą¤¾ą¤Øą„ ą¤ą„ लिठ\"ą¤Øą¤¹ą„ą¤\" पर ą¤øą„ą¤ ą¤ą¤°ą„ą¤ą„¤ą„¤"
-#: src/view/screens/PreferencesHomeFeed.tsx:191
+#: src/view/screens/PreferencesFollowingFeed.tsx:191
msgid "Set this setting to \"No\" to hide all reposts from your feed."
msgstr "ą¤ą¤ø ą¤øą„ą¤ą¤æą¤ą¤ ą¤ą„ ą¤
ą¤Ŗą¤Øą„ ą¤«ą¤¼ą„ą¤” ą¤øą„ ą¤øą¤ą„ ą¤Ŗą„ą¤øą„ą¤ ą¤ą¤æą¤Ŗą¤¾ą¤Øą„ ą¤ą„ लिठ\"ą¤Øą¤¹ą„ą¤\" ą¤ą¤°ą¤Øą„ ą¤ą„ ą¤²ą¤æą¤ ą¤øą„ą¤ ą¤ą¤°ą„ą¤ą„¤ą„¤"
@@ -3436,8 +3602,12 @@ msgid "Set this setting to \"Yes\" to show replies in a threaded view. This is a
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 "ą¤ą¤ø ą¤øą„ą¤ą¤æą¤ą¤ ą¤ą„ ą¤
ą¤Ŗą¤Øą„ ą¤Øą¤æą¤®ą„ą¤Øą¤²ą¤æą¤ą¤æą¤¤ ą¤«ą¤¼ą„ą¤” ą¤®ą„ą¤ ą¤
ą¤Ŗą¤Øą„ ą¤øą¤¹ą„ą¤ą„ ą¤ą¤ ą¤«ą¤¼ą„ą¤” ą¤ą„ ą¤Øą¤®ą„ą¤Øą„ ą¤¦ą¤æą¤ą¤¾ą¤Øą„ ą¤ą„ लिठ\"हाą¤\" पर ą¤øą„ą¤ ą¤ą¤°ą„ą¤ą„¤ यह ą¤ą¤ ą¤Ŗą„ą¤°ą¤Æą„ą¤ą¤¾ą¤¤ą„ą¤®ą¤ ą¤µą¤æą¤¶ą„ą¤·ą¤¤ą¤¾ ą¤¹ą„ą„¤ą„¤"
+#~ 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/PreferencesFollowingFeed.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/screens/Onboarding/Layout.tsx:50
msgid "Set up your account"
@@ -3455,7 +3625,7 @@ msgstr ""
msgid "Sets hosting provider for password reset"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:100
+#: src/view/com/auth/create/Step1.tsx:104
#: src/view/com/auth/login/LoginForm.tsx:151
msgid "Sets server for the Bluesky client"
msgstr ""
@@ -3477,13 +3647,13 @@ msgctxt "action"
msgid "Share"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:294
-#: src/view/com/util/forms/PostDropdownBtn.tsx:153
-#: src/view/screens/ProfileList.tsx:417
+#: src/view/com/profile/ProfileHeader.tsx:295
+#: src/view/com/util/forms/PostDropdownBtn.tsx:184
+#: src/view/screens/ProfileList.tsx:418
msgid "Share"
msgstr "ą¤¶ą„ą¤Æą¤°"
-#: src/view/screens/ProfileFeed.tsx:304
+#: src/view/screens/ProfileFeed.tsx:305
msgid "Share feed"
msgstr ""
@@ -3495,7 +3665,7 @@ msgstr ""
msgid "Show"
msgstr "ą¤¦ą¤æą¤ą¤¾ą¤"
-#: src/view/screens/PreferencesHomeFeed.tsx:68
+#: src/view/screens/PreferencesFollowingFeed.tsx:68
msgid "Show all replies"
msgstr ""
@@ -3507,21 +3677,21 @@ msgstr "ą¤¦ą¤æą¤ą¤¾ą¤"
msgid "Show embeds from {0}"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:458
+#: src/view/com/profile/ProfileHeader.tsx:459
msgid "Show follows similar to {0}"
msgstr ""
-#: src/view/com/post-thread/PostThreadItem.tsx:539
-#: src/view/com/post/Post.tsx:197
+#: src/view/com/post-thread/PostThreadItem.tsx:538
+#: src/view/com/post/Post.tsx:198
#: src/view/com/posts/FeedItem.tsx:363
msgid "Show More"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:258
+#: src/view/screens/PreferencesFollowingFeed.tsx:258
msgid "Show Posts from My Feeds"
msgstr "ą¤®ą„ą¤°ą„ ą¤«ą„ą¤” ą¤øą„ ą¤Ŗą„ą¤øą„ą¤ ą¤¦ą¤æą¤ą¤¾ą¤ą¤"
-#: src/view/screens/PreferencesHomeFeed.tsx:222
+#: src/view/screens/PreferencesFollowingFeed.tsx:222
msgid "Show Quote Posts"
msgstr "ą¤ą¤¦ą„धरण ą¤Ŗą„ą¤øą„ą¤ ą¤¦ą¤æą¤ą¤¾ą¤"
@@ -3537,7 +3707,7 @@ msgstr ""
msgid "Show re-posts in Following feed"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:119
+#: src/view/screens/PreferencesFollowingFeed.tsx:119
msgid "Show Replies"
msgstr "ą¤ą¤¤ą„तर ą¤¦ą¤æą¤ą¤¾ą¤ą¤"
@@ -3553,11 +3723,11 @@ msgstr ""
msgid "Show replies in Following feed"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:70
+#: src/view/screens/PreferencesFollowingFeed.tsx:70
msgid "Show replies with at least {value} {0}"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:188
+#: src/view/screens/PreferencesFollowingFeed.tsx:188
msgid "Show Reposts"
msgstr "ą¤°ą„ą¤Ŗą„ą¤øą„ą¤ ą¤¦ą¤æą¤ą¤¾ą¤ą¤"
@@ -3574,18 +3744,18 @@ msgstr ""
msgid "Show users"
msgstr "ą¤²ą„ą¤ ą¤¦ą¤æą¤ą¤¾ą¤ą¤"
-#: src/view/com/profile/ProfileHeader.tsx:461
+#: src/view/com/profile/ProfileHeader.tsx:462
msgid "Shows a list of users similar to this user."
msgstr ""
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:124
-#: src/view/com/profile/ProfileHeader.tsx:505
+#: src/view/com/profile/ProfileHeader.tsx:506
msgid "Shows posts from {0} in your feed"
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/com/auth/SplashScreen.tsx:79
#: src/view/shell/bottom-bar/BottomBar.tsx:285
#: src/view/shell/bottom-bar/BottomBar.tsx:286
#: src/view/shell/bottom-bar/BottomBar.tsx:288
@@ -3598,8 +3768,8 @@ 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
+#: src/view/com/auth/SplashScreen.tsx:82
+#: src/view/com/auth/SplashScreen.web.tsx:91
msgid "Sign In"
msgstr "ą¤øą¤¾ą¤ą¤Ø ą¤ą¤Ø ą¤ą¤°ą„ą¤"
@@ -3666,8 +3836,8 @@ msgid "Skip this flow"
msgstr ""
#: src/view/com/auth/create/Step2.tsx:82
-msgid "SMS verification"
-msgstr ""
+#~ msgid "SMS verification"
+#~ msgstr ""
#: src/screens/Onboarding/index.tsx:40
msgid "Software Dev"
@@ -3681,7 +3851,7 @@ msgstr ""
msgid "Something went wrong. Check your email and try again."
msgstr ""
-#: src/App.native.tsx:61
+#: src/App.native.tsx:63
msgid "Sorry! Your session expired. Please log in again."
msgstr ""
@@ -3726,7 +3896,7 @@ msgstr "Storybook"
msgid "Submit"
msgstr ""
-#: src/view/screens/ProfileList.tsx:607
+#: src/view/screens/ProfileList.tsx:608
msgid "Subscribe"
msgstr "ą¤øą¤¬ą„ą¤øą¤ą„ą¤°ą¤¾ą¤ą¤¬"
@@ -3735,11 +3905,11 @@ msgstr "ą¤øą¤¬ą„ą¤øą¤ą„ą¤°ą¤¾ą¤ą¤¬"
msgid "Subscribe to the {0} feed"
msgstr ""
-#: src/view/screens/ProfileList.tsx:603
+#: src/view/screens/ProfileList.tsx:604
msgid "Subscribe to this list"
msgstr "ą¤ą¤ø ą¤øą„ą¤ą„ ą¤ą„ ą¤øą¤¬ą„ą¤øą¤ą„ą¤°ą¤¾ą¤ą¤¬ ą¤ą¤°ą„ą¤"
-#: src/view/screens/Search/Search.tsx:373
+#: src/view/screens/Search/Search.tsx:374
msgid "Suggested Follows"
msgstr "ą¤
ą¤Øą„ą¤¶ą¤ą¤øą¤æą¤¤ ą¤²ą„ą¤"
@@ -3783,6 +3953,14 @@ msgstr "ą¤Ŗą„ą¤°ą¤£ą¤¾ą¤²ą„"
msgid "System log"
msgstr "ą¤øą¤æą¤øą„ą¤ą¤® ą¤²ą„ą¤"
+#: src/components/dialogs/MutedWords.tsx:288
+msgid "tag"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:74
+msgid "Tag menu: {tag}"
+msgstr ""
+
#: src/view/com/modals/crop-image/CropImage.web.tsx:112
msgid "Tall"
msgstr "ą¤²ą¤ą¤¬ą¤¾"
@@ -3795,7 +3973,7 @@ msgstr ""
msgid "Tech"
msgstr ""
-#: src/view/shell/desktop/RightNav.tsx:89
+#: src/view/shell/desktop/RightNav.tsx:81
msgid "Terms"
msgstr "ą¤¶ą¤°ą„ą¤¤ą„ą¤"
@@ -3806,12 +3984,20 @@ msgstr "ą¤¶ą¤°ą„ą¤¤ą„ą¤"
msgid "Terms of Service"
msgstr "ą¤øą„ą¤µą¤¾ ą¤ą„ ą¤¶ą¤°ą„ą¤¤ą„ą¤"
+#: src/components/dialogs/MutedWords.tsx:288
+msgid "text"
+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:262
+#: src/view/com/auth/create/CreateAccount.tsx:94
+msgid "That handle is already taken."
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:263
msgid "The account will be able to interact with you after unblocking."
msgstr "ą¤
ą¤Øą¤¬ą„ą¤²ą„ą¤ ą¤ą¤°ą¤Øą„ ą¤ą„ बाद ą¤
ą¤ą¤¾ą¤ą¤ą¤ ą¤ą¤Ŗą¤øą„ ą¤ą¤ą¤ą¤°ą„ą¤ą„ą¤ ą¤ą¤° ą¤øą¤ą„ą¤ą¤¾ą„¤"
@@ -3827,7 +4013,7 @@ msgstr "ą¤ą„ą¤Ŗą„ą¤°ą¤¾ą¤ą¤ ą¤Øą„ą¤¤ą¤æ ą¤ą„ <0/> पर ą¤øą„ą¤„ान
msgid "The following steps will help customize your Bluesky experience."
msgstr ""
-#: src/view/com/post-thread/PostThread.tsx:453
+#: src/view/com/post-thread/PostThread.tsx:517
msgid "The post may have been deleted."
msgstr "ą¤¹ą„ ą¤øą¤ą¤¤ą¤¾ ą¤¹ą„ ą¤ą¤æ यह ą¤Ŗą„ą¤øą„ą¤ ą¤¹ą¤ą¤¾ ą¤¦ą„ ą¤ą¤ ą¤¹ą„ą„¤"
@@ -3847,7 +4033,7 @@ msgstr "ą¤øą„ą¤µą¤¾ ą¤ą„ ą¤¶ą¤°ą„ą¤¤ą„ą¤ ą¤ą„ ą¤øą„ą¤„ą¤¾ą¤Øą¤¾ą¤ą¤¤
msgid "There are many feeds to try:"
msgstr ""
-#: src/view/screens/ProfileFeed.tsx:549
+#: src/view/screens/ProfileFeed.tsx:550
msgid "There was an an issue contacting the server, please check your internet connection and try again."
msgstr ""
@@ -3855,12 +4041,12 @@ msgstr ""
msgid "There was an an issue removing this feed. Please check your internet connection and try again."
msgstr ""
-#: src/view/screens/ProfileFeed.tsx:209
+#: src/view/screens/ProfileFeed.tsx:210
msgid "There was an an issue updating your feeds, please check your internet connection and try again."
msgstr ""
-#: src/view/screens/ProfileFeed.tsx:236
-#: src/view/screens/ProfileList.tsx:266
+#: src/view/screens/ProfileFeed.tsx:237
+#: src/view/screens/ProfileList.tsx:267
#: src/view/screens/SavedFeeds.tsx:209
#: src/view/screens/SavedFeeds.tsx:231
#: src/view/screens/SavedFeeds.tsx:252
@@ -3869,9 +4055,9 @@ msgstr ""
#: src/view/com/auth/onboarding/RecommendedFeedsItem.tsx:57
#: src/view/com/auth/onboarding/RecommendedFeedsItem.tsx:66
-#: src/view/com/feeds/FeedSourceCard.tsx:113
-#: src/view/com/feeds/FeedSourceCard.tsx:127
-#: src/view/com/feeds/FeedSourceCard.tsx:181
+#: src/view/com/feeds/FeedSourceCard.tsx:115
+#: src/view/com/feeds/FeedSourceCard.tsx:129
+#: src/view/com/feeds/FeedSourceCard.tsx:183
msgid "There was an issue contacting your server"
msgstr ""
@@ -3903,19 +4089,19 @@ msgstr ""
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:93
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:105
-#: src/view/com/profile/ProfileHeader.tsx:156
-#: src/view/com/profile/ProfileHeader.tsx:177
-#: src/view/com/profile/ProfileHeader.tsx:216
-#: src/view/com/profile/ProfileHeader.tsx:229
-#: src/view/com/profile/ProfileHeader.tsx:249
-#: src/view/com/profile/ProfileHeader.tsx:271
+#: src/view/com/profile/ProfileHeader.tsx:157
+#: src/view/com/profile/ProfileHeader.tsx:178
+#: src/view/com/profile/ProfileHeader.tsx:217
+#: src/view/com/profile/ProfileHeader.tsx:230
+#: src/view/com/profile/ProfileHeader.tsx:250
+#: src/view/com/profile/ProfileHeader.tsx:272
msgid "There was an issue! {0}"
msgstr ""
-#: src/view/screens/ProfileList.tsx:287
-#: src/view/screens/ProfileList.tsx:306
-#: src/view/screens/ProfileList.tsx:328
-#: src/view/screens/ProfileList.tsx:347
+#: src/view/screens/ProfileList.tsx:288
+#: src/view/screens/ProfileList.tsx:307
+#: src/view/screens/ProfileList.tsx:329
+#: src/view/screens/ProfileList.tsx:348
msgid "There was an issue. Please check your internet connection and try again."
msgstr ""
@@ -3928,8 +4114,8 @@ msgid "There's been a rush of new users to Bluesky! We'll activate your account
msgstr ""
#: src/view/com/auth/create/Step2.tsx:55
-msgid "There's something wrong with this number. Please choose your country and enter your full phone number!"
-msgstr ""
+#~ msgid "There's something wrong with this number. Please choose your country and enter your full phone number!"
+#~ msgstr ""
#: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:138
msgid "These are popular accounts you might like:"
@@ -3964,8 +4150,8 @@ msgid "This feed is currently receiving high traffic and is temporarily unavaila
msgstr ""
#: src/view/screens/Profile.tsx:420
-#: src/view/screens/ProfileFeed.tsx:475
-#: src/view/screens/ProfileList.tsx:660
+#: src/view/screens/ProfileFeed.tsx:476
+#: src/view/screens/ProfileList.tsx:661
msgid "This feed is empty!"
msgstr ""
@@ -3993,7 +4179,7 @@ msgstr ""
msgid "This name is already in use"
msgstr ""
-#: src/view/com/post-thread/PostThreadItem.tsx:122
+#: src/view/com/post-thread/PostThreadItem.tsx:125
msgid "This post has been deleted."
msgstr "ą¤ą¤ø ą¤Ŗą„ą¤øą„ą¤ ą¤ą„ ą¤¹ą¤ą¤¾ दिया ą¤ą¤Æą¤¾ ą¤¹ą„ą„¤ą„¤"
@@ -4017,7 +4203,11 @@ msgstr ""
msgid "This warning is only available for posts with media attached."
msgstr "यह ą¤ą„ą¤¤ą¤¾ą¤µą¤Øą„ ą¤ą„वल ą¤®ą„ą¤”िया ą¤øą¤ą¤²ą¤ą„न ą¤Ŗą„ą¤øą„ą¤ ą¤ą„ ą¤²ą¤æą¤ ą¤ą¤Ŗą¤²ą¤¬ą„ध ą¤¹ą„ą„¤"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:192
+#: src/components/dialogs/MutedWords.tsx:236
+msgid "This will delete {0} from your muted words. You can always add it back later."
+msgstr ""
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:237
msgid "This will hide this post from your feeds."
msgstr ""
@@ -4030,10 +4220,14 @@ msgstr "ą¤„ą„ą¤°ą„औ ą¤Ŗą„ą¤°ą¤¾ą¤„ą¤®ą¤æą¤ą¤¤ą¤¾"
msgid "Threaded Mode"
msgstr "ą¤„ą„ą¤°ą„औ ą¤®ą„ą¤”"
-#: src/Navigation.tsx:252
+#: src/Navigation.tsx:255
msgid "Threads Preferences"
msgstr ""
+#: src/components/dialogs/MutedWords.tsx:95
+msgid "Toggle between muted word options."
+msgstr ""
+
#: src/view/com/util/forms/DropdownButton.tsx:246
msgid "Toggle dropdown"
msgstr "ą¤”ą„ą¤°ą„ą¤Ŗą¤”ą¤¾ą¤ą¤Ø ą¤ą„ą¤ą¤² ą¤ą¤°ą„ą¤"
@@ -4042,9 +4236,9 @@ msgstr "ą¤”ą„ą¤°ą„ą¤Ŗą¤”ą¤¾ą¤ą¤Ø ą¤ą„ą¤ą¤² ą¤ą¤°ą„ą¤"
msgid "Transformations"
msgstr "ą¤Ŗą¤°ą¤æą¤µą¤°ą„ą¤¤ą¤Ø"
-#: src/view/com/post-thread/PostThreadItem.tsx:686
-#: src/view/com/post-thread/PostThreadItem.tsx:688
-#: src/view/com/util/forms/PostDropdownBtn.tsx:125
+#: src/view/com/post-thread/PostThreadItem.tsx:685
+#: src/view/com/post-thread/PostThreadItem.tsx:687
+#: src/view/com/util/forms/PostDropdownBtn.tsx:156
msgid "Translate"
msgstr "ą¤
ą¤Øą„ą¤µą¤¾ą¤¦"
@@ -4053,15 +4247,15 @@ msgctxt "action"
msgid "Try again"
msgstr "फिर ą¤øą„ ą¤ą„शिश ą¤ą¤°ą„"
-#: src/view/screens/ProfileList.tsx:505
+#: src/view/screens/ProfileList.tsx:506
msgid "Un-block list"
msgstr ""
-#: src/view/screens/ProfileList.tsx:490
+#: src/view/screens/ProfileList.tsx:491
msgid "Un-mute list"
msgstr ""
-#: src/view/com/auth/create/CreateAccount.tsx:66
+#: src/view/com/auth/create/CreateAccount.tsx:58
#: src/view/com/auth/login/ForgotPasswordForm.tsx:87
#: src/view/com/auth/login/Login.tsx:76
#: src/view/com/auth/login/LoginForm.tsx:118
@@ -4069,18 +4263,18 @@ msgstr ""
msgid "Unable to contact your service. Please check your Internet connection."
msgstr "ą¤ą¤Ŗą¤ą„ ą¤øą„ą¤µą¤¾ ą¤øą„ ą¤øą¤ą¤Ŗą¤°ą„ą¤ ą¤ą¤°ą¤Øą„ ą¤®ą„ą¤ ą¤
ą¤øą¤®ą¤°ą„ą¤„ą„¤ ą¤ą„पया ą¤
ą¤Ŗą¤Øą„ ą¤ą¤ą¤ą¤°ą¤Øą„ą¤ ą¤ą¤Øą„ą¤ą„शन ą¤ą„ ą¤ą¤¾ą¤ą¤ ą¤ą¤°ą„ą¤ą„¤ą„¤"
-#: src/view/com/profile/ProfileHeader.tsx:432
-#: src/view/screens/ProfileList.tsx:589
+#: src/view/com/profile/ProfileHeader.tsx:433
+#: src/view/screens/ProfileList.tsx:590
msgid "Unblock"
msgstr "ą¤
ą¤Øą¤¬ą„ą¤²ą„ą¤"
-#: src/view/com/profile/ProfileHeader.tsx:435
+#: src/view/com/profile/ProfileHeader.tsx:436
msgctxt "action"
msgid "Unblock"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:260
-#: src/view/com/profile/ProfileHeader.tsx:344
+#: src/view/com/profile/ProfileHeader.tsx:261
+#: src/view/com/profile/ProfileHeader.tsx:345
msgid "Unblock Account"
msgstr "ą¤
ą¤Øą¤¬ą„ą¤²ą„ą¤ ą¤ą¤¾ą¤¤ą¤¾"
@@ -4096,11 +4290,11 @@ msgctxt "action"
msgid "Unfollow"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:484
+#: src/view/com/profile/ProfileHeader.tsx:485
msgid "Unfollow {0}"
msgstr ""
-#: src/view/com/auth/create/state.ts:300
+#: src/view/com/auth/create/state.ts:262
msgid "Unfortunately, you do not meet the requirements to create an account."
msgstr ""
@@ -4109,28 +4303,37 @@ msgstr ""
msgid "Unlike"
msgstr ""
-#: src/view/screens/ProfileList.tsx:596
+#: src/components/TagMenu/index.tsx:253
+#: src/view/screens/ProfileList.tsx:597
msgid "Unmute"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:325
+#: src/components/TagMenu/index.web.tsx:90
+msgid "Unmute {truncatedTag}"
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:326
msgid "Unmute Account"
msgstr "ą¤
ą¤Øą¤®ą„ą¤Æą„ą¤ ą¤ą¤¾ą¤¤ą¤¾"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:171
+#: src/components/TagMenu/index.tsx:210
+msgid "Unmute all {tag} posts"
+msgstr ""
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:202
msgid "Unmute thread"
msgstr "ą¤„ą„ą¤°ą„औ ą¤ą„ ą¤
ą¤Øą¤®ą„ą¤Æą„ą¤ ą¤ą¤°ą„ą¤"
-#: src/view/screens/ProfileFeed.tsx:353
-#: src/view/screens/ProfileList.tsx:580
+#: src/view/screens/ProfileFeed.tsx:354
+#: src/view/screens/ProfileList.tsx:581
msgid "Unpin"
msgstr ""
-#: src/view/screens/ProfileList.tsx:473
+#: src/view/screens/ProfileList.tsx:474
msgid "Unpin moderation list"
msgstr ""
-#: src/view/screens/ProfileFeed.tsx:345
+#: src/view/screens/ProfileFeed.tsx:346
msgid "Unsave"
msgstr ""
@@ -4192,11 +4395,11 @@ msgstr ""
msgid "User Blocks You"
msgstr ""
-#: src/view/com/auth/create/Step3.tsx:41
+#: src/view/com/auth/create/Step2.tsx:79
msgid "User handle"
msgstr "ą¤Æą„ą¤ą¤° ą¤¹ą„ą¤ą¤”ल"
-#: src/view/com/lists/ListCard.tsx:84
+#: src/view/com/lists/ListCard.tsx:85
#: src/view/com/modals/UserAddRemoveLists.tsx:198
msgid "User list by {0}"
msgstr ""
@@ -4205,7 +4408,7 @@ msgstr ""
msgid "User list by <0/>"
msgstr ""
-#: src/view/com/lists/ListCard.tsx:82
+#: src/view/com/lists/ListCard.tsx:83
#: src/view/com/modals/UserAddRemoveLists.tsx:196
#: src/view/screens/ProfileList.tsx:760
msgid "User list by you"
@@ -4241,8 +4444,8 @@ msgid "Users in \"{0}\""
msgstr ""
#: src/view/com/auth/create/Step2.tsx:243
-msgid "Verification code"
-msgstr ""
+#~ msgid "Verification code"
+#~ msgstr ""
#: src/view/screens/Settings/index.tsx:910
msgid "Verify email"
@@ -4269,7 +4472,7 @@ msgstr ""
msgid "Video Games"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:661
+#: src/view/com/profile/ProfileHeader.tsx:662
msgid "View {0}'s avatar"
msgstr ""
@@ -4318,6 +4521,10 @@ msgstr ""
#~ msgid "We recommend \"For You\" by Skygaze:"
#~ msgstr ""
+#: src/components/dialogs/MutedWords.tsx:161
+msgid "We recommend avoiding common words that appear in many posts, since it can result in no posts being shown."
+msgstr ""
+
#: src/screens/Onboarding/StepAlgoFeeds/index.tsx:124
msgid "We recommend our \"Discover\" feed:"
msgstr ""
@@ -4338,15 +4545,19 @@ msgstr ""
msgid "We'll use this to help customize your experience."
msgstr ""
-#: src/view/com/auth/create/CreateAccount.tsx:123
+#: src/view/com/auth/create/CreateAccount.tsx:134
msgid "We're so excited to have you join us!"
msgstr "हम ą¤ą¤Ŗą¤ą„ ą¤¹ą¤®ą¤¾ą¤°ą„ ą¤øą„ą¤µą¤¾ ą¤®ą„ą¤ शामिल ą¤¹ą„ą¤Øą„ ą¤ą„ ą¤²ą„ą¤ą¤° ą¤¬ą¤¹ą„ą¤¤ ą¤ą¤¤ą„साहित ą¤¹ą„ą¤!"
-#: src/view/screens/ProfileList.tsx:85
+#: src/view/screens/ProfileList.tsx:86
msgid "We're sorry, but we were unable to resolve this list. If this persists, please contact the list creator, @{handleOrDid}."
msgstr ""
-#: src/view/screens/Search/Search.tsx:253
+#: src/components/dialogs/MutedWords.tsx:182
+msgid "We're sorry, but we weren't able to load your muted words at this time. Please try again."
+msgstr ""
+
+#: src/view/screens/Search/Search.tsx:254
msgid "We're sorry, but your search could not be completed. Please try again in a few minutes."
msgstr ""
@@ -4366,8 +4577,8 @@ msgstr ""
msgid "What is the issue with this {collectionName}?"
msgstr "ą¤ą¤ø {collectionName} ą¤ą„ साऄ ą¤ą„या ą¤®ą„ą¤¦ą„दा हą„?"
-#: src/view/com/auth/SplashScreen.tsx:34
-#: src/view/com/composer/Composer.tsx:279
+#: src/view/com/auth/SplashScreen.tsx:59
+#: src/view/com/composer/Composer.tsx:286
msgid "What's up?"
msgstr ""
@@ -4388,11 +4599,11 @@ msgstr ""
msgid "Wide"
msgstr "ą¤ą„औ़ा"
-#: src/view/com/composer/Composer.tsx:415
+#: src/view/com/composer/Composer.tsx:422
msgid "Write post"
msgstr "ą¤Ŗą„ą¤øą„ą¤ ą¤²ą¤æą¤ą„"
-#: src/view/com/composer/Composer.tsx:278
+#: src/view/com/composer/Composer.tsx:285
#: src/view/com/composer/Prompt.tsx:33
msgid "Write your reply"
msgstr "ą¤
पना ą¤ą¤µą¤¾ą¤¬ ą¤¦ą„ą¤"
@@ -4402,14 +4613,14 @@ msgid "Writers"
msgstr ""
#: src/view/com/auth/create/Step2.tsx:263
-msgid "XXXXXX"
-msgstr ""
+#~ msgid "XXXXXX"
+#~ msgstr ""
#: src/view/com/composer/select-language/SuggestedLanguage.tsx:77
-#: 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/PreferencesFollowingFeed.tsx:129
+#: src/view/screens/PreferencesFollowingFeed.tsx:201
+#: src/view/screens/PreferencesFollowingFeed.tsx:236
+#: src/view/screens/PreferencesFollowingFeed.tsx:271
#: src/view/screens/PreferencesThreads.tsx:106
#: src/view/screens/PreferencesThreads.tsx:129
msgid "Yes"
@@ -4449,7 +4660,7 @@ msgstr "ą¤ą¤Ŗą¤ą„ पास ą¤
ą¤ą„ ą¤¤ą¤ ą¤ą„ą¤ ą¤ą¤®ą¤ą¤¤ą„रण
msgid "You don't have any pinned feeds."
msgstr "ą¤ą¤Ŗą¤ą„ पास ą¤ą„ठपिन ą¤ą¤æą¤Æą¤¾ ą¤¹ą„ą¤ ą¤«ą¤¼ą„ą¤” ą¤Øą¤¹ą„ą¤ हą„."
-#: src/view/screens/Feeds.tsx:451
+#: src/view/screens/Feeds.tsx:452
msgid "You don't have any saved feeds!"
msgstr ""
@@ -4457,7 +4668,7 @@ msgstr ""
msgid "You don't have any saved feeds."
msgstr "ą¤ą¤Ŗą¤ą„ पास ą¤ą„ą¤ ą¤øą¤¹ą„ą¤ą„ ą¤ą¤ ą¤«ą¤¼ą„ą¤” ą¤Øą¤¹ą„ą¤ हą„."
-#: src/view/com/post-thread/PostThread.tsx:401
+#: src/view/com/post-thread/PostThread.tsx:465
msgid "You have blocked the author or you have been blocked by the author."
msgstr "ą¤ą¤Ŗą¤Øą„ ą¤²ą„ą¤ą¤ ą¤ą„ ą¤
ą¤µą¤°ą„ą¤¦ą„ध ą¤ą¤æą¤Æą¤¾ ą¤¹ą„ ą¤Æą¤¾ ą¤ą¤Ŗą¤Øą„ ą¤²ą„ą¤ą¤ ą¤¦ą„ą¤µą¤¾ą¤°ą¤¾ ą¤
ą¤µą¤°ą„ą¤¦ą„ध ą¤ą¤æą¤Æą¤¾ ą¤¹ą„ą„¤ą„¤"
@@ -4497,6 +4708,10 @@ msgstr "ą¤ą¤Ŗą¤Øą„ ą¤
ą¤ą„ ą¤¤ą¤ ą¤ą„ą¤ ą¤ą¤Ŗ ą¤Ŗą¤¾ą¤øą¤µą¤°ą„ą¤” न
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/components/dialogs/MutedWords.tsx:202
+msgid "You haven't muted any words or tags yet"
+msgstr ""
+
#: src/view/com/modals/ContentFilteringSettings.tsx:175
msgid "You must be 18 or older to enable adult content."
msgstr ""
@@ -4505,11 +4720,11 @@ msgstr ""
msgid "You must be 18 years or older to enable adult content"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:98
+#: src/view/com/util/forms/PostDropdownBtn.tsx:129
msgid "You will no longer receive notifications for this thread"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:101
+#: src/view/com/util/forms/PostDropdownBtn.tsx:132
msgid "You will now receive notifications for this thread"
msgstr ""
@@ -4547,7 +4762,7 @@ msgstr ""
msgid "Your account repository, containing all public data records, can be downloaded as a \"CAR\" file. This file does not include media embeds, such as images, or your private data, which must be fetched separately."
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:234
+#: src/view/com/auth/create/Step1.tsx:238
msgid "Your birth date"
msgstr "ą¤ą¤Øą„म तिऄि"
@@ -4559,7 +4774,7 @@ msgstr ""
msgid "Your default feed is \"Following\""
msgstr ""
-#: src/view/com/auth/create/state.ts:153
+#: src/view/com/auth/create/state.ts:110
#: src/view/com/auth/login/ForgotPasswordForm.tsx:70
#: src/view/com/modals/ChangePassword.tsx:54
msgid "Your email appears to be invalid."
@@ -4581,7 +4796,7 @@ msgstr "ą¤ą¤Ŗą¤ą¤¾ ą¤ą¤®ą„ल ą¤
ą¤ą„ ą¤¤ą¤ ą¤øą¤¤ą„ą¤Æą¤¾ą¤Ŗą¤æą¤¤ न
msgid "Your following feed is empty! Follow more users to see what's happening."
msgstr ""
-#: src/view/com/auth/create/Step3.tsx:45
+#: src/view/com/auth/create/Step2.tsx:83
msgid "Your full handle will be"
msgstr "ą¤ą¤Ŗą¤ą¤¾ ą¤Ŗą„ą¤°ą¤¾ ą¤¹ą„ą¤ą¤”ल ą¤¹ą„ą¤ą¤¾"
@@ -4595,11 +4810,15 @@ msgstr ""
#~ msgid "Your invite codes are hidden when logged in using an App Password"
#~ msgstr ""
+#: src/components/dialogs/MutedWords.tsx:173
+msgid "Your muted words"
+msgstr ""
+
#: src/view/com/modals/ChangePassword.tsx:155
msgid "Your password has been changed successfully!"
msgstr ""
-#: src/view/com/composer/Composer.tsx:267
+#: src/view/com/composer/Composer.tsx:274
msgid "Your post has been published"
msgstr ""
@@ -4614,10 +4833,10 @@ msgstr "ą¤ą¤Ŗą¤ą„ ą¤Ŗą„ą¤øą„ą¤, ą¤Ŗą¤øą¤ą¤¦ ą¤ą¤° ą¤¬ą„ą¤²ą„ठसा
msgid "Your profile"
msgstr "ą¤ą¤Ŗą¤ą„ ą¤Ŗą„ą¤°ą„ą¤«ą¤¼ą¤¾ą¤ą¤²"
-#: src/view/com/composer/Composer.tsx:266
+#: src/view/com/composer/Composer.tsx:273
msgid "Your reply has been published"
msgstr ""
-#: src/view/com/auth/create/Step3.tsx:28
+#: src/view/com/auth/create/Step2.tsx:65
msgid "Your user handle"
msgstr "ą¤ą¤Ŗą¤ą¤¾ ą¤Æą„ą¤ą¤° ą¤¹ą„ą¤ą¤”ल"
diff --git a/src/locale/locales/id/messages.po b/src/locale/locales/id/messages.po
index 3e23ef65ef..4135b9f19d 100644
--- a/src/locale/locales/id/messages.po
+++ b/src/locale/locales/id/messages.po
@@ -29,7 +29,7 @@ msgstr "(tidak ada email)"
#~ msgid "{0} {purposeLabel} List"
#~ msgstr "Daftar {purposeLabel} {0}"
-#: src/view/com/profile/ProfileHeader.tsx:592
+#: src/view/com/profile/ProfileHeader.tsx:593
msgid "{following} following"
msgstr "{following} mengikuti"
@@ -63,7 +63,7 @@ msgstr "{numUnreadNotifications} belum dibaca"
msgid "<0/> members"
msgstr "<0/> anggota"
-#: src/view/com/profile/ProfileHeader.tsx:594
+#: src/view/com/profile/ProfileHeader.tsx:595
msgid "<0>{following} 0><1>following1>"
msgstr "<0>{following} 0><1>mengikuti1>"
@@ -79,7 +79,7 @@ msgstr "<0>Ikuti0><1>Rekomendasi1><2>Pengguna2>"
msgid "<0>Welcome to0><1>Bluesky1>"
msgstr "<0>Selamat datang di0>Bluesky1>"
-#: src/view/com/profile/ProfileHeader.tsx:557
+#: src/view/com/profile/ProfileHeader.tsx:558
msgid "ā Invalid Handle"
msgstr "ā Handle Tidak Valid"
@@ -92,11 +92,11 @@ msgid "A new version of the app is available. Please update to continue using th
msgstr "Versi baru dari aplikasi ini telah tersedia. Harap perbarui untuk terus menggunakan aplikasi."
#: src/view/com/util/ViewHeader.tsx:83
-#: src/view/screens/Search/Search.tsx:624
+#: src/view/screens/Search/Search.tsx:647
msgid "Access navigation links and settings"
msgstr "Akses tautan navigasi dan pengaturan"
-#: src/view/com/pager/FeedsTabBarMobile.tsx:89
+#: src/view/com/home/HomeHeaderLayoutMobile.tsx:51
msgid "Access profile and other navigation links"
msgstr "Akses profil dan tautan navigasi lain"
@@ -111,11 +111,11 @@ msgstr "Aksesibilitas"
msgid "Account"
msgstr "Akun"
-#: src/view/com/profile/ProfileHeader.tsx:245
+#: src/view/com/profile/ProfileHeader.tsx:246
msgid "Account blocked"
msgstr "Akun diblokir"
-#: src/view/com/profile/ProfileHeader.tsx:212
+#: src/view/com/profile/ProfileHeader.tsx:213
msgid "Account muted"
msgstr "Akun dibisukan"
@@ -135,14 +135,15 @@ msgstr "Pengaturan akun"
msgid "Account removed from quick access"
msgstr "Akun dihapus dari akses cepat"
-#: src/view/com/profile/ProfileHeader.tsx:267
+#: src/view/com/profile/ProfileHeader.tsx:268
msgid "Account unblocked"
msgstr "Akun batal diblokir"
-#: src/view/com/profile/ProfileHeader.tsx:225
+#: src/view/com/profile/ProfileHeader.tsx:226
msgid "Account unmuted"
msgstr "Akun batal dibisukan"
+#: src/components/dialogs/MutedWords.tsx:147
#: src/view/com/auth/onboarding/RecommendedFeedsItem.tsx:150
#: src/view/com/modals/ListAddRemoveUsers.tsx:264
#: src/view/com/modals/UserAddRemoveLists.tsx:219
@@ -184,24 +185,32 @@ msgstr "Tambahkan detail"
msgid "Add details to report"
msgstr "Tambahkan detail ke laporan"
-#: src/view/com/composer/Composer.tsx:446
+#: src/view/com/composer/Composer.tsx:453
msgid "Add link card"
msgstr "Tambahkan kartu tautan"
-#: src/view/com/composer/Composer.tsx:451
+#: src/view/com/composer/Composer.tsx:458
msgid "Add link card:"
msgstr "Tambahkan kartu tautan:"
+#: src/components/dialogs/MutedWords.tsx:140
+msgid "Add mute word for configured settings"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:74
+msgid "Add muted words and tags"
+msgstr ""
+
#: src/view/com/modals/ChangeHandle.tsx:417
msgid "Add the following DNS record to your domain:"
msgstr "Tambahkan DNS record berikut ke domain Anda:"
-#: src/view/com/profile/ProfileHeader.tsx:309
+#: src/view/com/profile/ProfileHeader.tsx:310
msgid "Add to Lists"
msgstr "Tambahkan ke Daftar"
-#: src/view/com/feeds/FeedSourceCard.tsx:243
-#: src/view/screens/ProfileFeed.tsx:272
+#: src/view/com/feeds/FeedSourceCard.tsx:245
+#: src/view/screens/ProfileFeed.tsx:273
msgid "Add to my feeds"
msgstr "Tambakan ke feed saya"
@@ -214,11 +223,11 @@ msgstr "Ditambahkan"
msgid "Added to list"
msgstr "Ditambahkan ke daftar"
-#: src/view/com/feeds/FeedSourceCard.tsx:125
+#: src/view/com/feeds/FeedSourceCard.tsx:127
msgid "Added to my feeds"
msgstr "Ditambahkan ke feed saya"
-#: src/view/screens/PreferencesHomeFeed.tsx:173
+#: src/view/screens/PreferencesFollowingFeed.tsx:173
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."
@@ -238,6 +247,10 @@ msgstr "Konten dewasa hanya dapat diaktifkan melalui Web di <0/>."
msgid "Advanced"
msgstr "Lanjutan"
+#: src/view/screens/Feeds.tsx:666
+msgid "All the feeds you've saved, right in one place."
+msgstr ""
+
#: src/view/com/auth/login/ForgotPasswordForm.tsx:221
#: src/view/com/modals/ChangePassword.tsx:168
msgid "Already have a code?"
@@ -311,7 +324,7 @@ msgstr "Pengaturan kata sandi aplikasi"
msgid "App Passwords"
msgstr "Kata sandi Aplikasi"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:250
+#: src/view/com/util/forms/PostDropdownBtn.tsx:295
msgid "Appeal content warning"
msgstr "Ajukan banding peringatan konten"
@@ -338,15 +351,16 @@ msgstr "Tampilan"
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:143
+#: src/view/com/composer/Composer.tsx:150
msgid "Are you sure you'd like to discard this draft?"
msgstr "Anda yakin untuk membuang draf ini?"
-#: src/view/screens/ProfileList.tsx:364
+#: src/components/dialogs/MutedWords.tsx:233
+#: src/view/screens/ProfileList.tsx:365
msgid "Are you sure?"
msgstr "Anda yakin?"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:233
+#: src/view/com/util/forms/PostDropdownBtn.tsx:278
msgid "Are you sure? This cannot be undone."
msgstr "Anda yakin? Ini tidak dapat dibatalkan."
@@ -362,21 +376,21 @@ msgstr ""
msgid "Artistic or non-erotic nudity."
msgstr "Ketelanjangan artistik atau non-erotis."
-#: src/view/com/auth/create/CreateAccount.tsx:147
+#: src/view/com/auth/create/CreateAccount.tsx:158
#: src/view/com/auth/login/ChooseAccountForm.tsx:151
#: src/view/com/auth/login/ForgotPasswordForm.tsx:174
#: src/view/com/auth/login/LoginForm.tsx:259
#: src/view/com/auth/login/SetNewPasswordForm.tsx:179
#: src/view/com/modals/report/InputIssueDetails.tsx:46
-#: src/view/com/post-thread/PostThread.tsx:408
-#: src/view/com/post-thread/PostThread.tsx:458
-#: src/view/com/post-thread/PostThread.tsx:466
-#: src/view/com/profile/ProfileHeader.tsx:648
+#: src/view/com/post-thread/PostThread.tsx:472
+#: src/view/com/post-thread/PostThread.tsx:522
+#: src/view/com/post-thread/PostThread.tsx:530
+#: src/view/com/profile/ProfileHeader.tsx:649
#: src/view/com/util/ViewHeader.tsx:81
msgid "Back"
msgstr "Kembali"
-#: src/view/com/post-thread/PostThread.tsx:416
+#: src/view/com/post-thread/PostThread.tsx:480
msgctxt "action"
msgid "Back"
msgstr "Kembali"
@@ -389,7 +403,7 @@ msgstr ""
msgid "Basics"
msgstr "Dasar"
-#: src/view/com/auth/create/Step1.tsx:246
+#: src/view/com/auth/create/Step1.tsx:250
#: src/view/com/modals/BirthDateSettings.tsx:73
msgid "Birthday"
msgstr "Tanggal lahir"
@@ -398,33 +412,33 @@ msgstr "Tanggal lahir"
msgid "Birthday:"
msgstr "Tanggal lahir:"
-#: src/view/com/profile/ProfileHeader.tsx:238
-#: src/view/com/profile/ProfileHeader.tsx:345
+#: src/view/com/profile/ProfileHeader.tsx:239
+#: src/view/com/profile/ProfileHeader.tsx:346
msgid "Block Account"
msgstr "Blokir Akun"
-#: src/view/screens/ProfileList.tsx:555
+#: src/view/screens/ProfileList.tsx:556
msgid "Block accounts"
msgstr "Blokir akun"
-#: src/view/screens/ProfileList.tsx:505
+#: src/view/screens/ProfileList.tsx:506
msgid "Block list"
msgstr "Daftar blokir"
-#: src/view/screens/ProfileList.tsx:315
+#: src/view/screens/ProfileList.tsx:316
msgid "Block these accounts?"
msgstr "Blokir akun ini?"
-#: src/view/screens/ProfileList.tsx:319
+#: src/view/screens/ProfileList.tsx:320
msgid "Block this List"
msgstr "Blokir Daftar ini"
-#: src/view/com/lists/ListCard.tsx:109
-#: src/view/com/util/post-embeds/QuoteEmbed.tsx:60
+#: src/view/com/lists/ListCard.tsx:110
+#: src/view/com/util/post-embeds/QuoteEmbed.tsx:61
msgid "Blocked"
msgstr "Diblokir"
-#: src/view/screens/Moderation.tsx:123
+#: src/view/screens/Moderation.tsx:142
msgid "Blocked accounts"
msgstr "Akun yang diblokir"
@@ -433,7 +447,7 @@ msgstr "Akun yang diblokir"
msgid "Blocked Accounts"
msgstr "Akun yang diblokir"
-#: src/view/com/profile/ProfileHeader.tsx:240
+#: src/view/com/profile/ProfileHeader.tsx:241
msgid "Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you."
msgstr "Akun yang diblokir tidak dapat membalas di utas Anda, menyebut Anda, atau berinteraksi dengan Anda."
@@ -441,15 +455,16 @@ msgstr "Akun yang diblokir tidak dapat membalas di utas Anda, menyebut Anda, ata
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:267
+#: src/view/com/post-thread/PostThread.tsx:324
msgid "Blocked post."
msgstr "Postingan yang diblokir."
-#: src/view/screens/ProfileList.tsx:317
+#: src/view/screens/ProfileList.tsx:318
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
+#: src/view/com/auth/SplashScreen.web.tsx:133
msgid "Blog"
msgstr "Blog"
@@ -482,7 +497,7 @@ msgstr "Bluesky bersifat publik."
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:226
+#: src/view/screens/Moderation.tsx:245
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."
@@ -499,6 +514,7 @@ msgid "Build version {0} {1}"
msgstr "Versi {0} {1}"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:87
+#: src/view/com/auth/SplashScreen.web.tsx:128
msgid "Business"
msgstr "Bisnis"
@@ -533,8 +549,8 @@ msgid "Can only contain letters, numbers, spaces, dashes, and underscores. Must
msgstr "Hanya dapat terdiri dari huruf, angka, spasi, tanda hubung dan garis bawah. Minimal 4 karakter, namun tidak boleh lebih dari 32 karakter."
#: src/components/Prompt.tsx:91
-#: src/view/com/composer/Composer.tsx:300
-#: src/view/com/composer/Composer.tsx:305
+#: src/view/com/composer/Composer.tsx:307
+#: src/view/com/composer/Composer.tsx:312
#: src/view/com/modals/ChangeEmail.tsx:218
#: src/view/com/modals/ChangeEmail.tsx:220
#: src/view/com/modals/ChangePassword.tsx:265
@@ -548,7 +564,7 @@ msgstr "Hanya dapat terdiri dari huruf, angka, spasi, tanda hubung dan garis baw
#: src/view/com/modals/VerifyEmail.tsx:247
#: src/view/com/modals/VerifyEmail.tsx:253
#: src/view/com/modals/Waitlist.tsx:142
-#: src/view/screens/Search/Search.tsx:693
+#: src/view/screens/Search/Search.tsx:716
#: src/view/shell/desktop/Search.tsx:238
msgid "Cancel"
msgstr "Batal"
@@ -682,7 +698,7 @@ msgstr "Pilih algoritma yang akan digunakan untuk kustom feed Anda."
msgid "Choose your main feeds"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:215
+#: src/view/com/auth/create/Step1.tsx:219
msgid "Choose your password"
msgstr "Pilih kata sandi Anda"
@@ -705,7 +721,7 @@ msgid "Clear all storage data (restart after this)"
msgstr "Hapus semua data penyimpanan (mulai ulang setelah ini)"
#: src/view/com/util/forms/SearchInput.tsx:88
-#: src/view/screens/Search/Search.tsx:674
+#: src/view/screens/Search/Search.tsx:697
msgid "Clear search query"
msgstr "Hapus kueri pencarian"
@@ -713,6 +729,11 @@ msgstr "Hapus kueri pencarian"
msgid "click here"
msgstr "klik di sini"
+#: src/components/RichText.tsx:189
+#: src/components/TagMenu/index.web.tsx:125
+msgid "Click here to open tag menu for {tag}"
+msgstr ""
+
#: src/screens/Onboarding/index.tsx:35
msgid "Climate"
msgstr ""
@@ -722,7 +743,8 @@ msgstr ""
msgid "Close"
msgstr ""
-#: src/components/Dialog/index.web.tsx:78
+#: src/components/Dialog/index.web.tsx:80
+#: src/components/Dialog/index.web.tsx:194
msgid "Close active dialog"
msgstr ""
@@ -742,11 +764,15 @@ msgstr "Tutup gambar"
msgid "Close image viewer"
msgstr "Tutup penampil gambar"
-#: src/view/shell/index.web.tsx:49
+#: src/view/shell/index.web.tsx:51
msgid "Close navigation footer"
msgstr "Tutup footer navigasi"
-#: src/view/shell/index.web.tsx:50
+#: src/components/TagMenu/index.tsx:266
+msgid "Close this dialog"
+msgstr ""
+
+#: src/view/shell/index.web.tsx:52
msgid "Closes bottom navigation bar"
msgstr "Menutup bilah navigasi bawah"
@@ -754,7 +780,7 @@ msgstr "Menutup bilah navigasi bawah"
msgid "Closes password update alert"
msgstr "Menutup peringatan pembaruan kata sandi"
-#: src/view/com/composer/Composer.tsx:302
+#: src/view/com/composer/Composer.tsx:309
msgid "Closes post composer and discards post draft"
msgstr "Menutup penyusun postingan dan membuang draf"
@@ -783,7 +809,11 @@ msgstr "Panduan Komunitas"
msgid "Complete onboarding and start using your account"
msgstr ""
-#: src/view/com/composer/Composer.tsx:417
+#: src/view/com/auth/create/Step3.tsx:73
+msgid "Complete the challenge"
+msgstr ""
+
+#: src/view/com/composer/Composer.tsx:424
msgid "Compose posts up to {MAX_GRAPHEME_LENGTH} characters in length"
msgstr "Buat postingan dengan panjang hingga {MAX_GRAPHEME_LENGTH} karakter"
@@ -800,7 +830,7 @@ msgstr ""
#: src/view/com/modals/SelfLabel.tsx:154
#: src/view/com/modals/VerifyEmail.tsx:231
#: src/view/com/modals/VerifyEmail.tsx:233
-#: src/view/screens/PreferencesHomeFeed.tsx:308
+#: src/view/screens/PreferencesFollowingFeed.tsx:308
#: src/view/screens/PreferencesThreads.tsx:159
msgid "Confirm"
msgstr "Konfirmasi"
@@ -838,16 +868,16 @@ msgstr "Kode konfirmasi"
msgid "Confirms signing up {email} to the waitlist"
msgstr "Konfirmasi pendaftaran {email} ke daftar tunggu"
-#: src/view/com/auth/create/CreateAccount.tsx:182
+#: src/view/com/auth/create/CreateAccount.tsx:193
#: src/view/com/auth/login/LoginForm.tsx:278
msgid "Connecting..."
msgstr "Menghubungkan..."
-#: src/view/com/auth/create/CreateAccount.tsx:202
+#: src/view/com/auth/create/CreateAccount.tsx:213
msgid "Contact support"
msgstr ""
-#: src/view/screens/Moderation.tsx:81
+#: src/view/screens/Moderation.tsx:83
msgid "Content filtering"
msgstr "Penyaring Konten"
@@ -877,7 +907,7 @@ msgstr "Peringatan konten"
#: src/screens/Onboarding/StepFollowingFeed.tsx:153
#: src/screens/Onboarding/StepInterests/index.tsx:248
#: src/screens/Onboarding/StepModeration/index.tsx:118
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:108
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:114
#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:148
#: src/view/com/auth/onboarding/RecommendedFollows.tsx:209
msgid "Continue"
@@ -886,7 +916,7 @@ msgstr "Lanjutkan"
#: src/screens/Onboarding/StepFollowingFeed.tsx:150
#: src/screens/Onboarding/StepInterests/index.tsx:245
#: src/screens/Onboarding/StepModeration/index.tsx:115
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:105
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:111
msgid "Continue to next step"
msgstr ""
@@ -913,7 +943,7 @@ msgstr "Menyalin versi build ke papan klip"
#: src/view/com/modals/AddAppPasswords.tsx:76
#: src/view/com/modals/InviteCodes.tsx:152
-#: src/view/com/util/forms/PostDropdownBtn.tsx:112
+#: src/view/com/util/forms/PostDropdownBtn.tsx:143
msgid "Copied to clipboard"
msgstr "Disalin ke papan klip"
@@ -925,19 +955,19 @@ msgstr "Menyalin kata sandi aplikasi"
msgid "Copy"
msgstr "Salin"
-#: src/view/screens/ProfileList.tsx:417
+#: src/view/screens/ProfileList.tsx:418
msgid "Copy link to list"
msgstr "Salin tautan ke daftar"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:153
+#: src/view/com/util/forms/PostDropdownBtn.tsx:184
msgid "Copy link to post"
msgstr "Salin tautan ke postingan"
-#: src/view/com/profile/ProfileHeader.tsx:294
+#: src/view/com/profile/ProfileHeader.tsx:295
msgid "Copy link to profile"
msgstr "Salin tautan ke profil"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:139
+#: src/view/com/util/forms/PostDropdownBtn.tsx:170
msgid "Copy post text"
msgstr "Salin teks postingan"
@@ -946,7 +976,7 @@ msgstr "Salin teks postingan"
msgid "Copyright Policy"
msgstr "Kebijakan Hak Cipta"
-#: src/view/screens/ProfileFeed.tsx:96
+#: src/view/screens/ProfileFeed.tsx:97
msgid "Could not load feed"
msgstr "Tidak dapat memuat feed"
@@ -955,12 +985,12 @@ msgid "Could not load list"
msgstr "Tidak dapat memuat daftar"
#: src/view/com/auth/create/Step2.tsx:91
-msgid "Country"
-msgstr ""
+#~ msgid "Country"
+#~ msgstr ""
#: src/view/com/auth/HomeLoggedOutCTA.tsx:62
-#: src/view/com/auth/SplashScreen.tsx:46
-#: src/view/com/auth/SplashScreen.web.tsx:77
+#: src/view/com/auth/SplashScreen.tsx:71
+#: src/view/com/auth/SplashScreen.web.tsx:81
msgid "Create a new account"
msgstr "Buat akun baru"
@@ -968,7 +998,7 @@ msgstr "Buat akun baru"
msgid "Create a new Bluesky account"
msgstr "Buat akun Bluesky baru"
-#: src/view/com/auth/create/CreateAccount.tsx:122
+#: src/view/com/auth/create/CreateAccount.tsx:133
msgid "Create Account"
msgstr "Buat Akun"
@@ -977,7 +1007,7 @@ msgid "Create App Password"
msgstr "Buat Kata Sandi Aplikasi"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:54
-#: src/view/com/auth/SplashScreen.tsx:43
+#: src/view/com/auth/SplashScreen.tsx:68
msgid "Create new account"
msgstr "Buat akun baru"
@@ -993,7 +1023,7 @@ msgstr "Dibuat oleh <0/>"
msgid "Created by you"
msgstr "Dibuat oleh Anda"
-#: src/view/com/composer/Composer.tsx:448
+#: src/view/com/composer/Composer.tsx:455
msgid "Creates a card with a thumbnail. The card links to {url}"
msgstr "Buat kartu dengan gambar kecil. Tautan kartu ke {url}"
@@ -1011,6 +1041,7 @@ msgid "Custom domain"
msgstr "Domain kustom"
#: src/screens/Onboarding/StepAlgoFeeds/index.tsx:106
+#: src/view/screens/Feeds.tsx:692
msgid "Custom feeds built by the community bring you new experiences and help you find the content you love."
msgstr ""
@@ -1056,8 +1087,8 @@ msgstr "Hapus Akun"
msgid "Delete app password"
msgstr "Hapus kata sandi aplikasi"
-#: src/view/screens/ProfileList.tsx:363
-#: src/view/screens/ProfileList.tsx:444
+#: src/view/screens/ProfileList.tsx:364
+#: src/view/screens/ProfileList.tsx:445
msgid "Delete List"
msgstr "Hapus Daftar"
@@ -1073,19 +1104,19 @@ msgstr "Hapus akun saya"
msgid "Delete My Accountā¦"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:228
+#: src/view/com/util/forms/PostDropdownBtn.tsx:273
msgid "Delete post"
msgstr "Hapus postingan"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:232
+#: src/view/com/util/forms/PostDropdownBtn.tsx:277
msgid "Delete this post?"
msgstr "Hapus postingan ini?"
-#: src/view/com/util/post-embeds/QuoteEmbed.tsx:69
+#: src/view/com/util/post-embeds/QuoteEmbed.tsx:70
msgid "Deleted"
msgstr "Dihapus"
-#: src/view/com/post-thread/PostThread.tsx:259
+#: src/view/com/post-thread/PostThread.tsx:316
msgid "Deleted post."
msgstr "Postingan dihapus."
@@ -1104,7 +1135,7 @@ msgstr "Deskripsi"
#~ msgid "Developer Tools"
#~ msgstr "Alat Pengembang"
-#: src/view/com/composer/Composer.tsx:211
+#: src/view/com/composer/Composer.tsx:218
msgid "Did you want to say anything?"
msgstr "Apakah Anda ingin mengatakan sesuatu?"
@@ -1112,15 +1143,15 @@ msgstr "Apakah Anda ingin mengatakan sesuatu?"
msgid "Dim"
msgstr ""
-#: src/view/com/composer/Composer.tsx:144
+#: src/view/com/composer/Composer.tsx:151
msgid "Discard"
msgstr "Buang"
-#: src/view/com/composer/Composer.tsx:138
+#: src/view/com/composer/Composer.tsx:145
msgid "Discard draft"
msgstr "Buang draf"
-#: src/view/screens/Moderation.tsx:207
+#: src/view/screens/Moderation.tsx:226
msgid "Discourage apps from showing my account to logged-out users"
msgstr "Cegah aplikasi untuk menampilkan akun saya ke pengguna yang tidak login"
@@ -1130,8 +1161,12 @@ msgid "Discover new custom feeds"
msgstr "Temukan feed khusus baru"
#: src/view/screens/Feeds.tsx:473
-msgid "Discover new feeds"
-msgstr "Temukan feed baru"
+#~ msgid "Discover new feeds"
+#~ msgstr "Temukan feed baru"
+
+#: src/view/screens/Feeds.tsx:689
+msgid "Discover New Feeds"
+msgstr ""
#: src/view/com/modals/EditProfile.tsx:192
msgid "Display name"
@@ -1145,7 +1180,7 @@ msgstr "Nama Tampilan"
msgid "Domain verified!"
msgstr "Domain terverifikasi!"
-#: src/view/com/auth/create/Step1.tsx:166
+#: src/view/com/auth/create/Step1.tsx:170
msgid "Don't have an invite code?"
msgstr "Tidak punya kode undangan?"
@@ -1172,7 +1207,7 @@ msgstr "Selesai"
#: src/view/com/modals/InviteCodes.tsx:80
#: src/view/com/modals/InviteCodes.tsx:123
#: src/view/com/modals/ListAddRemoveUsers.tsx:142
-#: src/view/screens/PreferencesHomeFeed.tsx:311
+#: src/view/screens/PreferencesFollowingFeed.tsx:311
#: src/view/screens/Settings/ExportCarDialog.tsx:93
#: src/view/screens/Settings/ExportCarDialog.tsx:94
msgid "Done"
@@ -1195,7 +1230,7 @@ msgstr ""
msgid "Download CAR file"
msgstr ""
-#: src/view/com/composer/text-input/TextInput.web.tsx:247
+#: src/view/com/composer/text-input/TextInput.web.tsx:249
msgid "Drop to add images"
msgstr ""
@@ -1241,7 +1276,7 @@ msgstr "Ubah"
msgid "Edit image"
msgstr "Edit gambar"
-#: src/view/screens/ProfileList.tsx:432
+#: src/view/screens/ProfileList.tsx:433
msgid "Edit list details"
msgstr "Edit detail daftar"
@@ -1259,15 +1294,16 @@ msgstr "Edit Feed Saya"
msgid "Edit my profile"
msgstr "Edit profil saya"
-#: src/view/com/profile/ProfileHeader.tsx:417
+#: src/view/com/profile/ProfileHeader.tsx:418
msgid "Edit profile"
msgstr "Edit profil"
-#: src/view/com/profile/ProfileHeader.tsx:422
+#: src/view/com/profile/ProfileHeader.tsx:423
msgid "Edit Profile"
msgstr "Edit Profil"
-#: src/view/screens/Feeds.tsx:356
+#: src/view/com/home/HomeHeaderLayout.web.tsx:59
+#: src/view/screens/Feeds.tsx:355
msgid "Edit Saved Feeds"
msgstr "Edit Feed Tersimpan"
@@ -1287,16 +1323,14 @@ msgstr "Ubah deskripsi profil Anda"
msgid "Education"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:195
-#: src/view/com/auth/create/Step2.tsx:194
-#: src/view/com/auth/create/Step2.tsx:269
+#: src/view/com/auth/create/Step1.tsx:199
#: src/view/com/auth/login/ForgotPasswordForm.tsx:156
#: src/view/com/modals/ChangeEmail.tsx:141
#: src/view/com/modals/Waitlist.tsx:88
msgid "Email"
msgstr "Email"
-#: src/view/com/auth/create/Step1.tsx:186
+#: src/view/com/auth/create/Step1.tsx:190
#: src/view/com/auth/login/ForgotPasswordForm.tsx:147
msgid "Email address"
msgstr "Alamat email"
@@ -1339,7 +1373,7 @@ msgstr "Aktifkan Media Eksternal"
msgid "Enable media players for"
msgstr "Aktifkan pemutar media untuk"
-#: src/view/screens/PreferencesHomeFeed.tsx:147
+#: src/view/screens/PreferencesFollowingFeed.tsx:147
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."
@@ -1351,6 +1385,11 @@ msgstr "Akhir feed"
msgid "Enter a name for this App Password"
msgstr "Masukkan nama untuk Sandi Aplikasi ini"
+#: src/components/dialogs/MutedWords.tsx:87
+#: src/components/dialogs/MutedWords.tsx:88
+msgid "Enter a word or tag"
+msgstr ""
+
#: src/view/com/modals/VerifyEmail.tsx:105
msgid "Enter Confirmation Code"
msgstr "Masukkan Kode Konfirmasi"
@@ -1371,7 +1410,7 @@ msgstr "Masukkan domain yang ingin Anda gunakan"
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/Step1.tsx:247
+#: src/view/com/auth/create/Step1.tsx:251
#: src/view/com/modals/BirthDateSettings.tsx:74
msgid "Enter your birth date"
msgstr "Masukkan tanggal lahir Anda"
@@ -1380,7 +1419,7 @@ msgstr "Masukkan tanggal lahir Anda"
msgid "Enter your email"
msgstr "Masukkan email Anda"
-#: src/view/com/auth/create/Step1.tsx:191
+#: src/view/com/auth/create/Step1.tsx:195
msgid "Enter your email address"
msgstr "Masukkan alamat email Anda"
@@ -1393,14 +1432,18 @@ msgid "Enter your new email address below."
msgstr "Masukkan alamat email baru Anda di bawah ini."
#: src/view/com/auth/create/Step2.tsx:188
-msgid "Enter your phone number"
-msgstr ""
+#~ msgid "Enter your phone number"
+#~ msgstr ""
#: 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:109
+#: src/view/com/auth/create/Step3.tsx:67
+msgid "Error receiving captcha response."
+msgstr ""
+
+#: src/view/screens/Search/Search.tsx:110
msgid "Error:"
msgstr "Eror:"
@@ -1452,7 +1495,7 @@ msgstr "Media Eksternal"
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 "Media eksternal memungkinkan situs web untuk mengumpulkan informasi tentang Anda dan perangkat Anda. Tidak ada informasi yang dikirim atau diminta hingga Anda menekan tombol \"play\"."
-#: src/Navigation.tsx:258
+#: src/Navigation.tsx:261
#: src/view/screens/PreferencesExternalEmbeds.tsx:52
#: src/view/screens/Settings/index.tsx:657
msgid "External Media Preferences"
@@ -1471,7 +1514,7 @@ msgstr "Gagal membuat kata sandi aplikasi."
msgid "Failed to create the list. Check your internet connection and try again."
msgstr "Gagal membuat daftar. Periksa koneksi internet Anda dan coba lagi."
-#: src/view/com/util/forms/PostDropdownBtn.tsx:88
+#: src/view/com/util/forms/PostDropdownBtn.tsx:110
msgid "Failed to delete post, please try again"
msgstr "Gagal menghapus postingan, silakan coba lagi"
@@ -1484,25 +1527,26 @@ msgstr "Gagal memuat rekomendasi feed"
msgid "Feed"
msgstr "Feed"
-#: src/view/com/feeds/FeedSourceCard.tsx:229
+#: src/view/com/feeds/FeedSourceCard.tsx:231
msgid "Feed by {0}"
msgstr "Feed oleh {0}"
-#: src/view/screens/Feeds.tsx:631
+#: src/view/screens/Feeds.tsx:605
msgid "Feed offline"
msgstr "Feed offline"
#: src/view/com/feeds/FeedPage.tsx:143
-msgid "Feed Preferences"
-msgstr "Preferensi Feed"
+#~ msgid "Feed Preferences"
+#~ msgstr "Preferensi Feed"
-#: src/view/shell/desktop/RightNav.tsx:69
+#: src/view/shell/desktop/RightNav.tsx:61
#: src/view/shell/Drawer.tsx:311
msgid "Feedback"
msgstr "Masukan"
-#: src/Navigation.tsx:442
-#: src/view/screens/Feeds.tsx:548
+#: src/Navigation.tsx:445
+#: src/view/screens/Feeds.tsx:419
+#: src/view/screens/Feeds.tsx:524
#: src/view/screens/Profile.tsx:184
#: src/view/shell/bottom-bar/BottomBar.tsx:181
#: src/view/shell/desktop/LeftNav.tsx:342
@@ -1527,7 +1571,7 @@ msgstr "Feed dibuat oleh pengguna untuk mengkurasi konten. Pilih beberapa feed y
msgid "Feeds are custom algorithms that users build with a little coding expertise. <0/> for more information."
msgstr "Feed adalah algoritma khusus yang dibuat oleh pengguna dengan sedikit keahlian pengkodean. <0/> untuk informasi lebih lanjut."
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:70
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:76
msgid "Feeds can be topical as well!"
msgstr ""
@@ -1541,11 +1585,11 @@ msgstr ""
msgid "Find accounts to follow"
msgstr "Temukan akun untuk diikuti"
-#: src/view/screens/Search/Search.tsx:439
+#: src/view/screens/Search/Search.tsx:440
msgid "Find users on Bluesky"
msgstr "Temukan pengguna di Bluesky"
-#: src/view/screens/Search/Search.tsx:437
+#: src/view/screens/Search/Search.tsx:438
msgid "Find users with the search tool on the right"
msgstr "Temukan pengguna dengan alat pencarian di sebelah kanan"
@@ -1553,9 +1597,13 @@ msgstr "Temukan pengguna dengan alat pencarian di sebelah kanan"
msgid "Finding similar accounts..."
msgstr "Mencari akun serupa..."
+#: src/view/screens/PreferencesFollowingFeed.tsx:111
+msgid "Fine-tune the content you see on your Following feed."
+msgstr ""
+
#: src/view/screens/PreferencesHomeFeed.tsx:111
-msgid "Fine-tune the content you see on your home screen."
-msgstr "Atur konten yang Anda lihat di beranda."
+#~ 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."
@@ -1580,7 +1628,7 @@ msgstr "Balik secara vertikal"
#: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:181
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:136
-#: src/view/com/profile/ProfileHeader.tsx:512
+#: src/view/com/profile/ProfileHeader.tsx:513
msgid "Follow"
msgstr "Ikuti"
@@ -1591,7 +1639,7 @@ msgstr "Ikuti"
#: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:58
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:122
-#: src/view/com/profile/ProfileHeader.tsx:503
+#: src/view/com/profile/ProfileHeader.tsx:504
msgid "Follow {0}"
msgstr "Ikuti {0}"
@@ -1619,7 +1667,7 @@ msgstr "Diikuti oleh {0}"
msgid "Followed users"
msgstr "Pengguna yang diikuti"
-#: src/view/screens/PreferencesHomeFeed.tsx:154
+#: src/view/screens/PreferencesFollowingFeed.tsx:154
msgid "Followed users only"
msgstr "Hanya pengguna yang diikuti"
@@ -1635,16 +1683,24 @@ msgstr "Pengikut"
#~ msgstr "mengikuti"
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:136
-#: src/view/com/profile/ProfileHeader.tsx:494
+#: src/view/com/profile/ProfileHeader.tsx:495
#: src/view/screens/ProfileFollows.tsx:25
msgid "Following"
msgstr "Mengikuti"
-#: src/view/com/profile/ProfileHeader.tsx:148
+#: src/view/com/profile/ProfileHeader.tsx:149
msgid "Following {0}"
msgstr "Mengikuti {0}"
-#: src/view/com/profile/ProfileHeader.tsx:545
+#: src/Navigation.tsx:248
+#: src/view/com/home/HomeHeaderLayout.web.tsx:45
+#: src/view/com/home/HomeHeaderLayoutMobile.tsx:83
+#: src/view/screens/PreferencesFollowingFeed.tsx:104
+#: src/view/screens/Settings/index.tsx:543
+msgid "Following Feed Preferences"
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:546
msgid "Follows you"
msgstr "Mengikuti Anda"
@@ -1698,8 +1754,8 @@ msgstr "Memulai"
msgid "Go back"
msgstr "Kembali"
-#: src/view/screens/ProfileFeed.tsx:105
-#: src/view/screens/ProfileFeed.tsx:110
+#: src/view/screens/ProfileFeed.tsx:106
+#: src/view/screens/ProfileFeed.tsx:111
#: src/view/screens/ProfileList.tsx:897
#: src/view/screens/ProfileList.tsx:902
msgid "Go Back"
@@ -1710,7 +1766,7 @@ msgstr "Kembali"
msgid "Go back to previous step"
msgstr ""
-#: src/view/screens/Search/Search.tsx:724
+#: src/view/screens/Search/Search.tsx:747
#: src/view/shell/desktop/Search.tsx:262
msgid "Go to @{queryMaybeHandle}"
msgstr ""
@@ -1727,11 +1783,15 @@ msgstr "Berikutnya"
msgid "Handle"
msgstr "Handle"
-#: src/view/com/auth/create/CreateAccount.tsx:197
+#: src/components/RichText.tsx:188
+msgid "Hashtag: {tag}"
+msgstr ""
+
+#: src/view/com/auth/create/CreateAccount.tsx:208
msgid "Having trouble?"
msgstr ""
-#: src/view/shell/desktop/RightNav.tsx:98
+#: src/view/shell/desktop/RightNav.tsx:90
#: src/view/shell/Drawer.tsx:321
msgid "Help"
msgstr "Bantuan"
@@ -1744,11 +1804,11 @@ msgstr ""
#~ msgid "Here are some accounts for your to follow"
#~ msgstr ""
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:79
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:85
msgid "Here are some popular topical feeds. You can choose to follow as many as you like."
msgstr ""
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:74
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:80
msgid "Here are some topical feeds based on your interests: {interestsText}. You can choose to follow as many as you like."
msgstr ""
@@ -1769,7 +1829,7 @@ msgctxt "action"
msgid "Hide"
msgstr "Sembunyikan"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:187
+#: src/view/com/util/forms/PostDropdownBtn.tsx:232
msgid "Hide post"
msgstr "Sembunyikan postingan"
@@ -1778,7 +1838,7 @@ msgstr "Sembunyikan postingan"
msgid "Hide the content"
msgstr "Sembunyikan konten"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:191
+#: src/view/com/util/forms/PostDropdownBtn.tsx:236
msgid "Hide this post?"
msgstr "Sembunyikan postingan ini?"
@@ -1786,7 +1846,7 @@ msgstr "Sembunyikan postingan ini?"
msgid "Hide user list"
msgstr "Sembunyikan daftar pengguna"
-#: src/view/com/profile/ProfileHeader.tsx:486
+#: src/view/com/profile/ProfileHeader.tsx:487
msgid "Hides posts from {0} in your feed"
msgstr "Menyembunyikan postingan dari {0} di feed Anda"
@@ -1810,7 +1870,7 @@ msgstr "Hmm, server feed memberikan respons yang buruk. Harap beri tahu pemilik
msgid "Hmm, we're having trouble finding this feed. It may have been deleted."
msgstr "Hmm, kami kesulitan menemukan feed ini. Mungkin sudah dihapus."
-#: src/Navigation.tsx:432
+#: src/Navigation.tsx:435
#: src/view/shell/bottom-bar/BottomBar.tsx:137
#: src/view/shell/desktop/LeftNav.tsx:306
#: src/view/shell/Drawer.tsx:398
@@ -1822,10 +1882,10 @@ msgstr "Beranda"
#: src/view/com/pager/FeedsTabBarMobile.tsx:123
#: src/view/screens/PreferencesHomeFeed.tsx:104
#: src/view/screens/Settings/index.tsx:543
-msgid "Home Feed Preferences"
-msgstr "Preferensi Feed Beranda"
+#~ msgid "Home Feed Preferences"
+#~ msgstr "Preferensi Feed Beranda"
-#: src/view/com/auth/create/Step1.tsx:78
+#: src/view/com/auth/create/Step1.tsx:82
#: src/view/com/auth/login/ForgotPasswordForm.tsx:120
msgid "Hosting provider"
msgstr "Provider hosting"
@@ -1883,7 +1943,7 @@ msgstr "Masukkan kode yang dikirim ke email Anda untuk pengaturan ulang kata san
msgid "Input confirmation code for account deletion"
msgstr "Masukkan kode konfirmasi untuk penghapusan akun"
-#: src/view/com/auth/create/Step1.tsx:196
+#: src/view/com/auth/create/Step1.tsx:200
msgid "Input email for Bluesky account"
msgstr ""
@@ -1895,7 +1955,7 @@ msgstr ""
#~ msgid "Input hosting provider address"
#~ msgstr "Masukkan alamat penyedia hosting"
-#: src/view/com/auth/create/Step1.tsx:154
+#: src/view/com/auth/create/Step1.tsx:158
msgid "Input invite code to proceed"
msgstr "Masukkan kode undangan untuk melanjutkan"
@@ -1912,8 +1972,8 @@ msgid "Input password for account deletion"
msgstr "Masukkan kata sandi untuk penghapusan akun"
#: src/view/com/auth/create/Step2.tsx:196
-msgid "Input phone number for SMS verification"
-msgstr ""
+#~ msgid "Input phone number for SMS verification"
+#~ msgstr ""
#: src/view/com/auth/login/LoginForm.tsx:230
msgid "Input the password tied to {identifier}"
@@ -1924,8 +1984,8 @@ msgid "Input the username or email address you used at signup"
msgstr "Masukkan nama pengguna atau alamat email yang Anda gunakan saat mendaftar"
#: src/view/com/auth/create/Step2.tsx:271
-msgid "Input the verification code we have texted to you"
-msgstr ""
+#~ msgid "Input the verification code we have texted to you"
+#~ msgstr ""
#: src/view/com/modals/Waitlist.tsx:90
msgid "Input your email to get on the Bluesky waitlist"
@@ -1935,11 +1995,11 @@ msgstr "Masukkan email Anda untuk masuk ke daftar tunggu Bluesky"
msgid "Input your password"
msgstr "Masukkan kata sandi Anda"
-#: src/view/com/auth/create/Step3.tsx:42
+#: src/view/com/auth/create/Step2.tsx:80
msgid "Input your user handle"
msgstr "Masukkan handle pengguna Anda"
-#: src/view/com/post-thread/PostThreadItem.tsx:225
+#: src/view/com/post-thread/PostThreadItem.tsx:226
msgid "Invalid or unsupported post record"
msgstr "Catatan posting tidak valid atau tidak didukung"
@@ -1955,12 +2015,12 @@ msgstr "Username atau kata sandi salah"
msgid "Invite a Friend"
msgstr "Undang Teman"
-#: src/view/com/auth/create/Step1.tsx:144
-#: src/view/com/auth/create/Step1.tsx:153
+#: src/view/com/auth/create/Step1.tsx:148
+#: src/view/com/auth/create/Step1.tsx:157
msgid "Invite code"
msgstr "Kode Undangan"
-#: src/view/com/auth/create/state.ts:199
+#: src/view/com/auth/create/state.ts:158
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."
@@ -1981,6 +2041,7 @@ msgid "It shows posts from the people you follow as they happen."
msgstr ""
#: src/view/com/auth/HomeLoggedOutCTA.tsx:99
+#: src/view/com/auth/SplashScreen.web.tsx:138
msgid "Jobs"
msgstr "Karir"
@@ -1988,8 +2049,8 @@ msgstr "Karir"
msgid "Join the waitlist"
msgstr "Gabung ke daftar tunggu"
-#: src/view/com/auth/create/Step1.tsx:170
#: src/view/com/auth/create/Step1.tsx:174
+#: src/view/com/auth/create/Step1.tsx:178
msgid "Join the waitlist."
msgstr "Gabung ke daftar tunggu."
@@ -2040,7 +2101,7 @@ msgstr "Pelajari Lebih Lanjut"
msgid "Learn more about this warning"
msgstr "Pelajari lebih lanjut tentang peringatan ini"
-#: src/view/screens/Moderation.tsx:243
+#: src/view/screens/Moderation.tsx:262
msgid "Learn more about what is public on Bluesky."
msgstr "Pelajari lebih lanjut tentang apa yang publik di Bluesky."
@@ -2096,7 +2157,7 @@ msgstr "Disukai oleh"
msgid "Liked By"
msgstr ""
-#: src/view/com/feeds/FeedSourceCard.tsx:277
+#: src/view/com/feeds/FeedSourceCard.tsx:279
msgid "Liked by {0} {1}"
msgstr "Disukai oleh {0} {1}"
@@ -2124,7 +2185,7 @@ msgstr "menyukai postingan Anda"
msgid "Likes"
msgstr "Suka"
-#: src/view/com/post-thread/PostThreadItem.tsx:182
+#: src/view/com/post-thread/PostThreadItem.tsx:183
msgid "Likes on this post"
msgstr "Suka pada postingan ini"
@@ -2136,19 +2197,19 @@ msgstr "Daftar"
msgid "List Avatar"
msgstr "Avatar Daftar"
-#: src/view/screens/ProfileList.tsx:323
+#: src/view/screens/ProfileList.tsx:324
msgid "List blocked"
msgstr "Daftar diblokir"
-#: src/view/com/feeds/FeedSourceCard.tsx:231
+#: src/view/com/feeds/FeedSourceCard.tsx:233
msgid "List by {0}"
msgstr "Daftar oleh {0}"
-#: src/view/screens/ProfileList.tsx:377
+#: src/view/screens/ProfileList.tsx:378
msgid "List deleted"
msgstr "Daftar dihapus"
-#: src/view/screens/ProfileList.tsx:282
+#: src/view/screens/ProfileList.tsx:283
msgid "List muted"
msgstr "Daftar dibisukan"
@@ -2156,11 +2217,11 @@ msgstr "Daftar dibisukan"
msgid "List Name"
msgstr "Nama Daftar"
-#: src/view/screens/ProfileList.tsx:342
+#: src/view/screens/ProfileList.tsx:343
msgid "List unblocked"
msgstr "Daftar tidak diblokir"
-#: src/view/screens/ProfileList.tsx:301
+#: src/view/screens/ProfileList.tsx:302
msgid "List unmuted"
msgstr "Daftar tidak dibisukan"
@@ -2172,8 +2233,8 @@ msgstr "Daftar tidak dibisukan"
msgid "Lists"
msgstr "Daftar"
-#: src/view/com/post-thread/PostThread.tsx:276
-#: src/view/com/post-thread/PostThread.tsx:284
+#: src/view/com/post-thread/PostThread.tsx:333
+#: src/view/com/post-thread/PostThread.tsx:341
msgid "Load more posts"
msgstr "Muat postingan lainnya"
@@ -2181,10 +2242,10 @@ msgstr "Muat postingan lainnya"
msgid "Load new notifications"
msgstr "Muat notifikasi baru"
-#: src/view/com/feeds/FeedPage.tsx:190
+#: src/view/com/feeds/FeedPage.tsx:115
#: src/view/screens/Profile.tsx:440
-#: src/view/screens/ProfileFeed.tsx:494
-#: src/view/screens/ProfileList.tsx:680
+#: src/view/screens/ProfileFeed.tsx:495
+#: src/view/screens/ProfileList.tsx:681
msgid "Load new posts"
msgstr "Muat postingan baru"
@@ -2207,7 +2268,7 @@ msgstr "Catatan"
msgid "Log out"
msgstr ""
-#: src/view/screens/Moderation.tsx:136
+#: src/view/screens/Moderation.tsx:155
msgid "Logged-out visibility"
msgstr "Visibilitas pengguna yang tidak login"
@@ -2222,6 +2283,18 @@ msgstr "Masuk ke akun yang tidak ada di daftar"
msgid "Make sure this is where you intend to go!"
msgstr "Pastikan ini adalah website yang Anda tuju!"
+#: src/components/dialogs/MutedWords.tsx:71
+msgid "Manage your muted words and tags"
+msgstr ""
+
+#: src/view/com/auth/create/Step2.tsx:118
+msgid "May not be longer than 253 characters"
+msgstr ""
+
+#: src/view/com/auth/create/Step2.tsx:109
+msgid "May only contain letters and numbers"
+msgstr ""
+
#: src/view/screens/Profile.tsx:182
msgid "Media"
msgstr "Media"
@@ -2235,7 +2308,7 @@ msgid "Mentioned users"
msgstr "Pengguna yang disebutkan"
#: src/view/com/util/ViewHeader.tsx:81
-#: src/view/screens/Search/Search.tsx:623
+#: src/view/screens/Search/Search.tsx:646
msgid "Menu"
msgstr "Menu"
@@ -2247,7 +2320,7 @@ msgid "Message from server: {0}"
msgstr "Pesan dari server: {0}"
#: src/Navigation.tsx:115
-#: src/view/screens/Moderation.tsx:64
+#: src/view/screens/Moderation.tsx:66
#: src/view/screens/Settings/index.tsx:625
#: src/view/shell/desktop/LeftNav.tsx:397
#: src/view/shell/Drawer.tsx:511
@@ -2255,7 +2328,7 @@ msgstr "Pesan dari server: {0}"
msgid "Moderation"
msgstr "Moderasi"
-#: src/view/com/lists/ListCard.tsx:92
+#: src/view/com/lists/ListCard.tsx:93
#: src/view/com/modals/UserAddRemoveLists.tsx:206
msgid "Moderation list by {0}"
msgstr "Daftar moderasi oleh {0}"
@@ -2264,7 +2337,7 @@ msgstr "Daftar moderasi oleh {0}"
msgid "Moderation list by <0/>"
msgstr "Daftar moderasi oleh <0/>"
-#: src/view/com/lists/ListCard.tsx:90
+#: src/view/com/lists/ListCard.tsx:91
#: src/view/com/modals/UserAddRemoveLists.tsx:204
#: src/view/screens/ProfileList.tsx:772
msgid "Moderation list by you"
@@ -2278,7 +2351,7 @@ msgstr "Daftar moderasi dibuat"
msgid "Moderation list updated"
msgstr "Daftar moderasi diperbarui"
-#: src/view/screens/Moderation.tsx:95
+#: src/view/screens/Moderation.tsx:114
msgid "Moderation lists"
msgstr "Daftar moderasi"
@@ -2299,13 +2372,13 @@ msgstr "Moderator telah memilih untuk menetapkan peringatan umum pada konten."
msgid "More feeds"
msgstr "Feed lainnya"
-#: src/view/com/profile/ProfileHeader.tsx:522
-#: src/view/screens/ProfileFeed.tsx:362
-#: src/view/screens/ProfileList.tsx:616
+#: src/view/com/profile/ProfileHeader.tsx:523
+#: src/view/screens/ProfileFeed.tsx:363
+#: src/view/screens/ProfileList.tsx:617
msgid "More options"
msgstr "Pilihan lainnya"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:270
+#: src/view/com/util/forms/PostDropdownBtn.tsx:315
msgid "More post options"
msgstr "Opsi posting lainnya"
@@ -2313,35 +2386,71 @@ msgstr "Opsi posting lainnya"
msgid "Most-liked replies first"
msgstr "Balasan yang paling disukai lebih dulu"
-#: src/view/com/profile/ProfileHeader.tsx:326
+#: src/view/com/auth/create/Step2.tsx:122
+msgid "Must be at least 3 characters"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:253
+msgid "Mute"
+msgstr ""
+
+#: src/components/TagMenu/index.web.tsx:91
+msgid "Mute {truncatedTag}"
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:327
msgid "Mute Account"
msgstr "Bisukan Akun"
-#: src/view/screens/ProfileList.tsx:543
+#: src/view/screens/ProfileList.tsx:544
msgid "Mute accounts"
msgstr "Bisukan akun"
-#: src/view/screens/ProfileList.tsx:490
+#: src/components/TagMenu/index.tsx:211
+msgid "Mute all {tag} posts"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:131
+msgid "Mute in tags only"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:116
+msgid "Mute in text & tags"
+msgstr ""
+
+#: src/view/screens/ProfileList.tsx:491
msgid "Mute list"
msgstr "Daftar akun yang dibisukan"
-#: src/view/screens/ProfileList.tsx:274
+#: src/view/screens/ProfileList.tsx:275
msgid "Mute these accounts?"
msgstr "Bisukan akun ini?"
-#: src/view/screens/ProfileList.tsx:278
+#: src/view/screens/ProfileList.tsx:279
msgid "Mute this List"
msgstr "Bisukan Daftar ini"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:171
+#: src/components/dialogs/MutedWords.tsx:109
+msgid "Mute this word in post text and tags"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:124
+msgid "Mute this word in tags only"
+msgstr ""
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:202
msgid "Mute thread"
msgstr "Bisukan utasan"
-#: src/view/com/lists/ListCard.tsx:101
+#: src/view/com/util/forms/PostDropdownBtn.tsx:216
+msgid "Mute words & tags"
+msgstr ""
+
+#: src/view/com/lists/ListCard.tsx:102
msgid "Muted"
msgstr "Dibisukan"
-#: src/view/screens/Moderation.tsx:109
+#: src/view/screens/Moderation.tsx:128
msgid "Muted accounts"
msgstr "Akun yang dibisukan"
@@ -2354,7 +2463,11 @@ msgstr "Akun yang Dibisukan"
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:276
+#: src/view/screens/Moderation.tsx:100
+msgid "Muted words & tags"
+msgstr ""
+
+#: src/view/screens/ProfileList.tsx:277
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."
@@ -2362,7 +2475,7 @@ msgstr "Pembisuan akun bersifat privat. Akun yang dibisukan tetap dapat berinter
msgid "My Birthday"
msgstr "Tanggal Lahir Saya"
-#: src/view/screens/Feeds.tsx:419
+#: src/view/screens/Feeds.tsx:663
msgid "My Feeds"
msgstr "Feed Saya"
@@ -2417,6 +2530,10 @@ msgstr "Tidak akan lagi kehilangan akses ke data dan pengikut Anda."
msgid "Never lose access to your followers or data."
msgstr ""
+#: src/components/dialogs/MutedWords.tsx:244
+msgid "Nevermind"
+msgstr ""
+
#: src/view/screens/Lists.tsx:76
msgctxt "action"
msgid "New"
@@ -2438,17 +2555,17 @@ msgstr "Kata sandi baru"
msgid "New Password"
msgstr ""
-#: src/view/com/feeds/FeedPage.tsx:201
+#: src/view/com/feeds/FeedPage.tsx:126
msgctxt "action"
msgid "New post"
msgstr "Postingan baru"
-#: src/view/screens/Feeds.tsx:581
+#: src/view/screens/Feeds.tsx:555
#: src/view/screens/Notifications.tsx:168
#: src/view/screens/Profile.tsx:382
-#: src/view/screens/ProfileFeed.tsx:432
-#: src/view/screens/ProfileList.tsx:195
-#: src/view/screens/ProfileList.tsx:223
+#: src/view/screens/ProfileFeed.tsx:433
+#: src/view/screens/ProfileList.tsx:196
+#: src/view/screens/ProfileList.tsx:224
#: src/view/shell/desktop/LeftNav.tsx:248
msgid "New post"
msgstr "Postingan baru"
@@ -2473,7 +2590,7 @@ msgstr "Balasan terbaru terlebih dahulu"
msgid "News"
msgstr ""
-#: src/view/com/auth/create/CreateAccount.tsx:161
+#: src/view/com/auth/create/CreateAccount.tsx:172
#: src/view/com/auth/login/ForgotPasswordForm.tsx:182
#: src/view/com/auth/login/ForgotPasswordForm.tsx:192
#: src/view/com/auth/login/LoginForm.tsx:291
@@ -2494,10 +2611,10 @@ msgstr "Selanjutnya"
msgid "Next image"
msgstr "Gambar berikutnya"
-#: 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/PreferencesFollowingFeed.tsx:129
+#: src/view/screens/PreferencesFollowingFeed.tsx:200
+#: src/view/screens/PreferencesFollowingFeed.tsx:235
+#: src/view/screens/PreferencesFollowingFeed.tsx:272
#: src/view/screens/PreferencesThreads.tsx:106
#: src/view/screens/PreferencesThreads.tsx:129
msgid "No"
@@ -2508,7 +2625,7 @@ msgstr "Tidak"
msgid "No description"
msgstr "Tidak ada deskripsi"
-#: src/view/com/profile/ProfileHeader.tsx:169
+#: src/view/com/profile/ProfileHeader.tsx:170
msgid "No longer following {0}"
msgstr "Tidak lagi mengikuti {0}"
@@ -2521,13 +2638,13 @@ msgstr "Belum ada notifikasi!"
msgid "No result"
msgstr "Tidak ada hasil"
-#: src/view/screens/Feeds.tsx:524
+#: src/view/screens/Feeds.tsx:495
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:280
-#: src/view/screens/Search/Search.tsx:308
+#: src/view/screens/Search/Search.tsx:281
+#: src/view/screens/Search/Search.tsx:309
msgid "No results found for {query}"
msgstr "Tidak ada hasil ditemukan untuk {query}"
@@ -2553,11 +2670,11 @@ msgstr "Tidak ditemukan"
msgid "Not right now"
msgstr "Jangan sekarang"
-#: src/view/screens/Moderation.tsx:233
+#: src/view/screens/Moderation.tsx:252
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/Navigation.tsx:447
+#: src/Navigation.tsx:450
#: src/view/screens/Notifications.tsx:124
#: src/view/screens/Notifications.tsx:148
#: src/view/shell/bottom-bar/BottomBar.tsx:205
@@ -2591,7 +2708,7 @@ msgstr "Balasan terlama terlebih dahulu"
msgid "Onboarding reset"
msgstr "Atur ulang orientasi"
-#: src/view/com/composer/Composer.tsx:375
+#: src/view/com/composer/Composer.tsx:382
msgid "One or more images is missing alt text."
msgstr "Satu atau lebih gambar belum ada teks alt."
@@ -2608,8 +2725,12 @@ msgstr "Uups!"
msgid "Open"
msgstr ""
-#: src/view/com/composer/Composer.tsx:470
-#: src/view/com/composer/Composer.tsx:471
+#: src/view/screens/Moderation.tsx:75
+msgid "Open content filtering settings"
+msgstr ""
+
+#: src/view/com/composer/Composer.tsx:477
+#: src/view/com/composer/Composer.tsx:478
msgid "Open emoji picker"
msgstr "Buka pemilih emoji"
@@ -2617,7 +2738,11 @@ msgstr "Buka pemilih emoji"
msgid "Open links with in-app browser"
msgstr "Buka tautan dengan browser dalam aplikasi"
-#: src/view/com/pager/FeedsTabBarMobile.tsx:87
+#: src/view/screens/Moderation.tsx:92
+msgid "Open muted words settings"
+msgstr ""
+
+#: src/view/com/home/HomeHeaderLayoutMobile.tsx:49
msgid "Open navigation"
msgstr "Buka navigasi"
@@ -2653,7 +2778,7 @@ msgstr "Membuka pengaturan bahasa yang dapat dikonfigurasi"
msgid "Opens device photo gallery"
msgstr "Membuka galeri foto perangkat"
-#: src/view/com/profile/ProfileHeader.tsx:419
+#: src/view/com/profile/ProfileHeader.tsx:420
msgid "Opens editor for profile display name, avatar, background image, and description"
msgstr "Membuka editor untuk nama tampilan profil, avatar, gambar latar belakang, dan deskripsi"
@@ -2661,11 +2786,11 @@ msgstr "Membuka editor untuk nama tampilan profil, avatar, gambar latar belakang
msgid "Opens external embeds settings"
msgstr "Membuka pengaturan penyematan eksternal"
-#: src/view/com/profile/ProfileHeader.tsx:574
+#: src/view/com/profile/ProfileHeader.tsx:575
msgid "Opens followers list"
msgstr "Membuka daftar pengikut"
-#: src/view/com/profile/ProfileHeader.tsx:593
+#: src/view/com/profile/ProfileHeader.tsx:594
msgid "Opens following list"
msgstr "Membuka daftar mengikuti"
@@ -2693,7 +2818,8 @@ msgstr "Buka pengaturan moderasi"
msgid "Opens password reset form"
msgstr "Membuka formulir pengaturan ulang kata sandi"
-#: src/view/screens/Feeds.tsx:357
+#: src/view/com/home/HomeHeaderLayout.web.tsx:60
+#: src/view/screens/Feeds.tsx:356
msgid "Opens screen to edit Saved Feeds"
msgstr "Membuka layar untuk mengedit Umpan Tersimpan"
@@ -2753,8 +2879,8 @@ msgstr "Halaman tidak ditemukan"
msgid "Page Not Found"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:210
-#: src/view/com/auth/create/Step1.tsx:220
+#: src/view/com/auth/create/Step1.tsx:214
+#: src/view/com/auth/create/Step1.tsx:224
#: src/view/com/auth/login/LoginForm.tsx:226
#: src/view/com/auth/login/SetNewPasswordForm.tsx:161
#: src/view/com/modals/DeleteAccount.tsx:202
@@ -2790,15 +2916,15 @@ msgid "Pets"
msgstr ""
#: src/view/com/auth/create/Step2.tsx:183
-msgid "Phone number"
-msgstr ""
+#~ msgid "Phone number"
+#~ msgstr ""
#: src/view/com/modals/SelfLabel.tsx:121
msgid "Pictures meant for adults."
msgstr "Gambar yang ditujukan untuk orang dewasa."
-#: src/view/screens/ProfileFeed.tsx:353
-#: src/view/screens/ProfileList.tsx:580
+#: src/view/screens/ProfileFeed.tsx:354
+#: src/view/screens/ProfileList.tsx:581
msgid "Pin to home"
msgstr "Sematkan ke beranda"
@@ -2819,14 +2945,18 @@ msgstr "Putar Video"
msgid "Plays the GIF"
msgstr "Putar GIF"
-#: src/view/com/auth/create/state.ts:177
+#: src/view/com/auth/create/state.ts:124
msgid "Please choose your handle."
msgstr "Silakan pilih handle Anda."
-#: src/view/com/auth/create/state.ts:160
+#: src/view/com/auth/create/state.ts:117
msgid "Please choose your password."
msgstr "Masukkan kata sandi Anda."
+#: src/view/com/auth/create/state.ts:131
+msgid "Please complete the verification captcha."
+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 "Harap konfirmasi email Anda sebelum mengubahnya. Ini adalah persyaratan sementara selama alat pembaruan email ditambahkan, dan akan segera dihapus."
@@ -2836,22 +2966,22 @@ msgid "Please enter a name for your app password. All spaces is not allowed."
msgstr "Masukkan nama untuk kata sandi aplikasi Anda. Semua spasi tidak diperbolehkan."
#: src/view/com/auth/create/Step2.tsx:206
-msgid "Please enter a phone number that can receive SMS text messages."
-msgstr ""
+#~ msgid "Please enter a phone number that can receive SMS text messages."
+#~ msgstr ""
#: src/view/com/modals/AddAppPasswords.tsx:145
msgid "Please enter a unique name for this App Password or use our randomly generated one."
msgstr "Masukkan nama unik untuk Kata Sandi Aplikasi ini atau gunakan nama yang dibuat secara acak."
#: src/view/com/auth/create/state.ts:170
-msgid "Please enter the code you received by SMS."
-msgstr ""
+#~ msgid "Please enter the code you received by SMS."
+#~ msgstr ""
#: src/view/com/auth/create/Step2.tsx:282
-msgid "Please enter the verification code sent to {phoneNumberFormatted}."
-msgstr ""
+#~ msgid "Please enter the verification code sent to {phoneNumberFormatted}."
+#~ msgstr ""
-#: src/view/com/auth/create/state.ts:146
+#: src/view/com/auth/create/state.ts:103
msgid "Please enter your email."
msgstr "Masukkan email Anda."
@@ -2871,7 +3001,7 @@ msgstr "Mohon beri tahu kami mengapa menurut Anda peringatan konten ini salah di
msgid "Please Verify Your Email"
msgstr "Mohon Verifikasi Email Anda"
-#: src/view/com/composer/Composer.tsx:215
+#: src/view/com/composer/Composer.tsx:222
msgid "Please wait for your link card to finish loading"
msgstr "Harap tunggu hingga kartu tautan Anda selesai dimuat"
@@ -2883,13 +3013,13 @@ msgstr ""
msgid "Porn"
msgstr "Pornografi"
-#: src/view/com/composer/Composer.tsx:350
-#: src/view/com/composer/Composer.tsx:358
+#: src/view/com/composer/Composer.tsx:357
+#: src/view/com/composer/Composer.tsx:365
msgctxt "action"
msgid "Post"
msgstr "Posting"
-#: src/view/com/post-thread/PostThread.tsx:246
+#: src/view/com/post-thread/PostThread.tsx:303
msgctxt "description"
msgid "Post"
msgstr "Posting"
@@ -2897,7 +3027,7 @@ msgstr "Posting"
#~ msgid "Post"
#~ msgstr "Posting"
-#: src/view/com/post-thread/PostThreadItem.tsx:174
+#: src/view/com/post-thread/PostThreadItem.tsx:175
msgid "Post by {0}"
msgstr "Postingan oleh {0}"
@@ -2907,11 +3037,11 @@ msgstr "Postingan oleh {0}"
msgid "Post by @{0}"
msgstr "Postingan oleh @{0}"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:84
+#: src/view/com/util/forms/PostDropdownBtn.tsx:90
msgid "Post deleted"
msgstr "Postingan dihapus"
-#: src/view/com/post-thread/PostThread.tsx:398
+#: src/view/com/post-thread/PostThread.tsx:462
msgid "Post hidden"
msgstr "Postingan disembunyikan"
@@ -2923,14 +3053,22 @@ msgstr "Bahasa postingan"
msgid "Post Languages"
msgstr "Bahasa Postingan"
-#: src/view/com/post-thread/PostThread.tsx:450
+#: src/view/com/post-thread/PostThread.tsx:514
msgid "Post not found"
msgstr "Postingan tidak ditemukan"
+#: src/components/TagMenu/index.tsx:257
+msgid "posts"
+msgstr ""
+
#: src/view/screens/Profile.tsx:180
msgid "Posts"
msgstr "Postingan"
+#: src/components/dialogs/MutedWords.tsx:77
+msgid "Posts can be muted based on their text, their tags, or both."
+msgstr ""
+
#: src/view/com/posts/FeedErrorMessage.tsx:64
msgid "Posts hidden"
msgstr "Postingan disembunyikan"
@@ -2952,7 +3090,7 @@ msgid "Prioritize Your Follows"
msgstr "Prioritaskan Pengikut Anda"
#: src/view/screens/Settings/index.tsx:632
-#: src/view/shell/desktop/RightNav.tsx:80
+#: src/view/shell/desktop/RightNav.tsx:72
msgid "Privacy"
msgstr "Privasi"
@@ -2995,11 +3133,11 @@ msgstr "Daftar publik yang dapat dibagikan oleh pengguna untuk dibisukan atau di
msgid "Public, shareable lists which can drive feeds."
msgstr "Publik, daftar yang dapat dibagikan dan dapat berimbas ke feed."
-#: src/view/com/composer/Composer.tsx:335
+#: src/view/com/composer/Composer.tsx:342
msgid "Publish post"
msgstr "Publikasikan postingan"
-#: src/view/com/composer/Composer.tsx:335
+#: src/view/com/composer/Composer.tsx:342
msgid "Publish reply"
msgstr "Publikasikan balasan"
@@ -3036,6 +3174,7 @@ msgstr "Feed Direkomendasikan"
msgid "Recommended Users"
msgstr "Pengguna Direkomendasikan"
+#: src/components/dialogs/MutedWords.tsx:249
#: src/view/com/modals/ListAddRemoveUsers.tsx:264
#: src/view/com/modals/SelfLabel.tsx:83
#: src/view/com/modals/UserAddRemoveLists.tsx:219
@@ -3044,7 +3183,7 @@ msgstr "Pengguna Direkomendasikan"
msgid "Remove"
msgstr "Hapus"
-#: src/view/com/feeds/FeedSourceCard.tsx:106
+#: src/view/com/feeds/FeedSourceCard.tsx:108
msgid "Remove {0} from my feeds?"
msgstr "Hapus {0} dari daftar feed saya?"
@@ -3057,11 +3196,11 @@ msgstr "Hapus akun"
msgid "Remove feed"
msgstr "Hapus feed"
-#: src/view/com/feeds/FeedSourceCard.tsx:105
-#: src/view/com/feeds/FeedSourceCard.tsx:167
-#: src/view/com/feeds/FeedSourceCard.tsx:172
-#: src/view/com/feeds/FeedSourceCard.tsx:243
-#: src/view/screens/ProfileFeed.tsx:272
+#: src/view/com/feeds/FeedSourceCard.tsx:107
+#: src/view/com/feeds/FeedSourceCard.tsx:169
+#: src/view/com/feeds/FeedSourceCard.tsx:174
+#: src/view/com/feeds/FeedSourceCard.tsx:245
+#: src/view/screens/ProfileFeed.tsx:273
msgid "Remove from my feeds"
msgstr "Hapus dari feed saya"
@@ -3073,11 +3212,15 @@ msgstr "Hapus gambar"
msgid "Remove image preview"
msgstr "Hapus pratinjau gambar"
+#: src/components/dialogs/MutedWords.tsx:294
+msgid "Remove mute word from your list"
+msgstr ""
+
#: src/view/com/modals/Repost.tsx:47
msgid "Remove repost"
msgstr "Hapus postingan ulang"
-#: src/view/com/feeds/FeedSourceCard.tsx:173
+#: src/view/com/feeds/FeedSourceCard.tsx:175
msgid "Remove this feed from my feeds?"
msgstr "Hapus feed ini dari feed saya?"
@@ -3090,8 +3233,8 @@ msgstr "Hapus feed ini dari feed tersimpan Anda?"
msgid "Removed from list"
msgstr "Dihapus dari daftar"
-#: src/view/com/feeds/FeedSourceCard.tsx:111
-#: src/view/com/feeds/FeedSourceCard.tsx:178
+#: src/view/com/feeds/FeedSourceCard.tsx:113
+#: src/view/com/feeds/FeedSourceCard.tsx:180
msgid "Removed from my feeds"
msgstr "Dihapus dari feed saya"
@@ -3107,16 +3250,16 @@ msgstr "Balasan"
msgid "Replies to this thread are disabled"
msgstr "Balasan ke utas ini dinonaktifkan"
-#: src/view/com/composer/Composer.tsx:348
+#: src/view/com/composer/Composer.tsx:355
msgctxt "action"
msgid "Reply"
msgstr "Balas"
-#: src/view/screens/PreferencesHomeFeed.tsx:144
+#: src/view/screens/PreferencesFollowingFeed.tsx:144
msgid "Reply Filters"
msgstr "Penyaring Balasan"
-#: src/view/com/post/Post.tsx:166
+#: src/view/com/post/Post.tsx:167
#: src/view/com/posts/FeedItem.tsx:287
msgctxt "description"
msgid "Reply to <0/>"
@@ -3126,20 +3269,20 @@ msgstr "Balas ke <0/>"
msgid "Report {collectionName}"
msgstr "Laporkan {collectionName}"
-#: src/view/com/profile/ProfileHeader.tsx:360
+#: src/view/com/profile/ProfileHeader.tsx:361
msgid "Report Account"
msgstr "Laporkan Akun"
-#: src/view/screens/ProfileFeed.tsx:292
+#: src/view/screens/ProfileFeed.tsx:293
msgid "Report feed"
msgstr "Laporkan feed"
-#: src/view/screens/ProfileList.tsx:458
+#: src/view/screens/ProfileList.tsx:459
msgid "Report List"
msgstr "Laporkan Daftar"
#: src/view/com/modals/report/SendReportButton.tsx:37
-#: src/view/com/util/forms/PostDropdownBtn.tsx:210
+#: src/view/com/util/forms/PostDropdownBtn.tsx:255
msgid "Report post"
msgstr "Laporkan postingan"
@@ -3184,7 +3327,7 @@ msgstr "Diposting ulang oleh <0/>"
msgid "reposted your post"
msgstr "posting ulang posting Anda"
-#: src/view/com/post-thread/PostThreadItem.tsx:187
+#: src/view/com/post-thread/PostThreadItem.tsx:188
msgid "Reposts of this post"
msgstr "Posting ulang postingan ini"
@@ -3194,8 +3337,8 @@ msgid "Request Change"
msgstr "Ajukan Perubahan"
#: src/view/com/auth/create/Step2.tsx:219
-msgid "Request code"
-msgstr ""
+#~ msgid "Request code"
+#~ msgstr ""
#: src/view/com/modals/ChangePassword.tsx:239
#: src/view/com/modals/ChangePassword.tsx:241
@@ -3206,7 +3349,7 @@ msgstr ""
msgid "Require alt text before posting"
msgstr "Memerlukan teks alt sebelum memposting"
-#: src/view/com/auth/create/Step1.tsx:149
+#: src/view/com/auth/create/Step1.tsx:153
msgid "Required for this provider"
msgstr "Diwajibkan untuk provider ini"
@@ -3258,9 +3401,8 @@ msgstr "Coba kembali tindakan terakhir, yang gagal"
#: src/screens/Onboarding/StepInterests/index.tsx:221
#: src/screens/Onboarding/StepInterests/index.tsx:224
-#: src/view/com/auth/create/CreateAccount.tsx:170
-#: src/view/com/auth/create/CreateAccount.tsx:175
-#: src/view/com/auth/create/Step2.tsx:255
+#: src/view/com/auth/create/CreateAccount.tsx:181
+#: src/view/com/auth/create/CreateAccount.tsx:186
#: src/view/com/auth/login/LoginForm.tsx:268
#: src/view/com/auth/login/LoginForm.tsx:271
#: src/view/com/util/error/ErrorMessage.tsx:55
@@ -3269,16 +3411,16 @@ msgid "Retry"
msgstr "Ulangi"
#: src/view/com/auth/create/Step2.tsx:247
-msgid "Retry."
-msgstr ""
+#~ msgid "Retry."
+#~ msgstr ""
#: src/view/screens/ProfileList.tsx:898
msgid "Return to previous page"
msgstr "Kembali ke halaman sebelumnya"
#: src/view/shell/desktop/RightNav.tsx:55
-msgid "SANDBOX. Posts and accounts are not permanent."
-msgstr "SANDBOX. Postingan dan akun tidak bersifat permanen."
+#~ msgid "SANDBOX. Posts and accounts are not permanent."
+#~ msgstr "SANDBOX. Postingan dan akun tidak bersifat permanen."
#: src/view/com/lightbox/Lightbox.tsx:132
#: src/view/com/modals/CreateOrEditList.tsx:345
@@ -3291,7 +3433,7 @@ msgstr "Simpan"
#: src/view/com/modals/ChangeHandle.tsx:173
#: src/view/com/modals/CreateOrEditList.tsx:337
#: src/view/com/modals/EditProfile.tsx:224
-#: src/view/screens/ProfileFeed.tsx:345
+#: src/view/screens/ProfileFeed.tsx:346
msgid "Save"
msgstr "Simpan"
@@ -3331,14 +3473,14 @@ msgstr ""
msgid "Scroll to top"
msgstr "Gulir ke atas"
-#: src/Navigation.tsx:437
+#: src/Navigation.tsx:440
#: src/view/com/auth/LoggedOut.tsx:122
#: src/view/com/modals/ListAddRemoveUsers.tsx:75
#: src/view/com/util/forms/SearchInput.tsx:67
#: src/view/com/util/forms/SearchInput.tsx:79
-#: src/view/screens/Search/Search.tsx:418
-#: src/view/screens/Search/Search.tsx:645
-#: src/view/screens/Search/Search.tsx:663
+#: src/view/screens/Search/Search.tsx:419
+#: src/view/screens/Search/Search.tsx:668
+#: src/view/screens/Search/Search.tsx:686
#: src/view/shell/bottom-bar/BottomBar.tsx:159
#: src/view/shell/desktop/LeftNav.tsx:324
#: src/view/shell/desktop/Search.tsx:214
@@ -3348,11 +3490,19 @@ msgstr "Gulir ke atas"
msgid "Search"
msgstr "Cari"
-#: src/view/screens/Search/Search.tsx:712
+#: src/view/screens/Search/Search.tsx:735
#: src/view/shell/desktop/Search.tsx:255
msgid "Search for \"{query}\""
msgstr ""
+#: src/components/TagMenu/index.tsx:145
+msgid "Search for all posts by @{authorHandle} with tag {tag}"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:90
+msgid "Search for all posts with tag {tag}"
+msgstr ""
+
#: src/view/com/auth/LoggedOut.tsx:104
#: src/view/com/auth/LoggedOut.tsx:105
#: src/view/com/modals/ListAddRemoveUsers.tsx:70
@@ -3363,6 +3513,22 @@ msgstr "Cari pengguna"
msgid "Security Step Required"
msgstr "Langkah Keamanan Diperlukan"
+#: src/components/TagMenu/index.web.tsx:50
+msgid "See {truncatedTag} posts"
+msgstr ""
+
+#: src/components/TagMenu/index.web.tsx:67
+msgid "See {truncatedTag} posts by user"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:128
+msgid "See <0>{tag}0> posts"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:189
+msgid "See <0>{tag}0> posts by this user"
+msgstr ""
+
#: src/view/screens/SavedFeeds.tsx:163
msgid "See this guide"
msgstr "Lihat panduan ini"
@@ -3387,7 +3553,7 @@ msgstr "Pilih dari akun yang sudah ada"
msgid "Select option {i} of {numItems}"
msgstr "Pilih opsi {i} dari {numItems}"
-#: src/view/com/auth/create/Step1.tsx:99
+#: src/view/com/auth/create/Step1.tsx:103
#: src/view/com/auth/login/LoginForm.tsx:150
msgid "Select service"
msgstr "Pilih layanan"
@@ -3404,7 +3570,7 @@ msgstr ""
#~ msgid "Select the types of content that you want to see (or not see), and we'll handle the rest."
#~ msgstr ""
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:90
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:96
msgid "Select topical feeds to follow from the list below"
msgstr ""
@@ -3425,8 +3591,8 @@ msgid "Select your interests from the options below"
msgstr ""
#: src/view/com/auth/create/Step2.tsx:155
-msgid "Select your phone's country"
-msgstr ""
+#~ msgid "Select your phone's country"
+#~ msgstr ""
#: src/view/screens/LanguageSettings.tsx:190
msgid "Select your preferred language for translations in your feed."
@@ -3508,19 +3674,19 @@ msgstr ""
msgid "Set new password"
msgstr "Buat kata sandi baru"
-#: src/view/com/auth/create/Step1.tsx:221
+#: src/view/com/auth/create/Step1.tsx:225
msgid "Set password"
msgstr "Atur kata sandi"
-#: src/view/screens/PreferencesHomeFeed.tsx:225
+#: src/view/screens/PreferencesFollowingFeed.tsx:225
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:122
+#: src/view/screens/PreferencesFollowingFeed.tsx:122
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:191
+#: src/view/screens/PreferencesFollowingFeed.tsx:191
msgid "Set this setting to \"No\" to hide all reposts from your feed."
msgstr "Pilih \"Tidak\" untuk menyembunyikan semua posting ulang dari feed Anda."
@@ -3529,8 +3695,12 @@ msgid "Set this setting to \"Yes\" to show replies in a threaded view. This is a
msgstr "Pilih \"Ya\" untuk menampilkan balasan dalam bentuk utasan. Ini merupakan fitur eksperimental."
#: 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 "Pilih \"Ya\" untuk menampilkan beberapa sampel dari feed tersimpan Anda pada feed mengikuti. Ini merupakan fitur eksperimental."
+#~ 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/PreferencesFollowingFeed.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/screens/Onboarding/Layout.tsx:50
msgid "Set up your account"
@@ -3552,7 +3722,7 @@ msgstr "Atur penyedia hosting untuk pengaturan ulang kata sandi"
#~ msgid "Sets hosting provider to {label}"
#~ msgstr "Atur penyedia hosting ke {label}"
-#: src/view/com/auth/create/Step1.tsx:100
+#: src/view/com/auth/create/Step1.tsx:104
#: src/view/com/auth/login/LoginForm.tsx:151
msgid "Sets server for the Bluesky client"
msgstr "Atur server untuk klien Bluesky"
@@ -3574,13 +3744,13 @@ msgctxt "action"
msgid "Share"
msgstr "Bagikan"
-#: src/view/com/profile/ProfileHeader.tsx:294
-#: src/view/com/util/forms/PostDropdownBtn.tsx:153
-#: src/view/screens/ProfileList.tsx:417
+#: src/view/com/profile/ProfileHeader.tsx:295
+#: src/view/com/util/forms/PostDropdownBtn.tsx:184
+#: src/view/screens/ProfileList.tsx:418
msgid "Share"
msgstr "Bagikan"
-#: src/view/screens/ProfileFeed.tsx:304
+#: src/view/screens/ProfileFeed.tsx:305
msgid "Share feed"
msgstr "Bagikan feed"
@@ -3592,7 +3762,7 @@ msgstr "Bagikan feed"
msgid "Show"
msgstr "Tampilkan"
-#: src/view/screens/PreferencesHomeFeed.tsx:68
+#: src/view/screens/PreferencesFollowingFeed.tsx:68
msgid "Show all replies"
msgstr "Tampilkan semua balasan"
@@ -3604,21 +3774,21 @@ msgstr "Tetap tampilkan"
msgid "Show embeds from {0}"
msgstr "Tampilkan embed dari {0}"
-#: src/view/com/profile/ProfileHeader.tsx:458
+#: src/view/com/profile/ProfileHeader.tsx:459
msgid "Show follows similar to {0}"
msgstr "Tampilkan berikut ini mirip dengan {0}"
-#: src/view/com/post-thread/PostThreadItem.tsx:539
-#: src/view/com/post/Post.tsx:197
+#: src/view/com/post-thread/PostThreadItem.tsx:538
+#: src/view/com/post/Post.tsx:198
#: src/view/com/posts/FeedItem.tsx:363
msgid "Show More"
msgstr "Tampilkan Lebih Lanjut"
-#: src/view/screens/PreferencesHomeFeed.tsx:258
+#: src/view/screens/PreferencesFollowingFeed.tsx:258
msgid "Show Posts from My Feeds"
msgstr "Tampilkan Postingan dari Feed Saya"
-#: src/view/screens/PreferencesHomeFeed.tsx:222
+#: src/view/screens/PreferencesFollowingFeed.tsx:222
msgid "Show Quote Posts"
msgstr "Tampilkan Kutipan Postingan"
@@ -3634,7 +3804,7 @@ msgstr ""
msgid "Show re-posts in Following feed"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:119
+#: src/view/screens/PreferencesFollowingFeed.tsx:119
msgid "Show Replies"
msgstr "Tampilkan Balasan"
@@ -3650,11 +3820,11 @@ msgstr ""
msgid "Show replies in Following feed"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:70
+#: src/view/screens/PreferencesFollowingFeed.tsx:70
msgid "Show replies with at least {value} {0}"
msgstr "Tampilkan balasan dengan setidaknya {value} {0}"
-#: src/view/screens/PreferencesHomeFeed.tsx:188
+#: src/view/screens/PreferencesFollowingFeed.tsx:188
msgid "Show Reposts"
msgstr "Tampilkan Posting Ulang"
@@ -3671,18 +3841,18 @@ msgstr "Tampilkan konten"
msgid "Show users"
msgstr "Tampilkan pengguna"
-#: src/view/com/profile/ProfileHeader.tsx:461
+#: src/view/com/profile/ProfileHeader.tsx:462
msgid "Shows a list of users similar to this user."
msgstr "Tampilkan daftar pengguna yang mirip dengan pengguna ini."
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:124
-#: src/view/com/profile/ProfileHeader.tsx:505
+#: src/view/com/profile/ProfileHeader.tsx:506
msgid "Shows posts from {0} in your feed"
msgstr "Tampilkan postingan dari {0} di feed Anda"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:70
#: src/view/com/auth/login/Login.tsx:98
-#: src/view/com/auth/SplashScreen.tsx:54
+#: src/view/com/auth/SplashScreen.tsx:79
#: src/view/shell/bottom-bar/BottomBar.tsx:285
#: src/view/shell/bottom-bar/BottomBar.tsx:286
#: src/view/shell/bottom-bar/BottomBar.tsx:288
@@ -3695,8 +3865,8 @@ 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
+#: src/view/com/auth/SplashScreen.tsx:82
+#: src/view/com/auth/SplashScreen.web.tsx:91
msgid "Sign In"
msgstr "Masuk"
@@ -3763,8 +3933,8 @@ msgid "Skip this flow"
msgstr ""
#: src/view/com/auth/create/Step2.tsx:82
-msgid "SMS verification"
-msgstr ""
+#~ msgid "SMS verification"
+#~ msgstr ""
#: src/screens/Onboarding/index.tsx:40
msgid "Software Dev"
@@ -3778,7 +3948,7 @@ msgstr ""
msgid "Something went wrong. Check your email and try again."
msgstr "Ada yang tidak beres. Periksa email Anda dan coba lagi."
-#: src/App.native.tsx:61
+#: src/App.native.tsx:63
msgid "Sorry! Your session expired. Please log in again."
msgstr "Maaf! Sesi Anda telah berakhir. Silakan masuk lagi."
@@ -3827,7 +3997,7 @@ msgstr "Storybook"
msgid "Submit"
msgstr "Kirim"
-#: src/view/screens/ProfileList.tsx:607
+#: src/view/screens/ProfileList.tsx:608
msgid "Subscribe"
msgstr "Langganan"
@@ -3836,11 +4006,11 @@ msgstr "Langganan"
msgid "Subscribe to the {0} feed"
msgstr ""
-#: src/view/screens/ProfileList.tsx:603
+#: src/view/screens/ProfileList.tsx:604
msgid "Subscribe to this list"
msgstr "Langganan ke daftar ini"
-#: src/view/screens/Search/Search.tsx:373
+#: src/view/screens/Search/Search.tsx:374
msgid "Suggested Follows"
msgstr "Saran untuk Diikuti"
@@ -3884,6 +4054,14 @@ msgstr "Sistem"
msgid "System log"
msgstr "Log sistem"
+#: src/components/dialogs/MutedWords.tsx:288
+msgid "tag"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:74
+msgid "Tag menu: {tag}"
+msgstr ""
+
#: src/view/com/modals/crop-image/CropImage.web.tsx:112
msgid "Tall"
msgstr "Tinggi"
@@ -3896,7 +4074,7 @@ msgstr "Ketuk untuk melihat sepenuhnya"
msgid "Tech"
msgstr ""
-#: src/view/shell/desktop/RightNav.tsx:89
+#: src/view/shell/desktop/RightNav.tsx:81
msgid "Terms"
msgstr "Ketentuan"
@@ -3907,12 +4085,20 @@ msgstr "Ketentuan"
msgid "Terms of Service"
msgstr "Ketentuan Layanan"
+#: src/components/dialogs/MutedWords.tsx:288
+msgid "text"
+msgstr ""
+
#: src/view/com/modals/AppealLabel.tsx:70
#: src/view/com/modals/report/InputIssueDetails.tsx:51
msgid "Text input field"
msgstr "Area input teks"
-#: src/view/com/profile/ProfileHeader.tsx:262
+#: src/view/com/auth/create/CreateAccount.tsx:94
+msgid "That handle is already taken."
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:263
msgid "The account will be able to interact with you after unblocking."
msgstr "Akun ini akan dapat berinteraksi dengan Anda setelah blokir dibuka."
@@ -3928,7 +4114,7 @@ msgstr "Kebijakan Hak Cipta telah dipindahkan ke <0/>"
msgid "The following steps will help customize your Bluesky experience."
msgstr ""
-#: src/view/com/post-thread/PostThread.tsx:453
+#: src/view/com/post-thread/PostThread.tsx:517
msgid "The post may have been deleted."
msgstr "Postingan mungkin telah dihapus."
@@ -3951,7 +4137,7 @@ msgstr "Ketentuan Layanan telah dipindahkan ke"
msgid "There are many feeds to try:"
msgstr ""
-#: src/view/screens/ProfileFeed.tsx:549
+#: src/view/screens/ProfileFeed.tsx:550
msgid "There was an an issue contacting the server, please check your internet connection and try again."
msgstr "Ada masalah saat menghubungi server, silakan periksa koneksi internet Anda dan coba lagi."
@@ -3959,12 +4145,12 @@ msgstr "Ada masalah saat menghubungi server, silakan periksa koneksi internet An
msgid "There was an an issue removing this feed. Please check your internet connection and try again."
msgstr "Ada masalah saat menghapus feed ini. Periksa koneksi internet Anda dan coba lagi."
-#: src/view/screens/ProfileFeed.tsx:209
+#: src/view/screens/ProfileFeed.tsx:210
msgid "There was an an issue updating your feeds, please check your internet connection and try again."
msgstr "Ada masalah saat memperbarui feed Anda, periksa koneksi internet Anda dan coba lagi."
-#: src/view/screens/ProfileFeed.tsx:236
-#: src/view/screens/ProfileList.tsx:266
+#: src/view/screens/ProfileFeed.tsx:237
+#: src/view/screens/ProfileList.tsx:267
#: src/view/screens/SavedFeeds.tsx:209
#: src/view/screens/SavedFeeds.tsx:231
#: src/view/screens/SavedFeeds.tsx:252
@@ -3973,9 +4159,9 @@ msgstr "Ada masalah saat menghubungi server"
#: src/view/com/auth/onboarding/RecommendedFeedsItem.tsx:57
#: src/view/com/auth/onboarding/RecommendedFeedsItem.tsx:66
-#: src/view/com/feeds/FeedSourceCard.tsx:113
-#: src/view/com/feeds/FeedSourceCard.tsx:127
-#: src/view/com/feeds/FeedSourceCard.tsx:181
+#: src/view/com/feeds/FeedSourceCard.tsx:115
+#: src/view/com/feeds/FeedSourceCard.tsx:129
+#: src/view/com/feeds/FeedSourceCard.tsx:183
msgid "There was an issue contacting your server"
msgstr "Ada masalah saat menghubungi server Anda"
@@ -4007,19 +4193,19 @@ msgstr "Ada masalah dengan pengambilan kata sandi aplikasi Anda"
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:93
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:105
-#: src/view/com/profile/ProfileHeader.tsx:156
-#: src/view/com/profile/ProfileHeader.tsx:177
-#: src/view/com/profile/ProfileHeader.tsx:216
-#: src/view/com/profile/ProfileHeader.tsx:229
-#: src/view/com/profile/ProfileHeader.tsx:249
-#: src/view/com/profile/ProfileHeader.tsx:271
+#: src/view/com/profile/ProfileHeader.tsx:157
+#: src/view/com/profile/ProfileHeader.tsx:178
+#: src/view/com/profile/ProfileHeader.tsx:217
+#: src/view/com/profile/ProfileHeader.tsx:230
+#: src/view/com/profile/ProfileHeader.tsx:250
+#: src/view/com/profile/ProfileHeader.tsx:272
msgid "There was an issue! {0}"
msgstr "Ada masalah! {0}"
-#: src/view/screens/ProfileList.tsx:287
-#: src/view/screens/ProfileList.tsx:306
-#: src/view/screens/ProfileList.tsx:328
-#: src/view/screens/ProfileList.tsx:347
+#: src/view/screens/ProfileList.tsx:288
+#: src/view/screens/ProfileList.tsx:307
+#: src/view/screens/ProfileList.tsx:329
+#: src/view/screens/ProfileList.tsx:348
msgid "There was an issue. Please check your internet connection and try again."
msgstr "Ada masalah. Periksa koneksi internet Anda dan coba lagi."
@@ -4032,8 +4218,8 @@ msgid "There's been a rush of new users to Bluesky! We'll activate your account
msgstr ""
#: src/view/com/auth/create/Step2.tsx:55
-msgid "There's something wrong with this number. Please choose your country and enter your full phone number!"
-msgstr ""
+#~ msgid "There's something wrong with this number. Please choose your country and enter your full phone number!"
+#~ msgstr ""
#: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:138
msgid "These are popular accounts you might like:"
@@ -4075,8 +4261,8 @@ msgid "This feed is currently receiving high traffic and is temporarily unavaila
msgstr "Feed ini sedang menerima terlalu banyak trafik dan sementara tidak tersedia. Silakan coba lagi nanti."
#: src/view/screens/Profile.tsx:420
-#: src/view/screens/ProfileFeed.tsx:475
-#: src/view/screens/ProfileList.tsx:660
+#: src/view/screens/ProfileFeed.tsx:476
+#: src/view/screens/ProfileList.tsx:661
msgid "This feed is empty!"
msgstr "Feed ini kosong!"
@@ -4108,7 +4294,7 @@ msgstr "Daftar ini kosong!"
msgid "This name is already in use"
msgstr "Nama ini sudah digunakan"
-#: src/view/com/post-thread/PostThreadItem.tsx:122
+#: src/view/com/post-thread/PostThreadItem.tsx:125
msgid "This post has been deleted."
msgstr "Postingan ini telah dihapus."
@@ -4132,7 +4318,11 @@ msgstr ""
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:192
+#: src/components/dialogs/MutedWords.tsx:236
+msgid "This will delete {0} from your muted words. You can always add it back later."
+msgstr ""
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:237
msgid "This will hide this post from your feeds."
msgstr "Ini akan menyembunyikan postingan ini dari feed Anda."
@@ -4145,10 +4335,14 @@ msgstr "Preferensi Utasan"
msgid "Threaded Mode"
msgstr "Mode Utasan"
-#: src/Navigation.tsx:252
+#: src/Navigation.tsx:255
msgid "Threads Preferences"
msgstr "Preferensi Utas"
+#: src/components/dialogs/MutedWords.tsx:95
+msgid "Toggle between muted word options."
+msgstr ""
+
#: src/view/com/util/forms/DropdownButton.tsx:246
msgid "Toggle dropdown"
msgstr "Beralih dropdown"
@@ -4157,9 +4351,9 @@ msgstr "Beralih dropdown"
msgid "Transformations"
msgstr "Transformasi"
-#: src/view/com/post-thread/PostThreadItem.tsx:686
-#: src/view/com/post-thread/PostThreadItem.tsx:688
-#: src/view/com/util/forms/PostDropdownBtn.tsx:125
+#: src/view/com/post-thread/PostThreadItem.tsx:685
+#: src/view/com/post-thread/PostThreadItem.tsx:687
+#: src/view/com/util/forms/PostDropdownBtn.tsx:156
msgid "Translate"
msgstr "Terjemahkan"
@@ -4171,15 +4365,15 @@ msgstr "Coba lagi"
#~ msgid "Try again"
#~ msgstr "Ulangi"
-#: src/view/screens/ProfileList.tsx:505
+#: src/view/screens/ProfileList.tsx:506
msgid "Un-block list"
msgstr "Buka blokir daftar"
-#: src/view/screens/ProfileList.tsx:490
+#: src/view/screens/ProfileList.tsx:491
msgid "Un-mute list"
msgstr "Bunyikan daftar"
-#: src/view/com/auth/create/CreateAccount.tsx:66
+#: src/view/com/auth/create/CreateAccount.tsx:58
#: src/view/com/auth/login/ForgotPasswordForm.tsx:87
#: src/view/com/auth/login/Login.tsx:76
#: src/view/com/auth/login/LoginForm.tsx:118
@@ -4187,18 +4381,18 @@ msgstr "Bunyikan daftar"
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:432
-#: src/view/screens/ProfileList.tsx:589
+#: src/view/com/profile/ProfileHeader.tsx:433
+#: src/view/screens/ProfileList.tsx:590
msgid "Unblock"
msgstr "Buka blokir"
-#: src/view/com/profile/ProfileHeader.tsx:435
+#: src/view/com/profile/ProfileHeader.tsx:436
msgctxt "action"
msgid "Unblock"
msgstr "Buka blokir"
-#: src/view/com/profile/ProfileHeader.tsx:260
-#: src/view/com/profile/ProfileHeader.tsx:344
+#: src/view/com/profile/ProfileHeader.tsx:261
+#: src/view/com/profile/ProfileHeader.tsx:345
msgid "Unblock Account"
msgstr "Buka blokir Akun"
@@ -4214,11 +4408,11 @@ msgctxt "action"
msgid "Unfollow"
msgstr "Berhenti mengikuti"
-#: src/view/com/profile/ProfileHeader.tsx:484
+#: src/view/com/profile/ProfileHeader.tsx:485
msgid "Unfollow {0}"
msgstr "Berhenti mengikuti {0}"
-#: src/view/com/auth/create/state.ts:300
+#: src/view/com/auth/create/state.ts:262
msgid "Unfortunately, you do not meet the requirements to create an account."
msgstr "Sayangnya, Anda tidak memenuhi syarat untuk membuat akun."
@@ -4227,28 +4421,37 @@ msgstr "Sayangnya, Anda tidak memenuhi syarat untuk membuat akun."
msgid "Unlike"
msgstr "Tidak suka"
-#: src/view/screens/ProfileList.tsx:596
+#: src/components/TagMenu/index.tsx:253
+#: src/view/screens/ProfileList.tsx:597
msgid "Unmute"
msgstr "Bunyikan"
-#: src/view/com/profile/ProfileHeader.tsx:325
+#: src/components/TagMenu/index.web.tsx:90
+msgid "Unmute {truncatedTag}"
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:326
msgid "Unmute Account"
msgstr "Bunyikan Akun"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:171
+#: src/components/TagMenu/index.tsx:210
+msgid "Unmute all {tag} posts"
+msgstr ""
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:202
msgid "Unmute thread"
msgstr "Bunyikan utasan"
-#: src/view/screens/ProfileFeed.tsx:353
-#: src/view/screens/ProfileList.tsx:580
+#: src/view/screens/ProfileFeed.tsx:354
+#: src/view/screens/ProfileList.tsx:581
msgid "Unpin"
msgstr "Lepas sematan"
-#: src/view/screens/ProfileList.tsx:473
+#: src/view/screens/ProfileList.tsx:474
msgid "Unpin moderation list"
msgstr "Lepas sematan daftar moderasi"
-#: src/view/screens/ProfileFeed.tsx:345
+#: src/view/screens/ProfileFeed.tsx:346
msgid "Unsave"
msgstr "Batal simpan"
@@ -4310,11 +4513,11 @@ msgstr "Pengguna Diblokir oleh Daftar"
msgid "User Blocks You"
msgstr "Pengguna Memblokir Anda"
-#: src/view/com/auth/create/Step3.tsx:41
+#: src/view/com/auth/create/Step2.tsx:79
msgid "User handle"
msgstr "Handle pengguna"
-#: src/view/com/lists/ListCard.tsx:84
+#: src/view/com/lists/ListCard.tsx:85
#: src/view/com/modals/UserAddRemoveLists.tsx:198
msgid "User list by {0}"
msgstr "Daftar pengguna oleh {0}"
@@ -4323,7 +4526,7 @@ msgstr "Daftar pengguna oleh {0}"
msgid "User list by <0/>"
msgstr "Daftar pengguna oleh<0/>"
-#: src/view/com/lists/ListCard.tsx:82
+#: src/view/com/lists/ListCard.tsx:83
#: src/view/com/modals/UserAddRemoveLists.tsx:196
#: src/view/screens/ProfileList.tsx:760
msgid "User list by you"
@@ -4359,8 +4562,8 @@ msgid "Users in \"{0}\""
msgstr "Pengguna di \"{0}\""
#: src/view/com/auth/create/Step2.tsx:243
-msgid "Verification code"
-msgstr ""
+#~ msgid "Verification code"
+#~ msgstr ""
#: src/view/screens/Settings/index.tsx:910
msgid "Verify email"
@@ -4387,7 +4590,7 @@ msgstr "Verifikasi Email Anda"
msgid "Video Games"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:661
+#: src/view/com/profile/ProfileHeader.tsx:662
msgid "View {0}'s avatar"
msgstr "Lihat avatar {0}"
@@ -4440,6 +4643,10 @@ msgstr ""
#~ msgid "We recommend \"For You\" by Skygaze:"
#~ msgstr ""
+#: src/components/dialogs/MutedWords.tsx:161
+msgid "We recommend avoiding common words that appear in many posts, since it can result in no posts being shown."
+msgstr ""
+
#: src/screens/Onboarding/StepAlgoFeeds/index.tsx:124
msgid "We recommend our \"Discover\" feed:"
msgstr ""
@@ -4460,15 +4667,19 @@ msgstr "Kami akan segera memeriksa permohonan banding Anda."
msgid "We'll use this to help customize your experience."
msgstr ""
-#: src/view/com/auth/create/CreateAccount.tsx:123
+#: src/view/com/auth/create/CreateAccount.tsx:134
msgid "We're so excited to have you join us!"
msgstr "Kami sangat senang Anda bergabung dengan kami!"
-#: src/view/screens/ProfileList.tsx:85
+#: src/view/screens/ProfileList.tsx:86
msgid "We're sorry, but we were unable to resolve this list. If this persists, please contact the list creator, @{handleOrDid}."
msgstr "Mohon maaf, kami tidak dapat menyelesaikan daftar ini. Jika hal ini terus berlanjut, silakan hubungi pembuat daftar, @{handleOrDid}."
-#: src/view/screens/Search/Search.tsx:253
+#: src/components/dialogs/MutedWords.tsx:182
+msgid "We're sorry, but we weren't able to load your muted words at this time. Please try again."
+msgstr ""
+
+#: src/view/screens/Search/Search.tsx:254
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."
@@ -4491,8 +4702,8 @@ msgstr "Apa yang bermasalah dengan {collectionName}?"
#~ msgid "What's next?"
#~ msgstr "Apa selanjutnya?"
-#: src/view/com/auth/SplashScreen.tsx:34
-#: src/view/com/composer/Composer.tsx:279
+#: src/view/com/auth/SplashScreen.tsx:59
+#: src/view/com/composer/Composer.tsx:286
msgid "What's up?"
msgstr "Apa kabar?"
@@ -4513,11 +4724,11 @@ msgstr "Siapa yang dapat membalas"
msgid "Wide"
msgstr "Lebar"
-#: src/view/com/composer/Composer.tsx:415
+#: src/view/com/composer/Composer.tsx:422
msgid "Write post"
msgstr "Tulis postingan"
-#: src/view/com/composer/Composer.tsx:278
+#: src/view/com/composer/Composer.tsx:285
#: src/view/com/composer/Prompt.tsx:33
msgid "Write your reply"
msgstr "Tulis balasan Anda"
@@ -4527,14 +4738,14 @@ msgid "Writers"
msgstr ""
#: src/view/com/auth/create/Step2.tsx:263
-msgid "XXXXXX"
-msgstr ""
+#~ msgid "XXXXXX"
+#~ msgstr ""
#: src/view/com/composer/select-language/SuggestedLanguage.tsx:77
-#: 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/PreferencesFollowingFeed.tsx:129
+#: src/view/screens/PreferencesFollowingFeed.tsx:201
+#: src/view/screens/PreferencesFollowingFeed.tsx:236
+#: src/view/screens/PreferencesFollowingFeed.tsx:271
#: src/view/screens/PreferencesThreads.tsx:106
#: src/view/screens/PreferencesThreads.tsx:129
msgid "Yes"
@@ -4578,7 +4789,7 @@ msgstr "Anda belum memiliki kode undangan! Kami akan mengirimkan kode saat Anda
msgid "You don't have any pinned feeds."
msgstr "Anda tidak memiliki feed yang disematkan."
-#: src/view/screens/Feeds.tsx:451
+#: src/view/screens/Feeds.tsx:452
msgid "You don't have any saved feeds!"
msgstr "Anda tidak memiliki feed yang disimpan!"
@@ -4586,7 +4797,7 @@ msgstr "Anda tidak memiliki feed yang disimpan!"
msgid "You don't have any saved feeds."
msgstr "Anda tidak memiliki feed yang disimpan."
-#: src/view/com/post-thread/PostThread.tsx:401
+#: src/view/com/post-thread/PostThread.tsx:465
msgid "You have blocked the author or you have been blocked by the author."
msgstr "Anda telah memblokir atau diblokir oleh penulis ini."
@@ -4626,6 +4837,10 @@ msgstr "Anda belum membuat kata sandi aplikasi. Anda dapat membuatnya dengan men
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/components/dialogs/MutedWords.tsx:202
+msgid "You haven't muted any words or tags yet"
+msgstr ""
+
#: src/view/com/modals/ContentFilteringSettings.tsx:175
msgid "You must be 18 or older to enable adult content."
msgstr "Anda harus berusia 18 tahun atau lebih untuk mengaktifkan konten dewasa."
@@ -4634,11 +4849,11 @@ msgstr "Anda harus berusia 18 tahun atau lebih untuk mengaktifkan konten dewasa.
msgid "You must be 18 years or older to enable adult content"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:98
+#: src/view/com/util/forms/PostDropdownBtn.tsx:129
msgid "You will no longer receive notifications for this thread"
msgstr "Anda tidak akan lagi menerima notifikasi untuk utas ini"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:101
+#: src/view/com/util/forms/PostDropdownBtn.tsx:132
msgid "You will now receive notifications for this thread"
msgstr "Anda sekarang akan menerima notifikasi untuk utas ini"
@@ -4676,7 +4891,7 @@ msgstr "Akun Anda telah dihapus"
msgid "Your account repository, containing all public data records, can be downloaded as a \"CAR\" file. This file does not include media embeds, such as images, or your private data, which must be fetched separately."
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:234
+#: src/view/com/auth/create/Step1.tsx:238
msgid "Your birth date"
msgstr "Tanggal lahir Anda"
@@ -4688,7 +4903,7 @@ msgstr "Pilihan Anda akan disimpan, tetapi dapat diubah nanti di pengaturan."
msgid "Your default feed is \"Following\""
msgstr ""
-#: src/view/com/auth/create/state.ts:153
+#: src/view/com/auth/create/state.ts:110
#: src/view/com/auth/login/ForgotPasswordForm.tsx:70
#: src/view/com/modals/ChangePassword.tsx:54
msgid "Your email appears to be invalid."
@@ -4710,7 +4925,7 @@ msgstr "Alamat email Anda belum diverifikasi. Ini merupakan langkah keamanan pen
msgid "Your following feed is empty! Follow more users to see what's happening."
msgstr "Feed mengikuti Anda kosong! Ikuti lebih banyak pengguna untuk melihat apa yang terjadi."
-#: src/view/com/auth/create/Step3.tsx:45
+#: src/view/com/auth/create/Step2.tsx:83
msgid "Your full handle will be"
msgstr "Handle lengkap Anda akan menjadi"
@@ -4728,11 +4943,15 @@ msgstr "Handle lengkap Anda akan menjadi <0>@{0}0>"
#~ 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/components/dialogs/MutedWords.tsx:173
+msgid "Your muted words"
+msgstr ""
+
#: src/view/com/modals/ChangePassword.tsx:155
msgid "Your password has been changed successfully!"
msgstr ""
-#: src/view/com/composer/Composer.tsx:267
+#: src/view/com/composer/Composer.tsx:274
msgid "Your post has been published"
msgstr "Postingan Anda telah dipublikasikan"
@@ -4747,10 +4966,10 @@ msgstr "Postingan, suka, dan blokir Anda bersifat publik. Bisukan bersifat priva
msgid "Your profile"
msgstr "Profil Anda"
-#: src/view/com/composer/Composer.tsx:266
+#: src/view/com/composer/Composer.tsx:273
msgid "Your reply has been published"
msgstr "Balasan Anda telah dipublikasikan"
-#: src/view/com/auth/create/Step3.tsx:28
+#: src/view/com/auth/create/Step2.tsx:65
msgid "Your user handle"
msgstr "Handle Anda"
diff --git a/src/locale/locales/it/messages.po b/src/locale/locales/it/messages.po
index 1b89e5d46b..ac09dc1073 100644
--- a/src/locale/locales/it/messages.po
+++ b/src/locale/locales/it/messages.po
@@ -19,26 +19,35 @@ msgid "(no email)"
msgstr "(no email)"
#: src/view/shell/desktop/RightNav.tsx:168
-msgid "{0, plural, one {# invite code available} other {# invite codes available}}"
-msgstr "{0, plural, one {# codice d'invito disponibile} other {# codici d'inviti disponibili}}"
+#~ msgid "{0, plural, one {# invite code available} other {# invite codes available}}"
+#~ msgstr "{0, plural, one {# codice d'invito disponibile} other {# codici d'inviti disponibili}}"
-#: src/view/com/profile/ProfileHeader.tsx:632
+#~ msgid "{0}"
+#~ msgstr "{0}"
+
+#~ msgid "{0} {purposeLabel} List"
+#~ msgstr "Llista {purposeLabel} {0}"
+
+#: src/view/com/profile/ProfileHeader.tsx:593
msgid "{following} following"
msgstr "{following} seguendo"
#: src/view/shell/desktop/RightNav.tsx:151
-msgid "{invitesAvailable, plural, one {Invite codes: # available} other {Invite codes: # available}}"
-msgstr "{invitesAvailable, plural, one {Codici d'invito: # available} other {Codici d'invito: # available}}"
+#~ msgid "{invitesAvailable, plural, one {Invite codes: # available} other {Invite codes: # available}}"
+#~ msgstr "{invitesAvailable, plural, one {Codici d'invito: # available} other {Codici d'invito: # available}}"
-#: src/view/screens/Settings.tsx:435 src/view/shell/Drawer.tsx:664
-msgid "{invitesAvailable} invite code available"
-msgstr "{invitesAvailable} codice d'invito disponibile"
+#: src/view/screens/Settings.tsx:NaN
+#~ msgid "{invitesAvailable} invite code available"
+#~ msgstr "{invitesAvailable} codice d'invito disponibile"
-#: src/view/screens/Settings.tsx:437 src/view/shell/Drawer.tsx:666
-msgid "{invitesAvailable} invite codes available"
-msgstr "{invitesAvailable} codici d'invito disponibili"
+#: src/view/screens/Settings.tsx:NaN
+#~ msgid "{invitesAvailable} invite codes available"
+#~ msgstr "{invitesAvailable} codici d'invito disponibili"
-#: src/view/shell/Drawer.tsx:443
+#~ msgid "{message}"
+#~ msgstr "{message}"
+
+#: src/view/shell/Drawer.tsx:440
msgid "{numUnreadNotifications} unread"
msgstr "{numUnreadNotifications} non letto"
@@ -46,7 +55,7 @@ msgstr "{numUnreadNotifications} non letto"
msgid "<0/> members"
msgstr "<0/> membri"
-#: src/view/com/profile/ProfileHeader.tsx:634
+#: src/view/com/profile/ProfileHeader.tsx:595
msgid "<0>{following} 0><1>following1>"
msgstr "<0>{following} 0><1>seguiti1>"
@@ -62,7 +71,7 @@ msgstr "<0>Segui alcuni0><1>utenti1><2>consigliati2>"
msgid "<0>Welcome to0><1>Bluesky1>"
msgstr "<0>Ti diamo il benvenuto a0><1>Bluesky1>"
-#: src/view/com/profile/ProfileHeader.tsx:597
+#: src/view/com/profile/ProfileHeader.tsx:558
msgid "ā Invalid Handle"
msgstr "ā Nome utente non valido"
@@ -74,27 +83,31 @@ msgstr "A questo post ĆØ stato applicato un avviso di contenuto {0}."
msgid "A new version of the app is available. Please update to continue using the app."
msgstr "Ć disponibile una nuova versione dell'app. Aggiorna per continuare a utilizzarla."
-#: src/view/com/util/ViewHeader.tsx:83 src/view/screens/Search/Search.tsx:545
+#: src/view/com/util/ViewHeader.tsx:83
+#: src/view/screens/Search/Search.tsx:647
msgid "Access navigation links and settings"
msgstr "Accedi alle impostazioni di navigazione"
-#: src/view/com/pager/FeedsTabBarMobile.tsx:83
+#: src/view/com/home/HomeHeaderLayoutMobile.tsx:51
msgid "Access profile and other navigation links"
msgstr "Accedi al profilo e altre impostazioni di navigazione"
-#: src/view/com/modals/EditImage.tsx:299 src/view/screens/Settings.tsx:445
+#: src/view/com/modals/EditImage.tsx:299
+#: src/view/screens/Settings/index.tsx:451
msgid "Accessibility"
msgstr "AccessibilitĆ "
-#: src/view/com/auth/login/LoginForm.tsx:163 src/view/screens/Settings.tsx:308
+#: src/view/com/auth/login/LoginForm.tsx:166
+#: src/view/screens/Settings/index.tsx:308
+#: src/view/screens/Settings/index.tsx:721
msgid "Account"
msgstr "Account"
-#: src/view/com/profile/ProfileHeader.tsx:293
+#: src/view/com/profile/ProfileHeader.tsx:246
msgid "Account blocked"
msgstr "Account bloccato"
-#: src/view/com/profile/ProfileHeader.tsx:260
+#: src/view/com/profile/ProfileHeader.tsx:213
msgid "Account muted"
msgstr "Account silenziato"
@@ -114,18 +127,19 @@ msgstr "Opzioni dell'account"
msgid "Account removed from quick access"
msgstr "Account rimosso dall'accesso immediato"
-#: src/view/com/profile/ProfileHeader.tsx:315
+#: src/view/com/profile/ProfileHeader.tsx:268
msgid "Account unblocked"
msgstr "Account sbloccato"
-#: src/view/com/profile/ProfileHeader.tsx:273
+#: src/view/com/profile/ProfileHeader.tsx:226
msgid "Account unmuted"
msgstr "Account non silenziato"
+#: src/components/dialogs/MutedWords.tsx:147
#: src/view/com/auth/onboarding/RecommendedFeedsItem.tsx:150
#: src/view/com/modals/ListAddRemoveUsers.tsx:264
-#: src/view/com/modals/UserAddRemoveLists.tsx:203
-#: src/view/screens/ProfileList.tsx:791
+#: src/view/com/modals/UserAddRemoveLists.tsx:219
+#: src/view/screens/ProfileList.tsx:812
msgid "Add"
msgstr "Aggiungi"
@@ -133,21 +147,23 @@ msgstr "Aggiungi"
msgid "Add a content warning"
msgstr "Aggiungi un avviso sul contenuto"
-#: src/view/screens/ProfileList.tsx:781
+#: src/view/screens/ProfileList.tsx:802
msgid "Add a user to this list"
msgstr "Aggiungi un utente a questo elenco"
-#: src/view/screens/Settings.tsx:383 src/view/screens/Settings.tsx:392
+#: src/view/screens/Settings/index.tsx:383
+#: src/view/screens/Settings/index.tsx:392
msgid "Add account"
msgstr "Aggiungi account"
#: src/view/com/composer/photos/Gallery.tsx:119
#: src/view/com/composer/photos/Gallery.tsx:180
-#: src/view/com/modals/AltImage.tsx:93
+#: src/view/com/modals/AltImage.tsx:116
msgid "Add alt text"
msgstr "Aggiungi testo alternativo"
-#: src/view/screens/AppPasswords.tsx:102 src/view/screens/AppPasswords.tsx:143
+#: src/view/screens/AppPasswords.tsx:102
+#: src/view/screens/AppPasswords.tsx:143
#: src/view/screens/AppPasswords.tsx:156
msgid "Add App Password"
msgstr "Aggiungi la Password per l'App"
@@ -161,24 +177,32 @@ msgstr "Aggiungi i dettagli"
msgid "Add details to report"
msgstr "Aggiungi dettagli da segnalare"
-#: src/view/com/composer/Composer.tsx:446
+#: src/view/com/composer/Composer.tsx:453
msgid "Add link card"
msgstr "Aggiungi la scheda collegata al link"
-#: src/view/com/composer/Composer.tsx:451
+#: src/view/com/composer/Composer.tsx:458
msgid "Add link card:"
msgstr "Aggiungi la scheda relazionata al link:"
+#: src/components/dialogs/MutedWords.tsx:140
+msgid "Add mute word for configured settings"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:74
+msgid "Add muted words and tags"
+msgstr ""
+
#: src/view/com/modals/ChangeHandle.tsx:417
msgid "Add the following DNS record to your domain:"
msgstr "Aggiungi il seguente record DNS al tuo dominio:"
-#: src/view/com/profile/ProfileHeader.tsx:357
+#: src/view/com/profile/ProfileHeader.tsx:310
msgid "Add to Lists"
msgstr "Aggiungi alle liste"
-#: src/view/com/feeds/FeedSourceCard.tsx:243
-#: src/view/screens/ProfileFeed.tsx:281
+#: src/view/com/feeds/FeedSourceCard.tsx:245
+#: src/view/screens/ProfileFeed.tsx:273
msgid "Add to my feeds"
msgstr "Aggiungi ai miei feed"
@@ -187,15 +211,15 @@ msgid "Added"
msgstr "Aggiunto"
#: src/view/com/modals/ListAddRemoveUsers.tsx:191
-#: src/view/com/modals/UserAddRemoveLists.tsx:128
+#: src/view/com/modals/UserAddRemoveLists.tsx:144
msgid "Added to list"
msgstr "Aggiunto alla lista"
-#: src/view/com/feeds/FeedSourceCard.tsx:125
+#: src/view/com/feeds/FeedSourceCard.tsx:127
msgid "Added to my feeds"
msgstr "Aggiunto ai miei feeds"
-#: src/view/screens/PreferencesHomeFeed.tsx:173
+#: src/view/screens/PreferencesFollowingFeed.tsx:173
msgid "Adjust the number of likes a reply must have to be shown in your feed."
msgstr "Modifica il numero Mi Piace che una risposta deve avere per essere mostrata nel tuo feed."
@@ -203,14 +227,23 @@ msgstr "Modifica il numero Mi Piace che una risposta deve avere per essere mostr
msgid "Adult Content"
msgstr "Contenuto per adulti"
-#: src/view/com/modals/ContentFilteringSettings.tsx:137
+#: src/view/com/modals/ContentFilteringSettings.tsx:141
msgid "Adult content can only be enabled via the Web at <0/>."
msgstr "I contenuti per adulti possono essere abilitati solo dal sito Web a <0/>."
-#: src/view/screens/Settings.tsx:630
+#: src/view/screens/Settings/index.tsx:664
msgid "Advanced"
msgstr "Avanzato"
+#: src/view/screens/Feeds.tsx:666
+msgid "All the feeds you've saved, right in one place."
+msgstr ""
+
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:221
+#: src/view/com/modals/ChangePassword.tsx:168
+msgid "Already have a code?"
+msgstr ""
+
#: src/view/com/auth/login/ChooseAccountForm.tsx:98
msgid "Already signed in as @{0}"
msgstr "GiĆ effettuato l'accesso come @{0}"
@@ -240,11 +273,15 @@ msgstr "Una email ĆØ stata inviata al tuo indirizzo precedente, {0}. Include un
msgid "An issue occurred, please try again."
msgstr "Si ĆØ verificato un problema, riprova un'altra volta."
-#: src/view/com/notifications/FeedItem.tsx:240
+#: src/view/com/notifications/FeedItem.tsx:236
#: src/view/com/threadgate/WhoCanReply.tsx:178
msgid "and"
msgstr "e"
+#: src/screens/Onboarding/index.tsx:32
+msgid "Animals"
+msgstr ""
+
#: src/view/screens/LanguageSettings.tsx:95
msgid "App Language"
msgstr "Lingua dell'app"
@@ -253,27 +290,29 @@ msgstr "Lingua dell'app"
msgid "App password deleted"
msgstr "Password dell'app eliminata"
-#: src/view/com/modals/AddAppPasswords.tsx:133
+#: src/view/com/modals/AddAppPasswords.tsx:134
msgid "App Password names can only contain letters, numbers, spaces, dashes, and underscores."
msgstr "Le password per le app possono contenere solo lettere, numeri, spazi, trattini e trattini bassi."
-#: src/view/com/modals/AddAppPasswords.tsx:98
+#: src/view/com/modals/AddAppPasswords.tsx:99
msgid "App Password names must be at least 4 characters long."
msgstr "I nomi delle password delle app devono contenere almeno 4 caratteri."
-#: src/view/screens/Settings.tsx:641
+#: src/view/screens/Settings/index.tsx:675
msgid "App password settings"
msgstr "Impostazioni della password dell'app"
#: src/view/screens/Settings.tsx:650
-msgid "App passwords"
-msgstr "Passwords dell'app"
+#~ msgid "App passwords"
+#~ msgstr "Passwords dell'app"
-#: src/Navigation.tsx:237 src/view/screens/AppPasswords.tsx:187
+#: src/Navigation.tsx:237
+#: src/view/screens/AppPasswords.tsx:187
+#: src/view/screens/Settings/index.tsx:684
msgid "App Passwords"
msgstr "Passwords dell'App"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:248
+#: src/view/com/util/forms/PostDropdownBtn.tsx:295
msgid "Appeal content warning"
msgstr "Ricorso contro l'avviso sui contenuti"
@@ -281,6 +320,9 @@ msgstr "Ricorso contro l'avviso sui contenuti"
msgid "Appeal Content Warning"
msgstr "Ricorso contro l'Avviso sui Contenuti"
+#~ msgid "Appeal Decision"
+#~ msgstr "Decisión de apelación"
+
#: src/view/com/util/moderation/LabelInfo.tsx:52
msgid "Appeal this decision"
msgstr "Appella contro questa decisione"
@@ -289,7 +331,7 @@ msgstr "Appella contro questa decisione"
msgid "Appeal this decision."
msgstr "Appella contro questa decisione."
-#: src/view/screens/Settings.tsx:460
+#: src/view/screens/Settings/index.tsx:466
msgid "Appearance"
msgstr "Aspetto"
@@ -297,93 +339,103 @@ msgstr "Aspetto"
msgid "Are you sure you want to delete the app password \"{name}\"?"
msgstr "Conferma di voler eliminare la password dell'app \"{name}\"?"
-#: src/view/com/composer/Composer.tsx:143
+#: src/view/com/composer/Composer.tsx:150
msgid "Are you sure you'd like to discard this draft?"
msgstr "Conferma di voler eliminare questa bozza?"
-#: src/view/screens/ProfileList.tsx:364
+#: src/components/dialogs/MutedWords.tsx:233
+#: src/view/screens/ProfileList.tsx:365
msgid "Are you sure?"
msgstr "Confermi?"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:231
+#: src/view/com/util/forms/PostDropdownBtn.tsx:278
msgid "Are you sure? This cannot be undone."
msgstr "Vuoi proseguire? Questa operazione non può essere annullata."
-#: src/view/com/composer/select-language/SuggestedLanguage.tsx:65
+#: src/view/com/composer/select-language/SuggestedLanguage.tsx:60
msgid "Are you writing in <0>{0}0>?"
msgstr "Stai scrivendo in <0>{0}0>?"
+#: src/screens/Onboarding/index.tsx:26
+msgid "Art"
+msgstr ""
+
#: src/view/com/modals/SelfLabel.tsx:123
msgid "Artistic or non-erotic nudity."
msgstr "NuditĆ artistica o non erotica."
-#: src/view/com/post-thread/PostThread.tsx:400
-msgctxt "action"
-msgid "Back"
-msgstr "Indietro"
-
-#: src/view/com/auth/create/CreateAccount.tsx:142
+#: src/view/com/auth/create/CreateAccount.tsx:158
#: src/view/com/auth/login/ChooseAccountForm.tsx:151
-#: src/view/com/auth/login/ForgotPasswordForm.tsx:170
-#: src/view/com/auth/login/LoginForm.tsx:256
-#: src/view/com/auth/login/SetNewPasswordForm.tsx:150
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:174
+#: src/view/com/auth/login/LoginForm.tsx:259
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:179
#: src/view/com/modals/report/InputIssueDetails.tsx:46
-#: src/view/com/post-thread/PostThread.tsx:392
-#: src/view/com/post-thread/PostThread.tsx:442
-#: src/view/com/post-thread/PostThread.tsx:450
-#: src/view/com/profile/ProfileHeader.tsx:688
+#: src/view/com/post-thread/PostThread.tsx:472
+#: src/view/com/post-thread/PostThread.tsx:522
+#: src/view/com/post-thread/PostThread.tsx:530
+#: src/view/com/profile/ProfileHeader.tsx:649
#: src/view/com/util/ViewHeader.tsx:81
msgid "Back"
msgstr "Indietro"
-#: src/view/screens/Settings.tsx:489
+#: src/view/com/post-thread/PostThread.tsx:480
+msgctxt "action"
+msgid "Back"
+msgstr "Indietro"
+
+#: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:136
+msgid "Based on your interest in {interestsText}"
+msgstr ""
+
+#: src/view/screens/Settings/index.tsx:523
msgid "Basics"
msgstr "Nozioni di base"
-#: src/view/com/auth/create/Step1.tsx:194
+#: src/view/com/auth/create/Step1.tsx:250
#: src/view/com/modals/BirthDateSettings.tsx:73
msgid "Birthday"
msgstr "Compleanno"
-#: src/view/screens/Settings.tsx:340
+#: src/view/screens/Settings/index.tsx:340
msgid "Birthday:"
msgstr "Compleanno:"
-#: src/view/com/profile/ProfileHeader.tsx:286
-#: src/view/com/profile/ProfileHeader.tsx:393
+#: src/view/com/profile/ProfileHeader.tsx:239
+#: src/view/com/profile/ProfileHeader.tsx:346
msgid "Block Account"
msgstr "Blocca l'account"
-#: src/view/screens/ProfileList.tsx:534
+#: src/view/screens/ProfileList.tsx:556
msgid "Block accounts"
msgstr "Blocca gli accounts"
-#: src/view/screens/ProfileList.tsx:484
+#: src/view/screens/ProfileList.tsx:506
msgid "Block list"
msgstr "Lista di blocchi"
-#: src/view/screens/ProfileList.tsx:315
+#: src/view/screens/ProfileList.tsx:316
msgid "Block these accounts?"
msgstr "Vuoi bloccare questi accounts?"
-#: src/view/screens/ProfileList.tsx:319
+#: src/view/screens/ProfileList.tsx:320
msgid "Block this List"
msgstr "Blocca questa Lista"
-#: src/view/com/lists/ListCard.tsx:109
-#: src/view/com/util/post-embeds/QuoteEmbed.tsx:60
+#: src/view/com/lists/ListCard.tsx:110
+#: src/view/com/util/post-embeds/QuoteEmbed.tsx:61
msgid "Blocked"
msgstr "Bloccato"
-#: src/view/screens/Moderation.tsx:123
+#: src/view/screens/Moderation.tsx:142
msgid "Blocked accounts"
msgstr "Accounts bloccati"
-#: src/Navigation.tsx:129 src/view/screens/ModerationBlockedAccounts.tsx:107
+#: src/Navigation.tsx:130
+#: src/view/screens/ModerationBlockedAccounts.tsx:107
msgid "Blocked Accounts"
msgstr "Accounts bloccati"
-#: src/view/com/profile/ProfileHeader.tsx:288
+#: src/view/com/profile/ProfileHeader.tsx:241
msgid "Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you."
msgstr "Gli account bloccati non possono rispondere nelle tue discussioni, menzionarti o interagire in nessun altro modo con te."
@@ -391,22 +443,29 @@ msgstr "Gli account bloccati non possono rispondere nelle tue discussioni, menzi
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 "Gli account bloccati non possono rispondere nelle tue discussioni, menzionarti in nessun altro modo con te. Non vedrai il loro contenuto e non vedranno il tuo.."
-#: src/view/com/post-thread/PostThread.tsx:254
+#: src/view/com/post-thread/PostThread.tsx:324
msgid "Blocked post."
msgstr "Post bloccato."
-#: src/view/screens/ProfileList.tsx:317
+#: src/view/screens/ProfileList.tsx:318
msgid "Blocking is public. Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you."
msgstr "Il blocco ĆØ pubblico. Gli accounts bloccati non possono rispondere nelle tue discussioni, menzionarti o interagire con te in nessun altro modo."
#: src/view/com/auth/HomeLoggedOutCTA.tsx:93
+#: src/view/com/auth/SplashScreen.web.tsx:133
msgid "Blog"
msgstr "Blog"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:31
+#: src/view/com/auth/server-input/index.tsx:89
+#: src/view/com/auth/server-input/index.tsx:90
msgid "Bluesky"
msgstr "Bluesky"
+#: src/view/com/auth/server-input/index.tsx:150
+msgid "Bluesky is an open network where you can choose your hosting provider. Custom hosting is now available in beta for developers."
+msgstr ""
+
#: src/view/com/auth/onboarding/WelcomeDesktop.tsx:80
#: src/view/com/auth/onboarding/WelcomeMobile.tsx:80
msgid "Bluesky is flexible."
@@ -426,25 +485,30 @@ msgstr "Bluesky ĆØ pubblico."
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 utilizza gli inviti per costruire una comunità più sana. Se non conosci nessuno con un invito, puoi iscriverti alla lista d'attesa e te ne invieremo uno al più presto."
-#: src/view/screens/Moderation.tsx:225
+#: src/view/screens/Moderation.tsx:245
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 non mostrerĆ il tuo profilo e i tuoi post agli utenti disconnessi. Altre app potrebbero non rispettare questa richiesta. Questo non rende il tuo account privato."
#: src/view/com/modals/ServerInput.tsx:78
-msgid "Bluesky.Social"
-msgstr "Bluesky.Social"
+#~ msgid "Bluesky.Social"
+#~ msgstr "Bluesky.Social"
-#: src/view/screens/Settings.tsx:792
+#: src/screens/Onboarding/index.tsx:33
+msgid "Books"
+msgstr ""
+
+#: src/view/screens/Settings/index.tsx:859
msgid "Build version {0} {1}"
msgstr "Versione {0} {1}"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:87
+#: src/view/com/auth/SplashScreen.web.tsx:128
msgid "Business"
msgstr "AttivitĆ commerciale"
#: src/view/com/modals/ServerInput.tsx:115
-msgid "Button disabled. Input custom domain to proceed."
-msgstr "Pulsante disabilitato. Inserisci il dominio personalizzato per procedere."
+#~ msgid "Button disabled. Input custom domain to proceed."
+#~ msgstr "Pulsante disabilitato. Inserisci il dominio personalizzato per procedere."
#: src/view/com/profile/ProfileSubpageHeader.tsx:157
msgid "by ā"
@@ -463,42 +527,53 @@ msgid "by you"
msgstr "da te"
#: src/view/com/composer/photos/OpenCameraBtn.tsx:60
-#: src/view/com/util/UserAvatar.tsx:221 src/view/com/util/UserBanner.tsx:38
+#: src/view/com/util/UserAvatar.tsx:224
+#: src/view/com/util/UserBanner.tsx:40
msgid "Camera"
msgstr "Fotocamera"
-#: src/view/com/modals/AddAppPasswords.tsx:218
+#: src/view/com/modals/AddAppPasswords.tsx:216
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 "Può contenere solo lettere, numeri, spazi, trattini e trattini bassi. Deve contenere almeno 4 caratteri, ma non più di 32 caratteri."
-#: src/view/com/modals/Confirm.tsx:88 src/view/com/modals/Confirm.tsx:91
-#: src/view/com/modals/CreateOrEditList.tsx:291
-#: src/view/com/modals/DeleteAccount.tsx:152
-#: src/view/com/modals/DeleteAccount.tsx:230
+#: src/components/Prompt.tsx:91
+#: src/view/com/composer/Composer.tsx:307
+#: src/view/com/composer/Composer.tsx:312
+#: src/view/com/modals/ChangeEmail.tsx:218
+#: src/view/com/modals/ChangeEmail.tsx:220
+#: src/view/com/modals/ChangePassword.tsx:265
+#: src/view/com/modals/ChangePassword.tsx:268
+#: src/view/com/modals/CreateOrEditList.tsx:355
+#: src/view/com/modals/EditImage.tsx:323
+#: src/view/com/modals/EditProfile.tsx:249
+#: src/view/com/modals/InAppBrowserConsent.tsx:78
+#: src/view/com/modals/LinkWarning.tsx:87
+#: src/view/com/modals/Repost.tsx:87
+#: src/view/com/modals/VerifyEmail.tsx:247
+#: src/view/com/modals/VerifyEmail.tsx:253
+#: src/view/com/modals/Waitlist.tsx:142
+#: src/view/screens/Search/Search.tsx:716
+#: src/view/shell/desktop/Search.tsx:238
+msgid "Cancel"
+msgstr "Cancella"
+
+#: src/view/com/modals/Confirm.tsx:88
+#: src/view/com/modals/Confirm.tsx:91
+#: src/view/com/modals/CreateOrEditList.tsx:360
+#: src/view/com/modals/DeleteAccount.tsx:156
+#: src/view/com/modals/DeleteAccount.tsx:234
msgctxt "action"
msgid "Cancel"
msgstr "Cancella"
-#: src/components/Prompt.tsx:92 src/view/com/composer/Composer.tsx:300
-#: src/view/com/composer/Composer.tsx:305
-#: src/view/com/modals/ChangeEmail.tsx:218
-#: src/view/com/modals/ChangeEmail.tsx:220
-#: src/view/com/modals/CreateOrEditList.tsx:286
-#: src/view/com/modals/EditImage.tsx:323
-#: src/view/com/modals/EditProfile.tsx:249
-#: src/view/com/modals/InAppBrowserConsent.tsx:78
-#: src/view/com/modals/LinkWarning.tsx:87 src/view/com/modals/Repost.tsx:87
-#: src/view/com/modals/VerifyEmail.tsx:247
-#: src/view/com/modals/VerifyEmail.tsx:253 src/view/com/modals/Waitlist.tsx:142
-#: src/view/screens/Search/Search.tsx:609 src/view/shell/desktop/Search.tsx:238
-msgid "Cancel"
-msgstr "Cancella"
-
-#: src/view/com/modals/DeleteAccount.tsx:148
-#: src/view/com/modals/DeleteAccount.tsx:226
+#: src/view/com/modals/DeleteAccount.tsx:152
+#: src/view/com/modals/DeleteAccount.tsx:230
msgid "Cancel account deletion"
msgstr "Annulla la cancellazione dell'account"
+#~ msgid "Cancel add image alt text"
+#~ msgstr "CancelĀ·la afegir text a la imatge"
+
#: src/view/com/modals/ChangeHandle.tsx:149
msgid "Cancel change handle"
msgstr "Annulla il cambio del tuo nome utente"
@@ -524,16 +599,20 @@ msgstr "Annulla la ricerca"
msgid "Cancel waitlist signup"
msgstr "Annulla l'iscrizione alla lista d'attesa"
-#: src/view/screens/Settings.tsx:334
+#: src/view/screens/Settings/index.tsx:334
msgctxt "action"
msgid "Change"
msgstr "Cambia"
-#: src/view/screens/Settings.tsx:662 src/view/screens/Settings.tsx:671
+#~ msgid "Change"
+#~ msgstr "Canvia"
+
+#: src/view/screens/Settings/index.tsx:696
msgid "Change handle"
msgstr "Cambia il nome utente"
#: src/view/com/modals/ChangeHandle.tsx:161
+#: src/view/screens/Settings/index.tsx:705
msgid "Change Handle"
msgstr "Cambia il Nome Utente"
@@ -541,14 +620,31 @@ msgstr "Cambia il Nome Utente"
msgid "Change my email"
msgstr "Cambia la mia email"
-#: src/view/com/composer/select-language/SuggestedLanguage.tsx:78
+#: src/view/screens/Settings/index.tsx:732
+msgid "Change password"
+msgstr ""
+
+#: src/view/screens/Settings/index.tsx:741
+msgid "Change Password"
+msgstr ""
+
+#: src/view/com/composer/select-language/SuggestedLanguage.tsx:73
msgid "Change post language to {0}"
msgstr "Cambia la lingua del post a {0}"
+#: src/view/screens/Settings/index.tsx:733
+msgid "Change your Bluesky password"
+msgstr ""
+
#: src/view/com/modals/ChangeEmail.tsx:109
msgid "Change Your Email"
msgstr "Cambia la tua email"
+#: src/screens/Deactivated.tsx:72
+#: src/screens/Deactivated.tsx:76
+msgid "Check my status"
+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 "Dai un'occhiata ad alcuni feed consigliati. Clicca + per aggiungerli al tuo elenco dei feeds."
@@ -557,7 +653,7 @@ msgstr "Dai un'occhiata ad alcuni feed consigliati. Clicca + per aggiungerli al
msgid "Check out some recommended users. Follow them to see similar users."
msgstr "Scopri alcuni utenti consigliati. Seguili per vedere utenti simili."
-#: src/view/com/modals/DeleteAccount.tsx:165
+#: src/view/com/modals/DeleteAccount.tsx:169
msgid "Check your inbox for an email with the confirmation code to enter below:"
msgstr "Controlla la tua posta in arrivo, dovrebbe contenere un'e-mail con il codice di conferma da inserire di seguito:"
@@ -565,41 +661,51 @@ msgstr "Controlla la tua posta in arrivo, dovrebbe contenere un'e-mail con il co
msgid "Choose \"Everybody\" or \"Nobody\""
msgstr "Scegli \"Tutti\" o \"Nessuno\""
-#: src/view/screens/Settings.tsx:663
+#: src/view/screens/Settings/index.tsx:697
msgid "Choose a new Bluesky username or create"
msgstr "Scegli un nuovo nome utente Bluesky o creane uno"
-#: src/view/com/modals/ServerInput.tsx:38
+#: src/view/com/auth/server-input/index.tsx:79
msgid "Choose Service"
msgstr "Scegli il servizio"
+#: src/screens/Onboarding/StepFinished.tsx:135
+msgid "Choose the algorithms that power your custom feeds."
+msgstr ""
+
#: src/view/com/auth/onboarding/WelcomeDesktop.tsx:83
#: src/view/com/auth/onboarding/WelcomeMobile.tsx:83
msgid "Choose the algorithms that power your experience with custom feeds."
msgstr "Scegli gli algoritmi che alimentano la tua esperienza con feed personalizzati."
-#: src/view/com/auth/create/Step1.tsx:163
+#: src/screens/Onboarding/StepAlgoFeeds/index.tsx:103
+msgid "Choose your main feeds"
+msgstr ""
+
+#: src/view/com/auth/create/Step1.tsx:219
msgid "Choose your password"
msgstr "Scegli la tua password"
-#: src/view/screens/Settings.tsx:767 src/view/screens/Settings.tsx:768
+#: src/view/screens/Settings/index.tsx:834
+#: src/view/screens/Settings/index.tsx:835
msgid "Clear all legacy storage data"
msgstr "Cancella tutti i dati legacy in archivio"
-#: src/view/screens/Settings.tsx:770
+#: src/view/screens/Settings/index.tsx:837
msgid "Clear all legacy storage data (restart after this)"
msgstr "Cancella tutti i dati legacy in archivio (poi ricomincia)"
-#: src/view/screens/Settings.tsx:779 src/view/screens/Settings.tsx:780
+#: src/view/screens/Settings/index.tsx:846
+#: src/view/screens/Settings/index.tsx:847
msgid "Clear all storage data"
msgstr "Cancella tutti i dati in archivio"
-#: src/view/screens/Settings.tsx:782
+#: src/view/screens/Settings/index.tsx:849
msgid "Clear all storage data (restart after this)"
msgstr "Cancella tutti i dati in archivio (poi ricomincia)"
-#: src/view/com/util/forms/SearchInput.tsx:74
-#: src/view/screens/Search/Search.tsx:590
+#: src/view/com/util/forms/SearchInput.tsx:88
+#: src/view/screens/Search/Search.tsx:697
msgid "Clear search query"
msgstr "Annulla la ricerca"
@@ -607,7 +713,22 @@ msgstr "Annulla la ricerca"
msgid "click here"
msgstr "clicca qui"
-#: src/components/Dialog/index.web.tsx:78
+#: src/components/RichText.tsx:189
+#: src/components/TagMenu/index.web.tsx:125
+msgid "Click here to open tag menu for {tag}"
+msgstr ""
+
+#: src/screens/Onboarding/index.tsx:35
+msgid "Climate"
+msgstr ""
+
+#: src/view/com/modals/ChangePassword.tsx:265
+#: src/view/com/modals/ChangePassword.tsx:268
+msgid "Close"
+msgstr ""
+
+#: src/components/Dialog/index.web.tsx:80
+#: src/components/Dialog/index.web.tsx:194
msgid "Close active dialog"
msgstr "Chiudi il dialogo attivo"
@@ -623,7 +744,7 @@ msgstr "Chiudi il bottom drawer"
msgid "Close image"
msgstr "Chiudi l'immagine"
-#: src/view/com/lightbox/Lightbox.web.tsx:112
+#: src/view/com/lightbox/Lightbox.web.tsx:119
msgid "Close image viewer"
msgstr "Chiudi il visualizzatore di immagini"
@@ -631,6 +752,10 @@ msgstr "Chiudi il visualizzatore di immagini"
msgid "Close navigation footer"
msgstr "Chiudi la navigazione del footer"
+#: src/components/TagMenu/index.tsx:266
+msgid "Close this dialog"
+msgstr ""
+
#: src/view/shell/index.web.tsx:52
msgid "Closes bottom navigation bar"
msgstr "Chiude la barra di navigazione in basso"
@@ -639,7 +764,7 @@ msgstr "Chiude la barra di navigazione in basso"
msgid "Closes password update alert"
msgstr "Chiude l'avviso di aggiornamento della password"
-#: src/view/com/composer/Composer.tsx:302
+#: src/view/com/composer/Composer.tsx:309
msgid "Closes post composer and discards post draft"
msgstr "Chiude l'editore del post ed elimina la bozza del post"
@@ -647,15 +772,32 @@ msgstr "Chiude l'editore del post ed elimina la bozza del post"
msgid "Closes viewer for header image"
msgstr "Chiude il visualizzatore dell'immagine di intestazione"
-#: src/view/com/notifications/FeedItem.tsx:321
+#: src/view/com/notifications/FeedItem.tsx:317
msgid "Collapses list of users for a given notification"
msgstr "Comprime l'elenco degli utenti per una determinata notifica"
-#: src/Navigation.tsx:227 src/view/screens/CommunityGuidelines.tsx:32
+#: src/screens/Onboarding/index.tsx:41
+msgid "Comedy"
+msgstr ""
+
+#: src/screens/Onboarding/index.tsx:27
+msgid "Comics"
+msgstr ""
+
+#: src/Navigation.tsx:227
+#: src/view/screens/CommunityGuidelines.tsx:32
msgid "Community Guidelines"
msgstr "Linee guida della community"
-#: src/view/com/composer/Composer.tsx:417
+#: src/screens/Onboarding/StepFinished.tsx:148
+msgid "Complete onboarding and start using your account"
+msgstr ""
+
+#: src/view/com/auth/create/Step3.tsx:73
+msgid "Complete the challenge"
+msgstr ""
+
+#: src/view/com/composer/Composer.tsx:424
msgid "Compose posts up to {MAX_GRAPHEME_LENGTH} characters in length"
msgstr "Componi un post fino a {MAX_GRAPHEME_LENGTH} caratteri"
@@ -663,20 +805,26 @@ msgstr "Componi un post fino a {MAX_GRAPHEME_LENGTH} caratteri"
msgid "Compose reply"
msgstr "Scrivi la risposta"
-#: src/view/com/modals/Confirm.tsx:75 src/view/com/modals/Confirm.tsx:78
-msgctxt "action"
-msgid "Confirm"
-msgstr "Conferma"
+#: src/screens/Onboarding/StepModeration/ModerationOption.tsx:67
+msgid "Configure content filtering setting for category: {0}"
+msgstr ""
-#: src/components/Prompt.tsx:114 src/view/com/modals/AppealLabel.tsx:98
+#: src/components/Prompt.tsx:113
+#: src/view/com/modals/AppealLabel.tsx:98
#: src/view/com/modals/SelfLabel.tsx:154
#: src/view/com/modals/VerifyEmail.tsx:231
#: src/view/com/modals/VerifyEmail.tsx:233
-#: src/view/screens/PreferencesHomeFeed.tsx:308
+#: src/view/screens/PreferencesFollowingFeed.tsx:308
#: src/view/screens/PreferencesThreads.tsx:159
msgid "Confirm"
msgstr "Conferma"
+#: src/view/com/modals/Confirm.tsx:75
+#: src/view/com/modals/Confirm.tsx:78
+msgctxt "action"
+msgid "Confirm"
+msgstr "Conferma"
+
#: src/view/com/modals/ChangeEmail.tsx:193
#: src/view/com/modals/ChangeEmail.tsx:195
msgid "Confirm Change"
@@ -686,16 +834,16 @@ msgstr "Conferma il cambio"
msgid "Confirm content language settings"
msgstr "Conferma le impostazioni della lingua del contenuto"
-#: src/view/com/modals/DeleteAccount.tsx:216
+#: src/view/com/modals/DeleteAccount.tsx:220
msgid "Confirm delete account"
msgstr "Conferma l'eliminazione dell'account"
-#: src/view/com/modals/ContentFilteringSettings.tsx:151
+#: src/view/com/modals/ContentFilteringSettings.tsx:156
msgid "Confirm your age to enable adult content."
msgstr "Conferma la tua etĆ per abilitare i contenuti per adulti."
#: src/view/com/modals/ChangeEmail.tsx:157
-#: src/view/com/modals/DeleteAccount.tsx:178
+#: src/view/com/modals/DeleteAccount.tsx:182
#: src/view/com/modals/VerifyEmail.tsx:165
msgid "Confirmation code"
msgstr "Codice di conferma"
@@ -704,16 +852,16 @@ msgstr "Codice di conferma"
msgid "Confirms signing up {email} to the waitlist"
msgstr "Conferma l'iscrizione di {email} alla lista d'attesa"
-#: src/view/com/auth/create/CreateAccount.tsx:175
-#: src/view/com/auth/login/LoginForm.tsx:275
+#: src/view/com/auth/create/CreateAccount.tsx:193
+#: src/view/com/auth/login/LoginForm.tsx:278
msgid "Connecting..."
msgstr "Connessione in corso..."
-#: src/view/com/auth/create/CreateAccount.tsx:195
+#: src/view/com/auth/create/CreateAccount.tsx:213
msgid "Contact support"
msgstr "Contatta il supporto"
-#: src/view/screens/Moderation.tsx:81
+#: src/view/screens/Moderation.tsx:83
msgid "Content filtering"
msgstr "Filtro dei contenuti"
@@ -739,86 +887,111 @@ msgstr "Avviso sul Contenuto"
msgid "Content warnings"
msgstr "Avviso sui contenuti"
+#: src/screens/Onboarding/StepAlgoFeeds/index.tsx:170
+#: src/screens/Onboarding/StepFollowingFeed.tsx:153
+#: src/screens/Onboarding/StepInterests/index.tsx:248
+#: src/screens/Onboarding/StepModeration/index.tsx:118
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:114
#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:148
#: src/view/com/auth/onboarding/RecommendedFollows.tsx:209
msgid "Continue"
msgstr "Continua"
-#: src/view/com/modals/AddAppPasswords.tsx:197
+#: src/screens/Onboarding/StepFollowingFeed.tsx:150
+#: src/screens/Onboarding/StepInterests/index.tsx:245
+#: src/screens/Onboarding/StepModeration/index.tsx:115
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:111
+msgid "Continue to next step"
+msgstr ""
+
+#: src/screens/Onboarding/StepAlgoFeeds/index.tsx:167
+msgid "Continue to the next step"
+msgstr ""
+
+#: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:191
+msgid "Continue to the next step without following any accounts"
+msgstr ""
+
+#: src/screens/Onboarding/index.tsx:44
+msgid "Cooking"
+msgstr ""
+
+#: src/view/com/modals/AddAppPasswords.tsx:195
#: src/view/com/modals/InviteCodes.tsx:182
msgid "Copied"
msgstr "Copiato"
-#: src/view/screens/Settings.tsx:243
+#: src/view/screens/Settings/index.tsx:241
msgid "Copied build version to clipboard"
msgstr "Versione di build copiata nella clipboard"
-#: src/view/com/modals/AddAppPasswords.tsx:75
+#: src/view/com/modals/AddAppPasswords.tsx:76
#: src/view/com/modals/InviteCodes.tsx:152
-#: src/view/com/util/forms/PostDropdownBtn.tsx:110
+#: src/view/com/util/forms/PostDropdownBtn.tsx:143
msgid "Copied to clipboard"
msgstr "Copiato nel clipboard"
-#: src/view/com/modals/AddAppPasswords.tsx:191
+#: src/view/com/modals/AddAppPasswords.tsx:189
msgid "Copies app password"
msgstr "Copia la password dell'app"
-#: src/view/com/modals/AddAppPasswords.tsx:190
+#: src/view/com/modals/AddAppPasswords.tsx:188
msgid "Copy"
msgstr "Copia"
-#: src/view/screens/ProfileList.tsx:396
+#: src/view/screens/ProfileList.tsx:418
msgid "Copy link to list"
msgstr "Copia il link alla lista"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:151
+#: src/view/com/util/forms/PostDropdownBtn.tsx:184
msgid "Copy link to post"
msgstr "Copia il link al post"
-#: src/view/com/profile/ProfileHeader.tsx:342
+#: src/view/com/profile/ProfileHeader.tsx:295
msgid "Copy link to profile"
msgstr "Copia il link al profilo"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:137
+#: src/view/com/util/forms/PostDropdownBtn.tsx:170
msgid "Copy post text"
msgstr "Copia il testo del post"
-#: src/Navigation.tsx:232 src/view/screens/CopyrightPolicy.tsx:29
+#: src/Navigation.tsx:232
+#: src/view/screens/CopyrightPolicy.tsx:29
msgid "Copyright Policy"
msgstr "Politica sul diritto d'autore"
-#: src/view/screens/ProfileFeed.tsx:95
+#: src/view/screens/ProfileFeed.tsx:97
msgid "Could not load feed"
msgstr "Feed non caricato"
-#: src/view/screens/ProfileList.tsx:867
+#: src/view/screens/ProfileList.tsx:888
msgid "Could not load list"
msgstr "No si ĆØ potuto caricare la lista"
-#: src/view/com/auth/create/Step2.tsx:89
-msgid "Country"
-msgstr "Paese"
+#: src/view/com/auth/create/Step2.tsx:91
+#~ msgid "Country"
+#~ msgstr "Paese"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:62
-#: src/view/com/auth/SplashScreen.tsx:46
-#: src/view/com/auth/SplashScreen.web.tsx:77
+#: src/view/com/auth/SplashScreen.tsx:71
+#: src/view/com/auth/SplashScreen.web.tsx:81
msgid "Create a new account"
msgstr "Crea un nuovo account"
-#: src/view/screens/Settings.tsx:384
+#: src/view/screens/Settings/index.tsx:384
msgid "Create a new Bluesky account"
msgstr "Crea un nuovo Bluesky account"
-#: src/view/com/auth/create/CreateAccount.tsx:122
+#: src/view/com/auth/create/CreateAccount.tsx:133
msgid "Create Account"
msgstr "Crea un account"
-#: src/view/com/modals/AddAppPasswords.tsx:228
+#: src/view/com/modals/AddAppPasswords.tsx:226
msgid "Create App Password"
msgstr "Crea un password per l'app"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:54
-#: src/view/com/auth/SplashScreen.tsx:43
+#: src/view/com/auth/SplashScreen.tsx:68
msgid "Create new account"
msgstr "Crea un nuovo account"
@@ -826,32 +999,46 @@ msgstr "Crea un nuovo account"
msgid "Created {0}"
msgstr "Creato {0}"
-#: src/view/screens/ProfileFeed.tsx:625
+#: src/view/screens/ProfileFeed.tsx:616
msgid "Created by <0/>"
msgstr "Creato da <0/>"
-#: src/view/screens/ProfileFeed.tsx:623
+#: src/view/screens/ProfileFeed.tsx:614
msgid "Created by you"
msgstr "Creato da te"
-#: src/view/com/composer/Composer.tsx:448
+#: src/view/com/composer/Composer.tsx:455
msgid "Creates a card with a thumbnail. The card links to {url}"
msgstr "Crea una scheda con una miniatura. La scheda si collega a {url}"
+#: src/screens/Onboarding/index.tsx:29
+msgid "Culture"
+msgstr ""
+
+#: src/view/com/auth/server-input/index.tsx:95
+#: src/view/com/auth/server-input/index.tsx:96
+msgid "Custom"
+msgstr ""
+
#: src/view/com/modals/ChangeHandle.tsx:389
-#: src/view/com/modals/ServerInput.tsx:102
msgid "Custom domain"
msgstr "Dominio personalizzato"
+#: src/screens/Onboarding/StepAlgoFeeds/index.tsx:106
+#: src/view/screens/Feeds.tsx:692
+msgid "Custom feeds built by the community bring you new experiences and help you find the content you love."
+msgstr ""
+
#: src/view/screens/PreferencesExternalEmbeds.tsx:55
msgid "Customize media from external sites."
msgstr "Personalizza i media da i siti esterni."
#: src/view/screens/Settings.tsx:687
-msgid "Danger Zone"
-msgstr "Zona di Pericolo"
+#~ msgid "Danger Zone"
+#~ msgstr "Zona di Pericolo"
-#: src/view/screens/Settings.tsx:479
+#: src/view/screens/Settings/index.tsx:485
+#: src/view/screens/Settings/index.tsx:511
msgid "Dark"
msgstr "Scuro"
@@ -859,74 +1046,91 @@ msgstr "Scuro"
msgid "Dark mode"
msgstr "Aspetto scuro"
+#: src/view/screens/Settings/index.tsx:498
+msgid "Dark Theme"
+msgstr ""
+
#: src/view/screens/Debug.tsx:83
msgid "Debug panel"
msgstr "Pannello per il debug"
-#: src/view/screens/Settings.tsx:694
+#: src/view/screens/Settings/index.tsx:772
msgid "Delete account"
msgstr "Eliminare l'account"
-#: src/view/com/modals/DeleteAccount.tsx:83
+#: src/view/com/modals/DeleteAccount.tsx:87
msgid "Delete Account"
msgstr "Eliminare l'Account"
-#: src/view/screens/AppPasswords.tsx:222 src/view/screens/AppPasswords.tsx:242
+#: src/view/screens/AppPasswords.tsx:222
+#: src/view/screens/AppPasswords.tsx:242
msgid "Delete app password"
msgstr "Elimina la password dell'app"
-#: src/view/screens/ProfileList.tsx:363 src/view/screens/ProfileList.tsx:423
+#: src/view/screens/ProfileList.tsx:364
+#: src/view/screens/ProfileList.tsx:445
msgid "Delete List"
msgstr "Elimina la lista"
-#: src/view/com/modals/DeleteAccount.tsx:219
+#: src/view/com/modals/DeleteAccount.tsx:223
msgid "Delete my account"
msgstr "Cancella il mio account"
#: src/view/screens/Settings.tsx:706
-msgid "Delete my accountā¦"
-msgstr "Cancella il mio accountā¦"
+#~ msgid "Delete my accountā¦"
+#~ msgstr "Cancella il mio accountā¦"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:226
+#: src/view/screens/Settings/index.tsx:784
+msgid "Delete My Accountā¦"
+msgstr ""
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:273
msgid "Delete post"
msgstr "Elimina il post"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:230
+#: src/view/com/util/forms/PostDropdownBtn.tsx:277
msgid "Delete this post?"
msgstr "Elimina questo post?"
-#: src/view/com/util/post-embeds/QuoteEmbed.tsx:69
+#: src/view/com/util/post-embeds/QuoteEmbed.tsx:70
msgid "Deleted"
msgstr "Eliminato"
-#: src/view/com/post-thread/PostThread.tsx:246
+#: src/view/com/post-thread/PostThread.tsx:316
msgid "Deleted post."
msgstr "Post eliminato."
-#: src/view/com/modals/CreateOrEditList.tsx:237
-#: src/view/com/modals/CreateOrEditList.tsx:253
+#: src/view/com/modals/CreateOrEditList.tsx:300
+#: src/view/com/modals/CreateOrEditList.tsx:321
#: src/view/com/modals/EditProfile.tsx:198
#: src/view/com/modals/EditProfile.tsx:210
msgid "Description"
msgstr "Descrizione"
-#: src/view/screens/Settings.tsx:711
-msgid "Developer Tools"
-msgstr "Strumenti per sviluppatori"
+#~ msgid "Dev Server"
+#~ msgstr "Servidor de desenvolupament"
-#: src/view/com/composer/Composer.tsx:211
+#: src/view/screens/Settings.tsx:711
+#~ msgid "Developer Tools"
+#~ msgstr "Strumenti per sviluppatori"
+
+#: src/view/com/composer/Composer.tsx:218
msgid "Did you want to say anything?"
msgstr "Volevi dire qualcosa?"
-#: src/view/com/composer/Composer.tsx:144
+#: src/view/screens/Settings/index.tsx:504
+msgid "Dim"
+msgstr ""
+
+#: src/view/com/composer/Composer.tsx:151
msgid "Discard"
msgstr "Scartare"
-#: src/view/com/composer/Composer.tsx:138
+#: src/view/com/composer/Composer.tsx:145
msgid "Discard draft"
msgstr "Scarta la bozza"
-#: src/view/screens/Moderation.tsx:207
+#: src/view/screens/Moderation.tsx:226
msgid "Discourage apps from showing my account to logged-out users"
msgstr "Scoraggia le app dal mostrare il mio account agli utenti disconnessi"
@@ -936,8 +1140,12 @@ msgid "Discover new custom feeds"
msgstr "Scopri nuovi feed personalizzati"
#: src/view/screens/Feeds.tsx:409
-msgid "Discover new feeds"
-msgstr "Scopri nuovi feeds"
+#~ msgid "Discover new feeds"
+#~ msgstr "Scopri nuovi feeds"
+
+#: src/view/screens/Feeds.tsx:689
+msgid "Discover New Feeds"
+msgstr ""
#: src/view/com/modals/EditProfile.tsx:192
msgid "Display name"
@@ -951,31 +1159,36 @@ msgstr "Nome Visualizzato"
msgid "Domain verified!"
msgstr "Dominio verificato!"
-#: src/view/com/auth/create/Step1.tsx:114
+#: src/view/com/auth/create/Step1.tsx:170
msgid "Don't have an invite code?"
msgstr "Non hai un codice di invito?"
#: src/view/com/auth/onboarding/RecommendedFollows.tsx:86
#: src/view/com/modals/EditImage.tsx:333
#: 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/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/com/modals/UserAddRemoveLists.tsx:95
+#: src/view/com/modals/UserAddRemoveLists.tsx:98
#: src/view/screens/PreferencesThreads.tsx:162
msgctxt "action"
msgid "Done"
msgstr "Fatto"
-#: src/view/com/modals/AddAppPasswords.tsx:228
-#: src/view/com/modals/AltImage.tsx:115
+#: src/view/com/auth/server-input/index.tsx:165
+#: src/view/com/auth/server-input/index.tsx:166
+#: src/view/com/modals/AddAppPasswords.tsx:226
+#: src/view/com/modals/AltImage.tsx:139
#: 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/InviteCodes.tsx:80
#: src/view/com/modals/InviteCodes.tsx:123
#: src/view/com/modals/ListAddRemoveUsers.tsx:142
-#: src/view/screens/PreferencesHomeFeed.tsx:311
+#: src/view/screens/PreferencesFollowingFeed.tsx:311
+#: src/view/screens/Settings/ExportCarDialog.tsx:93
+#: src/view/screens/Settings/ExportCarDialog.tsx:94
msgid "Done"
msgstr "Fatto"
@@ -987,6 +1200,23 @@ msgstr "Fatto{extraText}"
msgid "Double tap to sign in"
msgstr "Usa il doppio tocco per accedere"
+#: src/view/screens/Settings/index.tsx:755
+msgid "Download Bluesky account data (repository)"
+msgstr ""
+
+#: src/view/screens/Settings/ExportCarDialog.tsx:59
+#: src/view/screens/Settings/ExportCarDialog.tsx:63
+msgid "Download CAR file"
+msgstr ""
+
+#: src/view/com/composer/text-input/TextInput.web.tsx:249
+msgid "Drop to add images"
+msgstr ""
+
+#: src/screens/Onboarding/StepModeration/AdultContentEnabledPref.tsx:111
+msgid "Due to Apple policies, adult content can only be enabled on the web after completing sign up."
+msgstr ""
+
#: src/view/com/modals/EditProfile.tsx:185
msgid "e.g. Alice Roberts"
msgstr "e.g. Anna Rossi"
@@ -995,19 +1225,19 @@ msgstr "e.g. Anna Rossi"
msgid "e.g. Artist, dog-lover, and avid reader."
msgstr "e.g. Artista, amo i gatti, mi piace leggere."
-#: src/view/com/modals/CreateOrEditList.tsx:223
+#: src/view/com/modals/CreateOrEditList.tsx:283
msgid "e.g. Great Posters"
msgstr "e.g. Gli utenti più seguiti"
-#: src/view/com/modals/CreateOrEditList.tsx:224
+#: src/view/com/modals/CreateOrEditList.tsx:284
msgid "e.g. Spammers"
msgstr "e.g. Spammers"
-#: src/view/com/modals/CreateOrEditList.tsx:244
+#: src/view/com/modals/CreateOrEditList.tsx:312
msgid "e.g. The posters who never miss."
msgstr "e.g. Utenti più prolifici."
-#: src/view/com/modals/CreateOrEditList.tsx:245
+#: src/view/com/modals/CreateOrEditList.tsx:313
msgid "e.g. Users that repeatedly reply with ads."
msgstr "e.g. Utenti che rispondono ripetutamente con annunci."
@@ -1025,15 +1255,16 @@ msgstr "Modifica"
msgid "Edit image"
msgstr "Modifica l'immagine"
-#: src/view/screens/ProfileList.tsx:411
+#: src/view/screens/ProfileList.tsx:433
msgid "Edit list details"
msgstr "Modifica i dettagli della lista"
-#: src/view/com/modals/CreateOrEditList.tsx:192
+#: src/view/com/modals/CreateOrEditList.tsx:250
msgid "Edit Moderation List"
msgstr "Modifica l'elenco di moderazione"
-#: src/Navigation.tsx:242 src/view/screens/Feeds.tsx:371
+#: src/Navigation.tsx:242
+#: src/view/screens/Feeds.tsx:434
#: src/view/screens/SavedFeeds.tsx:84
msgid "Edit My Feeds"
msgstr "Modifica i miei feeds"
@@ -1042,19 +1273,20 @@ msgstr "Modifica i miei feeds"
msgid "Edit my profile"
msgstr "Modifica il mio profilo"
-#: src/view/com/profile/ProfileHeader.tsx:457
+#: src/view/com/profile/ProfileHeader.tsx:418
msgid "Edit profile"
msgstr "Modifica il profilo"
-#: src/view/com/profile/ProfileHeader.tsx:462
+#: src/view/com/profile/ProfileHeader.tsx:423
msgid "Edit Profile"
msgstr "Modifica il Profilo"
-#: src/view/screens/Feeds.tsx:334
+#: src/view/com/home/HomeHeaderLayout.web.tsx:59
+#: src/view/screens/Feeds.tsx:355
msgid "Edit Saved Feeds"
msgstr "Modifica i feeds memorizzati"
-#: src/view/com/modals/CreateOrEditList.tsx:187
+#: src/view/com/modals/CreateOrEditList.tsx:245
msgid "Edit User List"
msgstr "Modifica l'elenco degli utenti"
@@ -1066,16 +1298,19 @@ msgstr "Modifica il tuo nome visualizzato"
msgid "Edit your profile description"
msgstr "Modifica la descrizione del tuo profilo"
-#: src/view/com/auth/create/Step1.tsx:143
-#: src/view/com/auth/create/Step2.tsx:192
-#: src/view/com/auth/create/Step2.tsx:266
-#: src/view/com/auth/login/ForgotPasswordForm.tsx:152
-#: src/view/com/modals/ChangeEmail.tsx:141 src/view/com/modals/Waitlist.tsx:88
+#: src/screens/Onboarding/index.tsx:34
+msgid "Education"
+msgstr ""
+
+#: src/view/com/auth/create/Step1.tsx:199
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:156
+#: src/view/com/modals/ChangeEmail.tsx:141
+#: src/view/com/modals/Waitlist.tsx:88
msgid "Email"
msgstr "Email"
-#: src/view/com/auth/create/Step1.tsx:134
-#: src/view/com/auth/login/ForgotPasswordForm.tsx:143
+#: src/view/com/auth/create/Step1.tsx:190
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:147
msgid "Email address"
msgstr "Indirizzo email"
@@ -1092,7 +1327,7 @@ msgstr "Email Aggiornata"
msgid "Email verified"
msgstr "Email verificata"
-#: src/view/screens/Settings.tsx:312
+#: src/view/screens/Settings/index.tsx:312
msgid "Email:"
msgstr "Email:"
@@ -1100,10 +1335,15 @@ msgstr "Email:"
msgid "Enable {0} only"
msgstr "Attiva {0} solo"
-#: src/view/com/modals/ContentFilteringSettings.tsx:162
+#: src/view/com/modals/ContentFilteringSettings.tsx:167
msgid "Enable Adult Content"
msgstr "Attiva Contenuto per Adulti"
+#: src/screens/Onboarding/StepModeration/AdultContentEnabledPref.tsx:76
+#: src/screens/Onboarding/StepModeration/AdultContentEnabledPref.tsx:77
+msgid "Enable adult content in your feeds"
+msgstr ""
+
#: src/view/com/modals/EmbedConsent.tsx:97
msgid "Enable External Media"
msgstr "Attiva Media Esterna"
@@ -1112,31 +1352,43 @@ msgstr "Attiva Media Esterna"
msgid "Enable media players for"
msgstr "Attiva i lettori multimediali per"
-#: src/view/screens/PreferencesHomeFeed.tsx:147
+#: src/view/screens/PreferencesFollowingFeed.tsx:147
msgid "Enable this setting to only see replies between people you follow."
msgstr "Abilita questa impostazione per vedere solo le risposte delle persone che segui."
-#: src/view/screens/Profile.tsx:427
+#: src/view/screens/Profile.tsx:455
msgid "End of feed"
msgstr "Fine del feed"
-#: src/view/com/modals/AddAppPasswords.tsx:165
+#: src/view/com/modals/AddAppPasswords.tsx:166
msgid "Enter a name for this App Password"
msgstr "Inserisci un nome per questa password dell'app"
+#: src/components/dialogs/MutedWords.tsx:87
+#: src/components/dialogs/MutedWords.tsx:88
+msgid "Enter a word or tag"
+msgstr ""
+
#: src/view/com/modals/VerifyEmail.tsx:105
msgid "Enter Confirmation Code"
msgstr "Inserire il codice di conferma"
+#~ msgid "Enter the address of your provider:"
+#~ msgstr "Introdueix l'adreça del teu proveïdor:"
+
+#: src/view/com/modals/ChangePassword.tsx:151
+msgid "Enter the code you received to change your password."
+msgstr ""
+
#: src/view/com/modals/ChangeHandle.tsx:371
msgid "Enter the domain you want to use"
msgstr "Inserisci il dominio che vuoi utilizzare"
-#: src/view/com/auth/login/ForgotPasswordForm.tsx:103
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:107
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 "Inserisci l'e-mail che hai utilizzato per creare il tuo account. Ti invieremo un \"codice di reset\" in modo che tu possa impostare una nuova password."
-#: src/view/com/auth/create/Step1.tsx:195
+#: src/view/com/auth/create/Step1.tsx:251
#: src/view/com/modals/BirthDateSettings.tsx:74
msgid "Enter your birth date"
msgstr "Inserisci la tua data di nascita"
@@ -1145,7 +1397,7 @@ msgstr "Inserisci la tua data di nascita"
msgid "Enter your email"
msgstr "Inserisci la tua email"
-#: src/view/com/auth/create/Step1.tsx:139
+#: src/view/com/auth/create/Step1.tsx:195
msgid "Enter your email address"
msgstr "Inserisci il tuo indirizzo email"
@@ -1157,15 +1409,19 @@ msgstr "Inserisci la tua nuova email qui sopra"
msgid "Enter your new email address below."
msgstr "Inserisci il tuo nuovo indirizzo email qui sotto."
-#: src/view/com/auth/create/Step2.tsx:186
-msgid "Enter your phone number"
-msgstr "Inserisci il tuo numero di telefono"
+#: src/view/com/auth/create/Step2.tsx:188
+#~ msgid "Enter your phone number"
+#~ msgstr "Inserisci il tuo numero di telefono"
#: src/view/com/auth/login/Login.tsx:99
msgid "Enter your username and password"
msgstr "Inserisci il tuo nome di utente e la tua password"
-#: src/view/screens/Search/Search.tsx:107
+#: src/view/com/auth/create/Step3.tsx:67
+msgid "Error receiving captcha response."
+msgstr ""
+
+#: src/view/screens/Search/Search.tsx:110
msgid "Error:"
msgstr "Errore:"
@@ -1177,7 +1433,7 @@ msgstr "Tutti"
msgid "Exits handle change process"
msgstr "Uscita dal processo di modifica"
-#: src/view/com/lightbox/Lightbox.web.tsx:113
+#: src/view/com/lightbox/Lightbox.web.tsx:120
msgid "Exits image view"
msgstr "Uscita dalla visualizzazione dell'immagine"
@@ -1190,7 +1446,7 @@ msgstr "Uscita dall'inserzione della domanda di ricerca"
msgid "Exits signing up for waitlist with {email}"
msgstr "Uscita dall'iscrizione alla lista d'attesa con {email}"
-#: src/view/com/lightbox/Lightbox.web.tsx:156
+#: src/view/com/lightbox/Lightbox.web.tsx:163
msgid "Expand alt text"
msgstr "Ampliare il testo alternativo"
@@ -1199,6 +1455,15 @@ msgstr "Ampliare il testo alternativo"
msgid "Expand or collapse the full post you are replying to"
msgstr "Espandi o comprimi l'intero post a cui stai rispondendo"
+#: src/view/screens/Settings/index.tsx:753
+msgid "Export my data"
+msgstr ""
+
+#: src/view/screens/Settings/ExportCarDialog.tsx:44
+#: src/view/screens/Settings/index.tsx:764
+msgid "Export My Data"
+msgstr ""
+
#: src/view/com/modals/EmbedConsent.tsx:64
msgid "External Media"
msgstr "Media esterni"
@@ -1208,25 +1473,26 @@ msgstr "Media esterni"
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 "I multimediali esterni possono consentire ai siti web di raccogliere informazioni su di te e sul tuo dispositivo. Nessuna informazione viene inviata o richiesta finchƩ non si preme il pulsante \"Riproduci\"."
-#: src/Navigation.tsx:258 src/view/screens/PreferencesExternalEmbeds.tsx:52
-#: src/view/screens/Settings.tsx:623
+#: src/Navigation.tsx:261
+#: src/view/screens/PreferencesExternalEmbeds.tsx:52
+#: src/view/screens/Settings/index.tsx:657
msgid "External Media Preferences"
msgstr "Preferenze multimediali esterni"
-#: src/view/screens/Settings.tsx:614
+#: src/view/screens/Settings/index.tsx:648
msgid "External media settings"
msgstr "Impostazioni multimediali esterni"
-#: src/view/com/modals/AddAppPasswords.tsx:114
-#: src/view/com/modals/AddAppPasswords.tsx:118
+#: src/view/com/modals/AddAppPasswords.tsx:115
+#: src/view/com/modals/AddAppPasswords.tsx:119
msgid "Failed to create app password."
msgstr "Impossibile creare la password dell'app."
-#: src/view/com/modals/CreateOrEditList.tsx:148
+#: src/view/com/modals/CreateOrEditList.tsx:206
msgid "Failed to create the list. Check your internet connection and try again."
msgstr "Impossibile creare l'elenco. Controlla la connessione Internet e riprova."
-#: src/view/com/util/forms/PostDropdownBtn.tsx:86
+#: src/view/com/util/forms/PostDropdownBtn.tsx:110
msgid "Failed to delete post, please try again"
msgstr "Non possiamo eliminare il post, riprova di nuovo"
@@ -1239,26 +1505,31 @@ msgstr "Non possiamo caricare i feed consigliati"
msgid "Feed"
msgstr "Feed"
-#: src/view/com/feeds/FeedSourceCard.tsx:229
+#: src/view/com/feeds/FeedSourceCard.tsx:231
msgid "Feed by {0}"
msgstr "Feed realizzato da {0}"
-#: src/view/screens/Feeds.tsx:560
+#: src/view/screens/Feeds.tsx:605
msgid "Feed offline"
msgstr "Feed offline"
#: src/view/com/feeds/FeedPage.tsx:143
-msgid "Feed Preferences"
-msgstr "Preferenze del feed"
+#~ msgid "Feed Preferences"
+#~ msgstr "Preferenze del feed"
-#: src/view/shell/desktop/RightNav.tsx:73 src/view/shell/Drawer.tsx:314
+#: src/view/shell/desktop/RightNav.tsx:61
+#: src/view/shell/Drawer.tsx:311
msgid "Feedback"
msgstr "Commenti"
-#: src/Navigation.tsx:440 src/view/screens/Feeds.tsx:479
-#: 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:479
-#: src/view/shell/Drawer.tsx:480
+#: src/Navigation.tsx:445
+#: src/view/screens/Feeds.tsx:419
+#: src/view/screens/Feeds.tsx:524
+#: src/view/screens/Profile.tsx:184
+#: src/view/shell/bottom-bar/BottomBar.tsx:181
+#: src/view/shell/desktop/LeftNav.tsx:342
+#: src/view/shell/Drawer.tsx:476
+#: src/view/shell/Drawer.tsx:477
msgid "Feeds"
msgstr "Feeds"
@@ -1270,17 +1541,25 @@ msgstr "I feed vengono creati dagli utenti per curare i contenuti. Scegli alcuni
msgid "Feeds are custom algorithms that users build with a little coding expertise. <0/> for more information."
msgstr "I feed sono algoritmi personalizzati che gli utenti creano con un minimo di esperienza nella codifica. Vedi <0/> per ulteriori informazioni."
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:76
+msgid "Feeds can be topical as well!"
+msgstr ""
+
+#: src/screens/Onboarding/StepFinished.tsx:151
+msgid "Finalizing"
+msgstr ""
+
#: src/view/com/posts/CustomFeedEmptyState.tsx:47
#: src/view/com/posts/FollowingEmptyState.tsx:57
#: src/view/com/posts/FollowingEndOfFeed.tsx:58
msgid "Find accounts to follow"
msgstr "Trova account da seguire"
-#: src/view/screens/Search/Search.tsx:429
+#: src/view/screens/Search/Search.tsx:440
msgid "Find users on Bluesky"
msgstr "Trova utenti su Bluesky"
-#: src/view/screens/Search/Search.tsx:427
+#: src/view/screens/Search/Search.tsx:438
msgid "Find users with the search tool on the right"
msgstr "Trova gli utenti con lo strumento di ricerca sulla destra"
@@ -1288,35 +1567,60 @@ msgstr "Trova gli utenti con lo strumento di ricerca sulla destra"
msgid "Finding similar accounts..."
msgstr "Trovare account similiā¦"
+#: src/view/screens/PreferencesFollowingFeed.tsx:111
+msgid "Fine-tune the content you see on your Following feed."
+msgstr ""
+
#: src/view/screens/PreferencesHomeFeed.tsx:111
-msgid "Fine-tune the content you see on your home screen."
-msgstr "Ottimizza il contenuto che vedi nella pagina d'inizio."
+#~ msgid "Fine-tune the content you see on your home screen."
+#~ msgstr "Ottimizza il contenuto che vedi nella pagina d'inizio."
#: src/view/screens/PreferencesThreads.tsx:60
msgid "Fine-tune the discussion threads."
msgstr "Ottimizza i la visualizzazione delle discussioni."
+#: src/screens/Onboarding/index.tsx:38
+msgid "Fitness"
+msgstr ""
+
+#: src/screens/Onboarding/StepFinished.tsx:131
+msgid "Flexible"
+msgstr ""
+
#: src/view/com/modals/EditImage.tsx:115
msgid "Flip horizontal"
msgstr "Gira in orizzontale"
-#: src/view/com/modals/EditImage.tsx:120 src/view/com/modals/EditImage.tsx:287
+#: src/view/com/modals/EditImage.tsx:120
+#: src/view/com/modals/EditImage.tsx:287
msgid "Flip vertically"
msgstr "Gira in verticale"
+#: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:181
+#: src/view/com/post-thread/PostThreadFollowBtn.tsx:136
+#: src/view/com/profile/ProfileHeader.tsx:513
+msgid "Follow"
+msgstr "Segui"
+
#: src/view/com/profile/FollowButton.tsx:64
msgctxt "action"
msgid "Follow"
msgstr "Segui"
-#: src/view/com/profile/ProfileHeader.tsx:552
-msgid "Follow"
-msgstr "Segui"
-
-#: src/view/com/profile/ProfileHeader.tsx:543
+#: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:58
+#: src/view/com/post-thread/PostThreadFollowBtn.tsx:122
+#: src/view/com/profile/ProfileHeader.tsx:504
msgid "Follow {0}"
msgstr "Segui {0}"
+#: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:179
+msgid "Follow All"
+msgstr ""
+
+#: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:174
+msgid "Follow selected accounts and continue to the next step"
+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 "Segui alcuni utenti per iniziare. Possiamo consigliarti più utenti in base a chi trovi interessante."
@@ -1329,7 +1633,7 @@ msgstr "Seguito da {0}"
msgid "Followed users"
msgstr "Utenti seguiti"
-#: src/view/screens/PreferencesHomeFeed.tsx:154
+#: src/view/screens/PreferencesFollowingFeed.tsx:154
msgid "Followed users only"
msgstr "Solo utenti seguiti"
@@ -1341,16 +1645,28 @@ msgstr "ti segue"
msgid "Followers"
msgstr "Seguiti"
-#: src/view/com/profile/ProfileHeader.tsx:534
+#~ msgid "following"
+#~ msgstr "seguint"
+
+#: src/view/com/post-thread/PostThreadFollowBtn.tsx:136
+#: src/view/com/profile/ProfileHeader.tsx:495
#: src/view/screens/ProfileFollows.tsx:25
msgid "Following"
msgstr "Seguiti"
-#: src/view/com/profile/ProfileHeader.tsx:196
+#: src/view/com/profile/ProfileHeader.tsx:149
msgid "Following {0}"
msgstr "Seguiti {0}"
-#: src/view/com/profile/ProfileHeader.tsx:585
+#: src/Navigation.tsx:248
+#: src/view/com/home/HomeHeaderLayout.web.tsx:45
+#: src/view/com/home/HomeHeaderLayoutMobile.tsx:83
+#: src/view/screens/PreferencesFollowingFeed.tsx:104
+#: src/view/screens/Settings/index.tsx:543
+msgid "Following Feed Preferences"
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:546
msgid "Follows you"
msgstr "Ti segue"
@@ -1358,27 +1674,32 @@ msgstr "Ti segue"
msgid "Follows You"
msgstr "Ti Segue"
-#: src/view/com/modals/DeleteAccount.tsx:107
+#: src/screens/Onboarding/index.tsx:43
+msgid "Food"
+msgstr ""
+
+#: src/view/com/modals/DeleteAccount.tsx:111
msgid "For security reasons, we'll need to send a confirmation code to your email address."
msgstr "Per motivi di sicurezza, invieremo un codice di conferma al tuo indirizzo email."
-#: src/view/com/modals/AddAppPasswords.tsx:211
+#: src/view/com/modals/AddAppPasswords.tsx:209
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 "Per motivi di sicurezza non potrai visualizzarlo nuovamente. Se perdi questa password, dovrai generarne una nuova."
-#: src/view/com/auth/login/LoginForm.tsx:238
+#: src/view/com/auth/login/LoginForm.tsx:241
msgid "Forgot"
msgstr "Dimenticato"
-#: src/view/com/auth/login/LoginForm.tsx:235
+#: src/view/com/auth/login/LoginForm.tsx:238
msgid "Forgot password"
msgstr "Ho dimenticato il password"
-#: src/view/com/auth/login/Login.tsx:127 src/view/com/auth/login/Login.tsx:143
+#: src/view/com/auth/login/Login.tsx:127
+#: src/view/com/auth/login/Login.tsx:143
msgid "Forgot Password"
msgstr "Ho dimenticato il Password"
-#: src/view/com/posts/FeedItem.tsx:188
+#: src/view/com/posts/FeedItem.tsx:189
msgctxt "from-feed"
msgid "From <0/>"
msgstr "Da <0/>"
@@ -1392,24 +1713,35 @@ msgstr "Galleria"
msgid "Get Started"
msgstr "Inizia"
-#: src/view/com/auth/LoggedOut.tsx:81 src/view/com/auth/LoggedOut.tsx:82
+#: 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 "Torna indietro"
-#: src/view/screens/ProfileFeed.tsx:104 src/view/screens/ProfileFeed.tsx:109
-#: src/view/screens/ProfileList.tsx:876 src/view/screens/ProfileList.tsx:881
+#: src/view/screens/ProfileFeed.tsx:106
+#: src/view/screens/ProfileFeed.tsx:111
+#: src/view/screens/ProfileList.tsx:897
+#: src/view/screens/ProfileList.tsx:902
msgid "Go Back"
msgstr "Torna Indietro"
-#: src/view/screens/Search/Search.tsx:640 src/view/shell/desktop/Search.tsx:262
+#: src/screens/Onboarding/Layout.tsx:104
+#: src/screens/Onboarding/Layout.tsx:193
+msgid "Go back to previous step"
+msgstr ""
+
+#: src/view/screens/Search/Search.tsx:747
+#: src/view/shell/desktop/Search.tsx:262
msgid "Go to @{queryMaybeHandle}"
msgstr "Vai a @{queryMaybeHandle}"
-#: src/view/com/auth/login/ForgotPasswordForm.tsx:185
-#: src/view/com/auth/login/LoginForm.tsx:285
-#: src/view/com/auth/login/SetNewPasswordForm.tsx:165
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:189
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:218
+#: src/view/com/auth/login/LoginForm.tsx:288
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:195
+#: src/view/com/modals/ChangePassword.tsx:165
msgid "Go to next"
msgstr "Seguente"
@@ -1417,31 +1749,49 @@ msgstr "Seguente"
msgid "Handle"
msgstr "Nome Utente"
-#: src/view/com/auth/create/CreateAccount.tsx:190
+#: src/components/RichText.tsx:188
+msgid "Hashtag: {tag}"
+msgstr ""
+
+#: src/view/com/auth/create/CreateAccount.tsx:208
msgid "Having trouble?"
msgstr "Ci sono problemi?"
-#: src/view/shell/desktop/RightNav.tsx:102 src/view/shell/Drawer.tsx:324
+#: src/view/shell/desktop/RightNav.tsx:90
+#: src/view/shell/Drawer.tsx:321
msgid "Help"
msgstr "Aiuto"
-#: src/view/com/modals/AddAppPasswords.tsx:152
+#: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:132
+msgid "Here are some accounts for you to follow"
+msgstr ""
+
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:85
+msgid "Here are some popular topical feeds. You can choose to follow as many as you like."
+msgstr ""
+
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:80
+msgid "Here are some topical feeds based on your interests: {interestsText}. You can choose to follow as many as you like."
+msgstr ""
+
+#: src/view/com/modals/AddAppPasswords.tsx:153
msgid "Here is your app password."
msgstr "Ecco la password dell'app."
-#: src/view/com/modals/ContentFilteringSettings.tsx:219
-#: src/view/com/notifications/FeedItem.tsx:329
-msgctxt "action"
-msgid "Hide"
-msgstr "Nascondi"
-
-#: src/view/com/modals/ContentFilteringSettings.tsx:246
+#: src/screens/Onboarding/StepModeration/ModerationOption.tsx:41
+#: src/view/com/modals/ContentFilteringSettings.tsx:251
#: src/view/com/util/moderation/ContentHider.tsx:105
#: src/view/com/util/moderation/PostHider.tsx:108
msgid "Hide"
msgstr "Nascondi"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:185
+#: src/view/com/modals/ContentFilteringSettings.tsx:224
+#: src/view/com/notifications/FeedItem.tsx:325
+msgctxt "action"
+msgid "Hide"
+msgstr "Nascondi"
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:232
msgid "Hide post"
msgstr "Nascondi il messaggio"
@@ -1450,15 +1800,15 @@ msgstr "Nascondi il messaggio"
msgid "Hide the content"
msgstr "Nascondere il contenuto"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:189
+#: src/view/com/util/forms/PostDropdownBtn.tsx:236
msgid "Hide this post?"
msgstr "Vuoi nascondere questo post?"
-#: src/view/com/notifications/FeedItem.tsx:319
+#: src/view/com/notifications/FeedItem.tsx:315
msgid "Hide user list"
msgstr "Nascondi elenco utenti"
-#: src/view/com/profile/ProfileHeader.tsx:526
+#: src/view/com/profile/ProfileHeader.tsx:487
msgid "Hides posts from {0} in your feed"
msgstr "Nasconde i post di {0} nel tuo feed"
@@ -1482,22 +1832,29 @@ msgstr "Il server del feed ha dato una risposta negativa. Informa il proprietari
msgid "Hmm, we're having trouble finding this feed. It may have been deleted."
msgstr "Stiamo riscontrando problemi nel trovare questo feed. Potrebbe essere stato cancellato."
-#: src/Navigation.tsx:430 src/view/shell/bottom-bar/BottomBar.tsx:137
-#: src/view/shell/desktop/LeftNav.tsx:306 src/view/shell/Drawer.tsx:401
-#: src/view/shell/Drawer.tsx:402
+#: src/Navigation.tsx:435
+#: 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 "Home"
-#: src/Navigation.tsx:247 src/view/com/pager/FeedsTabBarMobile.tsx:117
+#: src/Navigation.tsx:247
+#: src/view/com/pager/FeedsTabBarMobile.tsx:123
#: src/view/screens/PreferencesHomeFeed.tsx:104
-#: src/view/screens/Settings.tsx:509
-msgid "Home Feed Preferences"
-msgstr "Preferenze per i feed per la pagina d'inizio"
+#: src/view/screens/Settings/index.tsx:543
+#~ msgid "Home Feed Preferences"
+#~ msgstr "Preferenze per i feed per la pagina d'inizio"
-#: src/view/com/auth/login/ForgotPasswordForm.tsx:116
+#: src/view/com/auth/create/Step1.tsx:82
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:120
msgid "Hosting provider"
msgstr "Servizio di hosting"
+#~ msgid "Hosting provider address"
+#~ msgstr "Adreça del proveïdor d'allotjament"
+
#: src/view/com/modals/InAppBrowserConsent.tsx:44
msgid "How should we open this link?"
msgstr "Come dovremmo aprire questo link?"
@@ -1514,7 +1871,7 @@ msgstr "Ho un codice di conferma"
msgid "I have my own domain"
msgstr "Ho il mio dominio"
-#: src/view/com/lightbox/Lightbox.web.tsx:158
+#: src/view/com/lightbox/Lightbox.web.tsx:165
msgid "If alt text is long, toggles alt text expanded state"
msgstr "Se il testo alternativo ĆØ lungo, attiva/disattiva lo stato del testo alternativo"
@@ -1522,95 +1879,101 @@ msgstr "Se il testo alternativo ĆØ lungo, attiva/disattiva lo stato del testo al
msgid "If none are selected, suitable for all ages."
msgstr "Se niente ĆØ selezionato, adatto a tutte le etĆ ."
-#: src/view/com/util/images/Gallery.tsx:37
+#: src/view/com/modals/ChangePassword.tsx:146
+msgid "If you want to change your password, we will send you a code to verify that this is your account."
+msgstr ""
+
+#: src/view/com/util/images/Gallery.tsx:38
msgid "Image"
msgstr "Immagine"
-#: src/view/com/modals/AltImage.tsx:97
+#: src/view/com/modals/AltImage.tsx:120
msgid "Image alt text"
msgstr "Testo alternativo dell'immagine"
-#: src/view/com/util/UserAvatar.tsx:308 src/view/com/util/UserBanner.tsx:116
+#: src/view/com/util/UserAvatar.tsx:311
+#: src/view/com/util/UserBanner.tsx:118
msgid "Image options"
msgstr "Opzioni per l'immagine"
-#: src/view/com/auth/login/SetNewPasswordForm.tsx:110
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:138
msgid "Input code sent to your email for password reset"
msgstr "Inserisci il codice inviato alla tua email per reimpostare la password"
-#: src/view/com/modals/DeleteAccount.tsx:180
+#: src/view/com/modals/DeleteAccount.tsx:184
msgid "Input confirmation code for account deletion"
msgstr "Inserisci il codice di conferma per la cancellazione dell'account"
-#: src/view/com/auth/create/Step1.tsx:144
+#: src/view/com/auth/create/Step1.tsx:200
msgid "Input email for Bluesky account"
msgstr "Inserisci l'e-mail per l'account di Bluesky"
-#: src/view/com/auth/create/Step1.tsx:102
+#: src/view/com/auth/create/Step1.tsx:158
msgid "Input invite code to proceed"
msgstr "Inserisci il codice di invito per procedere"
-#: src/view/com/modals/AddAppPasswords.tsx:182
+#: src/view/com/modals/AddAppPasswords.tsx:180
msgid "Input name for app password"
msgstr "Inserisci il nome per la password dell'app"
-#: src/view/com/auth/login/SetNewPasswordForm.tsx:133
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:162
msgid "Input new password"
msgstr "Inserisci la nuova password"
-#: src/view/com/modals/DeleteAccount.tsx:199
+#: src/view/com/modals/DeleteAccount.tsx:203
msgid "Input password for account deletion"
msgstr "Inserisci la password per la cancellazione dell'account"
-#: src/view/com/auth/create/Step2.tsx:194
-msgid "Input phone number for SMS verification"
-msgstr "Inserisci il numero di telefono per la verifica via SMS"
+#: src/view/com/auth/create/Step2.tsx:196
+#~ msgid "Input phone number for SMS verification"
+#~ msgstr "Inserisci il numero di telefono per la verifica via SMS"
-#: src/view/com/auth/login/LoginForm.tsx:227
+#: src/view/com/auth/login/LoginForm.tsx:230
msgid "Input the password tied to {identifier}"
msgstr "Inserisci la password relazionata a {identifier}"
-#: src/view/com/auth/login/LoginForm.tsx:194
+#: src/view/com/auth/login/LoginForm.tsx:197
msgid "Input the username or email address you used at signup"
msgstr "Inserisci il nome utente o l'indirizzo email che hai utilizzato al momento della registrazione"
-#: src/view/com/auth/create/Step2.tsx:268
-msgid "Input the verification code we have texted to you"
-msgstr "Inserisci il codice di verifica che ti abbiamo inviato tramite SMS"
+#: src/view/com/auth/create/Step2.tsx:271
+#~ msgid "Input the verification code we have texted to you"
+#~ msgstr "Inserisci il codice di verifica che ti abbiamo inviato tramite SMS"
#: src/view/com/modals/Waitlist.tsx:90
msgid "Input your email to get on the Bluesky waitlist"
msgstr "Inserisci la tua email per entrare nella lista d'attesa di Bluesky"
-#: src/view/com/auth/login/LoginForm.tsx:226
+#: src/view/com/auth/login/LoginForm.tsx:229
msgid "Input your password"
msgstr "Inserisci la tua password"
-#: src/view/com/auth/create/Step3.tsx:39
+#: src/view/com/auth/create/Step2.tsx:80
msgid "Input your user handle"
msgstr "Inserisci il tuo identificatore"
-#: src/view/com/post-thread/PostThreadItem.tsx:229
+#: src/view/com/post-thread/PostThreadItem.tsx:226
msgid "Invalid or unsupported post record"
msgstr "Protocollo del post non valido o non supportato"
-#: src/view/com/auth/login/LoginForm.tsx:115
+#: src/view/com/auth/login/LoginForm.tsx:113
msgid "Invalid username or password"
msgstr "Nome dell'utente o password errato"
#: src/view/screens/Settings.tsx:411
-msgid "Invite"
-msgstr "Invita"
+#~ msgid "Invite"
+#~ msgstr "Invita"
-#: src/view/com/modals/InviteCodes.tsx:93 src/view/screens/Settings.tsx:399
+#: src/view/com/modals/InviteCodes.tsx:93
msgid "Invite a Friend"
msgstr "Invita un amico"
-#: src/view/com/auth/create/Step1.tsx:92 src/view/com/auth/create/Step1.tsx:101
+#: src/view/com/auth/create/Step1.tsx:148
+#: src/view/com/auth/create/Step1.tsx:157
msgid "Invite code"
msgstr "Codice d'invito"
-#: src/view/com/auth/create/state.ts:199
+#: src/view/com/auth/create/state.ts:158
msgid "Invite code not accepted. Check that you input it correctly and try again."
msgstr "Codice invito non accettato. Controlla di averlo inserito correttamente e riprova."
@@ -1619,14 +1982,19 @@ msgid "Invite codes: {0} available"
msgstr "Codici di invito: {0} disponibili"
#: src/view/shell/Drawer.tsx:645
-msgid "Invite codes: {invitesAvailable} available"
-msgstr "Codici di invito: {invitesAvailable} disponibili"
+#~ msgid "Invite codes: {invitesAvailable} available"
+#~ msgstr "Codici di invito: {invitesAvailable} disponibili"
#: src/view/com/modals/InviteCodes.tsx:169
msgid "Invite codes: 1 available"
msgstr "Codici di invito: 1 disponibile"
+#: src/screens/Onboarding/StepFollowingFeed.tsx:64
+msgid "It shows posts from the people you follow as they happen."
+msgstr ""
+
#: src/view/com/auth/HomeLoggedOutCTA.tsx:99
+#: src/view/com/auth/SplashScreen.web.tsx:138
msgid "Jobs"
msgstr "Lavori"
@@ -1634,8 +2002,8 @@ msgstr "Lavori"
msgid "Join the waitlist"
msgstr "Iscriviti alla lista d'attesa"
-#: src/view/com/auth/create/Step1.tsx:118
-#: src/view/com/auth/create/Step1.tsx:122
+#: src/view/com/auth/create/Step1.tsx:174
+#: src/view/com/auth/create/Step1.tsx:178
msgid "Join the waitlist."
msgstr "Iscriviti alla lista d'attesa."
@@ -1643,19 +2011,24 @@ msgstr "Iscriviti alla lista d'attesa."
msgid "Join Waitlist"
msgstr "Iscriviti alla Lista d'Attesa"
+#: src/screens/Onboarding/index.tsx:24
+msgid "Journalism"
+msgstr ""
+
#: src/view/com/composer/select-language/SelectLangBtn.tsx:104
msgid "Language selection"
msgstr "Seleziona la lingua"
-#: src/view/screens/Settings.tsx:560
+#: src/view/screens/Settings/index.tsx:594
msgid "Language settings"
msgstr "Impostazione delle lingue"
-#: src/Navigation.tsx:139 src/view/screens/LanguageSettings.tsx:89
+#: src/Navigation.tsx:140
+#: src/view/screens/LanguageSettings.tsx:89
msgid "Language Settings"
msgstr "Impostazione delle Lingue"
-#: src/view/screens/Settings.tsx:569
+#: src/view/screens/Settings/index.tsx:603
msgid "Languages"
msgstr "Lingue"
@@ -1681,7 +2054,7 @@ msgstr "Ulteriori Informazioni"
msgid "Learn more about this warning"
msgstr "Ulteriori informazioni su questo avviso"
-#: src/view/screens/Moderation.tsx:242
+#: src/view/screens/Moderation.tsx:262
msgid "Learn more about what is public on Bluesky."
msgstr "Scopri cosa ĆØ pubblico su Bluesky."
@@ -1693,56 +2066,75 @@ msgstr "Deseleziona tutte per vedere qualsiasi lingua."
msgid "Leaving Bluesky"
msgstr "Stai lasciando Bluesky"
-#: src/view/screens/Settings.tsx:280
+#: src/screens/Deactivated.tsx:128
+msgid "left to go."
+msgstr ""
+
+#: src/view/screens/Settings/index.tsx:278
msgid "Legacy storage cleared, you need to restart the app now."
msgstr "L'archivio legacy ĆØ stato cancellato, riattiva la app."
-#: src/view/com/auth/login/Login.tsx:128 src/view/com/auth/login/Login.tsx:144
+#: src/view/com/auth/login/Login.tsx:128
+#: src/view/com/auth/login/Login.tsx:144
msgid "Let's get your password reset!"
msgstr "Reimpostazione della password!"
-#: src/view/com/util/UserAvatar.tsx:245 src/view/com/util/UserBanner.tsx:60
+#: src/screens/Onboarding/StepFinished.tsx:151
+msgid "Let's go!"
+msgstr ""
+
+#: src/view/com/util/UserAvatar.tsx:248
+#: src/view/com/util/UserBanner.tsx:62
msgid "Library"
msgstr "Biblioteca"
-#: src/view/screens/Settings.tsx:473
+#: src/view/screens/Settings/index.tsx:479
msgid "Light"
msgstr "Chiaro"
-#: src/view/com/util/post-ctrls/PostCtrls.tsx:189
+#: src/view/com/util/post-ctrls/PostCtrls.tsx:182
+#: src/view/com/util/post-ctrls/PostCtrls.tsx:216
msgid "Like"
msgstr "Mi piace"
-#: src/view/screens/ProfileFeed.tsx:600
+#: src/view/screens/ProfileFeed.tsx:591
msgid "Like this feed"
msgstr "Metti mi piace a questo feed"
-#: src/Navigation.tsx:197 src/view/screens/PostLikedBy.tsx:27
-#: src/view/screens/ProfileFeedLikedBy.tsx:27
+#: src/Navigation.tsx:197
msgid "Liked by"
msgstr "Piaciuto a"
-#: src/view/com/feeds/FeedSourceCard.tsx:277
+#: src/view/screens/PostLikedBy.tsx:27
+#: src/view/screens/ProfileFeedLikedBy.tsx:27
+msgid "Liked By"
+msgstr ""
+
+#: src/view/com/feeds/FeedSourceCard.tsx:279
msgid "Liked by {0} {1}"
msgstr "Ć piaciuto a {0} {1}"
-#: src/view/screens/ProfileFeed.tsx:615
+#: src/view/screens/ProfileFeed.tsx:606
msgid "Liked by {likeCount} {0}"
msgstr "Ć piaciuto a {likeCount} {0}"
+#: src/view/com/notifications/FeedItem.tsx:170
+msgid "liked your custom feed"
+msgstr ""
+
#: src/view/com/notifications/FeedItem.tsx:171
-msgid "liked your custom feed{0}"
-msgstr "ĆØ piaciuto il feed personalizzato{0}"
+#~ msgid "liked your custom feed{0}"
+#~ msgstr "ĆØ piaciuto il feed personalizzato{0}"
#: src/view/com/notifications/FeedItem.tsx:155
msgid "liked your post"
msgstr "ĆØ piaciuto il tuo post"
-#: src/view/screens/Profile.tsx:164
+#: src/view/screens/Profile.tsx:183
msgid "Likes"
msgstr "Mi piace"
-#: src/view/com/post-thread/PostThreadItem.tsx:184
+#: src/view/com/post-thread/PostThreadItem.tsx:183
msgid "Likes on this post"
msgstr "Mi Piace in questo post"
@@ -1750,55 +2142,59 @@ msgstr "Mi Piace in questo post"
msgid "List"
msgstr "Lista"
-#: src/view/com/modals/CreateOrEditList.tsx:203
+#: src/view/com/modals/CreateOrEditList.tsx:261
msgid "List Avatar"
msgstr "Lista avatar"
-#: src/view/screens/ProfileList.tsx:323
+#: src/view/screens/ProfileList.tsx:324
msgid "List blocked"
msgstr "Lista bloccata"
-#: src/view/com/feeds/FeedSourceCard.tsx:231
+#: src/view/com/feeds/FeedSourceCard.tsx:233
msgid "List by {0}"
msgstr "Lista di {0}"
-#: src/view/screens/ProfileList.tsx:367
+#: src/view/screens/ProfileList.tsx:378
msgid "List deleted"
msgstr "Lista cancellata"
-#: src/view/screens/ProfileList.tsx:282
+#: src/view/screens/ProfileList.tsx:283
msgid "List muted"
msgstr "Lista muta"
-#: src/view/com/modals/CreateOrEditList.tsx:216
+#: src/view/com/modals/CreateOrEditList.tsx:275
msgid "List Name"
msgstr "Nome della lista"
-#: src/view/screens/ProfileList.tsx:342
+#: src/view/screens/ProfileList.tsx:343
msgid "List unblocked"
msgstr "Lista sbloccata"
-#: src/view/screens/ProfileList.tsx:301
+#: src/view/screens/ProfileList.tsx:302
msgid "List unmuted"
msgstr "Lista non mutata"
-#: src/Navigation.tsx:109 src/view/screens/Profile.tsx:166
-#: src/view/shell/desktop/LeftNav.tsx:379 src/view/shell/Drawer.tsx:495
-#: src/view/shell/Drawer.tsx:496
+#: src/Navigation.tsx:110
+#: src/view/screens/Profile.tsx:185
+#: src/view/shell/desktop/LeftNav.tsx:379
+#: src/view/shell/Drawer.tsx:492
+#: src/view/shell/Drawer.tsx:493
msgid "Lists"
msgstr "Liste"
-#: src/view/com/post-thread/PostThread.tsx:263
-#: src/view/com/post-thread/PostThread.tsx:271
+#: src/view/com/post-thread/PostThread.tsx:333
+#: src/view/com/post-thread/PostThread.tsx:341
msgid "Load more posts"
msgstr "Carica più post"
-#: src/view/screens/Notifications.tsx:148
+#: src/view/screens/Notifications.tsx:159
msgid "Load new notifications"
msgstr "Carica più notifiche"
-#: src/view/com/feeds/FeedPage.tsx:190 src/view/screens/Profile.tsx:412
-#: src/view/screens/ProfileFeed.tsx:503 src/view/screens/ProfileList.tsx:659
+#: src/view/com/feeds/FeedPage.tsx:115
+#: src/view/screens/Profile.tsx:440
+#: src/view/screens/ProfileFeed.tsx:495
+#: src/view/screens/ProfileList.tsx:681
msgid "Load new posts"
msgstr "Carica nuovi posts"
@@ -1807,14 +2203,21 @@ msgid "Loading..."
msgstr "Caricamento..."
#: src/view/com/modals/ServerInput.tsx:50
-msgid "Local dev server"
-msgstr "Server di sviluppo locale"
+#~ msgid "Local dev server"
+#~ msgstr "Server di sviluppo locale"
#: src/Navigation.tsx:207
msgid "Log"
msgstr "Log"
-#: src/view/screens/Moderation.tsx:136
+#: src/screens/Deactivated.tsx:149
+#: src/screens/Deactivated.tsx:152
+#: src/screens/Deactivated.tsx:178
+#: src/screens/Deactivated.tsx:181
+msgid "Log out"
+msgstr ""
+
+#: src/view/screens/Moderation.tsx:155
msgid "Logged-out visibility"
msgstr "VisibilitĆ degli utenti non connettati"
@@ -1822,11 +2225,26 @@ msgstr "VisibilitĆ degli utenti non connettati"
msgid "Login to account that is not listed"
msgstr "Accedi all'account che non ĆØ nella lista"
+#~ 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:65
msgid "Make sure this is where you intend to go!"
msgstr "Assicurati che questo sia dove intendi andare!"
-#: src/view/screens/Profile.tsx:163
+#: src/components/dialogs/MutedWords.tsx:71
+msgid "Manage your muted words and tags"
+msgstr ""
+
+#: src/view/com/auth/create/Step2.tsx:118
+msgid "May not be longer than 253 characters"
+msgstr ""
+
+#: src/view/com/auth/create/Step2.tsx:109
+msgid "May only contain letters and numbers"
+msgstr ""
+
+#: src/view/screens/Profile.tsx:182
msgid "Media"
msgstr "Media"
@@ -1838,52 +2256,60 @@ msgstr "utenti menzionati"
msgid "Mentioned users"
msgstr "Utenti menzionati"
-#: src/view/com/util/ViewHeader.tsx:81 src/view/screens/Search/Search.tsx:544
+#: src/view/com/util/ViewHeader.tsx:81
+#: src/view/screens/Search/Search.tsx:646
msgid "Menu"
msgstr "Menù"
+#~ msgid "Message from server"
+#~ msgstr "Missatge del servidor"
+
#: src/view/com/posts/FeedErrorMessage.tsx:197
msgid "Message from server: {0}"
msgstr "Messaggio dal server: {0}"
-#: src/Navigation.tsx:114 src/view/screens/Moderation.tsx:64
-#: src/view/screens/Settings.tsx:591 src/view/shell/desktop/LeftNav.tsx:397
-#: src/view/shell/Drawer.tsx:514 src/view/shell/Drawer.tsx:515
+#: src/Navigation.tsx:115
+#: src/view/screens/Moderation.tsx:66
+#: src/view/screens/Settings/index.tsx:625
+#: src/view/shell/desktop/LeftNav.tsx:397
+#: src/view/shell/Drawer.tsx:511
+#: src/view/shell/Drawer.tsx:512
msgid "Moderation"
msgstr "Moderazione"
-#: src/view/com/lists/ListCard.tsx:92
-#: src/view/com/modals/UserAddRemoveLists.tsx:190
+#: src/view/com/lists/ListCard.tsx:93
+#: src/view/com/modals/UserAddRemoveLists.tsx:206
msgid "Moderation list by {0}"
msgstr "Lista di moderazione di {0}"
-#: src/view/screens/ProfileList.tsx:753
+#: src/view/screens/ProfileList.tsx:774
msgid "Moderation list by <0/>"
msgstr "Lista di moderazione di <0/>"
-#: src/view/com/lists/ListCard.tsx:90
-#: src/view/com/modals/UserAddRemoveLists.tsx:188
-#: src/view/screens/ProfileList.tsx:751
+#: src/view/com/lists/ListCard.tsx:91
+#: src/view/com/modals/UserAddRemoveLists.tsx:204
+#: src/view/screens/ProfileList.tsx:772
msgid "Moderation list by you"
msgstr "Le tue liste di moderazione"
-#: src/view/com/modals/CreateOrEditList.tsx:139
+#: src/view/com/modals/CreateOrEditList.tsx:197
msgid "Moderation list created"
msgstr "Lista di moderazione creata"
-#: src/view/com/modals/CreateOrEditList.tsx:126
+#: src/view/com/modals/CreateOrEditList.tsx:183
msgid "Moderation list updated"
msgstr "Lista di moderazione aggiornata"
-#: src/view/screens/Moderation.tsx:95
+#: src/view/screens/Moderation.tsx:114
msgid "Moderation lists"
msgstr "Liste di moderazione"
-#: src/Navigation.tsx:119 src/view/screens/ModerationModlists.tsx:58
+#: src/Navigation.tsx:120
+#: src/view/screens/ModerationModlists.tsx:58
msgid "Moderation Lists"
msgstr "Liste di Moderazione"
-#: src/view/screens/Settings.tsx:585
+#: src/view/screens/Settings/index.tsx:619
msgid "Moderation settings"
msgstr "Impostazioni di moderazione"
@@ -1891,16 +2317,17 @@ msgstr "Impostazioni di moderazione"
msgid "Moderator has chosen to set a general warning on the content."
msgstr "Il moderatore ha scelto di mettere un avviso generale sul contenuto."
-#: src/view/shell/desktop/Feeds.tsx:53
+#: src/view/shell/desktop/Feeds.tsx:63
msgid "More feeds"
msgstr "Altri feed"
-#: src/view/com/profile/ProfileHeader.tsx:562
-#: src/view/screens/ProfileFeed.tsx:371 src/view/screens/ProfileList.tsx:595
+#: src/view/com/profile/ProfileHeader.tsx:523
+#: src/view/screens/ProfileFeed.tsx:363
+#: src/view/screens/ProfileList.tsx:617
msgid "More options"
msgstr "Altre opzioni"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:268
+#: src/view/com/util/forms/PostDropdownBtn.tsx:315
msgid "More post options"
msgstr "Altre impostazioni per il post"
@@ -1908,39 +2335,76 @@ msgstr "Altre impostazioni per il post"
msgid "Most-liked replies first"
msgstr "Dai priorità alle risposte con più likes"
-#: src/view/com/profile/ProfileHeader.tsx:374
+#: src/view/com/auth/create/Step2.tsx:122
+msgid "Must be at least 3 characters"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:253
+msgid "Mute"
+msgstr ""
+
+#: src/components/TagMenu/index.web.tsx:91
+msgid "Mute {truncatedTag}"
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:327
msgid "Mute Account"
msgstr "Silenziare Account"
-#: src/view/screens/ProfileList.tsx:522
+#: src/view/screens/ProfileList.tsx:544
msgid "Mute accounts"
msgstr "Silenziare accounts"
-#: src/view/screens/ProfileList.tsx:469
+#: src/components/TagMenu/index.tsx:211
+msgid "Mute all {tag} posts"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:131
+msgid "Mute in tags only"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:116
+msgid "Mute in text & tags"
+msgstr ""
+
+#: src/view/screens/ProfileList.tsx:491
msgid "Mute list"
msgstr "Silenziare la lista"
-#: src/view/screens/ProfileList.tsx:274
+#: src/view/screens/ProfileList.tsx:275
msgid "Mute these accounts?"
msgstr "Vuoi silenziare queste liste?"
-#: src/view/screens/ProfileList.tsx:278
+#: src/view/screens/ProfileList.tsx:279
msgid "Mute this List"
msgstr "Silenzia questa Lista"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:169
+#: src/components/dialogs/MutedWords.tsx:109
+msgid "Mute this word in post text and tags"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:124
+msgid "Mute this word in tags only"
+msgstr ""
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:202
msgid "Mute thread"
msgstr "Silenzia questa discussione"
-#: src/view/com/lists/ListCard.tsx:101
+#: src/view/com/util/forms/PostDropdownBtn.tsx:216
+msgid "Mute words & tags"
+msgstr ""
+
+#: src/view/com/lists/ListCard.tsx:102
msgid "Muted"
msgstr "Silenziato"
-#: src/view/screens/Moderation.tsx:109
+#: src/view/screens/Moderation.tsx:128
msgid "Muted accounts"
msgstr "Account silenziato"
-#: src/Navigation.tsx:124 src/view/screens/ModerationMutedAccounts.tsx:107
+#: src/Navigation.tsx:125
+#: src/view/screens/ModerationMutedAccounts.tsx:107
msgid "Muted Accounts"
msgstr "Accounts Silenziati"
@@ -1948,7 +2412,11 @@ msgstr "Accounts Silenziati"
msgid "Muted accounts have their posts removed from your feed and from your notifications. Mutes are completely private."
msgstr "I post degli account silenziati verranno rimossi dal tuo feed e dalle tue notifiche. Silenziare ĆØ completamente privato."
-#: src/view/screens/ProfileList.tsx:276
+#: src/view/screens/Moderation.tsx:100
+msgid "Muted words & tags"
+msgstr ""
+
+#: src/view/screens/ProfileList.tsx:277
msgid "Muting is private. Muted accounts can interact with you, but you will not see their posts or receive notifications from them."
msgstr "Silenziare un account è privato. Gli account silenziati possono interagire con te, ma non vedrai i loro post né riceverai le loro notifiche."
@@ -1956,7 +2424,7 @@ msgstr "Silenziare un account ĆØ privato. Gli account silenziati possono interag
msgid "My Birthday"
msgstr "Il mio Compleanno"
-#: src/view/screens/Feeds.tsx:367
+#: src/view/screens/Feeds.tsx:663
msgid "My Feeds"
msgstr "I miei Feeds"
@@ -1964,26 +2432,36 @@ msgstr "I miei Feeds"
msgid "My Profile"
msgstr "Il mio Profilo"
-#: src/view/screens/Settings.tsx:548
+#: src/view/screens/Settings/index.tsx:582
msgid "My Saved Feeds"
msgstr "I miei Feeds Salvati"
-#: src/view/com/modals/AddAppPasswords.tsx:181
-#: src/view/com/modals/CreateOrEditList.tsx:230
+#: src/view/com/auth/server-input/index.tsx:118
+msgid "my-server.com"
+msgstr ""
+
+#: src/view/com/modals/AddAppPasswords.tsx:179
+#: src/view/com/modals/CreateOrEditList.tsx:290
msgid "Name"
msgstr "Nome"
-#: src/view/com/modals/CreateOrEditList.tsx:108
+#: src/view/com/modals/CreateOrEditList.tsx:145
msgid "Name is required"
msgstr "Il nome ĆØ obbligatorio"
-#: src/view/com/auth/login/ForgotPasswordForm.tsx:186
-#: src/view/com/auth/login/LoginForm.tsx:286
-#: src/view/com/auth/login/SetNewPasswordForm.tsx:166
+#: src/screens/Onboarding/index.tsx:25
+msgid "Nature"
+msgstr ""
+
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:190
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:219
+#: src/view/com/auth/login/LoginForm.tsx:289
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:196
+#: src/view/com/modals/ChangePassword.tsx:166
msgid "Navigates to the next screen"
msgstr "Vai alla schermata successiva"
-#: src/view/shell/Drawer.tsx:73
+#: src/view/shell/Drawer.tsx:71
msgid "Navigates to your profile"
msgstr "Vai al tuo profilo"
@@ -1997,6 +2475,14 @@ msgstr "Non caricare mai gli inserimenti di {0}"
msgid "Never lose access to your followers and data."
msgstr "Non perdere mai l'accesso ai tuoi follower e ai tuoi dati."
+#: src/screens/Onboarding/StepFinished.tsx:119
+msgid "Never lose access to your followers or data."
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:244
+msgid "Nevermind"
+msgstr ""
+
#: src/view/screens/Lists.tsx:76
msgctxt "action"
msgid "New"
@@ -2006,22 +2492,30 @@ msgstr "Nuovo"
msgid "New"
msgstr "Nuovo"
-#: src/view/com/modals/CreateOrEditList.tsx:194
+#: src/view/com/modals/CreateOrEditList.tsx:252
msgid "New Moderation List"
msgstr "Nuova Lista di Moderazione"
-#: src/view/com/auth/login/SetNewPasswordForm.tsx:122
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:150
msgid "New password"
msgstr "Nuovo Password"
-#: src/view/com/feeds/FeedPage.tsx:201
+#: src/view/com/modals/ChangePassword.tsx:215
+msgid "New Password"
+msgstr ""
+
+#: src/view/com/feeds/FeedPage.tsx:126
msgctxt "action"
msgid "New post"
msgstr "Nuovo Post"
-#: src/view/screens/Feeds.tsx:511 src/view/screens/Profile.tsx:354
-#: src/view/screens/ProfileFeed.tsx:441 src/view/screens/ProfileList.tsx:197
-#: src/view/screens/ProfileList.tsx:225 src/view/shell/desktop/LeftNav.tsx:248
+#: src/view/screens/Feeds.tsx:555
+#: src/view/screens/Notifications.tsx:168
+#: src/view/screens/Profile.tsx:382
+#: src/view/screens/ProfileFeed.tsx:433
+#: src/view/screens/ProfileList.tsx:196
+#: src/view/screens/ProfileList.tsx:224
+#: src/view/shell/desktop/LeftNav.tsx:248
msgid "New post"
msgstr "Nuovo post"
@@ -2030,7 +2524,10 @@ msgctxt "action"
msgid "New Post"
msgstr "Nuovo post"
-#: src/view/com/modals/CreateOrEditList.tsx:189
+#~ msgid "New Post"
+#~ msgstr "Nova publicació"
+
+#: src/view/com/modals/CreateOrEditList.tsx:247
msgid "New User List"
msgstr "Nuova lista utenti"
@@ -2038,43 +2535,50 @@ msgstr "Nuova lista utenti"
msgid "Newest replies first"
msgstr "Mostrare prima le risposte più recenti"
+#: src/screens/Onboarding/index.tsx:23
+msgid "News"
+msgstr ""
+
+#: src/view/com/auth/create/CreateAccount.tsx:172
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:182
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:192
+#: src/view/com/auth/login/LoginForm.tsx:291
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:187
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:198
+#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:79
+#: src/view/com/modals/ChangePassword.tsx:251
+#: src/view/com/modals/ChangePassword.tsx:253
+msgid "Next"
+msgstr "Seguente"
+
#: src/view/com/auth/onboarding/WelcomeDesktop.tsx:103
msgctxt "action"
msgid "Next"
msgstr "Seguente"
-#: src/view/com/auth/create/CreateAccount.tsx:155
-#: src/view/com/auth/login/ForgotPasswordForm.tsx:178
-#: src/view/com/auth/login/ForgotPasswordForm.tsx:188
-#: src/view/com/auth/login/LoginForm.tsx:288
-#: src/view/com/auth/login/SetNewPasswordForm.tsx:158
-#: src/view/com/auth/login/SetNewPasswordForm.tsx:168
-#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:79
-msgid "Next"
-msgstr "Seguente"
-
-#: src/view/com/lightbox/Lightbox.web.tsx:142
+#: src/view/com/lightbox/Lightbox.web.tsx:149
msgid "Next image"
msgstr "Immagine seguente"
-#: 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/PreferencesFollowingFeed.tsx:129
+#: src/view/screens/PreferencesFollowingFeed.tsx:200
+#: src/view/screens/PreferencesFollowingFeed.tsx:235
+#: src/view/screens/PreferencesFollowingFeed.tsx:272
#: src/view/screens/PreferencesThreads.tsx:106
#: src/view/screens/PreferencesThreads.tsx:129
msgid "No"
msgstr "No"
-#: src/view/screens/ProfileFeed.tsx:593 src/view/screens/ProfileList.tsx:733
+#: src/view/screens/ProfileFeed.tsx:584
+#: src/view/screens/ProfileList.tsx:754
msgid "No description"
msgstr "Senza descrizione"
-#: src/view/com/profile/ProfileHeader.tsx:217
+#: src/view/com/profile/ProfileHeader.tsx:170
msgid "No longer following {0}"
msgstr "Non segui più {0}"
-#: src/view/com/notifications/Feed.tsx:107
+#: src/view/com/notifications/Feed.tsx:109
msgid "No notifications yet!"
msgstr "Ancora nessuna notifica!"
@@ -2083,13 +2587,13 @@ msgstr "Ancora nessuna notifica!"
msgid "No result"
msgstr "Nessun risultato"
-#: src/view/screens/Feeds.tsx:456
+#: src/view/screens/Feeds.tsx:495
msgid "No results found for \"{query}\""
msgstr "Nessun risultato trovato per \"{query}\""
#: src/view/com/modals/ListAddRemoveUsers.tsx:127
-#: src/view/screens/Search/Search.tsx:272
-#: src/view/screens/Search/Search.tsx:300
+#: src/view/screens/Search/Search.tsx:281
+#: src/view/screens/Search/Search.tsx:309
msgid "No results found for {query}"
msgstr "Nessun risultato trovato per {query}"
@@ -2105,7 +2609,8 @@ msgstr "Nessuno"
msgid "Not Applicable."
msgstr "Non applicabile."
-#: src/Navigation.tsx:104
+#: src/Navigation.tsx:105
+#: src/view/screens/Profile.tsx:106
msgid "Not Found"
msgstr "Non trovato"
@@ -2114,15 +2619,17 @@ msgstr "Non trovato"
msgid "Not right now"
msgstr "Non adesso"
-#: src/view/screens/Moderation.tsx:232
+#: src/view/screens/Moderation.tsx:252
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 ĆØ una rete aperta e pubblica. Questa impostazione limita solo la visibilitĆ dei tuoi contenuti sull'app e sul sito Web di Bluesky e altre app potrebbero non rispettare questa impostazione. I tuoi contenuti potrebbero comunque essere mostrati agli utenti disconnessi da altre app e siti web."
-#: src/Navigation.tsx:445 src/view/screens/Notifications.tsx:113
-#: src/view/screens/Notifications.tsx:137
+#: src/Navigation.tsx:450
+#: src/view/screens/Notifications.tsx:124
+#: src/view/screens/Notifications.tsx:148
#: src/view/shell/bottom-bar/BottomBar.tsx:205
-#: src/view/shell/desktop/LeftNav.tsx:361 src/view/shell/Drawer.tsx:438
-#: src/view/shell/Drawer.tsx:439
+#: src/view/shell/desktop/LeftNav.tsx:361
+#: src/view/shell/Drawer.tsx:435
+#: src/view/shell/Drawer.tsx:436
msgid "Notifications"
msgstr "Notifica"
@@ -2134,6 +2641,10 @@ msgstr "NuditĆ "
msgid "Oh no!"
msgstr "Oh no!"
+#: src/screens/Onboarding/StepInterests/index.tsx:128
+msgid "Oh no! Something went wrong."
+msgstr ""
+
#: src/view/com/auth/login/PasswordUpdatedForm.tsx:41
msgid "Okay"
msgstr "Va bene"
@@ -2142,11 +2653,11 @@ msgstr "Va bene"
msgid "Oldest replies first"
msgstr "Prima le risposte più vecchie"
-#: src/view/screens/Settings.tsx:236
+#: src/view/screens/Settings/index.tsx:234
msgid "Onboarding reset"
msgstr "Reimpostazione dell'onboarding"
-#: src/view/com/composer/Composer.tsx:375
+#: src/view/com/composer/Composer.tsx:382
msgid "One or more images is missing alt text."
msgstr "A una o più immagini manca il testo alternativo."
@@ -2154,30 +2665,41 @@ msgstr "A una o più immagini manca il testo alternativo."
msgid "Only {0} can reply."
msgstr "Solo {0} può rispondere."
-#: src/view/com/modals/ProfilePreview.tsx:49
-#: src/view/com/modals/ProfilePreview.tsx:61
#: src/view/screens/AppPasswords.tsx:65
+#: src/view/screens/Profile.tsx:106
msgid "Oops!"
msgstr "Ops!"
-#: src/view/com/composer/Composer.tsx:470
-#: src/view/com/composer/Composer.tsx:471
+#: src/screens/Onboarding/StepFinished.tsx:115
+msgid "Open"
+msgstr ""
+
+#: src/view/screens/Moderation.tsx:75
+msgid "Open content filtering settings"
+msgstr ""
+
+#: src/view/com/composer/Composer.tsx:477
+#: src/view/com/composer/Composer.tsx:478
msgid "Open emoji picker"
msgstr "Apri il selettore emoji"
-#: src/view/screens/Settings.tsx:678
+#: src/view/screens/Settings/index.tsx:712
msgid "Open links with in-app browser"
msgstr "Apri i links con il navigatore della app"
-#: src/view/com/pager/FeedsTabBarMobile.tsx:81
+#: src/view/screens/Moderation.tsx:92
+msgid "Open muted words settings"
+msgstr ""
+
+#: src/view/com/home/HomeHeaderLayoutMobile.tsx:49
msgid "Open navigation"
msgstr "Apri la navigazione"
-#: src/view/screens/Settings.tsx:737
+#: src/view/screens/Settings/index.tsx:804
msgid "Open storybook page"
msgstr "Apri la pagina della cronologia"
-#: src/view/com/util/forms/DropdownButton.tsx:147
+#: src/view/com/util/forms/DropdownButton.tsx:154
msgid "Opens {numItems} options"
msgstr "Apre le {numItems} opzioni"
@@ -2185,7 +2707,7 @@ msgstr "Apre le {numItems} opzioni"
msgid "Opens additional details for a debug entry"
msgstr "Apre dettagli aggiuntivi per una debug entry"
-#: src/view/com/notifications/FeedItem.tsx:352
+#: src/view/com/notifications/FeedItem.tsx:348
msgid "Opens an expanded list of users in this notification"
msgstr "Apre un elenco ampliato di utenti in questa notifica"
@@ -2197,7 +2719,7 @@ msgstr "Apre la fotocamera sul dispositivo"
msgid "Opens composer"
msgstr "Apre il compositore"
-#: src/view/screens/Settings.tsx:561
+#: src/view/screens/Settings/index.tsx:595
msgid "Opens configurable language settings"
msgstr "Apre le impostazioni configurabili delle lingue"
@@ -2205,32 +2727,31 @@ msgstr "Apre le impostazioni configurabili delle lingue"
msgid "Opens device photo gallery"
msgstr "Apre la galleria fotografica del dispositivo"
-#: src/view/com/profile/ProfileHeader.tsx:459
+#: src/view/com/profile/ProfileHeader.tsx:420
msgid "Opens editor for profile display name, avatar, background image, and description"
msgstr "Apre l'editor per il nome configurato del profilo, l'avatar, l'immagine di sfondo e la descrizione"
-#: src/view/screens/Settings.tsx:615
+#: src/view/screens/Settings/index.tsx:649
msgid "Opens external embeds settings"
msgstr "Apre le impostazioni esterne per gli incorporamenti"
-#: src/view/com/profile/ProfileHeader.tsx:614
+#: src/view/com/profile/ProfileHeader.tsx:575
msgid "Opens followers list"
msgstr "Apre la lista dei followers"
-#: src/view/com/profile/ProfileHeader.tsx:633
+#: src/view/com/profile/ProfileHeader.tsx:594
msgid "Opens following list"
msgstr "Apre la lista di chi segui"
#: src/view/screens/Settings.tsx:412
-msgid "Opens invite code list"
-msgstr "Apre la lista dei codici di invito"
+#~ msgid "Opens invite code list"
+#~ msgstr "Apre la lista dei codici di invito"
#: src/view/com/modals/InviteCodes.tsx:172
-#: src/view/shell/desktop/RightNav.tsx:156 src/view/shell/Drawer.tsx:646
msgid "Opens list of invite codes"
msgstr "Apre la lista dei codici di invito"
-#: src/view/screens/Settings.tsx:696
+#: src/view/screens/Settings/index.tsx:774
msgid "Opens modal for account deletion confirmation. Requires email code."
msgstr "Apre il modal per la conferma dell'eliminazione dell'account. Richiede un codice email."
@@ -2238,43 +2759,44 @@ msgstr "Apre il modal per la conferma dell'eliminazione dell'account. Richiede u
msgid "Opens modal for using custom domain"
msgstr "Apre il modal per l'utilizzo del dominio personalizzato"
-#: src/view/screens/Settings.tsx:586
+#: src/view/screens/Settings/index.tsx:620
msgid "Opens moderation settings"
msgstr "Apre le impostazioni di moderazione"
-#: src/view/com/auth/login/LoginForm.tsx:236
+#: src/view/com/auth/login/LoginForm.tsx:239
msgid "Opens password reset form"
msgstr "Apre il modulo di reimpostazione della password"
-#: src/view/screens/Feeds.tsx:335
+#: src/view/com/home/HomeHeaderLayout.web.tsx:60
+#: src/view/screens/Feeds.tsx:356
msgid "Opens screen to edit Saved Feeds"
msgstr "Apre la schermata per modificare i feed salvati"
-#: src/view/screens/Settings.tsx:542
+#: src/view/screens/Settings/index.tsx:576
msgid "Opens screen with all saved feeds"
msgstr "Apre la schermata con tutti i feed salvati"
-#: src/view/screens/Settings.tsx:642
+#: src/view/screens/Settings/index.tsx:676
msgid "Opens the app password settings page"
msgstr "Apre la pagina delle impostazioni della password dell'app"
-#: src/view/screens/Settings.tsx:501
+#: src/view/screens/Settings/index.tsx:535
msgid "Opens the home feed preferences"
msgstr "Apre le preferenze del home feed"
-#: src/view/screens/Settings.tsx:738
+#: src/view/screens/Settings/index.tsx:805
msgid "Opens the storybook page"
msgstr "Apri la pagina della cronologia"
-#: src/view/screens/Settings.tsx:718
+#: src/view/screens/Settings/index.tsx:793
msgid "Opens the system log page"
msgstr "Apre la pagina del registro di sistema"
-#: src/view/screens/Settings.tsx:522
+#: src/view/screens/Settings/index.tsx:556
msgid "Opens the threads preferences"
msgstr "Apre le preferenze dei threads"
-#: src/view/com/util/forms/DropdownButton.tsx:254
+#: src/view/com/util/forms/DropdownButton.tsx:280
msgid "Option {0} of {numItems}"
msgstr "Opzione {0} di {numItems}"
@@ -2287,22 +2809,26 @@ msgid "Other account"
msgstr "Altro account"
#: src/view/com/modals/ServerInput.tsx:88
-msgid "Other service"
-msgstr "Altro servizio"
+#~ msgid "Other service"
+#~ msgstr "Altro servizio"
#: src/view/com/composer/select-language/SelectLangBtn.tsx:91
msgid "Other..."
msgstr "Altro..."
-#: src/view/screens/NotFound.tsx:42 src/view/screens/NotFound.tsx:45
+#: src/view/screens/NotFound.tsx:45
msgid "Page not found"
msgstr "Pagina non trovata"
-#: src/view/com/auth/create/Step1.tsx:158
-#: src/view/com/auth/create/Step1.tsx:168
-#: src/view/com/auth/login/LoginForm.tsx:223
-#: src/view/com/auth/login/SetNewPasswordForm.tsx:132
-#: src/view/com/modals/DeleteAccount.tsx:198
+#: src/view/screens/NotFound.tsx:42
+msgid "Page Not Found"
+msgstr ""
+
+#: src/view/com/auth/create/Step1.tsx:214
+#: src/view/com/auth/create/Step1.tsx:224
+#: src/view/com/auth/login/LoginForm.tsx:226
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:161
+#: src/view/com/modals/DeleteAccount.tsx:202
msgid "Password"
msgstr "Password"
@@ -2330,15 +2856,20 @@ msgstr "Ć richiesta l'autorizzazione per accedere al la cartella delle immagini
msgid "Permission to access camera roll was denied. Please enable it in your system settings."
msgstr "L'autorizzazione per accedere la cartella delle immagini ĆØ stata negata. Si prega di abilitarla nelle impostazioni del sistema."
-#: src/view/com/auth/create/Step2.tsx:181
-msgid "Phone number"
-msgstr "Numero di telefono"
+#: src/screens/Onboarding/index.tsx:31
+msgid "Pets"
+msgstr ""
+
+#: src/view/com/auth/create/Step2.tsx:183
+#~ msgid "Phone number"
+#~ msgstr "Numero di telefono"
#: src/view/com/modals/SelfLabel.tsx:121
msgid "Pictures meant for adults."
msgstr "Immagini per adulti."
-#: src/view/screens/ProfileFeed.tsx:362 src/view/screens/ProfileList.tsx:559
+#: src/view/screens/ProfileFeed.tsx:354
+#: src/view/screens/ProfileList.tsx:581
msgid "Pin to home"
msgstr "Fissa sulla pagina principale"
@@ -2359,43 +2890,47 @@ msgstr "Riproduci video"
msgid "Plays the GIF"
msgstr "Riproduci questa GIF"
-#: src/view/com/auth/create/state.ts:177
+#: src/view/com/auth/create/state.ts:124
msgid "Please choose your handle."
msgstr "Scegli il tuo nome utente."
-#: src/view/com/auth/create/state.ts:160
+#: src/view/com/auth/create/state.ts:117
msgid "Please choose your password."
msgstr "Scegli la tua password."
+#: src/view/com/auth/create/state.ts:131
+msgid "Please complete the verification captcha."
+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 "Conferma la tua email prima di cambiarla. Si tratta di un requisito temporaneo durante l'aggiunta degli strumenti di aggiornamento della posta elettronica e verrĆ presto rimosso."
-#: src/view/com/modals/AddAppPasswords.tsx:89
+#: src/view/com/modals/AddAppPasswords.tsx:90
msgid "Please enter a name for your app password. All spaces is not allowed."
msgstr "Inserisci un nome per la password dell'app. Tutti gli spazi non sono consentiti."
-#: src/view/com/auth/create/Step2.tsx:204
-msgid "Please enter a phone number that can receive SMS text messages."
-msgstr "Inserisci un numero di telefono in grado di ricevere messaggi di testo SMS."
+#: src/view/com/auth/create/Step2.tsx:206
+#~ msgid "Please enter a phone number that can receive SMS text messages."
+#~ msgstr "Inserisci un numero di telefono in grado di ricevere messaggi di testo SMS."
-#: src/view/com/modals/AddAppPasswords.tsx:144
+#: src/view/com/modals/AddAppPasswords.tsx:145
msgid "Please enter a unique name for this App Password or use our randomly generated one."
msgstr "Inserisci un nome unico per la password dell'app o utilizzane uno generato automaticamente."
#: src/view/com/auth/create/state.ts:170
-msgid "Please enter the code you received by SMS."
-msgstr "Inserisci il codice che hai ricevuto via SMS."
+#~ msgid "Please enter the code you received by SMS."
+#~ msgstr "Inserisci il codice che hai ricevuto via SMS."
-#: src/view/com/auth/create/Step2.tsx:279
-msgid "Please enter the verification code sent to {phoneNumberFormatted}."
-msgstr "Inserisci il codice di verifica inviato a {phoneNumberFormatted}."
+#: src/view/com/auth/create/Step2.tsx:282
+#~ msgid "Please enter the verification code sent to {phoneNumberFormatted}."
+#~ msgstr "Inserisci il codice di verifica inviato a {phoneNumberFormatted}."
-#: src/view/com/auth/create/state.ts:146
+#: src/view/com/auth/create/state.ts:103
msgid "Please enter your email."
msgstr "Inserisci la tua email."
-#: src/view/com/modals/DeleteAccount.tsx:187
+#: src/view/com/modals/DeleteAccount.tsx:191
msgid "Please enter your password as well:"
msgstr "Inserisci anche la tua password:"
@@ -2404,43 +2939,54 @@ msgstr "Inserisci anche la tua password:"
msgid "Please tell us why you think this content warning was incorrectly applied!"
msgstr "Spiegaci perchƩ ritieni che questo avviso sui contenuti sia stato applicato in modo errato!"
+#~ 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/modals/VerifyEmail.tsx:101
msgid "Please Verify Your Email"
msgstr "Verifica la tua email"
-#: src/view/com/composer/Composer.tsx:215
+#: src/view/com/composer/Composer.tsx:222
msgid "Please wait for your link card to finish loading"
msgstr "Attendi il caricamento della scheda di collegamento"
+#: src/screens/Onboarding/index.tsx:37
+msgid "Politics"
+msgstr ""
+
#: src/view/com/modals/SelfLabel.tsx:111
msgid "Porn"
msgstr "Porno"
-#: src/view/com/composer/Composer.tsx:350
-#: src/view/com/composer/Composer.tsx:358
+#: src/view/com/composer/Composer.tsx:357
+#: src/view/com/composer/Composer.tsx:365
msgctxt "action"
msgid "Post"
msgstr "Post"
-#: src/view/com/post-thread/PostThread.tsx:227
-#: src/view/screens/PostThread.tsx:82
+#: src/view/com/post-thread/PostThread.tsx:303
msgctxt "description"
msgid "Post"
msgstr "Post"
-#: src/view/com/post-thread/PostThreadItem.tsx:176
+#~ msgid "Post"
+#~ msgstr "Publicació"
+
+#: src/view/com/post-thread/PostThreadItem.tsx:175
msgid "Post by {0}"
msgstr "Pubblicato da {0}"
-#: src/Navigation.tsx:172 src/Navigation.tsx:179 src/Navigation.tsx:186
+#: src/Navigation.tsx:172
+#: src/Navigation.tsx:179
+#: src/Navigation.tsx:186
msgid "Post by @{0}"
msgstr "Pubblicato da @{0}"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:82
+#: src/view/com/util/forms/PostDropdownBtn.tsx:90
msgid "Post deleted"
msgstr "Post eliminato"
-#: src/view/com/post-thread/PostThread.tsx:382
+#: src/view/com/post-thread/PostThread.tsx:462
msgid "Post hidden"
msgstr "Post nascosto"
@@ -2452,14 +2998,22 @@ msgstr "Lingua del post"
msgid "Post Languages"
msgstr "Lingue del post"
-#: src/view/com/post-thread/PostThread.tsx:434
+#: src/view/com/post-thread/PostThread.tsx:514
msgid "Post not found"
msgstr "Post non trovato"
-#: src/view/screens/Profile.tsx:161
+#: src/components/TagMenu/index.tsx:257
+msgid "posts"
+msgstr ""
+
+#: src/view/screens/Profile.tsx:180
msgid "Posts"
msgstr "Post"
+#: src/components/dialogs/MutedWords.tsx:77
+msgid "Posts can be muted based on their text, their tags, or both."
+msgstr ""
+
#: src/view/com/posts/FeedErrorMessage.tsx:64
msgid "Posts hidden"
msgstr "Post nascosto"
@@ -2468,7 +3022,7 @@ msgstr "Post nascosto"
msgid "Potentially Misleading Link"
msgstr "Link potenzialmente fuorviante"
-#: src/view/com/lightbox/Lightbox.web.tsx:128
+#: src/view/com/lightbox/Lightbox.web.tsx:135
msgid "Previous image"
msgstr "Immagine precedente"
@@ -2480,22 +3034,27 @@ msgstr "Lingua principale"
msgid "Prioritize Your Follows"
msgstr "Dai prioritĆ a quelli che segui"
-#: src/view/screens/Settings.tsx:598 src/view/shell/desktop/RightNav.tsx:84
+#: src/view/screens/Settings/index.tsx:632
+#: src/view/shell/desktop/RightNav.tsx:72
msgid "Privacy"
msgstr "Privacy"
-#: src/Navigation.tsx:217 src/view/screens/PrivacyPolicy.tsx:29
-#: src/view/screens/Settings.tsx:824 src/view/shell/Drawer.tsx:265
+#: src/Navigation.tsx:217
+#: src/view/screens/PrivacyPolicy.tsx:29
+#: src/view/screens/Settings/index.tsx:891
+#: src/view/shell/Drawer.tsx:262
msgid "Privacy Policy"
msgstr "Informativa sulla privacy"
-#: src/view/com/auth/login/ForgotPasswordForm.tsx:194
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:198
msgid "Processing..."
msgstr "Elaborazione in corsoā¦"
#: src/view/shell/bottom-bar/BottomBar.tsx:247
-#: src/view/shell/desktop/LeftNav.tsx:415 src/view/shell/Drawer.tsx:72
-#: src/view/shell/Drawer.tsx:549 src/view/shell/Drawer.tsx:550
+#: src/view/shell/desktop/LeftNav.tsx:415
+#: src/view/shell/Drawer.tsx:70
+#: src/view/shell/Drawer.tsx:546
+#: src/view/shell/Drawer.tsx:547
msgid "Profile"
msgstr "Profilo"
@@ -2503,10 +3062,14 @@ msgstr "Profilo"
msgid "Profile updated"
msgstr "Profilo aggiornato"
-#: src/view/screens/Settings.tsx:882
+#: src/view/screens/Settings/index.tsx:949
msgid "Protect your account by verifying your email."
msgstr "Proteggi il tuo account verificando la tua email."
+#: src/screens/Onboarding/StepFinished.tsx:101
+msgid "Public"
+msgstr ""
+
#: src/view/screens/ModerationModlists.tsx:61
msgid "Public, shareable lists of users to mute or block in bulk."
msgstr "Elenchi pubblici e condivisibili di utenti da disattivare o bloccare in blocco."
@@ -2515,11 +3078,11 @@ msgstr "Elenchi pubblici e condivisibili di utenti da disattivare o bloccare in
msgid "Public, shareable lists which can drive feeds."
msgstr "Elenchi pubblici e condivisibili che possono gestire i feeds."
-#: src/view/com/composer/Composer.tsx:335
+#: src/view/com/composer/Composer.tsx:342
msgid "Publish post"
msgstr "Pubblica il post"
-#: src/view/com/composer/Composer.tsx:335
+#: src/view/com/composer/Composer.tsx:342
msgid "Publish reply"
msgstr "Pubblica la risposta"
@@ -2537,6 +3100,9 @@ msgctxt "action"
msgid "Quote Post"
msgstr "Cita il post"
+#~ msgid "Quote Post"
+#~ msgstr "Cita una publicació"
+
#: src/view/screens/PreferencesThreads.tsx:86
msgid "Random (aka \"Poster's Roulette\")"
msgstr "Selezione a caso (nota anche come \"Poster's Roulette\")"
@@ -2553,14 +3119,16 @@ msgstr "Feeds consigliati"
msgid "Recommended Users"
msgstr "Utenti consigliati"
+#: src/components/dialogs/MutedWords.tsx:249
#: src/view/com/modals/ListAddRemoveUsers.tsx:264
#: src/view/com/modals/SelfLabel.tsx:83
-#: src/view/com/modals/UserAddRemoveLists.tsx:203
-#: src/view/com/util/UserAvatar.tsx:282 src/view/com/util/UserBanner.tsx:89
+#: src/view/com/modals/UserAddRemoveLists.tsx:219
+#: src/view/com/util/UserAvatar.tsx:285
+#: src/view/com/util/UserBanner.tsx:91
msgid "Remove"
msgstr "Rimuovi"
-#: src/view/com/feeds/FeedSourceCard.tsx:106
+#: src/view/com/feeds/FeedSourceCard.tsx:108
msgid "Remove {0} from my feeds?"
msgstr "Rimuovere {0} dai miei feeds?"
@@ -2573,11 +3141,11 @@ msgstr "Rimuovi l'account"
msgid "Remove feed"
msgstr "Rimuovi il feed"
-#: src/view/com/feeds/FeedSourceCard.tsx:105
-#: src/view/com/feeds/FeedSourceCard.tsx:167
-#: src/view/com/feeds/FeedSourceCard.tsx:172
-#: src/view/com/feeds/FeedSourceCard.tsx:243
-#: src/view/screens/ProfileFeed.tsx:281
+#: src/view/com/feeds/FeedSourceCard.tsx:107
+#: src/view/com/feeds/FeedSourceCard.tsx:169
+#: src/view/com/feeds/FeedSourceCard.tsx:174
+#: src/view/com/feeds/FeedSourceCard.tsx:245
+#: src/view/screens/ProfileFeed.tsx:273
msgid "Remove from my feeds"
msgstr "Rimuovi dai miei feed"
@@ -2589,11 +3157,15 @@ msgstr "Rimuovi l'immagine"
msgid "Remove image preview"
msgstr "Rimuovi l'anteprima dell'immagine"
+#: src/components/dialogs/MutedWords.tsx:294
+msgid "Remove mute word from your list"
+msgstr ""
+
#: src/view/com/modals/Repost.tsx:47
msgid "Remove repost"
msgstr "Rimuovi la ripubblicazione"
-#: src/view/com/feeds/FeedSourceCard.tsx:173
+#: src/view/com/feeds/FeedSourceCard.tsx:175
msgid "Remove this feed from my feeds?"
msgstr "Rimuovere questo feed dai miei feeds?"
@@ -2602,12 +3174,12 @@ msgid "Remove this feed from your saved feeds?"
msgstr "Elimina questo feed dai feeds salvati?"
#: src/view/com/modals/ListAddRemoveUsers.tsx:199
-#: src/view/com/modals/UserAddRemoveLists.tsx:136
+#: src/view/com/modals/UserAddRemoveLists.tsx:152
msgid "Removed from list"
msgstr "Elimina dalla lista"
-#: src/view/com/feeds/FeedSourceCard.tsx:111
-#: src/view/com/feeds/FeedSourceCard.tsx:178
+#: src/view/com/feeds/FeedSourceCard.tsx:113
+#: src/view/com/feeds/FeedSourceCard.tsx:180
msgid "Removed from my feeds"
msgstr "Rimuovere dai miei feeds"
@@ -2615,7 +3187,7 @@ msgstr "Rimuovere dai miei feeds"
msgid "Removes default thumbnail from {0}"
msgstr "Elimina la miniatura predefinita da {0}"
-#: src/view/screens/Profile.tsx:162
+#: src/view/screens/Profile.tsx:181
msgid "Replies"
msgstr "Risposte"
@@ -2623,16 +3195,17 @@ msgstr "Risposte"
msgid "Replies to this thread are disabled"
msgstr "Le risposte a questo thread sono disabilitate"
-#: src/view/com/composer/Composer.tsx:348
+#: src/view/com/composer/Composer.tsx:355
msgctxt "action"
msgid "Reply"
msgstr "Rispondi"
-#: src/view/screens/PreferencesHomeFeed.tsx:144
+#: src/view/screens/PreferencesFollowingFeed.tsx:144
msgid "Reply Filters"
msgstr "Filtri di risposta"
-#: src/view/com/post/Post.tsx:165 src/view/com/posts/FeedItem.tsx:286
+#: src/view/com/post/Post.tsx:167
+#: src/view/com/posts/FeedItem.tsx:287
msgctxt "description"
msgid "Reply to <0/>"
msgstr "Rispondi a <0/>"
@@ -2641,24 +3214,25 @@ msgstr "Rispondi a <0/>"
msgid "Report {collectionName}"
msgstr "Segnala {collectionName}"
-#: src/view/com/profile/ProfileHeader.tsx:408
+#: src/view/com/profile/ProfileHeader.tsx:361
msgid "Report Account"
msgstr "Segnala il conto"
-#: src/view/screens/ProfileFeed.tsx:301
+#: src/view/screens/ProfileFeed.tsx:293
msgid "Report feed"
msgstr "Segnala il feed"
-#: src/view/screens/ProfileList.tsx:437
+#: src/view/screens/ProfileList.tsx:459
msgid "Report List"
msgstr "Segnala la lista"
#: src/view/com/modals/report/SendReportButton.tsx:37
-#: src/view/com/util/forms/PostDropdownBtn.tsx:208
+#: src/view/com/util/forms/PostDropdownBtn.tsx:255
msgid "Report post"
msgstr "Segnala il post"
-#: src/view/com/modals/Repost.tsx:43 src/view/com/modals/Repost.tsx:48
+#: src/view/com/modals/Repost.tsx:43
+#: src/view/com/modals/Repost.tsx:48
#: src/view/com/modals/Repost.tsx:53
#: src/view/com/util/post-ctrls/RepostButton.tsx:61
msgctxt "action"
@@ -2675,14 +3249,22 @@ msgid "Repost or quote post"
msgstr "Ripubblicare o citare il post"
#: src/view/screens/PostRepostedBy.tsx:27
-msgid "Reposted by"
-msgstr "Ripubblicato da"
+#~ msgid "Reposted by"
+#~ msgstr "Ripubblicato da"
+
+#: src/view/screens/PostRepostedBy.tsx:27
+msgid "Reposted By"
+msgstr ""
+
+#: src/view/com/posts/FeedItem.tsx:207
+msgid "Reposted by {0}"
+msgstr ""
#: src/view/com/posts/FeedItem.tsx:206
-msgid "Reposted by {0})"
-msgstr "Ripubblicato da {0})"
+#~ msgid "Reposted by {0})"
+#~ msgstr "Ripubblicato da {0})"
-#: src/view/com/posts/FeedItem.tsx:223
+#: src/view/com/posts/FeedItem.tsx:224
msgid "Reposted by <0/>"
msgstr "Ripubblicato da <0/>"
@@ -2690,7 +3272,7 @@ msgstr "Ripubblicato da <0/>"
msgid "reposted your post"
msgstr "ripubblicato il tuo post"
-#: src/view/com/post-thread/PostThreadItem.tsx:189
+#: src/view/com/post-thread/PostThreadItem.tsx:188
msgid "Reposts of this post"
msgstr "Ripubblicazione di questo post"
@@ -2699,84 +3281,94 @@ msgstr "Ripubblicazione di questo post"
msgid "Request Change"
msgstr "Richiedi un cambio"
-#: src/view/com/auth/create/Step2.tsx:217
-msgid "Request code"
-msgstr "Richiedi un codice"
+#: src/view/com/auth/create/Step2.tsx:219
+#~ msgid "Request code"
+#~ msgstr "Richiedi un codice"
-#: src/view/screens/Settings.tsx:450
+#: src/view/com/modals/ChangePassword.tsx:239
+#: src/view/com/modals/ChangePassword.tsx:241
+msgid "Request Code"
+msgstr ""
+
+#: src/view/screens/Settings/index.tsx:456
msgid "Require alt text before posting"
msgstr "Richiedi il testo alternativo prima di pubblicare"
-#: src/view/com/auth/create/Step1.tsx:97
+#: src/view/com/auth/create/Step1.tsx:153
msgid "Required for this provider"
msgstr "Obbligatorio per questo operatore"
-#: src/view/com/auth/login/SetNewPasswordForm.tsx:98
-#: src/view/com/auth/login/SetNewPasswordForm.tsx:108
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:124
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:136
msgid "Reset code"
msgstr "Reimpostare il codice"
-#: src/view/screens/Settings.tsx:757
+#: src/view/com/modals/ChangePassword.tsx:190
+msgid "Reset Code"
+msgstr ""
+
+#: src/view/screens/Settings/index.tsx:824
msgid "Reset onboarding"
msgstr "Reimposta l'incorporazione"
-#: src/view/screens/Settings.tsx:760
+#: src/view/screens/Settings/index.tsx:827
msgid "Reset onboarding state"
msgstr "Reimposta lo stato dell' incorporazione"
-#: src/view/com/auth/login/ForgotPasswordForm.tsx:100
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:104
msgid "Reset password"
msgstr "Reimposta la password"
-#: src/view/screens/Settings.tsx:747
+#: src/view/screens/Settings/index.tsx:814
msgid "Reset preferences"
msgstr "Reimposta le preferenze"
-#: src/view/screens/Settings.tsx:750
+#: src/view/screens/Settings/index.tsx:817
msgid "Reset preferences state"
msgstr "Reimposta lo stato delle preferenze"
-#: src/view/screens/Settings.tsx:758
+#: src/view/screens/Settings/index.tsx:825
msgid "Resets the onboarding state"
msgstr "Reimposta lo stato dell'incorporazione"
-#: src/view/screens/Settings.tsx:748
+#: src/view/screens/Settings/index.tsx:815
msgid "Resets the preferences state"
msgstr "Reimposta lo stato delle preferenze"
-#: src/view/com/auth/login/LoginForm.tsx:266
+#: src/view/com/auth/login/LoginForm.tsx:269
msgid "Retries login"
msgstr "Ritenta l'accesso"
#: src/view/com/util/error/ErrorMessage.tsx:57
-#: src/view/com/util/error/ErrorScreen.tsx:67
+#: src/view/com/util/error/ErrorScreen.tsx:74
msgid "Retries the last action, which errored out"
msgstr "Ritenta l'ultima azione che ha generato un errore"
-#: src/view/com/auth/create/CreateAccount.tsx:164
-#: src/view/com/auth/create/CreateAccount.tsx:168
-#: src/view/com/auth/create/Step2.tsx:252
-#: src/view/com/auth/login/LoginForm.tsx:265
+#: src/screens/Onboarding/StepInterests/index.tsx:221
+#: src/screens/Onboarding/StepInterests/index.tsx:224
+#: src/view/com/auth/create/CreateAccount.tsx:181
+#: src/view/com/auth/create/CreateAccount.tsx:186
#: src/view/com/auth/login/LoginForm.tsx:268
+#: src/view/com/auth/login/LoginForm.tsx:271
#: src/view/com/util/error/ErrorMessage.tsx:55
-#: src/view/com/util/error/ErrorScreen.tsx:65
+#: src/view/com/util/error/ErrorScreen.tsx:72
msgid "Retry"
msgstr "Riprova"
-#: src/view/com/auth/create/Step2.tsx:245
-msgid "Retry."
-msgstr "Riprova."
+#: src/view/com/auth/create/Step2.tsx:247
+#~ msgid "Retry."
+#~ msgstr "Riprova."
-#: src/view/screens/ProfileList.tsx:877
+#: src/view/screens/ProfileList.tsx:898
msgid "Return to previous page"
msgstr "Ritorna alla pagina precedente"
-#: src/view/shell/desktop/RightNav.tsx:59
-msgid "SANDBOX. Posts and accounts are not permanent."
-msgstr "SANDBOX. I post e gli account non sono permanenti."
+#: src/view/shell/desktop/RightNav.tsx:55
+#~ msgid "SANDBOX. Posts and accounts are not permanent."
+#~ msgstr "SANDBOX. I post e gli account non sono permanenti."
-#: src/view/com/lightbox/Lightbox.tsx:129
-#: src/view/com/modals/CreateOrEditList.tsx:276
+#: src/view/com/lightbox/Lightbox.tsx:132
+#: src/view/com/modals/CreateOrEditList.tsx:345
msgctxt "action"
msgid "Save"
msgstr "Salva"
@@ -2784,12 +3376,13 @@ msgstr "Salva"
#: 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:268
-#: src/view/com/modals/EditProfile.tsx:224 src/view/screens/ProfileFeed.tsx:354
+#: src/view/com/modals/CreateOrEditList.tsx:337
+#: src/view/com/modals/EditProfile.tsx:224
+#: src/view/screens/ProfileFeed.tsx:346
msgid "Save"
msgstr "Salva"
-#: src/view/com/modals/AltImage.tsx:106
+#: src/view/com/modals/AltImage.tsx:130
msgid "Save alt text"
msgstr "Salva il testo alternativo"
@@ -2817,29 +3410,46 @@ msgstr "Salva eventuali modifiche al tuo profilo"
msgid "Saves handle change to {handle}"
msgstr "Salva la modifica del cambio dell'utente in {handle}"
-#: src/view/screens/ProfileList.tsx:833
+#: src/screens/Onboarding/index.tsx:36
+msgid "Science"
+msgstr ""
+
+#: src/view/screens/ProfileList.tsx:854
msgid "Scroll to top"
msgstr "Scorri verso l'alto"
-#: src/Navigation.tsx:435 src/view/com/auth/LoggedOut.tsx:122
+#: src/Navigation.tsx:440
+#: src/view/com/auth/LoggedOut.tsx:122
#: 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:408
-#: src/view/screens/Search/Search.tsx:566
-#: src/view/screens/Search/Search.tsx:579
+#: src/view/com/util/forms/SearchInput.tsx:67
+#: src/view/com/util/forms/SearchInput.tsx:79
+#: src/view/screens/Search/Search.tsx:419
+#: src/view/screens/Search/Search.tsx:668
+#: src/view/screens/Search/Search.tsx:686
#: src/view/shell/bottom-bar/BottomBar.tsx:159
-#: src/view/shell/desktop/LeftNav.tsx:324 src/view/shell/desktop/Search.tsx:214
-#: src/view/shell/desktop/Search.tsx:223 src/view/shell/Drawer.tsx:365
-#: src/view/shell/Drawer.tsx:366
+#: src/view/shell/desktop/LeftNav.tsx:324
+#: src/view/shell/desktop/Search.tsx:214
+#: src/view/shell/desktop/Search.tsx:223
+#: src/view/shell/Drawer.tsx:362
+#: src/view/shell/Drawer.tsx:363
msgid "Search"
msgstr "Cerca"
-#: src/view/screens/Search/Search.tsx:628 src/view/shell/desktop/Search.tsx:255
+#: src/view/screens/Search/Search.tsx:735
+#: src/view/shell/desktop/Search.tsx:255
msgid "Search for \"{query}\""
msgstr "Cerca \"{query}\""
-#: src/view/com/auth/LoggedOut.tsx:104 src/view/com/auth/LoggedOut.tsx:105
+#: src/components/TagMenu/index.tsx:145
+msgid "Search for all posts by @{authorHandle} with tag {tag}"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:90
+msgid "Search for all posts with tag {tag}"
+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 "Cerca utenti"
@@ -2848,6 +3458,22 @@ msgstr "Cerca utenti"
msgid "Security Step Required"
msgstr "Passaggio di sicurezza obbligatorio"
+#: src/components/TagMenu/index.web.tsx:50
+msgid "See {truncatedTag} posts"
+msgstr ""
+
+#: src/components/TagMenu/index.web.tsx:67
+msgid "See {truncatedTag} posts by user"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:128
+msgid "See <0>{tag}0> posts"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:189
+msgid "See <0>{tag}0> posts by this user"
+msgstr ""
+
#: src/view/screens/SavedFeeds.tsx:163
msgid "See this guide"
msgstr "Consulta questa guida"
@@ -2861,8 +3487,8 @@ msgid "Select {item}"
msgstr "Seleziona {item}"
#: src/view/com/modals/ServerInput.tsx:75
-msgid "Select Bluesky Social"
-msgstr "Seleziona Bluesky Social"
+#~ msgid "Select Bluesky Social"
+#~ msgstr "Seleziona Bluesky Social"
#: src/view/com/auth/login/Login.tsx:117
msgid "Select from an existing account"
@@ -2872,11 +3498,27 @@ msgstr "Seleziona da un account esistente"
msgid "Select option {i} of {numItems}"
msgstr "Seleziona l'opzione {i} di {numItems}"
-#: src/view/com/auth/create/Step1.tsx:77
-#: src/view/com/auth/login/LoginForm.tsx:147
+#: src/view/com/auth/create/Step1.tsx:103
+#: src/view/com/auth/login/LoginForm.tsx:150
msgid "Select service"
msgstr "Selecciona el servei"
+#: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:52
+msgid "Select some accounts below to follow"
+msgstr ""
+
+#: src/view/com/auth/server-input/index.tsx:82
+msgid "Select the service that hosts your data."
+msgstr ""
+
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:96
+msgid "Select topical feeds to follow from the list below"
+msgstr ""
+
+#: src/screens/Onboarding/StepModeration/index.tsx:75
+msgid "Select what you want to see (or not see), and weāll handle the rest."
+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 "Seleziona le lingue che desideri includere nei feed a cui sei iscritto. Se non ne viene selezionata nessuna, verranno visualizzate tutte le lingue."
@@ -2885,29 +3527,45 @@ msgstr "Seleziona le lingue che desideri includere nei feed a cui sei iscritto.
msgid "Select your app language for the default text to display in the app"
msgstr "Seleziona la lingua dell'app per il testo predefinito da visualizzare nell'app"
-#: src/view/com/auth/create/Step2.tsx:153
-msgid "Select your phone's country"
-msgstr "Seleziona il Paese del tuo cellulare"
+#: src/screens/Onboarding/StepInterests/index.tsx:196
+msgid "Select your interests from the options below"
+msgstr ""
+
+#: src/view/com/auth/create/Step2.tsx:155
+#~ msgid "Select your phone's country"
+#~ msgstr "Seleziona il Paese del tuo cellulare"
#: src/view/screens/LanguageSettings.tsx:190
msgid "Select your preferred language for translations in your feed."
msgstr "Seleziona la tua lingua preferita per le traduzioni nel tuo feed."
+#: src/screens/Onboarding/StepAlgoFeeds/index.tsx:116
+msgid "Select your primary algorithmic feeds"
+msgstr ""
+
+#: src/screens/Onboarding/StepAlgoFeeds/index.tsx:142
+msgid "Select your secondary algorithmic feeds"
+msgstr ""
+
#: src/view/com/modals/VerifyEmail.tsx:202
#: src/view/com/modals/VerifyEmail.tsx:204
msgid "Send Confirmation Email"
msgstr "Invia email di conferma"
-#: src/view/com/modals/DeleteAccount.tsx:127
+#: src/view/com/modals/DeleteAccount.tsx:131
msgid "Send email"
msgstr "Invia email"
-#: src/view/com/modals/DeleteAccount.tsx:140
+#: src/view/com/modals/DeleteAccount.tsx:144
msgctxt "action"
msgid "Send Email"
msgstr "Invia email"
-#: src/view/shell/Drawer.tsx:298 src/view/shell/Drawer.tsx:319
+#~ msgid "Send Email"
+#~ msgstr "Envia correu"
+
+#: src/view/shell/Drawer.tsx:295
+#: src/view/shell/Drawer.tsx:316
msgid "Send feedback"
msgstr "Invia feedback"
@@ -2915,49 +3573,61 @@ msgstr "Invia feedback"
msgid "Send Report"
msgstr "Invia segnalazione"
-#: src/view/com/modals/DeleteAccount.tsx:129
+#: src/view/com/modals/DeleteAccount.tsx:133
msgid "Sends email with confirmation code for account deletion"
msgstr "Invia un'email con il codice di conferma per la cancellazione dell'account"
-#: src/view/com/modals/ContentFilteringSettings.tsx:306
+#: src/view/com/auth/server-input/index.tsx:110
+msgid "Server address"
+msgstr ""
+
+#: src/view/com/modals/ContentFilteringSettings.tsx:311
msgid "Set {value} for {labelGroup} content moderation policy"
msgstr "Imposta {value} per la politica di moderazione dei contenuti di {labelGroup}"
-#: src/view/com/modals/ContentFilteringSettings.tsx:155
-#: src/view/com/modals/ContentFilteringSettings.tsx:174
+#: src/view/com/modals/ContentFilteringSettings.tsx:160
+#: src/view/com/modals/ContentFilteringSettings.tsx:179
msgctxt "action"
msgid "Set Age"
msgstr "Imposta l'etĆ "
-#: src/view/screens/Settings.tsx:482
+#: src/view/screens/Settings/index.tsx:488
msgid "Set color theme to dark"
msgstr "Imposta il colore del tema scuro"
-#: src/view/screens/Settings.tsx:475
+#: src/view/screens/Settings/index.tsx:481
msgid "Set color theme to light"
msgstr "Imposta il colore del tema su chiaro"
-#: src/view/screens/Settings.tsx:469
+#: src/view/screens/Settings/index.tsx:475
msgid "Set color theme to system setting"
msgstr "Imposta il colore del tema basato sulle impostazioni del tuo sistema"
-#: src/view/com/auth/login/SetNewPasswordForm.tsx:78
+#: src/view/screens/Settings/index.tsx:514
+msgid "Set dark theme to the dark theme"
+msgstr ""
+
+#: src/view/screens/Settings/index.tsx:507
+msgid "Set dark theme to the dim theme"
+msgstr ""
+
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:104
msgid "Set new password"
msgstr "Imposta una nuova password"
-#: src/view/com/auth/create/Step1.tsx:169
+#: src/view/com/auth/create/Step1.tsx:225
msgid "Set password"
msgstr "Imposta la password"
-#: src/view/screens/PreferencesHomeFeed.tsx:225
+#: src/view/screens/PreferencesFollowingFeed.tsx:225
msgid "Set this setting to \"No\" to hide all quote posts from your feed. Reposts will still be visible."
msgstr "Seleziona \"No\" per nascondere tutti i post con le citazioni dal tuo feed. I repost saranno ancora visibili."
-#: src/view/screens/PreferencesHomeFeed.tsx:122
+#: src/view/screens/PreferencesFollowingFeed.tsx:122
msgid "Set this setting to \"No\" to hide all replies from your feed."
msgstr "Seleziona \"No\" per nascondere tutte le risposte dal tuo feed."
-#: src/view/screens/PreferencesHomeFeed.tsx:191
+#: src/view/screens/PreferencesFollowingFeed.tsx:191
msgid "Set this setting to \"No\" to hide all reposts from your feed."
msgstr "Seleziona \"No\" per nascondere tutte le ripubblicazioni dal tuo feed."
@@ -2966,29 +3636,39 @@ msgid "Set this setting to \"Yes\" to show replies in a threaded view. This is a
msgstr "Seleziona \"Sì\" per mostrare le risposte in una visualizzazione concatenata. Questa è una funzionalità sperimentale."
#: 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 "Seleziona \"Sì\" per mostrare esempi dei feed salvati nel feed successivo. Questa è una funzionalità sperimentale."
+#~ msgid "Set this setting to \"Yes\" to show samples of your saved feeds in your following feed. This is an experimental feature."
+#~ msgstr "Seleziona \"Sì\" per mostrare esempi dei feed salvati nel feed successivo. Questa è una funzionalità sperimentale."
+
+#: src/view/screens/PreferencesFollowingFeed.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/screens/Onboarding/Layout.tsx:50
+msgid "Set up your account"
+msgstr ""
#: src/view/com/modals/ChangeHandle.tsx:266
msgid "Sets Bluesky username"
msgstr "Imposta il tuo nome utente di Bluesky"
-#: src/view/com/auth/login/ForgotPasswordForm.tsx:153
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:157
msgid "Sets email for password reset"
msgstr "Imposta l'email per la reimpostazione della password"
-#: src/view/com/auth/login/ForgotPasswordForm.tsx:118
+#: src/view/com/auth/login/ForgotPasswordForm.tsx:122
msgid "Sets hosting provider for password reset"
msgstr "Imposta il provider del hosting per la reimpostazione della password"
-#: src/view/com/auth/create/Step1.tsx:78
-#: src/view/com/auth/login/LoginForm.tsx:148
+#: src/view/com/auth/create/Step1.tsx:104
+#: src/view/com/auth/login/LoginForm.tsx:151
msgid "Sets server for the Bluesky client"
msgstr "Imposta il server per il client Bluesky"
-#: src/Navigation.tsx:134 src/view/screens/Settings.tsx:294
-#: src/view/shell/desktop/LeftNav.tsx:433 src/view/shell/Drawer.tsx:570
-#: src/view/shell/Drawer.tsx:571
+#: src/Navigation.tsx:135
+#: src/view/screens/Settings/index.tsx:294
+#: src/view/shell/desktop/LeftNav.tsx:433
+#: src/view/shell/Drawer.tsx:567
+#: src/view/shell/Drawer.tsx:568
msgid "Settings"
msgstr "Impostazioni"
@@ -2996,29 +3676,30 @@ msgstr "Impostazioni"
msgid "Sexual activity or erotic nudity."
msgstr "AttivitĆ sessuale o nuditĆ erotica."
-#: src/view/com/lightbox/Lightbox.tsx:138
+#: src/view/com/lightbox/Lightbox.tsx:141
msgctxt "action"
msgid "Share"
msgstr "Condividi"
-#: src/view/com/profile/ProfileHeader.tsx:342
-#: src/view/com/util/forms/PostDropdownBtn.tsx:151
-#: src/view/screens/ProfileList.tsx:396
+#: src/view/com/profile/ProfileHeader.tsx:295
+#: src/view/com/util/forms/PostDropdownBtn.tsx:184
+#: src/view/screens/ProfileList.tsx:418
msgid "Share"
msgstr "Condividi"
-#: src/view/screens/ProfileFeed.tsx:313
+#: src/view/screens/ProfileFeed.tsx:305
msgid "Share feed"
msgstr "Condividi il feed"
-#: src/view/com/modals/ContentFilteringSettings.tsx:261
+#: src/screens/Onboarding/StepModeration/ModerationOption.tsx:43
+#: src/view/com/modals/ContentFilteringSettings.tsx:266
#: src/view/com/util/moderation/ContentHider.tsx:107
#: src/view/com/util/moderation/PostHider.tsx:108
-#: src/view/screens/Settings.tsx:344
+#: src/view/screens/Settings/index.tsx:344
msgid "Show"
msgstr "Mostra"
-#: src/view/screens/PreferencesHomeFeed.tsx:68
+#: src/view/screens/PreferencesFollowingFeed.tsx:68
msgid "Show all replies"
msgstr "Mostra tutte le repliche"
@@ -3030,24 +3711,37 @@ msgstr "Mostra comunque"
msgid "Show embeds from {0}"
msgstr "Mostra incorporamenti di {0}"
-#: src/view/com/profile/ProfileHeader.tsx:498
+#: src/view/com/profile/ProfileHeader.tsx:459
msgid "Show follows similar to {0}"
msgstr "Mostra follows simile a {0}"
-#: src/view/com/post-thread/PostThreadItem.tsx:569
-#: src/view/com/post/Post.tsx:196 src/view/com/posts/FeedItem.tsx:362
+#: src/view/com/post-thread/PostThreadItem.tsx:538
+#: src/view/com/post/Post.tsx:198
+#: src/view/com/posts/FeedItem.tsx:363
msgid "Show More"
msgstr "Mostra di più"
-#: src/view/screens/PreferencesHomeFeed.tsx:258
+#: src/view/screens/PreferencesFollowingFeed.tsx:258
msgid "Show Posts from My Feeds"
msgstr "Mostra post dai miei feed"
-#: src/view/screens/PreferencesHomeFeed.tsx:222
+#: src/view/screens/PreferencesFollowingFeed.tsx:222
msgid "Show Quote Posts"
msgstr "Mostra post con citazioni"
-#: src/view/screens/PreferencesHomeFeed.tsx:119
+#: src/screens/Onboarding/StepFollowingFeed.tsx:118
+msgid "Show quote-posts in Following feed"
+msgstr ""
+
+#: src/screens/Onboarding/StepFollowingFeed.tsx:134
+msgid "Show quotes in Following"
+msgstr ""
+
+#: src/screens/Onboarding/StepFollowingFeed.tsx:94
+msgid "Show re-posts in Following feed"
+msgstr ""
+
+#: src/view/screens/PreferencesFollowingFeed.tsx:119
msgid "Show Replies"
msgstr "Mostra risposte"
@@ -3055,46 +3749,61 @@ msgstr "Mostra risposte"
msgid "Show replies by people you follow before all other replies."
msgstr "Mostra le risposte delle persone che segui prima delle altre risposte."
-#: src/view/screens/PreferencesHomeFeed.tsx:70
+#: src/screens/Onboarding/StepFollowingFeed.tsx:86
+msgid "Show replies in Following"
+msgstr ""
+
+#: src/screens/Onboarding/StepFollowingFeed.tsx:70
+msgid "Show replies in Following feed"
+msgstr ""
+
+#: src/view/screens/PreferencesFollowingFeed.tsx:70
msgid "Show replies with at least {value} {0}"
msgstr "Mostra risposte con almeno {value} {0}"
-#: src/view/screens/PreferencesHomeFeed.tsx:188
+#: src/view/screens/PreferencesFollowingFeed.tsx:188
msgid "Show Reposts"
msgstr "Mostra ripubblicazioni"
+#: src/screens/Onboarding/StepFollowingFeed.tsx:110
+msgid "Show reposts in Following"
+msgstr ""
+
#: src/view/com/util/moderation/ContentHider.tsx:67
#: src/view/com/util/moderation/PostHider.tsx:61
msgid "Show the content"
msgstr "Mostra il contenuto"
-#: src/view/com/notifications/FeedItem.tsx:350
+#: src/view/com/notifications/FeedItem.tsx:346
msgid "Show users"
msgstr "Mostra utenti"
-#: src/view/com/profile/ProfileHeader.tsx:501
+#: src/view/com/profile/ProfileHeader.tsx:462
msgid "Shows a list of users similar to this user."
msgstr "Mostra un elenco di utenti simili a questo utente."
-#: src/view/com/profile/ProfileHeader.tsx:545
+#: src/view/com/post-thread/PostThreadFollowBtn.tsx:124
+#: src/view/com/profile/ProfileHeader.tsx:506
msgid "Shows posts from {0} in your feed"
msgstr "Mostra i post di {0} nel tuo feed"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:70
-#: src/view/com/auth/login/Login.tsx:98 src/view/com/auth/SplashScreen.tsx:54
+#: src/view/com/auth/login/Login.tsx:98
+#: src/view/com/auth/SplashScreen.tsx:79
#: 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/bottom-bar/BottomBarWeb.tsx:179
+#: src/view/shell/bottom-bar/BottomBarWeb.tsx:181
+#: src/view/shell/NavSignupCard.tsx:58
+#: src/view/shell/NavSignupCard.tsx:59
msgid "Sign in"
msgstr "Accedi"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:78
-#: src/view/com/auth/SplashScreen.tsx:57
-#: src/view/com/auth/SplashScreen.web.tsx:87
+#: src/view/com/auth/SplashScreen.tsx:82
+#: src/view/com/auth/SplashScreen.web.tsx:91
msgid "Sign In"
msgstr "Accedi"
@@ -3107,23 +3816,25 @@ msgstr "Accedi come... {0}"
msgid "Sign in as..."
msgstr "Accedi come..."
-#: src/view/com/auth/login/LoginForm.tsx:134
+#: src/view/com/auth/login/LoginForm.tsx:137
msgid "Sign into"
msgstr "Accedere a"
#: src/view/com/modals/SwitchAccount.tsx:64
-#: src/view/com/modals/SwitchAccount.tsx:69 src/view/screens/Settings.tsx:107
-#: src/view/screens/Settings.tsx:110
+#: src/view/com/modals/SwitchAccount.tsx:69
+#: src/view/screens/Settings/index.tsx:100
+#: src/view/screens/Settings/index.tsx:103
msgid "Sign out"
msgstr "Disconnettiti"
#: 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/bottom-bar/BottomBarWeb.tsx:169
+#: src/view/shell/bottom-bar/BottomBarWeb.tsx:171
+#: src/view/shell/NavSignupCard.tsx:49
+#: src/view/shell/NavSignupCard.tsx:50
#: src/view/shell/NavSignupCard.tsx:52
msgid "Sign up"
msgstr "Iscrizione"
@@ -3136,7 +3847,7 @@ msgstr "Iscriviti o accedi per partecipare alla conversazione"
msgid "Sign-in Required"
msgstr "Ć richiesta l'autenticazione"
-#: src/view/screens/Settings.tsx:355
+#: src/view/screens/Settings/index.tsx:355
msgid "Signed in as"
msgstr "Registrato come"
@@ -3148,23 +3859,33 @@ msgstr "Registrato come @{0}"
msgid "Signs {0} out of Bluesky"
msgstr "{0} esce da Bluesky"
+#: src/screens/Onboarding/StepInterests/index.tsx:235
+#: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:195
#: src/view/com/auth/onboarding/WelcomeMobile.tsx:33
msgid "Skip"
msgstr "Salta questo passo"
-#: src/view/com/auth/create/Step2.tsx:80
-msgid "SMS verification"
-msgstr "Verifica tramite SMS"
+#: src/screens/Onboarding/StepInterests/index.tsx:232
+msgid "Skip this flow"
+msgstr ""
+
+#: src/view/com/auth/create/Step2.tsx:82
+#~ msgid "SMS verification"
+#~ msgstr "Verifica tramite SMS"
+
+#: src/screens/Onboarding/index.tsx:40
+msgid "Software Dev"
+msgstr ""
#: src/view/com/modals/ProfilePreview.tsx:62
-msgid "Something went wrong and we're not sure what."
-msgstr "Qualcosa ĆØ andato storto ma non siamo sicuri di cosa."
+#~ msgid "Something went wrong and we're not sure what."
+#~ msgstr "Qualcosa ĆØ andato storto ma non siamo sicuri di cosa."
#: src/view/com/modals/Waitlist.tsx:51
msgid "Something went wrong. Check your email and try again."
msgstr "Qualcosa ĆØ andato storto. Controlla la tua email e riprova."
-#: src/App.native.tsx:62
+#: src/App.native.tsx:63
msgid "Sorry! Your session expired. Please log in again."
msgstr "Scusa! La tua sessione ĆØ scaduta. Per favore accedi di nuovo."
@@ -3176,15 +3897,19 @@ msgstr "Ordina le risposte"
msgid "Sort replies to the same post by:"
msgstr "Ordina le risposte allo stesso post per:"
+#: src/screens/Onboarding/index.tsx:30
+msgid "Sports"
+msgstr ""
+
#: src/view/com/modals/crop-image/CropImage.web.tsx:122
msgid "Square"
msgstr "Quadrato"
#: src/view/com/modals/ServerInput.tsx:62
-msgid "Staging"
-msgstr "Allestimento"
+#~ msgid "Staging"
+#~ msgstr "Allestimento"
-#: src/view/screens/Settings.tsx:804
+#: src/view/screens/Settings/index.tsx:871
msgid "Status page"
msgstr "Pagina di stato"
@@ -3192,11 +3917,12 @@ msgstr "Pagina di stato"
msgid "Step {0} of {numSteps}"
msgstr "Passo {0} di {numSteps}"
-#: src/view/screens/Settings.tsx:276
+#: src/view/screens/Settings/index.tsx:274
msgid "Storage cleared, you need to restart the app now."
msgstr "Spazio di archiviazione eliminato. Riavvia l'app."
-#: src/Navigation.tsx:202 src/view/screens/Settings.tsx:740
+#: src/Navigation.tsx:202
+#: src/view/screens/Settings/index.tsx:807
msgid "Storybook"
msgstr "Cronologia"
@@ -3204,15 +3930,20 @@ msgstr "Cronologia"
msgid "Submit"
msgstr "Invia"
-#: src/view/screens/ProfileList.tsx:586
+#: src/view/screens/ProfileList.tsx:608
msgid "Subscribe"
msgstr "Iscriviti"
-#: src/view/screens/ProfileList.tsx:582
+#: src/screens/Onboarding/StepAlgoFeeds/FeedCard.tsx:173
+#: src/screens/Onboarding/StepAlgoFeeds/FeedCard.tsx:307
+msgid "Subscribe to the {0} feed"
+msgstr ""
+
+#: src/view/screens/ProfileList.tsx:604
msgid "Subscribe to this list"
msgstr "Iscriviti alla lista"
-#: src/view/screens/Search/Search.tsx:364
+#: src/view/screens/Search/Search.tsx:374
msgid "Suggested Follows"
msgstr "Followers suggeriti"
@@ -3224,35 +3955,46 @@ msgstr "Suggerito per te"
msgid "Suggestive"
msgstr "Suggestivo"
-#: src/Navigation.tsx:212 src/view/screens/Support.tsx:30
+#: src/Navigation.tsx:212
+#: src/view/screens/Support.tsx:30
#: src/view/screens/Support.tsx:33
msgid "Support"
msgstr "Supporto"
#: src/view/com/modals/ProfilePreview.tsx:110
-msgid "Swipe up to see more"
-msgstr "Scorri verso l'alto per vedere di più"
+#~ msgid "Swipe up to see more"
+#~ msgstr "Scorri verso l'alto per vedere di più"
#: src/view/com/modals/SwitchAccount.tsx:117
msgid "Switch Account"
msgstr "Cambia account"
-#: src/view/com/modals/SwitchAccount.tsx:97 src/view/screens/Settings.tsx:137
+#: src/view/com/modals/SwitchAccount.tsx:97
+#: src/view/screens/Settings/index.tsx:130
msgid "Switch to {0}"
msgstr "Cambia a {0}"
-#: src/view/com/modals/SwitchAccount.tsx:98 src/view/screens/Settings.tsx:138
+#: src/view/com/modals/SwitchAccount.tsx:98
+#: src/view/screens/Settings/index.tsx:131
msgid "Switches the account you are logged in to"
msgstr "Cambia l'account dal quale hai effettuato l'accesso"
-#: src/view/screens/Settings.tsx:466
+#: src/view/screens/Settings/index.tsx:472
msgid "System"
msgstr "Sistema"
-#: src/view/screens/Settings.tsx:720
+#: src/view/screens/Settings/index.tsx:795
msgid "System log"
msgstr "Registro di sistema"
+#: src/components/dialogs/MutedWords.tsx:288
+msgid "tag"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:74
+msgid "Tag menu: {tag}"
+msgstr ""
+
#: src/view/com/modals/crop-image/CropImage.web.tsx:112
msgid "Tall"
msgstr "Alto"
@@ -3261,21 +4003,35 @@ msgstr "Alto"
msgid "Tap to view fully"
msgstr "Tocca per visualizzare completamente"
-#: src/view/shell/desktop/RightNav.tsx:93
+#: src/screens/Onboarding/index.tsx:39
+msgid "Tech"
+msgstr ""
+
+#: src/view/shell/desktop/RightNav.tsx:81
msgid "Terms"
msgstr "Termini"
-#: src/Navigation.tsx:222 src/view/screens/Settings.tsx:818
-#: src/view/screens/TermsOfService.tsx:29 src/view/shell/Drawer.tsx:259
+#: src/Navigation.tsx:222
+#: src/view/screens/Settings/index.tsx:885
+#: src/view/screens/TermsOfService.tsx:29
+#: src/view/shell/Drawer.tsx:256
msgid "Terms of Service"
msgstr "Termini di servizio"
+#: src/components/dialogs/MutedWords.tsx:288
+msgid "text"
+msgstr ""
+
#: src/view/com/modals/AppealLabel.tsx:70
#: src/view/com/modals/report/InputIssueDetails.tsx:51
msgid "Text input field"
msgstr "Campo di testo"
-#: src/view/com/profile/ProfileHeader.tsx:310
+#: src/view/com/auth/create/CreateAccount.tsx:94
+msgid "That handle is already taken."
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:263
msgid "The account will be able to interact with you after unblocking."
msgstr "L'account sarĆ in grado di interagire con te dopo lo sblocco."
@@ -3287,7 +4043,11 @@ msgstr "Le Linee guida della community sono state spostate a<0/>"
msgid "The Copyright Policy has been moved to <0/>"
msgstr "La politica sul copyright ĆØ stata spostata a <0/>"
-#: src/view/com/post-thread/PostThread.tsx:437
+#: src/screens/Onboarding/Layout.tsx:60
+msgid "The following steps will help customize your Bluesky experience."
+msgstr ""
+
+#: src/view/com/post-thread/PostThread.tsx:517
msgid "The post may have been deleted."
msgstr "Il post potrebbe essere stato cancellato."
@@ -3299,11 +4059,18 @@ msgstr "La politica sulla privacy ĆØ stata spostata a <0/><0/>"
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 "Il modulo di supporto ĆØ stato spostato. Se hai bisogno di aiuto, <0/> o visita {HELP_DESK_URL} per metterti in contatto con noi."
+#~ 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 "El formulari de suport ha estat traslladat. Si necessites ajuda, <0/> o visita {HELP_DESK_URL} per contactar amb nosaltres."
+
#: src/view/screens/TermsOfService.tsx:33
msgid "The Terms of Service have been moved to"
msgstr "I Termini di Servizio sono stati spostati a"
-#: src/view/screens/ProfileFeed.tsx:558
+#: src/screens/Onboarding/StepAlgoFeeds/index.tsx:150
+msgid "There are many feeds to try:"
+msgstr ""
+
+#: src/view/screens/ProfileFeed.tsx:550
msgid "There was an an issue contacting the server, please check your internet connection and try again."
msgstr "Si ĆØ verificato un problema nel contattare il server, controlla la tua connessione Internet e riprova."
@@ -3311,25 +4078,27 @@ msgstr "Si ĆØ verificato un problema nel contattare il server, controlla la tua
msgid "There was an an issue removing this feed. Please check your internet connection and try again."
msgstr "Si ĆØ verificato un problema durante la rimozione di questo feed. Per favore controlla la tua connessione Internet e prova di nuovo."
-#: src/view/screens/ProfileFeed.tsx:218
+#: src/view/screens/ProfileFeed.tsx:210
msgid "There was an an issue updating your feeds, please check your internet connection and try again."
msgstr "Si ĆØ verificato un problema durante la rimozione di questo feed. Per favore controlla la tua connessione Internet e prova di nuovo."
-#: src/view/screens/ProfileFeed.tsx:245 src/view/screens/ProfileList.tsx:266
-#: src/view/screens/SavedFeeds.tsx:209 src/view/screens/SavedFeeds.tsx:231
+#: src/view/screens/ProfileFeed.tsx:237
+#: src/view/screens/ProfileList.tsx:267
+#: 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 "Si ĆØ verificato un problema durante il contatto con il server"
#: src/view/com/auth/onboarding/RecommendedFeedsItem.tsx:57
#: src/view/com/auth/onboarding/RecommendedFeedsItem.tsx:66
-#: src/view/com/feeds/FeedSourceCard.tsx:113
-#: src/view/com/feeds/FeedSourceCard.tsx:127
-#: src/view/com/feeds/FeedSourceCard.tsx:181
+#: src/view/com/feeds/FeedSourceCard.tsx:115
+#: src/view/com/feeds/FeedSourceCard.tsx:129
+#: src/view/com/feeds/FeedSourceCard.tsx:183
msgid "There was an issue contacting your server"
msgstr "Si ĆØ verificato un problema durante il contatto con il tuo server"
-#: src/view/com/notifications/Feed.tsx:115
+#: src/view/com/notifications/Feed.tsx:117
msgid "There was an issue fetching notifications. Tap here to try again."
msgstr "Si ĆØ verificato un problema durante il recupero delle notifiche. Tocca qui per riprovare."
@@ -3346,6 +4115,7 @@ msgstr "Si ĆØ verificato un problema durante il recupero dell'elenco. Tocca qui
msgid "There was an issue fetching your lists. Tap here to try again."
msgstr "Si ĆØ verificato un problema durante il recupero delle tue liste. Tocca qui per riprovare."
+#: src/screens/Onboarding/StepModeration/AdultContentEnabledPref.tsx:63
#: src/view/com/modals/ContentFilteringSettings.tsx:126
msgid "There was an issue syncing your preferences with the server"
msgstr "Si ĆØ verificato un problema durante la sincronizzazione delle tue preferenze con il server"
@@ -3354,17 +4124,21 @@ msgstr "Si ĆØ verificato un problema durante la sincronizzazione delle tue prefe
msgid "There was an issue with fetching your app passwords"
msgstr "Si ĆØ verificato un problema durante il recupero delle password dell'app"
-#: 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
+#: src/view/com/post-thread/PostThreadFollowBtn.tsx:93
+#: src/view/com/post-thread/PostThreadFollowBtn.tsx:105
+#: src/view/com/profile/ProfileHeader.tsx:157
+#: src/view/com/profile/ProfileHeader.tsx:178
+#: src/view/com/profile/ProfileHeader.tsx:217
+#: src/view/com/profile/ProfileHeader.tsx:230
+#: src/view/com/profile/ProfileHeader.tsx:250
+#: src/view/com/profile/ProfileHeader.tsx:272
msgid "There was an issue! {0}"
msgstr "Si ĆØ verificato un problema! {0}"
-#: src/view/screens/ProfileList.tsx:287 src/view/screens/ProfileList.tsx:306
-#: src/view/screens/ProfileList.tsx:328 src/view/screens/ProfileList.tsx:347
+#: src/view/screens/ProfileList.tsx:288
+#: src/view/screens/ProfileList.tsx:307
+#: src/view/screens/ProfileList.tsx:329
+#: src/view/screens/ProfileList.tsx:348
msgid "There was an issue. Please check your internet connection and try again."
msgstr "Si ĆØ verificato un problema. Per favore controlla la tua connessione Internet e prova di nuovo."
@@ -3372,9 +4146,20 @@ msgstr "Si ĆØ verificato un problema. Per favore controlla la tua connessione In
msgid "There was an unexpected issue in the application. Please let us know if this happened to you!"
msgstr "Si ĆØ verificato un problema imprevisto nell'applicazione. Per favore facci sapere se ti ĆØ successo!"
-#: src/view/com/auth/create/Step2.tsx:53
-msgid "There's something wrong with this number. Please choose your country and enter your full phone number!"
-msgstr "C'ĆØ qualcosa di sbagliato in questo numero. Scegli il tuo Paese e inserisci il tuo numero di telefono completo!"
+#: src/screens/Deactivated.tsx:106
+msgid "There's been a rush of new users to Bluesky! We'll activate your account as soon as we can."
+msgstr ""
+
+#: src/view/com/auth/create/Step2.tsx:55
+#~ msgid "There's something wrong with this number. Please choose your country and enter your full phone number!"
+#~ msgstr "C'ĆØ qualcosa di sbagliato in questo numero. Scegli il tuo Paese e inserisci il tuo numero di telefono completo!"
+
+#: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:138
+msgid "These are popular accounts you might like:"
+msgstr ""
+
+#~ 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:"
@@ -3396,12 +4181,17 @@ msgstr "Questo contenuto non è disponibile perché uno degli utenti coinvolti h
msgid "This content is not viewable without a Bluesky account."
msgstr "Questo contenuto non ĆØ visualizzabile senza un account Bluesky."
+#: src/view/screens/Settings/ExportCarDialog.tsx:75
+msgid "This feature is in beta. You can read more about repository exports in <0>this blogpost.0>"
+msgstr ""
+
#: src/view/com/posts/FeedErrorMessage.tsx:114
msgid "This feed is currently receiving high traffic and is temporarily unavailable. Please try again later."
msgstr "Questo canale al momento sta ricevendo molte visite ed è temporaneamente non disponibile. Riprova più tardi."
-#: src/view/screens/Profile.tsx:392 src/view/screens/ProfileFeed.tsx:484
-#: src/view/screens/ProfileList.tsx:639
+#: src/view/screens/Profile.tsx:420
+#: src/view/screens/ProfileFeed.tsx:476
+#: src/view/screens/ProfileList.tsx:661
msgid "This feed is empty!"
msgstr "Questo feed ĆØ vuoto!"
@@ -3417,19 +4207,22 @@ msgstr "Queste informazioni non vengono condivise con altri utenti."
msgid "This is important in case you ever need to change your email or reset your password."
msgstr "Questo ĆØ importante nel caso in cui avessi bisogno di modificare la tua email o reimpostare la password."
+#~ msgid "This is the service that keeps you online."
+#~ msgstr "Aquest Ʃs el servei que et mantƩ connectat."
+
#: src/view/com/modals/LinkWarning.tsx:58
msgid "This link is taking you to the following website:"
msgstr "Questo link ti porta al seguente sito web:"
-#: src/view/screens/ProfileList.tsx:813
+#: src/view/screens/ProfileList.tsx:834
msgid "This list is empty!"
msgstr "La lista ĆØ vuota!"
-#: src/view/com/modals/AddAppPasswords.tsx:105
+#: src/view/com/modals/AddAppPasswords.tsx:106
msgid "This name is already in use"
msgstr "Questo nome ĆØ giĆ in uso"
-#: src/view/com/post-thread/PostThreadItem.tsx:123
+#: src/view/com/post-thread/PostThreadItem.tsx:125
msgid "This post has been deleted."
msgstr "Questo post ĆØ stato cancellato."
@@ -3442,18 +4235,27 @@ msgid "This user is included in the <0/> list which you have blocked."
msgstr "Questo utente ĆØ incluso nell'elenco <0/> che hai bloccato."
#: src/view/com/modals/ModerationDetails.tsx:74
-msgid "This user is included the <0/> list which you have muted."
-msgstr "Questo utente ĆØ incluso nell'elenco <0/> che hai silenziato."
+msgid "This user is included in the <0/> list which you have muted."
+msgstr ""
+
+#: src/view/com/modals/ModerationDetails.tsx:74
+#~ msgid "This user is included the <0/> list which you have muted."
+#~ msgstr "Questo utente ĆØ incluso nell'elenco <0/> che hai silenziato."
#: src/view/com/modals/SelfLabel.tsx:137
msgid "This warning is only available for posts with media attached."
msgstr "Questo avviso ĆØ disponibile solo per i post con contenuti multimediali allegati."
-#: src/view/com/util/forms/PostDropdownBtn.tsx:190
+#: src/components/dialogs/MutedWords.tsx:236
+msgid "This will delete {0} from your muted words. You can always add it back later."
+msgstr ""
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:237
msgid "This will hide this post from your feeds."
msgstr "Questo nasconderĆ il post dai tuoi feeds."
-#: src/view/screens/PreferencesThreads.tsx:53 src/view/screens/Settings.tsx:531
+#: src/view/screens/PreferencesThreads.tsx:53
+#: src/view/screens/Settings/index.tsx:565
msgid "Thread Preferences"
msgstr "Preferenze delle discussioni"
@@ -3461,11 +4263,15 @@ msgstr "Preferenze delle discussioni"
msgid "Threaded Mode"
msgstr "ModalitĆ discussione"
-#: src/Navigation.tsx:252
+#: src/Navigation.tsx:255
msgid "Threads Preferences"
msgstr "Preferenze per le discussioni"
-#: src/view/com/util/forms/DropdownButton.tsx:234
+#: src/components/dialogs/MutedWords.tsx:95
+msgid "Toggle between muted word options."
+msgstr ""
+
+#: src/view/com/util/forms/DropdownButton.tsx:246
msgid "Toggle dropdown"
msgstr "Attiva/disattiva il menu a discesa"
@@ -3473,48 +4279,53 @@ msgstr "Attiva/disattiva il menu a discesa"
msgid "Transformations"
msgstr "Trasformazioni"
-#: src/view/com/post-thread/PostThreadItem.tsx:710
-#: src/view/com/post-thread/PostThreadItem.tsx:712
-#: src/view/com/util/forms/PostDropdownBtn.tsx:123
+#: src/view/com/post-thread/PostThreadItem.tsx:685
+#: src/view/com/post-thread/PostThreadItem.tsx:687
+#: src/view/com/util/forms/PostDropdownBtn.tsx:156
msgid "Translate"
msgstr "Tradurre"
-#: src/view/com/util/error/ErrorScreen.tsx:75
+#: src/view/com/util/error/ErrorScreen.tsx:82
msgctxt "action"
msgid "Try again"
msgstr "Riprova"
-#: src/view/screens/ProfileList.tsx:484
+#~ msgid "Try again"
+#~ msgstr "Torna-ho a provar"
+
+#: src/view/screens/ProfileList.tsx:506
msgid "Un-block list"
msgstr "Sblocca la lista"
-#: src/view/screens/ProfileList.tsx:469
+#: src/view/screens/ProfileList.tsx:491
msgid "Un-mute list"
msgstr "Riattiva questa lista"
-#: src/view/com/auth/create/CreateAccount.tsx:66
+#: src/view/com/auth/create/CreateAccount.tsx:58
#: src/view/com/auth/login/ForgotPasswordForm.tsx:87
#: src/view/com/auth/login/Login.tsx:76
-#: src/view/com/auth/login/LoginForm.tsx:120
+#: src/view/com/auth/login/LoginForm.tsx:118
+#: src/view/com/modals/ChangePassword.tsx:70
msgid "Unable to contact your service. Please check your Internet connection."
msgstr "Impossibile contattare il servizio. Per favore controlla la tua connessione Internet."
-#: src/view/com/profile/ProfileHeader.tsx:475
+#: src/view/com/profile/ProfileHeader.tsx:433
+#: src/view/screens/ProfileList.tsx:590
+msgid "Unblock"
+msgstr "Sblocca"
+
+#: src/view/com/profile/ProfileHeader.tsx:436
msgctxt "action"
msgid "Unblock"
msgstr "Sblocca"
-#: src/view/com/profile/ProfileHeader.tsx:472
-#: src/view/screens/ProfileList.tsx:568
-msgid "Unblock"
-msgstr "Sblocca"
-
-#: src/view/com/profile/ProfileHeader.tsx:308
-#: src/view/com/profile/ProfileHeader.tsx:392
+#: src/view/com/profile/ProfileHeader.tsx:261
+#: src/view/com/profile/ProfileHeader.tsx:345
msgid "Unblock Account"
msgstr "Sblocca il conto"
-#: src/view/com/modals/Repost.tsx:42 src/view/com/modals/Repost.tsx:55
+#: src/view/com/modals/Repost.tsx:42
+#: src/view/com/modals/Repost.tsx:55
#: src/view/com/util/post-ctrls/RepostButton.tsx:60
#: src/view/com/util/post-ctrls/RepostButton.web.tsx:48
msgid "Undo repost"
@@ -3525,43 +4336,54 @@ msgctxt "action"
msgid "Unfollow"
msgstr "Smetti di seguire"
-#: src/view/com/profile/ProfileHeader.tsx:524
+#: src/view/com/profile/ProfileHeader.tsx:485
msgid "Unfollow {0}"
msgstr "Smetti di seguire {0}"
-#: src/view/com/auth/create/state.ts:298
+#: src/view/com/auth/create/state.ts:262
msgid "Unfortunately, you do not meet the requirements to create an account."
msgstr "Sfortunatamente, non soddisfi i requisiti per creare un account."
-#: src/view/com/util/post-ctrls/PostCtrls.tsx:189
+#: src/view/com/util/post-ctrls/PostCtrls.tsx:182
+#: src/view/com/util/post-ctrls/PostCtrls.tsx:216
msgid "Unlike"
msgstr "Togli Mi piace"
-#: src/view/screens/ProfileList.tsx:575
+#: src/components/TagMenu/index.tsx:253
+#: src/view/screens/ProfileList.tsx:597
msgid "Unmute"
msgstr "Riattiva"
-#: src/view/com/profile/ProfileHeader.tsx:373
+#: src/components/TagMenu/index.web.tsx:90
+msgid "Unmute {truncatedTag}"
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:326
msgid "Unmute Account"
msgstr "Riattiva questo account"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:169
+#: src/components/TagMenu/index.tsx:210
+msgid "Unmute all {tag} posts"
+msgstr ""
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:202
msgid "Unmute thread"
msgstr "Riattiva questa discussione"
-#: src/view/screens/ProfileFeed.tsx:362 src/view/screens/ProfileList.tsx:559
+#: src/view/screens/ProfileFeed.tsx:354
+#: src/view/screens/ProfileList.tsx:581
msgid "Unpin"
msgstr "Stacca dal profilo"
-#: src/view/screens/ProfileList.tsx:452
+#: src/view/screens/ProfileList.tsx:474
msgid "Unpin moderation list"
msgstr "Stacca la lista di moderazione"
-#: src/view/screens/ProfileFeed.tsx:354
+#: src/view/screens/ProfileFeed.tsx:346
msgid "Unsave"
msgstr "Rimuovi"
-#: src/view/com/modals/UserAddRemoveLists.tsx:54
+#: src/view/com/modals/UserAddRemoveLists.tsx:70
msgid "Update {displayName} in Lists"
msgstr "Aggiorna {displayName} negli elenchi"
@@ -3569,7 +4391,7 @@ msgstr "Aggiorna {displayName} negli elenchi"
msgid "Update Available"
msgstr "Aggiornamento disponibile"
-#: src/view/com/auth/login/SetNewPasswordForm.tsx:174
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:204
msgid "Updating..."
msgstr "In aggiornamento..."
@@ -3595,13 +4417,13 @@ msgstr "Utilizza il browser dell'app"
msgid "Use my default browser"
msgstr "Utilizza il mio browser predefinito"
-#: src/view/com/modals/AddAppPasswords.tsx:154
+#: src/view/com/modals/AddAppPasswords.tsx:155
msgid "Use this to sign into the other app along with your handle."
msgstr "Utilizza questo per accedere all'altra app insieme al tuo nome utente."
#: src/view/com/modals/ServerInput.tsx:105
-msgid "Use your domain as your Bluesky client service provider"
-msgstr "Utilizza il tuo dominio come provider di servizi clienti Bluesky"
+#~ msgid "Use your domain as your Bluesky client service provider"
+#~ msgstr "Utilizza il tuo dominio come provider di servizi clienti Bluesky"
#: src/view/com/modals/InviteCodes.tsx:200
msgid "Used by:"
@@ -3619,30 +4441,30 @@ msgstr "Utente bloccato dalla lista"
msgid "User Blocks You"
msgstr "Questo utente ti blocca"
-#: src/view/com/auth/create/Step3.tsx:38
+#: src/view/com/auth/create/Step2.tsx:79
msgid "User handle"
msgstr "Handle dell'utente"
-#: src/view/com/lists/ListCard.tsx:84
-#: src/view/com/modals/UserAddRemoveLists.tsx:182
+#: src/view/com/lists/ListCard.tsx:85
+#: src/view/com/modals/UserAddRemoveLists.tsx:198
msgid "User list by {0}"
msgstr "Lista utenti di {0}"
-#: src/view/screens/ProfileList.tsx:741
+#: src/view/screens/ProfileList.tsx:762
msgid "User list by <0/>"
msgstr "Lista utenti di<0/>"
-#: src/view/com/lists/ListCard.tsx:82
-#: src/view/com/modals/UserAddRemoveLists.tsx:180
-#: src/view/screens/ProfileList.tsx:739
+#: src/view/com/lists/ListCard.tsx:83
+#: src/view/com/modals/UserAddRemoveLists.tsx:196
+#: src/view/screens/ProfileList.tsx:760
msgid "User list by you"
msgstr "La tua lista utenti"
-#: src/view/com/modals/CreateOrEditList.tsx:138
+#: src/view/com/modals/CreateOrEditList.tsx:196
msgid "User list created"
msgstr "Lista utenti creata"
-#: src/view/com/modals/CreateOrEditList.tsx:125
+#: src/view/com/modals/CreateOrEditList.tsx:182
msgid "User list updated"
msgstr "Lista utenti aggiornata"
@@ -3650,12 +4472,12 @@ msgstr "Lista utenti aggiornata"
msgid "User Lists"
msgstr "Lista utenti"
-#: src/view/com/auth/login/LoginForm.tsx:174
-#: src/view/com/auth/login/LoginForm.tsx:192
+#: src/view/com/auth/login/LoginForm.tsx:177
+#: src/view/com/auth/login/LoginForm.tsx:195
msgid "Username or email address"
msgstr "Nome utente o indirizzo Email"
-#: src/view/screens/ProfileList.tsx:775
+#: src/view/screens/ProfileList.tsx:796
msgid "Users"
msgstr "Utenti"
@@ -3667,19 +4489,19 @@ msgstr "utenti seguiti da <0/>"
msgid "Users in \"{0}\""
msgstr "Utenti in Ā«{0}Ā»"
-#: src/view/com/auth/create/Step2.tsx:241
-msgid "Verification code"
-msgstr "Codice di verifica"
+#: src/view/com/auth/create/Step2.tsx:243
+#~ msgid "Verification code"
+#~ msgstr "Codice di verifica"
-#: src/view/screens/Settings.tsx:843
+#: src/view/screens/Settings/index.tsx:910
msgid "Verify email"
msgstr "Verifica Email"
-#: src/view/screens/Settings.tsx:868
+#: src/view/screens/Settings/index.tsx:935
msgid "Verify my email"
msgstr "Verifica la mia email"
-#: src/view/screens/Settings.tsx:877
+#: src/view/screens/Settings/index.tsx:944
msgid "Verify My Email"
msgstr "Verifica la Mia Email"
@@ -3692,7 +4514,11 @@ msgstr "Verifica la nuova email"
msgid "Verify Your Email"
msgstr "Verifica la tua email"
-#: src/view/com/profile/ProfileHeader.tsx:701
+#: src/screens/Onboarding/index.tsx:42
+msgid "Video Games"
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:662
msgid "View {0}'s avatar"
msgstr "Vedi l'avatar di {0}"
@@ -3716,27 +4542,64 @@ msgstr "Vedi l'avatar"
msgid "Visit Site"
msgstr "Visita il sito"
-#: src/view/com/modals/ContentFilteringSettings.tsx:254
+#: src/screens/Onboarding/StepModeration/ModerationOption.tsx:42
+#: src/view/com/modals/ContentFilteringSettings.tsx:259
msgid "Warn"
msgstr "Avvisa"
+#: src/screens/Onboarding/StepAlgoFeeds/index.tsx:134
+msgid "We also think you'll like \"For You\" by Skygaze:"
+msgstr ""
+
+#: src/screens/Deactivated.tsx:133
+msgid "We estimate {estimatedTime} until your account is ready."
+msgstr ""
+
+#: src/screens/Onboarding/StepFinished.tsx:93
+msgid "We hope you have a wonderful time. Remember, Bluesky is:"
+msgstr ""
+
#: src/view/com/posts/DiscoverFallbackHeader.tsx:29
msgid "We ran out of posts from your follows. Here's the latest from <0/>."
msgstr "Abbiamo esaurito i posts dei tuoi follower. Ecco le ultime novitĆ da <0/>."
+#: src/components/dialogs/MutedWords.tsx:161
+msgid "We recommend avoiding common words that appear in many posts, since it can result in no posts being shown."
+msgstr ""
+
+#: src/screens/Onboarding/StepAlgoFeeds/index.tsx:124
+msgid "We recommend our \"Discover\" feed:"
+msgstr ""
+
+#: src/screens/Onboarding/StepInterests/index.tsx:133
+msgid "We weren't able to connect. Please try again to continue setting up your account. If it continues to fail, you can skip this flow."
+msgstr ""
+
+#: src/screens/Deactivated.tsx:137
+msgid "We will let you know when your account is ready."
+msgstr ""
+
#: src/view/com/modals/AppealLabel.tsx:48
msgid "We'll look into your appeal promptly."
msgstr "Esamineremo il tuo ricorso al più presto."
-#: src/view/com/auth/create/CreateAccount.tsx:123
+#: src/screens/Onboarding/StepInterests/index.tsx:138
+msgid "We'll use this to help customize your experience."
+msgstr ""
+
+#: src/view/com/auth/create/CreateAccount.tsx:134
msgid "We're so excited to have you join us!"
msgstr "Siamo felici che tu ti unisca a noi!"
-#: src/view/screens/ProfileList.tsx:83
+#: src/view/screens/ProfileList.tsx:86
msgid "We're sorry, but we were unable to resolve this list. If this persists, please contact the list creator, @{handleOrDid}."
msgstr "Siamo spiacenti, ma non siamo riusciti a risolvere questa lista. Se il problema persiste, contatta il creatore della lista, @{handleOrDid}."
-#: src/view/screens/Search/Search.tsx:245
+#: src/components/dialogs/MutedWords.tsx:182
+msgid "We're sorry, but we weren't able to load your muted words at this time. Please try again."
+msgstr ""
+
+#: src/view/screens/Search/Search.tsx:254
msgid "We're sorry, but your search could not be completed. Please try again in a few minutes."
msgstr "Siamo spiacenti, ma non ĆØ stato possibile completare la ricerca. Riprova tra qualche minuto."
@@ -3748,11 +4611,19 @@ msgstr "Ci dispiace! Non riusciamo a trovare la pagina che stavi cercando."
msgid "Welcome to <0>Bluesky0>"
msgstr "Ti diamo il benvenuto a <0>Bluesky0>"
+#: src/screens/Onboarding/StepInterests/index.tsx:130
+msgid "What are your interests?"
+msgstr ""
+
#: src/view/com/modals/report/Modal.tsx:169
msgid "What is the issue with this {collectionName}?"
msgstr "Qual ĆØ il problema con questo {collectionName}?"
-#: src/view/com/auth/SplashScreen.tsx:34 src/view/com/composer/Composer.tsx:279
+#~ msgid "What's next?"
+#~ msgstr "¿Qué sigue?"
+
+#: src/view/com/auth/SplashScreen.tsx:59
+#: src/view/com/composer/Composer.tsx:286
msgid "What's up?"
msgstr "Come va?"
@@ -3773,33 +4644,49 @@ msgstr "Chi può rispondere"
msgid "Wide"
msgstr "Largo"
-#: src/view/com/composer/Composer.tsx:415
+#: src/view/com/composer/Composer.tsx:422
msgid "Write post"
msgstr "Scrivi un post"
-#: src/view/com/composer/Composer.tsx:278 src/view/com/composer/Prompt.tsx:33
+#: src/view/com/composer/Composer.tsx:285
+#: src/view/com/composer/Prompt.tsx:33
msgid "Write your reply"
msgstr "Scrivi la tua risposta"
-#: src/view/com/auth/create/Step2.tsx:260
-msgid "XXXXXX"
-msgstr "XXXXXX"
+#: src/screens/Onboarding/index.tsx:28
+msgid "Writers"
+msgstr ""
-#: src/view/com/composer/select-language/SuggestedLanguage.tsx:82
-#: 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/com/auth/create/Step2.tsx:263
+#~ msgid "XXXXXX"
+#~ msgstr "XXXXXX"
+
+#: src/view/com/composer/select-language/SuggestedLanguage.tsx:77
+#: src/view/screens/PreferencesFollowingFeed.tsx:129
+#: src/view/screens/PreferencesFollowingFeed.tsx:201
+#: src/view/screens/PreferencesFollowingFeed.tsx:236
+#: src/view/screens/PreferencesFollowingFeed.tsx:271
#: src/view/screens/PreferencesThreads.tsx:106
#: src/view/screens/PreferencesThreads.tsx:129
msgid "Yes"
msgstr "Si"
+#: src/screens/Deactivated.tsx:130
+msgid "You are in line."
+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 "Puoi anche scoprire nuovi feed personalizzati da seguire."
+#~ msgid "You can change hosting providers at any time."
+#~ msgstr "Pots canviar el teu proveĆÆdor d'allotjament quan vulguis."
+
+#: src/screens/Onboarding/StepFollowingFeed.tsx:142
+msgid "You can change these settings later."
+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."
@@ -3813,7 +4700,7 @@ msgstr "Non hai ancora alcun codice di invito! Te ne invieremo alcuni quando uti
msgid "You don't have any pinned feeds."
msgstr "Non hai fissato nessun feed."
-#: src/view/screens/Feeds.tsx:387
+#: src/view/screens/Feeds.tsx:452
msgid "You don't have any saved feeds!"
msgstr "Non hai salvato nessun feed!"
@@ -3821,7 +4708,7 @@ msgstr "Non hai salvato nessun feed!"
msgid "You don't have any saved feeds."
msgstr "Non hai salvato nessun feed."
-#: src/view/com/post-thread/PostThread.tsx:385
+#: src/view/com/post-thread/PostThread.tsx:465
msgid "You have blocked the author or you have been blocked by the author."
msgstr "Hai bloccato l'autore o sei stato bloccato dall'autore."
@@ -3829,6 +4716,13 @@ msgstr "Hai bloccato l'autore o sei stato bloccato dall'autore."
msgid "You have blocked this user. You cannot view their content."
msgstr "Hai bloccato questo utente. Non ĆØ possibile visualizzare il contenuto."
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:57
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:92
+#: src/view/com/modals/ChangePassword.tsx:87
+#: src/view/com/modals/ChangePassword.tsx:121
+msgid "You have entered an invalid code. It should look like XXXXX-XXXXX."
+msgstr ""
+
#: src/view/com/modals/ModerationDetails.tsx:87
msgid "You have muted this user."
msgstr "Hai silenziato questo utente."
@@ -3837,7 +4731,8 @@ msgstr "Hai silenziato questo utente."
msgid "You have no feeds."
msgstr "Non hai feeds."
-#: src/view/com/lists/MyLists.tsx:89 src/view/com/lists/ProfileLists.tsx:140
+#: src/view/com/lists/MyLists.tsx:89
+#: src/view/com/lists/ProfileLists.tsx:140
msgid "You have no lists."
msgstr "Non hai liste."
@@ -3853,35 +4748,61 @@ msgstr "Non hai ancora creato alcuna password per l'app. Puoi crearne uno premen
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 "Non hai ancora disattivato alcun account. Per disattivare un account, vai al suo profilo e seleziona \"Disattiva account\" dal menu del account."
-#: src/view/com/modals/ContentFilteringSettings.tsx:170
+#: src/components/dialogs/MutedWords.tsx:202
+msgid "You haven't muted any words or tags yet"
+msgstr ""
+
+#: src/view/com/modals/ContentFilteringSettings.tsx:175
msgid "You must be 18 or older to enable adult content."
msgstr "Devi avere almeno 18 anni per abilitare i contenuti per adulti."
-#: src/view/com/util/forms/PostDropdownBtn.tsx:96
+#: src/screens/Onboarding/StepModeration/AdultContentEnabledPref.tsx:103
+msgid "You must be 18 years or older to enable adult content"
+msgstr ""
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:129
msgid "You will no longer receive notifications for this thread"
msgstr "Non riceverai più notifiche per questo filo di discussione"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:99
+#: src/view/com/util/forms/PostDropdownBtn.tsx:132
msgid "You will now receive notifications for this thread"
msgstr "Adesso riceverai le notifiche per questa discussione"
-#: src/view/com/auth/login/SetNewPasswordForm.tsx:81
+#: src/view/com/auth/login/SetNewPasswordForm.tsx:107
msgid "You will receive an email with a \"reset code.\" Enter that code here, then enter your new password."
msgstr "Riceverai un'email con un \"codice di reset\". Inserisci il codice qui, poi inserisci la nuova password."
+#: src/screens/Onboarding/StepModeration/index.tsx:72
+msgid "You're in control"
+msgstr ""
+
+#: src/screens/Deactivated.tsx:87
+#: src/screens/Deactivated.tsx:88
+#: src/screens/Deactivated.tsx:103
+msgid "You're in line"
+msgstr ""
+
+#: src/screens/Onboarding/StepFinished.tsx:90
+msgid "You're ready to go!"
+msgstr ""
+
#: src/view/com/posts/FollowingEndOfFeed.tsx:48
msgid "You've reached the end of your feed! Find some more accounts to follow."
msgstr "Hai raggiunto la fine del tuo feed! Trova altri account da seguire."
-#: src/view/com/auth/create/Step1.tsx:67
+#: src/view/com/auth/create/Step1.tsx:74
msgid "Your account"
msgstr "Il tuo account"
-#: src/view/com/modals/DeleteAccount.tsx:65
+#: src/view/com/modals/DeleteAccount.tsx:67
msgid "Your account has been deleted"
msgstr "Il tuo account ĆØ stato eliminato"
-#: src/view/com/auth/create/Step1.tsx:182
+#: src/view/screens/Settings/ExportCarDialog.tsx:47
+msgid "Your account repository, containing all public data records, can be downloaded as a \"CAR\" file. This file does not include media embeds, such as images, or your private data, which must be fetched separately."
+msgstr ""
+
+#: src/view/com/auth/create/Step1.tsx:238
msgid "Your birth date"
msgstr "La tua data di nascita"
@@ -3889,8 +4810,13 @@ msgstr "La tua data di nascita"
msgid "Your choice will be saved, but can be changed later in settings."
msgstr "La tua scelta verrĆ salvata, ma potrĆ essere modificata successivamente nelle impostazioni."
-#: src/view/com/auth/create/state.ts:153
+#: src/screens/Onboarding/StepFollowingFeed.tsx:61
+msgid "Your default feed is \"Following\""
+msgstr ""
+
+#: src/view/com/auth/create/state.ts:110
#: src/view/com/auth/login/ForgotPasswordForm.tsx:70
+#: src/view/com/modals/ChangePassword.tsx:54
msgid "Your email appears to be invalid."
msgstr "Your email appears to be invalid."
@@ -3910,7 +4836,7 @@ msgstr "La tua email non ĆØ stata ancora verificata. Ti consigliamo di fare ques
msgid "Your following feed is empty! Follow more users to see what's happening."
msgstr "Il tuo feed seguente è vuoto! Segui più utenti per vedere cosa sta succedendo."
-#: src/view/com/auth/create/Step3.tsx:42
+#: src/view/com/auth/create/Step2.tsx:83
msgid "Your full handle will be"
msgstr "Il tuo nome di utente completo sarĆ "
@@ -3918,100 +4844,41 @@ msgstr "Il tuo nome di utente completo sarĆ "
msgid "Your full handle will be <0>@{0}0>"
msgstr "Il tuo nome di utente completo sarĆ <0>@{0}0>"
-#: src/view/screens/Settings.tsx:430 src/view/shell/desktop/RightNav.tsx:137
-#: src/view/shell/Drawer.tsx:660
-msgid "Your invite codes are hidden when logged in using an App Password"
-msgstr "I tuoi codici di invito vengono celati quando accedi utilizzando una password per l'app"
+#~ msgid "Your hosting provider"
+#~ msgstr "El teu proveĆÆdor d'allotjament"
-#: src/view/com/composer/Composer.tsx:267
+#: src/view/screens/Settings.tsx:NaN
+#: src/view/shell/Drawer.tsx:660
+#~ msgid "Your invite codes are hidden when logged in using an App Password"
+#~ msgstr "I tuoi codici di invito vengono celati quando accedi utilizzando una password per l'app"
+
+#: src/components/dialogs/MutedWords.tsx:173
+msgid "Your muted words"
+msgstr ""
+
+#: src/view/com/modals/ChangePassword.tsx:155
+msgid "Your password has been changed successfully!"
+msgstr ""
+
+#: src/view/com/composer/Composer.tsx:274
msgid "Your post has been published"
msgstr "Il tuo post ĆØ stato pubblicato"
+#: src/screens/Onboarding/StepFinished.tsx:105
#: src/view/com/auth/onboarding/WelcomeDesktop.tsx:59
#: src/view/com/auth/onboarding/WelcomeMobile.tsx:59
msgid "Your posts, likes, and blocks are public. Mutes are private."
msgstr "I tuoi post, i tuoi Mi piace e i tuoi blocchi sono pubblici. I conti silenziati sono privati."
-#: src/view/com/modals/SwitchAccount.tsx:84 src/view/screens/Settings.tsx:125
+#: src/view/com/modals/SwitchAccount.tsx:84
+#: src/view/screens/Settings/index.tsx:118
msgid "Your profile"
msgstr "Il tuo profilo"
-#: src/view/com/composer/Composer.tsx:266
+#: src/view/com/composer/Composer.tsx:273
msgid "Your reply has been published"
msgstr "La tua risposta ĆØ stata pubblicata"
-#: src/view/com/auth/create/Step3.tsx:28
+#: src/view/com/auth/create/Step2.tsx:65
msgid "Your user handle"
msgstr "Il tuo handle utente"
-
-#~ msgid "{0}"
-#~ msgstr "{0}"
-
-#~ msgid "{0} {purposeLabel} List"
-#~ msgstr "Llista {purposeLabel} {0}"
-
-#~ msgid "{message}"
-#~ msgstr "{message}"
-
-#~ msgid "Appeal Decision"
-#~ msgstr "Decisión de apelación"
-
-#~ msgid "Cancel add image alt text"
-#~ msgstr "CancelĀ·la afegir text a la imatge"
-
-#~ msgid "Change"
-#~ msgstr "Canvia"
-
-#~ msgid "Dev Server"
-#~ msgstr "Servidor de desenvolupament"
-
-#~ msgid "Enter the address of your provider:"
-#~ msgstr "Introdueix l'adreça del teu proveïdor:"
-
-#~ msgid "following"
-#~ msgstr "seguint"
-
-#~ msgid "Hosting provider address"
-#~ msgstr "Adreça del proveïdor d'allotjament"
-
-#~ 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!"
-
-#~ msgid "Message from server"
-#~ msgstr "Missatge del servidor"
-
-#~ msgid "New Post"
-#~ msgstr "Nova publicació"
-
-#~ msgid "Please tell us why you think this decision was incorrect."
-#~ msgstr "Por favor, dinos por qué crees que esta decisión fue incorrecta."
-
-#~ msgid "Post"
-#~ msgstr "Publicació"
-
-#~ msgid "Quote Post"
-#~ msgstr "Cita una publicació"
-
-#~ msgid "Send Email"
-#~ msgstr "Envia correu"
-
-#~ 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 "El formulari de suport ha estat traslladat. Si necessites ajuda, <0/> o visita {HELP_DESK_URL} per contactar amb nosaltres."
-
-#~ msgid "This {0} has been labeled."
-#~ msgstr "Este {0} ha sido etiquetado."
-
-#~ msgid "This is the service that keeps you online."
-#~ msgstr "Aquest Ʃs el servei que et mantƩ connectat."
-
-#~ msgid "Try again"
-#~ msgstr "Torna-ho a provar"
-
-#~ msgid "What's next?"
-#~ msgstr "¿Qué sigue?"
-
-#~ msgid "You can change hosting providers at any time."
-#~ msgstr "Pots canviar el teu proveĆÆdor d'allotjament quan vulguis."
-
-#~ msgid "Your hosting provider"
-#~ msgstr "El teu proveĆÆdor d'allotjament"
diff --git a/src/locale/locales/ja/messages.po b/src/locale/locales/ja/messages.po
index d7884c765b..21f2e5e0fc 100644
--- a/src/locale/locales/ja/messages.po
+++ b/src/locale/locales/ja/messages.po
@@ -30,7 +30,7 @@ msgstr "ć”ć¼ć«ćććć¾ćć"
#~ msgid "{0} {purposeLabel} List"
#~ msgstr "{0} {purposeLabel} ćŖć¹ć"
-#: src/view/com/profile/ProfileHeader.tsx:592
+#: src/view/com/profile/ProfileHeader.tsx:593
msgid "{following} following"
msgstr "{following}äŗŗććć©ćć¼äø"
@@ -64,7 +64,7 @@ msgstr "{numUnreadNotifications}ä»¶ć®ęŖčŖ"
msgid "<0/> members"
msgstr "<0/>ć®ć”ć³ćć¼"
-#: src/view/com/profile/ProfileHeader.tsx:594
+#: src/view/com/profile/ProfileHeader.tsx:595
msgid "<0>{following} 0><1>following1>"
msgstr "<0>{following}0><1>äŗŗććć©ćć¼äø1>"
@@ -80,7 +80,7 @@ msgstr "<1>ććććć®1><2>ć¦ć¼ć¶ć¼2><0>ććć©ćć¼0>"
msgid "<0>Welcome to0><1>Bluesky1>"
msgstr "<1>Bluesky1><0>ćøćććć0>"
-#: src/view/com/profile/ProfileHeader.tsx:557
+#: src/view/com/profile/ProfileHeader.tsx:558
msgid "ā Invalid Handle"
msgstr "ā äøę£ćŖćć³ćć«"
@@ -93,11 +93,11 @@ msgid "A new version of the app is available. Please update to continue using th
msgstr "ę°ćććć¼ćøć§ć³ć®ć¢ććŖćå©ēØåÆč½ć§ććē¶ē¶ćć¦ä½æēØććććć«ćÆć¢ćććć¼ććć¦ćć ććć"
#: src/view/com/util/ViewHeader.tsx:83
-#: src/view/screens/Search/Search.tsx:624
+#: src/view/screens/Search/Search.tsx:647
msgid "Access navigation links and settings"
msgstr "ććć²ć¼ć·ć§ć³ćŖć³ćÆćØčØå®ć«ć¢ćÆć»ć¹"
-#: src/view/com/pager/FeedsTabBarMobile.tsx:89
+#: src/view/com/home/HomeHeaderLayoutMobile.tsx:51
msgid "Access profile and other navigation links"
msgstr "ćććć£ć¼ć«ćØä»ć®ććć²ć¼ć·ć§ć³ćŖć³ćÆć«ć¢ćÆć»ć¹"
@@ -112,11 +112,11 @@ msgstr "ć¢ćÆć»ć·ććŖćć£"
msgid "Account"
msgstr "ć¢ć«ć¦ć³ć"
-#: src/view/com/profile/ProfileHeader.tsx:245
+#: src/view/com/profile/ProfileHeader.tsx:246
msgid "Account blocked"
msgstr "ć¢ć«ć¦ć³ććććććÆćć¾ćć"
-#: src/view/com/profile/ProfileHeader.tsx:212
+#: src/view/com/profile/ProfileHeader.tsx:213
msgid "Account muted"
msgstr "ć¢ć«ć¦ć³ćććć„ć¼ććć¾ćć"
@@ -136,14 +136,15 @@ msgstr "ć¢ć«ć¦ć³ććŖćć·ć§ć³"
msgid "Account removed from quick access"
msgstr "ćÆć¤ććÆć¢ćÆć»ć¹ććć¢ć«ć¦ć³ććč§£é¤"
-#: src/view/com/profile/ProfileHeader.tsx:267
+#: src/view/com/profile/ProfileHeader.tsx:268
msgid "Account unblocked"
msgstr "ć¢ć«ć¦ć³ćć®ććććÆćč§£é¤ćć¾ćć"
-#: src/view/com/profile/ProfileHeader.tsx:225
+#: src/view/com/profile/ProfileHeader.tsx:226
msgid "Account unmuted"
msgstr "ć¢ć«ć¦ć³ćć®ćć„ć¼ććč§£é¤ćć¾ćć"
+#: src/components/dialogs/MutedWords.tsx:147
#: src/view/com/auth/onboarding/RecommendedFeedsItem.tsx:150
#: src/view/com/modals/ListAddRemoveUsers.tsx:264
#: src/view/com/modals/UserAddRemoveLists.tsx:219
@@ -185,24 +186,32 @@ msgstr "詳瓰ćčæ½å "
msgid "Add details to report"
msgstr "ć¬ćć¼ćć«č©³ē“°ćčæ½å "
-#: src/view/com/composer/Composer.tsx:446
+#: src/view/com/composer/Composer.tsx:453
msgid "Add link card"
msgstr "ćŖć³ćÆć«ć¼ććčæ½å "
-#: src/view/com/composer/Composer.tsx:451
+#: src/view/com/composer/Composer.tsx:458
msgid "Add link card:"
msgstr "ćŖć³ćÆć«ć¼ććčæ½å ļ¼"
+#: src/components/dialogs/MutedWords.tsx:140
+msgid "Add mute word for configured settings"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:74
+msgid "Add muted words and tags"
+msgstr ""
+
#: src/view/com/modals/ChangeHandle.tsx:417
msgid "Add the following DNS record to your domain:"
msgstr "ꬔć®DNSć¬ć³ć¼ćććć”ć¤ć³ć«čæ½å ćć¦ćć ććļ¼"
-#: src/view/com/profile/ProfileHeader.tsx:309
+#: src/view/com/profile/ProfileHeader.tsx:310
msgid "Add to Lists"
msgstr "ćŖć¹ćć«čæ½å "
-#: src/view/com/feeds/FeedSourceCard.tsx:243
-#: src/view/screens/ProfileFeed.tsx:272
+#: src/view/com/feeds/FeedSourceCard.tsx:245
+#: src/view/screens/ProfileFeed.tsx:273
msgid "Add to my feeds"
msgstr "ćć¤ćć£ć¼ćć«čæ½å "
@@ -215,11 +224,11 @@ msgstr "čæ½å ęøćæ"
msgid "Added to list"
msgstr "ćŖć¹ćć«čæ½å "
-#: src/view/com/feeds/FeedSourceCard.tsx:125
+#: src/view/com/feeds/FeedSourceCard.tsx:127
msgid "Added to my feeds"
msgstr "ćć¤ćć£ć¼ćć«čæ½å "
-#: src/view/screens/PreferencesHomeFeed.tsx:173
+#: src/view/screens/PreferencesFollowingFeed.tsx:173
msgid "Adjust the number of likes a reply must have to be shown in your feed."
msgstr "čæäæ”ććć£ć¼ćć«č”Øē¤ŗćććććć«åæ
č¦ćŖćććććć®ę°ćčŖæę“ćć¾ćć"
@@ -239,6 +248,10 @@ msgstr "ęäŗŗåćć³ć³ćć³ććÆć¦ć§ć(<0/>)ććć®ćæęå¹åć§ć
msgid "Advanced"
msgstr "é«åŗ¦ćŖčØå®"
+#: src/view/screens/Feeds.tsx:666
+msgid "All the feeds you've saved, right in one place."
+msgstr ""
+
#: src/view/com/auth/login/ForgotPasswordForm.tsx:221
#: src/view/com/modals/ChangePassword.tsx:168
msgid "Already have a code?"
@@ -312,7 +325,7 @@ msgstr "ć¢ććŖćć¹ćÆć¼ćć®čØå®"
msgid "App Passwords"
msgstr "ć¢ććŖćć¹ćÆć¼ć"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:250
+#: src/view/com/util/forms/PostDropdownBtn.tsx:295
msgid "Appeal content warning"
msgstr "ć³ć³ćć³ćć®č¦åć«ē°č°ćē³ćē«ć¦ć"
@@ -340,15 +353,16 @@ msgstr "čęÆ"
msgid "Are you sure you want to delete the app password \"{name}\"?"
msgstr "ć¢ććŖćć¹ćÆć¼ćć{name}ććę¬å½ć«åé¤ćć¾ććļ¼"
-#: src/view/com/composer/Composer.tsx:143
+#: src/view/com/composer/Composer.tsx:150
msgid "Are you sure you'd like to discard this draft?"
msgstr "ę¬å½ć«ćć®äøęøććē “ę£ćć¾ććļ¼"
-#: src/view/screens/ProfileList.tsx:364
+#: src/components/dialogs/MutedWords.tsx:233
+#: src/view/screens/ProfileList.tsx:365
msgid "Are you sure?"
msgstr "ę¬å½ć«ććććć§ććļ¼"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:233
+#: src/view/com/util/forms/PostDropdownBtn.tsx:278
msgid "Are you sure? This cannot be undone."
msgstr "ę¬å½ć«ććććć§ććļ¼ćććÆå
ć«ę»ćć¾ććć"
@@ -364,21 +378,21 @@ msgstr "ć¢ć¼ć"
msgid "Artistic or non-erotic nudity."
msgstr "čøč”ēć¾ććÆę§ēć§ćÆćŖććć¼ćć"
-#: src/view/com/auth/create/CreateAccount.tsx:147
+#: src/view/com/auth/create/CreateAccount.tsx:158
#: src/view/com/auth/login/ChooseAccountForm.tsx:151
#: src/view/com/auth/login/ForgotPasswordForm.tsx:174
#: src/view/com/auth/login/LoginForm.tsx:259
#: src/view/com/auth/login/SetNewPasswordForm.tsx:179
#: src/view/com/modals/report/InputIssueDetails.tsx:46
-#: src/view/com/post-thread/PostThread.tsx:408
-#: src/view/com/post-thread/PostThread.tsx:458
-#: src/view/com/post-thread/PostThread.tsx:466
-#: src/view/com/profile/ProfileHeader.tsx:648
+#: src/view/com/post-thread/PostThread.tsx:472
+#: src/view/com/post-thread/PostThread.tsx:522
+#: src/view/com/post-thread/PostThread.tsx:530
+#: src/view/com/profile/ProfileHeader.tsx:649
#: src/view/com/util/ViewHeader.tsx:81
msgid "Back"
msgstr "ę»ć"
-#: src/view/com/post-thread/PostThread.tsx:416
+#: src/view/com/post-thread/PostThread.tsx:480
msgctxt "action"
msgid "Back"
msgstr "ę»ć"
@@ -391,7 +405,7 @@ msgstr "ć{interestsText}ććøć®čå³ć«åŗć„ććććććć§ćć"
msgid "Basics"
msgstr "åŗę¬"
-#: src/view/com/auth/create/Step1.tsx:246
+#: src/view/com/auth/create/Step1.tsx:250
#: src/view/com/modals/BirthDateSettings.tsx:73
msgid "Birthday"
msgstr "čŖēę„"
@@ -400,33 +414,33 @@ msgstr "čŖēę„"
msgid "Birthday:"
msgstr "čŖēę„ļ¼"
-#: src/view/com/profile/ProfileHeader.tsx:238
-#: src/view/com/profile/ProfileHeader.tsx:345
+#: src/view/com/profile/ProfileHeader.tsx:239
+#: src/view/com/profile/ProfileHeader.tsx:346
msgid "Block Account"
msgstr "ć¢ć«ć¦ć³ććććććÆ"
-#: src/view/screens/ProfileList.tsx:555
+#: src/view/screens/ProfileList.tsx:556
msgid "Block accounts"
msgstr "ć¢ć«ć¦ć³ććććććÆ"
-#: src/view/screens/ProfileList.tsx:505
+#: src/view/screens/ProfileList.tsx:506
msgid "Block list"
msgstr "ćŖć¹ććććććÆ"
-#: src/view/screens/ProfileList.tsx:315
+#: src/view/screens/ProfileList.tsx:316
msgid "Block these accounts?"
msgstr "ćććć®ć¢ć«ć¦ć³ććććććÆćć¾ććļ¼"
-#: src/view/screens/ProfileList.tsx:319
+#: src/view/screens/ProfileList.tsx:320
msgid "Block this List"
msgstr "ćć®ćŖć¹ććććććÆ"
-#: src/view/com/lists/ListCard.tsx:109
-#: src/view/com/util/post-embeds/QuoteEmbed.tsx:60
+#: src/view/com/lists/ListCard.tsx:110
+#: src/view/com/util/post-embeds/QuoteEmbed.tsx:61
msgid "Blocked"
msgstr "ććććÆććć¦ćć¾ć"
-#: src/view/screens/Moderation.tsx:123
+#: src/view/screens/Moderation.tsx:142
msgid "Blocked accounts"
msgstr "ććććÆäøć®ć¢ć«ć¦ć³ć"
@@ -435,7 +449,7 @@ msgstr "ććććÆäøć®ć¢ć«ć¦ć³ć"
msgid "Blocked Accounts"
msgstr "ććććÆäøć®ć¢ć«ć¦ć³ć"
-#: src/view/com/profile/ProfileHeader.tsx:240
+#: src/view/com/profile/ProfileHeader.tsx:241
msgid "Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you."
msgstr "ććććÆäøć®ć¢ć«ć¦ć³ććÆćććŖćć®ć¹ć¬ććć§ć®čæäæ”ćććŖććøć®ć”ć³ć·ć§ć³ććć®ä»ć®ę¹ę³ć§ććŖććØććåćććććØćÆć§ćć¾ććć"
@@ -443,15 +457,16 @@ msgstr "ććććÆäøć®ć¢ć«ć¦ć³ććÆćććŖćć®ć¹ć¬ććć§ć®čæ
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:267
+#: src/view/com/post-thread/PostThread.tsx:324
msgid "Blocked post."
msgstr "ę稿ćććććÆćć¾ććć"
-#: src/view/screens/ProfileList.tsx:317
+#: src/view/screens/ProfileList.tsx:318
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:133
msgid "Blog"
msgstr "ććć°"
@@ -484,7 +499,7 @@ msgstr "BlueskyćÆćććŖććÆć§ćć"
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ćÆććå„å
ØćŖć³ćć„ććć£ć¼ćę§ēÆććććć«ęå¾
ē¶ć使ēØćć¾ććęå¾
ē¶ććęć”ć§ćŖćå “åćWaitlistć«ćē³ćč¾¼ćæććć ććØęå¾
ē¶ććéććć¾ćć"
-#: src/view/screens/Moderation.tsx:226
+#: src/view/screens/Moderation.tsx:245
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ćÆćć°ć¢ć¦ćććć¦ć¼ć¶ć¼ć«ććŖćć®ćććć£ć¼ć«ćę稿ć蔨示ćć¾ćććä»ć®ć¢ććŖćÆćć®ćŖćÆćØć¹ćć«åæććŖćå “åćććć¾ćććć®čØå®ćÆććŖćć®ć¢ć«ć¦ć³ććéå
¬éć«ćććć®ć§ćÆććć¾ććć"
@@ -501,6 +516,7 @@ msgid "Build version {0} {1}"
msgstr "ćć«ććć¼ćøć§ć³ {0} {1}"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:87
+#: src/view/com/auth/SplashScreen.web.tsx:128
msgid "Business"
msgstr "ććøćć¹"
@@ -535,8 +551,8 @@ msgid "Can only contain letters, numbers, spaces, dashes, and underscores. Must
msgstr "č±ę°åćć¹ćć¼ć¹ććć¤ćć³ćć¢ć³ćć¼ć¹ć³ć¢ć®ćæć使ēØåÆč½ć§ććé·ććÆ4ęå仄äø32ęå仄äøć§ććåæ
č¦ćććć¾ćć"
#: src/components/Prompt.tsx:91
-#: src/view/com/composer/Composer.tsx:300
-#: src/view/com/composer/Composer.tsx:305
+#: src/view/com/composer/Composer.tsx:307
+#: src/view/com/composer/Composer.tsx:312
#: src/view/com/modals/ChangeEmail.tsx:218
#: src/view/com/modals/ChangeEmail.tsx:220
#: src/view/com/modals/ChangePassword.tsx:265
@@ -550,7 +566,7 @@ msgstr "č±ę°åćć¹ćć¼ć¹ććć¤ćć³ćć¢ć³ćć¼ć¹ć³ć¢ć®ćæć
#: src/view/com/modals/VerifyEmail.tsx:247
#: src/view/com/modals/VerifyEmail.tsx:253
#: src/view/com/modals/Waitlist.tsx:142
-#: src/view/screens/Search/Search.tsx:693
+#: src/view/screens/Search/Search.tsx:716
#: src/view/shell/desktop/Search.tsx:238
msgid "Cancel"
msgstr "ćć£ć³ć»ć«"
@@ -686,7 +702,7 @@ msgstr "ć«ć¹ćæć ćć£ć¼ćć使ēØćć¦ććŖćć®ä½éØćå¼·åćć
msgid "Choose your main feeds"
msgstr "ć”ć¤ć³ć®ćć£ć¼ććéøę"
-#: src/view/com/auth/create/Step1.tsx:215
+#: src/view/com/auth/create/Step1.tsx:219
msgid "Choose your password"
msgstr "ćć¹ćÆć¼ććå
„å"
@@ -709,7 +725,7 @@ msgid "Clear all storage data (restart after this)"
msgstr "ćć¹ć¦ć®ć¹ćć¬ć¼ćøćć¼ćæććÆćŖć¢ļ¼ćć®å¾åčµ·åćć¾ćļ¼"
#: src/view/com/util/forms/SearchInput.tsx:88
-#: src/view/screens/Search/Search.tsx:674
+#: src/view/screens/Search/Search.tsx:697
msgid "Clear search query"
msgstr "ę¤ē“¢ćÆćØćŖććÆćŖć¢"
@@ -717,6 +733,11 @@ msgstr "ę¤ē“¢ćÆćØćŖććÆćŖć¢"
msgid "click here"
msgstr "ćć”ćććÆćŖććÆ"
+#: src/components/RichText.tsx:189
+#: src/components/TagMenu/index.web.tsx:125
+msgid "Click here to open tag menu for {tag}"
+msgstr ""
+
#: src/screens/Onboarding/index.tsx:35
msgid "Climate"
msgstr "ę°č±”"
@@ -726,7 +747,8 @@ msgstr "ę°č±”"
msgid "Close"
msgstr "éćć"
-#: src/components/Dialog/index.web.tsx:78
+#: src/components/Dialog/index.web.tsx:80
+#: src/components/Dialog/index.web.tsx:194
msgid "Close active dialog"
msgstr "ć¢ćÆćć£ććŖćć¤ć¢ćć°ćéćć"
@@ -746,11 +768,15 @@ msgstr "ē»åćéćć"
msgid "Close image viewer"
msgstr "ē»åćć„ć¼ć¢ćéćć"
-#: src/view/shell/index.web.tsx:49
+#: src/view/shell/index.web.tsx:51
msgid "Close navigation footer"
msgstr "ććć²ć¼ć·ć§ć³ćććæć¼ćéćć"
-#: src/view/shell/index.web.tsx:50
+#: src/components/TagMenu/index.tsx:266
+msgid "Close this dialog"
+msgstr ""
+
+#: src/view/shell/index.web.tsx:52
msgid "Closes bottom navigation bar"
msgstr "äøéØć®ććć²ć¼ć·ć§ć³ćć¼ćéćć"
@@ -758,7 +784,7 @@ msgstr "äøéØć®ććć²ć¼ć·ć§ć³ćć¼ćéćć"
msgid "Closes password update alert"
msgstr "ćć¹ćÆć¼ćę“ę°ć¢ć©ć¼ććéćć"
-#: src/view/com/composer/Composer.tsx:302
+#: src/view/com/composer/Composer.tsx:309
msgid "Closes post composer and discards post draft"
msgstr "ę稿ć®ē·Øéē»é¢ćéććäøęøććåé¤ćć"
@@ -787,7 +813,11 @@ msgstr "ć³ćć„ććć£ć¼ć¬ć¤ćć©ć¤ć³"
msgid "Complete onboarding and start using your account"
msgstr "åęčØå®ćå®äŗćć¦ć¢ć«ć¦ć³ćć使ćå§ćć"
-#: src/view/com/composer/Composer.tsx:417
+#: src/view/com/auth/create/Step3.tsx:73
+msgid "Complete the challenge"
+msgstr ""
+
+#: src/view/com/composer/Composer.tsx:424
msgid "Compose posts up to {MAX_GRAPHEME_LENGTH} characters in length"
msgstr "{MAX_GRAPHEME_LENGTH}ęåć¾ć§ć®ę稿ćä½ę"
@@ -804,7 +834,7 @@ msgstr "ćć®ć«ćć“ćŖć®ć³ć³ćć³ććć£ć«ćæćŖć³ć°ćčØå®ļ¼ {0
#: src/view/com/modals/SelfLabel.tsx:154
#: src/view/com/modals/VerifyEmail.tsx:231
#: src/view/com/modals/VerifyEmail.tsx:233
-#: src/view/screens/PreferencesHomeFeed.tsx:308
+#: src/view/screens/PreferencesFollowingFeed.tsx:308
#: src/view/screens/PreferencesThreads.tsx:159
msgid "Confirm"
msgstr "確čŖ"
@@ -842,16 +872,16 @@ msgstr "確čŖć³ć¼ć"
msgid "Confirms signing up {email} to the waitlist"
msgstr "{email}ć®Waitlistćøć®ē»é²ć確čŖ"
-#: src/view/com/auth/create/CreateAccount.tsx:182
+#: src/view/com/auth/create/CreateAccount.tsx:193
#: src/view/com/auth/login/LoginForm.tsx:278
msgid "Connecting..."
msgstr "ę„ē¶äø..."
-#: src/view/com/auth/create/CreateAccount.tsx:202
+#: src/view/com/auth/create/CreateAccount.tsx:213
msgid "Contact support"
msgstr "ćµćć¼ćć«é£ēµ”"
-#: src/view/screens/Moderation.tsx:81
+#: src/view/screens/Moderation.tsx:83
msgid "Content filtering"
msgstr "ć³ć³ćć³ćć®ćć£ć«ćæćŖć³ć°"
@@ -881,7 +911,7 @@ msgstr "ć³ć³ćć³ćć®č¦å"
#: src/screens/Onboarding/StepFollowingFeed.tsx:153
#: src/screens/Onboarding/StepInterests/index.tsx:248
#: src/screens/Onboarding/StepModeration/index.tsx:118
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:108
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:114
#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:148
#: src/view/com/auth/onboarding/RecommendedFollows.tsx:209
msgid "Continue"
@@ -890,7 +920,7 @@ msgstr "ē¶č”"
#: src/screens/Onboarding/StepFollowingFeed.tsx:150
#: src/screens/Onboarding/StepInterests/index.tsx:245
#: src/screens/Onboarding/StepModeration/index.tsx:115
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:105
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:111
msgid "Continue to next step"
msgstr "ꬔć®ć¹ććććøé²ć"
@@ -917,7 +947,7 @@ msgstr "ćć«ććć¼ćøć§ć³ććÆćŖćććć¼ćć«ć³ćć¼ćć¾ćć
#: src/view/com/modals/AddAppPasswords.tsx:76
#: src/view/com/modals/InviteCodes.tsx:152
-#: src/view/com/util/forms/PostDropdownBtn.tsx:112
+#: src/view/com/util/forms/PostDropdownBtn.tsx:143
msgid "Copied to clipboard"
msgstr "ćÆćŖćććć¼ćć«ć³ćć¼ćć¾ćć"
@@ -929,19 +959,19 @@ msgstr "ć¢ććŖćć¹ćÆć¼ććć³ćć¼ćć¾ć"
msgid "Copy"
msgstr "ć³ćć¼"
-#: src/view/screens/ProfileList.tsx:417
+#: src/view/screens/ProfileList.tsx:418
msgid "Copy link to list"
msgstr "ćŖć¹ććøć®ćŖć³ćÆćć³ćć¼"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:153
+#: src/view/com/util/forms/PostDropdownBtn.tsx:184
msgid "Copy link to post"
msgstr "ę稿ćøć®ćŖć³ćÆćć³ćć¼"
-#: src/view/com/profile/ProfileHeader.tsx:294
+#: src/view/com/profile/ProfileHeader.tsx:295
msgid "Copy link to profile"
msgstr "ćććć£ć¼ć«ćøć®ćŖć³ćÆćć³ćć¼"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:139
+#: src/view/com/util/forms/PostDropdownBtn.tsx:170
msgid "Copy post text"
msgstr "ę稿ć®ććć¹ććć³ćć¼"
@@ -950,7 +980,7 @@ msgstr "ę稿ć®ććć¹ććć³ćć¼"
msgid "Copyright Policy"
msgstr "čä½ęØ©ććŖć·ć¼"
-#: src/view/screens/ProfileFeed.tsx:96
+#: src/view/screens/ProfileFeed.tsx:97
msgid "Could not load feed"
msgstr "ćć£ć¼ćć®ćć¼ćć«å¤±ęćć¾ćć"
@@ -959,12 +989,12 @@ msgid "Could not load list"
msgstr "ćŖć¹ćć®ćć¼ćć«å¤±ęćć¾ćć"
#: src/view/com/auth/create/Step2.tsx:91
-msgid "Country"
-msgstr "å½"
+#~ msgid "Country"
+#~ msgstr "å½"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:62
-#: src/view/com/auth/SplashScreen.tsx:46
-#: src/view/com/auth/SplashScreen.web.tsx:77
+#: src/view/com/auth/SplashScreen.tsx:71
+#: src/view/com/auth/SplashScreen.web.tsx:81
msgid "Create a new account"
msgstr "ę°ććć¢ć«ć¦ć³ććä½ę"
@@ -972,7 +1002,7 @@ msgstr "ę°ććć¢ć«ć¦ć³ććä½ę"
msgid "Create a new Bluesky account"
msgstr "ę°ććBlueskyć¢ć«ć¦ć³ććä½ę"
-#: src/view/com/auth/create/CreateAccount.tsx:122
+#: src/view/com/auth/create/CreateAccount.tsx:133
msgid "Create Account"
msgstr "ć¢ć«ć¦ć³ććä½ę"
@@ -981,7 +1011,7 @@ msgid "Create App Password"
msgstr "ć¢ććŖćć¹ćÆć¼ććä½ę"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:54
-#: src/view/com/auth/SplashScreen.tsx:43
+#: src/view/com/auth/SplashScreen.tsx:68
msgid "Create new account"
msgstr "ę°ććć¢ć«ć¦ć³ććä½ę"
@@ -997,7 +1027,7 @@ msgstr "ä½ęč
ļ¼<0/>"
msgid "Created by you"
msgstr "ä½ęč
ļ¼ććŖć"
-#: src/view/com/composer/Composer.tsx:448
+#: src/view/com/composer/Composer.tsx:455
msgid "Creates a card with a thumbnail. The card links to {url}"
msgstr "ćµć ćć¤ć«ä»ćć®ć«ć¼ććä½ęćć¾ćććć®ć«ć¼ććÆę¬”ć®ć¢ćć¬ć¹ćøćŖć³ćÆćć¾ćļ¼{url}"
@@ -1015,6 +1045,7 @@ msgid "Custom domain"
msgstr "ć«ć¹ćæć ćć”ć¤ć³"
#: src/screens/Onboarding/StepAlgoFeeds/index.tsx:106
+#: src/view/screens/Feeds.tsx:692
msgid "Custom feeds built by the community bring you new experiences and help you find the content you love."
msgstr "ć³ćć„ććć£ć¼ć«ćć£ć¦ä½ęćććć«ć¹ćæć ćć£ć¼ććÆćććŖćć«ę°ććä½éØććććććććŖćć儽ććŖć³ć³ćć³ććč¦ć¤ććć®ć«å½¹ē«ć”ć¾ćć"
@@ -1060,8 +1091,8 @@ msgstr "ć¢ć«ć¦ć³ććåé¤"
msgid "Delete app password"
msgstr "ć¢ććŖćć¹ćÆć¼ććåé¤"
-#: src/view/screens/ProfileList.tsx:363
-#: src/view/screens/ProfileList.tsx:444
+#: src/view/screens/ProfileList.tsx:364
+#: src/view/screens/ProfileList.tsx:445
msgid "Delete List"
msgstr "ćŖć¹ććåé¤"
@@ -1077,19 +1108,19 @@ msgstr "ćć¤ć¢ć«ć¦ć³ććåé¤"
msgid "Delete My Accountā¦"
msgstr "ćć¤ć¢ć«ć¦ć³ććåé¤ā¦"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:228
+#: src/view/com/util/forms/PostDropdownBtn.tsx:273
msgid "Delete post"
msgstr "ę稿ćåé¤"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:232
+#: src/view/com/util/forms/PostDropdownBtn.tsx:277
msgid "Delete this post?"
msgstr "ćć®ę稿ćåé¤ćć¾ććļ¼"
-#: src/view/com/util/post-embeds/QuoteEmbed.tsx:69
+#: src/view/com/util/post-embeds/QuoteEmbed.tsx:70
msgid "Deleted"
msgstr "åé¤ććć¦ćć¾ć"
-#: src/view/com/post-thread/PostThread.tsx:259
+#: src/view/com/post-thread/PostThread.tsx:316
msgid "Deleted post."
msgstr "ę稿ćåé¤ćć¾ććć"
@@ -1108,7 +1139,7 @@ msgstr "čŖ¬ę"
#~ msgid "Developer Tools"
#~ msgstr "éēŗč
ćć¼ć«"
-#: src/view/com/composer/Composer.tsx:211
+#: src/view/com/composer/Composer.tsx:218
msgid "Did you want to say anything?"
msgstr "ćŖć«ćčØćććććØćÆćć£ćļ¼"
@@ -1116,15 +1147,15 @@ msgstr "ćŖć«ćčØćććććØćÆćć£ćļ¼"
msgid "Dim"
msgstr "ć°ć¬ć¼"
-#: src/view/com/composer/Composer.tsx:144
+#: src/view/com/composer/Composer.tsx:151
msgid "Discard"
msgstr "ē “ę£"
-#: src/view/com/composer/Composer.tsx:138
+#: src/view/com/composer/Composer.tsx:145
msgid "Discard draft"
msgstr "äøęøććē “ę£"
-#: src/view/screens/Moderation.tsx:207
+#: src/view/screens/Moderation.tsx:226
msgid "Discourage apps from showing my account to logged-out users"
msgstr "ć¢ććŖććć°ć¢ć¦ćććć¦ć¼ć¶ć¼ć«čŖåć®ć¢ć«ć¦ć³ćć蔨示ććŖćććć«ćć"
@@ -1134,8 +1165,12 @@ msgid "Discover new custom feeds"
msgstr "ę°ććć«ć¹ćæć ćć£ć¼ććč¦ć¤ćć"
#: src/view/screens/Feeds.tsx:473
-msgid "Discover new feeds"
-msgstr "ę°ćććć£ć¼ććč¦ć¤ćć"
+#~ msgid "Discover new feeds"
+#~ msgstr "ę°ćććć£ć¼ććč¦ć¤ćć"
+
+#: src/view/screens/Feeds.tsx:689
+msgid "Discover New Feeds"
+msgstr ""
#: src/view/com/modals/EditProfile.tsx:192
msgid "Display name"
@@ -1149,7 +1184,7 @@ msgstr "蔨示å"
msgid "Domain verified!"
msgstr "ćć”ć¤ć³ć確čŖćć¾ććļ¼"
-#: src/view/com/auth/create/Step1.tsx:166
+#: src/view/com/auth/create/Step1.tsx:170
msgid "Don't have an invite code?"
msgstr "ęå¾
ć³ć¼ćććęć”ć§ćŖćå “å"
@@ -1176,7 +1211,7 @@ msgstr "å®äŗ"
#: src/view/com/modals/InviteCodes.tsx:80
#: src/view/com/modals/InviteCodes.tsx:123
#: src/view/com/modals/ListAddRemoveUsers.tsx:142
-#: src/view/screens/PreferencesHomeFeed.tsx:311
+#: src/view/screens/PreferencesFollowingFeed.tsx:311
#: src/view/screens/Settings/ExportCarDialog.tsx:93
#: src/view/screens/Settings/ExportCarDialog.tsx:94
msgid "Done"
@@ -1199,7 +1234,7 @@ msgstr ""
msgid "Download CAR file"
msgstr ""
-#: src/view/com/composer/text-input/TextInput.web.tsx:247
+#: src/view/com/composer/text-input/TextInput.web.tsx:249
msgid "Drop to add images"
msgstr "ćććććć¦ē»åćčæ½å ćć"
@@ -1245,7 +1280,7 @@ msgstr "ē·Øé"
msgid "Edit image"
msgstr "ē»åćē·Øé"
-#: src/view/screens/ProfileList.tsx:432
+#: src/view/screens/ProfileList.tsx:433
msgid "Edit list details"
msgstr "ćŖć¹ćć®č©³ē“°ćē·Øé"
@@ -1263,15 +1298,16 @@ msgstr "ćć¤ćć£ć¼ććē·Øé"
msgid "Edit my profile"
msgstr "ćć¤ćććć£ć¼ć«ćē·Øé"
-#: src/view/com/profile/ProfileHeader.tsx:417
+#: src/view/com/profile/ProfileHeader.tsx:418
msgid "Edit profile"
msgstr "ćććć£ć¼ć«ćē·Øé"
-#: src/view/com/profile/ProfileHeader.tsx:422
+#: src/view/com/profile/ProfileHeader.tsx:423
msgid "Edit Profile"
msgstr "ćććć£ć¼ć«ćē·Øé"
-#: src/view/screens/Feeds.tsx:356
+#: src/view/com/home/HomeHeaderLayout.web.tsx:59
+#: src/view/screens/Feeds.tsx:355
msgid "Edit Saved Feeds"
msgstr "äæåććććć£ć¼ććē·Øé"
@@ -1291,16 +1327,14 @@ msgstr "ććŖćć®ćććć£ć¼ć«ć®čŖ¬ęćē·Øéćć¾ć"
msgid "Education"
msgstr "ęč²"
-#: src/view/com/auth/create/Step1.tsx:195
-#: src/view/com/auth/create/Step2.tsx:194
-#: src/view/com/auth/create/Step2.tsx:269
+#: src/view/com/auth/create/Step1.tsx:199
#: src/view/com/auth/login/ForgotPasswordForm.tsx:156
#: src/view/com/modals/ChangeEmail.tsx:141
#: src/view/com/modals/Waitlist.tsx:88
msgid "Email"
msgstr "ć”ć¼ć«ć¢ćć¬ć¹"
-#: src/view/com/auth/create/Step1.tsx:186
+#: src/view/com/auth/create/Step1.tsx:190
#: src/view/com/auth/login/ForgotPasswordForm.tsx:147
msgid "Email address"
msgstr "ć”ć¼ć«ć¢ćć¬ć¹"
@@ -1343,7 +1377,7 @@ msgstr "å¤éØć”ćć£ć¢ćęå¹ć«ćć"
msgid "Enable media players for"
msgstr "ęå¹ć«ććć”ćć£ć¢ćć¬ć¤ć¤ć¼"
-#: src/view/screens/PreferencesHomeFeed.tsx:147
+#: src/view/screens/PreferencesFollowingFeed.tsx:147
msgid "Enable this setting to only see replies between people you follow."
msgstr "ćć®čØå®ćęå¹ć«ćććØćčŖåććć©ćć¼ćć¦ććć¦ć¼ć¶ć¼ććć®čæäæ”ć ćć蔨示ććć¾ćć"
@@ -1355,6 +1389,11 @@ msgstr "ćć£ć¼ćć®ēµćć"
msgid "Enter a name for this App Password"
msgstr "ćć®ć¢ććŖćć¹ćÆć¼ćć®ååćå
„å"
+#: src/components/dialogs/MutedWords.tsx:87
+#: src/components/dialogs/MutedWords.tsx:88
+msgid "Enter a word or tag"
+msgstr ""
+
#: src/view/com/modals/VerifyEmail.tsx:105
msgid "Enter Confirmation Code"
msgstr "確čŖć³ć¼ććå
„åćć¦ćć ćć"
@@ -1375,7 +1414,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/Step1.tsx:247
+#: src/view/com/auth/create/Step1.tsx:251
#: src/view/com/modals/BirthDateSettings.tsx:74
msgid "Enter your birth date"
msgstr "čŖēę„ćå
„åćć¦ćć ćć"
@@ -1384,7 +1423,7 @@ msgstr "čŖēę„ćå
„åćć¦ćć ćć"
msgid "Enter your email"
msgstr "ć”ć¼ć«ć¢ćć¬ć¹ćå
„åćć¦ćć ćć"
-#: src/view/com/auth/create/Step1.tsx:191
+#: src/view/com/auth/create/Step1.tsx:195
msgid "Enter your email address"
msgstr "ć”ć¼ć«ć¢ćć¬ć¹ćå
„åćć¦ćć ćć"
@@ -1397,14 +1436,18 @@ msgid "Enter your new email address below."
msgstr "仄äøć«ę°ććć”ć¼ć«ć¢ćć¬ć¹ćå
„åćć¦ćć ććć"
#: src/view/com/auth/create/Step2.tsx:188
-msgid "Enter your phone number"
-msgstr "é»č©±ēŖå·ćå
„å"
+#~ msgid "Enter your phone number"
+#~ msgstr "é»č©±ēŖå·ćå
„å"
#: src/view/com/auth/login/Login.tsx:99
msgid "Enter your username and password"
msgstr "ć¦ć¼ć¶ć¼åćØćć¹ćÆć¼ććå
„åćć¦ćć ćć"
-#: src/view/screens/Search/Search.tsx:109
+#: src/view/com/auth/create/Step3.tsx:67
+msgid "Error receiving captcha response."
+msgstr ""
+
+#: src/view/screens/Search/Search.tsx:110
msgid "Error:"
msgstr "ćØć©ć¼ļ¼"
@@ -1456,7 +1499,7 @@ msgstr "å¤éØć”ćć£ć¢"
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/Navigation.tsx:258
+#: src/Navigation.tsx:261
#: src/view/screens/PreferencesExternalEmbeds.tsx:52
#: src/view/screens/Settings/index.tsx:657
msgid "External Media Preferences"
@@ -1475,7 +1518,7 @@ msgstr "ć¢ććŖćć¹ćÆć¼ćć®ä½ęć«å¤±ęćć¾ććć"
msgid "Failed to create the list. Check your internet connection and try again."
msgstr "ćŖć¹ćć®ä½ęć«å¤±ęćć¾ćććć¤ć³ćæć¼ććććøć®ę„ē¶ć確čŖć®äøćććäøåŗ¦ć試ććć ććć"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:88
+#: src/view/com/util/forms/PostDropdownBtn.tsx:110
msgid "Failed to delete post, please try again"
msgstr "ę稿ć®åé¤ć«å¤±ęćć¾ćććććäøåŗ¦ć試ććć ććć"
@@ -1488,25 +1531,26 @@ msgstr "ććććć®ćć£ć¼ćć®ćć¼ćć«å¤±ęćć¾ćć"
msgid "Feed"
msgstr "ćć£ć¼ć"
-#: src/view/com/feeds/FeedSourceCard.tsx:229
+#: src/view/com/feeds/FeedSourceCard.tsx:231
msgid "Feed by {0}"
msgstr "{0}ć«ćććć£ć¼ć"
-#: src/view/screens/Feeds.tsx:631
+#: src/view/screens/Feeds.tsx:605
msgid "Feed offline"
msgstr "ćć£ć¼ććÆćŖćć©ć¤ć³ć§ć"
#: src/view/com/feeds/FeedPage.tsx:143
-msgid "Feed Preferences"
-msgstr "ćć£ć¼ćć®čØå®"
+#~ msgid "Feed Preferences"
+#~ msgstr "ćć£ć¼ćć®čØå®"
-#: src/view/shell/desktop/RightNav.tsx:69
+#: src/view/shell/desktop/RightNav.tsx:61
#: src/view/shell/Drawer.tsx:311
msgid "Feedback"
msgstr "ćć£ć¼ććććÆ"
-#: src/Navigation.tsx:442
-#: src/view/screens/Feeds.tsx:548
+#: src/Navigation.tsx:445
+#: src/view/screens/Feeds.tsx:419
+#: src/view/screens/Feeds.tsx:524
#: src/view/screens/Profile.tsx:184
#: src/view/shell/bottom-bar/BottomBar.tsx:181
#: src/view/shell/desktop/LeftNav.tsx:342
@@ -1531,7 +1575,7 @@ msgstr "ćć£ć¼ććÆć³ć³ćć³ććę“ēććēŗć«ć¦ć¼ć¶ć¼ć«ćć£
msgid "Feeds are custom algorithms that users build with a little coding expertise. <0/> for more information."
msgstr "ćć£ć¼ććÆć¦ć¼ć¶ć¼ćććć°ć©ćć³ć°ć®å°éē„čćęć£ć¦ę§ēÆććć«ć¹ćæć ć¢ć«ć“ćŖćŗć ć§ćć詳瓰ć«ć¤ćć¦ćÆć<0/>ćåē
§ćć¦ćć ććć"
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:70
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:76
msgid "Feeds can be topical as well!"
msgstr "ćć£ć¼ćć«ćÆē¹å®ć®č©±é”ć«ē¦ē¹ćå½ć¦ććć®ćććć¾ćļ¼"
@@ -1545,11 +1589,11 @@ msgstr "ęå¾ć«"
msgid "Find accounts to follow"
msgstr "ćć©ćć¼ććć¢ć«ć¦ć³ććę¢ć"
-#: src/view/screens/Search/Search.tsx:439
+#: src/view/screens/Search/Search.tsx:440
msgid "Find users on Bluesky"
msgstr "Blueskyć§ć¦ć¼ć¶ć¼ćę¤ē“¢"
-#: src/view/screens/Search/Search.tsx:437
+#: src/view/screens/Search/Search.tsx:438
msgid "Find users with the search tool on the right"
msgstr "å³å“ć®ę¤ē“¢ćć¼ć«ć§ć¦ć¼ć¶ć¼ćę¤ē“¢"
@@ -1557,9 +1601,13 @@ msgstr "å³å“ć®ę¤ē“¢ćć¼ć«ć§ć¦ć¼ć¶ć¼ćę¤ē“¢"
msgid "Finding similar accounts..."
msgstr "ä¼¼ć¦ććć¢ć«ć¦ć³ććę¤ē“¢äø..."
+#: src/view/screens/PreferencesFollowingFeed.tsx:111
+msgid "Fine-tune the content you see on your Following feed."
+msgstr ""
+
#: src/view/screens/PreferencesHomeFeed.tsx:111
-msgid "Fine-tune the content you see on your home screen."
-msgstr "ćć¼ć ē»é¢ć«č”Øē¤ŗćććć³ć³ćć³ćć微調ę“ćć¾ćć"
+#~ msgid "Fine-tune the content you see on your home screen."
+#~ msgstr "ćć¼ć ē»é¢ć«č”Øē¤ŗćććć³ć³ćć³ćć微調ę“ćć¾ćć"
#: src/view/screens/PreferencesThreads.tsx:60
msgid "Fine-tune the discussion threads."
@@ -1584,7 +1632,7 @@ msgstr "åē“ę¹åć«å転"
#: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:181
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:136
-#: src/view/com/profile/ProfileHeader.tsx:512
+#: src/view/com/profile/ProfileHeader.tsx:513
msgid "Follow"
msgstr "ćć©ćć¼"
@@ -1595,7 +1643,7 @@ msgstr "ćć©ćć¼"
#: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:58
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:122
-#: src/view/com/profile/ProfileHeader.tsx:503
+#: src/view/com/profile/ProfileHeader.tsx:504
msgid "Follow {0}"
msgstr "{0}ććć©ćć¼"
@@ -1623,7 +1671,7 @@ msgstr "{0}ććć©ćć¼äø"
msgid "Followed users"
msgstr "čŖåććć©ćć¼ćć¦ććć¦ć¼ć¶ć¼"
-#: src/view/screens/PreferencesHomeFeed.tsx:154
+#: src/view/screens/PreferencesFollowingFeed.tsx:154
msgid "Followed users only"
msgstr "čŖåććć©ćć¼ćć¦ććć¦ć¼ć¶ć¼ć®ćæ"
@@ -1640,16 +1688,24 @@ msgstr "ćć©ććÆć¼"
#~ msgstr "ćć©ćć¼äø"
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:136
-#: src/view/com/profile/ProfileHeader.tsx:494
+#: src/view/com/profile/ProfileHeader.tsx:495
#: src/view/screens/ProfileFollows.tsx:25
msgid "Following"
msgstr "ćć©ćć¼äø"
-#: src/view/com/profile/ProfileHeader.tsx:148
+#: src/view/com/profile/ProfileHeader.tsx:149
msgid "Following {0}"
msgstr "{0}ććć©ćć¼ćć¦ćć¾ć"
-#: src/view/com/profile/ProfileHeader.tsx:545
+#: src/Navigation.tsx:248
+#: src/view/com/home/HomeHeaderLayout.web.tsx:45
+#: src/view/com/home/HomeHeaderLayoutMobile.tsx:83
+#: src/view/screens/PreferencesFollowingFeed.tsx:104
+#: src/view/screens/Settings/index.tsx:543
+msgid "Following Feed Preferences"
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:546
msgid "Follows you"
msgstr "ććŖćććć©ćć¼"
@@ -1703,8 +1759,8 @@ msgstr "éå§"
msgid "Go back"
msgstr "ę»ć"
-#: src/view/screens/ProfileFeed.tsx:105
-#: src/view/screens/ProfileFeed.tsx:110
+#: src/view/screens/ProfileFeed.tsx:106
+#: src/view/screens/ProfileFeed.tsx:111
#: src/view/screens/ProfileList.tsx:897
#: src/view/screens/ProfileList.tsx:902
msgid "Go Back"
@@ -1715,7 +1771,7 @@ msgstr "ę»ć"
msgid "Go back to previous step"
msgstr "åć®ć¹ćććć«ę»ć"
-#: src/view/screens/Search/Search.tsx:724
+#: src/view/screens/Search/Search.tsx:747
#: src/view/shell/desktop/Search.tsx:262
msgid "Go to @{queryMaybeHandle}"
msgstr "@{queryMaybeHandle}ćø"
@@ -1732,11 +1788,15 @@ msgstr "ꬔćø"
msgid "Handle"
msgstr "ćć³ćć«"
-#: src/view/com/auth/create/CreateAccount.tsx:197
+#: src/components/RichText.tsx:188
+msgid "Hashtag: {tag}"
+msgstr ""
+
+#: src/view/com/auth/create/CreateAccount.tsx:208
msgid "Having trouble?"
msgstr "ä½ćåé”ćēŗēćć¾ćććļ¼"
-#: src/view/shell/desktop/RightNav.tsx:98
+#: src/view/shell/desktop/RightNav.tsx:90
#: src/view/shell/Drawer.tsx:321
msgid "Help"
msgstr "ćć«ć"
@@ -1749,11 +1809,11 @@ msgstr "ććŖćććć©ćć¼ććććŖć¢ć«ć¦ć³ćć瓹ä»ćć¾ć"
#~ msgid "Here are some accounts for your to follow"
#~ msgstr "ććŖćććć©ćć¼ććććŖć¢ć«ć¦ć³ćć瓹ä»ćć¾ć"
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:79
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:85
msgid "Here are some popular topical feeds. You can choose to follow as many as you like."
msgstr "äŗŗę°ć®ćććć£ć¼ćć瓹ä»ćć¾ćć儽ććŖć ććć©ćć¼ććććØćć§ćć¾ćć"
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:74
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:80
msgid "Here are some topical feeds based on your interests: {interestsText}. You can choose to follow as many as you like."
msgstr "ć{interestsText}ććøć®čå³ć«åŗć„ććććććć§ćć儽ććŖć ććć©ćć¼ććććØćć§ćć¾ćć"
@@ -1774,7 +1834,7 @@ msgctxt "action"
msgid "Hide"
msgstr "é蔨示"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:187
+#: src/view/com/util/forms/PostDropdownBtn.tsx:232
msgid "Hide post"
msgstr "ę稿ćé蔨示"
@@ -1783,7 +1843,7 @@ msgstr "ę稿ćé蔨示"
msgid "Hide the content"
msgstr "ć³ć³ćć³ććé蔨示"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:191
+#: src/view/com/util/forms/PostDropdownBtn.tsx:236
msgid "Hide this post?"
msgstr "ćć®ę稿ćé蔨示ć«ćć¾ććļ¼"
@@ -1791,7 +1851,7 @@ msgstr "ćć®ę稿ćé蔨示ć«ćć¾ććļ¼"
msgid "Hide user list"
msgstr "ć¦ć¼ć¶ć¼ćŖć¹ććé蔨示"
-#: src/view/com/profile/ProfileHeader.tsx:486
+#: src/view/com/profile/ProfileHeader.tsx:487
msgid "Hides posts from {0} in your feed"
msgstr "{0}ć®ę稿ćććŖćć®ćć£ć¼ćć§é蔨示ć«ćć¾ć"
@@ -1815,7 +1875,7 @@ msgstr "ćć£ć¼ććµć¼ćć¼ć®ååæćęŖćććć§ćććć®åé”ć
msgid "Hmm, we're having trouble finding this feed. It may have been deleted."
msgstr "ćć®ćć£ć¼ććč¦ć¤ćććŖćććć§ććććććććåé¤ćććć®ććććć¾ććć"
-#: src/Navigation.tsx:432
+#: src/Navigation.tsx:435
#: src/view/shell/bottom-bar/BottomBar.tsx:137
#: src/view/shell/desktop/LeftNav.tsx:306
#: src/view/shell/Drawer.tsx:398
@@ -1827,10 +1887,10 @@ msgstr "ćć¼ć "
#: src/view/com/pager/FeedsTabBarMobile.tsx:123
#: src/view/screens/PreferencesHomeFeed.tsx:104
#: src/view/screens/Settings/index.tsx:543
-msgid "Home Feed Preferences"
-msgstr "ćć¼ć ćć£ć¼ćć®čØå®"
+#~ msgid "Home Feed Preferences"
+#~ msgstr "ćć¼ć ćć£ć¼ćć®čØå®"
-#: src/view/com/auth/create/Step1.tsx:78
+#: src/view/com/auth/create/Step1.tsx:82
#: src/view/com/auth/login/ForgotPasswordForm.tsx:120
msgid "Hosting provider"
msgstr "ćć¹ćć£ć³ć°ćććć¤ćć¼"
@@ -1889,7 +1949,7 @@ msgstr "ćć¹ćÆć¼ćććŖć»ććććććć«ććŖćć®ć”ć¼ć«ć¢ć
msgid "Input confirmation code for account deletion"
msgstr "ć¢ć«ć¦ć³ćåé¤ć®ććć«ē¢ŗčŖć³ć¼ććå
„å"
-#: src/view/com/auth/create/Step1.tsx:196
+#: src/view/com/auth/create/Step1.tsx:200
msgid "Input email for Bluesky account"
msgstr "Blueskyć¢ć«ć¦ć³ćēØć®ć”ć¼ć«ć¢ćć¬ć¹ćå
„åćć¦ćć ćć"
@@ -1901,7 +1961,7 @@ msgstr "Blueskyć¢ć«ć¦ć³ćēØć®ć”ć¼ć«ć¢ćć¬ć¹ćå
„åćć¦ćć
#~ msgid "Input hosting provider address"
#~ msgstr "ćć¹ćć£ć³ć°ćććć¤ćć¼ć®ć¢ćć¬ć¹ćå
„å"
-#: src/view/com/auth/create/Step1.tsx:154
+#: src/view/com/auth/create/Step1.tsx:158
msgid "Input invite code to proceed"
msgstr "ęå¾
ć³ć¼ććå
„åćć¦ę¬”ć«é²ć"
@@ -1918,8 +1978,8 @@ msgid "Input password for account deletion"
msgstr "ć¢ć«ć¦ć³ćåé¤ć®ććć«ćć¹ćÆć¼ććå
„å"
#: src/view/com/auth/create/Step2.tsx:196
-msgid "Input phone number for SMS verification"
-msgstr "SMSčŖčؼć«ēØććé»č©±ēŖå·ćå
„å"
+#~ msgid "Input phone number for SMS verification"
+#~ msgstr "SMSčŖčؼć«ēØććé»č©±ēŖå·ćå
„å"
#: src/view/com/auth/login/LoginForm.tsx:230
msgid "Input the password tied to {identifier}"
@@ -1930,8 +1990,8 @@ msgid "Input the username or email address you used at signup"
msgstr "ćµć¤ć³ć¢ććęć«ä½æēØććć¦ć¼ć¶ć¼åć¾ććÆć”ć¼ć«ć¢ćć¬ć¹ćå
„å"
#: src/view/com/auth/create/Step2.tsx:271
-msgid "Input the verification code we have texted to you"
-msgstr "ććć¹ćć”ćć»ć¼ćøć§éććć¦ććčŖčؼć³ć¼ććå
„åćć¦ćć ćć"
+#~ msgid "Input the verification code we have texted to you"
+#~ msgstr "ććć¹ćć”ćć»ć¼ćøć§éććć¦ććčŖčؼć³ć¼ććå
„åćć¦ćć ćć"
#: src/view/com/modals/Waitlist.tsx:90
msgid "Input your email to get on the Bluesky waitlist"
@@ -1941,11 +2001,11 @@ msgstr "Blueskyć®Waitlistć«ē»é²ććć”ć¼ć«ć¢ćć¬ć¹ćå
„å"
msgid "Input your password"
msgstr "ććŖćć®ćć¹ćÆć¼ććå
„å"
-#: src/view/com/auth/create/Step3.tsx:42
+#: src/view/com/auth/create/Step2.tsx:80
msgid "Input your user handle"
msgstr "ććŖćć®ć¦ć¼ć¶ć¼ćć³ćć«ćå
„å"
-#: src/view/com/post-thread/PostThreadItem.tsx:225
+#: src/view/com/post-thread/PostThreadItem.tsx:226
msgid "Invalid or unsupported post record"
msgstr "ē”å¹ć¾ććÆćµćć¼ćććć¦ććŖćę稿ć®ć¬ć³ć¼ć"
@@ -1961,12 +2021,12 @@ msgstr "ē”å¹ćŖć¦ć¼ć¶ć¼åć¾ććÆćć¹ćÆć¼ć"
msgid "Invite a Friend"
msgstr "åéćęå¾
"
-#: src/view/com/auth/create/Step1.tsx:144
-#: src/view/com/auth/create/Step1.tsx:153
+#: src/view/com/auth/create/Step1.tsx:148
+#: src/view/com/auth/create/Step1.tsx:157
msgid "Invite code"
msgstr "ęå¾
ć³ć¼ć"
-#: src/view/com/auth/create/state.ts:199
+#: src/view/com/auth/create/state.ts:158
msgid "Invite code not accepted. Check that you input it correctly and try again."
msgstr "ęå¾
ć³ć¼ćć確čŖć§ćć¾ćććę£ććå
„åććć¦ććććØć確čŖććććäøåŗ¦å®č”ćć¦ćć ććć"
@@ -1987,6 +2047,7 @@ msgid "It shows posts from the people you follow as they happen."
msgstr "ććŖćććć©ćć¼ććäŗŗć®ę稿ćéę蔨示ććć¾ćć"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:99
+#: src/view/com/auth/SplashScreen.web.tsx:138
msgid "Jobs"
msgstr "ä»äŗ"
@@ -1994,8 +2055,8 @@ msgstr "ä»äŗ"
msgid "Join the waitlist"
msgstr "Waitlistć«åå "
-#: src/view/com/auth/create/Step1.tsx:170
#: src/view/com/auth/create/Step1.tsx:174
+#: src/view/com/auth/create/Step1.tsx:178
msgid "Join the waitlist."
msgstr "Waitlistć«åå ćć¾ćć"
@@ -2046,7 +2107,7 @@ msgstr "詳瓰"
msgid "Learn more about this warning"
msgstr "ćć®č¦åć®č©³ē“°"
-#: src/view/screens/Moderation.tsx:243
+#: src/view/screens/Moderation.tsx:262
msgid "Learn more about what is public on Bluesky."
msgstr "Blueskyć§å
¬éććć¦ććå
容ćÆćć”ććåē
§ćć¦ćć ććć"
@@ -2102,7 +2163,7 @@ msgstr "ćććććć¦ć¼ć¶ć¼"
msgid "Liked By"
msgstr "ćććććć¦ć¼ć¶ć¼"
-#: src/view/com/feeds/FeedSourceCard.tsx:277
+#: src/view/com/feeds/FeedSourceCard.tsx:279
msgid "Liked by {0} {1}"
msgstr "{0} {1}ć«ćććććć¾ćć"
@@ -2130,7 +2191,7 @@ msgstr "ććŖćć®ę稿ććććććć¾ćć"
msgid "Likes"
msgstr "ććć"
-#: src/view/com/post-thread/PostThreadItem.tsx:182
+#: src/view/com/post-thread/PostThreadItem.tsx:183
msgid "Likes on this post"
msgstr "ćć®ę稿ćććććć"
@@ -2146,19 +2207,19 @@ msgstr "ćŖć¹ć"
msgid "List Avatar"
msgstr "ćŖć¹ćć®ć¢ććæć¼"
-#: src/view/screens/ProfileList.tsx:323
+#: src/view/screens/ProfileList.tsx:324
msgid "List blocked"
msgstr "ćŖć¹ććććććÆćć¾ćć"
-#: src/view/com/feeds/FeedSourceCard.tsx:231
+#: src/view/com/feeds/FeedSourceCard.tsx:233
msgid "List by {0}"
msgstr "{0}ć«ćććŖć¹ć"
-#: src/view/screens/ProfileList.tsx:377
+#: src/view/screens/ProfileList.tsx:378
msgid "List deleted"
msgstr "ćŖć¹ććåé¤ćć¾ćć"
-#: src/view/screens/ProfileList.tsx:282
+#: src/view/screens/ProfileList.tsx:283
msgid "List muted"
msgstr "ćŖć¹ćććć„ć¼ććć¾ćć"
@@ -2166,11 +2227,11 @@ msgstr "ćŖć¹ćććć„ć¼ććć¾ćć"
msgid "List Name"
msgstr "ćŖć¹ćć®åå"
-#: src/view/screens/ProfileList.tsx:342
+#: src/view/screens/ProfileList.tsx:343
msgid "List unblocked"
msgstr "ćŖć¹ćć®ććććÆćč§£é¤ćć¾ćć"
-#: src/view/screens/ProfileList.tsx:301
+#: src/view/screens/ProfileList.tsx:302
msgid "List unmuted"
msgstr "ćŖć¹ćć®ćć„ć¼ććč§£é¤ćć¾ćć"
@@ -2182,8 +2243,8 @@ msgstr "ćŖć¹ćć®ćć„ć¼ććč§£é¤ćć¾ćć"
msgid "Lists"
msgstr "ćŖć¹ć"
-#: src/view/com/post-thread/PostThread.tsx:276
-#: src/view/com/post-thread/PostThread.tsx:284
+#: src/view/com/post-thread/PostThread.tsx:333
+#: src/view/com/post-thread/PostThread.tsx:341
msgid "Load more posts"
msgstr "ę稿ćććć«ćć¼ć"
@@ -2191,10 +2252,10 @@ msgstr "ę稿ćććć«ćć¼ć"
msgid "Load new notifications"
msgstr "ęę°ć®éē„ććć¼ć"
-#: src/view/com/feeds/FeedPage.tsx:190
+#: src/view/com/feeds/FeedPage.tsx:115
#: src/view/screens/Profile.tsx:440
-#: src/view/screens/ProfileFeed.tsx:494
-#: src/view/screens/ProfileList.tsx:680
+#: src/view/screens/ProfileFeed.tsx:495
+#: src/view/screens/ProfileList.tsx:681
msgid "Load new posts"
msgstr "ęę°ć®ę稿ććć¼ć"
@@ -2221,7 +2282,7 @@ msgstr "ćć°ć¢ć¦ć"
#~ msgid "Logged-out users"
#~ msgstr "ćć°ć¢ć¦ćććć¦ć¼ć¶ć¼"
-#: src/view/screens/Moderation.tsx:136
+#: src/view/screens/Moderation.tsx:155
msgid "Logged-out visibility"
msgstr "ćć°ć¢ć¦ćććć¦ć¼ć¶ć¼ććć®åÆč¦ę§"
@@ -2237,6 +2298,18 @@ msgstr "ćŖć¹ćć«ćŖćć¢ć«ć¦ć³ćć«ćć°ć¤ć³"
msgid "Make sure this is where you intend to go!"
msgstr "ęå³ććå “ęć§ććććØć確čŖćć¦ćć ććļ¼"
+#: src/components/dialogs/MutedWords.tsx:71
+msgid "Manage your muted words and tags"
+msgstr ""
+
+#: src/view/com/auth/create/Step2.tsx:118
+msgid "May not be longer than 253 characters"
+msgstr ""
+
+#: src/view/com/auth/create/Step2.tsx:109
+msgid "May only contain letters and numbers"
+msgstr ""
+
#: src/view/screens/Profile.tsx:182
msgid "Media"
msgstr "ć”ćć£ć¢"
@@ -2250,7 +2323,7 @@ msgid "Mentioned users"
msgstr "ć”ć³ć·ć§ć³ćććć¦ć¼ć¶ć¼"
#: src/view/com/util/ViewHeader.tsx:81
-#: src/view/screens/Search/Search.tsx:623
+#: src/view/screens/Search/Search.tsx:646
msgid "Menu"
msgstr "ć”ćć„ć¼"
@@ -2263,7 +2336,7 @@ msgid "Message from server: {0}"
msgstr "ćµć¼ćć¼ććć®ć”ćć»ć¼ćøļ¼{0}"
#: src/Navigation.tsx:115
-#: src/view/screens/Moderation.tsx:64
+#: src/view/screens/Moderation.tsx:66
#: src/view/screens/Settings/index.tsx:625
#: src/view/shell/desktop/LeftNav.tsx:397
#: src/view/shell/Drawer.tsx:511
@@ -2271,7 +2344,7 @@ msgstr "ćµć¼ćć¼ććć®ć”ćć»ć¼ćøļ¼{0}"
msgid "Moderation"
msgstr "ć¢ćć¬ć¼ć·ć§ć³"
-#: src/view/com/lists/ListCard.tsx:92
+#: src/view/com/lists/ListCard.tsx:93
#: src/view/com/modals/UserAddRemoveLists.tsx:206
msgid "Moderation list by {0}"
msgstr "{0}ć®ä½ęććć¢ćć¬ć¼ć·ć§ć³ćŖć¹ć"
@@ -2280,7 +2353,7 @@ msgstr "{0}ć®ä½ęććć¢ćć¬ć¼ć·ć§ć³ćŖć¹ć"
msgid "Moderation list by <0/>"
msgstr "<0/>ć®ä½ęććć¢ćć¬ć¼ć·ć§ć³ćŖć¹ć"
-#: src/view/com/lists/ListCard.tsx:90
+#: src/view/com/lists/ListCard.tsx:91
#: src/view/com/modals/UserAddRemoveLists.tsx:204
#: src/view/screens/ProfileList.tsx:772
msgid "Moderation list by you"
@@ -2294,7 +2367,7 @@ msgstr "ć¢ćć¬ć¼ć·ć§ć³ćŖć¹ććä½ęćć¾ćć"
msgid "Moderation list updated"
msgstr "ć¢ćć¬ć¼ć·ć§ć³ćŖć¹ććę“ę°ćć¾ćć"
-#: src/view/screens/Moderation.tsx:95
+#: src/view/screens/Moderation.tsx:114
msgid "Moderation lists"
msgstr "ć¢ćć¬ć¼ć·ć§ć³ćŖć¹ć"
@@ -2315,13 +2388,13 @@ msgstr "ć¢ćć¬ć¼ćæć¼ć«ććć³ć³ćć³ćć«äøč¬ēćŖč¦åćčØå®
msgid "More feeds"
msgstr "ćć®ä»ć®ćć£ć¼ć"
-#: src/view/com/profile/ProfileHeader.tsx:522
-#: src/view/screens/ProfileFeed.tsx:362
-#: src/view/screens/ProfileList.tsx:616
+#: src/view/com/profile/ProfileHeader.tsx:523
+#: src/view/screens/ProfileFeed.tsx:363
+#: src/view/screens/ProfileList.tsx:617
msgid "More options"
msgstr "ćć®ä»ć®ćŖćć·ć§ć³"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:270
+#: src/view/com/util/forms/PostDropdownBtn.tsx:315
msgid "More post options"
msgstr "ćć®ć»ćć®ę稿ć®ćŖćć·ć§ć³"
@@ -2329,35 +2402,71 @@ msgstr "ćć®ć»ćć®ę稿ć®ćŖćć·ć§ć³"
msgid "Most-liked replies first"
msgstr "ćććć®ę°ćå¤ćé ć«čæäæ”ć蔨示"
-#: src/view/com/profile/ProfileHeader.tsx:326
+#: src/view/com/auth/create/Step2.tsx:122
+msgid "Must be at least 3 characters"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:253
+msgid "Mute"
+msgstr ""
+
+#: src/components/TagMenu/index.web.tsx:91
+msgid "Mute {truncatedTag}"
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:327
msgid "Mute Account"
msgstr "ć¢ć«ć¦ć³ćććć„ć¼ć"
-#: src/view/screens/ProfileList.tsx:543
+#: src/view/screens/ProfileList.tsx:544
msgid "Mute accounts"
msgstr "ć¢ć«ć¦ć³ćććć„ć¼ć"
-#: src/view/screens/ProfileList.tsx:490
+#: src/components/TagMenu/index.tsx:211
+msgid "Mute all {tag} posts"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:131
+msgid "Mute in tags only"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:116
+msgid "Mute in text & tags"
+msgstr ""
+
+#: src/view/screens/ProfileList.tsx:491
msgid "Mute list"
msgstr "ćŖć¹ćććć„ć¼ć"
-#: src/view/screens/ProfileList.tsx:274
+#: src/view/screens/ProfileList.tsx:275
msgid "Mute these accounts?"
msgstr "ćććć®ć¢ć«ć¦ć³ćććć„ć¼ććć¾ććļ¼"
-#: src/view/screens/ProfileList.tsx:278
+#: src/view/screens/ProfileList.tsx:279
msgid "Mute this List"
msgstr "ćć®ćŖć¹ćććć„ć¼ć"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:171
+#: src/components/dialogs/MutedWords.tsx:109
+msgid "Mute this word in post text and tags"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:124
+msgid "Mute this word in tags only"
+msgstr ""
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:202
msgid "Mute thread"
msgstr "ć¹ć¬ććććć„ć¼ć"
-#: src/view/com/lists/ListCard.tsx:101
+#: src/view/com/util/forms/PostDropdownBtn.tsx:216
+msgid "Mute words & tags"
+msgstr ""
+
+#: src/view/com/lists/ListCard.tsx:102
msgid "Muted"
msgstr "ćć„ć¼ćććć¦ćć¾ć"
-#: src/view/screens/Moderation.tsx:109
+#: src/view/screens/Moderation.tsx:128
msgid "Muted accounts"
msgstr "ćć„ć¼ćäøć®ć¢ć«ć¦ć³ć"
@@ -2370,7 +2479,11 @@ msgstr "ćć„ć¼ćäøć®ć¢ć«ć¦ć³ć"
msgid "Muted accounts have their posts removed from your feed and from your notifications. Mutes are completely private."
msgstr "ćć„ć¼ćäøć®ć¢ć«ć¦ć³ćć®ę稿ćÆććć£ć¼ććéē„ććåćé¤ććć¾ćććć„ć¼ćć®čØå®ćÆå®å
Øć«éå
¬éć§ćć"
-#: src/view/screens/ProfileList.tsx:276
+#: src/view/screens/Moderation.tsx:100
+msgid "Muted words & tags"
+msgstr ""
+
+#: src/view/screens/ProfileList.tsx:277
msgid "Muting is private. Muted accounts can interact with you, but you will not see their posts or receive notifications from them."
msgstr "ćć„ć¼ćć®čØå®ćÆéå
¬éć§ćććć„ć¼ćäøć®ć¢ć«ć¦ć³ććÆććŖććØå¼ćē¶ćé¢ććććØćć§ćć¾ććććć®ć¢ć«ć¦ć³ćć®ę稿ćéē„ćåäæ”ććććØćÆć§ćć¾ććć"
@@ -2378,7 +2491,7 @@ msgstr "ćć„ć¼ćć®čØå®ćÆéå
¬éć§ćććć„ć¼ćäøć®ć¢ć«ć¦ć³
msgid "My Birthday"
msgstr "čŖēę„"
-#: src/view/screens/Feeds.tsx:419
+#: src/view/screens/Feeds.tsx:663
msgid "My Feeds"
msgstr "ćć¤ćć£ć¼ć"
@@ -2433,6 +2546,10 @@ msgstr "ćć©ććÆć¼ććć¼ćæćøć®ć¢ćÆć»ć¹ć失ćććØćÆććć¾
msgid "Never lose access to your followers or data."
msgstr "ćć©ććÆć¼ććć¼ćæćøć®ć¢ćÆć»ć¹ć失ćććØćÆććć¾ććć"
+#: src/components/dialogs/MutedWords.tsx:244
+msgid "Nevermind"
+msgstr ""
+
#: src/view/screens/Lists.tsx:76
msgctxt "action"
msgid "New"
@@ -2454,17 +2571,17 @@ msgstr "ę°ćććć¹ćÆć¼ć"
msgid "New Password"
msgstr "ę°ćććć¹ćÆć¼ć"
-#: src/view/com/feeds/FeedPage.tsx:201
+#: src/view/com/feeds/FeedPage.tsx:126
msgctxt "action"
msgid "New post"
msgstr "ę°ććę稿"
-#: src/view/screens/Feeds.tsx:581
+#: src/view/screens/Feeds.tsx:555
#: src/view/screens/Notifications.tsx:168
#: src/view/screens/Profile.tsx:382
-#: src/view/screens/ProfileFeed.tsx:432
-#: src/view/screens/ProfileList.tsx:195
-#: src/view/screens/ProfileList.tsx:223
+#: src/view/screens/ProfileFeed.tsx:433
+#: src/view/screens/ProfileList.tsx:196
+#: src/view/screens/ProfileList.tsx:224
#: src/view/shell/desktop/LeftNav.tsx:248
msgid "New post"
msgstr "ę°ććę稿"
@@ -2490,7 +2607,7 @@ msgstr "ę°ććé ć«čæäæ”ć蔨示"
msgid "News"
msgstr "ćć„ć¼ć¹"
-#: src/view/com/auth/create/CreateAccount.tsx:161
+#: src/view/com/auth/create/CreateAccount.tsx:172
#: src/view/com/auth/login/ForgotPasswordForm.tsx:182
#: src/view/com/auth/login/ForgotPasswordForm.tsx:192
#: src/view/com/auth/login/LoginForm.tsx:291
@@ -2511,10 +2628,10 @@ msgstr "ꬔćø"
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/PreferencesFollowingFeed.tsx:129
+#: src/view/screens/PreferencesFollowingFeed.tsx:200
+#: src/view/screens/PreferencesFollowingFeed.tsx:235
+#: src/view/screens/PreferencesFollowingFeed.tsx:272
#: src/view/screens/PreferencesThreads.tsx:106
#: src/view/screens/PreferencesThreads.tsx:129
msgid "No"
@@ -2525,7 +2642,7 @@ msgstr "ććć"
msgid "No description"
msgstr "čŖ¬ęćÆććć¾ćć"
-#: src/view/com/profile/ProfileHeader.tsx:169
+#: src/view/com/profile/ProfileHeader.tsx:170
msgid "No longer following {0}"
msgstr "{0}ć®ćć©ćć¼ćč§£é¤ćć¾ćć"
@@ -2538,13 +2655,13 @@ msgstr "ćē„ćććÆććć¾ććļ¼"
msgid "No result"
msgstr "ēµęćÆććć¾ćć"
-#: src/view/screens/Feeds.tsx:524
+#: src/view/screens/Feeds.tsx:495
msgid "No results found for \"{query}\""
msgstr "ć{query}ćć®ę¤ē“¢ēµęćÆććć¾ćć"
#: src/view/com/modals/ListAddRemoveUsers.tsx:127
-#: src/view/screens/Search/Search.tsx:280
-#: src/view/screens/Search/Search.tsx:308
+#: src/view/screens/Search/Search.tsx:281
+#: src/view/screens/Search/Search.tsx:309
msgid "No results found for {query}"
msgstr "ć{query}ćć®ę¤ē“¢ēµęćÆććć¾ćć"
@@ -2574,11 +2691,11 @@ msgstr "ä»ćÆććŖć"
#~ 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:233
+#: src/view/screens/Moderation.tsx:252
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/Navigation.tsx:447
+#: src/Navigation.tsx:450
#: src/view/screens/Notifications.tsx:124
#: src/view/screens/Notifications.tsx:148
#: src/view/shell/bottom-bar/BottomBar.tsx:205
@@ -2612,7 +2729,7 @@ msgstr "å¤ćé ć«čæäæ”ć蔨示"
msgid "Onboarding reset"
msgstr "ćŖć³ćć¼ćć£ć³ć°ć®ćŖć»ćć"
-#: src/view/com/composer/Composer.tsx:375
+#: src/view/com/composer/Composer.tsx:382
msgid "One or more images is missing alt text."
msgstr "1ć¤ććććÆč¤ę°ć®ē»åć«ALTććć¹ććććć¾ććć"
@@ -2629,8 +2746,12 @@ msgstr "ćć£ćØļ¼"
msgid "Open"
msgstr "éććć¦ćć¾ć"
-#: src/view/com/composer/Composer.tsx:470
-#: src/view/com/composer/Composer.tsx:471
+#: src/view/screens/Moderation.tsx:75
+msgid "Open content filtering settings"
+msgstr ""
+
+#: src/view/com/composer/Composer.tsx:477
+#: src/view/com/composer/Composer.tsx:478
msgid "Open emoji picker"
msgstr "ēµµęåćå
„å"
@@ -2638,7 +2759,11 @@ msgstr "ēµµęåćå
„å"
msgid "Open links with in-app browser"
msgstr "ć¢ććŖå
ćć©ć¦ć¶ć¼ć§ćŖć³ćÆćéć"
-#: src/view/com/pager/FeedsTabBarMobile.tsx:87
+#: src/view/screens/Moderation.tsx:92
+msgid "Open muted words settings"
+msgstr ""
+
+#: src/view/com/home/HomeHeaderLayoutMobile.tsx:49
msgid "Open navigation"
msgstr "ććć²ć¼ć·ć§ć³ćéć"
@@ -2674,7 +2799,7 @@ msgstr "ę§ęåÆč½ćŖčØčŖčØå®ćéć"
msgid "Opens device photo gallery"
msgstr "ććć¤ć¹ć®ćć©ćć®ć£ć©ćŖć¼ćéć"
-#: src/view/com/profile/ProfileHeader.tsx:419
+#: src/view/com/profile/ProfileHeader.tsx:420
msgid "Opens editor for profile display name, avatar, background image, and description"
msgstr "ćććć£ć¼ć«ć®č”Øē¤ŗåćć¢ććæć¼ćčęÆē»åćčŖ¬ęęć®ćØćć£ćæćéć"
@@ -2682,11 +2807,11 @@ msgstr "ćććć£ć¼ć«ć®č”Øē¤ŗåćć¢ććæć¼ćčęÆē»åćčŖ¬ęę
msgid "Opens external embeds settings"
msgstr "å¤éØć³ć³ćć³ćć®åćč¾¼ćæć®čØå®ćéć"
-#: src/view/com/profile/ProfileHeader.tsx:574
+#: src/view/com/profile/ProfileHeader.tsx:575
msgid "Opens followers list"
msgstr "ćć©ććÆć¼ć®ćŖć¹ććéćć¾ć"
-#: src/view/com/profile/ProfileHeader.tsx:593
+#: src/view/com/profile/ProfileHeader.tsx:594
msgid "Opens following list"
msgstr "ćć©ćć¼äøć®ćŖć¹ććéćć¾ć"
@@ -2714,7 +2839,8 @@ msgstr "ć¢ćć¬ć¼ć·ć§ć³ć®čØå®ćéć"
msgid "Opens password reset form"
msgstr "ćć¹ćÆć¼ććŖć»ććć®ćć©ć¼ć ćéć"
-#: src/view/screens/Feeds.tsx:357
+#: src/view/com/home/HomeHeaderLayout.web.tsx:60
+#: src/view/screens/Feeds.tsx:356
msgid "Opens screen to edit Saved Feeds"
msgstr "äæåććććć£ć¼ćć®ē·Øéē»é¢ćéć"
@@ -2774,8 +2900,8 @@ msgstr "ćć¼ćøćč¦ć¤ććć¾ćć"
msgid "Page Not Found"
msgstr "ćć¼ćøćč¦ć¤ććć¾ćć"
-#: src/view/com/auth/create/Step1.tsx:210
-#: src/view/com/auth/create/Step1.tsx:220
+#: src/view/com/auth/create/Step1.tsx:214
+#: src/view/com/auth/create/Step1.tsx:224
#: src/view/com/auth/login/LoginForm.tsx:226
#: src/view/com/auth/login/SetNewPasswordForm.tsx:161
#: src/view/com/modals/DeleteAccount.tsx:202
@@ -2811,15 +2937,15 @@ msgid "Pets"
msgstr "ććć"
#: src/view/com/auth/create/Step2.tsx:183
-msgid "Phone number"
-msgstr "é»č©±ēŖå·"
+#~ msgid "Phone number"
+#~ msgstr "é»č©±ēŖå·"
#: src/view/com/modals/SelfLabel.tsx:121
msgid "Pictures meant for adults."
msgstr "ęäŗŗåćć®ē»åć§ćć"
-#: src/view/screens/ProfileFeed.tsx:353
-#: src/view/screens/ProfileList.tsx:580
+#: src/view/screens/ProfileFeed.tsx:354
+#: src/view/screens/ProfileList.tsx:581
msgid "Pin to home"
msgstr "ćć¼ć ć«ćć³ēć"
@@ -2840,14 +2966,18 @@ msgstr "åē»ćåē"
msgid "Plays the GIF"
msgstr "GIFćåē"
-#: src/view/com/auth/create/state.ts:177
+#: src/view/com/auth/create/state.ts:124
msgid "Please choose your handle."
msgstr "ćć³ćć«ććéøć³ćć ććć"
-#: src/view/com/auth/create/state.ts:160
+#: src/view/com/auth/create/state.ts:117
msgid "Please choose your password."
msgstr "ćć¹ćÆć¼ććéøęćć¦ćć ććć"
+#: src/view/com/auth/create/state.ts:131
+msgid "Please complete the verification captcha."
+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 "å¤ę“ććåć«ć”ć¼ć«ć確čŖćć¦ćć ććććććÆćć”ć¼ć«ć¢ćććć¼ććć¼ć«ćčæ½å ććć¦ććéć®äøęēćŖč¦ä»¶ć§ćććć¾ććŖćåé¤ććć¾ćć"
@@ -2857,22 +2987,22 @@ msgid "Please enter a name for your app password. All spaces is not allowed."
msgstr "ć¢ććŖćć¹ćÆć¼ćć«ć¤ććååćå
„åćć¦ćć ććććć¹ć¦ć¹ćć¼ć¹ćØćć¦ćÆććć¾ććć"
#: src/view/com/auth/create/Step2.tsx:206
-msgid "Please enter a phone number that can receive SMS text messages."
-msgstr "SMSć§ććć¹ćć”ćć»ć¼ćøćåćåććé»č©±ēŖå·ćå
„åćć¦ćć ććć"
+#~ msgid "Please enter a phone number that can receive SMS text messages."
+#~ msgstr "SMSć§ććć¹ćć”ćć»ć¼ćøćåćåććé»č©±ēŖå·ćå
„åćć¦ćć ććć"
#: src/view/com/modals/AddAppPasswords.tsx:145
msgid "Please enter a unique name for this App Password or use our randomly generated one."
msgstr "ćć®ć¢ććŖćć¹ćÆć¼ćć«åŗęć®ååćå
„åććććć©ć³ćć ć«ēęćććååć使ēØćć¦ćć ććć"
#: src/view/com/auth/create/state.ts:170
-msgid "Please enter the code you received by SMS."
-msgstr "SMSć§åćåć£ćć³ć¼ććå
„åćć¦ćć ććć"
+#~ msgid "Please enter the code you received by SMS."
+#~ msgstr "SMSć§åćåć£ćć³ć¼ććå
„åćć¦ćć ććć"
#: src/view/com/auth/create/Step2.tsx:282
-msgid "Please enter the verification code sent to {phoneNumberFormatted}."
-msgstr "{phoneNumberFormatted}ć«éć£ćčŖčؼć³ć¼ććå
„åćć¦ćć ććć"
+#~ msgid "Please enter the verification code sent to {phoneNumberFormatted}."
+#~ msgstr "{phoneNumberFormatted}ć«éć£ćčŖčؼć³ć¼ććå
„åćć¦ćć ććć"
-#: src/view/com/auth/create/state.ts:146
+#: src/view/com/auth/create/state.ts:103
msgid "Please enter your email."
msgstr "ć”ć¼ć«ć¢ćć¬ć¹ćå
„åćć¦ćć ććć"
@@ -2894,7 +3024,7 @@ msgstr "ćć®ć³ć³ćć³ćć«åƾććč¦åćčŖ¤ć£ć¦é©ēØććććØę
msgid "Please Verify Your Email"
msgstr "ć”ć¼ć«ć¢ćć¬ć¹ć確čŖćć¦ćć ćć"
-#: src/view/com/composer/Composer.tsx:215
+#: src/view/com/composer/Composer.tsx:222
msgid "Please wait for your link card to finish loading"
msgstr "ćŖć³ćÆć«ć¼ćććć¼ććććć¾ć§ćå¾
ć”ćć ćć"
@@ -2906,13 +3036,13 @@ msgstr "ęæę²»"
msgid "Porn"
msgstr "ćć«ć"
-#: src/view/com/composer/Composer.tsx:350
-#: src/view/com/composer/Composer.tsx:358
+#: src/view/com/composer/Composer.tsx:357
+#: src/view/com/composer/Composer.tsx:365
msgctxt "action"
msgid "Post"
msgstr "ę稿"
-#: src/view/com/post-thread/PostThread.tsx:246
+#: src/view/com/post-thread/PostThread.tsx:303
msgctxt "description"
msgid "Post"
msgstr "ę稿"
@@ -2923,7 +3053,7 @@ msgstr "ę稿"
#~ msgid "Post"
#~ msgstr "ę稿"
-#: src/view/com/post-thread/PostThreadItem.tsx:174
+#: src/view/com/post-thread/PostThreadItem.tsx:175
msgid "Post by {0}"
msgstr "{0}ć«ććę稿"
@@ -2933,11 +3063,11 @@ msgstr "{0}ć«ććę稿"
msgid "Post by @{0}"
msgstr "@{0}ć«ććę稿"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:84
+#: src/view/com/util/forms/PostDropdownBtn.tsx:90
msgid "Post deleted"
msgstr "ę稿ćåé¤"
-#: src/view/com/post-thread/PostThread.tsx:398
+#: src/view/com/post-thread/PostThread.tsx:462
msgid "Post hidden"
msgstr "ę稿ćé蔨示"
@@ -2949,14 +3079,22 @@ msgstr "ę稿ć®čØčŖ"
msgid "Post Languages"
msgstr "ę稿ć®čØčŖ"
-#: src/view/com/post-thread/PostThread.tsx:450
+#: src/view/com/post-thread/PostThread.tsx:514
msgid "Post not found"
msgstr "ę稿ćč¦ć¤ććć¾ćć"
+#: src/components/TagMenu/index.tsx:257
+msgid "posts"
+msgstr ""
+
#: src/view/screens/Profile.tsx:180
msgid "Posts"
msgstr "ę稿"
+#: src/components/dialogs/MutedWords.tsx:77
+msgid "Posts can be muted based on their text, their tags, or both."
+msgstr ""
+
#: src/view/com/posts/FeedErrorMessage.tsx:64
msgid "Posts hidden"
msgstr "é蔨示ć®ę稿"
@@ -2978,7 +3116,7 @@ msgid "Prioritize Your Follows"
msgstr "ććŖćć®ćć©ćć¼ćåŖå
"
#: src/view/screens/Settings/index.tsx:632
-#: src/view/shell/desktop/RightNav.tsx:80
+#: src/view/shell/desktop/RightNav.tsx:72
msgid "Privacy"
msgstr "ćć©ć¤ćć·ć¼"
@@ -3021,11 +3159,11 @@ msgstr "ć¦ć¼ć¶ć¼ćäøę¬ć§ćć„ć¼ćć¾ććÆććććÆćććå
Ž
msgid "Public, shareable lists which can drive feeds."
msgstr "ćć£ć¼ććØćć¦å©ēØć§ćććå
¬éćććå
±ęåÆč½ćŖćŖć¹ćć"
-#: src/view/com/composer/Composer.tsx:335
+#: src/view/com/composer/Composer.tsx:342
msgid "Publish post"
msgstr "ę稿ćå
Ž"
-#: src/view/com/composer/Composer.tsx:335
+#: src/view/com/composer/Composer.tsx:342
msgid "Publish reply"
msgstr "čæäæ”ćå
Ž"
@@ -3063,6 +3201,7 @@ msgstr "ććććć®ćć£ć¼ć"
msgid "Recommended Users"
msgstr "ććććć®ć¦ć¼ć¶ć¼"
+#: src/components/dialogs/MutedWords.tsx:249
#: src/view/com/modals/ListAddRemoveUsers.tsx:264
#: src/view/com/modals/SelfLabel.tsx:83
#: src/view/com/modals/UserAddRemoveLists.tsx:219
@@ -3071,7 +3210,7 @@ msgstr "ććććć®ć¦ć¼ć¶ć¼"
msgid "Remove"
msgstr "åé¤"
-#: src/view/com/feeds/FeedSourceCard.tsx:106
+#: src/view/com/feeds/FeedSourceCard.tsx:108
msgid "Remove {0} from my feeds?"
msgstr "ćć¤ćć£ć¼ććć{0}ćåé¤ćć¾ććļ¼"
@@ -3084,11 +3223,11 @@ msgstr "ć¢ć«ć¦ć³ććåé¤"
msgid "Remove feed"
msgstr "ćć£ć¼ććåé¤"
-#: src/view/com/feeds/FeedSourceCard.tsx:105
-#: src/view/com/feeds/FeedSourceCard.tsx:167
-#: src/view/com/feeds/FeedSourceCard.tsx:172
-#: src/view/com/feeds/FeedSourceCard.tsx:243
-#: src/view/screens/ProfileFeed.tsx:272
+#: src/view/com/feeds/FeedSourceCard.tsx:107
+#: src/view/com/feeds/FeedSourceCard.tsx:169
+#: src/view/com/feeds/FeedSourceCard.tsx:174
+#: src/view/com/feeds/FeedSourceCard.tsx:245
+#: src/view/screens/ProfileFeed.tsx:273
msgid "Remove from my feeds"
msgstr "ćć¤ćć£ć¼ćććåé¤"
@@ -3100,11 +3239,15 @@ msgstr "ć¤ć”ć¼ćøćåé¤"
msgid "Remove image preview"
msgstr "ć¤ć”ć¼ćøćć¬ćć„ć¼ćåé¤"
+#: src/components/dialogs/MutedWords.tsx:294
+msgid "Remove mute word from your list"
+msgstr ""
+
#: src/view/com/modals/Repost.tsx:47
msgid "Remove repost"
msgstr "ćŖćć¹ććåé¤"
-#: src/view/com/feeds/FeedSourceCard.tsx:173
+#: src/view/com/feeds/FeedSourceCard.tsx:175
msgid "Remove this feed from my feeds?"
msgstr "ćć®ćć£ć¼ćććć¤ćć£ć¼ćććåé¤ćć¾ććļ¼"
@@ -3117,8 +3260,8 @@ msgstr "äæåćććć£ć¼ććććć®ćć£ć¼ććåé¤ćć¾ććļ¼
msgid "Removed from list"
msgstr "ćŖć¹ćććåé¤ććć¾ćć"
-#: src/view/com/feeds/FeedSourceCard.tsx:111
-#: src/view/com/feeds/FeedSourceCard.tsx:178
+#: src/view/com/feeds/FeedSourceCard.tsx:113
+#: src/view/com/feeds/FeedSourceCard.tsx:180
msgid "Removed from my feeds"
msgstr "ćć£ć¼ćććåé¤ćć¾ćć"
@@ -3134,16 +3277,16 @@ msgstr "čæäæ”"
msgid "Replies to this thread are disabled"
msgstr "ćć®ć¹ć¬ćććøć®čæäæ”ćÆć§ćć¾ćć"
-#: src/view/com/composer/Composer.tsx:348
+#: src/view/com/composer/Composer.tsx:355
msgctxt "action"
msgid "Reply"
msgstr "čæäæ”"
-#: src/view/screens/PreferencesHomeFeed.tsx:144
+#: src/view/screens/PreferencesFollowingFeed.tsx:144
msgid "Reply Filters"
msgstr "čæäæ”ć®ćć£ć«ćæć¼"
-#: src/view/com/post/Post.tsx:166
+#: src/view/com/post/Post.tsx:167
#: src/view/com/posts/FeedItem.tsx:287
msgctxt "description"
msgid "Reply to <0/>"
@@ -3153,20 +3296,20 @@ msgstr "<0/>ć«čæäæ”"
msgid "Report {collectionName}"
msgstr "{collectionName}ćå ±å"
-#: src/view/com/profile/ProfileHeader.tsx:360
+#: src/view/com/profile/ProfileHeader.tsx:361
msgid "Report Account"
msgstr "ć¢ć«ć¦ć³ććå ±å"
-#: src/view/screens/ProfileFeed.tsx:292
+#: src/view/screens/ProfileFeed.tsx:293
msgid "Report feed"
msgstr "ćć£ć¼ććå ±å"
-#: src/view/screens/ProfileList.tsx:458
+#: src/view/screens/ProfileList.tsx:459
msgid "Report List"
msgstr "ćŖć¹ććå ±å"
#: src/view/com/modals/report/SendReportButton.tsx:37
-#: src/view/com/util/forms/PostDropdownBtn.tsx:210
+#: src/view/com/util/forms/PostDropdownBtn.tsx:255
msgid "Report post"
msgstr "ę稿ćå ±å"
@@ -3211,7 +3354,7 @@ msgstr "<0/>ć«ćććŖćć¹ć"
msgid "reposted your post"
msgstr "ććŖćć®ę稿ćÆćŖćć¹ćććć¾ćć"
-#: src/view/com/post-thread/PostThreadItem.tsx:187
+#: src/view/com/post-thread/PostThreadItem.tsx:188
msgid "Reposts of this post"
msgstr "ćć®ę稿ććŖćć¹ć"
@@ -3221,8 +3364,8 @@ msgid "Request Change"
msgstr "å¤ę“ćč¦ę±"
#: src/view/com/auth/create/Step2.tsx:219
-msgid "Request code"
-msgstr "ć³ć¼ćććŖćÆćØć¹ć"
+#~ msgid "Request code"
+#~ msgstr "ć³ć¼ćććŖćÆćØć¹ć"
#: src/view/com/modals/ChangePassword.tsx:239
#: src/view/com/modals/ChangePassword.tsx:241
@@ -3233,7 +3376,7 @@ msgstr "ć³ć¼ćććŖćÆćØć¹ć"
msgid "Require alt text before posting"
msgstr "ē»åę稿ęć«ALTććć¹ććåæ
é ćØćć"
-#: src/view/com/auth/create/Step1.tsx:149
+#: src/view/com/auth/create/Step1.tsx:153
msgid "Required for this provider"
msgstr "ćć®ćććć¤ćć¼ć«åæ
č¦"
@@ -3285,9 +3428,8 @@ msgstr "ćØć©ć¼ć«ćŖć£ćęå¾ć®ć¢ćÆć·ć§ć³ćććē“ć"
#: src/screens/Onboarding/StepInterests/index.tsx:221
#: src/screens/Onboarding/StepInterests/index.tsx:224
-#: src/view/com/auth/create/CreateAccount.tsx:170
-#: src/view/com/auth/create/CreateAccount.tsx:175
-#: src/view/com/auth/create/Step2.tsx:255
+#: src/view/com/auth/create/CreateAccount.tsx:181
+#: src/view/com/auth/create/CreateAccount.tsx:186
#: src/view/com/auth/login/LoginForm.tsx:268
#: src/view/com/auth/login/LoginForm.tsx:271
#: src/view/com/util/error/ErrorMessage.tsx:55
@@ -3296,16 +3438,16 @@ msgid "Retry"
msgstr "å試č”"
#: src/view/com/auth/create/Step2.tsx:247
-msgid "Retry."
-msgstr "å試č”"
+#~ msgid "Retry."
+#~ msgstr "å試č”"
#: src/view/screens/ProfileList.tsx:898
msgid "Return to previous page"
msgstr "åć®ćć¼ćøć«ę»ć"
#: src/view/shell/desktop/RightNav.tsx:55
-msgid "SANDBOX. Posts and accounts are not permanent."
-msgstr "ćµć³ććććÆć¹ćę稿ćØć¢ć«ć¦ć³ććÆę°øä¹
ēćŖćć®ć§ćÆććć¾ććć"
+#~ msgid "SANDBOX. Posts and accounts are not permanent."
+#~ msgstr "ćµć³ććććÆć¹ćę稿ćØć¢ć«ć¦ć³ććÆę°øä¹
ēćŖćć®ć§ćÆććć¾ććć"
#: src/view/com/lightbox/Lightbox.tsx:132
#: src/view/com/modals/CreateOrEditList.tsx:345
@@ -3318,7 +3460,7 @@ msgstr "äæå"
#: src/view/com/modals/ChangeHandle.tsx:173
#: src/view/com/modals/CreateOrEditList.tsx:337
#: src/view/com/modals/EditProfile.tsx:224
-#: src/view/screens/ProfileFeed.tsx:345
+#: src/view/screens/ProfileFeed.tsx:346
msgid "Save"
msgstr "äæå"
@@ -3358,14 +3500,14 @@ msgstr "ē§å¦"
msgid "Scroll to top"
msgstr "äøēŖäøć¾ć§ć¹ćÆćć¼ć«"
-#: src/Navigation.tsx:437
+#: src/Navigation.tsx:440
#: src/view/com/auth/LoggedOut.tsx:122
#: src/view/com/modals/ListAddRemoveUsers.tsx:75
#: src/view/com/util/forms/SearchInput.tsx:67
#: src/view/com/util/forms/SearchInput.tsx:79
-#: src/view/screens/Search/Search.tsx:418
-#: src/view/screens/Search/Search.tsx:645
-#: src/view/screens/Search/Search.tsx:663
+#: src/view/screens/Search/Search.tsx:419
+#: src/view/screens/Search/Search.tsx:668
+#: src/view/screens/Search/Search.tsx:686
#: src/view/shell/bottom-bar/BottomBar.tsx:159
#: src/view/shell/desktop/LeftNav.tsx:324
#: src/view/shell/desktop/Search.tsx:214
@@ -3375,11 +3517,19 @@ msgstr "äøēŖäøć¾ć§ć¹ćÆćć¼ć«"
msgid "Search"
msgstr "ę¤ē“¢"
-#: src/view/screens/Search/Search.tsx:712
+#: src/view/screens/Search/Search.tsx:735
#: src/view/shell/desktop/Search.tsx:255
msgid "Search for \"{query}\""
msgstr "ć{query}ććę¤ē“¢"
+#: src/components/TagMenu/index.tsx:145
+msgid "Search for all posts by @{authorHandle} with tag {tag}"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:90
+msgid "Search for all posts with tag {tag}"
+msgstr ""
+
#: src/view/screens/Search/Search.tsx:390
#~ msgid "Search for posts and users."
#~ msgstr "ę稿ćØć¦ć¼ć¶ć¼ćę¤ē“¢ćć¾ćć"
@@ -3394,6 +3544,22 @@ msgstr "ć¦ć¼ć¶ć¼ćę¤ē“¢"
msgid "Security Step Required"
msgstr "åæ
č¦ćŖć»ćć„ćŖćć£ć®ęé "
+#: src/components/TagMenu/index.web.tsx:50
+msgid "See {truncatedTag} posts"
+msgstr ""
+
+#: src/components/TagMenu/index.web.tsx:67
+msgid "See {truncatedTag} posts by user"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:128
+msgid "See <0>{tag}0> posts"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:189
+msgid "See <0>{tag}0> posts by this user"
+msgstr ""
+
#: src/view/screens/SavedFeeds.tsx:163
msgid "See this guide"
msgstr "ć¬ć¤ććč¦ć"
@@ -3418,7 +3584,7 @@ msgstr "ę¢åć®ć¢ć«ć¦ć³ćććéøę"
msgid "Select option {i} of {numItems}"
msgstr "{numItems}åäø{i}åē®ć®ćŖćć·ć§ć³ćéøę"
-#: src/view/com/auth/create/Step1.tsx:99
+#: src/view/com/auth/create/Step1.tsx:103
#: src/view/com/auth/login/LoginForm.tsx:150
msgid "Select service"
msgstr "ćµć¼ćć¹ćéøę"
@@ -3435,7 +3601,7 @@ msgstr "ćć¼ćæććć¹ććććµć¼ćć¹ćéøęćć¾ćć"
#~ msgid "Select the types of content that you want to see (or not see), and we'll handle the rest."
#~ msgstr "蔨示ćććļ¼ć¾ććÆč”Øē¤ŗććććŖćļ¼ć³ć³ćć³ćć®ēØ®é”ćéøęćć¦ćć ćććććØćÆē§ćć”ć«ćä»»ććć ććć"
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:90
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:96
msgid "Select topical feeds to follow from the list below"
msgstr "ꬔć®ćŖć¹ććć話é”ć®ćć£ć¼ććéøęćć¦ćć©ćć¼ćć¦ćć ćć"
@@ -3456,8 +3622,8 @@ msgid "Select your interests from the options below"
msgstr "ꬔć®ćŖćć·ć§ć³ććčå³ć®ćććć®ćéøęćć¦ćć ćć"
#: src/view/com/auth/create/Step2.tsx:155
-msgid "Select your phone's country"
-msgstr "é»č©±ēŖå·ćē»é²ććć¦ććå½ćéøę"
+#~ msgid "Select your phone's country"
+#~ msgstr "é»č©±ēŖå·ćē»é²ććć¦ććå½ćéøę"
#: src/view/screens/LanguageSettings.tsx:190
msgid "Select your preferred language for translations in your feed."
@@ -3540,19 +3706,19 @@ msgstr "ćć¼ćÆćć¼ććčęććć®ć«čØå®ćć¾ć"
msgid "Set new password"
msgstr "ę°ćććć¹ćÆć¼ććčØå®"
-#: src/view/com/auth/create/Step1.tsx:221
+#: src/view/com/auth/create/Step1.tsx:225
msgid "Set password"
msgstr "ćć¹ćÆć¼ććčØå®"
-#: src/view/screens/PreferencesHomeFeed.tsx:225
+#: src/view/screens/PreferencesFollowingFeed.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
+#: src/view/screens/PreferencesFollowingFeed.tsx:122
msgid "Set this setting to \"No\" to hide all replies from your feed."
msgstr "ćć£ć¼ćå
ć®čæäæ”ććć¹ć¦é蔨示ć«ććć«ćÆććć®čØå®ććććććć«ćć¾ćć"
-#: src/view/screens/PreferencesHomeFeed.tsx:191
+#: src/view/screens/PreferencesFollowingFeed.tsx:191
msgid "Set this setting to \"No\" to hide all reposts from your feed."
msgstr "ćć£ć¼ćå
ć®ćŖćć¹ćććć¹ć¦é蔨示ć«ććć«ćÆććć®čØå®ććććććć«ćć¾ćć"
@@ -3561,8 +3727,12 @@ msgid "Set this setting to \"Yes\" to show replies in a threaded view. This is a
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 "äæåććććć£ć¼ćććę稿ćę½åŗćć¦Followingćć£ć¼ćć«č”Øē¤ŗććć«ćÆććć®čØå®ćććÆććć«ćć¾ćććććÆå®éØēćŖę©č½ć§ćć"
+#~ msgid "Set this setting to \"Yes\" to show samples of your saved feeds in your following feed. This is an experimental feature."
+#~ msgstr "äæåććććć£ć¼ćććę稿ćę½åŗćć¦Followingćć£ć¼ćć«č”Øē¤ŗććć«ćÆććć®čØå®ćććÆććć«ćć¾ćććććÆå®éØēćŖę©č½ć§ćć"
+
+#: src/view/screens/PreferencesFollowingFeed.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/screens/Onboarding/Layout.tsx:50
msgid "Set up your account"
@@ -3584,7 +3754,7 @@ msgstr "ćć¹ćÆć¼ćććŖć»ććććććć®ćć¹ćć£ć³ć°ććć
#~ msgid "Sets hosting provider to {label}"
#~ msgstr "ćć¹ćć£ć³ć°ćććć¤ćć¼ć{label}ć«čØå®"
-#: src/view/com/auth/create/Step1.tsx:100
+#: src/view/com/auth/create/Step1.tsx:104
#: src/view/com/auth/login/LoginForm.tsx:151
msgid "Sets server for the Bluesky client"
msgstr "Blueskyć®ćÆć©ć¤ć¢ć³ćć®ćµć¼ćć¼ćčØå®"
@@ -3606,13 +3776,13 @@ msgctxt "action"
msgid "Share"
msgstr "å
±ę"
-#: src/view/com/profile/ProfileHeader.tsx:294
-#: src/view/com/util/forms/PostDropdownBtn.tsx:153
-#: src/view/screens/ProfileList.tsx:417
+#: src/view/com/profile/ProfileHeader.tsx:295
+#: src/view/com/util/forms/PostDropdownBtn.tsx:184
+#: src/view/screens/ProfileList.tsx:418
msgid "Share"
msgstr "å
±ę"
-#: src/view/screens/ProfileFeed.tsx:304
+#: src/view/screens/ProfileFeed.tsx:305
msgid "Share feed"
msgstr "ćć£ć¼ććå
±ę"
@@ -3624,7 +3794,7 @@ msgstr "ćć£ć¼ććå
±ę"
msgid "Show"
msgstr "蔨示"
-#: src/view/screens/PreferencesHomeFeed.tsx:68
+#: src/view/screens/PreferencesFollowingFeed.tsx:68
msgid "Show all replies"
msgstr "ćć¹ć¦ć®čæäæ”ć蔨示"
@@ -3636,21 +3806,21 @@ msgstr "ćØć«ćć蔨示"
msgid "Show embeds from {0}"
msgstr "{0}ć«ććåćč¾¼ćæć蔨示"
-#: src/view/com/profile/ProfileHeader.tsx:458
+#: src/view/com/profile/ProfileHeader.tsx:459
msgid "Show follows similar to {0}"
msgstr "{0}ć«ä¼¼ćććććć®ćć©ćć¼åč£ć蔨示"
-#: src/view/com/post-thread/PostThreadItem.tsx:539
-#: src/view/com/post/Post.tsx:197
+#: src/view/com/post-thread/PostThreadItem.tsx:538
+#: src/view/com/post/Post.tsx:198
#: src/view/com/posts/FeedItem.tsx:363
msgid "Show More"
msgstr "ććć«č”Øē¤ŗ"
-#: src/view/screens/PreferencesHomeFeed.tsx:258
+#: src/view/screens/PreferencesFollowingFeed.tsx:258
msgid "Show Posts from My Feeds"
msgstr "ćć¤ćć£ć¼ćććć®ę稿ć蔨示"
-#: src/view/screens/PreferencesHomeFeed.tsx:222
+#: src/view/screens/PreferencesFollowingFeed.tsx:222
msgid "Show Quote Posts"
msgstr "å¼ēØć蔨示"
@@ -3666,7 +3836,7 @@ msgstr "Followingćć£ć¼ćć§å¼ēØć蔨示"
msgid "Show re-posts in Following feed"
msgstr "Followingćć£ć¼ćć§ćŖćć¹ćć蔨示"
-#: src/view/screens/PreferencesHomeFeed.tsx:119
+#: src/view/screens/PreferencesFollowingFeed.tsx:119
msgid "Show Replies"
msgstr "čæäæ”ć蔨示"
@@ -3682,11 +3852,11 @@ msgstr "Followingćć£ć¼ćć§čæäæ”ć蔨示"
msgid "Show replies in Following feed"
msgstr "Followingćć£ć¼ćć§čæäæ”ć蔨示"
-#: src/view/screens/PreferencesHomeFeed.tsx:70
+#: src/view/screens/PreferencesFollowingFeed.tsx:70
msgid "Show replies with at least {value} {0}"
msgstr "{value}å仄äøć®{0}ćć¤ććčæäæ”ć蔨示"
-#: src/view/screens/PreferencesHomeFeed.tsx:188
+#: src/view/screens/PreferencesFollowingFeed.tsx:188
msgid "Show Reposts"
msgstr "ćŖćć¹ćć蔨示"
@@ -3703,18 +3873,18 @@ msgstr "ć³ć³ćć³ćć蔨示"
msgid "Show users"
msgstr "ć¦ć¼ć¶ć¼ć蔨示"
-#: src/view/com/profile/ProfileHeader.tsx:461
+#: src/view/com/profile/ProfileHeader.tsx:462
msgid "Shows a list of users similar to this user."
msgstr "ćć®ć¦ć¼ć¶ć¼ć«ä¼¼ćć¦ć¼ć¶ć¼ć®ćŖć¹ćć蔨示ćć¾ćć"
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:124
-#: src/view/com/profile/ProfileHeader.tsx:505
+#: src/view/com/profile/ProfileHeader.tsx:506
msgid "Shows posts from {0} in your feed"
msgstr "ćć¤ćć£ć¼ćå
ć®{0}ććć®ę稿ć蔨示ćć¾ć"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:70
#: src/view/com/auth/login/Login.tsx:98
-#: src/view/com/auth/SplashScreen.tsx:54
+#: src/view/com/auth/SplashScreen.tsx:79
#: src/view/shell/bottom-bar/BottomBar.tsx:285
#: src/view/shell/bottom-bar/BottomBar.tsx:286
#: src/view/shell/bottom-bar/BottomBar.tsx:288
@@ -3727,8 +3897,8 @@ 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
+#: src/view/com/auth/SplashScreen.tsx:82
+#: src/view/com/auth/SplashScreen.web.tsx:91
msgid "Sign In"
msgstr "ćµć¤ć³ć¤ć³"
@@ -3795,8 +3965,8 @@ msgid "Skip this flow"
msgstr "ćć®ęé ćć¹ććććć"
#: src/view/com/auth/create/Step2.tsx:82
-msgid "SMS verification"
-msgstr "SMSčŖčؼ"
+#~ msgid "SMS verification"
+#~ msgstr "SMSčŖčؼ"
#: src/screens/Onboarding/index.tsx:40
msgid "Software Dev"
@@ -3810,7 +3980,7 @@ msgstr "ć½ććć¦ć§ć¢éēŗ"
msgid "Something went wrong. Check your email and try again."
msgstr "ćŖćććć®åé”ćēŗēćć¾ćććć”ć¼ć«ć¢ćć¬ć¹ć確čŖććććäøåŗ¦ć試ććć ććć"
-#: src/App.native.tsx:61
+#: src/App.native.tsx:63
msgid "Sorry! Your session expired. Please log in again."
msgstr "ē³ć訳ććć¾ććļ¼ć»ćć·ć§ć³ć®ęå¹ęéćåćć¾ćććććäøåŗ¦ćć°ć¤ć³ćć¦ćć ććć"
@@ -3859,7 +4029,7 @@ msgstr "ć¹ćć¼ćŖć¼ćććÆ"
msgid "Submit"
msgstr "éäæ”"
-#: src/view/screens/ProfileList.tsx:607
+#: src/view/screens/ProfileList.tsx:608
msgid "Subscribe"
msgstr "ē»é²"
@@ -3868,7 +4038,7 @@ msgstr "ē»é²"
msgid "Subscribe to the {0} feed"
msgstr "ć{0}ććć£ć¼ććē»é²"
-#: src/view/screens/ProfileList.tsx:603
+#: src/view/screens/ProfileList.tsx:604
msgid "Subscribe to this list"
msgstr "ćć®ćŖć¹ćć«ē»é²"
@@ -3876,7 +4046,7 @@ msgstr "ćć®ćŖć¹ćć«ē»é²"
#~ msgid "Subscribed"
#~ msgstr "ē»é²ęøćæ"
-#: src/view/screens/Search/Search.tsx:373
+#: src/view/screens/Search/Search.tsx:374
msgid "Suggested Follows"
msgstr "ććććć®ćć©ćć¼"
@@ -3920,6 +4090,14 @@ msgstr "ć·ć¹ćć "
msgid "System log"
msgstr "ć·ć¹ćć ćć°"
+#: src/components/dialogs/MutedWords.tsx:288
+msgid "tag"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:74
+msgid "Tag menu: {tag}"
+msgstr ""
+
#: src/view/com/modals/crop-image/CropImage.web.tsx:112
msgid "Tall"
msgstr "ćć¼ć«"
@@ -3932,7 +4110,7 @@ msgstr "ćæćććć¦å
Øä½ć蔨示"
msgid "Tech"
msgstr "ććÆćććøć¼"
-#: src/view/shell/desktop/RightNav.tsx:89
+#: src/view/shell/desktop/RightNav.tsx:81
msgid "Terms"
msgstr "ę”ä»¶"
@@ -3943,12 +4121,20 @@ msgstr "ę”ä»¶"
msgid "Terms of Service"
msgstr "å©ēØč¦ē“"
+#: src/components/dialogs/MutedWords.tsx:288
+msgid "text"
+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:262
+#: src/view/com/auth/create/CreateAccount.tsx:94
+msgid "That handle is already taken."
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:263
msgid "The account will be able to interact with you after unblocking."
msgstr "ćć®ć¢ć«ć¦ć³ććÆćććććÆč§£é¤å¾ć«ććŖććØććåćććććØćć§ćć¾ćć"
@@ -3964,7 +4150,7 @@ msgstr "čä½ęØ©ććŖć·ć¼ćÆ<0/>ć«ē§»åćć¾ćć"
msgid "The following steps will help customize your Bluesky experience."
msgstr "ꬔć®ęé ć§ććŖćć®Blueskyć§ć®ä½éØćć«ć¹ćæćć¤ćŗć§ćć¾ćć"
-#: src/view/com/post-thread/PostThread.tsx:453
+#: src/view/com/post-thread/PostThread.tsx:517
msgid "The post may have been deleted."
msgstr "ę稿ćåé¤ćććåÆč½ę§ćććć¾ćć"
@@ -3988,7 +4174,7 @@ msgstr "ćµć¼ćć¹č¦ē“ćÆē§»åćć¾ćć"
msgid "There are many feeds to try:"
msgstr "試ćććć£ć¼ććÆććććććć¾ćļ¼"
-#: src/view/screens/ProfileFeed.tsx:549
+#: src/view/screens/ProfileFeed.tsx:550
msgid "There was an an issue contacting the server, please check your internet connection and try again."
msgstr "ćµć¼ćć¼ćøć®åćåććäøć«åé”ćēŗēćć¾ćććć¤ć³ćæć¼ććććøć®ę„ē¶ć確čŖć®äøćććäøåŗ¦ć試ććć ććć"
@@ -3996,12 +4182,12 @@ msgstr "ćµć¼ćć¼ćøć®åćåććäøć«åé”ćēŗēćć¾ćććć¤
msgid "There was an an issue removing this feed. Please check your internet connection and try again."
msgstr "ćć£ć¼ćć®åé¤äøć«åé”ćēŗēćć¾ćććć¤ć³ćæć¼ććććøć®ę„ē¶ć確čŖć®äøćććäøåŗ¦ć試ććć ććć"
-#: src/view/screens/ProfileFeed.tsx:209
+#: src/view/screens/ProfileFeed.tsx:210
msgid "There was an an issue updating your feeds, please check your internet connection and try again."
msgstr "ćć£ć¼ćć®ę“ę°äøć«åé”ćēŗēćć¾ćććć¤ć³ćæć¼ććććøć®ę„ē¶ć確čŖć®äøćććäøåŗ¦ć試ććć ććć"
-#: src/view/screens/ProfileFeed.tsx:236
-#: src/view/screens/ProfileList.tsx:266
+#: src/view/screens/ProfileFeed.tsx:237
+#: src/view/screens/ProfileList.tsx:267
#: src/view/screens/SavedFeeds.tsx:209
#: src/view/screens/SavedFeeds.tsx:231
#: src/view/screens/SavedFeeds.tsx:252
@@ -4010,9 +4196,9 @@ msgstr "ćµć¼ćć¼ćøć®åćåććäøć«åé”ćēŗēćć¾ćć"
#: src/view/com/auth/onboarding/RecommendedFeedsItem.tsx:57
#: src/view/com/auth/onboarding/RecommendedFeedsItem.tsx:66
-#: src/view/com/feeds/FeedSourceCard.tsx:113
-#: src/view/com/feeds/FeedSourceCard.tsx:127
-#: src/view/com/feeds/FeedSourceCard.tsx:181
+#: src/view/com/feeds/FeedSourceCard.tsx:115
+#: src/view/com/feeds/FeedSourceCard.tsx:129
+#: src/view/com/feeds/FeedSourceCard.tsx:183
msgid "There was an issue contacting your server"
msgstr "ćµć¼ćć¼ćøć®åćåććäøć«åé”ćēŗēćć¾ćć"
@@ -4044,19 +4230,19 @@ msgstr "ć¢ććŖćć¹ćÆć¼ćć®åå¾äøć«åé”ćēŗēćć¾ćć"
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:93
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:105
-#: src/view/com/profile/ProfileHeader.tsx:156
-#: src/view/com/profile/ProfileHeader.tsx:177
-#: src/view/com/profile/ProfileHeader.tsx:216
-#: src/view/com/profile/ProfileHeader.tsx:229
-#: src/view/com/profile/ProfileHeader.tsx:249
-#: src/view/com/profile/ProfileHeader.tsx:271
+#: src/view/com/profile/ProfileHeader.tsx:157
+#: src/view/com/profile/ProfileHeader.tsx:178
+#: src/view/com/profile/ProfileHeader.tsx:217
+#: src/view/com/profile/ProfileHeader.tsx:230
+#: src/view/com/profile/ProfileHeader.tsx:250
+#: src/view/com/profile/ProfileHeader.tsx:272
msgid "There was an issue! {0}"
msgstr "åé”ćēŗēćć¾ććļ¼{0}"
-#: src/view/screens/ProfileList.tsx:287
-#: src/view/screens/ProfileList.tsx:306
-#: src/view/screens/ProfileList.tsx:328
-#: src/view/screens/ProfileList.tsx:347
+#: src/view/screens/ProfileList.tsx:288
+#: src/view/screens/ProfileList.tsx:307
+#: src/view/screens/ProfileList.tsx:329
+#: src/view/screens/ProfileList.tsx:348
msgid "There was an issue. Please check your internet connection and try again."
msgstr "åé”ćēŗēćć¾ćććć¤ć³ćæć¼ććććøć®ę„ē¶ć確čŖć®äøćććäøåŗ¦ć試ććć ććć"
@@ -4069,8 +4255,8 @@ msgid "There's been a rush of new users to Bluesky! We'll activate your account
msgstr "Blueskyć«ę°č¦ć¦ć¼ć¶ć¼ć殺å°ćć¦ćć¾ćļ¼ć§ććć ćę©ćć¢ć«ć¦ć³ććęå¹ć«ć§ććććåŖćć¾ćć"
#: src/view/com/auth/create/Step2.tsx:55
-msgid "There's something wrong with this number. Please choose your country and enter your full phone number!"
-msgstr "ćć®é»č©±ēŖå·ćÆę£ććććć¾ćććē»é²ććć¦ććå½ćéøęććé»č©±ēŖå·ćēē„ććć«å
„åćć¦ćć ććļ¼"
+#~ msgid "There's something wrong with this number. Please choose your country and enter your full phone number!"
+#~ msgstr "ćć®é»č©±ēŖå·ćÆę£ććććć¾ćććē»é²ććć¦ććå½ćéøęććé»č©±ēŖå·ćēē„ććć«å
„åćć¦ćć ććļ¼"
#: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:138
msgid "These are popular accounts you might like:"
@@ -4113,8 +4299,8 @@ msgid "This feed is currently receiving high traffic and is temporarily unavaila
msgstr "ē¾åØćć®ćć£ć¼ćć«ćÆć¢ćÆć»ć¹ćéäøćć¦ćććäøęēć«ćå©ēØććć ćć¾ćććęéćććć¦ććäøåŗ¦ć試ććć ććć"
#: src/view/screens/Profile.tsx:420
-#: src/view/screens/ProfileFeed.tsx:475
-#: src/view/screens/ProfileList.tsx:660
+#: src/view/screens/ProfileFeed.tsx:476
+#: src/view/screens/ProfileList.tsx:661
msgid "This feed is empty!"
msgstr "ćć®ćć£ć¼ććÆē©ŗć§ćļ¼"
@@ -4146,7 +4332,7 @@ msgstr "ćć®ćŖć¹ććÆē©ŗć§ćļ¼"
msgid "This name is already in use"
msgstr "ćć®ååćÆćć§ć«ä½æēØäøć§ć"
-#: src/view/com/post-thread/PostThreadItem.tsx:122
+#: src/view/com/post-thread/PostThreadItem.tsx:125
msgid "This post has been deleted."
msgstr "ćć®ę稿ćÆåé¤ććć¾ććć"
@@ -4170,7 +4356,11 @@ msgstr "ćć®ć¦ć¼ć¶ć¼ćÆćććŖćććć„ć¼ććć<0/>ćŖć¹ćć«
msgid "This warning is only available for posts with media attached."
msgstr "ćć®č¦åćÆćć”ćć£ć¢ćę·»ä»ććć¦ććę稿ć«ć®ćæä½æēØć§ćć¾ćć"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:192
+#: src/components/dialogs/MutedWords.tsx:236
+msgid "This will delete {0} from your muted words. You can always add it back later."
+msgstr ""
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:237
msgid "This will hide this post from your feeds."
msgstr "ćć®ę稿ćććŖćć®ćć£ć¼ćć«ććć¦é蔨示ć«ćć¾ćć"
@@ -4183,10 +4373,14 @@ msgstr "ć¹ć¬ććć®čØå®"
msgid "Threaded Mode"
msgstr "ć¹ć¬ććć¢ć¼ć"
-#: src/Navigation.tsx:252
+#: src/Navigation.tsx:255
msgid "Threads Preferences"
msgstr "ć¹ć¬ććć®čØå®"
+#: src/components/dialogs/MutedWords.tsx:95
+msgid "Toggle between muted word options."
+msgstr ""
+
#: src/view/com/util/forms/DropdownButton.tsx:246
msgid "Toggle dropdown"
msgstr "ćććććć¦ć³ććć°ć«"
@@ -4195,9 +4389,9 @@ msgstr "ćććććć¦ć³ććć°ć«"
msgid "Transformations"
msgstr "å¤ę"
-#: src/view/com/post-thread/PostThreadItem.tsx:686
-#: src/view/com/post-thread/PostThreadItem.tsx:688
-#: src/view/com/util/forms/PostDropdownBtn.tsx:125
+#: src/view/com/post-thread/PostThreadItem.tsx:685
+#: src/view/com/post-thread/PostThreadItem.tsx:687
+#: src/view/com/util/forms/PostDropdownBtn.tsx:156
msgid "Translate"
msgstr "翻訳"
@@ -4210,15 +4404,15 @@ msgstr "å試č”"
#~ msgid "Try again"
#~ msgstr "å試č”"
-#: src/view/screens/ProfileList.tsx:505
+#: src/view/screens/ProfileList.tsx:506
msgid "Un-block list"
msgstr "ćŖć¹ćć§ć®ććććÆćč§£é¤"
-#: src/view/screens/ProfileList.tsx:490
+#: src/view/screens/ProfileList.tsx:491
msgid "Un-mute list"
msgstr "ćŖć¹ćć§ć®ćć„ć¼ććč§£é¤"
-#: src/view/com/auth/create/CreateAccount.tsx:66
+#: src/view/com/auth/create/CreateAccount.tsx:58
#: src/view/com/auth/login/ForgotPasswordForm.tsx:87
#: src/view/com/auth/login/Login.tsx:76
#: src/view/com/auth/login/LoginForm.tsx:118
@@ -4226,18 +4420,18 @@ msgstr "ćŖć¹ćć§ć®ćć„ć¼ććč§£é¤"
msgid "Unable to contact your service. Please check your Internet connection."
msgstr "ććŖćć®ćµć¼ćć¹ć«ę„ē¶ć§ćć¾ćććć¤ć³ćæć¼ćććć®ę„ē¶ć確čŖćć¦ćć ććć"
-#: src/view/com/profile/ProfileHeader.tsx:432
-#: src/view/screens/ProfileList.tsx:589
+#: src/view/com/profile/ProfileHeader.tsx:433
+#: src/view/screens/ProfileList.tsx:590
msgid "Unblock"
msgstr "ććććÆćč§£é¤"
-#: src/view/com/profile/ProfileHeader.tsx:435
+#: src/view/com/profile/ProfileHeader.tsx:436
msgctxt "action"
msgid "Unblock"
msgstr "ććććÆćč§£é¤"
-#: src/view/com/profile/ProfileHeader.tsx:260
-#: src/view/com/profile/ProfileHeader.tsx:344
+#: src/view/com/profile/ProfileHeader.tsx:261
+#: src/view/com/profile/ProfileHeader.tsx:345
msgid "Unblock Account"
msgstr "ć¢ć«ć¦ć³ćć®ććććÆćč§£é¤"
@@ -4253,11 +4447,11 @@ msgctxt "action"
msgid "Unfollow"
msgstr "ćć©ćć¼ćććć"
-#: src/view/com/profile/ProfileHeader.tsx:484
+#: src/view/com/profile/ProfileHeader.tsx:485
msgid "Unfollow {0}"
msgstr "{0}ć®ćć©ćć¼ćč§£é¤"
-#: src/view/com/auth/create/state.ts:300
+#: src/view/com/auth/create/state.ts:262
msgid "Unfortunately, you do not meet the requirements to create an account."
msgstr "ę®åæµćŖćććć¢ć«ć¦ć³ććä½ęććććć®č¦ä»¶ćęŗććć¦ćć¾ććć"
@@ -4266,28 +4460,37 @@ msgstr "ę®åæµćŖćććć¢ć«ć¦ć³ććä½ęććććć®č¦ä»¶ćęŗć
msgid "Unlike"
msgstr "ććććå¤ć"
-#: src/view/screens/ProfileList.tsx:596
+#: src/components/TagMenu/index.tsx:253
+#: src/view/screens/ProfileList.tsx:597
msgid "Unmute"
msgstr "ćć„ć¼ććč§£é¤"
-#: src/view/com/profile/ProfileHeader.tsx:325
+#: src/components/TagMenu/index.web.tsx:90
+msgid "Unmute {truncatedTag}"
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:326
msgid "Unmute Account"
msgstr "ć¢ć«ć¦ć³ćć®ćć„ć¼ććč§£é¤"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:171
+#: src/components/TagMenu/index.tsx:210
+msgid "Unmute all {tag} posts"
+msgstr ""
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:202
msgid "Unmute thread"
msgstr "ć¹ć¬ććć®ćć„ć¼ććč§£é¤"
-#: src/view/screens/ProfileFeed.tsx:353
-#: src/view/screens/ProfileList.tsx:580
+#: src/view/screens/ProfileFeed.tsx:354
+#: src/view/screens/ProfileList.tsx:581
msgid "Unpin"
msgstr "ćć³ēććč§£é¤"
-#: src/view/screens/ProfileList.tsx:473
+#: src/view/screens/ProfileList.tsx:474
msgid "Unpin moderation list"
msgstr "ć¢ćć¬ć¼ć·ć§ć³ćŖć¹ćć®ćć³ēććč§£é¤"
-#: src/view/screens/ProfileFeed.tsx:345
+#: src/view/screens/ProfileFeed.tsx:346
msgid "Unsave"
msgstr "äæåćč§£é¤"
@@ -4349,11 +4552,11 @@ msgstr "ćŖć¹ćć«ćć£ć¦ććććÆäøć®ć¦ć¼ć¶ć¼"
msgid "User Blocks You"
msgstr "ććŖććććććÆćć¦ććć¦ć¼ć¶ć¼"
-#: src/view/com/auth/create/Step3.tsx:41
+#: src/view/com/auth/create/Step2.tsx:79
msgid "User handle"
msgstr "ć¦ć¼ć¶ć¼ćć³ćć«"
-#: src/view/com/lists/ListCard.tsx:84
+#: src/view/com/lists/ListCard.tsx:85
#: src/view/com/modals/UserAddRemoveLists.tsx:198
msgid "User list by {0}"
msgstr "<0/>ć®ä½ęććć¦ć¼ć¶ć¼ćŖć¹ć"
@@ -4362,7 +4565,7 @@ msgstr "<0/>ć®ä½ęććć¦ć¼ć¶ć¼ćŖć¹ć"
msgid "User list by <0/>"
msgstr "<0/>ć®ä½ęććć¦ć¼ć¶ć¼ćŖć¹ć"
-#: src/view/com/lists/ListCard.tsx:82
+#: src/view/com/lists/ListCard.tsx:83
#: src/view/com/modals/UserAddRemoveLists.tsx:196
#: src/view/screens/ProfileList.tsx:760
msgid "User list by you"
@@ -4398,8 +4601,8 @@ msgid "Users in \"{0}\""
msgstr "{0}ć®ć¦ć¼ć¶ć¼"
#: src/view/com/auth/create/Step2.tsx:243
-msgid "Verification code"
-msgstr "čŖčؼć³ć¼ć"
+#~ msgid "Verification code"
+#~ msgstr "čŖčؼć³ć¼ć"
#: src/view/screens/Settings/index.tsx:910
msgid "Verify email"
@@ -4426,7 +4629,7 @@ msgstr "ć”ć¼ć«ć¢ćć¬ć¹ć確čŖ"
msgid "Video Games"
msgstr "ćććŖć²ć¼ć "
-#: src/view/com/profile/ProfileHeader.tsx:661
+#: src/view/com/profile/ProfileHeader.tsx:662
msgid "View {0}'s avatar"
msgstr "{0}ć®ć¢ććæć¼ć蔨示"
@@ -4479,6 +4682,10 @@ msgstr "ććŖćć®ćć©ćć¼äøć®ć¦ć¼ć¶ć¼ć®ę稿ćčŖćæēµććć¾
#~ msgid "We recommend \"For You\" by Skygaze:"
#~ msgstr "Skygazeć«ćććFor Youććć£ć¼ććććććļ¼"
+#: src/components/dialogs/MutedWords.tsx:161
+msgid "We recommend avoiding common words that appear in many posts, since it can result in no posts being shown."
+msgstr ""
+
#: src/screens/Onboarding/StepAlgoFeeds/index.tsx:124
msgid "We recommend our \"Discover\" feed:"
msgstr "ęć
ć®ćDiscoverććć£ć¼ććććććļ¼"
@@ -4499,15 +4706,19 @@ msgstr "ē§ćć”ćÆććŖćć®ē³ćē«ć¦ćčæ
éć«čŖæę»ćć¾ćć"
msgid "We'll use this to help customize your experience."
msgstr "ćććÆććŖćć®ä½éØćć«ć¹ćæćć¤ćŗććććć«ä½æēØććć¾ćć"
-#: src/view/com/auth/create/CreateAccount.tsx:123
+#: src/view/com/auth/create/CreateAccount.tsx:134
msgid "We're so excited to have you join us!"
msgstr "ē§ćć”ćÆććŖććåå ćć¦ćććććØććØć¦ć愽ććæć«ćć¦ćć¾ćļ¼"
-#: src/view/screens/ProfileList.tsx:85
+#: src/view/screens/ProfileList.tsx:86
msgid "We're sorry, but we were unable to resolve this list. If this persists, please contact the list creator, @{handleOrDid}."
msgstr "大å¤ē³ć訳ććć¾ćććććć®ćŖć¹ćć解決ć§ćć¾ććć§ćććććć§ććć®åé”ć解決ććŖćå “åćÆćä½ęč
ć®@{handleOrDid}ć¾ć§ćåćåćććć ććć"
-#: src/view/screens/Search/Search.tsx:253
+#: src/components/dialogs/MutedWords.tsx:182
+msgid "We're sorry, but we weren't able to load your muted words at this time. Please try again."
+msgstr ""
+
+#: src/view/screens/Search/Search.tsx:254
msgid "We're sorry, but your search could not be completed. Please try again in a few minutes."
msgstr "大å¤ē³ć訳ććć¾ććććę¤ē“¢ćå®äŗć§ćć¾ććć§ćććę°åå¾ć«å試č”ćć¦ćć ććć"
@@ -4527,8 +4738,8 @@ msgstr "ä½ć«čå³ćććć¾ććļ¼"
msgid "What is the issue with this {collectionName}?"
msgstr "ćć®{collectionName}ć®åé”ćÆä½ć§ććļ¼"
-#: src/view/com/auth/SplashScreen.tsx:34
-#: src/view/com/composer/Composer.tsx:279
+#: src/view/com/auth/SplashScreen.tsx:59
+#: src/view/com/composer/Composer.tsx:286
msgid "What's up?"
msgstr "ęčæć©ćļ¼"
@@ -4549,11 +4760,11 @@ msgstr "čæäæ”ć§ććć¦ć¼ć¶ć¼"
msgid "Wide"
msgstr "ćÆć¤ć"
-#: src/view/com/composer/Composer.tsx:415
+#: src/view/com/composer/Composer.tsx:422
msgid "Write post"
msgstr "ę稿ćęøć"
-#: src/view/com/composer/Composer.tsx:278
+#: src/view/com/composer/Composer.tsx:285
#: src/view/com/composer/Prompt.tsx:33
msgid "Write your reply"
msgstr "čæäæ”ćęøć"
@@ -4563,14 +4774,14 @@ msgid "Writers"
msgstr "ć©ć¤ćæć¼"
#: src/view/com/auth/create/Step2.tsx:263
-msgid "XXXXXX"
-msgstr "XXXXXX"
+#~ msgid "XXXXXX"
+#~ msgstr "XXXXXX"
#: src/view/com/composer/select-language/SuggestedLanguage.tsx:77
-#: 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/PreferencesFollowingFeed.tsx:129
+#: src/view/screens/PreferencesFollowingFeed.tsx:201
+#: src/view/screens/PreferencesFollowingFeed.tsx:236
+#: src/view/screens/PreferencesFollowingFeed.tsx:271
#: src/view/screens/PreferencesThreads.tsx:106
#: src/view/screens/PreferencesThreads.tsx:129
msgid "Yes"
@@ -4614,7 +4825,7 @@ msgstr "ć¾ć ęå¾
ć³ć¼ććććć¾ććļ¼Blueskyććććć°ćć
msgid "You don't have any pinned feeds."
msgstr "ćć³ēćććććć£ć¼ććććć¾ććć"
-#: src/view/screens/Feeds.tsx:451
+#: src/view/screens/Feeds.tsx:452
msgid "You don't have any saved feeds!"
msgstr "äæåććććć£ć¼ććććć¾ććļ¼"
@@ -4622,7 +4833,7 @@ msgstr "äæåććććć£ć¼ććććć¾ććļ¼"
msgid "You don't have any saved feeds."
msgstr "äæåććććć£ć¼ććććć¾ććć"
-#: src/view/com/post-thread/PostThread.tsx:401
+#: src/view/com/post-thread/PostThread.tsx:465
msgid "You have blocked the author or you have been blocked by the author."
msgstr "ććŖććę稿č
ćććććÆćć¦ććććć¾ććÆę稿č
ć«ćć£ć¦ććŖććÆććććÆććć¦ćć¾ćć"
@@ -4662,6 +4873,10 @@ msgstr "ć¢ććŖćć¹ćÆć¼ććÆć¾ć ä½ęććć¦ćć¾ćććäøć®ć
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/components/dialogs/MutedWords.tsx:202
+msgid "You haven't muted any words or tags yet"
+msgstr ""
+
#: src/view/com/modals/ContentFilteringSettings.tsx:175
msgid "You must be 18 or older to enable adult content."
msgstr "ęäŗŗåćć³ć³ćć³ććęå¹ć«ććć«ćÆć18ę³ä»„äøć§ććåæ
č¦ćććć¾ćć"
@@ -4670,11 +4885,11 @@ msgstr "ęäŗŗåćć³ć³ćć³ććęå¹ć«ććć«ćÆć18ę³ä»„äøć§ć
msgid "You must be 18 years or older to enable adult content"
msgstr "ęäŗŗåćć³ć³ćć³ććęå¹ć«ććć«ćÆć18ę³ä»„äøć§ććåæ
č¦ćććć¾ćć"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:98
+#: src/view/com/util/forms/PostDropdownBtn.tsx:129
msgid "You will no longer receive notifications for this thread"
msgstr "ćć仄éććć®ć¹ć¬ććć«é¢ććéē„ćåćåćććØćÆć§ććŖććŖćć¾ć"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:101
+#: src/view/com/util/forms/PostDropdownBtn.tsx:132
msgid "You will now receive notifications for this thread"
msgstr "ćć仄éććć®ć¹ć¬ććć«é¢ććéē„ćåćåćććØćć§ćć¾ć"
@@ -4712,7 +4927,7 @@ msgstr "ććŖćć®ć¢ć«ć¦ć³ććÆåé¤ććć¾ćć"
msgid "Your account repository, containing all public data records, can be downloaded as a \"CAR\" file. This file does not include media embeds, such as images, or your private data, which must be fetched separately."
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:234
+#: src/view/com/auth/create/Step1.tsx:238
msgid "Your birth date"
msgstr "ē幓ęę„"
@@ -4724,7 +4939,7 @@ msgstr "ććć§éøęććå
容ćÆäæåććć¾ćććå¾ććčØå®ć§
msgid "Your default feed is \"Following\""
msgstr "ććŖćć®ććć©ć«ććć£ć¼ććÆćFollowingćć§ć"
-#: src/view/com/auth/create/state.ts:153
+#: src/view/com/auth/create/state.ts:110
#: src/view/com/auth/login/ForgotPasswordForm.tsx:70
#: src/view/com/modals/ChangePassword.tsx:54
msgid "Your email appears to be invalid."
@@ -4746,7 +4961,7 @@ msgstr "ć”ć¼ć«ć¢ćć¬ć¹ćÆć¾ć 確čŖććć¦ćć¾ććććććÆć
msgid "Your following feed is empty! Follow more users to see what's happening."
msgstr "Followingćć£ć¼ććÆē©ŗć§ćļ¼ćć£ćØå¤ćć®ć¦ć¼ć¶ć¼ććć©ćć¼ćć¦ćčæę³ć確čŖćć¾ćććć"
-#: src/view/com/auth/create/Step3.tsx:45
+#: src/view/com/auth/create/Step2.tsx:83
msgid "Your full handle will be"
msgstr "ćć«ćć³ćć«ćÆ"
@@ -4764,11 +4979,15 @@ msgstr "ćć«ćć³ćć«ćÆ<0>@{0}0>ć«ćŖćć¾ć"
#~ msgid "Your invite codes are hidden when logged in using an App Password"
#~ msgstr "ć¢ććŖćć¹ćÆć¼ćć使ēØćć¦ćć°ć¤ć³ćććØćęå¾
ć³ć¼ććÆé蔨示ć«ćŖćć¾ćć"
+#: src/components/dialogs/MutedWords.tsx:173
+msgid "Your muted words"
+msgstr ""
+
#: src/view/com/modals/ChangePassword.tsx:155
msgid "Your password has been changed successfully!"
msgstr "ćć¹ćÆć¼ćć®å¤ę“ćå®äŗćć¾ććļ¼"
-#: src/view/com/composer/Composer.tsx:267
+#: src/view/com/composer/Composer.tsx:274
msgid "Your post has been published"
msgstr "ę稿ćå
¬éćć¾ćć"
@@ -4787,10 +5006,10 @@ msgstr "ććŖćć®ćććć£ć¼ć«"
#~ 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/composer/Composer.tsx:266
+#: src/view/com/composer/Composer.tsx:273
msgid "Your reply has been published"
msgstr "čæäæ”ćå
¬éćć¾ćć"
-#: src/view/com/auth/create/Step3.tsx:28
+#: src/view/com/auth/create/Step2.tsx:65
msgid "Your user handle"
msgstr "ććŖćć®ć¦ć¼ć¶ć¼ćć³ćć«"
diff --git a/src/locale/locales/ko/messages.po b/src/locale/locales/ko/messages.po
index cf68140ce1..b70ba1694c 100644
--- a/src/locale/locales/ko/messages.po
+++ b/src/locale/locales/ko/messages.po
@@ -21,7 +21,7 @@ msgstr "(ģ“ė©ģ¼ ģģ)"
#~ msgid "{0, plural, one {# invite code available} other {# invite codes available}}"
#~ msgstr "{0, plural, one {ģ“ė ģ½ė #ź° ģ¬ģ© ź°ė„} other {ģ“ė ģ½ė #ź° ģ¬ģ© ź°ė„}}"
-#: src/view/com/profile/ProfileHeader.tsx:592
+#: src/view/com/profile/ProfileHeader.tsx:593
msgid "{following} following"
msgstr "{following} ķė”ģ° ģ¤"
@@ -47,7 +47,7 @@ msgstr "{numUnreadNotifications}ź° ģ½ģ§ ģģ"
msgid "<0/> members"
msgstr "<0/> 멤ė²"
-#: src/view/com/profile/ProfileHeader.tsx:594
+#: src/view/com/profile/ProfileHeader.tsx:595
msgid "<0>{following} 0><1>following1>"
msgstr "<0>{following} 0><1>ķė”ģ° ģ¤1>"
@@ -63,7 +63,7 @@ msgstr "<1>ģ¶ģ² ģ¬ģ©ģ1><0>ķė”ģ°ķźø°0>"
msgid "<0>Welcome to0><1>Bluesky1>"
msgstr "<1>Bluesky1><0>ģ ģ¤ģ ź²ģ ķģķ©ėė¤0>"
-#: src/view/com/profile/ProfileHeader.tsx:557
+#: src/view/com/profile/ProfileHeader.tsx:558
msgid "ā Invalid Handle"
msgstr "ā ģėŖ»ė ķøė¤"
@@ -76,11 +76,11 @@ msgid "A new version of the app is available. Please update to continue using th
msgstr "ģ ė²ģ ģ ģ±ģ ģ¬ģ©ķ ģ ģģµėė¤. ģ±ģ ź³ģ ģ¬ģ©ķė ¤ė©“ ģ
ė°ģ“ķøķģøģ."
#: src/view/com/util/ViewHeader.tsx:83
-#: src/view/screens/Search/Search.tsx:624
+#: src/view/screens/Search/Search.tsx:647
msgid "Access navigation links and settings"
msgstr "ķģ ė§ķ¬ ė° ģ¤ģ ģ¼ė” ģ“ėķ©ėė¤"
-#: src/view/com/pager/FeedsTabBarMobile.tsx:89
+#: src/view/com/home/HomeHeaderLayoutMobile.tsx:51
msgid "Access profile and other navigation links"
msgstr "ķė”ķ ė° źø°ķ ķģ ė§ķ¬ė” ģ“ėķ©ėė¤"
@@ -95,11 +95,11 @@ msgstr "ģ ź·¼ģ±"
msgid "Account"
msgstr "ź³ģ "
-#: src/view/com/profile/ProfileHeader.tsx:245
+#: src/view/com/profile/ProfileHeader.tsx:246
msgid "Account blocked"
msgstr "ź³ģ ģ°ØėØėØ"
-#: src/view/com/profile/ProfileHeader.tsx:212
+#: src/view/com/profile/ProfileHeader.tsx:213
msgid "Account muted"
msgstr "ź³ģ 뮤ķøėØ"
@@ -119,14 +119,15 @@ msgstr "ź³ģ ģµģ
"
msgid "Account removed from quick access"
msgstr "ė¹ ė„ø ģ”ģøģ¤ģģ ź³ģ ģ ź±°"
-#: src/view/com/profile/ProfileHeader.tsx:267
+#: src/view/com/profile/ProfileHeader.tsx:268
msgid "Account unblocked"
msgstr "ź³ģ ģ°ØėØ ķ“ģ ėØ"
-#: src/view/com/profile/ProfileHeader.tsx:225
+#: src/view/com/profile/ProfileHeader.tsx:226
msgid "Account unmuted"
msgstr "ź³ģ ģøė®¤ķøėØ"
+#: src/components/dialogs/MutedWords.tsx:147
#: src/view/com/auth/onboarding/RecommendedFeedsItem.tsx:150
#: src/view/com/modals/ListAddRemoveUsers.tsx:264
#: src/view/com/modals/UserAddRemoveLists.tsx:219
@@ -168,24 +169,32 @@ msgstr "ģøė¶ ģ 볓 ģ¶ź°"
msgid "Add details to report"
msgstr "ģ ź³ ģøė¶ ģ 볓 ģ¶ź°"
-#: src/view/com/composer/Composer.tsx:446
+#: src/view/com/composer/Composer.tsx:453
msgid "Add link card"
msgstr "ė§ķ¬ 칓ė ģ¶ź°"
-#: src/view/com/composer/Composer.tsx:451
+#: src/view/com/composer/Composer.tsx:458
msgid "Add link card:"
msgstr "ė§ķ¬ 칓ė ģ¶ź°:"
+#: src/components/dialogs/MutedWords.tsx:140
+msgid "Add mute word for configured settings"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:74
+msgid "Add muted words and tags"
+msgstr ""
+
#: src/view/com/modals/ChangeHandle.tsx:417
msgid "Add the following DNS record to your domain:"
msgstr "ėė©ģøģ ė¤ģ DNS ė ģ½ė넼 ģ¶ź°ķģøģ:"
-#: src/view/com/profile/ProfileHeader.tsx:309
+#: src/view/com/profile/ProfileHeader.tsx:310
msgid "Add to Lists"
msgstr "리ģ¤ķøģ ģ¶ź°"
-#: src/view/com/feeds/FeedSourceCard.tsx:243
-#: src/view/screens/ProfileFeed.tsx:272
+#: src/view/com/feeds/FeedSourceCard.tsx:245
+#: src/view/screens/ProfileFeed.tsx:273
msgid "Add to my feeds"
msgstr "ė“ ķ¼ėģ ģ¶ź°"
@@ -198,11 +207,11 @@ msgstr "ģ¶ź°ėØ"
msgid "Added to list"
msgstr "리ģ¤ķøģ ģ¶ź°ėØ"
-#: src/view/com/feeds/FeedSourceCard.tsx:125
+#: src/view/com/feeds/FeedSourceCard.tsx:127
msgid "Added to my feeds"
msgstr "ė“ ķ¼ėģ ģ¶ź°ėØ"
-#: src/view/screens/PreferencesHomeFeed.tsx:173
+#: src/view/screens/PreferencesFollowingFeed.tsx:173
msgid "Adjust the number of likes a reply must have to be shown in your feed."
msgstr "ėµźøģ“ ķ¼ėģ ķģėźø° ģķ“ ķģķ ģ¢ģģ ķģ ģ넼 ģ”°ģ ķ©ėė¤."
@@ -218,6 +227,10 @@ msgstr "ģ±ģø ģ½ķ
ģø ė <0/>ģģ ģ¹ģ ķµķ“ģė§ ķģ±ķķ ģ ģ
msgid "Advanced"
msgstr "ź³ źø"
+#: src/view/screens/Feeds.tsx:666
+msgid "All the feeds you've saved, right in one place."
+msgstr ""
+
#: src/view/com/auth/login/ForgotPasswordForm.tsx:221
#: src/view/com/modals/ChangePassword.tsx:168
msgid "Already have a code?"
@@ -291,7 +304,7 @@ msgstr "ģ± ė¹ė°ė²ķø ģ¤ģ "
msgid "App Passwords"
msgstr "ģ± ė¹ė°ė²ķø"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:250
+#: src/view/com/util/forms/PostDropdownBtn.tsx:295
msgid "Appeal content warning"
msgstr "ģ½ķ
ģø ź²½ź³ ģ“ģģ ģ²"
@@ -315,15 +328,16 @@ msgstr "ėŖØģ"
msgid "Are you sure you want to delete the app password \"{name}\"?"
msgstr "ģ± ė¹ė°ė²ķø \"{name}\"ģ(넼) ģģ ķģź² ģµėź¹?"
-#: src/view/com/composer/Composer.tsx:143
+#: src/view/com/composer/Composer.tsx:150
msgid "Are you sure you'd like to discard this draft?"
msgstr "ģ“ ģ“ģģ ģģ ķģź² ģµėź¹?"
-#: src/view/screens/ProfileList.tsx:364
+#: src/components/dialogs/MutedWords.tsx:233
+#: src/view/screens/ProfileList.tsx:365
msgid "Are you sure?"
msgstr "ģ ė§ģøź°ģ?"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:233
+#: src/view/com/util/forms/PostDropdownBtn.tsx:278
msgid "Are you sure? This cannot be undone."
msgstr "ģ ė§ģøź°ģ? ėė릓 ģ ģģµėė¤."
@@ -339,21 +353,21 @@ msgstr "ģģ "
msgid "Artistic or non-erotic nudity."
msgstr "ģ ģ ģ ģ“ģ§ ģź±°ė ģģ ģ ģø ė
øģ¶."
-#: src/view/com/auth/create/CreateAccount.tsx:147
+#: src/view/com/auth/create/CreateAccount.tsx:158
#: src/view/com/auth/login/ChooseAccountForm.tsx:151
#: src/view/com/auth/login/ForgotPasswordForm.tsx:174
#: src/view/com/auth/login/LoginForm.tsx:259
#: src/view/com/auth/login/SetNewPasswordForm.tsx:179
#: src/view/com/modals/report/InputIssueDetails.tsx:46
-#: src/view/com/post-thread/PostThread.tsx:408
-#: src/view/com/post-thread/PostThread.tsx:458
-#: src/view/com/post-thread/PostThread.tsx:466
-#: src/view/com/profile/ProfileHeader.tsx:648
+#: src/view/com/post-thread/PostThread.tsx:472
+#: src/view/com/post-thread/PostThread.tsx:522
+#: src/view/com/post-thread/PostThread.tsx:530
+#: src/view/com/profile/ProfileHeader.tsx:649
#: src/view/com/util/ViewHeader.tsx:81
msgid "Back"
msgstr "ė¤ė”"
-#: src/view/com/post-thread/PostThread.tsx:416
+#: src/view/com/post-thread/PostThread.tsx:480
msgctxt "action"
msgid "Back"
msgstr "ė¤ė”"
@@ -366,7 +380,7 @@ msgstr "{interestsText}ģ ėķ ź“ģ¬ģ¬ źø°ė°"
msgid "Basics"
msgstr "źø°ė³ø"
-#: src/view/com/auth/create/Step1.tsx:246
+#: src/view/com/auth/create/Step1.tsx:250
#: src/view/com/modals/BirthDateSettings.tsx:73
msgid "Birthday"
msgstr "ģė
ģģ¼"
@@ -375,33 +389,33 @@ msgstr "ģė
ģģ¼"
msgid "Birthday:"
msgstr "ģė
ģģ¼:"
-#: src/view/com/profile/ProfileHeader.tsx:238
-#: src/view/com/profile/ProfileHeader.tsx:345
+#: src/view/com/profile/ProfileHeader.tsx:239
+#: src/view/com/profile/ProfileHeader.tsx:346
msgid "Block Account"
msgstr "ź³ģ ģ°ØėØ"
-#: src/view/screens/ProfileList.tsx:555
+#: src/view/screens/ProfileList.tsx:556
msgid "Block accounts"
msgstr "ź³ģ ģ°ØėØ"
-#: src/view/screens/ProfileList.tsx:505
+#: src/view/screens/ProfileList.tsx:506
msgid "Block list"
msgstr "리ģ¤ķø ģ°ØėØ"
-#: src/view/screens/ProfileList.tsx:315
+#: src/view/screens/ProfileList.tsx:316
msgid "Block these accounts?"
msgstr "ģ“ ź³ģ ė¤ģ ģ°ØėØķģź² ģµėź¹?"
-#: src/view/screens/ProfileList.tsx:319
+#: src/view/screens/ProfileList.tsx:320
msgid "Block this List"
msgstr "ģ“ ė¦¬ģ¤ķø ģ°ØėØ"
-#: src/view/com/lists/ListCard.tsx:109
-#: src/view/com/util/post-embeds/QuoteEmbed.tsx:60
+#: src/view/com/lists/ListCard.tsx:110
+#: src/view/com/util/post-embeds/QuoteEmbed.tsx:61
msgid "Blocked"
msgstr "ģ°ØėØėØ"
-#: src/view/screens/Moderation.tsx:123
+#: src/view/screens/Moderation.tsx:142
msgid "Blocked accounts"
msgstr "ģ°ØėØķ ź³ģ "
@@ -410,7 +424,7 @@ msgstr "ģ°ØėØķ ź³ģ "
msgid "Blocked Accounts"
msgstr "ģ°ØėØķ ź³ģ "
-#: src/view/com/profile/ProfileHeader.tsx:240
+#: src/view/com/profile/ProfileHeader.tsx:241
msgid "Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you."
msgstr "ģ°ØėØķ ź³ģ ģ ė“ ģ¤ė ėģ ėµźøģ ė¬ź±°ė ė넼 ė©ģ
ķź±°ė źø°ķ ė¤ė„ø ė°©ģģ¼ė” ėģ ģķøģģ©ķ ģ ģģµėė¤."
@@ -418,15 +432,16 @@ msgstr "ģ°ØėØķ ź³ģ ģ ė“ ģ¤ė ėģ ėµźøģ ė¬ź±°ė ė넼 ė©ģ
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:267
+#: src/view/com/post-thread/PostThread.tsx:324
msgid "Blocked post."
msgstr "ģ°ØėØė ź²ģ물."
-#: src/view/screens/ProfileList.tsx:317
+#: src/view/screens/ProfileList.tsx:318
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:133
msgid "Blog"
msgstr "ėøė”ź·ø"
@@ -459,7 +474,7 @@ msgstr "Blueskyė ź³µź°ģ ģ
ėė¤."
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:226
+#: src/view/screens/Moderation.tsx:245
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 "ė”ź·øģģķ ģ¬ģ©ģģź² ė“ ķė”ķź³¼ ź²ģ물ģ ķģķģ§ ģģµėė¤. ė¤ė„ø ģ±ģģė ģ“ ģ¤ģ ģ ė°ė„“ģ§ ģģ ģ ģģµėė¤. ė“ ź³ģ ģ ė¹ź³µź°ė” ģ ķķģ§ė ģģµėė¤."
@@ -476,6 +491,7 @@ msgid "Build version {0} {1}"
msgstr "ė¹ė ė²ģ {0} {1}"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:87
+#: src/view/com/auth/SplashScreen.web.tsx:128
msgid "Business"
msgstr "ė¹ģ¦ėģ¤"
@@ -510,8 +526,8 @@ msgid "Can only contain letters, numbers, spaces, dashes, and underscores. Must
msgstr "źøģ, ģ«ģ, 공백, ėģ, ė°ģ¤ė§ ķ¬ķØķ ģ ģģµėė¤. źøøģ“ė 4ģ ģ“ģģ“ģ“ģ¼ ķź³ 32ģ넼 ėģ§ ģģģ¼ ķ©ėė¤."
#: src/components/Prompt.tsx:91
-#: src/view/com/composer/Composer.tsx:300
-#: src/view/com/composer/Composer.tsx:305
+#: src/view/com/composer/Composer.tsx:307
+#: src/view/com/composer/Composer.tsx:312
#: src/view/com/modals/ChangeEmail.tsx:218
#: src/view/com/modals/ChangeEmail.tsx:220
#: src/view/com/modals/ChangePassword.tsx:265
@@ -525,7 +541,7 @@ msgstr "źøģ, ģ«ģ, 공백, ėģ, ė°ģ¤ė§ ķ¬ķØķ ģ ģģµėė¤.
#: src/view/com/modals/VerifyEmail.tsx:247
#: src/view/com/modals/VerifyEmail.tsx:253
#: src/view/com/modals/Waitlist.tsx:142
-#: src/view/screens/Search/Search.tsx:693
+#: src/view/screens/Search/Search.tsx:716
#: src/view/shell/desktop/Search.tsx:238
msgid "Cancel"
msgstr "ģ·Øģ"
@@ -649,7 +665,7 @@ msgstr "ė§ģ¶¤ ķ¼ė넼 ķµķ“ ģ¬ģ©ģ ź²½ķģ ź°ķķė ģź³ 리ģ¦ģ
msgid "Choose your main feeds"
msgstr "źø°ė³ø ķ¼ė ģ ķ"
-#: src/view/com/auth/create/Step1.tsx:215
+#: src/view/com/auth/create/Step1.tsx:219
msgid "Choose your password"
msgstr "ė¹ė°ė²ķøė„¼ ģ
ė „ķģøģ"
@@ -672,7 +688,7 @@ msgid "Clear all storage data (restart after this)"
msgstr "ėŖØė ģ¤ķ ė¦¬ģ§ ė°ģ“ķ° ģ§ģ°źø° (ģ“ķ ė¤ģ ģģ)"
#: src/view/com/util/forms/SearchInput.tsx:88
-#: src/view/screens/Search/Search.tsx:674
+#: src/view/screens/Search/Search.tsx:697
msgid "Clear search query"
msgstr "ź²ģģ“ ģ§ģ°źø°"
@@ -680,6 +696,11 @@ msgstr "ź²ģģ“ ģ§ģ°źø°"
msgid "click here"
msgstr "ģ“ź³³ģ ķ“ė¦"
+#: src/components/RichText.tsx:189
+#: src/components/TagMenu/index.web.tsx:125
+msgid "Click here to open tag menu for {tag}"
+msgstr ""
+
#: src/screens/Onboarding/index.tsx:35
msgid "Climate"
msgstr "źø°ķ"
@@ -689,7 +710,8 @@ msgstr "źø°ķ"
msgid "Close"
msgstr ""
-#: src/components/Dialog/index.web.tsx:78
+#: src/components/Dialog/index.web.tsx:80
+#: src/components/Dialog/index.web.tsx:194
msgid "Close active dialog"
msgstr "ķģ± ėķ ģģ ė«źø°"
@@ -709,11 +731,15 @@ msgstr "ģ“ėÆøģ§ ė«źø°"
msgid "Close image viewer"
msgstr "ģ“ėÆøģ§ ė·°ģ“ ė«źø°"
-#: src/view/shell/index.web.tsx:49
+#: src/view/shell/index.web.tsx:51
msgid "Close navigation footer"
msgstr "ķģ ķøķ° ė«źø°"
-#: src/view/shell/index.web.tsx:50
+#: src/components/TagMenu/index.tsx:266
+msgid "Close this dialog"
+msgstr ""
+
+#: src/view/shell/index.web.tsx:52
msgid "Closes bottom navigation bar"
msgstr "ķėØ ķģ ė§ė넼 ė«ģµėė¤"
@@ -721,7 +747,7 @@ msgstr "ķėØ ķģ ė§ė넼 ė«ģµėė¤"
msgid "Closes password update alert"
msgstr "ė¹ė°ė²ķø ė³ź²½ ģ림ģ ė«ģµėė¤"
-#: src/view/com/composer/Composer.tsx:302
+#: src/view/com/composer/Composer.tsx:309
msgid "Closes post composer and discards post draft"
msgstr "ź²ģ물 ģģ± ģģ넼 ė«ź³ ź²ģ물 ģ“ģģ ģģ ķ©ėė¤"
@@ -750,7 +776,11 @@ msgstr "커뮤ėķ° ź°ģ“ėė¼ģø"
msgid "Complete onboarding and start using your account"
msgstr "ģØė³“ė© ģė£ ķ ź³ģ ģ¬ģ© ģģ"
-#: src/view/com/composer/Composer.tsx:417
+#: src/view/com/auth/create/Step3.tsx:73
+msgid "Complete the challenge"
+msgstr ""
+
+#: src/view/com/composer/Composer.tsx:424
msgid "Compose posts up to {MAX_GRAPHEME_LENGTH} characters in length"
msgstr "ģµė {MAX_GRAPHEME_LENGTH}ģ źøøģ“ź¹ģ§ źøģ ģģ±ķ ģ ģģµėė¤"
@@ -767,7 +797,7 @@ msgstr "{0} 칓ķ
ź³ ė¦¬ģ ėķ ģ½ķ
ģø ķķ°ė§ ģ¤ģ 구ģ±"
#: src/view/com/modals/SelfLabel.tsx:154
#: src/view/com/modals/VerifyEmail.tsx:231
#: src/view/com/modals/VerifyEmail.tsx:233
-#: src/view/screens/PreferencesHomeFeed.tsx:308
+#: src/view/screens/PreferencesFollowingFeed.tsx:308
#: src/view/screens/PreferencesThreads.tsx:159
msgid "Confirm"
msgstr "ķģø"
@@ -805,16 +835,16 @@ msgstr "ķģø ģ½ė"
msgid "Confirms signing up {email} to the waitlist"
msgstr "{email}ģ(넼) ėźø°ģ ėŖ
ėØģ ė±ė”ķ©ėė¤"
-#: src/view/com/auth/create/CreateAccount.tsx:182
+#: src/view/com/auth/create/CreateAccount.tsx:193
#: src/view/com/auth/login/LoginForm.tsx:278
msgid "Connecting..."
msgstr "ģ°ź²° ģ¤ā¦"
-#: src/view/com/auth/create/CreateAccount.tsx:202
+#: src/view/com/auth/create/CreateAccount.tsx:213
msgid "Contact support"
msgstr "ģ§ģģ ģ°ė½ķźø°"
-#: src/view/screens/Moderation.tsx:81
+#: src/view/screens/Moderation.tsx:83
msgid "Content filtering"
msgstr "ģ½ķ
ģø ķķ°ė§"
@@ -844,7 +874,7 @@ msgstr "ģ½ķ
ģø ź²½ź³ "
#: src/screens/Onboarding/StepFollowingFeed.tsx:153
#: src/screens/Onboarding/StepInterests/index.tsx:248
#: src/screens/Onboarding/StepModeration/index.tsx:118
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:108
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:114
#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:148
#: src/view/com/auth/onboarding/RecommendedFollows.tsx:209
msgid "Continue"
@@ -853,7 +883,7 @@ msgstr "ź³ģ"
#: src/screens/Onboarding/StepFollowingFeed.tsx:150
#: src/screens/Onboarding/StepInterests/index.tsx:245
#: src/screens/Onboarding/StepModeration/index.tsx:115
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:105
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:111
msgid "Continue to next step"
msgstr "ė¤ģ ėØź³ė” ź³ģķźø°"
@@ -880,7 +910,7 @@ msgstr "ė¹ė ė²ģ ķ“립볓ėģ ė³µģ¬ėØ"
#: src/view/com/modals/AddAppPasswords.tsx:76
#: src/view/com/modals/InviteCodes.tsx:152
-#: src/view/com/util/forms/PostDropdownBtn.tsx:112
+#: src/view/com/util/forms/PostDropdownBtn.tsx:143
msgid "Copied to clipboard"
msgstr "ķ“립볓ėģ ė³µģ¬ėØ"
@@ -892,19 +922,19 @@ msgstr "ģ± ė¹ė°ė²ķøė„¼ ė³µģ¬ķ©ėė¤"
msgid "Copy"
msgstr "ė³µģ¬"
-#: src/view/screens/ProfileList.tsx:417
+#: src/view/screens/ProfileList.tsx:418
msgid "Copy link to list"
msgstr "리ģ¤ķø ė§ķ¬ ė³µģ¬"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:153
+#: src/view/com/util/forms/PostDropdownBtn.tsx:184
msgid "Copy link to post"
msgstr "ź²ģ물 ė§ķ¬ ė³µģ¬"
-#: src/view/com/profile/ProfileHeader.tsx:294
+#: src/view/com/profile/ProfileHeader.tsx:295
msgid "Copy link to profile"
msgstr "ķė”ķ ė§ķ¬ ė³µģ¬"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:139
+#: src/view/com/util/forms/PostDropdownBtn.tsx:170
msgid "Copy post text"
msgstr "ź²ģ물 ķ
ģ¤ķø ė³µģ¬"
@@ -913,7 +943,7 @@ msgstr "ź²ģ물 ķ
ģ¤ķø ė³µģ¬"
msgid "Copyright Policy"
msgstr "ģ ģź¶ ģ ģ±
"
-#: src/view/screens/ProfileFeed.tsx:96
+#: src/view/screens/ProfileFeed.tsx:97
msgid "Could not load feed"
msgstr "ķ¼ė넼 ė¶ė¬ģ¬ ģ ģģµėė¤"
@@ -922,12 +952,12 @@ msgid "Could not load list"
msgstr "리ģ¤ķøė„¼ ė¶ė¬ģ¬ ģ ģģµėė¤"
#: src/view/com/auth/create/Step2.tsx:91
-msgid "Country"
-msgstr "źµź°"
+#~ msgid "Country"
+#~ msgstr "źµź°"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:62
-#: src/view/com/auth/SplashScreen.tsx:46
-#: src/view/com/auth/SplashScreen.web.tsx:77
+#: src/view/com/auth/SplashScreen.tsx:71
+#: src/view/com/auth/SplashScreen.web.tsx:81
msgid "Create a new account"
msgstr "ģ ź³ģ ė§ė¤źø°"
@@ -935,7 +965,7 @@ msgstr "ģ ź³ģ ė§ė¤źø°"
msgid "Create a new Bluesky account"
msgstr "ģ Bluesky ź³ģ ģ ė§ėėė¤"
-#: src/view/com/auth/create/CreateAccount.tsx:122
+#: src/view/com/auth/create/CreateAccount.tsx:133
msgid "Create Account"
msgstr "ź³ģ ė§ė¤źø°"
@@ -944,7 +974,7 @@ msgid "Create App Password"
msgstr "ģ± ė¹ė°ė²ķø ė§ė¤źø°"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:54
-#: src/view/com/auth/SplashScreen.tsx:43
+#: src/view/com/auth/SplashScreen.tsx:68
msgid "Create new account"
msgstr "ģ ź³ģ ė§ė¤źø°"
@@ -960,7 +990,7 @@ msgstr "<0/> ėģ“ ė§ė¦"
msgid "Created by you"
msgstr "ė“ź° ė§ė¦"
-#: src/view/com/composer/Composer.tsx:448
+#: src/view/com/composer/Composer.tsx:455
msgid "Creates a card with a thumbnail. The card links to {url}"
msgstr "미리볓기 ģ“ėÆøģ§ź° ģė 칓ė넼 ė§ėėė¤. ģ¹“ėź° {url}(ģ¼)ė” ģ°ź²°ė©ėė¤"
@@ -978,6 +1008,7 @@ msgid "Custom domain"
msgstr "ģ¬ģ©ģ ģ§ģ ėė©ģø"
#: src/screens/Onboarding/StepAlgoFeeds/index.tsx:106
+#: src/view/screens/Feeds.tsx:692
msgid "Custom feeds built by the community bring you new experiences and help you find the content you love."
msgstr "커뮤ėķ°ģģ źµ¬ģ¶ķ ė§ģ¶¤ ķ¼ėė ģė”ģ“ ź²½ķģ ģ ź³µķź³ ģ¢ģķė ģ½ķ
ģø ė„¼ ģ°¾ģ ģ ģėė” ėģģ¤ėė¤."
@@ -1019,8 +1050,8 @@ msgstr "ź³ģ ģģ "
msgid "Delete app password"
msgstr "ģ± ė¹ė°ė²ķø ģģ "
-#: src/view/screens/ProfileList.tsx:363
-#: src/view/screens/ProfileList.tsx:444
+#: src/view/screens/ProfileList.tsx:364
+#: src/view/screens/ProfileList.tsx:445
msgid "Delete List"
msgstr "리ģ¤ķø ģģ "
@@ -1036,19 +1067,19 @@ msgstr "ė“ ź³ģ ģģ "
msgid "Delete My Accountā¦"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:228
+#: src/view/com/util/forms/PostDropdownBtn.tsx:273
msgid "Delete post"
msgstr "ź²ģ물 ģģ "
-#: src/view/com/util/forms/PostDropdownBtn.tsx:232
+#: src/view/com/util/forms/PostDropdownBtn.tsx:277
msgid "Delete this post?"
msgstr "ģ“ ź²ģ물ģ ģģ ķģź² ģµėź¹?"
-#: src/view/com/util/post-embeds/QuoteEmbed.tsx:69
+#: src/view/com/util/post-embeds/QuoteEmbed.tsx:70
msgid "Deleted"
msgstr "ģģ ėØ"
-#: src/view/com/post-thread/PostThread.tsx:259
+#: src/view/com/post-thread/PostThread.tsx:316
msgid "Deleted post."
msgstr "ģģ ė ź²ģ물."
@@ -1063,7 +1094,7 @@ msgstr "ģ¤ėŖ
"
#~ msgid "Developer Tools"
#~ msgstr "ź°ė°ģ ėźµ¬"
-#: src/view/com/composer/Composer.tsx:211
+#: src/view/com/composer/Composer.tsx:218
msgid "Did you want to say anything?"
msgstr "ķź³ ģ¶ģ ė§ģ“ ģėģ?"
@@ -1071,15 +1102,15 @@ msgstr "ķź³ ģ¶ģ ė§ģ“ ģėģ?"
msgid "Dim"
msgstr ""
-#: src/view/com/composer/Composer.tsx:144
+#: src/view/com/composer/Composer.tsx:151
msgid "Discard"
msgstr "ģģ "
-#: src/view/com/composer/Composer.tsx:138
+#: src/view/com/composer/Composer.tsx:145
msgid "Discard draft"
msgstr "ģ“ģ ģģ "
-#: src/view/screens/Moderation.tsx:207
+#: src/view/screens/Moderation.tsx:226
msgid "Discourage apps from showing my account to logged-out users"
msgstr "ģ±ģ“ ė”ź·øģģķ ģ¬ģ©ģģź² ė“ ź³ģ ģ ķģķģ§ ģėė” ģ¤ģ ķźø°"
@@ -1089,8 +1120,12 @@ msgid "Discover new custom feeds"
msgstr "ģė”ģ“ ė§ģ¶¤ ķ¼ė ģ°¾ģ볓기"
#: src/view/screens/Feeds.tsx:473
-msgid "Discover new feeds"
-msgstr "ģ ķ¼ė ė°ź²¬ķźø°"
+#~ msgid "Discover new feeds"
+#~ msgstr "ģ ķ¼ė ė°ź²¬ķźø°"
+
+#: src/view/screens/Feeds.tsx:689
+msgid "Discover New Feeds"
+msgstr ""
#: src/view/com/modals/EditProfile.tsx:192
msgid "Display name"
@@ -1104,7 +1139,7 @@ msgstr "ķģ ģ“ė¦"
msgid "Domain verified!"
msgstr "ėė©ģøģ ķģøķģµėė¤."
-#: src/view/com/auth/create/Step1.tsx:166
+#: src/view/com/auth/create/Step1.tsx:170
msgid "Don't have an invite code?"
msgstr "ģ“ė ģ½ėź° ģėģ?"
@@ -1131,7 +1166,7 @@ msgstr "ģė£"
#: src/view/com/modals/InviteCodes.tsx:80
#: src/view/com/modals/InviteCodes.tsx:123
#: src/view/com/modals/ListAddRemoveUsers.tsx:142
-#: src/view/screens/PreferencesHomeFeed.tsx:311
+#: src/view/screens/PreferencesFollowingFeed.tsx:311
#: src/view/screens/Settings/ExportCarDialog.tsx:93
#: src/view/screens/Settings/ExportCarDialog.tsx:94
msgid "Done"
@@ -1154,7 +1189,7 @@ msgstr ""
msgid "Download CAR file"
msgstr ""
-#: src/view/com/composer/text-input/TextInput.web.tsx:247
+#: src/view/com/composer/text-input/TextInput.web.tsx:249
msgid "Drop to add images"
msgstr "ėė”ķģ¬ ģ“ėÆøģ§ ģ¶ź°"
@@ -1200,7 +1235,7 @@ msgstr "ķøģ§"
msgid "Edit image"
msgstr "ģ“ėÆøģ§ ķøģ§"
-#: src/view/screens/ProfileList.tsx:432
+#: src/view/screens/ProfileList.tsx:433
msgid "Edit list details"
msgstr "리ģ¤ķø ģøė¶ ģ 볓 ķøģ§"
@@ -1218,15 +1253,16 @@ msgstr "ė“ ķ¼ė ķøģ§"
msgid "Edit my profile"
msgstr "ė“ ķė”ķ ķøģ§"
-#: src/view/com/profile/ProfileHeader.tsx:417
+#: src/view/com/profile/ProfileHeader.tsx:418
msgid "Edit profile"
msgstr "ķė”ķ ķøģ§"
-#: src/view/com/profile/ProfileHeader.tsx:422
+#: src/view/com/profile/ProfileHeader.tsx:423
msgid "Edit Profile"
msgstr "ķė”ķ ķøģ§"
-#: src/view/screens/Feeds.tsx:356
+#: src/view/com/home/HomeHeaderLayout.web.tsx:59
+#: src/view/screens/Feeds.tsx:355
msgid "Edit Saved Feeds"
msgstr "ģ ģ„ė ķ¼ė ķøģ§"
@@ -1246,16 +1282,14 @@ msgstr "ė“ ķė”ķ ģ¤ėŖ
ķøģ§"
msgid "Education"
msgstr "źµģ”"
-#: src/view/com/auth/create/Step1.tsx:195
-#: src/view/com/auth/create/Step2.tsx:194
-#: src/view/com/auth/create/Step2.tsx:269
+#: src/view/com/auth/create/Step1.tsx:199
#: src/view/com/auth/login/ForgotPasswordForm.tsx:156
#: src/view/com/modals/ChangeEmail.tsx:141
#: src/view/com/modals/Waitlist.tsx:88
msgid "Email"
msgstr "ģ“ė©ģ¼"
-#: src/view/com/auth/create/Step1.tsx:186
+#: src/view/com/auth/create/Step1.tsx:190
#: src/view/com/auth/login/ForgotPasswordForm.tsx:147
msgid "Email address"
msgstr "ģ“ė©ģ¼ 주ģ"
@@ -1298,7 +1332,7 @@ msgstr "ģøė¶ 미ėģ“ ģ¬ģ©"
msgid "Enable media players for"
msgstr "미ėģ“ ķė ģ“ģ“넼 ģ¬ģ©ķ ģøė¶ ģ¬ģ“ķø"
-#: src/view/screens/PreferencesHomeFeed.tsx:147
+#: src/view/screens/PreferencesFollowingFeed.tsx:147
msgid "Enable this setting to only see replies between people you follow."
msgstr "ė“ź° ķė”ģ°ķė ģ¬ėė¤ ź°ģ ėµźøė§ ķģķ©ėė¤."
@@ -1310,6 +1344,11 @@ msgstr "ķ¼ė ė"
msgid "Enter a name for this App Password"
msgstr "ģ“ ģ± ė¹ė°ė²ķøģ ģ“ė¦ģ ģ
ė „ķģøģ"
+#: src/components/dialogs/MutedWords.tsx:87
+#: src/components/dialogs/MutedWords.tsx:88
+msgid "Enter a word or tag"
+msgstr ""
+
#: src/view/com/modals/VerifyEmail.tsx:105
msgid "Enter Confirmation Code"
msgstr "ķģø ģ½ė ģ
ė „"
@@ -1326,7 +1365,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/Step1.tsx:247
+#: src/view/com/auth/create/Step1.tsx:251
#: src/view/com/modals/BirthDateSettings.tsx:74
msgid "Enter your birth date"
msgstr "ģė
ģģ¼ģ ģ
ė „ķģøģ"
@@ -1335,7 +1374,7 @@ msgstr "ģė
ģģ¼ģ ģ
ė „ķģøģ"
msgid "Enter your email"
msgstr "ģ“ė©ģ¼ģ ģ
ė „ķģøģ"
-#: src/view/com/auth/create/Step1.tsx:191
+#: src/view/com/auth/create/Step1.tsx:195
msgid "Enter your email address"
msgstr "ģ“ė©ģ¼ 주ģ넼 ģ
ė „ķģøģ"
@@ -1348,14 +1387,18 @@ msgid "Enter your new email address below."
msgstr "ģėģ ģ ģ“ė©ģ¼ 주ģ넼 ģ
ė „ķģøģ."
#: src/view/com/auth/create/Step2.tsx:188
-msgid "Enter your phone number"
-msgstr "ģ ķė²ķøė„¼ ģ
ė „ķģøģ"
+#~ msgid "Enter your phone number"
+#~ msgstr "ģ ķė²ķøė„¼ ģ
ė „ķģøģ"
#: src/view/com/auth/login/Login.tsx:99
msgid "Enter your username and password"
msgstr "ģ¬ģ©ģ ģ“ė¦ ė° ė¹ė°ė²ķø ģ
ė „"
-#: src/view/screens/Search/Search.tsx:109
+#: src/view/com/auth/create/Step3.tsx:67
+msgid "Error receiving captcha response."
+msgstr ""
+
+#: src/view/screens/Search/Search.tsx:110
msgid "Error:"
msgstr "ģ¤ė„:"
@@ -1407,7 +1450,7 @@ msgstr "ģøė¶ 미ėģ“"
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/Navigation.tsx:258
+#: src/Navigation.tsx:261
#: src/view/screens/PreferencesExternalEmbeds.tsx:52
#: src/view/screens/Settings/index.tsx:657
msgid "External Media Preferences"
@@ -1426,7 +1469,7 @@ msgstr "ģ± ė¹ė°ė²ķøė„¼ ė§ė¤ģ§ ėŖ»ķģµėė¤."
msgid "Failed to create the list. Check your internet connection and try again."
msgstr "리ģ¤ķøė„¼ ė§ė¤ģ§ ėŖ»ķģµėė¤. ģøķ°ė· ģ°ź²°ģ ķģøķ ķ ė¤ģ ģėķģøģ."
-#: src/view/com/util/forms/PostDropdownBtn.tsx:88
+#: src/view/com/util/forms/PostDropdownBtn.tsx:110
msgid "Failed to delete post, please try again"
msgstr "ź²ģ물ģ ģģ ķģ§ ėŖ»ķģµėė¤. ė¤ģ ģėķ“ ģ£¼ģøģ"
@@ -1439,25 +1482,26 @@ msgstr "ģ¶ģ² ķ¼ė넼 ė¶ė¬ģ¤ģ§ ėŖ»ķģµėė¤"
msgid "Feed"
msgstr "ķ¼ė"
-#: src/view/com/feeds/FeedSourceCard.tsx:229
+#: src/view/com/feeds/FeedSourceCard.tsx:231
msgid "Feed by {0}"
msgstr "{0} ėģ ķ¼ė"
-#: src/view/screens/Feeds.tsx:631
+#: src/view/screens/Feeds.tsx:605
msgid "Feed offline"
msgstr "ķ¼ė ģ¤ķė¼ģø"
#: src/view/com/feeds/FeedPage.tsx:143
-msgid "Feed Preferences"
-msgstr "ķ¼ė ģ¤ģ "
+#~ msgid "Feed Preferences"
+#~ msgstr "ķ¼ė ģ¤ģ "
-#: src/view/shell/desktop/RightNav.tsx:69
+#: src/view/shell/desktop/RightNav.tsx:61
#: src/view/shell/Drawer.tsx:311
msgid "Feedback"
msgstr "ķ¼ėė°±"
-#: src/Navigation.tsx:442
-#: src/view/screens/Feeds.tsx:548
+#: src/Navigation.tsx:445
+#: src/view/screens/Feeds.tsx:419
+#: src/view/screens/Feeds.tsx:524
#: src/view/screens/Profile.tsx:184
#: src/view/shell/bottom-bar/BottomBar.tsx:181
#: src/view/shell/desktop/LeftNav.tsx:342
@@ -1474,7 +1518,7 @@ msgstr "ķ¼ėė ģ½ķ
ģø ė„¼ ķė ģ“ģ
ķźø° ģķ“ ģ¬ģ©ģģ ģķ“ ė§
msgid "Feeds are custom algorithms that users build with a little coding expertise. <0/> for more information."
msgstr "ķ¼ėė ģ¬ģ©ģź° ģ½ź°ģ ģ½ė© ģ 문 ģ§ģģ¼ė” 구ģ¶ķ ģ ģė ė§ģ¶¤ ģź³ 리ģ¦ģ
ėė¤. <0/>ģģ ģģøķ ė“ģ©ģ ķģøķģøģ."
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:70
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:76
msgid "Feeds can be topical as well!"
msgstr "ķ¼ėė ķģ ź° ė ģ ģģµėė¤!"
@@ -1488,11 +1532,11 @@ msgstr "ė§ė¬“리 ģ¤"
msgid "Find accounts to follow"
msgstr "ķė”ģ°ķ ź³ģ ģ°¾ģ볓기"
-#: src/view/screens/Search/Search.tsx:439
+#: src/view/screens/Search/Search.tsx:440
msgid "Find users on Bluesky"
msgstr "Blueskyģģ ģ¬ģ©ģ 찾기"
-#: src/view/screens/Search/Search.tsx:437
+#: src/view/screens/Search/Search.tsx:438
msgid "Find users with the search tool on the right"
msgstr "ģ¤ė„øģŖ½ģ ź²ģ ėźµ¬ė” ģ¬ģ©ģ 찾기"
@@ -1500,9 +1544,13 @@ msgstr "ģ¤ė„øģŖ½ģ ź²ģ ėźµ¬ė” ģ¬ģ©ģ 찾기"
msgid "Finding similar accounts..."
msgstr "ģ ģ¬ķ ź³ģ ģ ģ°¾ė ģ¤ā¦"
+#: src/view/screens/PreferencesFollowingFeed.tsx:111
+msgid "Fine-tune the content you see on your Following feed."
+msgstr ""
+
#: src/view/screens/PreferencesHomeFeed.tsx:111
-msgid "Fine-tune the content you see on your home screen."
-msgstr "ķ ķė©“ģ ķģėė ģ½ķ
ģø ė„¼ ėÆøģø ģ”°ģ ķ©ėė¤."
+#~ msgid "Fine-tune the content you see on your home screen."
+#~ msgstr "ķ ķė©“ģ ķģėė ģ½ķ
ģø ė„¼ ėÆøģø ģ”°ģ ķ©ėė¤."
#: src/view/screens/PreferencesThreads.tsx:60
msgid "Fine-tune the discussion threads."
@@ -1527,7 +1575,7 @@ msgstr "ģøė”ė” ė¤ģ§źø°"
#: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:181
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:136
-#: src/view/com/profile/ProfileHeader.tsx:512
+#: src/view/com/profile/ProfileHeader.tsx:513
msgid "Follow"
msgstr "ķė”ģ°"
@@ -1538,7 +1586,7 @@ msgstr "ķė”ģ°"
#: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:58
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:122
-#: src/view/com/profile/ProfileHeader.tsx:503
+#: src/view/com/profile/ProfileHeader.tsx:504
msgid "Follow {0}"
msgstr "{0} ėģ ķė”ģ°"
@@ -1562,7 +1610,7 @@ msgstr "{0} ėģ“ ķė”ģ°ķØ"
msgid "Followed users"
msgstr "ķė”ģ°ķ ģ¬ģ©ģ"
-#: src/view/screens/PreferencesHomeFeed.tsx:154
+#: src/view/screens/PreferencesFollowingFeed.tsx:154
msgid "Followed users only"
msgstr "ķė”ģ°ķ ģ¬ģ©ģė§"
@@ -1575,16 +1623,24 @@ msgid "Followers"
msgstr "ķė”ģ"
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:136
-#: src/view/com/profile/ProfileHeader.tsx:494
+#: src/view/com/profile/ProfileHeader.tsx:495
#: src/view/screens/ProfileFollows.tsx:25
msgid "Following"
msgstr "ķė”ģ° ģ¤"
-#: src/view/com/profile/ProfileHeader.tsx:148
+#: src/view/com/profile/ProfileHeader.tsx:149
msgid "Following {0}"
msgstr "{0} ķė”ģ° ģ¤"
-#: src/view/com/profile/ProfileHeader.tsx:545
+#: src/Navigation.tsx:248
+#: src/view/com/home/HomeHeaderLayout.web.tsx:45
+#: src/view/com/home/HomeHeaderLayoutMobile.tsx:83
+#: src/view/screens/PreferencesFollowingFeed.tsx:104
+#: src/view/screens/Settings/index.tsx:543
+msgid "Following Feed Preferences"
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:546
msgid "Follows you"
msgstr "ė넼 ķė”ģ°ķØ"
@@ -1638,8 +1694,8 @@ msgstr "ģģķźø°"
msgid "Go back"
msgstr "ė¤ė”"
-#: src/view/screens/ProfileFeed.tsx:105
-#: src/view/screens/ProfileFeed.tsx:110
+#: src/view/screens/ProfileFeed.tsx:106
+#: src/view/screens/ProfileFeed.tsx:111
#: src/view/screens/ProfileList.tsx:897
#: src/view/screens/ProfileList.tsx:902
msgid "Go Back"
@@ -1650,7 +1706,7 @@ msgstr "ė¤ė”"
msgid "Go back to previous step"
msgstr "ģ“ģ ėØź³ė” ėģź°źø°"
-#: src/view/screens/Search/Search.tsx:724
+#: src/view/screens/Search/Search.tsx:747
#: src/view/shell/desktop/Search.tsx:262
msgid "Go to @{queryMaybeHandle}"
msgstr "@{queryMaybeHandle}(ģ¼)ė” ģ“ė"
@@ -1667,11 +1723,15 @@ msgstr "ė¤ģ"
msgid "Handle"
msgstr "ķøė¤"
-#: src/view/com/auth/create/CreateAccount.tsx:197
+#: src/components/RichText.tsx:188
+msgid "Hashtag: {tag}"
+msgstr ""
+
+#: src/view/com/auth/create/CreateAccount.tsx:208
msgid "Having trouble?"
msgstr "ė¬øģ ź° ģėģ?"
-#: src/view/shell/desktop/RightNav.tsx:98
+#: src/view/shell/desktop/RightNav.tsx:90
#: src/view/shell/Drawer.tsx:321
msgid "Help"
msgstr "ėģė§"
@@ -1680,11 +1740,11 @@ msgstr "ėģė§"
msgid "Here are some accounts for you to follow"
msgstr "ķė”ģ°ķ ė§ķ ź³ģ "
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:79
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:85
msgid "Here are some popular topical feeds. You can choose to follow as many as you like."
msgstr "ė¤ģģ ģøźø° ģė ķģ ķ¼ėģ
ėė¤. ģķė ė§ķ¼ ķ¼ė넼 ķė”ģ°ķ ģ ģģµėė¤."
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:74
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:80
msgid "Here are some topical feeds based on your interests: {interestsText}. You can choose to follow as many as you like."
msgstr "ė¤ģģ ģ¬ģ©ģģ ź“ģ¬ģ¬ė„¼ źø°ė°ģ¼ė” ķ ėŖ ź°ģ§ 주ģ ė³ ķ¼ėģ
ėė¤: {interestsText}. ģķė ė§ķ¼ ė§ģ ķ¼ė넼 ķė”ģ°ķ ģ ģģµėė¤."
@@ -1705,7 +1765,7 @@ msgctxt "action"
msgid "Hide"
msgstr "ģØźø°źø°"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:187
+#: src/view/com/util/forms/PostDropdownBtn.tsx:232
msgid "Hide post"
msgstr "ź²ģ물 ģØźø°źø°"
@@ -1714,7 +1774,7 @@ msgstr "ź²ģ물 ģØźø°źø°"
msgid "Hide the content"
msgstr "ģ½ķ
ģø ģØźø°źø°"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:191
+#: src/view/com/util/forms/PostDropdownBtn.tsx:236
msgid "Hide this post?"
msgstr "ģ“ ź²ģ물ģ ģØźø°ģź² ģµėź¹?"
@@ -1722,7 +1782,7 @@ msgstr "ģ“ ź²ģ물ģ ģØźø°ģź² ģµėź¹?"
msgid "Hide user list"
msgstr "ģ¬ģ©ģ 리ģ¤ķø ģØźø°źø°"
-#: src/view/com/profile/ProfileHeader.tsx:486
+#: src/view/com/profile/ProfileHeader.tsx:487
msgid "Hides posts from {0} in your feed"
msgstr "ķ¼ėģģ {0} ėģ ź²ģ물ģ ģØź¹ėė¤"
@@ -1746,7 +1806,7 @@ msgstr "ķ¼ė ģė²ģģ ģėŖ»ė ģėµģ 볓ėģµėė¤. ķ¼ė ģģ
msgid "Hmm, we're having trouble finding this feed. It may have been deleted."
msgstr "ģ“ ķ¼ė넼 ģ°¾ė ė° ė¬øģ ź° ģģµėė¤. ķ¼ėź° ģģ ėģģ ģ ģģµėė¤."
-#: src/Navigation.tsx:432
+#: src/Navigation.tsx:435
#: src/view/shell/bottom-bar/BottomBar.tsx:137
#: src/view/shell/desktop/LeftNav.tsx:306
#: src/view/shell/Drawer.tsx:398
@@ -1758,10 +1818,10 @@ msgstr "ķ"
#: src/view/com/pager/FeedsTabBarMobile.tsx:123
#: src/view/screens/PreferencesHomeFeed.tsx:104
#: src/view/screens/Settings/index.tsx:543
-msgid "Home Feed Preferences"
-msgstr "ķ ķ¼ė ģ¤ģ "
+#~ msgid "Home Feed Preferences"
+#~ msgstr "ķ ķ¼ė ģ¤ģ "
-#: src/view/com/auth/create/Step1.tsx:78
+#: src/view/com/auth/create/Step1.tsx:82
#: src/view/com/auth/login/ForgotPasswordForm.tsx:120
msgid "Hosting provider"
msgstr "ķøģ¤ķ
ģ ź³µģ"
@@ -1815,11 +1875,11 @@ msgstr "ė¹ė°ė²ķø ģ¬ģ¤ģ ģ ģķ“ ģ“ė©ģ¼ė” ģ ģ”ė ģ½ė넼 ģ
ė „
msgid "Input confirmation code for account deletion"
msgstr "ź³ģ ģģ 넼 ģķ ķģø ģ½ė넼 ģ
ė „ķ©ėė¤"
-#: src/view/com/auth/create/Step1.tsx:196
+#: src/view/com/auth/create/Step1.tsx:200
msgid "Input email for Bluesky account"
msgstr "Bluesky ź³ģ ģ ģ¬ģ©ķ ģ“ė©ģ¼ģ ģ
ė „ķ©ėė¤"
-#: src/view/com/auth/create/Step1.tsx:154
+#: src/view/com/auth/create/Step1.tsx:158
msgid "Input invite code to proceed"
msgstr "ģ§ķķźø° ģķ“ ģ“ė ģ½ė넼 ģ
ė „ķ©ėė¤"
@@ -1836,8 +1896,8 @@ msgid "Input password for account deletion"
msgstr "ź³ģ ģ ģģ ķźø° ģķ“ ė¹ė°ė²ķøė„¼ ģ
ė „ķ©ėė¤"
#: src/view/com/auth/create/Step2.tsx:196
-msgid "Input phone number for SMS verification"
-msgstr "SMS ģøģ¦ģ ģ¬ģ©ķ ģ ķė²ķøė„¼ ģ
ė „ķ©ėė¤"
+#~ msgid "Input phone number for SMS verification"
+#~ msgstr "SMS ģøģ¦ģ ģ¬ģ©ķ ģ ķė²ķøė„¼ ģ
ė „ķ©ėė¤"
#: src/view/com/auth/login/LoginForm.tsx:230
msgid "Input the password tied to {identifier}"
@@ -1848,8 +1908,8 @@ msgid "Input the username or email address you used at signup"
msgstr "ź°ģ
ģ ģ¬ģ©ķ ģ¬ģ©ģ ģ“ė¦ ėė ģ“ė©ģ¼ 주ģ넼 ģ
ė „ķ©ėė¤"
#: src/view/com/auth/create/Step2.tsx:271
-msgid "Input the verification code we have texted to you"
-msgstr "문ģ ė©ģģ§ė” ģ ģ”ė ģøģ¦ ģ½ė넼 ģ
ė „ķ©ėė¤"
+#~ msgid "Input the verification code we have texted to you"
+#~ msgstr "문ģ ė©ģģ§ė” ģ ģ”ė ģøģ¦ ģ½ė넼 ģ
ė „ķ©ėė¤"
#: src/view/com/modals/Waitlist.tsx:90
msgid "Input your email to get on the Bluesky waitlist"
@@ -1859,11 +1919,11 @@ msgstr "Bluesky ėźø°ģ ėŖ
ėØģ ė±ė”ķė ¤ė©“ ģ“ė©ģ¼ģ ģ
ė „ķ©ėė¤
msgid "Input your password"
msgstr "ė¹ė°ė²ķøė„¼ ģ
ė „ķ©ėė¤"
-#: src/view/com/auth/create/Step3.tsx:42
+#: src/view/com/auth/create/Step2.tsx:80
msgid "Input your user handle"
msgstr "ģ¬ģ©ģ ķøė¤ģ ģ
ė „ķ©ėė¤"
-#: src/view/com/post-thread/PostThreadItem.tsx:225
+#: src/view/com/post-thread/PostThreadItem.tsx:226
msgid "Invalid or unsupported post record"
msgstr "ģ ķØķģ§ ģź±°ė ģ§ģėģ§ ģė ź²ģ물 źø°ė”"
@@ -1879,12 +1939,12 @@ msgstr "ģėŖ»ė ģ¬ģ©ģ ģ“ė¦ ėė ė¹ė°ė²ķø"
msgid "Invite a Friend"
msgstr "ģ¹źµ¬ ģ“ėķźø°"
-#: src/view/com/auth/create/Step1.tsx:144
-#: src/view/com/auth/create/Step1.tsx:153
+#: src/view/com/auth/create/Step1.tsx:148
+#: src/view/com/auth/create/Step1.tsx:157
msgid "Invite code"
msgstr "ģ“ė ģ½ė"
-#: src/view/com/auth/create/state.ts:199
+#: src/view/com/auth/create/state.ts:158
msgid "Invite code not accepted. Check that you input it correctly and try again."
msgstr "ģ“ė ģ½ėź° ģ¬ė°ė„“ģ§ ģģµėė¤. ģ½ė넼 ģ¬ė°ė„“ź² ģ
ė „ķėģ§ ķģøķ ķ ė¤ģ ģėķģøģ."
@@ -1905,6 +1965,7 @@ msgid "It shows posts from the people you follow as they happen."
msgstr "ė“ź° ķė”ģ°ķė ģ¬ėė¤ģ ź²ģė¬¼ģ“ ģ¬ė¼ģ¤ė ėė” ķģė©ėė¤."
#: src/view/com/auth/HomeLoggedOutCTA.tsx:99
+#: src/view/com/auth/SplashScreen.web.tsx:138
msgid "Jobs"
msgstr "ģ±ģ©"
@@ -1912,8 +1973,8 @@ msgstr "ģ±ģ©"
msgid "Join the waitlist"
msgstr "ėźø°ģ ėŖ
ėØ ė±ė”"
-#: src/view/com/auth/create/Step1.tsx:170
#: src/view/com/auth/create/Step1.tsx:174
+#: src/view/com/auth/create/Step1.tsx:178
msgid "Join the waitlist."
msgstr "ėźø°ģ ėŖ
ėØģ ė±ė”ķģøģ."
@@ -1964,7 +2025,7 @@ msgstr "ė ģģ볓기"
msgid "Learn more about this warning"
msgstr "ģ“ ź²½ź³ ģ ėķ“ ė ģģ볓기"
-#: src/view/screens/Moderation.tsx:243
+#: src/view/screens/Moderation.tsx:262
msgid "Learn more about what is public on Bluesky."
msgstr "Blueskyģģ ź³µź°ėė ķėŖ©ģ ėķ“ ģģøķ ģģ볓ģøģ."
@@ -2020,7 +2081,7 @@ msgstr "ģ¢ģģ ķģķ ģ¬ģ©ģ"
msgid "Liked By"
msgstr "ģ¢ģģ ķģķ ģ¬ģ©ģ"
-#: src/view/com/feeds/FeedSourceCard.tsx:277
+#: src/view/com/feeds/FeedSourceCard.tsx:279
msgid "Liked by {0} {1}"
msgstr "{0}ėŖ
ģ ģ¬ģ©ģź° ģ¢ģķØ"
@@ -2040,7 +2101,7 @@ msgstr "ėģ“ ė“ ź²ģ물ģ ģ¢ģķ©ėė¤"
msgid "Likes"
msgstr "ģ¢ģģ"
-#: src/view/com/post-thread/PostThreadItem.tsx:182
+#: src/view/com/post-thread/PostThreadItem.tsx:183
msgid "Likes on this post"
msgstr "ģ“ ź²ģ물ģ ģ¢ģģ ķģķ©ėė¤"
@@ -2052,19 +2113,19 @@ msgstr "리ģ¤ķø"
msgid "List Avatar"
msgstr "리ģ¤ķø ģė°ķ"
-#: src/view/screens/ProfileList.tsx:323
+#: src/view/screens/ProfileList.tsx:324
msgid "List blocked"
msgstr "리ģ¤ķø ģ°ØėØėØ"
-#: src/view/com/feeds/FeedSourceCard.tsx:231
+#: src/view/com/feeds/FeedSourceCard.tsx:233
msgid "List by {0}"
msgstr "{0} ėģ 리ģ¤ķø"
-#: src/view/screens/ProfileList.tsx:377
+#: src/view/screens/ProfileList.tsx:378
msgid "List deleted"
msgstr "리ģ¤ķø ģģ ėØ"
-#: src/view/screens/ProfileList.tsx:282
+#: src/view/screens/ProfileList.tsx:283
msgid "List muted"
msgstr "리ģ¤ķø 뮤ķøėØ"
@@ -2072,11 +2133,11 @@ msgstr "리ģ¤ķø 뮤ķøėØ"
msgid "List Name"
msgstr "리ģ¤ķø ģ“ė¦"
-#: src/view/screens/ProfileList.tsx:342
+#: src/view/screens/ProfileList.tsx:343
msgid "List unblocked"
msgstr "리ģ¤ķø ģ°ØėØ ķ“ģ ėØ"
-#: src/view/screens/ProfileList.tsx:301
+#: src/view/screens/ProfileList.tsx:302
msgid "List unmuted"
msgstr "리ģ¤ķø ģøė®¤ķøėØ"
@@ -2088,8 +2149,8 @@ msgstr "리ģ¤ķø ģøė®¤ķøėØ"
msgid "Lists"
msgstr "리ģ¤ķø"
-#: src/view/com/post-thread/PostThread.tsx:276
-#: src/view/com/post-thread/PostThread.tsx:284
+#: src/view/com/post-thread/PostThread.tsx:333
+#: src/view/com/post-thread/PostThread.tsx:341
msgid "Load more posts"
msgstr "ė ė§ģ ź²ģ물 ė¶ė¬ģ¤źø°"
@@ -2097,10 +2158,10 @@ msgstr "ė ė§ģ ź²ģ물 ė¶ė¬ģ¤źø°"
msgid "Load new notifications"
msgstr "ģ ģ림 ė¶ė¬ģ¤źø°"
-#: src/view/com/feeds/FeedPage.tsx:190
+#: src/view/com/feeds/FeedPage.tsx:115
#: src/view/screens/Profile.tsx:440
-#: src/view/screens/ProfileFeed.tsx:494
-#: src/view/screens/ProfileList.tsx:680
+#: src/view/screens/ProfileFeed.tsx:495
+#: src/view/screens/ProfileList.tsx:681
msgid "Load new posts"
msgstr "ģ ź²ģ물 ė¶ė¬ģ¤źø°"
@@ -2123,7 +2184,7 @@ msgstr "ė”ź·ø"
msgid "Log out"
msgstr "ė”ź·øģģ"
-#: src/view/screens/Moderation.tsx:136
+#: src/view/screens/Moderation.tsx:155
msgid "Logged-out visibility"
msgstr "ė”ź·øģģ ķģ"
@@ -2135,6 +2196,18 @@ msgstr "ėŖ©ė”ģ ģė ź³ģ ģ¼ė” ė”ź·øģø"
msgid "Make sure this is where you intend to go!"
msgstr "ģ“ź³³ģ“ ė¹ģ ģ“ ź°ź³ ģ ķė ź³³ģøģ§ ķģøķģøģ!"
+#: src/components/dialogs/MutedWords.tsx:71
+msgid "Manage your muted words and tags"
+msgstr ""
+
+#: src/view/com/auth/create/Step2.tsx:118
+msgid "May not be longer than 253 characters"
+msgstr ""
+
+#: src/view/com/auth/create/Step2.tsx:109
+msgid "May only contain letters and numbers"
+msgstr ""
+
#: src/view/screens/Profile.tsx:182
msgid "Media"
msgstr "미ėģ“"
@@ -2148,7 +2221,7 @@ msgid "Mentioned users"
msgstr "ė©ģ
ķ ģ¬ģ©ģ"
#: src/view/com/util/ViewHeader.tsx:81
-#: src/view/screens/Search/Search.tsx:623
+#: src/view/screens/Search/Search.tsx:646
msgid "Menu"
msgstr "ė©ė“"
@@ -2157,7 +2230,7 @@ msgid "Message from server: {0}"
msgstr "ģė²ģģ ė³“ėø ė©ģģ§: {0}"
#: src/Navigation.tsx:115
-#: src/view/screens/Moderation.tsx:64
+#: src/view/screens/Moderation.tsx:66
#: src/view/screens/Settings/index.tsx:625
#: src/view/shell/desktop/LeftNav.tsx:397
#: src/view/shell/Drawer.tsx:511
@@ -2165,7 +2238,7 @@ msgstr "ģė²ģģ ė³“ėø ė©ģģ§: {0}"
msgid "Moderation"
msgstr "ź²ķ "
-#: src/view/com/lists/ListCard.tsx:92
+#: src/view/com/lists/ListCard.tsx:93
#: src/view/com/modals/UserAddRemoveLists.tsx:206
msgid "Moderation list by {0}"
msgstr "{0} ėģ ź²ķ 리ģ¤ķø"
@@ -2174,7 +2247,7 @@ msgstr "{0} ėģ ź²ķ 리ģ¤ķø"
msgid "Moderation list by <0/>"
msgstr "<0/> ėģ ź²ķ 리ģ¤ķø"
-#: src/view/com/lists/ListCard.tsx:90
+#: src/view/com/lists/ListCard.tsx:91
#: src/view/com/modals/UserAddRemoveLists.tsx:204
#: src/view/screens/ProfileList.tsx:772
msgid "Moderation list by you"
@@ -2188,7 +2261,7 @@ msgstr "ź²ķ 리ģ¤ķø ģģ±ėØ"
msgid "Moderation list updated"
msgstr "ź²ķ 리ģ¤ķø ģ
ė°ģ“ķøėØ"
-#: src/view/screens/Moderation.tsx:95
+#: src/view/screens/Moderation.tsx:114
msgid "Moderation lists"
msgstr "ź²ķ 리ģ¤ķø"
@@ -2209,13 +2282,13 @@ msgstr "ģ¤ģ¬ģź° ģ½ķ
ģø ģ ģ¼ė° ź²½ź³ ė„¼ ģ¤ģ ķģµėė¤."
msgid "More feeds"
msgstr "ķ¼ė ė 볓기"
-#: src/view/com/profile/ProfileHeader.tsx:522
-#: src/view/screens/ProfileFeed.tsx:362
-#: src/view/screens/ProfileList.tsx:616
+#: src/view/com/profile/ProfileHeader.tsx:523
+#: src/view/screens/ProfileFeed.tsx:363
+#: src/view/screens/ProfileList.tsx:617
msgid "More options"
msgstr "ģµģ
ė 볓기"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:270
+#: src/view/com/util/forms/PostDropdownBtn.tsx:315
msgid "More post options"
msgstr "ź²ģ물 ģµģ
ė 볓기"
@@ -2223,35 +2296,71 @@ msgstr "ź²ģ물 ģµģ
ė 볓기"
msgid "Most-liked replies first"
msgstr "ģ¢ģģ ė§ģ ģ"
-#: src/view/com/profile/ProfileHeader.tsx:326
+#: src/view/com/auth/create/Step2.tsx:122
+msgid "Must be at least 3 characters"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:253
+msgid "Mute"
+msgstr ""
+
+#: src/components/TagMenu/index.web.tsx:91
+msgid "Mute {truncatedTag}"
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:327
msgid "Mute Account"
msgstr "ź³ģ 뮤ķø"
-#: src/view/screens/ProfileList.tsx:543
+#: src/view/screens/ProfileList.tsx:544
msgid "Mute accounts"
msgstr "ź³ģ 뮤ķø"
-#: src/view/screens/ProfileList.tsx:490
+#: src/components/TagMenu/index.tsx:211
+msgid "Mute all {tag} posts"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:131
+msgid "Mute in tags only"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:116
+msgid "Mute in text & tags"
+msgstr ""
+
+#: src/view/screens/ProfileList.tsx:491
msgid "Mute list"
msgstr "리ģ¤ķø 뮤ķø"
-#: src/view/screens/ProfileList.tsx:274
+#: src/view/screens/ProfileList.tsx:275
msgid "Mute these accounts?"
msgstr "ģ“ ź³ģ ė¤ģ 뮤ķøķģź² ģµėź¹?"
-#: src/view/screens/ProfileList.tsx:278
+#: src/view/screens/ProfileList.tsx:279
msgid "Mute this List"
msgstr "ģ“ ė¦¬ģ¤ķø 뮤ķø"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:171
+#: src/components/dialogs/MutedWords.tsx:109
+msgid "Mute this word in post text and tags"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:124
+msgid "Mute this word in tags only"
+msgstr ""
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:202
msgid "Mute thread"
msgstr "ģ¤ė ė 뮤ķø"
-#: src/view/com/lists/ListCard.tsx:101
+#: src/view/com/util/forms/PostDropdownBtn.tsx:216
+msgid "Mute words & tags"
+msgstr ""
+
+#: src/view/com/lists/ListCard.tsx:102
msgid "Muted"
msgstr "뮤ķøėØ"
-#: src/view/screens/Moderation.tsx:109
+#: src/view/screens/Moderation.tsx:128
msgid "Muted accounts"
msgstr "뮤ķøķ ź³ģ "
@@ -2264,7 +2373,11 @@ msgstr "뮤ķøķ ź³ģ "
msgid "Muted accounts have their posts removed from your feed and from your notifications. Mutes are completely private."
msgstr "ź³ģ ģ 뮤ķøķė©“ ķ¼ėģ ģ림ģģ ķ“ė¹ ź³ģ ģ ź²ģė¬¼ģ“ ģ¬ė¼ģ§ėė¤. ė®¤ķø ėŖ©ė”ģ ģģ ķ ė¹ź³µź°ė” ģ ģ§ė©ėė¤."
-#: src/view/screens/ProfileList.tsx:276
+#: src/view/screens/Moderation.tsx:100
+msgid "Muted words & tags"
+msgstr ""
+
+#: src/view/screens/ProfileList.tsx:277
msgid "Muting is private. Muted accounts can interact with you, but you will not see their posts or receive notifications from them."
msgstr "ė®¤ķø ėŖ©ė”ģ ė¹ź³µź°ģ
ėė¤. 뮤ķøķ ź³ģ ģ ėģ ģķøģģ©ķ ģ ģģ§ė§ ķ“ė¹ ź³ģ ģ ź²ģ물ģ 볓거ė ķ“ė¹ ź³ģ ģ¼ė”ė¶ķ° ģ림ģ ė°ģ ģ ģģµėė¤."
@@ -2272,7 +2385,7 @@ msgstr "ė®¤ķø ėŖ©ė”ģ ė¹ź³µź°ģ
ėė¤. 뮤ķøķ ź³ģ ģ ėģ ģķø
msgid "My Birthday"
msgstr "ė“ ģė
ģģ¼"
-#: src/view/screens/Feeds.tsx:419
+#: src/view/screens/Feeds.tsx:663
msgid "My Feeds"
msgstr "ė“ ķ¼ė"
@@ -2327,6 +2440,10 @@ msgstr "ķė”ģģ ė°ģ“ķ°ģ ėķ ģ ź·¼ ź¶ķģ ģģ§ ģģµėė¤."
msgid "Never lose access to your followers or data."
msgstr "ķė”ģ ėė ė°ģ“ķ°ģ ėķ ģ ź·¼ ź¶ķģ ģģ§ ģģµėė¤."
+#: src/components/dialogs/MutedWords.tsx:244
+msgid "Nevermind"
+msgstr ""
+
#: src/view/screens/Lists.tsx:76
msgctxt "action"
msgid "New"
@@ -2348,17 +2465,17 @@ msgstr "ģ ė¹ė°ė²ķø"
msgid "New Password"
msgstr ""
-#: src/view/com/feeds/FeedPage.tsx:201
+#: src/view/com/feeds/FeedPage.tsx:126
msgctxt "action"
msgid "New post"
msgstr "ģ ź²ģ물"
-#: src/view/screens/Feeds.tsx:581
+#: src/view/screens/Feeds.tsx:555
#: src/view/screens/Notifications.tsx:168
#: src/view/screens/Profile.tsx:382
-#: src/view/screens/ProfileFeed.tsx:432
-#: src/view/screens/ProfileList.tsx:195
-#: src/view/screens/ProfileList.tsx:223
+#: src/view/screens/ProfileFeed.tsx:433
+#: src/view/screens/ProfileList.tsx:196
+#: src/view/screens/ProfileList.tsx:224
#: src/view/shell/desktop/LeftNav.tsx:248
msgid "New post"
msgstr "ģ ź²ģ물"
@@ -2380,7 +2497,7 @@ msgstr "ģė”ģ“ ģ"
msgid "News"
msgstr "ė“ģ¤"
-#: src/view/com/auth/create/CreateAccount.tsx:161
+#: src/view/com/auth/create/CreateAccount.tsx:172
#: src/view/com/auth/login/ForgotPasswordForm.tsx:182
#: src/view/com/auth/login/ForgotPasswordForm.tsx:192
#: src/view/com/auth/login/LoginForm.tsx:291
@@ -2401,10 +2518,10 @@ msgstr "ė¤ģ"
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/PreferencesFollowingFeed.tsx:129
+#: src/view/screens/PreferencesFollowingFeed.tsx:200
+#: src/view/screens/PreferencesFollowingFeed.tsx:235
+#: src/view/screens/PreferencesFollowingFeed.tsx:272
#: src/view/screens/PreferencesThreads.tsx:106
#: src/view/screens/PreferencesThreads.tsx:129
msgid "No"
@@ -2415,7 +2532,7 @@ msgstr "ģėģ"
msgid "No description"
msgstr "ģ¤ėŖ
ģģ"
-#: src/view/com/profile/ProfileHeader.tsx:169
+#: src/view/com/profile/ProfileHeader.tsx:170
msgid "No longer following {0}"
msgstr "ė ģ“ģ {0} ėģ ķė”ģ°ķģ§ ģģ"
@@ -2428,13 +2545,13 @@ msgstr "ģģ§ ģė¦¼ģ“ ģģµėė¤."
msgid "No result"
msgstr "ź²°ź³¼ ģģ"
-#: src/view/screens/Feeds.tsx:524
+#: src/view/screens/Feeds.tsx:495
msgid "No results found for \"{query}\""
msgstr "\"{query}\"ģ ėķ ź²°ź³¼ė„¼ ģ°¾ģ ģ ģģµėė¤"
#: src/view/com/modals/ListAddRemoveUsers.tsx:127
-#: src/view/screens/Search/Search.tsx:280
-#: src/view/screens/Search/Search.tsx:308
+#: src/view/screens/Search/Search.tsx:281
+#: src/view/screens/Search/Search.tsx:309
msgid "No results found for {query}"
msgstr "{query}ģ ėķ ź²°ź³¼ė„¼ ģ°¾ģ ģ ģģµėė¤"
@@ -2460,11 +2577,11 @@ msgstr "ģ°¾ģ ģ ģģ"
msgid "Not right now"
msgstr "ėģ¤ģ ķźø°"
-#: src/view/screens/Moderation.tsx:233
+#: src/view/screens/Moderation.tsx:252
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/Navigation.tsx:447
+#: src/Navigation.tsx:450
#: src/view/screens/Notifications.tsx:124
#: src/view/screens/Notifications.tsx:148
#: src/view/shell/bottom-bar/BottomBar.tsx:205
@@ -2498,7 +2615,7 @@ msgstr "ģ¤ėė ģ"
msgid "Onboarding reset"
msgstr "ģØė³“ė© ģ¬ģ¤ģ "
-#: src/view/com/composer/Composer.tsx:375
+#: src/view/com/composer/Composer.tsx:382
msgid "One or more images is missing alt text."
msgstr "ķė ģ“ģģ ģ“미ģ§ģ ė첓 ķ
ģ¤ķøź° ėė½ėģģµėė¤."
@@ -2515,8 +2632,12 @@ msgstr "ģ“ė°!"
msgid "Open"
msgstr "ź³µź°ģ±"
-#: src/view/com/composer/Composer.tsx:470
-#: src/view/com/composer/Composer.tsx:471
+#: src/view/screens/Moderation.tsx:75
+msgid "Open content filtering settings"
+msgstr ""
+
+#: src/view/com/composer/Composer.tsx:477
+#: src/view/com/composer/Composer.tsx:478
msgid "Open emoji picker"
msgstr "ģ“ėŖØķ°ģ½ ģ ķźø° ģ“źø°"
@@ -2524,7 +2645,11 @@ msgstr "ģ“ėŖØķ°ģ½ ģ ķźø° ģ“źø°"
msgid "Open links with in-app browser"
msgstr "ė§ķ¬ė„¼ ģøģ± ėøė¼ģ°ģ ė” ģ½ėė¤"
-#: src/view/com/pager/FeedsTabBarMobile.tsx:87
+#: src/view/screens/Moderation.tsx:92
+msgid "Open muted words settings"
+msgstr ""
+
+#: src/view/com/home/HomeHeaderLayoutMobile.tsx:49
msgid "Open navigation"
msgstr "ė“ė¹ź²ģ“ģ
ģ“źø°"
@@ -2560,7 +2685,7 @@ msgstr "źµ¬ģ± ź°ė„ķ ģøģ“ ģ¤ģ ģ ģ½ėė¤"
msgid "Opens device photo gallery"
msgstr "źø°źø°ģ ģ¬ģ§ ź°¤ė¬ė¦¬ė„¼ ģ½ėė¤"
-#: src/view/com/profile/ProfileHeader.tsx:419
+#: src/view/com/profile/ProfileHeader.tsx:420
msgid "Opens editor for profile display name, avatar, background image, and description"
msgstr "ķė”ķ ķģ ģ“ė¦, ģė°ķ, ė°°ź²½ ģ“ėÆøģ§ ė° ģ¤ėŖ
ķøģ§źø°ė„¼ ģ½ėė¤"
@@ -2568,11 +2693,11 @@ msgstr "ķė”ķ ķģ ģ“ė¦, ģė°ķ, ė°°ź²½ ģ“ėÆøģ§ ė° ģ¤ėŖ
ķøģ§
msgid "Opens external embeds settings"
msgstr "ģøė¶ ģė² ė ģ¤ģ ģ ģ½ėė¤"
-#: src/view/com/profile/ProfileHeader.tsx:574
+#: src/view/com/profile/ProfileHeader.tsx:575
msgid "Opens followers list"
msgstr "ķė”ģ ėŖ©ė”ģ ģ½ėė¤"
-#: src/view/com/profile/ProfileHeader.tsx:593
+#: src/view/com/profile/ProfileHeader.tsx:594
msgid "Opens following list"
msgstr "ķė”ģ° ģ¤ ėŖ©ė”ģ ģ½ėė¤"
@@ -2600,7 +2725,8 @@ msgstr "ź²ķ ģ¤ģ ģ ģ½ėė¤"
msgid "Opens password reset form"
msgstr "ė¹ė°ė²ķø ģ¬ģ¤ģ ģģģ ģ½ėė¤"
-#: src/view/screens/Feeds.tsx:357
+#: src/view/com/home/HomeHeaderLayout.web.tsx:60
+#: src/view/screens/Feeds.tsx:356
msgid "Opens screen to edit Saved Feeds"
msgstr "ģ ģ„ė ķ¼ė넼 ķøģ§ķ ģ ģė ķė©“ģ ģ½ėė¤"
@@ -2656,8 +2782,8 @@ msgstr "ķģ“ģ§ė„¼ ģ°¾ģ ģ ģģ"
msgid "Page Not Found"
msgstr "ķģ“ģ§ė„¼ ģ°¾ģ ģ ģģ"
-#: src/view/com/auth/create/Step1.tsx:210
-#: src/view/com/auth/create/Step1.tsx:220
+#: src/view/com/auth/create/Step1.tsx:214
+#: src/view/com/auth/create/Step1.tsx:224
#: src/view/com/auth/login/LoginForm.tsx:226
#: src/view/com/auth/login/SetNewPasswordForm.tsx:161
#: src/view/com/modals/DeleteAccount.tsx:202
@@ -2693,15 +2819,15 @@ msgid "Pets"
msgstr "ė°ė ¤ė물"
#: src/view/com/auth/create/Step2.tsx:183
-msgid "Phone number"
-msgstr "ģ ķė²ķø"
+#~ msgid "Phone number"
+#~ msgstr "ģ ķė²ķø"
#: src/view/com/modals/SelfLabel.tsx:121
msgid "Pictures meant for adults."
msgstr "ģ±ģøģ© ģ¬ģ§."
-#: src/view/screens/ProfileFeed.tsx:353
-#: src/view/screens/ProfileList.tsx:580
+#: src/view/screens/ProfileFeed.tsx:354
+#: src/view/screens/ProfileList.tsx:581
msgid "Pin to home"
msgstr "ķģ ź³ ģ "
@@ -2722,14 +2848,18 @@ msgstr "ėģģ ģ¬ģ"
msgid "Plays the GIF"
msgstr "GIF넼 ģ¬ģķ©ėė¤"
-#: src/view/com/auth/create/state.ts:177
+#: src/view/com/auth/create/state.ts:124
msgid "Please choose your handle."
msgstr "ķøė¤ģ ģ
ė „ķģøģ."
-#: src/view/com/auth/create/state.ts:160
+#: src/view/com/auth/create/state.ts:117
msgid "Please choose your password."
msgstr "ė¹ė°ė²ķøė„¼ ģ
ė „ķģøģ."
+#: src/view/com/auth/create/state.ts:131
+msgid "Please complete the verification captcha."
+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 "ģ“ė©ģ¼ģ ė³ź²½ķźø° ģ ģ ģ“ė©ģ¼ģ ķģøķ“ 주ģøģ. ģ“ė ģ“ė©ģ¼ ė³ź²½ ėźµ¬ź° ģ¶ź°ėė ėģ ģ¼ģģ ģ¼ė” ģźµ¬ėė ģ¬ķģ“ė©° ź³§ ģ ź±°ė ģģ ģ
ėė¤."
@@ -2739,22 +2869,22 @@ msgid "Please enter a name for your app password. All spaces is not allowed."
msgstr "ģ± ė¹ė°ė²ķøģ ģ“ė¦ģ ģ
ė „ķģøģ. ėŖØė ź³µė°± 문ģė ķģ©ėģ§ ģģµėė¤."
#: src/view/com/auth/create/Step2.tsx:206
-msgid "Please enter a phone number that can receive SMS text messages."
-msgstr "SMS 문ģ ė©ģģ§ė„¼ ė°ģ ģ ģė ķ“ėķ° ė²ķøė„¼ ģ
ė „ķģøģ."
+#~ msgid "Please enter a phone number that can receive SMS text messages."
+#~ msgstr "SMS 문ģ ė©ģģ§ė„¼ ė°ģ ģ ģė ķ“ėķ° ė²ķøė„¼ ģ
ė „ķģøģ."
#: src/view/com/modals/AddAppPasswords.tsx:145
msgid "Please enter a unique name for this App Password or use our randomly generated one."
msgstr "ģ“ ģ± ė¹ė°ė²ķøģ ėķ“ ź³ ģ ķ ģ“ė¦ģ ģ
ė „ķź±°ė 묓ģģė” ģģ±ė ģ“ė¦ģ ģ¬ģ©ķ©ėė¤."
#: src/view/com/auth/create/state.ts:170
-msgid "Please enter the code you received by SMS."
-msgstr "SMSė” ė°ģ ģ½ė넼 ģ
ė „ķģøģ."
+#~ msgid "Please enter the code you received by SMS."
+#~ msgstr "SMSė” ė°ģ ģ½ė넼 ģ
ė „ķģøģ."
#: src/view/com/auth/create/Step2.tsx:282
-msgid "Please enter the verification code sent to {phoneNumberFormatted}."
-msgstr "{phoneNumberFormatted}(ģ¼)ė” ė³“ė“ģ§ ģøģ¦ ģ½ė넼 ģ
ė „ķģøģ."
+#~ msgid "Please enter the verification code sent to {phoneNumberFormatted}."
+#~ msgstr "{phoneNumberFormatted}(ģ¼)ė” ė³“ė“ģ§ ģøģ¦ ģ½ė넼 ģ
ė „ķģøģ."
-#: src/view/com/auth/create/state.ts:146
+#: src/view/com/auth/create/state.ts:103
msgid "Please enter your email."
msgstr "ģ“ė©ģ¼ģ ģ
ė „ķģøģ."
@@ -2771,7 +2901,7 @@ msgstr "ģ“ ģ½ķ
ģø ź²½ź³ ź° ģėŖ» ģ ģ©ėģė¤ź³ ģź°ķė ģ“ģ 넼
msgid "Please Verify Your Email"
msgstr "ģ“ė©ģ¼ ģøģ¦ķźø°"
-#: src/view/com/composer/Composer.tsx:215
+#: src/view/com/composer/Composer.tsx:222
msgid "Please wait for your link card to finish loading"
msgstr "ė§ķ¬ 칓ė넼 ģģ ķ ė¶ė¬ģ¬ ėź¹ģ§ źø°ė¤ė ¤ģ£¼ģøģ"
@@ -2783,18 +2913,18 @@ msgstr "ģ ģ¹"
msgid "Porn"
msgstr "ķ¬ė„“ė
ø"
-#: src/view/com/composer/Composer.tsx:350
-#: src/view/com/composer/Composer.tsx:358
+#: src/view/com/composer/Composer.tsx:357
+#: src/view/com/composer/Composer.tsx:365
msgctxt "action"
msgid "Post"
msgstr "ź²ģķźø°"
-#: src/view/com/post-thread/PostThread.tsx:246
+#: src/view/com/post-thread/PostThread.tsx:303
msgctxt "description"
msgid "Post"
msgstr "ź²ģ물"
-#: src/view/com/post-thread/PostThreadItem.tsx:174
+#: src/view/com/post-thread/PostThreadItem.tsx:175
msgid "Post by {0}"
msgstr "{0} ėģ ź²ģ물"
@@ -2804,11 +2934,11 @@ msgstr "{0} ėģ ź²ģ물"
msgid "Post by @{0}"
msgstr "@{0} ėģ ź²ģ물"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:84
+#: src/view/com/util/forms/PostDropdownBtn.tsx:90
msgid "Post deleted"
msgstr "ź²ģ물 ģģ ėØ"
-#: src/view/com/post-thread/PostThread.tsx:398
+#: src/view/com/post-thread/PostThread.tsx:462
msgid "Post hidden"
msgstr "ź²ģ물 ģØź¹"
@@ -2820,14 +2950,22 @@ msgstr "ź²ģ물 ģøģ“"
msgid "Post Languages"
msgstr "ź²ģ물 ģøģ“"
-#: src/view/com/post-thread/PostThread.tsx:450
+#: src/view/com/post-thread/PostThread.tsx:514
msgid "Post not found"
msgstr "ź²ģ물ģ ģ°¾ģ ģ ģģ"
+#: src/components/TagMenu/index.tsx:257
+msgid "posts"
+msgstr ""
+
#: src/view/screens/Profile.tsx:180
msgid "Posts"
msgstr "ź²ģ물"
+#: src/components/dialogs/MutedWords.tsx:77
+msgid "Posts can be muted based on their text, their tags, or both."
+msgstr ""
+
#: src/view/com/posts/FeedErrorMessage.tsx:64
msgid "Posts hidden"
msgstr "ź²ģ물 ģØź²Øģ§"
@@ -2849,7 +2987,7 @@ msgid "Prioritize Your Follows"
msgstr "ė“ ķė”ģ° ėØ¼ģ ķģ"
#: src/view/screens/Settings/index.tsx:632
-#: src/view/shell/desktop/RightNav.tsx:80
+#: src/view/shell/desktop/RightNav.tsx:72
msgid "Privacy"
msgstr "ź°ģøģ 볓"
@@ -2892,11 +3030,11 @@ msgstr "ģ¼ź“ 뮤ķøķź±°ė ģ°ØėØķ ģ ģė ź³µź°ģ ģ“ź³ ź³µģ ź°
msgid "Public, shareable lists which can drive feeds."
msgstr "ķ¼ė넼 ķģķ ģ ģė ź³µź°ģ ģ“ź³ ź³µģ ź°ė„ķ ėŖ©ė”ģ
ėė¤."
-#: src/view/com/composer/Composer.tsx:335
+#: src/view/com/composer/Composer.tsx:342
msgid "Publish post"
msgstr "ź²ģ물 ź²ģķźø°"
-#: src/view/com/composer/Composer.tsx:335
+#: src/view/com/composer/Composer.tsx:342
msgid "Publish reply"
msgstr "ėµźø ź²ģķźø°"
@@ -2930,6 +3068,7 @@ msgstr "ģ¶ģ² ķ¼ė"
msgid "Recommended Users"
msgstr "ģ¶ģ² ģ¬ģ©ģ"
+#: src/components/dialogs/MutedWords.tsx:249
#: src/view/com/modals/ListAddRemoveUsers.tsx:264
#: src/view/com/modals/SelfLabel.tsx:83
#: src/view/com/modals/UserAddRemoveLists.tsx:219
@@ -2938,7 +3077,7 @@ msgstr "ģ¶ģ² ģ¬ģ©ģ"
msgid "Remove"
msgstr "ģ ź±°"
-#: src/view/com/feeds/FeedSourceCard.tsx:106
+#: src/view/com/feeds/FeedSourceCard.tsx:108
msgid "Remove {0} from my feeds?"
msgstr "{0}ģ(넼) ė“ ķ¼ėģģ ģ ź±°ķģź² ģµėź¹?"
@@ -2951,11 +3090,11 @@ msgstr "ź³ģ ģ ź±°"
msgid "Remove feed"
msgstr "ķ¼ė ģ ź±°"
-#: src/view/com/feeds/FeedSourceCard.tsx:105
-#: src/view/com/feeds/FeedSourceCard.tsx:167
-#: src/view/com/feeds/FeedSourceCard.tsx:172
-#: src/view/com/feeds/FeedSourceCard.tsx:243
-#: src/view/screens/ProfileFeed.tsx:272
+#: src/view/com/feeds/FeedSourceCard.tsx:107
+#: src/view/com/feeds/FeedSourceCard.tsx:169
+#: src/view/com/feeds/FeedSourceCard.tsx:174
+#: src/view/com/feeds/FeedSourceCard.tsx:245
+#: src/view/screens/ProfileFeed.tsx:273
msgid "Remove from my feeds"
msgstr "ė“ ķ¼ėģģ ģ ź±°"
@@ -2967,11 +3106,15 @@ msgstr "ģ“ėÆøģ§ ģ ź±°"
msgid "Remove image preview"
msgstr "ģ“ėÆøģ§ ėÆøė¦¬ė³“źø° ģ ź±°"
+#: src/components/dialogs/MutedWords.tsx:294
+msgid "Remove mute word from your list"
+msgstr ""
+
#: src/view/com/modals/Repost.tsx:47
msgid "Remove repost"
msgstr "ģ¬ź²ģ넼 ģ·Øģķ©ėė¤"
-#: src/view/com/feeds/FeedSourceCard.tsx:173
+#: src/view/com/feeds/FeedSourceCard.tsx:175
msgid "Remove this feed from my feeds?"
msgstr "ģ“ ķ¼ė넼 ė“ ķ¼ėģģ ģ ź±°ķģź² ģµėź¹?"
@@ -2984,8 +3127,8 @@ msgstr "ģ“ ķ¼ė넼 ģ ģ„ė ķ¼ėģģ ģ ź±°ķģź² ģµėź¹?"
msgid "Removed from list"
msgstr "리ģ¤ķøģģ ģ ź±°ėØ"
-#: src/view/com/feeds/FeedSourceCard.tsx:111
-#: src/view/com/feeds/FeedSourceCard.tsx:178
+#: src/view/com/feeds/FeedSourceCard.tsx:113
+#: src/view/com/feeds/FeedSourceCard.tsx:180
msgid "Removed from my feeds"
msgstr "ė“ ķ¼ėģģ ģ ź±°ėØ"
@@ -3001,16 +3144,16 @@ msgstr "ėµźø"
msgid "Replies to this thread are disabled"
msgstr "ģ“ ģ¤ė ėģ ėķ ėµźøģ“ ė¹ķģ±ķė©ėė¤."
-#: src/view/com/composer/Composer.tsx:348
+#: src/view/com/composer/Composer.tsx:355
msgctxt "action"
msgid "Reply"
msgstr "ėµźø"
-#: src/view/screens/PreferencesHomeFeed.tsx:144
+#: src/view/screens/PreferencesFollowingFeed.tsx:144
msgid "Reply Filters"
msgstr "ėµźø ķķ°"
-#: src/view/com/post/Post.tsx:166
+#: src/view/com/post/Post.tsx:167
#: src/view/com/posts/FeedItem.tsx:287
msgctxt "description"
msgid "Reply to <0/>"
@@ -3020,20 +3163,20 @@ msgstr "<0/> ėģź² 볓ė“ė ėµźø"
msgid "Report {collectionName}"
msgstr "{collectionName} ģ ź³ "
-#: src/view/com/profile/ProfileHeader.tsx:360
+#: src/view/com/profile/ProfileHeader.tsx:361
msgid "Report Account"
msgstr "ź³ģ ģ ź³ "
-#: src/view/screens/ProfileFeed.tsx:292
+#: src/view/screens/ProfileFeed.tsx:293
msgid "Report feed"
msgstr "ķ¼ė ģ ź³ "
-#: src/view/screens/ProfileList.tsx:458
+#: src/view/screens/ProfileList.tsx:459
msgid "Report List"
msgstr "리ģ¤ķø ģ ź³ "
#: src/view/com/modals/report/SendReportButton.tsx:37
-#: src/view/com/util/forms/PostDropdownBtn.tsx:210
+#: src/view/com/util/forms/PostDropdownBtn.tsx:255
msgid "Report post"
msgstr "ź²ģ물 ģ ź³ "
@@ -3070,7 +3213,7 @@ msgstr "<0/> ėģ“ ģ¬ź²ģķØ"
msgid "reposted your post"
msgstr "ėģ“ ė“ ź²ģ물ģ ģ¬ź²ģķģµėė¤"
-#: src/view/com/post-thread/PostThreadItem.tsx:187
+#: src/view/com/post-thread/PostThreadItem.tsx:188
msgid "Reposts of this post"
msgstr "ģ“ ź²ģ물ģ ģ¬ź²ģ"
@@ -3080,8 +3223,8 @@ msgid "Request Change"
msgstr "ė³ź²½ ģģ²"
#: src/view/com/auth/create/Step2.tsx:219
-msgid "Request code"
-msgstr "ģ½ė ģģ²"
+#~ msgid "Request code"
+#~ msgstr "ģ½ė ģģ²"
#: src/view/com/modals/ChangePassword.tsx:239
#: src/view/com/modals/ChangePassword.tsx:241
@@ -3092,7 +3235,7 @@ msgstr ""
msgid "Require alt text before posting"
msgstr "ź²ģķźø° ģ ė첓 ķ
ģ¤ķø ķģ"
-#: src/view/com/auth/create/Step1.tsx:149
+#: src/view/com/auth/create/Step1.tsx:153
msgid "Required for this provider"
msgstr "ģ“ ģ ź³µģģģ ķģ"
@@ -3144,9 +3287,8 @@ msgstr "ģ¤ė„ź° ė°ģķ ė§ģ§ė§ ģģ
ģ ė¤ģ ģėķ©ėė¤"
#: src/screens/Onboarding/StepInterests/index.tsx:221
#: src/screens/Onboarding/StepInterests/index.tsx:224
-#: src/view/com/auth/create/CreateAccount.tsx:170
-#: src/view/com/auth/create/CreateAccount.tsx:175
-#: src/view/com/auth/create/Step2.tsx:255
+#: src/view/com/auth/create/CreateAccount.tsx:181
+#: src/view/com/auth/create/CreateAccount.tsx:186
#: src/view/com/auth/login/LoginForm.tsx:268
#: src/view/com/auth/login/LoginForm.tsx:271
#: src/view/com/util/error/ErrorMessage.tsx:55
@@ -3155,16 +3297,16 @@ msgid "Retry"
msgstr "ė¤ģ ģė"
#: src/view/com/auth/create/Step2.tsx:247
-msgid "Retry."
-msgstr "ė¤ģ ģėķźø°"
+#~ msgid "Retry."
+#~ msgstr "ė¤ģ ģėķźø°"
#: src/view/screens/ProfileList.tsx:898
msgid "Return to previous page"
msgstr "ģ“ģ ķģ“ģ§ė” ėģź°ėė¤"
#: src/view/shell/desktop/RightNav.tsx:55
-msgid "SANDBOX. Posts and accounts are not permanent."
-msgstr "ģėė°ģ¤. źøź³¼ ź³ģ ģ ģźµ¬ģ ģ“ģ§ ģģµėė¤."
+#~ msgid "SANDBOX. Posts and accounts are not permanent."
+#~ msgstr "ģėė°ģ¤. źøź³¼ ź³ģ ģ ģźµ¬ģ ģ“ģ§ ģģµėė¤."
#: src/view/com/lightbox/Lightbox.tsx:132
#: src/view/com/modals/CreateOrEditList.tsx:345
@@ -3177,7 +3319,7 @@ msgstr "ģ ģ„"
#: src/view/com/modals/ChangeHandle.tsx:173
#: src/view/com/modals/CreateOrEditList.tsx:337
#: src/view/com/modals/EditProfile.tsx:224
-#: src/view/screens/ProfileFeed.tsx:345
+#: src/view/screens/ProfileFeed.tsx:346
msgid "Save"
msgstr "ģ ģ„"
@@ -3217,14 +3359,14 @@ msgstr "ź³¼ķ"
msgid "Scroll to top"
msgstr "ė§Ø ģė” ģ¤ķ¬ė”¤"
-#: src/Navigation.tsx:437
+#: src/Navigation.tsx:440
#: src/view/com/auth/LoggedOut.tsx:122
#: src/view/com/modals/ListAddRemoveUsers.tsx:75
#: src/view/com/util/forms/SearchInput.tsx:67
#: src/view/com/util/forms/SearchInput.tsx:79
-#: src/view/screens/Search/Search.tsx:418
-#: src/view/screens/Search/Search.tsx:645
-#: src/view/screens/Search/Search.tsx:663
+#: src/view/screens/Search/Search.tsx:419
+#: src/view/screens/Search/Search.tsx:668
+#: src/view/screens/Search/Search.tsx:686
#: src/view/shell/bottom-bar/BottomBar.tsx:159
#: src/view/shell/desktop/LeftNav.tsx:324
#: src/view/shell/desktop/Search.tsx:214
@@ -3234,11 +3376,19 @@ msgstr "ė§Ø ģė” ģ¤ķ¬ė”¤"
msgid "Search"
msgstr "ź²ģ"
-#: src/view/screens/Search/Search.tsx:712
+#: src/view/screens/Search/Search.tsx:735
#: src/view/shell/desktop/Search.tsx:255
msgid "Search for \"{query}\""
msgstr "\"{query}\"ģ ėķ ź²ģ ź²°ź³¼"
+#: src/components/TagMenu/index.tsx:145
+msgid "Search for all posts by @{authorHandle} with tag {tag}"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:90
+msgid "Search for all posts with tag {tag}"
+msgstr ""
+
#: src/view/com/auth/LoggedOut.tsx:104
#: src/view/com/auth/LoggedOut.tsx:105
#: src/view/com/modals/ListAddRemoveUsers.tsx:70
@@ -3249,6 +3399,22 @@ msgstr "ģ¬ģ©ģ ź²ģķźø°"
msgid "Security Step Required"
msgstr "볓ģ ėØź³ ķģ"
+#: src/components/TagMenu/index.web.tsx:50
+msgid "See {truncatedTag} posts"
+msgstr ""
+
+#: src/components/TagMenu/index.web.tsx:67
+msgid "See {truncatedTag} posts by user"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:128
+msgid "See <0>{tag}0> posts"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:189
+msgid "See <0>{tag}0> posts by this user"
+msgstr ""
+
#: src/view/screens/SavedFeeds.tsx:163
msgid "See this guide"
msgstr "ģ“ ź°ģ“ė"
@@ -3273,7 +3439,7 @@ msgstr "기씓 ź³ģ ģģ ģ ķ"
msgid "Select option {i} of {numItems}"
msgstr "{numItems}ź° ģ¤ {i}ė²ģ§ø ģµģ
ģ ģ ķķ©ėė¤"
-#: src/view/com/auth/create/Step1.tsx:99
+#: src/view/com/auth/create/Step1.tsx:103
#: src/view/com/auth/login/LoginForm.tsx:150
msgid "Select service"
msgstr "ģė¹ģ¤ ģ ķ"
@@ -3286,7 +3452,7 @@ msgstr "ģėģģ ķė”ģ°ķ ź³ģ ģ ģ ķķģøģ"
msgid "Select the service that hosts your data."
msgstr ""
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:90
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:96
msgid "Select topical feeds to follow from the list below"
msgstr "ģė ėŖ©ė”ģģ ķė”ģ°ķ ķģ ķ¼ė넼 ģ ķķģøģ"
@@ -3307,8 +3473,8 @@ msgid "Select your interests from the options below"
msgstr "ģė ģµģ
ģģ ź“ģ¬ģ¬ė„¼ ģ ķķģøģ"
#: src/view/com/auth/create/Step2.tsx:155
-msgid "Select your phone's country"
-msgstr "ģ ķė²ķø źµź° ģ ķ"
+#~ msgid "Select your phone's country"
+#~ msgstr "ģ ķė²ķø źµź° ģ ķ"
#: src/view/screens/LanguageSettings.tsx:190
msgid "Select your preferred language for translations in your feed."
@@ -3387,19 +3553,19 @@ msgstr ""
msgid "Set new password"
msgstr "ģ ė¹ė°ė²ķø ģ¤ģ "
-#: src/view/com/auth/create/Step1.tsx:221
+#: src/view/com/auth/create/Step1.tsx:225
msgid "Set password"
msgstr "ė¹ė°ė²ķø ģ¤ģ "
-#: src/view/screens/PreferencesHomeFeed.tsx:225
+#: src/view/screens/PreferencesFollowingFeed.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
+#: src/view/screens/PreferencesFollowingFeed.tsx:122
msgid "Set this setting to \"No\" to hide all replies from your feed."
msgstr "ķ¼ėģģ ėŖØė ėµźøģ ģØźø°ė ¤ė©“ ģ“ ģ¤ģ ģ \"ģėģ\"ė” ģ¤ģ ķ©ėė¤."
-#: src/view/screens/PreferencesHomeFeed.tsx:191
+#: src/view/screens/PreferencesFollowingFeed.tsx:191
msgid "Set this setting to \"No\" to hide all reposts from your feed."
msgstr "ķ¼ėģģ ėŖØė ģ¬ź²ģ넼 ģØźø°ė ¤ė©“ ģ“ ģ¤ģ ģ \"ģėģ\"ė” ģ¤ģ ķ©ėė¤."
@@ -3408,8 +3574,12 @@ msgid "Set this setting to \"Yes\" to show replies in a threaded view. This is a
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 "ķė”ģ°ķ ķ¼ėģ ģ ģ„ė ķ¼ė ģķģ ķģķė ¤ė©“ ģ“ ģ¤ģ ģ \"ģ\"ė” ģ¤ģ ķ©ėė¤. ģ“ė ģ¤ķģ ģø źø°ė„ģ
ėė¤."
+#~ 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/PreferencesFollowingFeed.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/screens/Onboarding/Layout.tsx:50
msgid "Set up your account"
@@ -3427,7 +3597,7 @@ msgstr "ė¹ė°ė²ķø ģ¬ģ¤ģ ģ ģķ ģ“ė©ģ¼ģ ģ¤ģ ķ©ėė¤"
msgid "Sets hosting provider for password reset"
msgstr "ė¹ė°ė²ķø ģ¬ģ¤ģ ģ ģķ ķøģ¤ķ
ģ ź³µģ넼 ģ¤ģ ķ©ėė¤"
-#: src/view/com/auth/create/Step1.tsx:100
+#: src/view/com/auth/create/Step1.tsx:104
#: src/view/com/auth/login/LoginForm.tsx:151
msgid "Sets server for the Bluesky client"
msgstr "Bluesky ķ“ė¼ģ“ģøķøė„¼ ģķ ģė²ė„¼ ģ¤ģ ķ©ėė¤"
@@ -3449,13 +3619,13 @@ msgctxt "action"
msgid "Share"
msgstr "ź³µģ "
-#: src/view/com/profile/ProfileHeader.tsx:294
-#: src/view/com/util/forms/PostDropdownBtn.tsx:153
-#: src/view/screens/ProfileList.tsx:417
+#: src/view/com/profile/ProfileHeader.tsx:295
+#: src/view/com/util/forms/PostDropdownBtn.tsx:184
+#: src/view/screens/ProfileList.tsx:418
msgid "Share"
msgstr "ź³µģ "
-#: src/view/screens/ProfileFeed.tsx:304
+#: src/view/screens/ProfileFeed.tsx:305
msgid "Share feed"
msgstr "ķ¼ė ź³µģ "
@@ -3467,7 +3637,7 @@ msgstr "ķ¼ė ź³µģ "
msgid "Show"
msgstr "ķģ"
-#: src/view/screens/PreferencesHomeFeed.tsx:68
+#: src/view/screens/PreferencesFollowingFeed.tsx:68
msgid "Show all replies"
msgstr "ėŖØė ėµźø ķģ"
@@ -3479,21 +3649,21 @@ msgstr "묓ģķź³ ķģ"
msgid "Show embeds from {0}"
msgstr "{0} ģė² ė ķģ"
-#: src/view/com/profile/ProfileHeader.tsx:458
+#: src/view/com/profile/ProfileHeader.tsx:459
msgid "Show follows similar to {0}"
msgstr "{0} ėź³¼ ė¹ģ·ķ ķė”ģ° ķģ"
-#: src/view/com/post-thread/PostThreadItem.tsx:539
-#: src/view/com/post/Post.tsx:197
+#: src/view/com/post-thread/PostThreadItem.tsx:538
+#: src/view/com/post/Post.tsx:198
#: src/view/com/posts/FeedItem.tsx:363
msgid "Show More"
msgstr "ė 볓기"
-#: src/view/screens/PreferencesHomeFeed.tsx:258
+#: src/view/screens/PreferencesFollowingFeed.tsx:258
msgid "Show Posts from My Feeds"
msgstr "ė“ ķ¼ėģģ ź²ģ물 ķģ"
-#: src/view/screens/PreferencesHomeFeed.tsx:222
+#: src/view/screens/PreferencesFollowingFeed.tsx:222
msgid "Show Quote Posts"
msgstr "ģøģ© ź²ģ물 ķģ"
@@ -3509,7 +3679,7 @@ msgstr "ķė”ģ° ģ¤ģø ķ¼ėģ ģøģ© ķģ"
msgid "Show re-posts in Following feed"
msgstr "ķė”ģ° ģ¤ģø ķ¼ėģ ģ¬ź²ģ ķģ"
-#: src/view/screens/PreferencesHomeFeed.tsx:119
+#: src/view/screens/PreferencesFollowingFeed.tsx:119
msgid "Show Replies"
msgstr "ėµźø ķģ"
@@ -3525,11 +3695,11 @@ msgstr "ķė”ģ° ģ¤ģø ķ¼ėģ ėµźø ķģ"
msgid "Show replies in Following feed"
msgstr "ķė”ģ° ģ¤ģø ķ¼ėģ ėµźø ķģ"
-#: src/view/screens/PreferencesHomeFeed.tsx:70
+#: src/view/screens/PreferencesFollowingFeed.tsx:70
msgid "Show replies with at least {value} {0}"
msgstr "ģ¢ģģź° {value}ź° ģ“ģģø ėµźø ķģ"
-#: src/view/screens/PreferencesHomeFeed.tsx:188
+#: src/view/screens/PreferencesFollowingFeed.tsx:188
msgid "Show Reposts"
msgstr "ģ¬ź²ģ ķģ"
@@ -3546,18 +3716,18 @@ msgstr "ģ½ķ
ģø ķģ"
msgid "Show users"
msgstr "ģ¬ģ©ģ ķģ"
-#: src/view/com/profile/ProfileHeader.tsx:461
+#: src/view/com/profile/ProfileHeader.tsx:462
msgid "Shows a list of users similar to this user."
msgstr "ģ“ ģ¬ģ©ģģ ģ ģ¬ķ ģ¬ģ©ģ ėŖ©ė”ģ ķģķ©ėė¤"
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:124
-#: src/view/com/profile/ProfileHeader.tsx:505
+#: src/view/com/profile/ProfileHeader.tsx:506
msgid "Shows posts from {0} in your feed"
msgstr "ķ¼ėģ {0} ėģ ź²ģ물ģ ķģķ©ėė¤"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:70
#: src/view/com/auth/login/Login.tsx:98
-#: src/view/com/auth/SplashScreen.tsx:54
+#: src/view/com/auth/SplashScreen.tsx:79
#: src/view/shell/bottom-bar/BottomBar.tsx:285
#: src/view/shell/bottom-bar/BottomBar.tsx:286
#: src/view/shell/bottom-bar/BottomBar.tsx:288
@@ -3570,8 +3740,8 @@ 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
+#: src/view/com/auth/SplashScreen.tsx:82
+#: src/view/com/auth/SplashScreen.web.tsx:91
msgid "Sign In"
msgstr "ė”ź·øģø"
@@ -3638,8 +3808,8 @@ msgid "Skip this flow"
msgstr "ģ“ ėØź³ 걓ėė°źø°"
#: src/view/com/auth/create/Step2.tsx:82
-msgid "SMS verification"
-msgstr "SMS ģøģ¦"
+#~ msgid "SMS verification"
+#~ msgstr "SMS ģøģ¦"
#: src/screens/Onboarding/index.tsx:40
msgid "Software Dev"
@@ -3653,7 +3823,7 @@ msgstr "ģķķøģØģ“ ź°ė°"
msgid "Something went wrong. Check your email and try again."
msgstr "ė¬øģ ź° ė°ģķģµėė¤. ģ“ė©ģ¼ģ ķģøķ ķ ė¤ģ ģėķģøģ."
-#: src/App.native.tsx:61
+#: src/App.native.tsx:63
msgid "Sorry! Your session expired. Please log in again."
msgstr "ģ£ģ”ķ©ėė¤. ģøģ
ģ“ ė§ė£ėģģµėė¤. ė¤ģ ė”ź·øģøķ“ 주ģøģ."
@@ -3698,7 +3868,7 @@ msgstr "ģ¤ķ 리ė¶"
msgid "Submit"
msgstr "ķģø"
-#: src/view/screens/ProfileList.tsx:607
+#: src/view/screens/ProfileList.tsx:608
msgid "Subscribe"
msgstr "구ė
"
@@ -3707,11 +3877,11 @@ msgstr "구ė
"
msgid "Subscribe to the {0} feed"
msgstr "{0} ķ¼ė 구ė
ķźø°"
-#: src/view/screens/ProfileList.tsx:603
+#: src/view/screens/ProfileList.tsx:604
msgid "Subscribe to this list"
msgstr "ģ“ ė¦¬ģ¤ķø 구ė
ķźø°"
-#: src/view/screens/Search/Search.tsx:373
+#: src/view/screens/Search/Search.tsx:374
msgid "Suggested Follows"
msgstr "ķė”ģ° ģ¶ģ²"
@@ -3755,6 +3925,14 @@ msgstr "ģģ¤ķ
"
msgid "System log"
msgstr "ģģ¤ķ
ė”ź·ø"
+#: src/components/dialogs/MutedWords.tsx:288
+msgid "tag"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:74
+msgid "Tag menu: {tag}"
+msgstr ""
+
#: src/view/com/modals/crop-image/CropImage.web.tsx:112
msgid "Tall"
msgstr "ģøė”"
@@ -3767,7 +3945,7 @@ msgstr "ķķģ¬ ģ 첓 ķ¬źø°ė” ė“
ėė¤"
msgid "Tech"
msgstr "źø°ģ "
-#: src/view/shell/desktop/RightNav.tsx:89
+#: src/view/shell/desktop/RightNav.tsx:81
msgid "Terms"
msgstr "ģ“ģ©ģ½ź“"
@@ -3778,12 +3956,20 @@ msgstr "ģ“ģ©ģ½ź“"
msgid "Terms of Service"
msgstr "ģė¹ģ¤ ģ“ģ©ģ½ź“"
+#: src/components/dialogs/MutedWords.tsx:288
+msgid "text"
+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:262
+#: src/view/com/auth/create/CreateAccount.tsx:94
+msgid "That handle is already taken."
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:263
msgid "The account will be able to interact with you after unblocking."
msgstr "ģ°ØėØģ ķ“ģ ķė©“ ķ“ė¹ ź³ģ ģ“ ėģ ģķøģģ©ķ ģ ģź² ė©ėė¤."
@@ -3799,7 +3985,7 @@ msgstr "ģ ģź¶ ģ ģ±
ģ <0/>(ģ¼)ė” ģ“ėķģµėė¤"
msgid "The following steps will help customize your Bluesky experience."
msgstr "ė¤ģ ėØź³ė Bluesky ķź²½ģ ė§ģ¶¤ ģ¤ģ ķė ė° ėģģ“ ė©ėė¤."
-#: src/view/com/post-thread/PostThread.tsx:453
+#: src/view/com/post-thread/PostThread.tsx:517
msgid "The post may have been deleted."
msgstr "ź²ģė¬¼ģ“ ģģ ėģģ ģ ģģµėė¤."
@@ -3819,7 +4005,7 @@ msgstr "ģė¹ģ¤ ģ“ģ©ģ½ź“ģ ė¤ģģ¼ė” ģ“ėķģµėė¤:"
msgid "There are many feeds to try:"
msgstr "ģėķ“ ė³¼ ė§ķ ķ¼ė:"
-#: src/view/screens/ProfileFeed.tsx:549
+#: src/view/screens/ProfileFeed.tsx:550
msgid "There was an an issue contacting the server, please check your internet connection and try again."
msgstr "ģė²ģ ģ°ź²°ķė ėģ ė¬øģ ź° ė°ģķģµėė¤. ģøķ°ė· ģ°ź²°ģ ķģøķ ķ ė¤ģ ģėķģøģ."
@@ -3827,12 +4013,12 @@ msgstr "ģė²ģ ģ°ź²°ķė ėģ ė¬øģ ź° ė°ģķģµėė¤. ģøķ°ė·
msgid "There was an an issue removing this feed. Please check your internet connection and try again."
msgstr "ģ“ ķ¼ė넼 ģģ ķė ėģ ė¬øģ ź° ė°ģķģµėė¤. ģøķ°ė· ģ°ź²°ģ ķģøķ ķ ė¤ģ ģėķģøģ."
-#: src/view/screens/ProfileFeed.tsx:209
+#: src/view/screens/ProfileFeed.tsx:210
msgid "There was an an issue updating your feeds, please check your internet connection and try again."
msgstr "ķ¼ė넼 ģ
ė°ģ“ķøķė ėģ ė¬øģ ź° ė°ģķģµėė¤. ģøķ°ė· ģ°ź²°ģ ķģøķ ķ ė¤ģ ģėķģøģ."
-#: src/view/screens/ProfileFeed.tsx:236
-#: src/view/screens/ProfileList.tsx:266
+#: src/view/screens/ProfileFeed.tsx:237
+#: src/view/screens/ProfileList.tsx:267
#: src/view/screens/SavedFeeds.tsx:209
#: src/view/screens/SavedFeeds.tsx:231
#: src/view/screens/SavedFeeds.tsx:252
@@ -3841,9 +4027,9 @@ msgstr "ģė²ģ ģ°ź²°ķė ėģ ė¬øģ ź° ė°ģķģµėė¤"
#: src/view/com/auth/onboarding/RecommendedFeedsItem.tsx:57
#: src/view/com/auth/onboarding/RecommendedFeedsItem.tsx:66
-#: src/view/com/feeds/FeedSourceCard.tsx:113
-#: src/view/com/feeds/FeedSourceCard.tsx:127
-#: src/view/com/feeds/FeedSourceCard.tsx:181
+#: src/view/com/feeds/FeedSourceCard.tsx:115
+#: src/view/com/feeds/FeedSourceCard.tsx:129
+#: src/view/com/feeds/FeedSourceCard.tsx:183
msgid "There was an issue contacting your server"
msgstr "ģė²ģ ģ°ź²°ķė ėģ ė¬øģ ź° ė°ģķģµėė¤"
@@ -3875,19 +4061,19 @@ msgstr "ģ± ė¹ė°ė²ķøė„¼ ź°ģ øģ¤ė ėģ ė¬øģ ź° ė°ģķģµėė¤"
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:93
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:105
-#: src/view/com/profile/ProfileHeader.tsx:156
-#: src/view/com/profile/ProfileHeader.tsx:177
-#: src/view/com/profile/ProfileHeader.tsx:216
-#: src/view/com/profile/ProfileHeader.tsx:229
-#: src/view/com/profile/ProfileHeader.tsx:249
-#: src/view/com/profile/ProfileHeader.tsx:271
+#: src/view/com/profile/ProfileHeader.tsx:157
+#: src/view/com/profile/ProfileHeader.tsx:178
+#: src/view/com/profile/ProfileHeader.tsx:217
+#: src/view/com/profile/ProfileHeader.tsx:230
+#: src/view/com/profile/ProfileHeader.tsx:250
+#: src/view/com/profile/ProfileHeader.tsx:272
msgid "There was an issue! {0}"
msgstr "ė¬øģ ź° ė°ģķģµėė¤! {0}"
-#: src/view/screens/ProfileList.tsx:287
-#: src/view/screens/ProfileList.tsx:306
-#: src/view/screens/ProfileList.tsx:328
-#: src/view/screens/ProfileList.tsx:347
+#: src/view/screens/ProfileList.tsx:288
+#: src/view/screens/ProfileList.tsx:307
+#: src/view/screens/ProfileList.tsx:329
+#: src/view/screens/ProfileList.tsx:348
msgid "There was an issue. Please check your internet connection and try again."
msgstr "ė¬øģ ź° ė°ģķģµėė¤. ģøķ°ė· ģ°ź²°ģ ķģøķ ķ ė¤ģ ģėķģøģ."
@@ -3900,8 +4086,8 @@ msgid "There's been a rush of new users to Bluesky! We'll activate your account
msgstr "Blueskyģ ģ ź· ģ¬ģ©ģź° ėŖ°ė¦¬ź³ ģģµėė¤! ģµėķ 빨리 ź³ģ ģ ķģ±ķķ“ ėė¦¬ź² ģµėė¤."
#: src/view/com/auth/create/Step2.tsx:55
-msgid "There's something wrong with this number. Please choose your country and enter your full phone number!"
-msgstr "ģėŖ»ė ė²ķøģ
ėė¤. źµź°ė„¼ ģ ķķź³ ģ 첓 ģ ķė²ķøė„¼ ģ
ė „ķģøģ."
+#~ msgid "There's something wrong with this number. Please choose your country and enter your full phone number!"
+#~ msgstr "ģėŖ»ė ė²ķøģ
ėė¤. źµź°ė„¼ ģ ķķź³ ģ 첓 ģ ķė²ķøė„¼ ģ
ė „ķģøģ."
#: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:138
msgid "These are popular accounts you might like:"
@@ -3936,8 +4122,8 @@ msgid "This feed is currently receiving high traffic and is temporarily unavaila
msgstr "ģ“ ķ¼ėė ķģ¬ ķøėķ½ģ“ ė§ģ ģ¼ģģ ģ¼ė” ģ¬ģ©ķ ģ ģģµėė¤. ėģ¤ģ ė¤ģ ģėķ“ ģ£¼ģøģ."
#: src/view/screens/Profile.tsx:420
-#: src/view/screens/ProfileFeed.tsx:475
-#: src/view/screens/ProfileList.tsx:660
+#: src/view/screens/ProfileFeed.tsx:476
+#: src/view/screens/ProfileList.tsx:661
msgid "This feed is empty!"
msgstr "ģ“ ķ¼ėė ė¹ģ“ ģģµėė¤."
@@ -3965,7 +4151,7 @@ msgstr "ģ“ ė¦¬ģ¤ķøė ė¹ģ“ ģģµėė¤."
msgid "This name is already in use"
msgstr "ģ“ ģ“ė¦ģ ģ“미 ģ¬ģ© ģ¤ģ
ėė¤"
-#: src/view/com/post-thread/PostThreadItem.tsx:122
+#: src/view/com/post-thread/PostThreadItem.tsx:125
msgid "This post has been deleted."
msgstr "ģ“ ź²ģ물ģ ģģ ėģģµėė¤."
@@ -3989,7 +4175,11 @@ msgstr ""
msgid "This warning is only available for posts with media attached."
msgstr "ģ“ ź²½ź³ ė 미ėģ“ź° 첨ė¶ė ź²ģ물ģė§ ģ¬ģ©ķ ģ ģģµėė¤."
-#: src/view/com/util/forms/PostDropdownBtn.tsx:192
+#: src/components/dialogs/MutedWords.tsx:236
+msgid "This will delete {0} from your muted words. You can always add it back later."
+msgstr ""
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:237
msgid "This will hide this post from your feeds."
msgstr "ķ¼ėģģ ģ“ ź²ģ물ģ ģØź¹ėė¤."
@@ -4002,10 +4192,14 @@ msgstr "ģ¤ė ė ģ¤ģ "
msgid "Threaded Mode"
msgstr "ģ¤ė ė ėŖØė"
-#: src/Navigation.tsx:252
+#: src/Navigation.tsx:255
msgid "Threads Preferences"
msgstr "ģ¤ė ė ģ¤ģ "
+#: src/components/dialogs/MutedWords.tsx:95
+msgid "Toggle between muted word options."
+msgstr ""
+
#: src/view/com/util/forms/DropdownButton.tsx:246
msgid "Toggle dropdown"
msgstr "ėė”ė¤ģ“ ģ“źø° ė° ė«źø°"
@@ -4014,9 +4208,9 @@ msgstr "ėė”ė¤ģ“ ģ“źø° ė° ė«źø°"
msgid "Transformations"
msgstr "ė³ķ"
-#: src/view/com/post-thread/PostThreadItem.tsx:686
-#: src/view/com/post-thread/PostThreadItem.tsx:688
-#: src/view/com/util/forms/PostDropdownBtn.tsx:125
+#: src/view/com/post-thread/PostThreadItem.tsx:685
+#: src/view/com/post-thread/PostThreadItem.tsx:687
+#: src/view/com/util/forms/PostDropdownBtn.tsx:156
msgid "Translate"
msgstr "ė²ģ"
@@ -4025,15 +4219,15 @@ msgctxt "action"
msgid "Try again"
msgstr "ė¤ģ ģė"
-#: src/view/screens/ProfileList.tsx:505
+#: src/view/screens/ProfileList.tsx:506
msgid "Un-block list"
msgstr "리ģ¤ķø ģ°ØėØ ķ“ģ "
-#: src/view/screens/ProfileList.tsx:490
+#: src/view/screens/ProfileList.tsx:491
msgid "Un-mute list"
msgstr "리ģ¤ķø ģøė®¤ķø"
-#: src/view/com/auth/create/CreateAccount.tsx:66
+#: src/view/com/auth/create/CreateAccount.tsx:58
#: src/view/com/auth/login/ForgotPasswordForm.tsx:87
#: src/view/com/auth/login/Login.tsx:76
#: src/view/com/auth/login/LoginForm.tsx:118
@@ -4041,18 +4235,18 @@ msgstr "리ģ¤ķø ģøė®¤ķø"
msgid "Unable to contact your service. Please check your Internet connection."
msgstr "ģė¹ģ¤ģ ģ°ź²°ķ ģ ģģµėė¤. ģøķ°ė· ģ°ź²°ģ ķģøķģøģ."
-#: src/view/com/profile/ProfileHeader.tsx:432
-#: src/view/screens/ProfileList.tsx:589
+#: src/view/com/profile/ProfileHeader.tsx:433
+#: src/view/screens/ProfileList.tsx:590
msgid "Unblock"
msgstr "ģ°ØėØ ķ“ģ "
-#: src/view/com/profile/ProfileHeader.tsx:435
+#: src/view/com/profile/ProfileHeader.tsx:436
msgctxt "action"
msgid "Unblock"
msgstr "ģ°ØėØ ķ“ģ "
-#: src/view/com/profile/ProfileHeader.tsx:260
-#: src/view/com/profile/ProfileHeader.tsx:344
+#: src/view/com/profile/ProfileHeader.tsx:261
+#: src/view/com/profile/ProfileHeader.tsx:345
msgid "Unblock Account"
msgstr "ź³ģ ģ°ØėØ ķ“ģ "
@@ -4068,11 +4262,11 @@ msgctxt "action"
msgid "Unfollow"
msgstr "ģøķė”ģ°"
-#: src/view/com/profile/ProfileHeader.tsx:484
+#: src/view/com/profile/ProfileHeader.tsx:485
msgid "Unfollow {0}"
msgstr "{0} ėģ ģøķė”ģ°"
-#: src/view/com/auth/create/state.ts:300
+#: src/view/com/auth/create/state.ts:262
msgid "Unfortunately, you do not meet the requirements to create an account."
msgstr "ģģ½ģ§ė§ ź³ģ ģ ė§ė¤ ģ ģė ģź±“ģ ģ¶©ģ”±ķģ§ ėŖ»ķģµėė¤."
@@ -4081,28 +4275,37 @@ msgstr "ģģ½ģ§ė§ ź³ģ ģ ė§ė¤ ģ ģė ģź±“ģ ģ¶©ģ”±ķģ§ ėŖ»ķ
msgid "Unlike"
msgstr "ģ¢ģģ ģ·Øģ"
-#: src/view/screens/ProfileList.tsx:596
+#: src/components/TagMenu/index.tsx:253
+#: src/view/screens/ProfileList.tsx:597
msgid "Unmute"
msgstr "ģøė®¤ķø"
-#: src/view/com/profile/ProfileHeader.tsx:325
+#: src/components/TagMenu/index.web.tsx:90
+msgid "Unmute {truncatedTag}"
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:326
msgid "Unmute Account"
msgstr "ź³ģ ģøė®¤ķø"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:171
+#: src/components/TagMenu/index.tsx:210
+msgid "Unmute all {tag} posts"
+msgstr ""
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:202
msgid "Unmute thread"
msgstr "ģ¤ė ė ģøė®¤ķø"
-#: src/view/screens/ProfileFeed.tsx:353
-#: src/view/screens/ProfileList.tsx:580
+#: src/view/screens/ProfileFeed.tsx:354
+#: src/view/screens/ProfileList.tsx:581
msgid "Unpin"
msgstr "ź³ ģ ķ“ģ "
-#: src/view/screens/ProfileList.tsx:473
+#: src/view/screens/ProfileList.tsx:474
msgid "Unpin moderation list"
msgstr "ź²ķ 리ģ¤ķø ź³ ģ ķ“ģ "
-#: src/view/screens/ProfileFeed.tsx:345
+#: src/view/screens/ProfileFeed.tsx:346
msgid "Unsave"
msgstr "ģ ģ„ ķ“ģ "
@@ -4164,11 +4367,11 @@ msgstr "리ģ¤ķøė” ģ¬ģ©ģ ģ°ØėØėØ"
msgid "User Blocks You"
msgstr "ģ¬ģ©ģź° ė넼 ģ°ØėØķØ"
-#: src/view/com/auth/create/Step3.tsx:41
+#: src/view/com/auth/create/Step2.tsx:79
msgid "User handle"
msgstr "ģ¬ģ©ģ ķøė¤"
-#: src/view/com/lists/ListCard.tsx:84
+#: src/view/com/lists/ListCard.tsx:85
#: src/view/com/modals/UserAddRemoveLists.tsx:198
msgid "User list by {0}"
msgstr "{0} ėģ ģ¬ģ©ģ 리ģ¤ķø"
@@ -4177,7 +4380,7 @@ msgstr "{0} ėģ ģ¬ģ©ģ 리ģ¤ķø"
msgid "User list by <0/>"
msgstr "<0/> ėģ ģ¬ģ©ģ 리ģ¤ķø"
-#: src/view/com/lists/ListCard.tsx:82
+#: src/view/com/lists/ListCard.tsx:83
#: src/view/com/modals/UserAddRemoveLists.tsx:196
#: src/view/screens/ProfileList.tsx:760
msgid "User list by you"
@@ -4213,8 +4416,8 @@ msgid "Users in \"{0}\""
msgstr "\"{0}\"ģ ģė ģ¬ģ©ģ"
#: src/view/com/auth/create/Step2.tsx:243
-msgid "Verification code"
-msgstr "ģøģ¦ ģ½ė"
+#~ msgid "Verification code"
+#~ msgstr "ģøģ¦ ģ½ė"
#: src/view/screens/Settings/index.tsx:910
msgid "Verify email"
@@ -4241,7 +4444,7 @@ msgstr "ģ“ė©ģ¼ ģøģ¦ķźø°"
msgid "Video Games"
msgstr "ė¹ėģ¤ ź²ģ"
-#: src/view/com/profile/ProfileHeader.tsx:661
+#: src/view/com/profile/ProfileHeader.tsx:662
msgid "View {0}'s avatar"
msgstr "{0} ėģ ģė°ķ넼 ė“
ėė¤"
@@ -4286,6 +4489,10 @@ msgstr "ģ¦ź±°ģ“ ģź° ėģźø° ė°ėėė¤. Blueskyģ ė¤ģ ķ¹ģ§ģ źø°
msgid "We ran out of posts from your follows. Here's the latest from <0/>."
msgstr "ķė”ģ°ķ ģ¬ģ©ģģ ź²ģė¬¼ģ“ ė¶ģ”±ķ©ėė¤. ėģ <0/>ģ ģµģ ź²ģ물ģ ķģķ©ėė¤."
+#: src/components/dialogs/MutedWords.tsx:161
+msgid "We recommend avoiding common words that appear in many posts, since it can result in no posts being shown."
+msgstr ""
+
#: src/screens/Onboarding/StepAlgoFeeds/index.tsx:124
msgid "We recommend our \"Discover\" feed:"
msgstr "\"Discover\" ķ¼ė넼 ź¶ģ„ķ©ėė¤:"
@@ -4306,15 +4513,19 @@ msgstr "ģ“ģģ ģ²ģ ģ¦ģ ź²ķ ķź² ģµėė¤."
msgid "We'll use this to help customize your experience."
msgstr "ģ“넼 ķµķ“ ģ¬ģ©ģ ķź²½ģ ė§ģ¶¤ ģ¤ģ ķ ģ ģģµėė¤."
-#: src/view/com/auth/create/CreateAccount.tsx:123
+#: src/view/com/auth/create/CreateAccount.tsx:134
msgid "We're so excited to have you join us!"
msgstr "ė¹ģ ź³¼ ķØź»ķź² ėģ“ ģ ė§ źø°ģė¤ģ!"
-#: src/view/screens/ProfileList.tsx:85
+#: src/view/screens/ProfileList.tsx:86
msgid "We're sorry, but we were unable to resolve this list. If this persists, please contact the list creator, @{handleOrDid}."
msgstr "ģ£ģ”ķģ§ė§ ģ“ ė¦¬ģ¤ķøė„¼ ė¶ė¬ģ¬ ģ ģģµėė¤. ģ“ ė¬øģ ź° ź³ģėė©“ 리ģ¤ķø ģģ±ģģø @{handleOrDid}ģź² 문ģķģøģ."
-#: src/view/screens/Search/Search.tsx:253
+#: src/components/dialogs/MutedWords.tsx:182
+msgid "We're sorry, but we weren't able to load your muted words at this time. Please try again."
+msgstr ""
+
+#: src/view/screens/Search/Search.tsx:254
msgid "We're sorry, but your search could not be completed. Please try again in a few minutes."
msgstr "ģ£ģ”ķģ§ė§ ź²ģģ ģė£ķ ģ ģģµėė¤. ėŖ ė¶ ķģ ė¤ģ ģėķ“ ģ£¼ģøģ."
@@ -4334,8 +4545,8 @@ msgstr "ź“ģ¬ģ¬ź° ģ“ė»ź² ėėģ?"
msgid "What is the issue with this {collectionName}?"
msgstr "ģ“ {collectionName}ģ ģ“ė¤ ė¬øģ ź° ģėģ?"
-#: src/view/com/auth/SplashScreen.tsx:34
-#: src/view/com/composer/Composer.tsx:279
+#: src/view/com/auth/SplashScreen.tsx:59
+#: src/view/com/composer/Composer.tsx:286
msgid "What's up?"
msgstr "ė¬“ģØ ģ¼ģ“ ģ¼ģ“ėź³ ģėģ?"
@@ -4356,11 +4567,11 @@ msgstr "ėµźøģ ė¬ ģ ģė ģ¬ė"
msgid "Wide"
msgstr "ź°ė”"
-#: src/view/com/composer/Composer.tsx:415
+#: src/view/com/composer/Composer.tsx:422
msgid "Write post"
msgstr "ź²ģ물 ģģ±"
-#: src/view/com/composer/Composer.tsx:278
+#: src/view/com/composer/Composer.tsx:285
#: src/view/com/composer/Prompt.tsx:33
msgid "Write your reply"
msgstr "ėµźø ģģ±ķźø°"
@@ -4370,14 +4581,14 @@ msgid "Writers"
msgstr "ģź°"
#: src/view/com/auth/create/Step2.tsx:263
-msgid "XXXXXX"
-msgstr "XXXXXX"
+#~ msgid "XXXXXX"
+#~ msgstr "XXXXXX"
#: src/view/com/composer/select-language/SuggestedLanguage.tsx:77
-#: 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/PreferencesFollowingFeed.tsx:129
+#: src/view/screens/PreferencesFollowingFeed.tsx:201
+#: src/view/screens/PreferencesFollowingFeed.tsx:236
+#: src/view/screens/PreferencesFollowingFeed.tsx:271
#: src/view/screens/PreferencesThreads.tsx:106
#: src/view/screens/PreferencesThreads.tsx:129
msgid "Yes"
@@ -4409,7 +4620,7 @@ msgstr "ģģ§ ģ“ė ģ½ėź° ģģµėė¤! Bluesky넼 ģ¢ ė ģ¤ė ģ¬ģ©
msgid "You don't have any pinned feeds."
msgstr "ź³ ģ ė ķ¼ėź° ģģµėė¤."
-#: src/view/screens/Feeds.tsx:451
+#: src/view/screens/Feeds.tsx:452
msgid "You don't have any saved feeds!"
msgstr "ģ ģ„ė ķ¼ėź° ģģµėė¤!"
@@ -4417,7 +4628,7 @@ msgstr "ģ ģ„ė ķ¼ėź° ģģµėė¤!"
msgid "You don't have any saved feeds."
msgstr "ģ ģ„ė ķ¼ėź° ģģµėė¤."
-#: src/view/com/post-thread/PostThread.tsx:401
+#: src/view/com/post-thread/PostThread.tsx:465
msgid "You have blocked the author or you have been blocked by the author."
msgstr "ģģ±ģ넼 ģ°ØėØķź±°ė ģģ±ģź° ė넼 ģ°ØėØķģµėė¤."
@@ -4457,6 +4668,10 @@ msgstr "ģģ§ ģ± ė¹ė°ė²ķøė„¼ ģģ±ķģ§ ģģģµėė¤. ģė ė²ķ¼
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/components/dialogs/MutedWords.tsx:202
+msgid "You haven't muted any words or tags yet"
+msgstr ""
+
#: src/view/com/modals/ContentFilteringSettings.tsx:175
msgid "You must be 18 or older to enable adult content."
msgstr "ģ±ģø ģ½ķ
ģø ė„¼ ķģ±ķķė ¤ė©“ 18ģø ģ“ģģ“ģ“ģ¼ ķ©ėė¤."
@@ -4465,11 +4680,11 @@ msgstr "ģ±ģø ģ½ķ
ģø ė„¼ ķģ±ķķė ¤ė©“ 18ģø ģ“ģģ“ģ“ģ¼ ķ©ėė¤."
msgid "You must be 18 years or older to enable adult content"
msgstr "ģ±ģø ģ½ķ
ģø ė„¼ ģ¬ģ©ķė ¤ė©“ ė§ 18ģø ģ“ģģ“ģ“ģ¼ ķ©ėė¤."
-#: src/view/com/util/forms/PostDropdownBtn.tsx:98
+#: src/view/com/util/forms/PostDropdownBtn.tsx:129
msgid "You will no longer receive notifications for this thread"
msgstr "ģ“ ģ¤ė ėģ ėķ ģ림ģ ė ģ“ģ ė°ģ§ ģģµėė¤"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:101
+#: src/view/com/util/forms/PostDropdownBtn.tsx:132
msgid "You will now receive notifications for this thread"
msgstr "ģ“ģ ģ“ ģ¤ė ėģ ėķ ģ림ģ ė°ģµėė¤"
@@ -4507,7 +4722,7 @@ msgstr "ź³ģ ģ ģģ ķģµėė¤"
msgid "Your account repository, containing all public data records, can be downloaded as a \"CAR\" file. This file does not include media embeds, such as images, or your private data, which must be fetched separately."
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:234
+#: src/view/com/auth/create/Step1.tsx:238
msgid "Your birth date"
msgstr "ģė
ģģ¼"
@@ -4519,7 +4734,7 @@ msgstr "ģ ķ ģ¬ķģ ģ ģ„ėė©° ėģ¤ģ ģ¤ģ ģģ ė³ź²½ķ ģ ģ
msgid "Your default feed is \"Following\""
msgstr "źø°ė³ø ķ¼ėė \"ķė”ģ° ģ¤\"ģ
ėė¤"
-#: src/view/com/auth/create/state.ts:153
+#: src/view/com/auth/create/state.ts:110
#: src/view/com/auth/login/ForgotPasswordForm.tsx:70
#: src/view/com/modals/ChangePassword.tsx:54
msgid "Your email appears to be invalid."
@@ -4541,7 +4756,7 @@ msgstr "ģ“ė©ģ¼ģ“ ģģ§ ģøģ¦ėģ§ ģģģµėė¤. ģ“ė ģ¤ģķ 볓
msgid "Your following feed is empty! Follow more users to see what's happening."
msgstr "ķė”ģ° ģ¤ģø ķ¼ėź° ė¹ģ“ ģģµėė¤! ė ė§ģ ģ¬ģ©ģ넼 ķė”ģ°ķģ¬ ė¬“ģØ ģ¼ģ“ ģ¼ģ“ėź³ ģėģ§ ķģøķģøģ."
-#: src/view/com/auth/create/Step3.tsx:45
+#: src/view/com/auth/create/Step2.tsx:83
msgid "Your full handle will be"
msgstr "ė“ ģ 첓 ķøė¤:"
@@ -4555,11 +4770,15 @@ msgstr "ė“ ģ 첓 ķøė¤: <0>@{0}0>"
#~ msgid "Your invite codes are hidden when logged in using an App Password"
#~ msgstr "ģ± ė¹ė°ė²ķøė„¼ ģ¬ģ©ķģ¬ ė”ź·øģøķė©“ ģ“ė ģ½ėź° ģØź²Øģ§ėė¤"
+#: src/components/dialogs/MutedWords.tsx:173
+msgid "Your muted words"
+msgstr ""
+
#: src/view/com/modals/ChangePassword.tsx:155
msgid "Your password has been changed successfully!"
msgstr ""
-#: src/view/com/composer/Composer.tsx:267
+#: src/view/com/composer/Composer.tsx:274
msgid "Your post has been published"
msgstr "ź²ģė¬¼ģ ź²ģķģµėė¤"
@@ -4574,10 +4793,10 @@ msgstr "ź²ģ물, ģ¢ģģ, ģ°ØėØ ėŖ©ė”ģ ź³µź°ė©ėė¤. ė®¤ķø ėŖ©ė”ģ
msgid "Your profile"
msgstr "ė“ ķė”ķ"
-#: src/view/com/composer/Composer.tsx:266
+#: src/view/com/composer/Composer.tsx:273
msgid "Your reply has been published"
msgstr "ė“ ėµźøģ ź²ģķģµėė¤"
-#: src/view/com/auth/create/Step3.tsx:28
+#: src/view/com/auth/create/Step2.tsx:65
msgid "Your user handle"
msgstr "ė“ ģ¬ģ©ģ ķøė¤"
diff --git a/src/locale/locales/pt-BR/messages.po b/src/locale/locales/pt-BR/messages.po
index 030df276a4..ff5d7e55dc 100644
--- a/src/locale/locales/pt-BR/messages.po
+++ b/src/locale/locales/pt-BR/messages.po
@@ -21,7 +21,7 @@ msgstr "(sem email)"
#~ 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/profile/ProfileHeader.tsx:592
+#: src/view/com/profile/ProfileHeader.tsx:593
msgid "{following} following"
msgstr "{following} seguindo"
@@ -47,7 +47,7 @@ msgstr "{numUnreadNotifications} não lidas"
msgid "<0/> members"
msgstr "<0/> membros"
-#: src/view/com/profile/ProfileHeader.tsx:594
+#: src/view/com/profile/ProfileHeader.tsx:595
msgid "<0>{following} 0><1>following1>"
msgstr "<0>{following} 0><1>seguindo1>"
@@ -63,7 +63,7 @@ msgstr "<0>Siga alguns0><2>UsuƔrios2><1>recomendados1>"
msgid "<0>Welcome to0><1>Bluesky1>"
msgstr "<0>Bem-vindo ao0><1>Bluesky1>"
-#: src/view/com/profile/ProfileHeader.tsx:557
+#: src/view/com/profile/ProfileHeader.tsx:558
msgid "ā Invalid Handle"
msgstr "ā UsuĆ”rio InvĆ”lido"
@@ -76,11 +76,11 @@ msgid "A new version of the app is available. Please update to continue using th
msgstr "Uma nova versĆ£o do aplicativo estĆ” disponĆvel. Por favor, atualize para continuar usando o aplicativo."
#: src/view/com/util/ViewHeader.tsx:83
-#: src/view/screens/Search/Search.tsx:624
+#: src/view/screens/Search/Search.tsx:647
msgid "Access navigation links and settings"
msgstr "Acessar links de navegação e configurações"
-#: src/view/com/pager/FeedsTabBarMobile.tsx:89
+#: src/view/com/home/HomeHeaderLayoutMobile.tsx:51
msgid "Access profile and other navigation links"
msgstr "Acessar perfil e outros links de navegação"
@@ -95,11 +95,11 @@ msgstr "Acessibilidade"
msgid "Account"
msgstr "Conta"
-#: src/view/com/profile/ProfileHeader.tsx:245
+#: src/view/com/profile/ProfileHeader.tsx:246
msgid "Account blocked"
msgstr "Conta bloqueada"
-#: src/view/com/profile/ProfileHeader.tsx:212
+#: src/view/com/profile/ProfileHeader.tsx:213
msgid "Account muted"
msgstr "Conta silenciada"
@@ -119,14 +119,15 @@ msgstr "ConfiguraƧƵes da conta"
msgid "Account removed from quick access"
msgstr "Conta removida do acesso rƔpido"
-#: src/view/com/profile/ProfileHeader.tsx:267
+#: src/view/com/profile/ProfileHeader.tsx:268
msgid "Account unblocked"
msgstr "Conta desbloqueada"
-#: src/view/com/profile/ProfileHeader.tsx:225
+#: src/view/com/profile/ProfileHeader.tsx:226
msgid "Account unmuted"
msgstr "Conta dessilenciada"
+#: src/components/dialogs/MutedWords.tsx:147
#: src/view/com/auth/onboarding/RecommendedFeedsItem.tsx:150
#: src/view/com/modals/ListAddRemoveUsers.tsx:264
#: src/view/com/modals/UserAddRemoveLists.tsx:219
@@ -168,24 +169,32 @@ msgstr "Adicionar detalhes"
msgid "Add details to report"
msgstr "Adicionar detalhes Ć denĆŗncia"
-#: src/view/com/composer/Composer.tsx:446
+#: src/view/com/composer/Composer.tsx:453
msgid "Add link card"
msgstr "Adicionar prƩvia de link"
-#: src/view/com/composer/Composer.tsx:451
+#: src/view/com/composer/Composer.tsx:458
msgid "Add link card:"
msgstr "Adicionar prƩvia de link:"
+#: src/components/dialogs/MutedWords.tsx:140
+msgid "Add mute word for configured settings"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:74
+msgid "Add muted words and tags"
+msgstr ""
+
#: src/view/com/modals/ChangeHandle.tsx:417
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:309
+#: src/view/com/profile/ProfileHeader.tsx:310
msgid "Add to Lists"
msgstr "Adicionar Ć s Listas"
-#: src/view/com/feeds/FeedSourceCard.tsx:243
-#: src/view/screens/ProfileFeed.tsx:272
+#: src/view/com/feeds/FeedSourceCard.tsx:245
+#: src/view/screens/ProfileFeed.tsx:273
msgid "Add to my feeds"
msgstr "Adicionar aos meus feeds"
@@ -198,11 +207,11 @@ msgstr "Adicionado"
msgid "Added to list"
msgstr "Adicionado Ć lista"
-#: src/view/com/feeds/FeedSourceCard.tsx:125
+#: src/view/com/feeds/FeedSourceCard.tsx:127
msgid "Added to my feeds"
msgstr "Adicionado aos meus feeds"
-#: src/view/screens/PreferencesHomeFeed.tsx:173
+#: src/view/screens/PreferencesFollowingFeed.tsx:173
msgid "Adjust the number of likes a reply must have to be shown in your feed."
msgstr "Ajuste o número de curtidas para que uma resposta apareça no seu feed."
@@ -222,6 +231,10 @@ msgstr "Conteúdo adulto só pode ser habilitado no site: <0/>."
msgid "Advanced"
msgstr "AvanƧado"
+#: src/view/screens/Feeds.tsx:666
+msgid "All the feeds you've saved, right in one place."
+msgstr ""
+
#: src/view/com/auth/login/ForgotPasswordForm.tsx:221
#: src/view/com/modals/ChangePassword.tsx:168
msgid "Already have a code?"
@@ -295,7 +308,7 @@ msgstr "ConfiguraƧƵes de Senha de Aplicativo"
msgid "App Passwords"
msgstr "Senhas de Aplicativos"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:250
+#: src/view/com/util/forms/PostDropdownBtn.tsx:295
msgid "Appeal content warning"
msgstr "Contestar aviso de conteĆŗdo"
@@ -319,15 +332,16 @@ msgstr "AparĆŖncia"
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
+#: src/view/com/composer/Composer.tsx:150
msgid "Are you sure you'd like to discard this draft?"
msgstr "Tem certeza que deseja descartar este rascunho?"
-#: src/view/screens/ProfileList.tsx:364
+#: src/components/dialogs/MutedWords.tsx:233
+#: src/view/screens/ProfileList.tsx:365
msgid "Are you sure?"
msgstr "Tem certeza?"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:233
+#: src/view/com/util/forms/PostDropdownBtn.tsx:278
msgid "Are you sure? This cannot be undone."
msgstr "Tem certeza? Esta ação não poderÔ ser desfeita."
@@ -343,21 +357,21 @@ msgstr "Arte"
msgid "Artistic or non-erotic nudity."
msgstr "Nudez artĆstica ou nĆ£o erótica."
-#: src/view/com/auth/create/CreateAccount.tsx:147
+#: src/view/com/auth/create/CreateAccount.tsx:158
#: src/view/com/auth/login/ChooseAccountForm.tsx:151
#: src/view/com/auth/login/ForgotPasswordForm.tsx:174
#: src/view/com/auth/login/LoginForm.tsx:259
#: src/view/com/auth/login/SetNewPasswordForm.tsx:179
#: src/view/com/modals/report/InputIssueDetails.tsx:46
-#: src/view/com/post-thread/PostThread.tsx:408
-#: src/view/com/post-thread/PostThread.tsx:458
-#: src/view/com/post-thread/PostThread.tsx:466
-#: src/view/com/profile/ProfileHeader.tsx:648
+#: src/view/com/post-thread/PostThread.tsx:472
+#: src/view/com/post-thread/PostThread.tsx:522
+#: src/view/com/post-thread/PostThread.tsx:530
+#: src/view/com/profile/ProfileHeader.tsx:649
#: src/view/com/util/ViewHeader.tsx:81
msgid "Back"
msgstr "Voltar"
-#: src/view/com/post-thread/PostThread.tsx:416
+#: src/view/com/post-thread/PostThread.tsx:480
msgctxt "action"
msgid "Back"
msgstr "Voltar"
@@ -370,7 +384,7 @@ msgstr "Com base no seu interesse em {interestsText}"
msgid "Basics"
msgstr "BƔsicos"
-#: src/view/com/auth/create/Step1.tsx:246
+#: src/view/com/auth/create/Step1.tsx:250
#: src/view/com/modals/BirthDateSettings.tsx:73
msgid "Birthday"
msgstr "AniversƔrio"
@@ -379,33 +393,33 @@ msgstr "AniversƔrio"
msgid "Birthday:"
msgstr "AniversƔrio:"
-#: src/view/com/profile/ProfileHeader.tsx:238
-#: src/view/com/profile/ProfileHeader.tsx:345
+#: src/view/com/profile/ProfileHeader.tsx:239
+#: src/view/com/profile/ProfileHeader.tsx:346
msgid "Block Account"
msgstr "Bloquear Conta"
-#: src/view/screens/ProfileList.tsx:555
+#: src/view/screens/ProfileList.tsx:556
msgid "Block accounts"
msgstr "Bloquear contas"
-#: src/view/screens/ProfileList.tsx:505
+#: src/view/screens/ProfileList.tsx:506
msgid "Block list"
msgstr "Lista de bloqueio"
-#: src/view/screens/ProfileList.tsx:315
+#: src/view/screens/ProfileList.tsx:316
msgid "Block these accounts?"
msgstr "Bloquear estas contas?"
-#: src/view/screens/ProfileList.tsx:319
+#: src/view/screens/ProfileList.tsx:320
msgid "Block this List"
msgstr "Bloquear esta Lista"
-#: src/view/com/lists/ListCard.tsx:109
-#: src/view/com/util/post-embeds/QuoteEmbed.tsx:60
+#: src/view/com/lists/ListCard.tsx:110
+#: src/view/com/util/post-embeds/QuoteEmbed.tsx:61
msgid "Blocked"
msgstr "Bloqueado"
-#: src/view/screens/Moderation.tsx:123
+#: src/view/screens/Moderation.tsx:142
msgid "Blocked accounts"
msgstr "Contas bloqueadas"
@@ -414,7 +428,7 @@ msgstr "Contas bloqueadas"
msgid "Blocked Accounts"
msgstr "Contas Bloqueadas"
-#: src/view/com/profile/ProfileHeader.tsx:240
+#: src/view/com/profile/ProfileHeader.tsx:241
msgid "Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you."
msgstr "Contas bloqueadas não podem te responder, mencionar ou interagir com você."
@@ -422,15 +436,16 @@ msgstr "Contas bloqueadas não podem te responder, mencionar ou interagir com vo
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 te responder, mencionar ou interagir com você. Você não verÔ o conteúdo deles e eles serão impedidos de ver o seu."
-#: src/view/com/post-thread/PostThread.tsx:267
+#: src/view/com/post-thread/PostThread.tsx:324
msgid "Blocked post."
msgstr "Post bloqueado."
-#: src/view/screens/ProfileList.tsx:317
+#: src/view/screens/ProfileList.tsx:318
msgid "Blocking is public. Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you."
msgstr "Bloqueios são públicos. Contas bloqueadas não podem te responder, mencionar ou interagir com você."
#: src/view/com/auth/HomeLoggedOutCTA.tsx:93
+#: src/view/com/auth/SplashScreen.web.tsx:133
msgid "Blog"
msgstr "Blog"
@@ -463,7 +478,7 @@ msgstr "Bluesky Ć© pĆŗblico."
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 que tenha um convite, inscreva-se na lista de espera e em breve enviaremos um para você."
-#: src/view/screens/Moderation.tsx:226
+#: src/view/screens/Moderation.tsx:245
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 podem não honrar esta solicitação. Isso não torna a sua conta privada."
@@ -480,6 +495,7 @@ msgid "Build version {0} {1}"
msgstr "Versão {0} {1}"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:87
+#: src/view/com/auth/SplashScreen.web.tsx:128
msgid "Business"
msgstr "Empresarial"
@@ -514,8 +530,8 @@ msgid "Can only contain letters, numbers, spaces, dashes, and underscores. Must
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/components/Prompt.tsx:91
-#: src/view/com/composer/Composer.tsx:300
-#: src/view/com/composer/Composer.tsx:305
+#: src/view/com/composer/Composer.tsx:307
+#: src/view/com/composer/Composer.tsx:312
#: src/view/com/modals/ChangeEmail.tsx:218
#: src/view/com/modals/ChangeEmail.tsx:220
#: src/view/com/modals/ChangePassword.tsx:265
@@ -529,7 +545,7 @@ msgstr "Só pode conter letras, números, espaços, traços e sublinhados. Deve
#: src/view/com/modals/VerifyEmail.tsx:247
#: src/view/com/modals/VerifyEmail.tsx:253
#: src/view/com/modals/Waitlist.tsx:142
-#: src/view/screens/Search/Search.tsx:693
+#: src/view/screens/Search/Search.tsx:716
#: src/view/shell/desktop/Search.tsx:238
msgid "Cancel"
msgstr "Cancelar"
@@ -657,7 +673,7 @@ msgstr "Escolha os algoritmos que fazem sentido para vocĆŖ com os feeds personal
msgid "Choose your main feeds"
msgstr "Escolha seus feeds principais"
-#: src/view/com/auth/create/Step1.tsx:215
+#: src/view/com/auth/create/Step1.tsx:219
msgid "Choose your password"
msgstr "Escolha sua senha"
@@ -680,7 +696,7 @@ msgid "Clear all storage data (restart after this)"
msgstr "Limpar todos os dados de armazenamento (reinicie em seguida)"
#: src/view/com/util/forms/SearchInput.tsx:88
-#: src/view/screens/Search/Search.tsx:674
+#: src/view/screens/Search/Search.tsx:697
msgid "Clear search query"
msgstr "Limpar busca"
@@ -688,6 +704,11 @@ msgstr "Limpar busca"
msgid "click here"
msgstr "clique aqui"
+#: src/components/RichText.tsx:189
+#: src/components/TagMenu/index.web.tsx:125
+msgid "Click here to open tag menu for {tag}"
+msgstr ""
+
#: src/screens/Onboarding/index.tsx:35
msgid "Climate"
msgstr "Clima e tempo"
@@ -697,7 +718,8 @@ msgstr "Clima e tempo"
msgid "Close"
msgstr "Fechar"
-#: src/components/Dialog/index.web.tsx:78
+#: src/components/Dialog/index.web.tsx:80
+#: src/components/Dialog/index.web.tsx:194
msgid "Close active dialog"
msgstr "Fechar janela ativa"
@@ -717,11 +739,15 @@ msgstr "Fechar imagem"
msgid "Close image viewer"
msgstr "Fechar visualizador de imagens"
-#: src/view/shell/index.web.tsx:49
+#: src/view/shell/index.web.tsx:51
msgid "Close navigation footer"
msgstr "Fechar o painel de navegação"
-#: src/view/shell/index.web.tsx:50
+#: src/components/TagMenu/index.tsx:266
+msgid "Close this dialog"
+msgstr ""
+
+#: src/view/shell/index.web.tsx:52
msgid "Closes bottom navigation bar"
msgstr "Fecha barra de navegação inferior"
@@ -729,7 +755,7 @@ msgstr "Fecha barra de navegação inferior"
msgid "Closes password update alert"
msgstr "Fecha alerta de troca de senha"
-#: src/view/com/composer/Composer.tsx:302
+#: src/view/com/composer/Composer.tsx:309
msgid "Closes post composer and discards post draft"
msgstr "Fecha o editor de post e descarta o rascunho"
@@ -758,7 +784,11 @@ msgstr "Diretrizes da Comunidade"
msgid "Complete onboarding and start using your account"
msgstr "Completar e comeƧar a usar sua conta"
-#: src/view/com/composer/Composer.tsx:417
+#: src/view/com/auth/create/Step3.tsx:73
+msgid "Complete the challenge"
+msgstr ""
+
+#: src/view/com/composer/Composer.tsx:424
msgid "Compose posts up to {MAX_GRAPHEME_LENGTH} characters in length"
msgstr "Escreva posts de atƩ {MAX_GRAPHEME_LENGTH} caracteres"
@@ -775,7 +805,7 @@ msgstr "Configure o filtro de conteĆŗdo por categoria: {0}"
#: src/view/com/modals/SelfLabel.tsx:154
#: src/view/com/modals/VerifyEmail.tsx:231
#: src/view/com/modals/VerifyEmail.tsx:233
-#: src/view/screens/PreferencesHomeFeed.tsx:308
+#: src/view/screens/PreferencesFollowingFeed.tsx:308
#: src/view/screens/PreferencesThreads.tsx:159
msgid "Confirm"
msgstr "Confirmar"
@@ -813,16 +843,16 @@ msgstr "Código de confirmação"
msgid "Confirms signing up {email} to the waitlist"
msgstr "Confirma adição de {email} à lista de espera"
-#: src/view/com/auth/create/CreateAccount.tsx:182
+#: src/view/com/auth/create/CreateAccount.tsx:193
#: src/view/com/auth/login/LoginForm.tsx:278
msgid "Connecting..."
msgstr "Conectando..."
-#: src/view/com/auth/create/CreateAccount.tsx:202
+#: src/view/com/auth/create/CreateAccount.tsx:213
msgid "Contact support"
msgstr "Contatar suporte"
-#: src/view/screens/Moderation.tsx:81
+#: src/view/screens/Moderation.tsx:83
msgid "Content filtering"
msgstr "Filtragem do conteĆŗdo"
@@ -852,7 +882,7 @@ msgstr "Avisos de conteĆŗdo"
#: src/screens/Onboarding/StepFollowingFeed.tsx:153
#: src/screens/Onboarding/StepInterests/index.tsx:248
#: src/screens/Onboarding/StepModeration/index.tsx:118
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:108
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:114
#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:148
#: src/view/com/auth/onboarding/RecommendedFollows.tsx:209
msgid "Continue"
@@ -861,7 +891,7 @@ msgstr "Continuar"
#: src/screens/Onboarding/StepFollowingFeed.tsx:150
#: src/screens/Onboarding/StepInterests/index.tsx:245
#: src/screens/Onboarding/StepModeration/index.tsx:115
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:105
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:111
msgid "Continue to next step"
msgstr "Continuar para o próximo passo"
@@ -888,7 +918,7 @@ msgstr "Versão do aplicativo copiada"
#: src/view/com/modals/AddAppPasswords.tsx:76
#: src/view/com/modals/InviteCodes.tsx:152
-#: src/view/com/util/forms/PostDropdownBtn.tsx:112
+#: src/view/com/util/forms/PostDropdownBtn.tsx:143
msgid "Copied to clipboard"
msgstr "Copiado"
@@ -900,19 +930,19 @@ msgstr "Copia senha de aplicativo"
msgid "Copy"
msgstr "Copiar"
-#: src/view/screens/ProfileList.tsx:417
+#: src/view/screens/ProfileList.tsx:418
msgid "Copy link to list"
msgstr "Copiar link da lista"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:153
+#: src/view/com/util/forms/PostDropdownBtn.tsx:184
msgid "Copy link to post"
msgstr "Copiar link do post"
-#: src/view/com/profile/ProfileHeader.tsx:294
+#: src/view/com/profile/ProfileHeader.tsx:295
msgid "Copy link to profile"
msgstr "Copiar link do perfil"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:139
+#: src/view/com/util/forms/PostDropdownBtn.tsx:170
msgid "Copy post text"
msgstr "Copiar texto do post"
@@ -921,7 +951,7 @@ msgstr "Copiar texto do post"
msgid "Copyright Policy"
msgstr "PolĆtica de Direitos Autorais"
-#: src/view/screens/ProfileFeed.tsx:96
+#: src/view/screens/ProfileFeed.tsx:97
msgid "Could not load feed"
msgstr "NĆ£o foi possĆvel carregar o feed"
@@ -930,12 +960,12 @@ msgid "Could not load list"
msgstr "NĆ£o foi possĆvel carregar a lista"
#: src/view/com/auth/create/Step2.tsx:91
-msgid "Country"
-msgstr "PaĆs"
+#~ msgid "Country"
+#~ msgstr "PaĆs"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:62
-#: src/view/com/auth/SplashScreen.tsx:46
-#: src/view/com/auth/SplashScreen.web.tsx:77
+#: src/view/com/auth/SplashScreen.tsx:71
+#: src/view/com/auth/SplashScreen.web.tsx:81
msgid "Create a new account"
msgstr "Criar uma nova conta"
@@ -943,7 +973,7 @@ msgstr "Criar uma nova conta"
msgid "Create a new Bluesky account"
msgstr "Criar uma nova conta do Bluesky"
-#: src/view/com/auth/create/CreateAccount.tsx:122
+#: src/view/com/auth/create/CreateAccount.tsx:133
msgid "Create Account"
msgstr "Criar Conta"
@@ -952,7 +982,7 @@ msgid "Create App Password"
msgstr "Criar Senha de Aplicativo"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:54
-#: src/view/com/auth/SplashScreen.tsx:43
+#: src/view/com/auth/SplashScreen.tsx:68
msgid "Create new account"
msgstr "Criar uma nova conta"
@@ -968,7 +998,7 @@ msgstr "Criado por <0/>"
msgid "Created by you"
msgstr "Criado por vocĆŖ"
-#: src/view/com/composer/Composer.tsx:448
+#: src/view/com/composer/Composer.tsx:455
msgid "Creates a card with a thumbnail. The card links to {url}"
msgstr "Cria uma prƩvia com miniatura. A prƩvia faz um link para {url}"
@@ -986,6 +1016,7 @@ msgid "Custom domain"
msgstr "DomĆnio personalizado"
#: src/screens/Onboarding/StepAlgoFeeds/index.tsx:106
+#: src/view/screens/Feeds.tsx:692
msgid "Custom feeds built by the community bring you new experiences and help you find the content you love."
msgstr "Feeds customizados feitos pela comunidade te proporcionam novas experiĆŖncias e te ajudam a encontrar o conteĆŗdo que vocĆŖ mais ama."
@@ -1027,8 +1058,8 @@ msgstr "Excluir a Conta"
msgid "Delete app password"
msgstr "Excluir senha de aplicativo"
-#: src/view/screens/ProfileList.tsx:363
-#: src/view/screens/ProfileList.tsx:444
+#: src/view/screens/ProfileList.tsx:364
+#: src/view/screens/ProfileList.tsx:445
msgid "Delete List"
msgstr "Excluir Lista"
@@ -1044,19 +1075,19 @@ msgstr "Excluir minha conta"
msgid "Delete My Accountā¦"
msgstr "Excluir minha contaā¦"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:228
+#: src/view/com/util/forms/PostDropdownBtn.tsx:273
msgid "Delete post"
msgstr "Excluir post"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:232
+#: src/view/com/util/forms/PostDropdownBtn.tsx:277
msgid "Delete this post?"
msgstr "Excluir este post?"
-#: src/view/com/util/post-embeds/QuoteEmbed.tsx:69
+#: src/view/com/util/post-embeds/QuoteEmbed.tsx:70
msgid "Deleted"
msgstr "ExcluĆdo"
-#: src/view/com/post-thread/PostThread.tsx:259
+#: src/view/com/post-thread/PostThread.tsx:316
msgid "Deleted post."
msgstr "Post excluĆdo."
@@ -1071,7 +1102,7 @@ msgstr "Descrição"
#~ msgid "Developer Tools"
#~ msgstr "Ferramentas de Desenvolvedor"
-#: src/view/com/composer/Composer.tsx:211
+#: src/view/com/composer/Composer.tsx:218
msgid "Did you want to say anything?"
msgstr "VocĆŖ gostaria de dizer alguma coisa?"
@@ -1079,15 +1110,15 @@ msgstr "VocĆŖ gostaria de dizer alguma coisa?"
msgid "Dim"
msgstr "Menos escuro"
-#: src/view/com/composer/Composer.tsx:144
+#: src/view/com/composer/Composer.tsx:151
msgid "Discard"
msgstr "Descartar"
-#: src/view/com/composer/Composer.tsx:138
+#: src/view/com/composer/Composer.tsx:145
msgid "Discard draft"
msgstr "Descartar rascunho"
-#: src/view/screens/Moderation.tsx:207
+#: src/view/screens/Moderation.tsx:226
msgid "Discourage apps from showing my account to logged-out users"
msgstr "Desencorajar aplicativos a mostrar minha conta para usuƔrios deslogados"
@@ -1097,8 +1128,12 @@ msgid "Discover new custom feeds"
msgstr "Descubra novos feeds"
#: src/view/screens/Feeds.tsx:473
-msgid "Discover new feeds"
-msgstr "Descubra novos feeds"
+#~ msgid "Discover new feeds"
+#~ msgstr "Descubra novos feeds"
+
+#: src/view/screens/Feeds.tsx:689
+msgid "Discover New Feeds"
+msgstr ""
#: src/view/com/modals/EditProfile.tsx:192
msgid "Display name"
@@ -1112,7 +1147,7 @@ msgstr "Nome de Exibição"
msgid "Domain verified!"
msgstr "DomĆnio verificado!"
-#: src/view/com/auth/create/Step1.tsx:166
+#: src/view/com/auth/create/Step1.tsx:170
msgid "Don't have an invite code?"
msgstr "NĆ£o possui um convite?"
@@ -1139,7 +1174,7 @@ msgstr "Feito"
#: src/view/com/modals/InviteCodes.tsx:80
#: src/view/com/modals/InviteCodes.tsx:123
#: src/view/com/modals/ListAddRemoveUsers.tsx:142
-#: src/view/screens/PreferencesHomeFeed.tsx:311
+#: src/view/screens/PreferencesFollowingFeed.tsx:311
#: src/view/screens/Settings/ExportCarDialog.tsx:93
#: src/view/screens/Settings/ExportCarDialog.tsx:94
msgid "Done"
@@ -1162,7 +1197,7 @@ msgstr ""
msgid "Download CAR file"
msgstr ""
-#: src/view/com/composer/text-input/TextInput.web.tsx:247
+#: src/view/com/composer/text-input/TextInput.web.tsx:249
msgid "Drop to add images"
msgstr "Solte para adicionar imagens"
@@ -1208,7 +1243,7 @@ msgstr "Editar"
msgid "Edit image"
msgstr "Editar imagem"
-#: src/view/screens/ProfileList.tsx:432
+#: src/view/screens/ProfileList.tsx:433
msgid "Edit list details"
msgstr "Editar detalhes da lista"
@@ -1226,15 +1261,16 @@ msgstr "Editar Meus Feeds"
msgid "Edit my profile"
msgstr "Editar meu perfil"
-#: src/view/com/profile/ProfileHeader.tsx:417
+#: src/view/com/profile/ProfileHeader.tsx:418
msgid "Edit profile"
msgstr "Editar perfil"
-#: src/view/com/profile/ProfileHeader.tsx:422
+#: src/view/com/profile/ProfileHeader.tsx:423
msgid "Edit Profile"
msgstr "Editar Perfil"
-#: src/view/screens/Feeds.tsx:356
+#: src/view/com/home/HomeHeaderLayout.web.tsx:59
+#: src/view/screens/Feeds.tsx:355
msgid "Edit Saved Feeds"
msgstr "Editar Feeds Salvos"
@@ -1254,16 +1290,14 @@ msgstr "Editar sua descrição"
msgid "Education"
msgstr "Educação"
-#: src/view/com/auth/create/Step1.tsx:195
-#: src/view/com/auth/create/Step2.tsx:194
-#: src/view/com/auth/create/Step2.tsx:269
+#: src/view/com/auth/create/Step1.tsx:199
#: src/view/com/auth/login/ForgotPasswordForm.tsx:156
#: src/view/com/modals/ChangeEmail.tsx:141
#: src/view/com/modals/Waitlist.tsx:88
msgid "Email"
msgstr "E-mail"
-#: src/view/com/auth/create/Step1.tsx:186
+#: src/view/com/auth/create/Step1.tsx:190
#: src/view/com/auth/login/ForgotPasswordForm.tsx:147
msgid "Email address"
msgstr "EndereƧo de e-mail"
@@ -1306,7 +1340,7 @@ msgstr "Habilitar MĆdia Externa"
msgid "Enable media players for"
msgstr "Habilitar mĆdia para"
-#: src/view/screens/PreferencesHomeFeed.tsx:147
+#: src/view/screens/PreferencesFollowingFeed.tsx:147
msgid "Enable this setting to only see replies between people you follow."
msgstr "Ative esta configuração para ver respostas apenas entre as pessoas que você segue."
@@ -1318,6 +1352,11 @@ msgstr "Fim do feed"
msgid "Enter a name for this App Password"
msgstr "Insira um nome para esta Senha de Aplicativo"
+#: src/components/dialogs/MutedWords.tsx:87
+#: src/components/dialogs/MutedWords.tsx:88
+msgid "Enter a word or tag"
+msgstr ""
+
#: src/view/com/modals/VerifyEmail.tsx:105
msgid "Enter Confirmation Code"
msgstr "Insira o código de confirmação"
@@ -1334,7 +1373,7 @@ msgstr "Digite o domĆnio que vocĆŖ deseja usar"
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 e-mail 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/Step1.tsx:247
+#: src/view/com/auth/create/Step1.tsx:251
#: src/view/com/modals/BirthDateSettings.tsx:74
msgid "Enter your birth date"
msgstr "Insira seu aniversƔrio"
@@ -1343,7 +1382,7 @@ msgstr "Insira seu aniversƔrio"
msgid "Enter your email"
msgstr "Digite seu e-mail"
-#: src/view/com/auth/create/Step1.tsx:191
+#: src/view/com/auth/create/Step1.tsx:195
msgid "Enter your email address"
msgstr "Digite seu endereƧo de e-mail"
@@ -1356,14 +1395,18 @@ msgid "Enter your new email address below."
msgstr "Digite seu novo endereƧo de e-mail abaixo."
#: src/view/com/auth/create/Step2.tsx:188
-msgid "Enter your phone number"
-msgstr "Digite seu nĆŗmero de telefone"
+#~ msgid "Enter your phone number"
+#~ msgstr "Digite seu nĆŗmero de telefone"
#: 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:109
+#: src/view/com/auth/create/Step3.tsx:67
+msgid "Error receiving captcha response."
+msgstr ""
+
+#: src/view/screens/Search/Search.tsx:110
msgid "Error:"
msgstr "Erro:"
@@ -1415,7 +1458,7 @@ msgstr "MĆdia Externa"
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 "MĆdias externas podem permitir que sites coletem informaƧƵes sobre vocĆŖ e seu dispositivo. Nenhuma informação Ć© enviada ou solicitada atĆ© que vocĆŖ pressione o botĆ£o de \"play\"."
-#: src/Navigation.tsx:258
+#: src/Navigation.tsx:261
#: src/view/screens/PreferencesExternalEmbeds.tsx:52
#: src/view/screens/Settings/index.tsx:657
msgid "External Media Preferences"
@@ -1434,7 +1477,7 @@ msgstr "NĆ£o foi possĆvel criar senha de aplicativo."
msgid "Failed to create the list. Check your internet connection and try again."
msgstr "NĆ£o foi possĆvel criar a lista. Por favor tente novamente."
-#: src/view/com/util/forms/PostDropdownBtn.tsx:88
+#: src/view/com/util/forms/PostDropdownBtn.tsx:110
msgid "Failed to delete post, please try again"
msgstr "NĆ£o foi possĆvel excluir o post, por favor tente novamente."
@@ -1447,25 +1490,26 @@ msgstr "Falha ao carregar feeds recomendados"
msgid "Feed"
msgstr "Feed"
-#: src/view/com/feeds/FeedSourceCard.tsx:229
+#: src/view/com/feeds/FeedSourceCard.tsx:231
msgid "Feed by {0}"
msgstr "Feed por {0}"
-#: src/view/screens/Feeds.tsx:631
+#: src/view/screens/Feeds.tsx:605
msgid "Feed offline"
msgstr "Feed offline"
#: src/view/com/feeds/FeedPage.tsx:143
-msgid "Feed Preferences"
-msgstr "PreferĆŖncias de Feeds"
+#~ msgid "Feed Preferences"
+#~ msgstr "PreferĆŖncias de Feeds"
-#: src/view/shell/desktop/RightNav.tsx:69
+#: src/view/shell/desktop/RightNav.tsx:61
#: src/view/shell/Drawer.tsx:311
msgid "Feedback"
msgstr "ComentƔrios"
-#: src/Navigation.tsx:442
-#: src/view/screens/Feeds.tsx:548
+#: src/Navigation.tsx:445
+#: src/view/screens/Feeds.tsx:419
+#: src/view/screens/Feeds.tsx:524
#: src/view/screens/Profile.tsx:184
#: src/view/shell/bottom-bar/BottomBar.tsx:181
#: src/view/shell/desktop/LeftNav.tsx:342
@@ -1490,7 +1534,7 @@ msgstr "Os feeds são criados por usuÔrios para curadoria de conteúdo. Escolha
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 com um pouco de experiência em programação podem criar. <0/> para mais informações."
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:70
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:76
msgid "Feeds can be topical as well!"
msgstr "Feeds podem ser de assuntos especĆficos tambĆ©m!"
@@ -1504,11 +1548,11 @@ msgstr "Finalizando"
msgid "Find accounts to follow"
msgstr "Encontre contas para seguir"
-#: src/view/screens/Search/Search.tsx:439
+#: src/view/screens/Search/Search.tsx:440
msgid "Find users on Bluesky"
msgstr "Encontrar usuƔrios no Bluesky"
-#: src/view/screens/Search/Search.tsx:437
+#: src/view/screens/Search/Search.tsx:438
msgid "Find users with the search tool on the right"
msgstr "Encontre usuÔrios com a ferramenta de busca à direita"
@@ -1516,9 +1560,13 @@ msgstr "Encontre usuÔrios com a ferramenta de busca à direita"
msgid "Finding similar accounts..."
msgstr "Procurando contas semelhantes..."
+#: src/view/screens/PreferencesFollowingFeed.tsx:111
+msgid "Fine-tune the content you see on your Following feed."
+msgstr ""
+
#: src/view/screens/PreferencesHomeFeed.tsx:111
-msgid "Fine-tune the content you see on your home screen."
-msgstr "Ajuste o conteĆŗdo que vocĆŖ vĆŖ na sua tela inicial."
+#~ 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."
@@ -1543,7 +1591,7 @@ msgstr "Virar verticalmente"
#: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:181
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:136
-#: src/view/com/profile/ProfileHeader.tsx:512
+#: src/view/com/profile/ProfileHeader.tsx:513
msgid "Follow"
msgstr "Seguir"
@@ -1554,7 +1602,7 @@ msgstr "Seguir"
#: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:58
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:122
-#: src/view/com/profile/ProfileHeader.tsx:503
+#: src/view/com/profile/ProfileHeader.tsx:504
msgid "Follow {0}"
msgstr "Seguir {0}"
@@ -1578,7 +1626,7 @@ msgstr "Seguido por {0}"
msgid "Followed users"
msgstr "UsuƔrios seguidos"
-#: src/view/screens/PreferencesHomeFeed.tsx:154
+#: src/view/screens/PreferencesFollowingFeed.tsx:154
msgid "Followed users only"
msgstr "Somente usuƔrios seguidos"
@@ -1591,16 +1639,24 @@ msgid "Followers"
msgstr "Seguidores"
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:136
-#: src/view/com/profile/ProfileHeader.tsx:494
+#: src/view/com/profile/ProfileHeader.tsx:495
#: src/view/screens/ProfileFollows.tsx:25
msgid "Following"
msgstr "Seguindo"
-#: src/view/com/profile/ProfileHeader.tsx:148
+#: src/view/com/profile/ProfileHeader.tsx:149
msgid "Following {0}"
msgstr "Seguindo {0}"
-#: src/view/com/profile/ProfileHeader.tsx:545
+#: src/Navigation.tsx:248
+#: src/view/com/home/HomeHeaderLayout.web.tsx:45
+#: src/view/com/home/HomeHeaderLayoutMobile.tsx:83
+#: src/view/screens/PreferencesFollowingFeed.tsx:104
+#: src/view/screens/Settings/index.tsx:543
+msgid "Following Feed Preferences"
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:546
msgid "Follows you"
msgstr "Segue vocĆŖ"
@@ -1654,8 +1710,8 @@ msgstr "Vamos comeƧar"
msgid "Go back"
msgstr "Voltar"
-#: src/view/screens/ProfileFeed.tsx:105
-#: src/view/screens/ProfileFeed.tsx:110
+#: src/view/screens/ProfileFeed.tsx:106
+#: src/view/screens/ProfileFeed.tsx:111
#: src/view/screens/ProfileList.tsx:897
#: src/view/screens/ProfileList.tsx:902
msgid "Go Back"
@@ -1666,7 +1722,7 @@ msgstr "Voltar"
msgid "Go back to previous step"
msgstr "Voltar para o passo anterior"
-#: src/view/screens/Search/Search.tsx:724
+#: src/view/screens/Search/Search.tsx:747
#: src/view/shell/desktop/Search.tsx:262
msgid "Go to @{queryMaybeHandle}"
msgstr "Ir para @{queryMaybleHandle}"
@@ -1683,11 +1739,15 @@ msgstr "Próximo"
msgid "Handle"
msgstr "UsuƔrio"
-#: src/view/com/auth/create/CreateAccount.tsx:197
+#: src/components/RichText.tsx:188
+msgid "Hashtag: {tag}"
+msgstr ""
+
+#: src/view/com/auth/create/CreateAccount.tsx:208
msgid "Having trouble?"
msgstr "Precisa de ajuda?"
-#: src/view/shell/desktop/RightNav.tsx:98
+#: src/view/shell/desktop/RightNav.tsx:90
#: src/view/shell/Drawer.tsx:321
msgid "Help"
msgstr "Ajuda"
@@ -1696,11 +1756,11 @@ msgstr "Ajuda"
msgid "Here are some accounts for you to follow"
msgstr "Aqui estão algumas contas para você seguir"
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:79
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:85
msgid "Here are some popular topical feeds. You can choose to follow as many as you like."
msgstr "Aqui estão alguns feeds de assuntos. Você pode seguir quantos quiser."
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:74
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:80
msgid "Here are some topical feeds based on your interests: {interestsText}. You can choose to follow as many as you like."
msgstr "Aqui estão alguns feeds de assuntos baseados nos seus interesses: {interestsText}. Você pode seguir quantos quiser."
@@ -1721,7 +1781,7 @@ msgctxt "action"
msgid "Hide"
msgstr "Esconder"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:187
+#: src/view/com/util/forms/PostDropdownBtn.tsx:232
msgid "Hide post"
msgstr "Ocultar post"
@@ -1730,7 +1790,7 @@ msgstr "Ocultar post"
msgid "Hide the content"
msgstr "Esconder o conteĆŗdo"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:191
+#: src/view/com/util/forms/PostDropdownBtn.tsx:236
msgid "Hide this post?"
msgstr "Ocultar este post?"
@@ -1738,7 +1798,7 @@ msgstr "Ocultar este post?"
msgid "Hide user list"
msgstr "Ocultar lista de usuƔrios"
-#: src/view/com/profile/ProfileHeader.tsx:486
+#: src/view/com/profile/ProfileHeader.tsx:487
msgid "Hides posts from {0} in your feed"
msgstr "Esconder posts de {0} no seu feed"
@@ -1762,7 +1822,7 @@ msgstr "Hmm, o servidor do feed teve algum problema. Por favor, avise o criador
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/Navigation.tsx:432
+#: src/Navigation.tsx:435
#: src/view/shell/bottom-bar/BottomBar.tsx:137
#: src/view/shell/desktop/LeftNav.tsx:306
#: src/view/shell/Drawer.tsx:398
@@ -1774,10 +1834,10 @@ msgstr "PƔgina Inicial"
#: src/view/com/pager/FeedsTabBarMobile.tsx:123
#: src/view/screens/PreferencesHomeFeed.tsx:104
#: src/view/screens/Settings/index.tsx:543
-msgid "Home Feed Preferences"
-msgstr "Preferências da PÔgina Inicial"
+#~ msgid "Home Feed Preferences"
+#~ msgstr "Preferências da PÔgina Inicial"
-#: src/view/com/auth/create/Step1.tsx:78
+#: src/view/com/auth/create/Step1.tsx:82
#: src/view/com/auth/login/ForgotPasswordForm.tsx:120
msgid "Hosting provider"
msgstr "Provedor de hospedagem"
@@ -1831,11 +1891,11 @@ msgstr "Insira o código enviado para o seu e-mail para redefinir sua senha"
msgid "Input confirmation code for account deletion"
msgstr "Insira o código de confirmação para excluir sua conta"
-#: src/view/com/auth/create/Step1.tsx:196
+#: src/view/com/auth/create/Step1.tsx:200
msgid "Input email for Bluesky account"
msgstr "Insira o e-mail para a sua conta do Bluesky"
-#: src/view/com/auth/create/Step1.tsx:154
+#: src/view/com/auth/create/Step1.tsx:158
msgid "Input invite code to proceed"
msgstr "Insira o convite para continuar"
@@ -1852,8 +1912,8 @@ msgid "Input password for account deletion"
msgstr "Insira a senha para excluir a conta"
#: src/view/com/auth/create/Step2.tsx:196
-msgid "Input phone number for SMS verification"
-msgstr "Insira o número de telefone para verificação via SMS"
+#~ msgid "Input phone number for SMS verification"
+#~ msgstr "Insira o número de telefone para verificação via SMS"
#: src/view/com/auth/login/LoginForm.tsx:230
msgid "Input the password tied to {identifier}"
@@ -1864,8 +1924,8 @@ msgid "Input the username or email address you used at signup"
msgstr "Insira o usuÔrio ou e-mail que você cadastrou"
#: src/view/com/auth/create/Step2.tsx:271
-msgid "Input the verification code we have texted to you"
-msgstr "Insira o código de verificação que enviamos para você"
+#~ msgid "Input the verification code we have texted to you"
+#~ msgstr "Insira o código de verificação que enviamos para você"
#: src/view/com/modals/Waitlist.tsx:90
msgid "Input your email to get on the Bluesky waitlist"
@@ -1875,11 +1935,11 @@ msgstr "Insira seu e-mail para entrar na lista de espera do Bluesky"
msgid "Input your password"
msgstr "Insira sua senha"
-#: src/view/com/auth/create/Step3.tsx:42
+#: src/view/com/auth/create/Step2.tsx:80
msgid "Input your user handle"
msgstr "Insira o usuƔrio"
-#: src/view/com/post-thread/PostThreadItem.tsx:225
+#: src/view/com/post-thread/PostThreadItem.tsx:226
msgid "Invalid or unsupported post record"
msgstr "Post invƔlido"
@@ -1895,12 +1955,12 @@ msgstr "Credenciais invƔlidas"
msgid "Invite a Friend"
msgstr "Convide um Amigo"
-#: src/view/com/auth/create/Step1.tsx:144
-#: src/view/com/auth/create/Step1.tsx:153
+#: src/view/com/auth/create/Step1.tsx:148
+#: src/view/com/auth/create/Step1.tsx:157
msgid "Invite code"
msgstr "Convite"
-#: src/view/com/auth/create/state.ts:199
+#: src/view/com/auth/create/state.ts:158
msgid "Invite code not accepted. Check that you input it correctly and try again."
msgstr "Convite invÔlido. Verifique se você o inseriu corretamente e tente novamente."
@@ -1921,6 +1981,7 @@ msgid "It shows posts from the people you follow as they happen."
msgstr "Mostra os posts de quem vocĆŖ segue conforme acontecem."
#: src/view/com/auth/HomeLoggedOutCTA.tsx:99
+#: src/view/com/auth/SplashScreen.web.tsx:138
msgid "Jobs"
msgstr "Carreiras"
@@ -1928,8 +1989,8 @@ msgstr "Carreiras"
msgid "Join the waitlist"
msgstr "Junte-se Ć lista de espera"
-#: src/view/com/auth/create/Step1.tsx:170
#: src/view/com/auth/create/Step1.tsx:174
+#: src/view/com/auth/create/Step1.tsx:178
msgid "Join the waitlist."
msgstr "Junte-se Ć lista de espera."
@@ -1980,7 +2041,7 @@ msgstr "Saiba Mais"
msgid "Learn more about this warning"
msgstr "Saiba mais sobre este aviso"
-#: src/view/screens/Moderation.tsx:243
+#: src/view/screens/Moderation.tsx:262
msgid "Learn more about what is public on Bluesky."
msgstr "Saiba mais sobre o que Ć© pĆŗblico no Bluesky."
@@ -2036,7 +2097,7 @@ msgstr "Curtido por"
msgid "Liked By"
msgstr "Curtido Por"
-#: src/view/com/feeds/FeedSourceCard.tsx:277
+#: src/view/com/feeds/FeedSourceCard.tsx:279
msgid "Liked by {0} {1}"
msgstr "Curtido por {0} {1}"
@@ -2056,7 +2117,7 @@ msgstr "curtiu seu post"
msgid "Likes"
msgstr "Curtidas"
-#: src/view/com/post-thread/PostThreadItem.tsx:182
+#: src/view/com/post-thread/PostThreadItem.tsx:183
msgid "Likes on this post"
msgstr "Curtidas neste post"
@@ -2068,19 +2129,19 @@ msgstr "Lista"
msgid "List Avatar"
msgstr "Avatar da lista"
-#: src/view/screens/ProfileList.tsx:323
+#: src/view/screens/ProfileList.tsx:324
msgid "List blocked"
msgstr "Lista bloqueada"
-#: src/view/com/feeds/FeedSourceCard.tsx:231
+#: src/view/com/feeds/FeedSourceCard.tsx:233
msgid "List by {0}"
msgstr "Lista por {0}"
-#: src/view/screens/ProfileList.tsx:377
+#: src/view/screens/ProfileList.tsx:378
msgid "List deleted"
msgstr "Lista excluĆda"
-#: src/view/screens/ProfileList.tsx:282
+#: src/view/screens/ProfileList.tsx:283
msgid "List muted"
msgstr "Lista silenciada"
@@ -2088,11 +2149,11 @@ msgstr "Lista silenciada"
msgid "List Name"
msgstr "Nome da lista"
-#: src/view/screens/ProfileList.tsx:342
+#: src/view/screens/ProfileList.tsx:343
msgid "List unblocked"
msgstr "Lista desbloqueada"
-#: src/view/screens/ProfileList.tsx:301
+#: src/view/screens/ProfileList.tsx:302
msgid "List unmuted"
msgstr "Lista dessilenciada"
@@ -2104,8 +2165,8 @@ msgstr "Lista dessilenciada"
msgid "Lists"
msgstr "Listas"
-#: src/view/com/post-thread/PostThread.tsx:276
-#: src/view/com/post-thread/PostThread.tsx:284
+#: src/view/com/post-thread/PostThread.tsx:333
+#: src/view/com/post-thread/PostThread.tsx:341
msgid "Load more posts"
msgstr "Carregar mais posts"
@@ -2113,10 +2174,10 @@ msgstr "Carregar mais posts"
msgid "Load new notifications"
msgstr "Carregar novas notificaƧƵes"
-#: src/view/com/feeds/FeedPage.tsx:190
+#: src/view/com/feeds/FeedPage.tsx:115
#: src/view/screens/Profile.tsx:440
-#: src/view/screens/ProfileFeed.tsx:494
-#: src/view/screens/ProfileList.tsx:680
+#: src/view/screens/ProfileFeed.tsx:495
+#: src/view/screens/ProfileList.tsx:681
msgid "Load new posts"
msgstr "Carregar novos posts"
@@ -2139,7 +2200,7 @@ msgstr "Registros"
msgid "Log out"
msgstr "Sair"
-#: src/view/screens/Moderation.tsx:136
+#: src/view/screens/Moderation.tsx:155
msgid "Logged-out visibility"
msgstr "Visibilidade do seu perfil"
@@ -2151,6 +2212,18 @@ msgstr "Fazer login em uma conta que não estÔ listada"
msgid "Make sure this is where you intend to go!"
msgstr "Certifique-se de onde estĆ” indo!"
+#: src/components/dialogs/MutedWords.tsx:71
+msgid "Manage your muted words and tags"
+msgstr ""
+
+#: src/view/com/auth/create/Step2.tsx:118
+msgid "May not be longer than 253 characters"
+msgstr ""
+
+#: src/view/com/auth/create/Step2.tsx:109
+msgid "May only contain letters and numbers"
+msgstr ""
+
#: src/view/screens/Profile.tsx:182
msgid "Media"
msgstr "MĆdia"
@@ -2164,7 +2237,7 @@ msgid "Mentioned users"
msgstr "UsuƔrios mencionados"
#: src/view/com/util/ViewHeader.tsx:81
-#: src/view/screens/Search/Search.tsx:623
+#: src/view/screens/Search/Search.tsx:646
msgid "Menu"
msgstr "Menu"
@@ -2173,7 +2246,7 @@ msgid "Message from server: {0}"
msgstr "Mensagem do servidor: {0}"
#: src/Navigation.tsx:115
-#: src/view/screens/Moderation.tsx:64
+#: src/view/screens/Moderation.tsx:66
#: src/view/screens/Settings/index.tsx:625
#: src/view/shell/desktop/LeftNav.tsx:397
#: src/view/shell/Drawer.tsx:511
@@ -2181,7 +2254,7 @@ msgstr "Mensagem do servidor: {0}"
msgid "Moderation"
msgstr "Moderação"
-#: src/view/com/lists/ListCard.tsx:92
+#: src/view/com/lists/ListCard.tsx:93
#: src/view/com/modals/UserAddRemoveLists.tsx:206
msgid "Moderation list by {0}"
msgstr "Lista de moderação por {0}"
@@ -2190,7 +2263,7 @@ msgstr "Lista de moderação por {0}"
msgid "Moderation list by <0/>"
msgstr "Lista de moderação por <0/>"
-#: src/view/com/lists/ListCard.tsx:90
+#: src/view/com/lists/ListCard.tsx:91
#: src/view/com/modals/UserAddRemoveLists.tsx:204
#: src/view/screens/ProfileList.tsx:772
msgid "Moderation list by you"
@@ -2204,7 +2277,7 @@ msgstr "Lista de moderação criada"
msgid "Moderation list updated"
msgstr "Lista de moderação criada"
-#: src/view/screens/Moderation.tsx:95
+#: src/view/screens/Moderation.tsx:114
msgid "Moderation lists"
msgstr "Listas de moderação"
@@ -2225,13 +2298,13 @@ msgstr "O moderador escolheu um aviso geral neste conteĆŗdo."
msgid "More feeds"
msgstr "Mais feeds"
-#: src/view/com/profile/ProfileHeader.tsx:522
-#: src/view/screens/ProfileFeed.tsx:362
-#: src/view/screens/ProfileList.tsx:616
+#: src/view/com/profile/ProfileHeader.tsx:523
+#: src/view/screens/ProfileFeed.tsx:363
+#: src/view/screens/ProfileList.tsx:617
msgid "More options"
msgstr "Mais opƧƵes"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:270
+#: src/view/com/util/forms/PostDropdownBtn.tsx:315
msgid "More post options"
msgstr "Mais opƧƵes do post"
@@ -2239,35 +2312,71 @@ msgstr "Mais opƧƵes do post"
msgid "Most-liked replies first"
msgstr "Respostas mais curtidas primeiro"
-#: src/view/com/profile/ProfileHeader.tsx:326
+#: src/view/com/auth/create/Step2.tsx:122
+msgid "Must be at least 3 characters"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:253
+msgid "Mute"
+msgstr ""
+
+#: src/components/TagMenu/index.web.tsx:91
+msgid "Mute {truncatedTag}"
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:327
msgid "Mute Account"
msgstr "Silenciar Conta"
-#: src/view/screens/ProfileList.tsx:543
+#: src/view/screens/ProfileList.tsx:544
msgid "Mute accounts"
msgstr "Silenciar contas"
-#: src/view/screens/ProfileList.tsx:490
+#: src/components/TagMenu/index.tsx:211
+msgid "Mute all {tag} posts"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:131
+msgid "Mute in tags only"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:116
+msgid "Mute in text & tags"
+msgstr ""
+
+#: src/view/screens/ProfileList.tsx:491
msgid "Mute list"
msgstr "Lista de moderação"
-#: src/view/screens/ProfileList.tsx:274
+#: src/view/screens/ProfileList.tsx:275
msgid "Mute these accounts?"
msgstr "Silenciar estas contas?"
-#: src/view/screens/ProfileList.tsx:278
+#: src/view/screens/ProfileList.tsx:279
msgid "Mute this List"
msgstr "Silenciar esta lista"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:171
+#: src/components/dialogs/MutedWords.tsx:109
+msgid "Mute this word in post text and tags"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:124
+msgid "Mute this word in tags only"
+msgstr ""
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:202
msgid "Mute thread"
msgstr "Silenciar thread"
-#: src/view/com/lists/ListCard.tsx:101
+#: src/view/com/util/forms/PostDropdownBtn.tsx:216
+msgid "Mute words & tags"
+msgstr ""
+
+#: src/view/com/lists/ListCard.tsx:102
msgid "Muted"
msgstr "Silenciada"
-#: src/view/screens/Moderation.tsx:109
+#: src/view/screens/Moderation.tsx:128
msgid "Muted accounts"
msgstr "Contas silenciadas"
@@ -2280,7 +2389,11 @@ msgstr "Contas Silenciadas"
msgid "Muted accounts have their posts removed from your feed and from your notifications. Mutes are completely private."
msgstr "Contas silenciadas não aparecem no seu feed ou nas suas notificações. Suas contas silenciadas são completamente privadas."
-#: src/view/screens/ProfileList.tsx:276
+#: src/view/screens/Moderation.tsx:100
+msgid "Muted words & tags"
+msgstr ""
+
+#: src/view/screens/ProfileList.tsx:277
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."
@@ -2288,7 +2401,7 @@ msgstr "Silenciar Ć© privado. Contas silenciadas podem interagir com vocĆŖ, mas
msgid "My Birthday"
msgstr "Meu AniversƔrio"
-#: src/view/screens/Feeds.tsx:419
+#: src/view/screens/Feeds.tsx:663
msgid "My Feeds"
msgstr "Meus Feeds"
@@ -2343,6 +2456,10 @@ msgstr "Nunca perca o acesso aos seus seguidores e dados."
msgid "Never lose access to your followers or data."
msgstr "Nunca perca o acesso aos seus seguidores ou dados."
+#: src/components/dialogs/MutedWords.tsx:244
+msgid "Nevermind"
+msgstr ""
+
#: src/view/screens/Lists.tsx:76
msgctxt "action"
msgid "New"
@@ -2364,17 +2481,17 @@ msgstr "Nova senha"
msgid "New Password"
msgstr "Nova Senha"
-#: src/view/com/feeds/FeedPage.tsx:201
+#: src/view/com/feeds/FeedPage.tsx:126
msgctxt "action"
msgid "New post"
msgstr "Novo post"
-#: src/view/screens/Feeds.tsx:581
+#: src/view/screens/Feeds.tsx:555
#: src/view/screens/Notifications.tsx:168
#: src/view/screens/Profile.tsx:382
-#: src/view/screens/ProfileFeed.tsx:432
-#: src/view/screens/ProfileList.tsx:195
-#: src/view/screens/ProfileList.tsx:223
+#: src/view/screens/ProfileFeed.tsx:433
+#: src/view/screens/ProfileList.tsx:196
+#: src/view/screens/ProfileList.tsx:224
#: src/view/shell/desktop/LeftNav.tsx:248
msgid "New post"
msgstr "Novo post"
@@ -2396,7 +2513,7 @@ msgstr "Respostas mais recentes primeiro"
msgid "News"
msgstr "NotĆcias"
-#: src/view/com/auth/create/CreateAccount.tsx:161
+#: src/view/com/auth/create/CreateAccount.tsx:172
#: src/view/com/auth/login/ForgotPasswordForm.tsx:182
#: src/view/com/auth/login/ForgotPasswordForm.tsx:192
#: src/view/com/auth/login/LoginForm.tsx:291
@@ -2417,10 +2534,10 @@ msgstr "Próximo"
msgid "Next image"
msgstr "Próxima imagem"
-#: 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/PreferencesFollowingFeed.tsx:129
+#: src/view/screens/PreferencesFollowingFeed.tsx:200
+#: src/view/screens/PreferencesFollowingFeed.tsx:235
+#: src/view/screens/PreferencesFollowingFeed.tsx:272
#: src/view/screens/PreferencesThreads.tsx:106
#: src/view/screens/PreferencesThreads.tsx:129
msgid "No"
@@ -2431,7 +2548,7 @@ msgstr "NĆ£o"
msgid "No description"
msgstr "Sem descrição"
-#: src/view/com/profile/ProfileHeader.tsx:169
+#: src/view/com/profile/ProfileHeader.tsx:170
msgid "No longer following {0}"
msgstr "Você não estÔ mais seguindo {0}"
@@ -2444,13 +2561,13 @@ msgstr "Nenhuma notificação!"
msgid "No result"
msgstr "Nenhum resultado"
-#: src/view/screens/Feeds.tsx:524
+#: src/view/screens/Feeds.tsx:495
msgid "No results found for \"{query}\""
msgstr "Nenhum resultado encontrado para \"{query}\""
#: src/view/com/modals/ListAddRemoveUsers.tsx:127
-#: src/view/screens/Search/Search.tsx:280
-#: src/view/screens/Search/Search.tsx:308
+#: src/view/screens/Search/Search.tsx:281
+#: src/view/screens/Search/Search.tsx:309
msgid "No results found for {query}"
msgstr "Nenhum resultado encontrado para {query}"
@@ -2476,11 +2593,11 @@ msgstr "NĆ£o encontrado"
msgid "Not right now"
msgstr "Agora não"
-#: src/view/screens/Moderation.tsx:233
+#: src/view/screens/Moderation.tsx:252
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. Esta configuração limita somente a visibilidade do seu conteúdo no site e aplicativo do Bluesky, e outros aplicativos podem não respeitar esta configuração. Seu conteúdo ainda poderÔ ser exibido para usuÔrios deslogados por outros aplicativos e sites."
-#: src/Navigation.tsx:447
+#: src/Navigation.tsx:450
#: src/view/screens/Notifications.tsx:124
#: src/view/screens/Notifications.tsx:148
#: src/view/shell/bottom-bar/BottomBar.tsx:205
@@ -2514,7 +2631,7 @@ msgstr "Respostas mais antigas primeiro"
msgid "Onboarding reset"
msgstr "Resetar tutoriais"
-#: src/view/com/composer/Composer.tsx:375
+#: src/view/com/composer/Composer.tsx:382
msgid "One or more images is missing alt text."
msgstr "Uma ou mais imagens estão sem texto alternativo."
@@ -2531,8 +2648,12 @@ msgstr "Opa!"
msgid "Open"
msgstr "Abrir"
-#: src/view/com/composer/Composer.tsx:470
-#: src/view/com/composer/Composer.tsx:471
+#: src/view/screens/Moderation.tsx:75
+msgid "Open content filtering settings"
+msgstr ""
+
+#: src/view/com/composer/Composer.tsx:477
+#: src/view/com/composer/Composer.tsx:478
msgid "Open emoji picker"
msgstr "Abrir seletor de emojis"
@@ -2540,7 +2661,11 @@ msgstr "Abrir seletor de emojis"
msgid "Open links with in-app browser"
msgstr "Abrir links no navegador interno"
-#: src/view/com/pager/FeedsTabBarMobile.tsx:87
+#: src/view/screens/Moderation.tsx:92
+msgid "Open muted words settings"
+msgstr ""
+
+#: src/view/com/home/HomeHeaderLayoutMobile.tsx:49
msgid "Open navigation"
msgstr "Abrir navegação"
@@ -2576,7 +2701,7 @@ msgstr "Abre definiƧƵes de idioma configurƔveis"
msgid "Opens device photo gallery"
msgstr "Abre a galeria de fotos do dispositivo"
-#: src/view/com/profile/ProfileHeader.tsx:419
+#: src/view/com/profile/ProfileHeader.tsx:420
msgid "Opens editor for profile display name, avatar, background image, and description"
msgstr "Abre o editor de nome, avatar, banner e descrição do perfil"
@@ -2584,11 +2709,11 @@ msgstr "Abre o editor de nome, avatar, banner e descrição do perfil"
msgid "Opens external embeds settings"
msgstr "Abre as configuraƧƵes de anexos externos"
-#: src/view/com/profile/ProfileHeader.tsx:574
+#: src/view/com/profile/ProfileHeader.tsx:575
msgid "Opens followers list"
msgstr "Abre lista de seguidores"
-#: src/view/com/profile/ProfileHeader.tsx:593
+#: src/view/com/profile/ProfileHeader.tsx:594
msgid "Opens following list"
msgstr "Abre lista de seguidos"
@@ -2616,7 +2741,8 @@ msgstr "Abre configurações de moderação"
msgid "Opens password reset form"
msgstr "Abre o formulÔrio de redefinição de senha"
-#: src/view/screens/Feeds.tsx:357
+#: src/view/com/home/HomeHeaderLayout.web.tsx:60
+#: src/view/screens/Feeds.tsx:356
msgid "Opens screen to edit Saved Feeds"
msgstr "Abre a tela para editar feeds salvos"
@@ -2672,8 +2798,8 @@ msgstr "PÔgina não encontrada"
msgid "Page Not Found"
msgstr "PÔgina Não Encontrada"
-#: src/view/com/auth/create/Step1.tsx:210
-#: src/view/com/auth/create/Step1.tsx:220
+#: src/view/com/auth/create/Step1.tsx:214
+#: src/view/com/auth/create/Step1.tsx:224
#: src/view/com/auth/login/LoginForm.tsx:226
#: src/view/com/auth/login/SetNewPasswordForm.tsx:161
#: src/view/com/modals/DeleteAccount.tsx:202
@@ -2709,15 +2835,15 @@ msgid "Pets"
msgstr "Pets"
#: src/view/com/auth/create/Step2.tsx:183
-msgid "Phone number"
-msgstr "NĆŗmero de telefone"
+#~ msgid "Phone number"
+#~ msgstr "NĆŗmero de telefone"
#: src/view/com/modals/SelfLabel.tsx:121
msgid "Pictures meant for adults."
msgstr "Imagens destinadas a adultos."
-#: src/view/screens/ProfileFeed.tsx:353
-#: src/view/screens/ProfileList.tsx:580
+#: src/view/screens/ProfileFeed.tsx:354
+#: src/view/screens/ProfileList.tsx:581
msgid "Pin to home"
msgstr "Fixar na tela inicial"
@@ -2738,14 +2864,18 @@ msgstr "Reproduzir VĆdeo"
msgid "Plays the GIF"
msgstr "Reproduz o GIF"
-#: src/view/com/auth/create/state.ts:177
+#: src/view/com/auth/create/state.ts:124
msgid "Please choose your handle."
msgstr "Por favor, escolha seu usuƔrio."
-#: src/view/com/auth/create/state.ts:160
+#: src/view/com/auth/create/state.ts:117
msgid "Please choose your password."
msgstr "Por favor, escolha sua senha."
+#: src/view/com/auth/create/state.ts:131
+msgid "Please complete the verification captcha."
+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 "Por favor, confirme seu e-mail antes de alterÔ-lo. Este é um requisito temporÔrio enquanto ferramentas de atualização de e-mail são adicionadas, e em breve serÔ removido."
@@ -2755,22 +2885,22 @@ msgid "Please enter a name for your app password. All spaces is not allowed."
msgstr "Por favor, insira um nome para a sua Senha de Aplicativo."
#: src/view/com/auth/create/Step2.tsx:206
-msgid "Please enter a phone number that can receive SMS text messages."
-msgstr "Por favor, insira um nĆŗmero de telefone que possa receber mensagens SMS."
+#~ msgid "Please enter a phone number that can receive SMS text messages."
+#~ msgstr "Por favor, insira um nĆŗmero de telefone que possa receber mensagens SMS."
#: src/view/com/modals/AddAppPasswords.tsx:145
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 de Aplicativo ou use nosso nome gerado automaticamente."
#: src/view/com/auth/create/state.ts:170
-msgid "Please enter the code you received by SMS."
-msgstr "Por favor, digite o código recebido via SMS."
+#~ msgid "Please enter the code you received by SMS."
+#~ msgstr "Por favor, digite o código recebido via SMS."
#: src/view/com/auth/create/Step2.tsx:282
-msgid "Please enter the verification code sent to {phoneNumberFormatted}."
-msgstr "Por favor, digite o código de verificação enviado para {phoneNumberFormatted}."
+#~ msgid "Please enter the verification code sent to {phoneNumberFormatted}."
+#~ msgstr "Por favor, digite o código de verificação enviado para {phoneNumberFormatted}."
-#: src/view/com/auth/create/state.ts:146
+#: src/view/com/auth/create/state.ts:103
msgid "Please enter your email."
msgstr "Por favor, digite o seu e-mail."
@@ -2792,7 +2922,7 @@ msgstr "Por favor, diga-nos por que vocĆŖ acha que este aviso de conteĆŗdo foi a
msgid "Please Verify Your Email"
msgstr "Por favor, verifique seu e-mail"
-#: src/view/com/composer/Composer.tsx:215
+#: src/view/com/composer/Composer.tsx:222
msgid "Please wait for your link card to finish loading"
msgstr "Aguarde atƩ que a prƩvia de link termine de carregar"
@@ -2804,18 +2934,18 @@ msgstr "PolĆtica"
msgid "Porn"
msgstr "Pornografia"
-#: src/view/com/composer/Composer.tsx:350
-#: src/view/com/composer/Composer.tsx:358
+#: src/view/com/composer/Composer.tsx:357
+#: src/view/com/composer/Composer.tsx:365
msgctxt "action"
msgid "Post"
msgstr "Postar"
-#: src/view/com/post-thread/PostThread.tsx:246
+#: src/view/com/post-thread/PostThread.tsx:303
msgctxt "description"
msgid "Post"
msgstr "Post"
-#: src/view/com/post-thread/PostThreadItem.tsx:174
+#: src/view/com/post-thread/PostThreadItem.tsx:175
msgid "Post by {0}"
msgstr "Post por {0}"
@@ -2825,11 +2955,11 @@ msgstr "Post por {0}"
msgid "Post by @{0}"
msgstr "Post por @{0}"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:84
+#: src/view/com/util/forms/PostDropdownBtn.tsx:90
msgid "Post deleted"
msgstr "Post excluĆdo"
-#: src/view/com/post-thread/PostThread.tsx:398
+#: src/view/com/post-thread/PostThread.tsx:462
msgid "Post hidden"
msgstr "Post oculto"
@@ -2841,14 +2971,22 @@ msgstr "Idioma do post"
msgid "Post Languages"
msgstr "Idiomas do Post"
-#: src/view/com/post-thread/PostThread.tsx:450
+#: src/view/com/post-thread/PostThread.tsx:514
msgid "Post not found"
msgstr "Post não encontrado"
+#: src/components/TagMenu/index.tsx:257
+msgid "posts"
+msgstr ""
+
#: src/view/screens/Profile.tsx:180
msgid "Posts"
msgstr "Posts"
+#: src/components/dialogs/MutedWords.tsx:77
+msgid "Posts can be muted based on their text, their tags, or both."
+msgstr ""
+
#: src/view/com/posts/FeedErrorMessage.tsx:64
msgid "Posts hidden"
msgstr "Posts ocultados"
@@ -2870,7 +3008,7 @@ msgid "Prioritize Your Follows"
msgstr "Priorizar seus Seguidores"
#: src/view/screens/Settings/index.tsx:632
-#: src/view/shell/desktop/RightNav.tsx:80
+#: src/view/shell/desktop/RightNav.tsx:72
msgid "Privacy"
msgstr "Privacidade"
@@ -2913,11 +3051,11 @@ msgstr "Listas públicas e compartilhÔveis para silenciar ou bloquear usuÔrios
msgid "Public, shareable lists which can drive feeds."
msgstr "Listas públicas e compartilhÔveis que geram feeds."
-#: src/view/com/composer/Composer.tsx:335
+#: src/view/com/composer/Composer.tsx:342
msgid "Publish post"
msgstr "Publicar post"
-#: src/view/com/composer/Composer.tsx:335
+#: src/view/com/composer/Composer.tsx:342
msgid "Publish reply"
msgstr "Publicar resposta"
@@ -2951,6 +3089,7 @@ msgstr "Feeds Recomendados"
msgid "Recommended Users"
msgstr "UsuƔrios Recomendados"
+#: src/components/dialogs/MutedWords.tsx:249
#: src/view/com/modals/ListAddRemoveUsers.tsx:264
#: src/view/com/modals/SelfLabel.tsx:83
#: src/view/com/modals/UserAddRemoveLists.tsx:219
@@ -2959,7 +3098,7 @@ msgstr "UsuƔrios Recomendados"
msgid "Remove"
msgstr "Remover"
-#: src/view/com/feeds/FeedSourceCard.tsx:106
+#: src/view/com/feeds/FeedSourceCard.tsx:108
msgid "Remove {0} from my feeds?"
msgstr "Remover {0} dos meus feeds?"
@@ -2972,11 +3111,11 @@ msgstr "Remover conta"
msgid "Remove feed"
msgstr "Remover feed"
-#: src/view/com/feeds/FeedSourceCard.tsx:105
-#: src/view/com/feeds/FeedSourceCard.tsx:167
-#: src/view/com/feeds/FeedSourceCard.tsx:172
-#: src/view/com/feeds/FeedSourceCard.tsx:243
-#: src/view/screens/ProfileFeed.tsx:272
+#: src/view/com/feeds/FeedSourceCard.tsx:107
+#: src/view/com/feeds/FeedSourceCard.tsx:169
+#: src/view/com/feeds/FeedSourceCard.tsx:174
+#: src/view/com/feeds/FeedSourceCard.tsx:245
+#: src/view/screens/ProfileFeed.tsx:273
msgid "Remove from my feeds"
msgstr "Remover dos meus feeds"
@@ -2988,11 +3127,15 @@ msgstr "Remover imagem"
msgid "Remove image preview"
msgstr "Remover visualização da imagem"
+#: src/components/dialogs/MutedWords.tsx:294
+msgid "Remove mute word from your list"
+msgstr ""
+
#: src/view/com/modals/Repost.tsx:47
msgid "Remove repost"
msgstr "Desfazer repost"
-#: src/view/com/feeds/FeedSourceCard.tsx:173
+#: src/view/com/feeds/FeedSourceCard.tsx:175
msgid "Remove this feed from my feeds?"
msgstr "Remover este feed dos meus feeds?"
@@ -3005,8 +3148,8 @@ msgstr "Remover este feed dos feeds salvos?"
msgid "Removed from list"
msgstr "Removido da lista"
-#: src/view/com/feeds/FeedSourceCard.tsx:111
-#: src/view/com/feeds/FeedSourceCard.tsx:178
+#: src/view/com/feeds/FeedSourceCard.tsx:113
+#: src/view/com/feeds/FeedSourceCard.tsx:180
msgid "Removed from my feeds"
msgstr "Remover dos meus feeds"
@@ -3022,16 +3165,16 @@ msgstr "Respostas"
msgid "Replies to this thread are disabled"
msgstr "Respostas para esta thread estão desativadas"
-#: src/view/com/composer/Composer.tsx:348
+#: src/view/com/composer/Composer.tsx:355
msgctxt "action"
msgid "Reply"
msgstr "Responder"
-#: src/view/screens/PreferencesHomeFeed.tsx:144
+#: src/view/screens/PreferencesFollowingFeed.tsx:144
msgid "Reply Filters"
msgstr "Filtros de Resposta"
-#: src/view/com/post/Post.tsx:166
+#: src/view/com/post/Post.tsx:167
#: src/view/com/posts/FeedItem.tsx:287
msgctxt "description"
msgid "Reply to <0/>"
@@ -3041,20 +3184,20 @@ msgstr "Responder <0/>"
msgid "Report {collectionName}"
msgstr "Denunciar {collectionName}"
-#: src/view/com/profile/ProfileHeader.tsx:360
+#: src/view/com/profile/ProfileHeader.tsx:361
msgid "Report Account"
msgstr "Denunciar Conta"
-#: src/view/screens/ProfileFeed.tsx:292
+#: src/view/screens/ProfileFeed.tsx:293
msgid "Report feed"
msgstr "Denunciar feed"
-#: src/view/screens/ProfileList.tsx:458
+#: src/view/screens/ProfileList.tsx:459
msgid "Report List"
msgstr "Denunciar Lista"
#: src/view/com/modals/report/SendReportButton.tsx:37
-#: src/view/com/util/forms/PostDropdownBtn.tsx:210
+#: src/view/com/util/forms/PostDropdownBtn.tsx:255
msgid "Report post"
msgstr "Denunciar post"
@@ -3091,7 +3234,7 @@ msgstr "Repostado por <0/>"
msgid "reposted your post"
msgstr "repostou seu post"
-#: src/view/com/post-thread/PostThreadItem.tsx:187
+#: src/view/com/post-thread/PostThreadItem.tsx:188
msgid "Reposts of this post"
msgstr "Reposts"
@@ -3101,8 +3244,8 @@ msgid "Request Change"
msgstr "Solicitar Alteração"
#: src/view/com/auth/create/Step2.tsx:219
-msgid "Request code"
-msgstr "Solicitar código"
+#~ msgid "Request code"
+#~ msgstr "Solicitar código"
#: src/view/com/modals/ChangePassword.tsx:239
#: src/view/com/modals/ChangePassword.tsx:241
@@ -3113,7 +3256,7 @@ msgstr "Solicitar Código"
msgid "Require alt text before posting"
msgstr "Exigir texto alternativo antes de postar"
-#: src/view/com/auth/create/Step1.tsx:149
+#: src/view/com/auth/create/Step1.tsx:153
msgid "Required for this provider"
msgstr "Obrigatório para este provedor"
@@ -3165,9 +3308,8 @@ msgstr "Tenta a última ação, que deu erro"
#: src/screens/Onboarding/StepInterests/index.tsx:221
#: src/screens/Onboarding/StepInterests/index.tsx:224
-#: src/view/com/auth/create/CreateAccount.tsx:170
-#: src/view/com/auth/create/CreateAccount.tsx:175
-#: src/view/com/auth/create/Step2.tsx:255
+#: src/view/com/auth/create/CreateAccount.tsx:181
+#: src/view/com/auth/create/CreateAccount.tsx:186
#: src/view/com/auth/login/LoginForm.tsx:268
#: src/view/com/auth/login/LoginForm.tsx:271
#: src/view/com/util/error/ErrorMessage.tsx:55
@@ -3176,16 +3318,16 @@ msgid "Retry"
msgstr "Tente novamente"
#: src/view/com/auth/create/Step2.tsx:247
-msgid "Retry."
-msgstr "Tentar novamente."
+#~ msgid "Retry."
+#~ msgstr "Tentar novamente."
#: src/view/screens/ProfileList.tsx:898
msgid "Return to previous page"
msgstr "Voltar para pƔgina anterior"
#: src/view/shell/desktop/RightNav.tsx:55
-msgid "SANDBOX. Posts and accounts are not permanent."
-msgstr "SANDBOX. Posts e contas não são permanentes."
+#~ msgid "SANDBOX. Posts and accounts are not permanent."
+#~ msgstr "SANDBOX. Posts e contas não são permanentes."
#: src/view/com/lightbox/Lightbox.tsx:132
#: src/view/com/modals/CreateOrEditList.tsx:345
@@ -3198,7 +3340,7 @@ msgstr "Salvar"
#: src/view/com/modals/ChangeHandle.tsx:173
#: src/view/com/modals/CreateOrEditList.tsx:337
#: src/view/com/modals/EditProfile.tsx:224
-#: src/view/screens/ProfileFeed.tsx:345
+#: src/view/screens/ProfileFeed.tsx:346
msgid "Save"
msgstr "Salvar"
@@ -3238,14 +3380,14 @@ msgstr "CiĆŖncia"
msgid "Scroll to top"
msgstr "Ir para o topo"
-#: src/Navigation.tsx:437
+#: src/Navigation.tsx:440
#: src/view/com/auth/LoggedOut.tsx:122
#: src/view/com/modals/ListAddRemoveUsers.tsx:75
#: src/view/com/util/forms/SearchInput.tsx:67
#: src/view/com/util/forms/SearchInput.tsx:79
-#: src/view/screens/Search/Search.tsx:418
-#: src/view/screens/Search/Search.tsx:645
-#: src/view/screens/Search/Search.tsx:663
+#: src/view/screens/Search/Search.tsx:419
+#: src/view/screens/Search/Search.tsx:668
+#: src/view/screens/Search/Search.tsx:686
#: src/view/shell/bottom-bar/BottomBar.tsx:159
#: src/view/shell/desktop/LeftNav.tsx:324
#: src/view/shell/desktop/Search.tsx:214
@@ -3255,11 +3397,19 @@ msgstr "Ir para o topo"
msgid "Search"
msgstr "Buscar"
-#: src/view/screens/Search/Search.tsx:712
+#: src/view/screens/Search/Search.tsx:735
#: src/view/shell/desktop/Search.tsx:255
msgid "Search for \"{query}\""
msgstr "Pesquisar por \"{query}\""
+#: src/components/TagMenu/index.tsx:145
+msgid "Search for all posts by @{authorHandle} with tag {tag}"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:90
+msgid "Search for all posts with tag {tag}"
+msgstr ""
+
#: src/view/com/auth/LoggedOut.tsx:104
#: src/view/com/auth/LoggedOut.tsx:105
#: src/view/com/modals/ListAddRemoveUsers.tsx:70
@@ -3270,6 +3420,22 @@ msgstr "Buscar usuƔrios"
msgid "Security Step Required"
msgstr "Passo de SeguranƧa NecessƔrio"
+#: src/components/TagMenu/index.web.tsx:50
+msgid "See {truncatedTag} posts"
+msgstr ""
+
+#: src/components/TagMenu/index.web.tsx:67
+msgid "See {truncatedTag} posts by user"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:128
+msgid "See <0>{tag}0> posts"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:189
+msgid "See <0>{tag}0> posts by this user"
+msgstr ""
+
#: src/view/screens/SavedFeeds.tsx:163
msgid "See this guide"
msgstr "Veja o guia"
@@ -3294,7 +3460,7 @@ msgstr "Selecionar de uma conta existente"
msgid "Select option {i} of {numItems}"
msgstr "Seleciona opção {i} de {numItems}"
-#: src/view/com/auth/create/Step1.tsx:99
+#: src/view/com/auth/create/Step1.tsx:103
#: src/view/com/auth/login/LoginForm.tsx:150
msgid "Select service"
msgstr "Selecionar serviƧo"
@@ -3311,7 +3477,7 @@ msgstr ""
#~ msgid "Select the types of content that you want to see (or not see), and we'll handle the rest."
#~ msgstr "Selecione os tipos de conteúdo que você quer (ou não) ver, e cuidaremos do resto."
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:90
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:96
msgid "Select topical feeds to follow from the list below"
msgstr "Selecione feeds de assuntos para seguir"
@@ -3332,8 +3498,8 @@ msgid "Select your interests from the options below"
msgstr "Selecione seus interesses"
#: src/view/com/auth/create/Step2.tsx:155
-msgid "Select your phone's country"
-msgstr "Selecione o paĆs do nĆŗmero de telefone"
+#~ msgid "Select your phone's country"
+#~ msgstr "Selecione o paĆs do nĆŗmero de telefone"
#: src/view/screens/LanguageSettings.tsx:190
msgid "Select your preferred language for translations in your feed."
@@ -3412,19 +3578,19 @@ msgstr "Definir o tema escuro para a versão menos escura"
msgid "Set new password"
msgstr "Definir uma nova senha"
-#: src/view/com/auth/create/Step1.tsx:221
+#: src/view/com/auth/create/Step1.tsx:225
msgid "Set password"
msgstr "Definir senha"
-#: src/view/screens/PreferencesHomeFeed.tsx:225
+#: src/view/screens/PreferencesFollowingFeed.tsx:225
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 todas as citaƧƵes do seu feed. Reposts ainda serĆ£o visĆveis."
-#: src/view/screens/PreferencesHomeFeed.tsx:122
+#: src/view/screens/PreferencesFollowingFeed.tsx:122
msgid "Set this setting to \"No\" to hide all replies from your feed."
msgstr "Defina esta configuração como \"Não\" para ocultar todas as respostas do seu feed."
-#: src/view/screens/PreferencesHomeFeed.tsx:191
+#: src/view/screens/PreferencesFollowingFeed.tsx:191
msgid "Set this setting to \"No\" to hide all reposts from your feed."
msgstr "Defina esta configuração como \"Não\" para ocultar todos os reposts do seu feed."
@@ -3433,8 +3599,12 @@ msgid "Set this setting to \"Yes\" to show replies in a threaded view. This is a
msgstr "Defina esta configuração como \"Sim\" para mostrar respostas em uma visualização de thread. Este é um recurso experimental."
#: 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 "Defina esta configuração como \"Sim\" para mostrar amostras de seus feeds salvos na sua pÔgina inicial. Este é um recurso experimental."
+#~ msgid "Set this setting to \"Yes\" to show samples of your saved feeds in your following feed. This is an experimental feature."
+#~ msgstr "Defina esta configuração como \"Sim\" para mostrar amostras de seus feeds salvos na sua pÔgina inicial. Este é um recurso experimental."
+
+#: src/view/screens/PreferencesFollowingFeed.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/screens/Onboarding/Layout.tsx:50
msgid "Set up your account"
@@ -3452,7 +3622,7 @@ msgstr "Configura o e-mail para recuperação de senha"
msgid "Sets hosting provider for password reset"
msgstr "Configura o provedor de hospedagem para recuperação de senha"
-#: src/view/com/auth/create/Step1.tsx:100
+#: src/view/com/auth/create/Step1.tsx:104
#: src/view/com/auth/login/LoginForm.tsx:151
msgid "Sets server for the Bluesky client"
msgstr "Configura o servidor para o cliente do Bluesky"
@@ -3474,13 +3644,13 @@ msgctxt "action"
msgid "Share"
msgstr "Compartilhar"
-#: src/view/com/profile/ProfileHeader.tsx:294
-#: src/view/com/util/forms/PostDropdownBtn.tsx:153
-#: src/view/screens/ProfileList.tsx:417
+#: src/view/com/profile/ProfileHeader.tsx:295
+#: src/view/com/util/forms/PostDropdownBtn.tsx:184
+#: src/view/screens/ProfileList.tsx:418
msgid "Share"
msgstr "Compartilhar"
-#: src/view/screens/ProfileFeed.tsx:304
+#: src/view/screens/ProfileFeed.tsx:305
msgid "Share feed"
msgstr "Compartilhar feed"
@@ -3492,7 +3662,7 @@ msgstr "Compartilhar feed"
msgid "Show"
msgstr "Mostrar"
-#: src/view/screens/PreferencesHomeFeed.tsx:68
+#: src/view/screens/PreferencesFollowingFeed.tsx:68
msgid "Show all replies"
msgstr "Mostrar todas as respostas"
@@ -3504,21 +3674,21 @@ msgstr "Mostrar mesmo assim"
msgid "Show embeds from {0}"
msgstr "Mostrar anexos de {0}"
-#: src/view/com/profile/ProfileHeader.tsx:458
+#: src/view/com/profile/ProfileHeader.tsx:459
msgid "Show follows similar to {0}"
msgstr "Mostrar usuƔrios parecidos com {0}"
-#: src/view/com/post-thread/PostThreadItem.tsx:539
-#: src/view/com/post/Post.tsx:197
+#: src/view/com/post-thread/PostThreadItem.tsx:538
+#: src/view/com/post/Post.tsx:198
#: src/view/com/posts/FeedItem.tsx:363
msgid "Show More"
msgstr "Mostrar Mais"
-#: src/view/screens/PreferencesHomeFeed.tsx:258
+#: src/view/screens/PreferencesFollowingFeed.tsx:258
msgid "Show Posts from My Feeds"
msgstr "Mostrar Posts dos Meus Feeds"
-#: src/view/screens/PreferencesHomeFeed.tsx:222
+#: src/view/screens/PreferencesFollowingFeed.tsx:222
msgid "Show Quote Posts"
msgstr "Mostrar CitaƧƵes"
@@ -3534,7 +3704,7 @@ msgstr "Mostrar citaƧƵes no Seguindo"
msgid "Show re-posts in Following feed"
msgstr "Mostrar reposts no feed Seguindo"
-#: src/view/screens/PreferencesHomeFeed.tsx:119
+#: src/view/screens/PreferencesFollowingFeed.tsx:119
msgid "Show Replies"
msgstr "Mostrar Respostas"
@@ -3550,11 +3720,11 @@ msgstr "Mostrar respostas no Seguindo"
msgid "Show replies in Following feed"
msgstr "Mostrar respostas no feed Seguindo"
-#: src/view/screens/PreferencesHomeFeed.tsx:70
+#: src/view/screens/PreferencesFollowingFeed.tsx:70
msgid "Show replies with at least {value} {0}"
msgstr "Mostrar respostas com ao menos {0} {value}"
-#: src/view/screens/PreferencesHomeFeed.tsx:188
+#: src/view/screens/PreferencesFollowingFeed.tsx:188
msgid "Show Reposts"
msgstr "Mostrar Reposts"
@@ -3571,18 +3741,18 @@ msgstr "Mostrar conteĆŗdo"
msgid "Show users"
msgstr "Mostrar usuƔrios"
-#: src/view/com/profile/ProfileHeader.tsx:461
+#: src/view/com/profile/ProfileHeader.tsx:462
msgid "Shows a list of users similar to this user."
msgstr "Mostra uma lista de usuƔrios parecidos com este"
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:124
-#: src/view/com/profile/ProfileHeader.tsx:505
+#: src/view/com/profile/ProfileHeader.tsx:506
msgid "Shows posts from {0} in your feed"
msgstr "Mostra posts de {0} no seu feed"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:70
#: src/view/com/auth/login/Login.tsx:98
-#: src/view/com/auth/SplashScreen.tsx:54
+#: src/view/com/auth/SplashScreen.tsx:79
#: src/view/shell/bottom-bar/BottomBar.tsx:285
#: src/view/shell/bottom-bar/BottomBar.tsx:286
#: src/view/shell/bottom-bar/BottomBar.tsx:288
@@ -3595,8 +3765,8 @@ 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
+#: src/view/com/auth/SplashScreen.tsx:82
+#: src/view/com/auth/SplashScreen.web.tsx:91
msgid "Sign In"
msgstr "Fazer Login"
@@ -3663,8 +3833,8 @@ msgid "Skip this flow"
msgstr "Pular"
#: src/view/com/auth/create/Step2.tsx:82
-msgid "SMS verification"
-msgstr "Verificação por SMS"
+#~ msgid "SMS verification"
+#~ msgstr "Verificação por SMS"
#: src/screens/Onboarding/index.tsx:40
msgid "Software Dev"
@@ -3678,7 +3848,7 @@ msgstr "Desenvolvimento de software"
msgid "Something went wrong. Check your email and try again."
msgstr "Algo deu errado. Verifique seu e-mail e tente novamente."
-#: src/App.native.tsx:61
+#: src/App.native.tsx:63
msgid "Sorry! Your session expired. Please log in again."
msgstr "Opa! Sua sessão expirou. Por favor, entre novamente."
@@ -3723,7 +3893,7 @@ msgstr "Storybook"
msgid "Submit"
msgstr "Enviar"
-#: src/view/screens/ProfileList.tsx:607
+#: src/view/screens/ProfileList.tsx:608
msgid "Subscribe"
msgstr "Inscrever-se"
@@ -3732,11 +3902,11 @@ msgstr "Inscrever-se"
msgid "Subscribe to the {0} feed"
msgstr "Increver-se no feed {0}"
-#: src/view/screens/ProfileList.tsx:603
+#: src/view/screens/ProfileList.tsx:604
msgid "Subscribe to this list"
msgstr "Inscreva-se nesta lista"
-#: src/view/screens/Search/Search.tsx:373
+#: src/view/screens/Search/Search.tsx:374
msgid "Suggested Follows"
msgstr "SugestƵes de Seguidores"
@@ -3780,6 +3950,14 @@ msgstr "Sistema"
msgid "System log"
msgstr "Log do sistema"
+#: src/components/dialogs/MutedWords.tsx:288
+msgid "tag"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:74
+msgid "Tag menu: {tag}"
+msgstr ""
+
#: src/view/com/modals/crop-image/CropImage.web.tsx:112
msgid "Tall"
msgstr "Alto"
@@ -3792,7 +3970,7 @@ msgstr "Toque para ver tudo"
msgid "Tech"
msgstr "Tecnologia"
-#: src/view/shell/desktop/RightNav.tsx:89
+#: src/view/shell/desktop/RightNav.tsx:81
msgid "Terms"
msgstr "Termos"
@@ -3803,12 +3981,20 @@ msgstr "Termos"
msgid "Terms of Service"
msgstr "Termos de ServiƧo"
+#: src/components/dialogs/MutedWords.tsx:288
+msgid "text"
+msgstr ""
+
#: 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:262
+#: src/view/com/auth/create/CreateAccount.tsx:94
+msgid "That handle is already taken."
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:263
msgid "The account will be able to interact with you after unblocking."
msgstr "A conta poderÔ interagir com você após o desbloqueio."
@@ -3824,7 +4010,7 @@ msgstr "A PolĆtica de Direitos Autorais foi movida para <0/>"
msgid "The following steps will help customize your Bluesky experience."
msgstr "Os seguintes passos vão ajudar a customizar sua experiência no Bluesky."
-#: src/view/com/post-thread/PostThread.tsx:453
+#: src/view/com/post-thread/PostThread.tsx:517
msgid "The post may have been deleted."
msgstr "O post pode ter sido excluĆdo."
@@ -3844,7 +4030,7 @@ msgstr "Os Termos de ServiƧo foram movidos para"
msgid "There are many feeds to try:"
msgstr "Temos vÔrios feeds para você experimentar:"
-#: src/view/screens/ProfileFeed.tsx:549
+#: src/view/screens/ProfileFeed.tsx:550
msgid "There was an an issue contacting the server, please check your internet connection and try again."
msgstr "Tivemos um problema ao contatar o servidor, por favor verifique sua conexão com a internet e tente novamente."
@@ -3852,12 +4038,12 @@ msgstr "Tivemos um problema ao contatar o servidor, por favor verifique sua cone
msgid "There was an an issue removing this feed. Please check your internet connection and try again."
msgstr "Tivemos um problema ao remover este feed, por favor verifique sua conexão com a internet e tente novamente."
-#: src/view/screens/ProfileFeed.tsx:209
+#: src/view/screens/ProfileFeed.tsx:210
msgid "There was an an issue updating your feeds, please check your internet connection and try again."
msgstr "Tivemos um problema ao atualizar seus feeds, por favor verifique sua conexão com a internet e tente novamente."
-#: src/view/screens/ProfileFeed.tsx:236
-#: src/view/screens/ProfileList.tsx:266
+#: src/view/screens/ProfileFeed.tsx:237
+#: src/view/screens/ProfileList.tsx:267
#: src/view/screens/SavedFeeds.tsx:209
#: src/view/screens/SavedFeeds.tsx:231
#: src/view/screens/SavedFeeds.tsx:252
@@ -3866,9 +4052,9 @@ msgstr "Tivemos um problema ao contatar o servidor deste feed"
#: src/view/com/auth/onboarding/RecommendedFeedsItem.tsx:57
#: src/view/com/auth/onboarding/RecommendedFeedsItem.tsx:66
-#: src/view/com/feeds/FeedSourceCard.tsx:113
-#: src/view/com/feeds/FeedSourceCard.tsx:127
-#: src/view/com/feeds/FeedSourceCard.tsx:181
+#: src/view/com/feeds/FeedSourceCard.tsx:115
+#: src/view/com/feeds/FeedSourceCard.tsx:129
+#: src/view/com/feeds/FeedSourceCard.tsx:183
msgid "There was an issue contacting your server"
msgstr "Tivemos um problema ao contatar o servidor deste feed"
@@ -3900,19 +4086,19 @@ msgstr "Tivemos um problema ao carregar suas senhas de app."
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:93
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:105
-#: src/view/com/profile/ProfileHeader.tsx:156
-#: src/view/com/profile/ProfileHeader.tsx:177
-#: src/view/com/profile/ProfileHeader.tsx:216
-#: src/view/com/profile/ProfileHeader.tsx:229
-#: src/view/com/profile/ProfileHeader.tsx:249
-#: src/view/com/profile/ProfileHeader.tsx:271
+#: src/view/com/profile/ProfileHeader.tsx:157
+#: src/view/com/profile/ProfileHeader.tsx:178
+#: src/view/com/profile/ProfileHeader.tsx:217
+#: src/view/com/profile/ProfileHeader.tsx:230
+#: src/view/com/profile/ProfileHeader.tsx:250
+#: src/view/com/profile/ProfileHeader.tsx:272
msgid "There was an issue! {0}"
msgstr "Tivemos um problema! {0}"
-#: src/view/screens/ProfileList.tsx:287
-#: src/view/screens/ProfileList.tsx:306
-#: src/view/screens/ProfileList.tsx:328
-#: src/view/screens/ProfileList.tsx:347
+#: src/view/screens/ProfileList.tsx:288
+#: src/view/screens/ProfileList.tsx:307
+#: src/view/screens/ProfileList.tsx:329
+#: src/view/screens/ProfileList.tsx:348
msgid "There was an issue. Please check your internet connection and try again."
msgstr "Tivemos algum problema. Por favor verifique sua conexão com a internet e tente novamente."
@@ -3925,8 +4111,8 @@ msgid "There's been a rush of new users to Bluesky! We'll activate your account
msgstr "Muitos usuĆ”rios estĆ£o tentando acessar o Bluesky! Ativaremos sua conta assim que possĆvel."
#: src/view/com/auth/create/Step2.tsx:55
-msgid "There's something wrong with this number. Please choose your country and enter your full phone number!"
-msgstr "Houve um problema com este nĆŗmero. Por favor, escolha um paĆs e digite seu nĆŗmero de telefone completo!"
+#~ msgid "There's something wrong with this number. Please choose your country and enter your full phone number!"
+#~ msgstr "Houve um problema com este nĆŗmero. Por favor, escolha um paĆs e digite seu nĆŗmero de telefone completo!"
#: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:138
msgid "These are popular accounts you might like:"
@@ -3961,8 +4147,8 @@ msgid "This feed is currently receiving high traffic and is temporarily unavaila
msgstr "Este feed estĆ” recebendo muito trĆ”fego e estĆ” temporariamente indisponĆvel. Por favor, tente novamente mais tarde."
#: src/view/screens/Profile.tsx:420
-#: src/view/screens/ProfileFeed.tsx:475
-#: src/view/screens/ProfileList.tsx:660
+#: src/view/screens/ProfileFeed.tsx:476
+#: src/view/screens/ProfileList.tsx:661
msgid "This feed is empty!"
msgstr "Este feed estĆ” vazio!"
@@ -3990,7 +4176,7 @@ msgstr "Esta lista estĆ” vazia!"
msgid "This name is already in use"
msgstr "VocĆŖ jĆ” tem uma senha com esse nome"
-#: src/view/com/post-thread/PostThreadItem.tsx:122
+#: src/view/com/post-thread/PostThreadItem.tsx:125
msgid "This post has been deleted."
msgstr "Este post foi excluĆdo."
@@ -4014,7 +4200,11 @@ msgstr "Este usuĆ”rio estĆ” incluĆdo na lista <0/>, que vocĆŖ silenciou."
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:192
+#: src/components/dialogs/MutedWords.tsx:236
+msgid "This will delete {0} from your muted words. You can always add it back later."
+msgstr ""
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:237
msgid "This will hide this post from your feeds."
msgstr "Isso ocultarĆ” este post de seus feeds."
@@ -4027,10 +4217,14 @@ msgstr "PreferĆŖncias das Threads"
msgid "Threaded Mode"
msgstr "Visualização de Threads"
-#: src/Navigation.tsx:252
+#: src/Navigation.tsx:255
msgid "Threads Preferences"
msgstr "PreferĆŖncias das Threads"
+#: src/components/dialogs/MutedWords.tsx:95
+msgid "Toggle between muted word options."
+msgstr ""
+
#: src/view/com/util/forms/DropdownButton.tsx:246
msgid "Toggle dropdown"
msgstr "Alternar menu suspenso"
@@ -4039,9 +4233,9 @@ msgstr "Alternar menu suspenso"
msgid "Transformations"
msgstr "TransformaƧƵes"
-#: src/view/com/post-thread/PostThreadItem.tsx:686
-#: src/view/com/post-thread/PostThreadItem.tsx:688
-#: src/view/com/util/forms/PostDropdownBtn.tsx:125
+#: src/view/com/post-thread/PostThreadItem.tsx:685
+#: src/view/com/post-thread/PostThreadItem.tsx:687
+#: src/view/com/util/forms/PostDropdownBtn.tsx:156
msgid "Translate"
msgstr "Traduzir"
@@ -4050,15 +4244,15 @@ msgctxt "action"
msgid "Try again"
msgstr "Tentar novamente"
-#: src/view/screens/ProfileList.tsx:505
+#: src/view/screens/ProfileList.tsx:506
msgid "Un-block list"
msgstr "Desbloquear lista"
-#: src/view/screens/ProfileList.tsx:490
+#: src/view/screens/ProfileList.tsx:491
msgid "Un-mute list"
msgstr "Dessilenciar lista"
-#: src/view/com/auth/create/CreateAccount.tsx:66
+#: src/view/com/auth/create/CreateAccount.tsx:58
#: src/view/com/auth/login/ForgotPasswordForm.tsx:87
#: src/view/com/auth/login/Login.tsx:76
#: src/view/com/auth/login/LoginForm.tsx:118
@@ -4066,18 +4260,18 @@ msgstr "Dessilenciar lista"
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:432
-#: src/view/screens/ProfileList.tsx:589
+#: src/view/com/profile/ProfileHeader.tsx:433
+#: src/view/screens/ProfileList.tsx:590
msgid "Unblock"
msgstr "Desbloquear"
-#: src/view/com/profile/ProfileHeader.tsx:435
+#: src/view/com/profile/ProfileHeader.tsx:436
msgctxt "action"
msgid "Unblock"
msgstr "Desbloquear"
-#: src/view/com/profile/ProfileHeader.tsx:260
-#: src/view/com/profile/ProfileHeader.tsx:344
+#: src/view/com/profile/ProfileHeader.tsx:261
+#: src/view/com/profile/ProfileHeader.tsx:345
msgid "Unblock Account"
msgstr "Desbloquear Conta"
@@ -4093,11 +4287,11 @@ msgctxt "action"
msgid "Unfollow"
msgstr "Deixar de seguir"
-#: src/view/com/profile/ProfileHeader.tsx:484
+#: src/view/com/profile/ProfileHeader.tsx:485
msgid "Unfollow {0}"
msgstr "Deixar de seguir {0}"
-#: src/view/com/auth/create/state.ts:300
+#: src/view/com/auth/create/state.ts:262
msgid "Unfortunately, you do not meet the requirements to create an account."
msgstr "Infelizmente, você não atende aos requisitos para criar uma conta."
@@ -4106,28 +4300,37 @@ msgstr "Infelizmente, você não atende aos requisitos para criar uma conta."
msgid "Unlike"
msgstr "Descurtir"
-#: src/view/screens/ProfileList.tsx:596
+#: src/components/TagMenu/index.tsx:253
+#: src/view/screens/ProfileList.tsx:597
msgid "Unmute"
msgstr "Dessilenciar"
-#: src/view/com/profile/ProfileHeader.tsx:325
+#: src/components/TagMenu/index.web.tsx:90
+msgid "Unmute {truncatedTag}"
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:326
msgid "Unmute Account"
msgstr "Dessilenciar conta"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:171
+#: src/components/TagMenu/index.tsx:210
+msgid "Unmute all {tag} posts"
+msgstr ""
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:202
msgid "Unmute thread"
msgstr "Dessilenciar thread"
-#: src/view/screens/ProfileFeed.tsx:353
-#: src/view/screens/ProfileList.tsx:580
+#: src/view/screens/ProfileFeed.tsx:354
+#: src/view/screens/ProfileList.tsx:581
msgid "Unpin"
msgstr "Desafixar"
-#: src/view/screens/ProfileList.tsx:473
+#: src/view/screens/ProfileList.tsx:474
msgid "Unpin moderation list"
msgstr "Desafixar lista de moderação"
-#: src/view/screens/ProfileFeed.tsx:345
+#: src/view/screens/ProfileFeed.tsx:346
msgid "Unsave"
msgstr "Remover"
@@ -4189,11 +4392,11 @@ msgstr "UsuƔrio Bloqueado Por Lista"
msgid "User Blocks You"
msgstr "Este UsuƔrio Te Bloqueou"
-#: src/view/com/auth/create/Step3.tsx:41
+#: src/view/com/auth/create/Step2.tsx:79
msgid "User handle"
msgstr "UsuƔrio"
-#: src/view/com/lists/ListCard.tsx:84
+#: src/view/com/lists/ListCard.tsx:85
#: src/view/com/modals/UserAddRemoveLists.tsx:198
msgid "User list by {0}"
msgstr "Lista de usuƔrios por {0}"
@@ -4202,7 +4405,7 @@ msgstr "Lista de usuƔrios por {0}"
msgid "User list by <0/>"
msgstr "Lista de usuƔrios por <0/>"
-#: src/view/com/lists/ListCard.tsx:82
+#: src/view/com/lists/ListCard.tsx:83
#: src/view/com/modals/UserAddRemoveLists.tsx:196
#: src/view/screens/ProfileList.tsx:760
msgid "User list by you"
@@ -4238,8 +4441,8 @@ msgid "Users in \"{0}\""
msgstr "UsuƔrios em \"{0}\""
#: src/view/com/auth/create/Step2.tsx:243
-msgid "Verification code"
-msgstr "Código de verificação"
+#~ msgid "Verification code"
+#~ msgstr "Código de verificação"
#: src/view/screens/Settings/index.tsx:910
msgid "Verify email"
@@ -4266,7 +4469,7 @@ msgstr "Verificar Seu E-mail"
msgid "Video Games"
msgstr "Games"
-#: src/view/com/profile/ProfileHeader.tsx:661
+#: src/view/com/profile/ProfileHeader.tsx:662
msgid "View {0}'s avatar"
msgstr "Ver o avatar de {0}"
@@ -4315,6 +4518,10 @@ msgstr "Não temos mais posts de quem você segue. Aqui estão os mais novos de
#~ msgid "We recommend \"For You\" by Skygaze:"
#~ msgstr "Recomendamos o \"Para vocĆŖ\", do Skygaze:"
+#: src/components/dialogs/MutedWords.tsx:161
+msgid "We recommend avoiding common words that appear in many posts, since it can result in no posts being shown."
+msgstr ""
+
#: src/screens/Onboarding/StepAlgoFeeds/index.tsx:124
msgid "We recommend our \"Discover\" feed:"
msgstr "Recomendamos nosso feed \"Discover\":"
@@ -4335,15 +4542,19 @@ msgstr "Avaliaremos sua contestação o quanto antes."
msgid "We'll use this to help customize your experience."
msgstr "Usaremos isto para customizar a sua experiĆŖncia."
-#: src/view/com/auth/create/CreateAccount.tsx:123
+#: src/view/com/auth/create/CreateAccount.tsx:134
msgid "We're so excited to have you join us!"
msgstr "Estamos muito felizes em recebĆŖ-lo!"
-#: src/view/screens/ProfileList.tsx:85
+#: src/view/screens/ProfileList.tsx:86
msgid "We're sorry, but we were unable to resolve this list. If this persists, please contact the list creator, @{handleOrDid}."
msgstr "Tivemos um problema ao exibir esta lista. Se continuar acontecendo, contate o criador da lista: @{handleOrDid}."
-#: src/view/screens/Search/Search.tsx:253
+#: src/components/dialogs/MutedWords.tsx:182
+msgid "We're sorry, but we weren't able to load your muted words at this time. Please try again."
+msgstr ""
+
+#: src/view/screens/Search/Search.tsx:254
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."
@@ -4363,8 +4574,8 @@ msgstr "Do que vocĆŖ gosta?"
msgid "What is the issue with this {collectionName}?"
msgstr "Qual Ć© o problema com este {collectionName}?"
-#: src/view/com/auth/SplashScreen.tsx:34
-#: src/view/com/composer/Composer.tsx:279
+#: src/view/com/auth/SplashScreen.tsx:59
+#: src/view/com/composer/Composer.tsx:286
msgid "What's up?"
msgstr "E aĆ?"
@@ -4385,11 +4596,11 @@ msgstr "Quem pode responder"
msgid "Wide"
msgstr "Largo"
-#: src/view/com/composer/Composer.tsx:415
+#: src/view/com/composer/Composer.tsx:422
msgid "Write post"
msgstr "Escrever post"
-#: src/view/com/composer/Composer.tsx:278
+#: src/view/com/composer/Composer.tsx:285
#: src/view/com/composer/Prompt.tsx:33
msgid "Write your reply"
msgstr "Escreva sua resposta"
@@ -4399,14 +4610,14 @@ msgid "Writers"
msgstr "Escritores"
#: src/view/com/auth/create/Step2.tsx:263
-msgid "XXXXXX"
-msgstr "XXXXXX"
+#~ msgid "XXXXXX"
+#~ msgstr "XXXXXX"
#: src/view/com/composer/select-language/SuggestedLanguage.tsx:77
-#: 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/PreferencesFollowingFeed.tsx:129
+#: src/view/screens/PreferencesFollowingFeed.tsx:201
+#: src/view/screens/PreferencesFollowingFeed.tsx:236
+#: src/view/screens/PreferencesFollowingFeed.tsx:271
#: src/view/screens/PreferencesThreads.tsx:106
#: src/view/screens/PreferencesThreads.tsx:129
msgid "Yes"
@@ -4446,7 +4657,7 @@ msgstr "Você ainda não tem nenhum convite! Nós lhe enviaremos alguns quando v
msgid "You don't have any pinned feeds."
msgstr "Você não tem feeds fixados."
-#: src/view/screens/Feeds.tsx:451
+#: src/view/screens/Feeds.tsx:452
msgid "You don't have any saved feeds!"
msgstr "Você não tem feeds salvos!"
@@ -4454,7 +4665,7 @@ msgstr "Você não tem feeds salvos!"
msgid "You don't have any saved feeds."
msgstr "Você não tem feeds salvos."
-#: src/view/com/post-thread/PostThread.tsx:401
+#: src/view/com/post-thread/PostThread.tsx:465
msgid "You have blocked the author or you have been blocked by the author."
msgstr "VocĆŖ bloqueou esta conta ou foi bloqueado por ela."
@@ -4494,6 +4705,10 @@ msgstr "Você ainda não criou nenhuma senha de aplicativo. Você pode criar uma
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, acesse um perfil e selecione \"Silenciar conta\" no menu."
+#: src/components/dialogs/MutedWords.tsx:202
+msgid "You haven't muted any words or tags yet"
+msgstr ""
+
#: src/view/com/modals/ContentFilteringSettings.tsx:175
msgid "You must be 18 or older to enable adult content."
msgstr "VocĆŖ precisa ser maior de idade para habilitar conteĆŗdo adulto."
@@ -4502,11 +4717,11 @@ msgstr "VocĆŖ precisa ser maior de idade para habilitar conteĆŗdo adulto."
msgid "You must be 18 years or older to enable adult content"
msgstr "VocĆŖ precisa ser maior de idade para habilitar conteĆŗdo adulto."
-#: src/view/com/util/forms/PostDropdownBtn.tsx:98
+#: src/view/com/util/forms/PostDropdownBtn.tsx:129
msgid "You will no longer receive notifications for this thread"
msgstr "Você não vai mais receber notificações desta thread"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:101
+#: src/view/com/util/forms/PostDropdownBtn.tsx:132
msgid "You will now receive notifications for this thread"
msgstr "Você vai receber notificações desta thread"
@@ -4544,7 +4759,7 @@ msgstr "Sua conta foi excluĆda"
msgid "Your account repository, containing all public data records, can be downloaded as a \"CAR\" file. This file does not include media embeds, such as images, or your private data, which must be fetched separately."
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:234
+#: src/view/com/auth/create/Step1.tsx:238
msgid "Your birth date"
msgstr "Sua data de nascimento"
@@ -4556,7 +4771,7 @@ msgstr "Sua escolha serÔ salva, mas você pode trocÔ-la nas configurações de
msgid "Your default feed is \"Following\""
msgstr "Seu feed inicial Ć© o \"Seguindo\""
-#: src/view/com/auth/create/state.ts:153
+#: src/view/com/auth/create/state.ts:110
#: src/view/com/auth/login/ForgotPasswordForm.tsx:70
#: src/view/com/modals/ChangePassword.tsx:54
msgid "Your email appears to be invalid."
@@ -4578,7 +4793,7 @@ msgstr "Seu e-mail ainda não foi verificado. Esta é uma etapa importante de se
msgid "Your following feed is empty! Follow more users to see what's happening."
msgstr "Seu feed inicial estƔ vazio! Siga mais usuƔrios para acompanhar o que estƔ acontecendo."
-#: src/view/com/auth/create/Step3.tsx:45
+#: src/view/com/auth/create/Step2.tsx:83
msgid "Your full handle will be"
msgstr "Seu identificador completo serĆ”"
@@ -4592,11 +4807,15 @@ msgstr "Seu usuƔrio completo serƔ <0>@{0}0>"
#~ 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/components/dialogs/MutedWords.tsx:173
+msgid "Your muted words"
+msgstr ""
+
#: src/view/com/modals/ChangePassword.tsx:155
msgid "Your password has been changed successfully!"
msgstr "Sua senha foi alterada com sucesso!"
-#: src/view/com/composer/Composer.tsx:267
+#: src/view/com/composer/Composer.tsx:274
msgid "Your post has been published"
msgstr "Seu post foi publicado"
@@ -4611,10 +4830,10 @@ msgstr "Suas postagens, curtidas e bloqueios são públicos. Silenciamentos são
msgid "Your profile"
msgstr "Seu perfil"
-#: src/view/com/composer/Composer.tsx:266
+#: src/view/com/composer/Composer.tsx:273
msgid "Your reply has been published"
msgstr "Sua resposta foi publicada"
-#: src/view/com/auth/create/Step3.tsx:28
+#: src/view/com/auth/create/Step2.tsx:65
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
index 93d30bc195..8f978261ff 100644
--- a/src/locale/locales/uk/messages.po
+++ b/src/locale/locales/uk/messages.po
@@ -43,7 +43,7 @@ msgstr ""
#~ msgid "{0} {purposeLabel} List"
#~ msgstr "{0} Š”ŠæŠøŃŠ¾Šŗ {purposeLabel}"
-#: src/view/com/profile/ProfileHeader.tsx:592
+#: src/view/com/profile/ProfileHeader.tsx:593
msgid "{following} following"
msgstr ""
@@ -77,7 +77,7 @@ msgstr ""
msgid "<0/> members"
msgstr "<0/> ŃŃŠ°ŃŠ½ŠøŠŗŃŠ²"
-#: src/view/com/profile/ProfileHeader.tsx:594
+#: src/view/com/profile/ProfileHeader.tsx:595
msgid "<0>{following} 0><1>following1>"
msgstr ""
@@ -105,7 +105,7 @@ msgstr "<0>ŠŃГпиŃŃŃŃŃŃ Š½Š° Š“ŠµŃŠŗŠøŃ
0><1>ŃŠµŠŗŠ¾Š¼ŠµŠ½Š“ов
msgid "<0>Welcome to0><1>Bluesky1>"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:557
+#: src/view/com/profile/ProfileHeader.tsx:558
msgid "ā Invalid Handle"
msgstr ""
@@ -118,11 +118,11 @@ msgid "A new version of the app is available. Please update to continue using th
msgstr "ŠŠ¾ŃŃŃŠæŠ½Š° нова веŃŃŃŃ. ŠŃŠ“Ń Š»Š°ŃŠŗŠ°, оновŃŃŃ Š·Š°ŃŃŠ¾ŃŃŠ½Š¾Šŗ, ŃŠ¾Š± ŠæŃŠ¾Š“Š¾Š²Š¶ŠøŃŠø ним ŠŗŠ¾ŃŠøŃŃŃŠ²Š°ŃŠøŃŃ."
#: src/view/com/util/ViewHeader.tsx:83
-#: src/view/screens/Search/Search.tsx:624
+#: src/view/screens/Search/Search.tsx:647
msgid "Access navigation links and settings"
msgstr ""
-#: src/view/com/pager/FeedsTabBarMobile.tsx:89
+#: src/view/com/home/HomeHeaderLayoutMobile.tsx:51
msgid "Access profile and other navigation links"
msgstr ""
@@ -137,11 +137,11 @@ msgstr "ŠŠ¾ŃŃŃŠæŠ½ŃŃŃŃ"
msgid "Account"
msgstr "ŠŠ±Š»Ńковий запиŃ"
-#: src/view/com/profile/ProfileHeader.tsx:245
+#: src/view/com/profile/ProfileHeader.tsx:246
msgid "Account blocked"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:212
+#: src/view/com/profile/ProfileHeader.tsx:213
msgid "Account muted"
msgstr ""
@@ -161,14 +161,15 @@ msgstr "ŠŠ°ŃамеŃŃŠø Š¾Š±Š»ŃŠŗŠ¾Š²Š¾Š³Š¾ запиŃŃ"
msgid "Account removed from quick access"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:267
+#: src/view/com/profile/ProfileHeader.tsx:268
msgid "Account unblocked"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:225
+#: src/view/com/profile/ProfileHeader.tsx:226
msgid "Account unmuted"
msgstr ""
+#: src/components/dialogs/MutedWords.tsx:147
#: src/view/com/auth/onboarding/RecommendedFeedsItem.tsx:150
#: src/view/com/modals/ListAddRemoveUsers.tsx:264
#: src/view/com/modals/UserAddRemoveLists.tsx:219
@@ -210,24 +211,32 @@ msgstr "ŠŠ¾Š“Š°Š¹ŃŠµ ŠæŠ¾Š“ŃŠ¾Š±ŠøŃŃ"
msgid "Add details to report"
msgstr "ŠŠ¾Š“Š°Š¹ŃŠµ ŠæŠ¾Š“ŃŠ¾Š±ŠøŃŃ Š“Š¾ ŃŠŗŠ°Ńги"
-#: src/view/com/composer/Composer.tsx:446
+#: src/view/com/composer/Composer.tsx:453
msgid "Add link card"
msgstr "ŠŠ¾Š“Š°ŃŠø ŠæŠ¾ŠæŠµŃŠµŠ“Š½ŃŠ¹ ŠæŠµŃŠµŠ³Š»ŃŠ“"
-#: src/view/com/composer/Composer.tsx:451
+#: src/view/com/composer/Composer.tsx:458
msgid "Add link card:"
msgstr "ŠŠ¾Š“Š°ŃŠø ŠæŠ¾ŠæŠµŃŠµŠ“Š½ŃŠ¹ ŠæŠµŃŠµŠ³Š»ŃŠ“:"
+#: src/components/dialogs/MutedWords.tsx:140
+msgid "Add mute word for configured settings"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:74
+msgid "Add muted words and tags"
+msgstr ""
+
#: src/view/com/modals/ChangeHandle.tsx:417
msgid "Add the following DNS record to your domain:"
msgstr "ŠŠ¾Š“Š°Š¹ŃŠµ наŃŃŃŠæŠ½ŠøŠ¹ DNS-Š·Š°ŠæŠøŃ Š“Š¾ Š²Š°ŃŠ¾Š³Š¾ ГоменŃ:"
-#: src/view/com/profile/ProfileHeader.tsx:309
+#: src/view/com/profile/ProfileHeader.tsx:310
msgid "Add to Lists"
msgstr "ŠŠ¾Š“Š°ŃŠø Го ŃŠæŠøŃŠŗŃ"
-#: src/view/com/feeds/FeedSourceCard.tsx:243
-#: src/view/screens/ProfileFeed.tsx:272
+#: src/view/com/feeds/FeedSourceCard.tsx:245
+#: src/view/screens/ProfileFeed.tsx:273
msgid "Add to my feeds"
msgstr "ŠŠ¾Š“Š°ŃŠø Го моŃŃ
ŃŃŃŃŃŠ¾Šŗ"
@@ -240,11 +249,11 @@ msgstr ""
msgid "Added to list"
msgstr "ŠŠ¾Š“ано Го ŃŠæŠøŃŠŗŃ"
-#: src/view/com/feeds/FeedSourceCard.tsx:125
+#: src/view/com/feeds/FeedSourceCard.tsx:127
msgid "Added to my feeds"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:173
+#: src/view/screens/PreferencesFollowingFeed.tsx:173
msgid "Adjust the number of likes a reply must have to be shown in your feed."
msgstr "ŠŠ°Š»Š°ŃŃŃŠ¹Ńе Š¼ŃŠ½ŃŠ¼Š°Š»ŃŠ½Ń ŠŗŃŠ»ŃŠŗŃŃŃŃ Š²ŠæŠ¾Š“Š¾Š±Š°Š½Ń Š“Š»Ń ŃŠ¾Š³Š¾ ŃŠ¾Š± Š²ŃŠ“ŠæŠ¾Š²ŃŠ“Ń Š²ŃŠ“Š¾Š±ŃŠ°Š·ŠøŠ»Š°ŃŃ Ń Š²Š°ŃŃŠ¹ ŃŃŃŃŃŃŃ."
@@ -264,6 +273,10 @@ msgstr ""
msgid "Advanced"
msgstr "Š Š¾Š·ŃŠøŃенŃ"
+#: src/view/screens/Feeds.tsx:666
+msgid "All the feeds you've saved, right in one place."
+msgstr ""
+
#: src/view/com/auth/login/ForgotPasswordForm.tsx:221
#: src/view/com/modals/ChangePassword.tsx:168
msgid "Already have a code?"
@@ -337,7 +350,7 @@ msgstr ""
msgid "App Passwords"
msgstr "ŠŠ°ŃŠ¾Š»Ń Š“Š»Ń Š·Š°ŃŃŠ¾ŃŃŠ½ŠŗŃв"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:250
+#: src/view/com/util/forms/PostDropdownBtn.tsx:295
msgid "Appeal content warning"
msgstr "ŠŃŠŗŠ°ŃŠ¶ŠøŃŠø ŠæŠ¾ŠæŠµŃŠµŠ“Š¶ŠµŠ½Š½Ń ŠæŃŠ¾ вмŃŃŃ"
@@ -369,15 +382,16 @@ msgstr "ŠŃŠ¾ŃŠ¼Š»ŠµŠ½Š½Ń"
msgid "Are you sure you want to delete the app password \"{name}\"?"
msgstr "ŠŠø Š“ŃŠ¹Ńно Ń
Š¾ŃŠµŃе Š²ŠøŠ“Š°Š»ŠøŃŠø ŠæŠ°ŃŠ¾Š»Ń Š“Š»Ń Š·Š°ŃŃŠ¾ŃŃŠ½ŠŗŃ \"{name}\"?"
-#: src/view/com/composer/Composer.tsx:143
+#: src/view/com/composer/Composer.tsx:150
msgid "Are you sure you'd like to discard this draft?"
msgstr "ŠŠø Š“ŃŠ¹Ńно бажаŃŃŠµ Š²ŠøŠ“Š°Š»ŠøŃŠø ŃŃ ŃŠµŃŠ½ŠµŃŠŗŃ?"
-#: src/view/screens/ProfileList.tsx:364
+#: src/components/dialogs/MutedWords.tsx:233
+#: src/view/screens/ProfileList.tsx:365
msgid "Are you sure?"
msgstr "ŠŠø впевненŃ?"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:233
+#: src/view/com/util/forms/PostDropdownBtn.tsx:278
msgid "Are you sure? This cannot be undone."
msgstr "ŠŠø впевненŃ? Це не можна Š±ŃŠ“е ŃŠŗŠ°ŃŃŠ²Š°ŃŠø."
@@ -397,21 +411,21 @@ msgstr "Š„ŃŠ“Š¾Š¶Š½Ń Š°Š±Š¾ Š½ŠµŠµŃŠ¾ŃŠøŃŠ½Š° оголенŃŃŃŃ."
#~ msgid "Ask apps to limit the visibility of my account"
#~ msgstr ""
-#: src/view/com/auth/create/CreateAccount.tsx:147
+#: src/view/com/auth/create/CreateAccount.tsx:158
#: src/view/com/auth/login/ChooseAccountForm.tsx:151
#: src/view/com/auth/login/ForgotPasswordForm.tsx:174
#: src/view/com/auth/login/LoginForm.tsx:259
#: src/view/com/auth/login/SetNewPasswordForm.tsx:179
#: src/view/com/modals/report/InputIssueDetails.tsx:46
-#: src/view/com/post-thread/PostThread.tsx:408
-#: src/view/com/post-thread/PostThread.tsx:458
-#: src/view/com/post-thread/PostThread.tsx:466
-#: src/view/com/profile/ProfileHeader.tsx:648
+#: src/view/com/post-thread/PostThread.tsx:472
+#: src/view/com/post-thread/PostThread.tsx:522
+#: src/view/com/post-thread/PostThread.tsx:530
+#: src/view/com/profile/ProfileHeader.tsx:649
#: src/view/com/util/ViewHeader.tsx:81
msgid "Back"
msgstr "ŠŠ°Š·Š°Š“"
-#: src/view/com/post-thread/PostThread.tsx:416
+#: src/view/com/post-thread/PostThread.tsx:480
msgctxt "action"
msgid "Back"
msgstr ""
@@ -424,7 +438,7 @@ msgstr ""
msgid "Basics"
msgstr "ŠŃновнŃ"
-#: src/view/com/auth/create/Step1.tsx:246
+#: src/view/com/auth/create/Step1.tsx:250
#: src/view/com/modals/BirthDateSettings.tsx:73
msgid "Birthday"
msgstr "ŠŠ°Ńа Š½Š°ŃоГженнŃ"
@@ -433,33 +447,33 @@ msgstr "ŠŠ°Ńа Š½Š°ŃоГженнŃ"
msgid "Birthday:"
msgstr "ŠŠ°Ńа Š½Š°ŃоГженнŃ:"
-#: src/view/com/profile/ProfileHeader.tsx:238
-#: src/view/com/profile/ProfileHeader.tsx:345
+#: src/view/com/profile/ProfileHeader.tsx:239
+#: src/view/com/profile/ProfileHeader.tsx:346
msgid "Block Account"
msgstr "ŠŠ°Š±Š»Š¾ŠŗŃŠ²Š°ŃŠø"
-#: src/view/screens/ProfileList.tsx:555
+#: src/view/screens/ProfileList.tsx:556
msgid "Block accounts"
msgstr "ŠŠ°Š±Š»Š¾ŠŗŃŠ²Š°ŃŠø Š¾Š±Š»ŃŠŗŠ¾Š²Ń Š·Š°ŠæŠøŃŠø"
-#: src/view/screens/ProfileList.tsx:505
+#: src/view/screens/ProfileList.tsx:506
msgid "Block list"
msgstr "ŠŠ°Š±Š»Š¾ŠŗŃŠ²Š°ŃŠø ŃŠæŠøŃŠ¾Šŗ"
-#: src/view/screens/ProfileList.tsx:315
+#: src/view/screens/ProfileList.tsx:316
msgid "Block these accounts?"
msgstr "ŠŠ°Š±Š»Š¾ŠŗŃŠ²Š°ŃŠø ŃŃ Š¾Š±Š»ŃŠŗŠ¾Š²Ń Š·Š°ŠæŠøŃŠø?"
-#: src/view/screens/ProfileList.tsx:319
+#: src/view/screens/ProfileList.tsx:320
msgid "Block this List"
msgstr ""
-#: src/view/com/lists/ListCard.tsx:109
-#: src/view/com/util/post-embeds/QuoteEmbed.tsx:60
+#: src/view/com/lists/ListCard.tsx:110
+#: src/view/com/util/post-embeds/QuoteEmbed.tsx:61
msgid "Blocked"
msgstr ""
-#: src/view/screens/Moderation.tsx:123
+#: src/view/screens/Moderation.tsx:142
msgid "Blocked accounts"
msgstr "ŠŠ°Š±Š»Š¾ŠŗŠ¾Š²Š°Š½Ń Š¾Š±Š»ŃŠŗŠ¾Š²Ń Š·Š°ŠæŠøŃŠø"
@@ -468,7 +482,7 @@ msgstr "ŠŠ°Š±Š»Š¾ŠŗŠ¾Š²Š°Š½Ń Š¾Š±Š»ŃŠŗŠ¾Š²Ń Š·Š°ŠæŠøŃŠø"
msgid "Blocked Accounts"
msgstr "ŠŠ°Š±Š»Š¾ŠŗŠ¾Š²Š°Š½Ń Š¾Š±Š»ŃŠŗŠ¾Š²Ń Š·Š°ŠæŠøŃŠø"
-#: src/view/com/profile/ProfileHeader.tsx:240
+#: src/view/com/profile/ProfileHeader.tsx:241
msgid "Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you."
msgstr "ŠŠ°Š±Š»Š¾ŠŗŠ¾Š²Š°Š½Ń Š¾Š±Š»ŃŠŗŠ¾Š²Ń Š·Š°ŠæŠøŃŠø не можŃŃŃ Š²Š°Š¼ Š²ŃŠ“ŠæŠ¾Š²ŃŠ“Š°ŃŠø, Š·Š³Š°Š“ŃŠ²Š°ŃŠø Š²Š°Ń Ń ŃŠ²Š¾ŃŃ
поŃŃŠ°Ń
, Ń Š²Š·Š°ŃŠ¼Š¾Š“ŃŃŃŠø Š· вами Š±ŃŠ“Ń-ŃŠŗŠøŠ¼ ŃŠ½Ńим ŃŠøŠ½Š¾Š¼."
@@ -476,15 +490,16 @@ msgstr "ŠŠ°Š±Š»Š¾ŠŗŠ¾Š²Š°Š½Ń Š¾Š±Š»ŃŠŗŠ¾Š²Ń Š·Š°ŠæŠøŃŠø не можŃŃŃ
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:267
+#: src/view/com/post-thread/PostThread.tsx:324
msgid "Blocked post."
msgstr "ŠŠ°Š±Š»Š¾ŠŗŠ¾Š²Š°Š½ŠøŠ¹ поŃŃ."
-#: src/view/screens/ProfileList.tsx:317
+#: src/view/screens/ProfileList.tsx:318
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:133
msgid "Blog"
msgstr "ŠŠ»Š¾Š³"
@@ -517,7 +532,7 @@ msgstr "Bluesky ŠæŃŠ±Š»ŃŃŠ½ŠøŠ¹."
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:226
+#: src/view/screens/Moderation.tsx:245
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 не Š±ŃŠ“е ŠæŠ¾ŠŗŠ°Š·ŃŠ²Š°ŃŠø Š²Š°Ń ŠæŃŠ¾ŃŃŠ»Ń Ń ŠæŠ¾Š²ŃŠ“Š¾Š¼Š»ŠµŠ½Š½Ń Š²ŃŠ“Š²ŃŠ“ŃŠ²Š°Ńам без Š¾Š±Š»Ńкового запиŃŃ. ŠŠ½ŃŃ Š·Š°ŃŃŠ¾ŃŃŠ½ŠŗŠø можŃŃŃ Š½Šµ ŃŠ»ŃŠ“ŃŠ²Š°ŃŠø ŃŃŠ¾Š¼Ń запиŃŃ. Це не ŃŠ¾Š±ŠøŃŃ Š²Š°Ń Š¾Š±Š»ŃŠŗŠ¾Š²ŠøŠ¹ Š·Š°ŠæŠøŃ ŠæŃŠøŠ²Š°Ńним."
@@ -534,6 +549,7 @@ msgid "Build version {0} {1}"
msgstr "ŠŠµŃŃŃŃ {0} {1}"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:87
+#: src/view/com/auth/SplashScreen.web.tsx:128
msgid "Business"
msgstr "ŠŃŠ³Š°Š½ŃŠ·Š°ŃŃŃ"
@@ -568,8 +584,8 @@ msgid "Can only contain letters, numbers, spaces, dashes, and underscores. Must
msgstr "ŠŠ¾Š¶Šµ мŃŃŃŠøŃŠø Š»ŠøŃŠµ Š»ŃŃŠµŃŠø, ŃŠøŃŃŠø, ŠæŃŠ¾Š±Ńли, ГеŃŃŃŠø ŃŠ° знаки ŠæŃŠ“ŠŗŃŠµŃленнŃ, Ń Š¼Š°ŃŠø Š“Š¾Š²Š¶ŠøŠ½Ń Š²ŃŠ“ 4 Го 32 ŃŠøŠ¼Š²Š¾Š»Ńв."
#: src/components/Prompt.tsx:91
-#: src/view/com/composer/Composer.tsx:300
-#: src/view/com/composer/Composer.tsx:305
+#: src/view/com/composer/Composer.tsx:307
+#: src/view/com/composer/Composer.tsx:312
#: src/view/com/modals/ChangeEmail.tsx:218
#: src/view/com/modals/ChangeEmail.tsx:220
#: src/view/com/modals/ChangePassword.tsx:265
@@ -583,7 +599,7 @@ msgstr "ŠŠ¾Š¶Šµ мŃŃŃŠøŃŠø Š»ŠøŃŠµ Š»ŃŃŠµŃŠø, ŃŠøŃŃŠø, ŠæŃŠ¾Š±ŃŠ»
#: src/view/com/modals/VerifyEmail.tsx:247
#: src/view/com/modals/VerifyEmail.tsx:253
#: src/view/com/modals/Waitlist.tsx:142
-#: src/view/screens/Search/Search.tsx:693
+#: src/view/screens/Search/Search.tsx:716
#: src/view/shell/desktop/Search.tsx:238
msgid "Cancel"
msgstr "ДкаŃŃŠ²Š°ŃŠø"
@@ -723,7 +739,7 @@ msgstr "ŠŠ²ŃŠ¾ŃŠø ŃŃŃŃŃŠ¾Šŗ можŃŃŃ Š¾Š±ŠøŃŠ°ŃŠø Š±ŃŠ“Ń-ŃŠŗŃ
msgid "Choose your main feeds"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:215
+#: src/view/com/auth/create/Step1.tsx:219
msgid "Choose your password"
msgstr "ŠŠŗŠ°Š¶ŃŃŃ ŠæŠ°ŃŠ¾Š»Ń"
@@ -746,7 +762,7 @@ msgid "Clear all storage data (restart after this)"
msgstr ""
#: src/view/com/util/forms/SearchInput.tsx:88
-#: src/view/screens/Search/Search.tsx:674
+#: src/view/screens/Search/Search.tsx:697
msgid "Clear search query"
msgstr "ŠŃŠøŃŃŠøŃŠø поŃŃŠŗŠ¾Š²ŠøŠ¹ запиŃ"
@@ -754,6 +770,11 @@ msgstr "ŠŃŠøŃŃŠøŃŠø поŃŃŠŗŠ¾Š²ŠøŠ¹ запиŃ"
msgid "click here"
msgstr ""
+#: src/components/RichText.tsx:189
+#: src/components/TagMenu/index.web.tsx:125
+msgid "Click here to open tag menu for {tag}"
+msgstr ""
+
#: src/screens/Onboarding/index.tsx:35
msgid "Climate"
msgstr ""
@@ -763,7 +784,8 @@ msgstr ""
msgid "Close"
msgstr ""
-#: src/components/Dialog/index.web.tsx:78
+#: src/components/Dialog/index.web.tsx:80
+#: src/components/Dialog/index.web.tsx:194
msgid "Close active dialog"
msgstr ""
@@ -783,11 +805,15 @@ msgstr "ŠŠ°ŠŗŃŠøŃŠø Š·Š¾Š±ŃŠ°Š¶ŠµŠ½Š½Ń"
msgid "Close image viewer"
msgstr "ŠŠ°ŠŗŃŠøŃŠø ŠæŠµŃŠµŠ³Š»ŃŠ“ Š·Š¾Š±ŃŠ°Š¶ŠµŠ½Š½Ń"
-#: src/view/shell/index.web.tsx:49
+#: src/view/shell/index.web.tsx:51
msgid "Close navigation footer"
msgstr "ŠŠ°ŠŗŃŠøŃŠø ŠæŠ°Š½ŠµŠ»Ń Š½Š°Š²ŃŠ³Š°ŃŃŃ"
-#: src/view/shell/index.web.tsx:50
+#: src/components/TagMenu/index.tsx:266
+msgid "Close this dialog"
+msgstr ""
+
+#: src/view/shell/index.web.tsx:52
msgid "Closes bottom navigation bar"
msgstr ""
@@ -795,7 +821,7 @@ msgstr ""
msgid "Closes password update alert"
msgstr ""
-#: src/view/com/composer/Composer.tsx:302
+#: src/view/com/composer/Composer.tsx:309
msgid "Closes post composer and discards post draft"
msgstr ""
@@ -824,7 +850,11 @@ msgstr "ŠŃавила ŃŠæŃŠ»ŃŠ½Š¾ŃŠø"
msgid "Complete onboarding and start using your account"
msgstr ""
-#: src/view/com/composer/Composer.tsx:417
+#: src/view/com/auth/create/Step3.tsx:73
+msgid "Complete the challenge"
+msgstr ""
+
+#: src/view/com/composer/Composer.tsx:424
msgid "Compose posts up to {MAX_GRAPHEME_LENGTH} characters in length"
msgstr ""
@@ -841,7 +871,7 @@ msgstr ""
#: src/view/com/modals/SelfLabel.tsx:154
#: src/view/com/modals/VerifyEmail.tsx:231
#: src/view/com/modals/VerifyEmail.tsx:233
-#: src/view/screens/PreferencesHomeFeed.tsx:308
+#: src/view/screens/PreferencesFollowingFeed.tsx:308
#: src/view/screens/PreferencesThreads.tsx:159
msgid "Confirm"
msgstr "ŠŃŠ“ŃŠ²ŠµŃŠ“ŠøŃŠø"
@@ -879,16 +909,16 @@ msgstr "ŠŠ¾Š“ ŠæŃŠ“ŃŠ²ŠµŃГженнŃ"
msgid "Confirms signing up {email} to the waitlist"
msgstr ""
-#: src/view/com/auth/create/CreateAccount.tsx:182
+#: src/view/com/auth/create/CreateAccount.tsx:193
#: src/view/com/auth/login/LoginForm.tsx:278
msgid "Connecting..."
msgstr "ŠāŃŠ“наннŃ..."
-#: src/view/com/auth/create/CreateAccount.tsx:202
+#: src/view/com/auth/create/CreateAccount.tsx:213
msgid "Contact support"
msgstr ""
-#: src/view/screens/Moderation.tsx:81
+#: src/view/screens/Moderation.tsx:83
msgid "Content filtering"
msgstr "Š¤ŃŠ»ŃŃŃŃŠ²Š°Š½Š½Ń вмŃŃŃŃ"
@@ -918,7 +948,7 @@ msgstr "ŠŠ¾ŠæŠµŃŠµŠ“Š¶ŠµŠ½Š½Ń ŠæŃŠ¾ вмŃŃŃ"
#: src/screens/Onboarding/StepFollowingFeed.tsx:153
#: src/screens/Onboarding/StepInterests/index.tsx:248
#: src/screens/Onboarding/StepModeration/index.tsx:118
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:108
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:114
#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:148
#: src/view/com/auth/onboarding/RecommendedFollows.tsx:209
msgid "Continue"
@@ -927,7 +957,7 @@ msgstr "ŠŃŠ¾Š“Š¾Š²Š¶ŠøŃŠø"
#: src/screens/Onboarding/StepFollowingFeed.tsx:150
#: src/screens/Onboarding/StepInterests/index.tsx:245
#: src/screens/Onboarding/StepModeration/index.tsx:115
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:105
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:111
msgid "Continue to next step"
msgstr ""
@@ -954,7 +984,7 @@ msgstr ""
#: src/view/com/modals/AddAppPasswords.tsx:76
#: src/view/com/modals/InviteCodes.tsx:152
-#: src/view/com/util/forms/PostDropdownBtn.tsx:112
+#: src/view/com/util/forms/PostDropdownBtn.tsx:143
msgid "Copied to clipboard"
msgstr ""
@@ -966,19 +996,19 @@ msgstr ""
msgid "Copy"
msgstr "ДкопŃŃŠ²Š°ŃŠø"
-#: src/view/screens/ProfileList.tsx:417
+#: src/view/screens/ProfileList.tsx:418
msgid "Copy link to list"
msgstr "ДкопŃŃŠ²Š°ŃŠø ŠæŠ¾ŃŠøŠ»Š°Š½Š½Ń"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:153
+#: src/view/com/util/forms/PostDropdownBtn.tsx:184
msgid "Copy link to post"
msgstr "ДкопŃŃŠ²Š°ŃŠø ŠæŠ¾ŃŠøŠ»Š°Š½Š½Ń"
-#: src/view/com/profile/ProfileHeader.tsx:294
+#: src/view/com/profile/ProfileHeader.tsx:295
msgid "Copy link to profile"
msgstr "ДкопŃŃŠ²Š°ŃŠø ŠæŠ¾ŃŠøŠ»Š°Š½Š½Ń"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:139
+#: src/view/com/util/forms/PostDropdownBtn.tsx:170
msgid "Copy post text"
msgstr "ДкопŃŃŠ²Š°ŃŠø ŃŠµŠŗŃŃ"
@@ -987,7 +1017,7 @@ msgstr "ДкопŃŃŠ²Š°ŃŠø ŃŠµŠŗŃŃ"
msgid "Copyright Policy"
msgstr "ŠŠ¾Š»ŃŃŠøŠŗŠ° заŃ
ŠøŃŃŃ Š°Š²ŃŠ¾ŃŃŃŠŗŠ¾Š³Š¾ ŠæŃŠ°Š²Š°"
-#: src/view/screens/ProfileFeed.tsx:96
+#: src/view/screens/ProfileFeed.tsx:97
msgid "Could not load feed"
msgstr "ŠŠµ вГалоŃŃ Š·Š°Š²Š°Š½ŃŠ°Š¶ŠøŃŠø ŃŃŃŃŃŠŗŃ"
@@ -996,12 +1026,12 @@ msgid "Could not load list"
msgstr "ŠŠµ вГалоŃŃ Š·Š°Š²Š°Š½ŃŠ°Š¶ŠøŃŠø ŃŠæŠøŃŠ¾Šŗ"
#: src/view/com/auth/create/Step2.tsx:91
-msgid "Country"
-msgstr ""
+#~ msgid "Country"
+#~ msgstr ""
#: src/view/com/auth/HomeLoggedOutCTA.tsx:62
-#: src/view/com/auth/SplashScreen.tsx:46
-#: src/view/com/auth/SplashScreen.web.tsx:77
+#: src/view/com/auth/SplashScreen.tsx:71
+#: src/view/com/auth/SplashScreen.web.tsx:81
msgid "Create a new account"
msgstr "Š”ŃŠ²Š¾ŃŠøŃŠø новий Š¾Š±Š»Ńковий запиŃ"
@@ -1009,7 +1039,7 @@ msgstr "Š”ŃŠ²Š¾ŃŠøŃŠø новий Š¾Š±Š»Ńковий запиŃ"
msgid "Create a new Bluesky account"
msgstr ""
-#: src/view/com/auth/create/CreateAccount.tsx:122
+#: src/view/com/auth/create/CreateAccount.tsx:133
msgid "Create Account"
msgstr "Š”ŃŠ²Š¾ŃŠøŃŠø Š¾Š±Š»ŃŠŗŠ¾Š²ŠøŠ¹ запиŃ"
@@ -1018,7 +1048,7 @@ msgid "Create App Password"
msgstr ""
#: src/view/com/auth/HomeLoggedOutCTA.tsx:54
-#: src/view/com/auth/SplashScreen.tsx:43
+#: src/view/com/auth/SplashScreen.tsx:68
msgid "Create new account"
msgstr "Š”ŃŠ²Š¾ŃŠøŃŠø новий Š¾Š±Š»Ńковий запиŃ"
@@ -1034,7 +1064,7 @@ msgstr ""
msgid "Created by you"
msgstr ""
-#: src/view/com/composer/Composer.tsx:448
+#: src/view/com/composer/Composer.tsx:455
msgid "Creates a card with a thumbnail. The card links to {url}"
msgstr ""
@@ -1052,6 +1082,7 @@ msgid "Custom domain"
msgstr "ŠŠ»Š°Ńний Гомен"
#: src/screens/Onboarding/StepAlgoFeeds/index.tsx:106
+#: src/view/screens/Feeds.tsx:692
msgid "Custom feeds built by the community bring you new experiences and help you find the content you love."
msgstr ""
@@ -1097,8 +1128,8 @@ msgstr "ŠŠøŠ“Š°Š»ŠøŃŠø Š¾Š±Š»ŃŠŗŠ¾Š²ŠøŠ¹ запиŃ"
msgid "Delete app password"
msgstr "ŠŠøŠ“Š°Š»ŠøŃŠø ŠæŠ°ŃŠ¾Š»Ń Š“Š»Ń Š·Š°ŃŃŠ¾ŃŃŠ½ŠŗŃ"
-#: src/view/screens/ProfileList.tsx:363
-#: src/view/screens/ProfileList.tsx:444
+#: src/view/screens/ProfileList.tsx:364
+#: src/view/screens/ProfileList.tsx:445
msgid "Delete List"
msgstr "ŠŠøŠ“Š°Š»ŠøŃŠø ŃŠæŠøŃŠ¾Šŗ"
@@ -1114,19 +1145,19 @@ msgstr "ŠŠøŠ“Š°Š»ŠøŃŠø Š¼ŃŠ¹ Š¾Š±Š»ŃŠŗŠ¾Š²ŠøŠ¹ запиŃ"
msgid "Delete My Accountā¦"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:228
+#: src/view/com/util/forms/PostDropdownBtn.tsx:273
msgid "Delete post"
msgstr "ŠŠøŠ“Š°Š»ŠøŃŠø поŃŃ"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:232
+#: src/view/com/util/forms/PostDropdownBtn.tsx:277
msgid "Delete this post?"
msgstr "ŠŠøŠ“Š°Š»ŠøŃŠø ŃŠµŠ¹ поŃŃ?"
-#: src/view/com/util/post-embeds/QuoteEmbed.tsx:69
+#: src/view/com/util/post-embeds/QuoteEmbed.tsx:70
msgid "Deleted"
msgstr ""
-#: src/view/com/post-thread/PostThread.tsx:259
+#: src/view/com/post-thread/PostThread.tsx:316
msgid "Deleted post."
msgstr "ŠŠøŠ“алений поŃŃ."
@@ -1145,7 +1176,7 @@ msgstr "ŠŠæŠøŃ"
#~ msgid "Developer Tools"
#~ msgstr "ŠŠ½ŃŃŃŃŠ¼ŠµŠ½ŃŠø ŃŠ¾Š·Ńобника"
-#: src/view/com/composer/Composer.tsx:211
+#: src/view/com/composer/Composer.tsx:218
msgid "Did you want to say anything?"
msgstr "ŠŠ¾ŃŠ¾Š¶Š½ŃŠ¹ поŃŃ. ŠŠø Ń
оŃŃŠ»Šø ŃŠ¾ŃŃ Š½Š°ŠæŠøŃŠ°ŃŠø?"
@@ -1153,15 +1184,15 @@ msgstr "ŠŠ¾ŃŠ¾Š¶Š½ŃŠ¹ поŃŃ. ŠŠø Ń
оŃŃŠ»Šø ŃŠ¾ŃŃ Š½Š°ŠæŠøŃŠ°ŃŠø?"
msgid "Dim"
msgstr ""
-#: src/view/com/composer/Composer.tsx:144
+#: src/view/com/composer/Composer.tsx:151
msgid "Discard"
msgstr "ŠŠøŠ“Š°Š»ŠøŃŠø"
-#: src/view/com/composer/Composer.tsx:138
+#: src/view/com/composer/Composer.tsx:145
msgid "Discard draft"
msgstr "ŠŃГкинŃŃŠø ŃŠµŃŠ½ŠµŃŠŗŃ"
-#: src/view/screens/Moderation.tsx:207
+#: src/view/screens/Moderation.tsx:226
msgid "Discourage apps from showing my account to logged-out users"
msgstr "ŠŠ¾ŠæŃŠ¾ŃŠøŃŠø заŃŃŠ¾ŃŃŠ½ŠŗŠø не ŠæŠ¾ŠŗŠ°Š·ŃŠ²Š°ŃŠø Š¼ŃŠ¹ Š¾Š±Š»ŃŠŗŠ¾Š²ŠøŠ¹ Š·Š°ŠæŠøŃ Š±ŠµŠ· вŃ
оГŃ"
@@ -1171,8 +1202,12 @@ msgid "Discover new custom feeds"
msgstr ""
#: src/view/screens/Feeds.tsx:473
-msgid "Discover new feeds"
-msgstr "ŠŃŠ“ŠŗŃŠøŠ¹Ńе Š“Š»Ń ŃŠµŠ±Šµ Š½Š¾Š²Ń ŃŃŃŃŃŠŗŠø"
+#~ msgid "Discover new feeds"
+#~ msgstr "ŠŃŠ“ŠŗŃŠøŠ¹Ńе Š“Š»Ń ŃŠµŠ±Šµ Š½Š¾Š²Ń ŃŃŃŃŃŠŗŠø"
+
+#: src/view/screens/Feeds.tsx:689
+msgid "Discover New Feeds"
+msgstr ""
#: src/view/com/modals/EditProfile.tsx:192
msgid "Display name"
@@ -1186,7 +1221,7 @@ msgstr "ŠŠ¼'Ń"
msgid "Domain verified!"
msgstr "ŠŠ¾Š¼ŠµŠ½ ŠæŠµŃŠµŠ²ŃŃŠµŠ½Š¾!"
-#: src/view/com/auth/create/Step1.tsx:166
+#: src/view/com/auth/create/Step1.tsx:170
msgid "Don't have an invite code?"
msgstr ""
@@ -1213,7 +1248,7 @@ msgstr ""
#: src/view/com/modals/InviteCodes.tsx:80
#: src/view/com/modals/InviteCodes.tsx:123
#: src/view/com/modals/ListAddRemoveUsers.tsx:142
-#: src/view/screens/PreferencesHomeFeed.tsx:311
+#: src/view/screens/PreferencesFollowingFeed.tsx:311
#: src/view/screens/Settings/ExportCarDialog.tsx:93
#: src/view/screens/Settings/ExportCarDialog.tsx:94
msgid "Done"
@@ -1236,7 +1271,7 @@ msgstr ""
msgid "Download CAR file"
msgstr ""
-#: src/view/com/composer/text-input/TextInput.web.tsx:247
+#: src/view/com/composer/text-input/TextInput.web.tsx:249
msgid "Drop to add images"
msgstr ""
@@ -1282,7 +1317,7 @@ msgstr ""
msgid "Edit image"
msgstr "Š ŠµŠ“Š°Š³ŃŠ²Š°ŃŠø Š·Š¾Š±ŃŠ°Š¶ŠµŠ½Š½Ń"
-#: src/view/screens/ProfileList.tsx:432
+#: src/view/screens/ProfileList.tsx:433
msgid "Edit list details"
msgstr "Š ŠµŠ“Š°Š³ŃŠ²Š°ŃŠø Š¾ŠæŠøŃ ŃŠæŠøŃŠŗŃ"
@@ -1300,15 +1335,16 @@ msgstr "Š ŠµŠ“Š°Š³ŃŠ²Š°ŃŠø Š¼Š¾Ń ŃŃŃŃŃŠŗŠø"
msgid "Edit my profile"
msgstr "Š ŠµŠ“Š°Š³ŃŠ²Š°ŃŠø Š¼ŃŠ¹ ŠæŃŠ¾ŃŃŠ»Ń"
-#: src/view/com/profile/ProfileHeader.tsx:417
+#: src/view/com/profile/ProfileHeader.tsx:418
msgid "Edit profile"
msgstr "Š ŠµŠ“Š°Š³ŃŠ²Š°ŃŠø ŠæŃŠ¾ŃŃŠ»Ń"
-#: src/view/com/profile/ProfileHeader.tsx:422
+#: src/view/com/profile/ProfileHeader.tsx:423
msgid "Edit Profile"
msgstr "Š ŠµŠ“Š°Š³ŃŠ²Š°ŃŠø ŠæŃŠ¾ŃŃŠ»Ń"
-#: src/view/screens/Feeds.tsx:356
+#: src/view/com/home/HomeHeaderLayout.web.tsx:59
+#: src/view/screens/Feeds.tsx:355
msgid "Edit Saved Feeds"
msgstr "Š ŠµŠ“Š°Š³ŃŠ²Š°ŃŠø Š·Š±ŠµŃŠµŠ¶ŠµŠ½Ń ŃŃŃŃŃŠŗŠø"
@@ -1328,16 +1364,14 @@ msgstr ""
msgid "Education"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:195
-#: src/view/com/auth/create/Step2.tsx:194
-#: src/view/com/auth/create/Step2.tsx:269
+#: src/view/com/auth/create/Step1.tsx:199
#: src/view/com/auth/login/ForgotPasswordForm.tsx:156
#: src/view/com/modals/ChangeEmail.tsx:141
#: src/view/com/modals/Waitlist.tsx:88
msgid "Email"
msgstr "ŠŠ». Š°Š“ŃŠµŃа"
-#: src/view/com/auth/create/Step1.tsx:186
+#: src/view/com/auth/create/Step1.tsx:190
#: src/view/com/auth/login/ForgotPasswordForm.tsx:147
msgid "Email address"
msgstr "ŠŠ“ŃŠµŃа елекŃŃŠ¾Š½Š½Š¾Ń поŃŃŠø"
@@ -1380,7 +1414,7 @@ msgstr "Š£Š²ŃŠ¼ŠŗŠ½ŃŃŠø зовнŃŃŠ½Ń Š¼ŠµŠ“ŃŠ°"
msgid "Enable media players for"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:147
+#: src/view/screens/PreferencesFollowingFeed.tsx:147
msgid "Enable this setting to only see replies between people you follow."
msgstr "Š£Š²ŃŠ¼ŠŗŠ½ŃŃŃ ŃŠµŠ¹ ŠæŠ°ŃŠ°Š¼ŠµŃŃ, ŃŠ¾Š± Š±Š°ŃŠøŃŠø Š²ŃŠ“ŠæŠ¾Š²ŃŠ“Ń ŃŃŠ»ŃŠŗŠø Š¼ŃŠ¶ Š»ŃŠ“ŃŠ¼Šø, на ŃŠŗŠøŃ
ви ŠæŃŠ“ŠæŠøŃŠ°Š½Ń."
@@ -1392,6 +1426,11 @@ msgstr "ŠŃнеŃŃ ŃŃŃŃŃŠŗŠø"
msgid "Enter a name for this App Password"
msgstr ""
+#: src/components/dialogs/MutedWords.tsx:87
+#: src/components/dialogs/MutedWords.tsx:88
+msgid "Enter a word or tag"
+msgstr ""
+
#: src/view/com/modals/VerifyEmail.tsx:105
msgid "Enter Confirmation Code"
msgstr ""
@@ -1412,7 +1451,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/Step1.tsx:247
+#: src/view/com/auth/create/Step1.tsx:251
#: src/view/com/modals/BirthDateSettings.tsx:74
msgid "Enter your birth date"
msgstr ""
@@ -1421,7 +1460,7 @@ msgstr ""
msgid "Enter your email"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:191
+#: src/view/com/auth/create/Step1.tsx:195
msgid "Enter your email address"
msgstr "ŠŠ²ŠµŠ“ŃŃŃ Š°Š“ŃŠµŃŃ ŠµŠ»ŠµŠŗŃŃŠ¾Š½Š½Š¾Ń поŃŃŠø"
@@ -1434,14 +1473,18 @@ msgid "Enter your new email address below."
msgstr "ŠŠ²ŠµŠ“ŃŃŃ Š½Š¾Š²Ń Š°Š“ŃŠµŃŃ ŠµŠ»ŠµŠŗŃŃŠ¾Š½Š½Š¾Ń поŃŃŠø."
#: src/view/com/auth/create/Step2.tsx:188
-msgid "Enter your phone number"
-msgstr ""
+#~ msgid "Enter your phone number"
+#~ msgstr ""
#: src/view/com/auth/login/Login.tsx:99
msgid "Enter your username and password"
msgstr "ŠŠ²ŠµŠ“ŃŃŃ ŠæŃŠµŠ²Š“Š¾Š½ŃŠ¼ ŃŠ° ŠæŠ°ŃŠ¾Š»Ń"
-#: src/view/screens/Search/Search.tsx:109
+#: src/view/com/auth/create/Step3.tsx:67
+msgid "Error receiving captcha response."
+msgstr ""
+
+#: src/view/screens/Search/Search.tsx:110
msgid "Error:"
msgstr "ŠŠ¾Š¼ŠøŠ»ŠŗŠ°:"
@@ -1493,7 +1536,7 @@ msgstr "ŠŠ¾Š²Š½ŃŃŠ½Ń Š¼ŠµŠ“ŃŠ°"
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/Navigation.tsx:258
+#: src/Navigation.tsx:261
#: src/view/screens/PreferencesExternalEmbeds.tsx:52
#: src/view/screens/Settings/index.tsx:657
msgid "External Media Preferences"
@@ -1512,7 +1555,7 @@ msgstr ""
msgid "Failed to create the list. Check your internet connection and try again."
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:88
+#: src/view/com/util/forms/PostDropdownBtn.tsx:110
msgid "Failed to delete post, please try again"
msgstr ""
@@ -1525,25 +1568,26 @@ msgstr "ŠŠµ вГалоŃŃ Š·Š°Š²Š°Š½ŃŠ°Š¶ŠøŃŠø ŃŠµŠŗŠ¾Š¼ŠµŠ½Š“аŃŃŃ ŃŃ
msgid "Feed"
msgstr ""
-#: src/view/com/feeds/FeedSourceCard.tsx:229
+#: src/view/com/feeds/FeedSourceCard.tsx:231
msgid "Feed by {0}"
msgstr ""
-#: src/view/screens/Feeds.tsx:631
+#: src/view/screens/Feeds.tsx:605
msgid "Feed offline"
msgstr "Š”ŃŃŃŃŠŗŠ° не ŠæŃаŃŃŃ"
#: src/view/com/feeds/FeedPage.tsx:143
-msgid "Feed Preferences"
-msgstr "ŠŠ°Š»Š°ŃŃŃŠ²Š°Š½Š½Ń ŃŃŃŃŃŠŗŠø"
+#~ msgid "Feed Preferences"
+#~ msgstr "ŠŠ°Š»Š°ŃŃŃŠ²Š°Š½Š½Ń ŃŃŃŃŃŠŗŠø"
-#: src/view/shell/desktop/RightNav.tsx:69
+#: src/view/shell/desktop/RightNav.tsx:61
#: src/view/shell/Drawer.tsx:311
msgid "Feedback"
msgstr "ŠŠ°Š“ŃŃŠ»Š°ŃŠø Š²ŃŠ“Š³ŃŠŗ"
-#: src/Navigation.tsx:442
-#: src/view/screens/Feeds.tsx:548
+#: src/Navigation.tsx:445
+#: src/view/screens/Feeds.tsx:419
+#: src/view/screens/Feeds.tsx:524
#: src/view/screens/Profile.tsx:184
#: src/view/shell/bottom-bar/BottomBar.tsx:181
#: src/view/shell/desktop/LeftNav.tsx:342
@@ -1568,7 +1612,7 @@ msgstr "Š”ŃŃŃŃŠŗŠø ŃŃŠ²Š¾ŃŃŃŃŃŃŃ ŠŗŠ¾ŃŠøŃŃŃŠ²Š°Ńами ГлŃ
msgid "Feeds are custom algorithms that users build with a little coding expertise. <0/> for more information."
msgstr "Š”ŃŃŃŃŠŗŠø - ŃŠµ Š°Š»Š³Š¾ŃŠøŃми, ŃŃŠ²Š¾ŃŠµŠ½Ń ŠŗŠ¾ŃŠøŃŃŃŠ²Š°Ńами Š· Š“ŠµŃŠŗŠøŠ¼ Š“Š¾ŃŠ²ŃГом ŠæŃŠ¾Š³ŃŠ°Š¼ŃваннŃ. <0/> Š“Š»Ń Š“Š¾Š“Š°ŃŠŗŠ¾Š²Š¾Ń ŃŠ½ŃŠ¾ŃŠ¼Š°ŃŃŃ."
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:70
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:76
msgid "Feeds can be topical as well!"
msgstr ""
@@ -1582,11 +1626,11 @@ msgstr ""
msgid "Find accounts to follow"
msgstr ""
-#: src/view/screens/Search/Search.tsx:439
+#: src/view/screens/Search/Search.tsx:440
msgid "Find users on Bluesky"
msgstr "ŠŠ½Š°Š¹ŃŠø ŠŗŠ¾ŃŠøŃŃŃŠ²Š°ŃŃŠ² Ń Bluesky"
-#: src/view/screens/Search/Search.tsx:437
+#: src/view/screens/Search/Search.tsx:438
msgid "Find users with the search tool on the right"
msgstr "ŠŠ½Š°Š¹ŃŠø ŠŗŠ¾ŃŠøŃŃŃŠ²Š°ŃŃŠ² за Š“Š¾ŠæŠ¾Š¼Š¾Š³Š¾Ń ŠæŠ¾Š»Ń ŠæŠ¾ŃŃŠŗŃ ŃŠæŃава вгоŃŃ"
@@ -1594,9 +1638,13 @@ msgstr "ŠŠ½Š°Š¹ŃŠø ŠŗŠ¾ŃŠøŃŃŃŠ²Š°ŃŃŠ² за Š“Š¾ŠæŠ¾Š¼Š¾Š³Š¾Ń ŠæŠ¾Š»Ń
msgid "Finding similar accounts..."
msgstr "ŠŠ¾ŃŃŠŗ ŃŃ
ожиŃ
ŠŗŠ¾ŃŠøŃŃŃŠ²Š°ŃŃŠ²..."
+#: src/view/screens/PreferencesFollowingFeed.tsx:111
+msgid "Fine-tune the content you see on your Following feed."
+msgstr ""
+
#: src/view/screens/PreferencesHomeFeed.tsx:111
-msgid "Fine-tune the content you see on your home screen."
-msgstr "ŠŠ±ŠµŃŃŃŃ, ŃŠ¾ ви Ń
Š¾ŃŠµŃе Š±Š°ŃŠøŃŠø Ń ŃŠ²Š¾Ńй Š“Š¾Š¼Š°ŃŠ½Ńй ŃŃŃŃŃŃŃ."
+#~ msgid "Fine-tune the content you see on your home screen."
+#~ msgstr "ŠŠ±ŠµŃŃŃŃ, ŃŠ¾ ви Ń
Š¾ŃŠµŃе Š±Š°ŃŠøŃŠø Ń ŃŠ²Š¾Ńй Š“Š¾Š¼Š°ŃŠ½Ńй ŃŃŃŃŃŃŃ."
#: src/view/screens/PreferencesThreads.tsx:60
msgid "Fine-tune the discussion threads."
@@ -1621,7 +1669,7 @@ msgstr ""
#: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:181
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:136
-#: src/view/com/profile/ProfileHeader.tsx:512
+#: src/view/com/profile/ProfileHeader.tsx:513
msgid "Follow"
msgstr "ŠŃŠ“ŠæŠøŃŠ°ŃŠøŃŃ"
@@ -1632,7 +1680,7 @@ msgstr ""
#: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:58
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:122
-#: src/view/com/profile/ProfileHeader.tsx:503
+#: src/view/com/profile/ProfileHeader.tsx:504
msgid "Follow {0}"
msgstr ""
@@ -1664,7 +1712,7 @@ msgstr ""
msgid "Followed users"
msgstr "ŠŠ°ŃŃ ŠæŃŠ“ŠæŠøŃŠŗŠø"
-#: src/view/screens/PreferencesHomeFeed.tsx:154
+#: src/view/screens/PreferencesFollowingFeed.tsx:154
msgid "Followed users only"
msgstr "Š¢ŃŠ»ŃŠŗŠø ваŃŃ ŠæŃŠ“ŠæŠøŃŠŗŠø"
@@ -1681,16 +1729,24 @@ msgstr "ŠŃŠ“ŠæŠøŃŠ½ŠøŠŗŠø"
#~ msgstr "ŠæŃŠ“ŠæŠøŃŠ¾Šŗ"
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:136
-#: src/view/com/profile/ProfileHeader.tsx:494
+#: src/view/com/profile/ProfileHeader.tsx:495
#: src/view/screens/ProfileFollows.tsx:25
msgid "Following"
msgstr "ŠŃŠ“ŠæŠøŃŠ°Š½Ń"
-#: src/view/com/profile/ProfileHeader.tsx:148
+#: src/view/com/profile/ProfileHeader.tsx:149
msgid "Following {0}"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:545
+#: src/Navigation.tsx:248
+#: src/view/com/home/HomeHeaderLayout.web.tsx:45
+#: src/view/com/home/HomeHeaderLayoutMobile.tsx:83
+#: src/view/screens/PreferencesFollowingFeed.tsx:104
+#: src/view/screens/Settings/index.tsx:543
+msgid "Following Feed Preferences"
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:546
msgid "Follows you"
msgstr "ŠŃŠ“ŠæŠøŃŠ°Š½ŠøŠ¹(-на) на ваŃ"
@@ -1744,8 +1800,8 @@ msgstr "ŠŠ¾ŃŠ°ŃŠø"
msgid "Go back"
msgstr "ŠŠ°Š·Š°Š“"
-#: src/view/screens/ProfileFeed.tsx:105
-#: src/view/screens/ProfileFeed.tsx:110
+#: src/view/screens/ProfileFeed.tsx:106
+#: src/view/screens/ProfileFeed.tsx:111
#: src/view/screens/ProfileList.tsx:897
#: src/view/screens/ProfileList.tsx:902
msgid "Go Back"
@@ -1756,7 +1812,7 @@ msgstr "ŠŠ°Š·Š°Š“"
msgid "Go back to previous step"
msgstr ""
-#: src/view/screens/Search/Search.tsx:724
+#: src/view/screens/Search/Search.tsx:747
#: src/view/shell/desktop/Search.tsx:262
msgid "Go to @{queryMaybeHandle}"
msgstr ""
@@ -1773,11 +1829,15 @@ msgstr "ŠŠ°Š»Ń"
msgid "Handle"
msgstr "ŠŃŠµŠ²Š“Š¾Š½ŃŠ¼"
-#: src/view/com/auth/create/CreateAccount.tsx:197
+#: src/components/RichText.tsx:188
+msgid "Hashtag: {tag}"
+msgstr ""
+
+#: src/view/com/auth/create/CreateAccount.tsx:208
msgid "Having trouble?"
msgstr ""
-#: src/view/shell/desktop/RightNav.tsx:98
+#: src/view/shell/desktop/RightNav.tsx:90
#: src/view/shell/Drawer.tsx:321
msgid "Help"
msgstr "ŠŠ¾Š²ŃГка"
@@ -1790,11 +1850,11 @@ msgstr ""
#~ msgid "Here are some accounts for your to follow"
#~ msgstr ""
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:79
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:85
msgid "Here are some popular topical feeds. You can choose to follow as many as you like."
msgstr ""
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:74
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:80
msgid "Here are some topical feeds based on your interests: {interestsText}. You can choose to follow as many as you like."
msgstr ""
@@ -1815,7 +1875,7 @@ msgctxt "action"
msgid "Hide"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:187
+#: src/view/com/util/forms/PostDropdownBtn.tsx:232
msgid "Hide post"
msgstr "ŠŃŠøŃ
Š¾Š²Š°ŃŠø поŃŃ"
@@ -1824,7 +1884,7 @@ msgstr "ŠŃŠøŃ
Š¾Š²Š°ŃŠø поŃŃ"
msgid "Hide the content"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:191
+#: src/view/com/util/forms/PostDropdownBtn.tsx:236
msgid "Hide this post?"
msgstr "ŠŃŠøŃ
Š¾Š²Š°ŃŠø ŃŠµŠ¹ поŃŃ?"
@@ -1832,7 +1892,7 @@ msgstr "ŠŃŠøŃ
Š¾Š²Š°ŃŠø ŃŠµŠ¹ поŃŃ?"
msgid "Hide user list"
msgstr "ŠŃŠøŃ
Š¾Š²Š°ŃŠø ŃŠæŠøŃŠ¾Šŗ ŠŗŠ¾ŃŠøŃŃŃŠ²Š°ŃŃŠ²"
-#: src/view/com/profile/ProfileHeader.tsx:486
+#: src/view/com/profile/ProfileHeader.tsx:487
msgid "Hides posts from {0} in your feed"
msgstr ""
@@ -1864,7 +1924,7 @@ msgstr "Єм, ми не можемо Š·Š½Š°Š¹ŃŠø ŃŃ ŃŃŃŃŃŠŗŃ. ŠŠ¾Š¶Š»
#~ msgid "Hmmm, we're having trouble finding this feed. It may have been deleted."
#~ msgstr ""
-#: src/Navigation.tsx:432
+#: src/Navigation.tsx:435
#: src/view/shell/bottom-bar/BottomBar.tsx:137
#: src/view/shell/desktop/LeftNav.tsx:306
#: src/view/shell/Drawer.tsx:398
@@ -1876,10 +1936,10 @@ msgstr "ŠŠ¾Š»Š¾Š²Š½Š°"
#: src/view/com/pager/FeedsTabBarMobile.tsx:123
#: src/view/screens/PreferencesHomeFeed.tsx:104
#: src/view/screens/Settings/index.tsx:543
-msgid "Home Feed Preferences"
-msgstr "ŠŠ°Š»Š°ŃŃŃŠ²Š°Š½Š½Ń Š“Š¾Š¼Š°ŃŠ½ŃŠ¾Ń ŃŃŃŃŃŠŗŠø"
+#~ msgid "Home Feed Preferences"
+#~ msgstr "ŠŠ°Š»Š°ŃŃŃŠ²Š°Š½Š½Ń Š“Š¾Š¼Š°ŃŠ½ŃŠ¾Ń ŃŃŃŃŃŠŗŠø"
-#: src/view/com/auth/create/Step1.tsx:78
+#: src/view/com/auth/create/Step1.tsx:82
#: src/view/com/auth/login/ForgotPasswordForm.tsx:120
msgid "Hosting provider"
msgstr "ЄоŃŃŠøŠ½Š³-ŠæŃŠ¾Š²Š°Š¹Š“еŃ"
@@ -1943,7 +2003,7 @@ msgstr ""
msgid "Input confirmation code for account deletion"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:196
+#: src/view/com/auth/create/Step1.tsx:200
msgid "Input email for Bluesky account"
msgstr ""
@@ -1955,7 +2015,7 @@ msgstr ""
#~ msgid "Input hosting provider address"
#~ msgstr ""
-#: src/view/com/auth/create/Step1.tsx:154
+#: src/view/com/auth/create/Step1.tsx:158
msgid "Input invite code to proceed"
msgstr ""
@@ -1972,8 +2032,8 @@ msgid "Input password for account deletion"
msgstr ""
#: src/view/com/auth/create/Step2.tsx:196
-msgid "Input phone number for SMS verification"
-msgstr ""
+#~ msgid "Input phone number for SMS verification"
+#~ msgstr ""
#: src/view/com/auth/login/LoginForm.tsx:230
msgid "Input the password tied to {identifier}"
@@ -1984,8 +2044,8 @@ msgid "Input the username or email address you used at signup"
msgstr ""
#: src/view/com/auth/create/Step2.tsx:271
-msgid "Input the verification code we have texted to you"
-msgstr ""
+#~ msgid "Input the verification code we have texted to you"
+#~ msgstr ""
#: src/view/com/modals/Waitlist.tsx:90
msgid "Input your email to get on the Bluesky waitlist"
@@ -1995,11 +2055,11 @@ msgstr ""
msgid "Input your password"
msgstr ""
-#: src/view/com/auth/create/Step3.tsx:42
+#: src/view/com/auth/create/Step2.tsx:80
msgid "Input your user handle"
msgstr ""
-#: src/view/com/post-thread/PostThreadItem.tsx:225
+#: src/view/com/post-thread/PostThreadItem.tsx:226
msgid "Invalid or unsupported post record"
msgstr ""
@@ -2015,12 +2075,12 @@ msgstr "ŠŠµŠ²ŃŃŠ½Šµ ŃŠ¼'Ń ŠŗŠ¾ŃŠøŃŃŃŠ²Š°Ńа або ŠæŠ°ŃŠ¾Š»Ń"
msgid "Invite a Friend"
msgstr "ŠŠ°ŠæŃŠ¾ŃŠøŃŠø Š“ŃŃŠ³Š°"
-#: src/view/com/auth/create/Step1.tsx:144
-#: src/view/com/auth/create/Step1.tsx:153
+#: src/view/com/auth/create/Step1.tsx:148
+#: src/view/com/auth/create/Step1.tsx:157
msgid "Invite code"
msgstr "ŠŠ¾Š“ Š·Š°ŠæŃŠ¾ŃеннŃ"
-#: src/view/com/auth/create/state.ts:199
+#: src/view/com/auth/create/state.ts:158
msgid "Invite code not accepted. Check that you input it correctly and try again."
msgstr "ŠŠ¾Š“ Š·Š°ŠæŃŠ¾ŃŠµŠ½Š½Ń Š½Šµ ŠæŃŠøŠ¹Š½ŃŃŠ¾. ŠŠµŃŠµŠŗŠ¾Š½Š°Š¹ŃŠµŃŃ Š² його ŠæŃавилŃноŃŃŃ ŃŠ° ŠæŠ¾Š²ŃŠ¾ŃŃŃŃ ŃŠæŃобŃ."
@@ -2041,6 +2101,7 @@ msgid "It shows posts from the people you follow as they happen."
msgstr ""
#: src/view/com/auth/HomeLoggedOutCTA.tsx:99
+#: src/view/com/auth/SplashScreen.web.tsx:138
msgid "Jobs"
msgstr "ŠŠ°ŠŗŠ°Š½ŃŃŃ"
@@ -2048,8 +2109,8 @@ msgstr "ŠŠ°ŠŗŠ°Š½ŃŃŃ"
msgid "Join the waitlist"
msgstr "ŠŃŠøŃŠ“Š½Š°ŃŠøŃŃ Š“Š¾ ŃŠµŃги оŃŃŠŗŃваннŃ"
-#: src/view/com/auth/create/Step1.tsx:170
#: src/view/com/auth/create/Step1.tsx:174
+#: src/view/com/auth/create/Step1.tsx:178
msgid "Join the waitlist."
msgstr "ŠŃŠøŃŠ“Š½Š°ŃŠøŃŃ Š“Š¾ ŃŠµŃги оŃŃŠŗŃваннŃ."
@@ -2100,7 +2161,7 @@ msgstr "ŠŃŠ·Š½Š°ŃŠøŃŃ Š±ŃŠ»ŃŃŠµ"
msgid "Learn more about this warning"
msgstr "ŠŃŠ·Š½Š°ŃŠøŃŃ Š±ŃŠ»ŃŃŠµ ŠæŃŠ¾ ŃŠµ ŠæŠ¾ŠæŠµŃŠµŠ“женнŃ"
-#: src/view/screens/Moderation.tsx:243
+#: src/view/screens/Moderation.tsx:262
msgid "Learn more about what is public on Bluesky."
msgstr "ŠŃŠ·Š½Š°ŃŠøŃŃ Š±ŃŠ»ŃŃŠµ ŠæŃŠ¾ ŃŠµ, ŃŠ¾ Ń ŠæŃŠ±Š»ŃŃŠ½ŠøŠ¼ в Bluesky."
@@ -2156,7 +2217,7 @@ msgstr "ДпоГобалоŃŃ"
msgid "Liked By"
msgstr ""
-#: src/view/com/feeds/FeedSourceCard.tsx:277
+#: src/view/com/feeds/FeedSourceCard.tsx:279
msgid "Liked by {0} {1}"
msgstr ""
@@ -2184,7 +2245,7 @@ msgstr ""
msgid "Likes"
msgstr "ŠŠæŠ¾Š“Š¾Š±Š°Š½Š½Ń"
-#: src/view/com/post-thread/PostThreadItem.tsx:182
+#: src/view/com/post-thread/PostThreadItem.tsx:183
msgid "Likes on this post"
msgstr ""
@@ -2204,19 +2265,19 @@ msgstr ""
msgid "List Avatar"
msgstr "ŠŠ²Š°ŃŠ°Ń ŃŠæŠøŃŠŗŃ"
-#: src/view/screens/ProfileList.tsx:323
+#: src/view/screens/ProfileList.tsx:324
msgid "List blocked"
msgstr ""
-#: src/view/com/feeds/FeedSourceCard.tsx:231
+#: src/view/com/feeds/FeedSourceCard.tsx:233
msgid "List by {0}"
msgstr ""
-#: src/view/screens/ProfileList.tsx:377
+#: src/view/screens/ProfileList.tsx:378
msgid "List deleted"
msgstr ""
-#: src/view/screens/ProfileList.tsx:282
+#: src/view/screens/ProfileList.tsx:283
msgid "List muted"
msgstr ""
@@ -2224,11 +2285,11 @@ msgstr ""
msgid "List Name"
msgstr "ŠŠ°Š·Š²Š° ŃŠæŠøŃŠŗŃ"
-#: src/view/screens/ProfileList.tsx:342
+#: src/view/screens/ProfileList.tsx:343
msgid "List unblocked"
msgstr ""
-#: src/view/screens/ProfileList.tsx:301
+#: src/view/screens/ProfileList.tsx:302
msgid "List unmuted"
msgstr ""
@@ -2240,8 +2301,8 @@ msgstr ""
msgid "Lists"
msgstr "Š”ŠæŠøŃŠŗŠø"
-#: src/view/com/post-thread/PostThread.tsx:276
-#: src/view/com/post-thread/PostThread.tsx:284
+#: src/view/com/post-thread/PostThread.tsx:333
+#: src/view/com/post-thread/PostThread.tsx:341
msgid "Load more posts"
msgstr "ŠŠ°Š²Š°Š½ŃŠ°Š¶ŠøŃŠø Š±ŃŠ»ŃŃŠµ поŃŃŃŠ²"
@@ -2249,10 +2310,10 @@ msgstr "ŠŠ°Š²Š°Š½ŃŠ°Š¶ŠøŃŠø Š±ŃŠ»ŃŃŠµ поŃŃŃŠ²"
msgid "Load new notifications"
msgstr "ŠŠ°Š²Š°Š½ŃŠ°Š¶ŠøŃŠø Š½Š¾Š²Ń ŃŠæŠ¾Š²ŃŃŠµŠ½Š½Ń"
-#: src/view/com/feeds/FeedPage.tsx:190
+#: src/view/com/feeds/FeedPage.tsx:115
#: src/view/screens/Profile.tsx:440
-#: src/view/screens/ProfileFeed.tsx:494
-#: src/view/screens/ProfileList.tsx:680
+#: src/view/screens/ProfileFeed.tsx:495
+#: src/view/screens/ProfileList.tsx:681
msgid "Load new posts"
msgstr "ŠŠ°Š²Š°Š½ŃŠ°Š¶ŠøŃŠø Š½Š¾Š²Ń ŠæŠ¾ŃŃŠø"
@@ -2279,7 +2340,7 @@ msgstr ""
#~ msgid "Logged-out users"
#~ msgstr ""
-#: src/view/screens/Moderation.tsx:136
+#: src/view/screens/Moderation.tsx:155
msgid "Logged-out visibility"
msgstr "ŠŠøŠ“имŃŃŃŃ Š“Š»Ń ŠŗŠ¾ŃŠøŃŃŃŠ²Š°ŃŃŠ² без Š¾Š±Š»Ńкового запиŃŃ"
@@ -2295,6 +2356,18 @@ msgstr "Š£Š²ŃŠ¹ŃŠø Го Š¾Š±Š»Ńкового запиŃŃ, ŃŠŗŠ¾Š³Š¾ нема
msgid "Make sure this is where you intend to go!"
msgstr "ŠŠµŃŠµŠŗŠ¾Š½Š°Š¹ŃŠµŃŃ, ŃŠ¾ ŃŠµ Š“ŃŠ¹Ńно ŃŠ¾Š¹ ŃŠ°Š¹Ń, ŃŠ¾ ви Š·Š±ŠøŃаŃŃŠµŃŃ Š²ŃŠ“Š²ŃŠ“Š°ŃŠø!"
+#: src/components/dialogs/MutedWords.tsx:71
+msgid "Manage your muted words and tags"
+msgstr ""
+
+#: src/view/com/auth/create/Step2.tsx:118
+msgid "May not be longer than 253 characters"
+msgstr ""
+
+#: src/view/com/auth/create/Step2.tsx:109
+msgid "May only contain letters and numbers"
+msgstr ""
+
#: src/view/screens/Profile.tsx:182
msgid "Media"
msgstr "ŠŠµŠ“ŃŠ°"
@@ -2308,7 +2381,7 @@ msgid "Mentioned users"
msgstr "ŠŠ³Š°Š“Š°Š½Ń ŠŗŠ¾ŃŠøŃŃŃŠ²Š°ŃŃ"
#: src/view/com/util/ViewHeader.tsx:81
-#: src/view/screens/Search/Search.tsx:623
+#: src/view/screens/Search/Search.tsx:646
msgid "Menu"
msgstr "ŠŠµŠ½Ń"
@@ -2321,7 +2394,7 @@ msgid "Message from server: {0}"
msgstr ""
#: src/Navigation.tsx:115
-#: src/view/screens/Moderation.tsx:64
+#: src/view/screens/Moderation.tsx:66
#: src/view/screens/Settings/index.tsx:625
#: src/view/shell/desktop/LeftNav.tsx:397
#: src/view/shell/Drawer.tsx:511
@@ -2329,7 +2402,7 @@ msgstr ""
msgid "Moderation"
msgstr "ŠŠ¾Š“ŠµŃŠ°ŃŃŃ"
-#: src/view/com/lists/ListCard.tsx:92
+#: src/view/com/lists/ListCard.tsx:93
#: src/view/com/modals/UserAddRemoveLists.tsx:206
msgid "Moderation list by {0}"
msgstr ""
@@ -2338,7 +2411,7 @@ msgstr ""
msgid "Moderation list by <0/>"
msgstr ""
-#: src/view/com/lists/ListCard.tsx:90
+#: src/view/com/lists/ListCard.tsx:91
#: src/view/com/modals/UserAddRemoveLists.tsx:204
#: src/view/screens/ProfileList.tsx:772
msgid "Moderation list by you"
@@ -2352,7 +2425,7 @@ msgstr ""
msgid "Moderation list updated"
msgstr ""
-#: src/view/screens/Moderation.tsx:95
+#: src/view/screens/Moderation.tsx:114
msgid "Moderation lists"
msgstr "Š”ŠæŠøŃŠŗŠø Š“Š»Ń Š¼Š¾Š“ŠµŃŠ°ŃŃŃ"
@@ -2373,13 +2446,13 @@ msgstr ""
msgid "More feeds"
msgstr "ŠŃŠ»ŃŃŠµ ŃŃŃŃŃŠ¾Šŗ"
-#: src/view/com/profile/ProfileHeader.tsx:522
-#: src/view/screens/ProfileFeed.tsx:362
-#: src/view/screens/ProfileList.tsx:616
+#: src/view/com/profile/ProfileHeader.tsx:523
+#: src/view/screens/ProfileFeed.tsx:363
+#: src/view/screens/ProfileList.tsx:617
msgid "More options"
msgstr "ŠŠ¾Š“Š°ŃŠŗŠ¾Š²Ń опŃŃŃ"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:270
+#: src/view/com/util/forms/PostDropdownBtn.tsx:315
msgid "More post options"
msgstr ""
@@ -2387,35 +2460,71 @@ msgstr ""
msgid "Most-liked replies first"
msgstr "ŠŠ° ŠŗŃŠ»ŃŠŗŃŃŃŃ Š²ŠæŠ¾Š“Š¾Š±Š°Š½Ń"
-#: src/view/com/profile/ProfileHeader.tsx:326
+#: src/view/com/auth/create/Step2.tsx:122
+msgid "Must be at least 3 characters"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:253
+msgid "Mute"
+msgstr ""
+
+#: src/components/TagMenu/index.web.tsx:91
+msgid "Mute {truncatedTag}"
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:327
msgid "Mute Account"
msgstr "ŠŠ³Š½Š¾ŃŃŠ²Š°ŃŠø Š¾Š±Š»ŃŠŗŠ¾Š²ŠøŠ¹ запиŃ"
-#: src/view/screens/ProfileList.tsx:543
+#: src/view/screens/ProfileList.tsx:544
msgid "Mute accounts"
msgstr "ŠŠ³Š½Š¾ŃŃŠ²Š°ŃŠø Š¾Š±Š»ŃŠŗŠ¾Š²Ń Š·Š°ŠæŠøŃŠø"
-#: src/view/screens/ProfileList.tsx:490
+#: src/components/TagMenu/index.tsx:211
+msgid "Mute all {tag} posts"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:131
+msgid "Mute in tags only"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:116
+msgid "Mute in text & tags"
+msgstr ""
+
+#: src/view/screens/ProfileList.tsx:491
msgid "Mute list"
msgstr "ŠŠ³Š½Š¾ŃŃŠ²Š°ŃŠø ŃŠæŠøŃŠ¾Šŗ"
-#: src/view/screens/ProfileList.tsx:274
+#: src/view/screens/ProfileList.tsx:275
msgid "Mute these accounts?"
msgstr "ŠŠ³Š½Š¾ŃŃŠ²Š°ŃŠø ŃŃ Š¾Š±Š»ŃŠŗŠ¾Š²Ń Š·Š°ŠæŠøŃŠø?"
-#: src/view/screens/ProfileList.tsx:278
+#: src/view/screens/ProfileList.tsx:279
msgid "Mute this List"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:171
+#: src/components/dialogs/MutedWords.tsx:109
+msgid "Mute this word in post text and tags"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:124
+msgid "Mute this word in tags only"
+msgstr ""
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:202
msgid "Mute thread"
msgstr "ŠŠ³Š½Š¾ŃŃŠ²Š°ŃŠø поŃŃ"
-#: src/view/com/lists/ListCard.tsx:101
+#: src/view/com/util/forms/PostDropdownBtn.tsx:216
+msgid "Mute words & tags"
+msgstr ""
+
+#: src/view/com/lists/ListCard.tsx:102
msgid "Muted"
msgstr ""
-#: src/view/screens/Moderation.tsx:109
+#: src/view/screens/Moderation.tsx:128
msgid "Muted accounts"
msgstr "ŠŠ³Š½Š¾ŃŠ¾Š²Š°Š½Ń Š¾Š±Š»ŃŠŗŠ¾Š²Ń Š·Š°ŠæŠøŃŠø"
@@ -2428,7 +2537,11 @@ msgstr "ŠŠ³Š½Š¾ŃŠ¾Š²Š°Š½Ń Š¾Š±Š»ŃŠŗŠ¾Š²Ń Š·Š°ŠæŠøŃŠø"
msgid "Muted accounts have their posts removed from your feed and from your notifications. Mutes are completely private."
msgstr "ŠŠ³Š½Š¾ŃŠ¾Š²Š°Š½Ń Š¾Š±Š»ŃŠŗŠ¾Š²Ń Š·Š°ŠæŠøŃŠø Š°Š²ŃŠ¾Š¼Š°ŃŠøŃŠ½Š¾ вилŃŃŠ°ŃŃŃŃŃ ŃŠ· Š²Š°ŃŠ¾Ń ŃŃŃŃŃŠŗŠø ŃŠ° ŃŠæŠ¾Š²ŃŃŠµŠ½Ń. ŠŠ³Š½Š¾ŃŃŠ²Š°Š½Š½Ń Ń ŠæŠ¾Š²Š½ŃŃŃŃ ŠæŃŠøŠ²Š°Ńним."
-#: src/view/screens/ProfileList.tsx:276
+#: src/view/screens/Moderation.tsx:100
+msgid "Muted words & tags"
+msgstr ""
+
+#: src/view/screens/ProfileList.tsx:277
msgid "Muting is private. Muted accounts can interact with you, but you will not see their posts or receive notifications from them."
msgstr "ŠŠ³Š½Š¾ŃŃŠ²Š°Š½Š½Ń Ń ŠæŃŠøŠ²Š°Ńним. ŠŠ³Š½Š¾ŃŠ¾Š²Š°Š½Ń ŠŗŠ¾ŃŠøŃŃŃŠ²Š°ŃŃ Š¼Š¾Š¶ŃŃŃ Š²Š·Š°ŃŠ¼Š¾Š“ŃŃŃŠø Š· вами, але ви не Š±Š°ŃŠøŃŠøŠ¼ŠµŃе ŃŃ
поŃŃŠø Ń Š½Šµ оŃŃŠøŠ¼ŃŠ²Š°ŃŠøŠ¼ŠµŃе Š²ŃŠ“ ниŃ
ŃŠæŠ¾Š²ŃŃŠµŠ½Ń."
@@ -2440,7 +2553,7 @@ msgstr "ŠŠ³Š½Š¾ŃŃŠ²Š°Š½Š½Ń Ń ŠæŃŠøŠ²Š°Ńним. ŠŠ³Š½Š¾ŃŠ¾Š²Š°Š½Ń ŠŗŠ¾
msgid "My Birthday"
msgstr "ŠŃй Š“ŠµŠ½Ń Š½Š°ŃŠ¾Š“женнŃ"
-#: src/view/screens/Feeds.tsx:419
+#: src/view/screens/Feeds.tsx:663
msgid "My Feeds"
msgstr "ŠŠ¾Ń ŃŃŃŃŃŠŗŠø"
@@ -2495,6 +2608,10 @@ msgstr "ŠŃколи не вŃŃŠ°ŃŠ°Š¹ŃŠµ ГоŃŃŃŠæ Š“о Š²Š°ŃŠøŃ
Ган
msgid "Never lose access to your followers or data."
msgstr ""
+#: src/components/dialogs/MutedWords.tsx:244
+msgid "Nevermind"
+msgstr ""
+
#: src/view/screens/Lists.tsx:76
msgctxt "action"
msgid "New"
@@ -2516,17 +2633,17 @@ msgstr ""
msgid "New Password"
msgstr ""
-#: src/view/com/feeds/FeedPage.tsx:201
+#: src/view/com/feeds/FeedPage.tsx:126
msgctxt "action"
msgid "New post"
msgstr ""
-#: src/view/screens/Feeds.tsx:581
+#: src/view/screens/Feeds.tsx:555
#: src/view/screens/Notifications.tsx:168
#: src/view/screens/Profile.tsx:382
-#: src/view/screens/ProfileFeed.tsx:432
-#: src/view/screens/ProfileList.tsx:195
-#: src/view/screens/ProfileList.tsx:223
+#: src/view/screens/ProfileFeed.tsx:433
+#: src/view/screens/ProfileList.tsx:196
+#: src/view/screens/ProfileList.tsx:224
#: src/view/shell/desktop/LeftNav.tsx:248
msgid "New post"
msgstr "ŠŠ¾Š²ŠøŠ¹ поŃŃ"
@@ -2552,7 +2669,7 @@ msgstr "Š”ŠæŠ¾ŃŠ°ŃŠŗŃ Š½Š°Š¹Š½Š¾Š²ŃŃŃ"
msgid "News"
msgstr ""
-#: src/view/com/auth/create/CreateAccount.tsx:161
+#: src/view/com/auth/create/CreateAccount.tsx:172
#: src/view/com/auth/login/ForgotPasswordForm.tsx:182
#: src/view/com/auth/login/ForgotPasswordForm.tsx:192
#: src/view/com/auth/login/LoginForm.tsx:291
@@ -2573,10 +2690,10 @@ msgstr ""
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/PreferencesFollowingFeed.tsx:129
+#: src/view/screens/PreferencesFollowingFeed.tsx:200
+#: src/view/screens/PreferencesFollowingFeed.tsx:235
+#: src/view/screens/PreferencesFollowingFeed.tsx:272
#: src/view/screens/PreferencesThreads.tsx:106
#: src/view/screens/PreferencesThreads.tsx:129
msgid "No"
@@ -2587,7 +2704,7 @@ msgstr "ŠŃ"
msgid "No description"
msgstr "ŠŠæŠøŃ Š²ŃŠ“ŃŃŃŠ½Ńй"
-#: src/view/com/profile/ProfileHeader.tsx:169
+#: src/view/com/profile/ProfileHeader.tsx:170
msgid "No longer following {0}"
msgstr ""
@@ -2600,7 +2717,7 @@ msgstr ""
msgid "No result"
msgstr "Š ŠµŠ·ŃŠ»ŃŃŠ°ŃŠø Š²ŃŠ“ŃŃŃŠ½Ń"
-#: src/view/screens/Feeds.tsx:524
+#: src/view/screens/Feeds.tsx:495
msgid "No results found for \"{query}\""
msgstr "ŠŃŃŠ¾Š³Š¾ не знайГено за Š·Š°ŠæŠøŃом Ā«{query}Ā»"
@@ -2610,8 +2727,8 @@ msgstr "ŠŃŃŠ¾Š³Š¾ не знайГено за Š·Š°ŠæŠøŃом Ā«{query}Ā»"
#~ msgstr ""
#: src/view/com/modals/ListAddRemoveUsers.tsx:127
-#: src/view/screens/Search/Search.tsx:280
-#: src/view/screens/Search/Search.tsx:308
+#: src/view/screens/Search/Search.tsx:281
+#: src/view/screens/Search/Search.tsx:309
msgid "No results found for {query}"
msgstr "ŠŃŃŠ¾Š³Š¾ не знайГено за Š·Š°ŠæŠøŃом Ā«{query}Ā»"
@@ -2645,7 +2762,7 @@ msgstr ""
#~ 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:233
+#: src/view/screens/Moderation.tsx:252
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, але ŃŠ½ŃŃ Š·Š°ŃŃŠ¾ŃŃŠ½ŠŗŠø можŃŃŃ ŃŃŠ¾Š³Š¾ не ГоŃŃŠøŠ¼ŃŠ²Š°ŃŠøŃŃ. ŠŠ°Ń вмŃŃŃ Š²ŃŠµ ŃŠµ може бŃŃŠø показаний Š²ŃŠ“Š²ŃŠ“ŃŠ²Š°Ńам без Š¾Š±Š»Ńкового запиŃŃ ŃŠ½Ńими заŃŃŠ¾ŃŃŠ½ŠŗŠ°Š¼Šø Ń Š²ŠµŠ±ŃŠ°Š¹Ńами."
@@ -2653,7 +2770,7 @@ msgstr "ŠŃимŃŃŠŗŠ°: Bluesky Ń Š²ŃŠ“ŠŗŃŠøŃŠ¾Ń Ń ŠæŃŠ±Š»ŃŃŠ½Š¾Ń м
#~ msgid "Note: Third-party apps that display Bluesky content may not respect this setting."
#~ msgstr ""
-#: src/Navigation.tsx:447
+#: src/Navigation.tsx:450
#: src/view/screens/Notifications.tsx:124
#: src/view/screens/Notifications.tsx:148
#: src/view/shell/bottom-bar/BottomBar.tsx:205
@@ -2687,7 +2804,7 @@ msgstr "Š”ŠæŠ¾ŃŠ°ŃŠŗŃ Š½Š°Š¹Š“Š°Š²Š½ŃŃŃ"
msgid "Onboarding reset"
msgstr ""
-#: src/view/com/composer/Composer.tsx:375
+#: src/view/com/composer/Composer.tsx:382
msgid "One or more images is missing alt text."
msgstr "ŠŠ»Ń оГного або ŠŗŃŠ»ŃкоŃ
Š·Š¾Š±ŃŠ°Š¶ŠµŠ½Ń Š²ŃŠ“ŃŃŃŠ½Ńй алŃŃŠµŃŠ½Š°ŃŠøŠ²Š½ŠøŠ¹ ŃŠµŠŗŃŃ."
@@ -2704,8 +2821,12 @@ msgstr ""
msgid "Open"
msgstr ""
-#: src/view/com/composer/Composer.tsx:470
-#: src/view/com/composer/Composer.tsx:471
+#: src/view/screens/Moderation.tsx:75
+msgid "Open content filtering settings"
+msgstr ""
+
+#: src/view/com/composer/Composer.tsx:477
+#: src/view/com/composer/Composer.tsx:478
msgid "Open emoji picker"
msgstr "ŠŠ¼Š¾Š“жŃ"
@@ -2713,7 +2834,11 @@ msgstr "ŠŠ¼Š¾Š“жŃ"
msgid "Open links with in-app browser"
msgstr ""
-#: src/view/com/pager/FeedsTabBarMobile.tsx:87
+#: src/view/screens/Moderation.tsx:92
+msgid "Open muted words settings"
+msgstr ""
+
+#: src/view/com/home/HomeHeaderLayoutMobile.tsx:49
msgid "Open navigation"
msgstr "ŠŃŠ“ŠŗŃŠøŃŠø Š½Š°Š²ŃŠ³Š°ŃŃŃ"
@@ -2749,7 +2874,7 @@ msgstr "ŠŃŠ“ŠŗŃŠøŠ²Š°Ń налаŃŃŃŠ²Š°Š½Š½Ń мов"
msgid "Opens device photo gallery"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:419
+#: src/view/com/profile/ProfileHeader.tsx:420
msgid "Opens editor for profile display name, avatar, background image, and description"
msgstr ""
@@ -2757,11 +2882,11 @@ msgstr ""
msgid "Opens external embeds settings"
msgstr "ŠŃŠ“ŠŗŃŠøŠ²Š°Ń налаŃŃŃŠ²Š°Š½Š½Ń зовнŃŃŠ½ŃŃ
Š²Š±ŃŠ“ŃŠ²Š°Š½Ń"
-#: src/view/com/profile/ProfileHeader.tsx:574
+#: src/view/com/profile/ProfileHeader.tsx:575
msgid "Opens followers list"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:593
+#: src/view/com/profile/ProfileHeader.tsx:594
msgid "Opens following list"
msgstr ""
@@ -2789,7 +2914,8 @@ msgstr "ŠŃŠ“ŠŗŃŠøŠ²Š°Ń налаŃŃŃŠ²Š°Š½Š½Ń Š¼Š¾Š“ŠµŃŠ°ŃŃŃ"
msgid "Opens password reset form"
msgstr ""
-#: src/view/screens/Feeds.tsx:357
+#: src/view/com/home/HomeHeaderLayout.web.tsx:60
+#: src/view/screens/Feeds.tsx:356
msgid "Opens screen to edit Saved Feeds"
msgstr ""
@@ -2849,8 +2975,8 @@ msgstr "Š”ŃŠ¾ŃŃŠ½ŠŗŃ не знайГено"
msgid "Page Not Found"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:210
-#: src/view/com/auth/create/Step1.tsx:220
+#: src/view/com/auth/create/Step1.tsx:214
+#: src/view/com/auth/create/Step1.tsx:224
#: src/view/com/auth/login/LoginForm.tsx:226
#: src/view/com/auth/login/SetNewPasswordForm.tsx:161
#: src/view/com/modals/DeleteAccount.tsx:202
@@ -2886,15 +3012,15 @@ msgid "Pets"
msgstr ""
#: src/view/com/auth/create/Step2.tsx:183
-msgid "Phone number"
-msgstr ""
+#~ msgid "Phone number"
+#~ msgstr ""
#: src/view/com/modals/SelfLabel.tsx:121
msgid "Pictures meant for adults."
msgstr "ŠŠ¾Š±ŃаженнŃ, ŠæŃŠøŠ·Š½Š°ŃŠµŠ½Ń Š“Š»Ń Š“Š¾ŃŠ¾ŃлиŃ
."
-#: src/view/screens/ProfileFeed.tsx:353
-#: src/view/screens/ProfileList.tsx:580
+#: src/view/screens/ProfileFeed.tsx:354
+#: src/view/screens/ProfileList.tsx:581
msgid "Pin to home"
msgstr ""
@@ -2915,14 +3041,18 @@ msgstr "ŠŃŠ“ŃŠ²Š¾ŃŠøŃŠø Š²ŃŠ“ео"
msgid "Plays the GIF"
msgstr "ŠŃŠ“ŃŠ²Š¾ŃŃŃ GIF"
-#: src/view/com/auth/create/state.ts:177
+#: src/view/com/auth/create/state.ts:124
msgid "Please choose your handle."
msgstr "ŠŃŠ“Ń Š»Š°ŃŠŗŠ°, обеŃŃŃŃ ŠæŃŠµŠ²Š“Š¾Š½ŃŠ¼."
-#: src/view/com/auth/create/state.ts:160
+#: src/view/com/auth/create/state.ts:117
msgid "Please choose your password."
msgstr "ŠŃŠ“Ń Š»Š°ŃŠŗŠ°, обеŃŃŃŃ Š²Š°Ń ŠæŠ°ŃŠ¾Š»Ń."
+#: src/view/com/auth/create/state.ts:131
+msgid "Please complete the verification captcha."
+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 "ŠŃŠ“Ń Š»Š°ŃŠŗŠ°, ŠæŃŠ“ŃŠ²ŠµŃŠ“ŃŃŃ Š²Š°ŃŃ ŠµŠ»ŠµŠŗŃŃŠ¾Š½Š½Ń Š°Š“ŃŠµŃŃ, пеŃŃ Š½ŃŠ¶ Š·Š¼ŃŠ½ŠøŃŠø ŃŃ. Це ŃŠøŠ¼ŃŠ°ŃŠ¾Š²Š° вимога ŠæŃŠ“ ŃŠ°Ń Š“Š¾Š“Š°Š²Š°Š½Š½Ń ŃŠ½ŃŃŃŃŠ¼ŠµŠ½ŃŃŠ² Š¾Š½Š¾Š²Š»ŠµŠ½Š½Ń ŠµŠ»ŠµŠŗŃŃŠ¾Š½Š½Š¾Ń Š°Š“ŃŠµŃŠø, Š½ŠµŠ·Š°Š±Š°ŃŠ¾Š¼ ŃŃ Š²ŠøŠ“Š°Š»ŃŃŃ."
@@ -2932,22 +3062,22 @@ msgid "Please enter a name for your app password. All spaces is not allowed."
msgstr ""
#: src/view/com/auth/create/Step2.tsx:206
-msgid "Please enter a phone number that can receive SMS text messages."
-msgstr ""
+#~ msgid "Please enter a phone number that can receive SMS text messages."
+#~ msgstr ""
#: src/view/com/modals/AddAppPasswords.tsx:145
msgid "Please enter a unique name for this App Password or use our randomly generated one."
msgstr "ŠŃŠ“Ń Š»Š°ŃŠŗŠ°, ввеГŃŃŃ ŃŠ½ŃŠŗŠ°Š»ŃŠ½Ń Š½Š°Š·Š²Ń Š“Š»Ń ŃŃŠ¾Š³Š¾ ŠæŠ°ŃŠ¾Š»Ń або Š²ŠøŠŗŠ¾ŃŠøŃŃŠ¾Š²ŃŠ¹ŃŠµ наŃŃ Š²ŠøŠæŠ°Š“ŠŗŠ¾Š²Š¾ Š·Š³ŠµŠ½ŠµŃŠ¾Š²Š°Š½Ń."
#: src/view/com/auth/create/state.ts:170
-msgid "Please enter the code you received by SMS."
-msgstr ""
+#~ msgid "Please enter the code you received by SMS."
+#~ msgstr ""
#: src/view/com/auth/create/Step2.tsx:282
-msgid "Please enter the verification code sent to {phoneNumberFormatted}."
-msgstr ""
+#~ msgid "Please enter the verification code sent to {phoneNumberFormatted}."
+#~ msgstr ""
-#: src/view/com/auth/create/state.ts:146
+#: src/view/com/auth/create/state.ts:103
msgid "Please enter your email."
msgstr "ŠŃŠ“Ń Š»Š°ŃŠŗŠ°, ввеГŃŃŃ Š°Š“ŃŠµŃŃ ŠµŠ». поŃŃŠø."
@@ -2969,7 +3099,7 @@ msgstr "ŠŃŠ“Ń Š»Š°ŃŠŗŠ°, вкажŃŃŃ ŃŠ¾Š¼Ń ви вважаŃŃŠµ ŃŠ¾
msgid "Please Verify Your Email"
msgstr ""
-#: src/view/com/composer/Composer.tsx:215
+#: src/view/com/composer/Composer.tsx:222
msgid "Please wait for your link card to finish loading"
msgstr "ŠŃŠ“Ń Š»Š°ŃŠŗŠ°, Š·Š°ŃŠµŠŗŠ°Š¹Ńе Гоки завеŃŃŠøŃŃŃŃ ŃŃŠ²Š¾ŃŠµŠ½Š½Ń ŠæŠ¾ŠæŠµŃŠµŠ“Š½ŃŠ¾Š³Š¾ ŠæŠµŃŠµŠ³Š»ŃŠ“Ń Š“Š»Ń ŠæŠ¾ŃŠøŠ»Š°Š½Š½Ń"
@@ -2981,13 +3111,13 @@ msgstr ""
msgid "Porn"
msgstr ""
-#: src/view/com/composer/Composer.tsx:350
-#: src/view/com/composer/Composer.tsx:358
+#: src/view/com/composer/Composer.tsx:357
+#: src/view/com/composer/Composer.tsx:365
msgctxt "action"
msgid "Post"
msgstr ""
-#: src/view/com/post-thread/PostThread.tsx:246
+#: src/view/com/post-thread/PostThread.tsx:303
msgctxt "description"
msgid "Post"
msgstr ""
@@ -2998,7 +3128,7 @@ msgstr ""
#~ msgid "Post"
#~ msgstr "ŠŠ¾ŃŃ"
-#: src/view/com/post-thread/PostThreadItem.tsx:174
+#: src/view/com/post-thread/PostThreadItem.tsx:175
msgid "Post by {0}"
msgstr ""
@@ -3008,11 +3138,11 @@ msgstr ""
msgid "Post by @{0}"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:84
+#: src/view/com/util/forms/PostDropdownBtn.tsx:90
msgid "Post deleted"
msgstr ""
-#: src/view/com/post-thread/PostThread.tsx:398
+#: src/view/com/post-thread/PostThread.tsx:462
msgid "Post hidden"
msgstr "ŠŠ¾ŃŃ ŠæŃŠøŃ
овано"
@@ -3024,14 +3154,22 @@ msgstr "ŠŠ¾Š²Š° поŃŃŃ"
msgid "Post Languages"
msgstr "ŠŠ¾Š²Šø поŃŃŃ"
-#: src/view/com/post-thread/PostThread.tsx:450
+#: src/view/com/post-thread/PostThread.tsx:514
msgid "Post not found"
msgstr "ŠŠ¾ŃŃ Š½Šµ знайГено"
+#: src/components/TagMenu/index.tsx:257
+msgid "posts"
+msgstr ""
+
#: src/view/screens/Profile.tsx:180
msgid "Posts"
msgstr "ŠŠ¾ŃŃŠø"
+#: src/components/dialogs/MutedWords.tsx:77
+msgid "Posts can be muted based on their text, their tags, or both."
+msgstr ""
+
#: src/view/com/posts/FeedErrorMessage.tsx:64
msgid "Posts hidden"
msgstr ""
@@ -3053,7 +3191,7 @@ msgid "Prioritize Your Follows"
msgstr "ŠŃŃŠ¾ŃŠøŃŠµŠ·ŃŠ²Š°ŃŠø ваŃŃ ŠæŃŠ“ŠæŠøŃŠŗŠø"
#: src/view/screens/Settings/index.tsx:632
-#: src/view/shell/desktop/RightNav.tsx:80
+#: src/view/shell/desktop/RightNav.tsx:72
msgid "Privacy"
msgstr "ŠŠ¾Š½ŃŃŠ“енŃŃŠ¹Š½ŃŃŃŃ"
@@ -3096,11 +3234,11 @@ msgstr "ŠŃблŃŃŠ½Ń, ŠæŠ¾ŃŠøŃŃŠ²Š°Š½Ń ŃŠæŠøŃŠŗŠø ŠŗŠ¾ŃŠøŃŃŃŠ²Š°Ń
msgid "Public, shareable lists which can drive feeds."
msgstr "ŠŃблŃŃŠ½Ń, ŠæŠ¾ŃŠøŃŃŠ²Š°Š½Ń ŃŠæŠøŃŠŗŠø Š“Š»Ń ŃŃŠ²Š¾ŃŠµŠ½Š½Ń ŃŃŃŃŃŠ¾Šŗ."
-#: src/view/com/composer/Composer.tsx:335
+#: src/view/com/composer/Composer.tsx:342
msgid "Publish post"
msgstr ""
-#: src/view/com/composer/Composer.tsx:335
+#: src/view/com/composer/Composer.tsx:342
msgid "Publish reply"
msgstr ""
@@ -3143,6 +3281,7 @@ msgstr "Š ŠµŠŗŠ¾Š¼ŠµŠ½Š“Š¾Š²Š°Š½Ń ŃŃŃŃŃŠŗŠø"
msgid "Recommended Users"
msgstr "Š ŠµŠŗŠ¾Š¼ŠµŠ½Š“Š¾Š²Š°Š½Ń ŠŗŠ¾ŃŠøŃŃŃŠ²Š°ŃŃ"
+#: src/components/dialogs/MutedWords.tsx:249
#: src/view/com/modals/ListAddRemoveUsers.tsx:264
#: src/view/com/modals/SelfLabel.tsx:83
#: src/view/com/modals/UserAddRemoveLists.tsx:219
@@ -3151,7 +3290,7 @@ msgstr "Š ŠµŠŗŠ¾Š¼ŠµŠ½Š“Š¾Š²Š°Š½Ń ŠŗŠ¾ŃŠøŃŃŃŠ²Š°ŃŃ"
msgid "Remove"
msgstr "ŠŠøŠ»ŃŃŠøŃŠø"
-#: src/view/com/feeds/FeedSourceCard.tsx:106
+#: src/view/com/feeds/FeedSourceCard.tsx:108
msgid "Remove {0} from my feeds?"
msgstr "ŠŠøŠ»ŃŃŠøŃŠø {0} Š·Ń Š·Š±ŠµŃŠµŠ¶ŠµŠ½ŠøŃ
ŃŃŃŃŃŠ¾Šŗ?"
@@ -3164,11 +3303,11 @@ msgstr "ŠŠøŠ»ŃŃŠøŃŠø Š¾Š±Š»ŃŠŗŠ¾Š²ŠøŠ¹ запиŃ"
msgid "Remove feed"
msgstr "ŠŠøŠ»ŃŃŠøŃŠø ŃŃŃŃŃŠŗŃ"
-#: src/view/com/feeds/FeedSourceCard.tsx:105
-#: src/view/com/feeds/FeedSourceCard.tsx:167
-#: src/view/com/feeds/FeedSourceCard.tsx:172
-#: src/view/com/feeds/FeedSourceCard.tsx:243
-#: src/view/screens/ProfileFeed.tsx:272
+#: src/view/com/feeds/FeedSourceCard.tsx:107
+#: src/view/com/feeds/FeedSourceCard.tsx:169
+#: src/view/com/feeds/FeedSourceCard.tsx:174
+#: src/view/com/feeds/FeedSourceCard.tsx:245
+#: src/view/screens/ProfileFeed.tsx:273
msgid "Remove from my feeds"
msgstr "ŠŠøŠ»ŃŃŠøŃŠø Š· моŃŃ
ŃŃŃŃŃŠ¾Šŗ"
@@ -3180,11 +3319,15 @@ msgstr "ŠŠøŠ»ŃŃŠøŃŠø Š·Š¾Š±ŃŠ°Š¶ŠµŠ½Š½Ń"
msgid "Remove image preview"
msgstr "ŠŠøŠ»ŃŃŠøŃŠø ŠæŠ¾ŠæŠµŃŠµŠ“Š½ŃŠ¹ ŠæŠµŃŠµŠ³Š»ŃŠ“ Š·Š¾Š±ŃŠ°Š¶ŠµŠ½Š½Ń"
+#: src/components/dialogs/MutedWords.tsx:294
+msgid "Remove mute word from your list"
+msgstr ""
+
#: src/view/com/modals/Repost.tsx:47
msgid "Remove repost"
msgstr ""
-#: src/view/com/feeds/FeedSourceCard.tsx:173
+#: src/view/com/feeds/FeedSourceCard.tsx:175
msgid "Remove this feed from my feeds?"
msgstr "ŠŠøŠ»ŃŃŠøŃŠø ŃŃ ŃŃŃŃŃŠŗŃ Š· Š²Š°ŃŠøŃ
ŃŃŃŃŃŠ¾Šŗ?"
@@ -3197,8 +3340,8 @@ msgstr "ŠŠøŠ»ŃŃŠøŃŠø ŃŃ ŃŃŃŃŃŠŗŃ Š·Ń Š·Š±ŠµŃŠµŠ¶ŠµŠ½ŠøŃ
ŃŃŃŃ
msgid "Removed from list"
msgstr "ŠŠøŠ»ŃŃŠµŠ½Š¾ Š·Ń ŃŠæŠøŃŠŗŃ"
-#: src/view/com/feeds/FeedSourceCard.tsx:111
-#: src/view/com/feeds/FeedSourceCard.tsx:178
+#: src/view/com/feeds/FeedSourceCard.tsx:113
+#: src/view/com/feeds/FeedSourceCard.tsx:180
msgid "Removed from my feeds"
msgstr ""
@@ -3214,16 +3357,16 @@ msgstr "ŠŃŠ“ŠæŠ¾Š²ŃŠ“Ń"
msgid "Replies to this thread are disabled"
msgstr "ŠŃŠ“ŠæŠ¾Š²ŃŠ“Ń Š“Š¾ ŃŃŠ¾Š³Š¾ поŃŃŃ Š²ŠøŠ¼ŠŗŠ½ŠµŠ½Š¾"
-#: src/view/com/composer/Composer.tsx:348
+#: src/view/com/composer/Composer.tsx:355
msgctxt "action"
msgid "Reply"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:144
+#: src/view/screens/PreferencesFollowingFeed.tsx:144
msgid "Reply Filters"
msgstr "ŠÆŠŗŃ Š²ŃŠ“ŠæŠ¾Š²ŃŠ“Ń ŠæŠ¾ŠŗŠ°Š·ŃŠ²Š°ŃŠø"
-#: src/view/com/post/Post.tsx:166
+#: src/view/com/post/Post.tsx:167
#: src/view/com/posts/FeedItem.tsx:287
msgctxt "description"
msgid "Reply to <0/>"
@@ -3233,20 +3376,20 @@ msgstr ""
msgid "Report {collectionName}"
msgstr "ŠŠ¾ŃŠŗŠ°ŃŠ¶ŠøŃŠøŃŃ Š½Š° {collectionName}"
-#: src/view/com/profile/ProfileHeader.tsx:360
+#: src/view/com/profile/ProfileHeader.tsx:361
msgid "Report Account"
msgstr "ŠŠ¾ŃŠŗŠ°ŃŠ¶ŠøŃŠøŃŃ Š½Š° Š¾Š±Š»ŃŠŗŠ¾Š²ŠøŠ¹ запиŃ"
-#: src/view/screens/ProfileFeed.tsx:292
+#: src/view/screens/ProfileFeed.tsx:293
msgid "Report feed"
msgstr "ŠŠ¾ŃŠŗŠ°ŃŠ¶ŠøŃŠøŃŃ Š½Š° ŃŃŃŃŃŠŗŃ"
-#: src/view/screens/ProfileList.tsx:458
+#: src/view/screens/ProfileList.tsx:459
msgid "Report List"
msgstr "ŠŠ¾ŃŠŗŠ°ŃŠ¶ŠøŃŠøŃŃ Š½Š° ŃŠæŠøŃŠ¾Šŗ"
#: src/view/com/modals/report/SendReportButton.tsx:37
-#: src/view/com/util/forms/PostDropdownBtn.tsx:210
+#: src/view/com/util/forms/PostDropdownBtn.tsx:255
msgid "Report post"
msgstr "ŠŠ¾ŃŠŗŠ°ŃŠ¶ŠøŃŠøŃŃ Š½Š° поŃŃ"
@@ -3291,7 +3434,7 @@ msgstr ""
msgid "reposted your post"
msgstr ""
-#: src/view/com/post-thread/PostThreadItem.tsx:187
+#: src/view/com/post-thread/PostThreadItem.tsx:188
msgid "Reposts of this post"
msgstr ""
@@ -3301,8 +3444,8 @@ msgid "Request Change"
msgstr "ŠŠ¼ŃŠ½ŠøŃŠø"
#: src/view/com/auth/create/Step2.tsx:219
-msgid "Request code"
-msgstr ""
+#~ msgid "Request code"
+#~ msgstr ""
#: src/view/com/modals/ChangePassword.tsx:239
#: src/view/com/modals/ChangePassword.tsx:241
@@ -3317,7 +3460,7 @@ msgstr ""
msgid "Require alt text before posting"
msgstr "ŠŠøŠ¼Š°Š³Š°ŃŠø алŃŃŠµŃŠ½Š°ŃŠøŠ²Š½ŠøŠ¹ ŃŠµŠŗŃŃ Š“Š¾ Š·Š¾Š±ŃŠ°Š¶ŠµŠ½Ń ŠæŠµŃŠµŠ“ ŠæŃŠ±Š»ŃкаŃŃŃŃ"
-#: src/view/com/auth/create/Step1.tsx:149
+#: src/view/com/auth/create/Step1.tsx:153
msgid "Required for this provider"
msgstr "ŠŠøŠ¼Š°Š³Š°ŃŃŃŃŃ ŃŠøŠ¼ Ń
оŃŃŠøŠ½Š³-ŠæŃŠ¾Š²Š°Š¹Š“ŠµŃŠ¾Š¼"
@@ -3369,9 +3512,8 @@ msgstr ""
#: src/screens/Onboarding/StepInterests/index.tsx:221
#: src/screens/Onboarding/StepInterests/index.tsx:224
-#: src/view/com/auth/create/CreateAccount.tsx:170
-#: src/view/com/auth/create/CreateAccount.tsx:175
-#: src/view/com/auth/create/Step2.tsx:255
+#: src/view/com/auth/create/CreateAccount.tsx:181
+#: src/view/com/auth/create/CreateAccount.tsx:186
#: src/view/com/auth/login/LoginForm.tsx:268
#: src/view/com/auth/login/LoginForm.tsx:271
#: src/view/com/util/error/ErrorMessage.tsx:55
@@ -3384,16 +3526,16 @@ msgstr "ŠŠ¾Š²ŃŠ¾ŃŠøŃŠø ŃŠæŃобŃ"
#~ msgstr ""
#: src/view/com/auth/create/Step2.tsx:247
-msgid "Retry."
-msgstr ""
+#~ msgid "Retry."
+#~ msgstr ""
#: src/view/screens/ProfileList.tsx:898
msgid "Return to previous page"
msgstr ""
#: src/view/shell/desktop/RightNav.tsx:55
-msgid "SANDBOX. Posts and accounts are not permanent."
-msgstr ""
+#~ msgid "SANDBOX. Posts and accounts are not permanent."
+#~ msgstr ""
#: src/view/com/lightbox/Lightbox.tsx:132
#: src/view/com/modals/CreateOrEditList.tsx:345
@@ -3406,7 +3548,7 @@ msgstr ""
#: src/view/com/modals/ChangeHandle.tsx:173
#: src/view/com/modals/CreateOrEditList.tsx:337
#: src/view/com/modals/EditProfile.tsx:224
-#: src/view/screens/ProfileFeed.tsx:345
+#: src/view/screens/ProfileFeed.tsx:346
msgid "Save"
msgstr "ŠŠ±ŠµŃŠµŠ³ŃŠø"
@@ -3450,14 +3592,14 @@ msgstr ""
msgid "Scroll to top"
msgstr ""
-#: src/Navigation.tsx:437
+#: src/Navigation.tsx:440
#: src/view/com/auth/LoggedOut.tsx:122
#: src/view/com/modals/ListAddRemoveUsers.tsx:75
#: src/view/com/util/forms/SearchInput.tsx:67
#: src/view/com/util/forms/SearchInput.tsx:79
-#: src/view/screens/Search/Search.tsx:418
-#: src/view/screens/Search/Search.tsx:645
-#: src/view/screens/Search/Search.tsx:663
+#: src/view/screens/Search/Search.tsx:419
+#: src/view/screens/Search/Search.tsx:668
+#: src/view/screens/Search/Search.tsx:686
#: src/view/shell/bottom-bar/BottomBar.tsx:159
#: src/view/shell/desktop/LeftNav.tsx:324
#: src/view/shell/desktop/Search.tsx:214
@@ -3467,11 +3609,19 @@ msgstr ""
msgid "Search"
msgstr "ŠŠ¾ŃŃŠŗ"
-#: src/view/screens/Search/Search.tsx:712
+#: src/view/screens/Search/Search.tsx:735
#: src/view/shell/desktop/Search.tsx:255
msgid "Search for \"{query}\""
msgstr ""
+#: src/components/TagMenu/index.tsx:145
+msgid "Search for all posts by @{authorHandle} with tag {tag}"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:90
+msgid "Search for all posts with tag {tag}"
+msgstr ""
+
#: src/view/screens/Search/Search.tsx:390
#~ msgid "Search for posts and users."
#~ msgstr ""
@@ -3486,6 +3636,22 @@ msgstr "ŠŠ¾ŃŃŠŗ ŠŗŠ¾ŃŠøŃŃŃŠ²Š°ŃŃŠ²"
msgid "Security Step Required"
msgstr "ŠŠ¾ŃŃŃŠ±ŠµŠ½ коГ ŠæŃŠ“ŃŠ²ŠµŃГженнŃ"
+#: src/components/TagMenu/index.web.tsx:50
+msgid "See {truncatedTag} posts"
+msgstr ""
+
+#: src/components/TagMenu/index.web.tsx:67
+msgid "See {truncatedTag} posts by user"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:128
+msgid "See <0>{tag}0> posts"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:189
+msgid "See <0>{tag}0> posts by this user"
+msgstr ""
+
#: src/view/screens/SavedFeeds.tsx:163
msgid "See this guide"
msgstr ""
@@ -3510,7 +3676,7 @@ msgstr "ŠŠøŠ±ŃŠ°ŃŠø ŃŃŠ½ŃŃŃŠøŠ¹ Š¾Š±Š»ŃŠŗŠ¾Š²ŠøŠ¹ запиŃ"
msgid "Select option {i} of {numItems}"
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:99
+#: src/view/com/auth/create/Step1.tsx:103
#: src/view/com/auth/login/LoginForm.tsx:150
msgid "Select service"
msgstr "ŠŠøŠ±ŃŠ°ŃŠø Ń
оŃŃŠøŠ½Š³-ŠæŃŠ¾Š²Š°Š¹Š“ŠµŃŠ°"
@@ -3527,7 +3693,7 @@ msgstr ""
#~ msgid "Select the types of content that you want to see (or not see), and we'll handle the rest."
#~ msgstr ""
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:90
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:96
msgid "Select topical feeds to follow from the list below"
msgstr ""
@@ -3548,8 +3714,8 @@ msgid "Select your interests from the options below"
msgstr ""
#: src/view/com/auth/create/Step2.tsx:155
-msgid "Select your phone's country"
-msgstr ""
+#~ msgid "Select your phone's country"
+#~ msgstr ""
#: src/view/screens/LanguageSettings.tsx:190
msgid "Select your preferred language for translations in your feed."
@@ -3632,19 +3798,19 @@ msgstr ""
msgid "Set new password"
msgstr "ŠŠ¼Ńна ŠæŠ°ŃŠ¾Š»Ń"
-#: src/view/com/auth/create/Step1.tsx:221
+#: src/view/com/auth/create/Step1.tsx:225
msgid "Set password"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:225
+#: src/view/screens/PreferencesFollowingFeed.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
+#: src/view/screens/PreferencesFollowingFeed.tsx:122
msgid "Set this setting to \"No\" to hide all replies from your feed."
msgstr "ŠŠøŠ¼ŠŗŠ½ŃŃŃ ŃŠµ налаŃŃŃŠ²Š°Š½Š½Ń, ŃŠ¾Š± ŠæŃŠøŃ
Š¾Š²Š°ŃŠø вŃŃ Š²ŃŠ“ŠæŠ¾Š²ŃŠ“Ń Ń Š²Š°ŃŃŠ¹ ŃŃŃŃŃŃŃ."
-#: src/view/screens/PreferencesHomeFeed.tsx:191
+#: src/view/screens/PreferencesFollowingFeed.tsx:191
msgid "Set this setting to \"No\" to hide all reposts from your feed."
msgstr "ŠŠøŠ¼ŠŗŠ½ŃŃŃ ŃŠµ налаŃŃŃŠ²Š°Š½Š½Ń, ŃŠ¾Š± ŠæŃŠøŃ
Š¾Š²Š°ŃŠø вŃŃ ŃŠµŠæŠ¾ŃŃŠø Ń Š²Š°ŃŃŠ¹ ŃŃŃŃŃŃŃ."
@@ -3653,8 +3819,12 @@ msgid "Set this setting to \"Yes\" to show replies in a threaded view. This is a
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 "Š£Š²ŃŠ¼ŠŗŠ½ŃŃŃ ŃŠµ налаŃŃŃŠ²Š°Š½Š½Ń, ŃŠ¾Š± ŃŠ½Š¾Š“Ń Š±Š°ŃŠøŃŠø поŃŃŠø Š·Ń Š·Š±ŠµŃŠµŠ¶ŠµŠ½ŠøŃ
ŃŃŃŃŃŠ¾Šŗ Ń Š²Š°ŃŃŠ¹ Š“Š¾Š¼Š°ŃŠ½Ńй ŃŃŃŃŃŃŃ. Це ŠµŠŗŃŠæŠµŃŠøŠ¼ŠµŠ½ŃŠ°Š»ŃŠ½Š° ŃŃŠ½ŠŗŃŃŃ."
+#~ 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/PreferencesFollowingFeed.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/screens/Onboarding/Layout.tsx:50
msgid "Set up your account"
@@ -3676,7 +3846,7 @@ msgstr ""
#~ msgid "Sets hosting provider to {label}"
#~ msgstr ""
-#: src/view/com/auth/create/Step1.tsx:100
+#: src/view/com/auth/create/Step1.tsx:104
#: src/view/com/auth/login/LoginForm.tsx:151
msgid "Sets server for the Bluesky client"
msgstr ""
@@ -3698,13 +3868,13 @@ msgctxt "action"
msgid "Share"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:294
-#: src/view/com/util/forms/PostDropdownBtn.tsx:153
-#: src/view/screens/ProfileList.tsx:417
+#: src/view/com/profile/ProfileHeader.tsx:295
+#: src/view/com/util/forms/PostDropdownBtn.tsx:184
+#: src/view/screens/ProfileList.tsx:418
msgid "Share"
msgstr "ŠŠ¾ŃŠøŃŠøŃŠø"
-#: src/view/screens/ProfileFeed.tsx:304
+#: src/view/screens/ProfileFeed.tsx:305
msgid "Share feed"
msgstr "ŠŠ¾ŃŠøŃŠøŃŠø ŃŃŃŃŃŠŗŃ"
@@ -3720,7 +3890,7 @@ msgstr "ŠŠ¾ŃŠøŃŠøŃŠø ŃŃŃŃŃŠŗŃ"
msgid "Show"
msgstr "ŠŠ¾ŠŗŠ°Š·Š°ŃŠø"
-#: src/view/screens/PreferencesHomeFeed.tsx:68
+#: src/view/screens/PreferencesFollowingFeed.tsx:68
msgid "Show all replies"
msgstr ""
@@ -3732,21 +3902,21 @@ msgstr "ŠŃеоГно ŠæŠ¾ŠŗŠ°Š·Š°ŃŠø"
msgid "Show embeds from {0}"
msgstr "ŠŠ¾ŠŗŠ°Š·Š°ŃŠø Š²Š±ŃŠ“ŃŠ²Š°Š½Š½Ń Š· {0}"
-#: src/view/com/profile/ProfileHeader.tsx:458
+#: src/view/com/profile/ProfileHeader.tsx:459
msgid "Show follows similar to {0}"
msgstr ""
-#: src/view/com/post-thread/PostThreadItem.tsx:539
-#: src/view/com/post/Post.tsx:197
+#: src/view/com/post-thread/PostThreadItem.tsx:538
+#: src/view/com/post/Post.tsx:198
#: src/view/com/posts/FeedItem.tsx:363
msgid "Show More"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:258
+#: src/view/screens/PreferencesFollowingFeed.tsx:258
msgid "Show Posts from My Feeds"
msgstr "ŠŠ¾ŠŗŠ°Š·ŃŠ²Š°ŃŠø поŃŃŠø Š·Ń Š·Š±ŠµŃŠµŠ¶ŠµŠ½ŠøŃ
ŃŃŃŃŃŠ¾Šŗ"
-#: src/view/screens/PreferencesHomeFeed.tsx:222
+#: src/view/screens/PreferencesFollowingFeed.tsx:222
msgid "Show Quote Posts"
msgstr "ŠŠ¾ŠŗŠ°Š·ŃŠ²Š°ŃŠø ŃŠøŃŠ°ŃŠø"
@@ -3762,7 +3932,7 @@ msgstr ""
msgid "Show re-posts in Following feed"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:119
+#: src/view/screens/PreferencesFollowingFeed.tsx:119
msgid "Show Replies"
msgstr "ŠŠ¾ŠŗŠ°Š·ŃŠ²Š°ŃŠø Š²ŃŠ“ŠæŠ¾Š²ŃŠ“Ń"
@@ -3778,11 +3948,11 @@ msgstr ""
msgid "Show replies in Following feed"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:70
+#: src/view/screens/PreferencesFollowingFeed.tsx:70
msgid "Show replies with at least {value} {0}"
msgstr ""
-#: src/view/screens/PreferencesHomeFeed.tsx:188
+#: src/view/screens/PreferencesFollowingFeed.tsx:188
msgid "Show Reposts"
msgstr "ŠŠ¾ŠŗŠ°Š·ŃŠ²Š°ŃŠø ŃŠµŠæŠ¾ŃŃŠø"
@@ -3799,18 +3969,18 @@ msgstr ""
msgid "Show users"
msgstr "ŠŠ¾ŠŗŠ°Š·Š°ŃŠø ŠŗŠ¾ŃŠøŃŃŃŠ²Š°ŃŃŠ²"
-#: src/view/com/profile/ProfileHeader.tsx:461
+#: src/view/com/profile/ProfileHeader.tsx:462
msgid "Shows a list of users similar to this user."
msgstr ""
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:124
-#: src/view/com/profile/ProfileHeader.tsx:505
+#: src/view/com/profile/ProfileHeader.tsx:506
msgid "Shows posts from {0} in your feed"
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/com/auth/SplashScreen.tsx:79
#: src/view/shell/bottom-bar/BottomBar.tsx:285
#: src/view/shell/bottom-bar/BottomBar.tsx:286
#: src/view/shell/bottom-bar/BottomBar.tsx:288
@@ -3823,8 +3993,8 @@ 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
+#: src/view/com/auth/SplashScreen.tsx:82
+#: src/view/com/auth/SplashScreen.web.tsx:91
msgid "Sign In"
msgstr "Š£Š²ŃŠ¹ŃŠø"
@@ -3891,8 +4061,8 @@ msgid "Skip this flow"
msgstr ""
#: src/view/com/auth/create/Step2.tsx:82
-msgid "SMS verification"
-msgstr ""
+#~ msgid "SMS verification"
+#~ msgstr ""
#: src/screens/Onboarding/index.tsx:40
msgid "Software Dev"
@@ -3906,7 +4076,7 @@ msgstr ""
msgid "Something went wrong. Check your email and try again."
msgstr ""
-#: src/App.native.tsx:61
+#: src/App.native.tsx:63
msgid "Sorry! Your session expired. Please log in again."
msgstr ""
@@ -3955,7 +4125,7 @@ msgstr ""
msgid "Submit"
msgstr "ŠŠ°Š“ŃŃŠ»Š°ŃŠø"
-#: src/view/screens/ProfileList.tsx:607
+#: src/view/screens/ProfileList.tsx:608
msgid "Subscribe"
msgstr "ŠŃŠ“ŠæŠøŃŠ°ŃŠøŃŃ"
@@ -3964,7 +4134,7 @@ msgstr "ŠŃŠ“ŠæŠøŃŠ°ŃŠøŃŃ"
msgid "Subscribe to the {0} feed"
msgstr ""
-#: src/view/screens/ProfileList.tsx:603
+#: src/view/screens/ProfileList.tsx:604
msgid "Subscribe to this list"
msgstr "ŠŃŠ“ŠæŠøŃŠ°ŃŠøŃŃ Š½Š° ŃŠµŠ¹ ŃŠæŠøŃŠ¾Šŗ"
@@ -3972,7 +4142,7 @@ msgstr "ŠŃŠ“ŠæŠøŃŠ°ŃŠøŃŃ Š½Š° ŃŠµŠ¹ ŃŠæŠøŃŠ¾Šŗ"
#~ msgid "Subscribed"
#~ msgstr ""
-#: src/view/screens/Search/Search.tsx:373
+#: src/view/screens/Search/Search.tsx:374
msgid "Suggested Follows"
msgstr "ŠŃŠ¾ŠæŠ¾Š½Š¾Š²Š°Š½Ń ŠæŃŠ“ŠæŠøŃŠŗŠø"
@@ -4016,6 +4186,14 @@ msgstr ""
msgid "System log"
msgstr "ДиŃŃŠµŠ¼Š½ŠøŠ¹ жŃŃŠ½Š°Š»"
+#: src/components/dialogs/MutedWords.tsx:288
+msgid "tag"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:74
+msgid "Tag menu: {tag}"
+msgstr ""
+
#: src/view/com/modals/crop-image/CropImage.web.tsx:112
msgid "Tall"
msgstr "ŠŠøŃоке"
@@ -4028,7 +4206,7 @@ msgstr ""
msgid "Tech"
msgstr ""
-#: src/view/shell/desktop/RightNav.tsx:89
+#: src/view/shell/desktop/RightNav.tsx:81
msgid "Terms"
msgstr "Умови"
@@ -4039,12 +4217,20 @@ msgstr "Умови"
msgid "Terms of Service"
msgstr "Умови ŠŠøŠŗŠ¾ŃŠøŃŃŠ°Š½Š½Ń"
+#: src/components/dialogs/MutedWords.tsx:288
+msgid "text"
+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:262
+#: src/view/com/auth/create/CreateAccount.tsx:94
+msgid "That handle is already taken."
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:263
msgid "The account will be able to interact with you after unblocking."
msgstr "ŠŠ±Š»Ńковий Š·Š°ŠæŠøŃ зможе Š²Š·Š°ŃмоГŃŃŃŠø Š· вами ŠæŃŃŠ»Ń ŃŠ¾Š·Š±Š»Š¾ŠŗŃваннŃ."
@@ -4060,7 +4246,7 @@ msgstr "ŠŠ¾Š»ŃŃŠøŠŗŃ заŃ
ŠøŃŃŃ Š°Š²ŃŠ¾ŃŃŃŠŗŠ¾Š³Š¾ ŠæŃŠ°Š²Š° пеŃ
msgid "The following steps will help customize your Bluesky experience."
msgstr ""
-#: src/view/com/post-thread/PostThread.tsx:453
+#: src/view/com/post-thread/PostThread.tsx:517
msgid "The post may have been deleted."
msgstr "ŠŠ¾Š¶Š»ŠøŠ²Š¾ ŃŠµŠ¹ поŃŃ Š±ŃŠ»Š¾ виГалено."
@@ -4084,7 +4270,7 @@ msgstr "Умови ŠŠøŠŗŠ¾ŃŠøŃŃŠ°Š½Š½Ń ŠæŠµŃŠµŠ½ŠµŃено Го"
msgid "There are many feeds to try:"
msgstr ""
-#: src/view/screens/ProfileFeed.tsx:549
+#: src/view/screens/ProfileFeed.tsx:550
msgid "There was an an issue contacting the server, please check your internet connection and try again."
msgstr ""
@@ -4092,12 +4278,12 @@ msgstr ""
msgid "There was an an issue removing this feed. Please check your internet connection and try again."
msgstr ""
-#: src/view/screens/ProfileFeed.tsx:209
+#: src/view/screens/ProfileFeed.tsx:210
msgid "There was an an issue updating your feeds, please check your internet connection and try again."
msgstr ""
-#: src/view/screens/ProfileFeed.tsx:236
-#: src/view/screens/ProfileList.tsx:266
+#: src/view/screens/ProfileFeed.tsx:237
+#: src/view/screens/ProfileList.tsx:267
#: src/view/screens/SavedFeeds.tsx:209
#: src/view/screens/SavedFeeds.tsx:231
#: src/view/screens/SavedFeeds.tsx:252
@@ -4106,9 +4292,9 @@ msgstr ""
#: src/view/com/auth/onboarding/RecommendedFeedsItem.tsx:57
#: src/view/com/auth/onboarding/RecommendedFeedsItem.tsx:66
-#: src/view/com/feeds/FeedSourceCard.tsx:113
-#: src/view/com/feeds/FeedSourceCard.tsx:127
-#: src/view/com/feeds/FeedSourceCard.tsx:181
+#: src/view/com/feeds/FeedSourceCard.tsx:115
+#: src/view/com/feeds/FeedSourceCard.tsx:129
+#: src/view/com/feeds/FeedSourceCard.tsx:183
msgid "There was an issue contacting your server"
msgstr ""
@@ -4140,19 +4326,19 @@ msgstr ""
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:93
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:105
-#: src/view/com/profile/ProfileHeader.tsx:156
-#: src/view/com/profile/ProfileHeader.tsx:177
-#: src/view/com/profile/ProfileHeader.tsx:216
-#: src/view/com/profile/ProfileHeader.tsx:229
-#: src/view/com/profile/ProfileHeader.tsx:249
-#: src/view/com/profile/ProfileHeader.tsx:271
+#: src/view/com/profile/ProfileHeader.tsx:157
+#: src/view/com/profile/ProfileHeader.tsx:178
+#: src/view/com/profile/ProfileHeader.tsx:217
+#: src/view/com/profile/ProfileHeader.tsx:230
+#: src/view/com/profile/ProfileHeader.tsx:250
+#: src/view/com/profile/ProfileHeader.tsx:272
msgid "There was an issue! {0}"
msgstr ""
-#: src/view/screens/ProfileList.tsx:287
-#: src/view/screens/ProfileList.tsx:306
-#: src/view/screens/ProfileList.tsx:328
-#: src/view/screens/ProfileList.tsx:347
+#: src/view/screens/ProfileList.tsx:288
+#: src/view/screens/ProfileList.tsx:307
+#: src/view/screens/ProfileList.tsx:329
+#: src/view/screens/ProfileList.tsx:348
msgid "There was an issue. Please check your internet connection and try again."
msgstr ""
@@ -4165,8 +4351,8 @@ msgid "There's been a rush of new users to Bluesky! We'll activate your account
msgstr ""
#: src/view/com/auth/create/Step2.tsx:55
-msgid "There's something wrong with this number. Please choose your country and enter your full phone number!"
-msgstr ""
+#~ msgid "There's something wrong with this number. Please choose your country and enter your full phone number!"
+#~ msgstr ""
#: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:138
msgid "These are popular accounts you might like:"
@@ -4209,8 +4395,8 @@ msgid "This feed is currently receiving high traffic and is temporarily unavaila
msgstr "Š¦Ń ŃŃŃŃŃŠŗŠ° Š·Š°ŃŠ°Š· оŃŃŠøŠ¼ŃŃ Š·Š°Š±Š°Š³Š°ŃŠ¾ запиŃŃŠ² Ń ŃŠøŠ¼ŃŠ°ŃŠ¾Š²Š¾ неГоŃŃŃŠæŠ½Š°. Š”ŠæŃŠ¾Š±ŃŠ¹ŃŠµ ŃŠµ ŃŠ°Š· ŠæŃŠ·Š½ŃŃŠµ."
#: src/view/screens/Profile.tsx:420
-#: src/view/screens/ProfileFeed.tsx:475
-#: src/view/screens/ProfileList.tsx:660
+#: src/view/screens/ProfileFeed.tsx:476
+#: src/view/screens/ProfileList.tsx:661
msgid "This feed is empty!"
msgstr ""
@@ -4242,7 +4428,7 @@ msgstr ""
msgid "This name is already in use"
msgstr ""
-#: src/view/com/post-thread/PostThreadItem.tsx:122
+#: src/view/com/post-thread/PostThreadItem.tsx:125
msgid "This post has been deleted."
msgstr "Цей поŃŃ Š±ŃŠ»Š¾ виГалено."
@@ -4266,7 +4452,11 @@ msgstr ""
msgid "This warning is only available for posts with media attached."
msgstr "Це ŠæŠ¾ŠæŠµŃŠµŠ“Š¶ŠµŠ½Š½Ń Š“Š¾ŃŃŃŠæŠ½Šµ ŃŃŠ»ŃŠŗŠø Š“Š»Ń Š·Š°ŠæŠøŃŃŠ² Š· ŠæŃŠøŠŗŃŃŠæŠ»ŠµŠ½ŠøŠ¼Šø Š¼ŠµŠ“ŃŠ°-ŃŠ°Š¹Š»Š°Š¼Šø."
-#: src/view/com/util/forms/PostDropdownBtn.tsx:192
+#: src/components/dialogs/MutedWords.tsx:236
+msgid "This will delete {0} from your muted words. You can always add it back later."
+msgstr ""
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:237
msgid "This will hide this post from your feeds."
msgstr "Це ŠæŃŠøŃ
Š¾Š²Š°Ń ŃŠµŠ¹ поŃŃ ŃŠ· Š²Š°ŃŠ¾Ń ŃŃŃŃŃŠŗŠø."
@@ -4279,10 +4469,14 @@ msgstr "ŠŠ°Š»Š°ŃŃŃŠ²Š°Š½Š½Ń Š³ŃŠ»Š¾Šŗ"
msgid "Threaded Mode"
msgstr "Режим Š³Ńлок"
-#: src/Navigation.tsx:252
+#: src/Navigation.tsx:255
msgid "Threads Preferences"
msgstr ""
+#: src/components/dialogs/MutedWords.tsx:95
+msgid "Toggle between muted word options."
+msgstr ""
+
#: src/view/com/util/forms/DropdownButton.tsx:246
msgid "Toggle dropdown"
msgstr "Š Š¾Š·ŠŗŃŠøŃŠø/ŃŃ
Š¾Š²Š°ŃŠø"
@@ -4291,9 +4485,9 @@ msgstr "Š Š¾Š·ŠŗŃŠøŃŠø/ŃŃ
Š¾Š²Š°ŃŠø"
msgid "Transformations"
msgstr "Š ŠµŠ“Š°Š³ŃŠ²Š°Š½Š½Ń"
-#: src/view/com/post-thread/PostThreadItem.tsx:686
-#: src/view/com/post-thread/PostThreadItem.tsx:688
-#: src/view/com/util/forms/PostDropdownBtn.tsx:125
+#: src/view/com/post-thread/PostThreadItem.tsx:685
+#: src/view/com/post-thread/PostThreadItem.tsx:687
+#: src/view/com/util/forms/PostDropdownBtn.tsx:156
msgid "Translate"
msgstr "ŠŠµŃеклаŃŃŠø"
@@ -4306,15 +4500,15 @@ msgstr ""
#~ msgid "Try again"
#~ msgstr "Š”ŠæŃŠ¾Š±ŃŠ²Š°ŃŠø ŃŠµ ŃŠ°Š·"
-#: src/view/screens/ProfileList.tsx:505
+#: src/view/screens/ProfileList.tsx:506
msgid "Un-block list"
msgstr "Š Š¾Š·Š±Š»Š¾ŠŗŃŠ²Š°ŃŠø ŃŠæŠøŃŠ¾Šŗ"
-#: src/view/screens/ProfileList.tsx:490
+#: src/view/screens/ProfileList.tsx:491
msgid "Un-mute list"
msgstr "ŠŠµŃеŃŃŠ°ŃŠø ŃŠ³Š½Š¾ŃŃŠ²Š°ŃŠø"
-#: src/view/com/auth/create/CreateAccount.tsx:66
+#: src/view/com/auth/create/CreateAccount.tsx:58
#: src/view/com/auth/login/ForgotPasswordForm.tsx:87
#: src/view/com/auth/login/Login.tsx:76
#: src/view/com/auth/login/LoginForm.tsx:118
@@ -4322,18 +4516,18 @@ msgstr "ŠŠµŃеŃŃŠ°ŃŠø ŃŠ³Š½Š¾ŃŃŠ²Š°ŃŠø"
msgid "Unable to contact your service. Please check your Internet connection."
msgstr "ŠŠµ вГалоŃŃ Š·Š²'ŃŠ·Š°ŃŠøŃŃ Š· Š²Š°ŃŠøŠ¼ Ń
оŃŃŠøŠ½Š³-ŠæŃŠ¾Š²Š°Š¹Š“ŠµŃŠ¾Š¼. ŠŠµŃевŃŃŃŠµ Š²Š°ŃŠµ ŠæŃŠ“ŠŗŠ»ŃŃŠµŠ½Š½Ń Го ŠŠ½ŃŠµŃнеŃŃ."
-#: src/view/com/profile/ProfileHeader.tsx:432
-#: src/view/screens/ProfileList.tsx:589
+#: src/view/com/profile/ProfileHeader.tsx:433
+#: src/view/screens/ProfileList.tsx:590
msgid "Unblock"
msgstr "Š Š¾Š·Š±Š»Š¾ŠŗŃŠ²Š°ŃŠø"
-#: src/view/com/profile/ProfileHeader.tsx:435
+#: src/view/com/profile/ProfileHeader.tsx:436
msgctxt "action"
msgid "Unblock"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:260
-#: src/view/com/profile/ProfileHeader.tsx:344
+#: src/view/com/profile/ProfileHeader.tsx:261
+#: src/view/com/profile/ProfileHeader.tsx:345
msgid "Unblock Account"
msgstr "Š Š¾Š·Š±Š»Š¾ŠŗŃŠ²Š°ŃŠø Š¾Š±Š»ŃŠŗŠ¾Š²ŠøŠ¹ запиŃ"
@@ -4349,11 +4543,11 @@ msgctxt "action"
msgid "Unfollow"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:484
+#: src/view/com/profile/ProfileHeader.tsx:485
msgid "Unfollow {0}"
msgstr ""
-#: src/view/com/auth/create/state.ts:300
+#: src/view/com/auth/create/state.ts:262
msgid "Unfortunately, you do not meet the requirements to create an account."
msgstr "ŠŠ° жалŃ, ви не Š²ŃŠ“ŠæŠ¾Š²ŃŠ“аŃŃŠµ вимогам Š“Š»Ń ŃŃŠ²Š¾ŃŠµŠ½Š½Ń Š¾Š±Š»ŃŠŗŠ¾Š²Š¾Š³Š¾ запиŃŃ."
@@ -4362,28 +4556,37 @@ msgstr "ŠŠ° жалŃ, ви не Š²ŃŠ“ŠæŠ¾Š²ŃŠ“аŃŃŠµ вимогам ГлŃ
msgid "Unlike"
msgstr ""
-#: src/view/screens/ProfileList.tsx:596
+#: src/components/TagMenu/index.tsx:253
+#: src/view/screens/ProfileList.tsx:597
msgid "Unmute"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:325
+#: src/components/TagMenu/index.web.tsx:90
+msgid "Unmute {truncatedTag}"
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:326
msgid "Unmute Account"
msgstr "ŠŠµŃеŃŃŠ°ŃŠø ŃŠ³Š½Š¾ŃŃŠ²Š°ŃŠø"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:171
+#: src/components/TagMenu/index.tsx:210
+msgid "Unmute all {tag} posts"
+msgstr ""
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:202
msgid "Unmute thread"
msgstr "ŠŠµŃеŃŃŠ°ŃŠø ŃŠ³Š½Š¾ŃŃŠ²Š°ŃŠø"
-#: src/view/screens/ProfileFeed.tsx:353
-#: src/view/screens/ProfileList.tsx:580
+#: src/view/screens/ProfileFeed.tsx:354
+#: src/view/screens/ProfileList.tsx:581
msgid "Unpin"
msgstr ""
-#: src/view/screens/ProfileList.tsx:473
+#: src/view/screens/ProfileList.tsx:474
msgid "Unpin moderation list"
msgstr "ŠŃГкŃŃŠæŠøŃŠø ŃŠæŠøŃŠ¾Šŗ Š¼Š¾Š“ŠµŃŠ°ŃŃŃ"
-#: src/view/screens/ProfileFeed.tsx:345
+#: src/view/screens/ProfileFeed.tsx:346
msgid "Unsave"
msgstr ""
@@ -4445,11 +4648,11 @@ msgstr ""
msgid "User Blocks You"
msgstr ""
-#: src/view/com/auth/create/Step3.tsx:41
+#: src/view/com/auth/create/Step2.tsx:79
msgid "User handle"
msgstr "ŠŃŠµŠ²Š“Š¾Š½ŃŠ¼"
-#: src/view/com/lists/ListCard.tsx:84
+#: src/view/com/lists/ListCard.tsx:85
#: src/view/com/modals/UserAddRemoveLists.tsx:198
msgid "User list by {0}"
msgstr ""
@@ -4458,7 +4661,7 @@ msgstr ""
msgid "User list by <0/>"
msgstr ""
-#: src/view/com/lists/ListCard.tsx:82
+#: src/view/com/lists/ListCard.tsx:83
#: src/view/com/modals/UserAddRemoveLists.tsx:196
#: src/view/screens/ProfileList.tsx:760
msgid "User list by you"
@@ -4498,8 +4701,8 @@ msgid "Users in \"{0}\""
msgstr "ŠŠ¾ŃŠøŃŃŃŠ²Š°ŃŃ Š² Ā«{0}Ā»"
#: src/view/com/auth/create/Step2.tsx:243
-msgid "Verification code"
-msgstr ""
+#~ msgid "Verification code"
+#~ msgstr ""
#: src/view/screens/Settings/index.tsx:910
msgid "Verify email"
@@ -4526,7 +4729,7 @@ msgstr ""
msgid "Video Games"
msgstr ""
-#: src/view/com/profile/ProfileHeader.tsx:661
+#: src/view/com/profile/ProfileHeader.tsx:662
msgid "View {0}'s avatar"
msgstr ""
@@ -4579,6 +4782,10 @@ msgstr ""
#~ msgid "We recommend \"For You\" by Skygaze:"
#~ msgstr ""
+#: src/components/dialogs/MutedWords.tsx:161
+msgid "We recommend avoiding common words that appear in many posts, since it can result in no posts being shown."
+msgstr ""
+
#: src/screens/Onboarding/StepAlgoFeeds/index.tsx:124
msgid "We recommend our \"Discover\" feed:"
msgstr ""
@@ -4599,7 +4806,7 @@ msgstr ""
msgid "We'll use this to help customize your experience."
msgstr ""
-#: src/view/com/auth/create/CreateAccount.tsx:123
+#: src/view/com/auth/create/CreateAccount.tsx:134
msgid "We're so excited to have you join us!"
msgstr "ŠŠø Š“ŃŠ¶Šµ ŃŠ°Š“Ń, ŃŠ¾ ви ŠæŃŠøŃГналиŃŃ!"
@@ -4611,11 +4818,15 @@ 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/ProfileList.tsx:85
+#: src/view/screens/ProfileList.tsx:86
msgid "We're sorry, but we were unable to resolve this list. If this persists, please contact the list creator, @{handleOrDid}."
msgstr ""
-#: src/view/screens/Search/Search.tsx:253
+#: src/components/dialogs/MutedWords.tsx:182
+msgid "We're sorry, but we weren't able to load your muted words at this time. Please try again."
+msgstr ""
+
+#: src/view/screens/Search/Search.tsx:254
msgid "We're sorry, but your search could not be completed. Please try again in a few minutes."
msgstr "ŠŠ°ŃŃŠ¹Ńе, нам не вГалоŃŃ Š²ŠøŠŗŠ¾Š½Š°ŃŠø поŃŃŠŗ за Š²Š°Ńим Š·Š°ŠæŠøŃом. ŠŃŠ“Ń Š»Š°ŃŠŗŠ°, ŃŠæŃŠ¾Š±ŃŠ¹Ńе ŃŠµ ŃŠ°Š· ŃŠµŃез ŠŗŃŠ»Ńка Ń
вилин."
@@ -4635,8 +4846,8 @@ msgstr ""
msgid "What is the issue with this {collectionName}?"
msgstr "Яка ŠæŃоблема Š· {collectionName}?"
-#: src/view/com/auth/SplashScreen.tsx:34
-#: src/view/com/composer/Composer.tsx:279
+#: src/view/com/auth/SplashScreen.tsx:59
+#: src/view/com/composer/Composer.tsx:286
msgid "What's up?"
msgstr "ŠÆŠŗ ŃŠæŃави?"
@@ -4661,11 +4872,11 @@ msgstr "Š„ŃŠ¾ може Š²ŃŠ“ŠæŠ¾Š²ŃŠ“Š°ŃŠø"
msgid "Wide"
msgstr "ŠØŠøŃŠ¾ŠŗŠµ"
-#: src/view/com/composer/Composer.tsx:415
+#: src/view/com/composer/Composer.tsx:422
msgid "Write post"
msgstr "ŠŠ°ŠæŠøŃŠ°ŃŠø поŃŃ"
-#: src/view/com/composer/Composer.tsx:278
+#: src/view/com/composer/Composer.tsx:285
#: src/view/com/composer/Prompt.tsx:33
msgid "Write your reply"
msgstr "ŠŠ°ŠæŠøŃŠ°ŃŠø Š²ŃŠ“ŠæŠ¾Š²ŃŠ“Ń"
@@ -4675,14 +4886,14 @@ msgid "Writers"
msgstr ""
#: src/view/com/auth/create/Step2.tsx:263
-msgid "XXXXXX"
-msgstr ""
+#~ msgid "XXXXXX"
+#~ msgstr ""
#: src/view/com/composer/select-language/SuggestedLanguage.tsx:77
-#: 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/PreferencesFollowingFeed.tsx:129
+#: src/view/screens/PreferencesFollowingFeed.tsx:201
+#: src/view/screens/PreferencesFollowingFeed.tsx:236
+#: src/view/screens/PreferencesFollowingFeed.tsx:271
#: src/view/screens/PreferencesThreads.tsx:106
#: src/view/screens/PreferencesThreads.tsx:129
msgid "Yes"
@@ -4726,7 +4937,7 @@ msgstr "Š£ Š²Š°Ń ŃŠµ Š½ŠµŠ¼Š°Ń ŠŗŠ¾Š“ŃŠ² Š·Š°ŠæŃŠ¾ŃеннŃ! Š ŃŠ°Ńом
msgid "You don't have any pinned feeds."
msgstr "Š£ Š²Š°Ń Š½ŠµŠ¼Š°Ń Š·Š°ŠŗŃŃŠæŠ»ŠµŠ½ŠøŃ
ŃŃŃŃŃŠ¾Šŗ."
-#: src/view/screens/Feeds.tsx:451
+#: src/view/screens/Feeds.tsx:452
msgid "You don't have any saved feeds!"
msgstr "Š£ Š²Š°Ń Š½ŠµŠ¼Š°Ń Š·Š±ŠµŃŠµŠ¶ŠµŠ½ŠøŃ
ŃŃŃŃŃŠ¾Šŗ!"
@@ -4734,7 +4945,7 @@ msgstr "Š£ Š²Š°Ń Š½ŠµŠ¼Š°Ń Š·Š±ŠµŃŠµŠ¶ŠµŠ½ŠøŃ
ŃŃŃŃŃŠ¾Šŗ!"
msgid "You don't have any saved feeds."
msgstr "Š£ Š²Š°Ń Š½ŠµŠ¼Š°Ń Š·Š±ŠµŃŠµŠ¶ŠµŠ½ŠøŃ
ŃŃŃŃŃŠ¾Šŗ."
-#: src/view/com/post-thread/PostThread.tsx:401
+#: src/view/com/post-thread/PostThread.tsx:465
msgid "You have blocked the author or you have been blocked by the author."
msgstr "ŠŠø Š·Š°Š±Š»Š¾ŠŗŃŠ²Š°Š»Šø Š°Š²ŃŠ¾Ńа або Š°Š²ŃŠ¾Ń Š·Š°Š±Š»Š¾ŠŗŃŠ²Š°Š² ваŃ."
@@ -4774,6 +4985,10 @@ msgstr "ŠŠø ŃŠµ не ŃŃŠ²Š¾Ńили жоГного ŠæŠ°ŃŠ¾Š»Ń Š“Š»Ń Š·Š°
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/components/dialogs/MutedWords.tsx:202
+msgid "You haven't muted any words or tags yet"
+msgstr ""
+
#: src/view/com/modals/ContentFilteringSettings.tsx:175
msgid "You must be 18 or older to enable adult content."
msgstr ""
@@ -4782,11 +4997,11 @@ msgstr ""
msgid "You must be 18 years or older to enable adult content"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:98
+#: src/view/com/util/forms/PostDropdownBtn.tsx:129
msgid "You will no longer receive notifications for this thread"
msgstr ""
-#: src/view/com/util/forms/PostDropdownBtn.tsx:101
+#: src/view/com/util/forms/PostDropdownBtn.tsx:132
msgid "You will now receive notifications for this thread"
msgstr ""
@@ -4824,7 +5039,7 @@ msgstr ""
msgid "Your account repository, containing all public data records, can be downloaded as a \"CAR\" file. This file does not include media embeds, such as images, or your private data, which must be fetched separately."
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:234
+#: src/view/com/auth/create/Step1.tsx:238
msgid "Your birth date"
msgstr "ŠŠ°Ńа Š“Š°ŃŠ° Š½Š°ŃŠ¾Š“женнŃ"
@@ -4836,7 +5051,7 @@ msgstr ""
msgid "Your default feed is \"Following\""
msgstr ""
-#: src/view/com/auth/create/state.ts:153
+#: src/view/com/auth/create/state.ts:110
#: src/view/com/auth/login/ForgotPasswordForm.tsx:70
#: src/view/com/modals/ChangePassword.tsx:54
msgid "Your email appears to be invalid."
@@ -4858,7 +5073,7 @@ msgstr "ŠŠ°Ńа елекŃŃŠ¾Š½Š½Š° поŃŃŠ° ŃŠµ не ŠæŃŠ“ŃŠ²ŠµŃГже
msgid "Your following feed is empty! Follow more users to see what's happening."
msgstr ""
-#: src/view/com/auth/create/Step3.tsx:45
+#: src/view/com/auth/create/Step2.tsx:83
msgid "Your full handle will be"
msgstr "ŠŠ°Ń повний ŠæŃŠµŠ²Š“Š¾Š½ŃŠ¼ Š±ŃŠ“е"
@@ -4876,11 +5091,15 @@ msgstr ""
#~ msgid "Your invite codes are hidden when logged in using an App Password"
#~ msgstr "ŠŠ°ŃŃ ŠŗŠ¾Š“Šø Š·Š°ŠæŃŠ¾ŃŠµŠ½Š½Ń ŠæŃŠøŃ
овано, ŃŠŗŃо ви ŃŠ²ŃŠ¹ŃŠ»Šø за Š“Š¾ŠæŠ¾Š¼Š¾Š³Š¾Ń ŠæŠ°ŃŠ¾Š»Ń Š“Š»Ń Š·Š°ŃŃŠ¾ŃŃŠ½ŠŗŃв"
+#: src/components/dialogs/MutedWords.tsx:173
+msgid "Your muted words"
+msgstr ""
+
#: src/view/com/modals/ChangePassword.tsx:155
msgid "Your password has been changed successfully!"
msgstr ""
-#: src/view/com/composer/Composer.tsx:267
+#: src/view/com/composer/Composer.tsx:274
msgid "Your post has been published"
msgstr ""
@@ -4907,10 +5126,10 @@ msgstr "ŠŠ°Ń ŠæŃŠ¾ŃŃŠ»Ń"
#~ 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/composer/Composer.tsx:266
+#: src/view/com/composer/Composer.tsx:273
msgid "Your reply has been published"
msgstr ""
-#: src/view/com/auth/create/Step3.tsx:28
+#: src/view/com/auth/create/Step2.tsx:65
msgid "Your user handle"
msgstr "ŠŠ°Ń ŠæŃŠµŠ²Š“Š¾Š½ŃŠ¼"
diff --git a/src/locale/locales/zh-CN/messages.po b/src/locale/locales/zh-CN/messages.po
index a49f13300c..c4447af264 100644
--- a/src/locale/locales/zh-CN/messages.po
+++ b/src/locale/locales/zh-CN/messages.po
@@ -21,7 +21,7 @@ msgstr "(ę²”ęé®ä»¶)"
#~ msgid "{0, plural, one {# invite code available} other {# invite codes available}}"
#~ msgstr "{0, plural, one {# ę”é请ē åÆēØ} other {# ę”é请ē åÆēØ}}"
-#: src/view/com/profile/ProfileHeader.tsx:592
+#: src/view/com/profile/ProfileHeader.tsx:593
msgid "{following} following"
msgstr "{following} ę£åØå
³ę³Ø"
@@ -47,7 +47,7 @@ msgstr "{numUnreadNotifications} ęŖčÆ»"
msgid "<0/> members"
msgstr "<0/> ęå"
-#: src/view/com/profile/ProfileHeader.tsx:594
+#: src/view/com/profile/ProfileHeader.tsx:595
msgid "<0>{following} 0><1>following1>"
msgstr "<0>{following} 0><1>ę£åØå
³ę³Ø1>"
@@ -63,7 +63,7 @@ msgstr "<0>å
³ę³Øäøäŗ0><1>ęØčē1><2>ēØę·2>"
msgid "<0>Welcome to0><1>Bluesky1>"
msgstr "<0>欢čæę„å°0><1>Bluesky1>"
-#: src/view/com/profile/ProfileHeader.tsx:557
+#: src/view/com/profile/ProfileHeader.tsx:558
msgid "ā Invalid Handle"
msgstr "ā ę ęēēØę·čÆå«ē¬¦"
@@ -76,11 +76,11 @@ msgid "A new version of the app is available. Please update to continue using th
msgstr "App ę°ēę¬å·²ååøļ¼čÆ·ę“ę°ä»„ē»§ē»ä½æēØć"
#: src/view/com/util/ViewHeader.tsx:83
-#: src/view/screens/Search/Search.tsx:624
+#: src/view/screens/Search/Search.tsx:647
msgid "Access navigation links and settings"
msgstr "访é®åƼčŖé¾ę„å设置"
-#: src/view/com/pager/FeedsTabBarMobile.tsx:89
+#: src/view/com/home/HomeHeaderLayoutMobile.tsx:51
msgid "Access profile and other navigation links"
msgstr "访é®äøŖäŗŗčµęåå
¶ä»åƼčŖé¾ę„"
@@ -95,11 +95,11 @@ msgstr "ę éē¢"
msgid "Account"
msgstr "蓦ę·"
-#: src/view/com/profile/ProfileHeader.tsx:245
+#: src/view/com/profile/ProfileHeader.tsx:246
msgid "Account blocked"
msgstr "å·²å±č½č“¦ę·"
-#: src/view/com/profile/ProfileHeader.tsx:212
+#: src/view/com/profile/ProfileHeader.tsx:213
msgid "Account muted"
msgstr "å·²éč蓦ę·"
@@ -119,14 +119,15 @@ msgstr "蓦ę·é锹"
msgid "Account removed from quick access"
msgstr "å·²ä»åæ«é访é®äøē§»é¤č“¦ę·"
-#: src/view/com/profile/ProfileHeader.tsx:267
+#: src/view/com/profile/ProfileHeader.tsx:268
msgid "Account unblocked"
msgstr "å·²åę¶å±č½č“¦ę·"
-#: src/view/com/profile/ProfileHeader.tsx:225
+#: src/view/com/profile/ProfileHeader.tsx:226
msgid "Account unmuted"
msgstr "å·²åę¶éč蓦ę·"
+#: src/components/dialogs/MutedWords.tsx:147
#: src/view/com/auth/onboarding/RecommendedFeedsItem.tsx:150
#: src/view/com/modals/ListAddRemoveUsers.tsx:264
#: src/view/com/modals/UserAddRemoveLists.tsx:219
@@ -168,24 +169,32 @@ msgstr "ę·»å ē»č"
msgid "Add details to report"
msgstr "蔄å
åé¦čƦē»å
容"
-#: src/view/com/composer/Composer.tsx:446
+#: src/view/com/composer/Composer.tsx:453
msgid "Add link card"
msgstr "ę·»å é¾ę„å”ē"
-#: src/view/com/composer/Composer.tsx:451
+#: src/view/com/composer/Composer.tsx:458
msgid "Add link card:"
msgstr "ę·»å é¾ę„å”ē:"
+#: src/components/dialogs/MutedWords.tsx:140
+msgid "Add mute word for configured settings"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:74
+msgid "Add muted words and tags"
+msgstr ""
+
#: src/view/com/modals/ChangeHandle.tsx:417
msgid "Add the following DNS record to your domain:"
msgstr "å°ä»„äøDNSč®°å½ę·»å å°ä½ ēåå:"
-#: src/view/com/profile/ProfileHeader.tsx:309
+#: src/view/com/profile/ProfileHeader.tsx:310
msgid "Add to Lists"
msgstr "ę·»å č³å蔨"
-#: src/view/com/feeds/FeedSourceCard.tsx:243
-#: src/view/screens/ProfileFeed.tsx:272
+#: src/view/com/feeds/FeedSourceCard.tsx:245
+#: src/view/screens/ProfileFeed.tsx:273
msgid "Add to my feeds"
msgstr "ę·»å č³čŖå®ä¹äæ”ęÆęµ"
@@ -198,11 +207,11 @@ msgstr "已添å "
msgid "Added to list"
msgstr "ę·»å č³å蔨"
-#: src/view/com/feeds/FeedSourceCard.tsx:125
+#: src/view/com/feeds/FeedSourceCard.tsx:127
msgid "Added to my feeds"
msgstr "ę·»å č³čŖå®ä¹äæ”ęÆęµ"
-#: src/view/screens/PreferencesHomeFeed.tsx:173
+#: src/view/screens/PreferencesFollowingFeed.tsx:173
msgid "Adjust the number of likes a reply must have to be shown in your feed."
msgstr "č°ę“åå¤äøéč¦å
·ęēē¹čµę°ęä¼åØä½ ēäæ”ęÆęµäøę¾ē¤ŗć"
@@ -218,6 +227,10 @@ msgstr "č¦ę¾ē¤ŗęäŗŗå
容ļ¼ä½ åæ
锻访é®ē½é”µē«Æäøē<0/>ć"
msgid "Advanced"
msgstr "详ē»č®¾ē½®"
+#: src/view/screens/Feeds.tsx:666
+msgid "All the feeds you've saved, right in one place."
+msgstr ""
+
#: src/view/com/auth/login/ForgotPasswordForm.tsx:221
#: src/view/com/modals/ChangePassword.tsx:168
msgid "Already have a code?"
@@ -291,7 +304,7 @@ msgstr "App äøēØåÆē 设置"
msgid "App Passwords"
msgstr "App äøēØåÆē "
-#: src/view/com/util/forms/PostDropdownBtn.tsx:250
+#: src/view/com/util/forms/PostDropdownBtn.tsx:295
msgid "Appeal content warning"
msgstr "ē³čÆå
容č¦å"
@@ -315,15 +328,16 @@ msgstr "å¤č§"
msgid "Are you sure you want to delete the app password \"{name}\"?"
msgstr "ä½ ē”®å®č¦å é¤čæę” App äøēØåÆē \"{name}\"ļ¼"
-#: src/view/com/composer/Composer.tsx:143
+#: src/view/com/composer/Composer.tsx:150
msgid "Are you sure you'd like to discard this draft?"
msgstr "ä½ ē”®å®č¦äø¢å¼ę¤č稿åļ¼"
-#: src/view/screens/ProfileList.tsx:364
+#: src/components/dialogs/MutedWords.tsx:233
+#: src/view/screens/ProfileList.tsx:365
msgid "Are you sure?"
msgstr "ä½ ē”®å®åļ¼"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:233
+#: src/view/com/util/forms/PostDropdownBtn.tsx:278
msgid "Are you sure? This cannot be undone."
msgstr "ä½ ē”®å®åļ¼ę¤ęä½ę ę³ę¤éć"
@@ -339,21 +353,21 @@ msgstr "čŗęÆ"
msgid "Artistic or non-erotic nudity."
msgstr "čŗęÆä½åęéč²ę
ē裸ä½ć"
-#: src/view/com/auth/create/CreateAccount.tsx:147
+#: src/view/com/auth/create/CreateAccount.tsx:158
#: src/view/com/auth/login/ChooseAccountForm.tsx:151
#: src/view/com/auth/login/ForgotPasswordForm.tsx:174
#: src/view/com/auth/login/LoginForm.tsx:259
#: src/view/com/auth/login/SetNewPasswordForm.tsx:179
#: src/view/com/modals/report/InputIssueDetails.tsx:46
-#: src/view/com/post-thread/PostThread.tsx:408
-#: src/view/com/post-thread/PostThread.tsx:458
-#: src/view/com/post-thread/PostThread.tsx:466
-#: src/view/com/profile/ProfileHeader.tsx:648
+#: src/view/com/post-thread/PostThread.tsx:472
+#: src/view/com/post-thread/PostThread.tsx:522
+#: src/view/com/post-thread/PostThread.tsx:530
+#: src/view/com/profile/ProfileHeader.tsx:649
#: src/view/com/util/ViewHeader.tsx:81
msgid "Back"
msgstr "čæå"
-#: src/view/com/post-thread/PostThread.tsx:416
+#: src/view/com/post-thread/PostThread.tsx:480
msgctxt "action"
msgid "Back"
msgstr "čæå"
@@ -366,7 +380,7 @@ msgstr "åŗäŗä½ 对 {interestsText} ęå
“č¶£"
msgid "Basics"
msgstr "åŗē”äæ”ęÆ"
-#: src/view/com/auth/create/Step1.tsx:246
+#: src/view/com/auth/create/Step1.tsx:250
#: src/view/com/modals/BirthDateSettings.tsx:73
msgid "Birthday"
msgstr "ēę„"
@@ -375,33 +389,33 @@ msgstr "ēę„"
msgid "Birthday:"
msgstr "ēę„:"
-#: src/view/com/profile/ProfileHeader.tsx:238
-#: src/view/com/profile/ProfileHeader.tsx:345
+#: src/view/com/profile/ProfileHeader.tsx:239
+#: src/view/com/profile/ProfileHeader.tsx:346
msgid "Block Account"
msgstr "å±č½č“¦ę·"
-#: src/view/screens/ProfileList.tsx:555
+#: src/view/screens/ProfileList.tsx:556
msgid "Block accounts"
msgstr "å±č½č“¦ę·"
-#: src/view/screens/ProfileList.tsx:505
+#: src/view/screens/ProfileList.tsx:506
msgid "Block list"
msgstr "å±č½å蔨"
-#: src/view/screens/ProfileList.tsx:315
+#: src/view/screens/ProfileList.tsx:316
msgid "Block these accounts?"
msgstr "å±č½čæäŗč“¦ę·ļ¼"
-#: src/view/screens/ProfileList.tsx:319
+#: src/view/screens/ProfileList.tsx:320
msgid "Block this List"
msgstr "å±č½čæäøŖå蔨"
-#: src/view/com/lists/ListCard.tsx:109
-#: src/view/com/util/post-embeds/QuoteEmbed.tsx:60
+#: src/view/com/lists/ListCard.tsx:110
+#: src/view/com/util/post-embeds/QuoteEmbed.tsx:61
msgid "Blocked"
msgstr "å·²å±č½"
-#: src/view/screens/Moderation.tsx:123
+#: src/view/screens/Moderation.tsx:142
msgid "Blocked accounts"
msgstr "å·²å±č½č“¦ę·"
@@ -410,7 +424,7 @@ msgstr "å·²å±č½č“¦ę·"
msgid "Blocked Accounts"
msgstr "å·²å±č½č“¦ę·"
-#: src/view/com/profile/ProfileHeader.tsx:240
+#: src/view/com/profile/ProfileHeader.tsx:241
msgid "Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you."
msgstr "被å±č½ē蓦ę·ę ę³åØä½ ēåøåäøåå¤ćęåä½ ę仄å
¶ä»ę¹å¼äøä½ äŗåØć"
@@ -418,15 +432,16 @@ msgstr "被å±č½ē蓦ę·ę ę³åØä½ ēåøåäøåå¤ćęåä½ ę仄å
¶ä»
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:267
+#: src/view/com/post-thread/PostThread.tsx:324
msgid "Blocked post."
msgstr "å·²å±č½åøåć"
-#: src/view/screens/ProfileList.tsx:317
+#: src/view/screens/ProfileList.tsx:318
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:133
msgid "Blog"
msgstr "å客"
@@ -459,7 +474,7 @@ msgstr "Bluesky äøŗå
¬ä¼čēć"
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:226
+#: src/view/screens/Moderation.tsx:245
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 äøä¼åęŖē»å½ēēØę·ę¾ē¤ŗä½ ēäøŖäŗŗčµęååøåćä½å
¶ä»åŗēØåÆč½äøä¼éµē
§ę¤čÆ·ę±ļ¼čæę ę³ē”®äæä½ ē蓦ę·éē§ć"
@@ -476,6 +491,7 @@ msgid "Build version {0} {1}"
msgstr "ę建ēę¬å· {0} {1}"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:87
+#: src/view/com/auth/SplashScreen.web.tsx:128
msgid "Business"
msgstr "åå”"
@@ -510,8 +526,8 @@ msgid "Can only contain letters, numbers, spaces, dashes, and underscores. Must
msgstr "åŖč½å
å«åęÆćę°åćē©ŗę ¼ćē “ęå·åäøåēŗæć éæåŗ¦åæ
é”»č³å° 4 äøŖå符ļ¼ä½äøč¶
čæ 32 äøŖå符ć"
#: src/components/Prompt.tsx:91
-#: src/view/com/composer/Composer.tsx:300
-#: src/view/com/composer/Composer.tsx:305
+#: src/view/com/composer/Composer.tsx:307
+#: src/view/com/composer/Composer.tsx:312
#: src/view/com/modals/ChangeEmail.tsx:218
#: src/view/com/modals/ChangeEmail.tsx:220
#: src/view/com/modals/ChangePassword.tsx:265
@@ -525,7 +541,7 @@ msgstr "åŖč½å
å«åęÆćę°åćē©ŗę ¼ćē “ęå·åäøåēŗæć éæåŗ¦
#: src/view/com/modals/VerifyEmail.tsx:247
#: src/view/com/modals/VerifyEmail.tsx:253
#: src/view/com/modals/Waitlist.tsx:142
-#: src/view/screens/Search/Search.tsx:693
+#: src/view/screens/Search/Search.tsx:716
#: src/view/shell/desktop/Search.tsx:238
msgid "Cancel"
msgstr "åę¶"
@@ -649,7 +665,7 @@ msgstr "éę©åÆę¹čæä½ čŖå®ä¹äæ”ęÆęµēē®ę³ć"
msgid "Choose your main feeds"
msgstr "éę©ä½ ēé¦éäæ”ęÆęµ"
-#: src/view/com/auth/create/Step1.tsx:215
+#: src/view/com/auth/create/Step1.tsx:219
msgid "Choose your password"
msgstr "éę©ä½ ēåÆē "
@@ -672,7 +688,7 @@ msgid "Clear all storage data (restart after this)"
msgstr "ęø
é¤ęęę°ę®ļ¼å¹¶éåÆļ¼"
#: src/view/com/util/forms/SearchInput.tsx:88
-#: src/view/screens/Search/Search.tsx:674
+#: src/view/screens/Search/Search.tsx:697
msgid "Clear search query"
msgstr "ęø
é¤ęē“¢åå²č®°å½"
@@ -680,6 +696,11 @@ msgstr "ęø
é¤ęē“¢åå²č®°å½"
msgid "click here"
msgstr "ē¹å»čæé"
+#: src/components/RichText.tsx:189
+#: src/components/TagMenu/index.web.tsx:125
+msgid "Click here to open tag menu for {tag}"
+msgstr ""
+
#: src/screens/Onboarding/index.tsx:35
msgid "Climate"
msgstr "ę°č±”"
@@ -689,7 +710,8 @@ msgstr "ę°č±”"
msgid "Close"
msgstr "å
³é"
-#: src/components/Dialog/index.web.tsx:78
+#: src/components/Dialog/index.web.tsx:80
+#: src/components/Dialog/index.web.tsx:194
msgid "Close active dialog"
msgstr "å
³éę“»åØåƹčÆę”"
@@ -709,11 +731,15 @@ msgstr "å
³éå¾ē"
msgid "Close image viewer"
msgstr "å
³éå¾ēę„ēåØ"
-#: src/view/shell/index.web.tsx:49
+#: src/view/shell/index.web.tsx:51
msgid "Close navigation footer"
msgstr "å
³é导čŖé”µč"
-#: src/view/shell/index.web.tsx:50
+#: src/components/TagMenu/index.tsx:266
+msgid "Close this dialog"
+msgstr ""
+
+#: src/view/shell/index.web.tsx:52
msgid "Closes bottom navigation bar"
msgstr "å
³éåŗę "
@@ -721,7 +747,7 @@ msgstr "å
³éåŗę "
msgid "Closes password update alert"
msgstr "å
³éåÆē ę“ę°č¦å"
-#: src/view/com/composer/Composer.tsx:302
+#: src/view/com/composer/Composer.tsx:309
msgid "Closes post composer and discards post draft"
msgstr "å
³éåøåē¼č¾é”µå¹¶äø¢å¼č稿"
@@ -750,7 +776,11 @@ msgstr "社群åå"
msgid "Complete onboarding and start using your account"
msgstr "å®ęå¼åƼ并å¼å§ä½æēØä½ ē蓦ę·"
-#: src/view/com/composer/Composer.tsx:417
+#: src/view/com/auth/create/Step3.tsx:73
+msgid "Complete the challenge"
+msgstr ""
+
+#: src/view/com/composer/Composer.tsx:424
msgid "Compose posts up to {MAX_GRAPHEME_LENGTH} characters in length"
msgstr "ę°ååøåēéæåŗ¦ęå¤äøŗ {MAX_GRAPHEME_LENGTH} äøŖå符"
@@ -767,7 +797,7 @@ msgstr "é
置类å«ēå
容čæę»¤č®¾ē½®ļ¼{0}"
#: src/view/com/modals/SelfLabel.tsx:154
#: src/view/com/modals/VerifyEmail.tsx:231
#: src/view/com/modals/VerifyEmail.tsx:233
-#: src/view/screens/PreferencesHomeFeed.tsx:308
+#: src/view/screens/PreferencesFollowingFeed.tsx:308
#: src/view/screens/PreferencesThreads.tsx:159
msgid "Confirm"
msgstr "甮认"
@@ -805,16 +835,16 @@ msgstr "éŖčÆē "
msgid "Confirms signing up {email} to the waitlist"
msgstr "ē”®č®¤å° {email} 注åå°å蔄å蔨"
-#: src/view/com/auth/create/CreateAccount.tsx:182
+#: src/view/com/auth/create/CreateAccount.tsx:193
#: src/view/com/auth/login/LoginForm.tsx:278
msgid "Connecting..."
msgstr "čæę„äø..."
-#: src/view/com/auth/create/CreateAccount.tsx:202
+#: src/view/com/auth/create/CreateAccount.tsx:213
msgid "Contact support"
msgstr "čē³»ęÆę"
-#: src/view/screens/Moderation.tsx:81
+#: src/view/screens/Moderation.tsx:83
msgid "Content filtering"
msgstr "å
容čæę»¤"
@@ -844,7 +874,7 @@ msgstr "å
容č¦å"
#: src/screens/Onboarding/StepFollowingFeed.tsx:153
#: src/screens/Onboarding/StepInterests/index.tsx:248
#: src/screens/Onboarding/StepModeration/index.tsx:118
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:108
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:114
#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:148
#: src/view/com/auth/onboarding/RecommendedFollows.tsx:209
msgid "Continue"
@@ -853,7 +883,7 @@ msgstr "ē»§ē»"
#: src/screens/Onboarding/StepFollowingFeed.tsx:150
#: src/screens/Onboarding/StepInterests/index.tsx:245
#: src/screens/Onboarding/StepModeration/index.tsx:115
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:105
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:111
msgid "Continue to next step"
msgstr "ē»§ē»äøäøę„"
@@ -880,7 +910,7 @@ msgstr "å·²å¤å¶ę建ēę¬å·č³åŖč““ęæ"
#: src/view/com/modals/AddAppPasswords.tsx:76
#: src/view/com/modals/InviteCodes.tsx:152
-#: src/view/com/util/forms/PostDropdownBtn.tsx:112
+#: src/view/com/util/forms/PostDropdownBtn.tsx:143
msgid "Copied to clipboard"
msgstr "å·²å¤å¶č³åŖč““ęæ"
@@ -892,19 +922,19 @@ msgstr "å·²å¤å¶ App äøēØåÆē "
msgid "Copy"
msgstr "å¤å¶"
-#: src/view/screens/ProfileList.tsx:417
+#: src/view/screens/ProfileList.tsx:418
msgid "Copy link to list"
msgstr "å¤å¶å蔨é¾ę„"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:153
+#: src/view/com/util/forms/PostDropdownBtn.tsx:184
msgid "Copy link to post"
msgstr "å¤å¶åøåé¾ę„"
-#: src/view/com/profile/ProfileHeader.tsx:294
+#: src/view/com/profile/ProfileHeader.tsx:295
msgid "Copy link to profile"
msgstr "å¤å¶äøŖäŗŗčµęé¾ę„"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:139
+#: src/view/com/util/forms/PostDropdownBtn.tsx:170
msgid "Copy post text"
msgstr "å¤å¶åøåęå"
@@ -913,7 +943,7 @@ msgstr "å¤å¶åøåęå"
msgid "Copyright Policy"
msgstr "ēę许åÆ"
-#: src/view/screens/ProfileFeed.tsx:96
+#: src/view/screens/ProfileFeed.tsx:97
msgid "Could not load feed"
msgstr "ę ę³å 载俔ęÆęµ"
@@ -922,12 +952,12 @@ msgid "Could not load list"
msgstr "ę ę³å č½½å蔨"
#: src/view/com/auth/create/Step2.tsx:91
-msgid "Country"
-msgstr "å½å®¶"
+#~ msgid "Country"
+#~ msgstr "å½å®¶"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:62
-#: src/view/com/auth/SplashScreen.tsx:46
-#: src/view/com/auth/SplashScreen.web.tsx:77
+#: src/view/com/auth/SplashScreen.tsx:71
+#: src/view/com/auth/SplashScreen.web.tsx:81
msgid "Create a new account"
msgstr "å建ę°ē蓦ę·"
@@ -935,7 +965,7 @@ msgstr "å建ę°ē蓦ę·"
msgid "Create a new Bluesky account"
msgstr "å建ę°ē Bluesky 蓦ę·"
-#: src/view/com/auth/create/CreateAccount.tsx:122
+#: src/view/com/auth/create/CreateAccount.tsx:133
msgid "Create Account"
msgstr "å建蓦ę·"
@@ -944,7 +974,7 @@ msgid "Create App Password"
msgstr "å建 App äøēØåÆē "
#: src/view/com/auth/HomeLoggedOutCTA.tsx:54
-#: src/view/com/auth/SplashScreen.tsx:43
+#: src/view/com/auth/SplashScreen.tsx:68
msgid "Create new account"
msgstr "å建ę°ē蓦ę·"
@@ -960,7 +990,7 @@ msgstr "ē± <0/> å建"
msgid "Created by you"
msgstr "ē±ä½ å建"
-#: src/view/com/composer/Composer.tsx:448
+#: src/view/com/composer/Composer.tsx:455
msgid "Creates a card with a thumbnail. The card links to {url}"
msgstr "å建带ę缩ē„å¾ēå”ēć评å”ēé¾ę„å° {url}"
@@ -978,6 +1008,7 @@ msgid "Custom domain"
msgstr "čŖå®ä¹åå"
#: src/screens/Onboarding/StepAlgoFeeds/index.tsx:106
+#: src/view/screens/Feeds.tsx:692
msgid "Custom feeds built by the community bring you new experiences and help you find the content you love."
msgstr "ē±ē¤¾åŗę建ēčŖå®ä¹äæ”ęÆęµč½äøŗä½ åø¦ę„ę°ēä½éŖļ¼å¹¶åø®å©ä½ ę¾å°ä½ å欢ēå
容ć"
@@ -1019,8 +1050,8 @@ msgstr "å é¤č“¦å·"
msgid "Delete app password"
msgstr "å é¤ App äøēØåÆē "
-#: src/view/screens/ProfileList.tsx:363
-#: src/view/screens/ProfileList.tsx:444
+#: src/view/screens/ProfileList.tsx:364
+#: src/view/screens/ProfileList.tsx:445
msgid "Delete List"
msgstr "å é¤å蔨"
@@ -1036,19 +1067,19 @@ msgstr "å é¤ęē蓦ę·"
msgid "Delete My Accountā¦"
msgstr "å é¤ęē蓦ę·ā¦"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:228
+#: src/view/com/util/forms/PostDropdownBtn.tsx:273
msgid "Delete post"
msgstr "å é¤åøå"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:232
+#: src/view/com/util/forms/PostDropdownBtn.tsx:277
msgid "Delete this post?"
msgstr "å é¤čæę”åøåļ¼"
-#: src/view/com/util/post-embeds/QuoteEmbed.tsx:69
+#: src/view/com/util/post-embeds/QuoteEmbed.tsx:70
msgid "Deleted"
msgstr "å·²å é¤"
-#: src/view/com/post-thread/PostThread.tsx:259
+#: src/view/com/post-thread/PostThread.tsx:316
msgid "Deleted post."
msgstr "å·²å é¤åøåć"
@@ -1063,7 +1094,7 @@ msgstr "ęčæ°"
#~ msgid "Developer Tools"
#~ msgstr "å¼åč
å·„å
·"
-#: src/view/com/composer/Composer.tsx:211
+#: src/view/com/composer/Composer.tsx:218
msgid "Did you want to say anything?"
msgstr "ęä»ä¹ę³čÆ“ēåļ¼"
@@ -1071,15 +1102,15 @@ msgstr "ęä»ä¹ę³čÆ“ēåļ¼"
msgid "Dim"
msgstr "ęę·”"
-#: src/view/com/composer/Composer.tsx:144
+#: src/view/com/composer/Composer.tsx:151
msgid "Discard"
msgstr "äø¢å¼"
-#: src/view/com/composer/Composer.tsx:138
+#: src/view/com/composer/Composer.tsx:145
msgid "Discard draft"
msgstr "äø¢å¼č稿"
-#: src/view/screens/Moderation.tsx:207
+#: src/view/screens/Moderation.tsx:226
msgid "Discourage apps from showing my account to logged-out users"
msgstr "é»ę¢åŗēØåęŖē»å½ēØę·ę¾ē¤ŗęē蓦ę·"
@@ -1089,8 +1120,12 @@ msgid "Discover new custom feeds"
msgstr "ę¢ē“¢ę°ēčŖå®ä¹äæ”ęÆęµ"
#: src/view/screens/Feeds.tsx:473
-msgid "Discover new feeds"
-msgstr "ę¢ē“¢ę°ēäæ”ęÆęµ"
+#~ msgid "Discover new feeds"
+#~ msgstr "ę¢ē“¢ę°ēäæ”ęÆęµ"
+
+#: src/view/screens/Feeds.tsx:689
+msgid "Discover New Feeds"
+msgstr ""
#: src/view/com/modals/EditProfile.tsx:192
msgid "Display name"
@@ -1104,7 +1139,7 @@ msgstr "ę¾ē¤ŗåē§°"
msgid "Domain verified!"
msgstr "åå已认čÆļ¼"
-#: src/view/com/auth/create/Step1.tsx:166
+#: src/view/com/auth/create/Step1.tsx:170
msgid "Don't have an invite code?"
msgstr "ę²”ęé请ē ļ¼"
@@ -1131,7 +1166,7 @@ msgstr "å®ę"
#: src/view/com/modals/InviteCodes.tsx:80
#: src/view/com/modals/InviteCodes.tsx:123
#: src/view/com/modals/ListAddRemoveUsers.tsx:142
-#: src/view/screens/PreferencesHomeFeed.tsx:311
+#: src/view/screens/PreferencesFollowingFeed.tsx:311
#: src/view/screens/Settings/ExportCarDialog.tsx:93
#: src/view/screens/Settings/ExportCarDialog.tsx:94
msgid "Done"
@@ -1154,7 +1189,7 @@ msgstr ""
msgid "Download CAR file"
msgstr ""
-#: src/view/com/composer/text-input/TextInput.web.tsx:247
+#: src/view/com/composer/text-input/TextInput.web.tsx:249
msgid "Drop to add images"
msgstr "ęę¾å³åÆę·»å å¾ē"
@@ -1200,7 +1235,7 @@ msgstr "ē¼č¾"
msgid "Edit image"
msgstr "ē¼č¾å¾ē"
-#: src/view/screens/ProfileList.tsx:432
+#: src/view/screens/ProfileList.tsx:433
msgid "Edit list details"
msgstr "ē¼č¾å蔨详ę
"
@@ -1218,15 +1253,16 @@ msgstr "ē¼č¾čŖå®ä¹äæ”ęÆęµ"
msgid "Edit my profile"
msgstr "ē¼č¾äøŖäŗŗčµę"
-#: src/view/com/profile/ProfileHeader.tsx:417
+#: src/view/com/profile/ProfileHeader.tsx:418
msgid "Edit profile"
msgstr "ē¼č¾čµę"
-#: src/view/com/profile/ProfileHeader.tsx:422
+#: src/view/com/profile/ProfileHeader.tsx:423
msgid "Edit Profile"
msgstr "ē¼č¾čµę"
-#: src/view/screens/Feeds.tsx:356
+#: src/view/com/home/HomeHeaderLayout.web.tsx:59
+#: src/view/screens/Feeds.tsx:355
msgid "Edit Saved Feeds"
msgstr "ē¼č¾äæåēäæ”ęÆęµ"
@@ -1246,16 +1282,14 @@ msgstr "ē¼č¾ä½ ē蓦ę·ęčæ°"
msgid "Education"
msgstr "ęč²"
-#: src/view/com/auth/create/Step1.tsx:195
-#: src/view/com/auth/create/Step2.tsx:194
-#: src/view/com/auth/create/Step2.tsx:269
+#: src/view/com/auth/create/Step1.tsx:199
#: src/view/com/auth/login/ForgotPasswordForm.tsx:156
#: src/view/com/modals/ChangeEmail.tsx:141
#: src/view/com/modals/Waitlist.tsx:88
msgid "Email"
msgstr "ēµåé®ē®±"
-#: src/view/com/auth/create/Step1.tsx:186
+#: src/view/com/auth/create/Step1.tsx:190
#: src/view/com/auth/login/ForgotPasswordForm.tsx:147
msgid "Email address"
msgstr "é®ē®±å°å"
@@ -1298,7 +1332,7 @@ msgstr "åÆēØå¤éØåŖä½"
msgid "Enable media players for"
msgstr "åÆēØåŖä½ęę¾åØ"
-#: src/view/screens/PreferencesHomeFeed.tsx:147
+#: src/view/screens/PreferencesFollowingFeed.tsx:147
msgid "Enable this setting to only see replies between people you follow."
msgstr "åÆēØę¤č®¾ē½®ä»„ä»
ę„ēä½ å
³ę³Øēäŗŗä¹é“ēåå¤ć"
@@ -1310,6 +1344,11 @@ msgstr "ē»ęäæ”ęÆęµ"
msgid "Enter a name for this App Password"
msgstr "äøŗę¤ App äøēØåÆē å½å"
+#: src/components/dialogs/MutedWords.tsx:87
+#: src/components/dialogs/MutedWords.tsx:88
+msgid "Enter a word or tag"
+msgstr ""
+
#: src/view/com/modals/VerifyEmail.tsx:105
msgid "Enter Confirmation Code"
msgstr "č¾å
„éŖčÆē "
@@ -1326,7 +1365,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/Step1.tsx:247
+#: src/view/com/auth/create/Step1.tsx:251
#: src/view/com/modals/BirthDateSettings.tsx:74
msgid "Enter your birth date"
msgstr "č¾å
„ä½ ēåŗēę„ę"
@@ -1335,7 +1374,7 @@ msgstr "č¾å
„ä½ ēåŗēę„ę"
msgid "Enter your email"
msgstr "č¾å
„ä½ ēēµåé®ē®±"
-#: src/view/com/auth/create/Step1.tsx:191
+#: src/view/com/auth/create/Step1.tsx:195
msgid "Enter your email address"
msgstr "č¾å
„ä½ ēēµåé®ē®±"
@@ -1348,14 +1387,18 @@ msgid "Enter your new email address below."
msgstr "请åØäøę¹č¾å
„ä½ ę°ēēµåé®ē®±ć"
#: src/view/com/auth/create/Step2.tsx:188
-msgid "Enter your phone number"
-msgstr "č¾å
„ä½ ēęęŗå·ē "
+#~ msgid "Enter your phone number"
+#~ msgstr "č¾å
„ä½ ēęęŗå·ē "
#: src/view/com/auth/login/Login.tsx:99
msgid "Enter your username and password"
msgstr "č¾å
„ä½ ēēØę·åååÆē "
-#: src/view/screens/Search/Search.tsx:109
+#: src/view/com/auth/create/Step3.tsx:67
+msgid "Error receiving captcha response."
+msgstr ""
+
+#: src/view/screens/Search/Search.tsx:110
msgid "Error:"
msgstr "é误ļ¼"
@@ -1407,7 +1450,7 @@ msgstr "å¤éØåŖä½"
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/Navigation.tsx:258
+#: src/Navigation.tsx:261
#: src/view/screens/PreferencesExternalEmbeds.tsx:52
#: src/view/screens/Settings/index.tsx:657
msgid "External Media Preferences"
@@ -1426,7 +1469,7 @@ msgstr "å建 App äøēØåÆē 失蓄ć"
msgid "Failed to create the list. Check your internet connection and try again."
msgstr "ę ę³å建å蔨ć请ę£ę„ä½ ēäŗčē½čæę„å¹¶éčÆć"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:88
+#: src/view/com/util/forms/PostDropdownBtn.tsx:110
msgid "Failed to delete post, please try again"
msgstr "ę ę³å é¤åøåļ¼čÆ·éčÆ"
@@ -1439,25 +1482,26 @@ msgstr "ę ę³å č½½ęØčäæ”ęÆęµ"
msgid "Feed"
msgstr "äæ”ęÆęµ"
-#: src/view/com/feeds/FeedSourceCard.tsx:229
+#: src/view/com/feeds/FeedSourceCard.tsx:231
msgid "Feed by {0}"
msgstr "äæ”ęÆęµē± {0} å建"
-#: src/view/screens/Feeds.tsx:631
+#: src/view/screens/Feeds.tsx:605
msgid "Feed offline"
msgstr "äæ”ęÆęµå·²ē¦»ēŗæ"
#: src/view/com/feeds/FeedPage.tsx:143
-msgid "Feed Preferences"
-msgstr "äæ”ęÆęµé¦é锹"
+#~ msgid "Feed Preferences"
+#~ msgstr "äæ”ęÆęµé¦é锹"
-#: src/view/shell/desktop/RightNav.tsx:69
+#: src/view/shell/desktop/RightNav.tsx:61
#: src/view/shell/Drawer.tsx:311
msgid "Feedback"
msgstr "åé¦"
-#: src/Navigation.tsx:442
-#: src/view/screens/Feeds.tsx:548
+#: src/Navigation.tsx:445
+#: src/view/screens/Feeds.tsx:419
+#: src/view/screens/Feeds.tsx:524
#: src/view/screens/Profile.tsx:184
#: src/view/shell/bottom-bar/BottomBar.tsx:181
#: src/view/shell/desktop/LeftNav.tsx:342
@@ -1478,7 +1522,7 @@ msgstr "äæ”ęÆęµē±ēØę·å建并箔ēćéę©äøäŗä½ ęå
“č¶£ēäæ”ęÆęµ
msgid "Feeds are custom algorithms that users build with a little coding expertise. <0/> for more information."
msgstr "å建俔ęÆęµč¦ę±äøäŗē¼ēØåŗē”ćę„ē <0/> 仄č·å详ę
ć"
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:70
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:76
msgid "Feeds can be topical as well!"
msgstr "äæ”ęÆęµä¹åÆä»„ęÆčÆé¢ę§ēļ¼"
@@ -1492,11 +1536,11 @@ msgstr "ęē»ē”®å®"
msgid "Find accounts to follow"
msgstr "寻ę¾äøäŗč“¦ę·å
³ę³Ø"
-#: src/view/screens/Search/Search.tsx:439
+#: src/view/screens/Search/Search.tsx:440
msgid "Find users on Bluesky"
msgstr "寻ę¾äøäŗę£åØä½æēØ Bluesky ēēØę·"
-#: src/view/screens/Search/Search.tsx:437
+#: src/view/screens/Search/Search.tsx:438
msgid "Find users with the search tool on the right"
msgstr "使ēØå³ä¾§ēå·„å
·ę„ęē“¢ēØę·"
@@ -1504,9 +1548,13 @@ msgstr "使ēØå³ä¾§ēå·„å
·ę„ęē“¢ēØę·"
msgid "Finding similar accounts..."
msgstr "寻ę¾ē±»ä¼¼ē蓦ę·..."
+#: src/view/screens/PreferencesFollowingFeed.tsx:111
+msgid "Fine-tune the content you see on your Following feed."
+msgstr ""
+
#: src/view/screens/PreferencesHomeFeed.tsx:111
-msgid "Fine-tune the content you see on your home screen."
-msgstr "å¾®č°ä½ åØäø»é”µäøęēå°ēå
容ć"
+#~ msgid "Fine-tune the content you see on your home screen."
+#~ msgstr "å¾®č°ä½ åØäø»é”µäøęēå°ēå
容ć"
#: src/view/screens/PreferencesThreads.tsx:60
msgid "Fine-tune the discussion threads."
@@ -1531,7 +1579,7 @@ msgstr "åē“翻转"
#: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:181
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:136
-#: src/view/com/profile/ProfileHeader.tsx:512
+#: src/view/com/profile/ProfileHeader.tsx:513
msgid "Follow"
msgstr "å
³ę³Ø"
@@ -1542,7 +1590,7 @@ msgstr "å
³ę³Ø"
#: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:58
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:122
-#: src/view/com/profile/ProfileHeader.tsx:503
+#: src/view/com/profile/ProfileHeader.tsx:504
msgid "Follow {0}"
msgstr "å
³ę³Ø {0}"
@@ -1566,7 +1614,7 @@ msgstr "ē± {0} å
³ę³Ø"
msgid "Followed users"
msgstr "å·²å
³ę³ØēēØę·"
-#: src/view/screens/PreferencesHomeFeed.tsx:154
+#: src/view/screens/PreferencesFollowingFeed.tsx:154
msgid "Followed users only"
msgstr "ä»
éå·²å
³ę³ØēēØę·"
@@ -1579,16 +1627,24 @@ msgid "Followers"
msgstr "å
³ę³Øč
"
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:136
-#: src/view/com/profile/ProfileHeader.tsx:494
+#: src/view/com/profile/ProfileHeader.tsx:495
#: src/view/screens/ProfileFollows.tsx:25
msgid "Following"
msgstr "ę£åØå
³ę³Ø"
-#: src/view/com/profile/ProfileHeader.tsx:148
+#: src/view/com/profile/ProfileHeader.tsx:149
msgid "Following {0}"
msgstr "ę£åØå
³ę³Ø {0}"
-#: src/view/com/profile/ProfileHeader.tsx:545
+#: src/Navigation.tsx:248
+#: src/view/com/home/HomeHeaderLayout.web.tsx:45
+#: src/view/com/home/HomeHeaderLayoutMobile.tsx:83
+#: src/view/screens/PreferencesFollowingFeed.tsx:104
+#: src/view/screens/Settings/index.tsx:543
+msgid "Following Feed Preferences"
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:546
msgid "Follows you"
msgstr "å·²å
³ę³Ø"
@@ -1642,8 +1698,8 @@ msgstr "å¼å§"
msgid "Go back"
msgstr "čæå"
-#: src/view/screens/ProfileFeed.tsx:105
-#: src/view/screens/ProfileFeed.tsx:110
+#: src/view/screens/ProfileFeed.tsx:106
+#: src/view/screens/ProfileFeed.tsx:111
#: src/view/screens/ProfileList.tsx:897
#: src/view/screens/ProfileList.tsx:902
msgid "Go Back"
@@ -1654,7 +1710,7 @@ msgstr "čæå"
msgid "Go back to previous step"
msgstr "čæåäøäøę„"
-#: src/view/screens/Search/Search.tsx:724
+#: src/view/screens/Search/Search.tsx:747
#: src/view/shell/desktop/Search.tsx:262
msgid "Go to @{queryMaybeHandle}"
msgstr "č½¬å° @{queryMaybeHandle}"
@@ -1671,11 +1727,15 @@ msgstr "转å°äøäøäøŖ"
msgid "Handle"
msgstr "ēØę·čÆå«ē¬¦"
-#: src/view/com/auth/create/CreateAccount.tsx:197
+#: src/components/RichText.tsx:188
+msgid "Hashtag: {tag}"
+msgstr ""
+
+#: src/view/com/auth/create/CreateAccount.tsx:208
msgid "Having trouble?"
msgstr "ä»»ä½ēé®ļ¼"
-#: src/view/shell/desktop/RightNav.tsx:98
+#: src/view/shell/desktop/RightNav.tsx:90
#: src/view/shell/Drawer.tsx:321
msgid "Help"
msgstr "åø®å©"
@@ -1684,11 +1744,11 @@ msgstr "åø®å©"
msgid "Here are some accounts for you to follow"
msgstr "čæéęÆäøäŗęØčå
³ę³ØēēØę·"
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:79
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:85
msgid "Here are some popular topical feeds. You can choose to follow as many as you like."
msgstr "čæéęÆäøäŗęµč”ēäæ”ęÆęµä¾ä½ ęéć"
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:74
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:80
msgid "Here are some topical feeds based on your interests: {interestsText}. You can choose to follow as many as you like."
msgstr "čæéęÆäøäŗåŗäŗä½ å
“č¶£ęęØčēäæ”ęÆęµä¾ä½ ęéļ¼{interestsText}ć"
@@ -1709,7 +1769,7 @@ msgctxt "action"
msgid "Hide"
msgstr "éč"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:187
+#: src/view/com/util/forms/PostDropdownBtn.tsx:232
msgid "Hide post"
msgstr "éčåøå"
@@ -1718,7 +1778,7 @@ msgstr "éčåøå"
msgid "Hide the content"
msgstr "éčå
容"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:191
+#: src/view/com/util/forms/PostDropdownBtn.tsx:236
msgid "Hide this post?"
msgstr "éččæę”åøåļ¼"
@@ -1726,7 +1786,7 @@ msgstr "éččæę”åøåļ¼"
msgid "Hide user list"
msgstr "éčēØę·å蔨"
-#: src/view/com/profile/ProfileHeader.tsx:486
+#: src/view/com/profile/ProfileHeader.tsx:487
msgid "Hides posts from {0} in your feed"
msgstr "åØä½ ēäæ”ęÆęµäøéčę„čŖ {0} ēåøå"
@@ -1750,7 +1810,7 @@ msgstr "äæ”ęÆęµęå”åØčæåé误ēååŗļ¼čÆ·č系俔ęÆęµē结ę¤č
msgid "Hmm, we're having trouble finding this feed. It may have been deleted."
msgstr "ę们ę ę³ę¾å°čÆ„äæ”ęÆęµļ¼ä¼¼ä¹å·²č¢«å é¤ć"
-#: src/Navigation.tsx:432
+#: src/Navigation.tsx:435
#: src/view/shell/bottom-bar/BottomBar.tsx:137
#: src/view/shell/desktop/LeftNav.tsx:306
#: src/view/shell/Drawer.tsx:398
@@ -1762,10 +1822,10 @@ msgstr "主锵"
#: src/view/com/pager/FeedsTabBarMobile.tsx:123
#: src/view/screens/PreferencesHomeFeed.tsx:104
#: src/view/screens/Settings/index.tsx:543
-msgid "Home Feed Preferences"
-msgstr "主锵俔ęÆęµé¦é锹"
+#~ msgid "Home Feed Preferences"
+#~ msgstr "主锵俔ęÆęµé¦é锹"
-#: src/view/com/auth/create/Step1.tsx:78
+#: src/view/com/auth/create/Step1.tsx:82
#: src/view/com/auth/login/ForgotPasswordForm.tsx:120
msgid "Hosting provider"
msgstr "ęē®”ęå”ęä¾å"
@@ -1819,11 +1879,11 @@ msgstr "č¾å
„åéå°ä½ ēµåé®ē®±ēéŖčÆē 仄éē½®åÆē "
msgid "Input confirmation code for account deletion"
msgstr "č¾å
„å é¤ēØę·ēéŖčÆē "
-#: src/view/com/auth/create/Step1.tsx:196
+#: src/view/com/auth/create/Step1.tsx:200
msgid "Input email for Bluesky account"
msgstr "č¾å
„ Bluesky 蓦ę·ēēµåé®ē®±"
-#: src/view/com/auth/create/Step1.tsx:154
+#: src/view/com/auth/create/Step1.tsx:158
msgid "Input invite code to proceed"
msgstr "č¾å
„é请ē 仄继ē»"
@@ -1840,8 +1900,8 @@ msgid "Input password for account deletion"
msgstr "č¾å
„åÆē 仄å é¤č“¦ę·"
#: src/view/com/auth/create/Step2.tsx:196
-msgid "Input phone number for SMS verification"
-msgstr "č¾å
„ęęŗå·ē čæč”ēäæ”éŖčÆ"
+#~ msgid "Input phone number for SMS verification"
+#~ msgstr "č¾å
„ęęŗå·ē čæč”ēäæ”éŖčÆ"
#: src/view/com/auth/login/LoginForm.tsx:230
msgid "Input the password tied to {identifier}"
@@ -1852,8 +1912,8 @@ msgid "Input the username or email address you used at signup"
msgstr "č¾å
„注åę¶ä½æēØēēØę·åęēµåé®ē®±"
#: src/view/com/auth/create/Step2.tsx:271
-msgid "Input the verification code we have texted to you"
-msgstr "č¾å
„ę¶å°ēēäæ”éŖčÆē "
+#~ msgid "Input the verification code we have texted to you"
+#~ msgstr "č¾å
„ę¶å°ēēäæ”éŖčÆē "
#: src/view/com/modals/Waitlist.tsx:90
msgid "Input your email to get on the Bluesky waitlist"
@@ -1863,11 +1923,11 @@ msgstr "č¾å
„ä½ ēēµåé®ē®±ä»„å å
„ Bluesky å蔄å蔨"
msgid "Input your password"
msgstr "č¾å
„ä½ ēåÆē "
-#: src/view/com/auth/create/Step3.tsx:42
+#: src/view/com/auth/create/Step2.tsx:80
msgid "Input your user handle"
msgstr "č¾å
„ä½ ēēØę·čÆå«ē¬¦"
-#: src/view/com/post-thread/PostThreadItem.tsx:225
+#: src/view/com/post-thread/PostThreadItem.tsx:226
msgid "Invalid or unsupported post record"
msgstr "åøåč®°å½ę ęęäøåęÆę"
@@ -1883,12 +1943,12 @@ msgstr "ēØę·åęåÆē ę ę"
msgid "Invite a Friend"
msgstr "é请ęå"
-#: src/view/com/auth/create/Step1.tsx:144
-#: src/view/com/auth/create/Step1.tsx:153
+#: src/view/com/auth/create/Step1.tsx:148
+#: src/view/com/auth/create/Step1.tsx:157
msgid "Invite code"
msgstr "é请ē "
-#: src/view/com/auth/create/state.ts:199
+#: src/view/com/auth/create/state.ts:158
msgid "Invite code not accepted. Check that you input it correctly and try again."
msgstr "é请ē ę ęļ¼čÆ·ę£ę„ä½ č¾å
„ēé请ē å¹¶éčÆć"
@@ -1909,6 +1969,7 @@ msgid "It shows posts from the people you follow as they happen."
msgstr "ä»ä¼ę¾ē¤ŗä½ ęå
³ę³Øēäŗŗååøēåøåć"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:99
+#: src/view/com/auth/SplashScreen.web.tsx:138
msgid "Jobs"
msgstr "å·„ä½"
@@ -1916,8 +1977,8 @@ msgstr "å·„ä½"
msgid "Join the waitlist"
msgstr "å å
„å蔄å蔨"
-#: src/view/com/auth/create/Step1.tsx:170
#: src/view/com/auth/create/Step1.tsx:174
+#: src/view/com/auth/create/Step1.tsx:178
msgid "Join the waitlist."
msgstr "å å
„å蔄å蔨ć"
@@ -1968,7 +2029,7 @@ msgstr "äŗč§£čƦę
"
msgid "Learn more about this warning"
msgstr "äŗč§£å
³äŗčæäøŖč¦åēę“å¤čƦę
"
-#: src/view/screens/Moderation.tsx:243
+#: src/view/screens/Moderation.tsx:262
msgid "Learn more about what is public on Bluesky."
msgstr "äŗč§£ęå
³ Bluesky å
¬å¼å
容ēę“å¤čƦę
ć"
@@ -2024,7 +2085,7 @@ msgstr "ē¹čµ"
msgid "Liked By"
msgstr "ē¹čµ"
-#: src/view/com/feeds/FeedSourceCard.tsx:277
+#: src/view/com/feeds/FeedSourceCard.tsx:279
msgid "Liked by {0} {1}"
msgstr "{0} {1} ē¹čµ"
@@ -2044,7 +2105,7 @@ msgstr "ē¹čµä½ ēåøå"
msgid "Likes"
msgstr "ē¹čµ"
-#: src/view/com/post-thread/PostThreadItem.tsx:182
+#: src/view/com/post-thread/PostThreadItem.tsx:183
msgid "Likes on this post"
msgstr "ē¹čµčæę”åøå"
@@ -2056,19 +2117,19 @@ msgstr "å蔨"
msgid "List Avatar"
msgstr "å蔨夓å"
-#: src/view/screens/ProfileList.tsx:323
+#: src/view/screens/ProfileList.tsx:324
msgid "List blocked"
msgstr "å蔨已å±č½"
-#: src/view/com/feeds/FeedSourceCard.tsx:231
+#: src/view/com/feeds/FeedSourceCard.tsx:233
msgid "List by {0}"
msgstr "åč”Øē± {0} å建"
-#: src/view/screens/ProfileList.tsx:377
+#: src/view/screens/ProfileList.tsx:378
msgid "List deleted"
msgstr "å蔨已å é¤"
-#: src/view/screens/ProfileList.tsx:282
+#: src/view/screens/ProfileList.tsx:283
msgid "List muted"
msgstr "å蔨已éč"
@@ -2076,11 +2137,11 @@ msgstr "å蔨已éč"
msgid "List Name"
msgstr "å蔨åē§°"
-#: src/view/screens/ProfileList.tsx:342
+#: src/view/screens/ProfileList.tsx:343
msgid "List unblocked"
msgstr "åę¶å±č½å蔨"
-#: src/view/screens/ProfileList.tsx:301
+#: src/view/screens/ProfileList.tsx:302
msgid "List unmuted"
msgstr "åę¶éčå蔨"
@@ -2092,8 +2153,8 @@ msgstr "åę¶éčå蔨"
msgid "Lists"
msgstr "å蔨"
-#: src/view/com/post-thread/PostThread.tsx:276
-#: src/view/com/post-thread/PostThread.tsx:284
+#: src/view/com/post-thread/PostThread.tsx:333
+#: src/view/com/post-thread/PostThread.tsx:341
msgid "Load more posts"
msgstr "å č½½ę“å¤åøå"
@@ -2101,10 +2162,10 @@ msgstr "å č½½ę“å¤åøå"
msgid "Load new notifications"
msgstr "å č½½ę°ēéē„"
-#: src/view/com/feeds/FeedPage.tsx:190
+#: src/view/com/feeds/FeedPage.tsx:115
#: src/view/screens/Profile.tsx:440
-#: src/view/screens/ProfileFeed.tsx:494
-#: src/view/screens/ProfileList.tsx:680
+#: src/view/screens/ProfileFeed.tsx:495
+#: src/view/screens/ProfileList.tsx:681
msgid "Load new posts"
msgstr "å č½½ę°ēåøå"
@@ -2127,7 +2188,7 @@ msgstr "ę„åæ"
msgid "Log out"
msgstr "ē»åŗ"
-#: src/view/screens/Moderation.tsx:136
+#: src/view/screens/Moderation.tsx:155
msgid "Logged-out visibility"
msgstr "ęŖē»å½ēØę·åÆč§ę§"
@@ -2139,6 +2200,18 @@ msgstr "ē»å½ęŖååŗē蓦ę·"
msgid "Make sure this is where you intend to go!"
msgstr "请甮认ļ¼"
+#: src/components/dialogs/MutedWords.tsx:71
+msgid "Manage your muted words and tags"
+msgstr ""
+
+#: src/view/com/auth/create/Step2.tsx:118
+msgid "May not be longer than 253 characters"
+msgstr ""
+
+#: src/view/com/auth/create/Step2.tsx:109
+msgid "May only contain letters and numbers"
+msgstr ""
+
#: src/view/screens/Profile.tsx:182
msgid "Media"
msgstr "åŖä½"
@@ -2152,7 +2225,7 @@ msgid "Mentioned users"
msgstr "ęå°ēēØę·"
#: src/view/com/util/ViewHeader.tsx:81
-#: src/view/screens/Search/Search.tsx:623
+#: src/view/screens/Search/Search.tsx:646
msgid "Menu"
msgstr "čå"
@@ -2161,7 +2234,7 @@ msgid "Message from server: {0}"
msgstr "ę„čŖęå”åØēäæ”ęÆļ¼{0}"
#: src/Navigation.tsx:115
-#: src/view/screens/Moderation.tsx:64
+#: src/view/screens/Moderation.tsx:66
#: src/view/screens/Settings/index.tsx:625
#: src/view/shell/desktop/LeftNav.tsx:397
#: src/view/shell/Drawer.tsx:511
@@ -2169,7 +2242,7 @@ msgstr "ę„čŖęå”åØēäæ”ęÆļ¼{0}"
msgid "Moderation"
msgstr "éå¶"
-#: src/view/com/lists/ListCard.tsx:92
+#: src/view/com/lists/ListCard.tsx:93
#: src/view/com/modals/UserAddRemoveLists.tsx:206
msgid "Moderation list by {0}"
msgstr "éå¶åč”Øē± {0} å建"
@@ -2178,7 +2251,7 @@ msgstr "éå¶åč”Øē± {0} å建"
msgid "Moderation list by <0/>"
msgstr "éå¶åč”Øē± 0> å建"
-#: src/view/com/lists/ListCard.tsx:90
+#: src/view/com/lists/ListCard.tsx:91
#: src/view/com/modals/UserAddRemoveLists.tsx:204
#: src/view/screens/ProfileList.tsx:772
msgid "Moderation list by you"
@@ -2192,7 +2265,7 @@ msgstr "éå¶å蔨已å建"
msgid "Moderation list updated"
msgstr "éå¶å蔨已ę“ę°"
-#: src/view/screens/Moderation.tsx:95
+#: src/view/screens/Moderation.tsx:114
msgid "Moderation lists"
msgstr "éå¶å蔨"
@@ -2213,13 +2286,13 @@ msgstr "éå¶éę©åƹå
容设置äøč¬č¦åć"
msgid "More feeds"
msgstr "ę“å¤äæ”ęÆęµ"
-#: src/view/com/profile/ProfileHeader.tsx:522
-#: src/view/screens/ProfileFeed.tsx:362
-#: src/view/screens/ProfileList.tsx:616
+#: src/view/com/profile/ProfileHeader.tsx:523
+#: src/view/screens/ProfileFeed.tsx:363
+#: src/view/screens/ProfileList.tsx:617
msgid "More options"
msgstr "ę“å¤é锹"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:270
+#: src/view/com/util/forms/PostDropdownBtn.tsx:315
msgid "More post options"
msgstr "ę“å¤åøåé锹"
@@ -2227,35 +2300,71 @@ msgstr "ę“å¤åøåé锹"
msgid "Most-liked replies first"
msgstr "ęå¤ē¹čµä¼å
"
-#: src/view/com/profile/ProfileHeader.tsx:326
+#: src/view/com/auth/create/Step2.tsx:122
+msgid "Must be at least 3 characters"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:253
+msgid "Mute"
+msgstr ""
+
+#: src/components/TagMenu/index.web.tsx:91
+msgid "Mute {truncatedTag}"
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:327
msgid "Mute Account"
msgstr "éč蓦ę·"
-#: src/view/screens/ProfileList.tsx:543
+#: src/view/screens/ProfileList.tsx:544
msgid "Mute accounts"
msgstr "éč蓦ę·"
-#: src/view/screens/ProfileList.tsx:490
+#: src/components/TagMenu/index.tsx:211
+msgid "Mute all {tag} posts"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:131
+msgid "Mute in tags only"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:116
+msgid "Mute in text & tags"
+msgstr ""
+
+#: src/view/screens/ProfileList.tsx:491
msgid "Mute list"
msgstr "éčå蔨"
-#: src/view/screens/ProfileList.tsx:274
+#: src/view/screens/ProfileList.tsx:275
msgid "Mute these accounts?"
msgstr "éččæäŗč“¦ę·ļ¼"
-#: src/view/screens/ProfileList.tsx:278
+#: src/view/screens/ProfileList.tsx:279
msgid "Mute this List"
msgstr "éččæäøŖå蔨"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:171
+#: src/components/dialogs/MutedWords.tsx:109
+msgid "Mute this word in post text and tags"
+msgstr ""
+
+#: src/components/dialogs/MutedWords.tsx:124
+msgid "Mute this word in tags only"
+msgstr ""
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:202
msgid "Mute thread"
msgstr "éč讨论串"
-#: src/view/com/lists/ListCard.tsx:101
+#: src/view/com/util/forms/PostDropdownBtn.tsx:216
+msgid "Mute words & tags"
+msgstr ""
+
+#: src/view/com/lists/ListCard.tsx:102
msgid "Muted"
msgstr "å·²éč"
-#: src/view/screens/Moderation.tsx:109
+#: src/view/screens/Moderation.tsx:128
msgid "Muted accounts"
msgstr "å·²éč蓦ę·"
@@ -2268,7 +2377,11 @@ msgstr "å·²éč蓦ę·"
msgid "Muted accounts have their posts removed from your feed and from your notifications. Mutes are completely private."
msgstr "å·²éčē蓦ę·å°äøä¼åØä½ ēéē„ęę¶é“ēŗæäøę¾ē¤ŗļ¼č¢«éč蓦ę·å°äøä¼ę¶å°éē„ć"
-#: src/view/screens/ProfileList.tsx:276
+#: src/view/screens/Moderation.tsx:100
+msgid "Muted words & tags"
+msgstr ""
+
+#: src/view/screens/ProfileList.tsx:277
msgid "Muting is private. Muted accounts can interact with you, but you will not see their posts or receive notifications from them."
msgstr "被éčē蓦ę·å°äøä¼å¾ē„ä½ å·²å°ä»éčļ¼å·²éčē蓦ę·å°äøä¼åØä½ ēéē„ęę¶é“ēŗæäøę¾ē¤ŗć"
@@ -2276,7 +2389,7 @@ msgstr "被éčē蓦ę·å°äøä¼å¾ē„ä½ å·²å°ä»éčļ¼å·²éčē蓦ę·
msgid "My Birthday"
msgstr "ęēēę„"
-#: src/view/screens/Feeds.tsx:419
+#: src/view/screens/Feeds.tsx:663
msgid "My Feeds"
msgstr "čŖå®ä¹äæ”ęÆęµ"
@@ -2331,6 +2444,10 @@ msgstr "ę°øčæäøä¼å¤±å»åÆ¹ä½ ēå
³ę³Øč
åę°ę®ē访é®ć"
msgid "Never lose access to your followers or data."
msgstr "ę°øčæäøä¼å¤±å»åÆ¹ä½ ēå
³ę³Øč
ęę°ę®ē访é®ć"
+#: src/components/dialogs/MutedWords.tsx:244
+msgid "Nevermind"
+msgstr ""
+
#: src/view/screens/Lists.tsx:76
msgctxt "action"
msgid "New"
@@ -2352,17 +2469,17 @@ msgstr "ę°åÆē "
msgid "New Password"
msgstr "ę°åÆē "
-#: src/view/com/feeds/FeedPage.tsx:201
+#: src/view/com/feeds/FeedPage.tsx:126
msgctxt "action"
msgid "New post"
msgstr "ę°åøå"
-#: src/view/screens/Feeds.tsx:581
+#: src/view/screens/Feeds.tsx:555
#: src/view/screens/Notifications.tsx:168
#: src/view/screens/Profile.tsx:382
-#: src/view/screens/ProfileFeed.tsx:432
-#: src/view/screens/ProfileList.tsx:195
-#: src/view/screens/ProfileList.tsx:223
+#: src/view/screens/ProfileFeed.tsx:433
+#: src/view/screens/ProfileList.tsx:196
+#: src/view/screens/ProfileList.tsx:224
#: src/view/shell/desktop/LeftNav.tsx:248
msgid "New post"
msgstr "ę°åøå"
@@ -2384,7 +2501,7 @@ msgstr "ęę°åå¤ä¼å
"
msgid "News"
msgstr "ę°é»"
-#: src/view/com/auth/create/CreateAccount.tsx:161
+#: src/view/com/auth/create/CreateAccount.tsx:172
#: src/view/com/auth/login/ForgotPasswordForm.tsx:182
#: src/view/com/auth/login/ForgotPasswordForm.tsx:192
#: src/view/com/auth/login/LoginForm.tsx:291
@@ -2405,10 +2522,10 @@ msgstr "äøäøäøŖ"
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/PreferencesFollowingFeed.tsx:129
+#: src/view/screens/PreferencesFollowingFeed.tsx:200
+#: src/view/screens/PreferencesFollowingFeed.tsx:235
+#: src/view/screens/PreferencesFollowingFeed.tsx:272
#: src/view/screens/PreferencesThreads.tsx:106
#: src/view/screens/PreferencesThreads.tsx:129
msgid "No"
@@ -2419,7 +2536,7 @@ msgstr "åēØ"
msgid "No description"
msgstr "ę²”ęęčæ°"
-#: src/view/com/profile/ProfileHeader.tsx:169
+#: src/view/com/profile/ProfileHeader.tsx:170
msgid "No longer following {0}"
msgstr "äøåå
³ę³Ø {0}"
@@ -2432,13 +2549,13 @@ msgstr "ę²”ęéē„ļ¼"
msgid "No result"
msgstr "ę²”ęē»ę"
-#: src/view/screens/Feeds.tsx:524
+#: src/view/screens/Feeds.tsx:495
msgid "No results found for \"{query}\""
msgstr "ęŖę¾å°\"{query}\"ēē»ę"
#: src/view/com/modals/ListAddRemoveUsers.tsx:127
-#: src/view/screens/Search/Search.tsx:280
-#: src/view/screens/Search/Search.tsx:308
+#: src/view/screens/Search/Search.tsx:281
+#: src/view/screens/Search/Search.tsx:309
msgid "No results found for {query}"
msgstr "ęŖę¾å° {query} ēē»ę"
@@ -2464,11 +2581,11 @@ msgstr "ęŖę¾å°"
msgid "Not right now"
msgstr "äøęÆē°åØ"
-#: src/view/screens/Moderation.tsx:233
+#: src/view/screens/Moderation.tsx:252
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/Navigation.tsx:447
+#: src/Navigation.tsx:450
#: src/view/screens/Notifications.tsx:124
#: src/view/screens/Notifications.tsx:148
#: src/view/shell/bottom-bar/BottomBar.tsx:205
@@ -2502,7 +2619,7 @@ msgstr "ęę§ēåå¤ä¼å
"
msgid "Onboarding reset"
msgstr "éę°å¼å§å¼åƼęµēØ"
-#: src/view/com/composer/Composer.tsx:375
+#: src/view/com/composer/Composer.tsx:382
msgid "One or more images is missing alt text."
msgstr "č³å°ęäøå¼ å¾ē缺失äŗęæä»£ęåć"
@@ -2519,8 +2636,12 @@ msgstr "Oopsļ¼"
msgid "Open"
msgstr "ęå¼"
-#: src/view/com/composer/Composer.tsx:470
-#: src/view/com/composer/Composer.tsx:471
+#: src/view/screens/Moderation.tsx:75
+msgid "Open content filtering settings"
+msgstr ""
+
+#: src/view/com/composer/Composer.tsx:477
+#: src/view/com/composer/Composer.tsx:478
msgid "Open emoji picker"
msgstr "ęå¼ emoji éę©åØ"
@@ -2528,7 +2649,11 @@ msgstr "ęå¼ emoji éę©åØ"
msgid "Open links with in-app browser"
msgstr "åØå
ē½®ęµč§åØäøęå¼é¾ę„"
-#: src/view/com/pager/FeedsTabBarMobile.tsx:87
+#: src/view/screens/Moderation.tsx:92
+msgid "Open muted words settings"
+msgstr ""
+
+#: src/view/com/home/HomeHeaderLayoutMobile.tsx:49
msgid "Open navigation"
msgstr "ęå¼åƼčŖ"
@@ -2564,7 +2689,7 @@ msgstr "ęå¼åÆé
ē½®ēčÆčØč®¾ē½®"
msgid "Opens device photo gallery"
msgstr "ęå¼č®¾å¤ēøå"
-#: src/view/com/profile/ProfileHeader.tsx:419
+#: src/view/com/profile/ProfileHeader.tsx:420
msgid "Opens editor for profile display name, avatar, background image, and description"
msgstr "ęå¼äøŖäŗŗčµęļ¼å¦åē§°ć夓åćčęÆå¾ēćęčæ°ēļ¼ē¼č¾åØ"
@@ -2572,11 +2697,11 @@ msgstr "ęå¼äøŖäŗŗčµęļ¼å¦åē§°ć夓åćčęÆå¾ēćęčæ°ēļ¼ē¼
msgid "Opens external embeds settings"
msgstr "ęå¼å¤éØåµå
„设置"
-#: src/view/com/profile/ProfileHeader.tsx:574
+#: src/view/com/profile/ProfileHeader.tsx:575
msgid "Opens followers list"
msgstr "ęå¼å
³ę³Øč
å蔨"
-#: src/view/com/profile/ProfileHeader.tsx:593
+#: src/view/com/profile/ProfileHeader.tsx:594
msgid "Opens following list"
msgstr "ęå¼ę£åØå
³ę³Øå蔨"
@@ -2604,7 +2729,8 @@ msgstr "ęå¼éå¶č®¾ē½®"
msgid "Opens password reset form"
msgstr "ęå¼åÆē éē½®ē³čÆ·"
-#: src/view/screens/Feeds.tsx:357
+#: src/view/com/home/HomeHeaderLayout.web.tsx:60
+#: src/view/screens/Feeds.tsx:356
msgid "Opens screen to edit Saved Feeds"
msgstr "ęå¼ēØäŗē¼č¾å·²äæåäæ”ęÆęµēēé¢"
@@ -2660,8 +2786,8 @@ msgstr "ę ę³ę¾å°ę¤é”µé¢"
msgid "Page Not Found"
msgstr "ę ę³ę¾å°ę¤é”µé¢"
-#: src/view/com/auth/create/Step1.tsx:210
-#: src/view/com/auth/create/Step1.tsx:220
+#: src/view/com/auth/create/Step1.tsx:214
+#: src/view/com/auth/create/Step1.tsx:224
#: src/view/com/auth/login/LoginForm.tsx:226
#: src/view/com/auth/login/SetNewPasswordForm.tsx:161
#: src/view/com/modals/DeleteAccount.tsx:202
@@ -2697,15 +2823,15 @@ msgid "Pets"
msgstr "å® ē©"
#: src/view/com/auth/create/Step2.tsx:183
-msgid "Phone number"
-msgstr "ęęŗå·ē "
+#~ msgid "Phone number"
+#~ msgstr "ęęŗå·ē "
#: src/view/com/modals/SelfLabel.tsx:121
msgid "Pictures meant for adults."
msgstr "éåę幓人ēå¾åć"
-#: src/view/screens/ProfileFeed.tsx:353
-#: src/view/screens/ProfileList.tsx:580
+#: src/view/screens/ProfileFeed.tsx:354
+#: src/view/screens/ProfileList.tsx:581
msgid "Pin to home"
msgstr "åŗå®å°äø»é”µ"
@@ -2726,14 +2852,18 @@ msgstr "ęę¾č§é¢"
msgid "Plays the GIF"
msgstr "ęę¾ GIF"
-#: src/view/com/auth/create/state.ts:177
+#: src/view/com/auth/create/state.ts:124
msgid "Please choose your handle."
msgstr "čÆ·č®¾ē½®ä½ ēēØę·čÆå«ē¬¦ć"
-#: src/view/com/auth/create/state.ts:160
+#: src/view/com/auth/create/state.ts:117
msgid "Please choose your password."
msgstr "čÆ·č®¾ē½®ä½ ēåÆē ć"
+#: src/view/com/auth/create/state.ts:131
+msgid "Please complete the verification captcha."
+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 "ę“ę¹å请å
ē”®č®¤ä½ ēēµåé®ē®±ćčæęÆę·»å ēµåé®ē®±ę“ę°å·„å
·ēäø“ę¶č¦ę±ļ¼ę¤éå¶å°å¾åæ«č¢«ē§»é¤ć"
@@ -2743,22 +2873,22 @@ msgid "Please enter a name for your app password. All spaces is not allowed."
msgstr "请č¾å
„ App äøēØåÆē ēåē§°ļ¼äøå
许使ēØē©ŗę ¼ć"
#: src/view/com/auth/create/Step2.tsx:206
-msgid "Please enter a phone number that can receive SMS text messages."
-msgstr "请č¾å
„åÆä»„ę„ę¶ēäæ”ēęęŗå·ē ć"
+#~ msgid "Please enter a phone number that can receive SMS text messages."
+#~ msgstr "请č¾å
„åÆä»„ę„ę¶ēäæ”ēęęŗå·ē ć"
#: src/view/com/modals/AddAppPasswords.tsx:145
msgid "Please enter a unique name for this App Password or use our randomly generated one."
msgstr "请č¾å
„ę¤ App äøēØåÆē ēåÆäøåē§°ļ¼ę使ēØę们ęä¾ēéęŗēęåē§°ć"
#: src/view/com/auth/create/state.ts:170
-msgid "Please enter the code you received by SMS."
-msgstr "请č¾å
„ä½ ę¶å°ēēäæ”éŖčÆē ć"
+#~ msgid "Please enter the code you received by SMS."
+#~ msgstr "请č¾å
„ä½ ę¶å°ēēäæ”éŖčÆē ć"
#: src/view/com/auth/create/Step2.tsx:282
-msgid "Please enter the verification code sent to {phoneNumberFormatted}."
-msgstr "请č¾å
„åéå° {phoneNumberFormatted} ēéŖčÆē ć"
+#~ msgid "Please enter the verification code sent to {phoneNumberFormatted}."
+#~ msgstr "请č¾å
„åéå° {phoneNumberFormatted} ēéŖčÆē ć"
-#: src/view/com/auth/create/state.ts:146
+#: src/view/com/auth/create/state.ts:103
msgid "Please enter your email."
msgstr "请č¾å
„ä½ ēēµåé®ē®±ć"
@@ -2775,7 +2905,7 @@ msgstr "请åčÆęä»¬ä½ č®¤äøŗę¤å
容č¦å被é误设置ēåå ļ¼"
msgid "Please Verify Your Email"
msgstr "请éŖčÆä½ ēēµåé®ē®±"
-#: src/view/com/composer/Composer.tsx:215
+#: src/view/com/composer/Composer.tsx:222
msgid "Please wait for your link card to finish loading"
msgstr "请ēå¾
ä½ ēé¾ę„å”ēå č½½å®ę"
@@ -2787,18 +2917,18 @@ msgstr "ęæę²»"
msgid "Porn"
msgstr "č²ę
å
容"
-#: src/view/com/composer/Composer.tsx:350
-#: src/view/com/composer/Composer.tsx:358
+#: src/view/com/composer/Composer.tsx:357
+#: src/view/com/composer/Composer.tsx:365
msgctxt "action"
msgid "Post"
msgstr "ååø"
-#: src/view/com/post-thread/PostThread.tsx:246
+#: src/view/com/post-thread/PostThread.tsx:303
msgctxt "description"
msgid "Post"
msgstr "ååø"
-#: src/view/com/post-thread/PostThreadItem.tsx:174
+#: src/view/com/post-thread/PostThreadItem.tsx:175
msgid "Post by {0}"
msgstr "ååøč
{0}"
@@ -2808,11 +2938,11 @@ msgstr "ååøč
{0}"
msgid "Post by @{0}"
msgstr "ååøč
@{0}"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:84
+#: src/view/com/util/forms/PostDropdownBtn.tsx:90
msgid "Post deleted"
msgstr "å·²å é¤åøå"
-#: src/view/com/post-thread/PostThread.tsx:398
+#: src/view/com/post-thread/PostThread.tsx:462
msgid "Post hidden"
msgstr "å·²éčåøå"
@@ -2824,14 +2954,22 @@ msgstr "åøåčÆčØ"
msgid "Post Languages"
msgstr "åøåčÆčØ"
-#: src/view/com/post-thread/PostThread.tsx:450
+#: src/view/com/post-thread/PostThread.tsx:514
msgid "Post not found"
msgstr "ę ę³ę¾å°åøå"
+#: src/components/TagMenu/index.tsx:257
+msgid "posts"
+msgstr ""
+
#: src/view/screens/Profile.tsx:180
msgid "Posts"
msgstr "åøå"
+#: src/components/dialogs/MutedWords.tsx:77
+msgid "Posts can be muted based on their text, their tags, or both."
+msgstr ""
+
#: src/view/com/posts/FeedErrorMessage.tsx:64
msgid "Posts hidden"
msgstr "å·²éčåøå"
@@ -2853,7 +2991,7 @@ msgid "Prioritize Your Follows"
msgstr "å
³ę³Øč
ä¼å
"
#: src/view/screens/Settings/index.tsx:632
-#: src/view/shell/desktop/RightNav.tsx:80
+#: src/view/shell/desktop/RightNav.tsx:72
msgid "Privacy"
msgstr "éē§"
@@ -2896,11 +3034,11 @@ msgstr "å
¬å¼äøåÆå
±äŗ«ēę¹ééčęå±č½å蔨ć"
msgid "Public, shareable lists which can drive feeds."
msgstr "å
¬å¼äøåÆå
±äŗ«ēå蔨ļ¼åÆä½äøŗäæ”ęÆęµä½æēØć"
-#: src/view/com/composer/Composer.tsx:335
+#: src/view/com/composer/Composer.tsx:342
msgid "Publish post"
msgstr "ååøåøå"
-#: src/view/com/composer/Composer.tsx:335
+#: src/view/com/composer/Composer.tsx:342
msgid "Publish reply"
msgstr "ååøåå¤"
@@ -2934,6 +3072,7 @@ msgstr "ęØčäæ”ęÆęµ"
msgid "Recommended Users"
msgstr "ęØčēēØę·"
+#: src/components/dialogs/MutedWords.tsx:249
#: src/view/com/modals/ListAddRemoveUsers.tsx:264
#: src/view/com/modals/SelfLabel.tsx:83
#: src/view/com/modals/UserAddRemoveLists.tsx:219
@@ -2942,7 +3081,7 @@ msgstr "ęØčēēØę·"
msgid "Remove"
msgstr "å é¤"
-#: src/view/com/feeds/FeedSourceCard.tsx:106
+#: src/view/com/feeds/FeedSourceCard.tsx:108
msgid "Remove {0} from my feeds?"
msgstr "å° {0} ä»čŖå®ä¹äæ”ęÆęµäøē§»é¤ļ¼"
@@ -2955,11 +3094,11 @@ msgstr "å é¤č“¦å·"
msgid "Remove feed"
msgstr "å é¤äæ”ęÆęµ"
-#: src/view/com/feeds/FeedSourceCard.tsx:105
-#: src/view/com/feeds/FeedSourceCard.tsx:167
-#: src/view/com/feeds/FeedSourceCard.tsx:172
-#: src/view/com/feeds/FeedSourceCard.tsx:243
-#: src/view/screens/ProfileFeed.tsx:272
+#: src/view/com/feeds/FeedSourceCard.tsx:107
+#: src/view/com/feeds/FeedSourceCard.tsx:169
+#: src/view/com/feeds/FeedSourceCard.tsx:174
+#: src/view/com/feeds/FeedSourceCard.tsx:245
+#: src/view/screens/ProfileFeed.tsx:273
msgid "Remove from my feeds"
msgstr "ä»čŖå®ä¹äæ”ęÆęµäøå é¤"
@@ -2971,11 +3110,15 @@ msgstr "å é¤å¾ē"
msgid "Remove image preview"
msgstr "å é¤å¾ēé¢č§"
+#: src/components/dialogs/MutedWords.tsx:294
+msgid "Remove mute word from your list"
+msgstr ""
+
#: src/view/com/modals/Repost.tsx:47
msgid "Remove repost"
msgstr "å é¤č½¬å"
-#: src/view/com/feeds/FeedSourceCard.tsx:173
+#: src/view/com/feeds/FeedSourceCard.tsx:175
msgid "Remove this feed from my feeds?"
msgstr "å°čæäøŖäæ”ęÆęµä»čŖå®ä¹äæ”ęÆęµå蔨äøå é¤ļ¼"
@@ -2988,8 +3131,8 @@ msgstr "å°čæäøŖäæ”ęÆęµä»äæåēäæ”ęÆęµå蔨äøå é¤ļ¼"
msgid "Removed from list"
msgstr "ä»å蔨äøå é¤"
-#: src/view/com/feeds/FeedSourceCard.tsx:111
-#: src/view/com/feeds/FeedSourceCard.tsx:178
+#: src/view/com/feeds/FeedSourceCard.tsx:113
+#: src/view/com/feeds/FeedSourceCard.tsx:180
msgid "Removed from my feeds"
msgstr "ä»čŖå®ä¹äæ”ęÆęµäøå é¤"
@@ -3005,16 +3148,16 @@ msgstr "åå¤"
msgid "Replies to this thread are disabled"
msgstr "对ę¤č®Øč®ŗäø²ēåå¤å·²č¢«ē¦ēØ"
-#: src/view/com/composer/Composer.tsx:348
+#: src/view/com/composer/Composer.tsx:355
msgctxt "action"
msgid "Reply"
msgstr "åå¤"
-#: src/view/screens/PreferencesHomeFeed.tsx:144
+#: src/view/screens/PreferencesFollowingFeed.tsx:144
msgid "Reply Filters"
msgstr "åå¤čæę»¤åØ"
-#: src/view/com/post/Post.tsx:166
+#: src/view/com/post/Post.tsx:167
#: src/view/com/posts/FeedItem.tsx:287
msgctxt "description"
msgid "Reply to <0/>"
@@ -3024,20 +3167,20 @@ msgstr "åå¤ <0/>"
msgid "Report {collectionName}"
msgstr "äø¾ę„ {collectionName}"
-#: src/view/com/profile/ProfileHeader.tsx:360
+#: src/view/com/profile/ProfileHeader.tsx:361
msgid "Report Account"
msgstr "äø¾ę„蓦ę·"
-#: src/view/screens/ProfileFeed.tsx:292
+#: src/view/screens/ProfileFeed.tsx:293
msgid "Report feed"
msgstr "äø¾ę„äæ”ęÆęµ"
-#: src/view/screens/ProfileList.tsx:458
+#: src/view/screens/ProfileList.tsx:459
msgid "Report List"
msgstr "äø¾ę„å蔨"
#: src/view/com/modals/report/SendReportButton.tsx:37
-#: src/view/com/util/forms/PostDropdownBtn.tsx:210
+#: src/view/com/util/forms/PostDropdownBtn.tsx:255
msgid "Report post"
msgstr "äø¾ę„åøå"
@@ -3074,7 +3217,7 @@ msgstr "ē± <0/> 转å"
msgid "reposted your post"
msgstr "转åä½ ēåøå"
-#: src/view/com/post-thread/PostThreadItem.tsx:187
+#: src/view/com/post-thread/PostThreadItem.tsx:188
msgid "Reposts of this post"
msgstr "转åčæę”åøå"
@@ -3084,8 +3227,8 @@ msgid "Request Change"
msgstr "请ę±åę“"
#: src/view/com/auth/create/Step2.tsx:219
-msgid "Request code"
-msgstr "请ę±ē "
+#~ msgid "Request code"
+#~ msgstr "请ę±ē "
#: src/view/com/modals/ChangePassword.tsx:239
#: src/view/com/modals/ChangePassword.tsx:241
@@ -3096,7 +3239,7 @@ msgstr "甮认ē "
msgid "Require alt text before posting"
msgstr "č¦ę±ååøåęä¾ęæä»£ęę¬"
-#: src/view/com/auth/create/Step1.tsx:149
+#: src/view/com/auth/create/Step1.tsx:153
msgid "Required for this provider"
msgstr "åŗęä¾åč¦ę±"
@@ -3148,9 +3291,8 @@ msgstr "éčÆäøę¬”åŗéēęä½"
#: src/screens/Onboarding/StepInterests/index.tsx:221
#: src/screens/Onboarding/StepInterests/index.tsx:224
-#: src/view/com/auth/create/CreateAccount.tsx:170
-#: src/view/com/auth/create/CreateAccount.tsx:175
-#: src/view/com/auth/create/Step2.tsx:255
+#: src/view/com/auth/create/CreateAccount.tsx:181
+#: src/view/com/auth/create/CreateAccount.tsx:186
#: src/view/com/auth/login/LoginForm.tsx:268
#: src/view/com/auth/login/LoginForm.tsx:271
#: src/view/com/util/error/ErrorMessage.tsx:55
@@ -3159,16 +3301,16 @@ msgid "Retry"
msgstr "éčÆ"
#: src/view/com/auth/create/Step2.tsx:247
-msgid "Retry."
-msgstr "éčÆć"
+#~ msgid "Retry."
+#~ msgstr "éčÆć"
#: src/view/screens/ProfileList.tsx:898
msgid "Return to previous page"
msgstr "åå°äøäøé”µ"
#: src/view/shell/desktop/RightNav.tsx:55
-msgid "SANDBOX. Posts and accounts are not permanent."
-msgstr "ę²ē樔å¼ćåøåå蓦ę·äøä¼ę°øä¹
äæåć"
+#~ msgid "SANDBOX. Posts and accounts are not permanent."
+#~ msgstr "ę²ē樔å¼ćåøåå蓦ę·äøä¼ę°øä¹
äæåć"
#: src/view/com/lightbox/Lightbox.tsx:132
#: src/view/com/modals/CreateOrEditList.tsx:345
@@ -3181,7 +3323,7 @@ msgstr "äæå"
#: src/view/com/modals/ChangeHandle.tsx:173
#: src/view/com/modals/CreateOrEditList.tsx:337
#: src/view/com/modals/EditProfile.tsx:224
-#: src/view/screens/ProfileFeed.tsx:345
+#: src/view/screens/ProfileFeed.tsx:346
msgid "Save"
msgstr "äæå"
@@ -3221,14 +3363,14 @@ msgstr "ē§å¦"
msgid "Scroll to top"
msgstr "ę»åØå°é”¶éØ"
-#: src/Navigation.tsx:437
+#: src/Navigation.tsx:440
#: src/view/com/auth/LoggedOut.tsx:122
#: src/view/com/modals/ListAddRemoveUsers.tsx:75
#: src/view/com/util/forms/SearchInput.tsx:67
#: src/view/com/util/forms/SearchInput.tsx:79
-#: src/view/screens/Search/Search.tsx:418
-#: src/view/screens/Search/Search.tsx:645
-#: src/view/screens/Search/Search.tsx:663
+#: src/view/screens/Search/Search.tsx:419
+#: src/view/screens/Search/Search.tsx:668
+#: src/view/screens/Search/Search.tsx:686
#: src/view/shell/bottom-bar/BottomBar.tsx:159
#: src/view/shell/desktop/LeftNav.tsx:324
#: src/view/shell/desktop/Search.tsx:214
@@ -3238,11 +3380,19 @@ msgstr "ę»åØå°é”¶éØ"
msgid "Search"
msgstr "ęē“¢"
-#: src/view/screens/Search/Search.tsx:712
+#: src/view/screens/Search/Search.tsx:735
#: src/view/shell/desktop/Search.tsx:255
msgid "Search for \"{query}\""
msgstr "ęē“¢ \"{query}\""
+#: src/components/TagMenu/index.tsx:145
+msgid "Search for all posts by @{authorHandle} with tag {tag}"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:90
+msgid "Search for all posts with tag {tag}"
+msgstr ""
+
#: src/view/com/auth/LoggedOut.tsx:104
#: src/view/com/auth/LoggedOut.tsx:105
#: src/view/com/modals/ListAddRemoveUsers.tsx:70
@@ -3253,6 +3403,22 @@ msgstr "ęē“¢ēØę·"
msgid "Security Step Required"
msgstr "ęéēå®å
Øę„éŖ¤"
+#: src/components/TagMenu/index.web.tsx:50
+msgid "See {truncatedTag} posts"
+msgstr ""
+
+#: src/components/TagMenu/index.web.tsx:67
+msgid "See {truncatedTag} posts by user"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:128
+msgid "See <0>{tag}0> posts"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:189
+msgid "See <0>{tag}0> posts by this user"
+msgstr ""
+
#: src/view/screens/SavedFeeds.tsx:163
msgid "See this guide"
msgstr "ę„ēęå"
@@ -3277,7 +3443,7 @@ msgstr "éę©å·²ååØē蓦ę·"
msgid "Select option {i} of {numItems}"
msgstr "ä» {i} 锹äøéę© {numItems} 锹"
-#: src/view/com/auth/create/Step1.tsx:99
+#: src/view/com/auth/create/Step1.tsx:103
#: src/view/com/auth/login/LoginForm.tsx:150
msgid "Select service"
msgstr "éę©ęå”"
@@ -3290,7 +3456,7 @@ msgstr "éę©ä»„äøäøäŗč“¦ę·čæč”å
³ę³Ø"
msgid "Select the service that hosts your data."
msgstr ""
-#: src/screens/Onboarding/StepTopicalFeeds.tsx:90
+#: src/screens/Onboarding/StepTopicalFeeds.tsx:96
msgid "Select topical feeds to follow from the list below"
msgstr "ä»äøé¢ēå蔨äøéę©č¦å
³ę³Øēäøé¢äæ”ęÆęµ"
@@ -3311,8 +3477,8 @@ msgid "Select your interests from the options below"
msgstr "äøé¢éę©ä½ ęå
“č¶£ēé锹"
#: src/view/com/auth/create/Step2.tsx:155
-msgid "Select your phone's country"
-msgstr "éę©ä½ ēēµčÆåŗå·"
+#~ msgid "Select your phone's country"
+#~ msgstr "éę©ä½ ēēµčÆåŗå·"
#: src/view/screens/LanguageSettings.tsx:190
msgid "Select your preferred language for translations in your feed."
@@ -3391,19 +3557,19 @@ msgstr "设置深č²ęØ”å¼č³ęę·”"
msgid "Set new password"
msgstr "设置ę°åÆē "
-#: src/view/com/auth/create/Step1.tsx:221
+#: src/view/com/auth/create/Step1.tsx:225
msgid "Set password"
msgstr "设置åÆē "
-#: src/view/screens/PreferencesHomeFeed.tsx:225
+#: src/view/screens/PreferencesFollowingFeed.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
+#: src/view/screens/PreferencesFollowingFeed.tsx:122
msgid "Set this setting to \"No\" to hide all replies from your feed."
msgstr "åēØę¤č®¾ē½®é”¹ä»„éčę„čŖč®¢é
äæ”ęÆęµēęęåå¤ć"
-#: src/view/screens/PreferencesHomeFeed.tsx:191
+#: src/view/screens/PreferencesFollowingFeed.tsx:191
msgid "Set this setting to \"No\" to hide all reposts from your feed."
msgstr "åēØę¤č®¾ē½®é”¹ä»„éčę„čŖč®¢é
äæ”ęÆęµēęę转åć"
@@ -3412,8 +3578,12 @@ msgid "Set this setting to \"Yes\" to show replies in a threaded view. This is a
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 "åÆēØę¤č®¾ē½®é”¹ä»„åØå
³ę³Øäæ”ęÆęµäøę¾ē¤ŗå·²äæåäæ”ęÆęµēę ·ä¾ćčæęÆäøäøŖå®éŖę§åč½ć"
+#~ 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/PreferencesFollowingFeed.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/screens/Onboarding/Layout.tsx:50
msgid "Set up your account"
@@ -3431,7 +3601,7 @@ msgstr "设置ēØäŗéē½®åÆē ēēµåé®ē®±"
msgid "Sets hosting provider for password reset"
msgstr "设置ēØäŗåÆē éē½®ēęē®”ęä¾åäæ”ęÆ"
-#: src/view/com/auth/create/Step1.tsx:100
+#: src/view/com/auth/create/Step1.tsx:104
#: src/view/com/auth/login/LoginForm.tsx:151
msgid "Sets server for the Bluesky client"
msgstr "设置 Bluesky 客ę·ē«Æēęå”åØ"
@@ -3453,13 +3623,13 @@ msgctxt "action"
msgid "Share"
msgstr "åäŗ«"
-#: src/view/com/profile/ProfileHeader.tsx:294
-#: src/view/com/util/forms/PostDropdownBtn.tsx:153
-#: src/view/screens/ProfileList.tsx:417
+#: src/view/com/profile/ProfileHeader.tsx:295
+#: src/view/com/util/forms/PostDropdownBtn.tsx:184
+#: src/view/screens/ProfileList.tsx:418
msgid "Share"
msgstr "åäŗ«"
-#: src/view/screens/ProfileFeed.tsx:304
+#: src/view/screens/ProfileFeed.tsx:305
msgid "Share feed"
msgstr "åäŗ«äæ”ęÆęµ"
@@ -3471,7 +3641,7 @@ msgstr "åäŗ«äæ”ęÆęµ"
msgid "Show"
msgstr "ę¾ē¤ŗ"
-#: src/view/screens/PreferencesHomeFeed.tsx:68
+#: src/view/screens/PreferencesFollowingFeed.tsx:68
msgid "Show all replies"
msgstr "ę¾ē¤ŗęęåå¤"
@@ -3483,21 +3653,21 @@ msgstr "ä»ē¶ę¾ē¤ŗ"
msgid "Show embeds from {0}"
msgstr "ę¾ē¤ŗę„čŖ {0} ēåµå
„å
容"
-#: src/view/com/profile/ProfileHeader.tsx:458
+#: src/view/com/profile/ProfileHeader.tsx:459
msgid "Show follows similar to {0}"
msgstr "ę¾ē¤ŗē±»ä¼¼äŗ {0} ēå
³ę³Øč
"
-#: src/view/com/post-thread/PostThreadItem.tsx:539
-#: src/view/com/post/Post.tsx:197
+#: src/view/com/post-thread/PostThreadItem.tsx:538
+#: src/view/com/post/Post.tsx:198
#: src/view/com/posts/FeedItem.tsx:363
msgid "Show More"
msgstr "ę¾ē¤ŗę“å¤"
-#: src/view/screens/PreferencesHomeFeed.tsx:258
+#: src/view/screens/PreferencesFollowingFeed.tsx:258
msgid "Show Posts from My Feeds"
msgstr "åØčŖå®ä¹äæ”ęÆęµäøę¾ē¤ŗåøå"
-#: src/view/screens/PreferencesHomeFeed.tsx:222
+#: src/view/screens/PreferencesFollowingFeed.tsx:222
msgid "Show Quote Posts"
msgstr "ę¾ē¤ŗå¼ēØåøå"
@@ -3513,7 +3683,7 @@ msgstr "åØå
³ę³Øäøę¾ē¤ŗå¼ēØ"
msgid "Show re-posts in Following feed"
msgstr "åØå
³ę³Øäæ”ęÆęµäøę¾ē¤ŗč½¬å"
-#: src/view/screens/PreferencesHomeFeed.tsx:119
+#: src/view/screens/PreferencesFollowingFeed.tsx:119
msgid "Show Replies"
msgstr "ę¾ē¤ŗåå¤"
@@ -3529,11 +3699,11 @@ msgstr "åØå
³ę³Øäøę¾ē¤ŗåå¤"
msgid "Show replies in Following feed"
msgstr "åØå
³ę³Øäæ”ęÆęµäøę¾ē¤ŗåå¤"
-#: src/view/screens/PreferencesHomeFeed.tsx:70
+#: src/view/screens/PreferencesFollowingFeed.tsx:70
msgid "Show replies with at least {value} {0}"
msgstr "ę¾ē¤ŗč³å°å
å« {value} {0} ēåå¤"
-#: src/view/screens/PreferencesHomeFeed.tsx:188
+#: src/view/screens/PreferencesFollowingFeed.tsx:188
msgid "Show Reposts"
msgstr "ę¾ē¤ŗč½¬å"
@@ -3550,18 +3720,18 @@ msgstr "ę¾ē¤ŗå
容"
msgid "Show users"
msgstr "ę¾ē¤ŗēØę·"
-#: src/view/com/profile/ProfileHeader.tsx:461
+#: src/view/com/profile/ProfileHeader.tsx:462
msgid "Shows a list of users similar to this user."
msgstr "ę¾ē¤ŗäøčÆ„ēØę·ēøä¼¼ēēØę·å蔨ć"
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:124
-#: src/view/com/profile/ProfileHeader.tsx:505
+#: src/view/com/profile/ProfileHeader.tsx:506
msgid "Shows posts from {0} in your feed"
msgstr "åØä½ ēäæ”ęÆęµäøę¾ē¤ŗę„čŖ {0} ēåøå"
#: src/view/com/auth/HomeLoggedOutCTA.tsx:70
#: src/view/com/auth/login/Login.tsx:98
-#: src/view/com/auth/SplashScreen.tsx:54
+#: src/view/com/auth/SplashScreen.tsx:79
#: src/view/shell/bottom-bar/BottomBar.tsx:285
#: src/view/shell/bottom-bar/BottomBar.tsx:286
#: src/view/shell/bottom-bar/BottomBar.tsx:288
@@ -3574,8 +3744,8 @@ 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
+#: src/view/com/auth/SplashScreen.tsx:82
+#: src/view/com/auth/SplashScreen.web.tsx:91
msgid "Sign In"
msgstr "ē»å½"
@@ -3642,8 +3812,8 @@ msgid "Skip this flow"
msgstr "č·³čæę¤ęµēØ"
#: src/view/com/auth/create/Step2.tsx:82
-msgid "SMS verification"
-msgstr "ēäæ”éŖčÆ"
+#~ msgid "SMS verification"
+#~ msgstr "ēäæ”éŖčÆ"
#: src/screens/Onboarding/index.tsx:40
msgid "Software Dev"
@@ -3657,7 +3827,7 @@ msgstr "ēØåŗå¼å"
msgid "Something went wrong. Check your email and try again."
msgstr "åŗäŗē¹é®é¢ļ¼čÆ·ę£ę„ä½ ēēµåé®ē®±å¹¶éčÆć"
-#: src/App.native.tsx:61
+#: src/App.native.tsx:63
msgid "Sorry! Your session expired. Please log in again."
msgstr "å¾ę±ęļ¼ä½ ēä¼čÆå·²čæęļ¼čÆ·éę°ē»å½ć"
@@ -3702,7 +3872,7 @@ msgstr "ę
äŗä¹¦"
msgid "Submit"
msgstr "ęäŗ¤"
-#: src/view/screens/ProfileList.tsx:607
+#: src/view/screens/ProfileList.tsx:608
msgid "Subscribe"
msgstr "订é
"
@@ -3711,11 +3881,11 @@ msgstr "订é
"
msgid "Subscribe to the {0} feed"
msgstr "订é
{0} äæ”ęÆęµ"
-#: src/view/screens/ProfileList.tsx:603
+#: src/view/screens/ProfileList.tsx:604
msgid "Subscribe to this list"
msgstr "订é
čæäøŖå蔨"
-#: src/view/screens/Search/Search.tsx:373
+#: src/view/screens/Search/Search.tsx:374
msgid "Suggested Follows"
msgstr "ęØčēå
³ę³Øč
"
@@ -3759,6 +3929,14 @@ msgstr "ē³»ē»"
msgid "System log"
msgstr "ē³»ē»ę„åæ"
+#: src/components/dialogs/MutedWords.tsx:288
+msgid "tag"
+msgstr ""
+
+#: src/components/TagMenu/index.tsx:74
+msgid "Tag menu: {tag}"
+msgstr ""
+
#: src/view/com/modals/crop-image/CropImage.web.tsx:112
msgid "Tall"
msgstr "é«"
@@ -3771,7 +3949,7 @@ msgstr "ē¹å»ę„ēå®ę“å
容"
msgid "Tech"
msgstr "ē§ę"
-#: src/view/shell/desktop/RightNav.tsx:89
+#: src/view/shell/desktop/RightNav.tsx:81
msgid "Terms"
msgstr "ę”款"
@@ -3782,12 +3960,20 @@ msgstr "ę”款"
msgid "Terms of Service"
msgstr "ęå”ę”款"
+#: src/components/dialogs/MutedWords.tsx:288
+msgid "text"
+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:262
+#: src/view/com/auth/create/CreateAccount.tsx:94
+msgid "That handle is already taken."
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:263
msgid "The account will be able to interact with you after unblocking."
msgstr "č§£é¤å±č½åļ¼čÆ„č“¦ę·å°č½å¤äøä½ äŗåØć"
@@ -3803,7 +3989,7 @@ msgstr "ēę许åÆå·²čæē§»č³ <0/>"
msgid "The following steps will help customize your Bluesky experience."
msgstr "仄äøę„éŖ¤å°åø®å©å®å¶ä½ ē Bluesky ä½éŖć"
-#: src/view/com/post-thread/PostThread.tsx:453
+#: src/view/com/post-thread/PostThread.tsx:517
msgid "The post may have been deleted."
msgstr "ę¤åøåä¼¼ä¹å·²č¢«å é¤ć"
@@ -3823,7 +4009,7 @@ msgstr "ęå”ę”款已čæē§»č³"
msgid "There are many feeds to try:"
msgstr "čæéęäŗäæ”ęÆęµä½ åÆä»„å°čÆļ¼"
-#: src/view/screens/ProfileFeed.tsx:549
+#: src/view/screens/ProfileFeed.tsx:550
msgid "There was an an issue contacting the server, please check your internet connection and try again."
msgstr "čæę„č³ęå”åØę¶åŗē°é®é¢ļ¼čÆ·ę£ę„ä½ ēäŗčē½čæę„å¹¶éčÆć"
@@ -3831,12 +4017,12 @@ msgstr "čæę„č³ęå”åØę¶åŗē°é®é¢ļ¼čÆ·ę£ę„ä½ ēäŗčē½čæę„å¹¶é
msgid "There was an an issue removing this feed. Please check your internet connection and try again."
msgstr "å é¤äæ”ęÆęµę¶åŗē°é®é¢ļ¼čÆ·ę£ę„ä½ ēäŗčē½čæę„å¹¶éčÆć"
-#: src/view/screens/ProfileFeed.tsx:209
+#: src/view/screens/ProfileFeed.tsx:210
msgid "There was an an issue updating your feeds, please check your internet connection and try again."
msgstr "ę“ę°äæ”ęÆęµę¶åŗē°é®é¢ļ¼čÆ·ę£ę„ä½ ēäŗčē½čæę„å¹¶éčÆć"
-#: src/view/screens/ProfileFeed.tsx:236
-#: src/view/screens/ProfileList.tsx:266
+#: src/view/screens/ProfileFeed.tsx:237
+#: src/view/screens/ProfileList.tsx:267
#: src/view/screens/SavedFeeds.tsx:209
#: src/view/screens/SavedFeeds.tsx:231
#: src/view/screens/SavedFeeds.tsx:252
@@ -3845,9 +4031,9 @@ msgstr "čæę„ęå”åØę¶åŗē°é®é¢"
#: src/view/com/auth/onboarding/RecommendedFeedsItem.tsx:57
#: src/view/com/auth/onboarding/RecommendedFeedsItem.tsx:66
-#: src/view/com/feeds/FeedSourceCard.tsx:113
-#: src/view/com/feeds/FeedSourceCard.tsx:127
-#: src/view/com/feeds/FeedSourceCard.tsx:181
+#: src/view/com/feeds/FeedSourceCard.tsx:115
+#: src/view/com/feeds/FeedSourceCard.tsx:129
+#: src/view/com/feeds/FeedSourceCard.tsx:183
msgid "There was an issue contacting your server"
msgstr "čæę„ęå”åØę¶åŗē°é®é¢"
@@ -3879,19 +4065,19 @@ msgstr "č·å App äøēØåÆē ę¶åŗē°é®é¢"
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:93
#: src/view/com/post-thread/PostThreadFollowBtn.tsx:105
-#: src/view/com/profile/ProfileHeader.tsx:156
-#: src/view/com/profile/ProfileHeader.tsx:177
-#: src/view/com/profile/ProfileHeader.tsx:216
-#: src/view/com/profile/ProfileHeader.tsx:229
-#: src/view/com/profile/ProfileHeader.tsx:249
-#: src/view/com/profile/ProfileHeader.tsx:271
+#: src/view/com/profile/ProfileHeader.tsx:157
+#: src/view/com/profile/ProfileHeader.tsx:178
+#: src/view/com/profile/ProfileHeader.tsx:217
+#: src/view/com/profile/ProfileHeader.tsx:230
+#: src/view/com/profile/ProfileHeader.tsx:250
+#: src/view/com/profile/ProfileHeader.tsx:272
msgid "There was an issue! {0}"
msgstr "åŗē°é®é¢äŗļ¼{0}"
-#: src/view/screens/ProfileList.tsx:287
-#: src/view/screens/ProfileList.tsx:306
-#: src/view/screens/ProfileList.tsx:328
-#: src/view/screens/ProfileList.tsx:347
+#: src/view/screens/ProfileList.tsx:288
+#: src/view/screens/ProfileList.tsx:307
+#: src/view/screens/ProfileList.tsx:329
+#: src/view/screens/ProfileList.tsx:348
msgid "There was an issue. Please check your internet connection and try again."
msgstr "åŗē°é®é¢äŗļ¼čÆ·ę£ę„ä½ ēäŗčē½čæę„å¹¶éčÆć"
@@ -3904,8 +4090,8 @@ msgid "There's been a rush of new users to Bluesky! We'll activate your account
msgstr "Bluesky čæę„äŗå¤§éę°ēØę·ļ¼ę们å°å°½åæ«ęæę“»ä½ ē蓦ę·ć"
#: src/view/com/auth/create/Step2.tsx:55
-msgid "There's something wrong with this number. Please choose your country and enter your full phone number!"
-msgstr "ēµčÆå·ē ę误ļ¼čÆ·éę©ēµčÆåŗå·å¹¶č¾å
„å®ę“ēēµčÆå·ē ļ¼"
+#~ msgid "There's something wrong with this number. Please choose your country and enter your full phone number!"
+#~ msgstr "ēµčÆå·ē ę误ļ¼čÆ·éę©ēµčÆåŗå·å¹¶č¾å
„å®ę“ēēµčÆå·ē ļ¼"
#: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:138
msgid "These are popular accounts you might like:"
@@ -3940,8 +4126,8 @@ msgid "This feed is currently receiving high traffic and is temporarily unavaila
msgstr "评俔ęÆęµå½å使ēØäŗŗę°č¾å¤ļ¼ęå”ęę¶äøåÆēØć请ēØååčÆć"
#: src/view/screens/Profile.tsx:420
-#: src/view/screens/ProfileFeed.tsx:475
-#: src/view/screens/ProfileList.tsx:660
+#: src/view/screens/ProfileFeed.tsx:476
+#: src/view/screens/ProfileList.tsx:661
msgid "This feed is empty!"
msgstr "评俔ęÆęµäøŗē©ŗļ¼"
@@ -3969,7 +4155,7 @@ msgstr "ę¤å蔨为空ļ¼"
msgid "This name is already in use"
msgstr "评å称已被使ēØ"
-#: src/view/com/post-thread/PostThreadItem.tsx:122
+#: src/view/com/post-thread/PostThreadItem.tsx:125
msgid "This post has been deleted."
msgstr "ę¤åøå·²č¢«å é¤ć"
@@ -3993,7 +4179,11 @@ msgstr "ę¤ēØę·å
å«åØä½ å·²éčē <0/> å蔨äøć"
msgid "This warning is only available for posts with media attached."
msgstr "ę¤č¦åä»
éēØäŗéåø¦åŖä½ēåøåć"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:192
+#: src/components/dialogs/MutedWords.tsx:236
+msgid "This will delete {0} from your muted words. You can always add it back later."
+msgstr ""
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:237
msgid "This will hide this post from your feeds."
msgstr "čæå°åØä½ ēäæ”ęÆęµäøéčę¤åøåć"
@@ -4006,10 +4196,14 @@ msgstr "讨论串é¦é锹"
msgid "Threaded Mode"
msgstr "åå±ęØ”å¼"
-#: src/Navigation.tsx:252
+#: src/Navigation.tsx:255
msgid "Threads Preferences"
msgstr "讨论串é¦é锹"
+#: src/components/dialogs/MutedWords.tsx:95
+msgid "Toggle between muted word options."
+msgstr ""
+
#: src/view/com/util/forms/DropdownButton.tsx:246
msgid "Toggle dropdown"
msgstr "åę¢äøęčå"
@@ -4018,9 +4212,9 @@ msgstr "åę¢äøęčå"
msgid "Transformations"
msgstr "转ę¢"
-#: src/view/com/post-thread/PostThreadItem.tsx:686
-#: src/view/com/post-thread/PostThreadItem.tsx:688
-#: src/view/com/util/forms/PostDropdownBtn.tsx:125
+#: src/view/com/post-thread/PostThreadItem.tsx:685
+#: src/view/com/post-thread/PostThreadItem.tsx:687
+#: src/view/com/util/forms/PostDropdownBtn.tsx:156
msgid "Translate"
msgstr "ēæ»čÆ"
@@ -4029,15 +4223,15 @@ msgctxt "action"
msgid "Try again"
msgstr "éčÆ"
-#: src/view/screens/ProfileList.tsx:505
+#: src/view/screens/ProfileList.tsx:506
msgid "Un-block list"
msgstr "åę¶å±č½å蔨"
-#: src/view/screens/ProfileList.tsx:490
+#: src/view/screens/ProfileList.tsx:491
msgid "Un-mute list"
msgstr "åę¶éčå蔨"
-#: src/view/com/auth/create/CreateAccount.tsx:66
+#: src/view/com/auth/create/CreateAccount.tsx:58
#: src/view/com/auth/login/ForgotPasswordForm.tsx:87
#: src/view/com/auth/login/Login.tsx:76
#: src/view/com/auth/login/LoginForm.tsx:118
@@ -4045,18 +4239,18 @@ msgstr "åę¶éčå蔨"
msgid "Unable to contact your service. Please check your Internet connection."
msgstr "ę ę³čæę„å°ęå”ļ¼čÆ·ę£ę„äŗčē½čæę„ć"
-#: src/view/com/profile/ProfileHeader.tsx:432
-#: src/view/screens/ProfileList.tsx:589
+#: src/view/com/profile/ProfileHeader.tsx:433
+#: src/view/screens/ProfileList.tsx:590
msgid "Unblock"
msgstr "åę¶å±č½"
-#: src/view/com/profile/ProfileHeader.tsx:435
+#: src/view/com/profile/ProfileHeader.tsx:436
msgctxt "action"
msgid "Unblock"
msgstr "åę¶å±č½"
-#: src/view/com/profile/ProfileHeader.tsx:260
-#: src/view/com/profile/ProfileHeader.tsx:344
+#: src/view/com/profile/ProfileHeader.tsx:261
+#: src/view/com/profile/ProfileHeader.tsx:345
msgid "Unblock Account"
msgstr "åę¶å±č½"
@@ -4072,11 +4266,11 @@ msgctxt "action"
msgid "Unfollow"
msgstr "åå
³"
-#: src/view/com/profile/ProfileHeader.tsx:484
+#: src/view/com/profile/ProfileHeader.tsx:485
msgid "Unfollow {0}"
msgstr "åå
³ {0}"
-#: src/view/com/auth/create/state.ts:300
+#: src/view/com/auth/create/state.ts:262
msgid "Unfortunately, you do not meet the requirements to create an account."
msgstr "å¾éę¾ļ¼ä½ äøē¬¦åå建蓦ę·ēč¦ę±ć"
@@ -4085,28 +4279,37 @@ msgstr "å¾éę¾ļ¼ä½ äøē¬¦åå建蓦ę·ēč¦ę±ć"
msgid "Unlike"
msgstr "åę¶å欢"
-#: src/view/screens/ProfileList.tsx:596
+#: src/components/TagMenu/index.tsx:253
+#: src/view/screens/ProfileList.tsx:597
msgid "Unmute"
msgstr "åę¶éč"
-#: src/view/com/profile/ProfileHeader.tsx:325
+#: src/components/TagMenu/index.web.tsx:90
+msgid "Unmute {truncatedTag}"
+msgstr ""
+
+#: src/view/com/profile/ProfileHeader.tsx:326
msgid "Unmute Account"
msgstr "åę¶éč蓦ę·"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:171
+#: src/components/TagMenu/index.tsx:210
+msgid "Unmute all {tag} posts"
+msgstr ""
+
+#: src/view/com/util/forms/PostDropdownBtn.tsx:202
msgid "Unmute thread"
msgstr "åę¶éč讨论串"
-#: src/view/screens/ProfileFeed.tsx:353
-#: src/view/screens/ProfileList.tsx:580
+#: src/view/screens/ProfileFeed.tsx:354
+#: src/view/screens/ProfileList.tsx:581
msgid "Unpin"
msgstr "åę¶åŗå®"
-#: src/view/screens/ProfileList.tsx:473
+#: src/view/screens/ProfileList.tsx:474
msgid "Unpin moderation list"
msgstr "åę¶åŗå®éå¶å蔨"
-#: src/view/screens/ProfileFeed.tsx:345
+#: src/view/screens/ProfileFeed.tsx:346
msgid "Unsave"
msgstr "åę¶äæå"
@@ -4168,11 +4371,11 @@ msgstr "ēØę·č¢«å蔨å±č½"
msgid "User Blocks You"
msgstr "ēØę·å±č½äŗä½ "
-#: src/view/com/auth/create/Step3.tsx:41
+#: src/view/com/auth/create/Step2.tsx:79
msgid "User handle"
msgstr "ēØę·čÆå«ē¬¦"
-#: src/view/com/lists/ListCard.tsx:84
+#: src/view/com/lists/ListCard.tsx:85
#: src/view/com/modals/UserAddRemoveLists.tsx:198
msgid "User list by {0}"
msgstr "{0} ēēØę·å蔨"
@@ -4181,7 +4384,7 @@ msgstr "{0} ēēØę·å蔨"
msgid "User list by <0/>"
msgstr "<0/> ēēØę·å蔨"
-#: src/view/com/lists/ListCard.tsx:82
+#: src/view/com/lists/ListCard.tsx:83
#: src/view/com/modals/UserAddRemoveLists.tsx:196
#: src/view/screens/ProfileList.tsx:760
msgid "User list by you"
@@ -4217,8 +4420,8 @@ msgid "Users in \"{0}\""
msgstr "\"{0}\"äøēēØę·"
#: src/view/com/auth/create/Step2.tsx:243
-msgid "Verification code"
-msgstr "éŖčÆē "
+#~ msgid "Verification code"
+#~ msgstr "éŖčÆē "
#: src/view/screens/Settings/index.tsx:910
msgid "Verify email"
@@ -4245,7 +4448,7 @@ msgstr "éŖčÆä½ ēé®ē®±"
msgid "Video Games"
msgstr "č§é¢ęøøę"
-#: src/view/com/profile/ProfileHeader.tsx:661
+#: src/view/com/profile/ProfileHeader.tsx:662
msgid "View {0}'s avatar"
msgstr "ę„ē{0}ē夓å"
@@ -4290,6 +4493,10 @@ msgstr "ę们åøęä½ åØę¤åŗ¦čæęåæ«ēę¶å
ć请记ä½ļ¼Bluesky ęÆļ¼"
msgid "We ran out of posts from your follows. Here's the latest from <0/>."
msgstr "ę们已ē»ēå®äŗä½ å
³ę³ØēåøåćčæęÆę„čŖ <0/> ēęę°ę¶ęÆć"
+#: src/components/dialogs/MutedWords.tsx:161
+msgid "We recommend avoiding common words that appear in many posts, since it can result in no posts being shown."
+msgstr ""
+
#: src/screens/Onboarding/StepAlgoFeeds/index.tsx:124
msgid "We recommend our \"Discover\" feed:"
msgstr "ę们ęØčę们ē \"Discover\" äæ”ęÆęµ:"
@@ -4310,15 +4517,19 @@ msgstr "ę们å°čæ
éå®”ę„ä½ ēē³čÆć"
msgid "We'll use this to help customize your experience."
msgstr "ę们å°ä½æēØčæäŗäæ”ęÆę„åø®å©å®å¶ä½ ēä½éŖć"
-#: src/view/com/auth/create/CreateAccount.tsx:123
+#: src/view/com/auth/create/CreateAccount.tsx:134
msgid "We're so excited to have you join us!"
msgstr "ę们éåøøé«å
“ä½ å å
„ę们ļ¼"
-#: src/view/screens/ProfileList.tsx:85
+#: src/view/screens/ProfileList.tsx:86
msgid "We're sorry, but we were unable to resolve this list. If this persists, please contact the list creator, @{handleOrDid}."
msgstr "å¾ę±ęļ¼ę们ę ę³č§£ęę¤å蔨ćå¦ęé®é¢ęē»åēļ¼čÆ·čē³»å蔨å建č
ļ¼@{handleOrDid}ć"
-#: src/view/screens/Search/Search.tsx:253
+#: src/components/dialogs/MutedWords.tsx:182
+msgid "We're sorry, but we weren't able to load your muted words at this time. Please try again."
+msgstr ""
+
+#: src/view/screens/Search/Search.tsx:254
msgid "We're sorry, but your search could not be completed. Please try again in a few minutes."
msgstr "å¾ę±ęļ¼ę ę³å®ęä½ ēęē“¢ć请ēØååčÆć"
@@ -4338,8 +4549,8 @@ msgstr "ä½ ęå
“č¶£ēęÆä»ä¹ļ¼"
msgid "What is the issue with this {collectionName}?"
msgstr "čæäøŖ {collectionName} ęä»ä¹é®é¢ļ¼"
-#: src/view/com/auth/SplashScreen.tsx:34
-#: src/view/com/composer/Composer.tsx:279
+#: src/view/com/auth/SplashScreen.tsx:59
+#: src/view/com/composer/Composer.tsx:286
msgid "What's up?"
msgstr "åēäŗä»ä¹ę°é²äŗļ¼"
@@ -4360,11 +4571,11 @@ msgstr "č°åÆä»„åå¤"
msgid "Wide"
msgstr "宽"
-#: src/view/com/composer/Composer.tsx:415
+#: src/view/com/composer/Composer.tsx:422
msgid "Write post"
msgstr "ę°ååøå"
-#: src/view/com/composer/Composer.tsx:278
+#: src/view/com/composer/Composer.tsx:285
#: src/view/com/composer/Prompt.tsx:33
msgid "Write your reply"
msgstr "ę°åä½ ēåå¤"
@@ -4374,14 +4585,14 @@ msgid "Writers"
msgstr "ä½å®¶"
#: src/view/com/auth/create/Step2.tsx:263
-msgid "XXXXXX"
-msgstr "XXXXXX"
+#~ msgid "XXXXXX"
+#~ msgstr "XXXXXX"
#: src/view/com/composer/select-language/SuggestedLanguage.tsx:77
-#: 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/PreferencesFollowingFeed.tsx:129
+#: src/view/screens/PreferencesFollowingFeed.tsx:201
+#: src/view/screens/PreferencesFollowingFeed.tsx:236
+#: src/view/screens/PreferencesFollowingFeed.tsx:271
#: src/view/screens/PreferencesThreads.tsx:106
#: src/view/screens/PreferencesThreads.tsx:129
msgid "Yes"
@@ -4413,7 +4624,7 @@ msgstr "ä½ ē®åčæę²”ęé请ē ļ¼å½ä½ ęē»ä½æēØ Bluesky äøę®µę¶é“å
msgid "You don't have any pinned feeds."
msgstr "ä½ ē®åčæę²”ęä»»ä½åŗå®ēäæ”ęÆęµć"
-#: src/view/screens/Feeds.tsx:451
+#: src/view/screens/Feeds.tsx:452
msgid "You don't have any saved feeds!"
msgstr "ä½ ē®åčæę²”ęä»»ä½äæåēäæ”ęÆęµļ¼"
@@ -4421,7 +4632,7 @@ msgstr "ä½ ē®åčæę²”ęä»»ä½äæåēäæ”ęÆęµļ¼"
msgid "You don't have any saved feeds."
msgstr "ä½ ē®åčæę²”ęä»»ä½äæåēäæ”ęÆęµć"
-#: src/view/com/post-thread/PostThread.tsx:401
+#: src/view/com/post-thread/PostThread.tsx:465
msgid "You have blocked the author or you have been blocked by the author."
msgstr "ä½ å·²å±č½čÆ„ä½č
ļ¼ęä½ å·²č¢«čÆ„ä½č
å±č½ć"
@@ -4461,6 +4672,10 @@ msgstr "ä½ å°ęŖåå»ŗä»»ä½ App äøēØåÆē ļ¼åÆä»„éčæē¹å»äøé¢ēę
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/components/dialogs/MutedWords.tsx:202
+msgid "You haven't muted any words or tags yet"
+msgstr ""
+
#: src/view/com/modals/ContentFilteringSettings.tsx:175
msgid "You must be 18 or older to enable adult content."
msgstr "ä½ åæ
锻幓滔18å²å仄äøęč½åÆēØęäŗŗå
容ć"
@@ -4469,11 +4684,11 @@ msgstr "ä½ åæ
锻幓滔18å²å仄äøęč½åÆēØęäŗŗå
容ć"
msgid "You must be 18 years or older to enable adult content"
msgstr "ä½ åæ
锻幓滔18å²å仄äøęč½åÆēØęäŗŗå
容"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:98
+#: src/view/com/util/forms/PostDropdownBtn.tsx:129
msgid "You will no longer receive notifications for this thread"
msgstr "ä½ å°äøåę¶å°čæę”讨论串ēéē„"
-#: src/view/com/util/forms/PostDropdownBtn.tsx:101
+#: src/view/com/util/forms/PostDropdownBtn.tsx:132
msgid "You will now receive notifications for this thread"
msgstr "ä½ å°ę¶å°čæę”讨论串ēéē„"
@@ -4511,7 +4726,7 @@ msgstr "ä½ ē蓦ę·å·²å é¤"
msgid "Your account repository, containing all public data records, can be downloaded as a \"CAR\" file. This file does not include media embeds, such as images, or your private data, which must be fetched separately."
msgstr ""
-#: src/view/com/auth/create/Step1.tsx:234
+#: src/view/com/auth/create/Step1.tsx:238
msgid "Your birth date"
msgstr "ä½ ēēę„"
@@ -4523,7 +4738,7 @@ msgstr "ä½ ēéę©å°č¢«äæåļ¼ä½åÆä»„ēØååØč®¾ē½®äøę“ę¹ć"
msgid "Your default feed is \"Following\""
msgstr "ä½ ēé»č®¤äæ”ęÆęµäøŗ\"å
³ę³Ø\""
-#: src/view/com/auth/create/state.ts:153
+#: src/view/com/auth/create/state.ts:110
#: src/view/com/auth/login/ForgotPasswordForm.tsx:70
#: src/view/com/modals/ChangePassword.tsx:54
msgid "Your email appears to be invalid."
@@ -4545,7 +4760,7 @@ msgstr "ä½ ēēµåé®ē®±å°ęŖéŖčÆćčæęÆäøäøŖéč¦ēå®å
Øę„éŖ¤ļ¼ę
msgid "Your following feed is empty! Follow more users to see what's happening."
msgstr "ä½ ēå
³ę³Øäæ”ęÆęµäøŗē©ŗļ¼å
³ę³Øę“å¤ēØę·å»ēēä»ä»¬åäŗä»ä¹ä»ä¹ć"
-#: src/view/com/auth/create/Step3.tsx:45
+#: src/view/com/auth/create/Step2.tsx:83
msgid "Your full handle will be"
msgstr "ä½ ēå®ę“ēØę·čÆå«ē¬¦å°äæ®ę¹äøŗ"
@@ -4559,11 +4774,15 @@ msgstr "ä½ ēå®ę“ēØę·čÆå«ē¬¦å°äæ®ę¹äøŗ <0>@{0}0>"
#~ msgid "Your invite codes are hidden when logged in using an App Password"
#~ msgstr "åØä½æēØ App äøēØåÆē ē»å½ę¶ļ¼ä½ ēé请ē å°č¢«éč"
+#: src/components/dialogs/MutedWords.tsx:173
+msgid "Your muted words"
+msgstr ""
+
#: src/view/com/modals/ChangePassword.tsx:155
msgid "Your password has been changed successfully!"
msgstr "ä½ ēåÆē å·²ę“ę¹ęåļ¼"
-#: src/view/com/composer/Composer.tsx:267
+#: src/view/com/composer/Composer.tsx:274
msgid "Your post has been published"
msgstr "ä½ ēåøåå·²åé"
@@ -4578,10 +4797,10 @@ msgstr "ä½ ēåøåćē¹čµåå±č½ęÆå
¬å¼åÆč§ēļ¼čéčäøåÆč§ć
msgid "Your profile"
msgstr "ä½ ēäøŖäŗŗčµę"
-#: src/view/com/composer/Composer.tsx:266
+#: src/view/com/composer/Composer.tsx:273
msgid "Your reply has been published"
msgstr "ä½ ēåå¤å·²åé"
-#: src/view/com/auth/create/Step3.tsx:28
+#: src/view/com/auth/create/Step2.tsx:65
msgid "Your user handle"
msgstr "ä½ ēēØę·čÆå«ē¬¦"
diff --git a/src/platform/markBundleStartTime.web.ts b/src/platform/markBundleStartTime.web.ts
new file mode 100644
index 0000000000..cd64c9f1c3
--- /dev/null
+++ b/src/platform/markBundleStartTime.web.ts
@@ -0,0 +1,2 @@
+// @ts-ignore Web-only. On RN, this is set by Metro.
+window.__BUNDLE_START_TIME__ = performance.now()
diff --git a/src/routes.ts b/src/routes.ts
index e58fddd429..3fc908b488 100644
--- a/src/routes.ts
+++ b/src/routes.ts
@@ -24,7 +24,7 @@ export const router = new Router({
Debug: '/sys/debug',
Log: '/sys/log',
AppPasswords: '/settings/app-passwords',
- PreferencesHomeFeed: '/settings/home-feed',
+ PreferencesFollowingFeed: '/settings/following-feed',
PreferencesThreads: '/settings/threads',
PreferencesExternalEmbeds: '/settings/external-embeds',
SavedFeeds: '/settings/saved-feeds',
@@ -33,4 +33,5 @@ export const router = new Router({
TermsOfService: '/support/tos',
CommunityGuidelines: '/support/community-guidelines',
CopyrightPolicy: '/support/copyright',
+ Hashtag: '/hashtag/:tag',
})
diff --git a/src/screens/Hashtag.tsx b/src/screens/Hashtag.tsx
new file mode 100644
index 0000000000..776cc585e3
--- /dev/null
+++ b/src/screens/Hashtag.tsx
@@ -0,0 +1,165 @@
+import React from 'react'
+import {ListRenderItemInfo, Pressable} from 'react-native'
+import {useFocusEffect} from '@react-navigation/native'
+import {useSetMinimalShellMode} from 'state/shell'
+import {ViewHeader} from 'view/com/util/ViewHeader'
+import {NativeStackScreenProps} from '@react-navigation/native-stack'
+import {CommonNavigatorParams} from 'lib/routes/types'
+import {useSearchPostsQuery} from 'state/queries/search-posts'
+import {Post} from 'view/com/post/Post'
+import {PostView} from '@atproto/api/dist/client/types/app/bsky/feed/defs'
+import {enforceLen} from 'lib/strings/helpers'
+import {
+ ListFooter,
+ ListHeaderDesktop,
+ ListMaybePlaceholder,
+} from '#/components/Lists'
+import {List} from 'view/com/util/List'
+import {msg} from '@lingui/macro'
+import {useLingui} from '@lingui/react'
+import {sanitizeHandle} from 'lib/strings/handles'
+import {ArrowOutOfBox_Stroke2_Corner0_Rounded} from '#/components/icons/ArrowOutOfBox'
+import {shareUrl} from 'lib/sharing'
+import {HITSLOP_10} from 'lib/constants'
+import {isNative} from 'platform/detection'
+import {useInitialNumToRender} from 'lib/hooks/useInitialNumToRender'
+
+const renderItem = ({item}: ListRenderItemInfo) => {
+ return
+}
+
+const keyExtractor = (item: PostView, index: number) => {
+ return `${item.uri}-${index}`
+}
+
+export default function HashtagScreen({
+ route,
+}: NativeStackScreenProps) {
+ const {tag, author} = route.params
+ const setMinimalShellMode = useSetMinimalShellMode()
+ const {_} = useLingui()
+ const initialNumToRender = useInitialNumToRender()
+ const [isPTR, setIsPTR] = React.useState(false)
+
+ const fullTag = React.useMemo(() => {
+ return `#${decodeURIComponent(tag)}`
+ }, [tag])
+
+ const queryParam = React.useMemo(() => {
+ if (!author) return fullTag
+ return `${fullTag} from:${sanitizeHandle(author)}`
+ }, [fullTag, author])
+
+ const headerTitle = React.useMemo(() => {
+ return enforceLen(fullTag.toLowerCase(), 24, true, 'middle')
+ }, [fullTag])
+
+ const sanitizedAuthor = React.useMemo(() => {
+ if (!author) return
+ return sanitizeHandle(author)
+ }, [author])
+
+ const {
+ data,
+ isFetching,
+ isLoading,
+ isRefetching,
+ isError,
+ error,
+ refetch,
+ fetchNextPage,
+ hasNextPage,
+ } = useSearchPostsQuery({query: queryParam})
+
+ const posts = React.useMemo(() => {
+ return data?.pages.flatMap(page => page.posts) || []
+ }, [data])
+
+ useFocusEffect(
+ React.useCallback(() => {
+ setMinimalShellMode(false)
+ }, [setMinimalShellMode]),
+ )
+
+ const onShare = React.useCallback(() => {
+ const url = new URL('https://bsky.app')
+ url.pathname = `/hashtag/${decodeURIComponent(tag)}`
+ if (author) {
+ url.searchParams.set('author', author)
+ }
+ shareUrl(url.toString())
+ }, [tag, author])
+
+ const onRefresh = React.useCallback(async () => {
+ setIsPTR(true)
+ await refetch()
+ setIsPTR(false)
+ }, [refetch])
+
+ const onEndReached = React.useCallback(() => {
+ if (isFetching || !hasNextPage || error) return
+ fetchNextPage()
+ }, [isFetching, hasNextPage, error, fetchNextPage])
+
+ return (
+ <>
+ (
+
+
+
+ )
+ : undefined
+ }
+ />
+
+ {!isLoading && posts.length > 0 && (
+
+ data={posts}
+ renderItem={renderItem}
+ keyExtractor={keyExtractor}
+ refreshing={isPTR}
+ onRefresh={onRefresh}
+ onEndReached={onEndReached}
+ onEndReachedThreshold={4}
+ // @ts-ignore web only -prf
+ desktopFixedHeight
+ ListHeaderComponent={
+
+ }
+ ListFooterComponent={
+
+ }
+ initialNumToRender={initialNumToRender}
+ windowSize={11}
+ />
+ )}
+ >
+ )
+}
diff --git a/src/screens/Onboarding/StepModeration/AdultContentEnabledPref.tsx b/src/screens/Onboarding/StepModeration/AdultContentEnabledPref.tsx
index b38b3df1ed..360025c02f 100644
--- a/src/screens/Onboarding/StepModeration/AdultContentEnabledPref.tsx
+++ b/src/screens/Onboarding/StepModeration/AdultContentEnabledPref.tsx
@@ -114,7 +114,7 @@ export function AdultContentEnabledPref({
- OK
+ prompt.close()}>OK
>
diff --git a/src/screens/Onboarding/StepTopicalFeeds.tsx b/src/screens/Onboarding/StepTopicalFeeds.tsx
index d6b6ab0453..6c0883bff9 100644
--- a/src/screens/Onboarding/StepTopicalFeeds.tsx
+++ b/src/screens/Onboarding/StepTopicalFeeds.tsx
@@ -3,7 +3,6 @@ import {View} from 'react-native'
import {useLingui} from '@lingui/react'
import {msg, Trans} from '@lingui/macro'
-import {IS_PROD} from '#/env'
import {atoms as a, useBreakpoints} from '#/alf'
import {ChevronRight_Stroke2_Corner0_Rounded as ChevronRight} from '#/components/icons/Chevron'
import {ListMagnifyingGlass_Stroke2_Corner0_Rounded as ListMagnifyingGlass} from '#/components/icons/ListMagnifyingGlass'
@@ -22,22 +21,29 @@ import {
import {FeedCard} from '#/screens/Onboarding/StepAlgoFeeds/FeedCard'
import {aggregateInterestItems} from '#/screens/Onboarding/util'
import {IconCircle} from '#/components/IconCircle'
+import {IS_PROD_SERVICE} from 'lib/constants'
+import {useSession} from 'state/session'
export function StepTopicalFeeds() {
const {_} = useLingui()
const {gtMobile} = useBreakpoints()
const {track} = useAnalytics()
+ const {currentAccount} = useSession()
const {state, dispatch, interestsDisplayNames} = React.useContext(Context)
const [selectedFeedUris, setSelectedFeedUris] = React.useState([])
const [saving, setSaving] = React.useState(false)
const suggestedFeedUris = React.useMemo(() => {
- if (!IS_PROD) return []
+ if (!IS_PROD_SERVICE(currentAccount?.service)) return []
return aggregateInterestItems(
state.interestsStepResults.selectedInterests,
state.interestsStepResults.apiResponse.suggestedFeedUris,
state.interestsStepResults.apiResponse.suggestedFeedUris.default,
).slice(0, 10)
- }, [state.interestsStepResults])
+ }, [
+ currentAccount?.service,
+ state.interestsStepResults.apiResponse.suggestedFeedUris,
+ state.interestsStepResults.selectedInterests,
+ ])
const interestsText = React.useMemo(() => {
const i = state.interestsStepResults.selectedInterests.map(
diff --git a/src/screens/Onboarding/state.ts b/src/screens/Onboarding/state.ts
index caecdb794e..f813f14603 100644
--- a/src/screens/Onboarding/state.ts
+++ b/src/screens/Onboarding/state.ts
@@ -260,7 +260,7 @@ export function reducer(
})
if (s.activeStep !== state.activeStep) {
- logger.info(`onboarding: step changed`, {activeStep: state.activeStep})
+ logger.debug(`onboarding: step changed`, {activeStep: state.activeStep})
}
return state
diff --git a/src/state/dialogs/index.tsx b/src/state/dialogs/index.tsx
index 4cafaa0861..90aaca4f8b 100644
--- a/src/state/dialogs/index.tsx
+++ b/src/state/dialogs/index.tsx
@@ -1,20 +1,32 @@
import React from 'react'
-import {DialogControlProps} from '#/components/Dialog'
+import {DialogControlRefProps} from '#/components/Dialog'
+import {Provider as GlobalDialogsProvider} from '#/components/dialogs/Context'
const DialogContext = React.createContext<{
+ /**
+ * The currently active `useDialogControl` hooks.
+ */
activeDialogs: React.MutableRefObject<
- Map>
+ Map>
>
+ /**
+ * The currently open dialogs, referenced by their IDs, generated from
+ * `useId`.
+ */
+ openDialogs: string[]
}>({
activeDialogs: {
current: new Map(),
},
+ openDialogs: [],
})
const DialogControlContext = React.createContext<{
- closeAllDialogs(): void
+ closeAllDialogs(): boolean
+ setDialogIsOpen(id: string, isOpen: boolean): void
}>({
- closeAllDialogs: () => {},
+ closeAllDialogs: () => false,
+ setDialogIsOpen: () => {},
})
export function useDialogStateContext() {
@@ -27,17 +39,38 @@ export function useDialogStateControlContext() {
export function Provider({children}: React.PropsWithChildren<{}>) {
const activeDialogs = React.useRef<
- Map>
+ Map>
>(new Map())
+ const [openDialogs, setOpenDialogs] = React.useState([])
+
const closeAllDialogs = React.useCallback(() => {
activeDialogs.current.forEach(dialog => dialog.current.close())
- }, [])
- const context = React.useMemo(() => ({activeDialogs}), [])
- const controls = React.useMemo(() => ({closeAllDialogs}), [closeAllDialogs])
+ return openDialogs.length > 0
+ }, [openDialogs])
+
+ const setDialogIsOpen = React.useCallback(
+ (id: string, isOpen: boolean) => {
+ setOpenDialogs(prev => {
+ const filtered = prev.filter(dialogId => dialogId !== id) as string[]
+ return isOpen ? [...filtered, id] : filtered
+ })
+ },
+ [setOpenDialogs],
+ )
+
+ const context = React.useMemo(
+ () => ({activeDialogs, openDialogs}),
+ [openDialogs],
+ )
+ const controls = React.useMemo(
+ () => ({closeAllDialogs, setDialogIsOpen}),
+ [closeAllDialogs, setDialogIsOpen],
+ )
+
return (
- {children}
+ {children}
)
diff --git a/src/state/models/media/gallery.ts b/src/state/models/media/gallery.ts
index 04023bf820..9c8c13010d 100644
--- a/src/state/models/media/gallery.ts
+++ b/src/state/models/media/gallery.ts
@@ -4,11 +4,21 @@ import {Image as RNImage} from 'react-native-image-crop-picker'
import {openPicker} from 'lib/media/picker'
import {getImageDim} from 'lib/media/manip'
+interface InitialImageUri {
+ uri: string
+ width: number
+ height: number
+}
+
export class GalleryModel {
images: ImageModel[] = []
- constructor() {
+ constructor(uris?: {uri: string; width: number; height: number}[]) {
makeAutoObservable(this)
+
+ if (uris) {
+ this.addFromUris(uris)
+ }
}
get isEmpty() {
@@ -23,7 +33,7 @@ export class GalleryModel {
return this.images.some(image => image.altText.trim() === '')
}
- async add(image_: Omit) {
+ *add(image_: Omit) {
if (this.size >= 4) {
return
}
@@ -86,4 +96,15 @@ export class GalleryModel {
}),
)
}
+
+ async addFromUris(uris: InitialImageUri[]) {
+ for (const uriObj of uris) {
+ this.add({
+ mime: 'image/jpeg',
+ height: uriObj.height,
+ width: uriObj.width,
+ path: uriObj.uri,
+ })
+ }
+ }
}
diff --git a/src/state/persisted/__tests__/migrate.test.ts b/src/state/persisted/__tests__/migrate.test.ts
index e4b55d5da6..97767e2732 100644
--- a/src/state/persisted/__tests__/migrate.test.ts
+++ b/src/state/persisted/__tests__/migrate.test.ts
@@ -26,7 +26,7 @@ test('migrate: fresh install', async () => {
expect(AsyncStorage.getItem).toHaveBeenCalledWith('root')
expect(read).toHaveBeenCalledTimes(1)
- expect(logger.info).toHaveBeenCalledWith(
+ expect(logger.debug).toHaveBeenCalledWith(
'persisted state: no migration needed',
)
})
@@ -38,7 +38,7 @@ test('migrate: fresh install, existing new storage', async () => {
expect(AsyncStorage.getItem).toHaveBeenCalledWith('root')
expect(read).toHaveBeenCalledTimes(1)
- expect(logger.info).toHaveBeenCalledWith(
+ expect(logger.debug).toHaveBeenCalledWith(
'persisted state: no migration needed',
)
})
@@ -68,7 +68,7 @@ test('migrate: has legacy data', async () => {
await migrate()
expect(write).toHaveBeenCalledWith(transform(fixtures.LEGACY_DATA_DUMP))
- expect(logger.info).toHaveBeenCalledWith(
+ expect(logger.debug).toHaveBeenCalledWith(
'persisted state: migrated legacy storage',
)
})
diff --git a/src/state/persisted/index.ts b/src/state/persisted/index.ts
index 2f34c2dbff..f57172d2fe 100644
--- a/src/state/persisted/index.ts
+++ b/src/state/persisted/index.ts
@@ -19,7 +19,7 @@ const _emitter = new EventEmitter()
* the Provider.
*/
export async function init() {
- logger.info('persisted state: initializing')
+ logger.debug('persisted state: initializing')
broadcast.onmessage = onBroadcastMessage
@@ -27,11 +27,11 @@ export async function init() {
await migrate() // migrate old store
const stored = await store.read() // check for new store
if (!stored) {
- logger.info('persisted state: initializing default storage')
+ logger.debug('persisted state: initializing default storage')
await store.write(defaults) // opt: init new store
}
_state = stored || defaults // return new store
- logger.log('persisted state: initialized')
+ logger.debug('persisted state: initialized')
} catch (e) {
logger.error('persisted state: failed to load root state from storage', {
message: e,
diff --git a/src/state/persisted/legacy.ts b/src/state/persisted/legacy.ts
index cce080c84c..fd94a96a24 100644
--- a/src/state/persisted/legacy.ts
+++ b/src/state/persisted/legacy.ts
@@ -121,7 +121,7 @@ export function transform(legacy: Partial): Schema {
* local storage AND old storage exists.
*/
export async function migrate() {
- logger.info('persisted state: check need to migrate')
+ logger.debug('persisted state: check need to migrate')
try {
const rawLegacyData = await AsyncStorage.getItem(
@@ -131,7 +131,7 @@ export async function migrate() {
const alreadyMigrated = Boolean(newData)
if (!alreadyMigrated && rawLegacyData) {
- logger.info('persisted state: migrating legacy storage')
+ logger.debug('persisted state: migrating legacy storage')
const legacyData = JSON.parse(rawLegacyData)
const newData = transform(legacyData)
@@ -139,14 +139,14 @@ export async function migrate() {
if (validate.success) {
await write(newData)
- logger.info('persisted state: migrated legacy storage')
+ logger.debug('persisted state: migrated legacy storage')
} else {
logger.error('persisted state: legacy data failed validation', {
message: validate.error,
})
}
} else {
- logger.info('persisted state: no migration needed')
+ logger.debug('persisted state: no migration needed')
}
} catch (e: any) {
logger.error(e, {
diff --git a/src/state/queries/feed.ts b/src/state/queries/feed.ts
index 67294ece27..1fa92c291f 100644
--- a/src/state/queries/feed.ts
+++ b/src/state/queries/feed.ts
@@ -1,11 +1,9 @@
-import React from 'react'
import {
useQuery,
useInfiniteQuery,
InfiniteData,
QueryKey,
useMutation,
- useQueryClient,
} from '@tanstack/react-query'
import {
AtUri,
@@ -15,7 +13,6 @@ import {
AppBskyUnspeccedGetPopularFeedGenerators,
} from '@atproto/api'
-import {logger} from '#/logger'
import {router} from '#/routes'
import {sanitizeDisplayName} from '#/lib/strings/display-names'
import {sanitizeHandle} from '#/lib/strings/handles'
@@ -219,83 +216,59 @@ const FOLLOWING_FEED_STUB: FeedSourceInfo = {
likeUri: '',
}
-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()
+export function usePinnedFeedsInfos() {
+ const {data: preferences, isLoading: isLoadingPrefs} = usePreferencesQuery()
+ const pinnedUris = preferences?.feeds?.pinned ?? []
- const hasPinnedCustom = React.useMemo(() => {
- return tabs.some(tab => tab !== FOLLOWING_FEED_STUB)
- }, [tabs])
+ return useQuery({
+ staleTime: STALE.INFINITY,
+ enabled: !isLoadingPrefs,
+ queryKey: ['pinnedFeedsInfos', pinnedUris.join(',')],
+ queryFn: async () => {
+ let resolved = new Map()
- React.useEffect(() => {
- if (!preferences?.feeds?.pinned) return
- const uris = preferences.feeds.pinned
-
- async function fetchFeedInfo() {
- const reqs = []
-
- for (const uri of uris) {
- const cached = queryClient.getQueryData(
- feedSourceInfoQueryKey({uri}),
- )
-
- if (cached) {
- reqs.push(cached)
- } else {
- reqs.push(
- (async () => {
- // these requests can fail, need to filter those out
- try {
- return await queryClient.fetchQuery({
- staleTime: STALE.SECONDS.FIFTEEN,
- queryKey: feedSourceInfoQueryKey({uri}),
- queryFn: async () => {
- const type = getFeedTypeFromUri(uri)
-
- if (type === 'feed') {
- const res =
- await getAgent().app.bsky.feed.getFeedGenerator({
- feed: uri,
- })
- return hydrateFeedGenerator(res.data.view)
- } else {
- const res = await getAgent().app.bsky.graph.getList({
- list: uri,
- limit: 1,
- })
- return hydrateList(res.data.list)
- }
- },
- })
- } catch (e) {
- // expected failure
- logger.info(`usePinnedFeedsInfos: failed to fetch ${uri}`, {
- error: e,
- })
- }
- })(),
- )
- }
+ // Get all feeds. We can do this in a batch.
+ const feedUris = pinnedUris.filter(
+ uri => getFeedTypeFromUri(uri) === 'feed',
+ )
+ let feedsPromise = Promise.resolve()
+ if (feedUris.length > 0) {
+ feedsPromise = getAgent()
+ .app.bsky.feed.getFeedGenerators({
+ feeds: feedUris,
+ })
+ .then(res => {
+ for (let feedView of res.data.feeds) {
+ resolved.set(feedView.uri, hydrateFeedGenerator(feedView))
+ }
+ })
}
- const views = (await Promise.all(reqs)).filter(
- Boolean,
- ) as FeedSourceInfo[]
+ // Get all lists. This currently has to be done individually.
+ const listUris = pinnedUris.filter(
+ uri => getFeedTypeFromUri(uri) === 'list',
+ )
+ const listsPromises = listUris.map(listUri =>
+ getAgent()
+ .app.bsky.graph.getList({
+ list: listUri,
+ limit: 1,
+ })
+ .then(res => {
+ const listView = res.data.list
+ resolved.set(listView.uri, hydrateList(listView))
+ }),
+ )
- setTabs([FOLLOWING_FEED_STUB].concat(views))
- setLoading(false)
- }
-
- fetchFeedInfo()
- }, [queryClient, setTabs, preferences?.feeds?.pinned])
-
- return {feeds: tabs, hasPinnedCustom, isLoading}
+ // The returned result will have the original order.
+ const result = [FOLLOWING_FEED_STUB]
+ await Promise.allSettled([feedsPromise, ...listsPromises])
+ for (let pinnedUri of pinnedUris) {
+ if (resolved.has(pinnedUri)) {
+ result.push(resolved.get(pinnedUri))
+ }
+ }
+ return result
+ },
+ })
}
diff --git a/src/state/queries/notifications/feed.ts b/src/state/queries/notifications/feed.ts
index b91db92373..405d054d44 100644
--- a/src/state/queries/notifications/feed.ts
+++ b/src/state/queries/notifications/feed.ts
@@ -133,23 +133,6 @@ export function useNotificationFeedQuery(opts?: {enabled?: boolean}) {
return query
}
-/**
- * This helper is used by the post-thread placeholder function to
- * find a post in the query-data cache
- */
-export function findPostInQueryData(
- queryClient: QueryClient,
- uri: string,
-): AppBskyFeedDefs.PostView | undefined {
- const generator = findAllPostsInQueryData(queryClient, uri)
- const result = generator.next()
- if (result.done) {
- return undefined
- } else {
- return result.value
- }
-}
-
export function* findAllPostsInQueryData(
queryClient: QueryClient,
uri: string,
diff --git a/src/state/queries/post-feed.ts b/src/state/queries/post-feed.ts
index 3200090897..c295ffcb03 100644
--- a/src/state/queries/post-feed.ts
+++ b/src/state/queries/post-feed.ts
@@ -1,6 +1,11 @@
import React, {useCallback, useEffect, useRef} from 'react'
import {AppState} from 'react-native'
-import {AppBskyFeedDefs, AppBskyFeedPost, PostModeration} from '@atproto/api'
+import {
+ AppBskyFeedDefs,
+ AppBskyFeedPost,
+ AtUri,
+ PostModeration,
+} from '@atproto/api'
import {
useInfiniteQuery,
InfiniteData,
@@ -29,6 +34,7 @@ import {KnownError} from '#/view/com/posts/FeedErrorMessage'
import {embedViewRecordToPostView, getEmbeddedPost} from './util'
import {useModerationOpts} from './preferences'
import {queryClient} from 'lib/react-query'
+import {BSKY_FEED_OWNER_DIDS} from 'lib/constants'
type ActorDid = string
type AuthorFilter =
@@ -137,24 +143,41 @@ export function usePostFeedQuery(
cursor: undefined,
}
- const res = await api.fetch({cursor, limit: PAGE_SIZE})
- precacheFeedPostProfiles(queryClient, res.feed)
+ try {
+ const res = await api.fetch({cursor, limit: PAGE_SIZE})
+ precacheFeedPostProfiles(queryClient, res.feed)
- /*
- * If this is a public view, we need to check if posts fail moderation.
- * If all fail, we throw an error. If only some fail, we continue and let
- * moderations happen later, which results in some posts being shown and
- * some not.
- */
- if (!getAgent().session) {
- assertSomePostsPassModeration(res.feed)
- }
+ /*
+ * If this is a public view, we need to check if posts fail moderation.
+ * If all fail, we throw an error. If only some fail, we continue and let
+ * moderations happen later, which results in some posts being shown and
+ * some not.
+ */
+ if (!getAgent().session) {
+ assertSomePostsPassModeration(res.feed)
+ }
- return {
- api,
- cursor: res.cursor,
- feed: res.feed,
- fetchedAt: Date.now(),
+ return {
+ api,
+ cursor: res.cursor,
+ feed: res.feed,
+ fetchedAt: Date.now(),
+ }
+ } catch (e) {
+ const feedDescParts = feedDesc.split('|')
+ const feedOwnerDid = new AtUri(feedDescParts[1]).hostname
+
+ if (
+ feedDescParts[0] === 'feedgen' &&
+ BSKY_FEED_OWNER_DIDS.includes(feedOwnerDid)
+ ) {
+ logger.error(`Bluesky feed may be offline: ${feedOwnerDid}`, {
+ feedDesc,
+ jsError: e,
+ })
+ }
+
+ throw e
}
},
initialPageParam: undefined,
@@ -253,7 +276,7 @@ export function usePostFeedQuery(
.success
) {
return {
- _reactKey: `${slice._reactKey}-${i}`,
+ _reactKey: `${slice._reactKey}-${i}-${item.post.uri}`,
uri: item.post.uri,
post: item.post,
record: item.post.record,
@@ -365,23 +388,6 @@ function createApi(
}
}
-/**
- * This helper is used by the post-thread placeholder function to
- * find a post in the query-data cache
- */
-export function findPostInQueryData(
- queryClient: QueryClient,
- uri: string,
-): AppBskyFeedDefs.PostView | undefined {
- const generator = findAllPostsInQueryData(queryClient, uri)
- const result = generator.next()
- if (result.done) {
- return undefined
- } else {
- return result.value
- }
-}
-
export function* findAllPostsInQueryData(
queryClient: QueryClient,
uri: string,
diff --git a/src/state/queries/post-thread.ts b/src/state/queries/post-thread.ts
index ba42431639..26d40599c6 100644
--- a/src/state/queries/post-thread.ts
+++ b/src/state/queries/post-thread.ts
@@ -8,8 +8,8 @@ import {useQuery, useQueryClient, QueryClient} from '@tanstack/react-query'
import {getAgent} from '#/state/session'
import {UsePreferencesQueryResponse} from '#/state/queries/preferences/types'
-import {findPostInQueryData as findPostInFeedQueryData} from './post-feed'
-import {findPostInQueryData as findPostInNotifsQueryData} from './notifications/feed'
+import {findAllPostsInQueryData as findAllPostsInFeedQueryData} from './post-feed'
+import {findAllPostsInQueryData as findAllPostsInNotifsQueryData} from './notifications/feed'
import {precacheThreadPostProfiles} from './profile'
import {getEmbeddedPost} from './util'
@@ -82,21 +82,9 @@ export function usePostThreadQuery(uri: string | undefined) {
return undefined
}
{
- const item = findPostInQueryData(queryClient, uri)
- if (item) {
- return threadNodeToPlaceholderThread(item)
- }
- }
- {
- const item = findPostInFeedQueryData(queryClient, uri)
- if (item) {
- return postViewToPlaceholderThread(item)
- }
- }
- {
- const item = findPostInNotifsQueryData(queryClient, uri)
- if (item) {
- return postViewToPlaceholderThread(item)
+ const post = findPostInQueryData(queryClient, uri)
+ if (post) {
+ return post
}
}
return undefined
@@ -171,11 +159,18 @@ function responseToThreadNodes(
AppBskyFeedPost.isRecord(node.post.record) &&
AppBskyFeedPost.validateRecord(node.post.record).success
) {
+ const post = node.post
+ // These should normally be present. They're missing only for
+ // posts that were *just* created. Ideally, the backend would
+ // know to return zeros. Fill them in manually to compensate.
+ post.replyCount ??= 0
+ post.likeCount ??= 0
+ post.repostCount ??= 0
return {
type: 'post',
_reactKey: node.post.uri,
uri: node.post.uri,
- post: node.post,
+ post: post,
record: node.post.record,
parent:
node.parent && direction !== 'down'
@@ -213,14 +208,24 @@ function responseToThreadNodes(
function findPostInQueryData(
queryClient: QueryClient,
uri: string,
-): ThreadNode | undefined {
- const generator = findAllPostsInQueryData(queryClient, uri)
- const result = generator.next()
- if (result.done) {
- return undefined
- } else {
- return result.value
+): ThreadNode | void {
+ let partial
+ for (let item of findAllPostsInQueryData(queryClient, uri)) {
+ if (item.type === 'post') {
+ // Currently, the backend doesn't send full post info in some cases
+ // (for example, for quoted posts). We use missing `likeCount`
+ // as a way to detect that. In the future, we should fix this on
+ // the backend, which will let us always stop on the first result.
+ const hasAllInfo = item.post.likeCount != null
+ if (hasAllInfo) {
+ return item
+ } else {
+ partial = item
+ // Keep searching, we might still find a full post in the cache.
+ }
+ }
}
+ return partial
}
export function* findAllPostsInQueryData(
@@ -236,7 +241,10 @@ export function* findAllPostsInQueryData(
}
for (const item of traverseThread(queryData)) {
if (item.uri === uri) {
- yield item
+ const placeholder = threadNodeToPlaceholderThread(item)
+ if (placeholder) {
+ yield placeholder
+ }
}
const quotedPost =
item.type === 'post' ? getEmbeddedPost(item.post.embed) : undefined
@@ -245,6 +253,12 @@ export function* findAllPostsInQueryData(
}
}
}
+ for (let post of findAllPostsInFeedQueryData(queryClient, uri)) {
+ yield postViewToPlaceholderThread(post)
+ }
+ for (let post of findAllPostsInNotifsQueryData(queryClient, uri)) {
+ yield postViewToPlaceholderThread(post)
+ }
}
function* traverseThread(node: ThreadNode): Generator {
diff --git a/src/state/queries/preferences/const.ts b/src/state/queries/preferences/const.ts
index 2d9d02994e..53c9e482af 100644
--- a/src/state/queries/preferences/const.ts
+++ b/src/state/queries/preferences/const.ts
@@ -7,7 +7,7 @@ import {DEFAULT_LOGGED_OUT_LABEL_PREFERENCES} from '#/state/queries/preferences/
export const DEFAULT_HOME_FEED_PREFS: UsePreferencesQueryResponse['feedViewPrefs'] =
{
hideReplies: false,
- hideRepliesByUnfollowed: false,
+ hideRepliesByUnfollowed: true,
hideRepliesByLikeCount: 0,
hideReposts: false,
hideQuotePosts: false,
@@ -49,4 +49,6 @@ export const DEFAULT_LOGGED_OUT_PREFERENCES: UsePreferencesQueryResponse = {
threadViewPrefs: DEFAULT_THREAD_VIEW_PREFS,
userAge: 13, // TODO(pwi)
interests: {tags: []},
+ mutedWords: [],
+ hiddenPosts: [],
}
diff --git a/src/state/queries/preferences/index.ts b/src/state/queries/preferences/index.ts
index 632d31a13c..37ef10ae0c 100644
--- a/src/state/queries/preferences/index.ts
+++ b/src/state/queries/preferences/index.ts
@@ -1,6 +1,10 @@
import {useMemo} from 'react'
import {useQuery, useMutation, useQueryClient} from '@tanstack/react-query'
-import {LabelPreference, BskyFeedViewPreference} from '@atproto/api'
+import {
+ LabelPreference,
+ BskyFeedViewPreference,
+ AppBskyActorDefs,
+} from '@atproto/api'
import {track} from '#/lib/analytics/analytics'
import {getAge} from '#/lib/strings/time'
@@ -108,6 +112,7 @@ export function useModerationOpts() {
return {
...moderationOpts,
hiddenPosts,
+ mutedWords: prefs.data.mutedWords || [],
}
}, [currentAccount?.did, prefs.data, hiddenPosts])
return opts
@@ -164,7 +169,7 @@ export function usePreferencesSetBirthDateMutation() {
return useMutation({
mutationFn: async ({birthDate}: {birthDate: Date}) => {
- await getAgent().setPersonalDetails({birthDate})
+ await getAgent().setPersonalDetails({birthDate: birthDate.toISOString()})
// triggers a refetch
await queryClient.invalidateQueries({
queryKey: preferencesQueryKey,
@@ -278,3 +283,45 @@ export function useUnpinFeedMutation() {
},
})
}
+
+export function useUpsertMutedWordsMutation() {
+ const queryClient = useQueryClient()
+
+ return useMutation({
+ mutationFn: async (mutedWords: AppBskyActorDefs.MutedWord[]) => {
+ await getAgent().upsertMutedWords(mutedWords)
+ // triggers a refetch
+ await queryClient.invalidateQueries({
+ queryKey: preferencesQueryKey,
+ })
+ },
+ })
+}
+
+export function useUpdateMutedWordMutation() {
+ const queryClient = useQueryClient()
+
+ return useMutation({
+ mutationFn: async (mutedWord: AppBskyActorDefs.MutedWord) => {
+ await getAgent().updateMutedWord(mutedWord)
+ // triggers a refetch
+ await queryClient.invalidateQueries({
+ queryKey: preferencesQueryKey,
+ })
+ },
+ })
+}
+
+export function useRemoveMutedWordMutation() {
+ const queryClient = useQueryClient()
+
+ return useMutation({
+ mutationFn: async (mutedWord: AppBskyActorDefs.MutedWord) => {
+ await getAgent().removeMutedWord(mutedWord)
+ // triggers a refetch
+ await queryClient.invalidateQueries({
+ queryKey: preferencesQueryKey,
+ })
+ },
+ })
+}
diff --git a/src/state/queries/util.ts b/src/state/queries/util.ts
index f3a87ae5db..54752b332a 100644
--- a/src/state/queries/util.ts
+++ b/src/state/queries/util.ts
@@ -53,5 +53,6 @@ export function embedViewRecordToPostView(
record: v.value,
indexedAt: v.indexedAt,
labels: v.labels,
+ embed: v.embeds?.[0],
}
}
diff --git a/src/state/session/index.tsx b/src/state/session/index.tsx
index b555a997b8..46628318c5 100644
--- a/src/state/session/index.tsx
+++ b/src/state/session/index.tsx
@@ -7,7 +7,6 @@ import {networkRetry} from '#/lib/async/retry'
import {logger} from '#/logger'
import * as persisted from '#/state/persisted'
import {PUBLIC_BSKY_AGENT} from '#/state/queries'
-import {IS_PROD} from '#/lib/constants'
import {emitSessionDropped} from '../events'
import {useLoggedOutViewControls} from '#/state/shell/logged-out'
import {useCloseAllActiveElements} from '#/state/util'
@@ -36,7 +35,6 @@ export type SessionState = {
}
export type StateContext = SessionState & {
hasSession: boolean
- isSandbox: boolean
}
export type ApiContext = {
createAccount: (props: {
@@ -84,7 +82,6 @@ const StateContext = React.createContext({
accounts: [],
currentAccount: undefined,
hasSession: false,
- isSandbox: false,
})
const ApiContext = React.createContext({
@@ -136,7 +133,7 @@ function createPersistSessionHandler(
accessJwt: session?.accessJwt,
}
- logger.info(`session: persistSession`, {
+ logger.debug(`session: persistSession`, {
event,
deactivated: refreshedAccount.deactivated,
})
@@ -323,7 +320,7 @@ export function Provider({children}: React.PropsWithChildren<{}>) {
)
const logout = React.useCallback(async () => {
- logger.info(`session: logout`)
+ logger.debug(`session: logout`)
clearCurrentAccount()
setStateAndPersist(s => {
return {
@@ -377,7 +374,7 @@ export function Provider({children}: React.PropsWithChildren<{}>) {
}
if (canReusePrevSession) {
- logger.info(`session: attempting to reuse previous session`)
+ logger.debug(`session: attempting to reuse previous session`)
agent.session = prevSession
__globalAgent = agent
@@ -387,7 +384,7 @@ export function Provider({children}: React.PropsWithChildren<{}>) {
if (prevSession.deactivated) {
// don't attempt to resume
// use will be taken to the deactivated screen
- logger.info(`session: reusing session for deactivated account`)
+ logger.debug(`session: reusing session for deactivated account`)
return
}
@@ -413,7 +410,7 @@ export function Provider({children}: React.PropsWithChildren<{}>) {
__globalAgent = PUBLIC_BSKY_AGENT
})
} else {
- logger.info(`session: attempting to resume using previous session`)
+ logger.debug(`session: attempting to resume using previous session`)
try {
const freshAccount = await resumeSessionWithFreshAccount()
@@ -434,7 +431,7 @@ export function Provider({children}: React.PropsWithChildren<{}>) {
}
async function resumeSessionWithFreshAccount(): Promise {
- logger.info(`session: resumeSessionWithFreshAccount`)
+ logger.debug(`session: resumeSessionWithFreshAccount`)
await networkRetry(1, () => agent.resumeSession(prevSession))
@@ -555,11 +552,11 @@ export function Provider({children}: React.PropsWithChildren<{}>) {
return persisted.onUpdate(() => {
const session = persisted.get('session')
- logger.info(`session: persisted onUpdate`, {})
+ logger.debug(`session: persisted onUpdate`, {})
if (session.currentAccount && session.currentAccount.refreshJwt) {
if (session.currentAccount?.did !== state.currentAccount?.did) {
- logger.info(`session: persisted onUpdate, switching accounts`, {
+ logger.debug(`session: persisted onUpdate, switching accounts`, {
from: {
did: state.currentAccount?.did,
handle: state.currentAccount?.handle,
@@ -572,7 +569,7 @@ export function Provider({children}: React.PropsWithChildren<{}>) {
initSession(session.currentAccount)
} else {
- logger.info(`session: persisted onUpdate, updating session`, {})
+ logger.debug(`session: persisted onUpdate, updating session`, {})
/*
* Use updated session in this tab's agent. Do not call
@@ -610,9 +607,6 @@ export function Provider({children}: React.PropsWithChildren<{}>) {
() => ({
...state,
hasSession: !!state.currentAccount,
- isSandbox: state.currentAccount
- ? !IS_PROD(state.currentAccount?.service)
- : false,
}),
[state],
)
diff --git a/src/state/shell/composer.tsx b/src/state/shell/composer.tsx
index 696a3c5ba1..c9dbfbeac4 100644
--- a/src/state/shell/composer.tsx
+++ b/src/state/shell/composer.tsx
@@ -38,6 +38,8 @@ export interface ComposerOpts {
quote?: ComposerOptsQuote
mention?: string // handle of user to mention
openPicker?: (pos: DOMRect | undefined) => void
+ text?: string
+ imageUris?: {uri: string; width: number; height: number}[]
}
type StateContext = ComposerOpts | undefined
diff --git a/src/state/util.ts b/src/state/util.ts
index 57f4331b05..f65d14a84c 100644
--- a/src/state/util.ts
+++ b/src/state/util.ts
@@ -3,6 +3,7 @@ import {useLightboxControls} from './lightbox'
import {useModalControls} from './modals'
import {useComposerControls} from './shell/composer'
import {useSetDrawerOpen} from './shell/drawer-open'
+import {useDialogStateControlContext} from '#/state/dialogs'
/**
* returns true if something was closed
@@ -12,6 +13,7 @@ export function useCloseAnyActiveElement() {
const {closeLightbox} = useLightboxControls()
const {closeModal} = useModalControls()
const {closeComposer} = useComposerControls()
+ const {closeAllDialogs} = useDialogStateControlContext()
const setDrawerOpen = useSetDrawerOpen()
return useCallback(() => {
if (closeLightbox()) {
@@ -23,9 +25,12 @@ export function useCloseAnyActiveElement() {
if (closeComposer()) {
return true
}
+ if (closeAllDialogs()) {
+ return true
+ }
setDrawerOpen(false)
return false
- }, [closeLightbox, closeModal, closeComposer, setDrawerOpen])
+ }, [closeLightbox, closeModal, closeComposer, setDrawerOpen, closeAllDialogs])
}
/**
@@ -35,11 +40,19 @@ export function useCloseAllActiveElements() {
const {closeLightbox} = useLightboxControls()
const {closeAllModals} = useModalControls()
const {closeComposer} = useComposerControls()
+ const {closeAllDialogs: closeAlfDialogs} = useDialogStateControlContext()
const setDrawerOpen = useSetDrawerOpen()
return useCallback(() => {
closeLightbox()
closeAllModals()
closeComposer()
+ closeAlfDialogs()
setDrawerOpen(false)
- }, [closeLightbox, closeAllModals, closeComposer, setDrawerOpen])
+ }, [
+ closeLightbox,
+ closeAllModals,
+ closeComposer,
+ closeAlfDialogs,
+ setDrawerOpen,
+ ])
}
diff --git a/src/view/com/auth/create/CaptchaWebView.tsx b/src/view/com/auth/create/CaptchaWebView.tsx
new file mode 100644
index 0000000000..b0de8b4a4b
--- /dev/null
+++ b/src/view/com/auth/create/CaptchaWebView.tsx
@@ -0,0 +1,86 @@
+import React from 'react'
+import {WebView, WebViewNavigation} from 'react-native-webview'
+import {ShouldStartLoadRequest} from 'react-native-webview/lib/WebViewTypes'
+import {StyleSheet} from 'react-native'
+import {CreateAccountState} from 'view/com/auth/create/state'
+
+const ALLOWED_HOSTS = [
+ 'bsky.social',
+ 'bsky.app',
+ 'staging.bsky.app',
+ 'staging.bsky.dev',
+ 'js.hcaptcha.com',
+ 'newassets.hcaptcha.com',
+ 'api2.hcaptcha.com',
+]
+
+export function CaptchaWebView({
+ url,
+ stateParam,
+ uiState,
+ onSuccess,
+ onError,
+}: {
+ url: string
+ stateParam: string
+ uiState?: CreateAccountState
+ onSuccess: (code: string) => void
+ onError: () => void
+}) {
+ const redirectHost = React.useMemo(() => {
+ if (!uiState?.serviceUrl) return 'bsky.app'
+
+ return uiState?.serviceUrl &&
+ new URL(uiState?.serviceUrl).host === 'staging.bsky.dev'
+ ? 'staging.bsky.app'
+ : 'bsky.app'
+ }, [uiState?.serviceUrl])
+
+ const wasSuccessful = React.useRef(false)
+
+ const onShouldStartLoadWithRequest = React.useCallback(
+ (event: ShouldStartLoadRequest) => {
+ const urlp = new URL(event.url)
+ return ALLOWED_HOSTS.includes(urlp.host)
+ },
+ [],
+ )
+
+ const onNavigationStateChange = React.useCallback(
+ (e: WebViewNavigation) => {
+ if (wasSuccessful.current) return
+
+ const urlp = new URL(e.url)
+ if (urlp.host !== redirectHost) return
+
+ const code = urlp.searchParams.get('code')
+ if (urlp.searchParams.get('state') !== stateParam || !code) {
+ onError()
+ return
+ }
+
+ wasSuccessful.current = true
+ onSuccess(code)
+ },
+ [redirectHost, stateParam, onSuccess, onError],
+ )
+
+ return (
+
+ )
+}
+
+const styles = StyleSheet.create({
+ webview: {
+ flex: 1,
+ backgroundColor: 'transparent',
+ borderRadius: 10,
+ },
+})
diff --git a/src/view/com/auth/create/CaptchaWebView.web.tsx b/src/view/com/auth/create/CaptchaWebView.web.tsx
new file mode 100644
index 0000000000..7791a58dd7
--- /dev/null
+++ b/src/view/com/auth/create/CaptchaWebView.web.tsx
@@ -0,0 +1,61 @@
+import React from 'react'
+import {StyleSheet} from 'react-native'
+
+// @ts-ignore web only, we will always redirect to the app on web (CORS)
+const REDIRECT_HOST = new URL(window.location.href).host
+
+export function CaptchaWebView({
+ url,
+ stateParam,
+ onSuccess,
+ onError,
+}: {
+ url: string
+ stateParam: string
+ onSuccess: (code: string) => void
+ onError: () => void
+}) {
+ const onLoad = React.useCallback(() => {
+ // @ts-ignore web
+ const frame: HTMLIFrameElement = document.getElementById(
+ 'captcha-iframe',
+ ) as HTMLIFrameElement
+
+ try {
+ // @ts-ignore web
+ const href = frame?.contentWindow?.location.href
+ if (!href) return
+ const urlp = new URL(href)
+
+ // This shouldn't happen with CORS protections, but for good measure
+ if (urlp.host !== REDIRECT_HOST) return
+
+ const code = urlp.searchParams.get('code')
+ if (urlp.searchParams.get('state') !== stateParam || !code) {
+ onError()
+ return
+ }
+ onSuccess(code)
+ } catch (e) {
+ // We don't need to handle this
+ }
+ }, [stateParam, onSuccess, onError])
+
+ return (
+
+ )
+}
+
+const styles = StyleSheet.create({
+ iframe: {
+ flex: 1,
+ borderWidth: 0,
+ borderRadius: 10,
+ backgroundColor: 'transparent',
+ },
+})
diff --git a/src/view/com/auth/create/CreateAccount.tsx b/src/view/com/auth/create/CreateAccount.tsx
index 5d452736ae..d193802fe0 100644
--- a/src/view/com/auth/create/CreateAccount.tsx
+++ b/src/view/com/auth/create/CreateAccount.tsx
@@ -13,33 +13,25 @@ import {s} from 'lib/styles'
import {usePalette} from 'lib/hooks/usePalette'
import {msg, Trans} from '@lingui/macro'
import {useLingui} from '@lingui/react'
-import {useOnboardingDispatch} from '#/state/shell'
-import {useSessionApi} from '#/state/session'
-import {useCreateAccount, submit} from './state'
+import {useCreateAccount, useSubmitCreateAccount} from './state'
import {useServiceQuery} from '#/state/queries/service'
-import {
- usePreferencesSetBirthDateMutation,
- useSetSaveFeedsMutation,
- DEFAULT_PROD_FEEDS,
-} from '#/state/queries/preferences'
-import {FEEDBACK_FORM_URL, HITSLOP_10, IS_PROD} from '#/lib/constants'
+import {FEEDBACK_FORM_URL, HITSLOP_10} from '#/lib/constants'
import {Step1} from './Step1'
import {Step2} from './Step2'
import {Step3} from './Step3'
import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries'
import {TextLink} from '../../util/Link'
+import {getAgent} from 'state/session'
+import {createFullHandle, validateHandle} from 'lib/strings/handles'
export function CreateAccount({onPressBack}: {onPressBack: () => void}) {
const {screen} = useAnalytics()
const pal = usePalette('default')
const {_} = useLingui()
const [uiState, uiDispatch] = useCreateAccount()
- const onboardingDispatch = useOnboardingDispatch()
- const {createAccount} = useSessionApi()
- const {mutate: setBirthDate} = usePreferencesSetBirthDateMutation()
- const {mutate: setSavedFeeds} = useSetSaveFeedsMutation()
const {isTabletOrDesktop} = useWebMediaQueries()
+ const submit = useSubmitCreateAccount(uiState, uiDispatch)
React.useEffect(() => {
screen('CreateAccount')
@@ -84,33 +76,52 @@ export function CreateAccount({onPressBack}: {onPressBack: () => void}) {
if (!uiState.canNext) {
return
}
- if (uiState.step < 3) {
- uiDispatch({type: 'next'})
- } else {
+
+ if (uiState.step === 2) {
+ if (!validateHandle(uiState.handle, uiState.userDomain).overall) {
+ return
+ }
+
+ uiDispatch({type: 'set-processing', value: true})
try {
- await submit({
- onboardingDispatch,
- createAccount,
- uiState,
- uiDispatch,
- _,
+ const res = await getAgent().resolveHandle({
+ handle: createFullHandle(uiState.handle, uiState.userDomain),
})
- setBirthDate({birthDate: uiState.birthDate})
- if (IS_PROD(uiState.serviceUrl)) {
- setSavedFeeds(DEFAULT_PROD_FEEDS)
+
+ if (res.data.did) {
+ uiDispatch({
+ type: 'set-error',
+ value: _(msg`That handle is already taken.`),
+ })
+ return
}
- } catch {
- // dont need to handle here
+ } catch (e) {
+ // Don't need to handle
+ } finally {
+ uiDispatch({type: 'set-processing', value: false})
+ }
+
+ if (!uiState.isCaptchaRequired) {
+ try {
+ await submit()
+ } catch {
+ // dont need to handle here
+ }
+ // We don't need to go to the next page if there wasn't a captcha required
+ return
}
}
+
+ uiDispatch({type: 'next'})
}, [
- uiState,
+ uiState.canNext,
+ uiState.step,
+ uiState.isCaptchaRequired,
+ uiState.handle,
+ uiState.userDomain,
uiDispatch,
- onboardingDispatch,
- createAccount,
- setBirthDate,
- setSavedFeeds,
_,
+ submit,
])
// rendering
diff --git a/src/view/com/auth/create/Step1.tsx b/src/view/com/auth/create/Step1.tsx
index a7abbfaa8d..c1bec535f5 100644
--- a/src/view/com/auth/create/Step1.tsx
+++ b/src/view/com/auth/create/Step1.tsx
@@ -4,7 +4,6 @@ import {
Keyboard,
StyleSheet,
TouchableOpacity,
- TouchableWithoutFeedback,
View,
} from 'react-native'
import {CreateAccountState, CreateAccountDispatch, is18} from './state'
@@ -19,7 +18,6 @@ import {ErrorMessage} from 'view/com/util/error/ErrorMessage'
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'
import {
FontAwesomeIcon,
@@ -49,7 +47,6 @@ export function Step1({
}) {
const pal = usePalette('default')
const {_} = useLingui()
- const {openModal} = useModalControls()
const serverInputControl = useDialogControl()
const onPressSelectService = React.useCallback(() => {
@@ -57,10 +54,6 @@ export function Step1({
Keyboard.dismiss()
}, [serverInputControl])
- const onPressWaitlist = React.useCallback(() => {
- openModal({name: 'waitlist'})
- }, [openModal])
-
const birthDate = React.useMemo(() => {
return sanitizeDate(uiState.birthDate)
}, [uiState.birthDate])
@@ -73,6 +66,10 @@ export function Step1({
/>
+ {uiState.error ? (
+
+ ) : undefined}
+
Hosting provider
@@ -160,23 +157,7 @@ export function Step1({
)}
- {!uiState.inviteCode && uiState.isInviteCodeRequired ? (
-
-
- Don't have an invite code?{' '}
-
-
-
-
- Join the waitlist.
-
-
-
-
- ) : (
+ {uiState.inviteCode ? (
<>
)}
>
- )}
+ ) : undefined}
>
)}
- {uiState.error ? (
-
- ) : undefined}
)
}
@@ -269,7 +247,7 @@ export function Step1({
const styles = StyleSheet.create({
error: {
borderRadius: 6,
- marginTop: 10,
+ marginBottom: 10,
},
dateInputButton: {
borderWidth: 1,
diff --git a/src/view/com/auth/create/Step2.tsx b/src/view/com/auth/create/Step2.tsx
index 2e16b13bb5..5c262977f1 100644
--- a/src/view/com/auth/create/Step2.tsx
+++ b/src/view/com/auth/create/Step2.tsx
@@ -1,35 +1,26 @@
import React from 'react'
-import {
- ActivityIndicator,
- StyleSheet,
- TouchableWithoutFeedback,
- View,
-} from 'react-native'
-import RNPickerSelect from 'react-native-picker-select'
-import {
- CreateAccountState,
- CreateAccountDispatch,
- requestVerificationCode,
-} from './state'
+import {View} from 'react-native'
+import {CreateAccountState, CreateAccountDispatch} from './state'
import {Text} from 'view/com/util/text/Text'
import {StepHeader} from './StepHeader'
import {s} from 'lib/styles'
-import {usePalette} from 'lib/hooks/usePalette'
import {TextInput} from '../util/TextInput'
-import {Button} from '../../util/forms/Button'
-import {ErrorMessage} from 'view/com/util/error/ErrorMessage'
-import {isAndroid, isWeb} from 'platform/detection'
-import {Trans, msg} from '@lingui/macro'
-import {useLingui} from '@lingui/react'
-import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries'
-import parsePhoneNumber from 'libphonenumber-js'
-import {COUNTRY_CODES} from '#/lib/country-codes'
import {
- FontAwesomeIcon,
- FontAwesomeIconStyle,
-} from '@fortawesome/react-native-fontawesome'
-import {HITSLOP_10} from '#/lib/constants'
+ createFullHandle,
+ IsValidHandle,
+ validateHandle,
+} from 'lib/strings/handles'
+import {usePalette} from 'lib/hooks/usePalette'
+import {msg, Trans} from '@lingui/macro'
+import {useLingui} from '@lingui/react'
+import {atoms as a, useTheme} from '#/alf'
+import {Check_Stroke2_Corner0_Rounded as Check} from '#/components/icons/Check'
+import {TimesLarge_Stroke2_Corner0_Rounded as Times} from '#/components/icons/Times'
+import {useFocusEffect} from '@react-navigation/native'
+/** STEP 3: Your user handle
+ * @field User handle
+ */
export function Step2({
uiState,
uiDispatch,
@@ -39,269 +30,111 @@ export function Step2({
}) {
const pal = usePalette('default')
const {_} = useLingui()
- const {isMobile} = useWebMediaQueries()
+ const t = useTheme()
- const onPressRequest = React.useCallback(() => {
- const phoneNumber = parsePhoneNumber(
- uiState.verificationPhone,
- uiState.phoneCountry,
- )
- if (phoneNumber && phoneNumber.isValid()) {
- requestVerificationCode({uiState, uiDispatch, _})
- } else {
- uiDispatch({
- type: 'set-error',
- value: _(
- msg`There's something wrong with this number. Please choose your country and enter your full phone number!`,
- ),
- })
- }
- }, [uiState, uiDispatch, _])
+ const [validCheck, setValidCheck] = React.useState({
+ handleChars: false,
+ frontLength: false,
+ totalLength: true,
+ overall: false,
+ })
- const onPressRetry = React.useCallback(() => {
- uiDispatch({type: 'set-has-requested-verification-code', value: false})
- }, [uiDispatch])
+ useFocusEffect(
+ React.useCallback(() => {
+ setValidCheck(validateHandle(uiState.handle, uiState.userDomain))
- const phoneNumberFormatted = React.useMemo(
- () =>
- uiState.hasRequestedVerificationCode
- ? parsePhoneNumber(
- uiState.verificationPhone,
- uiState.phoneCountry,
- )?.formatInternational()
- : '',
- [
- uiState.hasRequestedVerificationCode,
- uiState.verificationPhone,
- uiState.phoneCountry,
- ],
+ // Disabling this, because we only want to run this when we focus the screen
+ // eslint-disable-next-line react-hooks/exhaustive-deps
+ }, []),
+ )
+
+ const onHandleChange = React.useCallback(
+ (value: string) => {
+ if (uiState.error) {
+ uiDispatch({type: 'set-error', value: ''})
+ }
+
+ setValidCheck(validateHandle(value, uiState.userDomain))
+ uiDispatch({type: 'set-handle', value})
+ },
+ [uiDispatch, uiState.error, uiState.userDomain],
)
return (
-
-
- {!uiState.hasRequestedVerificationCode ? (
- <>
-
-
- Country
+
+
+
+
+
+ Your full handle will be{' '}
+
+ @{createFullHandle(uiState.handle, uiState.userDomain)}
-
-
- uiDispatch({type: 'set-phone-country', value})
- }
- items={COUNTRY_CODES.filter(l => Boolean(l.code2)).map(l => ({
- label: l.name,
- value: l.code2,
- key: l.code2,
- }))}
- style={{
- inputAndroid: {
- backgroundColor: pal.view.backgroundColor,
- color: pal.text.color,
- fontSize: 21,
- letterSpacing: 0.5,
- fontWeight: '500',
- paddingHorizontal: 14,
- paddingVertical: 8,
- borderRadius: 4,
- },
- inputIOS: {
- backgroundColor: pal.view.backgroundColor,
- color: pal.text.color,
- fontSize: 14,
- letterSpacing: 0.5,
- fontWeight: '500',
- paddingHorizontal: 14,
- paddingVertical: 8,
- borderWidth: 1,
- borderColor: pal.border.borderColor,
- borderRadius: 4,
- },
- inputWeb: {
- // @ts-ignore web only
- cursor: 'pointer',
- '-moz-appearance': 'none',
- '-webkit-appearance': 'none',
- appearance: 'none',
- outline: 0,
- borderWidth: 1,
- borderColor: pal.border.borderColor,
- backgroundColor: pal.view.backgroundColor,
- color: pal.text.color,
- fontSize: 14,
- letterSpacing: 0.5,
- fontWeight: '500',
- paddingHorizontal: 14,
- paddingVertical: 8,
- borderRadius: 4,
- },
- }}
- accessibilityLabel={_(msg`Select your phone's country`)}
- accessibilityHint=""
- accessibilityLabelledBy="phoneCountry"
- />
-
-
-
+
+
+
+ {uiState.error ? (
+
+
+
+ {uiState.error}
+
-
-
-
-
- Phone number
+ ) : undefined}
+
+
+
+ May only contain letters and numbers
-
- uiDispatch({type: 'set-verification-phone', value})
- }
- accessibilityLabel={_(msg`Email`)}
- accessibilityHint={_(
- msg`Input phone number for SMS verification`,
- )}
- accessibilityLabelledBy="phoneNumber"
- keyboardType="phone-pad"
- autoCapitalize="none"
- autoComplete="tel"
- autoCorrect={false}
- autoFocus={true}
+
+
+
-
-
- Please enter a phone number that can receive SMS text messages.
-
-
-
-
-
- {uiState.isProcessing ? (
-
+ {!validCheck.totalLength ? (
+
+ May not be longer than 253 characters
+
) : (
-
+
+ Must be at least 3 characters
+
)}
- >
- ) : (
- <>
-
-
-
- Verification code{' '}
-
-
-
-
- Retry
-
-
-
-
-
- uiDispatch({type: 'set-verification-code', value})
- }
- accessibilityLabel={_(msg`Email`)}
- accessibilityHint={_(
- msg`Input the verification code we have texted to you`,
- )}
- accessibilityLabelledBy="verificationCode"
- keyboardType="phone-pad"
- autoCapitalize="none"
- autoComplete="one-time-code"
- textContentType="oneTimeCode"
- autoCorrect={false}
- autoFocus={true}
- />
-
-
- Please enter the verification code sent to{' '}
- {phoneNumberFormatted}.
-
-
-
- >
- )}
-
- {uiState.error ? (
-
- ) : undefined}
+
+
)
}
-const styles = StyleSheet.create({
- error: {
- borderRadius: 6,
- marginTop: 10,
- },
- // @ts-expect-error: Suppressing error due to incomplete `ViewStyle` type definition in react-native-web, missing `cursor` prop as discussed in https://github.com/necolas/react-native-web/issues/832.
- touchable: {
- ...(isWeb && {cursor: 'pointer'}),
- },
-})
+function IsValidIcon({valid}: {valid: boolean}) {
+ const t = useTheme()
+
+ if (!valid) {
+ return
+ }
+
+ return
+}
diff --git a/src/view/com/auth/create/Step3.tsx b/src/view/com/auth/create/Step3.tsx
index 3a52abf800..53fdfdde81 100644
--- a/src/view/com/auth/create/Step3.tsx
+++ b/src/view/com/auth/create/Step3.tsx
@@ -1,19 +1,23 @@
import React from 'react'
-import {StyleSheet, View} from 'react-native'
-import {CreateAccountState, CreateAccountDispatch} from './state'
-import {Text} from 'view/com/util/text/Text'
+import {ActivityIndicator, StyleSheet, View} from 'react-native'
+import {
+ CreateAccountState,
+ CreateAccountDispatch,
+ useSubmitCreateAccount,
+} from './state'
import {StepHeader} from './StepHeader'
-import {s} from 'lib/styles'
-import {TextInput} from '../util/TextInput'
-import {createFullHandle} from 'lib/strings/handles'
-import {usePalette} from 'lib/hooks/usePalette'
import {ErrorMessage} from 'view/com/util/error/ErrorMessage'
-import {msg, Trans} from '@lingui/macro'
+import {isWeb} from 'platform/detection'
+import {msg} from '@lingui/macro'
import {useLingui} from '@lingui/react'
-/** STEP 3: Your user handle
- * @field User handle
- */
+import {nanoid} from 'nanoid/non-secure'
+import {CaptchaWebView} from 'view/com/auth/create/CaptchaWebView'
+import {useTheme} from 'lib/ThemeContext'
+import {createFullHandle} from 'lib/strings/handles'
+
+const CAPTCHA_PATH = '/gate/signup'
+
export function Step3({
uiState,
uiDispatch,
@@ -21,33 +25,66 @@ export function Step3({
uiState: CreateAccountState
uiDispatch: CreateAccountDispatch
}) {
- const pal = usePalette('default')
const {_} = useLingui()
+ const theme = useTheme()
+ const submit = useSubmitCreateAccount(uiState, uiDispatch)
+
+ const [completed, setCompleted] = React.useState(false)
+
+ const stateParam = React.useMemo(() => nanoid(15), [])
+ const url = React.useMemo(() => {
+ const newUrl = new URL(uiState.serviceUrl)
+ newUrl.pathname = CAPTCHA_PATH
+ newUrl.searchParams.set(
+ 'handle',
+ createFullHandle(uiState.handle, uiState.userDomain),
+ )
+ newUrl.searchParams.set('state', stateParam)
+ newUrl.searchParams.set('colorScheme', theme.colorScheme)
+
+ console.log(newUrl)
+
+ return newUrl.href
+ }, [
+ uiState.serviceUrl,
+ uiState.handle,
+ uiState.userDomain,
+ stateParam,
+ theme.colorScheme,
+ ])
+
+ const onSuccess = React.useCallback(
+ (code: string) => {
+ setCompleted(true)
+ submit(code)
+ },
+ [submit],
+ )
+
+ const onError = React.useCallback(() => {
+ uiDispatch({
+ type: 'set-error',
+ value: _(msg`Error receiving captcha response.`),
+ })
+ }, [_, uiDispatch])
+
return (
-
-
- uiDispatch({type: 'set-handle', value})}
- // TODO: Add explicit text label
- accessibilityLabel={_(msg`User handle`)}
- accessibilityHint={_(msg`Input your user handle`)}
- />
-
- Your full handle will be{' '}
-
- @{createFullHandle(uiState.handle, uiState.userDomain)}
-
-
+
+
+ {!completed ? (
+
+ ) : (
+
+ )}
+
{uiState.error ? (
) : undefined}
@@ -58,5 +95,20 @@ export function Step3({
const styles = StyleSheet.create({
error: {
borderRadius: 6,
+ marginTop: 10,
+ },
+ // @ts-expect-error: Suppressing error due to incomplete `ViewStyle` type definition in react-native-web, missing `cursor` prop as discussed in https://github.com/necolas/react-native-web/issues/832.
+ touchable: {
+ ...(isWeb && {cursor: 'pointer'}),
+ },
+ container: {
+ minHeight: 500,
+ width: '100%',
+ paddingBottom: 20,
+ overflow: 'hidden',
+ },
+ center: {
+ alignItems: 'center',
+ justifyContent: 'center',
},
})
diff --git a/src/view/com/auth/create/StepHeader.tsx b/src/view/com/auth/create/StepHeader.tsx
index af6bf54781..a98b392d8d 100644
--- a/src/view/com/auth/create/StepHeader.tsx
+++ b/src/view/com/auth/create/StepHeader.tsx
@@ -11,7 +11,7 @@ export function StepHeader({
children,
}: React.PropsWithChildren<{uiState: CreateAccountState; title: string}>) {
const pal = usePalette('default')
- const numSteps = uiState.isPhoneVerificationRequired ? 3 : 2
+ const numSteps = 3
return (
diff --git a/src/view/com/auth/create/state.ts b/src/view/com/auth/create/state.ts
index e8a7cd4ed2..7a727ec0b2 100644
--- a/src/view/com/auth/create/state.ts
+++ b/src/view/com/auth/create/state.ts
@@ -1,20 +1,23 @@
-import {useReducer} from 'react'
+import {useCallback, useReducer} from 'react'
import {
ComAtprotoServerDescribeServer,
ComAtprotoServerCreateAccount,
- BskyAgent,
} from '@atproto/api'
import {I18nContext, useLingui} from '@lingui/react'
import {msg} from '@lingui/macro'
import * as EmailValidator from 'email-validator'
import {getAge} from 'lib/strings/time'
import {logger} from '#/logger'
-import {createFullHandle} from '#/lib/strings/handles'
+import {createFullHandle, validateHandle} from '#/lib/strings/handles'
import {cleanError} from '#/lib/strings/errors'
-import {DispatchContext as OnboardingDispatchContext} from '#/state/shell/onboarding'
-import {ApiContext as SessionApiContext} from '#/state/session'
-import {DEFAULT_SERVICE} from '#/lib/constants'
-import parsePhoneNumber, {CountryCode} from 'libphonenumber-js'
+import {useOnboardingDispatch} from '#/state/shell/onboarding'
+import {useSessionApi} from '#/state/session'
+import {DEFAULT_SERVICE, IS_PROD_SERVICE} from '#/lib/constants'
+import {
+ DEFAULT_PROD_FEEDS,
+ usePreferencesSetBirthDateMutation,
+ useSetSaveFeedsMutation,
+} from 'state/queries/preferences'
export type ServiceDescription = ComAtprotoServerDescribeServer.OutputSchema
const DEFAULT_DATE = new Date(Date.now() - 60e3 * 60 * 24 * 365 * 20) // default to 20 years ago
@@ -29,10 +32,6 @@ export type CreateAccountAction =
| {type: 'set-invite-code'; value: string}
| {type: 'set-email'; value: string}
| {type: 'set-password'; value: string}
- | {type: 'set-phone-country'; value: CountryCode}
- | {type: 'set-verification-phone'; value: string}
- | {type: 'set-verification-code'; value: string}
- | {type: 'set-has-requested-verification-code'; value: boolean}
| {type: 'set-handle'; value: string}
| {type: 'set-birth-date'; value: Date}
| {type: 'next'}
@@ -49,10 +48,6 @@ export interface CreateAccountState {
inviteCode: string
email: string
password: string
- phoneCountry: CountryCode
- verificationPhone: string
- verificationCode: string
- hasRequestedVerificationCode: boolean
handle: string
birthDate: Date
@@ -60,13 +55,14 @@ export interface CreateAccountState {
canBack: boolean
canNext: boolean
isInviteCodeRequired: boolean
- isPhoneVerificationRequired: boolean
+ isCaptchaRequired: boolean
}
export type CreateAccountDispatch = (action: CreateAccountAction) => void
export function useCreateAccount() {
const {_} = useLingui()
+
return useReducer(createReducer({_}), {
step: 1,
error: undefined,
@@ -77,144 +73,126 @@ export function useCreateAccount() {
inviteCode: '',
email: '',
password: '',
- phoneCountry: 'US',
- verificationPhone: '',
- verificationCode: '',
- hasRequestedVerificationCode: false,
handle: '',
birthDate: DEFAULT_DATE,
canBack: false,
canNext: false,
isInviteCodeRequired: false,
- isPhoneVerificationRequired: false,
+ isCaptchaRequired: false,
})
}
-export async function requestVerificationCode({
- uiState,
- uiDispatch,
- _,
-}: {
- uiState: CreateAccountState
- uiDispatch: CreateAccountDispatch
- _: I18nContext['_']
-}) {
- const phoneNumber = parsePhoneNumber(
- uiState.verificationPhone,
- uiState.phoneCountry,
- )?.number
- if (!phoneNumber) {
- return
- }
- uiDispatch({type: 'set-error', value: ''})
- uiDispatch({type: 'set-processing', value: true})
- uiDispatch({type: 'set-verification-phone', value: phoneNumber})
- try {
- const agent = new BskyAgent({service: uiState.serviceUrl})
- await agent.com.atproto.temp.requestPhoneVerification({
- phoneNumber,
- })
- uiDispatch({type: 'set-has-requested-verification-code', value: true})
- } catch (e: any) {
- logger.error(
- `Failed to request sms verification code (${e.status} status)`,
- {message: e},
- )
- uiDispatch({type: 'set-error', value: cleanError(e.toString())})
- }
- uiDispatch({type: 'set-processing', value: false})
-}
+export function useSubmitCreateAccount(
+ uiState: CreateAccountState,
+ uiDispatch: CreateAccountDispatch,
+) {
+ const {_} = useLingui()
+ const {createAccount} = useSessionApi()
+ const {mutate: setBirthDate} = usePreferencesSetBirthDateMutation()
+ const {mutate: setSavedFeeds} = useSetSaveFeedsMutation()
+ const onboardingDispatch = useOnboardingDispatch()
-export async function submit({
- createAccount,
- onboardingDispatch,
- uiState,
- uiDispatch,
- _,
-}: {
- createAccount: SessionApiContext['createAccount']
- onboardingDispatch: OnboardingDispatchContext
- uiState: CreateAccountState
- uiDispatch: CreateAccountDispatch
- _: I18nContext['_']
-}) {
- if (!uiState.email) {
- uiDispatch({type: 'set-step', value: 1})
- return uiDispatch({
- type: 'set-error',
- value: _(msg`Please enter your email.`),
- })
- }
- if (!EmailValidator.validate(uiState.email)) {
- uiDispatch({type: 'set-step', value: 1})
- return uiDispatch({
- type: 'set-error',
- value: _(msg`Your email appears to be invalid.`),
- })
- }
- if (!uiState.password) {
- uiDispatch({type: 'set-step', value: 1})
- return uiDispatch({
- type: 'set-error',
- value: _(msg`Please choose your password.`),
- })
- }
- if (
- uiState.isPhoneVerificationRequired &&
- (!uiState.verificationPhone || !uiState.verificationCode)
- ) {
- uiDispatch({type: 'set-step', value: 2})
- return uiDispatch({
- type: 'set-error',
- value: _(msg`Please enter the code you received by SMS.`),
- })
- }
- if (!uiState.handle) {
- uiDispatch({type: 'set-step', value: 3})
- return uiDispatch({
- type: 'set-error',
- value: _(msg`Please choose your handle.`),
- })
- }
- uiDispatch({type: 'set-error', value: ''})
- uiDispatch({type: 'set-processing', value: true})
+ return useCallback(
+ async (verificationCode?: string) => {
+ if (!uiState.email) {
+ uiDispatch({type: 'set-step', value: 1})
+ console.log('no email?')
+ return uiDispatch({
+ type: 'set-error',
+ value: _(msg`Please enter your email.`),
+ })
+ }
+ if (!EmailValidator.validate(uiState.email)) {
+ uiDispatch({type: 'set-step', value: 1})
+ return uiDispatch({
+ type: 'set-error',
+ value: _(msg`Your email appears to be invalid.`),
+ })
+ }
+ if (!uiState.password) {
+ uiDispatch({type: 'set-step', value: 1})
+ return uiDispatch({
+ type: 'set-error',
+ value: _(msg`Please choose your password.`),
+ })
+ }
+ if (!uiState.handle) {
+ uiDispatch({type: 'set-step', value: 2})
+ return uiDispatch({
+ type: 'set-error',
+ value: _(msg`Please choose your handle.`),
+ })
+ }
+ if (uiState.isCaptchaRequired && !verificationCode) {
+ uiDispatch({type: 'set-step', value: 3})
+ return uiDispatch({
+ type: 'set-error',
+ value: _(msg`Please complete the verification captcha.`),
+ })
+ }
+ uiDispatch({type: 'set-error', value: ''})
+ uiDispatch({type: 'set-processing', value: true})
- try {
- onboardingDispatch({type: 'start'}) // start now to avoid flashing the wrong view
- await createAccount({
- service: uiState.serviceUrl,
- email: uiState.email,
- handle: createFullHandle(uiState.handle, uiState.userDomain),
- password: uiState.password,
- inviteCode: uiState.inviteCode.trim(),
- verificationPhone: uiState.verificationPhone.trim(),
- verificationCode: uiState.verificationCode.trim(),
- })
- } catch (e: any) {
- onboardingDispatch({type: 'skip'}) // undo starting the onboard
- let errMsg = e.toString()
- if (e instanceof ComAtprotoServerCreateAccount.InvalidInviteCodeError) {
- errMsg = _(
- msg`Invite code not accepted. Check that you input it correctly and try again.`,
- )
- uiDispatch({type: 'set-step', value: 1})
- } else if (e.error === 'InvalidPhoneVerification') {
- uiDispatch({type: 'set-step', value: 2})
- }
+ try {
+ onboardingDispatch({type: 'start'}) // start now to avoid flashing the wrong view
+ await createAccount({
+ service: uiState.serviceUrl,
+ email: uiState.email,
+ handle: createFullHandle(uiState.handle, uiState.userDomain),
+ password: uiState.password,
+ inviteCode: uiState.inviteCode.trim(),
+ verificationCode: uiState.isCaptchaRequired
+ ? verificationCode
+ : undefined,
+ })
+ setBirthDate({birthDate: uiState.birthDate})
+ if (IS_PROD_SERVICE(uiState.serviceUrl)) {
+ setSavedFeeds(DEFAULT_PROD_FEEDS)
+ }
+ } catch (e: any) {
+ onboardingDispatch({type: 'skip'}) // undo starting the onboard
+ let errMsg = e.toString()
+ if (e instanceof ComAtprotoServerCreateAccount.InvalidInviteCodeError) {
+ errMsg = _(
+ msg`Invite code not accepted. Check that you input it correctly and try again.`,
+ )
+ uiDispatch({type: 'set-step', value: 1})
+ }
- if ([400, 429].includes(e.status)) {
- logger.warn('Failed to create account', {message: e})
- } else {
- logger.error(`Failed to create account (${e.status} status)`, {
- message: e,
- })
- }
+ if ([400, 429].includes(e.status)) {
+ logger.warn('Failed to create account', {message: e})
+ } else {
+ logger.error(`Failed to create account (${e.status} status)`, {
+ message: e,
+ })
+ }
- uiDispatch({type: 'set-processing', value: false})
- uiDispatch({type: 'set-error', value: cleanError(errMsg)})
- throw e
- }
+ const error = cleanError(errMsg)
+ const isHandleError = error.toLowerCase().includes('handle')
+
+ uiDispatch({type: 'set-processing', value: false})
+ uiDispatch({type: 'set-error', value: cleanError(errMsg)})
+ uiDispatch({type: 'set-step', value: isHandleError ? 2 : 1})
+ }
+ },
+ [
+ uiState.email,
+ uiState.password,
+ uiState.handle,
+ uiState.isCaptchaRequired,
+ uiState.serviceUrl,
+ uiState.userDomain,
+ uiState.inviteCode,
+ uiState.birthDate,
+ uiDispatch,
+ _,
+ onboardingDispatch,
+ createAccount,
+ setBirthDate,
+ setSavedFeeds,
+ ],
+ )
}
export function is13(state: CreateAccountState) {
@@ -269,22 +247,6 @@ function createReducer({_}: {_: I18nContext['_']}) {
case 'set-password': {
return compute({...state, password: action.value})
}
- case 'set-phone-country': {
- return compute({...state, phoneCountry: action.value})
- }
- case 'set-verification-phone': {
- return compute({
- ...state,
- verificationPhone: action.value,
- hasRequestedVerificationCode: false,
- })
- }
- case 'set-verification-code': {
- return compute({...state, verificationCode: action.value.trim()})
- }
- case 'set-has-requested-verification-code': {
- return compute({...state, hasRequestedVerificationCode: action.value})
- }
case 'set-handle': {
return compute({...state, handle: action.value})
}
@@ -302,18 +264,10 @@ function createReducer({_}: {_: I18nContext['_']}) {
})
}
}
- let increment = 1
- if (state.step === 1 && !state.isPhoneVerificationRequired) {
- increment = 2
- }
- return compute({...state, error: '', step: state.step + increment})
+ return compute({...state, error: '', step: state.step + 1})
}
case 'back': {
- let decrement = 1
- if (state.step === 3 && !state.isPhoneVerificationRequired) {
- decrement = 2
- }
- return compute({...state, error: '', step: state.step - decrement})
+ return compute({...state, error: '', step: state.step - 1})
}
}
}
@@ -329,22 +283,16 @@ function compute(state: CreateAccountState): CreateAccountState {
!!state.password
} else if (state.step === 2) {
canNext =
- !state.isPhoneVerificationRequired ||
- (!!state.verificationPhone &&
- isValidVerificationCode(state.verificationCode))
+ !!state.handle && validateHandle(state.handle, state.userDomain).overall
} else if (state.step === 3) {
- canNext = !!state.handle
+ // Step 3 will automatically redirect as soon as the captcha completes
+ canNext = false
}
return {
...state,
canBack: state.step > 1,
canNext,
isInviteCodeRequired: !!state.serviceDescription?.inviteCodeRequired,
- isPhoneVerificationRequired:
- !!state.serviceDescription?.phoneVerificationRequired,
+ isCaptchaRequired: !!state.serviceDescription?.phoneVerificationRequired,
}
}
-
-function isValidVerificationCode(str: string): boolean {
- return /[0-9]{6}/.test(str)
-}
diff --git a/src/view/com/auth/login/LoginForm.tsx b/src/view/com/auth/login/LoginForm.tsx
index e480de7a4c..fdba9f203f 100644
--- a/src/view/com/auth/login/LoginForm.tsx
+++ b/src/view/com/auth/login/LoginForm.tsx
@@ -107,7 +107,7 @@ export const LoginForm = ({
const errMsg = e.toString()
setIsProcessing(false)
if (errMsg.includes('Authentication Required')) {
- logger.info('Failed to login due to invalid credentials', {
+ logger.debug('Failed to login due to invalid credentials', {
error: errMsg,
})
setError(_(msg`Invalid username or password`))
diff --git a/src/view/com/auth/server-input/index.tsx b/src/view/com/auth/server-input/index.tsx
index a706219739..32b5a3141a 100644
--- a/src/view/com/auth/server-input/index.tsx
+++ b/src/view/com/auth/server-input/index.tsx
@@ -2,7 +2,7 @@ import React from 'react'
import {View} from 'react-native'
import {useLingui} from '@lingui/react'
import {Trans, msg} from '@lingui/macro'
-import {PROD_SERVICE} from 'lib/constants'
+import {BSKY_SERVICE} from 'lib/constants'
import * as persisted from '#/state/persisted'
import {atoms as a, useBreakpoints, useTheme} from '#/alf'
@@ -26,7 +26,7 @@ export function ServerInputDialog({
const [pdsAddressHistory, setPdsAddressHistory] = React.useState(
persisted.get('pdsAddressHistory') || [],
)
- const [fixedOption, setFixedOption] = React.useState([PROD_SERVICE])
+ const [fixedOption, setFixedOption] = React.useState([BSKY_SERVICE])
const [customAddress, setCustomAddress] = React.useState('')
const onClose = React.useCallback(() => {
@@ -86,7 +86,7 @@ export function ServerInputDialog({
label="Preferences"
values={fixedOption}
onChange={setFixedOption}>
-
+
{_(msg`Bluesky`)}
([])
const [threadgate, setThreadgate] = useState([])
const [suggestedLinks, setSuggestedLinks] = useState>(new Set())
- const gallery = useMemo(() => new GalleryModel(), [])
+ const gallery = useMemo(
+ () => new GalleryModel(initImageUris),
+ [initImageUris],
+ )
const onClose = useCallback(() => {
closeComposer()
}, [closeComposer])
diff --git a/src/view/com/composer/text-input/TextInput.tsx b/src/view/com/composer/text-input/TextInput.tsx
index 17f9513b72..20be585c25 100644
--- a/src/view/com/composer/text-input/TextInput.tsx
+++ b/src/view/com/composer/text-input/TextInput.tsx
@@ -190,12 +190,11 @@ export const TextInput = forwardRef(function TextInputImpl(
let i = 0
return Array.from(richtext.segments()).map(segment => {
- const isTag = AppBskyRichtextFacet.isTag(segment.facet?.features?.[0])
return (
{segment.text}
diff --git a/src/view/com/composer/text-input/TextInput.web.tsx b/src/view/com/composer/text-input/TextInput.web.tsx
index 199f1f7499..c62d11201f 100644
--- a/src/view/com/composer/text-input/TextInput.web.tsx
+++ b/src/view/com/composer/text-input/TextInput.web.tsx
@@ -23,6 +23,7 @@ import {Portal} from '#/components/Portal'
import {Text} from '../../util/text/Text'
import {Trans} from '@lingui/macro'
import Animated, {FadeIn, FadeOut} from 'react-native-reanimated'
+import {TagDecorator} from './web/TagDecorator'
export interface TextInputRef {
focus: () => void
@@ -67,6 +68,7 @@ export const TextInput = React.forwardRef(function TextInputImpl(
() => [
Document,
LinkDecorator,
+ TagDecorator,
Mention.configure({
HTMLAttributes: {
class: 'mention',
diff --git a/src/view/com/composer/text-input/web/LinkDecorator.ts b/src/view/com/composer/text-input/web/LinkDecorator.ts
index 19945de086..e36ac80e42 100644
--- a/src/view/com/composer/text-input/web/LinkDecorator.ts
+++ b/src/view/com/composer/text-input/web/LinkDecorator.ts
@@ -18,6 +18,8 @@ import {Mark} from '@tiptap/core'
import {Plugin, PluginKey} from '@tiptap/pm/state'
import {Node as ProsemirrorNode} from '@tiptap/pm/model'
import {Decoration, DecorationSet} from '@tiptap/pm/view'
+import {URL_REGEX} from '@atproto/api'
+
import {isValidDomain} from 'lib/strings/url-helpers'
export const LinkDecorator = Mark.create({
@@ -78,8 +80,7 @@ function linkDecorator() {
function iterateUris(str: string, cb: (from: number, to: number) => void) {
let match
- const re =
- /(^|\s|\()((https?:\/\/[\S]+)|((?[a-z][a-z0-9]*(\.[a-z0-9]+)+)[\S]*))/gim
+ const re = URL_REGEX
while ((match = re.exec(str))) {
let uri = match[2]
if (!uri.startsWith('http')) {
diff --git a/src/view/com/composer/text-input/web/TagDecorator.ts b/src/view/com/composer/text-input/web/TagDecorator.ts
new file mode 100644
index 0000000000..2bf3184a8c
--- /dev/null
+++ b/src/view/com/composer/text-input/web/TagDecorator.ts
@@ -0,0 +1,91 @@
+/**
+ * TipTap is a stateful rich-text editor, which is extremely useful
+ * when you _want_ it to be stateful formatting such as bold and italics.
+ *
+ * However we also use "stateless" behaviors, specifically for URLs
+ * where the text itself drives the formatting.
+ *
+ * This plugin uses a regex to detect URIs and then applies
+ * link decorations (a with the "autolink") class. That avoids
+ * adding any stateful formatting to TipTap's document model.
+ *
+ * We then run the URI detection again when constructing the
+ * RichText object from TipTap's output and merge their features into
+ * the facet-set.
+ */
+
+import {Mark} from '@tiptap/core'
+import {Plugin, PluginKey} from '@tiptap/pm/state'
+import {Node as ProsemirrorNode} from '@tiptap/pm/model'
+import {Decoration, DecorationSet} from '@tiptap/pm/view'
+import {TAG_REGEX, TRAILING_PUNCTUATION_REGEX} from '@atproto/api'
+
+function getDecorations(doc: ProsemirrorNode) {
+ const decorations: Decoration[] = []
+
+ doc.descendants((node, pos) => {
+ if (node.isText && node.text) {
+ const regex = TAG_REGEX
+ const textContent = node.textContent
+
+ let match
+ while ((match = regex.exec(textContent))) {
+ const [matchedString, _, tag] = match
+
+ if (!tag || tag.replace(TRAILING_PUNCTUATION_REGEX, '').length > 64)
+ continue
+
+ const [trailingPunc = ''] = tag.match(TRAILING_PUNCTUATION_REGEX) || []
+ const matchedFrom = match.index + matchedString.indexOf(tag)
+ const matchedTo = matchedFrom + (tag.length - trailingPunc.length)
+
+ /*
+ * The match is exclusive of `#` so we need to adjust the start of the
+ * highlight by -1 to include the `#`
+ */
+ const start = pos + matchedFrom - 1
+ const end = pos + matchedTo
+
+ decorations.push(
+ Decoration.inline(start, end, {
+ class: 'autolink',
+ }),
+ )
+ }
+ }
+ })
+
+ return DecorationSet.create(doc, decorations)
+}
+
+const tagDecoratorPlugin: Plugin = new Plugin({
+ key: new PluginKey('link-decorator'),
+
+ state: {
+ init: (_, {doc}) => getDecorations(doc),
+ apply: (transaction, decorationSet) => {
+ if (transaction.docChanged) {
+ return getDecorations(transaction.doc)
+ }
+ return decorationSet.map(transaction.mapping, transaction.doc)
+ },
+ },
+
+ props: {
+ decorations(state) {
+ return tagDecoratorPlugin.getState(state)
+ },
+ },
+})
+
+export const TagDecorator = Mark.create({
+ name: 'tag-decorator',
+ priority: 1000,
+ keepOnSplit: false,
+ inclusive() {
+ return true
+ },
+ addProseMirrorPlugins() {
+ return [tagDecoratorPlugin]
+ },
+})
diff --git a/src/view/com/feeds/FeedPage.tsx b/src/view/com/feeds/FeedPage.tsx
index 9595e77e5e..e6b5d1fb68 100644
--- a/src/view/com/feeds/FeedPage.tsx
+++ b/src/view/com/feeds/FeedPage.tsx
@@ -1,30 +1,24 @@
import React from 'react'
-import {
- FontAwesomeIcon,
- FontAwesomeIconStyle,
-} from '@fortawesome/react-native-fontawesome'
import {useNavigation} from '@react-navigation/native'
import {useAnalytics} from 'lib/analytics/analytics'
import {useQueryClient} from '@tanstack/react-query'
import {RQKEY as FEED_RQKEY} from '#/state/queries/post-feed'
import {MainScrollProvider} from '../util/MainScrollProvider'
-import {usePalette} from 'lib/hooks/usePalette'
import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries'
import {useSetMinimalShellMode} from '#/state/shell'
import {FeedDescriptor, FeedParams} from '#/state/queries/post-feed'
import {ComposeIcon2} from 'lib/icons'
-import {colors, s} from 'lib/styles'
+import {s} from 'lib/styles'
import {View, useWindowDimensions} from 'react-native'
import {ListMethods} from '../util/List'
import {Feed} from '../posts/Feed'
-import {TextLink} from '../util/Link'
import {FAB} from '../util/fab/FAB'
import {LoadLatestBtn} from '../util/load-latest/LoadLatestBtn'
import {msg} from '@lingui/macro'
import {useLingui} from '@lingui/react'
import {useSession} from '#/state/session'
import {useComposerControls} from '#/state/shell/composer'
-import {listenSoftReset, emitSoftReset} from '#/state/events'
+import {listenSoftReset} from '#/state/events'
import {truncateAndInvalidate} from '#/state/queries/util'
import {TabState, getTabState, getRootNavigation} from '#/lib/routes/helpers'
import {isNative} from '#/platform/detection'
@@ -46,11 +40,9 @@ export function FeedPage({
renderEmptyState: () => JSX.Element
renderEndOfFeed?: () => JSX.Element
}) {
- const {isSandbox, hasSession} = useSession()
- const pal = usePalette('default')
+ const {hasSession} = useSession()
const {_} = useLingui()
const navigation = useNavigation()
- const {isDesktop} = useWebMediaQueries()
const queryClient = useQueryClient()
const {openComposer} = useComposerControls()
const [isScrolledDown, setIsScrolledDown] = React.useState(false)
@@ -99,72 +91,6 @@ export function FeedPage({
setHasNew(false)
}, [scrollToTop, feed, queryClient, setHasNew])
- const ListHeaderComponent = React.useCallback(() => {
- if (isDesktop) {
- return (
-
-
- {isSandbox ? 'SANDBOX' : 'Bluesky'}{' '}
- {hasNew && (
-
- )}
- >
- }
- onPress={emitSoftReset}
- />
- {hasSession && (
-
- }
- />
- )}
-
- )
- }
- return <>>
- }, [
- isDesktop,
- pal.view,
- pal.text,
- pal.textLight,
- hasNew,
- _,
- isSandbox,
- hasSession,
- ])
-
return (
@@ -180,7 +106,6 @@ export function FeedPage({
onHasNew={setHasNew}
renderEmptyState={renderEmptyState}
renderEndOfFeed={renderEndOfFeed}
- ListHeaderComponent={ListHeaderComponent}
headerOffset={headerOffset}
/>
@@ -209,21 +134,12 @@ export function FeedPage({
function useHeaderOffset() {
const {isDesktop, isTablet} = useWebMediaQueries()
const {fontScale} = useWindowDimensions()
- const {hasSession} = useSession()
if (isDesktop || isTablet) {
return 0
}
- if (hasSession) {
- const navBarPad = 16
- const navBarText = 21 * fontScale
- const tabBarPad = 20 + 3 // nav bar padding + border
- const tabBarText = 16 * fontScale
- const magic = 7 * fontScale
- return navBarPad + navBarText + tabBarPad + tabBarText + magic
- } else {
- const navBarPad = 16
- const navBarText = 21 * fontScale
- const magic = 4 * fontScale
- return navBarPad + navBarText + magic
- }
+ const navBarHeight = 42
+ const tabBarPad = 10 + 10 + 3 // padding + border
+ const normalLineHeight = 1.2
+ const tabBarText = 16 * normalLineHeight * fontScale
+ return navBarHeight + tabBarPad + tabBarText
}
diff --git a/src/view/com/feeds/FeedSourceCard.tsx b/src/view/com/feeds/FeedSourceCard.tsx
index 0de88b248d..9bd7238df2 100644
--- a/src/view/com/feeds/FeedSourceCard.tsx
+++ b/src/view/com/feeds/FeedSourceCard.tsx
@@ -2,7 +2,7 @@ import React from 'react'
import {Pressable, StyleProp, StyleSheet, View, ViewStyle} from 'react-native'
import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
import {Text} from '../util/text/Text'
-import {RichText} from '../util/text/RichText'
+import {RichText} from '#/components/RichText'
import {usePalette} from 'lib/hooks/usePalette'
import {s} from 'lib/styles'
import {UserAvatar} from '../util/UserAvatar'
@@ -25,6 +25,7 @@ import {
} from '#/state/queries/preferences'
import {useFeedSourceInfoQuery, FeedSourceInfo} from '#/state/queries/feed'
import {FeedLoadingPlaceholder} from '#/view/com/util/LoadingPlaceholder'
+import {useTheme} from '#/alf'
export function FeedSourceCard({
feedUri,
@@ -82,6 +83,7 @@ export function FeedSourceCardLoaded({
pinOnSave?: boolean
showMinimalPlaceholder?: boolean
}) {
+ const t = useTheme()
const pal = usePalette('default')
const {_} = useLingui()
const navigation = useNavigation()
@@ -266,8 +268,8 @@ export function FeedSourceCardLoaded({
{showDescription && feed.description ? (
) : null}
diff --git a/src/view/com/home/HomeHeader.tsx b/src/view/com/home/HomeHeader.tsx
new file mode 100644
index 0000000000..aa3ecb7fc2
--- /dev/null
+++ b/src/view/com/home/HomeHeader.tsx
@@ -0,0 +1,67 @@
+import React from 'react'
+import {RenderTabBarFnProps} from 'view/com/pager/Pager'
+import {HomeHeaderLayout} from './HomeHeaderLayout'
+import {FeedSourceInfo} from '#/state/queries/feed'
+import {useNavigation} from '@react-navigation/native'
+import {NavigationProp} from 'lib/routes/types'
+import {isWeb} from 'platform/detection'
+import {TabBar} from '../pager/TabBar'
+import {usePalette} from '#/lib/hooks/usePalette'
+
+export function HomeHeader(
+ props: RenderTabBarFnProps & {
+ testID?: string
+ onPressSelected: () => void
+ feeds: FeedSourceInfo[]
+ },
+) {
+ const {feeds} = props
+ const navigation = useNavigation()
+ const pal = usePalette('default')
+
+ const hasPinnedCustom = React.useMemo(() => {
+ return feeds.some(tab => tab.uri !== '')
+ }, [feeds])
+
+ const items = React.useMemo(() => {
+ const pinnedNames = feeds.map(f => f.displayName)
+ if (!hasPinnedCustom) {
+ return pinnedNames.concat('Feeds āØ')
+ }
+ return pinnedNames
+ }, [hasPinnedCustom, feeds])
+
+ const onPressFeedsLink = React.useCallback(() => {
+ if (isWeb) {
+ navigation.navigate('Feeds')
+ } else {
+ navigation.navigate('FeedsTab')
+ navigation.popToTop()
+ }
+ }, [navigation])
+
+ const onSelect = React.useCallback(
+ (index: number) => {
+ if (!hasPinnedCustom && index === items.length - 1) {
+ onPressFeedsLink()
+ } else if (props.onSelect) {
+ props.onSelect(index)
+ }
+ },
+ [items.length, onPressFeedsLink, props, hasPinnedCustom],
+ )
+
+ return (
+
+
+
+ )
+}
diff --git a/src/view/com/home/HomeHeaderLayout.tsx b/src/view/com/home/HomeHeaderLayout.tsx
new file mode 100644
index 0000000000..70bf064d4a
--- /dev/null
+++ b/src/view/com/home/HomeHeaderLayout.tsx
@@ -0,0 +1 @@
+export {HomeHeaderLayoutMobile as HomeHeaderLayout} from './HomeHeaderLayoutMobile'
diff --git a/src/view/com/home/HomeHeaderLayout.web.tsx b/src/view/com/home/HomeHeaderLayout.web.tsx
new file mode 100644
index 0000000000..9818b56f6f
--- /dev/null
+++ b/src/view/com/home/HomeHeaderLayout.web.tsx
@@ -0,0 +1,111 @@
+import React from 'react'
+import {StyleSheet, View} from 'react-native'
+import Animated from 'react-native-reanimated'
+import {usePalette} from 'lib/hooks/usePalette'
+import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries'
+import {HomeHeaderLayoutMobile} from './HomeHeaderLayoutMobile'
+import {Logo} from '#/view/icons/Logo'
+import {Link} from '../util/Link'
+import {
+ FontAwesomeIcon,
+ FontAwesomeIconStyle,
+} from '@fortawesome/react-native-fontawesome'
+import {useLingui} from '@lingui/react'
+import {msg} from '@lingui/macro'
+import {CogIcon} from '#/lib/icons'
+import {useMinimalShellMode} from 'lib/hooks/useMinimalShellMode'
+import {useShellLayout} from '#/state/shell/shell-layout'
+
+export function HomeHeaderLayout(props: {
+ children: React.ReactNode
+ tabBarAnchor: JSX.Element | null | undefined
+}) {
+ const {isMobile} = useWebMediaQueries()
+ if (isMobile) {
+ return
+ } else {
+ return
+ }
+}
+
+function HomeHeaderLayoutDesktopAndTablet({
+ children,
+ tabBarAnchor,
+}: {
+ children: React.ReactNode
+ tabBarAnchor: JSX.Element | null | undefined
+}) {
+ const pal = usePalette('default')
+ const {headerMinimalShellTransform} = useMinimalShellMode()
+ const {headerHeight} = useShellLayout()
+ const {_} = useLingui()
+
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+ {tabBarAnchor}
+ {
+ headerHeight.value = e.nativeEvent.layout.height
+ }}
+ style={[
+ pal.view,
+ pal.border,
+ styles.bar,
+ styles.tabBar,
+ headerMinimalShellTransform,
+ ]}>
+ {children}
+
+ >
+ )
+}
+
+const styles = StyleSheet.create({
+ bar: {
+ // @ts-ignore Web only
+ left: 'calc(50% - 300px)',
+ width: 600,
+ borderLeftWidth: 1,
+ borderRightWidth: 1,
+ },
+ topBar: {
+ flexDirection: 'row',
+ justifyContent: 'space-between',
+ alignItems: 'center',
+ paddingHorizontal: 18,
+ paddingTop: 16,
+ paddingBottom: 8,
+ },
+ tabBar: {
+ // @ts-ignore Web only
+ position: 'sticky',
+ top: 0,
+ flexDirection: 'column',
+ alignItems: 'center',
+ borderLeftWidth: 1,
+ borderRightWidth: 1,
+ zIndex: 1,
+ },
+})
diff --git a/src/view/com/pager/FeedsTabBarMobile.tsx b/src/view/com/home/HomeHeaderLayoutMobile.tsx
similarity index 57%
rename from src/view/com/pager/FeedsTabBarMobile.tsx
rename to src/view/com/home/HomeHeaderLayoutMobile.tsx
index 4eba241aed..d7b7231c60 100644
--- a/src/view/com/pager/FeedsTabBarMobile.tsx
+++ b/src/view/com/home/HomeHeaderLayoutMobile.tsx
@@ -1,7 +1,5 @@
import React from 'react'
import {StyleSheet, TouchableOpacity, View} from 'react-native'
-import {TabBar} from 'view/com/pager/TabBar'
-import {RenderTabBarFnProps} from 'view/com/pager/Pager'
import {usePalette} from 'lib/hooks/usePalette'
import {Link} from '../util/Link'
import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
@@ -13,11 +11,7 @@ import {useLingui} from '@lingui/react'
import {useMinimalShellMode} from 'lib/hooks/useMinimalShellMode'
import {useSetDrawerOpen} from '#/state/shell/drawer-open'
import {useShellLayout} from '#/state/shell/shell-layout'
-import {useSession} from '#/state/session'
-import {usePinnedFeedsInfos} from '#/state/queries/feed'
import {isWeb} from 'platform/detection'
-import {useNavigation} from '@react-navigation/native'
-import {NavigationProp} from 'lib/routes/types'
import {Logo} from '#/view/icons/Logo'
import {IS_DEV} from '#/env'
@@ -25,49 +19,18 @@ import {atoms} from '#/alf'
import {Link as Link2} from '#/components/Link'
import {ColorPalette_Stroke2_Corner0_Rounded as ColorPalette} from '#/components/icons/ColorPalette'
-export function FeedsTabBar(
- props: RenderTabBarFnProps & {testID?: string; onPressSelected: () => void},
-) {
+export function HomeHeaderLayoutMobile({
+ children,
+}: {
+ children: React.ReactNode
+ tabBarAnchor: JSX.Element | null | undefined
+}) {
const pal = usePalette('default')
- const {hasSession} = useSession()
const {_} = useLingui()
const setDrawerOpen = useSetDrawerOpen()
- const navigation = useNavigation()
- const {feeds, hasPinnedCustom} = usePinnedFeedsInfos()
const {headerHeight} = useShellLayout()
const {headerMinimalShellTransform} = useMinimalShellMode()
- const items = React.useMemo(() => {
- if (!hasSession) return []
-
- const pinnedNames = feeds.map(f => f.displayName)
-
- if (!hasPinnedCustom) {
- return pinnedNames.concat('Feeds āØ')
- }
- return pinnedNames
- }, [hasSession, hasPinnedCustom, feeds])
-
- const onPressFeedsLink = React.useCallback(() => {
- if (isWeb) {
- navigation.navigate('Feeds')
- } else {
- navigation.navigate('FeedsTab')
- navigation.popToTop()
- }
- }, [navigation])
-
- const onSelect = React.useCallback(
- (index: number) => {
- if (hasSession && !hasPinnedCustom && index === items.length - 1) {
- onPressFeedsLink()
- } else if (props.onSelect) {
- props.onSelect(index)
- }
- },
- [items.length, onPressFeedsLink, props, hasSession, hasPinnedCustom],
- )
-
const onPressAvi = React.useCallback(() => {
setDrawerOpen(true)
}, [setDrawerOpen])
@@ -113,35 +76,21 @@ export function FeedsTabBar(
)}
-
- {hasSession && (
-
-
-
- )}
+
+
+
-
- {items.length > 0 && (
-
- )}
+ {children}
)
}
@@ -155,7 +104,6 @@ const styles = StyleSheet.create({
right: 0,
top: 0,
flexDirection: 'column',
- borderBottomWidth: 1,
},
topBar: {
flexDirection: 'row',
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 003ad61ba6..414f98a611 100644
--- a/src/view/com/lightbox/ImageViewing/components/ImageItem/ImageItem.android.tsx
+++ b/src/view/com/lightbox/ImageViewing/components/ImageItem/ImageItem.android.tsx
@@ -37,6 +37,7 @@ type Props = {
onTap: () => void
onZoom: (isZoomed: boolean) => void
isScrollViewBeingDragged: boolean
+ showControls: boolean
}
const ImageItem = ({
imageSrc,
diff --git a/src/view/com/lightbox/ImageViewing/components/ImageItem/ImageItem.ios.tsx b/src/view/com/lightbox/ImageViewing/components/ImageItem/ImageItem.ios.tsx
index cf4ba71df2..383490f4f1 100644
--- a/src/view/com/lightbox/ImageViewing/components/ImageItem/ImageItem.ios.tsx
+++ b/src/view/com/lightbox/ImageViewing/components/ImageItem/ImageItem.ios.tsx
@@ -37,11 +37,18 @@ type Props = {
onTap: () => void
onZoom: (scaled: boolean) => void
isScrollViewBeingDragged: boolean
+ showControls: boolean
}
const AnimatedImage = Animated.createAnimatedComponent(Image)
-const ImageItem = ({imageSrc, onTap, onZoom, onRequestClose}: Props) => {
+const ImageItem = ({
+ imageSrc,
+ onTap,
+ onZoom,
+ onRequestClose,
+ showControls,
+}: Props) => {
const scrollViewRef = useAnimatedRef()
const translationY = useSharedValue(0)
const [loaded, setLoaded] = useState(false)
@@ -144,7 +151,7 @@ const ImageItem = ({imageSrc, onTap, onZoom, onRequestClose}: Props) => {
accessibilityLabel={imageSrc.alt}
accessibilityHint=""
onLoad={() => setLoaded(true)}
- enableLiveTextInteraction={!scaled}
+ enableLiveTextInteraction={showControls && !scaled}
/>
diff --git a/src/view/com/lightbox/ImageViewing/components/ImageItem/ImageItem.tsx b/src/view/com/lightbox/ImageViewing/components/ImageItem/ImageItem.tsx
index 16688b820e..08b99bf9ee 100644
--- a/src/view/com/lightbox/ImageViewing/components/ImageItem/ImageItem.tsx
+++ b/src/view/com/lightbox/ImageViewing/components/ImageItem/ImageItem.tsx
@@ -10,6 +10,7 @@ type Props = {
onTap: () => void
onZoom: (scaled: boolean) => void
isScrollViewBeingDragged: boolean
+ showControls: boolean
}
const ImageItem = (_props: Props) => {
diff --git a/src/view/com/lightbox/ImageViewing/index.tsx b/src/view/com/lightbox/ImageViewing/index.tsx
index b6835793d1..ff8fdb86d3 100644
--- a/src/view/com/lightbox/ImageViewing/index.tsx
+++ b/src/view/com/lightbox/ImageViewing/index.tsx
@@ -122,6 +122,7 @@ function ImageViewing({
imageSrc={imageSrc}
onRequestClose={onRequestClose}
isScrollViewBeingDragged={isDragging}
+ showControls={showControls}
/>
))}
diff --git a/src/view/com/lists/ListCard.tsx b/src/view/com/lists/ListCard.tsx
index 5750faec19..19842eb54d 100644
--- a/src/view/com/lists/ListCard.tsx
+++ b/src/view/com/lists/ListCard.tsx
@@ -3,7 +3,7 @@ import {StyleProp, StyleSheet, View, ViewStyle} from 'react-native'
import {AtUri, AppBskyGraphDefs, RichText} from '@atproto/api'
import {Link} from '../util/Link'
import {Text} from '../util/text/Text'
-import {RichText as RichTextCom} from '../util/text/RichText'
+import {RichText as RichTextCom} from '#/components/RichText'
import {UserAvatar} from '../util/UserAvatar'
import {s} from 'lib/styles'
import {usePalette} from 'lib/hooks/usePalette'
@@ -12,6 +12,7 @@ import {sanitizeDisplayName} from 'lib/strings/display-names'
import {sanitizeHandle} from 'lib/strings/handles'
import {makeProfileLink} from 'lib/routes/links'
import {Trans} from '@lingui/macro'
+import {atoms as a} from '#/alf'
export const ListCard = ({
testID,
@@ -119,9 +120,9 @@ export const ListCard = ({
{descriptionRichText ? (
) : undefined}
diff --git a/src/view/com/modals/Modal.tsx b/src/view/com/modals/Modal.tsx
index 8da91c75cf..100444ff58 100644
--- a/src/view/com/modals/Modal.tsx
+++ b/src/view/com/modals/Modal.tsx
@@ -20,7 +20,6 @@ import * as ReportModal from './report/Modal'
import * as AppealLabelModal from './AppealLabel'
import * as DeleteAccountModal from './DeleteAccount'
import * as ChangeHandleModal from './ChangeHandle'
-import * as WaitlistModal from './Waitlist'
import * as InviteCodesModal from './InviteCodes'
import * as AddAppPassword from './AddAppPasswords'
import * as ContentFilteringSettingsModal from './ContentFilteringSettings'
@@ -109,9 +108,6 @@ export function ModalsContainer() {
} else if (activeModal?.name === 'change-handle') {
snapPoints = ChangeHandleModal.snapPoints
element =
- } else if (activeModal?.name === 'waitlist') {
- snapPoints = WaitlistModal.snapPoints
- element =
} else if (activeModal?.name === 'invite-codes') {
snapPoints = InviteCodesModal.snapPoints
element =
diff --git a/src/view/com/modals/Modal.web.tsx b/src/view/com/modals/Modal.web.tsx
index 97a60be913..0ced894a17 100644
--- a/src/view/com/modals/Modal.web.tsx
+++ b/src/view/com/modals/Modal.web.tsx
@@ -22,7 +22,6 @@ import * as CropImageModal from './crop-image/CropImage.web'
import * as AltTextImageModal from './AltImage'
import * as EditImageModal from './EditImage'
import * as ChangeHandleModal from './ChangeHandle'
-import * as WaitlistModal from './Waitlist'
import * as InviteCodesModal from './InviteCodes'
import * as AddAppPassword from './AddAppPasswords'
import * as ContentFilteringSettingsModal from './ContentFilteringSettings'
@@ -105,8 +104,6 @@ function Modal({modal}: {modal: ModalIface}) {
element =
} else if (modal.name === 'change-handle') {
element =
- } else if (modal.name === 'waitlist') {
- element =
} else if (modal.name === 'invite-codes') {
element =
} else if (modal.name === 'add-app-password') {
diff --git a/src/view/com/modals/Waitlist.tsx b/src/view/com/modals/Waitlist.tsx
deleted file mode 100644
index 263dd27a2f..0000000000
--- a/src/view/com/modals/Waitlist.tsx
+++ /dev/null
@@ -1,190 +0,0 @@
-import React from 'react'
-import {
- ActivityIndicator,
- StyleSheet,
- TouchableOpacity,
- View,
-} from 'react-native'
-import {TextInput} from './util'
-import {
- FontAwesomeIcon,
- FontAwesomeIconStyle,
-} from '@fortawesome/react-native-fontawesome'
-import LinearGradient from 'react-native-linear-gradient'
-import {Text} from '../util/text/Text'
-import {s, gradients} from 'lib/styles'
-import {usePalette} from 'lib/hooks/usePalette'
-import {useTheme} from 'lib/ThemeContext'
-import {ErrorMessage} from '../util/error/ErrorMessage'
-import {cleanError} from 'lib/strings/errors'
-import {Trans, msg} from '@lingui/macro'
-import {useLingui} from '@lingui/react'
-import {useModalControls} from '#/state/modals'
-
-export const snapPoints = ['80%']
-
-export function Component({}: {}) {
- const pal = usePalette('default')
- const theme = useTheme()
- const {_} = useLingui()
- const {closeModal} = useModalControls()
- const [email, setEmail] = React.useState('')
- const [isEmailSent, setIsEmailSent] = React.useState(false)
- const [isProcessing, setIsProcessing] = React.useState(false)
- const [error, setError] = React.useState('')
-
- const onPressSignup = async () => {
- setError('')
- setIsProcessing(true)
- try {
- const res = await fetch('https://bsky.app/api/waitlist', {
- method: 'POST',
- headers: {'Content-Type': 'application/json'},
- body: JSON.stringify({email}),
- })
- const resBody = await res.json()
- if (resBody.success) {
- setIsEmailSent(true)
- } else {
- setError(
- resBody.error ||
- _(msg`Something went wrong. Check your email and try again.`),
- )
- }
- } catch (e: any) {
- setError(cleanError(e))
- }
- setIsProcessing(false)
- }
- const onCancel = () => {
- closeModal()
- }
-
- return (
-
-
-
- Join the waitlist
-
-
-
- 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.
-
-
-
- {error ? (
-
-
-
- ) : undefined}
- {isProcessing ? (
-
-
-
- ) : isEmailSent ? (
-
-
-
-
- Your email has been saved! We'll be in touch soon.
-
-
-
- ) : (
- <>
-
-
-
- Join Waitlist
-
-
-
-
-
- Cancel
-
-
- >
- )}
-
-
- )
-}
-
-const styles = StyleSheet.create({
- container: {
- flex: 1,
- },
- innerContainer: {
- paddingBottom: 20,
- },
- title: {
- textAlign: 'center',
- marginTop: 12,
- marginBottom: 12,
- },
- description: {
- textAlign: 'center',
- paddingHorizontal: 22,
- marginBottom: 10,
- },
- textInput: {
- borderWidth: 1,
- borderRadius: 6,
- paddingHorizontal: 16,
- paddingVertical: 12,
- fontSize: 20,
- marginHorizontal: 20,
- },
- btn: {
- flexDirection: 'row',
- alignItems: 'center',
- justifyContent: 'center',
- borderRadius: 32,
- padding: 14,
- marginHorizontal: 20,
- },
- error: {
- borderRadius: 6,
- marginHorizontal: 20,
- marginBottom: 20,
- },
-})
diff --git a/src/view/com/notifications/FeedItem.tsx b/src/view/com/notifications/FeedItem.tsx
index f037097dfc..45166fe3c3 100644
--- a/src/view/com/notifications/FeedItem.tsx
+++ b/src/view/com/notifications/FeedItem.tsx
@@ -228,6 +228,7 @@ let FeedItem = ({
text={sanitizeDisplayName(
authors[0].displayName || authors[0].handle,
)}
+ disableMismatchWarning
/>
{authors.length > 1 ? (
<>
diff --git a/src/view/com/pager/FeedsTabBar.tsx b/src/view/com/pager/FeedsTabBar.tsx
deleted file mode 100644
index aa0ba7b242..0000000000
--- a/src/view/com/pager/FeedsTabBar.tsx
+++ /dev/null
@@ -1 +0,0 @@
-export * from './FeedsTabBarMobile'
diff --git a/src/view/com/pager/FeedsTabBar.web.tsx b/src/view/com/pager/FeedsTabBar.web.tsx
deleted file mode 100644
index 9fe03b7e9e..0000000000
--- a/src/view/com/pager/FeedsTabBar.web.tsx
+++ /dev/null
@@ -1,155 +0,0 @@
-import React from 'react'
-import {View, StyleSheet} from 'react-native'
-import Animated from 'react-native-reanimated'
-import {TabBar} from 'view/com/pager/TabBar'
-import {RenderTabBarFnProps} from 'view/com/pager/Pager'
-import {usePalette} from 'lib/hooks/usePalette'
-import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries'
-import {FeedsTabBar as FeedsTabBarMobile} from './FeedsTabBarMobile'
-import {useMinimalShellMode} from 'lib/hooks/useMinimalShellMode'
-import {useShellLayout} from '#/state/shell/shell-layout'
-import {usePinnedFeedsInfos} from '#/state/queries/feed'
-import {useSession} from '#/state/session'
-import {TextLink} from '#/view/com/util/Link'
-import {CenteredView} from '../util/Views'
-import {isWeb} from 'platform/detection'
-import {useNavigation} from '@react-navigation/native'
-import {NavigationProp} from 'lib/routes/types'
-
-export function FeedsTabBar(
- props: RenderTabBarFnProps & {testID?: string; onPressSelected: () => void},
-) {
- const {isMobile, isTablet} = useWebMediaQueries()
- const {hasSession} = useSession()
-
- if (isMobile) {
- return
- } else if (isTablet) {
- if (hasSession) {
- return
- } else {
- return
- }
- } else {
- return null
- }
-}
-
-function FeedsTabBarPublic() {
- const pal = usePalette('default')
- const {isSandbox} = useSession()
-
- return (
-
-
-
- {isSandbox ? 'SANDBOX' : 'Bluesky'}{' '}
- {/*hasNew && (
-
- )*/}
- >
- }
- // onPress={emitSoftReset}
- />
-
-
- )
-}
-
-function FeedsTabBarTablet(
- props: RenderTabBarFnProps & {testID?: string; onPressSelected: () => void},
-) {
- const {feeds, hasPinnedCustom} = usePinnedFeedsInfos()
- const pal = usePalette('default')
- const {hasSession} = useSession()
- const navigation = useNavigation()
- const {headerMinimalShellTransform} = useMinimalShellMode()
- const {headerHeight} = useShellLayout()
-
- const items = React.useMemo(() => {
- if (!hasSession) return []
-
- const pinnedNames = feeds.map(f => f.displayName)
-
- if (!hasPinnedCustom) {
- return pinnedNames.concat('Feeds āØ')
- }
- return pinnedNames
- }, [hasSession, hasPinnedCustom, feeds])
-
- const onPressDiscoverFeeds = React.useCallback(() => {
- if (isWeb) {
- navigation.navigate('Feeds')
- } else {
- navigation.navigate('FeedsTab')
- navigation.popToTop()
- }
- }, [navigation])
-
- const onSelect = React.useCallback(
- (index: number) => {
- if (hasSession && !hasPinnedCustom && index === items.length - 1) {
- onPressDiscoverFeeds()
- } else if (props.onSelect) {
- props.onSelect(index)
- }
- },
- [items.length, onPressDiscoverFeeds, props, hasSession, hasPinnedCustom],
- )
-
- return (
- // @ts-ignore the type signature for transform wrong here, translateX and translateY need to be in separate objects -prf
- {
- headerHeight.value = e.nativeEvent.layout.height
- }}>
-
-
- )
-}
-
-const styles = StyleSheet.create({
- tabBar: {
- // @ts-ignore Web only
- position: 'sticky',
- zIndex: 1,
- // @ts-ignore Web only -prf
- left: 'calc(50% - 300px)',
- width: 600,
- top: 0,
- flexDirection: 'row',
- alignItems: 'center',
- borderLeftWidth: 1,
- borderRightWidth: 1,
- },
-})
diff --git a/src/view/com/pager/PagerWithHeader.tsx b/src/view/com/pager/PagerWithHeader.tsx
index 938c1e7e84..aa110682a2 100644
--- a/src/view/com/pager/PagerWithHeader.tsx
+++ b/src/view/com/pager/PagerWithHeader.tsx
@@ -233,36 +233,29 @@ let PagerTabBar = ({
},
],
}))
- const pendingHeaderHeight = React.useRef(null)
+ const headerRef = React.useRef(null)
return (
- {
- if (isHeaderReady) {
- onHeaderOnlyLayout(e.nativeEvent.layout.height)
- pendingHeaderHeight.current = null
- } else {
- // Stash it away for when `isHeaderReady` turns `true` later.
- pendingHeaderHeight.current = e.nativeEvent.layout.height
- }
- }}>
+
{renderHeader?.()}
{
- // When `isHeaderReady` turns `true`, we want to send the parent layout.
- // However, if that didn't lead to a layout change, parent `onLayout` wouldn't get called again.
- // We're conditionally rendering an empty view so that we can send the last measurement.
+ // It wouldn't be enough to place `onLayout` on the parent node because
+ // this would risk measuring before `isHeaderReady` has turned `true`.
+ // Instead, we'll render a brand node conditionally and get fresh layout.
isHeaderReady && (
{
- // We're assuming the parent `onLayout` already ran (parent -> child ordering).
- if (pendingHeaderHeight.current !== null) {
- onHeaderOnlyLayout(pendingHeaderHeight.current)
- pendingHeaderHeight.current = null
- }
+ // @ts-ignore
+ headerRef.current?.measure(
+ (_x: number, _y: number, _width: number, height: number) => {
+ onHeaderOnlyLayout(height)
+ },
+ )
}}
/>
)
diff --git a/src/view/com/pager/TabBar.tsx b/src/view/com/pager/TabBar.tsx
index dadcfcebd9..ff8acd60cc 100644
--- a/src/view/com/pager/TabBar.tsx
+++ b/src/view/com/pager/TabBar.tsx
@@ -4,8 +4,8 @@ import {Text} from '../util/text/Text'
import {PressableWithHover} from '../util/PressableWithHover'
import {usePalette} from 'lib/hooks/usePalette'
import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries'
-import {isWeb} from 'platform/detection'
import {DraggableScrollView} from './DraggableScrollView'
+import {isNative} from '#/platform/detection'
export interface TabBarProps {
testID?: string
@@ -16,6 +16,10 @@ export interface TabBarProps {
onPressSelected?: (index: number) => void
}
+// How much of the previous/next item we're showing
+// to give the user a hint there's more to scroll.
+const OFFSCREEN_ITEM_WIDTH = 20
+
export function TabBar({
testID,
selectedPage,
@@ -26,19 +30,68 @@ export function TabBar({
}: TabBarProps) {
const pal = usePalette('default')
const scrollElRef = useRef(null)
+ const itemRefs = useRef>([])
const [itemXs, setItemXs] = useState([])
const indicatorStyle = useMemo(
() => ({borderBottomColor: indicatorColor || pal.colors.link}),
[indicatorColor, pal],
)
const {isDesktop, isTablet} = useWebMediaQueries()
+ const styles = isDesktop || isTablet ? desktopStyles : mobileStyles
- // scrolls to the selected item when the page changes
useEffect(() => {
- scrollElRef.current?.scrollTo({
- x: itemXs[selectedPage] || 0,
- })
- }, [scrollElRef, itemXs, selectedPage])
+ if (isNative) {
+ // On native, the primary interaction is swiping.
+ // We adjust the scroll little by little on every tab change.
+ // Scroll into view but keep the end of the previous item visible.
+ let x = itemXs[selectedPage] || 0
+ x = Math.max(0, x - OFFSCREEN_ITEM_WIDTH)
+ scrollElRef.current?.scrollTo({x})
+ } else {
+ // On the web, the primary interaction is tapping.
+ // Scrolling under tap feels disorienting so only adjust the scroll offset
+ // when tapping on an item out of view--and we adjust by almost an entire page.
+ const parent = scrollElRef?.current?.getScrollableNode?.()
+ if (!parent) {
+ return
+ }
+ const parentRect = parent.getBoundingClientRect()
+ if (!parentRect) {
+ return
+ }
+ const {
+ left: parentLeft,
+ right: parentRight,
+ width: parentWidth,
+ } = parentRect
+ const child = itemRefs.current[selectedPage]
+ if (!child) {
+ return
+ }
+ const childRect = child.getBoundingClientRect?.()
+ if (!childRect) {
+ return
+ }
+ const {left: childLeft, right: childRight, width: childWidth} = childRect
+ let dx = 0
+ if (childRight >= parentRight) {
+ dx += childRight - parentRight
+ dx += parentWidth - childWidth - OFFSCREEN_ITEM_WIDTH
+ } else if (childLeft <= parentLeft) {
+ dx -= parentLeft - childLeft
+ dx -= parentWidth - childWidth - OFFSCREEN_ITEM_WIDTH
+ }
+ let x = parent.scrollLeft + dx
+ x = Math.max(0, x)
+ x = Math.min(x, parent.scrollWidth - parentWidth)
+ if (dx !== 0) {
+ parent.scroll({
+ left: x,
+ behavior: 'smooth',
+ })
+ }
+ }
+ }, [scrollElRef, itemXs, selectedPage, styles])
const onPressItem = useCallback(
(index: number) => {
@@ -63,8 +116,6 @@ export function TabBar({
[],
)
- const styles = isDesktop || isTablet ? desktopStyles : mobileStyles
-
return (
(itemRefs.current[i] = node)}
onLayout={e => onItemLayout(e, i)}
- style={[styles.item, selected && indicatorStyle]}
+ style={styles.item}
hoverStyle={pal.viewLight}
onPress={() => onPressItem(i)}>
-
- {item}
-
+
+
+ {item}
+
+
)
})}
+
)
}
@@ -103,18 +158,25 @@ const desktopStyles = StyleSheet.create({
width: 598,
},
contentContainer: {
- columnGap: 8,
- marginLeft: 14,
- paddingRight: 14,
+ paddingHorizontal: 0,
backgroundColor: 'transparent',
},
item: {
paddingTop: 14,
+ paddingHorizontal: 14,
+ justifyContent: 'center',
+ },
+ itemInner: {
paddingBottom: 12,
- paddingHorizontal: 10,
borderBottomWidth: 3,
borderBottomColor: 'transparent',
- justifyContent: 'center',
+ },
+ outerBottomBorder: {
+ position: 'absolute',
+ left: 0,
+ right: 0,
+ bottom: -1,
+ borderBottomWidth: 1,
},
})
@@ -123,17 +185,24 @@ const mobileStyles = StyleSheet.create({
flexDirection: 'row',
},
contentContainer: {
- columnGap: isWeb ? 0 : 20,
- marginLeft: isWeb ? 0 : 18,
- paddingRight: isWeb ? 0 : 36,
backgroundColor: 'transparent',
+ paddingHorizontal: 8,
},
item: {
paddingTop: 10,
- paddingBottom: 10,
- paddingHorizontal: isWeb ? 8 : 0,
- borderBottomWidth: 3,
- borderBottomColor: 'transparent',
+ paddingHorizontal: 10,
justifyContent: 'center',
},
+ itemInner: {
+ paddingBottom: 10,
+ borderBottomWidth: 3,
+ borderBottomColor: 'transparent',
+ },
+ outerBottomBorder: {
+ position: 'absolute',
+ left: 0,
+ right: 0,
+ bottom: -1,
+ borderBottomWidth: 1,
+ },
})
diff --git a/src/view/com/post-thread/PostThread.tsx b/src/view/com/post-thread/PostThread.tsx
index 50e2c69dae..a7ee42a948 100644
--- a/src/view/com/post-thread/PostThread.tsx
+++ b/src/view/com/post-thread/PostThread.tsx
@@ -43,11 +43,18 @@ import {
usePreferencesQuery,
} from '#/state/queries/preferences'
import {useSession} from '#/state/session'
-import {isAndroid, isNative} from '#/platform/detection'
-import {logger} from '#/logger'
+import {isAndroid, isNative, isWeb} from '#/platform/detection'
import {moderatePost_wrapped as moderatePost} from '#/lib/moderatePost_wrapped'
-const MAINTAIN_VISIBLE_CONTENT_POSITION = {minIndexForVisible: 1}
+// FlatList maintainVisibleContentPosition breaks if too many items
+// are prepended. This seems to be an optimal number based on *shrug*.
+const PARENTS_CHUNK_SIZE = 15
+
+const MAINTAIN_VISIBLE_CONTENT_POSITION = {
+ // We don't insert any elements before the root row while loading.
+ // So the row we want to use as the scroll anchor is the first row.
+ minIndexForVisible: 0,
+}
const TOP_COMPONENT = {_reactKey: '__top_component__'}
const REPLY_PROMPT = {_reactKey: '__reply__'}
@@ -55,7 +62,21 @@ const CHILD_SPINNER = {_reactKey: '__child_spinner__'}
const LOAD_MORE = {_reactKey: '__load_more__'}
const BOTTOM_COMPONENT = {_reactKey: '__bottom_component__'}
-type YieldedItem = ThreadPost | typeof TOP_COMPONENT | typeof REPLY_PROMPT
+type YieldedItem = ThreadPost | ThreadBlocked | ThreadNotFound
+type RowItem =
+ | YieldedItem
+ // TODO: TS doesn't actually enforce it's one of these, it only enforces matching shape.
+ | typeof TOP_COMPONENT
+ | typeof REPLY_PROMPT
+ | typeof CHILD_SPINNER
+ | typeof LOAD_MORE
+ | typeof BOTTOM_COMPONENT
+
+type ThreadSkeletonParts = {
+ parents: YieldedItem[]
+ highlightedPost: ThreadNode
+ replies: YieldedItem[]
+}
export function PostThread({
uri,
@@ -147,61 +168,92 @@ function PostThreadLoaded({
const {isMobile, isTabletOrMobile} = useWebMediaQueries()
const ref = useRef(null)
const highlightedPostRef = useRef(null)
- const needsScrollAdjustment = useRef(
- !isNative || // web always uses scroll adjustment
- (thread.type === 'post' && !thread.ctx.isParentLoading), // native only does it when not loading from placeholder
+ const [maxParents, setMaxParents] = React.useState(
+ isWeb ? Infinity : PARENTS_CHUNK_SIZE,
)
- const [maxVisible, setMaxVisible] = React.useState(100)
- const [isPTRing, setIsPTRing] = React.useState(false)
+ const [maxReplies, setMaxReplies] = React.useState(100)
const treeView = React.useMemo(
() => !!threadViewPrefs.lab_treeViewEnabled && hasBranchingReplies(thread),
[threadViewPrefs, thread],
)
- // construct content
- const posts = React.useMemo(() => {
- let arr = Array.from(
- flattenThreadSkeleton(
+ // On native, this is going to start out `true`. We'll toggle it to `false` after the initial render if flushed.
+ // This ensures that the first render contains no parents--even if they are already available in the cache.
+ // We need to delay showing them so that we can use maintainVisibleContentPosition to keep the main post on screen.
+ // On the web this is not necessary because we can synchronously adjust the scroll in onContentSizeChange instead.
+ const [deferParents, setDeferParents] = React.useState(isNative)
+
+ const skeleton = React.useMemo(
+ () =>
+ createThreadSkeleton(
sortThread(thread, threadViewPrefs),
hasSession,
treeView,
),
- )
- if (arr.length > maxVisible) {
- arr = arr.slice(0, maxVisible).concat([LOAD_MORE])
- }
- if (arr.indexOf(CHILD_SPINNER) === -1) {
- arr.push(BOTTOM_COMPONENT)
+ [thread, threadViewPrefs, hasSession, treeView],
+ )
+
+ // construct content
+ const posts = React.useMemo(() => {
+ const {parents, highlightedPost, replies} = skeleton
+ let arr: RowItem[] = []
+ if (highlightedPost.type === 'post') {
+ const isRoot =
+ !highlightedPost.parent && !highlightedPost.ctx.isParentLoading
+ if (isRoot) {
+ // No parents to load.
+ arr.push(TOP_COMPONENT)
+ } else {
+ if (highlightedPost.ctx.isParentLoading || deferParents) {
+ // We're loading parents of the highlighted post.
+ // In this case, we don't render anything above the post.
+ // If you add something here, you'll need to update both
+ // maintainVisibleContentPosition and onContentSizeChange
+ // to "hold onto" the correct row instead of the first one.
+ } else {
+ // Everything is loaded
+ let startIndex = Math.max(0, parents.length - maxParents)
+ if (startIndex === 0) {
+ arr.push(TOP_COMPONENT)
+ } else {
+ // When progressively revealing parents, rendering a placeholder
+ // here will cause scrolling jumps. Don't add it unless you test it.
+ // QT'ing this thread is a great way to test all the scrolling hacks:
+ // https://bsky.app/profile/www.mozzius.dev/post/3kjqhblh6qk2o
+ }
+ for (let i = startIndex; i < parents.length; i++) {
+ arr.push(parents[i])
+ }
+ }
+ }
+ arr.push(highlightedPost)
+ if (!highlightedPost.post.viewer?.replyDisabled) {
+ arr.push(REPLY_PROMPT)
+ }
+ if (highlightedPost.ctx.isChildLoading) {
+ arr.push(CHILD_SPINNER)
+ } else {
+ for (let i = 0; i < replies.length; i++) {
+ arr.push(replies[i])
+ if (i === maxReplies) {
+ arr.push(LOAD_MORE)
+ break
+ }
+ }
+ arr.push(BOTTOM_COMPONENT)
+ }
}
return arr
- }, [thread, treeView, maxVisible, threadViewPrefs, hasSession])
+ }, [skeleton, deferParents, maxParents, maxReplies])
- /**
- * NOTE
- * Scroll positioning
- *
- * This callback is run if needsScrollAdjustment.current == true, which is...
- * - On web: always
- * - On native: when the placeholder cache is not being used
- *
- * It then only runs when viewing a reply, and the goal is to scroll the
- * reply into view.
- *
- * On native, if the placeholder cache is being used then maintainVisibleContentPosition
- * is a more effective solution, so we use that. Otherwise, typically we're loading from
- * the react-query cache, so we just need to immediately scroll down to the post.
- *
- * On desktop, maintainVisibleContentPosition isn't supported so we just always use
- * this technique.
- *
- * -prf
- */
- const onContentSizeChange = React.useCallback(() => {
+ // This is only used on the web to keep the post in view when its parents load.
+ // On native, we rely on `maintainVisibleContentPosition` instead.
+ const didAdjustScrollWeb = useRef(false)
+ const onContentSizeChangeWeb = React.useCallback(() => {
// only run once
- if (!needsScrollAdjustment.current) {
+ if (didAdjustScrollWeb.current) {
return
}
-
// wait for loading to finish
if (thread.type === 'post' && !!thread.parent) {
function onMeasure(pageY: number) {
@@ -210,36 +262,41 @@ function PostThreadLoaded({
offset: pageY,
})
}
- if (isNative) {
- highlightedPostRef.current?.measure(
- (_x, _y, _width, _height, _pageX, pageY) => {
- onMeasure(pageY)
- },
- )
- } else {
- // Measure synchronously to avoid a layout jump.
- const domNode = highlightedPostRef.current
- if (domNode) {
- const pageY = (domNode as any as Element).getBoundingClientRect().top
- onMeasure(pageY)
- }
+ // Measure synchronously to avoid a layout jump.
+ const domNode = highlightedPostRef.current
+ if (domNode) {
+ const pageY = (domNode as any as Element).getBoundingClientRect().top
+ onMeasure(pageY)
}
- needsScrollAdjustment.current = false
+ didAdjustScrollWeb.current = true
}
}, [thread])
- const onPTR = React.useCallback(async () => {
- setIsPTRing(true)
- try {
- await onRefresh()
- } catch (err) {
- logger.error('Failed to refresh posts thread', {message: err})
+ // On native, we reveal parents in chunks. Although they're all already
+ // loaded and FlatList already has its own virtualization, unfortunately FlatList
+ // has a bug that causes the content to jump around if too many items are getting
+ // prepended at once. It also jumps around if items get prepended during scroll.
+ // To work around this, we prepend rows after scroll bumps against the top and rests.
+ const needsBumpMaxParents = React.useRef(false)
+ const onStartReached = React.useCallback(() => {
+ if (maxParents < skeleton.parents.length) {
+ needsBumpMaxParents.current = true
}
- setIsPTRing(false)
- }, [setIsPTRing, onRefresh])
+ }, [maxParents, skeleton.parents.length])
+ const bumpMaxParentsIfNeeded = React.useCallback(() => {
+ if (!isNative) {
+ return
+ }
+ if (needsBumpMaxParents.current) {
+ needsBumpMaxParents.current = false
+ setMaxParents(n => n + PARENTS_CHUNK_SIZE)
+ }
+ }, [])
+ const onMomentumScrollEnd = bumpMaxParentsIfNeeded
+ const onScrollToTop = bumpMaxParentsIfNeeded
const renderItem = React.useCallback(
- ({item, index}: {item: YieldedItem; index: number}) => {
+ ({item, index}: {item: RowItem; index: number}) => {
if (item === TOP_COMPONENT) {
return isTabletOrMobile ? (
setMaxVisible(n => n + 50)}
+ onPress={() => setMaxReplies(n => n + 50)}
style={[pal.border, pal.view, styles.itemContainer]}
accessibilityLabel={_(msg`Load more posts`)}
accessibilityHint="">
@@ -315,9 +372,12 @@ function PostThreadLoaded({
const next = isThreadPost(posts[index - 1])
? (posts[index - 1] as ThreadPost)
: undefined
+ const hasUnrevealedParents =
+ index === 0 && maxParents < skeleton.parents.length
return (
+ ref={item.ctx.isHighlightedPost ? highlightedPostRef : undefined}
+ onLayout={deferParents ? () => setDeferParents(false) : undefined}>
@@ -350,7 +412,10 @@ function PostThreadLoaded({
pal.colors.border,
posts,
onRefresh,
+ deferParents,
treeView,
+ skeleton.parents.length,
+ maxParents,
_,
],
)
@@ -359,21 +424,20 @@ function PostThreadLoaded({
item._reactKey}
renderItem={renderItem}
- refreshing={isPTRing}
- onRefresh={onPTR}
- onContentSizeChange={onContentSizeChange}
+ onContentSizeChange={isNative ? undefined : onContentSizeChangeWeb}
+ onStartReached={onStartReached}
+ onMomentumScrollEnd={onMomentumScrollEnd}
+ onScrollToTop={onScrollToTop}
+ maintainVisibleContentPosition={
+ isNative ? MAINTAIN_VISIBLE_CONTENT_POSITION : undefined
+ }
style={s.hContentRegion}
// @ts-ignore our .web version only -prf
desktopFixedHeight
removeClippedSubviews={isAndroid ? false : undefined}
+ windowSize={11}
/>
)
}
@@ -489,36 +553,55 @@ function isThreadBlocked(v: unknown): v is ThreadBlocked {
return !!v && typeof v === 'object' && 'type' in v && v.type === 'blocked'
}
-function* flattenThreadSkeleton(
+function createThreadSkeleton(
node: ThreadNode,
hasSession: boolean,
treeView: boolean,
- isTraversingReplies: boolean = false,
+): ThreadSkeletonParts {
+ return {
+ parents: Array.from(flattenThreadParents(node, hasSession)),
+ highlightedPost: node,
+ replies: Array.from(flattenThreadReplies(node, hasSession, treeView)),
+ }
+}
+
+function* flattenThreadParents(
+ node: ThreadNode,
+ hasSession: boolean,
): Generator {
if (node.type === 'post') {
- if (!node.ctx.isParentLoading) {
- if (node.parent) {
- yield* flattenThreadSkeleton(node.parent, hasSession, treeView, false)
- } else if (!isTraversingReplies) {
- yield TOP_COMPONENT
- }
+ if (node.parent) {
+ yield* flattenThreadParents(node.parent, hasSession)
}
- if (!hasSession && node.ctx.depth > 0 && hasPwiOptOut(node)) {
+ if (!node.ctx.isHighlightedPost) {
+ yield node
+ }
+ } else if (node.type === 'not-found') {
+ yield node
+ } else if (node.type === 'blocked') {
+ yield node
+ }
+}
+
+function* flattenThreadReplies(
+ node: ThreadNode,
+ hasSession: boolean,
+ treeView: boolean,
+): Generator {
+ if (node.type === 'post') {
+ if (!hasSession && hasPwiOptOut(node)) {
return
}
- yield node
- if (node.ctx.isHighlightedPost && !node.post.viewer?.replyDisabled) {
- yield REPLY_PROMPT
+ if (!node.ctx.isHighlightedPost) {
+ yield node
}
if (node.replies?.length) {
for (const reply of node.replies) {
- yield* flattenThreadSkeleton(reply, hasSession, treeView, true)
+ yield* flattenThreadReplies(reply, hasSession, treeView)
if (!treeView && !node.ctx.isHighlightedPost) {
break
}
}
- } else if (node.ctx.isChildLoading) {
- yield CHILD_SPINNER
}
} else if (node.type === 'not-found') {
yield node
diff --git a/src/view/com/post-thread/PostThreadItem.tsx b/src/view/com/post-thread/PostThreadItem.tsx
index 826d0d1617..9522ea6a07 100644
--- a/src/view/com/post-thread/PostThreadItem.tsx
+++ b/src/view/com/post-thread/PostThreadItem.tsx
@@ -11,7 +11,7 @@ import {moderatePost_wrapped as moderatePost} from '#/lib/moderatePost_wrapped'
import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
import {PostThreadFollowBtn} from 'view/com/post-thread/PostThreadFollowBtn'
import {Link, TextLink} from '../util/Link'
-import {RichText} from '../util/text/RichText'
+import {RichText} from '#/components/RichText'
import {Text} from '../util/text/Text'
import {PreviewableUserAvatar} from '../util/UserAvatar'
import {s} from 'lib/styles'
@@ -27,7 +27,6 @@ import {PostCtrls} from '../util/post-ctrls/PostCtrls'
import {PostHider} from '../util/moderation/PostHider'
import {ContentHider} from '../util/moderation/ContentHider'
import {PostAlerts} from '../util/moderation/PostAlerts'
-import {PostSandboxWarning} from '../util/PostSandboxWarning'
import {ErrorMessage} from '../util/error/ErrorMessage'
import {usePalette} from 'lib/hooks/usePalette'
import {formatCount} from '../util/numeric/format'
@@ -44,6 +43,8 @@ import {Shadow, usePostShadow, POST_TOMBSTONE} from '#/state/cache/post-shadow'
import {ThreadPost} from '#/state/queries/post-thread'
import {useSession} from 'state/session'
import {WhoCanReply} from '../threadgate/WhoCanReply'
+import {LoadingPlaceholder} from '../util/LoadingPlaceholder'
+import {atoms as a} from '#/alf'
export function PostThreadItem({
post,
@@ -93,6 +94,8 @@ export function PostThreadItem({
if (richText && moderation) {
return (
countLines(richText?.text) >= MAX_POST_LINES,
)
const {currentAccount} = useSession()
- const hasEngagement = post.likeCount || post.repostCount
-
const rootUri = record.reply?.root?.uri || post.uri
const postHref = React.useMemo(() => {
const urip = new AtUri(post.uri)
@@ -248,7 +249,6 @@ let PostThreadItemLoaded = ({
testID={`postThreadItem-by-${post.author.handle}`}
style={[styles.outer, styles.outerHighlighted, pal.border, pal.view]}
accessible={false}>
-
) : undefined}
@@ -357,9 +357,16 @@ let PostThreadItemLoaded = ({
translatorUrl={translatorUrl}
needsTranslation={needsTranslation}
/>
- {hasEngagement ? (
+ {post.repostCount !== 0 || post.likeCount !== 0 ? (
+ // Show this section unless we're *sure* it has no engagement.
- {post.repostCount ? (
+ {post.repostCount == null && post.likeCount == null && (
+ // If we're still loading and not sure, assume this post has engagement.
+ // This lets us avoid a layout shift for the common case (embedded post with likes/reposts).
+ // TODO: embeds should include metrics to avoid us having to guess.
+
+ )}
+ {post.repostCount != null && post.repostCount !== 0 ? (
- ) : (
- <>>
- )}
- {post.likeCount ? (
+ ) : null}
+ {post.likeCount != null && post.likeCount !== 0 ? (
- ) : (
- <>>
- )}
+ ) : null}
- ) : (
- <>>
- )}
+ ) : null}
-
-
) : undefined}
diff --git a/src/view/com/post/Post.tsx b/src/view/com/post/Post.tsx
index 2f1c0d37b3..5fa4da84e1 100644
--- a/src/view/com/post/Post.tsx
+++ b/src/view/com/post/Post.tsx
@@ -17,7 +17,7 @@ import {PostCtrls} from '../util/post-ctrls/PostCtrls'
import {ContentHider} from '../util/moderation/ContentHider'
import {PostAlerts} from '../util/moderation/PostAlerts'
import {Text} from '../util/text/Text'
-import {RichText} from '../util/text/RichText'
+import {RichText} from '#/components/RichText'
import {PreviewableUserAvatar} from '../util/UserAvatar'
import {s, colors} from 'lib/styles'
import {usePalette} from 'lib/hooks/usePalette'
@@ -29,6 +29,7 @@ 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'
+import {atoms as a} from '#/alf'
export function Post({
post,
@@ -183,12 +184,12 @@ function PostInner({
{richText.text ? (
) : undefined}
diff --git a/src/view/com/posts/Feed.tsx b/src/view/com/posts/Feed.tsx
index 54d8aa2240..cd3e98785d 100644
--- a/src/view/com/posts/Feed.tsx
+++ b/src/view/com/posts/Feed.tsx
@@ -32,6 +32,7 @@ import {msg} from '@lingui/macro'
import {useLingui} from '@lingui/react'
import {DiscoverFallbackHeader} from './DiscoverFallbackHeader'
import {FALLBACK_MARKER_POST} from '#/lib/api/feed/home'
+import {useInitialNumToRender} from 'lib/hooks/useInitialNumToRender'
const LOADING_ITEM = {_reactKey: '__loading__'}
const EMPTY_FEED_ITEM = {_reactKey: '__empty__'}
@@ -84,6 +85,7 @@ let Feed = ({
const {_} = useLingui()
const queryClient = useQueryClient()
const {currentAccount} = useSession()
+ const initialNumToRender = useInitialNumToRender()
const [isPTRing, setIsPTRing] = React.useState(false)
const checkForNewRef = React.useRef<(() => void) | null>(null)
const lastFetchRef = React.useRef(Date.now())
@@ -327,6 +329,8 @@ let Feed = ({
desktopFixedHeight={
desktopFixedHeightOffset ? desktopFixedHeightOffset : true
}
+ initialNumToRender={initialNumToRender}
+ windowSize={11}
/>
)
diff --git a/src/view/com/posts/FeedItem.tsx b/src/view/com/posts/FeedItem.tsx
index 920409ec6f..7d29703e2d 100644
--- a/src/view/com/posts/FeedItem.tsx
+++ b/src/view/com/posts/FeedItem.tsx
@@ -20,8 +20,7 @@ import {PostCtrls} from '../util/post-ctrls/PostCtrls'
import {PostEmbeds} from '../util/post-embeds'
import {ContentHider} from '../util/moderation/ContentHider'
import {PostAlerts} from '../util/moderation/PostAlerts'
-import {RichText} from '../util/text/RichText'
-import {PostSandboxWarning} from '../util/PostSandboxWarning'
+import {RichText} from '#/components/RichText'
import {PreviewableUserAvatar} from '../util/UserAvatar'
import {s} from 'lib/styles'
import {usePalette} from 'lib/hooks/usePalette'
@@ -37,6 +36,7 @@ import {FeedNameText} from '../util/FeedInfoText'
import {useSession} from '#/state/session'
import {Trans, msg} from '@lingui/macro'
import {useLingui} from '@lingui/react'
+import {atoms as a} from '#/alf'
export function FeedItem({
post,
@@ -70,6 +70,8 @@ export function FeedItem({
if (richText && moderation) {
return (
-
-
{isThreadChild && (
@@ -349,12 +349,12 @@ let PostContent = ({
{richText.text ? (
) : undefined}
diff --git a/src/view/com/profile/ProfileHeader.tsx b/src/view/com/profile/ProfileHeader.tsx
index 8fd50fad6c..3e479d7b53 100644
--- a/src/view/com/profile/ProfileHeader.tsx
+++ b/src/view/com/profile/ProfileHeader.tsx
@@ -23,7 +23,7 @@ import * as Toast from '../util/Toast'
import {LoadingPlaceholder} from '../util/LoadingPlaceholder'
import {Text} from '../util/text/Text'
import {ThemedText} from '../util/text/ThemedText'
-import {RichText} from '../util/text/RichText'
+import {RichText} from '#/components/RichText'
import {UserAvatar} from '../util/UserAvatar'
import {UserBanner} from '../util/UserBanner'
import {ProfileHeaderAlerts} from '../util/moderation/ProfileHeaderAlerts'
@@ -56,6 +56,7 @@ import {Shadow} from '#/state/cache/types'
import {useRequireAuth} from '#/state/session'
import {LabelInfo} from '../util/moderation/LabelInfo'
import {useProfileShadow} from 'state/cache/profile-shadow'
+import {atoms as a} from '#/alf'
let ProfileHeaderLoading = (_props: {}): React.ReactNode => {
const pal = usePalette('default')
@@ -608,12 +609,12 @@ let ProfileHeader = ({
{descriptionRT && !moderation.profile.blur ? (
-
+
) : undefined}
diff --git a/src/view/com/util/EventStopper.tsx b/src/view/com/util/EventStopper.tsx
index 1e672e9457..e743e89bbe 100644
--- a/src/view/com/util/EventStopper.tsx
+++ b/src/view/com/util/EventStopper.tsx
@@ -1,11 +1,14 @@
import React from 'react'
-import {View} from 'react-native'
+import {View, ViewStyle} from 'react-native'
/**
* This utility function captures events and stops
* them from propagating upwards.
*/
-export function EventStopper({children}: React.PropsWithChildren<{}>) {
+export function EventStopper({
+ children,
+ style,
+}: React.PropsWithChildren<{style?: ViewStyle | ViewStyle[]}>) {
const stop = (e: any) => {
e.stopPropagation()
}
@@ -15,7 +18,8 @@ export function EventStopper({children}: React.PropsWithChildren<{}>) {
onTouchEnd={stop}
// @ts-ignore web only -prf
onClick={stop}
- onKeyDown={stop}>
+ onKeyDown={stop}
+ style={style}>
{children}
)
diff --git a/src/view/com/util/Link.tsx b/src/view/com/util/Link.tsx
index d52d3c0e61..e50fb7f091 100644
--- a/src/view/com/util/Link.tsx
+++ b/src/view/com/util/Link.tsx
@@ -159,7 +159,7 @@ export const TextLink = memo(function TextLink({
dataSet,
title,
onPress,
- warnOnMismatchingLabel,
+ disableMismatchWarning,
navigationAction,
...orgProps
}: {
@@ -172,7 +172,7 @@ export const TextLink = memo(function TextLink({
lineHeight?: number
dataSet?: any
title?: string
- warnOnMismatchingLabel?: boolean
+ disableMismatchWarning?: boolean
navigationAction?: 'push' | 'replace' | 'navigate'
} & TextProps) {
const {...props} = useLinkProps({to: sanitizeUrl(href)})
@@ -180,14 +180,14 @@ export const TextLink = memo(function TextLink({
const {openModal, closeModal} = useModalControls()
const openLink = useOpenLink()
- if (warnOnMismatchingLabel && typeof text !== 'string') {
+ if (!disableMismatchWarning && typeof text !== 'string') {
console.error('Unable to detect mismatching label')
}
props.onPress = React.useCallback(
(e?: Event) => {
const requiresWarning =
- warnOnMismatchingLabel &&
+ !disableMismatchWarning &&
linkRequiresWarning(href, typeof text === 'string' ? text : '')
if (requiresWarning) {
e?.preventDefault?.()
@@ -227,7 +227,7 @@ export const TextLink = memo(function TextLink({
navigation,
href,
text,
- warnOnMismatchingLabel,
+ disableMismatchWarning,
navigationAction,
openLink,
],
diff --git a/src/view/com/util/List.web.tsx b/src/view/com/util/List.web.tsx
index 29bad2db8b..936bac198d 100644
--- a/src/view/com/util/List.web.tsx
+++ b/src/view/com/util/List.web.tsx
@@ -172,7 +172,7 @@ function ListImpl(
(
const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent)
const styles = StyleSheet.create({
- contentContainer: {
+ sideBorders: {
borderLeftWidth: 1,
borderRightWidth: 1,
},
diff --git a/src/view/com/util/MainScrollProvider.tsx b/src/view/com/util/MainScrollProvider.tsx
index 2c90e33ff1..01b8a954d5 100644
--- a/src/view/com/util/MainScrollProvider.tsx
+++ b/src/view/com/util/MainScrollProvider.tsx
@@ -20,12 +20,14 @@ export function MainScrollProvider({children}: {children: React.ReactNode}) {
const setMode = useSetMinimalShellMode()
const startDragOffset = useSharedValue(null)
const startMode = useSharedValue(null)
+ const didJustRestoreScroll = useSharedValue(false)
useEffect(() => {
if (isWeb) {
return listenToForcedWindowScroll(() => {
startDragOffset.value = null
startMode.value = null
+ didJustRestoreScroll.value = true
})
}
})
@@ -86,6 +88,11 @@ export function MainScrollProvider({children}: {children: React.ReactNode}) {
mode.value = newValue
}
} else {
+ if (didJustRestoreScroll.value) {
+ didJustRestoreScroll.value = false
+ // Don't hide/show navbar based on scroll restoratoin.
+ return
+ }
// On the web, we don't try to follow the drag because we don't know when it ends.
// Instead, show/hide immediately based on whether we're scrolling up or down.
const dy = e.contentOffset.y - (startDragOffset.value ?? 0)
@@ -98,7 +105,14 @@ export function MainScrollProvider({children}: {children: React.ReactNode}) {
}
}
},
- [headerHeight, mode, setMode, startDragOffset, startMode],
+ [
+ headerHeight,
+ mode,
+ setMode,
+ startDragOffset,
+ startMode,
+ didJustRestoreScroll,
+ ],
)
return (
diff --git a/src/view/com/util/PostSandboxWarning.tsx b/src/view/com/util/PostSandboxWarning.tsx
deleted file mode 100644
index b2375c7039..0000000000
--- a/src/view/com/util/PostSandboxWarning.tsx
+++ /dev/null
@@ -1,35 +0,0 @@
-import React from 'react'
-import {StyleSheet, View} from 'react-native'
-import {Text} from './text/Text'
-import {usePalette} from 'lib/hooks/usePalette'
-import {useSession} from '#/state/session'
-
-export function PostSandboxWarning() {
- const {isSandbox} = useSession()
- const pal = usePalette('default')
- if (isSandbox) {
- return (
-
-
- SANDBOX
-
-
- )
- }
- return null
-}
-
-const styles = StyleSheet.create({
- container: {
- position: 'absolute',
- top: 6,
- right: 10,
- },
- text: {
- fontWeight: 'bold',
- opacity: 0.07,
- },
-})
diff --git a/src/view/com/util/ViewHeader.tsx b/src/view/com/util/ViewHeader.tsx
index 1ccfcf56c5..872e10eef0 100644
--- a/src/view/com/util/ViewHeader.tsx
+++ b/src/view/com/util/ViewHeader.tsx
@@ -13,11 +13,13 @@ import Animated from 'react-native-reanimated'
import {useSetDrawerOpen} from '#/state/shell'
import {msg} from '@lingui/macro'
import {useLingui} from '@lingui/react'
+import {useTheme} from '#/alf'
const BACK_HITSLOP = {left: 20, top: 20, right: 50, bottom: 20}
export function ViewHeader({
title,
+ subtitle,
canGoBack,
showBackButton = true,
hideOnScroll,
@@ -26,6 +28,7 @@ export function ViewHeader({
renderButton,
}: {
title: string
+ subtitle?: string
canGoBack?: boolean
showBackButton?: boolean
hideOnScroll?: boolean
@@ -39,6 +42,7 @@ export function ViewHeader({
const navigation = useNavigation()
const {track} = useAnalytics()
const {isDesktop, isTablet} = useWebMediaQueries()
+ const t = useTheme()
const onPressBack = React.useCallback(() => {
if (navigation.canGoBack()) {
@@ -71,42 +75,60 @@ export function ViewHeader({
return (
- {showBackButton ? (
-
- {canGoBack ? (
-
- ) : !isTablet ? (
-
+
+
+ {showBackButton ? (
+
+ {canGoBack ? (
+
+ ) : !isTablet ? (
+
+ ) : null}
+
) : null}
-
- ) : null}
-
-
- {title}
-
+
+
+ {title}
+
+
+ {renderButton ? (
+ renderButton()
+ ) : showBackButton ? (
+
+ ) : null}
+
+ {subtitle ? (
+
+
+ {subtitle}
+
+
+ ) : undefined}
- {renderButton ? (
- renderButton()
- ) : showBackButton ? (
-
- ) : null}
)
}
@@ -185,7 +207,6 @@ function Container({
const styles = StyleSheet.create({
header: {
flexDirection: 'row',
- alignItems: 'center',
paddingHorizontal: 12,
paddingVertical: 6,
width: '100%',
@@ -207,12 +228,14 @@ const styles = StyleSheet.create({
titleContainer: {
marginLeft: 'auto',
marginRight: 'auto',
- paddingRight: 10,
+ alignItems: 'center',
},
title: {
fontWeight: 'bold',
},
-
+ subtitle: {
+ fontSize: 13,
+ },
backBtn: {
width: 30,
height: 30,
diff --git a/src/view/com/util/Views.d.ts b/src/view/com/util/Views.d.ts
index 6a90cc229b..16713921fb 100644
--- a/src/view/com/util/Views.d.ts
+++ b/src/view/com/util/Views.d.ts
@@ -5,4 +5,6 @@ export function CenteredView({
style,
sideBorders,
...props
-}: React.PropsWithChildren)
+}: React.PropsWithChildren<
+ ViewProps & {sideBorders?: boolean; topBorder?: boolean}
+>)
diff --git a/src/view/com/util/Views.web.tsx b/src/view/com/util/Views.web.tsx
index db3b9de0d8..ae165077ca 100644
--- a/src/view/com/util/Views.web.tsx
+++ b/src/view/com/util/Views.web.tsx
@@ -32,8 +32,11 @@ interface AddedProps {
export function CenteredView({
style,
sideBorders,
+ topBorder,
...props
-}: React.PropsWithChildren) {
+}: React.PropsWithChildren<
+ ViewProps & {sideBorders?: boolean; topBorder?: boolean}
+>) {
const pal = usePalette('default')
const {isMobile} = useWebMediaQueries()
if (!isMobile) {
@@ -46,6 +49,12 @@ export function CenteredView({
})
style = addStyle(style, pal.border)
}
+ if (topBorder) {
+ style = addStyle(style, {
+ borderTopWidth: 1,
+ })
+ style = addStyle(style, pal.border)
+ }
return
}
diff --git a/src/view/com/util/forms/DateInput.tsx b/src/view/com/util/forms/DateInput.tsx
index c5f0afc8fc..0104562aa5 100644
--- a/src/view/com/util/forms/DateInput.tsx
+++ b/src/view/com/util/forms/DateInput.tsx
@@ -1,8 +1,5 @@
import React, {useState, useCallback} from 'react'
import {StyleProp, StyleSheet, TextStyle, View, ViewStyle} from 'react-native'
-import DateTimePicker, {
- DateTimePickerEvent,
-} from '@react-native-community/datetimepicker'
import {
FontAwesomeIcon,
FontAwesomeIconStyle,
@@ -14,6 +11,7 @@ import {TypographyVariant} from 'lib/ThemeContext'
import {useTheme} from 'lib/ThemeContext'
import {usePalette} from 'lib/hooks/usePalette'
import {getLocales} from 'expo-localization'
+import DatePicker from 'react-native-date-picker'
const LOCALE = getLocales()[0]
@@ -43,11 +41,9 @@ export function DateInput(props: Props) {
}, [props.handleAsUTC])
const onChangeInternal = useCallback(
- (event: DateTimePickerEvent, date: Date | undefined) => {
+ (date: Date) => {
setShow(false)
- if (date) {
- props.onChange(date)
- }
+ props.onChange(date)
},
[setShow, props],
)
@@ -56,6 +52,10 @@ export function DateInput(props: Props) {
setShow(true)
}, [setShow])
+ const onCancel = useCallback(() => {
+ setShow(false)
+ }, [])
+
return (
{isAndroid && (
@@ -80,15 +80,17 @@ export function DateInput(props: Props) {
)}
{(isIOS || show) && (
- {
return (
) {
const pal = usePalette('default')
const theme = useTheme()
@@ -119,7 +122,8 @@ export function NativeDropdown({
accessibilityLabel={accessibilityLabel}
accessibilityHint={accessibilityHint}
onPress={() => setOpen(o => !o)}
- hitSlop={HITSLOP_10}>
+ hitSlop={HITSLOP_10}
+ style={triggerStyle}>
{children}
@@ -232,6 +236,10 @@ const styles = StyleSheet.create({
paddingLeft: 12,
paddingRight: 12,
borderRadius: 8,
+ fontFamily:
+ '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif',
+ outline: 0,
+ border: 0,
},
itemTitle: {
fontSize: 16,
diff --git a/src/view/com/util/forms/PostDropdownBtn.tsx b/src/view/com/util/forms/PostDropdownBtn.tsx
index e56c88d2c9..09850a7f54 100644
--- a/src/view/com/util/forms/PostDropdownBtn.tsx
+++ b/src/view/com/util/forms/PostDropdownBtn.tsx
@@ -2,6 +2,7 @@ import React, {memo} from 'react'
import {StyleProp, View, ViewStyle} from 'react-native'
import Clipboard from '@react-native-clipboard/clipboard'
import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
+import {useNavigation} from '@react-navigation/native'
import {
AppBskyActorDefs,
AppBskyFeedPost,
@@ -19,6 +20,8 @@ import * as Toast from '../Toast'
import {EventStopper} from '../EventStopper'
import {useModalControls} from '#/state/modals'
import {makeProfileLink} from '#/lib/routes/links'
+import {CommonNavigatorParams} from '#/lib/routes/types'
+import {getCurrentRoute} from 'lib/routes/helpers'
import {getTranslatorLink} from '#/locale/helpers'
import {usePostDeleteMutation} from '#/state/queries/post'
import {useMutedThreads, useToggleThreadMute} from '#/state/muted-threads'
@@ -31,6 +34,7 @@ import {useLingui} from '@lingui/react'
import {useSession} from '#/state/session'
import {isWeb} from '#/platform/detection'
import {richTextToString} from '#/lib/strings/rich-text-helpers'
+import {useGlobalDialogsControlContext} from '#/components/dialogs/Context'
let PostDropdownBtn = ({
testID,
@@ -63,6 +67,8 @@ let PostDropdownBtn = ({
const hiddenPosts = useHiddenPosts()
const {hidePost} = useHiddenPostsApi()
const openLink = useOpenLink()
+ const navigation = useNavigation()
+ const {mutedWordsDialogControl} = useGlobalDialogsControlContext()
const rootUri = record.reply?.root?.uri || postUri
const isThreadMuted = mutedThreads.includes(rootUri)
@@ -82,13 +88,38 @@ let PostDropdownBtn = ({
postDeleteMutation.mutateAsync({uri: postUri}).then(
() => {
Toast.show(_(msg`Post deleted`))
+
+ const route = getCurrentRoute(navigation.getState())
+ if (route.name === 'PostThread') {
+ const params = route.params as CommonNavigatorParams['PostThread']
+ if (
+ currentAccount &&
+ isAuthor &&
+ (params.name === currentAccount.handle ||
+ params.name === currentAccount.did)
+ ) {
+ const currentHref = makeProfileLink(postAuthor, 'post', params.rkey)
+ if (currentHref === href && navigation.canGoBack()) {
+ navigation.goBack()
+ }
+ }
+ }
},
e => {
logger.error('Failed to delete post', {message: e})
Toast.show(_(msg`Failed to delete post, please try again`))
},
)
- }, [postUri, postDeleteMutation, _])
+ }, [
+ navigation,
+ postUri,
+ postDeleteMutation,
+ postAuthor,
+ currentAccount,
+ isAuthor,
+ href,
+ _,
+ ])
const onToggleThreadMute = React.useCallback(() => {
try {
@@ -181,6 +212,20 @@ let PostDropdownBtn = ({
web: 'comment-slash',
},
},
+ hasSession && {
+ label: _(msg`Mute words & tags`),
+ onPress() {
+ mutedWordsDialogControl.open()
+ },
+ testID: 'postDropdownMuteWordsBtn',
+ icon: {
+ ios: {
+ name: 'speaker.slash',
+ },
+ android: 'ic_lock_silent_mode',
+ web: 'filter',
+ },
+ },
hasSession &&
!isAuthor &&
!isPostHidden && {
diff --git a/src/view/com/util/moderation/ContentHider.tsx b/src/view/com/util/moderation/ContentHider.tsx
index b3a5631164..cd25452904 100644
--- a/src/view/com/util/moderation/ContentHider.tsx
+++ b/src/view/com/util/moderation/ContentHider.tsx
@@ -46,7 +46,7 @@ export function ContentHider({
)
}
- const isMute = moderation.cause?.type === 'muted'
+ const isMute = ['muted', 'muted-word'].includes(moderation.cause?.type || '')
const desc = describeModerationCause(moderation.cause, 'content')
return (
diff --git a/src/view/com/util/moderation/PostHider.tsx b/src/view/com/util/moderation/PostHider.tsx
index b1fa71d4ac..ede62e988c 100644
--- a/src/view/com/util/moderation/PostHider.tsx
+++ b/src/view/com/util/moderation/PostHider.tsx
@@ -47,7 +47,7 @@ export function PostHider({
)
}
- const isMute = moderation.cause?.type === 'muted'
+ const isMute = ['muted', 'muted-word'].includes(moderation.cause?.type || '')
const desc = describeModerationCause(moderation.cause, 'content')
return !override ? (
void
}) {
// ensures we only load what's requested
@@ -91,25 +89,21 @@ function Player({
if (!isPlayerActive) return null
return (
-
-
-
-
-
-
-
+
+
+
)
}
@@ -129,13 +123,16 @@ export function ExternalPlayer({
const [isPlayerActive, setPlayerActive] = React.useState(false)
const [isLoading, setIsLoading] = React.useState(true)
- const [dim, setDim] = React.useState({
- width: 0,
- height: 0,
- })
+
+ const aspect = React.useMemo(() => {
+ return getPlayerAspect({
+ type: params.type,
+ width: windowDims.width,
+ hasThumb: !!link.thumb,
+ })
+ }, [params.type, windowDims.width, link.thumb])
const viewRef = useAnimatedRef()
-
const frameCallback = useFrameCallback(() => {
const measurement = measure(viewRef)
if (!measurement) return
@@ -180,17 +177,6 @@ export function ExternalPlayer({
}
}, [navigation, isPlayerActive, frameCallback])
- // calculate height for the player and the screen size
- const height = React.useMemo(
- () =>
- getPlayerHeight({
- type: params.type,
- width: dim.width,
- hasThumb: !!link.thumb,
- }),
- [params.type, dim.width, link.thumb],
- )
-
const onLoad = React.useCallback(() => {
setIsLoading(false)
}, [])
@@ -216,32 +202,11 @@ export function ExternalPlayer({
[externalEmbedsPrefs, openModal, params.source],
)
- // measure the layout to set sizing
- const onLayout = React.useCallback(
- (event: {nativeEvent: {layout: {width: any; height: any}}}) => {
- setDim({
- width: event.nativeEvent.layout.width,
- height: event.nativeEvent.layout.height,
- })
- },
- [],
- )
-
return (
-
+
{link.thumb && (!isPlayerActive || isLoading) && (
@@ -251,12 +216,7 @@ export function ExternalPlayer({
isPlayerActive={isPlayerActive}
onPress={onPlayPress}
/>
-
+
)
}
diff --git a/src/view/com/util/post-embeds/QuoteEmbed.tsx b/src/view/com/util/post-embeds/QuoteEmbed.tsx
index d9d84feb45..35b0912698 100644
--- a/src/view/com/util/post-embeds/QuoteEmbed.tsx
+++ b/src/view/com/util/post-embeds/QuoteEmbed.tsx
@@ -20,7 +20,8 @@ import {PostAlerts} from '../moderation/PostAlerts'
import {makeProfileLink} from 'lib/routes/links'
import {InfoCircleIcon} from 'lib/icons'
import {Trans} from '@lingui/macro'
-import {RichText} from 'view/com/util/text/RichText'
+import {RichText} from '#/components/RichText'
+import {atoms as a} from '#/alf'
export function MaybeQuoteEmbed({
embed,
@@ -127,11 +128,12 @@ export function QuoteEmbed({
) : null}
{richText ? (
) : null}
{embed && }
diff --git a/src/view/com/util/text/RichText.tsx b/src/view/com/util/text/RichText.tsx
index e910127fec..f4ade30e55 100644
--- a/src/view/com/util/text/RichText.tsx
+++ b/src/view/com/util/text/RichText.tsx
@@ -7,9 +7,15 @@ import {lh} from 'lib/styles'
import {toShortUrl} from 'lib/strings/url-helpers'
import {useTheme, TypographyVariant} from 'lib/ThemeContext'
import {usePalette} from 'lib/hooks/usePalette'
+import {makeTagLink} from 'lib/routes/links'
+import {TagMenu, useTagMenuControl} from '#/components/TagMenu'
+import {isNative} from '#/platform/detection'
const WORD_WRAP = {wordWrap: 1}
+/**
+ * @deprecated use `#/components/RichText`
+ */
export function RichText({
testID,
type = 'md',
@@ -79,6 +85,7 @@ export function RichText({
for (const segment of richText.segments()) {
const link = segment.link
const mention = segment.mention
+ const tag = segment.tag
if (
!noLinks &&
mention &&
@@ -107,11 +114,25 @@ export function RichText({
href={link.uri}
style={[style, lineHeightStyle, pal.link, {pointerEvents: 'auto'}]}
dataSet={WORD_WRAP}
- warnOnMismatchingLabel
selectable={selectable}
/>,
)
}
+ } else if (
+ !noLinks &&
+ tag &&
+ AppBskyRichtextFacet.validateTag(tag).success
+ ) {
+ els.push(
+ ,
+ )
} else {
els.push(segment.text)
}
@@ -130,3 +151,50 @@ export function RichText({
)
}
+
+function RichTextTag({
+ text: tag,
+ type,
+ style,
+ lineHeightStyle,
+ selectable,
+}: {
+ text: string
+ type?: TypographyVariant
+ style?: StyleProp
+ lineHeightStyle?: TextStyle
+ selectable?: boolean
+}) {
+ const pal = usePalette('default')
+ const control = useTagMenuControl()
+
+ const open = React.useCallback(() => {
+ control.open()
+ }, [control])
+
+ return (
+
+
+ {isNative ? (
+
+ ) : (
+
+ {tag}
+
+ )}
+
+
+ )
+}
diff --git a/src/view/icons/index.tsx b/src/view/icons/index.tsx
index b7bbf16009..ede1e63355 100644
--- a/src/view/icons/index.tsx
+++ b/src/view/icons/index.tsx
@@ -103,6 +103,7 @@ import {faUsersSlash} from '@fortawesome/free-solid-svg-icons/faUsersSlash'
import {faX} from '@fortawesome/free-solid-svg-icons/faX'
import {faXmark} from '@fortawesome/free-solid-svg-icons/faXmark'
import {faChevronDown} from '@fortawesome/free-solid-svg-icons/faChevronDown'
+import {faFilter} from '@fortawesome/free-solid-svg-icons/faFilter'
library.add(
faAddressCard,
@@ -208,4 +209,5 @@ library.add(
faX,
faXmark,
faChevronDown,
+ faFilter,
)
diff --git a/src/view/screens/Home.tsx b/src/view/screens/Home.tsx
index cb2abf1bca..99ac8c44af 100644
--- a/src/view/screens/Home.tsx
+++ b/src/view/screens/Home.tsx
@@ -6,7 +6,7 @@ import {FeedDescriptor, FeedParams} from '#/state/queries/post-feed'
import {FollowingEmptyState} from 'view/com/posts/FollowingEmptyState'
import {FollowingEndOfFeed} from 'view/com/posts/FollowingEndOfFeed'
import {CustomFeedEmptyState} from 'view/com/posts/CustomFeedEmptyState'
-import {FeedsTabBar} from '../com/pager/FeedsTabBar'
+import {HomeHeader} from '../com/home/HomeHeader'
import {Pager, RenderTabBarFnProps, PagerRef} from 'view/com/pager/Pager'
import {FeedPage} from 'view/com/feeds/FeedPage'
import {HomeLoggedOutCTA} from '../com/auth/HomeLoggedOutCTA'
@@ -17,11 +17,12 @@ import {UsePreferencesQueryResponse} from '#/state/queries/preferences/types'
import {emitSoftReset} from '#/state/events'
import {useSession} from '#/state/session'
import {useSelectedFeed, useSetSelectedFeed} from '#/state/shell/selected-feed'
+import {useSetTitle} from '#/lib/hooks/useSetTitle'
type Props = NativeStackScreenProps
export function HomeScreen(props: Props) {
const {data: preferences} = usePreferencesQuery()
- const {feeds: pinnedFeedInfos, isLoading: isPinnedFeedsLoading} =
+ const {data: pinnedFeedInfos, isLoading: isPinnedFeedsLoading} =
usePinnedFeedsInfos()
if (preferences && pinnedFeedInfos && !isPinnedFeedsLoading) {
return (
@@ -66,6 +67,8 @@ function HomeScreenReady({
const selectedIndex = Math.max(0, maybeFoundIndex)
const selectedFeed = allFeeds[selectedIndex]
+ useSetTitle(pinnedFeedInfos[selectedIndex]?.displayName)
+
const pagerRef = React.useRef(null)
const lastPagerReportedIndexRef = React.useRef(selectedIndex)
React.useLayoutEffect(() => {
@@ -118,16 +121,16 @@ function HomeScreenReady({
const renderTabBar = React.useCallback(
(props: RenderTabBarFnProps) => {
return (
-
)
},
- [onPressSelected],
+ [onPressSelected, pinnedFeedInfos],
)
const renderFollowingEmptyState = React.useCallback(() => {
diff --git a/src/view/screens/Moderation.tsx b/src/view/screens/Moderation.tsx
index 8f1fe75b6f..928766c304 100644
--- a/src/view/screens/Moderation.tsx
+++ b/src/view/screens/Moderation.tsx
@@ -31,6 +31,7 @@ import {
useProfileUpdateMutation,
} from '#/state/queries/profile'
import {ScrollView} from '../com/util/Views'
+import {useGlobalDialogsControlContext} from '#/components/dialogs/Context'
type Props = NativeStackScreenProps
export function ModerationScreen({}: Props) {
@@ -40,6 +41,7 @@ export function ModerationScreen({}: Props) {
const {screen, track} = useAnalytics()
const {isTabletOrDesktop} = useWebMediaQueries()
const {openModal} = useModalControls()
+ const {mutedWordsDialogControl} = useGlobalDialogsControlContext()
useFocusEffect(
React.useCallback(() => {
@@ -69,8 +71,8 @@ export function ModerationScreen({}: Props) {
style={[styles.linkCard, pal.view]}
onPress={onPressContentFiltering}
accessibilityRole="tab"
- accessibilityHint="Content filtering"
- accessibilityLabel="">
+ accessibilityHint=""
+ accessibilityLabel={_(msg`Open content filtering settings`)}>
Content filtering
+ mutedWordsDialogControl.open()}
+ accessibilityRole="tab"
+ accessibilityHint=""
+ accessibilityLabel={_(msg`Open muted words settings`)}>
+
+
+
+
+ Muted words & tags
+
+
-export function PreferencesHomeFeed({navigation}: Props) {
+export function PreferencesFollowingFeed({navigation}: Props) {
const pal = usePalette('default')
const {_} = useLingui()
const {isTabletOrDesktop} = useWebMediaQueries()
@@ -101,14 +101,14 @@ export function PreferencesHomeFeed({navigation}: Props) {
styles.container,
isTabletOrDesktop && styles.desktopContainer,
]}>
-
+
- Fine-tune the content you see on your home screen.
+ Fine-tune the content you see on your Following feed.
@@ -260,7 +260,7 @@ export function PreferencesHomeFeed({navigation}: Props) {
Set this setting to "Yes" to show samples of your saved feeds in
- your following feed. This is an experimental feature.
+ your Following feed. This is an experimental feature.
) : (
diff --git a/src/view/screens/ProfileList.tsx b/src/view/screens/ProfileList.tsx
index 7964648836..9e98757efa 100644
--- a/src/view/screens/ProfileList.tsx
+++ b/src/view/screens/ProfileList.tsx
@@ -14,7 +14,7 @@ import {NativeDropdown, DropdownItem} from 'view/com/util/forms/NativeDropdown'
import {CenteredView} from 'view/com/util/Views'
import {EmptyState} from 'view/com/util/EmptyState'
import {LoadingScreen} from 'view/com/util/LoadingScreen'
-import {RichText} from 'view/com/util/text/RichText'
+import {RichText} from '#/components/RichText'
import {Button} from 'view/com/util/forms/Button'
import {TextLink} from 'view/com/util/Link'
import {ListRef} from 'view/com/util/List'
@@ -60,6 +60,7 @@ import {
import {logger} from '#/logger'
import {useAnalytics} from '#/lib/analytics/analytics'
import {listenSoftReset} from '#/state/events'
+import {atoms as a, useTheme} from '#/alf'
const SECTION_TITLES_CURATE = ['Posts', 'About']
const SECTION_TITLES_MOD = ['About']
@@ -698,6 +699,7 @@ const AboutSection = React.forwardRef(
ref,
) {
const pal = usePalette('default')
+ const t = useTheme()
const {_} = useLingui()
const {isMobile} = useWebMediaQueries()
const {currentAccount} = useSession()
@@ -742,9 +744,8 @@ const AboutSection = React.forwardRef(
{descriptionRT ? (
) : (
(
paddingBottom: isMobile ? 14 : 18,
},
]}>
-
+
Users
{isOwner && (
@@ -817,14 +818,18 @@ const AboutSection = React.forwardRef(
)
}, [
- pal,
- list,
isMobile,
+ pal.border,
+ pal.textLight,
+ pal.colors.link,
+ pal.link,
descriptionRT,
isCurateList,
isOwner,
- onPressAddUser,
+ list.creator,
+ t.atoms.text,
_,
+ onPressAddUser,
])
const renderEmptyState = useCallback(() => {
diff --git a/src/view/screens/Search/Search.tsx b/src/view/screens/Search/Search.tsx
index 142726701e..42eec53d31 100644
--- a/src/view/screens/Search/Search.tsx
+++ b/src/view/screens/Search/Search.tsx
@@ -16,7 +16,7 @@ import {
FontAwesomeIcon,
FontAwesomeIconStyle,
} from '@fortawesome/react-native-fontawesome'
-import {useFocusEffect} from '@react-navigation/native'
+import {useFocusEffect, useNavigation} from '@react-navigation/native'
import {logger} from '#/logger'
import {
@@ -53,6 +53,7 @@ import {listenSoftReset} from '#/state/events'
import {s} from '#/lib/styles'
import AsyncStorage from '@react-native-async-storage/async-storage'
import {augmentSearchQuery} from '#/lib/strings/helpers'
+import {NavigationProp} from '#/lib/routes/types'
function Loader() {
const pal = usePalette('default')
@@ -448,6 +449,7 @@ export function SearchScreenInner({
export function SearchScreen(
props: NativeStackScreenProps,
) {
+ const navigation = useNavigation()
const theme = useTheme()
const textInput = React.useRef(null)
const {_} = useLingui()
@@ -472,6 +474,27 @@ export function SearchScreen(
React.useState(false)
const [searchHistory, setSearchHistory] = React.useState([])
+ /**
+ * The Search screen's `q` param
+ */
+ const queryParam = props.route?.params?.q
+
+ /**
+ * If `true`, this means we received new instructions from the router. This
+ * is handled in a effect, and used to update the value of `query` locally
+ * within this screen.
+ */
+ const routeParamsMismatch = queryParam && queryParam !== query
+
+ React.useEffect(() => {
+ if (queryParam && routeParamsMismatch) {
+ // reset immediately and let local state take over
+ navigation.setParams({q: ''})
+ // update query for next search
+ setQuery(queryParam)
+ }
+ }, [queryParam, routeParamsMismatch, navigation])
+
React.useEffect(() => {
const loadSearchHistory = async () => {
try {
@@ -774,6 +797,8 @@ export function SearchScreen(
)}
+ ) : routeParamsMismatch ? (
+
) : (
)}
diff --git a/src/view/screens/Settings/ExportCarDialog.tsx b/src/view/screens/Settings/ExportCarDialog.tsx
index 720cd4f090..dca51c0dca 100644
--- a/src/view/screens/Settings/ExportCarDialog.tsx
+++ b/src/view/screens/Settings/ExportCarDialog.tsx
@@ -76,7 +76,7 @@ export function ExportCarDialog({
This feature is in beta. You can read more about repository
exports in{' '}
this blogpost.
diff --git a/src/view/screens/Settings/index.tsx b/src/view/screens/Settings/index.tsx
index 9abf0f2bda..00b507a997 100644
--- a/src/view/screens/Settings/index.tsx
+++ b/src/view/screens/Settings/index.tsx
@@ -241,8 +241,8 @@ export function SettingsScreen({}: Props) {
Toast.show(_(msg`Copied build version to clipboard`))
}, [_])
- const openHomeFeedPreferences = React.useCallback(() => {
- navigation.navigate('PreferencesHomeFeed')
+ const openFollowingFeedPreferences = React.useCallback(() => {
+ navigation.navigate('PreferencesFollowingFeed')
}, [navigation])
const openThreadsPreferences = React.useCallback(() => {
@@ -529,7 +529,7 @@ export function SettingsScreen({}: Props) {
pal.view,
isSwitchingAccounts && styles.dimmed,
]}
- onPress={openHomeFeedPreferences}
+ onPress={openFollowingFeedPreferences}
accessibilityRole="button"
accessibilityHint=""
accessibilityLabel={_(msg`Opens the home feed preferences`)}>
@@ -540,7 +540,7 @@ export function SettingsScreen({}: Props) {
/>
- Home Feed Preferences
+ Following Feed Preferences
{
- control.open()
+ scrollable.open()
prompt.open()
+ basic.open()
+ }}
+ label="Open basic dialog">
+ Open all dialogs
+
+
+ {
+ scrollable.open()
+ }}
+ label="Open basic dialog">
+ Open scrollable dialog
+
+
+ {
+ basic.open()
}}
label="Open basic dialog">
Open basic dialog
@@ -48,9 +72,18 @@ export function Dialogs() {
+
+
+
+
+ Dialog
+ A basic dialog
+
+
+
+ control={scrollable}
+ nativeOptions={{sheet: {snapPoints: ['100%']}}}>
control.close()}
+ onPress={() =>
+ scrollable.close(() => {
+ console.log('CLOSED')
+ })
+ }
label="Open basic dialog">
- Close basic dialog
+ Close dialog
diff --git a/src/view/screens/Storybook/Icons.tsx b/src/view/screens/Storybook/Icons.tsx
index 73466e077f..9d7dc0aa8a 100644
--- a/src/view/screens/Storybook/Icons.tsx
+++ b/src/view/screens/Storybook/Icons.tsx
@@ -6,6 +6,7 @@ import {H1} from '#/components/Typography'
import {Globe_Stroke2_Corner0_Rounded as Globe} from '#/components/icons/Globe'
import {ArrowTopRight_Stroke2_Corner0_Rounded as ArrowTopRight} from '#/components/icons/ArrowTopRight'
import {CalendarDays_Stroke2_Corner0_Rounded as CalendarDays} from '#/components/icons/CalendarDays'
+import {Loader} from '#/components/Loader'
export function Icons() {
const t = useTheme()
@@ -36,6 +37,14 @@ export function Icons() {
+
+
+
+
+
+
+
+
)
}
diff --git a/src/view/screens/Storybook/Links.tsx b/src/view/screens/Storybook/Links.tsx
index 2828e74bf0..f9ecfba554 100644
--- a/src/view/screens/Storybook/Links.tsx
+++ b/src/view/screens/Storybook/Links.tsx
@@ -4,7 +4,7 @@ import {View} from 'react-native'
import {useTheme, atoms as a} from '#/alf'
import {ButtonText} from '#/components/Button'
import {InlineLink, Link} from '#/components/Link'
-import {H1, H3, Text} from '#/components/Typography'
+import {H1, Text} from '#/components/Typography'
export function Links() {
const t = useTheme()
@@ -13,26 +13,19 @@ export function Links() {
Links
-
- External
+
+ https://google.com
-
- External with custom children
+
+ External with custom children (google.com)
- https://bsky.social
+ style={[a.text_md, t.atoms.text_contrast_low]}>
+ Internal (bsky.social)
-
- Internal
+
+ Internal (bsky.app)
+
+
+
+ {({state, props}) => {
+ return (
+
+ Open
+
+ )
+ }}
+
+
+
+
+ {}}>
+
+ Click me
+
+
+ menuControl.close()}>
+ Another item
+
+
+
+
+
+
+ {}}>
+
+ Click me
+
+
+ menuControl.close()}>
+ Another item
+
+
+
+
+
+ {}}>
+
+ Click me
+
+
+
+
+
+ )
+}
diff --git a/src/view/screens/Storybook/Palette.tsx b/src/view/screens/Storybook/Palette.tsx
index b521fe8607..42000aa810 100644
--- a/src/view/screens/Storybook/Palette.tsx
+++ b/src/view/screens/Storybook/Palette.tsx
@@ -1,179 +1,105 @@
import React from 'react'
import {View} from 'react-native'
-import * as tokens from '#/alf/tokens'
-import {atoms as a} from '#/alf'
+import {atoms as a, useTheme} from '#/alf'
export function Palette() {
+ const t = useTheme()
return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -181,153 +107,159 @@ export function Palette() {
-
-
+
+
diff --git a/src/view/screens/Storybook/Typography.tsx b/src/view/screens/Storybook/Typography.tsx
index 5d3a96f4d0..f0d67c5281 100644
--- a/src/view/screens/Storybook/Typography.tsx
+++ b/src/view/screens/Storybook/Typography.tsx
@@ -8,7 +8,9 @@ import {RichText} from '#/components/RichText'
export function Typography() {
return (
- atoms.text_5xl
+
+ atoms.text_5xl
+
atoms.text_4xl
atoms.text_3xl
atoms.text_2xl
@@ -20,11 +22,14 @@ export function Typography() {
atoms.text_2xs
diff --git a/src/view/screens/Storybook/index.tsx b/src/view/screens/Storybook/index.tsx
index 40929555e5..e43d756de5 100644
--- a/src/view/screens/Storybook/index.tsx
+++ b/src/view/screens/Storybook/index.tsx
@@ -16,6 +16,7 @@ import {Dialogs} from './Dialogs'
import {Breakpoints} from './Breakpoints'
import {Shadows} from './Shadows'
import {Icons} from './Icons'
+import {Menus} from './Menus'
export function Storybook() {
const t = useTheme()
@@ -84,6 +85,7 @@ export function Storybook() {
+
diff --git a/src/view/shell/Composer.tsx b/src/view/shell/Composer.tsx
index d37ff4fb7c..1937fcb6ea 100644
--- a/src/view/shell/Composer.tsx
+++ b/src/view/shell/Composer.tsx
@@ -55,6 +55,8 @@ export const Composer = observer(function ComposerImpl({
onPost={state.onPost}
quote={state.quote}
mention={state.mention}
+ text={state.text}
+ imageUris={state.imageUris}
/>
)
diff --git a/src/view/shell/Composer.web.tsx b/src/view/shell/Composer.web.tsx
index 99e659d62d..00233f66af 100644
--- a/src/view/shell/Composer.web.tsx
+++ b/src/view/shell/Composer.web.tsx
@@ -9,7 +9,7 @@ import {useWebBodyScrollLock} from '#/lib/hooks/useWebBodyScrollLock'
import {
EmojiPicker,
EmojiPickerState,
-} from 'view/com/composer/text-input/web/EmojiPicker.web.tsx'
+} from 'view/com/composer/text-input/web/EmojiPicker.web'
const BOTTOM_BAR_HEIGHT = 61
@@ -69,6 +69,7 @@ export function Composer({}: {winHeight: number}) {
onPost={state.onPost}
mention={state.mention}
openPicker={onOpenPicker}
+ text={state.text}
/>
diff --git a/src/view/shell/desktop/Feeds.tsx b/src/view/shell/desktop/Feeds.tsx
index c3b1caa354..f447490b36 100644
--- a/src/view/shell/desktop/Feeds.tsx
+++ b/src/view/shell/desktop/Feeds.tsx
@@ -15,7 +15,7 @@ import {emitSoftReset} from '#/state/events'
export function DesktopFeeds() {
const pal = usePalette('default')
const {_} = useLingui()
- const {feeds: pinnedFeedInfos} = usePinnedFeedsInfos()
+ const {data: pinnedFeedInfos} = usePinnedFeedsInfos()
const selectedFeed = useSelectedFeed()
const setSelectedFeed = useSetSelectedFeed()
const navigation = useNavigation()
@@ -25,7 +25,9 @@ export function DesktopFeeds() {
}
return getCurrentRoute(state)
})
-
+ if (!pinnedFeedInfos) {
+ return null
+ }
return (
{pinnedFeedInfos.map(feedInfo => {
diff --git a/src/view/shell/desktop/LeftNav.tsx b/src/view/shell/desktop/LeftNav.tsx
index fbc90bfc6d..c56ba941ed 100644
--- a/src/view/shell/desktop/LeftNav.tsx
+++ b/src/view/shell/desktop/LeftNav.tsx
@@ -200,10 +200,10 @@ function ComposeBtn() {
const fetchHandle = useFetchHandle()
const getProfileHandle = async () => {
- const {routes} = getState()
- const currentRoute = routes[routes.length - 1]
+ const routes = getState()?.routes
+ const currentRoute = routes?.[routes?.length - 1]
- if (currentRoute.name === 'Profile') {
+ if (currentRoute?.name === 'Profile') {
let handle: string | undefined = (
currentRoute.params as CommonNavigatorParams['Profile']
).name
@@ -391,7 +391,7 @@ export function DesktopLeftNav() {
}
label={_(msg`Moderation`)}
diff --git a/src/view/shell/desktop/RightNav.tsx b/src/view/shell/desktop/RightNav.tsx
index 264fef1948..c1f4987248 100644
--- a/src/view/shell/desktop/RightNav.tsx
+++ b/src/view/shell/desktop/RightNav.tsx
@@ -9,14 +9,13 @@ import {FEEDBACK_FORM_URL, HELP_DESK_URL} from 'lib/constants'
import {s} from 'lib/styles'
import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries'
import {useLingui} from '@lingui/react'
-import {Trans, msg} from '@lingui/macro'
+import {msg} from '@lingui/macro'
import {useSession} from '#/state/session'
export function DesktopRightNav({routeName}: {routeName: string}) {
const pal = usePalette('default')
- const palError = usePalette('error')
const {_} = useLingui()
- const {isSandbox, hasSession, currentAccount} = useSession()
+ const {hasSession, currentAccount} = useSession()
const {isTablet} = useWebMediaQueries()
if (isTablet) {
@@ -49,13 +48,6 @@ export function DesktopRightNav({routeName}: {routeName: string}) {
paddingTop: hasSession ? 0 : 18,
},
]}>
- {isSandbox ? (
-
-
- SANDBOX. Posts and accounts are not permanent.
-
-
- ) : undefined}
{hasSession && (
<>
diff --git a/src/view/shell/index.tsx b/src/view/shell/index.tsx
index 6b0cc68089..bdba791741 100644
--- a/src/view/shell/index.tsx
+++ b/src/view/shell/index.tsx
@@ -29,6 +29,8 @@ import {useSession} from '#/state/session'
import {useCloseAnyActiveElement} from '#/state/util'
import * as notifications from 'lib/notifications/notifications'
import {Outlet as PortalOutlet} from '#/components/Portal'
+import {MutedWordsDialog} from '#/components/dialogs/MutedWords'
+import {useDialogStateContext} from '#/state/dialogs'
function ShellInner() {
const isDrawerOpen = useIsDrawerOpen()
@@ -54,6 +56,7 @@ function ShellInner() {
const closeAnyActiveElement = useCloseAnyActiveElement()
// start undefined
const currentAccountDid = React.useRef(undefined)
+ const {openDialogs} = useDialogStateContext()
React.useEffect(() => {
let listener = {remove() {}}
@@ -77,9 +80,21 @@ function ShellInner() {
}
}, [currentAccount])
+ /**
+ * The counterpart to `accessibilityViewIsModal` for Android. This property
+ * applies to the parent of all non-modal views, and prevents TalkBack from
+ * navigating within content beneath an open dialog.
+ *
+ * @see https://reactnative.dev/docs/accessibility#importantforaccessibility-android
+ */
+ const importantForAccessibility =
+ openDialogs.length > 0 ? 'no-hide-descendants' : undefined
+
return (
<>
-
+
+
>
diff --git a/src/view/shell/index.web.tsx b/src/view/shell/index.web.tsx
index 97c0655022..71dccb8c48 100644
--- a/src/view/shell/index.web.tsx
+++ b/src/view/shell/index.web.tsx
@@ -16,6 +16,7 @@ import {useIsDrawerOpen, useSetDrawerOpen} from '#/state/shell'
import {useCloseAllActiveElements} from '#/state/util'
import {useWebBodyScrollLock} from '#/lib/hooks/useWebBodyScrollLock'
import {Outlet as PortalOutlet} from '#/components/Portal'
+import {MutedWordsDialog} from '#/components/dialogs/MutedWords'
function ShellInner() {
const isDrawerOpen = useIsDrawerOpen()
@@ -40,6 +41,7 @@ function ShellInner() {
+
{!isDesktop && isDrawerOpen && (
diff --git a/web/index.html b/web/index.html
index e00b13cd6d..b6e01ba4c2 100644
--- a/web/index.html
+++ b/web/index.html
@@ -2,6 +2,7 @@
+
+
+
%WEB_TITLE%
diff --git a/yarn.lock b/yarn.lock
index e5326d17b4..8165ed3c1e 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -34,6 +34,20 @@
jsonpointer "^5.0.0"
leven "^3.1.0"
+"@atproto/api@^0.10.5":
+ version "0.10.5"
+ resolved "https://registry.yarnpkg.com/@atproto/api/-/api-0.10.5.tgz#e778e2843d08690df8df81f24028a7578e9b3cb4"
+ integrity sha512-GYdST5sPKU2JnPmm8x3KqjOSlDiYXrp4GkW7bpQTVLPabnUNq5NLN6HJEoJABjjOAsaLF12rBoV+JpRb1UjNsQ==
+ dependencies:
+ "@atproto/common-web" "^0.2.3"
+ "@atproto/lexicon" "^0.3.2"
+ "@atproto/syntax" "^0.2.0"
+ "@atproto/xrpc" "^0.4.2"
+ multiformats "^9.9.0"
+ tlds "^1.234.0"
+ typed-emitter "^2.1.0"
+ zod "^3.21.4"
+
"@atproto/api@^0.9.5":
version "0.9.5"
resolved "https://registry.yarnpkg.com/@atproto/api/-/api-0.9.5.tgz#630e5d9520bba38d0cd348c8028ddbb73bd074f8"
@@ -231,6 +245,17 @@
multiformats "^9.9.0"
zod "^3.21.4"
+"@atproto/lexicon@^0.3.2":
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/@atproto/lexicon/-/lexicon-0.3.2.tgz#0085a3acd3a77867b8efe188297a1bbacc55ce5c"
+ integrity sha512-kmGCkrRwpWIqmn/KO4BZwUf8Nmfndk3XvFC06V0ygCWc42g6+t4QP/6ywNW4PgqfZY0Q5aW4EuDfD7KjAFkFtQ==
+ dependencies:
+ "@atproto/common-web" "^0.2.3"
+ "@atproto/syntax" "^0.2.0"
+ iso-datestring-validator "^2.2.2"
+ multiformats "^9.9.0"
+ zod "^3.21.4"
+
"@atproto/ozone@^0.0.7":
version "0.0.7"
resolved "https://registry.yarnpkg.com/@atproto/ozone/-/ozone-0.0.7.tgz#bfad82bc1d0900e79401a82f13581f707415505a"
@@ -326,6 +351,13 @@
dependencies:
"@atproto/common-web" "^0.2.3"
+"@atproto/syntax@^0.2.0":
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/@atproto/syntax/-/syntax-0.2.0.tgz#4bab724c02e11f8943b8ec101251082cf55067e9"
+ integrity sha512-K+9jl6mtxC9ytlR7msSiP9jVNqtdxEBSt0kOfsC924lqGwuD8nlUAMi1GSMgAZJGg/Rd+0MKXh789heTdeL3HQ==
+ dependencies:
+ "@atproto/common-web" "^0.2.3"
+
"@atproto/xrpc-server@^0.4.2":
version "0.4.2"
resolved "https://registry.yarnpkg.com/@atproto/xrpc-server/-/xrpc-server-0.4.2.tgz#23efd89086b85933f1b0cc00c86e895adcaac315"
@@ -351,6 +383,14 @@
"@atproto/lexicon" "^0.3.1"
zod "^3.21.4"
+"@atproto/xrpc@^0.4.2":
+ version "0.4.2"
+ resolved "https://registry.yarnpkg.com/@atproto/xrpc/-/xrpc-0.4.2.tgz#57812e0624be597b85f21471acf336513f35ccda"
+ integrity sha512-x4x2QB4nWmLjIpz2Ue9n/QVbVyJkk6tQMhvmDQaVFF89E3FcVI4rxF4uhzSxaLpbNtyVQBNEEmNHOr5EJLeHVA==
+ dependencies:
+ "@atproto/lexicon" "^0.3.2"
+ zod "^3.21.4"
+
"@aws-crypto/crc32@3.0.0":
version "3.0.0"
resolved "https://registry.yarnpkg.com/@aws-crypto/crc32/-/crc32-3.0.0.tgz#07300eca214409c33e3ff769cd5697b57fdd38fa"
@@ -3075,6 +3115,27 @@
xcode "^3.0.1"
xml2js "0.6.0"
+"@expo/config-plugins@~5.0.3":
+ version "5.0.4"
+ resolved "https://registry.yarnpkg.com/@expo/config-plugins/-/config-plugins-5.0.4.tgz#216fea6558fe66615af1370de55193f4181cb23e"
+ integrity sha512-vzUcVpqOMs3h+hyRdhGwk+eGIOhXa5xYdd92yO17RMNHav3v/+ekMbs7XA2c3lepMO8Yd4/5hqmRw9ZTL6jGzg==
+ dependencies:
+ "@expo/config-types" "^47.0.0"
+ "@expo/json-file" "8.2.36"
+ "@expo/plist" "0.0.18"
+ "@expo/sdk-runtime-versions" "^1.0.0"
+ "@react-native/normalize-color" "^2.0.0"
+ chalk "^4.1.2"
+ debug "^4.3.1"
+ find-up "~5.0.0"
+ getenv "^1.0.0"
+ glob "7.1.6"
+ resolve-from "^5.0.0"
+ semver "^7.3.5"
+ slash "^3.0.0"
+ xcode "^3.0.1"
+ xml2js "0.4.23"
+
"@expo/config-plugins@~7.8.2":
version "7.8.2"
resolved "https://registry.yarnpkg.com/@expo/config-plugins/-/config-plugins-7.8.2.tgz#c00ce93c4d6c2cb9e345ed9cd56ceeea05ab8ddb"
@@ -3098,6 +3159,11 @@
xcode "^3.0.1"
xml2js "0.6.0"
+"@expo/config-types@^47.0.0":
+ version "47.0.0"
+ resolved "https://registry.yarnpkg.com/@expo/config-types/-/config-types-47.0.0.tgz#99eeabe0bba7a776e0f252b78beb0c574692c38d"
+ integrity sha512-r0pWfuhkv7KIcXMUiNACJmJKKwlTBGMw9VZHNdppS8/0Nve8HZMTkNRFQzTHW1uH3pBj8jEXpyw/2vSWDHex9g==
+
"@expo/config-types@^50.0.0", "@expo/config-types@^50.0.0-alpha.1":
version "50.0.0"
resolved "https://registry.yarnpkg.com/@expo/config-types/-/config-types-50.0.0.tgz#b534d3ec997ec60f8af24f6ad56244c8afc71a0b"
@@ -3120,6 +3186,23 @@
slugify "^1.3.4"
sucrase "^3.20.0"
+"@expo/config@~7.0.0":
+ version "7.0.3"
+ resolved "https://registry.yarnpkg.com/@expo/config/-/config-7.0.3.tgz#c9c634e76186de25e296485e51418f1e52966e6e"
+ integrity sha512-joVtB5o+NF40Tmsdp65UzryRtbnCuMbXkVO4wJnNJO4aaK0EYLdHCYSewORVqNcDfGN0LphQr8VTG2npbd9CJA==
+ dependencies:
+ "@babel/code-frame" "~7.10.4"
+ "@expo/config-plugins" "~5.0.3"
+ "@expo/config-types" "^47.0.0"
+ "@expo/json-file" "8.2.36"
+ getenv "^1.0.0"
+ glob "7.1.6"
+ require-from-string "^2.0.2"
+ resolve-from "^5.0.0"
+ semver "7.3.2"
+ slugify "^1.3.4"
+ sucrase "^3.20.0"
+
"@expo/config@~8.5.0":
version "8.5.0"
resolved "https://registry.yarnpkg.com/@expo/config/-/config-8.5.0.tgz#c618e016c3272335e33fec02fb7fd67e4dcc3342"
@@ -3219,6 +3302,15 @@
semver "7.3.2"
tempy "0.3.0"
+"@expo/json-file@8.2.36":
+ version "8.2.36"
+ resolved "https://registry.yarnpkg.com/@expo/json-file/-/json-file-8.2.36.tgz#62a505cb7f30a34d097386476794680a3f7385ff"
+ integrity sha512-tOZfTiIFA5KmMpdW9KF7bc6CFiGjb0xnbieJhTGlHrLL+ps2G0OkqmuZ3pFEXBOMnJYUVpnSy++52LFxvpa5ZQ==
+ dependencies:
+ "@babel/code-frame" "~7.10.4"
+ json5 "^1.0.1"
+ write-file-atomic "^2.3.0"
+
"@expo/json-file@^8.2.37":
version "8.2.37"
resolved "https://registry.yarnpkg.com/@expo/json-file/-/json-file-8.2.37.tgz#9c02d3b42134907c69cc0a027b18671b69344049"
@@ -3288,6 +3380,15 @@
split "^1.0.1"
sudo-prompt "9.1.1"
+"@expo/plist@0.0.18":
+ version "0.0.18"
+ resolved "https://registry.yarnpkg.com/@expo/plist/-/plist-0.0.18.tgz#9abcde78df703a88f6d9fa1a557ee2f045d178b0"
+ integrity sha512-+48gRqUiz65R21CZ/IXa7RNBXgAI/uPSdvJqoN9x1hfL44DNbUoWHgHiEXTx7XelcATpDwNTz6sHLfy0iNqf+w==
+ dependencies:
+ "@xmldom/xmldom" "~0.7.0"
+ base64-js "^1.2.3"
+ xmlbuilder "^14.0.0"
+
"@expo/plist@^0.1.0":
version "0.1.0"
resolved "https://registry.yarnpkg.com/@expo/plist/-/plist-0.1.0.tgz#eabc95f951d14e10c87fd0443ee01d567371f058"
@@ -4427,6 +4528,18 @@
"@radix-ui/react-use-callback-ref" "1.0.1"
"@radix-ui/react-use-escape-keydown" "1.0.3"
+"@radix-ui/react-dismissable-layer@1.0.5":
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.5.tgz#3f98425b82b9068dfbab5db5fff3df6ebf48b9d4"
+ integrity sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/primitive" "1.0.1"
+ "@radix-ui/react-compose-refs" "1.0.1"
+ "@radix-ui/react-primitive" "1.0.3"
+ "@radix-ui/react-use-callback-ref" "1.0.1"
+ "@radix-ui/react-use-escape-keydown" "1.0.3"
+
"@radix-ui/react-dropdown-menu@^2.0.1":
version "2.0.5"
resolved "https://registry.yarnpkg.com/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.0.5.tgz#19bf4de8ffa348b4eb6a86842f14eff93d741170"
@@ -4441,6 +4554,20 @@
"@radix-ui/react-primitive" "1.0.3"
"@radix-ui/react-use-controllable-state" "1.0.1"
+"@radix-ui/react-dropdown-menu@^2.0.6":
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.0.6.tgz#cdf13c956c5e263afe4e5f3587b3071a25755b63"
+ integrity sha512-i6TuFOoWmLWq+M/eCLGd/bQ2HfAX1RJgvrBQ6AQLmzfvsLdefxbWu8G9zczcPFfcSPehz9GcpF6K9QYreFV8hA==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/primitive" "1.0.1"
+ "@radix-ui/react-compose-refs" "1.0.1"
+ "@radix-ui/react-context" "1.0.1"
+ "@radix-ui/react-id" "1.0.1"
+ "@radix-ui/react-menu" "2.0.6"
+ "@radix-ui/react-primitive" "1.0.3"
+ "@radix-ui/react-use-controllable-state" "1.0.1"
+
"@radix-ui/react-focus-guards@1.0.1":
version "1.0.1"
resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.1.tgz#1ea7e32092216b946397866199d892f71f7f98ad"
@@ -4458,6 +4585,16 @@
"@radix-ui/react-primitive" "1.0.3"
"@radix-ui/react-use-callback-ref" "1.0.1"
+"@radix-ui/react-focus-scope@1.0.4":
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.4.tgz#2ac45fce8c5bb33eb18419cdc1905ef4f1906525"
+ integrity sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/react-compose-refs" "1.0.1"
+ "@radix-ui/react-primitive" "1.0.3"
+ "@radix-ui/react-use-callback-ref" "1.0.1"
+
"@radix-ui/react-id@1.0.1":
version "1.0.1"
resolved "https://registry.yarnpkg.com/@radix-ui/react-id/-/react-id-1.0.1.tgz#73cdc181f650e4df24f0b6a5b7aa426b912c88c0"
@@ -4491,6 +4628,31 @@
aria-hidden "^1.1.1"
react-remove-scroll "2.5.5"
+"@radix-ui/react-menu@2.0.6":
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-menu/-/react-menu-2.0.6.tgz#2c9e093c1a5d5daa87304b2a2f884e32288ae79e"
+ integrity sha512-BVkFLS+bUC8HcImkRKPSiVumA1VPOOEC5WBMiT+QAVsPzW1FJzI9KnqgGxVDPBcql5xXrHkD3JOVoXWEXD8SYA==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/primitive" "1.0.1"
+ "@radix-ui/react-collection" "1.0.3"
+ "@radix-ui/react-compose-refs" "1.0.1"
+ "@radix-ui/react-context" "1.0.1"
+ "@radix-ui/react-direction" "1.0.1"
+ "@radix-ui/react-dismissable-layer" "1.0.5"
+ "@radix-ui/react-focus-guards" "1.0.1"
+ "@radix-ui/react-focus-scope" "1.0.4"
+ "@radix-ui/react-id" "1.0.1"
+ "@radix-ui/react-popper" "1.1.3"
+ "@radix-ui/react-portal" "1.0.4"
+ "@radix-ui/react-presence" "1.0.1"
+ "@radix-ui/react-primitive" "1.0.3"
+ "@radix-ui/react-roving-focus" "1.0.4"
+ "@radix-ui/react-slot" "1.0.2"
+ "@radix-ui/react-use-callback-ref" "1.0.1"
+ aria-hidden "^1.1.1"
+ react-remove-scroll "2.5.5"
+
"@radix-ui/react-popper@1.1.2":
version "1.1.2"
resolved "https://registry.yarnpkg.com/@radix-ui/react-popper/-/react-popper-1.1.2.tgz#4c0b96fcd188dc1f334e02dba2d538973ad842e9"
@@ -4508,6 +4670,23 @@
"@radix-ui/react-use-size" "1.0.1"
"@radix-ui/rect" "1.0.1"
+"@radix-ui/react-popper@1.1.3":
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-popper/-/react-popper-1.1.3.tgz#24c03f527e7ac348fabf18c89795d85d21b00b42"
+ integrity sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@floating-ui/react-dom" "^2.0.0"
+ "@radix-ui/react-arrow" "1.0.3"
+ "@radix-ui/react-compose-refs" "1.0.1"
+ "@radix-ui/react-context" "1.0.1"
+ "@radix-ui/react-primitive" "1.0.3"
+ "@radix-ui/react-use-callback-ref" "1.0.1"
+ "@radix-ui/react-use-layout-effect" "1.0.1"
+ "@radix-ui/react-use-rect" "1.0.1"
+ "@radix-ui/react-use-size" "1.0.1"
+ "@radix-ui/rect" "1.0.1"
+
"@radix-ui/react-portal@1.0.3":
version "1.0.3"
resolved "https://registry.yarnpkg.com/@radix-ui/react-portal/-/react-portal-1.0.3.tgz#ffb961244c8ed1b46f039e6c215a6c4d9989bda1"
@@ -4516,6 +4695,14 @@
"@babel/runtime" "^7.13.10"
"@radix-ui/react-primitive" "1.0.3"
+"@radix-ui/react-portal@1.0.4":
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-portal/-/react-portal-1.0.4.tgz#df4bfd353db3b1e84e639e9c63a5f2565fb00e15"
+ integrity sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/react-primitive" "1.0.3"
+
"@radix-ui/react-presence@1.0.1":
version "1.0.1"
resolved "https://registry.yarnpkg.com/@radix-ui/react-presence/-/react-presence-1.0.1.tgz#491990ba913b8e2a5db1b06b203cb24b5cdef9ba"
@@ -4624,6 +4811,13 @@
dependencies:
merge-options "^3.0.4"
+"@react-native-async-storage/async-storage@^1.15.2":
+ version "1.22.0"
+ resolved "https://registry.yarnpkg.com/@react-native-async-storage/async-storage/-/async-storage-1.22.0.tgz#202a9afd15a5b829c39b709d0ca3942612441efc"
+ integrity sha512-b5KD010iiZnot86RbAaHpLuHwmPW2qA3SSN/OSZhd1kBoINEQEVBuv+uFtcaTxAhX27bT0wd13GOb2IOSDUXSA==
+ dependencies:
+ merge-options "^3.0.4"
+
"@react-native-camera-roll/camera-roll@^5.2.2":
version "5.7.2"
resolved "https://registry.yarnpkg.com/@react-native-camera-roll/camera-roll/-/camera-roll-5.7.2.tgz#db11525ae26c8a61630c424aebd323a7c784a921"
@@ -4792,13 +4986,6 @@
prompts "^2.4.2"
semver "^7.5.2"
-"@react-native-community/datetimepicker@7.6.1":
- version "7.6.1"
- resolved "https://registry.yarnpkg.com/@react-native-community/datetimepicker/-/datetimepicker-7.6.1.tgz#98bdee01e3df490526ee1125e438c2030becac1f"
- integrity sha512-g66Q2Kd9Uw3eRL7kkrTsGhi+eXxNoPDRFYH6z78sZQuYjPkUQgJDDMUYgBmaBsQx/fKMtemPrCj1ulGmyi0OSw==
- dependencies:
- invariant "^2.2.4"
-
"@react-native-community/eslint-config@^3.0.0":
version "3.2.0"
resolved "https://registry.yarnpkg.com/@react-native-community/eslint-config/-/eslint-config-3.2.0.tgz#42f677d5fff385bccf1be1d3b8faa8c086cf998d"
@@ -7998,7 +8185,7 @@
resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.8.10.tgz#a1337ca426aa61cef9fe15b5b28e340a72f6fa99"
integrity sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==
-"@xmldom/xmldom@~0.7.7":
+"@xmldom/xmldom@~0.7.0", "@xmldom/xmldom@~0.7.7":
version "0.7.13"
resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.7.13.tgz#ff34942667a4e19a9f4a0996a76814daac364cf3"
integrity sha512-lm2GW5PkosIzccsaZIz7tp8cPADSIlIHWDFTR1N0SzfinhhYgeIQjFMz4rYzanCScr3DqQLeomUDArp6MWKm+g==
@@ -11623,6 +11810,14 @@ expo-camera@~14.0.1:
dependencies:
invariant "^2.2.4"
+expo-constants@^13.0.2:
+ version "13.2.4"
+ resolved "https://registry.yarnpkg.com/expo-constants/-/expo-constants-13.2.4.tgz#eab4a553f074b2c60ad7a158d3b82e3484a94606"
+ integrity sha512-Zobau8EuTk2GgafwkfGnWM6CmSLB7X8qnQXVuXe0nd3v92hfQUmRWGhJwH88uxXj3LrfqctM6PaJ8taG1vxfBw==
+ dependencies:
+ "@expo/config" "~7.0.0"
+ uuid "^3.3.2"
+
expo-constants@~15.4.0:
version "15.4.1"
resolved "https://registry.yarnpkg.com/expo-constants/-/expo-constants-15.4.1.tgz#f76f347cf687b6630e1e3b9a385a4e42771671a4"
@@ -11672,6 +11867,13 @@ expo-dev-menu@4.5.3:
expo-dev-menu-interface "1.7.2"
semver "^7.5.3"
+expo-device@~4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/expo-device/-/expo-device-4.1.1.tgz#5de94144113ffb7fa0f37fa3d70e452113954c10"
+ integrity sha512-It0SGtKcvzQSf+Co6zdPdB63zZvG2/rDolB1lqswMNKj03Y7KVU41s5tcQCqNczj7tmeN3CJy7A8YhYGKdb7gA==
+ dependencies:
+ ua-parser-js "^0.7.19"
+
expo-device@~5.9.2:
version "5.9.2"
resolved "https://registry.yarnpkg.com/expo-device/-/expo-device-5.9.2.tgz#697e96f52d213a141b6f265f1e274e9d5e98c92c"
@@ -11737,6 +11939,14 @@ expo-keep-awake@~12.8.1:
resolved "https://registry.yarnpkg.com/expo-keep-awake/-/expo-keep-awake-12.8.1.tgz#3c8df9d86c265741b5e7bdd36965aa0c6fc17df0"
integrity sha512-P/VZFV02Rzgj13skMwH+ceGOGZSEdaUu5n7pCS3wThh2LppZjPJ7sBxUwyzeLa3DXEVUtwLZi+BiQ91wPwy9Gg==
+expo-linking@^6.2.2:
+ version "6.2.2"
+ resolved "https://registry.yarnpkg.com/expo-linking/-/expo-linking-6.2.2.tgz#b7e148068ae49fd9ad814428c16fdf7a236e8aca"
+ integrity sha512-FEe6lP4f7xFT/vjoHRG+tt6EPVtkEGaWNK1smpaUevmNdyCJKqW0PDB8o8sfG6y7fly8ULe8qg3HhKh5J7aqUQ==
+ dependencies:
+ expo-constants "~15.4.3"
+ invariant "^2.2.4"
+
expo-localization@~14.8.2:
version "14.8.2"
resolved "https://registry.yarnpkg.com/expo-localization/-/expo-localization-14.8.2.tgz#e0bbed2293265834d21a1c58d3a5f8d265bd04ae"
@@ -14864,6 +15074,16 @@ js-queue@2.0.2:
dependencies:
easy-stack "^1.0.1"
+js-sha256@^0.10.1:
+ version "0.10.1"
+ resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.10.1.tgz#b40104ba1368e823fdd5f41b66b104b15a0da60d"
+ integrity sha512-5obBtsz9301ULlsgggLg542s/jqtddfOpV5KJc4hajc9JV8GeY2gZHSVpYBn4nWqAUTJ9v+xwtbJ1mIBgIH5Vw==
+
+js-sha256@^0.11.0:
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.11.0.tgz#256a921d9292f7fe98905face82e367abaca9576"
+ integrity sha512-6xNlKayMZvds9h1Y1VWc0fQHQ82BxTXizWPEtEeGvmOUYpBRy4gbWroHLpzowe6xiQhHpelCQiE7HEdznyBL9Q==
+
js-sha256@^0.9.0:
version "0.9.0"
resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.9.0.tgz#0b89ac166583e91ef9123644bd3c5334ce9d0966"
@@ -15048,7 +15268,7 @@ json-stable-stringify-without-jsonify@^1.0.1:
resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==
-json5@^1.0.2:
+json5@^1.0.1, json5@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593"
integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==
@@ -15178,11 +15398,6 @@ levn@^0.4.1:
prelude-ls "^1.2.1"
type-check "~0.4.0"
-libphonenumber-js@^1.10.53:
- version "1.10.53"
- resolved "https://registry.yarnpkg.com/libphonenumber-js/-/libphonenumber-js-1.10.53.tgz#8dbfe1355ef1a3d8e13b8d92849f7db7ebddc98f"
- integrity sha512-sDTnnqlWK4vH4AlDQuswz3n4Hx7bIQWTpIcScJX+Sp7St3LXHmfiax/ZFfyYxHmkdCvydOLSuvtAO/XpXiSySw==
-
lie@3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e"
@@ -16177,10 +16392,10 @@ nanoid@^3.1.23, nanoid@^3.3.1, nanoid@^3.3.6:
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c"
integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==
-nanoid@^5.0.2:
- version "5.0.2"
- resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-5.0.2.tgz#97588ebc70166d0feaf73ccd2799bb4ceaebf692"
- integrity sha512-2ustYUX1R2rL/Br5B/FMhi8d5/QzvkJ912rBYxskcpu0myTHzSZfTr1LAS2Sm7jxRUObRrSBFoyzwAhL49aVSg==
+nanoid@^5.0.5:
+ version "5.0.5"
+ resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-5.0.5.tgz#5112efb5c0caf4fc80680d66d303c65233a79fdd"
+ integrity sha512-/Veqm+QKsyMY3kqi4faWplnY1u+VuKO3dD2binyPIybP31DRO29bPF+1mszgLnrR2KqSLceFLBNw0zmvDzN1QQ==
napi-build-utils@^1.0.1:
version "1.0.2"
@@ -18349,11 +18564,23 @@ react-is@^17.0.1:
resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0"
integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==
+react-keyed-flatten-children@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/react-keyed-flatten-children/-/react-keyed-flatten-children-3.0.0.tgz#b6ad0bde437d3ab86c8af3a1902d164be2a29d67"
+ integrity sha512-tSH6gvOyQjt3qtjG+kU9sTypclL1672yjpVufcE3aHNM0FhvjBUQZqsb/awIux4zEuVC3k/DP4p0GdTT/QUt/Q==
+ dependencies:
+ react-is "^18.2.0"
+
react-native-appstate-hook@^1.0.6:
version "1.0.6"
resolved "https://registry.yarnpkg.com/react-native-appstate-hook/-/react-native-appstate-hook-1.0.6.tgz#cbc16e7b89cfaea034cabd999f00e99053cabd06"
integrity sha512-0hPVyf5yLxCSVrrNEuGqN1ZnSSj3Ye2gZex0NtcK/AHYwMc0rXWFNZjBKOoZSouspqu3hXBbQ6NOUSTzrME1AQ==
+react-native-date-picker@^4.4.0:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/react-native-date-picker/-/react-native-date-picker-4.4.0.tgz#fe5b6eb8d85a4a30b2991ada5169a30ce5023ead"
+ integrity sha512-Axx3byihwwhKRLRVjPAr/UaEysapkRcKmjjM8/05UaVm4Q0xDn2RFUcRdy1QAahhRcjLjlVYhepxvU5bdgy7ZQ==
+
react-native-dotenv@^3.3.1:
version "3.4.9"
resolved "https://registry.yarnpkg.com/react-native-dotenv/-/react-native-dotenv-3.4.9.tgz#621c5b0c1d0c5c7f569bfe5a1d804bec7885c010"
@@ -18387,6 +18614,13 @@ react-native-gesture-handler@~2.14.0:
lodash "^4.17.21"
prop-types "^15.7.2"
+react-native-get-random-values@^1.6.0:
+ version "1.10.0"
+ resolved "https://registry.yarnpkg.com/react-native-get-random-values/-/react-native-get-random-values-1.10.0.tgz#c2c5f12a4ef8b1175145347b4a4b9f9a40d9ffc8"
+ integrity sha512-gZ1zbXhbb8+Jy9qYTV8c4Nf45/VB4g1jmXuavY5rPfUn7x3ok9Vl3FTl0dnE92Z4FFtfbUNNwtSfcmomdtWg+A==
+ dependencies:
+ fast-base64-decode "^1.0.0"
+
react-native-get-random-values@~1.8.0:
version "1.8.0"
resolved "https://registry.yarnpkg.com/react-native-get-random-values/-/react-native-get-random-values-1.8.0.tgz#1cb4bd4bd3966a356e59697b8f372999fe97cb16"
@@ -19867,6 +20101,49 @@ standard-as-callback@^2.1.0:
resolved "https://registry.yarnpkg.com/standard-as-callback/-/standard-as-callback-2.1.0.tgz#8953fc05359868a77b5b9739a665c5977bb7df45"
integrity sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==
+statsig-js@4.45.1:
+ version "4.45.1"
+ resolved "https://registry.yarnpkg.com/statsig-js/-/statsig-js-4.45.1.tgz#b1f5b9c52adc4a8aece376fb011416c89227932f"
+ integrity sha512-h94RzFQsJCQCNwQXpZ9OBXcvCxDnkXF6OrCekd81ySvY2l4JSowpxMWX3Iw6IDFzfTfKdER9JQzFLhMSQbT+YQ==
+ dependencies:
+ js-sha256 "^0.10.1"
+ uuid "^8.3.2"
+
+statsig-js@4.49.0:
+ version "4.49.0"
+ resolved "https://registry.yarnpkg.com/statsig-js/-/statsig-js-4.49.0.tgz#8470a9ac218a93d36f4b7b306ff9377e48064740"
+ integrity sha512-N4drx6fzI168Q4NndFY3IJbSDqpWSBWvS290H/RnT/g3Et58SvtXzG5qqgzmqy4CwcmwH+IL8K15pL7hPnfvUQ==
+ dependencies:
+ js-sha256 "^0.11.0"
+ uuid "^8.3.2"
+
+statsig-react-native-expo@^4.6.1:
+ version "4.6.1"
+ resolved "https://registry.yarnpkg.com/statsig-react-native-expo/-/statsig-react-native-expo-4.6.1.tgz#0bdf49fee7112f7f28bff2405f4ba0c1727bb3d6"
+ integrity sha512-rB60c+WSrQPmjW9j75d+acUtwSOe38PE2KTDHiOv1Mf+0TCcFtGYlJmKCibWvbeXR7ZAyjjGeroh23bCSEZauQ==
+ dependencies:
+ "@react-native-async-storage/async-storage" "^1.15.2"
+ expo-constants "^13.0.2"
+ expo-device "~4.1.1"
+ js-sha256 "^0.9.0"
+ react-native-get-random-values "^1.6.0"
+ statsig-react "^1.21.1"
+ uuid "^8.3.2"
+
+statsig-react@^1.21.1:
+ version "1.35.0"
+ resolved "https://registry.yarnpkg.com/statsig-react/-/statsig-react-1.35.0.tgz#ad5730b83f564c640623e954fcbcbe848e939946"
+ integrity sha512-KLN7dhq6FvAl25Z0QN6IINFBgM3yn0GMafoE698tYZqRf911xvevFaR7qUXiTz3W9vmFYrmFRouqVMfCv7DW0A==
+ dependencies:
+ statsig-js "4.45.1"
+
+statsig-react@^1.36.0:
+ version "1.36.0"
+ resolved "https://registry.yarnpkg.com/statsig-react/-/statsig-react-1.36.0.tgz#c2171268a6c76eee534849ec9556b836baba04b6"
+ integrity sha512-QcTHla3ypfn2RvrnHGNlqWbiC2W/ZjcMM5LT6ExNV4skH7Xhspto3dMS3JVzBhOb74OEDZK4DbxQj9Wdz6XW0w==
+ dependencies:
+ statsig-js "4.49.0"
+
statuses@2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63"
@@ -20818,6 +21095,11 @@ typescript@^5.3.3:
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.3.3.tgz#b3ce6ba258e72e6305ba66f5c9b452aaee3ffe37"
integrity sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==
+ua-parser-js@^0.7.19:
+ version "0.7.37"
+ resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.37.tgz#e464e66dac2d33a7a1251d7d7a99d6157ec27832"
+ integrity sha512-xV8kqRKM+jhMvcHWUKthV9fNebIzrNy//2O9ZwWcfiBFR5f25XVZPLlEajk/sf3Ra15V92isyQqnIEXRDaZWEA==
+
ua-parser-js@^0.7.33:
version "0.7.35"
resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.35.tgz#8bda4827be4f0b1dda91699a29499575a1f1d307"
@@ -21106,7 +21388,7 @@ utrie@^1.0.2:
dependencies:
base64-arraybuffer "^1.0.2"
-uuid@^3.0.1:
+uuid@^3.0.1, uuid@^3.3.2:
version "3.4.0"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
@@ -21858,6 +22140,14 @@ xml-name-validator@^4.0.0:
resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835"
integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==
+xml2js@0.4.23:
+ version "0.4.23"
+ resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66"
+ integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==
+ dependencies:
+ sax ">=0.6.0"
+ xmlbuilder "~11.0.0"
+
xml2js@0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.6.0.tgz#07afc447a97d2bd6507a1f76eeadddb09f7a8282"