summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.md3
-rw-r--r--ui/src/i18next.ts2
-rw-r--r--ui/src/translations/fa.ts169
-rw-r--r--ui/src/utils.ts4
-rw-r--r--ui/translation_report.ts2
5 files changed, 179 insertions, 1 deletions
diff --git a/README.md b/README.md
index 4cc00c13..79ecc4db 100644
--- a/README.md
+++ b/README.md
@@ -161,7 +161,7 @@ Lemmy is free, open-source software, meaning no advertising, monetizing, or vent
If you'd like to add translations, take a look at the [English translation file](ui/src/translations/en.ts).
-- Languages supported: Catalan, (`ca`), English (`en`), Chinese (`zh`), Dutch (`nl`), Esperanto (`eo`), Finnish (`fi`), French (`fr`), Spanish (`es`), Swedish (`sv`), German (`de`), Russian (`ru`), Italian (`it`).
+- Languages supported: Catalan, (`ca`), Farsi (`fa`), English (`en`), Chinese (`zh`), Dutch (`nl`), Esperanto (`eo`), Finnish (`fi`), French (`fr`), Spanish (`es`), Swedish (`sv`), German (`de`), Russian (`ru`), Italian (`it`).
<!-- translations -->
@@ -169,6 +169,7 @@ lang | done | missing
---- | ---- | -------
ca | 100% | old
de | 87% | create_private_message,send_secure_message,send_message,message,avatar,upload_avatar,show_avatars,old,docs,message_sent,messages,old_password,matrix_user_id,private_message_disclaimer,send_notifications_to_email,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,donate_to_lemmy,donate,from,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message
+fa | 73% | cross_post,subscribed_to_communities,trending_communities,create_private_message,send_secure_message,send_message,message,mod,mods,moderates,remove_as_mod,appoint_as_mod,modlog,stickied,ban,ban_from_site,unban,unban_from_site,banned,number_of_subscribers,subscribers,both,saved,unsubscribe,subscribe,subscribed,old,api,docs,inbox,inbox_for,message_sent,notifications_error,messages,no_email_setup,matrix_user_id,private_message_disclaimer,url,body,copy_suggested_title,community,expand_here,subscribe_to_communities,theme,sponsor_message,general_sponsors,joined,by,to,from,landing_0,logged_in,community_moderator_already_exists,community_follower_already_exists,community_user_already_banned,no_slurs,admin_already_created,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message
eo | 75% | number_of_communities,create_private_message,send_secure_message,send_message,message,preview,upload_image,avatar,upload_avatar,show_avatars,formatting_help,view_source,sticky,unsticky,archive_link,stickied,delete_account,delete_account_confirm,banned,creator,number_online,old,docs,replies,mentions,message_sent,messages,old_password,forgot_password,reset_password_mail_sent,password_change,new_password,no_email_setup,matrix_user_id,private_message_disclaimer,send_notifications_to_email,language,browser_default,downvotes_disabled,enable_downvotes,open_registration,registration_closed,enable_nsfw,theme,donate_to_lemmy,donate,from,are_you_sure,yes,no,logged_in,email_already_exists,couldnt_create_private_message,no_private_message_edit_allowed,couldnt_update_private_message
es | 100% | old
fi | 100% | old
diff --git a/ui/src/i18next.ts b/ui/src/i18next.ts
index 51e7e3a3..0d3ab177 100644
--- a/ui/src/i18next.ts
+++ b/ui/src/i18next.ts
@@ -12,6 +12,7 @@ import { nl } from './translations/nl';
import { it } from './translations/it';
import { fi } from './translations/fi';
import { ca } from './translations/ca';
+import { fa } from './translations/fa';
// https://github.com/nimbusec-oss/inferno-i18next/blob/master/tests/T.test.js#L66
const resources = {
@@ -27,6 +28,7 @@ const resources = {
it,
fi,
ca,
+ fa,
};
function format(value: any, format: any, lng: any): any {
diff --git a/ui/src/translations/fa.ts b/ui/src/translations/fa.ts
new file mode 100644
index 00000000..c06045c6
--- /dev/null
+++ b/ui/src/translations/fa.ts
@@ -0,0 +1,169 @@
+export const fa = {
+ translation: {
+ post: 'مطلب',
+ remove_post: 'حذف مطلب',
+ no_posts: 'بدون مطلب.',
+ create_a_post: 'ایجاد یک مطلب',
+ create_post: 'ایجاد مطلب',
+ number_of_posts: '{{count}} مطلب',
+ posts: 'مطالب',
+ related_posts: 'این مطالب ممکن است مرتبط باشند',
+ cross_posts: 'این پیوند در اینجا هم منتشر شده:',
+ comments: 'نظرات',
+ number_of_comments: '{{count}} نظر',
+ remove_comment: 'حذف نظر',
+ communities: 'جوامع',
+ users: 'کاربران',
+ create_a_community: 'ایجاد یک جامعه جدید',
+ create_community: 'ایجاد جامعه',
+ remove_community: 'حذف جامعه',
+ list_of_communities: 'فهرست جوامع',
+ number_of_communities: '{{count}} جامعه',
+ community_reqs: 'حروف کوچک, زیرخط, و بدون فاصله.',
+ edit: 'ویرایش',
+ reply: 'پاسخ',
+ cancel: 'لغو',
+ preview: 'پیش‌نمایش',
+ upload_image: 'بارگذاری تصویر',
+ avatar: 'آواتار',
+ upload_avatar: 'بارگذاری آواتار',
+ show_avatars: 'نمایش آواتارها',
+ formatting_help: 'راهنمای قالب‌بندی',
+ view_source: 'نمایش منبع',
+ unlock: 'بازکردن قفل',
+ lock: 'قفل کردن',
+ sticky: 'چسبان',
+ unsticky: 'غیرچسبان',
+ link: 'پیوند',
+ archive_link: 'بایگاهی پیوند',
+ settings: 'تنظیمات',
+ admin: 'مدیر',
+ admins: 'مدیران',
+ remove_as_admin: 'حذف به عنوان مدیر',
+ appoint_as_admin: 'انتصاب به عنوان مدیر',
+ remove: 'حذف',
+ removed: 'حذف شد',
+ locked: 'قفل شد',
+ reason: 'دلیل',
+ mark_as_read: 'علامت‌گذاری به عنوان خوانده شده',
+ mark_as_unread: 'علامت‌گذاری به عنوان خوانده نشده',
+ delete: 'پاک کردن',
+ deleted: 'پاک شد',
+ delete_account: 'پاک کردن حساب',
+ delete_account_confirm:
+ 'هشدار: این کنش، تمام اطلاعات شما را برای همیشه پاک می‌کند. برای تایید، گذرواژه خود را وارد کنید.',
+ restore: 'بازگردانی',
+ save: 'ذخیره',
+ unsave: 'عدم ذخیره',
+ create: 'ایجاد',
+ creator: 'سازنده',
+ username: 'نام‌کاربری',
+ email_or_username: 'رایانامه یا نام‌کاربری',
+ number_of_users: '{{count}} کاربر',
+ number_of_points: '{{count}} امتیاز',
+ number_online: '{{count}} کاربر برخط',
+ name: 'نام',
+ title: 'عنوان',
+ category: 'دسته‌بندی',
+ prev: 'پیش',
+ next: 'بعد',
+ sidebar: 'نوار کناری',
+ sort_type: 'نوع ترتیب',
+ hot: 'داغ',
+ new: 'تازه',
+ top_day: 'بهترین‌های روز',
+ week: 'هفته',
+ month: 'ماه',
+ year: 'سال',
+ all: 'همه',
+ top: 'بالاترین',
+ mark_all_as_read: 'علامت زدن همه به عنوان خوانده شده',
+ type: 'نوع',
+ unread: 'خوانده‌نشده',
+ replies: 'پاسخ‌ها',
+ mentions: 'اشاره‌ها',
+ reply_sent: 'پاسخ فرستاده شد',
+ search: 'جستجو',
+ overview: 'دید کلی',
+ view: 'نما',
+ logout: 'خروج',
+ login_sign_up: 'ورود / نام‌نویسی',
+ login: 'ورود',
+ sign_up: 'نام‌نویسی',
+ unread_messages: 'پیام‌های خوانده نشده',
+ password: 'گذرواژه',
+ verify_password: 'تایید گذرواژه',
+ old_password: 'پسورد پیشین',
+ forgot_password: 'گذرواژه را فراموش کرده‌ام',
+ reset_password_mail_sent: 'رایانامه‌ای برای بازنشانی گذرواژه فرستاده شد.',
+ password_change: 'تغییر گذرواژه',
+ new_password: 'گذرواژه جدید',
+ email: 'رایانامه',
+ send_notifications_to_email: 'فرستادن اعلانات به رایانامه',
+ optional: 'انتخابی',
+ expires: 'منقضی شود',
+ language: 'زبان',
+ browser_default: 'پیش‌فرض مرورگر',
+ downvotes_disabled: 'رای پایین غیرفعال است',
+ enable_downvotes: 'فعال‌سازی رای پایین',
+ open_registration: 'باز کردن نام‌نویسی',
+ registration_closed: 'نام‌نویسی بسته است',
+ enable_nsfw: 'فعال‌سازی NSFW',
+ chat: 'گپ',
+ recent_comments: 'نظرات اخیر',
+ no_results: 'بدون نتیجه.',
+ setup: 'نصب',
+ lemmy_instance_setup: 'نصب نمونهٔ لمی',
+ setup_admin: 'نصب مدیریت پایگاه',
+ your_site: 'پایگاه شما',
+ modified: 'تغییر یافت',
+ nsfw: 'NSFW',
+ show_nsfw: 'نمایش محتوای NSFW',
+ sponsors: 'حامیان',
+ sponsors_of_lemmy: 'حامیان لمی',
+ support_on_patreon: 'حمایت روی Patreon',
+ donate_to_lemmy: 'اعطای اعانه به لمی',
+ donate: 'اعانه',
+ crypto: 'رمزارز',
+ bitcoin: 'بیت‌کوین',
+ ethereum: 'اتریوم',
+ monero: 'مونرو',
+ code: 'کد',
+ transfer_community: 'انتقال جامعه',
+ transfer_site: 'انتقال پایگاه',
+ are_you_sure: 'مطمئنید؟',
+ yes: 'بله',
+ no: 'خیر',
+ powered_by: 'نیرو گرفته از',
+ not_logged_in: 'وارد نشده‌اید.',
+ community_ban: 'فعالیت شما در این جامعه ممنوع شده است.',
+ site_ban: 'فعالیت شما در این پایگاه ممنوع شده است',
+ couldnt_create_comment: 'ناتوانی در ایجاد نظر.',
+ couldnt_like_comment: 'ناتوانی در پسنیدن نظر.',
+ couldnt_update_comment: 'ناتوانی در به‌روزرسانی نظر.',
+ couldnt_save_comment: 'ناتوانی در ذخیره نظر.',
+ no_comment_edit_allowed: 'مجاز به ویرایش نظر نیستید.',
+ no_post_edit_allowed: 'مجاز به ویرایش مطلب نیستید.',
+ no_community_edit_allowed: 'مجاز به ویرایش جامعه نیستید.',
+ couldnt_find_community: 'ناتوانی در یافتن جامعه.',
+ couldnt_update_community: 'ناتوانی در به‌روزرسانی جامعه.',
+ community_already_exists: 'این جامعه از قبل وجود داشته است.',
+ couldnt_create_post: 'ناتوانی در ایجاد مطلب.',
+ couldnt_like_post: 'ناتوانی در پسندیدن مطلب.',
+ couldnt_find_post: 'ناتوانی در یافتن مطلب.',
+ couldnt_get_posts: 'ناتوانی در دریافت مطالب',
+ couldnt_update_post: 'ناتوای در به‌روزرسانی مطلب',
+ couldnt_save_post: 'ناتوانی در ذخیره مطلب.',
+ not_an_admin: 'مدیر نیستید.',
+ site_already_exists: 'این پایگاه از قبل وجود داشته است.',
+ couldnt_update_site: 'ناتوانی در به‌روزرسانی پایگاه.',
+ couldnt_find_that_username_or_email:
+ 'ناتوانی در یافتن این نام کاربری یا رایانامه.',
+ password_incorrect: 'گذرواژه نادرست.',
+ passwords_dont_match: 'گذرواژه‌ها با هم منطبق نیستند.',
+ user_already_exists: 'این کاربر از قبل وجود دارد.',
+ email_already_exists: 'این رایانامه از قبل وجود دارد.',
+ couldnt_update_user: 'ناتوانی در به‌روزرسانی کاربر.',
+ system_err_login: 'خطای سامانه. سعی کنید خارج شده و دوباره وارد شوید.',
+ },
+};
diff --git a/ui/src/utils.ts b/ui/src/utils.ts
index 0aec7624..0ec29114 100644
--- a/ui/src/utils.ts
+++ b/ui/src/utils.ts
@@ -9,6 +9,7 @@ import 'moment/locale/nl';
import 'moment/locale/it';
import 'moment/locale/fi';
import 'moment/locale/ca';
+import 'moment/locale/fa';
import {
UserOperation,
@@ -258,6 +259,7 @@ export const languages = [
{ code: 'eo', name: 'Esperanto' },
{ code: 'es', name: 'Español' },
{ code: 'de', name: 'Deutsch' },
+ { code: 'fa', name: 'فارسی' },
{ code: 'zh', name: '中文' },
{ code: 'fi', name: 'Suomi' },
{ code: 'fr', name: 'Français' },
@@ -306,6 +308,8 @@ export function getMomentLanguage(): string {
lang = 'fi';
} else if (lang.startsWith('ca')) {
lang = 'ca';
+ } else if (lang.startsWith('fa')) {
+ lang = 'fa';
} else {
lang = 'en';
}
diff --git a/ui/translation_report.ts b/ui/translation_report.ts
index 56c09c96..1956b792 100644
--- a/ui/translation_report.ts
+++ b/ui/translation_report.ts
@@ -2,6 +2,7 @@ import { en } from './src/translations/en';
import { eo } from './src/translations/eo';
import { es } from './src/translations/es';
import { de } from './src/translations/de';
+import { fa } from './src/translations/fa';
import { zh } from './src/translations/zh';
import { fr } from './src/translations/fr';
import { sv } from './src/translations/sv';
@@ -15,6 +16,7 @@ import fs from 'fs';
const files = [
{ t: ca, n: 'ca' },
{ t: de, n: 'de' },
+ { t: fa, n: 'fa' },
{ t: eo, n: 'eo' },
{ t: es, n: 'es' },
{ t: fi, n: 'fi' },