Add Arabic language (#66)

This commit is contained in:
Nikita Karamov 2024-02-12 19:32:05 +01:00 committed by GitHub
commit dcaa57215a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
16 changed files with 88 additions and 60 deletions

View File

@ -10,11 +10,8 @@ const { instance, errors } = Astro.props;
---
<datalist id="popular-instances"></datalist>
<label
class="mt1r"
data-translate="instance"
>
Fediverse instance
<label class="mt1r">
<span data-translate="instance">Fediverse instance</span>
<div
class="instance-input"
dir="ltr"
@ -48,23 +45,22 @@ const { instance, errors } = Astro.props;
<div
id="saved-instances"
class="mt1r"
data-translate="previouslyUsed"
>
Previously used:
<span data-translate="previouslyUsed">Previously used:</span>&#x0020;
<span class="list"></span>
</div>
<label
class="mt1r"
for="remember"
data-translate="rememberInstance"
>
<input
type="checkbox"
id="remember"
name="remember"
/>
Remember instance on this device<noscript>.</noscript>
/>&#x0020;
<span data-translate="rememberInstance">Remember instance on this device</span
><noscript>.</noscript>
<noscript style="color:darkred;font-size:smaller">
This will not work when JavaScript is disabled.</noscript
>
@ -141,6 +137,7 @@ const { instance, errors } = Astro.props;
const element = document.createElement("span");
element.classList.add("link");
element.textContent = host;
element.dir = "ltr";
element.addEventListener("click", () => {
instanceElement.value = host;
});

View File

@ -12,7 +12,7 @@ const initialLanguage = "en";
---
<label>
🌍 <span data-translate="language">Language:</span>
🌍 <span data-translate="language">Language:</span>&#x0020;
<select
name="language"
id="language"

View File

@ -8,13 +8,19 @@ SPDX-License-Identifier: CC0-1.0
<details>
<summary data-translate="licence">Licence</summary>
<p data-translate="licence1">
<p
data-translate="licence1"
dir="auto"
>
Share₂Fedi is free software: you can redistribute it and/or modify it under
the terms of the GNU Affero General Public License, version 3, as published
by the Free Software Foundation.
</p>
<p data-translate="licence2">
<p
data-translate="licence2"
dir="auto"
>
Share₂Fedi is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License

View File

@ -8,7 +8,10 @@ SPDX-License-Identifier: CC0-1.0
<details>
<summary data-translate="privacyNotice">Privacy Notice</summary>
<p data-translate="privacy1">
<p
data-translate="privacy1"
dir="auto"
>
s2f.kytta.dev is hosted on Vercel. Vercel processes IP addresses, system
configuration information, and other information about traffic to and from
s2f.kytta.dev. Vercel does not store this information nor does it get shared
@ -20,7 +23,10 @@ SPDX-License-Identifier: CC0-1.0
>
for more information.
</p>
<p data-translate="privacy2">
<p
data-translate="privacy2"
dir="auto"
>
When you click the Publish button, youll get redirected to a Fediverse
instance youve specified. It may process and/or store your data. Please
refer to the privacy policy of the respective instance.

View File

@ -72,6 +72,18 @@ export function applyTranslations(language: string) {
}
}
if (Intl.ListFormat) {
const formatter = new Intl.ListFormat(language, {
style: "short",
type: "conjunction",
});
for (const node of document.querySelectorAll("[data-enumerate]")) {
const dataset = (node as HTMLElement).dataset;
node.innerHTML = formatter.format(dataset.enumerate!.split(","));
}
}
document.documentElement.lang = language;
document.documentElement.dir =
languages[language as keyof typeof languages].dir;

View File

