Merge pull request #2822 from davotoula/feat/update-translations-and-find-missing-translations-skill
Update translations and the find missing translations skill
This commit is contained in:
@@ -67,7 +67,62 @@ done < <(comm -23 \
|
||||
| sed 's/.*name="\([^"]*\)".*/\1/' | sort))
|
||||
```
|
||||
|
||||
### 4. Present results and ask to translate
|
||||
### 4. Audit missing strings for plural-shaped patterns
|
||||
|
||||
Before presenting results, **scan the missing English strings** for two red-flag patterns and warn the user about each match:
|
||||
|
||||
1. **Hardcoded `"1"` next to a noun.** A new English string like `"1 reply"`, `"1 follower"`, or `"1 minute ago"` almost always belongs in a `<plurals>` resource — not a `<string>`. Hardcoding `1` in English forces every translator to either also hardcode `1` (breaking languages where the `one` category covers other numbers, e.g. some Slavic languages) or to silently change the meaning.
|
||||
2. **A `%d` / `%1$d` placeholder in a clearly singular/plural sentence** (e.g. `"%1$d reply"`, `"%d follower"`). Even though the placeholder is parameterised, English-only `one`/`other` agreement won't survive translation into languages that need `few`/`many`.
|
||||
|
||||
Also **audit existing `<plurals>` resources** for the same anti-pattern — any locale's `quantity="one"` item that hardcodes the literal `1` (instead of using a `%d` / `%1$d` placeholder) is broken for languages where the `one` CLDR category covers more than just `n=1` (Russian, Ukrainian, Croatian, etc.). Flag and offer to fix:
|
||||
|
||||
```bash
|
||||
# Scan every locale's strings.xml for <item quantity="one"> entries that
|
||||
# hardcode "1" (or other literal digits) instead of using a placeholder.
|
||||
# Looks at default + all values-* locales.
|
||||
for f in amethyst/src/main/res/values/strings.xml amethyst/src/main/res/values-*/strings.xml; do
|
||||
awk -v file="$f" '
|
||||
/<plurals/ { in_plurals = 1; name = $0; sub(/.*name="/, "", name); sub(/".*/, "", name) }
|
||||
in_plurals && /quantity="one"/ {
|
||||
# Extract item text (between > and <)
|
||||
text = $0; sub(/^[^>]*>/, "", text); sub(/<.*$/, "", text)
|
||||
# Flag if it contains a digit AND no %d / %1$d placeholder
|
||||
if (text ~ /[0-9]/ && text !~ /%[0-9]*\$?d/) {
|
||||
print file ": <plurals name=\"" name "\"> one=\"" text "\""
|
||||
}
|
||||
}
|
||||
/<\/plurals>/ { in_plurals = 0 }
|
||||
' "$f"
|
||||
done
|
||||
```
|
||||
|
||||
Quick scan over the missing keys:
|
||||
|
||||
```bash
|
||||
# Flag missing English values that look like they should be <plurals>
|
||||
while IFS= read -r key; do
|
||||
line=$(grep "name=\"$key\"" amethyst/src/main/res/values/strings.xml)
|
||||
# Hardcoded standalone "1" (word-boundary), or a count placeholder followed by a likely-countable noun
|
||||
if echo "$line" | grep -qE '>([^<]*\b1\b[^<]*|[^<]*%[0-9]*\$?d[^<]*)<'; then
|
||||
echo "PLURAL CANDIDATE: $line"
|
||||
fi
|
||||
done < <(comm -23 \
|
||||
<(grep '<string name=' amethyst/src/main/res/values/strings.xml \
|
||||
| grep -v 'translatable="false"' \
|
||||
| sed 's/.*name="\([^"]*\)".*/\1/' | sort) \
|
||||
<(grep '<string name=' amethyst/src/main/res/values-cs-rCZ/strings.xml \
|
||||
| sed 's/.*name="\([^"]*\)".*/\1/' | sort))
|
||||
```
|
||||
|
||||
The regex is intentionally noisy — review each hit by hand. Many `%d` strings (e.g. `"Limits for kind %1$d"`, `"Max event size (bytes)"`) are *not* plural-bearing. Only flag the ones whose surrounding noun changes form with the count.
|
||||
|
||||
For each genuine match, **stop and warn the user before translating**, e.g.:
|
||||
|
||||
> ⚠️ `notification_count` is `"1 new reply"` — this hardcodes `"1"` and should likely be a `<plurals>` resource (e.g. `quantity="one"` → `"%d new reply"`, `quantity="other"` → `"%d new replies"`). Convert before translating?
|
||||
|
||||
Do not silently translate plural-shaped `<string>` entries; the wrong shape will then need to be fixed in every locale.
|
||||
|
||||
### 5. Present results and ask to translate
|
||||
|
||||
Output the missing entries as raw XML resource lines (copy-paste ready):
|
||||
|
||||
@@ -79,9 +134,24 @@ Output the missing entries as raw XML resource lines (copy-paste ready):
|
||||
|
||||
Also check `<string-array>` and `<plurals>` tags using the same approach if the project uses them.
|
||||
|
||||
#### Plurals: handle with care
|
||||
|
||||
When adding or proposing **`<plurals>`** entries, follow these rules:
|
||||
|
||||
- **Never hardcode `"1"`** in the English text of a `quantity="one"` item. Use the format placeholder (e.g. `%1$d` / `%d`) so the runtime substitutes the actual count. Hardcoding `"1"` breaks every language whose `one` category covers numbers other than 1 (e.g. some Slavic languages).
|
||||
- **Don't assume `one` + `other` is enough.** CLDR plural categories vary by language: `zero`, `one`, `two`, `few`, `many`, `other`. Always include **every category the target language uses**, not just the categories present in English. Examples:
|
||||
- English (`en`): `one`, `other`
|
||||
- Czech (`cs`): `one`, `few`, `many`, `other`
|
||||
- Polish (`pl`): `one`, `few`, `many`, `other`
|
||||
- Russian (`ru`): `one`, `few`, `many`, `other`
|
||||
- Arabic (`ar`): `zero`, `one`, `two`, `few`, `many`, `other`
|
||||
- German / Swedish / Brazilian Portuguese: `one`, `other`
|
||||
- When a missing string contains a count placeholder and is conceptually a singular/plural pair, **flag it before translating** — it may belong as a `<plurals>` resource rather than a single `<string>`. Surface this to the user before proposing translations.
|
||||
- Reference: [Android `<plurals>` docs](https://developer.android.com/guide/topics/resources/string-resource#Plurals) and [CLDR plural rules](https://unicode-org.github.io/cldr-staging/charts/latest/supplemental/language_plural_rules.html).
|
||||
|
||||
**Then ask the user:** "Would you like me to translate these missing strings into [list of target locales]?"
|
||||
|
||||
### 5. Adding translations (if approved)
|
||||
### 6. Adding translations (if approved)
|
||||
|
||||
When adding translated strings to locale files:
|
||||
|
||||
@@ -93,4 +163,6 @@ When adding translated strings to locale files:
|
||||
- **Forgetting `translatable="false"`** — these should never appear in locale files
|
||||
- **Not checking string-arrays/plurals** — only checking `<string>` misses other resource types
|
||||
- **Diffing each locale separately** — only diff against `cs-rCZ`; assume the same keys are missing everywhere
|
||||
- **Inserting strings in a specific position** — always append at the bottom; ordering is handled separately
|
||||
- **Inserting strings in a specific position** — always append at the bottom; ordering is handled separately
|
||||
- **Hardcoding `"1"` in a `<plurals>` `quantity="one"` item** — always use the count placeholder; otherwise non-English `one` categories produce wrong text
|
||||
- **Copying English's `one`/`other` set into every locale** — each language must include all CLDR plural categories it uses (e.g. Czech needs `one`, `few`, `many`, `other`)
|
||||
@@ -2317,7 +2317,7 @@
|
||||
<string name="attestation_request">Žádost o atestaci</string>
|
||||
<string name="attestation_request_description">Žádost o atestaci události</string>
|
||||
<string name="attestor_recommendation">Doporučení atestátora</string>
|
||||
<string name="attestor_recommendation_for_kinds">Doporučen pro druhy: %1$s</string>
|
||||
<string name="attestor_recommendation_for_kinds">Doporučen pro druhy: </string>
|
||||
<string name="attestor_proficiency">Odbornost atestátora</string>
|
||||
<string name="attestor_proficiency_for_kinds">Odborník na ověřování druhů: %1$s</string>
|
||||
<string name="attestation_attests_to">Potvrzuje</string>
|
||||
@@ -2507,4 +2507,53 @@
|
||||
<string name="emoji_private_explainer">Soukromá emoji jsou šifrovaně uložena na relayích a viditelná pouze pro vás. Objeví se ve vaší nabídce reakcí a v automatickém doplňování \":\" stejně jako veřejná.</string>
|
||||
<string name="gif">Gif</string>
|
||||
<!-- NIP-9A community rules composer-side validation. -->
|
||||
<string name="community_rules_violation_author_denied">Jsi na seznamu blokovaných této komunity. Příspěvky nebudou přijaty.</string>
|
||||
<string name="community_rules_violation_icon">Porušení pravidel komunity</string>
|
||||
<string name="community_rules_violation_kind_not_allowed">Tato komunita nepřijímá události typu %1$d.</string>
|
||||
<string name="community_rules_violation_kind_size_exceeded">Návrh má %1$d bajtů; tato komunita pro tento typ omezuje velikost na %2$d bajtů.</string>
|
||||
<string name="community_rules_violation_max_size_exceeded">Návrh má %1$d bajtů; tato komunita omezuje velikost událostí na %2$d bajtů.</string>
|
||||
<string name="community_rules_violation_quota_exceeded">Dnes jsi již zveřejnil %1$d událostí tohoto typu (limit %2$d).</string>
|
||||
<string name="community_rules_violation_stale_rules">Nejnovější dokument s pravidly komunity byl odmítnut jako zastaralý.</string>
|
||||
<string name="community_rules_violation_wot_gate_failed">Nesplňuješ požadavky sítě důvěry této komunity.</string>
|
||||
<string name="copy_raw_json">Kopírovat surový JSON</string>
|
||||
<string name="disable_client_tag_explainer">Pokud je povoleno, Amethyst nebude k tvým publikovaným událostem přidávat klientský tag NIP-89.</string>
|
||||
<string name="disable_client_tag_title">Nepřidávat klientský tag k mým událostem</string>
|
||||
<string name="hide_community_rules_violations_explainer">Skryje příspěvky z komunitních feedů, když komunita zveřejní dokument s pravidly NIP-9A a událost by jím neprošla. Bez efektu, pokud komunita nemá strukturovaná pravidla.</string>
|
||||
<string name="hide_community_rules_violations_title">Skrývat příspěvky porušující pravidla komunity</string>
|
||||
<string name="local_blossom_cache_detected">Lokální cache nalezena na portu 24242.</string>
|
||||
<string name="local_blossom_cache_not_detected">Lokální cache nebyla na portu 24242 nalezena.</string>
|
||||
<string name="local_blossom_cache_profile_pics_only">Cachovat pouze profilové obrázky</string>
|
||||
<string name="local_blossom_cache_profile_pics_only_caption">Omezit lokální cache pouze na profilové obrázky. Obrázky a videa z feedu budou stahovány přímo z původních serverů.</string>
|
||||
<string name="new_community_rules_banned_add">Přidat zablokovaného uživatele</string>
|
||||
<string name="new_community_rules_banned_hint">Tyto pubkey nemohou v komunitě publikovat.</string>
|
||||
<string name="new_community_rules_banned_placeholder">Jméno, npub nebo NIP-05</string>
|
||||
<string name="new_community_rules_banned_section">Zablokovaní uživatelé</string>
|
||||
<string name="new_community_rules_hint">Publikuje strojově čitelný dokument s pravidly (NIP-9A) společně s komunitou. Klienti, kteří jej podporují, blokují příspěvky, které neodpovídají, ještě před odesláním.</string>
|
||||
<string name="new_community_rules_kind_add">Přidat typ</string>
|
||||
<string name="new_community_rules_kind_comment">Komentář komunity (1111)</string>
|
||||
<string name="new_community_rules_kind_custom_label">Vlastní typ</string>
|
||||
<string name="new_community_rules_kind_long_form">Dlouhý článek (30023)</string>
|
||||
<string name="new_community_rules_kind_picture">Obrázek (20)</string>
|
||||
<string name="new_community_rules_kind_short_text">Krátký text (1)</string>
|
||||
<string name="new_community_rules_kind_short_video">Krátké video (22)</string>
|
||||
<string name="new_community_rules_kind_video">Video (21)</string>
|
||||
<string name="new_community_rules_kinds_hint">Klepnutím povolíš typ. Dlouhým stiskem typu nastavíš limity velikosti nebo počet příspěvků za den.</string>
|
||||
<string name="new_community_rules_kinds_section">Povolené typy událostí</string>
|
||||
<string name="new_community_rules_limits_max_bytes">Maximální velikost události (bajty)</string>
|
||||
<string name="new_community_rules_limits_max_per_day">Maximální počet příspěvků na autora za den</string>
|
||||
<string name="new_community_rules_limits_save">Uložit limity</string>
|
||||
<string name="new_community_rules_limits_title">Limity pro typ %1$d</string>
|
||||
<string name="new_community_rules_limits_unlimited">Pro neomezenou hodnotu nech prázdné</string>
|
||||
<string name="new_community_rules_max_event_size_hint">Bajty — pro globálně neomezenou hodnotu nech prázdné.</string>
|
||||
<string name="new_community_rules_max_event_size_section">Globální maximální velikost události (volitelné)</string>
|
||||
<string name="new_community_rules_section">Ověřitelná pravidla (volitelné)</string>
|
||||
<string name="new_community_rules_wot_add">Přidat WoT bránu</string>
|
||||
<string name="new_community_rules_wot_depth">Hloubka</string>
|
||||
<string name="new_community_rules_wot_hint">Povolit pouze autory dosažitelné z kořenového pubkey v rámci N skoků. Více bran projde, pokud projde alespoň jedna.</string>
|
||||
<string name="new_community_rules_wot_root">Kořenový npub nebo hex pubkey</string>
|
||||
<string name="new_community_rules_wot_section">Brána sítě důvěry (volitelné)</string>
|
||||
<string name="stale_relay_hint_icon_description">Upozornění na zastaralá relé</string>
|
||||
<string name="stale_relay_hint_label">Zdrojová relé mohou být zastaralá</string>
|
||||
<string name="use_local_blossom_cache">Použít lokální Blossom cache</string>
|
||||
<string name="use_local_blossom_cache_caption">Pokud na tomto zařízení běží Blossom cache (port 24242), směrovat stahování obrázků a videí přes ni.</string>
|
||||
</resources>
|
||||
|
||||
@@ -969,7 +969,7 @@
|
||||
<string name="follow_set_creation_menu_title">Vytvořit nový seznam</string>
|
||||
<string name="follow_set_creation_item_label">Vytvořit nový seznam %1$s s uživatelem</string>
|
||||
<string name="follow_set_creation_item_description">Vytvoří %1$s sadu sledování a přidá do ní %2$s.</string>
|
||||
<string name="follow_set_creation_dialog_title">Nový seznam %1$s</string>
|
||||
<string name="follow_set_creation_dialog_title">Nový seznam sledovaných</string>
|
||||
<string name="follow_set_creation_name_label">Název sady</string>
|
||||
<string name="follow_set_creation_desc_label">Popis sady (volitelné)</string>
|
||||
<string name="follow_set_creation_action_btn_label">Vytvořit sadu</string>
|
||||
|
||||
@@ -2297,7 +2297,7 @@ anz der Bedingungen ist erforderlich</string>
|
||||
<string name="attestation_request">Attestierungsanfrage</string>
|
||||
<string name="attestation_request_description">Attestierung für ein Ereignis anfordern</string>
|
||||
<string name="attestor_recommendation">Empfehlung des Attestierers</string>
|
||||
<string name="attestor_recommendation_for_kinds">Empfohlen für Arten: %1$s</string>
|
||||
<string name="attestor_recommendation_for_kinds">Empfohlen für Arten: </string>
|
||||
<string name="attestor_proficiency">Kompetenz des Attestierers</string>
|
||||
<string name="attestor_proficiency_for_kinds">Kompetent für die Verifizierung von Arten: %1$s</string>
|
||||
<string name="attestation_attests_to">Bestätigt</string>
|
||||
@@ -2487,4 +2487,54 @@ anz der Bedingungen ist erforderlich</string>
|
||||
<string name="emoji_private_explainer">Private Emojis werden verschlüsselt auf Relays gespeichert und sind nur für dich sichtbar. Sie erscheinen in deinem Reaktionsmenü und in der \":\"-Autovervollständigung wie öffentliche.</string>
|
||||
<string name="gif">Gif</string>
|
||||
<!-- NIP-9A community rules composer-side validation. -->
|
||||
<string name="community_rules_violation_author_denied">Du stehst auf der Sperrliste dieser Community. Beiträge werden nicht akzeptiert.</string>
|
||||
<string name="community_rules_violation_icon">Verstoß gegen Community-Regeln</string>
|
||||
<string name="community_rules_violation_kind_not_allowed">Diese Community akzeptiert keine Ereignisse vom Typ %1$d.</string>
|
||||
<string name="community_rules_violation_kind_size_exceeded">Entwurf hat %1$d Bytes; diese Community begrenzt diesen Typ auf %2$d Bytes.</string>
|
||||
<string name="community_rules_violation_max_size_exceeded">Entwurf hat %1$d Bytes; diese Community begrenzt Ereignisse auf %2$d Bytes.</string>
|
||||
<string name="community_rules_violation_quota_exceeded">Du hast heute bereits %1$d Ereignisse dieses Typs veröffentlicht (Limit %2$d).</string>
|
||||
<string name="community_rules_violation_stale_rules">Das aktuelle Community-Regeldokument wurde als veraltet abgelehnt.</string>
|
||||
<string name="community_rules_violation_wot_gate_failed">Du erfüllst die Web-of-Trust-Anforderungen dieser Community nicht.</string>
|
||||
<string name="copy_raw_json">Rohes JSON kopieren</string>
|
||||
<string name="disable_client_tag_explainer">Wenn aktiviert, fügt Amethyst deinen veröffentlichten Ereignissen kein NIP-89 Client-Tag hinzu.</string>
|
||||
<string name="disable_client_tag_title">Kein Client-Tag zu meinen Ereignissen hinzufügen</string>
|
||||
<string name="hide_community_rules_violations_explainer">Verwirft Beiträge aus Community-Feeds, wenn die Community ein NIP-9A-Regeldokument veröffentlicht und ein Ereignis daran scheitern würde. Keine Wirkung, wenn eine Community keine strukturierten Regeln hat.</string>
|
||||
<string name="hide_community_rules_violations_title">Beiträge ausblenden, die gegen Community-Regeln verstoßen</string>
|
||||
<string name="local_blossom_cache_detected">Lokaler Cache an Port 24242 erkannt.</string>
|
||||
<string name="local_blossom_cache_not_detected">Kein lokaler Cache an Port 24242 erkannt.</string>
|
||||
<string name="local_blossom_cache_profile_pics_only">Nur Profilbilder cachen</string>
|
||||
<string name="local_blossom_cache_profile_pics_only_caption">Den lokalen Cache auf Profilbilder beschränken. Feed-Bilder und -Videos werden direkt von den Originalservern geladen.</string>
|
||||
<string name="new_community_rules_banned_add">Gesperrten Benutzer hinzufügen</string>
|
||||
<string name="new_community_rules_banned_hint">Diese Pubkeys können nicht in die Community posten.</string>
|
||||
<string name="new_community_rules_banned_placeholder">Name, npub oder NIP-05</string>
|
||||
<string name="new_community_rules_banned_section">Gesperrte Benutzer</string>
|
||||
<string name="new_community_rules_hint">Veröffentlicht ein maschinenlesbares Regeldokument (NIP-9A) zusammen mit der Community. Unterstützende Clients blockieren nicht passende Beiträge bereits vor dem Senden.</string>
|
||||
<string name="new_community_rules_kind_add">Typ hinzufügen</string>
|
||||
<string name="new_community_rules_kind_comment">Community-Kommentar (1111)</string>
|
||||
<string name="new_community_rules_kind_custom_label">Eigener Typ</string>
|
||||
<string name="new_community_rules_kind_long_form">Langform-Artikel (30023)</string>
|
||||
<string name="new_community_rules_kind_picture">Bildbeitrag (20)</string>
|
||||
<string name="new_community_rules_kind_short_text">Kurzer Text (1)</string>
|
||||
<string name="new_community_rules_kind_short_video">Kurzvideo (22)</string>
|
||||
<string name="new_community_rules_kind_video">Videobeitrag (21)</string>
|
||||
<string name="new_community_rules_kinds_hint">Tippe, um einen Typ zuzulassen. Halte einen Typ gedrückt, um Größen- oder Tageslimits pro Ereignis festzulegen.</string>
|
||||
<string name="new_community_rules_kinds_section">Zugelassene Ereignistypen</string>
|
||||
<string name="new_community_rules_limits_max_bytes">Maximale Ereignisgröße (Bytes)</string>
|
||||
<string name="new_community_rules_limits_max_per_day">Maximale Beiträge pro Autor und Tag</string>
|
||||
<string name="new_community_rules_limits_save">Limits speichern</string>
|
||||
<string name="new_community_rules_limits_title">Limits für Typ %1$d</string>
|
||||
<string name="new_community_rules_limits_unlimited">Leer lassen für kein Limit</string>
|
||||
<string name="new_community_rules_max_event_size_hint">Bytes — leer lassen für keine globale Obergrenze.</string>
|
||||
<string name="new_community_rules_max_event_size_section">Globale maximale Ereignisgröße (optional)</string>
|
||||
<string name="new_community_rules_section">Überprüfbare Regeln (optional)</string>
|
||||
<string name="new_community_rules_wot_add">WoT-Schranke hinzufügen</string>
|
||||
<string name="new_community_rules_wot_depth">Tiefe</string>
|
||||
<string name="new_community_rules_wot_hint">Erlaubt nur Autoren, die innerhalb von N Schritten von einem Wurzel-Pubkey erreichbar sind. Mehrere Schranken bestehen, wenn eine besteht.</string>
|
||||
<string name="new_community_rules_wot_root">Wurzel-npub oder Hex-Pubkey</string>
|
||||
<string name="new_community_rules_wot_section">Web-of-Trust-Schranke (optional)</string>
|
||||
<string name="stale_relay_hint_icon_description">Warnung über veraltetes Relay</string>
|
||||
<string name="stale_relay_hint_label">Quell-Relays könnten veraltet sein</string>
|
||||
<string name="use_local_blossom_cache">Lokalen Blossom-Cache verwenden</string>
|
||||
<string name="use_local_blossom_cache_caption">Wenn auf diesem Gerät ein Blossom-Cache läuft (Port 24242), Bild- und Video-Downloads darüber leiten.</string>
|
||||
<string name="scheduled_posts_at_time">%1$s · in %2$s</string>
|
||||
</resources>
|
||||
|
||||
@@ -1009,7 +1009,7 @@ anz der Bedingungen ist erforderlich</string>
|
||||
<string name="follow_set_creation_menu_title">Neue Liste erstellen</string>
|
||||
<string name="follow_set_creation_item_label">Neue %1$s-Liste mit Benutzer erstellen</string>
|
||||
<string name="follow_set_creation_item_description">Erstellt ein %1$s-Folge-Set und fügt %2$s hinzu.</string>
|
||||
<string name="follow_set_creation_dialog_title">Neue %1$s-Liste</string>
|
||||
<string name="follow_set_creation_dialog_title">Neue Folgen-Liste</string>
|
||||
<string name="follow_set_creation_name_label">Set-Name</string>
|
||||
<string name="follow_set_creation_desc_label">Set-Beschreibung (optional)</string>
|
||||
<string name="follow_set_creation_action_btn_label">Set erstellen</string>
|
||||
|
||||
@@ -924,7 +924,7 @@
|
||||
<string name="follow_set_creation_menu_title">नई सूची बनाएँ</string>
|
||||
<string name="follow_set_creation_item_label">प्रयोक्ता के साथ नई सूची %1$s बनाएँ</string>
|
||||
<string name="follow_set_creation_item_description">अनुगम्य सूची %1$s बनाता है तथा उससे %2$s जोडता है।</string>
|
||||
<string name="follow_set_creation_dialog_title">नई %1$s सूची</string>
|
||||
<string name="follow_set_creation_dialog_title">नई फ़ॉलो सूची</string>
|
||||
<string name="follow_pack_creation_dialog_title">नव्य अनुचरण पोटली</string>
|
||||
<string name="follow_set_copy_dialog_title">अनुचरण सूची की अनुकृति करें</string>
|
||||
<string name="follow_set_desc_modify_label">विवरण का संशोधन करें</string>
|
||||
|
||||
@@ -117,7 +117,7 @@
|
||||
<string name="follow_list_selection">Sekot saraksts</string>
|
||||
<string name="follow_set_icon_description">Ikona sarakstam</string>
|
||||
<string name="follow_set_creation_menu_title">Izveidot jaunu sarakstu</string>
|
||||
<string name="follow_set_creation_dialog_title">Jaunais %1$s saraksts</string>
|
||||
<string name="follow_set_creation_dialog_title">Jauns sekošanas saraksts</string>
|
||||
<string name="follow_set_creation_name_label">Kolekcijas nosaukums</string>
|
||||
<string name="follow_set_creation_desc_label">Kolekcijas apraksts (neobligāti, pēc izvēles)</string>
|
||||
<string name="follow_set_creation_action_btn_label">Izveidot kolekciju</string>
|
||||
|
||||
@@ -2293,7 +2293,7 @@
|
||||
<string name="attestation_request">Solicitação de atestação</string>
|
||||
<string name="attestation_request_description">Solicitando atestação para um evento</string>
|
||||
<string name="attestor_recommendation">Recomendação do atestante</string>
|
||||
<string name="attestor_recommendation_for_kinds">Recomendado para tipos: %1$s</string>
|
||||
<string name="attestor_recommendation_for_kinds">Recomendado para tipos: </string>
|
||||
<string name="attestor_proficiency">Competência do atestante</string>
|
||||
<string name="attestor_proficiency_for_kinds">Competente na verificação de tipos: %1$s</string>
|
||||
<string name="attestation_attests_to">Atesta</string>
|
||||
@@ -2483,4 +2483,53 @@
|
||||
<string name="emoji_private_explainer">Emojis privados são armazenados criptografados em relays e visíveis apenas para você. Eles aparecem no seu menu de reações e no autocompletar \":\" assim como os públicos.</string>
|
||||
<string name="gif">Gif</string>
|
||||
<!-- NIP-9A community rules composer-side validation. -->
|
||||
<string name="community_rules_violation_author_denied">Você está na lista de bloqueados desta comunidade. Os posts não serão aceitos.</string>
|
||||
<string name="community_rules_violation_icon">Violação das regras da comunidade</string>
|
||||
<string name="community_rules_violation_kind_not_allowed">Esta comunidade não aceita eventos do tipo %1$d.</string>
|
||||
<string name="community_rules_violation_kind_size_exceeded">O rascunho tem %1$d bytes; esta comunidade limita este tipo a %2$d bytes.</string>
|
||||
<string name="community_rules_violation_max_size_exceeded">O rascunho tem %1$d bytes; esta comunidade limita eventos a %2$d bytes.</string>
|
||||
<string name="community_rules_violation_quota_exceeded">Você já publicou %1$d eventos deste tipo hoje (limite %2$d).</string>
|
||||
<string name="community_rules_violation_stale_rules">O documento mais recente de regras da comunidade foi rejeitado por estar desatualizado.</string>
|
||||
<string name="community_rules_violation_wot_gate_failed">Você não atende aos requisitos da rede de confiança desta comunidade.</string>
|
||||
<string name="copy_raw_json">Copiar JSON bruto</string>
|
||||
<string name="disable_client_tag_explainer">Quando ativado, o Amethyst não anexará uma tag de cliente NIP-89 aos eventos que você publicar.</string>
|
||||
<string name="disable_client_tag_title">Não adicionar tag de cliente aos meus eventos</string>
|
||||
<string name="hide_community_rules_violations_explainer">Remove posts dos feeds da comunidade quando ela publica um documento de regras NIP-9A e o evento não passaria. Sem efeito quando uma comunidade não tem regras estruturadas.</string>
|
||||
<string name="hide_community_rules_violations_title">Ocultar posts que violam as regras da comunidade</string>
|
||||
<string name="local_blossom_cache_detected">Cache local detectado na porta 24242.</string>
|
||||
<string name="local_blossom_cache_not_detected">Cache local não detectado na porta 24242.</string>
|
||||
<string name="local_blossom_cache_profile_pics_only">Apenas armazenar fotos de perfil em cache</string>
|
||||
<string name="local_blossom_cache_profile_pics_only_caption">Restringir o cache local apenas a fotos de perfil. Imagens e vídeos do feed serão buscados diretamente dos servidores originais.</string>
|
||||
<string name="new_community_rules_banned_add">Adicionar usuário banido</string>
|
||||
<string name="new_community_rules_banned_hint">Estas pubkeys não podem postar na comunidade.</string>
|
||||
<string name="new_community_rules_banned_placeholder">Nome, npub ou NIP-05</string>
|
||||
<string name="new_community_rules_banned_section">Usuários banidos</string>
|
||||
<string name="new_community_rules_hint">Publica um documento de regras legível por máquina (NIP-9A) junto com a comunidade. Clientes que o suportam bloqueiam posts que não correspondem antes de enviar.</string>
|
||||
<string name="new_community_rules_kind_add">Adicionar tipo</string>
|
||||
<string name="new_community_rules_kind_comment">Comentário da comunidade (1111)</string>
|
||||
<string name="new_community_rules_kind_custom_label">Tipo personalizado</string>
|
||||
<string name="new_community_rules_kind_long_form">Artigo longo (30023)</string>
|
||||
<string name="new_community_rules_kind_picture">Post de imagem (20)</string>
|
||||
<string name="new_community_rules_kind_short_text">Texto curto (1)</string>
|
||||
<string name="new_community_rules_kind_short_video">Vídeo curto (22)</string>
|
||||
<string name="new_community_rules_kind_video">Post de vídeo (21)</string>
|
||||
<string name="new_community_rules_kinds_hint">Toque para permitir um tipo. Pressione e segure um tipo para definir limites de tamanho por evento ou de posts diários.</string>
|
||||
<string name="new_community_rules_kinds_section">Tipos de evento permitidos</string>
|
||||
<string name="new_community_rules_limits_max_bytes">Tamanho máximo do evento (bytes)</string>
|
||||
<string name="new_community_rules_limits_max_per_day">Máximo de posts por autor por dia</string>
|
||||
<string name="new_community_rules_limits_save">Salvar limites</string>
|
||||
<string name="new_community_rules_limits_title">Limites para o tipo %1$d</string>
|
||||
<string name="new_community_rules_limits_unlimited">Deixe em branco para sem limite</string>
|
||||
<string name="new_community_rules_max_event_size_hint">Bytes — deixe em branco para sem limite global.</string>
|
||||
<string name="new_community_rules_max_event_size_section">Tamanho máximo global do evento (opcional)</string>
|
||||
<string name="new_community_rules_section">Regras verificáveis (opcional)</string>
|
||||
<string name="new_community_rules_wot_add">Adicionar regra de WoT</string>
|
||||
<string name="new_community_rules_wot_depth">Profundidade</string>
|
||||
<string name="new_community_rules_wot_hint">Permitir apenas autores acessíveis a partir de uma pubkey raiz dentro de N saltos. Várias regras passam se qualquer uma passar.</string>
|
||||
<string name="new_community_rules_wot_root">npub raiz ou pubkey em hex</string>
|
||||
<string name="new_community_rules_wot_section">Regra da rede de confiança (opcional)</string>
|
||||
<string name="stale_relay_hint_icon_description">Aviso de relay desatualizado</string>
|
||||
<string name="stale_relay_hint_label">Os relays de origem podem estar desatualizados</string>
|
||||
<string name="use_local_blossom_cache">Usar cache Blossom local</string>
|
||||
<string name="use_local_blossom_cache_caption">Quando um cache Blossom estiver rodando neste dispositivo (porta 24242), rotear downloads de imagens e vídeos por ele.</string>
|
||||
</resources>
|
||||
|
||||
@@ -2292,7 +2292,7 @@
|
||||
<string name="attestation_request">Attesteringsförfrågan</string>
|
||||
<string name="attestation_request_description">Begär attestering för en händelse</string>
|
||||
<string name="attestor_recommendation">Attestantens rekommendation</string>
|
||||
<string name="attestor_recommendation_for_kinds">Rekommenderad för typer: %1$s</string>
|
||||
<string name="attestor_recommendation_for_kinds">Rekommenderad för typer: </string>
|
||||
<string name="attestor_proficiency">Attestantens kompetens</string>
|
||||
<string name="attestor_proficiency_for_kinds">Kompetent att verifiera typer: %1$s</string>
|
||||
<string name="attestation_attests_to">Intygar</string>
|
||||
@@ -2482,4 +2482,53 @@
|
||||
<string name="emoji_private_explainer">Privata emojis lagras krypterade på relän och är endast synliga för dig. De visas i din reaktionsmeny och i autokomplettering med \":\" precis som offentliga.</string>
|
||||
<string name="gif">Gif</string>
|
||||
<!-- NIP-9A community rules composer-side validation. -->
|
||||
<string name="community_rules_violation_author_denied">Du står på den här gemenskapens blockeringslista. Inlägg kommer inte att accepteras.</string>
|
||||
<string name="community_rules_violation_icon">Brott mot gemenskapens regler</string>
|
||||
<string name="community_rules_violation_kind_not_allowed">Den här gemenskapen accepterar inte händelser av typ %1$d.</string>
|
||||
<string name="community_rules_violation_kind_size_exceeded">Utkastet är %1$d byte; den här gemenskapen begränsar den här typen till %2$d byte.</string>
|
||||
<string name="community_rules_violation_max_size_exceeded">Utkastet är %1$d byte; den här gemenskapen begränsar händelser till %2$d byte.</string>
|
||||
<string name="community_rules_violation_quota_exceeded">Du har redan publicerat %1$d händelser av den här typen idag (gräns %2$d).</string>
|
||||
<string name="community_rules_violation_stale_rules">Det senaste dokumentet med gemenskapsregler avvisades som föråldrat.</string>
|
||||
<string name="community_rules_violation_wot_gate_failed">Du uppfyller inte den här gemenskapens krav på förtroendenät.</string>
|
||||
<string name="copy_raw_json">Kopiera rå JSON</string>
|
||||
<string name="disable_client_tag_explainer">När aktiverat kommer Amethyst inte att lägga till en NIP-89 klienttagg till händelser du publicerar.</string>
|
||||
<string name="disable_client_tag_title">Lägg inte till klienttagg i mina händelser</string>
|
||||
<string name="hide_community_rules_violations_explainer">Filtrerar bort inlägg från gemenskapsflöden när gemenskapen publicerar ett NIP-9A-regeldokument och en händelse inte skulle godkännas. Ingen effekt när en gemenskap inte har strukturerade regler.</string>
|
||||
<string name="hide_community_rules_violations_title">Dölj inlägg som bryter mot gemenskapens regler</string>
|
||||
<string name="local_blossom_cache_detected">Lokal cache hittad på port 24242.</string>
|
||||
<string name="local_blossom_cache_not_detected">Ingen lokal cache hittad på port 24242.</string>
|
||||
<string name="local_blossom_cache_profile_pics_only">Cacha endast profilbilder</string>
|
||||
<string name="local_blossom_cache_profile_pics_only_caption">Begränsa den lokala cachen till profilbilder. Bilder och videor i flödet hämtas direkt från originalservrarna.</string>
|
||||
<string name="new_community_rules_banned_add">Lägg till blockerad användare</string>
|
||||
<string name="new_community_rules_banned_hint">Dessa pubkeys kan inte posta i gemenskapen.</string>
|
||||
<string name="new_community_rules_banned_placeholder">Namn, npub eller NIP-05</string>
|
||||
<string name="new_community_rules_banned_section">Blockerade användare</string>
|
||||
<string name="new_community_rules_hint">Publicerar ett maskinläsbart regeldokument (NIP-9A) tillsammans med gemenskapen. Klienter som stödjer det blockerar inlägg som inte matchar innan de skickas.</string>
|
||||
<string name="new_community_rules_kind_add">Lägg till typ</string>
|
||||
<string name="new_community_rules_kind_comment">Gemenskapskommentar (1111)</string>
|
||||
<string name="new_community_rules_kind_custom_label">Anpassad typ</string>
|
||||
<string name="new_community_rules_kind_long_form">Långformat artikel (30023)</string>
|
||||
<string name="new_community_rules_kind_picture">Bildinlägg (20)</string>
|
||||
<string name="new_community_rules_kind_short_text">Kort text (1)</string>
|
||||
<string name="new_community_rules_kind_short_video">Kort video (22)</string>
|
||||
<string name="new_community_rules_kind_video">Videoinlägg (21)</string>
|
||||
<string name="new_community_rules_kinds_hint">Tryck för att tillåta en typ. Tryck och håll på en typ för att ställa in storleks- eller dagliga inläggsgränser per händelse.</string>
|
||||
<string name="new_community_rules_kinds_section">Tillåtna händelsetyper</string>
|
||||
<string name="new_community_rules_limits_max_bytes">Max händelsestorlek (byte)</string>
|
||||
<string name="new_community_rules_limits_max_per_day">Max inlägg per författare per dag</string>
|
||||
<string name="new_community_rules_limits_save">Spara gränser</string>
|
||||
<string name="new_community_rules_limits_title">Gränser för typ %1$d</string>
|
||||
<string name="new_community_rules_limits_unlimited">Lämna tomt för obegränsat</string>
|
||||
<string name="new_community_rules_max_event_size_hint">Byte — lämna tomt för ingen global gräns.</string>
|
||||
<string name="new_community_rules_max_event_size_section">Global max händelsestorlek (valfritt)</string>
|
||||
<string name="new_community_rules_section">Verifierbara regler (valfritt)</string>
|
||||
<string name="new_community_rules_wot_add">Lägg till WoT-grind</string>
|
||||
<string name="new_community_rules_wot_depth">Djup</string>
|
||||
<string name="new_community_rules_wot_hint">Tillåt endast författare nåbara från en rot-pubkey inom N hopp. Flera grindar passerar om någon passerar.</string>
|
||||
<string name="new_community_rules_wot_root">Rot-npub eller hex-pubkey</string>
|
||||
<string name="new_community_rules_wot_section">Förtroendenät-grind (valfritt)</string>
|
||||
<string name="stale_relay_hint_icon_description">Varning om föråldrat relä</string>
|
||||
<string name="stale_relay_hint_label">Källrelän kan vara föråldrade</string>
|
||||
<string name="use_local_blossom_cache">Använd lokal Blossom-cache</string>
|
||||
<string name="use_local_blossom_cache_caption">När en Blossom-cache körs på den här enheten (port 24242), dirigera bild- och videonedladdningar genom den.</string>
|
||||
</resources>
|
||||
|
||||
@@ -917,7 +917,7 @@
|
||||
<string name="follow_set_creation_menu_title">新建列表</string>
|
||||
<string name="follow_set_creation_item_label">创建用户新的 %1$s 列表</string>
|
||||
<string name="follow_set_creation_item_description">创建 %1$s 关注集,并添加 %2$s 到其中。</string>
|
||||
<string name="follow_set_creation_dialog_title">新的 %1$s 列表</string>
|
||||
<string name="follow_set_creation_dialog_title">新建关注列表</string>
|
||||
<string name="follow_pack_creation_dialog_title">新的关注包</string>
|
||||
<string name="follow_set_copy_dialog_title">复制/克隆关注集</string>
|
||||
<string name="follow_set_desc_modify_label">修改描述</string>
|
||||
|
||||
Reference in New Issue
Block a user