پرش به محتوا
منوی اصلی
منوی اصلی
انتقال به نوار کناری
نهفتن
ناوبری
صفحهٔ اصلی
تغییرات اخیر
مقالهٔ تصادفی
راهنما دربارهٔ مدیاویکی
صفحههای ویژه
ویکیهزاره
جستجو
جستجو
ظاهر
ساخت حساب
ورود
ابزارهای شخصی
ساخت حساب
ورود
صفحههایی برای ویرایشگرانی که از سامانه خارج شدند
بیشتر بدانید
مشارکتها
بحث
در حال ویرایش
پودمان:Time ago
پودمان
بحث
English
خواندن
ویرایش مبدأ
نمایش تاریخچه
ابزارها
ابزارها
انتقال به نوار کناری
نهفتن
کنشها
خواندن
ویرایش مبدأ
نمایش تاریخچه
عمومی
پیوندها به این صفحه
تغییرات مرتبط
اطلاعات صفحه
ظاهر
انتقال به نوار کناری
نهفتن
هشدار:
شما وارد نشدهاید. نشانی آیپی شما برای عموم قابل مشاهده خواهد بود اگر هر تغییری ایجاد کنید. اگر
وارد شوید
یا
یک حساب کاربری بسازید
، ویرایشهایتان به نام کاربریتان نسبت داده خواهد شد، همراه با مزایای دیگر.
بررسی ضدهرزنگاری. این قسمت را پر
نکنید
!
-- Implement [[Template:Time ago]] local numConv = require('Module:Numeral converter').convert local numberSpell, yesno -- lazy load function numberSpell(arg) numberSpell = require('Module:NumberSpell')._main return numberSpell(arg) end function yesno(arg) yesno = require('Module:Yesno') return yesno(arg) end function dateConv(d) local frame = mw.getCurrentFrame() local out local isError = frame:callParserFunction( '#iferror', {frame:callParserFunction('#time', {'U', d}), 'yes', 'no' }) if yesno(isError) then out = frame:expandTemplate{title = 'تفبا', args = { d } } else out = d end return out end local p = {} -- Table to convert entered text values to numeric values. local timeText = { ['seconds'] = 1, ['ثانیه'] = 1, ['minutes'] = 60, ['دقیقه'] = 60, ['hours'] = 3600, ['ساعت'] = 3600, ['days'] = 86400, ['روز'] = 86400, ['weeks'] = 604800, ['هفته'] = 604800, ['months'] = 2629800, -- 365.25 * 24 * 60 * 60 / 12 ['ماه'] = 2629800, ['years'] = 31557600, ['سال'] = 31557600 } -- Table containing tables of possible units to use in output. local timeUnits = { [1] = { 'ثانیه', 'ثانیه', "ثانیه", "ثانیه", "ثانیه" }, [60] = { 'دقیقه', 'دقیقه', "دقیقه", "دقیقه", "دقیقه" }, [3600] = { 'ساعت', 'ساعت', "ساعت", "ساعت", "ساعت" }, [86400] = { 'روز', 'روز', "روز", "روز", "روز" }, [604800] = { 'هفته', 'هفته', "هفته", "هفته", "هفته", unit = 'w' }, [2629800] = { 'ماه', 'ماه', "ماه", "ماه", "ماه", unit = 'm' }, [31557600] = { 'سال', 'سال', "سال", "سال", "سال", unit = 'y' } } function p._main( args ) -- Initialize variables local lang = mw.language.getContentLanguage() local auto_magnitude_num local min_magnitude_num local magnitude = args.magnitude or args['قدر'] local min_magnitude = args.min_magnitude or args['قدر حداقل'] local purge = args.purge or args['پاکسازی'] -- args localization if args['پیش'] then args.ago = args['پیش'] end if args['هجی'] then args.spellout = args['هجی'] end if args['حداکثر هجی'] then args.spelloutmax = args['حداکثر هجی'] end if args['عددی'] then args.numeric = args['عددی'] end -- Add a purge link if something (usually "yes") is entered into the purge parameter if purge then purge = ' <span class="plainlinks">([' .. mw.title.getCurrentTitle():fullUrl('action=purge') .. ' پاکسازی])</span>' else purge = '' end -- Format the date provided to acceptable string (e.g. ۱۲ ژانویه ۲۰۲۲ to 12 January 2022) args[1] = dateConv(args[1]) -- Check that the entered timestamp is valid. If it isn't, then give an error message. local success, inputTime = pcall( lang.formatDate, lang, 'xnU', args[1] ) if not success then return '<strong class="error">خطا: ناتوان در تجزیهٔ پارامتر اول در قالب تاریخ یا زمان.</strong>' end -- Store the difference between the current time and the inputted time, as well as its absolute value. local timeDiff = lang:formatDate( 'xnU' ) - inputTime local absTimeDiff = math.abs( timeDiff ) if magnitude then auto_magnitude_num = 0 min_magnitude_num = timeText[magnitude] else -- Calculate the appropriate unit of time if it was not specified as an argument. local autoMagnitudeData = { { factor = 2, amn = 31557600 }, { factor = 2, amn = 2629800 }, { factor = 2, amn = 86400 }, { factor = 2, amn = 3600 }, { factor = 2, amn = 60 } } for _, t in ipairs( autoMagnitudeData ) do if absTimeDiff / t.amn >= t.factor then auto_magnitude_num = t.amn break end end auto_magnitude_num = auto_magnitude_num or 1 if min_magnitude then min_magnitude_num = timeText[min_magnitude] else min_magnitude_num = -1 end end if not min_magnitude_num then -- Default to seconds if an invalid magnitude is entered. min_magnitude_num = 1 end local result_num local magnitude_num = math.max( min_magnitude_num, auto_magnitude_num ) local unit = timeUnits[magnitude_num].unit if unit and absTimeDiff >= 864000 then local Date = require('Module:Date')._Date local input = lang:formatDate('Y-m-d H:i:s', args[1]) -- Date needs a clean date input = Date(input) if input then local id if input.hour == 0 and input.minute == 0 then id = 'currentdate' else id = 'currentdatetime' end result_num = (Date(id) - input):age(unit) end end result_num = result_num or math.floor ( absTimeDiff / magnitude_num ) local punctuation_key, suffix if timeDiff >= 0 then -- Past if result_num == 1 then punctuation_key = 1 else punctuation_key = 2 end if args.ago == '' then suffix = '' else suffix = ' ' .. (args.ago or 'پیش') end else -- Future if args.ago == '' then suffix = '' if result_num == 1 then punctuation_key = 1 else punctuation_key = 2 end else suffix = ' آینده' if result_num == 1 then punctuation_key = 3 else punctuation_key = 4 end end end local result_unit = timeUnits[ magnitude_num ][ punctuation_key ] -- Convert numerals to words if appropriate. local spell_out = args.spellout local spell_out_max = tonumber(numConv('en', args.spelloutmax)) local result_num_text if spell_out and ( ( (spell_out == 'auto' or spell_out == 'خودکار') and 1 <= result_num and result_num <= 9 and result_num <= ( spell_out_max or 9 ) ) or ( yesno( spell_out ) and 1 <= result_num and result_num <= 100 and result_num <= ( spell_out_max or 100 ) ) ) then result_num_text = numberSpell( result_num ) else result_num_text = tostring( numConv( 'fa', result_num ) ) end -- numeric or string local numeric_out = args.numeric local result = "" if numeric_out then result = tostring( numConv( 'fa', result_num ) ) else result = result_num_text .. ' ' .. result_unit .. suffix -- Spaces for suffix have been added in earlier. end return result .. purge end function p.main( frame ) local args = require( 'Module:Arguments' ).getArgs( frame, { valueFunc = function( k, v ) if v then v = mw.ustring.match( v, '^%s*(.-)%s*$' ) -- Trim whitespace. if k == 'ago' or k == 'پیش' or v ~= '' then return v end end return nil end, wrappers = { 'الگو:Time ago', 'الگو:زمان گذشته' } }) return p._main( args ) end return p
خلاصه:
لطفاً توجه داشته باشید که همهٔ مشارکتها در ویکیهزاره ممکن است توسط دیگر مشارکتکنندگان تغییر یابند، ویرایش یا حذف شوند. اگر نمیخواهید نوشتههایتان بیرحمانه ویرایش شوند؛ بنابراین، آنها را اینجا ارائه نکنید.
شما همچنین به ما تعهد میکنید که خودتان این را نوشتهاید یا آن را از یک منبع با مالکیت عمومی یا مشابه آزاد آن برداشتهاید (
ویکیهزاره:حق تکثیر
را برای جزئیات بیشتر ببینید).
کارهای دارای حق تکثیر را بدون اجازه ارائه نکنید!
لغو
راهنمای ویرایش
(در پنجرهٔ تازه باز میشود)
صفحهٔ گنحاندهشده در این صفحه:
پودمان:Time ago/توضیحات
(
ویرایش
)
جستجو
جستجو
در حال ویرایش
پودمان:Time ago
افزودن مبحث