diff --git a/docs/internationalization.md b/docs/internationalization.md index 3f5b414287..3bfbdecfd4 100644 --- a/docs/internationalization.md +++ b/docs/internationalization.md @@ -10,6 +10,7 @@ When adding a new string, do it as follows: ```jsx // Before import { Text } from "react-native"; + Hello World ``` @@ -17,10 +18,94 @@ import { Text } from "react-native"; // After import { Text } from "react-native"; import { Trans } from "@lingui/macro"; + Hello World ``` +The `` macro will extract the string and add it to the catalog. It is not really a component, but a macro. Further reading [here](https://lingui.dev/ref/macro.html) + +However sometimes you will run into this case: +```jsx +// Before +import { Text } from "react-native"; + +const text = "Hello World"; + {text} +``` +In this case, you cannot use the `useLingui()` hook: +```jsx +import { msg } from "@lingui/macro"; +import { useLingui } from "@lingui/react"; + +const { _ } = useLingui(); +return {text} +``` + +If you want to do this outside of a React component, you can use the `t` macro instead (note: this won't react to changes if the locale is switched dynamically within the app): +```jsx +import { t } from "@lingui/macro"; + +const text = t`Hello World`; +``` + We can then run `yarn intl:extract` to update the catalog in `src/locale/locales/{locale}/messages.po`. This will add the new string to the catalog. We can then run `yarn intl:compile` to update the translation files in `src/locale/locales/{locale}/messages.js`. This will add the new string to the translation files. The configuration for translations is defined in `lingui.config.js` +So the workflow is as follows: +1. Wrap messages in Trans macro +2. Run `yarn intl:extract` command to generate message catalogs +3. Translate message catalogs (send them to translators usually) +4. Run `yarn intl:compile` to create runtime catalogs +5. Load runtime catalog +6. Enjoy translated app! + +### Common pitfalls +```jsx +import { msg } from "@lingui/macro"; +import { i18n } from "@lingui/core"; + +const welcomeMessage = msg`Welcome!`; + +// ❌ Bad! This code won't work +export function Welcome() { + const buggyWelcome = useMemo(() => { + return i18n._(welcomeMessage); + }, []); + + return
{buggyWelcome}
; +} + +// ❌ Bad! This code won't work either because the reference to i18n does not change +export function Welcome() { + const { i18n } = useLingui(); + + const buggyWelcome = useMemo(() => { + return i18n._(welcomeMessage); + }, [i18n]); + + return
{buggyWelcome}
; +} + +// ✅ Good! `useMemo` has i18n context in the dependency +export function Welcome() { + const linguiCtx = useLingui(); + + const welcome = useMemo(() => { + return linguiCtx.i18n._(welcomeMessage); + }, [linguiCtx]); + + return
{welcome}
; +} + +// 🤩 Better! `useMemo` consumes the `_` function from the Lingui context +export function Welcome() { + const { _ } = useLingui(); + + const welcome = useMemo(() => { + return _(welcomeMessage); + }, [_]); + + return
{welcome}
; +} +``` \ No newline at end of file diff --git a/src/locale/locales/cs/messages.js b/src/locale/locales/cs/messages.js index 3975ff70fd..bacef00281 100644 --- a/src/locale/locales/cs/messages.js +++ b/src/locale/locales/cs/messages.js @@ -1 +1 @@ -/*eslint-disable*/module.exports={messages:JSON.parse("{}")}; \ No newline at end of file +/*eslint-disable*/module.exports={messages:JSON.parse("{\"PBodTo\":\"- end of feed -\",\"m16xKo\":\"Add\",\"AoXl11\":\"Add details to report\",\"HZFm5R\":\"and\",\"iH8pgl\":\"Back\",\"7A9u1j\":\"Bluesky\",\"ZHmKSm\":\"Bluesky is flexible.\",\"odLrdl\":\"Bluesky is open.\",\"/LsWK4\":\"Bluesky is public.\",\"klVoaP\":\"Bluesky.Social\",\"dEgA5A\":\"Cancel\",\"/L45sc\":\"Choose the algorithms that power your experience with custom feeds.\",\"m8j6up\":\"Content Filtering\",\"/PlAsF\":\"Content Languages\",\"6V3Ea3\":\"Copied\",\"Nu4oKW\":\"Description\",\"0gS7M5\":\"Display Name\",\"DPfwMq\":\"Done\",\"XQFMOm\":\"Edit image\",\"bRZ5XW\":\"Edit my profile\",\"Qzj1WT\":\"Finding similar accounts...\",\"5bDfuq\":\"Forgot\",\"6iVTdm\":\"Join the waitlist.\",\"kq2ga7\":\"Leave them all unchecked to see any language.\",\"FuZWua\":\"List Avatar\",\"jl0AFf\":\"Local dev server\",\"8yolS6\":\"Never lose access to your followers and data.\",\"n+HLOP\":\"Other service\",\"y28hnO\":\"Post\",\"AzCucI\":\"Post Languages\",\"lQWbAr\":[\"Report \",[\"collectionName\"]],\"tfDRzk\":\"Save\",\"IUwGEM\":\"Save Changes\",\"4cijjm\":\"Send Report\",\"n1ekoW\":\"Sign In\",\"6Uau97\":\"Skip\",\"aKEHLj\":\"Staging\",\"EDl9kS\":\"Subscribe\",\"WKrUVy\":\"This post has been deleted.\",\"pi8x/S\":\"Translate\",\"Sxm8rQ\":\"Users\",\"3qn29J\":\"Which languages are used in this post?\",\"uawiGa\":\"Which languages would you like to see in your algorithmic feeds?\",\"tCLJ9E\":\"You have no lists.\",\"Oqt/PG\":\"Your posts, likes, and blocks are public. Mutes are private.\"}")}; \ No newline at end of file diff --git a/src/locale/locales/cs/messages.po b/src/locale/locales/cs/messages.po index a2e10bc14e..3ac4068253 100644 --- a/src/locale/locales/cs/messages.po +++ b/src/locale/locales/cs/messages.po @@ -6,3 +6,200 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Generator: @lingui/cli\n" "Language: cs\n" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"Plural-Forms: \n" + +#: src/view/screens/Profile.tsx:210 +msgid "- end of feed -" +msgstr "" + +#: src/view/screens/ProfileList.tsx:706 +msgid "Add" +msgstr "" + +#: src/view/com/modals/report/Modal.tsx:191 +msgid "Add details to report" +msgstr "" + +#: src/view/com/notifications/FeedItem.tsx:237 +msgid "and" +msgstr "" + +#: src/view/com/modals/report/InputIssueDetails.tsx:43 +msgid "Back" +msgstr "" + +#: src/view/com/auth/onboarding/WelcomeMobile.tsx:52 +#: src/view/com/auth/SplashScreen.tsx:24 +msgid "Bluesky" +msgstr "" + +#: src/view/com/auth/onboarding/WelcomeMobile.tsx:84 +msgid "Bluesky is flexible." +msgstr "" + +#: src/view/com/auth/onboarding/WelcomeMobile.tsx:73 +msgid "Bluesky is open." +msgstr "" + +#: src/view/com/auth/onboarding/WelcomeMobile.tsx:60 +msgid "Bluesky is public." +msgstr "" + +#: src/view/com/modals/ServerInput.tsx:76 +msgid "Bluesky.Social" +msgstr "" + +#: src/view/com/composer/Composer.tsx:272 +#: src/view/com/modals/CreateOrEditList.tsx:259 +#: src/view/com/modals/EditProfile.tsx:248 +#: src/view/com/modals/Repost.tsx:71 +#: src/view/com/search/HeaderWithInput.tsx:125 +msgid "Cancel" +msgstr "" + +#: src/view/com/auth/onboarding/WelcomeMobile.tsx:87 +msgid "Choose the algorithms that power your experience with custom feeds." +msgstr "" + +#: src/view/com/modals/ContentFilteringSettings.tsx:40 +msgid "Content Filtering" +msgstr "" + +#: src/view/com/modals/lang-settings/ContentLanguagesSettings.tsx:68 +msgid "Content Languages" +msgstr "" + +#: src/view/com/modals/AddAppPasswords.tsx:172 +#: src/view/com/modals/InviteCodes.tsx:129 +msgid "Copied" +msgstr "" + +#: src/view/com/modals/EditProfile.tsx:197 +msgid "Description" +msgstr "" + +#: src/view/com/modals/EditProfile.tsx:179 +msgid "Display Name" +msgstr "" + +#: src/view/com/modals/ContentFilteringSettings.tsx:83 +#: src/view/com/modals/SelfLabel.tsx:154 +#: src/view/screens/PreferencesHomeFeed.tsx:211 +#: src/view/screens/PreferencesThreads.tsx:125 +msgid "Done" +msgstr "" + +#: src/view/com/modals/EditImage.tsx:205 +msgid "Edit image" +msgstr "" + +#: src/view/com/modals/EditProfile.tsx:156 +msgid "Edit my profile" +msgstr "" + +#: src/view/com/auth/onboarding/RecommendedFollowsItem.tsx:119 +msgid "Finding similar accounts..." +msgstr "" + +#: src/view/com/auth/login/Login.tsx:474 +msgid "Forgot" +msgstr "" + +#: src/view/com/auth/create/Step2.tsx:69 +msgid "Join the waitlist." +msgstr "" + +#: src/view/com/modals/lang-settings/ContentLanguagesSettings.tsx:76 +msgid "Leave them all unchecked to see any language." +msgstr "" + +#: src/view/com/modals/CreateOrEditList.tsx:173 +msgid "List Avatar" +msgstr "" + +#: src/view/com/modals/ServerInput.tsx:48 +msgid "Local dev server" +msgstr "" + +#: src/view/com/auth/onboarding/WelcomeMobile.tsx:76 +msgid "Never lose access to your followers and data." +msgstr "" + +#: src/view/com/modals/ServerInput.tsx:86 +msgid "Other service" +msgstr "" + +#: src/view/com/composer/Composer.tsx:315 +msgid "Post" +msgstr "" + +#: src/view/com/modals/lang-settings/PostLanguagesSettings.tsx:69 +msgid "Post Languages" +msgstr "" + +#: src/view/com/modals/report/Modal.tsx:163 +msgid "Report {collectionName}" +msgstr "" + +#: src/view/com/modals/BirthDateSettings.tsx:91 +#: src/view/com/modals/CreateOrEditList.tsx:244 +msgid "Save" +msgstr "" + +#: src/view/com/modals/EditProfile.tsx:231 +msgid "Save Changes" +msgstr "" + +#: src/view/com/modals/report/SendReportButton.tsx:43 +msgid "Send Report" +msgstr "" + +#: src/view/com/auth/SplashScreen.tsx:50 +#: src/view/com/auth/SplashScreen.web.tsx:59 +msgid "Sign In" +msgstr "" + +#: src/view/com/auth/onboarding/WelcomeMobile.tsx:37 +msgid "Skip" +msgstr "" + +#: src/view/com/modals/ServerInput.tsx:60 +msgid "Staging" +msgstr "" + +#: src/view/screens/ProfileList.tsx:530 +msgid "Subscribe" +msgstr "" + +#: src/view/com/post-thread/PostThreadItem.tsx:176 +msgid "This post has been deleted." +msgstr "" + +#: src/view/com/post-thread/PostThreadItem.tsx:654 +msgid "Translate" +msgstr "" + +#: src/view/screens/ProfileList.tsx:690 +msgid "Users" +msgstr "" + +#: src/view/com/modals/lang-settings/PostLanguagesSettings.tsx:72 +msgid "Which languages are used in this post?" +msgstr "" + +#: src/view/com/modals/lang-settings/ContentLanguagesSettings.tsx:71 +msgid "Which languages would you like to see in your algorithmic feeds?" +msgstr "" + +#: src/view/com/lists/ListsList.tsx:112 +msgid "You have no lists." +msgstr "" + +#: src/view/com/auth/onboarding/WelcomeMobile.tsx:63 +msgid "Your posts, likes, and blocks are public. Mutes are private." +msgstr "" diff --git a/src/locale/locales/en/messages.js b/src/locale/locales/en/messages.js index 3975ff70fd..bacef00281 100644 --- a/src/locale/locales/en/messages.js +++ b/src/locale/locales/en/messages.js @@ -1 +1 @@ -/*eslint-disable*/module.exports={messages:JSON.parse("{}")}; \ No newline at end of file +/*eslint-disable*/module.exports={messages:JSON.parse("{\"PBodTo\":\"- end of feed -\",\"m16xKo\":\"Add\",\"AoXl11\":\"Add details to report\",\"HZFm5R\":\"and\",\"iH8pgl\":\"Back\",\"7A9u1j\":\"Bluesky\",\"ZHmKSm\":\"Bluesky is flexible.\",\"odLrdl\":\"Bluesky is open.\",\"/LsWK4\":\"Bluesky is public.\",\"klVoaP\":\"Bluesky.Social\",\"dEgA5A\":\"Cancel\",\"/L45sc\":\"Choose the algorithms that power your experience with custom feeds.\",\"m8j6up\":\"Content Filtering\",\"/PlAsF\":\"Content Languages\",\"6V3Ea3\":\"Copied\",\"Nu4oKW\":\"Description\",\"0gS7M5\":\"Display Name\",\"DPfwMq\":\"Done\",\"XQFMOm\":\"Edit image\",\"bRZ5XW\":\"Edit my profile\",\"Qzj1WT\":\"Finding similar accounts...\",\"5bDfuq\":\"Forgot\",\"6iVTdm\":\"Join the waitlist.\",\"kq2ga7\":\"Leave them all unchecked to see any language.\",\"FuZWua\":\"List Avatar\",\"jl0AFf\":\"Local dev server\",\"8yolS6\":\"Never lose access to your followers and data.\",\"n+HLOP\":\"Other service\",\"y28hnO\":\"Post\",\"AzCucI\":\"Post Languages\",\"lQWbAr\":[\"Report \",[\"collectionName\"]],\"tfDRzk\":\"Save\",\"IUwGEM\":\"Save Changes\",\"4cijjm\":\"Send Report\",\"n1ekoW\":\"Sign In\",\"6Uau97\":\"Skip\",\"aKEHLj\":\"Staging\",\"EDl9kS\":\"Subscribe\",\"WKrUVy\":\"This post has been deleted.\",\"pi8x/S\":\"Translate\",\"Sxm8rQ\":\"Users\",\"3qn29J\":\"Which languages are used in this post?\",\"uawiGa\":\"Which languages would you like to see in your algorithmic feeds?\",\"tCLJ9E\":\"You have no lists.\",\"Oqt/PG\":\"Your posts, likes, and blocks are public. Mutes are private.\"}")}; \ No newline at end of file diff --git a/src/locale/locales/en/messages.po b/src/locale/locales/en/messages.po index 7b2a4a23d3..f52c0f0b3c 100644 --- a/src/locale/locales/en/messages.po +++ b/src/locale/locales/en/messages.po @@ -6,3 +6,200 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Generator: @lingui/cli\n" "Language: en\n" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"Plural-Forms: \n" + +#: src/view/screens/Profile.tsx:210 +msgid "- end of feed -" +msgstr "" + +#: src/view/screens/ProfileList.tsx:706 +msgid "Add" +msgstr "" + +#: src/view/com/modals/report/Modal.tsx:191 +msgid "Add details to report" +msgstr "" + +#: src/view/com/notifications/FeedItem.tsx:237 +msgid "and" +msgstr "" + +#: src/view/com/modals/report/InputIssueDetails.tsx:43 +msgid "Back" +msgstr "" + +#: src/view/com/auth/onboarding/WelcomeMobile.tsx:52 +#: src/view/com/auth/SplashScreen.tsx:24 +msgid "Bluesky" +msgstr "" + +#: src/view/com/auth/onboarding/WelcomeMobile.tsx:84 +msgid "Bluesky is flexible." +msgstr "" + +#: src/view/com/auth/onboarding/WelcomeMobile.tsx:73 +msgid "Bluesky is open." +msgstr "" + +#: src/view/com/auth/onboarding/WelcomeMobile.tsx:60 +msgid "Bluesky is public." +msgstr "" + +#: src/view/com/modals/ServerInput.tsx:76 +msgid "Bluesky.Social" +msgstr "" + +#: src/view/com/composer/Composer.tsx:272 +#: src/view/com/modals/CreateOrEditList.tsx:259 +#: src/view/com/modals/EditProfile.tsx:248 +#: src/view/com/modals/Repost.tsx:71 +#: src/view/com/search/HeaderWithInput.tsx:125 +msgid "Cancel" +msgstr "" + +#: src/view/com/auth/onboarding/WelcomeMobile.tsx:87 +msgid "Choose the algorithms that power your experience with custom feeds." +msgstr "" + +#: src/view/com/modals/ContentFilteringSettings.tsx:40 +msgid "Content Filtering" +msgstr "" + +#: src/view/com/modals/lang-settings/ContentLanguagesSettings.tsx:68 +msgid "Content Languages" +msgstr "" + +#: src/view/com/modals/AddAppPasswords.tsx:172 +#: src/view/com/modals/InviteCodes.tsx:129 +msgid "Copied" +msgstr "" + +#: src/view/com/modals/EditProfile.tsx:197 +msgid "Description" +msgstr "" + +#: src/view/com/modals/EditProfile.tsx:179 +msgid "Display Name" +msgstr "" + +#: src/view/com/modals/ContentFilteringSettings.tsx:83 +#: src/view/com/modals/SelfLabel.tsx:154 +#: src/view/screens/PreferencesHomeFeed.tsx:211 +#: src/view/screens/PreferencesThreads.tsx:125 +msgid "Done" +msgstr "" + +#: src/view/com/modals/EditImage.tsx:205 +msgid "Edit image" +msgstr "" + +#: src/view/com/modals/EditProfile.tsx:156 +msgid "Edit my profile" +msgstr "" + +#: src/view/com/auth/onboarding/RecommendedFollowsItem.tsx:119 +msgid "Finding similar accounts..." +msgstr "" + +#: src/view/com/auth/login/Login.tsx:474 +msgid "Forgot" +msgstr "" + +#: src/view/com/auth/create/Step2.tsx:69 +msgid "Join the waitlist." +msgstr "" + +#: src/view/com/modals/lang-settings/ContentLanguagesSettings.tsx:76 +msgid "Leave them all unchecked to see any language." +msgstr "" + +#: src/view/com/modals/CreateOrEditList.tsx:173 +msgid "List Avatar" +msgstr "" + +#: src/view/com/modals/ServerInput.tsx:48 +msgid "Local dev server" +msgstr "" + +#: src/view/com/auth/onboarding/WelcomeMobile.tsx:76 +msgid "Never lose access to your followers and data." +msgstr "" + +#: src/view/com/modals/ServerInput.tsx:86 +msgid "Other service" +msgstr "" + +#: src/view/com/composer/Composer.tsx:315 +msgid "Post" +msgstr "" + +#: src/view/com/modals/lang-settings/PostLanguagesSettings.tsx:69 +msgid "Post Languages" +msgstr "" + +#: src/view/com/modals/report/Modal.tsx:163 +msgid "Report {collectionName}" +msgstr "" + +#: src/view/com/modals/BirthDateSettings.tsx:91 +#: src/view/com/modals/CreateOrEditList.tsx:244 +msgid "Save" +msgstr "" + +#: src/view/com/modals/EditProfile.tsx:231 +msgid "Save Changes" +msgstr "" + +#: src/view/com/modals/report/SendReportButton.tsx:43 +msgid "Send Report" +msgstr "" + +#: src/view/com/auth/SplashScreen.tsx:50 +#: src/view/com/auth/SplashScreen.web.tsx:59 +msgid "Sign In" +msgstr "" + +#: src/view/com/auth/onboarding/WelcomeMobile.tsx:37 +msgid "Skip" +msgstr "" + +#: src/view/com/modals/ServerInput.tsx:60 +msgid "Staging" +msgstr "" + +#: src/view/screens/ProfileList.tsx:530 +msgid "Subscribe" +msgstr "" + +#: src/view/com/post-thread/PostThreadItem.tsx:176 +msgid "This post has been deleted." +msgstr "" + +#: src/view/com/post-thread/PostThreadItem.tsx:654 +msgid "Translate" +msgstr "" + +#: src/view/screens/ProfileList.tsx:690 +msgid "Users" +msgstr "" + +#: src/view/com/modals/lang-settings/PostLanguagesSettings.tsx:72 +msgid "Which languages are used in this post?" +msgstr "" + +#: src/view/com/modals/lang-settings/ContentLanguagesSettings.tsx:71 +msgid "Which languages would you like to see in your algorithmic feeds?" +msgstr "" + +#: src/view/com/lists/ListsList.tsx:112 +msgid "You have no lists." +msgstr "" + +#: src/view/com/auth/onboarding/WelcomeMobile.tsx:63 +msgid "Your posts, likes, and blocks are public. Mutes are private." +msgstr "" diff --git a/src/locale/locales/fr/messages.js b/src/locale/locales/fr/messages.js index 3975ff70fd..bacef00281 100644 --- a/src/locale/locales/fr/messages.js +++ b/src/locale/locales/fr/messages.js @@ -1 +1 @@ -/*eslint-disable*/module.exports={messages:JSON.parse("{}")}; \ No newline at end of file +/*eslint-disable*/module.exports={messages:JSON.parse("{\"PBodTo\":\"- end of feed -\",\"m16xKo\":\"Add\",\"AoXl11\":\"Add details to report\",\"HZFm5R\":\"and\",\"iH8pgl\":\"Back\",\"7A9u1j\":\"Bluesky\",\"ZHmKSm\":\"Bluesky is flexible.\",\"odLrdl\":\"Bluesky is open.\",\"/LsWK4\":\"Bluesky is public.\",\"klVoaP\":\"Bluesky.Social\",\"dEgA5A\":\"Cancel\",\"/L45sc\":\"Choose the algorithms that power your experience with custom feeds.\",\"m8j6up\":\"Content Filtering\",\"/PlAsF\":\"Content Languages\",\"6V3Ea3\":\"Copied\",\"Nu4oKW\":\"Description\",\"0gS7M5\":\"Display Name\",\"DPfwMq\":\"Done\",\"XQFMOm\":\"Edit image\",\"bRZ5XW\":\"Edit my profile\",\"Qzj1WT\":\"Finding similar accounts...\",\"5bDfuq\":\"Forgot\",\"6iVTdm\":\"Join the waitlist.\",\"kq2ga7\":\"Leave them all unchecked to see any language.\",\"FuZWua\":\"List Avatar\",\"jl0AFf\":\"Local dev server\",\"8yolS6\":\"Never lose access to your followers and data.\",\"n+HLOP\":\"Other service\",\"y28hnO\":\"Post\",\"AzCucI\":\"Post Languages\",\"lQWbAr\":[\"Report \",[\"collectionName\"]],\"tfDRzk\":\"Save\",\"IUwGEM\":\"Save Changes\",\"4cijjm\":\"Send Report\",\"n1ekoW\":\"Sign In\",\"6Uau97\":\"Skip\",\"aKEHLj\":\"Staging\",\"EDl9kS\":\"Subscribe\",\"WKrUVy\":\"This post has been deleted.\",\"pi8x/S\":\"Translate\",\"Sxm8rQ\":\"Users\",\"3qn29J\":\"Which languages are used in this post?\",\"uawiGa\":\"Which languages would you like to see in your algorithmic feeds?\",\"tCLJ9E\":\"You have no lists.\",\"Oqt/PG\":\"Your posts, likes, and blocks are public. Mutes are private.\"}")}; \ No newline at end of file diff --git a/src/locale/locales/fr/messages.po b/src/locale/locales/fr/messages.po index a78a393031..60dcaaef60 100644 --- a/src/locale/locales/fr/messages.po +++ b/src/locale/locales/fr/messages.po @@ -6,3 +6,200 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Generator: @lingui/cli\n" "Language: fr\n" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"Plural-Forms: \n" + +#: src/view/screens/Profile.tsx:210 +msgid "- end of feed -" +msgstr "" + +#: src/view/screens/ProfileList.tsx:706 +msgid "Add" +msgstr "" + +#: src/view/com/modals/report/Modal.tsx:191 +msgid "Add details to report" +msgstr "" + +#: src/view/com/notifications/FeedItem.tsx:237 +msgid "and" +msgstr "" + +#: src/view/com/modals/report/InputIssueDetails.tsx:43 +msgid "Back" +msgstr "" + +#: src/view/com/auth/onboarding/WelcomeMobile.tsx:52 +#: src/view/com/auth/SplashScreen.tsx:24 +msgid "Bluesky" +msgstr "" + +#: src/view/com/auth/onboarding/WelcomeMobile.tsx:84 +msgid "Bluesky is flexible." +msgstr "" + +#: src/view/com/auth/onboarding/WelcomeMobile.tsx:73 +msgid "Bluesky is open." +msgstr "" + +#: src/view/com/auth/onboarding/WelcomeMobile.tsx:60 +msgid "Bluesky is public." +msgstr "" + +#: src/view/com/modals/ServerInput.tsx:76 +msgid "Bluesky.Social" +msgstr "" + +#: src/view/com/composer/Composer.tsx:272 +#: src/view/com/modals/CreateOrEditList.tsx:259 +#: src/view/com/modals/EditProfile.tsx:248 +#: src/view/com/modals/Repost.tsx:71 +#: src/view/com/search/HeaderWithInput.tsx:125 +msgid "Cancel" +msgstr "" + +#: src/view/com/auth/onboarding/WelcomeMobile.tsx:87 +msgid "Choose the algorithms that power your experience with custom feeds." +msgstr "" + +#: src/view/com/modals/ContentFilteringSettings.tsx:40 +msgid "Content Filtering" +msgstr "" + +#: src/view/com/modals/lang-settings/ContentLanguagesSettings.tsx:68 +msgid "Content Languages" +msgstr "" + +#: src/view/com/modals/AddAppPasswords.tsx:172 +#: src/view/com/modals/InviteCodes.tsx:129 +msgid "Copied" +msgstr "" + +#: src/view/com/modals/EditProfile.tsx:197 +msgid "Description" +msgstr "" + +#: src/view/com/modals/EditProfile.tsx:179 +msgid "Display Name" +msgstr "" + +#: src/view/com/modals/ContentFilteringSettings.tsx:83 +#: src/view/com/modals/SelfLabel.tsx:154 +#: src/view/screens/PreferencesHomeFeed.tsx:211 +#: src/view/screens/PreferencesThreads.tsx:125 +msgid "Done" +msgstr "" + +#: src/view/com/modals/EditImage.tsx:205 +msgid "Edit image" +msgstr "" + +#: src/view/com/modals/EditProfile.tsx:156 +msgid "Edit my profile" +msgstr "" + +#: src/view/com/auth/onboarding/RecommendedFollowsItem.tsx:119 +msgid "Finding similar accounts..." +msgstr "" + +#: src/view/com/auth/login/Login.tsx:474 +msgid "Forgot" +msgstr "" + +#: src/view/com/auth/create/Step2.tsx:69 +msgid "Join the waitlist." +msgstr "" + +#: src/view/com/modals/lang-settings/ContentLanguagesSettings.tsx:76 +msgid "Leave them all unchecked to see any language." +msgstr "" + +#: src/view/com/modals/CreateOrEditList.tsx:173 +msgid "List Avatar" +msgstr "" + +#: src/view/com/modals/ServerInput.tsx:48 +msgid "Local dev server" +msgstr "" + +#: src/view/com/auth/onboarding/WelcomeMobile.tsx:76 +msgid "Never lose access to your followers and data." +msgstr "" + +#: src/view/com/modals/ServerInput.tsx:86 +msgid "Other service" +msgstr "" + +#: src/view/com/composer/Composer.tsx:315 +msgid "Post" +msgstr "" + +#: src/view/com/modals/lang-settings/PostLanguagesSettings.tsx:69 +msgid "Post Languages" +msgstr "" + +#: src/view/com/modals/report/Modal.tsx:163 +msgid "Report {collectionName}" +msgstr "" + +#: src/view/com/modals/BirthDateSettings.tsx:91 +#: src/view/com/modals/CreateOrEditList.tsx:244 +msgid "Save" +msgstr "" + +#: src/view/com/modals/EditProfile.tsx:231 +msgid "Save Changes" +msgstr "" + +#: src/view/com/modals/report/SendReportButton.tsx:43 +msgid "Send Report" +msgstr "" + +#: src/view/com/auth/SplashScreen.tsx:50 +#: src/view/com/auth/SplashScreen.web.tsx:59 +msgid "Sign In" +msgstr "" + +#: src/view/com/auth/onboarding/WelcomeMobile.tsx:37 +msgid "Skip" +msgstr "" + +#: src/view/com/modals/ServerInput.tsx:60 +msgid "Staging" +msgstr "" + +#: src/view/screens/ProfileList.tsx:530 +msgid "Subscribe" +msgstr "" + +#: src/view/com/post-thread/PostThreadItem.tsx:176 +msgid "This post has been deleted." +msgstr "" + +#: src/view/com/post-thread/PostThreadItem.tsx:654 +msgid "Translate" +msgstr "" + +#: src/view/screens/ProfileList.tsx:690 +msgid "Users" +msgstr "" + +#: src/view/com/modals/lang-settings/PostLanguagesSettings.tsx:72 +msgid "Which languages are used in this post?" +msgstr "" + +#: src/view/com/modals/lang-settings/ContentLanguagesSettings.tsx:71 +msgid "Which languages would you like to see in your algorithmic feeds?" +msgstr "" + +#: src/view/com/lists/ListsList.tsx:112 +msgid "You have no lists." +msgstr "" + +#: src/view/com/auth/onboarding/WelcomeMobile.tsx:63 +msgid "Your posts, likes, and blocks are public. Mutes are private." +msgstr ""