chore: import upstream snapshot with attribution

This commit is contained in:
wehub-resource-sync
2026-07-13 13:12:17 +08:00
commit cf8edb9f21
44281 changed files with 1655134 additions and 0 deletions
View File
+20
View File
@@ -0,0 +1,20 @@
edit_mins=الدقائق
edit_hours=ساعات
edit_days=أيام
edit_months=الشهور
edit_weekdays=أيام الأسبوع
edit_all=الكل
edit_selected=المحدد ..
edit_run=اركض الآن
edit_clone=وظيفة استنساخ
edit_return=وظيفة كرون
edit_special1=جدول بسيط ..
edit_special0=الأوقات والتواريخ المحددة أدناه ..
edit_special_hourly=ساعيا
edit_special_daily=يوميًا (في منتصف الليل)
edit_special_weekly=أسبوعيًا (يوم الأحد)
edit_special_monthly=شهريًا (في الأول)
edit_special_yearly=سنويًا (في 1 يناير)
log_success=تم تشغيل <tt>$2</tt> بنجاح في <tt>$1</tt>
log_failure=فشل تشغيل <tt>$2</tt> في <tt>$1</tt> :$3
+20
View File
@@ -0,0 +1,20 @@
edit_mins=Минути
edit_hours=Часа
edit_days=дни
edit_months=Месеци
edit_weekdays=делници
edit_all=всичко
edit_selected=Избрано ..
edit_run=Изпълни сега
edit_clone=Clone Job
edit_return=работа с крон
edit_special1=Прост график ..
edit_special0=Подбрани по-долу време и дати ..
edit_special_hourly=всеки час
edit_special_daily=Ежедневно (в полунощ)
edit_special_weekly=Ежеседмично (в неделя)
edit_special_monthly=Месечно (на 1-во)
edit_special_yearly=Годишно (на 1 януари)
log_success=Успешно изпълни <tt>$2</tt> в <tt>$1</tt>
log_failure=Неуспешно стартиране <tt>$2</tt> в <tt>$1</tt> : $3
+20
View File
@@ -0,0 +1,20 @@
edit_mins=Minuts
edit_hours=Hores
edit_days=Dies
edit_months=Mesos
edit_weekdays=Dies de la setmana
edit_all=Tots
edit_selected=Seleccionats...
edit_run=Executa-ho Ara
edit_clone=Clona el Treball
edit_return=al treball cron
edit_special1=Planificació simple...
edit_special0=A les hores i els dies seleccionats a sota...
edit_special_hourly=Cada hora
edit_special_daily=Cada dia (a mitjanit)
edit_special_weekly=Cada setmana (el diumenge)
edit_special_monthly=Cada mes (el dia 1)
edit_special_yearly=Cada any (el dia 1 de Gener)
log_success=S'ha executat correctament <tt>$2</tt> a <tt>$1</tt>
log_failure=No s'ha pogut executar <tt>$2</tt> a <tt>$1</tt>: $3
+20
View File
@@ -0,0 +1,20 @@
edit_mins=Minut
edit_hours=Hodiny
edit_days=Dny
edit_months=Měsíce
edit_weekdays=Pracovní dny
edit_all=Všechno
edit_selected=Vybraný ..
edit_run=Spustit nyní
edit_clone=Klonovat práci
edit_return=cron práce
edit_special1=Jednoduchý rozvrh ..
edit_special0=Níže uvedené časy a data ..
edit_special_hourly=Hodinově
edit_special_daily=Denně (o půlnoci)
edit_special_weekly=Týdenní (v neděli)
edit_special_monthly=Měsíčně (1.)
edit_special_yearly=Roční (1. ledna)
log_success=Úspěšně běžel <tt>$2</tt> v <tt>$1</tt>
log_failure=Nepodařilo se spustit <tt>$2</tt> v <tt>$1</tt> : $3
+20
View File
@@ -0,0 +1,20 @@
edit_mins=minutter
edit_hours=timer
edit_days=Dage
edit_months=måneder
edit_weekdays=Hverdage
edit_all=Alle
edit_selected=Valgte ..
edit_run=Kør nu
edit_clone=Klon Job
edit_return=cron job
edit_special1=Enkel tidsplan ..
edit_special0=Tider og datoer valgt nedenfor ..
edit_special_hourly=Hver time
edit_special_daily=Dagligt (ved midnat)
edit_special_weekly=Ugentlig (søndag)
edit_special_monthly=Månedligt (den 1.)
edit_special_yearly=Årligt (den 1. januar)
log_success=Kørte <tt>$2</tt> i <tt>$1</tt>
log_failure=Kunne ikke køre <tt>$2</tt> i <tt>$1</tt> : $3
+20
View File
@@ -0,0 +1,20 @@
edit_mins=Minuten
edit_hours=Stunden
edit_days=Tage
edit_months=Monate
edit_weekdays=Wochentage
edit_all=Alle
edit_selected=Ausgewählt ..
edit_run=Jetzt ausführen
edit_clone=Job klonen
edit_return=Cron-Job
edit_special1=Einfacher Zeitplan ..
edit_special0=Zeiten und Daten unten ausgewählt ..
edit_special_hourly=Stündlich
edit_special_daily=Täglich (um Mitternacht)
edit_special_weekly=Wöchentlich (am Sonntag)
edit_special_monthly=Monatlich (am 1.)
edit_special_yearly=Jährlich (am 1. Januar)
log_success=Erfolgreich ausgeführt <tt>$2</tt> in <tt>$1</tt>
log_failure=Fehlgeschlagen bei der Ausführung von <tt>$2</tt> in <tt>$1</tt> : $3
+20
View File
@@ -0,0 +1,20 @@
edit_mins=Λεπτά
edit_hours=Ωρες
edit_days=Ημέρες
edit_months=Μήνες
edit_weekdays=Εργάσιμες
edit_all=Ολα
edit_selected=Επιλεγμένα ..
edit_run=Τρέξε τώρα
edit_clone=Κλωνοποίηση εργασίας
edit_return=cron δουλειά
edit_special1=Απλό πρόγραμμα ..
edit_special0=Οι ώρες και οι ημερομηνίες που επιλέχθηκαν παρακάτω ..
edit_special_hourly=Ωριαίος
edit_special_daily=Καθημερινά (τα μεσάνυχτα)
edit_special_weekly=Εβδομαδιαία (Κυριακή)
edit_special_monthly=Μηνιαία (στον 1ο)
edit_special_yearly=Ετήσια (1η Ιανουαρίου)
log_success=Επιτυχής εκτέλεση <tt>$2</tt> στο <tt>$1</tt>
log_failure=Δεν ήταν δυνατή η εκτέλεση <tt>$2</tt> στο <tt>$1</tt> : $3
+22
View File
@@ -0,0 +1,22 @@
edit_mins=Minutes
edit_hours=Hours
edit_days=Days
edit_months=Months
edit_weekdays=Weekdays
edit_all=All
edit_selected=Selected ..
edit_run=Run Now
edit_clone=Clone Job
edit_return=cron job
edit_special1=Simple schedule
edit_special0=Times and dates selected below ..
edit_special_hourly=Hourly
edit_special_daily=Daily (at midnight)
edit_special_weekly=Weekly (on Sunday)
edit_special_monthly=Monthly (on the 1st)
edit_special_yearly=Yearly (on 1st Jan)
log_success=Successfully ran <tt>$2</tt> in <tt>$1</tt>
log_failure=Failed to run <tt>$2</tt> in <tt>$1</tt> : $3
__norefs=1
+20
View File
@@ -0,0 +1,20 @@
edit_mins=Minutos
edit_hours=Horas
edit_days=Dias
edit_months=Meses
edit_weekdays=Días laborables
edit_all=Todos
edit_selected=Seleccionado ..
edit_run=Corre ahora
edit_clone=Trabajo clon
edit_return=trabajo cron
edit_special1=Horario simple. ..
edit_special0=Horas y fechas seleccionadas a continuación.
edit_special_hourly=Cada hora
edit_special_daily=Diario (a medianoche)
edit_special_weekly=Semanal (el domingo)
edit_special_monthly=Mensual (el 1)
edit_special_yearly=Anualmente (el 1 de enero)
log_success=Ejecutó con éxito <tt>$2</tt> en <tt>$1</tt>
log_failure=Error al ejecutar <tt>$2</tt> en <tt>$1</tt> : $3
+20
View File
@@ -0,0 +1,20 @@
edit_mins=Minutu
edit_hours=Orduak
edit_days=egunak
edit_months=hilabeteak
edit_weekdays=Lanegunetan
edit_all=guztiak
edit_selected=Hautatuta dago
edit_run=Exekutatu orain
edit_clone=Klonazio lana
edit_return=cron lana
edit_special1=Ordutegi erraza ..
edit_special0=Jarraian aukeratutako orduak eta datak
edit_special_hourly=Orduro
edit_special_daily=Eguneko (gauerdian)
edit_special_weekly=Astean behin (igandean)
edit_special_monthly=Hilero (hilaren 1ean)
edit_special_yearly=Urtero (urtarrilaren 1ean)
log_success=Behar bezala <tt>$2</tt> exekutatu da <tt>$1</tt>
log_failure=Ezin izan da <tt>$2</tt> exekutatu <tt>$1</tt> : $3
+20
View File
@@ -0,0 +1,20 @@
edit_mins=دقایق
edit_hours=ساعت ها
edit_days=روزها
edit_months=ماه ها
edit_weekdays=روزهای هفته
edit_all=همه
edit_selected=انتخاب شد ..
edit_run=الان اجرا کن
edit_clone=کلون کار
edit_return=کار cron
edit_special1=برنامه ساده ..
edit_special0=زمان و تاریخ انتخاب شده در زیر ..
edit_special_hourly=ساعتی
edit_special_daily=روزانه (نیمه شب)
edit_special_weekly=هفتگی (یکشنبه)
edit_special_monthly=ماهانه (در تاریخ اول)
edit_special_yearly=سالانه (اول ژانویه)
log_success=با موفقیت <tt>$2</tt> در <tt>$1</tt> اجرا شد
log_failure=اجرای <tt>$2</tt> در <tt>$1</tt> :$3 انجام نشد
+20
View File
@@ -0,0 +1,20 @@
edit_mins=Pöytäkirja
edit_hours=tuntia
edit_days=päivää
edit_months=Kuukaudet
edit_weekdays=Arkisin
edit_all=Kaikki
edit_selected=Valittu ..
edit_run=Juokse nyt
edit_clone=Klooni Job
edit_return=cron työ
edit_special1=Yksinkertainen aikataulu ..
edit_special0=Alla valitut ajat ja päivämäärät ..
edit_special_hourly=tunti-
edit_special_daily=Päivittäin (keskiyöllä)
edit_special_weekly=Viikoittain (sunnuntaina)
edit_special_monthly=Kuukausittain (1. päivä)
edit_special_yearly=Vuosittain (1. tammikuuta)
log_success=Suoritettiin onnistuneesti <tt>$2</tt> hakemistossa <tt>$1</tt>
log_failure=<tt>$2</tt> suorittaminen <tt>$1</tt> : $3 epäonnistui
+20
View File
@@ -0,0 +1,20 @@
edit_mins=Minutes
edit_hours=Heures
edit_days=Journées
edit_months=Mois
edit_weekdays=Jours de la semaine
edit_all=Tout
edit_selected=Sélectionné ..
edit_run=Cours maintenant
edit_clone=Travail de clonage
edit_return=Tâche planifiée
edit_special1=Horaire simple ..
edit_special0=Horaires et dates sélectionnés ci-dessous.
edit_special_hourly=Toutes les heures
edit_special_daily=Tous les jours (à minuit)
edit_special_weekly=Hebdomadaire (le dimanche)
edit_special_monthly=Mensuel (le 1er)
edit_special_yearly=Annuellement (le 1er janvier)
log_success=Exécution réussie de <tt>$2</tt> dans <tt>$1</tt>
log_failure=Impossible d'exécuter <tt>$2</tt> dans <tt>$1</tt> : $3
+20
View File
@@ -0,0 +1,20 @@
edit_mins=minuta
edit_hours=Sati
edit_days=dana
edit_months=mjeseci
edit_weekdays=Radnim danom
edit_all=svi
edit_selected=Odabran ..
edit_run=Pokreni sada
edit_clone=Klonski posao
edit_return=posao cron
edit_special1=Jednostavan raspored ..
edit_special0=Vrijeme i datumi odabrani dolje ..
edit_special_hourly=na sat
edit_special_daily=Svakodnevno (u ponoć)
edit_special_weekly=Tjedno (nedjelja)
edit_special_monthly=Mjesečno (1. siječnja)
edit_special_yearly=Godišnje (1. siječnja)
log_success=Uspješno je pokrenut <tt>$2</tt> u <tt>$1</tt>
log_failure=Nije pokrenuto <tt>$2</tt> u <tt>$1</tt> : $3
+17
View File
@@ -0,0 +1,17 @@
edit_mins=perc
edit_hours=Óra
edit_days=Nap
edit_months=Hónap
edit_weekdays=Hétvége
edit_all=Összes
edit_selected=Kiválasztott..
edit_run=Fut
edit_clone=Klón
edit_return=Cron
edit_special1=Egyszerű ütemezés...
edit_special0=Időpont és dátum az alábbiak szerint:
edit_special_hourly=Óránként
edit_special_daily=Naponta (éjféltől)
edit_special_weekly=Hetente (vasárnaptól)
edit_special_monthly=Havonta (elsejétől)
edit_special_yearly=Évente (január elsejétől)
+2
View File
@@ -0,0 +1,2 @@
log_success=A <tt>$2</tt> sikeresen futott a <tt>$1</tt> -ban
log_failure=A <tt>$2</tt> futtatása a <tt>$1</tt> : $3 fájlban nem sikerült
+20
View File
@@ -0,0 +1,20 @@
edit_mins=Minuti
edit_hours=Ore
edit_days=giorni
edit_months=mesi
edit_weekdays=Giorni della settimana
edit_all=Tutti
edit_selected=Selezionato ..
edit_run=Corri adesso
edit_clone=Clonazione
edit_return=cron job
edit_special1=Programma semplice. ..
edit_special0=Orari e date selezionati di seguito.
edit_special_hourly=ogni ora
edit_special_daily=Tutti i giorni (a mezzanotte)
edit_special_weekly=Settimanale (domenica)
edit_special_monthly=Mensile (il 1)
edit_special_yearly=Annuale (1 gennaio)
log_success=<tt>$2</tt> eseguito correttamente in <tt>$1</tt>
log_failure=Impossibile eseguire <tt>$2</tt> in <tt>$1</tt> : $3
+20
View File
@@ -0,0 +1,20 @@
edit_mins=議事録
edit_hours=時間
edit_days=日々
edit_months=月
edit_weekdays=平日
edit_all=すべて
edit_selected=選択した ..
edit_run=今すぐ実行
edit_clone=ジョブの複製
edit_return=cronジョブ
edit_special1=シンプルなスケジュール ..
edit_special0=以下で選択された時間と日付
edit_special_hourly=毎時
edit_special_daily=毎日(深夜)
edit_special_weekly=毎週(日曜日)
edit_special_monthly=毎月(1日)
edit_special_yearly=毎年(1月1日)
log_success=<tt>$1</tt>で<tt>$2</tt>を正常に実行しました
log_failure=<tt>$1</tt>で<tt>$2</tt>を実行できませんでした: $3
+20
View File
@@ -0,0 +1,20 @@
edit_mins=의사록
edit_hours=시간
edit_days=일
edit_months=개월
edit_weekdays=평일
edit_all=모두
edit_selected=선택 ..
edit_run=지금 실행
edit_clone=복제 작업
edit_return=크론 직업
edit_special1=간단한 일정 ..
edit_special0=아래에서 선택한 시간과 날짜
edit_special_hourly=매시간
edit_special_daily=매일 (자정)
edit_special_weekly=매주 (일요일)
edit_special_monthly=월간 (1 일)
edit_special_yearly=매년 (1 월 1 일)
log_success=<tt>$1</tt>에서 <tt>$2</tt>를 성공적으로 실행했습니다.
log_failure=<tt>$1</tt>에서 <tt>$2</tt>을 (를) 실행하지 못했습니다 : $3
+17
View File
@@ -0,0 +1,17 @@
edit_mins=Minit
edit_hours=Jam
edit_days=Hari
edit_months=Bulan
edit_weekdays=Hari bekerja
edit_all=Semua
edit_selected=Dipilih ..
edit_run=Jalankan Sekarang
edit_clone=Klon Tugas
edit_return=Tugas cron
edit_special1=Jadual mudah ..
edit_special0=Masa dan tarikh yang dipilih di bawah ..
edit_special_hourly=Setiap jam
edit_special_daily=Setiap hari (di tengah malam)
edit_special_weekly=Setiap minggu (pada hari Ahad)
edit_special_monthly=Setiap bulan (pada 1hb)
edit_special_yearly=Setaip tahun (pada 1hb Jan)
+2
View File
@@ -0,0 +1,2 @@
log_success=Berjaya berlari <tt>$2</tt> di <tt>$1</tt>
log_failure=Gagal menjalankan <tt>$2</tt> dalam <tt>$1</tt> : $3
+17
View File
@@ -0,0 +1,17 @@
edit_mins=Minuten
edit_hours=Uren
edit_days=Dagen
edit_months=Maanden
edit_weekdays=Weekdagen
edit_all=Allemaal
edit_selected=Geselecteerde ..
edit_run=Nu Uitvoeren
edit_clone=Kloon Taak
edit_return=cron taak
edit_special1=Simpele planning ..
edit_special0=Tijden en datums hieronder geselecteerd ..
edit_special_hourly=Ieder uur
edit_special_daily=Dagelijks (om middernacht)
edit_special_weekly=Wekelijks (op Zondag)
edit_special_monthly=Maandelijks (op de 1e)
edit_special_yearly=Jaarlijks (op de 1e van Jan)
+2
View File
@@ -0,0 +1,2 @@
log_success=<tt>$2</tt> succesvol uitgevoerd in <tt>$1</tt>
log_failure=Kan <tt>$2</tt> niet uitvoeren in <tt>$1</tt> : $3
+20
View File
@@ -0,0 +1,20 @@
edit_mins=Minutter
edit_hours=Timer
edit_days=Dager
edit_months=Måneder
edit_weekdays=Ukedager
edit_all=Alle
edit_selected=Valgte ..
edit_run=Kjør nå
edit_clone=Klon jobb
edit_return=cron jobb
edit_special1=Enkel tidsplan ..
edit_special0=Klokkeslett og datoer valgt nedenfor ..
edit_special_hourly=Hver time
edit_special_daily=Daglig (ved midnatt)
edit_special_weekly=Ukentlig (på Søndag)
edit_special_monthly=Månedlig (på første)
edit_special_yearly=Årlig (1. Januar)
log_success=Kjørte <tt>$2</tt> i <tt>$1</tt>
log_failure=Kunne ikke kjøre <tt>$2</tt> i <tt>$1</tt> : $3
+17
View File
@@ -0,0 +1,17 @@
edit_mins=Minuty
edit_hours=Godziny
edit_days=Dni
edit_months=Miesiące
edit_weekdays=W dni powszednie
edit_all=Wszystko
edit_selected=Zaznaczono ..
edit_run=Uruchom teraz
edit_clone=Klonuj zadanie
edit_return=zadań cron
edit_special1=Prosty harmonogram ..
edit_special0=Czas i daty wybrano poniżej ..
edit_special_hourly=Co godzinę
edit_special_daily=Dziennie (o północy)
edit_special_weekly=Tygodniowo (co niedzielę)
edit_special_monthly=Miesięcznie (1 dnia miesiąca)
edit_special_yearly=Rocznie (1 stycznia każdego roku)
+2
View File
@@ -0,0 +1,2 @@
log_success=Pomyślnie uruchomiono <tt>$2</tt> w <tt>$1</tt>
log_failure=Nie można uruchomić <tt>$2</tt> w <tt>$1</tt> : $3
+20
View File
@@ -0,0 +1,20 @@
edit_mins=Minutos
edit_hours=Horas
edit_days=Dias
edit_months=Meses
edit_weekdays=Dias da semana
edit_all=Todos
edit_selected=Selecionado ..
edit_run=Corra agora
edit_clone=Clonar trabalho
edit_return=trabalho cron
edit_special1=Cronograma simples ..
edit_special0=Horários e datas selecionados abaixo.
edit_special_hourly=Por hora
edit_special_daily=Diariamente (à meia-noite)
edit_special_weekly=Semanal (no domingo)
edit_special_monthly=Mensal (no dia 1)
edit_special_yearly=Anualmente (em 1º de janeiro)
log_success=Executou com êxito <tt>$2</tt> em <tt>$1</tt>
log_failure=Falha ao executar <tt>$2</tt> em <tt>$1</tt> : $3
+20
View File
@@ -0,0 +1,20 @@
edit_mins=Minutos
edit_hours=Horas
edit_days=Dias
edit_months=Meses
edit_weekdays=Dias da semana
edit_all=Todos
edit_selected=Selecionado ..
edit_run=Corra agora
edit_clone=Clonar trabalho
edit_return=trabalho cron
edit_special1=Cronograma simples ..
edit_special0=Horários e datas selecionados abaixo.
edit_special_hourly=Por hora
edit_special_daily=Diariamente (à meia-noite)
edit_special_weekly=Semanal (no domingo)
edit_special_monthly=Mensal (no dia 1)
edit_special_yearly=Anualmente (em 1º de janeiro)
log_success=Executou com êxito <tt>$2</tt> em <tt>$1</tt>
log_failure=Falha ao executar <tt>$2</tt> em <tt>$1</tt> : $3
+17
View File
@@ -0,0 +1,17 @@
edit_mins=Минут
edit_hours=Часов
edit_days=Дней
edit_months=Месяц
edit_weekdays=Будни
edit_all=Все
edit_selected=Выбрано ...
edit_run=Выполняется
edit_clone=Копия задания
edit_return=Задание
edit_special1=Единоразовое расписание
edit_special0=Время и дата выбраны ниже ...
edit_special_hourly=Ежечасно
edit_special_daily=Ежедневно (в полночь)
edit_special_weekly=Еженедельно (в воскресенье)
edit_special_monthly=Ежемесячно (1 числа)
edit_special_yearly=Ежегодно (1 января)
+2
View File
@@ -0,0 +1,2 @@
log_success=Успешно выполнено <tt>$2</tt> в <tt>$1</tt>
log_failure=Не удалось запустить <tt>$2</tt> в <tt>$1</tt> : $3
+20
View File
@@ -0,0 +1,20 @@
edit_mins=minúty
edit_hours=hodiny
edit_days=Dni
edit_months=mesiaca
edit_weekdays=Dni v týždni
edit_all=všetko
edit_selected=Vybraný ..
edit_run=Spustiť
edit_clone=Klonovať prácu
edit_return=cron job
edit_special1=Jednoduchý rozvrh ..
edit_special0=Nižšie uvedené časy a dátumy.
edit_special_hourly=hodinový
edit_special_daily=Denne (o polnoci)
edit_special_weekly=Týždenne (v nedeľu)
edit_special_monthly=Mesačne (1.)
edit_special_yearly=Ročne (1. januára)
log_success=Úspešne bežal <tt>$2</tt> v <tt>$1</tt>
log_failure=Nepodarilo sa spustiť <tt>$2</tt> v <tt>$1</tt> : $3
+20
View File
@@ -0,0 +1,20 @@
edit_mins=Minuter
edit_hours=timmar
edit_days=dagar
edit_months=månader
edit_weekdays=vardagar
edit_all=Allt
edit_selected=Valt ..
edit_run=Spring nu
edit_clone=Klonjobb
edit_return=Cron jobb
edit_special1=Enkelt schema ..
edit_special0=Tider och datum valda nedan ..
edit_special_hourly=Varje timme
edit_special_daily=Dagligen (vid midnatt)
edit_special_weekly=Veckovis (på söndag)
edit_special_monthly=Månadsvis (den 1: a)
edit_special_yearly=Årligen (den 1 januari)
log_success=<Text>$2</tt> lyckades i <tt>$1</tt>
log_failure=Det gick inte att köra <tt>$2</tt> i <tt>$1</tt> : $3
+20
View File
@@ -0,0 +1,20 @@
edit_mins=Dakika
edit_hours=Saatler
edit_days=günler
edit_months=aylar
edit_weekdays=Hafta içi
edit_all=Herşey
edit_selected=Seçildi ..
edit_run=Şimdi koş
edit_clone=Klonlama İşi
edit_return=cron işi
edit_special1=Basit program ..
edit_special0=Aşağıda seçilen saatler ve tarihler ..
edit_special_hourly=Saatlik
edit_special_daily=Günlük (gece yarısı)
edit_special_weekly=Haftalık (Pazar günü)
edit_special_monthly=Aylık (1. gün)
edit_special_yearly=Yıllık (1 Ocak'ta)
log_success=<tt>$1</tt> 'de <tt>$2</tt> başarıyla çalıştırıldı
log_failure=<tt>$1</tt> içinde <tt>$2</tt> çalıştırılamadı : $3
+20
View File
@@ -0,0 +1,20 @@
edit_mins=Хвилини
edit_hours=Години
edit_days=Днів
edit_months=Місяці
edit_weekdays=Будні дні
edit_all=Усі
edit_selected=Вибрано ..
edit_run=Виконати зараз
edit_clone=Клонова робота
edit_return=робота з крон
edit_special1=Простий графік ..
edit_special0=Часи та дати, вибрані нижче ..
edit_special_hourly=Щогодини
edit_special_daily=Щодня (опівночі)
edit_special_weekly=Щотижня (у неділю)
edit_special_monthly=Щомісяця (1-го)
edit_special_yearly=Щорічно (1 січня)
log_success=<tt>$2</tt> в <tt>$1</tt>
log_failure=Не вдалося запустити <tt>$2</tt> у <tt>$1</tt> : $3
+20
View File
@@ -0,0 +1,20 @@
edit_mins=分钟
edit_hours=小时
edit_days=天
edit_months=月数
edit_weekdays=平日
edit_all=所有
edit_selected=选择 ..
edit_run=现在跑步
edit_clone=克隆作业
edit_return=计划工作
edit_special1=简单的时间表 ..
edit_special0=下面选择的时间和日期 ..
edit_special_hourly=每小时一次
edit_special_daily=每日(午夜)
edit_special_weekly=每周(星期日)
edit_special_monthly=每月(1日)
edit_special_yearly=每年(1月1日)
log_success=在<tt>$1</tt>中成功运行了<tt>$2</tt>
log_failure=无法在<tt>$1</tt>中运行<tt>$2</tt> $3
+20
View File
@@ -0,0 +1,20 @@
edit_mins=分鐘
edit_hours=小時
edit_days=天
edit_months=月數
edit_weekdays=平日
edit_all=所有
edit_selected=選擇 ..
edit_run=現在跑步
edit_clone=克隆作業
edit_return=計劃工作
edit_special1=簡單的時間表 ..
edit_special0=下面選擇的時間和日期 ..
edit_special_hourly=每小時一次
edit_special_daily=每日(午夜)
edit_special_weekly=每週(週日)
edit_special_monthly=每月(1日)
edit_special_yearly=每年(1月1日)
log_success=在<tt>$1</tt>中成功運行了<tt>$2</tt>
log_failure=無法在<tt>$1</tt>中運行<tt>$2</tt> $3
+24
View File
@@ -0,0 +1,24 @@
# log_parser.pl
# Functions for parsing this module's logs
do 'webmincron-lib.pl';
# parse_webmin_log(user, script, action, type, object, &params)
# Converts logged information from this module into human-readable form
sub parse_webmin_log
{
my ($user, $script, $action, $type, $object, $p) = @_;
if ($action eq 'run') {
if ($p->{'error'}) {
return &text('log_failure', $p->{'module'}, $p->{'func'},
&html_escape($p->{'error'}));
}
else {
return &text('log_success', $p->{'module'}, $p->{'func'});
}
}
else {
return undef;
}
}
+4
View File
@@ -0,0 +1,4 @@
desc=Scheduled Webmin Functions
longdesc=Define Webmin module functions that are called on a regular schedule by the Webmin webserver
category=webmin
hidden=1
View File
+2
View File
@@ -0,0 +1,2 @@
longdesc_ar=حدد وظائف الوحدة النمطية Webmin التي يتم استدعاؤها في جدول منتظم بواسطة خادم الويب Webmin
desc_ar=وظائف Webmin المجدولة
View File
+2
View File
@@ -0,0 +1,2 @@
longdesc_bg=Определете функциите на модула на Webmin, които се извикват в редовен график от уеб сървъра Webmin
desc_bg=Планирани функции на Webmin
+2
View File
@@ -0,0 +1,2 @@
desc_ca=Funcions Planificades de Webmin
longdesc_ca=Defineix les funcions del mòdul Webmin que es criden de forma planificada pel servidor web Webmin.
View File
+2
View File
@@ -0,0 +1,2 @@
longdesc_cs=Definujte funkce modulu Webmin, které webový server Webmin zavolá v pravidelném plánu
desc_cs=Naplánované webové funkce
View File
+2
View File
@@ -0,0 +1,2 @@
longdesc_da=Definer Webmin-modulfunktioner, der kaldes til en regelmæssig tidsplan af Webmin-webserveren
desc_da=Planlagte Webmin-funktioner
+2
View File
@@ -0,0 +1,2 @@
desc_de=Geplante Webmin Funktionen
longdesc_de=Lege Webmin Funktionen fest, die regelmäß vom Webmin Server ausgeführt werden sollen.
View File
+2
View File
@@ -0,0 +1,2 @@
longdesc_el=Καθορίστε τις λειτουργίες της λειτουργικής μονάδας Webmin που καλούνται σε κανονικό χρονοδιάγραμμα από τον webserver Webmin
desc_el=Προγραμματισμένες λειτουργίες Webmin
View File
+2
View File
@@ -0,0 +1,2 @@
longdesc_es=Defina las funciones del módulo Webmin que el servidor web Webmin llama regularmente.
desc_es=Funciones programadas de Webmin
View File
+2
View File
@@ -0,0 +1,2 @@
longdesc_eu=Definitu Webmin moduluak web zerbitzariaren ohiko ordutegian deitzen diren Webmin moduluen funtzioak
desc_eu=Programatutako Webmin funtzioak
View File
+2
View File
@@ -0,0 +1,2 @@
longdesc_fa=توابع ماژول Webmin را تعریف کنید که در یک برنامه منظم توسط وب سرور Webmin فراخوانی می شوند
desc_fa=توابع وبمین برنامه ریزی شده
View File
+2
View File
@@ -0,0 +1,2 @@
longdesc_fi=Määritä Webmin-moduulin toiminnot, joita Webmin-palvelin kutsuu säännölliseen aikatauluun
desc_fi=Ajoitetut Webmin-toiminnot
View File
+2
View File
@@ -0,0 +1,2 @@
longdesc_fr=Définir les fonctions du module Webmin qui sont appelées régulièrement par le serveur Web Webmin
desc_fr=Fonctions Webmin planifiées
View File
+2
View File
@@ -0,0 +1,2 @@
longdesc_hr=Definirajte funkcije modula Webmin koje redovno poziva Webminver iz Webmin-a
desc_hr=Planirane Webmin funkcije
+1
View File
@@ -0,0 +1 @@
desc_hu=Webmin ütemezett feladatok
+1
View File
@@ -0,0 +1 @@
longdesc_hu=Definiálja azokat a Webmin modul funkciókat, amelyeket a Webmin webszerver rendszeresen ütemez
View File
+2
View File
@@ -0,0 +1,2 @@
desc_it=Funzioni Webmin programmate
longdesc_it=Definire le funzioni del modulo Webmin che vengono chiamate su una pianificazione regolare dal server web Webmin
View File
+2
View File
@@ -0,0 +1,2 @@
desc_ja=スケジュールされたWebmin機能
longdesc_ja=Webmin Webサーバーによって定期的なスケジュールで呼び出されるWebminモジュール関数を定義する
View File
+2
View File
@@ -0,0 +1,2 @@
longdesc_ko=Webmin 웹 서버가 정기적으로 호출하는 Webmin 모듈 기능 정의
desc_ko=예약 된 Webmin 기능
+2
View File
@@ -0,0 +1,2 @@
longdesc_ms=Tentukan fungsi modul Webmin yang hendak dipanggil mengikut jadual tetap oleh pelayan Web Webmin
desc_ms=Penjadualan Fungsi Webmin
+1
View File
@@ -0,0 +1 @@
desc_nl=Geplande Webmin Functies
+1
View File
@@ -0,0 +1 @@
longdesc_nl=Definieer functies van de Webmin-module die op regelmatige basis worden opgeroepen door de Webmin-webserver
+1
View File
@@ -0,0 +1 @@
desc_no=Tidsplanlagte Webmin funksjoner
+1
View File
@@ -0,0 +1 @@
longdesc_no=Definer Webmin-modulfunksjoner som blir kalt til vanlig plan av Webmin webserver
+2
View File
@@ -0,0 +1,2 @@
desc_pl=Zaplanowane Funkcje Webmina
longdesc_pl=Określ funkcje Webmina, które mają być uruchamiane według regularnego harmonogramu przez serwer Webmin
View File
+2
View File
@@ -0,0 +1,2 @@
longdesc_pt=Defina as funções do módulo Webmin chamadas regularmente pelo servidor Webmin
desc_pt=Funções agendadas para Webmin
View File
+2
View File
@@ -0,0 +1,2 @@
longdesc_pt_BR=Defina as funções do módulo Webmin chamadas regularmente pelo servidor Webmin
desc_pt_BR=Funções agendadas para Webmin
View File
+2
View File
@@ -0,0 +1,2 @@
desc_ru=Запланированные функции Webmin
longdesc_ru=Определите функции модуля Webmin, которые регулярно вызываются веб-сервером Webmin
View File
+2
View File
@@ -0,0 +1,2 @@
longdesc_sk=Definujte funkcie modulu Webmin, ktoré webový server Webmin pravidelne volá
desc_sk=Naplánované webové funkcie
View File
+2
View File
@@ -0,0 +1,2 @@
desc_sv=Schemalagda webminfunktioner
longdesc_sv=Definiera Webmin-modulfunktioner som kallas på ett vanligt schema av Webmin-webbservern
View File
+2
View File
@@ -0,0 +1,2 @@
longdesc_tr=Webmin web sunucusu tarafından düzenli aralıklarla çağrılan Webmin modülü işlevlerini tanımlama
desc_tr=Zamanlanmış Webmin İşlevleri
View File
+2
View File
@@ -0,0 +1,2 @@
longdesc_uk=Визначте функції модуля Webmin, які викликаються у звичайному розкладі веб-сервером Webmin
desc_uk=Заплановані функції Webmin
View File
+2
View File
@@ -0,0 +1,2 @@
longdesc_zh=定义由Webmin Web服务器定期调用的Webmin模块功能
desc_zh=预定的Webmin函数
View File
+2
View File
@@ -0,0 +1,2 @@
desc_zh_TW=預定的Webmin函數
longdesc_zh_TW=定義由Webmin Web服務器定期調用的Webmin模塊功能
+383
View File
@@ -0,0 +1,383 @@
=head1 webmincron-lib.pl
Functions for creating and listing Webmin scheduled functions.
=cut
BEGIN { push(@INC, ".."); };
use WebminCore;
use feature 'state';
&init_config();
$webmin_crons_directory = "$module_config_directory/crons";
@special_modes = ( 'hourly', 'daily', 'weekly', 'monthly', 'yearly' );
=head2 list_webmin_crons
Returns a list of all scheduled Webmin functions. Each of which is a hash ref
with keys :
=item id - A unique ID number
=item module - The module in which the function is defined
=item file - File in which the function is declared
=item func - Name of the function to call
=item args - Array ref of strings to pass to the function as parameters
=item interval - Number of seconds between runs (optional)
=item mins - Minutes on which to run. Can be * or a comma-separated list
=item hours - Hours on which to run
=item days - Days of the month on which to run
=item months - Months of the year on which to run
=item weekdays - Days of week on which to run
=item special - Can be 'hourly', 'daily', 'weekly' or 'monthly'
=cut
sub list_webmin_crons
{
my @rv;
opendir(CRONS, $webmin_crons_directory) || return ( );
foreach my $f (readdir(CRONS)) {
if ($f =~ /^(\d+)\.cron$/) {
my %cron;
&read_file_cached("$webmin_crons_directory/$f", \%cron);
$cron{'id'} = $1;
my @args;
for(my $i=0; defined($cron{'arg'.$i}); $i++) {
push(@args, $cron{'arg'.$i});
delete($cron{'arg'.$i});
}
if (@args) {
$cron{'args'} = \@args;
}
push(@rv, \%cron);
}
}
return @rv;
}
=head2 save_webmin_crons(&cron)
Create or update a webmin cron function. Also locks the file being written to.
=cut
sub save_webmin_cron
{
my ($cron) = @_;
state $cnt = 0;
if (!-d $webmin_crons_directory) {
&make_dir($webmin_crons_directory, 0700);
}
if (!$cron->{'id'}) {
$cron->{'id'} = time().$$.($cnt++);
}
my $file = "$webmin_crons_directory/$cron->{'id'}.cron";
my %wcron = %$cron;
if ($wcron{'args'}) {
for(my $i=0; $i<@{$wcron{'args'}}; $i++) {
$wcron{'arg'.$i} = $wcron{'args'}->[$i];
}
delete($wcron{'args'});
}
&lock_file($file);
&write_file($file, \%wcron);
&unlock_file($file);
&reload_miniserv(1);
}
=head2 delete_webmin_cron(&cron)
Deletes the file for a webmin cron function. Also does locking.
=cut
sub delete_webmin_cron
{
my ($cron) = @_;
my $file = "$webmin_crons_directory/$cron->{'id'}.cron";
&lock_file($file);
&unlink_file($file);
&unlock_file($file);
&reload_miniserv(1);
}
=head2 find_webmin_cron(module, function, [&args])
Returns a Webmin cron hash ref matching the given module and function
=cut
sub find_webmin_cron
{
my ($module, $func, $args) = @_;
my @crons = &list_webmin_crons();
foreach my $oc (@crons) {
next if ($oc->{'module'} ne $module);
next if ($oc->{'func'} ne $func);
if ($args) {
my $sameargs = 1;
for(my $i=0; $i < scalar(@{$oc->{'args'}}) ||
$i < scalar(@$args); $i++) {
$sameargs = 0 if ($oc->{'args'}->[$i] ne $args->[$i]);
}
next if (!$sameargs);
}
return $oc;
}
return undef;
}
=head2 create_webmin_cron(&cron, [old-cron-command])
Create or update a webmin cron job that calls some function.
If the old-cron parameter is given, find and replace the regular cron job
of that name.
=cut
sub create_webmin_cron
{
my ($cron, $old_cmd) = @_;
# Find and replace existing cron with same module, function and args
my $already = &find_webmin_cron($cron->{'module'}, $cron->{'func'},
$cron->{'args'});
if ($already) {
# Update existing, possibly with new interval
$cron->{'id'} = $already->{'id'};
}
&save_webmin_cron($cron);
# Find and delete any Unix cron job that this is replacing
if ($old_cmd && &foreign_installed("cron")) {
&foreign_require("cron");
my @jobs = &cron::list_cron_jobs();
@jobs = grep {
$_->{'user'} eq 'root' &&
$_->{'command'} =~ /(^|[ \|\&;\/])\Q$old_cmd\E($|[ \|\&><;])/
} @jobs;
foreach my $job (reverse(@jobs)) {
&lock_file(&cron::cron_file($job));
&cron::delete_cron_job($job);
&unlock_file(&cron::cron_file($job));
}
}
}
=head2 delete_webmin_module_crons(module)
Remove all Webmin cron jobs for some module
=cut
sub delete_webmin_module_crons
{
my ($mod) = @_;
foreach my $cron (&list_webmin_crons()) {
if ($cron->{'module'} eq $mod) {
&delete_webmin_cron($cron);
}
}
}
=head2 show_times_input(&job, [special])
Returns HTML for inputs for selecting the schedule for a cron job, defined
by the first parameter which must be a hash ref returned by list_cron_jobs.
=item job - Hash ref for a webmincron object
=item special - 0=don't allow special times (like @hourly), 1=allow
=cut
sub show_times_input
{
my ($job, $special) = @_;
$special = 0 if (!defined($special));
my $rv = "<table data-schedule width=100%>\n";
if ($special || $job->{'special'}) {
# Allow selection of special @ times
$rv .= "<tr $cb> <td colspan=6>\n";
$rv .= &ui_radio("special_def", $job->{'special'} ? 1 : 0,
[ [ 1, $text{'edit_special1'}."&nbsp;&nbsp;".
&ui_select("special", $job->{'special'},
[ map { [ $_, $text{'edit_special_'.$_} ] }
@special_modes ]) ],
[ 0, $text{'edit_special0'} ] ]);
$rv .= "</td></tr>\n";
}
# Javascript to disable and enable fields
$rv .= <<EOF;
<script>
function enable_cron_fields(name, form, ena)
{
var els = form.elements[name];
els.disabled = !ena;
for(i=0; i<els.length; i++) {
els[i].disabled = !ena;
}
}
</script>
EOF
$rv .= "<tr $tb>\n";
$rv .= "<td><b>$text{'edit_mins'}</b></td> ".
"<td><b>$text{'edit_hours'}</b></td> ".
"<td><b>$text{'edit_days'}</b></td> ".
"<td><b>$text{'edit_months'}</b></td> ".
"<td><b>$text{'edit_weekdays'}</b></td>";
$rv .= "</tr> <tr $cb>\n";
my @mins = (0..59);
my @hours = (0..23);
my @days = (1..31);
my @months = map { $text{"month_$_"}."=".$_ } (1 .. 12);
my @weekdays = map { $text{"day_$_"}."=".$_ } (0 .. 6);
my $arrmap = { 'mins' => \@mins,
'hours' => \@hours,
'days' => \@days,
'months' => \@months,
'weekdays' => \@weekdays };
foreach my $arr ("mins", "hours", "days", "months", "weekdays") {
# Find out which ones are being used
my %inuse;
my $min = ($arr =~ /days|months/ ? 1 : 0);
my $max = $min+scalar(@{$arrmap->{$arr}})-1;
foreach my $w (split(/,/ , $job->{$arr})) {
if ($w eq "*") {
# all values
for(my $j=$min; $j<=$max; $j++) { $inuse{$j}++; }
}
elsif ($w =~ /^\*\/(\d+)$/) {
# only every Nth
for(my $j=$min; $j<=$max; $j+=$1) { $inuse{$j}++; }
}
elsif ($w =~ /^(\d+)-(\d+)\/(\d+)$/) {
# only every Nth of some range
for(my $j=$1; $j<=$2; $j+=$3) { $inuse{int($j)}++; }
}
elsif ($w =~ /^(\d+)-(\d+)$/) {
# all of some range
for(my $j=$1; $j<=$2; $j++) { $inuse{int($j)}++; }
}
else {
# One value
$inuse{int($w)}++;
}
}
if ($job->{$arr} eq "*") { undef(%inuse); }
# Output selection list
$rv .= "<td valign=top>\n";
$rv .= sprintf
"<input type=radio name=all_$arr value=1 %s %s %s> %s<br>\n",
$arr eq "mins" && $hourly_only ? "disabled" : "",
$job->{$arr} eq "*" || $job->{$arr} eq "" ? "checked" : "",
"onClick='enable_cron_fields(\"$arr\", form, 0)'",
$text{'edit_all'};
$rv .= sprintf
"<input type=radio name=all_$arr value=0 %s %s> %s<br>\n",
$job->{$arr} eq "*" || $job->{$arr} eq "" ? "" : "checked",
"onClick='enable_cron_fields(\"$arr\", form, 1)'",
$text{'edit_selected'};
$rv .= "<table> <tr>\n";
my @arrlist = @{$arrmap->{$arr}};
for(my $j=0; $j<@arrlist; $j+=12) {
my $jj = $j + 11;
if ($jj >= @arrlist) { $jj = @arrlist - 1; }
my @sec = @arrlist[$j .. $jj];
$rv .= sprintf
"<td valign=top><select %s size=%d name=$arr %s>\n",
$arr eq "mins" && $hourly_only ? "" : "multiple",
@sec > 12 ? 12 : scalar(@sec),
$job->{$arr} eq "*" || $job->{$arr} eq "" ?
"disabled" : "";
foreach my $v (@sec) {
if ($v =~ /^(.*)=(.*)$/) { $disp = $1; $code = $2; }
else { $disp = $code = $v; }
$rv .= sprintf "<option value=\"$code\" %s>$disp</option>\n",
$inuse{$code} ? "selected" : "";
}
$rv .= "</select></td>\n";
}
$rv .= "</tr></table></td>\n";
}
$rv .= "</tr></table>\n";
return $rv;
}
=head2 parse_times_input(&job, &in)
Parses inputs from the form generated by show_times_input, and updates a cron
job hash ref. The in parameter must be a hash ref as generated by the
ReadParse function.
=cut
sub parse_times_input
{
my $job = $_[0];
my %in = %{$_[1]};
my @pers = ("mins", "hours", "days", "months", "weekdays");
if ($in{'special_def'}) {
# Job time is a special period
foreach my $arr (@pers) {
delete($job->{$arr});
}
$job->{'special'} = $in{'special'};
}
else {
# User selection of times
foreach my $arr (@pers) {
if ($in{"all_$arr"}) {
# All mins/hrs/etc.. chosen
$job->{$arr} = "*";
}
elsif (defined($in{$arr})) {
# Need to work out and simplify ranges selected
my @range = split(/\0/, $in{$arr});
my @range = sort { $a <=> $b } @range;
my @newrange;
my $start = -1;
for(my $i=0; $i<@range; $i++) {
if ($i && $range[$i]-1 == $range[$i-1]) {
# ok.. looks like a range
if ($start < 0) { $start = $i-1; }
}
elsif ($start < 0) {
# Not in a range at all
push(@newrange, $range[$i]);
}
else {
# End of the range.. add it
$newrange[@newrange - 1] =
"$range[$start]-".$range[$i-1];
push(@newrange, $range[$i]);
$start = -1;
}
}
if ($start >= 0) {
# Reached the end while in a range
$newrange[@newrange - 1] =
"$range[$start]-".$range[$i-1];
}
$job->{$arr} = join(',' , @newrange);
}
else {
&error(&text('save_enone', $text{"edit_$arr"}));
}
}
delete($job->{'special'});
}
}
1;
+34
View File
@@ -0,0 +1,34 @@
#!/usr/local/bin/perl
# Wrapper to run a single function via webmin cron
$main::no_acl_check = 1;
$main::no_referers_check = 1;
$main::webmin_script_type = 'cron';
do './webmincron-lib.pl';
$cron = $ARGV[0];
# Build list of args
my @args;
for(my $i=0; defined($cron->{'arg'.$i}); $i++) {
push(@args, $cron->{'arg'.$i});
}
# Force webmin script type to be cron
$main::webmin_script_type = 'cron';
$main::webmin_script_webmincron = $cron->{'module'}."::".$cron->{'func'};
# Require the module, call the function
eval {
local $main::error_must_die = 1;
&foreign_require($cron->{'module'}, $cron->{'file'});
&foreign_call($cron->{'module'}, $cron->{'func'}, @args);
};
$log = { %$cron };
if ($@) {
$log->{'error'} = $@;
}
# Log it, if enabled
if ($gconfig{'logsched'}) {
&webmin_log("run", "webmincron", $cron->{'id'}, $log);
}