@ -6,6 +6,7 @@
* SPDX-License-Identifier: AGPL-3.0-only
*/
import ar from "./translations/ar.json";
import de from "./translations/de.json";
import en from "./translations/en.json";
import es from "./translations/es.json";
@ -14,8 +15,9 @@ import nl from "./translations/nl.json";
import ru from "./translations/ru.json";
export const languages = {
en: { autonym: "English", dir: "ltr" },
ar: { autonym: "العربية", dir: "rtl" },
de: { autonym: "Deutsch", dir: "ltr" },
en: { autonym: "English", dir: "ltr" },
es: { autonym: "Español", dir: "ltr" },
fr: { autonym: "Français", dir: "ltr" },
nl: { autonym: "Nederlands", dir: "ltr" },
@ -23,8 +25,9 @@ export const languages = {
};
export const strings: Record<keyof typeof languages, Record<string, string>> = {
en,
ar,
de,
en,
es,
fr,
nl,

View File

@ -1,21 +1,21 @@
{
"privacyNotice": "إشعار الخصوصية",
"postText": "نص المنشور{}",
"postText": "نص المنشور",
"fediverse": "الفديفرس",
"vercelPP": "سياسة الخصوصية لـ Vercel",
"description": "شير تو فيدي Share₂Fedi هو موقع مشاركة لـ {}. يمكنك من خلاله نشر محتوى على منصات متعددة تتبع نموذج الفديرالية من صفحة واحدة.",
"incl": "بما فيه",
"postTextPlaceholder": "فيمَ تفكّر؟",
"rememberInstance": "{} تذكر مثيل الخادم على هذا الجهاز",
"instance": "مثيل خادم الفديفرس{}",
"rememberInstance": "تذكر مثيل الخادم على هذا الجهاز",
"instance": "مثيل خادم الفديفرس",
"licence1": "شير تو فيدي Share₂Fedi هو برنامج حر: يمكنك إعادة توزيعه و/أو تعديله وفقًا لشروط الرخصة العامة GNU Affero، الإصدار 3، كما نَشرَتها مؤسسة البرمجيات الحرة.",
"previouslyUsed": "تم استخدامه مسبقًا: {}",
"previouslyUsed": "تم استخدامه مسبقًا:",
"metaDescription": "شير تو فيدي Share₂Fedi هي صفحة مشاركة لـ Mastodon و Misskey و Friendica وغيرها. اكتب نص منشورك وعنوان الرابط التشعبي لمثيل الخادم، ثم انقر على ”أنشر“!",
"nikita": "نيكيتا كاراموف",
"statusPage": "صفحة الحالة",
"publish": "أنشر",
"licence": "الرخصة",
"language": "اللغة: {}",
"language": "اللغة:",
"supportedProjects": "المشاريع المدعومة:",
"privacy2": "عندما تنقر على زر ”أنشر“، سيتم توجيهك إلى مثيل خادم الفديفرس الذي حددته. قد يقوم بمعالجة و/أو تخزين بياناتك. يرجى الرجوع إلى سياسة الخصوصية للخادم المعني.",
"onGitHub": "على جت هب",

View File

@ -1,6 +1,6 @@
{
"metaDescription": "Share₂Fedi ist eine Share-Seite für Mastodon, Misskey, Friendica und andere. Geben Sie Ihren Beitragstext und die Instanz-URL ein und klicken Sie auf „Veröffentlichen“!",
"language": "Sprache: {}",
"language": "Sprache:",
"description": "Share₂Fedi ist eine instanzunabhängige Share-Seite für {}. Mit ihr können Sie von einer einzigen Seite aus auf verschiedenen föderierten Plattformen posten.",
"fediverse": "das Fediverse",
"supportedProjects": "Unterstützte Projekte:",
@ -16,10 +16,10 @@
"privacy1": "s2f.kytta.dev wird auf Vercel gehostet. Vercel verarbeitet IP-Adressen, Systemkonfigurationsinformationen und andere Informationen über den Verkehr von und zu s2f.kytta.dev. Vercel speichert diese Informationen nicht und gibt sie auch nicht an Dritte weiter. Siehe {} für weitere Informationen.",
"privacy2": "Wenn Sie auf die „Veröffentlichen“ klicken, werden Sie zu einer Fediverse-Instanz weitergeleitet, die Sie angegeben haben. Diese kann Ihre Daten verarbeiten und/oder speichern. Bitte beachten Sie die Datenschutzrichtlinien der jeweiligen Instanz.",
"vercelPP": "Vercels Datenschutzpolitik",
"postText": "Beitragstext{}",
"postText": "Beitragstext",
"postTextPlaceholder": "Was gibts Neues?",
"instance": "Fediverse-Instanz{}",
"previouslyUsed": "Bisher verwendet: {}",
"rememberInstance": "{} Instanz auf diesem Gerät merken",
"instance": "Fediverse-Instanz",
"previouslyUsed": "Bisher verwendet:",
"rememberInstance": "Instanz auf diesem Gerät merken",
"publish": "Veröffentlichen"
}

View File

@ -1,6 +1,6 @@
{
"metaDescription": "Share₂Fedi is a share page for Mastodon, Misskey, Friendica, and others. Type in your post text and the instance URL and click Publish!",
"language": "Language: {}",
"language": "Language:",
"description": "Share₂Fedi is an instance-agnostic share page for {}. With it, you can post to various federated platforms from a single page.",
"fediverse": "the Fediverse",
"supportedProjects": "Supported projects:",
@ -16,10 +16,10 @@
"privacy1": "s2f.kytta.dev is hosted on Vercel. Vercel processes IP addresses, system configuration information, and other information about traffic to and from s2f.kytta.dev. Vercel does not store this information nor does it get shared with third parties. See {} for more information.",
"privacy2": "When you click the Publish button, youll get redirected to a Fediverse instance youve specified. It may process and/or store your data. Please refer to the privacy policy of the respective instance.",
"vercelPP": "Vercels privacy policy",
"postText": "Post text{}",
"postText": "Post text",
"postTextPlaceholder": "Whats on your mind?",
"instance": "Fediverse instance{}",
"previouslyUsed": "Previously used: {}",
"rememberInstance": "{} Remember instance on this device",
"instance": "Fediverse instance",
"previouslyUsed": "Previously used:",
"rememberInstance": "Remember instance on this device",
"publish": "Publish"
}

View File

@ -1,6 +1,6 @@
{
"metaDescription": "Share₂Fedi es una página de compartir para Mastodon, Misskey, Friendica y otros. ¡Escriba su texto de publicación y la URL de la instancia y haga clic en «Publicar»!",
"language": "Idioma: {}",
"language": "Idioma:",
"description": "Share₂Fedi es una página de compartir independiente de la instancia para {}. Con ella, puede publicar en varias plataformas federadas desde una sola página.",
"fediverse": "el Fediverso",
"supportedProjects": "Proyectos compatibles:",
@ -16,10 +16,10 @@
"privacy1": "s2f.kytta.dev está alojado en Vercel. Vercel procesa las direcciones IP, la información de configuración del sistema y otra información sobre el tráfico hacia y desde s2f.kytta.dev. Vercel no almacena esta información ni la comparte con terceros. Consulte {} para obtener más información.",
"privacy2": "Cuando hace clic en el botón «Publicar», se le redirige a una instancia de Fediverso que ha especificado. Puede procesar y/o almacenar sus datos. Consulte la política de privacidad de la instancia correspondiente.",
"vercelPP": "Política de privacidad de Vercel",
"postText": "Texto de la publicación{}",
"postText": "Texto de la publicación",
"postTextPlaceholder": "¿Qué hay de nuevo?",
"instance": "Instancia del Fediverso{}",
"previouslyUsed": "Usado anteriormente: {}",
"rememberInstance": "{} Recordar instancia en este dispositivo",
"instance": "Instancia del Fediverso",
"previouslyUsed": "Usado anteriormente:",
"rememberInstance": "Recordar instancia en este dispositivo",
"publish": "Publicar"
}

View File

@ -1,6 +1,6 @@
{
"metaDescription": "Share₂Fedi est une page de partage pour Mastodon, Misskey, Friendica et autres. Tapez votre texte de publication et lURL de linstance, puis cliquez sur « Publier » !",
"language": "Langue : {}",
"language": "Langue :",
"description": "Share₂Fedi est une page de partage indépendante pour {}. Avec elle, vous pouvez publier sur diverses plateformes fédérées depuis une seule page.",
"fediverse": "le Fediverse",
"supportedProjects": "Projets pris en charge :",
@ -16,10 +16,10 @@
"privacy1": "s2f.kytta.dev est hébergé sur Vercel. Vercel traite les adresses IP, les informations de configuration système et dautres informations sur le trafic vers et depuis s2f.kytta.dev. Vercel ne stocke pas ces informations et ne les partage pas avec des tiers. Voir {} pour plus dinformations.",
"privacy2": "Lorsque vous cliquez sur le bouton « Publier », vous êtes redirigé vers une instance du Fediverse que vous avez spécifiée. Elle peut traiter et/ou stocker vos données. Veuillez vous référer à la politique de confidentialité de linstance respective.",
"vercelPP": "Politique de confidentialité de Vercel",
"postText": "Texte de la publication{}",
"postText": "Texte de la publication",
"postTextPlaceholder": "Quoi de neuf ?",
"instance": "Instance du Fediverse{}",
"previouslyUsed": "Utilisé précédemment : {}",
"rememberInstance": "{} Se souvenir de linstance sur cet appareil",
"instance": "Instance du Fediverse",
"previouslyUsed": "Utilisé précédemment :",
"rememberInstance": "Se souvenir de linstance sur cet appareil",
"publish": "Publier"
}

View File

@ -1,6 +1,6 @@
{
"metaDescription": "Share₂Fedi is een deelpagina voor Mastodon, Misskey, Friendica en andere fediversenetwerken. Voer een bericht in, plak de instantie-url en klik op Publiceren!",
"language": "Taal: {}",
"language": "Taal:",
"description": "Share₂Fedi is een instantie-onafhankelijke deelpagina voor {}. Zo kun je berichten plaatsen op meerdere fediversenetwerken tegelijk.",
"fediverse": "het Fediverse",
"supportedProjects": "Ondersteunde netwerken:",
@ -13,10 +13,10 @@
"privacy2": "Als je op publiceren klikt, wordt je doorgestuurd naar de opgegeven fediverse-instantie. Hierbij worden je gegevens mogelijk verwerkt en/of bewaard. Bekijk voor meer informatie het privacybeleid van je instantie.",
"vercelPP": "Vercels privacybeleid",
"postTextPlaceholder": "Wat gaat er door je hoofd?",
"instance": "Fediverse-instantie{}",
"postText": "Berichtinhoud{}",
"previouslyUsed": "Onlangs gebruikt: {}",
"rememberInstance": "{} Instantie onthouden op dit apparaat",
"instance": "Fediverse-instantie",
"postText": "Berichtinhoud",
"previouslyUsed": "Onlangs gebruikt:",
"rememberInstance": "Instantie onthouden op dit apparaat",
"publish": "Publiceren",
"credits": "Share₂Fedi wordt ontwikkeld en onderhouden door {}. Broncode: {} - Hosting: {}. {}.",
"licence1": "Share₂Fedi is vrije software: je mag de software opnieuw uitgeven en/of aanpassen onder de voorwaarden van de GNU Affero General Public License, versie 3, zoals omschreven door de Free Software Foundation.",

View File

@ -1,6 +1,6 @@
{
"metaDescription": "Share₂Fedi — это share-страница для Mastodon, Misskey, Friendica и других сервисов. Введите текст поста и URL-адрес инстанса и нажмите «Опубликовать»!",
"language": "Язык: {}",
"language": "Язык:",
"description": "Share₂Fedi — это инстанс-независимая share-страница для {}. С её помощью вы можете делиться информацией на различных федеративных платформах с одной страницы.",
"fediverse": "Федивёрса",
"supportedProjects": "Поддерживаемые проекты:",
@ -16,10 +16,10 @@
"privacy1": "Сайт s2f.kytta.dev размещён на серверах Vercel. Vercel обрабатывает IP-адреса, информацию о конфигурации системы и другую информацию о трафике, идущем к s2f.kytta.dev и от него. Vercel не хранит эту информацию и не передает её третьим лицам. Более подробную информацию см. в {}.",
"privacy2": "Когда вы нажимаете кнопку «Опубликовать», вы попадаете на указанный вами инстанс Федивёрса. Он может обрабатывать и/или хранить ваши данные. Пожалуйста, ознакомьтесь с политикой конфиденциальности соответствующего инстанса.",
"vercelPP": "Политике конфиденциальности Vercel",
"postText": "Текст поста{}",
"postText": "Текст поста",
"postTextPlaceholder": "О чём думаете?",
"instance": "Инстанс Федивёрса{}",
"previouslyUsed": "Ранее использовались: {}",
"rememberInstance": "{} Запомнить инстанс на этом устройстве",
"instance": "Инстанс Федивёрса",
"previouslyUsed": "Ранее использовались:",
"rememberInstance": "Запомнить инстанс на этом устройстве",
"publish": "Опубликовать"
}

View File

@ -2,12 +2,12 @@
"privacyNotice": "Політика конфіденційності",
"incl": "вкл.",
"postTextPlaceholder": "Що у вас на думці?",
"rememberInstance": "{} Запам'ятати інстанс на цьому пристрої",
"rememberInstance": "Запам'ятати інстанс на цьому пристрої",
"metaDescription": "Share₂Fedi — це share-сторінка для Mastodon, Misskey, Friendica та інших сервісів. Введіть текст посту та URL-адресу інстансу та натисніть «Опублікувати»!",
"statusPage": "Статус",
"publish": "Опублікувати",
"licence": "Ліцензія",
"language": "Мова: {}",
"language": "Мова:",
"supportedProjects": "Підтримувані проєкти:",
"onGitHub": "на GitHub"
}

View File

@ -107,12 +107,16 @@ import package_ from "../../package.json";
<p><b data-translate="supportedProjects">Supported projects:</b></p>
<ul>
<li>
Mastodon (<span data-translate="incl">incl.</span> Hometown, Fedibird,
GlitchCafé)
Mastodon (<span data-translate="incl">incl.</span>&#x0020;<span
data-enumerate="Hometown,Fedibird,GlitchCafé"
>Hometown, Fedibird, GlitchCafé</span
>)
</li>
<li>
Misskey (<span data-translate="incl">incl.</span> Firefish/Calckey,
FoundKey, Meisskey)
Misskey (<span data-translate="incl">incl.</span>&#x0020;<span
data-enumerate="Firefish,Calckey,FoundKey,Meisskey"
>Firefish, Calckey, FoundKey, Meisskey</span
>)
</li>
<li>Friendica</li>
<li>Hubzilla</li>

View File

@ -61,8 +61,8 @@ if (Astro.request.method === "POST") {
id="form"
method="POST"
>
<label data-translate="postText">
Post text
<label>
<span data-translate="postText">Post text</span>
<textarea
name="text"
id="text"