feat: add ru locale and improve translations (#320)

* Add ru locale

* fix

* fix: remove duplicate

* Add field labels and continue ru locale

* fix: Add ru gettext for queue columns, short result column, and OrmQ field labels

* fix: locale paths in translation files

* chore: format code with ruff

* chore: format code with ruff

* fix: correct time_taken usage in admin

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update django_q/locale/de/LC_MESSAGES/django.po

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update django_q/locale/tr/LC_MESSAGES/django.po

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* fix: clear fuzzy markers

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
Islam Asabaev
2026-04-25 01:06:07 +02:00
committed by GitHub
co-authored by Copilot
parent 936fdd10b1
commit 5975a2d081
10 changed files with 2706 additions and 838 deletions
+336 -154
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-01-26 01:38+0000\n"
"POT-Creation-Date: 2026-04-17 21:10+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Ethem Güner <ethemguener@gmail.com>\n"
"Language-Team: \n"
@@ -18,36 +18,44 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: admin.py:43
#: admin.py:30
msgid "Resubmit selected tasks to queue"
msgstr "Seçili işleri kuyruğa tekrar gönder"
#: admin.py:107 models.py:293
#: admin.py:64
msgid "Time Taken"
msgstr ""
#: admin.py:95
msgid "Short result"
msgstr ""
#: admin.py:142 models.py:412
#, fuzzy
#| msgid "Success"
msgid "success"
msgstr "başarılı olanlar"
#: admin.py:119 models.py:295
#: admin.py:154 models.py:414
msgid "last_run"
msgstr ""
#: cluster.py:79
#: cluster.py:75
#, python-format
msgid "Q Cluster %(name)s starting."
msgstr "Q Cluster %(name)s başlatılıyor."
#: cluster.py:87
#: cluster.py:83
#, python-format
msgid "Q Cluster %(name)s stopping."
msgstr "Q Cluster %(name)s durduruluyor."
#: cluster.py:90
#: cluster.py:86
#, python-format
msgid "Q Cluster %(name)s has stopped."
msgstr "Q Cluster %(name)s durduruldu."
#: cluster.py:97
#: cluster.py:93
#, python-format
msgid "%(name)s got signal %(signal)s"
msgstr "%(name)s, %(signal)s pid'inde izleniyor/monitoring yapılıyor."
@@ -62,7 +70,7 @@ msgstr "Monitor %(name)s ani ölüm sonrası tekrar dirildi"
msgid "reincarnated pusher %(name)s after sudden death"
msgstr "Pusher %(name)s ani ölüm sonrası tekrar dirildi"
#: cluster.py:250
#: cluster.py:262
#, fuzzy, python-format
#| msgid "reincarnated worker %(name)s after timeout"
msgid ""
@@ -70,119 +78,55 @@ msgid ""
"%(task_name)s"
msgstr "Worker %(name)s zaman aşımı sonrası tekrar dirildi"
#: cluster.py:255
#: cluster.py:265
#, python-format
msgid "reincarnated worker %(name)s after timeout"
msgstr "Worker %(name)s zaman aşımı sonrası tekrar dirildi"
#: cluster.py:260
#: cluster.py:270
#, python-format
msgid "recycled worker %(name)s"
msgstr "Worker %(name)s geri döndürüldü"
#: cluster.py:263
#: cluster.py:273
#, python-format
msgid "reincarnated worker %(name)s after death"
msgstr "Worker %(name)s ani ölüm sonrası tekrar dirildi"
#: cluster.py:287
#: cluster.py:297
#, python-format
msgid "%(name)s guarding cluster %(cluster_name)s"
msgstr "%(name)s, %(cluster_name)s cluster'ını koruyor"
#: cluster.py:296
#: cluster.py:307
#, python-format
msgid "Q Cluster %(cluster_name)s running."
msgstr "Q Cluster %(cluster_name)s başlatılıyor."
#: cluster.py:332
#: cluster.py:346
#, python-format
msgid "%(name)s stopping cluster processes"
msgstr "Cluster %(name)s işlemleri durduruluyor."
#: cluster.py:357
#: cluster.py:371
#, python-format
msgid "%(name)s waiting for the monitor."
msgstr "%(name)s monitor için bekliyor."
#: cluster.py:383
#, fuzzy, python-format
#| msgid "%(process_name)s pushing tasks at %(id)s"
msgid "%(name)s pushing tasks at %(id)s"
msgstr "%(process_name)s, işleri %(id)s pid'ine gönderiyor."
#: cluster.py:407
#, python-format
msgid "queueing from %(list_key)s"
msgstr ""
#: cluster.py:411
#, python-format
msgid "%(name)s stopped pushing tasks"
msgstr "%(name)s işleri göndermeyi durdurdu"
#: cluster.py:426
#, python-format
msgid "%(name)s monitoring at %(id)s"
msgstr "%(name)s, %(id)s pid'inde izleniyor/monitoring yapılıyor."
#: cluster.py:445
#, python-format
msgid "Processed '%(info_name)s' (%(task_name)s)"
msgstr "[%(task_name)s] - '%(info_name)s işlendi."
#: cluster.py:451
#, python-format
msgid "Failed '%(info_name)s' (%(task_name)s) - %(task_result)s"
msgstr "[%(task_name)s] - '%(info_name)s' - %(task_result)s başarısız oldu"
#: cluster.py:458
#, python-format
msgid "%(name)s stopped monitoring results"
msgstr "%(name)s sonuçları göstermeyi bıraktı"
#: cluster.py:474
#, python-format
msgid "%(proc_name)s ready for work at %(id)s"
msgstr "%(proc_name)s, %(id)s pid'inde çalışmaya hazır"
#: cluster.py:494
#, fuzzy, python-format
#| msgid "%(proc_name)s processing '%(func_name)s' (%(task_name)s)"
msgid "%(proc_name)s processing %(task_name)s '%(func_name)s'"
msgstr "%(proc_name)s, '%(func_name)s' [%(task_name)s] işlerini işiyor"
#: cluster.py:546
#, python-format
msgid "%(proc_name)s stopped doing work"
msgstr "%(proc_name)s çalışmayı bıraktı"
#: cluster.py:751
#, python-format
msgid "%(process_name)s failed to create a task from schedule [%(schedule)s]"
msgstr "%(process_name)s programdan bir görev oluşturamadı [%(schedule)s]"
#: cluster.py:762
#, fuzzy, python-format
#| msgid "%(process_name)s created a task from schedule [%(schedule)s]"
msgid ""
"%(process_name)s created task %(task_name)s from schedule [%(schedule)s]"
msgstr "%(process_name)s programdan bir görev oluşturamadı [%(schedule)s]"
#: cluster.py:808
#: cluster.py:394
msgid "Skipping cpu affinity because psutil was not found."
msgstr "Psutil bulunamadığı için cpu benzeşimi atlanıyor."
#: cluster.py:813
#: cluster.py:399
msgid "Faking cpu affinity because it is not supported on this platform"
msgstr "Bu platformda desteklenmediği için sahte cpu benzeşimi"
#: cluster.py:835
#: cluster.py:421
#, python-format
msgid "%(pid)s will use cpu %(affinity)s"
msgstr "%(pid)s cpu %(affinity)s kullanacaktır"
#: conf.py:90
#: conf.py:122
#, python-format
msgid ""
"SAVE_LIMIT_PER (%(option)s) is not a valid option. Options are: 'group', "
@@ -192,28 +136,28 @@ msgstr ""
"'group', 'name', 'func' ve None. Varsayılan değer None'dır."
#. Translators: Cluster status descriptions
#: conf.py:207
#: conf.py:239
msgid "Starting"
msgstr "Başlıyor"
#: conf.py:208
#: conf.py:240
msgid "Working"
msgstr "Çalışıyor"
#: conf.py:209
#: conf.py:241
msgid "Idle"
msgstr "Boşta"
#: conf.py:210
#: conf.py:242
msgid "Stopped"
msgstr "Durdu"
#: conf.py:211
#: conf.py:243
msgid "Stopping"
msgstr "Durduruluyor"
#. Translators: help text for qcluster management command
#: management/commands/qcluster.py:9
#: management/commands/qcluster.py:11
msgid "Starts a Django Q Cluster."
msgstr "Bir Django Q Cluster çalıştırır."
@@ -232,257 +176,475 @@ msgstr "Q Cluster'ın bellek kullanımını izler"
msgid "Monitors Q Cluster activity"
msgstr "Q Cluster'ın aktivitelerini izler"
#: models.py:125
#: models.py:30 models.py:469
msgid "Task id"
msgstr ""
#: models.py:31
msgid "32-character task identifier."
msgstr ""
#: models.py:36 models.py:235 models.py:470
msgid "Name"
msgstr ""
#: models.py:37
msgid "Optional human-readable name for lookup and display."
msgstr ""
#: models.py:41 models.py:240 models.py:468
msgid "Function"
msgstr ""
#: models.py:42
msgid "Dotted import path to the callable, e.g. myapp.tasks.job."
msgstr ""
#: models.py:47 models.py:247
msgid "Hook"
msgstr ""
#: models.py:48
msgid "Optional dotted path to a callback that receives the task result."
msgstr ""
#: models.py:53 models.py:253 models.py:472
msgid "Arguments"
msgstr ""
#: models.py:54
msgid "Pickled positional arguments (tuple)."
msgstr ""
#: models.py:59 models.py:259 models.py:473
msgid "Keyword arguments"
msgstr ""
#: models.py:60
msgid "Pickled keyword arguments (dict)."
msgstr ""
#: models.py:65
msgid "Result"
msgstr ""
#: models.py:66
msgid "Pickled return value or error payload."
msgstr ""
#: models.py:72 models.py:471
msgid "Group"
msgstr ""
#: models.py:73
msgid "Optional group id to aggregate related tasks."
msgstr ""
#: models.py:80 models.py:328
msgid "Cluster"
msgstr ""
#: models.py:81
msgid "Name of the cluster that executed this task."
msgstr ""
#: models.py:85
msgid "Started at"
msgstr ""
#: models.py:86
msgid "When the worker started executing the task."
msgstr ""
#: models.py:90
#, fuzzy
#| msgid "Stopped"
msgid "Stopped at"
msgstr "Durdu"
#: models.py:91
msgid "When the worker finished (success or failure)."
msgstr ""
#: models.py:96 monitor_terminal.py:180
msgid "Success"
msgstr "Başarılı olanlar"
#: models.py:97
msgid "False if the task raised an exception or timed out."
msgstr ""
#: models.py:101
msgid "Attempt count"
msgstr ""
#: models.py:102
msgid "How many times execution was attempted."
msgstr ""
#: models.py:172
msgid "Task"
msgstr ""
#: models.py:173
msgid "Tasks"
msgstr ""
#: models.py:194
msgid "Successful task"
msgstr "Başarılı iş"
#: models.py:126
#: models.py:195
msgid "Successful tasks"
msgstr "Başarılı işler"
#: models.py:141
#: models.py:210
msgid "Failed task"
msgstr "Başarısız iş"
#: models.py:142
#: models.py:211
msgid "Failed tasks"
msgstr "Başarısız işler"
#: models.py:150 models.py:234
#: models.py:219 models.py:347
msgid "Please install croniter to enable cron expressions"
msgstr "Cron expressions'ları açmak için croniter yükleyin"
#: models.py:170
#: models.py:236
msgid "Optional label to identify this schedule in the admin."
msgstr ""
#: models.py:241
msgid "e.g. module.tasks.function"
msgstr ""
#: models.py:248
msgid "e.g. module.tasks.result_function"
msgstr ""
#: models.py:254
msgid "e.g. 1, 2, 'John'"
msgstr "Örneğin: 1, 2, 'Melih'"
#: models.py:172
#: models.py:260
msgid "e.g. x=1, y=2, name='John'"
msgstr "Örneğin: x=1, y=2, name='Melih'"
#: models.py:186
#: models.py:274
msgid "Once"
msgstr "Bir kere"
#: models.py:187
#: models.py:275 models.py:296
msgid "Minutes"
msgstr "Dakika"
#: models.py:188
#: models.py:276
msgid "Hourly"
msgstr "Saatlik"
#: models.py:189
#: models.py:277
msgid "Daily"
msgstr "Günlük"
#: models.py:190
#: models.py:278
msgid "Weekly"
msgstr "Haftalık"
#: models.py:191
#: models.py:279
#, fuzzy
#| msgid "Weekly"
msgid "Biweekly"
msgstr "İki haftada bir"
#: models.py:192
#: models.py:280
msgid "Monthly"
msgstr "Aylık"
#: models.py:193
#: models.py:281
#, fuzzy
#| msgid "Monthly"
msgid "Bimonthly"
msgstr "İki ayda bir"
#: models.py:194
#: models.py:282
msgid "Quarterly"
msgstr "Bir Çeyrek (3 Ay)"
#: models.py:195
#: models.py:283
msgid "Yearly"
msgstr "Yıllık"
#: models.py:196
#: models.py:284 models.py:313
msgid "Cron"
msgstr ""
#: models.py:199
#: models.py:290
msgid "Schedule Type"
msgstr "Zamanlama Tipi"
#: models.py:202
#: models.py:291
msgid "How often this task should be enqueued."
msgstr ""
#: models.py:297
msgid "Number of minutes for the Minutes type"
msgstr "Dakika tipine göre dakika sayısı"
#: models.py:205
#: models.py:300
msgid "Repeats"
msgstr "Tekrar eder"
#: models.py:205
#: models.py:300
msgid "n = n times, -1 = forever"
msgstr "n = n kere, -1 = sonsuza kadar"
#: models.py:208
#: models.py:303
msgid "Next Run"
msgstr "Bir dahaki çalışma tarihi"
#: models.py:215
#: models.py:304
msgid "When this schedule runs next (stored in UTC)."
msgstr ""
#: models.py:314
msgid "Cron expression"
msgstr ""
#: models.py:224
#: models.py:320
msgid "Last task id"
msgstr ""
#: models.py:321
msgid "Id of the last task spawned from this schedule (read-only)."
msgstr ""
#: models.py:329 models.py:427
msgid "Name of the target cluster"
msgstr ""
#: models.py:336
msgid "Intended date kwarg"
msgstr ""
#: models.py:337
msgid "Name of kwarg to pass intended schedule date"
msgstr "Geçilecek kwarg'ın adı öngörülen program tarihi"
#: models.py:299
#: models.py:418
msgid "Scheduled task"
msgstr "Zamanlanmış iş"
#: models.py:300
#: models.py:419
msgid "Scheduled tasks"
msgstr "Zamanlanmış işler"
#: models.py:326
#: models.py:426
msgid "Cluster key"
msgstr ""
#: models.py:430
msgid "Payload"
msgstr ""
#: models.py:431
msgid "Signed serialized task package (do not edit manually)."
msgstr ""
#: models.py:435
msgid "Lock until"
msgstr ""
#: models.py:436
msgid "Prevent any cluster from pulling until"
msgstr ""
#: models.py:474
#, fuzzy
#| msgid "Queued task"
msgid "Queue options"
msgstr "Sıraya alınmış iş"
#: models.py:478
msgid "Queued task"
msgstr "Sıraya alınmış iş"
#: models.py:327
#: models.py:479
msgid "Queued tasks"
msgstr "Sıraya alınmış işler"
#: monitor.py:64 monitor.py:348
#: monitor.py:41
#, python-format
msgid "%(name)s monitoring at %(id)s"
msgstr "%(name)s, %(id)s pid'inde izleniyor/monitoring yapılıyor."
#: monitor.py:61
#, python-format
msgid "Processed '%(info_name)s' (%(task_name)s)"
msgstr "[%(task_name)s] - '%(info_name)s işlendi."
#: monitor.py:67
#, python-format
msgid "Failed '%(info_name)s' (%(task_name)s) - %(task_result)s"
msgstr "[%(task_name)s] - '%(info_name)s' - %(task_result)s başarısız oldu"
#: monitor.py:74
#, python-format
msgid "%(name)s stopped monitoring results"
msgstr "%(name)s sonuçları göstermeyi bıraktı"
#: monitor_terminal.py:64 monitor_terminal.py:348
msgid "Host"
msgstr ""
#: monitor.py:68 monitor.py:352 monitor.py:459
#: monitor_terminal.py:68 monitor_terminal.py:352 monitor_terminal.py:457
msgid "Id"
msgstr ""
#: monitor.py:72
#: monitor_terminal.py:72
msgid "State"
msgstr "Durum"
#: monitor.py:76
#: monitor_terminal.py:76
msgid "Pool"
msgstr "Havuz"
#: monitor.py:80
#: monitor_terminal.py:80
msgid "TQ"
msgstr ""
#: monitor.py:84
#: monitor_terminal.py:84
msgid "RQ"
msgstr ""
#: monitor.py:88
#: monitor_terminal.py:88
msgid "RC"
msgstr ""
#: monitor.py:92
#: monitor_terminal.py:92
msgid "Up"
msgstr ""
#: monitor.py:172 monitor.py:286
#: monitor_terminal.py:172 monitor_terminal.py:286
msgid "Queued"
msgstr "Sıraya alınmış"
#: monitor.py:180
msgid "Success"
msgstr "Başarılı olanlar"
#: monitor.py:190 monitor.py:294
#: monitor_terminal.py:190 monitor_terminal.py:294
msgid "Failures"
msgstr "Başarısız olanlar"
#: monitor.py:201 monitor.py:498
#: monitor_terminal.py:201 monitor_terminal.py:496
msgid "[Press q to quit]"
msgstr "[Çıkmak için q'ya basın]"
#: monitor.py:227
#: monitor_terminal.py:227
msgid "day"
msgstr "gün"
#: monitor.py:248
#: monitor_terminal.py:248
msgid "second"
msgstr "saniye"
#: monitor.py:251
#: monitor_terminal.py:251
msgid "minute"
msgstr "dakika"
#: monitor.py:254
#: monitor_terminal.py:254
msgid "hour"
msgstr "saat"
#: monitor.py:263
#: monitor_terminal.py:263
#, python-format
msgid "-- %(prefix)s %(version)s on %(info)s --"
msgstr "-- %(prefix)s %(version)s üzerinde %(info)s --"
#: monitor.py:273
#: monitor_terminal.py:273
msgid "Clusters"
msgstr ""
#: monitor.py:277
#: monitor_terminal.py:277
msgid "Workers"
msgstr ""
#: monitor.py:281
#: monitor_terminal.py:281
msgid "Restarts"
msgstr "Yeniden çalıştırmalar"
#: monitor.py:290
#: monitor_terminal.py:290
msgid "Successes"
msgstr "Başarılı olanlar"
#: monitor.py:299
#: monitor_terminal.py:299
msgid "Schedules"
msgstr "Zamanlanmışlar"
#: monitor.py:303
#: monitor_terminal.py:303
#, python-format
msgid "Tasks/%(per)s"
msgstr "İş/%(per)s"
#: monitor.py:307
#: monitor_terminal.py:307
msgid "Avg time"
msgstr "Ortalama süre"
#: monitor.py:357
#: monitor_terminal.py:357
msgid "Available (%)"
msgstr "Müsait (%) "
#: monitor.py:363
#: monitor_terminal.py:363
msgid "Available (MB)"
msgstr "Müsait (MB)"
#: monitor.py:368
#: monitor_terminal.py:368
msgid "Total (MB)"
msgstr "Toplam (MB)"
#: monitor.py:373
#: monitor_terminal.py:373
msgid "Sentinel (MB)"
msgstr ""
#: monitor.py:379
#: monitor_terminal.py:379
msgid "Monitor (MB)"
msgstr "İzleme (MB)"
#: monitor.py:385
#: monitor_terminal.py:385
msgid "Workers (MB)"
msgstr ""
#: monitor.py:487
#: monitor_terminal.py:485
#, python-format
msgid "Available lowest (): %(memory_percent)s ((at)s)"
msgstr "Mevcut en düşük (): %(memory_percent)s ((at)s)"
#: monitor.py:509
#: monitor_terminal.py:507
msgid "No clusters appear to be running."
msgstr "Hiçbir küme çalışıyor görünmüyor."
#: pusher.py:40
#, python-format
msgid "%(name)s pushing tasks at %(id)s"
msgstr "%(name)s, işleri %(id)s pid'ine gönderiyor."
#: pusher.py:67
#, python-format
msgid "queueing from %(list_key)s"
msgstr "%(list_key)s kuyruğa alınıyor"
#: pusher.py:71
#, python-format
msgid "%(name)s stopped pushing tasks"
msgstr "%(name)s işleri göndermeyi durdurdu"
#: scheduler.py:110
#, python-format
msgid "%(process_name)s failed to create a task from schedule [%(schedule)s]"
msgstr "%(process_name)s programdan bir görev oluşturamadı [%(schedule)s]"
#: scheduler.py:121
#, python-format
msgid ""
"%(process_name)s created task %(task_name)s from schedule [%(schedule)s]"
msgstr "%(process_name)s programdan %(task_name)s görevini oluşturdu [%(schedule)s]"
#: signals.py:22
#, python-format
msgid "malformed return hook '%(hook)s' for [%(name)s]"
@@ -493,6 +655,26 @@ msgstr ""
msgid "return hook %(hook)s failed on [%(name)s] because %(error)s"
msgstr ""
#: timeout.py:30 timeout.py:43
msgid "SIGALARM is not available on your platform"
msgstr ""
#: worker.py:49
#, python-format
msgid "%(proc_name)s ready for work at %(id)s"
msgstr "%(proc_name)s, %(id)s pid'inde çalışmaya hazır"
#: worker.py:69
#, fuzzy, python-format
#| msgid "%(proc_name)s processing '%(func_name)s' (%(task_name)s)"
msgid "%(proc_name)s processing %(task_name)s '%(func_name)s'"
msgstr "%(proc_name)s, '%(func_name)s' [%(task_name)s] işlerini işiyor"
#: worker.py:135
#, python-format
msgid "%(proc_name)s stopped doing work"
msgstr "%(proc_name)s çalışmayı bıraktı"
#, python-format
#~ msgid ""
#~ "Could not process '%(func_name)s'. Check the location of the function and "