mirror of
https://github.com/cheeaun/phanpy.git
synced 2025-02-23 16:28:48 +01:00
commit
24f03f5130
26 changed files with 1126 additions and 1054 deletions
6
.github/workflows/main2prod.yml
vendored
6
.github/workflows/main2prod.yml
vendored
|
@ -1,9 +1,13 @@
|
|||
name: Pull Request to `main` from `production`
|
||||
name: Pull Request into `production` from `main`
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
pull_request:
|
||||
types: [closed]
|
||||
branches:
|
||||
- main
|
||||
|
||||
jobs:
|
||||
auto-pull-request:
|
||||
|
|
11
README.md
11
README.md
|
@ -97,7 +97,7 @@ Everything is designed and engineered following my taste and vision. This is a p
|
|||
|
||||
## Development
|
||||
|
||||
Prerequisites: Node.js 18+
|
||||
Prerequisites: Node.js 20+
|
||||
|
||||
- `npm install` - Install dependencies
|
||||
- `npm run dev` - Start development server and `messages:extract` (`clean` + ``watch`) in parallel
|
||||
|
@ -233,6 +233,11 @@ Available variables:
|
|||
- `PHANPY_DEFAULT_LANG` (optional):
|
||||
- Default language is English (`en`) if not specified.
|
||||
- Fallback language after multiple detection methods (`lang` query parameter, `lang` key in `localStorage` and `navigator.language`)
|
||||
- `PHANPY_REFERRER_POLICY` (optional, default: `origin`):
|
||||
- Referrer policy for the site. See [MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy).
|
||||
- This is applied with the `<meta>` tag on the client-side.
|
||||
- The policy can also be set with `Referrer-Policy` header configured on the server-side (not this variable).
|
||||
- Note that since Phanpy uses hash-based URLs, the referrer does not include the hash part.
|
||||
- `PHANPY_LINGVA_INSTANCES` (optional, space-separated list, default: `lingva.phanpy.social [...hard-coded list of fallback instances]`):
|
||||
- Specify a space-separated list of instances. First will be used as default before falling back to the subsequent instances. If there's only 1 instance, means no fallback.
|
||||
- May specify a self-hosted Lingva instance, powered by either [lingva-translate](https://github.com/thedaviddelta/lingva-translate) or [lingva-api](https://github.com/cheeaun/lingva-api)
|
||||
|
@ -313,6 +318,7 @@ Costs involved in running and developing this web app:
|
|||
- <img src="https://crowdin-static.downloads.crowdin.com/avatar/12618120/medium/ccb11bd042bbf4c7189033f7af2dbd32_default.png" alt="" width="16" height="16" /> drydenwu (Chinese Traditional)
|
||||
- <img src="https://crowdin-static.downloads.crowdin.com/avatar/13557465/medium/8feebf3677fa80c01e8c54c4fbe097e0_default.png" alt="" width="16" height="16" /> elissarc (French)
|
||||
- <img src="https://crowdin-static.downloads.crowdin.com/avatar/16528627/medium/9036f6eced0257f4e1ea4c5bd499de2d_default.png" alt="" width="16" height="16" /> ElPamplina (Spanish)
|
||||
- <img src="https://crowdin-static.downloads.crowdin.com/avatar/15592209/medium/28f10212dce24e74c25e27ea6d0e9126.png" alt="" width="16" height="16" /> filipesmedeiros (Portuguese)
|
||||
- <img src="https://crowdin-static.downloads.crowdin.com/avatar/14277386/medium/29b30d2c73a214000e3941c9978f49e4_default.png" alt="" width="16" height="16" /> Fitik (Esperanto, Hebrew)
|
||||
- <img src="https://crowdin-static.downloads.crowdin.com/avatar/14444512/medium/99d0e7a3076deccbdfe0aa0b0612308c.jpeg" alt="" width="16" height="16" /> Freeesia (Japanese)
|
||||
- <img src="https://crowdin-static.downloads.crowdin.com/avatar/12617257/medium/7a0122f352a94d95be10780bb83f63ef.jpg" alt="" width="16" height="16" /> ghose (Galician)
|
||||
|
@ -328,6 +334,7 @@ Costs involved in running and developing this web app:
|
|||
- <img src="https://crowdin-static.downloads.crowdin.com/avatar/16640089/medium/4b7d8d275d7a7bff564adde51e09b473_default.png" alt="" width="16" height="16" /> LukeHong (Chinese Traditional)
|
||||
- <img src="https://crowdin-static.downloads.crowdin.com/avatar/12822971/medium/4ecbe6d1248536084902925beb0b63e4.png" alt="" width="16" height="16" /> Mannivu (Italian)
|
||||
- <img src="https://crowdin-static.downloads.crowdin.com/avatar/16537713/medium/825f0bf1a14fc545a76891a52839d86e_default.png" alt="" width="16" height="16" /> marcin.kozinski (Polish)
|
||||
- <img src="https://crowdin-static.downloads.crowdin.com/avatar/16812323/medium/72bffbdf4a331845f23400eafa0b3d48.jpeg" alt="" width="16" height="16" /> martinmodrak (Czech)
|
||||
- <img src="https://crowdin-static.downloads.crowdin.com/avatar/13521465/medium/76cb9aa6b753ce900a70478bff7fcea0.png" alt="" width="16" height="16" /> mkljczkk (Polish)
|
||||
- <img src="https://crowdin-static.downloads.crowdin.com/avatar/12882812/medium/77744d8db46e9a3e09030e1a02b7a572.jpeg" alt="" width="16" height="16" /> mojosoeun (Korean)
|
||||
- <img src="https://crowdin-static.downloads.crowdin.com/avatar/13613969/medium/c7834ddc0ada84a79671697a944bb274.png" alt="" width="16" height="16" /> moreal (Korean)
|
||||
|
@ -348,9 +355,11 @@ Costs involved in running and developing this web app:
|
|||
- <img src="https://crowdin-static.downloads.crowdin.com/avatar/14565190/medium/79100599131b7776e9803e4b696915a3_default.png" alt="" width="16" height="16" /> Sky_NiniKo (French)
|
||||
- <img src="https://crowdin-static.downloads.crowdin.com/avatar/13143526/medium/30871da23d51d7e41bb02f3c92d7f104.png" alt="" width="16" height="16" /> Steffo99 (Italian)
|
||||
- <img src="https://crowdin-static.downloads.crowdin.com/avatar/16532441/medium/1a47e8d80c95636e02d2260f6e233ca5.png" alt="" width="16" height="16" /> Su5hicz (Czech)
|
||||
- <img src="https://crowdin-static.downloads.crowdin.com/avatar/12579488/medium/699394d1acfe986a31532007534c7656.jpg" alt="" width="16" height="16" /> svetlemodry (Czech)
|
||||
- <img src="https://crowdin-static.downloads.crowdin.com/avatar/16530049/medium/683f3581620c6b4a5c753b416ed695a7.jpeg" alt="" width="16" height="16" /> tferrermo (Spanish)
|
||||
- <img src="https://crowdin-static.downloads.crowdin.com/avatar/15752199/medium/7e9efd828c4691368d063b19d19eb894.png" alt="" width="16" height="16" /> tkbremnes (Norwegian Bokmal)
|
||||
- <img src="https://crowdin-static.downloads.crowdin.com/avatar/16527851/medium/649e5a9a8a8cc61ced670d89e9cca082.png" alt="" width="16" height="16" /> tux93 (German)
|
||||
- <img src="https://crowdin-static.downloads.crowdin.com/avatar/16791511/medium/321c72613cd27efc3005e7c3bf383578.jpeg" alt="" width="16" height="16" /> uzaylul (Turkish)
|
||||
- <img src="https://crowdin-static.downloads.crowdin.com/avatar/14427566/medium/ab733b5044c21867fc5a9d1b22cd2c03.png" alt="" width="16" height="16" /> Vac31. (Lithuanian)
|
||||
- <img src="https://crowdin-static.downloads.crowdin.com/avatar/16026914/medium/e3ca187f354a298ef0c9d02a0ed17be7.jpg" alt="" width="16" height="16" /> valtlai (Finnish)
|
||||
- <img src="https://crowdin-static.downloads.crowdin.com/avatar/16608515/medium/85506c21dce8df07843ca11908ee3951.jpeg" alt="" width="16" height="16" /> vasiriri (Polish)
|
||||
|
|
607
package-lock.json
generated
607
package-lock.json
generated
File diff suppressed because it is too large
Load diff
26
package.json
26
package.json
|
@ -16,8 +16,8 @@
|
|||
"readme:i18n-volunteers": "node scripts/update-i18n-volunteers-readme.js"
|
||||
},
|
||||
"dependencies": {
|
||||
"@formatjs/intl-localematcher": "~0.5.9",
|
||||
"@formatjs/intl-segmenter": "~11.7.7",
|
||||
"@formatjs/intl-localematcher": "~0.5.10",
|
||||
"@formatjs/intl-segmenter": "~11.7.8",
|
||||
"@formkit/auto-animate": "~0.8.2",
|
||||
"@github/text-expander-element": "~2.8.0",
|
||||
"@iconify-icons/mingcute": "~1.2.9",
|
||||
|
@ -25,11 +25,11 @@
|
|||
"@lingui/detect-locale": "~5.1.2",
|
||||
"@lingui/macro": "~5.1.2",
|
||||
"@lingui/react": "~5.1.2",
|
||||
"@szhsin/react-menu": "~4.2.3",
|
||||
"@szhsin/react-menu": "~4.3.0",
|
||||
"chroma-js": "~3.1.2",
|
||||
"compare-versions": "~6.1.1",
|
||||
"fast-blurhash": "~1.1.4",
|
||||
"fast-equals": "~5.0.1",
|
||||
"fast-equals": "~5.2.2",
|
||||
"fuse.js": "~7.0.0",
|
||||
"html-prettify": "~1.0.7",
|
||||
"idb-keyval": "~6.2.1",
|
||||
|
@ -37,14 +37,14 @@
|
|||
"js-cookie": "~3.0.5",
|
||||
"just-debounce-it": "~3.2.0",
|
||||
"lz-string": "~1.5.0",
|
||||
"masto": "~6.10.1",
|
||||
"masto": "~6.10.3",
|
||||
"moize": "~6.1.6",
|
||||
"p-retry": "~6.2.1",
|
||||
"p-throttle": "~7.0.0",
|
||||
"preact": "~10.25.3",
|
||||
"preact": "~10.25.4",
|
||||
"punycode": "~2.3.1",
|
||||
"react-hotkeys-hook": "~4.6.1",
|
||||
"react-intersection-observer": "~9.14.0",
|
||||
"react-intersection-observer": "~9.15.1",
|
||||
"react-quick-pinch-zoom": "~5.1.0",
|
||||
"react-router-dom": "6.6.2",
|
||||
"string-length": "6.0.0",
|
||||
|
@ -58,18 +58,18 @@
|
|||
"valtio": "2.1.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@ianvs/prettier-plugin-sort-imports": "~4.4.0",
|
||||
"@ianvs/prettier-plugin-sort-imports": "~4.4.1",
|
||||
"@lingui/cli": "~5.1.2",
|
||||
"@lingui/vite-plugin": "~5.1.2",
|
||||
"@preact/preset-vite": "~2.9.3",
|
||||
"@preact/preset-vite": "~2.10.0",
|
||||
"babel-plugin-macros": "~3.1.0",
|
||||
"postcss": "~8.4.49",
|
||||
"postcss": "~8.5.1",
|
||||
"postcss-dark-theme-class": "~1.3.0",
|
||||
"postcss-preset-env": "~10.1.2",
|
||||
"postcss-preset-env": "~10.1.3",
|
||||
"prettier": "3.4.2",
|
||||
"sonda": "~0.6.2",
|
||||
"sonda": "~0.7.1",
|
||||
"twitter-text": "~3.1.0",
|
||||
"vite": "~6.0.5",
|
||||
"vite": "~6.0.11",
|
||||
"vite-plugin-generate-file": "~0.2.0",
|
||||
"vite-plugin-html-config": "~2.0.2",
|
||||
"vite-plugin-pwa": "~0.21.1",
|
||||
|
|
53
src/app.css
53
src/app.css
|
@ -459,7 +459,9 @@ a[href^='http'][rel*='nofollow']:visited:not(:has(div)) {
|
|||
transparent var(--curves-radius)
|
||||
);
|
||||
background-size: var(--curves-radius);
|
||||
background-position: top var(--backward), bottom var(--forward);
|
||||
background-position:
|
||||
top var(--backward),
|
||||
bottom var(--forward);
|
||||
}
|
||||
}
|
||||
.timeline.contextual > li {
|
||||
|
@ -519,7 +521,8 @@ a[href^='http'][rel*='nofollow']:visited:not(:has(div)) {
|
|||
}
|
||||
.timeline.contextual .replies[data-scroll-left]:not([data-scroll-left='0']) {
|
||||
background-color: var(--bg-color);
|
||||
box-shadow: inset 0 -3px var(--comment-line-color),
|
||||
box-shadow:
|
||||
inset 0 -3px var(--comment-line-color),
|
||||
inset 0 3px var(--comment-line-color);
|
||||
overscroll-behavior-x: contain;
|
||||
/* touch-action: pan-x; */
|
||||
|
@ -1655,7 +1658,8 @@ body:has(.media-modal-container + .status-deck) .media-post-link {
|
|||
background-color: var(--button-bg-blur-color);
|
||||
/* backdrop-filter: blur(16px); */
|
||||
z-index: 10;
|
||||
box-shadow: 0 3px 8px -1px var(--drop-shadow-color),
|
||||
box-shadow:
|
||||
0 3px 8px -1px var(--drop-shadow-color),
|
||||
0 10px 36px -4px var(--button-bg-blur-color);
|
||||
transition: all 0.3s ease-in-out;
|
||||
}
|
||||
|
@ -1815,7 +1819,8 @@ body:has(.media-modal-container + .status-deck) .media-post-link {
|
|||
box-shadow: none;
|
||||
}
|
||||
100% {
|
||||
box-shadow: 0 0 0 1px var(--outline-color),
|
||||
box-shadow:
|
||||
0 0 0 1px var(--outline-color),
|
||||
0 8px 16px -8px var(--drop-shadow-color);
|
||||
}
|
||||
}
|
||||
|
@ -1944,7 +1949,8 @@ body > .szh-menu-container {
|
|||
background-color: var(--bg-color);
|
||||
border: 1px solid var(--outline-stronger-color);
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 3px 8px var(--drop-shadow-color),
|
||||
box-shadow:
|
||||
0 3px 8px var(--drop-shadow-color),
|
||||
0 6px 32px -6px var(--drop-shadow-color);
|
||||
text-align: start;
|
||||
/* animation: appear-smooth 0.15s ease-in-out; */
|
||||
|
@ -1978,8 +1984,10 @@ body > .szh-menu-container {
|
|||
}
|
||||
.szh-menu.menu-emphasized {
|
||||
border-color: var(--outline-hover-color);
|
||||
box-shadow: 0 3px 16px -3px var(--drop-shadow-color),
|
||||
0 3px 32px var(--drop-shadow-color), 0 3px 48px var(--drop-shadow-color);
|
||||
box-shadow:
|
||||
0 3px 16px -3px var(--drop-shadow-color),
|
||||
0 3px 32px var(--drop-shadow-color),
|
||||
0 3px 48px var(--drop-shadow-color);
|
||||
background-color: var(--bg-color);
|
||||
animation-duration: 0.3s;
|
||||
animation-timing-function: ease-in-out;
|
||||
|
@ -1987,7 +1995,7 @@ body > .szh-menu-container {
|
|||
min-width: min(12em, 90vw);
|
||||
}
|
||||
.szh-menu .footer {
|
||||
margin: 8px 0 -8px;
|
||||
margin: 8px 0 -4px;
|
||||
padding: 8px 16px;
|
||||
color: var(--text-insignificant-color);
|
||||
font-size: 90%;
|
||||
|
@ -2262,7 +2270,9 @@ body > .szh-menu-container {
|
|||
background-color: var(--bg-blur-color);
|
||||
backdrop-filter: blur(8px) saturate(3);
|
||||
border: var(--hairline-width) solid var(--bg-color);
|
||||
text-shadow: 0 var(--hairline-width) var(--bg-color), 0 0 8px var(--bg-color);
|
||||
text-shadow:
|
||||
0 var(--hairline-width) var(--bg-color),
|
||||
0 0 8px var(--bg-color);
|
||||
}
|
||||
.glass-menu .szh-menu__item--hover {
|
||||
/* background-color: var(--button-bg-blur-color); */
|
||||
|
@ -2363,14 +2373,16 @@ body > .szh-menu-container {
|
|||
text-shadow: 0 1px var(--bg-color);
|
||||
background-color: var(--bg-color);
|
||||
border: 2px solid var(--link-faded-color);
|
||||
box-shadow: 0 3px 16px var(--drop-shadow-color),
|
||||
box-shadow:
|
||||
0 3px 16px var(--drop-shadow-color),
|
||||
0 6px 16px -3px var(--drop-shadow-color);
|
||||
}
|
||||
:is(.shiny-pill, :root .toastify.shiny-pill):hover:not(:active) {
|
||||
color: var(--text-color);
|
||||
border-color: var(--link-color);
|
||||
filter: none !important;
|
||||
box-shadow: 0 3px 16px var(--drop-shadow-color),
|
||||
box-shadow:
|
||||
0 3px 16px var(--drop-shadow-color),
|
||||
0 6px 16px -3px var(--drop-shadow-color),
|
||||
0 6px 16px var(--drop-shadow-color);
|
||||
}
|
||||
|
@ -2386,7 +2398,8 @@ body > .szh-menu-container {
|
|||
text-shadow: 0 calc(var(--hairline-width) * -1) var(--drop-shadow-color);
|
||||
background-color: var(--button-bg-color);
|
||||
background-image: none;
|
||||
box-shadow: 0 3px 8px -1px var(--drop-shadow-color),
|
||||
box-shadow:
|
||||
0 3px 8px -1px var(--drop-shadow-color),
|
||||
0 10px 36px -4px var(--button-bg-blur-color);
|
||||
text-align: center;
|
||||
width: fit-content;
|
||||
|
@ -2551,10 +2564,14 @@ ul.link-list li a .icon {
|
|||
filter: none !important;
|
||||
}
|
||||
.nav-menu-button .avatar {
|
||||
box-shadow: 0 0 0 2px var(--bg-color), 0 0 0 4px var(--link-light-color) !important;
|
||||
box-shadow:
|
||||
0 0 0 2px var(--bg-color),
|
||||
0 0 0 4px var(--link-light-color) !important;
|
||||
}
|
||||
.nav-menu-button:is(:hover, :focus, .active) .avatar {
|
||||
box-shadow: 0 0 0 2px var(--bg-color), 0 0 0 4px var(--link-color) !important;
|
||||
box-shadow:
|
||||
0 0 0 2px var(--bg-color),
|
||||
0 0 0 4px var(--link-color) !important;
|
||||
}
|
||||
.nav-menu-button.with-avatar .icon {
|
||||
position: absolute;
|
||||
|
@ -2598,10 +2615,14 @@ ul.link-list li a .icon {
|
|||
overscroll-behavior: auto;
|
||||
flex-basis: min(100vw, var(--column-size));
|
||||
flex-shrink: 0;
|
||||
box-shadow: -1px 0 var(--bg-color), -2px 0 var(--drop-shadow-color),
|
||||
box-shadow:
|
||||
-1px 0 var(--bg-color),
|
||||
-2px 0 var(--drop-shadow-color),
|
||||
-3px 0 var(--bg-color);
|
||||
&:dir(rtl) {
|
||||
box-shadow: 1px 0 var(--bg-color), 2px 0 var(--drop-shadow-color),
|
||||
box-shadow:
|
||||
1px 0 var(--bg-color),
|
||||
2px 0 var(--drop-shadow-color),
|
||||
3px 0 var(--bg-color);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -378,15 +378,17 @@ function AccountInfo({
|
|||
<p>
|
||||
<Trans>Unable to load account.</Trans>
|
||||
</p>
|
||||
<p>
|
||||
<a
|
||||
href={isString ? account : url}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
<Trans>Go to account page</Trans> <Icon icon="external" />
|
||||
</a>
|
||||
</p>
|
||||
{isString ? (
|
||||
<p>
|
||||
<code class="insignificant">{account}</code>
|
||||
</p>
|
||||
) : (
|
||||
<p>
|
||||
<a href={url} target="_blank" rel="noopener">
|
||||
<Trans>Go to account page</Trans> <Icon icon="external" />
|
||||
</a>
|
||||
</p>
|
||||
)}
|
||||
</div>
|
||||
)}
|
||||
{uiState === 'loading' ? (
|
||||
|
|
|
@ -13,12 +13,7 @@ function EmbedModal({ html, url, width, height, onClose = () => {} }) {
|
|||
<Icon icon="x" alt={t`Close`} />
|
||||
</button>
|
||||
{url && (
|
||||
<a
|
||||
href={url}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
class="button plain"
|
||||
>
|
||||
<a href={url} target="_blank" rel="noopener" class="button plain">
|
||||
<span>
|
||||
<Trans>Open in new window</Trans>
|
||||
</span>{' '}
|
||||
|
|
|
@ -26,8 +26,10 @@ export default memo(function KeyboardShortcutsHelp() {
|
|||
},
|
||||
{
|
||||
ignoreEventWhen: (e) => {
|
||||
const hasModal = !!document.querySelector('#modal-container > *');
|
||||
return hasModal;
|
||||
const isCatchUpPage = /\/catchup/i.test(location.hash);
|
||||
return isCatchUpPage;
|
||||
// const hasModal = !!document.querySelector('#modal-container > *');
|
||||
// return hasModal;
|
||||
},
|
||||
},
|
||||
);
|
||||
|
|
|
@ -510,7 +510,7 @@ function Notification({
|
|||
<a
|
||||
href={`https://${instance}/severed_relationships`}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
rel="noopener"
|
||||
>
|
||||
<Trans>
|
||||
Learn more <Icon icon="external" size="s" />
|
||||
|
@ -526,7 +526,7 @@ function Notification({
|
|||
<a
|
||||
href={`/disputes/strikes/${moderation_warning.id}`}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
rel="noopener"
|
||||
>
|
||||
<Trans>
|
||||
Learn more <Icon icon="external" size="s" />
|
||||
|
@ -550,7 +550,7 @@ function Notification({
|
|||
<a
|
||||
key={account.id}
|
||||
href={account.url}
|
||||
rel="noopener noreferrer"
|
||||
rel="noopener"
|
||||
class="account-avatar-stack"
|
||||
onClick={(e) => {
|
||||
e.preventDefault();
|
||||
|
@ -654,7 +654,7 @@ function Notification({
|
|||
<a
|
||||
key={account.id}
|
||||
href={account.url}
|
||||
rel="noopener noreferrer"
|
||||
rel="noopener"
|
||||
class="account-avatar-stack"
|
||||
onClick={(e) => {
|
||||
e.preventDefault();
|
||||
|
|
|
@ -918,6 +918,25 @@ function Status({
|
|||
const actionsRef = useRef();
|
||||
const isPublic = ['public', 'unlisted'].includes(visibility);
|
||||
const isPinnable = ['public', 'unlisted', 'private'].includes(visibility);
|
||||
const menuFooter =
|
||||
mediaNoDesc && !reblogged ? (
|
||||
<div class="footer">
|
||||
<Icon icon="alert" />
|
||||
<Trans>Some media have no descriptions.</Trans>
|
||||
</div>
|
||||
) : (
|
||||
statusMonthsAgo >= 3 && (
|
||||
<div class="footer">
|
||||
<Icon icon="info" />
|
||||
<span>
|
||||
<Trans>
|
||||
Old post (<strong>{rtf.format(-statusMonthsAgo, 'month')}</strong>
|
||||
)
|
||||
</Trans>
|
||||
</span>
|
||||
</div>
|
||||
)
|
||||
);
|
||||
const StatusMenuItems = (
|
||||
<>
|
||||
{!isSizeLarge && sameInstance && (
|
||||
|
@ -954,29 +973,7 @@ function Status({
|
|||
</span>
|
||||
</MenuItem>
|
||||
}
|
||||
menuFooter={
|
||||
mediaNoDesc && !reblogged ? (
|
||||
<div class="footer">
|
||||
<Icon icon="alert" />
|
||||
<Trans>Some media have no descriptions.</Trans>
|
||||
</div>
|
||||
) : (
|
||||
statusMonthsAgo >= 3 && (
|
||||
<div class="footer">
|
||||
<Icon icon="info" />
|
||||
<span>
|
||||
<Trans>
|
||||
Old post (
|
||||
<strong>
|
||||
{rtf.format(-statusMonthsAgo, 'month')}
|
||||
</strong>
|
||||
)
|
||||
</Trans>
|
||||
</span>
|
||||
</div>
|
||||
)
|
||||
)
|
||||
}
|
||||
menuFooter={menuFooter}
|
||||
disabled={!canBoost}
|
||||
onClick={async () => {
|
||||
try {
|
||||
|
@ -2282,7 +2279,7 @@ function Status({
|
|||
alt={visibilityText[visibility]}
|
||||
/> */}
|
||||
<span>{_(visibilityText[visibility])}</span> •{' '}
|
||||
<a href={url} target="_blank" rel="noopener noreferrer">
|
||||
<a href={url} target="_blank" rel="noopener">
|
||||
{
|
||||
// within a day
|
||||
new Date().getTime() - createdAtDate.getTime() <
|
||||
|
@ -2429,15 +2426,7 @@ function Status({
|
|||
</span>
|
||||
</MenuItem>
|
||||
}
|
||||
menuFooter={
|
||||
mediaNoDesc &&
|
||||
!reblogged && (
|
||||
<div class="footer">
|
||||
<Icon icon="alert" />
|
||||
<Trans>Some media have no descriptions.</Trans>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
menuFooter={menuFooter}
|
||||
>
|
||||
<StatusButton
|
||||
checked={reblogged}
|
||||
|
@ -2820,7 +2809,7 @@ function Card({ card, selfReferential, selfAuthor, instance }) {
|
|||
<a
|
||||
href={cardStatusURL || url}
|
||||
target={cardStatusURL ? null : '_blank'}
|
||||
rel="nofollow noopener noreferrer"
|
||||
rel="nofollow noopener"
|
||||
class={`card link ${isPost ? 'card-post' : ''} ${
|
||||
blurhashImage ? '' : size
|
||||
}`}
|
||||
|
@ -2883,7 +2872,7 @@ function Card({ card, selfReferential, selfAuthor, instance }) {
|
|||
<a
|
||||
href={url}
|
||||
target="_blank"
|
||||
rel="nofollow noopener noreferrer"
|
||||
rel="nofollow noopener"
|
||||
class="card photo"
|
||||
onClick={handleClick}
|
||||
>
|
||||
|
@ -2930,7 +2919,7 @@ function Card({ card, selfReferential, selfAuthor, instance }) {
|
|||
<a
|
||||
href={cardStatusURL || url}
|
||||
target={cardStatusURL ? null : '_blank'}
|
||||
rel="nofollow noopener noreferrer"
|
||||
rel="nofollow noopener"
|
||||
class={`card link ${isPost ? 'card-post' : ''} no-image`}
|
||||
lang={language}
|
||||
dir="auto"
|
||||
|
|
|
@ -149,7 +149,7 @@ function Timeline({
|
|||
const activeItemRect = activeItem?.getBoundingClientRect();
|
||||
const allItems = Array.from(
|
||||
scrollableRef.current.querySelectorAll(itemsSelector),
|
||||
);
|
||||
).filter((item) => !!item.offsetHeight);
|
||||
if (
|
||||
activeItem &&
|
||||
activeItemRect.top < scrollableRef.current.clientHeight &&
|
||||
|
@ -188,7 +188,7 @@ function Timeline({
|
|||
const activeItemRect = activeItem?.getBoundingClientRect();
|
||||
const allItems = Array.from(
|
||||
scrollableRef.current.querySelectorAll(itemsSelector),
|
||||
);
|
||||
).filter((item) => !!item.offsetHeight);
|
||||
if (
|
||||
activeItem &&
|
||||
activeItemRect.top < scrollableRef.current.clientHeight &&
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
"code": "cs-CZ",
|
||||
"nativeName": "čeština",
|
||||
"name": "Czech",
|
||||
"completion": 74
|
||||
"completion": 84
|
||||
},
|
||||
{
|
||||
"code": "de-DE",
|
||||
|
|
7
src/locales/ca-ES.po
generated
7
src/locales/ca-ES.po
generated
|
@ -8,7 +8,7 @@ msgstr ""
|
|||
"Language: ca\n"
|
||||
"Project-Id-Version: phanpy\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2024-12-27 18:00\n"
|
||||
"PO-Revision-Date: 2025-01-14 18:50\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Catalan\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
@ -76,7 +76,7 @@ msgstr "Verificat"
|
|||
#: src/components/account-block.jsx:223
|
||||
#: src/components/account-info.jsx:782
|
||||
msgid "Joined <0>{0}</0>"
|
||||
msgstr "S'hi va unir <0>{0}</0>"
|
||||
msgstr "S'hi va unir el <0>{0}</0>"
|
||||
|
||||
#: src/components/account-info.jsx:58
|
||||
msgid "Forever"
|
||||
|
@ -1410,6 +1410,7 @@ msgid "Accounts…"
|
|||
msgstr "Comptes…"
|
||||
|
||||
#: src/components/nav-menu.jsx:315
|
||||
#: src/pages/login.jsx:27
|
||||
#: src/pages/login.jsx:190
|
||||
#: src/pages/status.jsx:837
|
||||
#: src/pages/welcome.jsx:65
|
||||
|
@ -2708,7 +2709,7 @@ msgstr "Grups"
|
|||
|
||||
#: src/pages/catchup.jsx:596
|
||||
msgid "Showing {selectedFilterCategory, select, all {all posts} original {original posts} replies {replies} boosts {boosts} followedTags {followed tags} groups {groups} filtered {filtered posts}}, {sortBy, select, createdAt {{sortOrder, select, asc {oldest} desc {latest}}} reblogsCount {{sortOrder, select, asc {fewest boosts} desc {most boosts}}} favouritesCount {{sortOrder, select, asc {fewest likes} desc {most likes}}} repliesCount {{sortOrder, select, asc {fewest replies} desc {most replies}}} density {{sortOrder, select, asc {least dense} desc {most dense}}}} first{groupBy, select, account {, grouped by authors} other {}}"
|
||||
msgstr "Es mostren {selectedFilterCategory, select, all {totes les publicacions} original {publicacions originals} replies {respostes} boosts {impulsos} followedTags {etiquetes seguides} groups {grups} filtered {publicacions filtrades}}, {sortBy, select, createdAt {{sortOrder, select, asc {més antic} desc {més recent}}} reblogsCount {{sortOrder, select, asc {amb menys impulsos} desc {amb més impulsos}}} favouritesCount {{sortOrder, select, asc {amb menys favorits} desc {amb més favorits}}} repliesCount {{sortOrder, select, asc {amb menys respostes} desc {amb més respostes}}} density {{sortOrder, select, asc {amb menys densitat} desc {amb més densitat}}}} primer{groupBy, select, account {, agrupat per autors} other {}}"
|
||||
msgstr "Es mostren {selectedFilterCategory, select, all {totes les publicacions} original {publicacions originals} replies {respostes} boosts {impulsos} followedTags {etiquetes seguides} groups {grups} filtered {publicacions filtrades}}, {sortBy, select, createdAt {{sortOrder, select, asc {més antiga} desc {més recent}}} reblogsCount {{sortOrder, select, asc {amb menys impulsos} desc {amb més impulsos}}} favouritesCount {{sortOrder, select, asc {amb menys favorits} desc {amb més favorits}}} repliesCount {{sortOrder, select, asc {amb menys respostes} desc {amb més respostes}}} density {{sortOrder, select, asc {amb menys densitat} desc {amb més densitat}}}} primer{groupBy, select, account {, agrupat per autors} other {}}"
|
||||
|
||||
#: src/pages/catchup.jsx:882
|
||||
#: src/pages/catchup.jsx:906
|
||||
|
|
284
src/locales/cs-CZ.po
generated
284
src/locales/cs-CZ.po
generated
|
@ -8,7 +8,7 @@ msgstr ""
|
|||
"Language: cs\n"
|
||||
"Project-Id-Version: phanpy\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2024-12-21 12:46\n"
|
||||
"PO-Revision-Date: 2025-01-06 21:33\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Czech\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n"
|
||||
|
@ -113,7 +113,7 @@ msgstr "Příspěvky"
|
|||
|
||||
#: src/components/account-info.jsx:429
|
||||
#: src/components/account-info.jsx:1120
|
||||
#: src/components/compose.jsx:2592
|
||||
#: src/components/compose.jsx:2624
|
||||
#: src/components/media-alt-modal.jsx:46
|
||||
#: src/components/media-modal.jsx:358
|
||||
#: src/components/status.jsx:1737
|
||||
|
@ -241,7 +241,7 @@ msgstr "Blokováno"
|
|||
|
||||
#: src/components/account-info.jsx:1096
|
||||
msgid "Private note"
|
||||
msgstr ""
|
||||
msgstr "Soukromá poznámka"
|
||||
|
||||
#: src/components/account-info.jsx:1153
|
||||
msgid "Mention <0>@{username}</0>"
|
||||
|
@ -253,43 +253,43 @@ msgstr "Přeložit bio"
|
|||
|
||||
#: src/components/account-info.jsx:1176
|
||||
msgid "Edit private note"
|
||||
msgstr ""
|
||||
msgstr "Upravit soukromou poznámku"
|
||||
|
||||
#: src/components/account-info.jsx:1176
|
||||
msgid "Add private note"
|
||||
msgstr ""
|
||||
msgstr "Přidat soukromou poznámku"
|
||||
|
||||
#: src/components/account-info.jsx:1196
|
||||
msgid "Notifications enabled for @{username}'s posts."
|
||||
msgstr ""
|
||||
msgstr "Upozornění pro příspěvky od @{username} povolena."
|
||||
|
||||
#: src/components/account-info.jsx:1197
|
||||
msgid " Notifications disabled for @{username}'s posts."
|
||||
msgstr ""
|
||||
msgstr " Upozornění pro příspěvky od @{username} zakázána."
|
||||
|
||||
#: src/components/account-info.jsx:1209
|
||||
msgid "Disable notifications"
|
||||
msgstr ""
|
||||
msgstr "Vypnout upozornění"
|
||||
|
||||
#: src/components/account-info.jsx:1210
|
||||
msgid "Enable notifications"
|
||||
msgstr ""
|
||||
msgstr "Zapnout upozornění"
|
||||
|
||||
#: src/components/account-info.jsx:1227
|
||||
msgid "Boosts from @{username} enabled."
|
||||
msgstr ""
|
||||
msgstr "Boosty od @{username} povoleny."
|
||||
|
||||
#: src/components/account-info.jsx:1228
|
||||
msgid "Boosts from @{username} disabled."
|
||||
msgstr ""
|
||||
msgstr "Boosty od @{username} zakázány."
|
||||
|
||||
#: src/components/account-info.jsx:1239
|
||||
msgid "Disable boosts"
|
||||
msgstr ""
|
||||
msgstr "Zakázat boosty"
|
||||
|
||||
#: src/components/account-info.jsx:1239
|
||||
msgid "Enable boosts"
|
||||
msgstr ""
|
||||
msgstr "Povolit boosty"
|
||||
|
||||
#: src/components/account-info.jsx:1255
|
||||
#: src/components/account-info.jsx:1265
|
||||
|
@ -327,7 +327,7 @@ msgstr "Sdílet…"
|
|||
|
||||
#: src/components/account-info.jsx:1354
|
||||
msgid "Unmuted @{username}"
|
||||
msgstr ""
|
||||
msgstr "Zrušeno ztlumení @{username}"
|
||||
|
||||
#: src/components/account-info.jsx:1366
|
||||
msgid "Unmute <0>@{username}</0>"
|
||||
|
@ -340,11 +340,11 @@ msgstr "Ztišit <0>@{username}</0>…"
|
|||
#. placeholder {0}: typeof MUTE_DURATIONS_LABELS[duration] === 'function' ? MUTE_DURATIONS_LABELS[duration]() : _(MUTE_DURATIONS_LABELS[duration])
|
||||
#: src/components/account-info.jsx:1414
|
||||
msgid "Muted @{username} for {0}"
|
||||
msgstr ""
|
||||
msgstr "Ztlumený @{username} na {0}"
|
||||
|
||||
#: src/components/account-info.jsx:1426
|
||||
msgid "Unable to mute @{username}"
|
||||
msgstr ""
|
||||
msgstr "Nelze ztlumit @{username}"
|
||||
|
||||
#: src/components/account-info.jsx:1447
|
||||
msgid "Remove <0>@{username}</0> from followers?"
|
||||
|
@ -352,7 +352,7 @@ msgstr "Odstranit <0>@{username}</0> ze sledujících?"
|
|||
|
||||
#: src/components/account-info.jsx:1467
|
||||
msgid "@{username} removed from followers"
|
||||
msgstr ""
|
||||
msgstr "@{username} odebrán/a ze sledujících"
|
||||
|
||||
#: src/components/account-info.jsx:1479
|
||||
msgid "Remove follower…"
|
||||
|
@ -364,19 +364,19 @@ msgstr "Blokovat <0>@{username}</0>?"
|
|||
|
||||
#: src/components/account-info.jsx:1514
|
||||
msgid "Unblocked @{username}"
|
||||
msgstr ""
|
||||
msgstr "Odblokován @{username}"
|
||||
|
||||
#: src/components/account-info.jsx:1522
|
||||
msgid "Blocked @{username}"
|
||||
msgstr ""
|
||||
msgstr "Zablokován @{username}"
|
||||
|
||||
#: src/components/account-info.jsx:1530
|
||||
msgid "Unable to unblock @{username}"
|
||||
msgstr ""
|
||||
msgstr "Nelze odblokovat uživatele @{username}"
|
||||
|
||||
#: src/components/account-info.jsx:1532
|
||||
msgid "Unable to block @{username}"
|
||||
msgstr ""
|
||||
msgstr "Nelze zablokovat uživatele @{username}"
|
||||
|
||||
#: src/components/account-info.jsx:1542
|
||||
msgid "Unblock <0>@{username}</0>"
|
||||
|
@ -397,12 +397,12 @@ msgstr "Upravit profil"
|
|||
|
||||
#: src/components/account-info.jsx:1624
|
||||
msgid "Withdraw follow request?"
|
||||
msgstr ""
|
||||
msgstr "Zrušit žádost o sledování?"
|
||||
|
||||
#. placeholder {1}: info.acct || info.username
|
||||
#: src/components/account-info.jsx:1625
|
||||
msgid "Unfollow @{1}?"
|
||||
msgstr ""
|
||||
msgstr "Přestat sledovat @{1}?"
|
||||
|
||||
#: src/components/account-info.jsx:1676
|
||||
msgid "Unfollow…"
|
||||
|
@ -424,10 +424,10 @@ msgstr "Sledovat"
|
|||
#: src/components/account-info.jsx:2098
|
||||
#: src/components/account-sheet.jsx:38
|
||||
#: src/components/compose.jsx:859
|
||||
#: src/components/compose.jsx:2548
|
||||
#: src/components/compose.jsx:3022
|
||||
#: src/components/compose.jsx:3231
|
||||
#: src/components/compose.jsx:3461
|
||||
#: src/components/compose.jsx:2580
|
||||
#: src/components/compose.jsx:3054
|
||||
#: src/components/compose.jsx:3263
|
||||
#: src/components/compose.jsx:3493
|
||||
#: src/components/drafts.jsx:59
|
||||
#: src/components/embed-modal.jsx:13
|
||||
#: src/components/generic-accounts.jsx:143
|
||||
|
@ -459,11 +459,11 @@ msgstr "Přeložit bio"
|
|||
|
||||
#: src/components/account-info.jsx:1908
|
||||
msgid "Unable to remove from list."
|
||||
msgstr ""
|
||||
msgstr "Nelze odstranit ze seznamu."
|
||||
|
||||
#: src/components/account-info.jsx:1909
|
||||
msgid "Unable to add to list."
|
||||
msgstr ""
|
||||
msgstr "Nelze přidat do seznamu."
|
||||
|
||||
#: src/components/account-info.jsx:1928
|
||||
#: src/pages/lists.jsx:105
|
||||
|
@ -487,7 +487,7 @@ msgstr "Soukromá poznámka o <0> @{0}</0>"
|
|||
|
||||
#: src/components/account-info.jsx:2032
|
||||
msgid "Unable to update private note."
|
||||
msgstr ""
|
||||
msgstr "Nelze aktualizovat soukromou poznámku."
|
||||
|
||||
#: src/components/account-info.jsx:2055
|
||||
#: src/components/account-info.jsx:2226
|
||||
|
@ -500,7 +500,7 @@ msgstr "Uložit a zavřít"
|
|||
|
||||
#: src/components/account-info.jsx:2154
|
||||
msgid "Unable to update profile."
|
||||
msgstr ""
|
||||
msgstr "Nelze aktualizovat profil."
|
||||
|
||||
#: src/components/account-info.jsx:2161
|
||||
#: src/components/list-add-edit.jsx:105
|
||||
|
@ -566,7 +566,7 @@ msgstr "Vytvořit"
|
|||
|
||||
#: src/components/compose.jsx:206
|
||||
msgid "Add media"
|
||||
msgstr ""
|
||||
msgstr "Přidat média"
|
||||
|
||||
#: src/components/compose.jsx:207
|
||||
msgid "Add custom emoji"
|
||||
|
@ -574,7 +574,7 @@ msgstr "Přidat vlastní emoji"
|
|||
|
||||
#: src/components/compose.jsx:208
|
||||
msgid "Add GIF"
|
||||
msgstr ""
|
||||
msgstr "Přidat GIF"
|
||||
|
||||
#: src/components/compose.jsx:209
|
||||
msgid "Add poll"
|
||||
|
@ -711,7 +711,7 @@ msgid "Mark media as sensitive"
|
|||
msgstr "Označit média jako citlivá"
|
||||
|
||||
#: src/components/compose.jsx:1381
|
||||
#: src/components/compose.jsx:3080
|
||||
#: src/components/compose.jsx:3112
|
||||
#: src/components/shortcuts-settings.jsx:715
|
||||
#: src/pages/list.jsx:362
|
||||
msgid "Add"
|
||||
|
@ -743,31 +743,31 @@ msgstr "Stahování GIFu…"
|
|||
msgid "Failed to download GIF"
|
||||
msgstr "Nepodařilo se stáhnout GIF"
|
||||
|
||||
#: src/components/compose.jsx:1879
|
||||
#: src/components/compose.jsx:1956
|
||||
#: src/components/compose.jsx:1884
|
||||
#: src/components/compose.jsx:1961
|
||||
#: src/components/nav-menu.jsx:239
|
||||
msgid "More…"
|
||||
msgstr "Více…"
|
||||
|
||||
#: src/components/compose.jsx:2361
|
||||
#: src/components/compose.jsx:2393
|
||||
msgid "Uploaded"
|
||||
msgstr "Odesláno"
|
||||
|
||||
#: src/components/compose.jsx:2374
|
||||
#: src/components/compose.jsx:2406
|
||||
msgid "Image description"
|
||||
msgstr "Popis obrázku"
|
||||
|
||||
#: src/components/compose.jsx:2375
|
||||
#: src/components/compose.jsx:2407
|
||||
msgid "Video description"
|
||||
msgstr "Popis videa"
|
||||
|
||||
#: src/components/compose.jsx:2376
|
||||
#: src/components/compose.jsx:2408
|
||||
msgid "Audio description"
|
||||
msgstr "Popis audia"
|
||||
|
||||
#. placeholder {0}: prettyBytes( imageSize, )
|
||||
#. placeholder {1}: prettyBytes(imageSizeLimit)
|
||||
#: src/components/compose.jsx:2412
|
||||
#: src/components/compose.jsx:2444
|
||||
msgid "File size too large. Uploading might encounter issues. Try reduce the file size from {0} to {1} or lower."
|
||||
msgstr "Velikost souboru je příliš velká. Při nahrávání mohou vzniknout problémy. Zkuste zmenšit velikost souboru z {0} na {1} nebo nižší."
|
||||
|
||||
|
@ -775,163 +775,163 @@ msgstr "Velikost souboru je příliš velká. Při nahrávání mohou vzniknout
|
|||
#. placeholder {3}: i18n.number(height)
|
||||
#. placeholder {4}: i18n.number(newWidth)
|
||||
#. placeholder {5}: i18n.number( newHeight, )
|
||||
#: src/components/compose.jsx:2424
|
||||
#: src/components/compose.jsx:2456
|
||||
msgid "Dimension too large. Uploading might encounter issues. Try reduce dimension from {2}×{3}px to {4}×{5}px."
|
||||
msgstr ""
|
||||
msgstr "Rozlišení je příliš velké. Při nahrávání mohou vzniknout problémy. Zkuste zmenšit rozlišení z {2}×{3}px na {4}×{5}px."
|
||||
|
||||
#. placeholder {6}: prettyBytes( videoSize, )
|
||||
#. placeholder {7}: prettyBytes(videoSizeLimit)
|
||||
#: src/components/compose.jsx:2432
|
||||
#: src/components/compose.jsx:2464
|
||||
msgid "File size too large. Uploading might encounter issues. Try reduce the file size from {6} to {7} or lower."
|
||||
msgstr ""
|
||||
msgstr "Velikost souboru je příliš velká. Při nahrávání mohou vzniknout problémy. Zkuste zmenšit velikost souboru z {6} na {7} nebo nižší."
|
||||
|
||||
#. placeholder {8}: i18n.number( width, )
|
||||
#. placeholder {9}: i18n.number(height)
|
||||
#. placeholder {10}: i18n.number(newWidth)
|
||||
#. placeholder {11}: i18n.number( newHeight, )
|
||||
#: src/components/compose.jsx:2444
|
||||
#: src/components/compose.jsx:2476
|
||||
msgid "Dimension too large. Uploading might encounter issues. Try reduce dimension from {8}×{9}px to {10}×{11}px."
|
||||
msgstr ""
|
||||
msgstr "Rozměr je příliš velký. Při nahrávání mohou vzniknout problémy. Zkuste zmenšit velikost z {8}×{9}px na {10}×{11}px."
|
||||
|
||||
#: src/components/compose.jsx:2452
|
||||
#: src/components/compose.jsx:2484
|
||||
msgid "Frame rate too high. Uploading might encounter issues."
|
||||
msgstr "Snímková frekvence je příliš vysoká. Při nahrávání mohou vzniknout problémy."
|
||||
|
||||
#: src/components/compose.jsx:2512
|
||||
#: src/components/compose.jsx:2762
|
||||
#: src/components/compose.jsx:2544
|
||||
#: src/components/compose.jsx:2794
|
||||
#: src/components/shortcuts-settings.jsx:726
|
||||
#: src/pages/catchup.jsx:1074
|
||||
#: src/pages/filters.jsx:412
|
||||
msgid "Remove"
|
||||
msgstr "Odstranit"
|
||||
|
||||
#: src/components/compose.jsx:2529
|
||||
#: src/components/compose.jsx:2561
|
||||
#: src/compose.jsx:84
|
||||
msgid "Error"
|
||||
msgstr "Chyba"
|
||||
|
||||
#: src/components/compose.jsx:2554
|
||||
#: src/components/compose.jsx:2586
|
||||
msgid "Edit image description"
|
||||
msgstr "Upravit popis obrázku"
|
||||
|
||||
#: src/components/compose.jsx:2555
|
||||
#: src/components/compose.jsx:2587
|
||||
msgid "Edit video description"
|
||||
msgstr "Upravit popis videa"
|
||||
|
||||
#: src/components/compose.jsx:2556
|
||||
#: src/components/compose.jsx:2588
|
||||
msgid "Edit audio description"
|
||||
msgstr "Upravit popis audia"
|
||||
|
||||
#: src/components/compose.jsx:2601
|
||||
#: src/components/compose.jsx:2650
|
||||
#: src/components/compose.jsx:2633
|
||||
#: src/components/compose.jsx:2682
|
||||
msgid "Generating description. Please wait…"
|
||||
msgstr "Generování popisu. Počkejte prosím…"
|
||||
|
||||
#. placeholder {12}: e.message
|
||||
#: src/components/compose.jsx:2621
|
||||
#: src/components/compose.jsx:2653
|
||||
msgid "Failed to generate description: {12}"
|
||||
msgstr ""
|
||||
msgstr "Nepodařilo se vytvořit popisek: {12}"
|
||||
|
||||
#: src/components/compose.jsx:2622
|
||||
#: src/components/compose.jsx:2654
|
||||
msgid "Failed to generate description"
|
||||
msgstr "Nepodařilo se vytvořit popis"
|
||||
|
||||
#: src/components/compose.jsx:2634
|
||||
#: src/components/compose.jsx:2640
|
||||
#: src/components/compose.jsx:2686
|
||||
#: src/components/compose.jsx:2666
|
||||
#: src/components/compose.jsx:2672
|
||||
#: src/components/compose.jsx:2718
|
||||
msgid "Generate description…"
|
||||
msgstr "Vytvořit popis…"
|
||||
|
||||
#. placeholder {13}: e?.message ? `: ${e.message}` : ''
|
||||
#: src/components/compose.jsx:2673
|
||||
#: src/components/compose.jsx:2705
|
||||
msgid "Failed to generate description{13}"
|
||||
msgstr ""
|
||||
msgstr "Nepodařilo se vytvořit popisek{13}"
|
||||
|
||||
#. placeholder {0}: localeCode2Text(lang)
|
||||
#: src/components/compose.jsx:2688
|
||||
#: src/components/compose.jsx:2720
|
||||
msgid "({0}) <0>— experimental</0>"
|
||||
msgstr "({0}) <0>– experimentální</0>"
|
||||
|
||||
#: src/components/compose.jsx:2707
|
||||
#: src/components/compose.jsx:2739
|
||||
msgid "Done"
|
||||
msgstr "Hotovo"
|
||||
|
||||
#. placeholder {0}: i + 1
|
||||
#: src/components/compose.jsx:2743
|
||||
#: src/components/compose.jsx:2775
|
||||
msgid "Choice {0}"
|
||||
msgstr ""
|
||||
msgstr "Volba {0}"
|
||||
|
||||
#: src/components/compose.jsx:2790
|
||||
#: src/components/compose.jsx:2822
|
||||
msgid "Multiple choices"
|
||||
msgstr "Více možností"
|
||||
|
||||
#: src/components/compose.jsx:2793
|
||||
#: src/components/compose.jsx:2825
|
||||
msgid "Duration"
|
||||
msgstr "Trvání"
|
||||
|
||||
#: src/components/compose.jsx:2824
|
||||
#: src/components/compose.jsx:2856
|
||||
msgid "Remove poll"
|
||||
msgstr "Odstranit anketu"
|
||||
|
||||
#: src/components/compose.jsx:3039
|
||||
#: src/components/compose.jsx:3071
|
||||
msgid "Search accounts"
|
||||
msgstr ""
|
||||
msgstr "Hledat účty"
|
||||
|
||||
#: src/components/compose.jsx:3093
|
||||
#: src/components/compose.jsx:3125
|
||||
#: src/components/generic-accounts.jsx:228
|
||||
msgid "Error loading accounts"
|
||||
msgstr "Chyba při načítání účtů"
|
||||
|
||||
#: src/components/compose.jsx:3237
|
||||
#: src/components/compose.jsx:3269
|
||||
msgid "Custom emojis"
|
||||
msgstr "Vlastní emoji"
|
||||
|
||||
#: src/components/compose.jsx:3257
|
||||
#: src/components/compose.jsx:3289
|
||||
msgid "Search emoji"
|
||||
msgstr ""
|
||||
msgstr "Hledat emoji"
|
||||
|
||||
#: src/components/compose.jsx:3288
|
||||
#: src/components/compose.jsx:3320
|
||||
msgid "Error loading custom emojis"
|
||||
msgstr "Chyba při načítání vlastních emoji"
|
||||
|
||||
#: src/components/compose.jsx:3299
|
||||
#: src/components/compose.jsx:3331
|
||||
msgid "Recently used"
|
||||
msgstr ""
|
||||
msgstr "Nedávno použité"
|
||||
|
||||
#: src/components/compose.jsx:3300
|
||||
#: src/components/compose.jsx:3332
|
||||
msgid "Others"
|
||||
msgstr ""
|
||||
msgstr "Ostatní"
|
||||
|
||||
#. placeholder {0}: i18n.number(emojis.length - max)
|
||||
#: src/components/compose.jsx:3338
|
||||
#: src/components/compose.jsx:3370
|
||||
msgid "{0} more…"
|
||||
msgstr "{0} další…"
|
||||
|
||||
#: src/components/compose.jsx:3476
|
||||
#: src/components/compose.jsx:3508
|
||||
msgid "Search GIFs"
|
||||
msgstr ""
|
||||
msgstr "Hledat GIFy"
|
||||
|
||||
#: src/components/compose.jsx:3491
|
||||
#: src/components/compose.jsx:3523
|
||||
msgid "Powered by GIPHY"
|
||||
msgstr ""
|
||||
msgstr "Běží na GIPHY"
|
||||
|
||||
#: src/components/compose.jsx:3499
|
||||
#: src/components/compose.jsx:3531
|
||||
msgid "Type to search GIFs"
|
||||
msgstr "Zadejte pro vyhledávání GIFů"
|
||||
|
||||
#: src/components/compose.jsx:3597
|
||||
#: src/components/compose.jsx:3629
|
||||
#: src/components/media-modal.jsx:462
|
||||
#: src/components/timeline.jsx:893
|
||||
msgid "Previous"
|
||||
msgstr "Zpět"
|
||||
|
||||
#: src/components/compose.jsx:3615
|
||||
#: src/components/compose.jsx:3647
|
||||
#: src/components/media-modal.jsx:481
|
||||
#: src/components/timeline.jsx:910
|
||||
msgid "Next"
|
||||
msgstr "Další"
|
||||
|
||||
#: src/components/compose.jsx:3632
|
||||
#: src/components/compose.jsx:3664
|
||||
msgid "Error loading GIFs"
|
||||
msgstr "Chyba při načítání GIFů"
|
||||
|
||||
|
@ -1109,11 +1109,11 @@ msgstr "<0>1</0> do <1>9</1>"
|
|||
|
||||
#: src/components/keyboard-shortcuts-help.jsx:118
|
||||
msgid "Focus next column in multi-column mode"
|
||||
msgstr ""
|
||||
msgstr "Zaměřit se na další sloupec v režimu více sloupců"
|
||||
|
||||
#: src/components/keyboard-shortcuts-help.jsx:122
|
||||
msgid "Focus previous column in multi-column mode"
|
||||
msgstr ""
|
||||
msgstr "Zaměřit se na předchozí sloupec v režimu více sloupců"
|
||||
|
||||
#: src/components/keyboard-shortcuts-help.jsx:126
|
||||
msgid "Compose new post"
|
||||
|
@ -1534,7 +1534,7 @@ msgstr "Upozornění na moderování"
|
|||
|
||||
#: src/components/notification.jsx:265
|
||||
msgid "Your {year} #Wrapstodon is here!"
|
||||
msgstr ""
|
||||
msgstr "Tvůj {year} #Wrapstodon je tady!"
|
||||
|
||||
#: src/components/notification.jsx:271
|
||||
msgid "An admin from <0>{from}</0> has suspended <1>{targetName}</1>, which means you can no longer receive updates from them or interact with them."
|
||||
|
@ -1605,7 +1605,7 @@ msgstr "Další informace <0/>"
|
|||
|
||||
#: src/components/notification.jsx:540
|
||||
msgid "View #Wrapstodon"
|
||||
msgstr ""
|
||||
msgstr "Zobrazit #Wrapstodon"
|
||||
|
||||
#: src/components/notification.jsx:770
|
||||
#: src/components/status.jsx:267
|
||||
|
@ -2124,17 +2124,17 @@ msgstr "Nelíbí se @{0}"
|
|||
#. placeholder {1}: username || acct
|
||||
#: src/components/status.jsx:791
|
||||
msgid "Liked @{1}'s post"
|
||||
msgstr ""
|
||||
msgstr "Líbí se příspěvek od @{1}"
|
||||
|
||||
#. placeholder {2}: username || acct
|
||||
#: src/components/status.jsx:830
|
||||
msgid "Unbookmarked @{2}'s post"
|
||||
msgstr ""
|
||||
msgstr "Odebrali jste záložku z příspěvku od @{2}"
|
||||
|
||||
#. placeholder {3}: username || acct
|
||||
#: src/components/status.jsx:831
|
||||
msgid "Bookmarked @{3}'s post"
|
||||
msgstr ""
|
||||
msgstr "Přidali jste příspěvek od @{3} do záložek"
|
||||
|
||||
#: src/components/status.jsx:937
|
||||
#: src/components/status.jsx:999
|
||||
|
@ -2161,12 +2161,12 @@ msgstr "Starý příspěvek (<0>{0}</0>)"
|
|||
#. placeholder {4}: username || acct
|
||||
#: src/components/status.jsx:987
|
||||
msgid "Unboosted @{4}'s post"
|
||||
msgstr ""
|
||||
msgstr "Zrušili jste boostnutí příspěvku od @{4}"
|
||||
|
||||
#. placeholder {5}: username || acct
|
||||
#: src/components/status.jsx:988
|
||||
msgid "Boosted @{5}'s post"
|
||||
msgstr ""
|
||||
msgstr "Boostnuli jste příspěvek od @{5}"
|
||||
|
||||
#: src/components/status.jsx:1000
|
||||
msgid "Boost…"
|
||||
|
@ -2276,12 +2276,12 @@ msgstr "Nahlásit příspěvek…"
|
|||
#. placeholder {6}: username || acct
|
||||
#: src/components/status.jsx:1442
|
||||
msgid "Unboosted @{6}'s post"
|
||||
msgstr ""
|
||||
msgstr "Zrušili jste boostnutí příspěvku od @{6}"
|
||||
|
||||
#. placeholder {7}: username || acct
|
||||
#: src/components/status.jsx:1443
|
||||
msgid "Boosted @{7}'s post"
|
||||
msgstr ""
|
||||
msgstr "Boostnuli jste příspěvek od @{7}"
|
||||
|
||||
#: src/components/status.jsx:1728
|
||||
#: src/components/status.jsx:1764
|
||||
|
@ -2343,7 +2343,7 @@ msgstr "Komentáře"
|
|||
#. More from [Author]
|
||||
#: src/components/status.jsx:2696
|
||||
msgid "More from <0/>"
|
||||
msgstr ""
|
||||
msgstr "Více od <0/>"
|
||||
|
||||
#: src/components/status.jsx:2998
|
||||
msgid "Edit History"
|
||||
|
@ -2436,7 +2436,7 @@ msgstr "Zkuste to znovu"
|
|||
#. placeholder {0}: fItems.length
|
||||
#: src/components/timeline.jsx:591
|
||||
msgid "{0, plural, one {# Boost} other {# Boosts}}"
|
||||
msgstr ""
|
||||
msgstr "{0, plural, one {# Boostnutí} other {# Boostnutí}}"
|
||||
|
||||
#: src/components/timeline.jsx:596
|
||||
msgid "Pinned posts"
|
||||
|
@ -2610,7 +2610,7 @@ msgstr "Přepněte na tento účet"
|
|||
|
||||
#: src/pages/accounts.jsx:133
|
||||
msgid "Switch in new tab/window"
|
||||
msgstr ""
|
||||
msgstr "Přepnout v novém panelu/okně"
|
||||
|
||||
#: src/pages/accounts.jsx:147
|
||||
msgid "View profile…"
|
||||
|
@ -2904,7 +2904,7 @@ msgstr "Filtrováno: {0}"
|
|||
|
||||
#: src/pages/favourites.jsx:26
|
||||
msgid "No likes yet. Go like something!"
|
||||
msgstr ""
|
||||
msgstr "Neudělili jste žádné \"líbí se mi\". Označte něco, co se vám líbí!"
|
||||
|
||||
#: src/pages/favourites.jsx:27
|
||||
msgid "Unable to load likes."
|
||||
|
@ -3007,7 +3007,7 @@ msgstr "Vypršení platnosti"
|
|||
|
||||
#: src/pages/filters.jsx:526
|
||||
msgid "Filtered post will be…"
|
||||
msgstr ""
|
||||
msgstr "Filtrovaný příspěvek bude…"
|
||||
|
||||
#: src/pages/filters.jsx:536
|
||||
msgid "minimized"
|
||||
|
@ -3031,11 +3031,11 @@ msgstr "Vypršelo"
|
|||
|
||||
#: src/pages/filters.jsx:611
|
||||
msgid "Expiring <0/>"
|
||||
msgstr ""
|
||||
msgstr "Vyprší <0/>"
|
||||
|
||||
#: src/pages/filters.jsx:615
|
||||
msgid "Never expires"
|
||||
msgstr ""
|
||||
msgstr "Nikdy nevyprší"
|
||||
|
||||
#. placeholder {0}: followedHashtags.length
|
||||
#: src/pages/followed-hashtags.jsx:71
|
||||
|
@ -3061,19 +3061,19 @@ msgstr "Nelze načíst příspěvky."
|
|||
|
||||
#: src/pages/hashtag.jsx:56
|
||||
msgid "{hashtagTitle} (Media only) on {instance}"
|
||||
msgstr ""
|
||||
msgstr "{hashtagTitle} (pouze média) na {instance}"
|
||||
|
||||
#: src/pages/hashtag.jsx:57
|
||||
msgid "{hashtagTitle} on {instance}"
|
||||
msgstr ""
|
||||
msgstr "{hashtagTitle} na {instance}"
|
||||
|
||||
#: src/pages/hashtag.jsx:59
|
||||
msgid "{hashtagTitle} (Media only)"
|
||||
msgstr ""
|
||||
msgstr "{hashtagTitle} (pouze média)"
|
||||
|
||||
#: src/pages/hashtag.jsx:60
|
||||
msgid "{hashtagTitle}"
|
||||
msgstr ""
|
||||
msgstr "{hashtagTitle}"
|
||||
|
||||
#: src/pages/hashtag.jsx:182
|
||||
msgid "No one has posted anything with this tag yet."
|
||||
|
@ -3085,7 +3085,7 @@ msgstr "Nepodařilo se načíst příspěvky s tímto štítkem"
|
|||
|
||||
#: src/pages/hashtag.jsx:209
|
||||
msgid "Unfollow #{hashtag}?"
|
||||
msgstr ""
|
||||
msgstr "Přestat sledovat #{hashtag}?"
|
||||
|
||||
#: src/pages/hashtag.jsx:224
|
||||
msgid "Unfollowed #{hashtag}"
|
||||
|
@ -3093,28 +3093,28 @@ msgstr "#{hashtag} již není sledován"
|
|||
|
||||
#: src/pages/hashtag.jsx:239
|
||||
msgid "Followed #{hashtag}"
|
||||
msgstr ""
|
||||
msgstr "Sledován #{hashtag}"
|
||||
|
||||
#: src/pages/hashtag.jsx:255
|
||||
msgid "Following…"
|
||||
msgstr ""
|
||||
msgstr "Sleduji…"
|
||||
|
||||
#: src/pages/hashtag.jsx:283
|
||||
msgid "Unfeatured on profile"
|
||||
msgstr ""
|
||||
msgstr "Odebráno z profilu"
|
||||
|
||||
#: src/pages/hashtag.jsx:297
|
||||
msgid "Unable to unfeature on profile"
|
||||
msgstr ""
|
||||
msgstr "Nepodařilo se odebrat z profilu"
|
||||
|
||||
#: src/pages/hashtag.jsx:306
|
||||
#: src/pages/hashtag.jsx:322
|
||||
msgid "Featured on profile"
|
||||
msgstr ""
|
||||
msgstr "Zmíněno v profilu"
|
||||
|
||||
#: src/pages/hashtag.jsx:329
|
||||
msgid "Feature on profile"
|
||||
msgstr ""
|
||||
msgstr "Zmínit v profilu"
|
||||
|
||||
#: src/pages/hashtag.jsx:394
|
||||
msgid "{TOTAL_TAGS_LIMIT, plural, other {Max # tags}}"
|
||||
|
@ -3134,7 +3134,7 @@ msgstr ""
|
|||
|
||||
#: src/pages/hashtag.jsx:472
|
||||
msgid "This shortcut already exists"
|
||||
msgstr ""
|
||||
msgstr "Tato zkratka již existuje"
|
||||
|
||||
#: src/pages/hashtag.jsx:475
|
||||
msgid "Hashtag shortcut added"
|
||||
|
@ -3170,37 +3170,37 @@ msgstr "Přejít na moji instanci (<0>{currentInstance}</0>)"
|
|||
|
||||
#: src/pages/home.jsx:210
|
||||
msgid "Unable to fetch notifications."
|
||||
msgstr ""
|
||||
msgstr "Nelze načíst oznámení."
|
||||
|
||||
#: src/pages/home.jsx:230
|
||||
msgid "<0>New</0> <1>Follow Requests</1>"
|
||||
msgstr ""
|
||||
msgstr "<0>Nové</0> <1>Žádosti o sledování</1>"
|
||||
|
||||
#: src/pages/home.jsx:236
|
||||
msgid "See all"
|
||||
msgstr ""
|
||||
msgstr "Zobrazit vše"
|
||||
|
||||
#: src/pages/http-route.jsx:68
|
||||
msgid "Resolving…"
|
||||
msgstr ""
|
||||
msgstr "Připojování…"
|
||||
|
||||
#: src/pages/http-route.jsx:79
|
||||
msgid "Unable to resolve URL"
|
||||
msgstr ""
|
||||
msgstr "Nelze najít URL adresu"
|
||||
|
||||
#: src/pages/list.jsx:108
|
||||
msgid "Nothing yet."
|
||||
msgstr ""
|
||||
msgstr "Zatím nic."
|
||||
|
||||
#: src/pages/list.jsx:177
|
||||
#: src/pages/list.jsx:281
|
||||
msgid "Manage members"
|
||||
msgstr ""
|
||||
msgstr "Spravovat členy"
|
||||
|
||||
#. placeholder {0}: account.username
|
||||
#: src/pages/list.jsx:316
|
||||
msgid "Remove <0>@{0}</0> from list?"
|
||||
msgstr ""
|
||||
msgstr "Odstranit <0>@{0}</0> ze seznamu?"
|
||||
|
||||
#: src/pages/list.jsx:362
|
||||
msgid "Remove…"
|
||||
|
@ -3213,12 +3213,12 @@ msgstr ""
|
|||
|
||||
#: src/pages/lists.jsx:109
|
||||
msgid "No lists yet."
|
||||
msgstr ""
|
||||
msgstr "Nemáte žádné seznamy."
|
||||
|
||||
#: src/pages/login.jsx:110
|
||||
#: src/pages/login.jsx:123
|
||||
msgid "Failed to register application"
|
||||
msgstr ""
|
||||
msgstr "Nepodařilo se zaregistrovat aplikaci"
|
||||
|
||||
#: src/pages/login.jsx:209
|
||||
msgid "instance domain"
|
||||
|
@ -3226,7 +3226,7 @@ msgstr ""
|
|||
|
||||
#: src/pages/login.jsx:233
|
||||
msgid "e.g. “mastodon.social”"
|
||||
msgstr ""
|
||||
msgstr "např. “mastodon.social”"
|
||||
|
||||
#: src/pages/login.jsx:244
|
||||
msgid "Failed to log in. Please try again or try another instance."
|
||||
|
@ -3238,7 +3238,7 @@ msgstr ""
|
|||
|
||||
#: src/pages/login.jsx:257
|
||||
msgid "Continue"
|
||||
msgstr ""
|
||||
msgstr "Pokračovat"
|
||||
|
||||
#: src/pages/login.jsx:265
|
||||
msgid "Don't have an account? Create one!"
|
||||
|
@ -3319,7 +3319,7 @@ msgstr "Dnes"
|
|||
|
||||
#: src/pages/notifications.jsx:796
|
||||
msgid "You're all caught up."
|
||||
msgstr ""
|
||||
msgstr "Přečetli jste všechny komentáře."
|
||||
|
||||
#: src/pages/notifications.jsx:819
|
||||
msgid "Yesterday"
|
||||
|
@ -3483,11 +3483,11 @@ msgstr "Vzhled"
|
|||
|
||||
#: src/pages/settings.jsx:168
|
||||
msgid "Light"
|
||||
msgstr ""
|
||||
msgstr "Světlý"
|
||||
|
||||
#: src/pages/settings.jsx:179
|
||||
msgid "Dark"
|
||||
msgstr ""
|
||||
msgstr "Tmavý"
|
||||
|
||||
#: src/pages/settings.jsx:192
|
||||
msgid "Auto"
|
||||
|
@ -3518,12 +3518,12 @@ msgstr ""
|
|||
|
||||
#: src/pages/settings.jsx:273
|
||||
msgid "Default visibility"
|
||||
msgstr ""
|
||||
msgstr "Výchozí viditelnost"
|
||||
|
||||
#: src/pages/settings.jsx:274
|
||||
#: src/pages/settings.jsx:320
|
||||
msgid "Synced"
|
||||
msgstr ""
|
||||
msgstr "Synchronizováno"
|
||||
|
||||
#: src/pages/settings.jsx:299
|
||||
msgid "Failed to update posting privacy"
|
||||
|
@ -3551,7 +3551,7 @@ msgstr ""
|
|||
|
||||
#: src/pages/settings.jsx:389
|
||||
msgid "Translate to "
|
||||
msgstr ""
|
||||
msgstr "Přeložit do "
|
||||
|
||||
#: src/pages/settings.jsx:400
|
||||
msgid "System language ({systemTargetLanguageText})"
|
||||
|
@ -3839,15 +3839,15 @@ msgstr ""
|
|||
|
||||
#: src/pages/welcome.jsx:65
|
||||
msgid "Log in with Mastodon"
|
||||
msgstr ""
|
||||
msgstr "Přihlásit účtem Mastodon"
|
||||
|
||||
#: src/pages/welcome.jsx:71
|
||||
msgid "Sign up"
|
||||
msgstr ""
|
||||
msgstr "Vytvořit účet"
|
||||
|
||||
#: src/pages/welcome.jsx:78
|
||||
msgid "Connect your existing Mastodon/Fediverse account.<0/>Your credentials are not stored on this server."
|
||||
msgstr ""
|
||||
msgstr "Připojte svůj existující Mastodon/Fediverse účet.<0/>Vaše přihlašovací údaje nejsou uloženy na tomto serveru."
|
||||
|
||||
#: src/pages/welcome.jsx:95
|
||||
msgid "<0>Built</0> by <1>@cheeaun</1>. <2>Privacy Policy</2>."
|
||||
|
|
606
src/locales/en.po
generated
606
src/locales/en.po
generated
File diff suppressed because it is too large
Load diff
109
src/locales/eu-ES.po
generated
109
src/locales/eu-ES.po
generated
|
@ -8,7 +8,7 @@ msgstr ""
|
|||
"Language: eu\n"
|
||||
"Project-Id-Version: phanpy\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2024-12-21 14:14\n"
|
||||
"PO-Revision-Date: 2025-01-22 09:57\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Basque\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
@ -113,7 +113,7 @@ msgstr "bidalketa"
|
|||
|
||||
#: src/components/account-info.jsx:429
|
||||
#: src/components/account-info.jsx:1120
|
||||
#: src/components/compose.jsx:2592
|
||||
#: src/components/compose.jsx:2624
|
||||
#: src/components/media-alt-modal.jsx:46
|
||||
#: src/components/media-modal.jsx:358
|
||||
#: src/components/status.jsx:1737
|
||||
|
@ -424,10 +424,10 @@ msgstr "Jarraitu"
|
|||
#: src/components/account-info.jsx:2098
|
||||
#: src/components/account-sheet.jsx:38
|
||||
#: src/components/compose.jsx:859
|
||||
#: src/components/compose.jsx:2548
|
||||
#: src/components/compose.jsx:3022
|
||||
#: src/components/compose.jsx:3231
|
||||
#: src/components/compose.jsx:3461
|
||||
#: src/components/compose.jsx:2580
|
||||
#: src/components/compose.jsx:3054
|
||||
#: src/components/compose.jsx:3263
|
||||
#: src/components/compose.jsx:3493
|
||||
#: src/components/drafts.jsx:59
|
||||
#: src/components/embed-modal.jsx:13
|
||||
#: src/components/generic-accounts.jsx:143
|
||||
|
@ -711,7 +711,7 @@ msgid "Mark media as sensitive"
|
|||
msgstr "Markatu multimedia hunkigarri gisa"
|
||||
|
||||
#: src/components/compose.jsx:1381
|
||||
#: src/components/compose.jsx:3080
|
||||
#: src/components/compose.jsx:3112
|
||||
#: src/components/shortcuts-settings.jsx:715
|
||||
#: src/pages/list.jsx:362
|
||||
msgid "Add"
|
||||
|
@ -743,31 +743,31 @@ msgstr "GIFa deskargatzen…"
|
|||
msgid "Failed to download GIF"
|
||||
msgstr "Ezin da GIFa deskargatu"
|
||||
|
||||
#: src/components/compose.jsx:1879
|
||||
#: src/components/compose.jsx:1956
|
||||
#: src/components/compose.jsx:1884
|
||||
#: src/components/compose.jsx:1961
|
||||
#: src/components/nav-menu.jsx:239
|
||||
msgid "More…"
|
||||
msgstr "Gehiago…"
|
||||
|
||||
#: src/components/compose.jsx:2361
|
||||
#: src/components/compose.jsx:2393
|
||||
msgid "Uploaded"
|
||||
msgstr "Igota"
|
||||
|
||||
#: src/components/compose.jsx:2374
|
||||
#: src/components/compose.jsx:2406
|
||||
msgid "Image description"
|
||||
msgstr "Irudiaren deskribapena"
|
||||
|
||||
#: src/components/compose.jsx:2375
|
||||
#: src/components/compose.jsx:2407
|
||||
msgid "Video description"
|
||||
msgstr "Bideoaren deskribapena"
|
||||
|
||||
#: src/components/compose.jsx:2376
|
||||
#: src/components/compose.jsx:2408
|
||||
msgid "Audio description"
|
||||
msgstr "Audioaren deskribapena"
|
||||
|
||||
#. placeholder {0}: prettyBytes( imageSize, )
|
||||
#. placeholder {1}: prettyBytes(imageSizeLimit)
|
||||
#: src/components/compose.jsx:2412
|
||||
#: src/components/compose.jsx:2444
|
||||
msgid "File size too large. Uploading might encounter issues. Try reduce the file size from {0} to {1} or lower."
|
||||
msgstr "Fitxategia handiegia da. Igoerak arazoak izan ditzake. Saiatu tamaina {0}tik {1} edo gutxiagora murrizten."
|
||||
|
||||
|
@ -775,13 +775,13 @@ msgstr "Fitxategia handiegia da. Igoerak arazoak izan ditzake. Saiatu tamaina {0
|
|||
#. placeholder {3}: i18n.number(height)
|
||||
#. placeholder {4}: i18n.number(newWidth)
|
||||
#. placeholder {5}: i18n.number( newHeight, )
|
||||
#: src/components/compose.jsx:2424
|
||||
#: src/components/compose.jsx:2456
|
||||
msgid "Dimension too large. Uploading might encounter issues. Try reduce dimension from {2}×{3}px to {4}×{5}px."
|
||||
msgstr "Neurria handiegia da. Igoerak arazoak izan ditzake. Saiatu neurria {2}×{3}px-etik {4}×{5}px edo gutxiagora murrizten."
|
||||
|
||||
#. placeholder {6}: prettyBytes( videoSize, )
|
||||
#. placeholder {7}: prettyBytes(videoSizeLimit)
|
||||
#: src/components/compose.jsx:2432
|
||||
#: src/components/compose.jsx:2464
|
||||
msgid "File size too large. Uploading might encounter issues. Try reduce the file size from {6} to {7} or lower."
|
||||
msgstr "Fitxategia handiegia da. Igoerak arazoak izan ditzake. Saiatu tamaina {6}tik {7} edo gutxiagora murrizten."
|
||||
|
||||
|
@ -789,149 +789,149 @@ msgstr "Fitxategia handiegia da. Igoerak arazoak izan ditzake. Saiatu tamaina {6
|
|||
#. placeholder {9}: i18n.number(height)
|
||||
#. placeholder {10}: i18n.number(newWidth)
|
||||
#. placeholder {11}: i18n.number( newHeight, )
|
||||
#: src/components/compose.jsx:2444
|
||||
#: src/components/compose.jsx:2476
|
||||
msgid "Dimension too large. Uploading might encounter issues. Try reduce dimension from {8}×{9}px to {10}×{11}px."
|
||||
msgstr "Neurria handiegia da. Igoerak arazoak izan ditzake. Saiatu neurria {8}×{9}px-etik {10}×{11}px edo gutxiagora murrizten."
|
||||
|
||||
#: src/components/compose.jsx:2452
|
||||
#: src/components/compose.jsx:2484
|
||||
msgid "Frame rate too high. Uploading might encounter issues."
|
||||
msgstr "Fotograma-tasa (frame rate) altuegia da. Igoerak arazoak izan ditzake."
|
||||
|
||||
#: src/components/compose.jsx:2512
|
||||
#: src/components/compose.jsx:2762
|
||||
#: src/components/compose.jsx:2544
|
||||
#: src/components/compose.jsx:2794
|
||||
#: src/components/shortcuts-settings.jsx:726
|
||||
#: src/pages/catchup.jsx:1074
|
||||
#: src/pages/filters.jsx:412
|
||||
msgid "Remove"
|
||||
msgstr "Kendu"
|
||||
|
||||
#: src/components/compose.jsx:2529
|
||||
#: src/components/compose.jsx:2561
|
||||
#: src/compose.jsx:84
|
||||
msgid "Error"
|
||||
msgstr "Errorea"
|
||||
|
||||
#: src/components/compose.jsx:2554
|
||||
#: src/components/compose.jsx:2586
|
||||
msgid "Edit image description"
|
||||
msgstr "Editatu irudiaren deskribapena"
|
||||
|
||||
#: src/components/compose.jsx:2555
|
||||
#: src/components/compose.jsx:2587
|
||||
msgid "Edit video description"
|
||||
msgstr "Editatu bideoaren deskribapena"
|
||||
|
||||
#: src/components/compose.jsx:2556
|
||||
#: src/components/compose.jsx:2588
|
||||
msgid "Edit audio description"
|
||||
msgstr "Editatu audioaren deskribapena"
|
||||
|
||||
#: src/components/compose.jsx:2601
|
||||
#: src/components/compose.jsx:2650
|
||||
#: src/components/compose.jsx:2633
|
||||
#: src/components/compose.jsx:2682
|
||||
msgid "Generating description. Please wait…"
|
||||
msgstr "Deskribapena sortzen. Itxaron…"
|
||||
|
||||
#. placeholder {12}: e.message
|
||||
#: src/components/compose.jsx:2621
|
||||
#: src/components/compose.jsx:2653
|
||||
msgid "Failed to generate description: {12}"
|
||||
msgstr "Ezin da deskribapena sortu: {12}"
|
||||
|
||||
#: src/components/compose.jsx:2622
|
||||
#: src/components/compose.jsx:2654
|
||||
msgid "Failed to generate description"
|
||||
msgstr "Ezin da deskribapena sortu"
|
||||
|
||||
#: src/components/compose.jsx:2634
|
||||
#: src/components/compose.jsx:2640
|
||||
#: src/components/compose.jsx:2686
|
||||
#: src/components/compose.jsx:2666
|
||||
#: src/components/compose.jsx:2672
|
||||
#: src/components/compose.jsx:2718
|
||||
msgid "Generate description…"
|
||||
msgstr "Sortu deskribapena…"
|
||||
|
||||
#. placeholder {13}: e?.message ? `: ${e.message}` : ''
|
||||
#: src/components/compose.jsx:2673
|
||||
#: src/components/compose.jsx:2705
|
||||
msgid "Failed to generate description{13}"
|
||||
msgstr "Ezin izan da deskribapena sortu{13}"
|
||||
|
||||
#. placeholder {0}: localeCode2Text(lang)
|
||||
#: src/components/compose.jsx:2688
|
||||
#: src/components/compose.jsx:2720
|
||||
msgid "({0}) <0>— experimental</0>"
|
||||
msgstr "({0}) <0>— esperimentala</0>"
|
||||
|
||||
#: src/components/compose.jsx:2707
|
||||
#: src/components/compose.jsx:2739
|
||||
msgid "Done"
|
||||
msgstr "Eginda"
|
||||
|
||||
#. placeholder {0}: i + 1
|
||||
#: src/components/compose.jsx:2743
|
||||
#: src/components/compose.jsx:2775
|
||||
msgid "Choice {0}"
|
||||
msgstr "{0}. aukera"
|
||||
|
||||
#: src/components/compose.jsx:2790
|
||||
#: src/components/compose.jsx:2822
|
||||
msgid "Multiple choices"
|
||||
msgstr "Hainbat aukera"
|
||||
|
||||
#: src/components/compose.jsx:2793
|
||||
#: src/components/compose.jsx:2825
|
||||
msgid "Duration"
|
||||
msgstr "Iraupena"
|
||||
|
||||
#: src/components/compose.jsx:2824
|
||||
#: src/components/compose.jsx:2856
|
||||
msgid "Remove poll"
|
||||
msgstr "Kendu bozketa"
|
||||
|
||||
#: src/components/compose.jsx:3039
|
||||
#: src/components/compose.jsx:3071
|
||||
msgid "Search accounts"
|
||||
msgstr "Bilatu kontuak"
|
||||
|
||||
#: src/components/compose.jsx:3093
|
||||
#: src/components/compose.jsx:3125
|
||||
#: src/components/generic-accounts.jsx:228
|
||||
msgid "Error loading accounts"
|
||||
msgstr "Errorea kontuak kargatzean"
|
||||
|
||||
#: src/components/compose.jsx:3237
|
||||
#: src/components/compose.jsx:3269
|
||||
msgid "Custom emojis"
|
||||
msgstr "Instantziako emojiak"
|
||||
|
||||
#: src/components/compose.jsx:3257
|
||||
#: src/components/compose.jsx:3289
|
||||
msgid "Search emoji"
|
||||
msgstr "Bilatu emojia"
|
||||
|
||||
#: src/components/compose.jsx:3288
|
||||
#: src/components/compose.jsx:3320
|
||||
msgid "Error loading custom emojis"
|
||||
msgstr "Errorea emoji pertsonalizatua kargatzean"
|
||||
|
||||
#: src/components/compose.jsx:3299
|
||||
#: src/components/compose.jsx:3331
|
||||
msgid "Recently used"
|
||||
msgstr "Oraintsu erabilita"
|
||||
|
||||
#: src/components/compose.jsx:3300
|
||||
#: src/components/compose.jsx:3332
|
||||
msgid "Others"
|
||||
msgstr "Besteak"
|
||||
|
||||
#. placeholder {0}: i18n.number(emojis.length - max)
|
||||
#: src/components/compose.jsx:3338
|
||||
#: src/components/compose.jsx:3370
|
||||
msgid "{0} more…"
|
||||
msgstr "{0} gehiago…"
|
||||
|
||||
#: src/components/compose.jsx:3476
|
||||
#: src/components/compose.jsx:3508
|
||||
msgid "Search GIFs"
|
||||
msgstr "Bilatu GIFak"
|
||||
|
||||
#: src/components/compose.jsx:3491
|
||||
#: src/components/compose.jsx:3523
|
||||
msgid "Powered by GIPHY"
|
||||
msgstr "GIPHYri esker"
|
||||
|
||||
#: src/components/compose.jsx:3499
|
||||
#: src/components/compose.jsx:3531
|
||||
msgid "Type to search GIFs"
|
||||
msgstr "Idatzi GIFak bilatzeko"
|
||||
|
||||
#: src/components/compose.jsx:3597
|
||||
#: src/components/compose.jsx:3629
|
||||
#: src/components/media-modal.jsx:462
|
||||
#: src/components/timeline.jsx:893
|
||||
msgid "Previous"
|
||||
msgstr "Aurrekoa"
|
||||
|
||||
#: src/components/compose.jsx:3615
|
||||
#: src/components/compose.jsx:3647
|
||||
#: src/components/media-modal.jsx:481
|
||||
#: src/components/timeline.jsx:910
|
||||
msgid "Next"
|
||||
msgstr "Hurrengoa"
|
||||
|
||||
#: src/components/compose.jsx:3632
|
||||
#: src/components/compose.jsx:3664
|
||||
msgid "Error loading GIFs"
|
||||
msgstr "Errorea GIFak kargatzean"
|
||||
|
||||
|
@ -1410,6 +1410,7 @@ msgid "Accounts…"
|
|||
msgstr "Kontuak…"
|
||||
|
||||
#: src/components/nav-menu.jsx:315
|
||||
#: src/pages/login.jsx:27
|
||||
#: src/pages/login.jsx:190
|
||||
#: src/pages/status.jsx:837
|
||||
#: src/pages/welcome.jsx:65
|
||||
|
@ -1656,7 +1657,7 @@ msgstr "{votersCount, plural, one {hautesle <0>{0}</0>} other {<1>{1}</1> hautes
|
|||
|
||||
#: src/components/poll.jsx:268
|
||||
msgid "Ended <0/>"
|
||||
msgstr "<0/>(e)an amaitu zen"
|
||||
msgstr "<0/> amaitu da"
|
||||
|
||||
#: src/components/poll.jsx:272
|
||||
msgid "Ended"
|
||||
|
@ -1664,7 +1665,7 @@ msgstr "Amaitu da"
|
|||
|
||||
#: src/components/poll.jsx:275
|
||||
msgid "Ending <0/>"
|
||||
msgstr "<0/>(e)an amaituko da"
|
||||
msgstr "<0/> amaituko da"
|
||||
|
||||
#: src/components/poll.jsx:279
|
||||
msgid "Ending"
|
||||
|
|
109
src/locales/pt-BR.po
generated
109
src/locales/pt-BR.po
generated
|
@ -8,7 +8,7 @@ msgstr ""
|
|||
"Language: pt\n"
|
||||
"Project-Id-Version: phanpy\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2024-12-22 00:30\n"
|
||||
"PO-Revision-Date: 2025-01-15 16:00\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Portuguese, Brazilian\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
@ -76,7 +76,7 @@ msgstr "Verificado"
|
|||
#: src/components/account-block.jsx:223
|
||||
#: src/components/account-info.jsx:782
|
||||
msgid "Joined <0>{0}</0>"
|
||||
msgstr "Se juntou em <0>{0}</0>"
|
||||
msgstr "Juntou-se em <0>{0}</0>"
|
||||
|
||||
#: src/components/account-info.jsx:58
|
||||
msgid "Forever"
|
||||
|
@ -113,7 +113,7 @@ msgstr "Publicações"
|
|||
|
||||
#: src/components/account-info.jsx:429
|
||||
#: src/components/account-info.jsx:1120
|
||||
#: src/components/compose.jsx:2592
|
||||
#: src/components/compose.jsx:2624
|
||||
#: src/components/media-alt-modal.jsx:46
|
||||
#: src/components/media-modal.jsx:358
|
||||
#: src/components/status.jsx:1737
|
||||
|
@ -169,7 +169,7 @@ msgstr "Em memória"
|
|||
#: src/components/account-info.jsx:711
|
||||
#: src/components/account-info.jsx:752
|
||||
msgid "This user has chosen to not make this information available."
|
||||
msgstr "Esse usuário decidiu não fazer esta informação visível."
|
||||
msgstr "O usuário deixou privado esta informação."
|
||||
|
||||
#. placeholder {0}: ( postingStats.originals / postingStats.total ).toLocaleString(i18n.locale || undefined, { style: 'percent', })
|
||||
#. placeholder {1}: ( postingStats.replies / postingStats.total ).toLocaleString(i18n.locale || undefined, { style: 'percent', })
|
||||
|
@ -424,10 +424,10 @@ msgstr "Seguir"
|
|||
#: src/components/account-info.jsx:2098
|
||||
#: src/components/account-sheet.jsx:38
|
||||
#: src/components/compose.jsx:859
|
||||
#: src/components/compose.jsx:2548
|
||||
#: src/components/compose.jsx:3022
|
||||
#: src/components/compose.jsx:3231
|
||||
#: src/components/compose.jsx:3461
|
||||
#: src/components/compose.jsx:2580
|
||||
#: src/components/compose.jsx:3054
|
||||
#: src/components/compose.jsx:3263
|
||||
#: src/components/compose.jsx:3493
|
||||
#: src/components/drafts.jsx:59
|
||||
#: src/components/embed-modal.jsx:13
|
||||
#: src/components/generic-accounts.jsx:143
|
||||
|
@ -711,7 +711,7 @@ msgid "Mark media as sensitive"
|
|||
msgstr "Marcar mídia como sensível"
|
||||
|
||||
#: src/components/compose.jsx:1381
|
||||
#: src/components/compose.jsx:3080
|
||||
#: src/components/compose.jsx:3112
|
||||
#: src/components/shortcuts-settings.jsx:715
|
||||
#: src/pages/list.jsx:362
|
||||
msgid "Add"
|
||||
|
@ -743,31 +743,31 @@ msgstr "Baixando GIF…"
|
|||
msgid "Failed to download GIF"
|
||||
msgstr "Houve um erro ao baixar GIF"
|
||||
|
||||
#: src/components/compose.jsx:1879
|
||||
#: src/components/compose.jsx:1956
|
||||
#: src/components/compose.jsx:1884
|
||||
#: src/components/compose.jsx:1961
|
||||
#: src/components/nav-menu.jsx:239
|
||||
msgid "More…"
|
||||
msgstr "Mais…"
|
||||
|
||||
#: src/components/compose.jsx:2361
|
||||
#: src/components/compose.jsx:2393
|
||||
msgid "Uploaded"
|
||||
msgstr "Enviado"
|
||||
|
||||
#: src/components/compose.jsx:2374
|
||||
#: src/components/compose.jsx:2406
|
||||
msgid "Image description"
|
||||
msgstr "Descrição da imagem"
|
||||
|
||||
#: src/components/compose.jsx:2375
|
||||
#: src/components/compose.jsx:2407
|
||||
msgid "Video description"
|
||||
msgstr "Descrição do vídeo"
|
||||
|
||||
#: src/components/compose.jsx:2376
|
||||
#: src/components/compose.jsx:2408
|
||||
msgid "Audio description"
|
||||
msgstr "Descrição do áudio"
|
||||
|
||||
#. placeholder {0}: prettyBytes( imageSize, )
|
||||
#. placeholder {1}: prettyBytes(imageSizeLimit)
|
||||
#: src/components/compose.jsx:2412
|
||||
#: src/components/compose.jsx:2444
|
||||
msgid "File size too large. Uploading might encounter issues. Try reduce the file size from {0} to {1} or lower."
|
||||
msgstr "O arquivo é muito grande. Enviá-lo pode enfrentar problemas. Reduza o tamanho do arquivo de {0} a {1} ou menor."
|
||||
|
||||
|
@ -775,13 +775,13 @@ msgstr "O arquivo é muito grande. Enviá-lo pode enfrentar problemas. Reduza o
|
|||
#. placeholder {3}: i18n.number(height)
|
||||
#. placeholder {4}: i18n.number(newWidth)
|
||||
#. placeholder {5}: i18n.number( newHeight, )
|
||||
#: src/components/compose.jsx:2424
|
||||
#: src/components/compose.jsx:2456
|
||||
msgid "Dimension too large. Uploading might encounter issues. Try reduce dimension from {2}×{3}px to {4}×{5}px."
|
||||
msgstr "A dimensão é muito grande. Enviá-lo pode enfrentar problemas. Reduza a dimensão de {2}×{3}px a {4}×{5}px."
|
||||
|
||||
#. placeholder {6}: prettyBytes( videoSize, )
|
||||
#. placeholder {7}: prettyBytes(videoSizeLimit)
|
||||
#: src/components/compose.jsx:2432
|
||||
#: src/components/compose.jsx:2464
|
||||
msgid "File size too large. Uploading might encounter issues. Try reduce the file size from {6} to {7} or lower."
|
||||
msgstr "O arquivo é muito grande. Enviá-lo pode enfrentar problemas. Reduza o tamanho do arquivo de {6} a {7} ou menor."
|
||||
|
||||
|
@ -789,149 +789,149 @@ msgstr "O arquivo é muito grande. Enviá-lo pode enfrentar problemas. Reduza o
|
|||
#. placeholder {9}: i18n.number(height)
|
||||
#. placeholder {10}: i18n.number(newWidth)
|
||||
#. placeholder {11}: i18n.number( newHeight, )
|
||||
#: src/components/compose.jsx:2444
|
||||
#: src/components/compose.jsx:2476
|
||||
msgid "Dimension too large. Uploading might encounter issues. Try reduce dimension from {8}×{9}px to {10}×{11}px."
|
||||
msgstr "A dimensão é muito grande. Enviá-lo pode enfrentar problemas. Reduza a dimensão de {8}×{9}px a {10}×{11}px."
|
||||
|
||||
#: src/components/compose.jsx:2452
|
||||
#: src/components/compose.jsx:2484
|
||||
msgid "Frame rate too high. Uploading might encounter issues."
|
||||
msgstr "A taxa de quadros está muito alta. Enviá-lo pode enfrentar problemas."
|
||||
|
||||
#: src/components/compose.jsx:2512
|
||||
#: src/components/compose.jsx:2762
|
||||
#: src/components/compose.jsx:2544
|
||||
#: src/components/compose.jsx:2794
|
||||
#: src/components/shortcuts-settings.jsx:726
|
||||
#: src/pages/catchup.jsx:1074
|
||||
#: src/pages/filters.jsx:412
|
||||
msgid "Remove"
|
||||
msgstr "Excluir"
|
||||
|
||||
#: src/components/compose.jsx:2529
|
||||
#: src/components/compose.jsx:2561
|
||||
#: src/compose.jsx:84
|
||||
msgid "Error"
|
||||
msgstr "Erro"
|
||||
|
||||
#: src/components/compose.jsx:2554
|
||||
#: src/components/compose.jsx:2586
|
||||
msgid "Edit image description"
|
||||
msgstr "Editar descrição da imagem"
|
||||
|
||||
#: src/components/compose.jsx:2555
|
||||
#: src/components/compose.jsx:2587
|
||||
msgid "Edit video description"
|
||||
msgstr "Editar descrição do vídeo"
|
||||
|
||||
#: src/components/compose.jsx:2556
|
||||
#: src/components/compose.jsx:2588
|
||||
msgid "Edit audio description"
|
||||
msgstr "Editar descrição do áudio"
|
||||
|
||||
#: src/components/compose.jsx:2601
|
||||
#: src/components/compose.jsx:2650
|
||||
#: src/components/compose.jsx:2633
|
||||
#: src/components/compose.jsx:2682
|
||||
msgid "Generating description. Please wait…"
|
||||
msgstr "Gerando descrição. Por favor, espere…"
|
||||
|
||||
#. placeholder {12}: e.message
|
||||
#: src/components/compose.jsx:2621
|
||||
#: src/components/compose.jsx:2653
|
||||
msgid "Failed to generate description: {12}"
|
||||
msgstr "Falhou ao gerar descrição: {12}"
|
||||
|
||||
#: src/components/compose.jsx:2622
|
||||
#: src/components/compose.jsx:2654
|
||||
msgid "Failed to generate description"
|
||||
msgstr "Houve um erro ao gerar descrição"
|
||||
|
||||
#: src/components/compose.jsx:2634
|
||||
#: src/components/compose.jsx:2640
|
||||
#: src/components/compose.jsx:2686
|
||||
#: src/components/compose.jsx:2666
|
||||
#: src/components/compose.jsx:2672
|
||||
#: src/components/compose.jsx:2718
|
||||
msgid "Generate description…"
|
||||
msgstr "Gerar descrição…"
|
||||
|
||||
#. placeholder {13}: e?.message ? `: ${e.message}` : ''
|
||||
#: src/components/compose.jsx:2673
|
||||
#: src/components/compose.jsx:2705
|
||||
msgid "Failed to generate description{13}"
|
||||
msgstr "Falhou ao gerar descrição{13}"
|
||||
|
||||
#. placeholder {0}: localeCode2Text(lang)
|
||||
#: src/components/compose.jsx:2688
|
||||
#: src/components/compose.jsx:2720
|
||||
msgid "({0}) <0>— experimental</0>"
|
||||
msgstr "({0}) <0>— experimental</0>"
|
||||
|
||||
#: src/components/compose.jsx:2707
|
||||
#: src/components/compose.jsx:2739
|
||||
msgid "Done"
|
||||
msgstr "Concluído"
|
||||
|
||||
#. placeholder {0}: i + 1
|
||||
#: src/components/compose.jsx:2743
|
||||
#: src/components/compose.jsx:2775
|
||||
msgid "Choice {0}"
|
||||
msgstr "Escolha {0}"
|
||||
|
||||
#: src/components/compose.jsx:2790
|
||||
#: src/components/compose.jsx:2822
|
||||
msgid "Multiple choices"
|
||||
msgstr "Várias escolhas"
|
||||
|
||||
#: src/components/compose.jsx:2793
|
||||
#: src/components/compose.jsx:2825
|
||||
msgid "Duration"
|
||||
msgstr "Duração"
|
||||
|
||||
#: src/components/compose.jsx:2824
|
||||
#: src/components/compose.jsx:2856
|
||||
msgid "Remove poll"
|
||||
msgstr "Excluir enquete"
|
||||
|
||||
#: src/components/compose.jsx:3039
|
||||
#: src/components/compose.jsx:3071
|
||||
msgid "Search accounts"
|
||||
msgstr "Procurar contas"
|
||||
|
||||
#: src/components/compose.jsx:3093
|
||||
#: src/components/compose.jsx:3125
|
||||
#: src/components/generic-accounts.jsx:228
|
||||
msgid "Error loading accounts"
|
||||
msgstr "Erro ao carregar contas"
|
||||
|
||||
#: src/components/compose.jsx:3237
|
||||
#: src/components/compose.jsx:3269
|
||||
msgid "Custom emojis"
|
||||
msgstr "Emojis personalizados"
|
||||
|
||||
#: src/components/compose.jsx:3257
|
||||
#: src/components/compose.jsx:3289
|
||||
msgid "Search emoji"
|
||||
msgstr "Procurar emoji"
|
||||
|
||||
#: src/components/compose.jsx:3288
|
||||
#: src/components/compose.jsx:3320
|
||||
msgid "Error loading custom emojis"
|
||||
msgstr "Erro ao carregar emojis personalizados"
|
||||
|
||||
#: src/components/compose.jsx:3299
|
||||
#: src/components/compose.jsx:3331
|
||||
msgid "Recently used"
|
||||
msgstr "Usado recentemente"
|
||||
|
||||
#: src/components/compose.jsx:3300
|
||||
#: src/components/compose.jsx:3332
|
||||
msgid "Others"
|
||||
msgstr "Outros"
|
||||
|
||||
#. placeholder {0}: i18n.number(emojis.length - max)
|
||||
#: src/components/compose.jsx:3338
|
||||
#: src/components/compose.jsx:3370
|
||||
msgid "{0} more…"
|
||||
msgstr "{0} mais…"
|
||||
|
||||
#: src/components/compose.jsx:3476
|
||||
#: src/components/compose.jsx:3508
|
||||
msgid "Search GIFs"
|
||||
msgstr "Procurar GIFs"
|
||||
|
||||
#: src/components/compose.jsx:3491
|
||||
#: src/components/compose.jsx:3523
|
||||
msgid "Powered by GIPHY"
|
||||
msgstr "Desenvolvido por GIPHY"
|
||||
|
||||
#: src/components/compose.jsx:3499
|
||||
#: src/components/compose.jsx:3531
|
||||
msgid "Type to search GIFs"
|
||||
msgstr "Escreva para pesquisar GIFs"
|
||||
|
||||
#: src/components/compose.jsx:3597
|
||||
#: src/components/compose.jsx:3629
|
||||
#: src/components/media-modal.jsx:462
|
||||
#: src/components/timeline.jsx:893
|
||||
msgid "Previous"
|
||||
msgstr "Anterior"
|
||||
|
||||
#: src/components/compose.jsx:3615
|
||||
#: src/components/compose.jsx:3647
|
||||
#: src/components/media-modal.jsx:481
|
||||
#: src/components/timeline.jsx:910
|
||||
msgid "Next"
|
||||
msgstr "Seguinte"
|
||||
|
||||
#: src/components/compose.jsx:3632
|
||||
#: src/components/compose.jsx:3664
|
||||
msgid "Error loading GIFs"
|
||||
msgstr "Erro ao carregar GIFs"
|
||||
|
||||
|
@ -1410,6 +1410,7 @@ msgid "Accounts…"
|
|||
msgstr "Contas…"
|
||||
|
||||
#: src/components/nav-menu.jsx:315
|
||||
#: src/pages/login.jsx:27
|
||||
#: src/pages/login.jsx:190
|
||||
#: src/pages/status.jsx:837
|
||||
#: src/pages/welcome.jsx:65
|
||||
|
|
191
src/locales/pt-PT.po
generated
191
src/locales/pt-PT.po
generated
|
@ -8,7 +8,7 @@ msgstr ""
|
|||
"Language: pt\n"
|
||||
"Project-Id-Version: phanpy\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2024-12-22 00:30\n"
|
||||
"PO-Revision-Date: 2025-01-15 16:00\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Portuguese\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
@ -25,7 +25,7 @@ msgstr "Bloqueado"
|
|||
#. placeholder {0}: shortenNumber(statusesCount)
|
||||
#: src/components/account-block.jsx:142
|
||||
msgid "Posts: {0}"
|
||||
msgstr "Publicações: {0}"
|
||||
msgstr "Postagens: {0}"
|
||||
|
||||
#. placeholder {0}: niceDateTime(lastStatusAt, { hideTime: true, })
|
||||
#: src/components/account-block.jsx:147
|
||||
|
@ -76,7 +76,7 @@ msgstr "Verificado"
|
|||
#: src/components/account-block.jsx:223
|
||||
#: src/components/account-info.jsx:782
|
||||
msgid "Joined <0>{0}</0>"
|
||||
msgstr "Se juntou em <0>{0}</0>"
|
||||
msgstr "Juntou-se em <0>{0}</0>"
|
||||
|
||||
#: src/components/account-info.jsx:58
|
||||
msgid "Forever"
|
||||
|
@ -109,11 +109,11 @@ msgstr "A seguir"
|
|||
#: src/pages/search.jsx:328
|
||||
#: src/pages/search.jsx:475
|
||||
msgid "Posts"
|
||||
msgstr "Publicações"
|
||||
msgstr "Postagens"
|
||||
|
||||
#: src/components/account-info.jsx:429
|
||||
#: src/components/account-info.jsx:1120
|
||||
#: src/components/compose.jsx:2592
|
||||
#: src/components/compose.jsx:2624
|
||||
#: src/components/media-alt-modal.jsx:46
|
||||
#: src/components/media-modal.jsx:358
|
||||
#: src/components/status.jsx:1737
|
||||
|
@ -133,7 +133,7 @@ msgstr "Mais"
|
|||
|
||||
#: src/components/account-info.jsx:441
|
||||
msgid "<0>{displayName}</0> has indicated that their new account is now:"
|
||||
msgstr "<0>{displayName}</0> indicou que a nova conta é:"
|
||||
msgstr "A nova conta de <0>{displayName}</0> é:"
|
||||
|
||||
#: src/components/account-info.jsx:586
|
||||
#: src/components/account-info.jsx:1278
|
||||
|
@ -169,14 +169,14 @@ msgstr "Em memória"
|
|||
#: src/components/account-info.jsx:711
|
||||
#: src/components/account-info.jsx:752
|
||||
msgid "This user has chosen to not make this information available."
|
||||
msgstr "Este utilizador decidiu não fazer esta informação visível."
|
||||
msgstr "O utilizador deixou privado esta informação."
|
||||
|
||||
#. placeholder {0}: ( postingStats.originals / postingStats.total ).toLocaleString(i18n.locale || undefined, { style: 'percent', })
|
||||
#. placeholder {1}: ( postingStats.replies / postingStats.total ).toLocaleString(i18n.locale || undefined, { style: 'percent', })
|
||||
#. placeholder {2}: ( postingStats.boosts / postingStats.total ).toLocaleString(i18n.locale || undefined, { style: 'percent', })
|
||||
#: src/components/account-info.jsx:807
|
||||
msgid "{0} original posts, {1} replies, {2} boosts"
|
||||
msgstr "{0} publicações originais, {1} respostas, {2} impulsos"
|
||||
msgstr "{0} postagens originais, {1} respostas, {2} impulsos"
|
||||
|
||||
#. placeholder {0}: postingStats.total
|
||||
#. placeholder {1}: postingStats.daysSinceLastPost
|
||||
|
@ -187,13 +187,13 @@ msgstr "{0} publicações originais, {1} respostas, {2} impulsos"
|
|||
#. placeholder {6}: postingStats.daysSinceLastPost
|
||||
#: src/components/account-info.jsx:823
|
||||
msgid "{0, plural, one {{1, plural, one {Last 1 post in the past 1 day} other {Last 1 post in the past {2} days}}} other {{3, plural, one {Last {4} posts in the past 1 day} other {Last {5} posts in the past {6} days}}}}"
|
||||
msgstr "{0, plural, one {{1, plural, one {Última publicação no último dia} other {Última publicação nos últimos {2} dias}}} other {{3, plural, one {Últimas {4} publicações no último dia} other {Últimas {5} publicações nos últimos {6} dias}}}}"
|
||||
msgstr "{0, plural, one {{1, plural, one {Última postagem no último dia} other {Última postagem nos últimos {2} dias}}} other {{3, plural, one {Últimas {4} postagens no último dia} other {Últimas {5} postagens nos últimos {6} dias}}}}"
|
||||
|
||||
#. placeholder {0}: postingStats.total
|
||||
#. placeholder {1}: postingStats.total
|
||||
#: src/components/account-info.jsx:836
|
||||
msgid "{0, plural, one {Last 1 post in the past year(s)} other {Last {1} posts in the past year(s)}}"
|
||||
msgstr "{0, plural, one {Última publicação no(s) ano(s) passado(s)} other {Últimas {1} publicações no(s) ano(s) passado(s)}}"
|
||||
msgstr "{0, plural, one {Última postagem no(s) ano(s) passado(s)} other {Últimas {1} postagens no(s) ano(s) passado(s)}}"
|
||||
|
||||
#: src/components/account-info.jsx:860
|
||||
#: src/pages/catchup.jsx:70
|
||||
|
@ -220,7 +220,7 @@ msgstr "Impulsos"
|
|||
|
||||
#: src/components/account-info.jsx:874
|
||||
msgid "Post stats unavailable."
|
||||
msgstr "As estatísticas estão indisponíveis."
|
||||
msgstr "Estatísticas da publicação indisponíveis."
|
||||
|
||||
#: src/components/account-info.jsx:905
|
||||
msgid "View post stats"
|
||||
|
@ -261,11 +261,11 @@ msgstr "Adicionar nota privada"
|
|||
|
||||
#: src/components/account-info.jsx:1196
|
||||
msgid "Notifications enabled for @{username}'s posts."
|
||||
msgstr "Notificações ativadas para as publicações de @{username}."
|
||||
msgstr "Habilitado as notificações para postagens de @{username}."
|
||||
|
||||
#: src/components/account-info.jsx:1197
|
||||
msgid " Notifications disabled for @{username}'s posts."
|
||||
msgstr " Notificações desativadas para as publicações de @{username}."
|
||||
msgstr " Desabilitado as notificações de postagens de @{username}."
|
||||
|
||||
#: src/components/account-info.jsx:1209
|
||||
msgid "Disable notifications"
|
||||
|
@ -397,7 +397,7 @@ msgstr "Editar perfil"
|
|||
|
||||
#: src/components/account-info.jsx:1624
|
||||
msgid "Withdraw follow request?"
|
||||
msgstr "Eliminar pedido de seguimento?"
|
||||
msgstr "Eliminar pedido de seguir?"
|
||||
|
||||
#. placeholder {1}: info.acct || info.username
|
||||
#: src/components/account-info.jsx:1625
|
||||
|
@ -424,10 +424,10 @@ msgstr "Seguir"
|
|||
#: src/components/account-info.jsx:2098
|
||||
#: src/components/account-sheet.jsx:38
|
||||
#: src/components/compose.jsx:859
|
||||
#: src/components/compose.jsx:2548
|
||||
#: src/components/compose.jsx:3022
|
||||
#: src/components/compose.jsx:3231
|
||||
#: src/components/compose.jsx:3461
|
||||
#: src/components/compose.jsx:2580
|
||||
#: src/components/compose.jsx:3054
|
||||
#: src/components/compose.jsx:3263
|
||||
#: src/components/compose.jsx:3493
|
||||
#: src/components/drafts.jsx:59
|
||||
#: src/components/embed-modal.jsx:13
|
||||
#: src/components/generic-accounts.jsx:143
|
||||
|
@ -566,7 +566,7 @@ msgstr "Escrever"
|
|||
|
||||
#: src/components/compose.jsx:206
|
||||
msgid "Add media"
|
||||
msgstr "Adicionar media"
|
||||
msgstr "Adicionar multimédia"
|
||||
|
||||
#: src/components/compose.jsx:207
|
||||
msgid "Add custom emoji"
|
||||
|
@ -596,7 +596,7 @@ msgstr "{0, plural, one {O ficheiro {1} não é suportado.} other {Os ficheiros
|
|||
#: src/components/compose.jsx:1674
|
||||
#: src/components/compose.jsx:1760
|
||||
msgid "{maxMediaAttachments, plural, one {You can only attach up to 1 file.} other {You can only attach up to # files.}}"
|
||||
msgstr "{maxMediaAttachments, plural,one {Tu podes anexar até 1 ficheiro.} other {Tu podes anexar até # ficheiros.}}"
|
||||
msgstr "{maxMediaAttachments, plural,one {Só pode anexar até 1 ficheiro.} other {Só pode anexar até # ficheiros.}}"
|
||||
|
||||
#: src/components/compose.jsx:840
|
||||
msgid "Pop out"
|
||||
|
@ -647,7 +647,7 @@ msgstr "Algumas escolhas da enquete estão vazias"
|
|||
|
||||
#: src/components/compose.jsx:1034
|
||||
msgid "Some media have no descriptions. Continue?"
|
||||
msgstr "Algumas das medias não têm descrição. Prosseguir?"
|
||||
msgstr "Algumas multimédias não possuem descrições. Prosseguir?"
|
||||
|
||||
#: src/components/compose.jsx:1086
|
||||
msgid "Attachment #{i} failed"
|
||||
|
@ -661,7 +661,7 @@ msgstr "Alerta de conteúdo"
|
|||
|
||||
#: src/components/compose.jsx:1196
|
||||
msgid "Content warning or sensitive media"
|
||||
msgstr "Alerta de conteúdo ou media sensível"
|
||||
msgstr "Alerta de conteúdo ou multimédia sensível"
|
||||
|
||||
#: src/components/compose.jsx:1232
|
||||
#: src/components/status.jsx:93
|
||||
|
@ -704,14 +704,14 @@ msgstr "Editar publicação"
|
|||
|
||||
#: src/components/compose.jsx:1259
|
||||
msgid "What are you doing?"
|
||||
msgstr "O que tu fazes?"
|
||||
msgstr "O que faz?"
|
||||
|
||||
#: src/components/compose.jsx:1337
|
||||
msgid "Mark media as sensitive"
|
||||
msgstr "Marcar media como sensível"
|
||||
msgstr "Marcar multimédia como sensível"
|
||||
|
||||
#: src/components/compose.jsx:1381
|
||||
#: src/components/compose.jsx:3080
|
||||
#: src/components/compose.jsx:3112
|
||||
#: src/components/shortcuts-settings.jsx:715
|
||||
#: src/pages/list.jsx:362
|
||||
msgid "Add"
|
||||
|
@ -743,31 +743,31 @@ msgstr "A transferir GIF…"
|
|||
msgid "Failed to download GIF"
|
||||
msgstr "Falhou ao transferir GIF"
|
||||
|
||||
#: src/components/compose.jsx:1879
|
||||
#: src/components/compose.jsx:1956
|
||||
#: src/components/compose.jsx:1884
|
||||
#: src/components/compose.jsx:1961
|
||||
#: src/components/nav-menu.jsx:239
|
||||
msgid "More…"
|
||||
msgstr "Mais…"
|
||||
|
||||
#: src/components/compose.jsx:2361
|
||||
#: src/components/compose.jsx:2393
|
||||
msgid "Uploaded"
|
||||
msgstr "Enviado"
|
||||
|
||||
#: src/components/compose.jsx:2374
|
||||
#: src/components/compose.jsx:2406
|
||||
msgid "Image description"
|
||||
msgstr "Descrição da imagem"
|
||||
|
||||
#: src/components/compose.jsx:2375
|
||||
#: src/components/compose.jsx:2407
|
||||
msgid "Video description"
|
||||
msgstr "Descrição do vídeo"
|
||||
|
||||
#: src/components/compose.jsx:2376
|
||||
#: src/components/compose.jsx:2408
|
||||
msgid "Audio description"
|
||||
msgstr "Descrição do áudio"
|
||||
|
||||
#. placeholder {0}: prettyBytes( imageSize, )
|
||||
#. placeholder {1}: prettyBytes(imageSizeLimit)
|
||||
#: src/components/compose.jsx:2412
|
||||
#: src/components/compose.jsx:2444
|
||||
msgid "File size too large. Uploading might encounter issues. Try reduce the file size from {0} to {1} or lower."
|
||||
msgstr "O ficheiro é muito grande. Ao enviar pode enfrentar problemas. Tenta reduzir o tamanho de {0} a {1} ou mais baixo."
|
||||
|
||||
|
@ -775,13 +775,13 @@ msgstr "O ficheiro é muito grande. Ao enviar pode enfrentar problemas. Tenta re
|
|||
#. placeholder {3}: i18n.number(height)
|
||||
#. placeholder {4}: i18n.number(newWidth)
|
||||
#. placeholder {5}: i18n.number( newHeight, )
|
||||
#: src/components/compose.jsx:2424
|
||||
#: src/components/compose.jsx:2456
|
||||
msgid "Dimension too large. Uploading might encounter issues. Try reduce dimension from {2}×{3}px to {4}×{5}px."
|
||||
msgstr "A dimensão é muito grande. Ao enviar pode enfrentar problemas. Tenta reduzir a dimensão de {2}×{3}px para {4}×{5}px."
|
||||
|
||||
#. placeholder {6}: prettyBytes( videoSize, )
|
||||
#. placeholder {7}: prettyBytes(videoSizeLimit)
|
||||
#: src/components/compose.jsx:2432
|
||||
#: src/components/compose.jsx:2464
|
||||
msgid "File size too large. Uploading might encounter issues. Try reduce the file size from {6} to {7} or lower."
|
||||
msgstr "O ficheiro é muito grande. Ao enviar pode enfrentar problemas. Tenta reduzir o tamanho de {6} a {7} ou mais baixo."
|
||||
|
||||
|
@ -789,149 +789,149 @@ msgstr "O ficheiro é muito grande. Ao enviar pode enfrentar problemas. Tenta re
|
|||
#. placeholder {9}: i18n.number(height)
|
||||
#. placeholder {10}: i18n.number(newWidth)
|
||||
#. placeholder {11}: i18n.number( newHeight, )
|
||||
#: src/components/compose.jsx:2444
|
||||
#: src/components/compose.jsx:2476
|
||||
msgid "Dimension too large. Uploading might encounter issues. Try reduce dimension from {8}×{9}px to {10}×{11}px."
|
||||
msgstr "A dimensão é muito grande. Ao enviar pode enfrentar problemas. Tenta reduzir a dimensão de {8}×{9}px para {10}×{11}px."
|
||||
|
||||
#: src/components/compose.jsx:2452
|
||||
#: src/components/compose.jsx:2484
|
||||
msgid "Frame rate too high. Uploading might encounter issues."
|
||||
msgstr "A taxa de quadros está muito alta. Ao enviar pode enfrentar problemas."
|
||||
|
||||
#: src/components/compose.jsx:2512
|
||||
#: src/components/compose.jsx:2762
|
||||
#: src/components/compose.jsx:2544
|
||||
#: src/components/compose.jsx:2794
|
||||
#: src/components/shortcuts-settings.jsx:726
|
||||
#: src/pages/catchup.jsx:1074
|
||||
#: src/pages/filters.jsx:412
|
||||
msgid "Remove"
|
||||
msgstr "Eliminar"
|
||||
|
||||
#: src/components/compose.jsx:2529
|
||||
#: src/components/compose.jsx:2561
|
||||
#: src/compose.jsx:84
|
||||
msgid "Error"
|
||||
msgstr "Erro"
|
||||
|
||||
#: src/components/compose.jsx:2554
|
||||
#: src/components/compose.jsx:2586
|
||||
msgid "Edit image description"
|
||||
msgstr "Editar descrição da imagem"
|
||||
|
||||
#: src/components/compose.jsx:2555
|
||||
#: src/components/compose.jsx:2587
|
||||
msgid "Edit video description"
|
||||
msgstr "Editar descrição do vídeo"
|
||||
|
||||
#: src/components/compose.jsx:2556
|
||||
#: src/components/compose.jsx:2588
|
||||
msgid "Edit audio description"
|
||||
msgstr "Editar descrição do áudio"
|
||||
|
||||
#: src/components/compose.jsx:2601
|
||||
#: src/components/compose.jsx:2650
|
||||
#: src/components/compose.jsx:2633
|
||||
#: src/components/compose.jsx:2682
|
||||
msgid "Generating description. Please wait…"
|
||||
msgstr "A gerar descrição. Por favor, espere…"
|
||||
|
||||
#. placeholder {12}: e.message
|
||||
#: src/components/compose.jsx:2621
|
||||
#: src/components/compose.jsx:2653
|
||||
msgid "Failed to generate description: {12}"
|
||||
msgstr "Falhou ao gerar descrição: {12}"
|
||||
|
||||
#: src/components/compose.jsx:2622
|
||||
#: src/components/compose.jsx:2654
|
||||
msgid "Failed to generate description"
|
||||
msgstr "Falhou ao gerar descrição"
|
||||
|
||||
#: src/components/compose.jsx:2634
|
||||
#: src/components/compose.jsx:2640
|
||||
#: src/components/compose.jsx:2686
|
||||
#: src/components/compose.jsx:2666
|
||||
#: src/components/compose.jsx:2672
|
||||
#: src/components/compose.jsx:2718
|
||||
msgid "Generate description…"
|
||||
msgstr "Gerar descrição…"
|
||||
|
||||
#. placeholder {13}: e?.message ? `: ${e.message}` : ''
|
||||
#: src/components/compose.jsx:2673
|
||||
#: src/components/compose.jsx:2705
|
||||
msgid "Failed to generate description{13}"
|
||||
msgstr "Falhou ao gerar descrição{13}"
|
||||
|
||||
#. placeholder {0}: localeCode2Text(lang)
|
||||
#: src/components/compose.jsx:2688
|
||||
#: src/components/compose.jsx:2720
|
||||
msgid "({0}) <0>— experimental</0>"
|
||||
msgstr "({0}) <0>— experimental</0>"
|
||||
|
||||
#: src/components/compose.jsx:2707
|
||||
#: src/components/compose.jsx:2739
|
||||
msgid "Done"
|
||||
msgstr "Concluído"
|
||||
|
||||
#. placeholder {0}: i + 1
|
||||
#: src/components/compose.jsx:2743
|
||||
#: src/components/compose.jsx:2775
|
||||
msgid "Choice {0}"
|
||||
msgstr "Escolha {0}"
|
||||
|
||||
#: src/components/compose.jsx:2790
|
||||
#: src/components/compose.jsx:2822
|
||||
msgid "Multiple choices"
|
||||
msgstr "Várias escolhas"
|
||||
|
||||
#: src/components/compose.jsx:2793
|
||||
#: src/components/compose.jsx:2825
|
||||
msgid "Duration"
|
||||
msgstr "Duração"
|
||||
|
||||
#: src/components/compose.jsx:2824
|
||||
#: src/components/compose.jsx:2856
|
||||
msgid "Remove poll"
|
||||
msgstr "Eliminar enquete"
|
||||
|
||||
#: src/components/compose.jsx:3039
|
||||
#: src/components/compose.jsx:3071
|
||||
msgid "Search accounts"
|
||||
msgstr "Buscar contas"
|
||||
|
||||
#: src/components/compose.jsx:3093
|
||||
#: src/components/compose.jsx:3125
|
||||
#: src/components/generic-accounts.jsx:228
|
||||
msgid "Error loading accounts"
|
||||
msgstr "Erro ao carregar contas"
|
||||
|
||||
#: src/components/compose.jsx:3237
|
||||
#: src/components/compose.jsx:3269
|
||||
msgid "Custom emojis"
|
||||
msgstr "Emojis personalizados"
|
||||
|
||||
#: src/components/compose.jsx:3257
|
||||
#: src/components/compose.jsx:3289
|
||||
msgid "Search emoji"
|
||||
msgstr "Buscar emoji"
|
||||
|
||||
#: src/components/compose.jsx:3288
|
||||
#: src/components/compose.jsx:3320
|
||||
msgid "Error loading custom emojis"
|
||||
msgstr "Erro ao carregar emojis personalizados"
|
||||
|
||||
#: src/components/compose.jsx:3299
|
||||
#: src/components/compose.jsx:3331
|
||||
msgid "Recently used"
|
||||
msgstr "Usado recentemente"
|
||||
|
||||
#: src/components/compose.jsx:3300
|
||||
#: src/components/compose.jsx:3332
|
||||
msgid "Others"
|
||||
msgstr "Outros"
|
||||
|
||||
#. placeholder {0}: i18n.number(emojis.length - max)
|
||||
#: src/components/compose.jsx:3338
|
||||
#: src/components/compose.jsx:3370
|
||||
msgid "{0} more…"
|
||||
msgstr "{0} mais…"
|
||||
|
||||
#: src/components/compose.jsx:3476
|
||||
#: src/components/compose.jsx:3508
|
||||
msgid "Search GIFs"
|
||||
msgstr "Buscar GIFs"
|
||||
|
||||
#: src/components/compose.jsx:3491
|
||||
#: src/components/compose.jsx:3523
|
||||
msgid "Powered by GIPHY"
|
||||
msgstr "Desenvolvido por GIPHY"
|
||||
|
||||
#: src/components/compose.jsx:3499
|
||||
#: src/components/compose.jsx:3531
|
||||
msgid "Type to search GIFs"
|
||||
msgstr "Digite para buscar GIFs"
|
||||
|
||||
#: src/components/compose.jsx:3597
|
||||
#: src/components/compose.jsx:3629
|
||||
#: src/components/media-modal.jsx:462
|
||||
#: src/components/timeline.jsx:893
|
||||
msgid "Previous"
|
||||
msgstr "Anterior"
|
||||
|
||||
#: src/components/compose.jsx:3615
|
||||
#: src/components/compose.jsx:3647
|
||||
#: src/components/media-modal.jsx:481
|
||||
#: src/components/timeline.jsx:910
|
||||
msgid "Next"
|
||||
msgstr "Seguinte"
|
||||
|
||||
#: src/components/compose.jsx:3632
|
||||
#: src/components/compose.jsx:3664
|
||||
msgid "Error loading GIFs"
|
||||
msgstr "Erro ao carregar GIFs"
|
||||
|
||||
|
@ -987,7 +987,7 @@ msgstr "Enquete"
|
|||
#: src/components/drafts.jsx:250
|
||||
#: src/pages/account-statuses.jsx:364
|
||||
msgid "Media"
|
||||
msgstr "Media"
|
||||
msgstr "Multimédia"
|
||||
|
||||
#: src/components/embed-modal.jsx:23
|
||||
msgid "Open in new window"
|
||||
|
@ -1076,7 +1076,7 @@ msgstr "<0>Shift</0> + <1>k</1>"
|
|||
|
||||
#: src/components/keyboard-shortcuts-help.jsx:80
|
||||
msgid "Load new posts"
|
||||
msgstr "Carregar novas publicações"
|
||||
msgstr "Ver novas postagens"
|
||||
|
||||
#: src/components/keyboard-shortcuts-help.jsx:84
|
||||
#: src/pages/catchup.jsx:1676
|
||||
|
@ -1214,7 +1214,7 @@ msgstr "Não mostrar respostas"
|
|||
|
||||
#: src/components/list-add-edit.jsx:144
|
||||
msgid "Hide posts on this list from Home/Following"
|
||||
msgstr "Ocultar publicações nesta lista da página inicial/A seguir"
|
||||
msgstr "Ocultar postagens nesta lista da página inicial/A seguir"
|
||||
|
||||
#: src/components/list-add-edit.jsx:150
|
||||
#: src/pages/filters.jsx:554
|
||||
|
@ -1232,7 +1232,7 @@ msgstr "Impossível eliminar lista."
|
|||
#: src/components/media-alt-modal.jsx:39
|
||||
#: src/components/media.jsx:51
|
||||
msgid "Media description"
|
||||
msgstr "Descrição da media"
|
||||
msgstr "Descrição da multimédia"
|
||||
|
||||
#: src/components/media-alt-modal.jsx:58
|
||||
#: src/components/status.jsx:1066
|
||||
|
@ -1249,15 +1249,15 @@ msgstr "Falar"
|
|||
|
||||
#: src/components/media-modal.jsx:369
|
||||
msgid "Open original media in new window"
|
||||
msgstr "Abrir media original em nova janela"
|
||||
msgstr "Abrir multimédia original em nova janela"
|
||||
|
||||
#: src/components/media-modal.jsx:373
|
||||
msgid "Open original media"
|
||||
msgstr "Abrir media original"
|
||||
msgstr "Abrir multimédia original"
|
||||
|
||||
#: src/components/media-modal.jsx:389
|
||||
msgid "Attempting to describe image. Please wait…"
|
||||
msgstr "A tentar descrever imagem. Por favor, espere…"
|
||||
msgstr "A descrever imagem. Por favor, espere…"
|
||||
|
||||
#: src/components/media-modal.jsx:404
|
||||
msgid "Failed to describe image"
|
||||
|
@ -1273,7 +1273,7 @@ msgstr "Ver publicação"
|
|||
|
||||
#: src/components/media-post.jsx:128
|
||||
msgid "Sensitive media"
|
||||
msgstr "Media sensível"
|
||||
msgstr "Multimédia sensível"
|
||||
|
||||
#: src/components/media-post.jsx:133
|
||||
msgid "Filtered: {filterTitleStr}"
|
||||
|
@ -1410,6 +1410,7 @@ msgid "Accounts…"
|
|||
msgstr "Contas…"
|
||||
|
||||
#: src/components/nav-menu.jsx:315
|
||||
#: src/pages/login.jsx:27
|
||||
#: src/pages/login.jsx:190
|
||||
#: src/pages/status.jsx:837
|
||||
#: src/pages/welcome.jsx:65
|
||||
|
@ -1477,7 +1478,7 @@ msgstr "{account} fez uma publicação."
|
|||
#. placeholder {1}: shortenNumber(count)
|
||||
#: src/components/notification.jsx:86
|
||||
msgid "{count, plural, =1 {{postsCount, plural, =1 {{postType, select, reply {{account} boosted your reply.} other {{account} boosted your post.}}} other {{account} boosted {postsCount} of your posts.}}} other {{postType, select, reply {<0><1>{0}</1> people</0> boosted your reply.} other {<2><3>{1}</3> people</2> boosted your post.}}}}"
|
||||
msgstr "{count, plural, =1 {{postsCount, plural, =1 {{postType, select, reply {{account} impulsionou a sua resposta.} other {{account} impulsionou a sua publicação.}}} other {{account} impulsionou {postsCount} das suas publicações.}}} other {{postType, select, reply {<0><1>{0}</1> pessoa(s)</0> impulsionou a sua resposta.} other {<2><3>{1}</3> pessoa(s)</2> impulsionou a sua publicação.}}}}"
|
||||
msgstr "{count, plural, =1 {{postsCount, plural, =1 {{postType, select, reply {{account} impulsionou a sua resposta.} other {{account} impulsionou a sua postagem.}}} other {{account} impulsionou {postsCount} das suas postagens.}}} other {{postType, select, reply {<0><1>{0}</1> pessoa(s)</0> impulsionou a sua resposta.} other {<2><3>{1}</3> pessoa(s)</2> impulsionou a sua postagem.}}}}"
|
||||
|
||||
#. placeholder {0}: shortenNumber(count)
|
||||
#: src/components/notification.jsx:129
|
||||
|
@ -1492,7 +1493,7 @@ msgstr "{account} pediu para seguir-te."
|
|||
#. placeholder {1}: shortenNumber(count)
|
||||
#: src/components/notification.jsx:152
|
||||
msgid "{count, plural, =1 {{postsCount, plural, =1 {{postType, select, reply {{account} liked your reply.} other {{account} liked your post.}}} other {{account} liked {postsCount} of your posts.}}} other {{postType, select, reply {<0><1>{0}</1> people</0> liked your reply.} other {<2><3>{1}</3> people</2> liked your post.}}}}"
|
||||
msgstr "{count, plural, =1 {{postsCount, plural, =1 {{postType, select, reply {{account} gostou da sua resposta.} other {{account} gostou de sua publicação.}}} other {{account} gostou de {postsCount} de suas publicações.}}} other {{postType, select, reply {<0><1>{0}</1> pessoa(s)</0> gostou da sua resposta.} other {<2><3>{1}</3> pessoa(s)</2> gostou da sua publicação.}}}}"
|
||||
msgstr "{count, plural, =1 {{postsCount, plural, =1 {{postType, select, reply {{account} gostou da sua resposta.} other {{account} gostou da sua postagem.}}} other {{account} gostou de {postsCount} das suas postagens.}}} other {{postType, select, reply {<0><1>{0}</1> pessoa(s)</0> gostou da sua resposta.} other {<2><3>{1}</3> pessoa(s)</2> gostou da sua postagens.}}}}"
|
||||
|
||||
#: src/components/notification.jsx:194
|
||||
msgid "A poll you have voted in or created has ended."
|
||||
|
@ -1514,7 +1515,7 @@ msgstr "Uma publicação que interagiste foi editada."
|
|||
#. placeholder {1}: shortenNumber(count)
|
||||
#: src/components/notification.jsx:205
|
||||
msgid "{count, plural, =1 {{postsCount, plural, =1 {{postType, select, reply {{account} boosted & liked your reply.} other {{account} boosted & liked your post.}}} other {{account} boosted & liked {postsCount} of your posts.}}} other {{postType, select, reply {<0><1>{0}</1> people</0> boosted & liked your reply.} other {<2><3>{1}</3> people</2> boosted & liked your post.}}}}"
|
||||
msgstr "{count, plural, =1 {{postsCount, plural, =1 {{postType, select, reply {{account} impulsionou e gostou da sua resposta.} other {{account} impulsionou e gostou da sua publicação.}}} other {{account} impulsionou e gostou de {postsCount} de suas publicações.}}} other {{postType, select, reply {<0><1>{0}</1> pessoa(s)</0> impulsionou e gostou da sua resposta.} other {<2><3>{1}</3> pessoa(s)</2> impulsionou e gostou da sua publicação.}}}}"
|
||||
msgstr "{count, plural, =1 {{postsCount, plural, =1 {{postType, select, reply {{account} impulsionou e gostou da sua resposta.} other {{account} impulsionou e gostou da sua postagem.}}} other {{account} impulsionou e gostou de {postsCount} das suas postagens.}}} other {{postType, select, reply {<0><1>{0}</1> pessoa(s)</0> impulsionou e gostou da sua resposta.} other {<2><3>{1}</3> pessoa(s)</2> impulsionou e gostou da sua postagem.}}}}"
|
||||
|
||||
#: src/components/notification.jsx:247
|
||||
msgid "{account} signed up."
|
||||
|
@ -1559,15 +1560,15 @@ msgstr "A sua conta foi desativada."
|
|||
|
||||
#: src/components/notification.jsx:293
|
||||
msgid "Some of your posts have been marked as sensitive."
|
||||
msgstr "Algumas das suas publicações foram marcadas como sensível."
|
||||
msgstr "Algumas das suas postagens foram marcados como sensíveis."
|
||||
|
||||
#: src/components/notification.jsx:294
|
||||
msgid "Some of your posts have been deleted."
|
||||
msgstr "Algumas publicações suas foram eliminadas."
|
||||
msgstr "Algumas das suas postagens foram eliminadas."
|
||||
|
||||
#: src/components/notification.jsx:295
|
||||
msgid "Your posts will be marked as sensitive from now on."
|
||||
msgstr "Agora as suas publicações serão marcadas como sensíveis."
|
||||
msgstr "Agora as suas postagens serão marcadas como sensíveis."
|
||||
|
||||
#: src/components/notification.jsx:296
|
||||
msgid "Your account has been limited."
|
||||
|
@ -1799,7 +1800,7 @@ msgstr "Enviar relato <0>+ Bloquear perfil</0>"
|
|||
|
||||
#: src/components/search-form.jsx:203
|
||||
msgid "{query} <0>‒ accounts, hashtags & posts</0>"
|
||||
msgstr "{query} <0>‒ contas, hashtags e publicações</0>"
|
||||
msgstr "{query} <0>‒ contas, hashtags e postagens</0>"
|
||||
|
||||
#: src/components/search-form.jsx:216
|
||||
msgid "Posts with <0>{query}</0>"
|
||||
|
@ -1870,7 +1871,7 @@ msgstr "ex.: PixelArt (Máx. 5, espaço separado)"
|
|||
#: src/components/shortcuts-settings.jsx:117
|
||||
#: src/pages/hashtag.jsx:356
|
||||
msgid "Media only"
|
||||
msgstr "Apenas media"
|
||||
msgstr "Somente multimédia"
|
||||
|
||||
#: src/components/shortcuts-settings.jsx:235
|
||||
#: src/components/shortcuts.jsx:192
|
||||
|
@ -2152,7 +2153,7 @@ msgstr "Citar"
|
|||
#: src/components/status.jsx:961
|
||||
#: src/components/status.jsx:2437
|
||||
msgid "Some media have no descriptions."
|
||||
msgstr "Algumas das medias não têm descrição."
|
||||
msgstr "Algumas multimédias não possuem descrições."
|
||||
|
||||
#. placeholder {0}: rtf.format(-statusMonthsAgo, 'month')
|
||||
#: src/components/status.jsx:968
|
||||
|
@ -2331,7 +2332,7 @@ msgstr "Mostrar conteúdo"
|
|||
|
||||
#: src/components/status.jsx:2173
|
||||
msgid "Show media"
|
||||
msgstr "Mostrar media"
|
||||
msgstr "Mostrar multimédia"
|
||||
|
||||
#: src/components/status.jsx:2310
|
||||
msgid "Edited"
|
||||
|
@ -2373,7 +2374,7 @@ msgstr "Impossível copiar código HTML"
|
|||
|
||||
#: src/components/status.jsx:3275
|
||||
msgid "Media attachments:"
|
||||
msgstr "Anexos de media:"
|
||||
msgstr "Anexos de multimédia:"
|
||||
|
||||
#: src/components/status.jsx:3297
|
||||
msgid "Account Emojis:"
|
||||
|
@ -2402,7 +2403,7 @@ msgstr "Votações não são interativas, ela vira uma lista com contador de vot
|
|||
|
||||
#: src/components/status.jsx:3402
|
||||
msgid "Media attachments can be images, videos, audios or any file types."
|
||||
msgstr "Anexos de media pode ser imagens, vídeos, áudios, e qualquer tipo de ficheiro."
|
||||
msgstr "Anexos de multimédia pode ser imagens, vídeos, áudios, e qualquer tipo de ficheiro."
|
||||
|
||||
#: src/components/status.jsx:3408
|
||||
msgid "Post could be edited or deleted later."
|
||||
|
@ -2525,7 +2526,7 @@ msgstr "{accountDisplay} (#{tagged})"
|
|||
|
||||
#: src/pages/account-statuses.jsx:245
|
||||
msgid "{accountDisplay} (Media)"
|
||||
msgstr "{accountDisplay} (Media)"
|
||||
msgstr "{accountDisplay} (Multimédia)"
|
||||
|
||||
#: src/pages/account-statuses.jsx:251
|
||||
msgid "{accountDisplay} ({monthYear})"
|
||||
|
@ -2557,7 +2558,7 @@ msgstr "- Impulsos"
|
|||
|
||||
#: src/pages/account-statuses.jsx:359
|
||||
msgid "Showing posts with media"
|
||||
msgstr "A exibir publicações com media"
|
||||
msgstr "A exibir publicações com multimédia"
|
||||
|
||||
#. placeholder {0}: tag.name
|
||||
#: src/pages/account-statuses.jsx:376
|
||||
|
@ -3062,7 +3063,7 @@ msgstr "Impossível carregar publicações."
|
|||
|
||||
#: src/pages/hashtag.jsx:56
|
||||
msgid "{hashtagTitle} (Media only) on {instance}"
|
||||
msgstr "{hashtagTitle} (Apenas media) em {instance}"
|
||||
msgstr "{hashtagTitle} (Somente multimédia) em {instance}"
|
||||
|
||||
#: src/pages/hashtag.jsx:57
|
||||
msgid "{hashtagTitle} on {instance}"
|
||||
|
@ -3070,7 +3071,7 @@ msgstr "{hashtagTitle} em {instance}"
|
|||
|
||||
#: src/pages/hashtag.jsx:59
|
||||
msgid "{hashtagTitle} (Media only)"
|
||||
msgstr "{hashtagTitle} (Apenas media)"
|
||||
msgstr "{hashtagTitle} (Somente multimédia)"
|
||||
|
||||
#: src/pages/hashtag.jsx:60
|
||||
msgid "{hashtagTitle}"
|
||||
|
@ -3573,7 +3574,7 @@ msgstr "Tradução automática"
|
|||
|
||||
#: src/pages/settings.jsx:518
|
||||
msgid "Automatically show translation for posts in timeline. Only works for <0>short</0> posts without content warning, media and poll."
|
||||
msgstr "Automaticamente exibe tradução para publicações na linha de tempo. Só funciona para publicações <0>curtas</0> sem aviso de conteúdo, media ou enquete."
|
||||
msgstr "Automaticamente exibe tradução para publicações na linha de tempo. Só funciona para publicações <0>curtas</0> sem aviso de conteúdo, multimédia ou enquete."
|
||||
|
||||
#: src/pages/settings.jsx:538
|
||||
msgid "GIF Picker for composer"
|
||||
|
|
|
@ -1192,7 +1192,7 @@ function Catchup() {
|
|||
key={url}
|
||||
href={url}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
rel="noopener"
|
||||
class="link-block"
|
||||
style={
|
||||
accentColor
|
||||
|
|
|
@ -68,7 +68,7 @@ export default function HttpRoute() {
|
|||
<Trans>Resolving…</Trans>
|
||||
</h2>
|
||||
<p>
|
||||
<a href={url} target="_blank" rel="noopener noreferrer">
|
||||
<a href={url} target="_blank" rel="noopener">
|
||||
{url}
|
||||
</a>
|
||||
</p>
|
||||
|
@ -79,7 +79,7 @@ export default function HttpRoute() {
|
|||
<Trans>Unable to resolve URL</Trans>
|
||||
</h2>
|
||||
<p>
|
||||
<a href={url} target="_blank" rel="noopener noreferrer">
|
||||
<a href={url} target="_blank" rel="noopener">
|
||||
{url}
|
||||
</a>
|
||||
</p>
|
||||
|
|
|
@ -24,7 +24,7 @@ const { PHANPY_DEFAULT_INSTANCE: DEFAULT_INSTANCE } = import.meta.env;
|
|||
|
||||
function Login() {
|
||||
const { t } = useLingui();
|
||||
useTitle('Log in');
|
||||
useTitle(t`Log in`, '/login');
|
||||
const instanceURLRef = useRef();
|
||||
const cachedInstanceURL = store.local.get('instanceURL');
|
||||
const [uiState, setUIState] = useState('default');
|
||||
|
|
|
@ -250,7 +250,7 @@ function Settings({ onClose }) {
|
|||
<a
|
||||
href="https://crowdin.com/project/phanpy"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
rel="noopener"
|
||||
>
|
||||
<Trans>Volunteer translations</Trans>
|
||||
</a>
|
||||
|
@ -324,7 +324,7 @@ function Settings({ onClose }) {
|
|||
<a
|
||||
href={`https://${instance}/`}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
rel="noopener"
|
||||
>
|
||||
Go to your instance ({instance}) for more settings.
|
||||
</a>
|
||||
|
@ -483,7 +483,7 @@ function Settings({ onClose }) {
|
|||
<a
|
||||
href="https://github.com/cheeaun/lingva-api"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
rel="noopener"
|
||||
>
|
||||
Lingva API
|
||||
</a>{' '}
|
||||
|
@ -491,7 +491,7 @@ function Settings({ onClose }) {
|
|||
<a
|
||||
href="https://github.com/thedaviddelta/lingva-translate"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
rel="noopener"
|
||||
>
|
||||
Lingva Translate
|
||||
</a>
|
||||
|
@ -545,7 +545,7 @@ function Settings({ onClose }) {
|
|||
<a
|
||||
href="https://developers.giphy.com/"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
rel="noopener"
|
||||
>
|
||||
GIPHY
|
||||
</a>
|
||||
|
@ -585,7 +585,7 @@ function Settings({ onClose }) {
|
|||
<a
|
||||
href="https://github.com/cheeaun/img-alt-api"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
rel="noopener"
|
||||
>
|
||||
img-alt-api
|
||||
</a>
|
||||
|
@ -728,7 +728,7 @@ function Settings({ onClose }) {
|
|||
<a
|
||||
href="https://hachyderm.io/@phanpy"
|
||||
// target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
rel="noopener"
|
||||
onClick={(e) => {
|
||||
e.preventDefault();
|
||||
states.showAccount = 'phanpy@hachyderm.io';
|
||||
|
@ -741,7 +741,7 @@ function Settings({ onClose }) {
|
|||
<a
|
||||
href="https://github.com/cheeaun/phanpy"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
rel="noopener"
|
||||
>
|
||||
Built
|
||||
</a>{' '}
|
||||
|
@ -749,7 +749,7 @@ function Settings({ onClose }) {
|
|||
<a
|
||||
href="https://mastodon.social/@cheeaun"
|
||||
// target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
rel="noopener"
|
||||
onClick={(e) => {
|
||||
e.preventDefault();
|
||||
states.showAccount = 'cheeaun@mastodon.social';
|
||||
|
@ -764,7 +764,7 @@ function Settings({ onClose }) {
|
|||
<a
|
||||
href="https://github.com/sponsors/cheeaun"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
rel="noopener"
|
||||
>
|
||||
<Trans>Sponsor</Trans>
|
||||
</a>{' '}
|
||||
|
@ -772,7 +772,7 @@ function Settings({ onClose }) {
|
|||
<a
|
||||
href="https://www.buymeacoffee.com/cheeaun"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
rel="noopener"
|
||||
>
|
||||
<Trans>Donate</Trans>
|
||||
</a>{' '}
|
||||
|
@ -780,16 +780,12 @@ function Settings({ onClose }) {
|
|||
<a
|
||||
href="https://patreon.com/cheeaun"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
rel="noopener"
|
||||
>
|
||||
Patreon
|
||||
</a>{' '}
|
||||
·{' '}
|
||||
<a
|
||||
href={PRIVACY_POLICY_URL}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
<a href={PRIVACY_POLICY_URL} target="_blank" rel="noopener">
|
||||
<Trans>Privacy Policy</Trans>
|
||||
</a>
|
||||
</p>
|
||||
|
@ -832,7 +828,7 @@ function Settings({ onClose }) {
|
|||
<a
|
||||
href={`https://github.com/cheeaun/phanpy/commit/${__COMMIT_HASH__}`}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
rel="noopener"
|
||||
>
|
||||
<RelativeTime datetime={new Date(__BUILD_TIME__)} />
|
||||
</a>
|
||||
|
@ -984,10 +980,10 @@ function PushNotificationsSection({ onClose }) {
|
|||
const policyEl = elements.namedItem('policy');
|
||||
if (policyEl) policyEl.value = policy;
|
||||
// alerts is {}, iterate it
|
||||
Object.keys(alerts).forEach((alert) => {
|
||||
Object.entries(alerts).forEach(([alert, value]) => {
|
||||
const el = elements.namedItem(alert);
|
||||
if (el?.type === 'checkbox') {
|
||||
el.checked = true;
|
||||
el.checked = !!value;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
@ -274,7 +274,7 @@ function Trending({ columnMode, ...props }) {
|
|||
ref={currentLink === url ? currentLinkRef : null}
|
||||
href={url}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
rel="noopener"
|
||||
class={`link-block ${
|
||||
hasCurrentLink
|
||||
? currentLink === url
|
||||
|
@ -353,7 +353,7 @@ function Trending({ columnMode, ...props }) {
|
|||
<a
|
||||
href={authorUrl}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
rel="noopener"
|
||||
>
|
||||
{authorName}
|
||||
</a>
|
||||
|
|
|
@ -218,7 +218,7 @@ function _enhanceContent(content, opts = {}) {
|
|||
if (TWITTER_MENTION_REGEX.test(html)) {
|
||||
html = html.replaceAll(
|
||||
TWITTER_MENTION_CAPTURE_REGEX,
|
||||
'<a href="https://twitter.com/$2" rel="nofollow noopener noreferrer" target="_blank">$1</a>',
|
||||
'<a href="https://twitter.com/$2" rel="nofollow noopener" target="_blank">$1</a>',
|
||||
);
|
||||
}
|
||||
fauxDiv.innerHTML = html;
|
||||
|
|
|
@ -8,6 +8,7 @@ export default function isMastodonLinkMaybe(url) {
|
|||
/^\/(notice|objects)\/[a-z0-9-]+$/i.test(pathname) || // Pleroma
|
||||
/^\/@[^/]+\/post\/[a-z0-9\-_]+$/i.test(pathname) || // Threads
|
||||
/^\/@[^/]+\/[a-z0-9]+[a-z0-9\-]+[a-z0-9]+$/i.test(pathname) || // Hollo
|
||||
/^\/ap\/note\/[a-z0-9\-_]+$/i.test(pathname) || // BotKit, Fedify
|
||||
(hostname === 'fed.brid.gy' && pathname.startsWith('/r/http')) || // Bridgy Fed
|
||||
/#\/[^\/]+\.[^\/]+\/s\/.+/i.test(hash) // Phanpy 🫣
|
||||
);
|
||||
|
|
|
@ -4,7 +4,7 @@ import { resolve } from 'path';
|
|||
|
||||
import { lingui } from '@lingui/vite-plugin';
|
||||
import preact from '@preact/preset-vite';
|
||||
import { SondaRollupPlugin } from 'sonda';
|
||||
import Sonda from 'sonda/vite';
|
||||
import { uid } from 'uid/single';
|
||||
import { defineConfig, loadEnv, splitVendorChunkPlugin } from 'vite';
|
||||
import generateFile from 'vite-plugin-generate-file';
|
||||
|
@ -21,6 +21,7 @@ const {
|
|||
PHANPY_WEBSITE: WEBSITE,
|
||||
PHANPY_CLIENT_NAME: CLIENT_NAME,
|
||||
PHANPY_APP_ERROR_LOGGING: ERROR_LOGGING,
|
||||
PHANPY_REFERRER_POLICY: REFERRER_POLICY,
|
||||
} = loadEnv('production', process.cwd(), allowedEnvPrefixes);
|
||||
|
||||
const now = new Date();
|
||||
|
@ -86,6 +87,13 @@ export default defineConfig({
|
|||
includes: ['log', 'debug', 'info', 'warn', 'error'],
|
||||
}),
|
||||
htmlPlugin({
|
||||
metas: [
|
||||
// Learn more: https://web.dev/articles/referrer-best-practices
|
||||
{
|
||||
name: 'referrer',
|
||||
content: REFERRER_POLICY || 'origin',
|
||||
},
|
||||
],
|
||||
headScripts: ERROR_LOGGING ? [rollbarCode] : [],
|
||||
links: [
|
||||
...ALL_LOCALES.map((lang) => ({
|
||||
|
@ -150,7 +158,7 @@ export default defineConfig({
|
|||
type: 'module',
|
||||
},
|
||||
}),
|
||||
SondaRollupPlugin({
|
||||
Sonda({
|
||||
detailed: true,
|
||||
brotli: true,
|
||||
}),
|
||||
|
|
Loading…
Reference in a new issue