Explorar o código

i18n: add Azerbaijani translation (#9269)

Jamal Ali hai 20 horas
pai
achega
65e402ca41

+ 1 - 0
.typos.toml

@@ -16,6 +16,7 @@ extend-exclude = [
 	"*.pot",
 	"*.rtl.css",
 	".git/",
+	"app/i18n/az/",
 	"app/i18n/cs/",
 	"app/i18n/de/",
 	"app/i18n/el/",

+ 1 - 0
CHANGELOG.md

@@ -117,6 +117,7 @@ See also [the FreshRSS releases](https://github.com/FreshRSS/FreshRSS/releases).
 	* New plural system [#8988](https://github.com/FreshRSS/FreshRSS/pull/8988)
 		* Pluralize the *new articles* count message
 	* Prefer OS-bundled Japanese fonts when UI language is Japanese [#9002](https://github.com/FreshRSS/FreshRSS/pull/9002)
+	* Add Azerbaijani (Azərbaycanca)
 	* Add Lithuanian [#9201](https://github.com/FreshRSS/FreshRSS/pull/9201), [#9213](https://github.com/FreshRSS/FreshRSS/pull/9213)
 	* Improve German [#9149](https://github.com/FreshRSS/FreshRSS/pull/9149)
 	* Improve Greek [#8977](https://github.com/FreshRSS/FreshRSS/pull/8977), [#9038](https://github.com/FreshRSS/FreshRSS/pull/9038)

+ 1 - 0
README.fr.md

@@ -229,6 +229,7 @@ Voir le [dépôt dédié à ces extensions](https://github.com/FreshRSS/Extensio
 
 | Langage | Progression | |
 | - | - | - |
+| Azərbaycanca (az) | ■■■■■■■■■■ 100% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Faz+%2F%28TODO%7CDIRTY%29%24%2F) |
 | Čeština (cs) | ■■■■■■■■・・ 81% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fcs+%2F%28TODO%7CDIRTY%29%24%2F) |
 | Deutsch (de) | ■■■■■■■■■・ 99% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fde+%2F%28TODO%7CDIRTY%29%24%2F) |
 | Ελληνικά (el) | ■■■■■■■・・・ 75% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fel+%2F%28TODO%7CDIRTY%29%24%2F) |

+ 1 - 0
README.md

@@ -125,6 +125,7 @@ See the [repository dedicated to those extensions](https://github.com/FreshRSS/E
 
 | Language | Progress | |
 | - | - | - |
+| Azərbaycanca (az) | ■■■■■■■■■■ 100% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Faz+%2F%28TODO%7CDIRTY%29%24%2F) |
 | Čeština (cs) | ■■■■■■■■・・ 81% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fcs+%2F%28TODO%7CDIRTY%29%24%2F) |
 | Deutsch (de) | ■■■■■■■■■・ 99% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fde+%2F%28TODO%7CDIRTY%29%24%2F) |
 | Ελληνικά (el) | ■■■■■■■・・・ 75% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fel+%2F%28TODO%7CDIRTY%29%24%2F) |

+ 165 - 0
app/i18n/az/admin.php

@@ -0,0 +1,165 @@
+<?php
+
+/******************************************************************************
+ * Each entry of that file can be associated with a comment to indicate its   *
+ * state. When there is no comment, it means the entry is fully translated.   *
+ * The recognized comments are (comment matching is case-insensitive):        *
+ *   + TODO: the entry has never been translated.                             *
+ *   + DIRTY: the entry has been translated but needs to be updated.          *
+ *   + IGNORE: the entry does not need to be translated.                      *
+ * When a comment is not recognized, it is discarded.                         *
+ ******************************************************************************/
+
+return array(
+	'auth' => array(
+		'allow_anonymous' => 'Standart istifadəçinin məqalələrinin anonim oxunmasına icazə ver (%s)',
+		'allow_anonymous_refresh' => 'Məqalələrin anonim yenilənməsinə icazə ver',
+		'api_enabled' => '<abbr>API</abbr> girişinə icazə ver <small>(mobil tətbiqlər və istifadəçi sorğularının paylaşılması üçün tələb olunur)</small>',
+		'form' => 'Veb forma (ənənəvi, JavaScript tələb edir)',
+		'http' => 'HTTP (qabaqcıl: veb server, OIDC, SSO… tərəfindən idarə olunur)',
+		'none' => 'Yoxdur (təhlükəlidir)',
+		'title' => 'Kimlik doğrulama',
+		'token' => 'Əsas kimlik doğrulama tokeni',
+		'token_help' => 'İstifadəçinin bütün RSS çıxışlarına girişə və lentlərin kimlik doğrulaması olmadan yenilənməsinə imkan verir:',
+		'type' => 'Kimlik doğrulama üsulu',
+	),
+	'extensions' => array(
+		'author' => 'Müəllif',
+		'community' => 'Mövcud icma genişlənmələri',
+		'description' => 'Təsvir',
+		'disabled' => 'Deaktiv',
+		'empty_list' => 'Quraşdırılmış genişlənmə yoxdur',
+		'empty_list_help' => 'Genişlənmə siyahısının boş olmasının səbəbini müəyyən etmək üçün jurnalları yoxlayın.',
+		'enabled' => 'Aktivdir',
+		'is_compatible' => 'Uyğundur',
+		'latest' => 'Quraşdırılıb',
+		'name' => 'Ad',
+		'no_configure_view' => 'Bu genişlənmə konfiqurasiya edilə bilməz.',
+		'system' => array(
+			'_' => 'Sistem genişlənmələri',
+			'no_rights' => 'Sistem genişlənməsi (tələb olunan icazələriniz yoxdur)',
+		),
+		'title' => 'Genişlənmələr',
+		'update' => 'Yeniləmə mövcuddur',
+		'user' => 'İstifadəçi genişlənmələri',
+		'version' => 'Versiya',
+	),
+	'stats' => array(
+		'_' => 'Statistika',
+		'all_feeds' => 'Bütün lentlər',
+		'category' => 'Kateqoriya',
+		'date_published' => 'Dərc tarixi',
+		'date_received' => 'Alınma tarixi',
+		'entry_count' => 'Yazı sayı',
+		'entry_per_category' => 'Kateqoriya üzrə yazılar',
+		'entry_per_day' => 'Gün üzrə yazılar (son 30 gün)',
+		'entry_per_day_of_week' => 'Həftənin günü üzrə (orta: %.2f mesaj)',
+		'entry_per_hour' => 'Saat üzrə (orta: %.2f mesaj)',
+		'entry_per_month' => 'Ay üzrə (orta: %.2f mesaj)',
+		'entry_repartition' => 'Yazıların paylanması',
+		'feed' => 'Lent',
+		'feed_per_category' => 'Kateqoriya üzrə lentlər',
+		'idle' => 'Fəaliyyətsiz lentlər',
+		'main' => 'Əsas statistika',
+		'main_stream' => 'Əsas axın',
+		'nb_unreads' => 'Oxunmamış məqalələrin sayı',
+		'no_idle' => 'Fəaliyyətsiz lent yoxdur!',
+		'number_entries' => '%d məqalə',
+		'overview' => 'Ümumi baxış',
+		'percent_of_total' => '% ümumidən',
+		'repartition' => 'Məqalələrin paylanması: %s',
+		'status_favorites' => 'Seçilmişlər',
+		'status_read' => 'Oxunmuş',
+		'status_total' => 'Ümumi',
+		'status_unread' => 'Oxunmamış',
+		'title' => 'Statistika',
+		'top_feed' => 'İlk on lent',
+		'unread_dates' => 'Ən çox oxunmamış məqaləsi olan tarixlər',
+	),
+	'system' => array(
+		'_' => 'Sistem parametrləri',
+		'auto-update-url' => 'Avtomatik yeniləmə serverinin URL-i',
+		'base-url' => array(
+			'_' => 'Əsas URL',
+			'recommendation' => 'Avtomatik tövsiyə: <kbd>%s</kbd>',
+		),
+		'closed_registration_message' => 'Qeydiyyat bağlı olduqda mesaj',
+		'cookie-duration' => array(
+			'help' => 'saniyə ilə',
+			'number' => 'Girişdə qalma müddəti',
+		),
+		'default_closed_registration_message' => 'Bu server hazırda yeni qeydiyyat qəbul etmir.',
+		'force_email_validation' => 'E-poçt ünvanının doğrulanmasını məcburi et',
+		'instance-name' => 'İnstans adı',
+		'internal-host-allowlist' => array(
+			'_' => 'Daxili host icazə siyahısı',
+			'help' => 'Hər sətirdə bir qeyd:<ul><li>Bir <code>host:port</code>. Məsələn <code>127.0.0.1:8080</code> və ya <code>rss-bridge:80</code></li><li>CIDR qeydi. Məsələn istənilən IPv4-ə icazə vermək üçün <code>0.0.0.0/0</code>, istənilən IPv6-ya icazə vermək üçün <code>::/0</code></li><li>İstənilən hosta icazə vermək üçün <code>*</code> (təhlükəsiz deyil)</li></ul>',
+		),
+		'max-categories' => 'İstifadəçi başına maksimum kateqoriya sayı',
+		'max-feeds' => 'İstifadəçi başına maksimum lent sayı',
+		'override-by-env-var' => 'Bu parametr <kbd>%s</kbd> mühit dəyişəni ilə təyin olunur.',
+		'registration' => array(
+			'number' => 'Maksimum hesab sayı',
+			'select' => array(
+				'label' => 'Qeydiyyat forması',
+				'option' => array(
+					'noform' => 'Deaktiv: Qeydiyyat forması yoxdur',
+					'nolimit' => 'Aktivdir: Hesab limiti yoxdur',
+					'setaccountsnumber' => 'Maksimum hesab sayını təyin et',
+				),
+			),
+			'status' => array(
+				'disabled' => 'Forma deaktivdir',
+				'enabled' => 'Forma aktivdir',
+			),
+			'title' => 'İstifadəçi qeydiyyat forması',
+		),
+		'sensitive-parameter' => 'Həssas parametr. <kbd>./data/config.php</kbd> faylında əl ilə redaktə edin',
+		'tos' => array(
+			'disabled' => 'verilməyib',
+			'enabled' => '<a href="./?a=tos">aktivdir</a>',
+			'help' => '<a href="https://freshrss.github.io/FreshRSS/en/admins/12_User_management.html#enable-terms-of-service-tos" target="_blank">İstifadə şərtlərini necə aktivləşdirməli</a>',
+		),
+		'websub' => array(
+			'help' => '<a href="https://freshrss.github.io/FreshRSS/en/users/WebSub.html" target="_blank">WebSub</a> haqqında',
+		),
+	),
+	'update' => array(
+		'_' => 'FreshRSS-i yenilə',
+		'apply' => 'Yeniləməni başlat',
+		'changelog' => 'Dəyişikliklər jurnalı',
+		'check' => 'Yeni yeniləmələri yoxla',
+		'copiedFromURL' => 'update.php %s ünvanından ./data qovluğuna kopyalandı',
+		'current_version' => 'Hazırda quraşdırılmış versiya',
+		'last' => 'Son yoxlama',
+		'loading' => 'Yenilənir…',
+		'none' => 'Yeniləmə yoxdur',
+		'releaseChannel' => array(
+			'_' => 'Buraxılış kanalı',
+			'edge' => 'Davamlı buraxılış (“edge”)',
+			'latest' => 'Stabil buraxılış (“latest”)',
+		),
+		'title' => 'FreshRSS-i yenilə',
+		'viaGit' => 'git və GitHub.com vasitəsilə yeniləmə başladı',
+	),
+	'user' => array(
+		'admin' => 'Administrator',	// IGNORE
+		'article_count' => 'Məqalələr',
+		'back_to_manage' => '← İstifadəçi siyahısına qayıt',
+		'create' => 'Yeni istifadəçi yarat',
+		'database_size' => 'Verilənlər bazasının ölçüsü',
+		'email' => 'E-poçt ünvanı',
+		'enabled' => 'Aktivdir',
+		'feed_count' => 'Lentlər',
+		'is_admin' => 'Administratordur',
+		'language' => 'Dil',
+		'last_user_activity' => 'Son istifadəçi fəaliyyəti',
+		'list' => 'İstifadəçi siyahısı',
+		'number' => '%d hesab yaradılıb',
+		'numbers' => '%d hesab yaradılıb',
+		'password_form' => 'Parol<br /><small>(veb forma ilə giriş üsulu üçün)</small>',
+		'password_format' => 'Ən azı 7 simvol',
+		'title' => 'İstifadəçiləri idarə et',
+		'username' => 'İstifadəçi adı',
+	),
+);

+ 33 - 0
app/i18n/az/api.php

@@ -0,0 +1,33 @@
+<?php
+
+/******************************************************************************
+ * Each entry of that file can be associated with a comment to indicate its   *
+ * state. When there is no comment, it means the entry is fully translated.   *
+ * The recognized comments are (comment matching is case-insensitive):        *
+ *   + TODO: the entry has never been translated.                             *
+ *   + DIRTY: the entry has been translated but needs to be updated.          *
+ *   + IGNORE: the entry does not need to be translated.                      *
+ * When a comment is not recognized, it is discarded.                         *
+ ******************************************************************************/
+
+return array(
+	'information' => array(
+		'address' => 'API ünvanınız:',
+		'output' => array(
+			'encoding-support' => '⚠️ XƏBƏRDARLIQ: <code>%2F</code> dəstəyi yoxdur, bəzi klientlər işləməyə bilər!',
+			'invalid-configuration' => '⚠️ XƏBƏRDARLIQ: ./data/config.php içində ehtimal olunan yanlış baza URL-i',
+			'pass' => '✔️ KEÇDİ',
+			'unknown-error' => '❌ ',	// IGNORE
+		),
+		'test' => array(
+			'fever' => 'Fever API konfiqurasiya testi:',
+			'greader' => 'Google Reader API konfiqurasiya testi:',
+		),
+		'title' => array(
+			'_' => 'FreshRSS API son nöqtələri',
+			'extension' => 'Genişlənmələr üçün API',
+			'fever' => 'Fever ilə uyğun API',
+			'greader' => 'Google Reader ilə uyğun API',
+		),
+	),
+);

+ 384 - 0
app/i18n/az/conf.php

@@ -0,0 +1,384 @@
+<?php
+
+/******************************************************************************
+ * Each entry of that file can be associated with a comment to indicate its   *
+ * state. When there is no comment, it means the entry is fully translated.   *
+ * The recognized comments are (comment matching is case-insensitive):        *
+ *   + TODO: the entry has never been translated.                             *
+ *   + DIRTY: the entry has been translated but needs to be updated.          *
+ *   + IGNORE: the entry does not need to be translated.                      *
+ * When a comment is not recognized, it is discarded.                         *
+ ******************************************************************************/
+
+return array(
+	'archiving' => array(
+		'_' => 'Arxivləmə',
+		'exception' => 'Təmizləmə istisnası',
+		'help' => 'Ayrı lentin parametrlərində daha çox seçim var',
+		'keep_favourites' => 'Seçilmişləri heç vaxt silmə',
+		'keep_labels' => 'Etiketləri heç vaxt silmə',
+		'keep_max' => 'Hər lent üçün saxlanılacaq maksimum məqalə sayı',
+		'keep_min_by_feed' => 'Hər lent üçün saxlanılacaq minimum məqalə sayı',
+		'keep_period' => 'Saxlanılacaq məqalələrin maksimum yaşı',
+		'keep_unreads' => 'Oxunmamış məqalələri heç vaxt silmə',
+		'maintenance' => 'Texniki xidmət',
+		'optimize' => 'Verilənlər bazasını optimallaşdır',
+		'optimize_help' => 'Verilənlər bazasının ölçüsünü azaltmaq üçün hərdən icra edin',
+		'policy' => 'Təmizləmə siyasəti',
+		'policy_warning' => 'Heç bir təmizləmə siyasəti seçilməyibsə, bütün məqalələr saxlanılacaq.',
+		'purge_now' => 'İndi təmizlə',
+		'title' => 'Arxivləmə',
+		'ttl' => 'Bundan daha tez-tez avtomatik yeniləmə',
+	),
+	'display' => array(
+		'_' => 'Görünüş',
+		'article' => array(
+			'authors_date' => array(
+				'_' => 'Müəlliflər və tarix',
+				'both' => 'Başlıqda və altlıqda',
+				'footer' => 'Altlıqda',
+				'header' => 'Başlıqda',
+				'none' => 'Yoxdur',
+			),
+			'feed_name' => array(
+				'above_title' => 'Başlığın/etiketlərin üstündə',
+				'none' => 'Yoxdur',
+				'with_authors' => 'Müəlliflər və tarix sətrində',
+			),
+			'feed_title' => 'Lentin başlığı',
+			'icons' => array(
+				'_' => 'Məqalə ikonlarının mövqeyi<br /><small>(Yalnız oxuma görünüşü)</small>',
+				'above_title' => 'Başlığın üstündə',
+				'with_authors' => 'Müəlliflər və tarix sətrində',
+			),
+			'tags' => array(
+				'_' => 'Etiketlər',
+				'both' => 'Başlıqda və altlıqda',
+				'footer' => 'Altlıqda',
+				'header' => 'Başlıqda',
+				'none' => 'Yoxdur',
+			),
+			'tags_max' => array(
+				'_' => 'Göstərilən etiketlərin maksimum sayı',
+				'help' => '0 deməkdir: bütün etiketləri göstər və onları yığma',
+			),
+		),
+		'darkMode' => array(
+			'_' => 'Avtomatik qaranlıq rejim',
+			'auto' => 'Avtomatik',
+			'help' => 'Yalnız uyğun temalar üçün',
+			'no' => 'Xeyr',
+		),
+		'display_enclosures' => 'Qoşmaları göstər',
+		'headline' => array(
+			'articles_header_footer' => 'Məqalələr: başlıq/altlıq',
+		),
+		'icon' => array(
+			'bottom_line' => 'Aşağı sətir',
+			'display_authors' => 'Müəlliflər',
+			'entry' => 'Məqalə ikonları',
+			'publication_date' => 'Dərc tarixi',
+			'related_tags' => 'Məqalə etiketləri',
+			'sharing' => 'Paylaşma',
+			'summary' => 'Xülasə',
+			'top_line' => 'Yuxarı sətir',
+		),
+		'language' => 'Dil',
+		'notif_html5' => array(
+			'seconds' => 'saniyə (0 deməkdir: vaxt aşımı yoxdur)',
+			'timeout' => 'HTML5 bildirişinin vaxt aşımı',
+		),
+		'show_nav_buttons' => 'Naviqasiya düymələrini göstər',
+		'show_title_unread' => 'Başlıqda oxunmamış məqalələrin sayını göstər',
+		'show_unread_count' => array(
+			'_' => 'Yan paneldə oxunmamışların sayını göstər',
+			'all' => 'Bütün kateqoriyalar və lentlər üçün',
+			'important' => 'Yalnız vacib lentlər üçün',
+			'important_locked' => 'Vacib lentlər oxunmamışların sayını həmişə göstərir.',
+			'none' => 'Heç vaxt',
+		),
+		'sidebar_hidden_by_default' => 'Yan paneli standart olaraq gizlət',
+		'theme' => array(
+			'_' => 'Tema',
+			'deprecated' => array(
+				'_' => 'Köhnəlmiş',
+				'description' => 'Bu tema artıq dəstəklənmir və <a href="https://freshrss.github.io/FreshRSS/en/users/05_Configuration.html#theme" target="_blank">FreshRSS-in gələcək buraxılışında</a> əlçatan olmayacaq',
+			),
+		),
+		'theme_not_available' => '“%s” teması artıq əlçatan deyil. Zəhmət olmasa başqa tema seçin.',
+		'thumbnail' => array(
+			'label' => 'Miniatür',
+			'landscape' => 'Üfüqi',
+			'none' => 'Yoxdur',
+			'portrait' => 'Şaquli',
+			'square' => 'Kvadrat',
+		),
+		'timezone' => 'Saat qurşağı',
+		'title' => 'Görünüş',
+		'website' => array(
+			'full' => 'İkon və ad',
+			'icon' => 'Yalnız ikon',
+			'label' => 'Veb sayt',
+			'name' => 'Yalnız ad',
+			'none' => 'Yoxdur',
+		),
+		'width' => array(
+			'content' => 'Məzmunun eni',
+			'large' => 'Geniş',
+			'medium' => 'Orta',
+			'no_limit' => 'Tam en',
+			'thin' => 'Dar',
+		),
+	),
+	'logs' => array(
+		'loglist' => array(
+			'level' => 'Jurnal səviyyəsi',
+			'message' => 'Jurnal mesajı',
+			'timestamp' => 'Vaxt damğası',
+		),
+		'pagination' => array(
+			'first' => 'İlk',
+			'last' => 'Son',
+			'next' => 'Növbəti',
+			'previous' => 'Əvvəlki',
+		),
+	),
+	'mark_read_button' => array(
+		'_' => '“Hamısını oxunmuş kimi işarələ” düyməsi',
+		'big' => 'Böyük',
+		'none' => 'Yoxdur',
+		'small' => 'Kiçik',
+	),
+	'notification' => array(
+		'html5_enable_notif' => 'Bildirişi aktivləşdir',
+	),
+	'notification_timeout' => array(
+		'bad' => array(
+			'label' => 'Xəbərdarlıq bannerini göstər',
+			'seconds' => 'saniyə (ən azı 1)',
+		),
+		'good' => array(
+			'label' => 'Təsdiq bannerini göstər',
+			'seconds' => 'saniyə (0 deməkdir: göstərilmir)',
+		),
+	),
+	'privacy' => array(
+		'_' => 'Məxfilik',
+		'retrieve_extension_list' => 'Genişlənmə siyahısını al',
+		'send_referrer_allowlist' => 'Server ünvanınızı görməsinə icazə verilən saytlar (%s)',
+	),
+	'profile' => array(
+		'_' => 'Profilin idarə edilməsi',
+		'api' => array(
+			'_' => 'API vasitəsilə xarici giriş',
+			'api_not_set' => 'API parolu təyin edilməyib',
+			'api_set' => 'API parolu təyin edilib',
+			'check_link' => 'API-nin vəziyyətini bu ünvandan yoxlayın: <kbd><a href="../api/" target="_blank">%s</a></kbd>',
+			'disabled' => 'API girişi deaktivdir.',
+			'documentation_link' => '<a href="https://freshrss.github.io/FreshRSS/en/users/06_Mobile_access.html#access-via-mobile-app" target="_blank">Sənədləşməyə və tanınan tətbiqlərin siyahısına</a> baxın',
+			'help' => '<a href="https://freshrss.github.io/FreshRSS/en/users/06_Mobile_access.html#access-via-mobile-app" target=_blank>Sənədləşməyə</a> baxın',
+			'security_warning' => 'HTTPS istifadə edin. API parolu açıq mətnlə ötürülür və GET ilə göndərilsə server jurnallarında görünə bilər.',
+		),
+		'change_password' => 'Parolu dəyiş',
+		'confirm_new_password' => 'Yeni parolu təsdiqlə',
+		'current_password' => 'Cari parol<br /><small>(veb forma ilə giriş üsulu üçün)</small>',
+		'delete' => array(
+			'_' => 'Hesabın silinməsi',
+			'warn' => 'Hesabınız və ona aid bütün məlumatlar silinəcək.',
+		),
+		'email' => 'E-poçt ünvanı',
+		'new_password' => 'Yeni parol',
+		'password_api' => 'API parolu<br /><small>(məsələn, mobil tətbiqlər üçün)</small>',
+		'password_format' => 'Ən azı 7 simvol',
+		'title' => 'Profil',
+	),
+	'query' => array(
+		'_' => 'İstifadəçi sorğuları',
+		'create' => 'Yeni istifadəçi sorğusu yarat',
+		'deprecated' => 'Bu sorğu artıq etibarlı deyil. İstinad edilən kateqoriya və ya lent silinib.',
+		'description' => 'Təsvir',
+		'filter' => array(
+			'_' => 'Tətbiq edilən süzgəc:',
+			'categories' => 'Kateqoriyaya görə göstər',
+			'feeds' => 'Lentə görə göstər',
+			'include_article_tags_label' => 'Lentlərdən gələn məqalə etiketlərini daxil et',
+			'include_user_labels_label' => 'İstifadəçi etiketlərini daxil et, prefiks ilə:',
+			'order' => 'Tarixə görə sırala',
+			'search' => 'İfadə',
+			'shareOpml' => 'Uyğun kateqoriya və lentlərin OPML ilə paylaşılmasını aktivləşdir',
+			'shareRss' => 'HTML &amp; RSS ilə paylaşmanı aktivləşdir',
+			'state' => 'Vəziyyət',
+			'tags' => 'Etiketə görə göstər',
+			'type' => 'Növ',
+		),
+		'get_A' => 'Bütün lentləri göstər, kateqoriyasında göstərilənləri də',
+		'get_Z' => 'Bütün lentləri göstər, arxivlənmişləri də',
+		'get_all' => 'Bütün məqalələri göstər',
+		'get_all_labels' => 'İstənilən etiketi olan məqalələri göstər',
+		'get_category' => '“%s” kateqoriyasını göstər',
+		'get_favorite' => 'Seçilmiş məqalələri göstər',
+		'get_feed' => '“%s” lentini göstər',
+		'get_important' => 'Vacib lentlərdən olan məqalələri göstər',
+		'get_label' => '“%s” etiketi olan məqalələri göstər',
+		'help' => '<a href="https://freshrss.github.io/FreshRSS/en/users/user_queries.html" target="_blank">İstifadəçi sorğuları və HTML / RSS / OPML ilə yenidən paylaşma sənədləşməsinə</a> baxın.',
+		'image_url' => 'Şəklin URL-i',
+		'name' => 'Ad',
+		'no_filter' => 'Süzgəc yoxdur',
+		'no_queries' => array(
+			'_' => 'Hələ heç bir istifadəçi sorğusu yadda saxlanılmayıb.',
+			'help' => '<a href="https://freshrss.github.io/FreshRSS/en/users/user_queries.html" target="_blank">Sənədləşməyə</a> baxın',
+		),
+		'number' => 'Sorğu n°%d',
+		'order_asc' => 'Əvvəlcə ən köhnə məqalələri göstər',
+		'order_desc' => 'Əvvəlcə ən yeni məqalələri göstər',
+		'search' => '“%s” üçün axtar',
+		'share' => array(
+			'_' => 'Bu sorğunu keçid ilə paylaş',
+			'disabled' => array(
+				'_' => 'deaktiv',
+				'title' => 'Paylaşma',
+			),
+			'greader' => 'GReader JSON-a paylaşıla bilən keçid',
+			'help' => 'Bu sorğunu kimləsə paylaşmaq istəyirsinizsə bu keçidi verin',
+			'html' => 'HTML səhifəsinə paylaşıla bilən keçid',
+			'opml' => 'Lentlərin OPML siyahısına paylaşıla bilən keçid',
+			'rss' => 'RSS lentinə paylaşıla bilən keçid',
+		),
+		'state_all' => 'Bütün məqalələri göstər',
+		'state_favorite' => 'Seçilmiş məqalələri göstər',
+		'state_not_favorite' => 'Seçilmiş olmayan məqalələri göstər',
+		'state_read' => 'Oxunmuş məqalələri göstər',
+		'state_read_favorite' => 'Oxunmuş seçilmiş məqalələri göstər',
+		'state_read_not_favorite' => 'Oxunmuş, seçilmiş olmayan məqalələri göstər',
+		'state_unread' => 'Oxunmamış məqalələri göstər',
+		'state_unread_favorite' => 'Oxunmamış seçilmiş məqalələri göstər',
+		'state_unread_not_favorite' => 'Oxunmamış, seçilmiş olmayan məqalələri göstər',
+		'title' => 'İstifadəçi sorğuları',
+	),
+	'reading' => array(
+		'_' => 'Oxuma',
+		'after_onread' => '“Hamısını oxunmuş kimi işarələ”dən sonra,',
+		'always_show_favorites' => 'Seçilmişlərdə bütün məqalələri standart olaraq göstər',
+		'apply_to_individual_feed' => 'Lentlərə ayrı-ayrılıqda tətbiq olunur',
+		'articles_per_page' => 'Hər səhifədəki məqalələrin sayı',
+		'auto_load_more' => 'Səhifənin sonunda daha çox məqalə yüklə',
+		'auto_remove_article' => 'Oxunduqdan sonra məqalələri gizlət',
+		'confirm_enabled' => '“Hamısını oxunmuş kimi işarələ” əməliyyatlarında təsdiq dialoqu göstər',
+		'display_articles_unfolded' => 'Məqalələri standart olaraq açıq göstər',
+		'display_categories_unfolded' => 'Açılacaq kateqoriyalar',
+		'headline' => array(
+			'articles' => 'Məqalələr: Aç/Bağla',
+			'categories' => 'Sol naviqasiya: Kateqoriyalar',
+			'mark_as_read' => 'Məqaləni oxunmuş kimi işarələ',
+			'misc' => 'Müxtəlif',
+			'view' => 'Görünüş',
+		),
+		'hide_read_feeds' => 'Oxunmamış məqaləsi olmayan kateqoriya və lentləri gizlət (“Bütün məqalələri göstər” konfiqurasiyası ilə işləmir)',
+		'img_with_lazyload' => 'Şəkilləri yükləmək üçün <em>lazy load</em> rejimindən istifadə et',
+		'jump_next' => 'növbəti oxunmamış qonşuya keç',
+		'mark_updated_article_unread' => 'Yenilənmiş məqalələri oxunmamış kimi işarələ',
+		'number_divided_when_reader' => 'Oxuma görünüşündə 2-yə böl.',
+		'read' => array(
+			'article_open_on_website' => 'məqalə öz orijinal veb saytında açılanda',
+			'article_viewed' => 'məqaləyə baxılanda',
+			'focus' => 'fokusda olanda (vacib lentlər istisna olmaqla)',
+			'keep_max_n_unread' => 'Oxunmamış saxlanılacaq məqalələrin maksimum sayı',
+			'scroll' => 'sürüşdürərkən (vacib lentlər istisna olmaqla)',
+			'upon_gone' => 'mənbə xəbər lentində artıq olmayanda',
+			'upon_reception' => 'məqalə qəbul ediləndə',
+			'when' => 'Məqaləni oxunmuş kimi işarələ…',
+			'when_same_guid_in_category' => 'kateqoriyanın ən yeni <i>n</i> məqaləsi arasında eyni GUID artıq varsa',
+			'when_same_title_in_category' => 'kateqoriyanın ən yeni <i>n</i> məqaləsi arasında eyni başlıq artıq varsa',
+			'when_same_title_in_feed' => 'lentin ən yeni <i>n</i> məqaləsi arasında eyni başlıq artıq varsa',
+		),
+		'show' => array(
+			'_' => 'Göstəriləcək məqalələr',
+			'active_category' => 'Aktiv kateqoriya',
+			'adaptive' => 'Varsa oxunmamışları göstər, yoxsa bütün məqalələri',
+			'all_articles' => 'Bütün məqalələri göstər',
+			'all_categories' => 'Bütün kateqoriyalar',
+			'no_category' => 'Kateqoriya yoxdur',
+			'remember_categories' => 'Açıq kateqoriyaları yadda saxla',
+			'unread' => 'Oxunmamışları göstər',
+			'unread_or_favorite' => 'Oxunmamışları və seçilmişləri göstər',
+		),
+		'show_fav_unread_help' => 'Etiketlərə də tətbiq olunur',
+		'sides_close_article' => 'Məqalə mətni sahəsindən kənara klikləmək məqaləni bağlayır',
+		'star' => array(
+			'when' => 'Məqaləni seçilmiş kimi işarələ…',
+		),
+		'sticky_post' => 'Açılanda məqaləni yuxarıya sancaqla',
+		'sticky_sort' => 'Naviqasiya zamanı fərdi sıralamanı saxla',
+		'sticky_sort_help' => 'Sonuncu fərdi sıralamanın aktiv qalacağını, yoxsa hər kateqoriya və ya lentin həmişə öz standart və ya qlobal parametrindən istifadə edəcəyini müəyyən edir.',
+		'title' => 'Oxuma',
+		'view' => array(
+			'default' => 'Standart görünüş',
+			'global' => 'Qlobal görünüş',
+			'normal' => 'Normal görünüş',
+			'reader' => 'Oxuma görünüşü',
+		),
+	),
+	'sharing' => array(
+		'_' => 'Paylaşma',
+		'add' => 'Paylaşma üsulu əlavə et',
+		'bluesky' => 'Bluesky',	// IGNORE
+		'deprecated' => 'Bu xidmət köhnəlib və <a href="https://freshrss.github.io/FreshRSS/en/users/08_sharing_services.html" title="Ətraflı məlumat üçün sənədləşməni aç" target="_blank">gələcək buraxılışda</a> FreshRSS-dən çıxarılacaq.',
+		'diaspora' => 'Diaspora*',	// IGNORE
+		'email' => 'E-poçt',
+		'facebook' => 'Facebook',	// IGNORE
+		'more_information' => 'Ətraflı məlumat',
+		'print' => 'Çap et',
+		'raindrop' => 'Raindrop.io',	// IGNORE
+		'remove' => 'Paylaşma üsulunu çıxar',
+		'shaarli' => 'Shaarli',	// IGNORE
+		'share_name' => 'Göstəriləcək paylaşma adı',
+		'share_url' => 'İstifadə ediləcək paylaşma URL-i',
+		'title' => 'Paylaşma',
+		'twitter' => 'Twitter',	// IGNORE
+		'wallabag' => 'wallabag',	// IGNORE
+	),
+	'shortcut' => array(
+		'_' => 'Qısayollar',
+		'article_action' => 'Məqalə əməliyyatları',
+		'auto_share' => 'Paylaş',
+		'auto_share_help' => 'Yalnız bir paylaşma rejimi varsa, o istifadə olunur. Əks halda rejimlərə nömrələri ilə müraciət edilir.',
+		'close_menus' => 'Menyuları bağla',
+		'collapse_article' => 'Yığ',
+		'first_article' => 'İlk məqaləni aç',
+		'focus_search' => 'Axtarış qutusuna keç',
+		'global_view' => 'Qlobal görünüşə keç',
+		'help' => 'Sənədləşməni göstər',
+		'javascript' => 'Qısayollardan istifadə etmək üçün JavaScript aktiv olmalıdır',
+		'last_article' => 'Son məqaləni aç',
+		'load_more' => 'Daha çox məqalə yüklə',
+		'mark_favorite' => 'Seçilmiş işarəsini dəyiş',
+		'mark_read' => 'Oxunmuş işarəsini dəyiş',
+		'navigation' => 'Naviqasiya',
+		'navigation_help' => '<kbd>⇧ Shift</kbd> modifikatoru ilə naviqasiya qısayolları lentlərə tətbiq olunur.<br/><kbd>Alt ⎇</kbd> modifikatoru ilə naviqasiya qısayolları kateqoriyalara tətbiq olunur.',
+		'navigation_no_mod_help' => 'Aşağıdakı naviqasiya qısayolları modifikatorları dəstəkləmir.',
+		'next_article' => 'Növbəti məqaləni aç',
+		'next_unread_article' => 'Növbəti oxunmamış məqaləni aç',
+		'non_standard' => 'Bəzi düymələr (<kbd>%s</kbd>) qısayol kimi işləməyə bilər.',
+		'normal_view' => 'Normal görünüşə keç',
+		'other_action' => 'Digər əməliyyatlar',
+		'previous_article' => 'Əvvəlki məqaləni aç',
+		'reading_view' => 'Oxuma görünüşünə keç',
+		'rss_view' => 'RSS lenti kimi aç',
+		'see_on_website' => 'Orijinal veb saytda bax',
+		'shift_for_all_read' => '+ <kbd>Alt ⎇</kbd> əvvəlki məqalələri oxunmuş kimi işarələmək üçün<br />+ <kbd>⇧ Shift</kbd> bütün məqalələri oxunmuş kimi işarələmək üçün',
+		'skip_next_article' => 'Açmadan növbətini seç',
+		'skip_previous_article' => 'Açmadan əvvəlkini seç',
+		'title' => 'Qısayollar',
+		'toggle_aside' => 'Yan paneli aç/bağla',
+		'toggle_media' => 'Medianı oynat/dayandır',
+		'user_filter' => 'İstifadəçi sorğularına keç',
+		'user_filter_help' => 'Yalnız bir istifadəçi sorğusu varsa, o istifadə olunur. Əks halda sorğulara nömrələri ilə müraciət edilir.',
+		'views' => 'Görünüşlər',
+	),
+	'user' => array(
+		'articles_and_size' => '%s məqalə (%s)',
+		'current' => 'Cari istifadəçi',
+		'is_admin' => 'administratordur',
+		'users' => 'İstifadəçilər',
+	),
+);

+ 152 - 0
app/i18n/az/feedback.php

@@ -0,0 +1,152 @@
+<?php
+
+/******************************************************************************
+ * Each entry of that file can be associated with a comment to indicate its   *
+ * state. When there is no comment, it means the entry is fully translated.   *
+ * The recognized comments are (comment matching is case-insensitive):        *
+ *   + TODO: the entry has never been translated.                             *
+ *   + DIRTY: the entry has been translated but needs to be updated.          *
+ *   + IGNORE: the entry does not need to be translated.                      *
+ * When a comment is not recognized, it is discarded.                         *
+ ******************************************************************************/
+
+return array(
+	'access' => array(
+		'denied' => 'Bu səhifəyə giriş icazəniz yoxdur',
+		'not_found' => 'Mövcud olmayan səhifə axtarırsınız',
+	),
+	'admin' => array(
+		'optimization_complete' => 'Optimallaşdırma tamamlandı',
+	),
+	'api' => array(
+		'password' => array(
+			'failed' => 'Parolunuz dəyişdirilə bilmədi',
+			'updated' => 'Parolunuz dəyişdirildi',
+		),
+	),
+	'auth' => array(
+		'login' => array(
+			'invalid' => 'Giriş yanlışdır',
+			'success' => 'Daxil oldunuz',
+		),
+		'logout' => array(
+			'success' => 'Çıxış etdiniz',
+		),
+	),
+	'conf' => array(
+		'error' => 'Parametrlər yadda saxlanarkən xəta baş verdi',
+		'query_created' => '“%s” sorğusu yaradıldı.',
+		'shortcuts_updated' => 'Qısayollar yeniləndi',
+		'updated' => 'Parametrlər yeniləndi',
+	),
+	'extensions' => array(
+		'already_enabled' => '%s artıq aktivdir',
+		'cannot_remove' => '%s çıxarıla bilmədi',
+		'disable' => array(
+			'ko' => '%s deaktiv edilə bilmədi. Təfərrüatlar üçün <a href="%s">FreshRSS jurnallarını yoxlayın</a>.',
+			'ok' => '%s indi deaktivdir',
+		),
+		'enable' => array(
+			'ko' => '%s aktivləşdirilə bilmədi. Təfərrüatlar üçün <a href="%s">FreshRSS jurnallarını yoxlayın</a>.',
+			'ok' => '%s indi aktivdir',
+		),
+		'invalid_view_mode' => 'Yanlış görünüş rejimi “%s”! “Normal görünüş”ə qayıdılır.',
+		'no_access' => '%s üzərində girişiniz yoxdur',
+		'not_enabled' => '%s aktiv deyil',
+		'not_found' => '%s mövcud deyil',
+		'removed' => '%s çıxarıldı',
+	),
+	'import_export' => array(
+		'export_no_zip_extension' => 'ZIP genişlənməsi serverinizdə mövcud deyil. Zəhmət olmasa faylları bir-bir ixrac etməyə çalışın.',
+		'feeds_imported' => 'Lentləriniz idxal edildi. İdxalı bitirmisinizsə, indi <i>Lentləri yenilə</i> düyməsini basa bilərsiniz.',
+		'feeds_imported_with_errors' => 'Lentləriniz idxal edildi, lakin bəzi xətalar baş verdi. İdxalı bitirmisinizsə, indi <i>Lentləri yenilə</i> düyməsini basa bilərsiniz.',
+		'file_cannot_be_uploaded' => 'Fayl yüklənə bilmədi!',
+		'no_zip_extension' => 'ZIP genişlənməsi serverinizdə mövcud deyil.',
+		'zip_error' => 'ZIP emalı zamanı xəta baş verdi.',
+	),
+	'profile' => array(
+		'error' => 'Profiliniz dəyişdirilə bilmədi',
+		'passwords_dont_match' => 'Parollar uyğun gəlmir',
+		'updated' => 'Profiliniz dəyişdirildi',
+	),
+	'sub' => array(
+		'actualize' => 'Yenilənir',
+		'articles' => array(
+			'marked_read' => 'Seçilən məqalələr oxunmuş kimi işarələndi.',
+			'marked_unread' => 'Məqalələr oxunmamış kimi işarələndi.',
+		),
+		'category' => array(
+			'created' => '%s kateqoriyası yaradıldı.',
+			'deleted' => 'Kateqoriya silindi.',
+			'emptied' => 'Kateqoriya boşaldıldı',
+			'error' => 'Kateqoriya yenilənə bilmədi',
+			'name_exists' => 'Kateqoriya adı artıq mövcuddur.',
+			'no_id' => 'Kateqoriyanın ID-sini göstərməlisiniz.',
+			'no_name' => 'Kateqoriya adı boş ola bilməz.',
+			'not_delete_default' => 'Standart kateqoriyanı silə bilməzsiniz!',
+			'not_exist' => 'Kateqoriya mövcud deyil!',
+			'over_max' => 'Kateqoriya limitinizə çatdınız (%d)',
+			'updated' => 'Kateqoriya yeniləndi.',
+		),
+		'feed' => array(
+			'actualized' => '<em>%s</em> yeniləndi',
+			'actualizeds' => 'RSS lentləri yeniləndi',
+			'added' => '<em>%s</em> RSS lenti əlavə edildi',
+			'already_subscribed' => 'Artıq <em>%s</em> lentinə abunə olmusunuz',
+			'cache_cleared' => '<em>%s</em> keşi təmizləndi',
+			'deleted' => 'Lent silindi',
+			'error' => 'Lent yenilənə bilmədi',
+			'favicon' => array(
+				'too_large' => 'Yüklənən ikon çox böyükdür. Maksimum fayl ölçüsü <em>%s</em>.',
+				'unsupported_format' => 'Dəstəklənməyən şəkil fayl formatı!',
+			),
+			'internal_problem' => 'Xəbər lenti əlavə edilə bilmədi. Təfərrüatlar üçün <a href="%s">FreshRSS jurnallarını yoxlayın</a>. URL-in sonuna <code>#force_feed</code> əlavə edərək məcburi əlavə etməyə cəhd edə bilərsiniz.',
+			'invalid_url' => '<em>%s</em> URL-i yanlışdır',
+			'n_actualized' => '%d lent yeniləndi',
+			'n_entries_deleted' => '%d məqalə silindi',
+			'no_refresh' => 'Yeniləmək üçün lent yoxdur',
+			'not_added' => '<em>%s</em> əlavə edilə bilmədi',
+			'not_found' => 'Lent tapıla bilmədi',
+			'over_max' => 'Lent limitinizə çatdınız (%d)',
+			'reloaded' => '<em>%s</em> yenidən yükləndi',
+			'selector_preview' => array(
+				'http_error' => 'Veb sayt məzmunu yüklənə bilmədi.',
+				'no_entries' => 'Bu lentdə məqalə yoxdur. Önbaxış yaratmaq üçün ən azı bir məqalə lazımdır.',
+				'no_feed' => 'Daxili xəta (lent tapıla bilmədi).',
+				'no_result' => 'Seçici heç nə ilə uyğun gəlmədi. Əvəzində ehtiyat variant kimi lentin orijinal mətni göstəriləcək.',
+				'selector_empty' => 'Seçici boşdur. Önbaxış yaratmaq üçün onu təyin etməlisiniz.',
+			),
+			'updated' => 'Lent yeniləndi',
+		),
+		'purge_completed' => 'Təmizləmə tamamlandı (%d məqalə silindi)',
+	),
+	'tag' => array(
+		'created' => '“%s” etiketi yaradıldı.',
+		'error' => 'Etiket yenilənə bilmədi!',
+		'name_exists' => 'Etiket adı artıq mövcuddur.',
+		'renamed' => '“%s” etiketinin adı “%s” olaraq dəyişdirildi.',
+		'updated' => 'Etiket yeniləndi.',
+	),
+	'update' => array(
+		'can_apply' => 'FreshRSS-in yenilənməsi mövcuddur: <strong>Versiya %s</strong>.',
+		'error' => 'Yeniləmə prosesi xəta ilə qarşılaşdı: %s',
+		'file_is_nok' => 'FreshRSS-in yenilənməsi mövcuddur (<strong>Versiya %s</strong>), lakin <em>%s</em> qovluğundakı icazələri yoxlayın. HTTP serverinin yazma icazəsi olmalıdır',
+		'finished' => 'Yeniləmə tamamlandı!',
+		'none' => 'Yeniləmə mövcud deyil',
+		'server_not_found' => 'Yeniləmə serveri tapıla bilmədi. [%s]',
+	),
+	'user' => array(
+		'created' => array(
+			'_' => '%s istifadəçisi yaradıldı',
+			'error' => '%s istifadəçisi yaradıla bilmədi',
+		),
+		'deleted' => array(
+			'_' => '%s istifadəçisi silindi',
+			'error' => '%s istifadəçisi silinə bilmədi',
+		),
+		'updated' => array(
+			'_' => '%s istifadəçisi yeniləndi',
+			'error' => '%s istifadəçisi yenilənmədi',
+		),
+	),
+);

+ 342 - 0
app/i18n/az/gen.php

@@ -0,0 +1,342 @@
+<?php
+
+/******************************************************************************
+ * Each entry of that file can be associated with a comment to indicate its   *
+ * state. When there is no comment, it means the entry is fully translated.   *
+ * The recognized comments are (comment matching is case-insensitive):        *
+ *   + TODO: the entry has never been translated.                             *
+ *   + DIRTY: the entry has been translated but needs to be updated.          *
+ *   + IGNORE: the entry does not need to be translated.                      *
+ * When a comment is not recognized, it is discarded.                         *
+ ******************************************************************************/
+
+return array(
+	'action' => array(
+		'actualize' => 'Lentləri yenilə',
+		'add' => 'Əlavə et',
+		'back_to_rss_feeds' => '← RSS lentlərinizə qayıdın',
+		'cancel' => 'Ləğv et',
+		'close' => 'Bağla',
+		'create' => 'Yarat',
+		'delete_all_feeds' => 'Bütün lentləri sil',
+		'delete_errored_feeds' => 'Xətalı lentləri sil',
+		'delete_muted_feeds' => 'Səssiz lentləri sil',
+		'demote' => 'Aşağı sal',
+		'disable' => 'Deaktiv et',
+		'download' => 'Endir',
+		'empty' => 'Boşalt',
+		'enable' => 'Aktivləşdir',
+		'export' => 'İxrac et',
+		'filter' => 'Süzgəc',
+		'import' => 'İdxal et',
+		'load_default_shortcuts' => 'Standart qısayolları yüklə',
+		'manage' => 'İdarə et',
+		'mark_read' => 'Oxunmuş kimi işarələ',
+		'menu' => array(
+			'open' => 'Menyunu aç',
+		),
+		'nav_buttons' => array(
+			'next' => 'Növbəti məqalə',
+			'prev' => 'Əvvəlki məqalə',
+			'up' => 'Yuxarı get',
+		),
+		'open_url' => 'URL-i aç',
+		'promote' => 'Yüksəlt',
+		'purge' => 'Təmizlə',
+		'refresh_opml' => 'OPML-i yenilə',
+		'remove' => 'Çıxar',
+		'rename' => 'Adını dəyiş',
+		'see_website' => 'Veb sayta bax',
+		'submit' => 'Göndər',
+		'truncate' => 'Bütün məqalələri sil',
+		'update' => 'Yenilə',
+	),
+	'auth' => array(
+		'accept_tos' => '<a href="%s">Xidmət şərtlərini</a> qəbul edirəm.',
+		'email' => 'E-poçt ünvanı',
+		'keep_logged_in' => 'Məni sistemdə saxla <small>(%s gün)</small>',
+		'login' => 'Giriş',
+		'logout' => 'Çıxış',
+		'password' => array(
+			'_' => 'Parol',
+			'format' => '<small>Ən azı 7 simvol</small>',
+		),
+		'reauth' => array(
+			'header' => 'Yenidən kimlik doğrulama tələb olunur',
+			'tip' => 'Növbəti <u>%d dəqiqə</u> ərzində sizdən yenidən daxil olmaq istənilməyəcək',
+			'title' => 'Yenidən kimlik doğrulama',
+		),
+		'registration' => array(
+			'_' => 'Yeni hesab',
+			'ask' => 'Hesab yaradılsın?',
+			'title' => 'Hesabın yaradılması',
+		),
+		'username' => array(
+			'_' => 'İstifadəçi adı',
+			'format' => '<small>1-39 simvol: hərflər, rəqəmlər və <code>. _ @ -</code></small>',
+		),
+	),
+	'date' => array(
+		'Apr' => '\\A\\p\\r\\e\\l',
+		'Aug' => '\\A\\v\\q\\u\\s\\t',
+		'Dec' => '\\D\\e\\k\\a\\b\\r',
+		'Feb' => '\\F\\e\\v\\r\\a\\l',
+		'Jan' => '\\Y\\a\\n\\v\\a\\r',
+		'Jul' => '\\İ\\y\\u\\l',
+		'Jun' => '\\İ\\y\\u\\n',
+		'Mar' => '\\M\\a\\r\\t',
+		'May' => '\\M\\a\\y',	// IGNORE
+		'Nov' => '\\N\\o\\y\\a\\b\\r',
+		'Oct' => '\\O\\k\\t\\y\\a\\b\\r',
+		'Sep' => '\\S\\e\\n\\t\\y\\a\\b\\r',
+		'apr' => 'Apr.',	// IGNORE
+		'april' => 'Aprel',
+		'aug' => 'Avq.',
+		'august' => 'Avqust',
+		'before_yesterday' => 'Srağagün',
+		'dec' => 'Dek.',
+		'december' => 'Dekabr',
+		'feb' => 'Fev.',
+		'february' => 'Fevral',
+		'format_date' => 'j %s Y',	// IGNORE
+		'format_date_hour' => 'j %s Y \\s\\a\\a\\t H\\:i',
+		'fri' => 'C',
+		'jan' => 'Yan.',
+		'january' => 'Yanvar',
+		'jul' => 'İyul',
+		'july' => 'İyul',
+		'jun' => 'İyun',
+		'june' => 'İyun',
+		'last_2_year' => 'Son iki il',
+		'last_3_month' => 'Son üç ay',
+		'last_3_year' => 'Son üç il',
+		'last_5_year' => 'Son beş il',
+		'last_6_month' => 'Son altı ay',
+		'last_month' => 'Son ay',
+		'last_week' => 'Son həftə',
+		'last_year' => 'Son il',
+		'mar' => 'Mar.',	// IGNORE
+		'march' => 'Mart',
+		'may' => 'May',	// IGNORE
+		'may_' => 'May',	// IGNORE
+		'mon' => 'B.e',
+		'month' => 'aylar',
+		'nov' => 'Noy.',
+		'november' => 'Noyabr',
+		'oct' => 'Okt.',
+		'october' => 'Oktyabr',
+		'sat' => 'Ş',
+		'sep' => 'Sen.',
+		'september' => 'Sentyabr',
+		'sun' => 'B',
+		'thu' => 'C.a',
+		'today' => 'Bu gün',
+		'tue' => 'Ç.a',
+		'wed' => 'Ç',
+		'yesterday' => 'Dünən',
+	),
+	'dir' => 'ltr',	// IGNORE
+	'freshrss' => array(
+		'_' => 'FreshRSS',	// IGNORE
+		'about' => 'FreshRSS haqqında',
+	),
+	'interval' => array(
+		'day' => array(
+			0 => '%d gün əvvəl',
+			1 => '%d gün əvvəl',
+		),
+		'hour' => array(
+			0 => '%d saat əvvəl',
+			1 => '%d saat əvvəl',
+		),
+		'justnow' => 'indicə',
+		'minute' => array(
+			0 => '%d dəqiqə əvvəl',
+			1 => '%d dəqiqə əvvəl',
+		),
+		'month' => array(
+			0 => '%d ay əvvəl',
+			1 => '%d ay əvvəl',
+		),
+		'second' => array(
+			0 => '%d saniyə əvvəl',
+			1 => '%d saniyə əvvəl',
+		),
+		'year' => array(
+			0 => '%d il əvvəl',
+			1 => '%d il əvvəl',
+		),
+	),
+	'js' => array(
+		'category_empty' => 'Boş kateqoriya',
+		'confirm_action' => 'Bu əməliyyatı yerinə yetirmək istədiyinizə əminsiniz? Onu ləğv etmək mümkün deyil!',
+		'confirm_action_feed_cat' => 'Bu əməliyyatı yerinə yetirmək istədiyinizə əminsiniz? Əlaqəli seçilmişləri və istifadəçi sorğularını itirəcəksiniz. Onu ləğv etmək mümkün deyil!',
+		'confirm_exit_slider' => 'Yadda saxlanmamış parametrlərdən imtina etmək istədiyinizə əminsiniz?',
+		'feedback' => array(
+			'body_new_articles' => array(
+				0 => 'FreshRSS-də oxumaq üçün %d yeni məqalə var.',
+				1 => 'FreshRSS-də oxumaq üçün %d yeni məqalə var.',
+			),
+			'body_unread_articles' => array(
+				0 => '(oxunmamış: %d)',
+				1 => '(oxunmamış: %d)',
+			),
+			'request_failed' => 'Sorğu alınmadı, səbəbi internet əlaqəsi problemləri ola bilər.',
+			'title_new_articles' => 'FreshRSS: yeni məqalələr!',
+		),
+		'labels_empty' => 'Etiket yoxdur',
+		'new_article' => 'Yeni məqalələr mövcuddur, səhifəni yeniləmək üçün klikləyin.',
+		'should_be_activated' => 'JavaScript aktiv olmalıdır',
+		'unsafe_csp_header' => 'İstifadə olunan CSP başlığı təhlükəsiz deyil və FreshRSS XSS hücumlarına qarşı həssas ola bilər. <a target="_blank" href="https://freshrss.github.io/FreshRSS/en/admins/10_ServerConfig.html#security">Sənədləşməyə baxın</a>',
+	),
+	'lang' => array(
+		'az' => 'Azərbaycanca',	// IGNORE
+		'cs' => 'Čeština',	// IGNORE
+		'de' => 'Deutsch',	// IGNORE
+		'el' => 'Ελληνικά',	// IGNORE
+		'en' => 'English',	// IGNORE
+		'en-US' => 'English (United States)',	// IGNORE
+		'es' => 'Español',	// IGNORE
+		'fa' => 'فارسی',	// IGNORE
+		'fi' => 'Suomi',	// IGNORE
+		'fr' => 'Français',	// IGNORE
+		'he' => 'עברית',	// IGNORE
+		'hu' => 'Magyar',	// IGNORE
+		'id' => 'Bahasa Indonesia',	// IGNORE
+		'it' => 'Italiano',	// IGNORE
+		'ja' => '日本語',	// IGNORE
+		'ko' => '한국어',	// IGNORE
+		'lt' => 'Lietuvių',	// IGNORE
+		'lv' => 'Latviešu',	// IGNORE
+		'nl' => 'Nederlands',	// IGNORE
+		'oc' => 'Occitan',	// IGNORE
+		'pl' => 'Polski',	// IGNORE
+		'pt-BR' => 'Português (Brasil)',	// IGNORE
+		'pt-PT' => 'Português (Portugal)',	// IGNORE
+		'ru' => 'Русский',	// IGNORE
+		'sk' => 'Slovenčina',	// IGNORE
+		'tr' => 'Türkçe',	// IGNORE
+		'uk' => 'Українська',	// IGNORE
+		'zh-CN' => '简体中文',	// IGNORE
+		'zh-TW' => '正體中文',	// IGNORE
+	),
+	'menu' => array(
+		'about' => 'Haqqında',
+		'account' => 'Hesab',
+		'admin' => 'İdarəetmə',
+		'advanced_search' => 'Ətraflı axtarış',
+		'archiving' => 'Arxivləmə',
+		'authentication' => 'Kimlik doğrulama',
+		'check_install' => 'Quraşdırma yoxlaması',
+		'configuration' => 'Parametrlər',
+		'display' => 'Görünüş',
+		'extensions' => 'Genişlənmələr',
+		'logs' => 'Jurnallar',
+		'privacy' => 'Məxfilik',
+		'queries' => 'İstifadəçi sorğuları',
+		'reading' => 'Oxuma',
+		'search' => 'Söz və ya #etiket axtarın',
+		'search_help' => 'Ətraflı <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">axtarış parametrləri</a> üçün sənədləşməyə baxın',
+		'sharing' => 'Paylaşma',
+		'shortcuts' => 'Qısayollar',
+		'stats' => 'Statistika',
+		'system' => 'Sistem parametrləri',
+		'update' => 'Yeniləmə',
+		'user_management' => 'İstifadəçiləri idarə et',
+		'user_profile' => 'Profil',
+	),
+	'period' => array(
+		'days' => 'gün',
+		'hours' => 'saat',
+		'months' => 'ay',
+		'weeks' => 'həftə',
+		'years' => 'il',
+	),
+	'readme' => array(
+		'contribute' => 'töhfə ver',
+		'language' => 'Dil',
+		'translated' => 'İrəliləyiş',
+	),
+	'search' => array(
+		'advanced_search_help' => 'Bu forma axtarış sorğuları qurmağa kömək edir, lakin əl ilə yazılan sorğular daha da güclüdür.',
+		'authors' => 'Müəlliflər',
+		'categories' => 'Kateqoriyalar',
+		'content' => 'Məzmun',
+		'date_from' => 'Başlanğıc',
+		'date_modified' => 'Serverdə dəyişdirilmə tarixi',
+		'date_past' => 'Keçmişdə',
+		'date_published' => 'Dərc tarixi',
+		'date_range' => 'Tarix aralığı',
+		'date_received' => 'Alınma tarixi',
+		'date_to' => 'Son',
+		'date_user' => 'İstifadəçi tərəfindən dəyişdirilmə tarixi',
+		'feeds' => 'Lentlər',
+		'free_text' => 'Sərbəst mətn',
+		'free_text_help' => 'Həm başlıqda, həm də məzmunda axtarır',
+		'full_documentation' => '<a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">Tam axtarış sənədləşməsinə</a> baxın',
+		'labels' => 'Etiketlərim',
+		'multiple_help' => 'Bir və ya bir neçəsini seçin (<kbd>Ctrl</kbd> və ya <kbd>Cmd</kbd> saxlayın)',
+		'sources' => 'Mənbələr',
+		'tags' => 'Məqalə etiketləri',
+		'text' => 'Mətn axtarışı',
+		'text_help' => 'Bir neçə sətir məntiqi <i>və ya</i> ilə birləşdirilir. Həmçinin <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#regex" target="_blank">müntəzəm ifadələri</a> dəstəkləyir.',
+		'text_placeholder' => 'Açar söz',
+		'title' => 'Başlıq',
+		'url' => 'URL',	// IGNORE
+		'user_queries' => 'İstifadəçi sorğuları',
+	),
+	'share' => array(
+		'Known' => 'Known əsaslı saytlar',
+		'archiveIS' => 'archive.is',	// IGNORE
+		'archiveORG' => 'archive.org',	// IGNORE
+		'archivePH' => 'archive.ph',	// IGNORE
+		'bluesky' => 'Bluesky',	// IGNORE
+		'buffer' => 'Buffer',	// IGNORE
+		'clipboard' => 'Mübadilə buferi',
+		'diaspora' => 'Diaspora*',	// IGNORE
+		'email' => 'E-poçt',
+		'email-webmail-firefox-fix' => 'E-poçt (veb poçt, Firefox üçün düzəliş)',
+		'facebook' => 'Facebook',	// IGNORE
+		'gnusocial' => 'GNU social',	// IGNORE
+		'jdh' => 'Journal du hacker',	// IGNORE
+		'lemmy' => 'Lemmy',	// IGNORE
+		'linkace' => 'LinkAce',	// IGNORE
+		'linkding' => 'Linkding',	// IGNORE
+		'linkedin' => 'LinkedIn',	// IGNORE
+		'mastodon' => 'Mastodon',	// IGNORE
+		'movim' => 'Movim',	// IGNORE
+		'nextcloud-bookmarks' => 'Nextcloud Bookmarks',	// IGNORE
+		'omnivore' => 'Omnivore',	// IGNORE
+		'pinboard' => 'Pinboard',	// IGNORE
+		'pinterest' => 'Pinterest',	// IGNORE
+		'print' => 'Çap et',
+		'raindrop' => 'Raindrop.io',	// IGNORE
+		'reddit' => 'Reddit',	// IGNORE
+		'shaarli' => 'Shaarli',	// IGNORE
+		'telegram' => 'Telegram',	// IGNORE
+		'twitter' => 'Twitter',	// IGNORE
+		'wallabag' => 'wallabag v1',	// IGNORE
+		'wallabagv2' => 'wallabag v2',	// IGNORE
+		'web-sharing-api' => 'Sistem paylaşması',
+		'whatsapp' => 'Whatsapp',	// IGNORE
+		'xing' => 'Xing',	// IGNORE
+	),
+	'short' => array(
+		'attention' => 'Xəbərdarlıq!',
+		'blank_to_disable' => 'Deaktiv etmək üçün boş buraxın',
+		'by_author' => 'Müəllif:',
+		'by_default' => 'Standart olaraq',
+		'damn' => 'Eyvah!',
+		'default_category' => 'Kateqoriyasız',
+		'no' => 'Xeyr',
+		'not_applicable' => 'Mövcud deyil',
+		'ok' => 'Oldu!',
+		'or' => 'və ya',
+		'yes' => 'Bəli',
+	),
+	'stream' => array(
+		'load_more' => 'Daha çox məqalə yüklə',
+		'mark_all_read' => 'Hamısını oxunmuş kimi işarələ',
+		'nothing_to_load' => 'Başqa məqalə yoxdur',
+	),
+);

+ 132 - 0
app/i18n/az/index.php

@@ -0,0 +1,132 @@
+<?php
+
+/******************************************************************************
+ * Each entry of that file can be associated with a comment to indicate its   *
+ * state. When there is no comment, it means the entry is fully translated.   *
+ * The recognized comments are (comment matching is case-insensitive):        *
+ *   + TODO: the entry has never been translated.                             *
+ *   + DIRTY: the entry has been translated but needs to be updated.          *
+ *   + IGNORE: the entry does not need to be translated.                      *
+ * When a comment is not recognized, it is discarded.                         *
+ ******************************************************************************/
+
+return array(
+	'about' => array(
+		'_' => 'Haqqında',
+		'agpl3' => '<a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL 3</a>',	// IGNORE
+		'bug_reports' => array(
+			'environment_information' => array(
+				'_' => 'Sistem məlumatı',
+				'browser' => 'Brauzer',
+				'database' => 'Verilənlər bazası',
+				'server_software' => 'Server proqram təminatı',
+				'version_curl' => 'cURL versiyası',
+				'version_frss' => 'FreshRSS versiyası',
+				'version_php' => 'PHP versiyası',
+			),
+		),
+		'bugs_reports' => 'Xəta hesabatları',
+		'documentation' => 'Sənədlər',
+		'freshrss_description' => 'FreshRSS öz serverinizdə saxlaya biləcəyiniz RSS toplayıcısı və oxucusudur. O, bir veb saytdan digərinə keçmədən bir neçə xəbər saytını bir baxışda oxumağa və izləməyə imkan verir. FreshRSS yüngüldür, tənzimlənəndir və istifadəsi asandır.',
+		'github' => '<a href="https://github.com/FreshRSS/FreshRSS/issues">GitHub-da</a>',
+		'license' => 'Lisenziya',
+		'project_website' => 'Layihənin veb saytı',
+		'title' => 'Haqqında',
+		'version' => 'Versiya',
+	),
+	'feed' => array(
+		'empty' => 'Göstəriləcək məqalə yoxdur.',
+		'published' => array(
+			'_' => 'Dərc edilib',
+			'future' => 'Gələcəkdə dərc edilib',
+			'today' => 'Bu gün dərc edilib',
+			'yesterday' => 'Dünən dərc edilib',
+		),
+		'received' => array(
+			'_' => 'Alınıb',
+			'today' => 'Bu gün alınıb',
+			'yesterday' => 'Dünən alınıb',
+		),
+		'rss_of' => '%s üçün RSS lenti',
+		'title' => 'Əsas axın',
+		'title_fav' => 'Seçilmişlər',
+		'title_global' => 'Qlobal görünüş',
+		'userModified' => array(
+			'_' => 'İstifadəçi dəyişib',
+			'today' => 'İstifadəçi bu gün dəyişib',
+			'yesterday' => 'İstifadəçi dünən dəyişib',
+		),
+	),
+	'log' => array(
+		'_' => 'Jurnallar',
+		'clear' => 'Jurnalları təmizlə',
+		'empty' => 'Jurnal faylı boşdur',
+		'title' => 'Jurnallar',
+	),
+	'menu' => array(
+		'about' => 'FreshRSS haqqında',
+		'before_one_day' => 'Bir gündən köhnə',
+		'before_one_week' => 'Bir həftədən köhnə',
+		'bookmark_query' => 'Cari sorğunu əlfəcinlərə əlavə et',
+		'favorites' => 'Seçilmişlər (%s)',
+		'global_view' => 'Qlobal görünüş',
+		'important' => 'Vacib lentlər',
+		'main_stream' => 'Əsas axın',
+		'mark_all_read' => 'Hamısını oxunmuş kimi işarələ',
+		'mark_cat_read' => 'Kateqoriyanı oxunmuş kimi işarələ',
+		'mark_feed_read' => 'Lenti oxunmuş kimi işarələ',
+		'mark_selection_unread' => 'Seçimi oxunmamış kimi işarələ',
+		'mylabels' => 'Etiketlərim',
+		'non-starred' => 'Seçilməmişləri göstər',
+		'normal_view' => 'Normal görünüş',
+		'queries' => 'İstifadəçi sorğuları',
+		'read' => 'Oxunmuşları göstər',
+		'reader_view' => 'Oxu görünüşü',
+		'rss_view' => 'RSS lenti',
+		'search_short' => 'Axtarış',
+		'sort' => array(
+			'asc' => 'Artan',
+			'c' => array(
+				'name_asc' => 'Kateqoriya, lent başlıqları A→Z',
+				'name_desc' => 'Kateqoriya, lent başlıqları Z→A',
+			),
+			'date_asc' => 'Dərc tarixi 1→9',
+			'date_desc' => 'Dərc tarixi 9→1',
+			'desc' => 'Azalan',
+			'f' => array(
+				'name_asc' => 'Lent başlığı A→Z',
+				'name_desc' => 'Lent başlığı Z→A',
+			),
+			'id_asc' => 'Təzə alınanlar sonda',
+			'id_desc' => 'Təzə alınanlar əvvəldə',
+			'length_asc' => 'Məzmun uzunluğu 1→9',
+			'length_desc' => 'Məzmun uzunluğu 9→1',
+			'link_asc' => 'Keçid A→Z',
+			'link_desc' => 'Keçid Z→A',
+			'primary' => array(
+				'_' => 'Sıralama meyarı',
+				'help' => 'Əksər hallarda <em>alınma</em> tarixinə görə sıralama tövsiyə olunur, ardıcıllıq və performans üçün',
+			),
+			'rand' => 'Təsadüfi sıra',
+			'secondary' => array(
+				'_' => 'İkincili sıralama meyarı',
+				'help' => 'Yalnız əsas sıralama meyarı kateqoriya və ya lent başlıqları olduqda əhəmiyyətlidir',
+			),
+			'title_asc' => 'Başlıq A→Z',
+			'title_desc' => 'Başlıq Z→A',
+			'user_modified_asc' => 'İstifadəçi dəyişikliyi 1→9',
+			'user_modified_desc' => 'İstifadəçi dəyişikliyi 9→1',
+		),
+		'starred' => 'Seçilmişləri göstər',
+		'stats' => 'Statistika',
+		'subscription' => 'Abunə idarəetməsi',
+		'unread' => 'Oxunmamışları göstər',
+	),
+	'share' => 'Paylaş',
+	'tag' => array(
+		'related' => 'Məqalə etiketləri',
+	),
+	'tos' => array(
+		'title' => 'İstifadə şərtləri',
+	),
+);

+ 173 - 0
app/i18n/az/install.php

@@ -0,0 +1,173 @@
+<?php
+
+/******************************************************************************
+ * Each entry of that file can be associated with a comment to indicate its   *
+ * state. When there is no comment, it means the entry is fully translated.   *
+ * The recognized comments are (comment matching is case-insensitive):        *
+ *   + TODO: the entry has never been translated.                             *
+ *   + DIRTY: the entry has been translated but needs to be updated.          *
+ *   + IGNORE: the entry does not need to be translated.                      *
+ * When a comment is not recognized, it is discarded.                         *
+ ******************************************************************************/
+
+return array(
+	'action' => array(
+		'finish' => 'Quraşdırmanı tamamla',
+		'fix_errors_before' => 'Zəhmət olmasa, növbəti addıma keçməzdən əvvəl bütün xətaları düzəldin.',
+		'keep_install' => 'Əvvəlki parametrləri saxla',
+		'next_step' => 'Növbəti addıma keç',
+		'reinstall' => 'FreshRSS-i yenidən quraşdır',
+	),
+	'bdd' => array(
+		'_' => 'Verilənlər bazası',
+		'conf' => array(
+			'_' => 'Verilənlər bazası parametrləri',
+			'ko' => 'Verilənlər bazası parametrlərinizi yoxlayın.',
+			'ok' => 'Verilənlər bazası parametrləri yadda saxlanıldı.',
+		),
+		'host' => 'Host',	// IGNORE
+		'password' => 'Verilənlər bazası parolu',
+		'prefix' => 'Cədvəl prefiksi',
+		'type' => 'Verilənlər bazasının növü',
+		'username' => 'Verilənlər bazası istifadəçi adı',
+	),
+	'check' => array(
+		'_' => 'Yoxlamalar',
+		'already_installed' => 'FreshRSS-in artıq quraşdırıldığını aşkar etdik!',
+		'cache' => array(
+			'nok' => '<em>%2$s</em> istifadəçisi üçün <em>%1$s</em> qovluğunun icazələrini yoxlayın. HTTP serverinin yazma icazəsi olmalıdır.',
+			'ok' => 'Keş qovluğunun icazələri qaydasındadır.',
+		),
+		'ctype' => array(
+			'nok' => 'Simvol növünün yoxlanması üçün tələb olunan kitabxana tapılmadı (php-ctype).',
+			'ok' => 'Simvol növünün yoxlanması üçün tələb olunan kitabxananız var (ctype).',
+		),
+		'curl' => array(
+			'nok' => 'Tələb olunan cURL kitabxanası tapılmadı (php-curl paketi).',
+			'ok' => 'Tələb olunan cURL kitabxananız var.',
+		),
+		'data' => array(
+			'nok' => '<em>%2$s</em> istifadəçisi üçün <em>%1$s</em> qovluğunun icazələrini yoxlayın. HTTP serverinin yazma icazəsi olmalıdır.',
+			'ok' => 'Verilənlər qovluğunun icazələri qaydasındadır.',
+		),
+		'database-connection' => array(
+			'nok' => 'Verilənlər bazasına qoşulma xətası.',
+			'ok' => 'Verilənlər bazasına qoşulma qaydasındadır.',
+		),
+		'database-table' => array(
+			'nok' => 'Verilənlər bazasının "%s" cədvəli tam deyil.',
+			'ok' => 'Verilənlər bazasının "%s" cədvəli qaydasındadır.',
+		),
+		'database-tables' => array(
+			'nok' => 'Verilənlər bazasının bəzi cədvəlləri çatışmır.',
+			'ok' => 'Verilənlər bazasının bütün cədvəlləri mövcuddur.',
+		),
+		'database-title' => 'Verilənlər bazası',
+		'docroot' => array(
+			'nok' => 'Veb serverinizin sənəd kökü <code>./p/</code> qovluğuna yönəlmiş görünmür. <code>./data/</code> kimi digər qovluqlar hamı üçün əlçatan ola bilər.',
+			'ok' => 'Veb serverinizin sənəd kökü düzgün şəkildə <code>./p/</code> qovluğuna yönəlib.',
+		),
+		'dom' => array(
+			'nok' => 'DOM-u nəzərdən keçirmək üçün tələb olunan kitabxana tapılmadı.',
+			'ok' => 'DOM-u nəzərdən keçirmək üçün tələb olunan kitabxananız var.',
+		),
+		'favicons' => array(
+			'nok' => '<em>%2$s</em> istifadəçisi üçün <em>%1$s</em> qovluğunun icazələrini yoxlayın. HTTP serverinin yazma icazəsi olmalıdır.',
+			'ok' => 'Favicons qovluğunun icazələri qaydasındadır.',
+		),
+		'fileinfo' => array(
+			'nok' => 'Tövsiyə olunan PHP fileinfo kitabxanası tapılmadı (fileinfo paketi).',
+			'ok' => 'Tövsiyə olunan PHP fileinfo kitabxananız var (fileinfo paketi).',
+		),
+		'files' => 'Faylların quraşdırılması',
+		'gmp' => array(
+			'nok' => '32 bitlik PHP üçün tələb olunan GMP genişlənməsi tapılmadı (php-gmp paketi).',
+			'ok' => '32 bitlik PHP üçün tələb olunan GMP genişlənməniz var.',
+		),
+		'intl' => array(
+			'nok' => 'Beynəlmiləlləşdirmə üçün tövsiyə olunan php-intl kitabxanası tapılmadı.',
+			'ok' => 'Beynəlmiləlləşdirmə üçün tövsiyə olunan php-intl kitabxananız var.',
+		),
+		'json' => array(
+			'nok' => 'JSON-u təhlil etmək üçün tələb olunan kitabxana tapılmadı.',
+			'ok' => 'JSON-u təhlil etmək üçün tələb olunan kitabxananız var.',
+		),
+		'mbstring' => array(
+			'nok' => 'Unicode üçün tövsiyə olunan mbstring kitabxanası tapılmadı.',
+			'ok' => 'Unicode üçün tövsiyə olunan mbstring kitabxananız var.',
+		),
+		'pcre' => array(
+			'nok' => 'Müntəzəm ifadələr üçün tələb olunan kitabxana tapılmadı (php-pcre).',
+			'ok' => 'Müntəzəm ifadələr üçün tələb olunan kitabxananız var (PCRE).',
+		),
+		'pdo-mysql' => array(
+			'nok' => 'MySQL/MariaDB üçün tələb olunan PDO sürücüsü tapılmadı.',
+		),
+		'pdo-pgsql' => array(
+			'nok' => 'PostgreSQL üçün tələb olunan PDO sürücüsü tapılmadı.',
+		),
+		'pdo-sqlite' => array(
+			'nok' => 'SQLite üçün PDO sürücüsü tapılmadı.',
+			'ok' => 'SQLite üçün PDO sürücünüz var.',
+		),
+		'pdo' => array(
+			'nok' => 'PDO və ya dəstəklənən sürücülərdən biri tapılmadı (pdo_sqlite, pdo_pgsql, pdo_mysql).',
+			'ok' => 'PDO və dəstəklənən sürücülərdən ən azı biri sizdə var (pdo_sqlite, pdo_pgsql, pdo_mysql).',
+		),
+		'php' => array(
+			'_' => 'PHP quraşdırması',
+			'nok' => 'PHP versiyanız %s, lakin FreshRSS ən azı %s versiyasını tələb edir.',
+			'ok' => 'PHP versiyanız (%s) FreshRSS ilə uyğundur.',
+		),
+		'reload' => 'Yenidən yoxla',
+		'tmp' => array(
+			'nok' => '<em>%2$s</em> istifadəçisi üçün <em>%1$s</em> qovluğunun icazələrini yoxlayın. HTTP serverinin yazma icazələri olmalıdır.',
+			'ok' => 'Müvəqqəti qovluğun icazələri qaydasındadır.',
+		),
+		'tokens' => array(
+			'nok' => '<em>./data/tokens</em> qovluğunun icazələrini yoxlayın. HTTP serverinin yazma icazəsi olmalıdır',
+			'ok' => 'Tokenlər qovluğunun icazələri qaydasındadır.',
+		),
+		'unknown_process_username' => 'naməlum',
+		'users' => array(
+			'nok' => '<em>%2$s</em> istifadəçisi üçün <em>%1$s</em> qovluğunun icazələrini yoxlayın. HTTP serverinin yazma icazələri olmalıdır.',
+			'ok' => 'İstifadəçilər qovluğunun icazələri qaydasındadır.',
+		),
+		'xml' => array(
+			'nok' => 'XML-i təhlil etmək üçün tələb olunan kitabxana tapılmadı.',
+			'ok' => 'XML-i təhlil etmək üçün tələb olunan kitabxananız var.',
+		),
+		'zip' => array(
+			'nok' => 'ZIP üçün tövsiyə olunan genişlənmə tapılmadı (php-zip paketi).',
+			'ok' => 'ZIP üçün tövsiyə olunan genişlənməniz var (php-zip paketi).',
+		),
+	),
+	'conf' => array(
+		'_' => 'Ümumi parametrlər',
+		'ok' => 'Ümumi parametrlər yadda saxlanıldı.',
+	),
+	'congratulations' => 'Təbriklər!',
+	'default_user' => array(
+		'_' => 'Standart istifadəçinin istifadəçi adı',
+		'max_char' => '1-39 simvol: hərflər, rəqəmlər və <code>. _ @ -</code>',
+	),
+	'fix_errors_before' => 'Zəhmət olmasa, növbəti addıma keçməzdən əvvəl xətaları düzəldin.',
+	'javascript_is_better' => 'JavaScript aktiv olduqda FreshRSS daha xoşdur',
+	'js' => array(
+		'confirm_reinstall' => 'FreshRSS-i yenidən quraşdırmaqla əvvəlki parametrlərinizi itirəcəksiniz. Davam etmək istədiyinizə əminsiniz?',
+	),
+	'language' => array(
+		'_' => 'Dil',
+		'choose' => 'FreshRSS üçün dil seçin',
+		'defined' => 'Dil təyin edildi.',
+	),
+	'missing_applied_migrations' => 'Nəsə səhv getdi; <em>%s</em> boş faylını əl ilə yaratmalısınız.',
+	'ok' => 'Quraşdırma prosesi uğurlu oldu.',
+	'session' => array(
+		'nok' => 'Deyəsən, veb server PHP sessiyalarına lazım olan kukilər üçün yanlış konfiqurasiya edilib!',
+	),
+	'step' => 'addım %d',
+	'steps' => 'Addımlar',
+	'this_is_the_end' => 'Bu, sondur',
+	'title' => 'Quraşdırma · FreshRSS',
+);

+ 10 - 0
app/i18n/az/plurals.php

@@ -0,0 +1,10 @@
+<?php
+
+// Plural-Forms: nplurals=2; plural=(n != 1);
+// This file is generated by cli/compile.plurals.php.
+// Edit the formula comment and run `make fix-all`.
+
+return array(
+	'nplurals' => 2,
+	'plural' => static fn (int $n): int => (($n !== 1) ? 1 : 0),
+);

+ 316 - 0
app/i18n/az/sub.php

@@ -0,0 +1,316 @@
+<?php
+
+/******************************************************************************
+ * Each entry of that file can be associated with a comment to indicate its   *
+ * state. When there is no comment, it means the entry is fully translated.   *
+ * The recognized comments are (comment matching is case-insensitive):        *
+ *   + TODO: the entry has never been translated.                             *
+ *   + DIRTY: the entry has been translated but needs to be updated.          *
+ *   + IGNORE: the entry does not need to be translated.                      *
+ * When a comment is not recognized, it is discarded.                         *
+ ******************************************************************************/
+
+return array(
+	'api' => array(
+		'documentation' => 'Xarici alətdə istifadə etmək üçün aşağıdakı URL-i kopyalayın.',
+		'title' => 'API',	// IGNORE
+	),
+	'bookmarklet' => array(
+		'documentation' => 'Bu düyməni əlfəcin panelinizə sürükləyin və ya üzərinə sağ klikləyib “Bu keçidi əlfəcinlərə əlavə et” seçin. Sonra abunə olmaq istədiyiniz istənilən səhifədə “Abunə ol” düyməsinə klikləyin.',
+		'label' => 'Abunə ol',
+		'title' => 'Bookmarklet',	// IGNORE
+	),
+	'category' => array(
+		'_' => 'Kateqoriya',
+		'add' => 'Kateqoriya əlavə et',
+		'archiving' => 'Arxivləmə',
+		'dynamic_opml' => array(
+			'_' => 'Dinamik OPML',
+			'help' => 'Bu kateqoriyanı lentlərlə dinamik doldurmaq üçün <a href="https://opml.org/" target="_blank">OPML faylının</a> URL-ini verin',
+		),
+		'empty' => 'Boş kateqoriya',
+		'error' => 'Bu dinamik OPML kateqoriyasında problem yarandı. OPML URL-inin hələ də əlçatan olduğunu və istifadəçi başına düşən maksimum lent sayının aşılmadığını yoxlayın.',
+		'expand' => 'Kateqoriyanı genişləndir',
+		'information' => 'Məlumat',
+		'open' => 'Kateqoriyanı aç',
+		'opml_url' => 'OPML URL-i',
+		'position' => 'Göstərilmə mövqeyi',
+		'position_help' => 'Kateqoriya sıralamasına nəzarət etmək üçün',
+		'title' => 'Başlıq',
+	),
+	'feed' => array(
+		'accept_cookies' => 'Cookie-ləri qəbul et',
+		'accept_cookies_help' => 'Lent serverinə cookie təyin etməyə icazə verin (yalnız sorğu müddətində yaddaşda saxlanılır)',
+		'add' => 'Lent əlavə et',
+		'advanced' => 'Qabaqcıl',
+		'archiving' => 'Arxivləmə',
+		'auth' => array(
+			'configuration' => 'Giriş',
+			'help' => 'HTTP ilə qorunan RSS lentlərinə giriş imkanı verir',
+			'http' => 'HTTP kimlik doğrulama',
+			'password' => 'HTTP parolu',
+			'username' => 'HTTP istifadəçi adı',
+		),
+		'change_favicon' => 'Dəyiş…',
+		'clear_cache' => 'Keşi həmişə təmizlə',
+		'content_action' => array(
+			'_' => 'Məqalə məzmunu gətirilərkən məzmun əməliyyatı',
+			'append' => 'Mövcud məzmundan sonra əlavə et',
+			'prepend' => 'Mövcud məzmundan əvvəl əlavə et',
+			'replace' => 'Mövcud məzmunu əvəz et',
+		),
+		'content_retrieval' => 'Məzmunun alınması',
+		'css_cookie' => 'Məqalə məzmunu gətirilərkən cookie istifadə et',
+		'css_cookie_help' => 'Nümunə: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>',
+		'css_help' => 'Kəsilmiş RSS lentlərini bütöv gətirir (diqqət, daha çox vaxt tələb edir!)',
+		'css_path' => 'Orijinal veb saytda məqalənin CSS seçicisi',
+		'css_path_filter' => array(
+			'_' => 'Çıxarılacaq elementlərin CSS seçicisi',
+			'help' => 'CSS seçicisi belə bir siyahı ola bilər: <kbd>footer, aside, p[data-sanitized-class~="menu"]</kbd>',
+		),
+		'description' => 'Təsvir',
+		'empty' => 'Bu lent boşdur. Zəhmət olmasa, onun hələ də dəstəkləndiyini yoxlayın.',
+		'error' => 'Bu lentdə problem yarandı. Vəziyyət davam edərsə, zəhmət olmasa, onun hələ də əlçatan olduğunu yoxlayın.',
+		'export-as-opml' => array(
+			'download' => 'Endir',
+			'help' => 'XML faylı (məlumatın bir hissəsi. <a href="https://freshrss.github.io/FreshRSS/en/developers/OPML.html" target="_blank">Sənədlərə baxın</a>)',
+			'label' => 'OPML kimi ixrac et',
+		),
+		'ext_favicon' => 'Avtomatik təyin et',
+		'favicon_changed_by_ext' => 'İkon <b>%s</b> genişlənməsi tərəfindən təyin edilib.',
+		'filteractions' => array(
+			'_' => 'Süzgəc əməliyyatları',
+			'help' => 'Hər sətirdə bir axtarış süzgəci yazın. Operatorlar üçün <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">sənədlərə baxın</a>.',
+			'view_filter' => 'Mövcud məqalələrdə süzgəclərin önbaxışı (yeni pəncərə)',
+		),
+		'global_hint' => 'Hər lentdə neçə məqalənin vəziyyətə və ya axtarış ifadəsinə uyğun gəldiyini görmək üçün <a href="%s">qlobal görünüşdən</a> istifadə edin',
+		'http_headers' => 'HTTP başlıqları',
+		'http_headers_help' => 'Başlıqlar sətir keçidi ilə, başlığın adı və dəyəri isə iki nöqtə ilə ayrılır (məsələn: <kbd><code>Accept: application/atom+xml<br />Authorization: Bearer some-token</code></kbd>).',
+		'icon' => 'İkon',
+		'information' => 'Məlumat',
+		'keep_adding_feed' => 'Sonra daha çox lent əlavə edin',
+		'keep_min' => 'Saxlanılacaq minimum məqalə sayı',
+		'kind' => array(
+			'_' => 'Lent mənbəyinin növü',
+			'html_json' => array(
+				'_' => 'HTML + XPath + JSON nöqtə notasiyası (HTML daxilində JSON)',
+				'xpath' => array(
+					'_' => 'HTML daxilindəki JSON üçün XPath',
+					'help' => 'Nümunə: <code>normalize-space(//script[@type="application/json"])</code> (tək JSON)<br />və ya: <code>//script[@type="application/ld+json"]</code> (hər məqaləyə bir JSON obyekti)',
+				),
+			),
+			'html_xpath' => array(
+				'_' => 'HTML + XPath (Web scraping)',	// IGNORE
+				'feed_title' => array(
+					'_' => 'lentin başlığı',
+					'help' => 'Nümunə: <code>//title</code> və ya statik mətn: <code>"Mənim öz lentim"</code>',
+				),
+				'help' => '<dfn><a href="https://www.w3.org/TR/xpath-10/" target="_blank">XPath 1.0</a></dfn> qabaqcıl istifadəçilər üçün standart sorğu dilidir və FreshRSS Web scraping imkanı yaratmaq üçün onu dəstəkləyir.',
+				'item' => array(
+					'_' => 'xəbər <strong>elementlərini</strong> tapmaq<br /><small>(ən vacibi)</small>',
+					'help' => 'Nümunə: <code>//div[@class="news-item"]</code>',
+				),
+				'item_author' => array(
+					'_' => 'elementin müəllifi',
+					'help' => 'Statik mətn də ola bilər. Nümunə: <code>"Anonim"</code>',
+				),
+				'item_categories' => 'elementin etiketləri',
+				'item_content' => array(
+					'_' => 'elementin məzmunu',
+					'help' => 'Bütöv elementi götürmək üçün nümunə: <code>.</code>',
+				),
+				'item_thumbnail' => array(
+					'_' => 'elementin kiçik şəkli',
+					'help' => 'Nümunə: <code>descendant::img/@src</code>',
+				),
+				'item_timeFormat' => array(
+					'_' => 'Fərdi tarix və saat formatı',
+					'help' => 'İstəyə bağlı. <a href="https://www.php.net/datetime.createfromformat" target="_blank"><code>DateTime::createFromFormat()</code></a> tərəfindən dəstəklənən format, məsələn <code>d-m-Y H:i:s</code>',
+				),
+				'item_timestamp' => array(
+					'_' => 'elementin tarixi',
+					'help' => 'Nəticə <a href="https://www.php.net/strtotime" target="_blank"><code>strtotime()</code></a> ilə emal ediləcək',
+				),
+				'item_title' => array(
+					'_' => 'elementin başlığı',
+					'help' => 'Xüsusilə <a href="https://developer.mozilla.org/docs/Web/XML/XPath/Reference/Axes" target="_blank">XPath oxundan</a> istifadə edin: <code>descendant::</code>, məsələn <code>descendant::h2</code>',
+				),
+				'item_uid' => array(
+					'_' => 'elementin unikal ID-si',
+					'help' => 'İstəyə bağlı. Nümunə: <code>descendant::div/@data-uri</code>',
+				),
+				'item_uri' => array(
+					'_' => 'elementin keçidi (URL)',
+					'help' => 'Nümunə: <code>descendant::a/@href</code>',
+				),
+				'relative' => 'XPath (elementə nisbətən) bunun üçün:',
+				'xpath' => 'XPath bunun üçün:',
+			),
+			'json_dotnotation' => array(
+				'_' => 'JSON (nöqtə notasiyası)',
+				'feed_title' => array(
+					'_' => 'lentin başlığı',
+					'help' => 'Nümunə: <code>meta.title</code> və ya statik mətn: <code>"Mənim öz lentim"</code>',
+				),
+				'help' => 'JSON nöqtə notasiyası obyektlər arasında nöqtə, massivlər üçün isə kvadrat mötərizə işlədir (məsələn <code>data.items[0].title</code>)',
+				'item' => array(
+					'_' => 'xəbər <strong>elementlərini</strong> tapmaq<br /><small>(ən vacibi)</small>',
+					'help' => 'Elementləri saxlayan massivə aparan JSON yolu, məsələn <code>$</code> və ya <code>newsItems</code>',
+				),
+				'item_author' => 'elementin müəllifi',
+				'item_categories' => 'elementin etiketləri',
+				'item_content' => array(
+					'_' => 'elementin məzmunu',
+					'help' => 'Məzmunun tapıldığı açar, məsələn <code>content</code>',
+				),
+				'item_thumbnail' => array(
+					'_' => 'elementin kiçik şəkli',
+					'help' => 'Nümunə: <code>image</code>',
+				),
+				'item_timeFormat' => array(
+					'_' => 'Fərdi tarix və saat formatı',
+					'help' => 'İstəyə bağlı. <a href="https://www.php.net/datetime.createfromformat" target="_blank"><code>DateTime::createFromFormat()</code></a> tərəfindən dəstəklənən format, məsələn <code>d-m-Y H:i:s</code>',
+				),
+				'item_timestamp' => array(
+					'_' => 'elementin tarixi',
+					'help' => 'Nəticə <a href="https://www.php.net/strtotime" target="_blank"><code>strtotime()</code></a> ilə emal ediləcək',
+				),
+				'item_title' => 'elementin başlığı',
+				'item_uid' => 'elementin unikal ID-si',
+				'item_uri' => array(
+					'_' => 'elementin keçidi (URL)',
+					'help' => 'Nümunə: <code>permalink</code>',
+				),
+				'json' => 'nöqtə notasiyası bunun üçün:',
+				'relative' => 'nöqtə notasiyalı yol (elementə nisbətən) bunun üçün:',
+			),
+			'jsonfeed' => 'JSON Feed',	// IGNORE
+			'rss' => 'RSS / Atom (standart)',
+			'xml_xpath' => 'XML + XPath',	// IGNORE
+		),
+		'last-entry-publication-date' => 'Sonuncu məqalə <time datetime="%1$s" title="%1$s">%2$s</time> dərc olunub.',
+		'last-entry-received-date' => 'Sonuncu məqalə <time datetime="%1$s" title="%1$s">%2$s</time> alınıb.',
+		'last-error-date' => 'Sonuncu xətalı yeniləmə <time datetime="%1$s" title="%1$s">%2$s</time>.',
+		'last-update' => 'Sonuncu uğurlu yeniləmə <time datetime="%1$s" title="%1$s">%2$s</time>.',
+		'maintenance' => array(
+			'clear_cache' => 'Keşi təmizlə',
+			'clear_cache_help' => 'Bu lent üçün keşi təmizləyin.',
+			'reload_articles' => 'Məqalələri yenidən yüklə',
+			'reload_articles_help' => 'Göstərilən sayda məqaləni yenidən yükləyin və seçici təyin olunubsa, tam məzmunu gətirin.',
+			'title' => 'Texniki xidmət',
+		),
+		'max_http_redir' => 'Maksimum HTTP yönləndirmə sayı',
+		'max_http_redir_help' => 'Deaktiv etmək üçün 0 yazın və ya boş buraxın, limitsiz yönləndirmə üçün -1',
+		'method' => array(
+			'_' => 'HTTP metodu',
+		),
+		'method_help' => 'POST yükü <code>application/x-www-form-urlencoded</code> və <code>application/json</code> formatlarını avtomatik dəstəkləyir',
+		'method_postparams' => 'POST üçün yük',
+		'moved_category_deleted' => 'Kateqoriyanı sildiyiniz zaman onun lentləri avtomatik olaraq <em>%s</em> altında qruplaşdırılır.',
+		'mute' => array(
+			'_' => 'səssiz',
+			'state_is_muted' => 'Bu lent səssizdir',
+		),
+		'no_selected' => 'Heç bir lent seçilməyib.',
+		'number_entries' => '%d məqalə',
+		'open_feed' => '%s lentini aç',
+		'path_entries_conditions' => 'Məzmunun alınması üçün şərtlər',
+		'priority' => array(
+			'_' => 'Görünürlük',
+			'category' => 'Öz kateqoriyasında göstər',
+			'feed' => 'Öz lentində göstər',
+			'hidden' => 'Göstərmə',
+			'important' => 'Vacib lentlərdə göstər',
+			'main_stream' => 'Əsas axında göstər',
+		),
+		'proxy' => 'Bu lenti gətirmək üçün proxy təyin edin',
+		'proxy_help' => 'Protokol seçin (məsələn: SOCKS5) və proxy ünvanını daxil edin (məsələn: <kbd>127.0.0.1:1080</kbd> və ya <kbd>username:password@127.0.0.1:1080</kbd>)',
+		'reset_favicon' => 'Standarta qaytar',
+		'selector_preview' => array(
+			'show_raw' => 'Mənbə kodunu göstər',
+			'show_rendered' => 'Məzmunu göstər',
+		),
+		'show' => array(
+			'all' => 'Bütün lentlər',
+			'error' => 'Yalnız xətalı lentləri göstər',
+		),
+		'showing' => array(
+			'error' => 'Yalnız xətalı lentlər göstərilir',
+		),
+		'ssl_verify' => 'SSL təhlükəsizliyini yoxla',
+		'stats' => 'Statistika',
+		'think_to_add' => 'Bir neçə lent əlavə edə bilərsiniz.',
+		'timeout' => 'Saniyə ilə vaxt həddi',
+		'title' => 'Başlıq',
+		'title_add' => 'RSS lenti əlavə et',
+		'ttl' => 'Avtomatik yeniləmə bundan tez-tez olmasın',
+		'unicityCriteria' => array(
+			'_' => 'Məqalənin unikallıq meyarı',
+			'forced' => '<span title="Lentdə təkrar məqalələr olsa belə, unikallıq meyarını sabit saxla">məcburi</span>',
+			'help' => 'Yanlış lentlər üçün aktualdır.<br />⚠️ Siyasətin dəyişdirilməsi təkrarlar yaradacaq.',
+			'id' => 'Standart ID (ilkin)',
+			'link' => 'Keçid',
+			'sha1:content' => 'Məzmun',
+			'sha1:content_published' => 'Məzmun + Tarix',
+			'sha1:link_published' => 'Keçid + Tarix',
+			'sha1:link_published_title' => 'Keçid + Tarix + Başlıq',
+			'sha1:link_published_title_content' => 'Keçid + Tarix + Başlıq + Məzmun',
+			'sha1:published' => 'Tarix',
+			'sha1:title' => 'Başlıq',
+			'sha1:title_published' => 'Başlıq + Tarix',
+			'sha1:title_published_content' => 'Başlıq + Tarix + Məzmun',
+		),
+		'url' => 'Lentin URL-i',
+		'useragent' => 'Bu lenti gətirmək üçün user agent təyin edin',
+		'useragent_help' => 'Nümunə: <kbd>Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0)</kbd>',
+		'validator' => 'Lentin etibarlılığını yoxla',
+		'website' => 'Veb saytın URL-i',
+		'websub' => 'WebSub ilə ani bildirişlər',
+	),
+	'import_export' => array(
+		'export' => array(
+			'_' => 'İxrac',
+			'sqlite' => 'İstifadəçi verilənlər bazasını SQLite kimi endir',
+		),
+		'export_labelled' => 'Etiketlənmiş məqalələrinizi ixrac edin',
+		'export_opml' => 'Lentlərin siyahısını ixrac edin (OPML)',
+		'export_starred' => 'Seçilmişlərinizi ixrac edin',
+		'feed_list' => '%s məqalələrinin siyahısı',
+		'file_to_import' => 'İdxal ediləcək fayl<br />(OPML, JSON və ya ZIP)',
+		'file_to_import_no_zip' => 'İdxal ediləcək fayl<br />(OPML və ya JSON)',
+		'import' => 'İdxal',
+		'starred_list' => 'Seçilmiş məqalələrin siyahısı',
+		'title' => 'İdxal / ixrac',
+	),
+	'menu' => array(
+		'add' => 'Lent və ya kateqoriya əlavə et',
+		'import_export' => 'İdxal / ixrac',
+		'label_management' => 'Etiketlərin idarə edilməsi',
+		'stats' => array(
+			'idle' => 'Fəaliyyətsiz lentlər',
+			'main' => 'Əsas statistika',
+			'repartition' => 'Məqalələrin bölgüsü',
+			'unread_dates' => 'Oxunmamışların tarixləri',
+		),
+		'subscription_management' => 'Abunələrin idarə edilməsi',
+		'subscription_tools' => 'Abunə alətləri',
+	),
+	'tag' => array(
+		'auto_label' => 'Bu etiketi yeni məqalələrə əlavə et',
+		'name' => 'Ad',
+		'new_name' => 'Yeni ad',
+		'old_name' => 'Köhnə ad',
+	),
+	'title' => array(
+		'_' => 'Abunələrin idarə edilməsi',
+		'add' => 'Lent və ya kateqoriya əlavə et',
+		'add_category' => 'Kateqoriya əlavə et',
+		'add_dynamic_opml' => 'Dinamik OPML əlavə et',
+		'add_feed' => 'Lent əlavə et',
+		'add_label' => 'Etiket əlavə et',
+		'add_opml_category' => 'OPML kateqoriyasının adı',
+		'delete_label' => 'Bu etiketi sil',
+		'feed_management' => 'RSS lentlərinin idarə edilməsi',
+		'subscription_tools' => 'Abunə alətləri',
+	),
+);

+ 54 - 0
app/i18n/az/user.php

@@ -0,0 +1,54 @@
+<?php
+
+/******************************************************************************
+ * Each entry of that file can be associated with a comment to indicate its   *
+ * state. When there is no comment, it means the entry is fully translated.   *
+ * The recognized comments are (comment matching is case-insensitive):        *
+ *   + TODO: the entry has never been translated.                             *
+ *   + DIRTY: the entry has been translated but needs to be updated.          *
+ *   + IGNORE: the entry does not need to be translated.                      *
+ * When a comment is not recognized, it is discarded.                         *
+ ******************************************************************************/
+
+return array(
+	'email' => array(
+		'feedback' => array(
+			'invalid' => 'Bu e-poçt ünvanı yanlışdır.',
+			'required' => 'E-poçt ünvanı tələb olunur.',
+		),
+		'validation' => array(
+			'change_email' => 'E-poçt ünvanınızı <a href="%s">profil səhifəsində</a> dəyişə bilərsiniz.',
+			'email_sent_to' => 'Sizə <strong>%s</strong> ünvanına e-poçt göndərdik. Zəhmət olmasa, ünvanınızı doğrulamaq üçün onun təlimatlarına əməl edin.',
+			'feedback' => array(
+				'email_failed' => 'Server konfiqurasiyasındakı xəta səbəbindən sizə e-poçt göndərə bilmədik.',
+				'email_sent' => 'Ünvanınıza e-poçt göndərildi.',
+				'error' => 'E-poçt ünvanının doğrulanması alınmadı.',
+				'ok' => 'Bu e-poçt ünvanı doğrulandı.',
+				'unnecessary' => 'Bu e-poçt ünvanı artıq doğrulanmışdı.',
+				'wrong_token' => 'Yanlış token səbəbindən bu e-poçt ünvanı doğrulanmadı.',
+			),
+			'need_to' => '%s-dən istifadə edə bilməzdən əvvəl e-poçt ünvanınızı doğrulamalısınız.',
+			'resend_email' => 'E-poçtu yenidən göndər',
+			'title' => 'E-poçt ünvanının doğrulanması',
+		),
+	),
+	'mailer' => array(
+		'email_need_validation' => array(
+			'body' => 'Siz indicə %s-də qeydiyyatdan keçdiniz, lakin hələ də e-poçt ünvanınızı doğrulamalısınız. Bunun üçün sadəcə keçidi izləyin:',
+			'title' => 'Hesabınızı doğrulamalısınız',
+			'welcome' => 'Xoş gəlmisiniz %s,',
+		),
+	),
+	'password' => array(
+		'invalid' => 'Parol yanlışdır.',
+	),
+	'tos' => array(
+		'feedback' => array(
+			'invalid' => 'Qeydiyyatdan keçə bilmək üçün Xidmət Şərtlərini qəbul etməlisiniz.',
+		),
+	),
+	'username' => array(
+		'invalid' => 'Bu istifadəçi adı yanlışdır.',
+		'taken' => 'Bu istifadəçi adı, %s, tutulub.',
+	),
+);

+ 1 - 0
app/i18n/cs/gen.php

@@ -198,6 +198,7 @@ return array(
 		'unsafe_csp_header' => 'The CSP header in use is unsafe and FreshRSS may be vulnerable to XSS attacks. <a target="_blank" href="https://freshrss.github.io/FreshRSS/en/admins/10_ServerConfig.html#security">See documentation</a>',	// TODO
 	),
 	'lang' => array(
+		'az' => 'Azərbaycanca',	// IGNORE
 		'cs' => 'Čeština',	// IGNORE
 		'de' => 'Deutsch',	// IGNORE
 		'el' => 'Ελληνικά',	// IGNORE

+ 1 - 0
app/i18n/de/gen.php

@@ -190,6 +190,7 @@ return array(
 		'unsafe_csp_header' => 'Der verwendete CSP-Header ist unsicher und FreshRSS könnte anfällig für XSS-Angriffe sein. <a target="_blank" href="https://freshrss.github.io/FreshRSS/en/admins/10_ServerConfig.html#security">Siehe Dokumentation</a>',
 	),
 	'lang' => array(
+		'az' => 'Azərbaycanca',	// IGNORE
 		'cs' => 'Čeština',	// IGNORE
 		'de' => 'Deutsch',	// IGNORE
 		'el' => 'Ελληνικά',	// IGNORE

+ 1 - 0
app/i18n/el/gen.php

@@ -190,6 +190,7 @@ return array(
 		'unsafe_csp_header' => 'Η επικεφαλίδα CSP που χρησιμοποιείται δεν είναι ασφαλής και το FreshRSS μπορεί να είναι ανασφαλές απέναντι σε επιθέσεις XSS. <a target="_blank" href="https://freshrss.github.io/FreshRSS/en/admins/10_ServerConfig.html#security">Δείτε τις οδηγίες χρήσης</a>',
 	),
 	'lang' => array(
+		'az' => 'Azərbaycanca',	// IGNORE
 		'cs' => 'Čeština',	// IGNORE
 		'de' => 'Deutsch',	// IGNORE
 		'el' => 'Ελληνικά',	// IGNORE

+ 1 - 0
app/i18n/en-US/gen.php

@@ -190,6 +190,7 @@ return array(
 		'unsafe_csp_header' => 'The CSP header in use is unsafe and FreshRSS may be vulnerable to XSS attacks. <a target="_blank" href="https://freshrss.github.io/FreshRSS/en/admins/10_ServerConfig.html#security">See documentation</a>',	// IGNORE
 	),
 	'lang' => array(
+		'az' => 'Azərbaycanca',	// IGNORE
 		'cs' => 'Čeština',	// IGNORE
 		'de' => 'Deutsch',	// IGNORE
 		'el' => 'Ελληνικά',	// IGNORE

+ 1 - 0
app/i18n/en/gen.php

@@ -190,6 +190,7 @@ return array(
 		'unsafe_csp_header' => 'The CSP header in use is unsafe and FreshRSS may be vulnerable to XSS attacks. <a target="_blank" href="https://freshrss.github.io/FreshRSS/en/admins/10_ServerConfig.html#security">See documentation</a>',
 	),
 	'lang' => array(
+		'az' => 'Azərbaycanca',
 		'cs' => 'Čeština',
 		'de' => 'Deutsch',
 		'el' => 'Ελληνικά',

+ 1 - 0
app/i18n/es/gen.php

@@ -190,6 +190,7 @@ return array(
 		'unsafe_csp_header' => 'La cabecera CSP en uso no es segura y FreshRSS puede ser vulnerable a ataques XSS. <a target="_blank" href="https://freshrss.github.io/FreshRSS/en/admins/10_ServerConfig.html#security">Ver documentación</a>',
 	),
 	'lang' => array(
+		'az' => 'Azərbaycanca',	// IGNORE
 		'cs' => 'Čeština',	// IGNORE
 		'de' => 'Deutsch',	// IGNORE
 		'el' => 'Ελληνικά',	// IGNORE

+ 1 - 0
app/i18n/fa/gen.php

@@ -190,6 +190,7 @@ return array(
 		'unsafe_csp_header' => 'سرآیند CSP فعلی امن نیست و FreshRSS ممکن است در برابر حملات XSS آسیب‌پذیر باشد. <a target="_blank" href="https://freshrss.github.io/FreshRSS/en/admins/10_ServerConfig.html#security">مستندات را ببینید</a>',
 	),
 	'lang' => array(
+		'az' => 'Azərbaycanca',	// IGNORE
 		'cs' => 'Čeština',	// IGNORE
 		'de' => 'Deutsch',	// IGNORE
 		'el' => 'Ελληνικά',	// IGNORE

+ 1 - 0
app/i18n/fi/gen.php

@@ -190,6 +190,7 @@ return array(
 		'unsafe_csp_header' => 'Käytössä oleva CSP-otsikko on turvaton, ja FreshRSS saattaa olla altis XSS-hyökkäyksille. <a target="_blank" href="https://freshrss.github.io/FreshRSS/en/admins/10_ServerConfig.html#security">Lisätietoja ohjeessa</a>',
 	),
 	'lang' => array(
+		'az' => 'Azərbaycanca',	// IGNORE
 		'cs' => 'Čeština',	// IGNORE
 		'de' => 'Deutsch',	// IGNORE
 		'el' => 'Ελληνικά',	// IGNORE

+ 1 - 0
app/i18n/fr/gen.php

@@ -190,6 +190,7 @@ return array(
 		'unsafe_csp_header' => 'L’en-tête CSP utilisé n’est pas sécurisé et FreshRSS peut être vulnérable aux attaques XSS. <a target="_blank" href="https://freshrss.github.io/FreshRSS/en/admins/10_ServerConfig.html#security">Voir la documentation</a>',
 	),
 	'lang' => array(
+		'az' => 'Azərbaycanca',	// IGNORE
 		'cs' => 'Čeština',	// IGNORE
 		'de' => 'Deutsch',	// IGNORE
 		'el' => 'Ελληνικά',	// IGNORE

+ 1 - 0
app/i18n/he/gen.php

@@ -190,6 +190,7 @@ return array(
 		'unsafe_csp_header' => 'The CSP header in use is unsafe and FreshRSS may be vulnerable to XSS attacks. <a target="_blank" href="https://freshrss.github.io/FreshRSS/en/admins/10_ServerConfig.html#security">See documentation</a>',	// TODO
 	),
 	'lang' => array(
+		'az' => 'Azərbaycanca',	// IGNORE
 		'cs' => 'Čeština',	// IGNORE
 		'de' => 'Deutsch',	// IGNORE
 		'el' => 'Ελληνικά',	// IGNORE

+ 1 - 0
app/i18n/hu/gen.php

@@ -190,6 +190,7 @@ return array(
 		'unsafe_csp_header' => 'A CSP fejléc használata nem biztonságos és a FreshRSS sebezhető lehet az XSS támadásokkal szemben. <a target="_blank" href="https://freshrss.github.io/FreshRSS/en/admins/10_ServerConfig.html#security">Lásd dokumentáció</a>',
 	),
 	'lang' => array(
+		'az' => 'Azərbaycanca',	// IGNORE
 		'cs' => 'Čeština',	// IGNORE
 		'de' => 'Deutsch',	// IGNORE
 		'el' => 'Ελληνικά',	// IGNORE

+ 1 - 0
app/i18n/id/gen.php

@@ -182,6 +182,7 @@ return array(
 		'unsafe_csp_header' => 'Header CSP yang digunakan tidak aman dan FreshRSS mungkin rentan terhadap serangan XSS. <a target="_blank" href="https://freshrss.github.io/FreshRSS/en/admins/10_ServerConfig.html#security">Lihat dokumentasi</a>',
 	),
 	'lang' => array(
+		'az' => 'Azərbaycanca',	// IGNORE
 		'cs' => 'Čeština',	// IGNORE
 		'de' => 'Deutsch',	// IGNORE
 		'el' => 'Ελληνικά',	// IGNORE

+ 1 - 0
app/i18n/it/gen.php

@@ -190,6 +190,7 @@ return array(
 		'unsafe_csp_header' => 'L’header CSP attualmente utilizzato non è sicuro e quindi FreshRSS può essere vulnerabile ad attacchi XSS. <a target="_blank" href="https://freshrss.github.io/FreshRSS/en/admins/10_ServerConfig.html#security">Vedi la documentazione</a>',
 	),
 	'lang' => array(
+		'az' => 'Azərbaycanca',	// IGNORE
 		'cs' => 'Čeština',	// IGNORE
 		'de' => 'Deutsch',	// IGNORE
 		'el' => 'Ελληνικά',	// IGNORE

+ 1 - 0
app/i18n/ja/gen.php

@@ -182,6 +182,7 @@ return array(
 		'unsafe_csp_header' => '使用中のCSPヘッダーは安全ではないため、FreshRSSがXSS攻撃に対して脆弱になる可能性があります。<a target="_blank" href="https://freshrss.github.io/FreshRSS/en/admins/10_ServerConfig.html#security">ドキュメント</a>を参照してください。',
 	),
 	'lang' => array(
+		'az' => 'Azərbaycanca',	// IGNORE
 		'cs' => 'Čeština',	// IGNORE
 		'de' => 'Deutsch',	// IGNORE
 		'el' => 'Ελληνικά',	// IGNORE

+ 1 - 0
app/i18n/ko/gen.php

@@ -182,6 +182,7 @@ return array(
 		'unsafe_csp_header' => 'The CSP header in use is unsafe and FreshRSS may be vulnerable to XSS attacks. <a target="_blank" href="https://freshrss.github.io/FreshRSS/en/admins/10_ServerConfig.html#security">See documentation</a>',	// TODO
 	),
 	'lang' => array(
+		'az' => 'Azərbaycanca',	// IGNORE
 		'cs' => 'Čeština',	// IGNORE
 		'de' => 'Deutsch',	// IGNORE
 		'el' => 'Ελληνικά',	// IGNORE

+ 1 - 0
app/i18n/lt/gen.php

@@ -198,6 +198,7 @@ return array(
 		'unsafe_csp_header' => 'Naudojama CSP antraštė yra nesaugi, ir FreshRSS gali būti pažeidžiama XSS atakų. <a target="_blank" href="https://freshrss.github.io/FreshRSS/en/admins/10_ServerConfig.html#security">Žr. dokumentaciją</a>',
 	),
 	'lang' => array(
+		'az' => 'Azərbaycanca',	// IGNORE
 		'cs' => 'Čeština',	// IGNORE
 		'de' => 'Deutsch',	// IGNORE
 		'el' => 'Ελληνικά',	// IGNORE

+ 1 - 0
app/i18n/lv/gen.php

@@ -198,6 +198,7 @@ return array(
 		'unsafe_csp_header' => 'The CSP header in use is unsafe and FreshRSS may be vulnerable to XSS attacks. <a target="_blank" href="https://freshrss.github.io/FreshRSS/en/admins/10_ServerConfig.html#security">See documentation</a>',	// TODO
 	),
 	'lang' => array(
+		'az' => 'Azərbaycanca',	// IGNORE
 		'cs' => 'Čeština',	// IGNORE
 		'de' => 'Deutsch',	// IGNORE
 		'el' => 'Ελληνικά',	// IGNORE

+ 1 - 0
app/i18n/nl/gen.php

@@ -190,6 +190,7 @@ return array(
 		'unsafe_csp_header' => 'De gebruikte CSP-header is onveilig en FreshRSS kan kwetsbaar zijn voor XSS-aanvallen. <a target="_blank" href="https://freshrss.github.io/FreshRSS/en/admins/10_ServerConfig.html#security">Zie documentatie</a>',
 	),
 	'lang' => array(
+		'az' => 'Azərbaycanca',	// IGNORE
 		'cs' => 'Čeština',	// IGNORE
 		'de' => 'Deutsch',	// IGNORE
 		'el' => 'Ελληνικά',	// IGNORE

+ 1 - 0
app/i18n/oc/gen.php

@@ -190,6 +190,7 @@ return array(
 		'unsafe_csp_header' => 'The CSP header in use is unsafe and FreshRSS may be vulnerable to XSS attacks. <a target="_blank" href="https://freshrss.github.io/FreshRSS/en/admins/10_ServerConfig.html#security">See documentation</a>',	// TODO
 	),
 	'lang' => array(
+		'az' => 'Azərbaycanca',	// IGNORE
 		'cs' => 'Čeština',	// IGNORE
 		'de' => 'Deutsch',	// IGNORE
 		'el' => 'Ελληνικά',	// IGNORE

+ 1 - 0
app/i18n/pl/gen.php

@@ -198,6 +198,7 @@ return array(
 		'unsafe_csp_header' => 'Używany nagłówek CSP jest niebezpieczny i FreshRSS może być podatny na ataki XSS. <a target="_blank" href="https://freshrss.github.io/FreshRSS/en/admins/10_ServerConfig.html#security">Zobacz dokumentację</a>',
 	),
 	'lang' => array(
+		'az' => 'Azərbaycanca',	// IGNORE
 		'cs' => 'Čeština',	// IGNORE
 		'de' => 'Deutsch',	// IGNORE
 		'el' => 'Ελληνικά',	// IGNORE

+ 1 - 0
app/i18n/pt-BR/gen.php

@@ -190,6 +190,7 @@ return array(
 		'unsafe_csp_header' => 'O cabeçalho CSP em uso é inseguro e o FreshRSS pode ser vulnerável a ataques XSS. <a target="_blank" href="https://freshrss.github.io/FreshRSS/en/admins/10_ServerConfig.html#security">Consulte a documentação</a>',
 	),
 	'lang' => array(
+		'az' => 'Azərbaycanca',	// IGNORE
 		'cs' => 'Čeština',	// IGNORE
 		'de' => 'Deutsch',	// IGNORE
 		'el' => 'Ελληνικά',	// IGNORE

+ 1 - 0
app/i18n/pt-PT/gen.php

@@ -190,6 +190,7 @@ return array(
 		'unsafe_csp_header' => 'The CSP header in use is unsafe and FreshRSS may be vulnerable to XSS attacks. <a target="_blank" href="https://freshrss.github.io/FreshRSS/en/admins/10_ServerConfig.html#security">See documentation</a>',	// TODO
 	),
 	'lang' => array(
+		'az' => 'Azərbaycanca',	// IGNORE
 		'cs' => 'Čeština',	// IGNORE
 		'de' => 'Deutsch',	// IGNORE
 		'el' => 'Ελληνικά',	// IGNORE

+ 1 - 0
app/i18n/ru/gen.php

@@ -198,6 +198,7 @@ return array(
 		'unsafe_csp_header' => 'Используемый заголовок CSP небезопасен, и FreshRSS может быть уязвим для XSS-атак. <a target="_blank" href="https://freshrss.github.io/FreshRSS/en/admins/10_ServerConfig.html#security">См. документацию</a>',
 	),
 	'lang' => array(
+		'az' => 'Azərbaycanca',	// IGNORE
 		'cs' => 'Čeština',	// IGNORE
 		'de' => 'Deutsch',	// IGNORE
 		'el' => 'Ελληνικά',	// IGNORE

+ 1 - 0
app/i18n/sk/gen.php

@@ -198,6 +198,7 @@ return array(
 		'unsafe_csp_header' => 'The CSP header in use is unsafe and FreshRSS may be vulnerable to XSS attacks. <a target="_blank" href="https://freshrss.github.io/FreshRSS/en/admins/10_ServerConfig.html#security">See documentation</a>',	// TODO
 	),
 	'lang' => array(
+		'az' => 'Azərbaycanca',	// IGNORE
 		'cs' => 'Čeština',	// IGNORE
 		'de' => 'Deutsch',	// IGNORE
 		'el' => 'Ελληνικά',	// IGNORE

+ 1 - 0
app/i18n/tr/gen.php

@@ -190,6 +190,7 @@ return array(
 		'unsafe_csp_header' => 'Kullanılan CSP başlığı güvenli değil ve FreshRSS, XSS saldırılarına karşı savunmasız olabilir. <a target="_blank" href="https://freshrss.github.io/FreshRSS/en/admins/10_ServerConfig.html#security">Belgelere bakın</a>',
 	),
 	'lang' => array(
+		'az' => 'Azərbaycanca',	// IGNORE
 		'cs' => 'Čeština',	// IGNORE
 		'de' => 'Deutsch',	// IGNORE
 		'el' => 'Ελληνικά',	// IGNORE

+ 1 - 0
app/i18n/uk/gen.php

@@ -198,6 +198,7 @@ return array(
 		'unsafe_csp_header' => 'Через використовуваний CSP-заголовок FreshRSS під загрозою XSS-атак. <a target="_blank" href="https://freshrss.github.io/FreshRSS/en/admins/10_ServerConfig.html#security">Переглянути документацію</a>',
 	),
 	'lang' => array(
+		'az' => 'Azərbaycanca',	// IGNORE
 		'cs' => 'Čeština',	// IGNORE
 		'de' => 'Deutsch',	// IGNORE
 		'el' => 'Ελληνικά',	// IGNORE

+ 1 - 0
app/i18n/zh-CN/gen.php

@@ -182,6 +182,7 @@ return array(
 		'unsafe_csp_header' => '当前使用的 CSP 头部不安全,FreshRSS 可能容易受到 XSS 攻击。<a target="_blank" href="https://freshrss.github.io/FreshRSS/en/admins/10_ServerConfig.html#security">查看文档</a>',
 	),
 	'lang' => array(
+		'az' => 'Azərbaycanca',	// IGNORE
 		'cs' => 'Čeština',	// IGNORE
 		'de' => 'Deutsch',	// IGNORE
 		'el' => 'Ελληνικά',	// IGNORE

+ 1 - 0
app/i18n/zh-TW/gen.php

@@ -184,6 +184,7 @@ return array(
 		'unsafe_csp_header' => '目前使用的 CSP 標頭不安全,FreshRSS 可能會受到 XSS 攻擊。<a target="_blank" href="https://freshrss.github.io/FreshRSS/en/admins/10_ServerConfig.html#security">請參閱說明文件</a>',
 	),
 	'lang' => array(
+		'az' => 'Azərbaycanca',	// IGNORE
 		'cs' => 'Čeština',	// IGNORE
 		'de' => 'Deutsch',	// IGNORE
 		'el' => 'Ελληνικά',	// IGNORE