12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139 |
- # -*- coding: utf-8 -*-
- from __future__ import absolute_import, unicode_literals
- import inspect
- import sys
- from math import trunc
- def get_locale(name):
- """Returns an appropriate :class:`Locale <arrow.locales.Locale>`
- corresponding to an inpute locale name.
- :param name: the name of the locale.
- """
- locale_cls = _locales.get(name.lower())
- if locale_cls is None:
- raise ValueError("Unsupported locale '{}'".format(name))
- return locale_cls()
- def get_locale_by_class_name(name):
- """Returns an appropriate :class:`Locale <arrow.locales.Locale>`
- corresponding to an locale class name.
- :param name: the name of the locale class.
- """
- locale_cls = globals().get(name)
- if locale_cls is None:
- raise ValueError("Unsupported locale '{}'".format(name))
- return locale_cls()
- # base locale type.
- class Locale(object):
- """ Represents locale-specific data and functionality. """
- names = []
- timeframes = {
- "now": "",
- "second": "",
- "seconds": "",
- "minute": "",
- "minutes": "",
- "hour": "",
- "hours": "",
- "day": "",
- "days": "",
- "week": "",
- "weeks": "",
- "month": "",
- "months": "",
- "year": "",
- "years": "",
- }
- meridians = {"am": "", "pm": "", "AM": "", "PM": ""}
- past = None
- future = None
- and_word = None
- month_names = []
- month_abbreviations = []
- day_names = []
- day_abbreviations = []
- ordinal_day_re = r"(\d+)"
- def __init__(self):
- self._month_name_to_ordinal = None
- def describe(self, timeframe, delta=0, only_distance=False):
- """ Describes a delta within a timeframe in plain language.
- :param timeframe: a string representing a timeframe.
- :param delta: a quantity representing a delta in a timeframe.
- :param only_distance: return only distance eg: "11 seconds" without "in" or "ago" keywords
- """
- humanized = self._format_timeframe(timeframe, delta)
- if not only_distance:
- humanized = self._format_relative(humanized, timeframe, delta)
- return humanized
- def describe_multi(self, timeframes, only_distance=False):
- """ Describes a delta within multiple timeframes in plain language.
- :param timeframes: a list of string, quantity pairs each representing a timeframe and delta.
- :param only_distance: return only distance eg: "2 hours and 11 seconds" without "in" or "ago" keywords
- """
- humanized = ""
- for index, (timeframe, delta) in enumerate(timeframes):
- humanized += self._format_timeframe(timeframe, delta)
- if index == len(timeframes) - 2 and self.and_word:
- humanized += " " + self.and_word + " "
- elif index < len(timeframes) - 1:
- humanized += " "
- if not only_distance:
- humanized = self._format_relative(humanized, timeframe, delta)
- return humanized
- def day_name(self, day):
- """ Returns the day name for a specified day of the week.
- :param day: the ``int`` day of the week (1-7).
- """
- return self.day_names[day]
- def day_abbreviation(self, day):
- """ Returns the day abbreviation for a specified day of the week.
- :param day: the ``int`` day of the week (1-7).
- """
- return self.day_abbreviations[day]
- def month_name(self, month):
- """ Returns the month name for a specified month of the year.
- :param month: the ``int`` month of the year (1-12).
- """
- return self.month_names[month]
- def month_abbreviation(self, month):
- """ Returns the month abbreviation for a specified month of the year.
- :param month: the ``int`` month of the year (1-12).
- """
- return self.month_abbreviations[month]
- def month_number(self, name):
- """ Returns the month number for a month specified by name or abbreviation.
- :param name: the month name or abbreviation.
- """
- if self._month_name_to_ordinal is None:
- self._month_name_to_ordinal = self._name_to_ordinal(self.month_names)
- self._month_name_to_ordinal.update(
- self._name_to_ordinal(self.month_abbreviations)
- )
- return self._month_name_to_ordinal.get(name)
- def year_full(self, year):
- """ Returns the year for specific locale if available
- :param name: the ``int`` year (4-digit)
- """
- return "{:04d}".format(year)
- def year_abbreviation(self, year):
- """ Returns the year for specific locale if available
- :param name: the ``int`` year (4-digit)
- """
- return "{:04d}".format(year)[2:]
- def meridian(self, hour, token):
- """ Returns the meridian indicator for a specified hour and format token.
- :param hour: the ``int`` hour of the day.
- :param token: the format token.
- """
- if token == "a":
- return self.meridians["am"] if hour < 12 else self.meridians["pm"]
- if token == "A":
- return self.meridians["AM"] if hour < 12 else self.meridians["PM"]
- def ordinal_number(self, n):
- """ Returns the ordinal format of a given integer
- :param n: an integer
- """
- return self._ordinal_number(n)
- def _ordinal_number(self, n):
- return "{}".format(n)
- def _name_to_ordinal(self, lst):
- return dict(map(lambda i: (i[1].lower(), i[0] + 1), enumerate(lst[1:])))
- def _format_timeframe(self, timeframe, delta):
- return self.timeframes[timeframe].format(trunc(abs(delta)))
- def _format_relative(self, humanized, timeframe, delta):
- if timeframe == "now":
- return humanized
- direction = self.past if delta < 0 else self.future
- return direction.format(humanized)
- # base locale type implementations.
- class EnglishLocale(Locale):
- names = [
- "en",
- "en_us",
- "en_gb",
- "en_au",
- "en_be",
- "en_jp",
- "en_za",
- "en_ca",
- "en_ph",
- ]
- past = "{0} ago"
- future = "in {0}"
- and_word = "and"
- timeframes = {
- "now": "just now",
- "second": "a second",
- "seconds": "{0} seconds",
- "minute": "a minute",
- "minutes": "{0} minutes",
- "hour": "an hour",
- "hours": "{0} hours",
- "day": "a day",
- "days": "{0} days",
- "week": "a week",
- "weeks": "{0} weeks",
- "month": "a month",
- "months": "{0} months",
- "year": "a year",
- "years": "{0} years",
- }
- meridians = {"am": "am", "pm": "pm", "AM": "AM", "PM": "PM"}
- month_names = [
- "",
- "January",
- "February",
- "March",
- "April",
- "May",
- "June",
- "July",
- "August",
- "September",
- "October",
- "November",
- "December",
- ]
- month_abbreviations = [
- "",
- "Jan",
- "Feb",
- "Mar",
- "Apr",
- "May",
- "Jun",
- "Jul",
- "Aug",
- "Sep",
- "Oct",
- "Nov",
- "Dec",
- ]
- day_names = [
- "",
- "Monday",
- "Tuesday",
- "Wednesday",
- "Thursday",
- "Friday",
- "Saturday",
- "Sunday",
- ]
- day_abbreviations = ["", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
- ordinal_day_re = r"((?P<value>[2-3]?1(?=st)|[2-3]?2(?=nd)|[2-3]?3(?=rd)|[1-3]?[04-9](?=th)|1[1-3](?=th))(st|nd|rd|th))"
- def _ordinal_number(self, n):
- if n % 100 not in (11, 12, 13):
- remainder = abs(n) % 10
- if remainder == 1:
- return "{}st".format(n)
- elif remainder == 2:
- return "{}nd".format(n)
- elif remainder == 3:
- return "{}rd".format(n)
- return "{}th".format(n)
- def describe(self, timeframe, delta=0, only_distance=False):
- """ Describes a delta within a timeframe in plain language.
- :param timeframe: a string representing a timeframe.
- :param delta: a quantity representing a delta in a timeframe.
- :param only_distance: return only distance eg: "11 seconds" without "in" or "ago" keywords
- """
- humanized = super(EnglishLocale, self).describe(timeframe, delta, only_distance)
- if only_distance and timeframe == "now":
- humanized = "instantly"
- return humanized
- class ItalianLocale(Locale):
- names = ["it", "it_it"]
- past = "{0} fa"
- future = "tra {0}"
- and_word = "e"
- timeframes = {
- "now": "adesso",
- "second": "un secondo",
- "seconds": "{0} qualche secondo",
- "minute": "un minuto",
- "minutes": "{0} minuti",
- "hour": "un'ora",
- "hours": "{0} ore",
- "day": "un giorno",
- "days": "{0} giorni",
- "week": "una settimana,",
- "weeks": "{0} settimane",
- "month": "un mese",
- "months": "{0} mesi",
- "year": "un anno",
- "years": "{0} anni",
- }
- month_names = [
- "",
- "gennaio",
- "febbraio",
- "marzo",
- "aprile",
- "maggio",
- "giugno",
- "luglio",
- "agosto",
- "settembre",
- "ottobre",
- "novembre",
- "dicembre",
- ]
- month_abbreviations = [
- "",
- "gen",
- "feb",
- "mar",
- "apr",
- "mag",
- "giu",
- "lug",
- "ago",
- "set",
- "ott",
- "nov",
- "dic",
- ]
- day_names = [
- "",
- "lunedì",
- "martedì",
- "mercoledì",
- "giovedì",
- "venerdì",
- "sabato",
- "domenica",
- ]
- day_abbreviations = ["", "lun", "mar", "mer", "gio", "ven", "sab", "dom"]
- ordinal_day_re = r"((?P<value>[1-3]?[0-9](?=[ºª]))[ºª])"
- def _ordinal_number(self, n):
- return "{}º".format(n)
- class SpanishLocale(Locale):
- names = ["es", "es_es"]
- past = "hace {0}"
- future = "en {0}"
- and_word = "y"
- timeframes = {
- "now": "ahora",
- "second": "un segundo",
- "seconds": "{0} segundos",
- "minute": "un minuto",
- "minutes": "{0} minutos",
- "hour": "una hora",
- "hours": "{0} horas",
- "day": "un día",
- "days": "{0} días",
- "week": "una semana",
- "weeks": "{0} semanas",
- "month": "un mes",
- "months": "{0} meses",
- "year": "un año",
- "years": "{0} años",
- }
- meridians = {"am": "am", "pm": "pm", "AM": "AM", "PM": "PM"}
- month_names = [
- "",
- "enero",
- "febrero",
- "marzo",
- "abril",
- "mayo",
- "junio",
- "julio",
- "agosto",
- "septiembre",
- "octubre",
- "noviembre",
- "diciembre",
- ]
- month_abbreviations = [
- "",
- "ene",
- "feb",
- "mar",
- "abr",
- "may",
- "jun",
- "jul",
- "ago",
- "sep",
- "oct",
- "nov",
- "dic",
- ]
- day_names = [
- "",
- "lunes",
- "martes",
- "miércoles",
- "jueves",
- "viernes",
- "sábado",
- "domingo",
- ]
- day_abbreviations = ["", "lun", "mar", "mie", "jue", "vie", "sab", "dom"]
- ordinal_day_re = r"((?P<value>[1-3]?[0-9](?=[ºª]))[ºª])"
- def _ordinal_number(self, n):
- return "{}º".format(n)
- class FrenchLocale(Locale):
- names = ["fr", "fr_fr"]
- past = "il y a {0}"
- future = "dans {0}"
- and_word = "et"
- timeframes = {
- "now": "maintenant",
- "second": "une seconde",
- "seconds": "{0} quelques secondes",
- "minute": "une minute",
- "minutes": "{0} minutes",
- "hour": "une heure",
- "hours": "{0} heures",
- "day": "un jour",
- "days": "{0} jours",
- "week": "une semaine",
- "weeks": "{0} semaines",
- "month": "un mois",
- "months": "{0} mois",
- "year": "un an",
- "years": "{0} ans",
- }
- month_names = [
- "",
- "janvier",
- "février",
- "mars",
- "avril",
- "mai",
- "juin",
- "juillet",
- "août",
- "septembre",
- "octobre",
- "novembre",
- "décembre",
- ]
- month_abbreviations = [
- "",
- "janv",
- "févr",
- "mars",
- "avr",
- "mai",
- "juin",
- "juil",
- "août",
- "sept",
- "oct",
- "nov",
- "déc",
- ]
- day_names = [
- "",
- "lundi",
- "mardi",
- "mercredi",
- "jeudi",
- "vendredi",
- "samedi",
- "dimanche",
- ]
- day_abbreviations = ["", "lun", "mar", "mer", "jeu", "ven", "sam", "dim"]
- ordinal_day_re = (
- r"((?P<value>\b1(?=er\b)|[1-3]?[02-9](?=e\b)|[1-3]1(?=e\b))(er|e)\b)"
- )
- def _ordinal_number(self, n):
- if abs(n) == 1:
- return "{}er".format(n)
- return "{}e".format(n)
- class GreekLocale(Locale):
- names = ["el", "el_gr"]
- past = "{0} πριν"
- future = "σε {0}"
- and_word = "και"
- timeframes = {
- "now": "τώρα",
- "second": "ένα δεύτερο",
- "seconds": "{0} δευτερόλεπτα",
- "minute": "ένα λεπτό",
- "minutes": "{0} λεπτά",
- "hour": "μία ώρα",
- "hours": "{0} ώρες",
- "day": "μία μέρα",
- "days": "{0} μέρες",
- "month": "ένα μήνα",
- "months": "{0} μήνες",
- "year": "ένα χρόνο",
- "years": "{0} χρόνια",
- }
- month_names = [
- "",
- "Ιανουαρίου",
- "Φεβρουαρίου",
- "Μαρτίου",
- "Απριλίου",
- "Μαΐου",
- "Ιουνίου",
- "Ιουλίου",
- "Αυγούστου",
- "Σεπτεμβρίου",
- "Οκτωβρίου",
- "Νοεμβρίου",
- "Δεκεμβρίου",
- ]
- month_abbreviations = [
- "",
- "Ιαν",
- "Φεβ",
- "Μαρ",
- "Απρ",
- "Μαϊ",
- "Ιον",
- "Ιολ",
- "Αυγ",
- "Σεπ",
- "Οκτ",
- "Νοε",
- "Δεκ",
- ]
- day_names = [
- "",
- "Δευτέρα",
- "Τρίτη",
- "Τετάρτη",
- "Πέμπτη",
- "Παρασκευή",
- "Σάββατο",
- "Κυριακή",
- ]
- day_abbreviations = ["", "Δευ", "Τρι", "Τετ", "Πεμ", "Παρ", "Σαβ", "Κυρ"]
- class JapaneseLocale(Locale):
- names = ["ja", "ja_jp"]
- past = "{0}前"
- future = "{0}後"
- timeframes = {
- "now": "現在",
- "second": "二番目の",
- "seconds": "{0}数秒",
- "minute": "1分",
- "minutes": "{0}分",
- "hour": "1時間",
- "hours": "{0}時間",
- "day": "1日",
- "days": "{0}日",
- "week": "1週間",
- "weeks": "{0}週間",
- "month": "1ヶ月",
- "months": "{0}ヶ月",
- "year": "1年",
- "years": "{0}年",
- }
- month_names = [
- "",
- "1月",
- "2月",
- "3月",
- "4月",
- "5月",
- "6月",
- "7月",
- "8月",
- "9月",
- "10月",
- "11月",
- "12月",
- ]
- month_abbreviations = [
- "",
- " 1",
- " 2",
- " 3",
- " 4",
- " 5",
- " 6",
- " 7",
- " 8",
- " 9",
- "10",
- "11",
- "12",
- ]
- day_names = ["", "月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日", "日曜日"]
- day_abbreviations = ["", "月", "火", "水", "木", "金", "土", "日"]
- class SwedishLocale(Locale):
- names = ["sv", "sv_se"]
- past = "för {0} sen"
- future = "om {0}"
- and_word = "och"
- timeframes = {
- "now": "just nu",
- "second": "en sekund",
- "seconds": "{0} några sekunder",
- "minute": "en minut",
- "minutes": "{0} minuter",
- "hour": "en timme",
- "hours": "{0} timmar",
- "day": "en dag",
- "days": "{0} dagar",
- "month": "en månad",
- "months": "{0} månader",
- "year": "ett år",
- "years": "{0} år",
- }
- month_names = [
- "",
- "januari",
- "februari",
- "mars",
- "april",
- "maj",
- "juni",
- "juli",
- "augusti",
- "september",
- "oktober",
- "november",
- "december",
- ]
- month_abbreviations = [
- "",
- "jan",
- "feb",
- "mar",
- "apr",
- "maj",
- "jun",
- "jul",
- "aug",
- "sep",
- "okt",
- "nov",
- "dec",
- ]
- day_names = [
- "",
- "måndag",
- "tisdag",
- "onsdag",
- "torsdag",
- "fredag",
- "lördag",
- "söndag",
- ]
- day_abbreviations = ["", "mån", "tis", "ons", "tor", "fre", "lör", "sön"]
- class FinnishLocale(Locale):
- names = ["fi", "fi_fi"]
- # The finnish grammar is very complex, and its hard to convert
- # 1-to-1 to something like English.
- past = "{0} sitten"
- future = "{0} kuluttua"
- timeframes = {
- "now": ["juuri nyt", "juuri nyt"],
- "second": ["sekunti", "sekunti"],
- "seconds": ["{0} muutama sekunti", "{0} muutaman sekunnin"],
- "minute": ["minuutti", "minuutin"],
- "minutes": ["{0} minuuttia", "{0} minuutin"],
- "hour": ["tunti", "tunnin"],
- "hours": ["{0} tuntia", "{0} tunnin"],
- "day": ["päivä", "päivä"],
- "days": ["{0} päivää", "{0} päivän"],
- "month": ["kuukausi", "kuukauden"],
- "months": ["{0} kuukautta", "{0} kuukauden"],
- "year": ["vuosi", "vuoden"],
- "years": ["{0} vuotta", "{0} vuoden"],
- }
- # Months and days are lowercase in Finnish
- month_names = [
- "",
- "tammikuu",
- "helmikuu",
- "maaliskuu",
- "huhtikuu",
- "toukokuu",
- "kesäkuu",
- "heinäkuu",
- "elokuu",
- "syyskuu",
- "lokakuu",
- "marraskuu",
- "joulukuu",
- ]
- month_abbreviations = [
- "",
- "tammi",
- "helmi",
- "maalis",
- "huhti",
- "touko",
- "kesä",
- "heinä",
- "elo",
- "syys",
- "loka",
- "marras",
- "joulu",
- ]
- day_names = [
- "",
- "maanantai",
- "tiistai",
- "keskiviikko",
- "torstai",
- "perjantai",
- "lauantai",
- "sunnuntai",
- ]
- day_abbreviations = ["", "ma", "ti", "ke", "to", "pe", "la", "su"]
- def _format_timeframe(self, timeframe, delta):
- return (
- self.timeframes[timeframe][0].format(abs(delta)),
- self.timeframes[timeframe][1].format(abs(delta)),
- )
- def _format_relative(self, humanized, timeframe, delta):
- if timeframe == "now":
- return humanized[0]
- direction = self.past if delta < 0 else self.future
- which = 0 if delta < 0 else 1
- return direction.format(humanized[which])
- def _ordinal_number(self, n):
- return "{}.".format(n)
- class ChineseCNLocale(Locale):
- names = ["zh", "zh_cn"]
- past = "{0}前"
- future = "{0}后"
- timeframes = {
- "now": "刚才",
- "second": "一秒",
- "seconds": "{0}秒",
- "minute": "1分钟",
- "minutes": "{0}分钟",
- "hour": "1小时",
- "hours": "{0}小时",
- "day": "1天",
- "days": "{0}天",
- "week": "一周",
- "weeks": "{0}周",
- "month": "1个月",
- "months": "{0}个月",
- "year": "1年",
- "years": "{0}年",
- }
- month_names = [
- "",
- "一月",
- "二月",
- "三月",
- "四月",
- "五月",
- "六月",
- "七月",
- "八月",
- "九月",
- "十月",
- "十一月",
- "十二月",
- ]
- month_abbreviations = [
- "",
- " 1",
- " 2",
- " 3",
- " 4",
- " 5",
- " 6",
- " 7",
- " 8",
- " 9",
- "10",
- "11",
- "12",
- ]
- day_names = ["", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"]
- day_abbreviations = ["", "一", "二", "三", "四", "五", "六", "日"]
- class ChineseTWLocale(Locale):
- names = ["zh_tw"]
- past = "{0}前"
- future = "{0}後"
- and_word = "和"
- timeframes = {
- "now": "剛才",
- "second": "1秒",
- "seconds": "{0}秒",
- "minute": "1分鐘",
- "minutes": "{0}分鐘",
- "hour": "1小時",
- "hours": "{0}小時",
- "day": "1天",
- "days": "{0}天",
- "week": "1週",
- "weeks": "{0}週",
- "month": "1個月",
- "months": "{0}個月",
- "year": "1年",
- "years": "{0}年",
- }
- month_names = [
- "",
- "1月",
- "2月",
- "3月",
- "4月",
- "5月",
- "6月",
- "7月",
- "8月",
- "9月",
- "10月",
- "11月",
- "12月",
- ]
- month_abbreviations = [
- "",
- " 1",
- " 2",
- " 3",
- " 4",
- " 5",
- " 6",
- " 7",
- " 8",
- " 9",
- "10",
- "11",
- "12",
- ]
- day_names = ["", "週一", "週二", "週三", "週四", "週五", "週六", "週日"]
- day_abbreviations = ["", "一", "二", "三", "四", "五", "六", "日"]
- class HongKongLocale(Locale):
- names = ["zh_hk"]
- past = "{0}前"
- future = "{0}後"
- timeframes = {
- "now": "剛才",
- "second": "1秒",
- "seconds": "{0}秒",
- "minute": "1分鐘",
- "minutes": "{0}分鐘",
- "hour": "1小時",
- "hours": "{0}小時",
- "day": "1天",
- "days": "{0}天",
- "week": "1星期",
- "weeks": "{0}星期",
- "month": "1個月",
- "months": "{0}個月",
- "year": "1年",
- "years": "{0}年",
- }
- month_names = [
- "",
- "1月",
- "2月",
- "3月",
- "4月",
- "5月",
- "6月",
- "7月",
- "8月",
- "9月",
- "10月",
- "11月",
- "12月",
- ]
- month_abbreviations = [
- "",
- " 1",
- " 2",
- " 3",
- " 4",
- " 5",
- " 6",
- " 7",
- " 8",
- " 9",
- "10",
- "11",
- "12",
- ]
- day_names = ["", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"]
- day_abbreviations = ["", "一", "二", "三", "四", "五", "六", "日"]
- class KoreanLocale(Locale):
- names = ["ko", "ko_kr"]
- past = "{0} 전"
- future = "{0} 후"
- timeframes = {
- "now": "지금",
- "second": "두 번째",
- "seconds": "{0}몇 초",
- "minute": "1분",
- "minutes": "{0}분",
- "hour": "1시간",
- "hours": "{0}시간",
- "day": "1일",
- "days": "{0}일",
- "month": "1개월",
- "months": "{0}개월",
- "year": "1년",
- "years": "{0}년",
- }
- month_names = [
- "",
- "1월",
- "2월",
- "3월",
- "4월",
- "5월",
- "6월",
- "7월",
- "8월",
- "9월",
- "10월",
- "11월",
- "12월",
- ]
- month_abbreviations = [
- "",
- " 1",
- " 2",
- " 3",
- " 4",
- " 5",
- " 6",
- " 7",
- " 8",
- " 9",
- "10",
- "11",
- "12",
- ]
- day_names = ["", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일", "일요일"]
- day_abbreviations = ["", "월", "화", "수", "목", "금", "토", "일"]
- # derived locale types & implementations.
- class DutchLocale(Locale):
- names = ["nl", "nl_nl"]
- past = "{0} geleden"
- future = "over {0}"
- timeframes = {
- "now": "nu",
- "second": "een seconde",
- "seconds": "{0} seconden",
- "minute": "een minuut",
- "minutes": "{0} minuten",
- "hour": "een uur",
- "hours": "{0} uur",
- "day": "een dag",
- "days": "{0} dagen",
- "week": "een week",
- "weeks": "{0} weken",
- "month": "een maand",
- "months": "{0} maanden",
- "year": "een jaar",
- "years": "{0} jaar",
- }
- # In Dutch names of months and days are not starting with a capital letter
- # like in the English language.
- month_names = [
- "",
- "januari",
- "februari",
- "maart",
- "april",
- "mei",
- "juni",
- "juli",
- "augustus",
- "september",
- "oktober",
- "november",
- "december",
- ]
- month_abbreviations = [
- "",
- "jan",
- "feb",
- "mrt",
- "apr",
- "mei",
- "jun",
- "jul",
- "aug",
- "sep",
- "okt",
- "nov",
- "dec",
- ]
- day_names = [
- "",
- "maandag",
- "dinsdag",
- "woensdag",
- "donderdag",
- "vrijdag",
- "zaterdag",
- "zondag",
- ]
- day_abbreviations = ["", "ma", "di", "wo", "do", "vr", "za", "zo"]
- class SlavicBaseLocale(Locale):
- def _format_timeframe(self, timeframe, delta):
- form = self.timeframes[timeframe]
- delta = abs(delta)
- if isinstance(form, list):
- if delta % 10 == 1 and delta % 100 != 11:
- form = form[0]
- elif 2 <= delta % 10 <= 4 and (delta % 100 < 10 or delta % 100 >= 20):
- form = form[1]
- else:
- form = form[2]
- return form.format(delta)
- class BelarusianLocale(SlavicBaseLocale):
- names = ["be", "be_by"]
- past = "{0} таму"
- future = "праз {0}"
- timeframes = {
- "now": "зараз",
- "second": "секунду",
- "seconds": "{0} некалькі секунд",
- "minute": "хвіліну",
- "minutes": ["{0} хвіліну", "{0} хвіліны", "{0} хвілін"],
- "hour": "гадзіну",
- "hours": ["{0} гадзіну", "{0} гадзіны", "{0} гадзін"],
- "day": "дзень",
- "days": ["{0} дзень", "{0} дні", "{0} дзён"],
- "month": "месяц",
- "months": ["{0} месяц", "{0} месяцы", "{0} месяцаў"],
- "year": "год",
- "years": ["{0} год", "{0} гады", "{0} гадоў"],
- }
- month_names = [
- "",
- "студзеня",
- "лютага",
- "сакавіка",
- "красавіка",
- "траўня",
- "чэрвеня",
- "ліпеня",
- "жніўня",
- "верасня",
- "кастрычніка",
- "лістапада",
- "снежня",
- ]
- month_abbreviations = [
- "",
- "студ",
- "лют",
- "сак",
- "крас",
- "трав",
- "чэрв",
- "ліп",
- "жнів",
- "вер",
- "каст",
- "ліст",
- "снеж",
- ]
- day_names = [
- "",
- "панядзелак",
- "аўторак",
- "серада",
- "чацвер",
- "пятніца",
- "субота",
- "нядзеля",
- ]
- day_abbreviations = ["", "пн", "ат", "ср", "чц", "пт", "сб", "нд"]
- class PolishLocale(SlavicBaseLocale):
- names = ["pl", "pl_pl"]
- past = "{0} temu"
- future = "za {0}"
- # The nouns should be in genitive case (Polish: "dopełniacz")
- # in order to correctly form `past` & `future` expressions.
- timeframes = {
- "now": "teraz",
- "second": "sekundę",
- "seconds": ["{0} sekund", "{0} sekundy", "{0} sekund"],
- "minute": "minutę",
- "minutes": ["{0} minut", "{0} minuty", "{0} minut"],
- "hour": "godzinę",
- "hours": ["{0} godzin", "{0} godziny", "{0} godzin"],
- "day": "dzień",
- "days": "{0} dni",
- "week": "tydzień",
- "weeks": ["{0} tygodni", "{0} tygodnie", "{0} tygodni"],
- "month": "miesiąc",
- "months": ["{0} miesięcy", "{0} miesiące", "{0} miesięcy"],
- "year": "rok",
- "years": ["{0} lat", "{0} lata", "{0} lat"],
- }
- month_names = [
- "",
- "styczeń",
- "luty",
- "marzec",
- "kwiecień",
- "maj",
- "czerwiec",
- "lipiec",
- "sierpień",
- "wrzesień",
- "październik",
- "listopad",
- "grudzień",
- ]
- month_abbreviations = [
- "",
- "sty",
- "lut",
- "mar",
- "kwi",
- "maj",
- "cze",
- "lip",
- "sie",
- "wrz",
- "paź",
- "lis",
- "gru",
- ]
- day_names = [
- "",
- "poniedziałek",
- "wtorek",
- "środa",
- "czwartek",
- "piątek",
- "sobota",
- "niedziela",
- ]
- day_abbreviations = ["", "Pn", "Wt", "Śr", "Czw", "Pt", "So", "Nd"]
- class RussianLocale(SlavicBaseLocale):
- names = ["ru", "ru_ru"]
- past = "{0} назад"
- future = "через {0}"
- timeframes = {
- "now": "сейчас",
- "second": "Второй",
- "seconds": "{0} несколько секунд",
- "minute": "минуту",
- "minutes": ["{0} минуту", "{0} минуты", "{0} минут"],
- "hour": "час",
- "hours": ["{0} час", "{0} часа", "{0} часов"],
- "day": "день",
- "days": ["{0} день", "{0} дня", "{0} дней"],
- "week": "неделю",
- "weeks": ["{0} неделю", "{0} недели", "{0} недель"],
- "month": "месяц",
- "months": ["{0} месяц", "{0} месяца", "{0} месяцев"],
- "year": "год",
- "years": ["{0} год", "{0} года", "{0} лет"],
- }
- month_names = [
- "",
- "января",
- "февраля",
- "марта",
- "апреля",
- "мая",
- "июня",
- "июля",
- "августа",
- "сентября",
- "октября",
- "ноября",
- "декабря",
- ]
- month_abbreviations = [
- "",
- "янв",
- "фев",
- "мар",
- "апр",
- "май",
- "июн",
- "июл",
- "авг",
- "сен",
- "окт",
- "ноя",
- "дек",
- ]
- day_names = [
- "",
- "понедельник",
- "вторник",
- "среда",
- "четверг",
- "пятница",
- "суббота",
- "воскресенье",
- ]
- day_abbreviations = ["", "пн", "вт", "ср", "чт", "пт", "сб", "вс"]
- class AfrikaansLocale(Locale):
- names = ["af", "af_nl"]
- past = "{0} gelede"
- future = "in {0}"
- timeframes = {
- "now": "nou",
- "second": "n sekonde",
- "seconds": "{0} sekondes",
- "minute": "minuut",
- "minutes": "{0} minute",
- "hour": "uur",
- "hours": "{0} ure",
- "day": "een dag",
- "days": "{0} dae",
- "month": "een maand",
- "months": "{0} maande",
- "year": "een jaar",
- "years": "{0} jaar",
- }
- month_names = [
- "",
- "Januarie",
- "Februarie",
- "Maart",
- "April",
- "Mei",
- "Junie",
- "Julie",
- "Augustus",
- "September",
- "Oktober",
- "November",
- "Desember",
- ]
- month_abbreviations = [
- "",
- "Jan",
- "Feb",
- "Mrt",
- "Apr",
- "Mei",
- "Jun",
- "Jul",
- "Aug",
- "Sep",
- "Okt",
- "Nov",
- "Des",
- ]
- day_names = [
- "",
- "Maandag",
- "Dinsdag",
- "Woensdag",
- "Donderdag",
- "Vrydag",
- "Saterdag",
- "Sondag",
- ]
- day_abbreviations = ["", "Ma", "Di", "Wo", "Do", "Vr", "Za", "So"]
- class BulgarianLocale(SlavicBaseLocale):
- names = ["bg", "bg_BG"]
- past = "{0} назад"
- future = "напред {0}"
- timeframes = {
- "now": "сега",
- "second": "секунда",
- "seconds": "{0} няколко секунди",
- "minute": "минута",
- "minutes": ["{0} минута", "{0} минути", "{0} минути"],
- "hour": "час",
- "hours": ["{0} час", "{0} часа", "{0} часа"],
- "day": "ден",
- "days": ["{0} ден", "{0} дни", "{0} дни"],
- "month": "месец",
- "months": ["{0} месец", "{0} месеца", "{0} месеца"],
- "year": "година",
- "years": ["{0} година", "{0} години", "{0} години"],
- }
- month_names = [
- "",
- "януари",
- "февруари",
- "март",
- "април",
- "май",
- "юни",
- "юли",
- "август",
- "септември",
- "октомври",
- "ноември",
- "декември",
- ]
- month_abbreviations = [
- "",
- "ян",
- "февр",
- "март",
- "апр",
- "май",
- "юни",
- "юли",
- "авг",
- "септ",
- "окт",
- "ноем",
- "дек",
- ]
- day_names = [
- "",
- "понеделник",
- "вторник",
- "сряда",
- "четвъртък",
- "петък",
- "събота",
- "неделя",
- ]
- day_abbreviations = ["", "пон", "вт", "ср", "четв", "пет", "съб", "нед"]
- class UkrainianLocale(SlavicBaseLocale):
- names = ["ua", "uk_ua"]
- past = "{0} тому"
- future = "за {0}"
- timeframes = {
- "now": "зараз",
- "second": "секунда",
- "seconds": "{0} кілька секунд",
- "minute": "хвилину",
- "minutes": ["{0} хвилину", "{0} хвилини", "{0} хвилин"],
- "hour": "годину",
- "hours": ["{0} годину", "{0} години", "{0} годин"],
- "day": "день",
- "days": ["{0} день", "{0} дні", "{0} днів"],
- "month": "місяць",
- "months": ["{0} місяць", "{0} місяці", "{0} місяців"],
- "year": "рік",
- "years": ["{0} рік", "{0} роки", "{0} років"],
- }
- month_names = [
- "",
- "січня",
- "лютого",
- "березня",
- "квітня",
- "травня",
- "червня",
- "липня",
- "серпня",
- "вересня",
- "жовтня",
- "листопада",
- "грудня",
- ]
- month_abbreviations = [
- "",
- "січ",
- "лют",
- "бер",
- "квіт",
- "трав",
- "черв",
- "лип",
- "серп",
- "вер",
- "жовт",
- "лист",
- "груд",
- ]
- day_names = [
- "",
- "понеділок",
- "вівторок",
- "середа",
- "четвер",
- "п’ятниця",
- "субота",
- "неділя",
- ]
- day_abbreviations = ["", "пн", "вт", "ср", "чт", "пт", "сб", "нд"]
- class MacedonianLocale(SlavicBaseLocale):
- names = ["mk", "mk_mk"]
- past = "пред {0}"
- future = "за {0}"
- timeframes = {
- "now": "сега",
- "second": "секунда",
- "seconds": "{0} секунди",
- "minute": "една минута",
- "minutes": ["{0} минута", "{0} минути", "{0} минути"],
- "hour": "еден саат",
- "hours": ["{0} саат", "{0} саати", "{0} саати"],
- "day": "еден ден",
- "days": ["{0} ден", "{0} дена", "{0} дена"],
- "month": "еден месец",
- "months": ["{0} месец", "{0} месеци", "{0} месеци"],
- "year": "една година",
- "years": ["{0} година", "{0} години", "{0} години"],
- }
- meridians = {"am": "дп", "pm": "пп", "AM": "претпладне", "PM": "попладне"}
- month_names = [
- "",
- "Јануари",
- "Февруари",
- "Март",
- "Април",
- "Мај",
- "Јуни",
- "Јули",
- "Август",
- "Септември",
- "Октомври",
- "Ноември",
- "Декември",
- ]
- month_abbreviations = [
- "",
- "Јан.",
- " Фев.",
- " Мар.",
- " Апр.",
- " Мај",
- " Јун.",
- " Јул.",
- " Авг.",
- " Септ.",
- " Окт.",
- " Ноем.",
- " Декем.",
- ]
- day_names = [
- "",
- "Понеделник",
- " Вторник",
- " Среда",
- " Четврток",
- " Петок",
- " Сабота",
- " Недела",
- ]
- day_abbreviations = [
- "",
- "Пон.",
- " Вт.",
- " Сре.",
- " Чет.",
- " Пет.",
- " Саб.",
- " Нед.",
- ]
- class GermanBaseLocale(Locale):
- past = "vor {0}"
- future = "in {0}"
- and_word = "und"
- timeframes = {
- "now": "gerade eben",
- "second": "eine Sekunde",
- "seconds": "{0} Sekunden",
- "minute": "einer Minute",
- "minutes": "{0} Minuten",
- "hour": "einer Stunde",
- "hours": "{0} Stunden",
- "day": "einem Tag",
- "days": "{0} Tagen",
- "week": "einer Woche",
- "weeks": "{0} Wochen",
- "month": "einem Monat",
- "months": "{0} Monaten",
- "year": "einem Jahr",
- "years": "{0} Jahren",
- }
- timeframes_only_distance = timeframes.copy()
- timeframes_only_distance["minute"] = "eine Minute"
- timeframes_only_distance["hour"] = "eine Stunde"
- timeframes_only_distance["day"] = "ein Tag"
- timeframes_only_distance["week"] = "eine Woche"
- timeframes_only_distance["month"] = "ein Monat"
- timeframes_only_distance["year"] = "ein Jahr"
- month_names = [
- "",
- "Januar",
- "Februar",
- "März",
- "April",
- "Mai",
- "Juni",
- "Juli",
- "August",
- "September",
- "Oktober",
- "November",
- "Dezember",
- ]
- month_abbreviations = [
- "",
- "Jan",
- "Feb",
- "Mär",
- "Apr",
- "Mai",
- "Jun",
- "Jul",
- "Aug",
- "Sep",
- "Okt",
- "Nov",
- "Dez",
- ]
- day_names = [
- "",
- "Montag",
- "Dienstag",
- "Mittwoch",
- "Donnerstag",
- "Freitag",
- "Samstag",
- "Sonntag",
- ]
- day_abbreviations = ["", "Mo", "Di", "Mi", "Do", "Fr", "Sa", "So"]
- def _ordinal_number(self, n):
- return "{}.".format(n)
- def describe(self, timeframe, delta=0, only_distance=False):
- """ Describes a delta within a timeframe in plain language.
- :param timeframe: a string representing a timeframe.
- :param delta: a quantity representing a delta in a timeframe.
- :param only_distance: return only distance eg: "11 seconds" without "in" or "ago" keywords
- """
- if not only_distance:
- return super(GermanBaseLocale, self).describe(
- timeframe, delta, only_distance
- )
- # German uses a different case without 'in' or 'ago'
- humanized = self.timeframes_only_distance[timeframe].format(trunc(abs(delta)))
- return humanized
- class GermanLocale(GermanBaseLocale, Locale):
- names = ["de", "de_de"]
- class SwissLocale(GermanBaseLocale, Locale):
- names = ["de_ch"]
- class AustrianLocale(GermanBaseLocale, Locale):
- names = ["de_at"]
- month_names = [
- "",
- "Jänner",
- "Februar",
- "März",
- "April",
- "Mai",
- "Juni",
- "Juli",
- "August",
- "September",
- "Oktober",
- "November",
- "Dezember",
- ]
- class NorwegianLocale(Locale):
- names = ["nb", "nb_no"]
- past = "for {0} siden"
- future = "om {0}"
- timeframes = {
- "now": "nå nettopp",
- "second": "et sekund",
- "seconds": "{0} noen sekunder",
- "minute": "ett minutt",
- "minutes": "{0} minutter",
- "hour": "en time",
- "hours": "{0} timer",
- "day": "en dag",
- "days": "{0} dager",
- "month": "en måned",
- "months": "{0} måneder",
- "year": "ett år",
- "years": "{0} år",
- }
- month_names = [
- "",
- "januar",
- "februar",
- "mars",
- "april",
- "mai",
- "juni",
- "juli",
- "august",
- "september",
- "oktober",
- "november",
- "desember",
- ]
- month_abbreviations = [
- "",
- "jan",
- "feb",
- "mar",
- "apr",
- "mai",
- "jun",
- "jul",
- "aug",
- "sep",
- "okt",
- "nov",
- "des",
- ]
- day_names = [
- "",
- "mandag",
- "tirsdag",
- "onsdag",
- "torsdag",
- "fredag",
- "lørdag",
- "søndag",
- ]
- day_abbreviations = ["", "ma", "ti", "on", "to", "fr", "lø", "sø"]
- class NewNorwegianLocale(Locale):
- names = ["nn", "nn_no"]
- past = "for {0} sidan"
- future = "om {0}"
- timeframes = {
- "now": "no nettopp",
- "second": "et sekund",
- "seconds": "{0} nokre sekund",
- "minute": "ett minutt",
- "minutes": "{0} minutt",
- "hour": "ein time",
- "hours": "{0} timar",
- "day": "ein dag",
- "days": "{0} dagar",
- "month": "en månad",
- "months": "{0} månader",
- "year": "eit år",
- "years": "{0} år",
- }
- month_names = [
- "",
- "januar",
- "februar",
- "mars",
- "april",
- "mai",
- "juni",
- "juli",
- "august",
- "september",
- "oktober",
- "november",
- "desember",
- ]
- month_abbreviations = [
- "",
- "jan",
- "feb",
- "mar",
- "apr",
- "mai",
- "jun",
- "jul",
- "aug",
- "sep",
- "okt",
- "nov",
- "des",
- ]
- day_names = [
- "",
- "måndag",
- "tysdag",
- "onsdag",
- "torsdag",
- "fredag",
- "laurdag",
- "sundag",
- ]
- day_abbreviations = ["", "må", "ty", "on", "to", "fr", "la", "su"]
- class PortugueseLocale(Locale):
- names = ["pt", "pt_pt"]
- past = "há {0}"
- future = "em {0}"
- and_word = "e"
- timeframes = {
- "now": "agora",
- "second": "um segundo",
- "seconds": "{0} segundos",
- "minute": "um minuto",
- "minutes": "{0} minutos",
- "hour": "uma hora",
- "hours": "{0} horas",
- "day": "um dia",
- "days": "{0} dias",
- "week": "uma semana",
- "weeks": "{0} semanas",
- "month": "um mês",
- "months": "{0} meses",
- "year": "um ano",
- "years": "{0} anos",
- }
- month_names = [
- "",
- "janeiro",
- "fevereiro",
- "março",
- "abril",
- "maio",
- "junho",
- "julho",
- "agosto",
- "setembro",
- "outubro",
- "novembro",
- "dezembro",
- ]
- month_abbreviations = [
- "",
- "jan",
- "fev",
- "mar",
- "abr",
- "maio",
- "jun",
- "jul",
- "ago",
- "set",
- "out",
- "nov",
- "dez",
- ]
- day_names = [
- "",
- "segunda-feira",
- "terça-feira",
- "quarta-feira",
- "quinta-feira",
- "sexta-feira",
- "sábado",
- "domingo",
- ]
- day_abbreviations = ["", "seg", "ter", "qua", "qui", "sex", "sab", "dom"]
- class BrazilianPortugueseLocale(PortugueseLocale):
- names = ["pt_br"]
- past = "faz {0}"
- future = "em {0}"
- timeframes = {
- "now": "agora",
- "second": "um segundo",
- "seconds": "{0} segundos",
- "minute": "um minuto",
- "minutes": "{0} minutos",
- "hour": "uma hora",
- "hours": "{0} horas",
- "day": "um dia",
- "days": "{0} dias",
- "week": "uma semana",
- "weeks": "{0} semanas",
- "month": "um mês",
- "months": "{0} meses",
- "year": "um ano",
- "years": "{0} anos",
- }
- month_names = [
- "",
- "Janeiro",
- "Fevereiro",
- "Março",
- "Abril",
- "Maio",
- "Junho",
- "Julho",
- "Agosto",
- "Setembro",
- "Outubro",
- "Novembro",
- "Dezembro",
- ]
- month_abbreviations = [
- "",
- "Jan",
- "Fev",
- "Mar",
- "Abr",
- "Mai",
- "Jun",
- "Jul",
- "Ago",
- "Set",
- "Out",
- "Nov",
- "Dez",
- ]
- day_names = [
- "",
- "Segunda-feira",
- "Terça-feira",
- "Quarta-feira",
- "Quinta-feira",
- "Sexta-feira",
- "Sábado",
- "Domingo",
- ]
- day_abbreviations = ["", "Seg", "Ter", "Qua", "Qui", "Sex", "Sab", "Dom"]
- class TagalogLocale(Locale):
- names = ["tl", "tl_ph"]
- past = "nakaraang {0}"
- future = "{0} mula ngayon"
- timeframes = {
- "now": "ngayon lang",
- "second": "isang segundo",
- "seconds": "{0} segundo",
- "minute": "isang minuto",
- "minutes": "{0} minuto",
- "hour": "isang oras",
- "hours": "{0} oras",
- "day": "isang araw",
- "days": "{0} araw",
- "month": "isang buwan",
- "months": "{0} buwan",
- "year": "isang taon",
- "years": "{0} taon",
- }
- month_names = [
- "",
- "Enero",
- "Pebrero",
- "Marso",
- "Abril",
- "Mayo",
- "Hunyo",
- "Hulyo",
- "Agosto",
- "Setyembre",
- "Oktubre",
- "Nobyembre",
- "Disyembre",
- ]
- month_abbreviations = [
- "",
- "Ene",
- "Peb",
- "Mar",
- "Abr",
- "May",
- "Hun",
- "Hul",
- "Ago",
- "Set",
- "Okt",
- "Nob",
- "Dis",
- ]
- day_names = [
- "",
- "Lunes",
- "Martes",
- "Miyerkules",
- "Huwebes",
- "Biyernes",
- "Sabado",
- "Linggo",
- ]
- day_abbreviations = ["", "Lun", "Mar", "Miy", "Huw", "Biy", "Sab", "Lin"]
- def _ordinal_number(self, n):
- return "ika-{}".format(n)
- class VietnameseLocale(Locale):
- names = ["vi", "vi_vn"]
- past = "{0} trước"
- future = "{0} nữa"
- timeframes = {
- "now": "hiện tại",
- "second": "một giây",
- "seconds": "{0} giây",
- "minute": "một phút",
- "minutes": "{0} phút",
- "hour": "một giờ",
- "hours": "{0} giờ",
- "day": "một ngày",
- "days": "{0} ngày",
- "week": "một tuần",
- "weeks": "{0} tuần",
- "month": "một tháng",
- "months": "{0} tháng",
- "year": "một năm",
- "years": "{0} năm",
- }
- month_names = [
- "",
- "Tháng Một",
- "Tháng Hai",
- "Tháng Ba",
- "Tháng Tư",
- "Tháng Năm",
- "Tháng Sáu",
- "Tháng Bảy",
- "Tháng Tám",
- "Tháng Chín",
- "Tháng Mười",
- "Tháng Mười Một",
- "Tháng Mười Hai",
- ]
- month_abbreviations = [
- "",
- "Tháng 1",
- "Tháng 2",
- "Tháng 3",
- "Tháng 4",
- "Tháng 5",
- "Tháng 6",
- "Tháng 7",
- "Tháng 8",
- "Tháng 9",
- "Tháng 10",
- "Tháng 11",
- "Tháng 12",
- ]
- day_names = [
- "",
- "Thứ Hai",
- "Thứ Ba",
- "Thứ Tư",
- "Thứ Năm",
- "Thứ Sáu",
- "Thứ Bảy",
- "Chủ Nhật",
- ]
- day_abbreviations = ["", "Thứ 2", "Thứ 3", "Thứ 4", "Thứ 5", "Thứ 6", "Thứ 7", "CN"]
- class TurkishLocale(Locale):
- names = ["tr", "tr_tr"]
- past = "{0} önce"
- future = "{0} sonra"
- timeframes = {
- "now": "şimdi",
- "second": "bir saniye",
- "seconds": "{0} saniye",
- "minute": "bir dakika",
- "minutes": "{0} dakika",
- "hour": "bir saat",
- "hours": "{0} saat",
- "day": "bir gün",
- "days": "{0} gün",
- "month": "bir ay",
- "months": "{0} ay",
- "year": "yıl",
- "years": "{0} yıl",
- }
- month_names = [
- "",
- "Ocak",
- "Şubat",
- "Mart",
- "Nisan",
- "Mayıs",
- "Haziran",
- "Temmuz",
- "Ağustos",
- "Eylül",
- "Ekim",
- "Kasım",
- "Aralık",
- ]
- month_abbreviations = [
- "",
- "Oca",
- "Şub",
- "Mar",
- "Nis",
- "May",
- "Haz",
- "Tem",
- "Ağu",
- "Eyl",
- "Eki",
- "Kas",
- "Ara",
- ]
- day_names = [
- "",
- "Pazartesi",
- "Salı",
- "Çarşamba",
- "Perşembe",
- "Cuma",
- "Cumartesi",
- "Pazar",
- ]
- day_abbreviations = ["", "Pzt", "Sal", "Çar", "Per", "Cum", "Cmt", "Paz"]
- class AzerbaijaniLocale(Locale):
- names = ["az", "az_az"]
- past = "{0} əvvəl"
- future = "{0} sonra"
- timeframes = {
- "now": "indi",
- "second": "saniyə",
- "seconds": "{0} saniyə",
- "minute": "bir dəqiqə",
- "minutes": "{0} dəqiqə",
- "hour": "bir saat",
- "hours": "{0} saat",
- "day": "bir gün",
- "days": "{0} gün",
- "month": "bir ay",
- "months": "{0} ay",
- "year": "il",
- "years": "{0} il",
- }
- month_names = [
- "",
- "Yanvar",
- "Fevral",
- "Mart",
- "Aprel",
- "May",
- "İyun",
- "İyul",
- "Avqust",
- "Sentyabr",
- "Oktyabr",
- "Noyabr",
- "Dekabr",
- ]
- month_abbreviations = [
- "",
- "Yan",
- "Fev",
- "Mar",
- "Apr",
- "May",
- "İyn",
- "İyl",
- "Avq",
- "Sen",
- "Okt",
- "Noy",
- "Dek",
- ]
- day_names = [
- "",
- "Bazar ertəsi",
- "Çərşənbə axşamı",
- "Çərşənbə",
- "Cümə axşamı",
- "Cümə",
- "Şənbə",
- "Bazar",
- ]
- day_abbreviations = ["", "Ber", "Çax", "Çər", "Cax", "Cüm", "Şnb", "Bzr"]
- class ArabicLocale(Locale):
- names = [
- "ar",
- "ar_ae",
- "ar_bh",
- "ar_dj",
- "ar_eg",
- "ar_eh",
- "ar_er",
- "ar_km",
- "ar_kw",
- "ar_ly",
- "ar_om",
- "ar_qa",
- "ar_sa",
- "ar_sd",
- "ar_so",
- "ar_ss",
- "ar_td",
- "ar_ye",
- ]
- past = "منذ {0}"
- future = "خلال {0}"
- timeframes = {
- "now": "الآن",
- "second": "ثانية",
- "seconds": {"double": "ثانيتين", "ten": "{0} ثوان", "higher": "{0} ثانية"},
- "minute": "دقيقة",
- "minutes": {"double": "دقيقتين", "ten": "{0} دقائق", "higher": "{0} دقيقة"},
- "hour": "ساعة",
- "hours": {"double": "ساعتين", "ten": "{0} ساعات", "higher": "{0} ساعة"},
- "day": "يوم",
- "days": {"double": "يومين", "ten": "{0} أيام", "higher": "{0} يوم"},
- "month": "شهر",
- "months": {"double": "شهرين", "ten": "{0} أشهر", "higher": "{0} شهر"},
- "year": "سنة",
- "years": {"double": "سنتين", "ten": "{0} سنوات", "higher": "{0} سنة"},
- }
- month_names = [
- "",
- "يناير",
- "فبراير",
- "مارس",
- "أبريل",
- "مايو",
- "يونيو",
- "يوليو",
- "أغسطس",
- "سبتمبر",
- "أكتوبر",
- "نوفمبر",
- "ديسمبر",
- ]
- month_abbreviations = [
- "",
- "يناير",
- "فبراير",
- "مارس",
- "أبريل",
- "مايو",
- "يونيو",
- "يوليو",
- "أغسطس",
- "سبتمبر",
- "أكتوبر",
- "نوفمبر",
- "ديسمبر",
- ]
- day_names = [
- "",
- "الإثنين",
- "الثلاثاء",
- "الأربعاء",
- "الخميس",
- "الجمعة",
- "السبت",
- "الأحد",
- ]
- day_abbreviations = ["", "إثنين", "ثلاثاء", "أربعاء", "خميس", "جمعة", "سبت", "أحد"]
- def _format_timeframe(self, timeframe, delta):
- form = self.timeframes[timeframe]
- delta = abs(delta)
- if isinstance(form, dict):
- if delta == 2:
- form = form["double"]
- elif delta > 2 and delta <= 10:
- form = form["ten"]
- else:
- form = form["higher"]
- return form.format(delta)
- class LevantArabicLocale(ArabicLocale):
- names = ["ar_iq", "ar_jo", "ar_lb", "ar_ps", "ar_sy"]
- month_names = [
- "",
- "كانون الثاني",
- "شباط",
- "آذار",
- "نيسان",
- "أيار",
- "حزيران",
- "تموز",
- "آب",
- "أيلول",
- "تشرين الأول",
- "تشرين الثاني",
- "كانون الأول",
- ]
- month_abbreviations = [
- "",
- "كانون الثاني",
- "شباط",
- "آذار",
- "نيسان",
- "أيار",
- "حزيران",
- "تموز",
- "آب",
- "أيلول",
- "تشرين الأول",
- "تشرين الثاني",
- "كانون الأول",
- ]
- class AlgeriaTunisiaArabicLocale(ArabicLocale):
- names = ["ar_tn", "ar_dz"]
- month_names = [
- "",
- "جانفي",
- "فيفري",
- "مارس",
- "أفريل",
- "ماي",
- "جوان",
- "جويلية",
- "أوت",
- "سبتمبر",
- "أكتوبر",
- "نوفمبر",
- "ديسمبر",
- ]
- month_abbreviations = [
- "",
- "جانفي",
- "فيفري",
- "مارس",
- "أفريل",
- "ماي",
- "جوان",
- "جويلية",
- "أوت",
- "سبتمبر",
- "أكتوبر",
- "نوفمبر",
- "ديسمبر",
- ]
- class MauritaniaArabicLocale(ArabicLocale):
- names = ["ar_mr"]
- month_names = [
- "",
- "يناير",
- "فبراير",
- "مارس",
- "إبريل",
- "مايو",
- "يونيو",
- "يوليو",
- "أغشت",
- "شتمبر",
- "أكتوبر",
- "نوفمبر",
- "دجمبر",
- ]
- month_abbreviations = [
- "",
- "يناير",
- "فبراير",
- "مارس",
- "إبريل",
- "مايو",
- "يونيو",
- "يوليو",
- "أغشت",
- "شتمبر",
- "أكتوبر",
- "نوفمبر",
- "دجمبر",
- ]
- class MoroccoArabicLocale(ArabicLocale):
- names = ["ar_ma"]
- month_names = [
- "",
- "يناير",
- "فبراير",
- "مارس",
- "أبريل",
- "ماي",
- "يونيو",
- "يوليوز",
- "غشت",
- "شتنبر",
- "أكتوبر",
- "نونبر",
- "دجنبر",
- ]
- month_abbreviations = [
- "",
- "يناير",
- "فبراير",
- "مارس",
- "أبريل",
- "ماي",
- "يونيو",
- "يوليوز",
- "غشت",
- "شتنبر",
- "أكتوبر",
- "نونبر",
- "دجنبر",
- ]
- class IcelandicLocale(Locale):
- def _format_timeframe(self, timeframe, delta):
- timeframe = self.timeframes[timeframe]
- if delta < 0:
- timeframe = timeframe[0]
- elif delta > 0:
- timeframe = timeframe[1]
- return timeframe.format(abs(delta))
- names = ["is", "is_is"]
- past = "fyrir {0} síðan"
- future = "eftir {0}"
- timeframes = {
- "now": "rétt í þessu",
- "second": ("sekúndu", "sekúndu"),
- "seconds": ("{0} nokkrum sekúndum", "nokkrar sekúndur"),
- "minute": ("einni mínútu", "eina mínútu"),
- "minutes": ("{0} mínútum", "{0} mínútur"),
- "hour": ("einum tíma", "einn tíma"),
- "hours": ("{0} tímum", "{0} tíma"),
- "day": ("einum degi", "einn dag"),
- "days": ("{0} dögum", "{0} daga"),
- "month": ("einum mánuði", "einn mánuð"),
- "months": ("{0} mánuðum", "{0} mánuði"),
- "year": ("einu ári", "eitt ár"),
- "years": ("{0} árum", "{0} ár"),
- }
- meridians = {"am": "f.h.", "pm": "e.h.", "AM": "f.h.", "PM": "e.h."}
- month_names = [
- "",
- "janúar",
- "febrúar",
- "mars",
- "apríl",
- "maí",
- "júní",
- "júlí",
- "ágúst",
- "september",
- "október",
- "nóvember",
- "desember",
- ]
- month_abbreviations = [
- "",
- "jan",
- "feb",
- "mar",
- "apr",
- "maí",
- "jún",
- "júl",
- "ágú",
- "sep",
- "okt",
- "nóv",
- "des",
- ]
- day_names = [
- "",
- "mánudagur",
- "þriðjudagur",
- "miðvikudagur",
- "fimmtudagur",
- "föstudagur",
- "laugardagur",
- "sunnudagur",
- ]
- day_abbreviations = ["", "mán", "þri", "mið", "fim", "fös", "lau", "sun"]
- class DanishLocale(Locale):
- names = ["da", "da_dk"]
- past = "for {0} siden"
- future = "efter {0}"
- and_word = "og"
- timeframes = {
- "now": "lige nu",
- "second": "et sekund",
- "seconds": "{0} et par sekunder",
- "minute": "et minut",
- "minutes": "{0} minutter",
- "hour": "en time",
- "hours": "{0} timer",
- "day": "en dag",
- "days": "{0} dage",
- "month": "en måned",
- "months": "{0} måneder",
- "year": "et år",
- "years": "{0} år",
- }
- month_names = [
- "",
- "januar",
- "februar",
- "marts",
- "april",
- "maj",
- "juni",
- "juli",
- "august",
- "september",
- "oktober",
- "november",
- "december",
- ]
- month_abbreviations = [
- "",
- "jan",
- "feb",
- "mar",
- "apr",
- "maj",
- "jun",
- "jul",
- "aug",
- "sep",
- "okt",
- "nov",
- "dec",
- ]
- day_names = [
- "",
- "mandag",
- "tirsdag",
- "onsdag",
- "torsdag",
- "fredag",
- "lørdag",
- "søndag",
- ]
- day_abbreviations = ["", "man", "tir", "ons", "tor", "fre", "lør", "søn"]
- class MalayalamLocale(Locale):
- names = ["ml"]
- past = "{0} മുമ്പ്"
- future = "{0} ശേഷം"
- timeframes = {
- "now": "ഇപ്പോൾ",
- "second": "ഒരു നിമിഷം",
- "seconds": "{0} സെക്കന്റ്",
- "minute": "ഒരു മിനിറ്റ്",
- "minutes": "{0} മിനിറ്റ്",
- "hour": "ഒരു മണിക്കൂർ",
- "hours": "{0} മണിക്കൂർ",
- "day": "ഒരു ദിവസം ",
- "days": "{0} ദിവസം ",
- "month": "ഒരു മാസം ",
- "months": "{0} മാസം ",
- "year": "ഒരു വർഷം ",
- "years": "{0} വർഷം ",
- }
- meridians = {
- "am": "രാവിലെ",
- "pm": "ഉച്ചക്ക് ശേഷം",
- "AM": "രാവിലെ",
- "PM": "ഉച്ചക്ക് ശേഷം",
- }
- month_names = [
- "",
- "ജനുവരി",
- "ഫെബ്രുവരി",
- "മാർച്ച്",
- "ഏപ്രിൽ ",
- "മെയ് ",
- "ജൂണ്",
- "ജൂലൈ",
- "ഓഗസ്റ്റ്",
- "സെപ്റ്റംബർ",
- "ഒക്ടോബർ",
- "നവംബർ",
- "ഡിസംബർ",
- ]
- month_abbreviations = [
- "",
- "ജനു",
- "ഫെബ് ",
- "മാർ",
- "ഏപ്രിൽ",
- "മേയ്",
- "ജൂണ്",
- "ജൂലൈ",
- "ഓഗസ്റ",
- "സെപ്റ്റ",
- "ഒക്ടോ",
- "നവം",
- "ഡിസം",
- ]
- day_names = ["", "തിങ്കള്", "ചൊവ്വ", "ബുധന്", "വ്യാഴം", "വെള്ളി", "ശനി", "ഞായര്"]
- day_abbreviations = [
- "",
- "തിങ്കള്",
- "ചൊവ്വ",
- "ബുധന്",
- "വ്യാഴം",
- "വെള്ളി",
- "ശനി",
- "ഞായര്",
- ]
- class HindiLocale(Locale):
- names = ["hi"]
- past = "{0} पहले"
- future = "{0} बाद"
- timeframes = {
- "now": "अभी",
- "second": "एक पल",
- "seconds": "{0} सेकंड्",
- "minute": "एक मिनट ",
- "minutes": "{0} मिनट ",
- "hour": "एक घंटा",
- "hours": "{0} घंटे",
- "day": "एक दिन",
- "days": "{0} दिन",
- "month": "एक माह ",
- "months": "{0} महीने ",
- "year": "एक वर्ष ",
- "years": "{0} साल ",
- }
- meridians = {"am": "सुबह", "pm": "शाम", "AM": "सुबह", "PM": "शाम"}
- month_names = [
- "",
- "जनवरी",
- "फरवरी",
- "मार्च",
- "अप्रैल ",
- "मई",
- "जून",
- "जुलाई",
- "अगस्त",
- "सितंबर",
- "अक्टूबर",
- "नवंबर",
- "दिसंबर",
- ]
- month_abbreviations = [
- "",
- "जन",
- "फ़र",
- "मार्च",
- "अप्रै",
- "मई",
- "जून",
- "जुलाई",
- "आग",
- "सित",
- "अकत",
- "नवे",
- "दिस",
- ]
- day_names = [
- "",
- "सोमवार",
- "मंगलवार",
- "बुधवार",
- "गुरुवार",
- "शुक्रवार",
- "शनिवार",
- "रविवार",
- ]
- day_abbreviations = ["", "सोम", "मंगल", "बुध", "गुरुवार", "शुक्र", "शनि", "रवि"]
- class CzechLocale(Locale):
- names = ["cs", "cs_cz"]
- timeframes = {
- "now": "Teď",
- "second": {"past": "vteřina", "future": "vteřina", "zero": "vteřina"},
- "seconds": {"past": "{0} sekundami", "future": ["{0} sekundy", "{0} sekund"]},
- "minute": {"past": "minutou", "future": "minutu", "zero": "{0} minut"},
- "minutes": {"past": "{0} minutami", "future": ["{0} minuty", "{0} minut"]},
- "hour": {"past": "hodinou", "future": "hodinu", "zero": "{0} hodin"},
- "hours": {"past": "{0} hodinami", "future": ["{0} hodiny", "{0} hodin"]},
- "day": {"past": "dnem", "future": "den", "zero": "{0} dnů"},
- "days": {"past": "{0} dny", "future": ["{0} dny", "{0} dnů"]},
- "month": {"past": "měsícem", "future": "měsíc", "zero": "{0} měsíců"},
- "months": {"past": "{0} měsíci", "future": ["{0} měsíce", "{0} měsíců"]},
- "year": {"past": "rokem", "future": "rok", "zero": "{0} let"},
- "years": {"past": "{0} lety", "future": ["{0} roky", "{0} let"]},
- }
- past = "Před {0}"
- future = "Za {0}"
- month_names = [
- "",
- "leden",
- "únor",
- "březen",
- "duben",
- "květen",
- "červen",
- "červenec",
- "srpen",
- "září",
- "říjen",
- "listopad",
- "prosinec",
- ]
- month_abbreviations = [
- "",
- "led",
- "úno",
- "bře",
- "dub",
- "kvě",
- "čvn",
- "čvc",
- "srp",
- "zář",
- "říj",
- "lis",
- "pro",
- ]
- day_names = [
- "",
- "pondělí",
- "úterý",
- "středa",
- "čtvrtek",
- "pátek",
- "sobota",
- "neděle",
- ]
- day_abbreviations = ["", "po", "út", "st", "čt", "pá", "so", "ne"]
- def _format_timeframe(self, timeframe, delta):
- """Czech aware time frame format function, takes into account
- the differences between past and future forms."""
- form = self.timeframes[timeframe]
- if isinstance(form, dict):
- if delta == 0:
- form = form["zero"] # And *never* use 0 in the singular!
- elif delta > 0:
- form = form["future"]
- else:
- form = form["past"]
- delta = abs(delta)
- if isinstance(form, list):
- if 2 <= delta % 10 <= 4 and (delta % 100 < 10 or delta % 100 >= 20):
- form = form[0]
- else:
- form = form[1]
- return form.format(delta)
- class SlovakLocale(Locale):
- names = ["sk", "sk_sk"]
- timeframes = {
- "now": "Teraz",
- "second": {"past": "druhý", "future": "druhý", "zero": "druhý"},
- "seconds": {"past": "pár sekundami", "future": ["{0} sekundy", "{0} sekúnd"]},
- "minute": {"past": "minútou", "future": "minútu", "zero": "{0} minút"},
- "minutes": {"past": "{0} minútami", "future": ["{0} minúty", "{0} minút"]},
- "hour": {"past": "hodinou", "future": "hodinu", "zero": "{0} hodín"},
- "hours": {"past": "{0} hodinami", "future": ["{0} hodiny", "{0} hodín"]},
- "day": {"past": "dňom", "future": "deň", "zero": "{0} dní"},
- "days": {"past": "{0} dňami", "future": ["{0} dni", "{0} dní"]},
- "month": {"past": "mesiacom", "future": "mesiac", "zero": "{0} mesiacov"},
- "months": {"past": "{0} mesiacmi", "future": ["{0} mesiace", "{0} mesiacov"]},
- "year": {"past": "rokom", "future": "rok", "zero": "{0} rokov"},
- "years": {"past": "{0} rokmi", "future": ["{0} roky", "{0} rokov"]},
- }
- past = "Pred {0}"
- future = "O {0}"
- and_word = "a"
- month_names = [
- "",
- "január",
- "február",
- "marec",
- "apríl",
- "máj",
- "jún",
- "júl",
- "august",
- "september",
- "október",
- "november",
- "december",
- ]
- month_abbreviations = [
- "",
- "jan",
- "feb",
- "mar",
- "apr",
- "máj",
- "jún",
- "júl",
- "aug",
- "sep",
- "okt",
- "nov",
- "dec",
- ]
- day_names = [
- "",
- "pondelok",
- "utorok",
- "streda",
- "štvrtok",
- "piatok",
- "sobota",
- "nedeľa",
- ]
- day_abbreviations = ["", "po", "ut", "st", "št", "pi", "so", "ne"]
- def _format_timeframe(self, timeframe, delta):
- """Slovak aware time frame format function, takes into account
- the differences between past and future forms."""
- form = self.timeframes[timeframe]
- if isinstance(form, dict):
- if delta == 0:
- form = form["zero"] # And *never* use 0 in the singular!
- elif delta > 0:
- form = form["future"]
- else:
- form = form["past"]
- delta = abs(delta)
- if isinstance(form, list):
- if 2 <= delta % 10 <= 4 and (delta % 100 < 10 or delta % 100 >= 20):
- form = form[0]
- else:
- form = form[1]
- return form.format(delta)
- class FarsiLocale(Locale):
- names = ["fa", "fa_ir"]
- past = "{0} قبل"
- future = "در {0}"
- timeframes = {
- "now": "اکنون",
- "second": "یک لحظه",
- "seconds": "{0} ثانیه",
- "minute": "یک دقیقه",
- "minutes": "{0} دقیقه",
- "hour": "یک ساعت",
- "hours": "{0} ساعت",
- "day": "یک روز",
- "days": "{0} روز",
- "month": "یک ماه",
- "months": "{0} ماه",
- "year": "یک سال",
- "years": "{0} سال",
- }
- meridians = {
- "am": "قبل از ظهر",
- "pm": "بعد از ظهر",
- "AM": "قبل از ظهر",
- "PM": "بعد از ظهر",
- }
- month_names = [
- "",
- "January",
- "February",
- "March",
- "April",
- "May",
- "June",
- "July",
- "August",
- "September",
- "October",
- "November",
- "December",
- ]
- month_abbreviations = [
- "",
- "Jan",
- "Feb",
- "Mar",
- "Apr",
- "May",
- "Jun",
- "Jul",
- "Aug",
- "Sep",
- "Oct",
- "Nov",
- "Dec",
- ]
- day_names = [
- "",
- "دو شنبه",
- "سه شنبه",
- "چهارشنبه",
- "پنجشنبه",
- "جمعه",
- "شنبه",
- "یکشنبه",
- ]
- day_abbreviations = ["", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
- class HebrewLocale(Locale):
- names = ["he", "he_IL"]
- past = "לפני {0}"
- future = "בעוד {0}"
- timeframes = {
- "now": "הרגע",
- "second": "שנייה",
- "seconds": "{0} שניות",
- "minute": "דקה",
- "minutes": "{0} דקות",
- "hour": "שעה",
- "hours": "{0} שעות",
- "2-hours": "שעתיים",
- "day": "יום",
- "days": "{0} ימים",
- "2-days": "יומיים",
- "month": "חודש",
- "months": "{0} חודשים",
- "2-months": "חודשיים",
- "year": "שנה",
- "years": "{0} שנים",
- "2-years": "שנתיים",
- }
- meridians = {
- "am": 'לפנ"צ',
- "pm": 'אחר"צ',
- "AM": "לפני הצהריים",
- "PM": "אחרי הצהריים",
- }
- month_names = [
- "",
- "ינואר",
- "פברואר",
- "מרץ",
- "אפריל",
- "מאי",
- "יוני",
- "יולי",
- "אוגוסט",
- "ספטמבר",
- "אוקטובר",
- "נובמבר",
- "דצמבר",
- ]
- month_abbreviations = [
- "",
- "ינו׳",
- "פבר׳",
- "מרץ",
- "אפר׳",
- "מאי",
- "יוני",
- "יולי",
- "אוג׳",
- "ספט׳",
- "אוק׳",
- "נוב׳",
- "דצמ׳",
- ]
- day_names = ["", "שני", "שלישי", "רביעי", "חמישי", "שישי", "שבת", "ראשון"]
- day_abbreviations = ["", "ב׳", "ג׳", "ד׳", "ה׳", "ו׳", "ש׳", "א׳"]
- def _format_timeframe(self, timeframe, delta):
- """Hebrew couple of <timeframe> aware"""
- couple = "2-{}".format(timeframe)
- if abs(delta) == 2 and couple in self.timeframes:
- return self.timeframes[couple].format(abs(delta))
- else:
- return self.timeframes[timeframe].format(abs(delta))
- class MarathiLocale(Locale):
- names = ["mr"]
- past = "{0} आधी"
- future = "{0} नंतर"
- timeframes = {
- "now": "सद्य",
- "second": "एक सेकंद",
- "seconds": "{0} सेकंद",
- "minute": "एक मिनिट ",
- "minutes": "{0} मिनिट ",
- "hour": "एक तास",
- "hours": "{0} तास",
- "day": "एक दिवस",
- "days": "{0} दिवस",
- "month": "एक महिना ",
- "months": "{0} महिने ",
- "year": "एक वर्ष ",
- "years": "{0} वर्ष ",
- }
- meridians = {"am": "सकाळ", "pm": "संध्याकाळ", "AM": "सकाळ", "PM": "संध्याकाळ"}
- month_names = [
- "",
- "जानेवारी",
- "फेब्रुवारी",
- "मार्च",
- "एप्रिल",
- "मे",
- "जून",
- "जुलै",
- "अॉगस्ट",
- "सप्टेंबर",
- "अॉक्टोबर",
- "नोव्हेंबर",
- "डिसेंबर",
- ]
- month_abbreviations = [
- "",
- "जान",
- "फेब्रु",
- "मार्च",
- "एप्रि",
- "मे",
- "जून",
- "जुलै",
- "अॉग",
- "सप्टें",
- "अॉक्टो",
- "नोव्हें",
- "डिसें",
- ]
- day_names = [
- "",
- "सोमवार",
- "मंगळवार",
- "बुधवार",
- "गुरुवार",
- "शुक्रवार",
- "शनिवार",
- "रविवार",
- ]
- day_abbreviations = ["", "सोम", "मंगळ", "बुध", "गुरु", "शुक्र", "शनि", "रवि"]
- def _map_locales():
- locales = {}
- for _, cls in inspect.getmembers(sys.modules[__name__], inspect.isclass):
- if issubclass(cls, Locale): # pragma: no branch
- for name in cls.names:
- locales[name.lower()] = cls
- return locales
- class CatalanLocale(Locale):
- names = ["ca", "ca_es", "ca_ad", "ca_fr", "ca_it"]
- past = "Fa {0}"
- future = "En {0}"
- and_word = "i"
- timeframes = {
- "now": "Ara mateix",
- "second": "un segon",
- "seconds": "{0} segons",
- "minute": "1 minut",
- "minutes": "{0} minuts",
- "hour": "una hora",
- "hours": "{0} hores",
- "day": "un dia",
- "days": "{0} dies",
- "month": "un mes",
- "months": "{0} mesos",
- "year": "un any",
- "years": "{0} anys",
- }
- month_names = [
- "",
- "Gener",
- "Febrer",
- "Març",
- "Abril",
- "Maig",
- "Juny",
- "Juliol",
- "Agost",
- "Setembre",
- "Octubre",
- "Novembre",
- "Desembre",
- ]
- month_abbreviations = [
- "",
- "Gener",
- "Febrer",
- "Març",
- "Abril",
- "Maig",
- "Juny",
- "Juliol",
- "Agost",
- "Setembre",
- "Octubre",
- "Novembre",
- "Desembre",
- ]
- day_names = [
- "",
- "Dilluns",
- "Dimarts",
- "Dimecres",
- "Dijous",
- "Divendres",
- "Dissabte",
- "Diumenge",
- ]
- day_abbreviations = [
- "",
- "Dilluns",
- "Dimarts",
- "Dimecres",
- "Dijous",
- "Divendres",
- "Dissabte",
- "Diumenge",
- ]
- class BasqueLocale(Locale):
- names = ["eu", "eu_eu"]
- past = "duela {0}"
- future = "{0}" # I don't know what's the right phrase in Basque for the future.
- timeframes = {
- "now": "Orain",
- "second": "segundo bat",
- "seconds": "{0} segundu",
- "minute": "minutu bat",
- "minutes": "{0} minutu",
- "hour": "ordu bat",
- "hours": "{0} ordu",
- "day": "egun bat",
- "days": "{0} egun",
- "month": "hilabete bat",
- "months": "{0} hilabet",
- "year": "urte bat",
- "years": "{0} urte",
- }
- month_names = [
- "",
- "urtarrilak",
- "otsailak",
- "martxoak",
- "apirilak",
- "maiatzak",
- "ekainak",
- "uztailak",
- "abuztuak",
- "irailak",
- "urriak",
- "azaroak",
- "abenduak",
- ]
- month_abbreviations = [
- "",
- "urt",
- "ots",
- "mar",
- "api",
- "mai",
- "eka",
- "uzt",
- "abu",
- "ira",
- "urr",
- "aza",
- "abe",
- ]
- day_names = [
- "",
- "astelehena",
- "asteartea",
- "asteazkena",
- "osteguna",
- "ostirala",
- "larunbata",
- "igandea",
- ]
- day_abbreviations = ["", "al", "ar", "az", "og", "ol", "lr", "ig"]
- class HungarianLocale(Locale):
- names = ["hu", "hu_hu"]
- past = "{0} ezelőtt"
- future = "{0} múlva"
- timeframes = {
- "now": "éppen most",
- "second": {"past": "egy második", "future": "egy második"},
- "seconds": {"past": "{0} másodpercekkel", "future": "{0} pár másodperc"},
- "minute": {"past": "egy perccel", "future": "egy perc"},
- "minutes": {"past": "{0} perccel", "future": "{0} perc"},
- "hour": {"past": "egy órával", "future": "egy óra"},
- "hours": {"past": "{0} órával", "future": "{0} óra"},
- "day": {"past": "egy nappal", "future": "egy nap"},
- "days": {"past": "{0} nappal", "future": "{0} nap"},
- "month": {"past": "egy hónappal", "future": "egy hónap"},
- "months": {"past": "{0} hónappal", "future": "{0} hónap"},
- "year": {"past": "egy évvel", "future": "egy év"},
- "years": {"past": "{0} évvel", "future": "{0} év"},
- }
- month_names = [
- "",
- "január",
- "február",
- "március",
- "április",
- "május",
- "június",
- "július",
- "augusztus",
- "szeptember",
- "október",
- "november",
- "december",
- ]
- month_abbreviations = [
- "",
- "jan",
- "febr",
- "márc",
- "ápr",
- "máj",
- "jún",
- "júl",
- "aug",
- "szept",
- "okt",
- "nov",
- "dec",
- ]
- day_names = [
- "",
- "hétfő",
- "kedd",
- "szerda",
- "csütörtök",
- "péntek",
- "szombat",
- "vasárnap",
- ]
- day_abbreviations = ["", "hét", "kedd", "szer", "csüt", "pént", "szom", "vas"]
- meridians = {"am": "de", "pm": "du", "AM": "DE", "PM": "DU"}
- def _format_timeframe(self, timeframe, delta):
- form = self.timeframes[timeframe]
- if isinstance(form, dict):
- if delta > 0:
- form = form["future"]
- else:
- form = form["past"]
- return form.format(abs(delta))
- class EsperantoLocale(Locale):
- names = ["eo", "eo_xx"]
- past = "antaŭ {0}"
- future = "post {0}"
- timeframes = {
- "now": "nun",
- "second": "sekundo",
- "seconds": "{0} kelkaj sekundoj",
- "minute": "unu minuto",
- "minutes": "{0} minutoj",
- "hour": "un horo",
- "hours": "{0} horoj",
- "day": "unu tago",
- "days": "{0} tagoj",
- "month": "unu monato",
- "months": "{0} monatoj",
- "year": "unu jaro",
- "years": "{0} jaroj",
- }
- month_names = [
- "",
- "januaro",
- "februaro",
- "marto",
- "aprilo",
- "majo",
- "junio",
- "julio",
- "aŭgusto",
- "septembro",
- "oktobro",
- "novembro",
- "decembro",
- ]
- month_abbreviations = [
- "",
- "jan",
- "feb",
- "mar",
- "apr",
- "maj",
- "jun",
- "jul",
- "aŭg",
- "sep",
- "okt",
- "nov",
- "dec",
- ]
- day_names = [
- "",
- "lundo",
- "mardo",
- "merkredo",
- "ĵaŭdo",
- "vendredo",
- "sabato",
- "dimanĉo",
- ]
- day_abbreviations = ["", "lun", "mar", "mer", "ĵaŭ", "ven", "sab", "dim"]
- meridians = {"am": "atm", "pm": "ptm", "AM": "ATM", "PM": "PTM"}
- ordinal_day_re = r"((?P<value>[1-3]?[0-9](?=a))a)"
- def _ordinal_number(self, n):
- return "{}a".format(n)
- class ThaiLocale(Locale):
- names = ["th", "th_th"]
- past = "{0}{1}ที่ผ่านมา"
- future = "ในอีก{1}{0}"
- timeframes = {
- "now": "ขณะนี้",
- "second": "วินาที",
- "seconds": "{0} ไม่กี่วินาที",
- "minute": "1 นาที",
- "minutes": "{0} นาที",
- "hour": "1 ชั่วโมง",
- "hours": "{0} ชั่วโมง",
- "day": "1 วัน",
- "days": "{0} วัน",
- "month": "1 เดือน",
- "months": "{0} เดือน",
- "year": "1 ปี",
- "years": "{0} ปี",
- }
- month_names = [
- "",
- "มกราคม",
- "กุมภาพันธ์",
- "มีนาคม",
- "เมษายน",
- "พฤษภาคม",
- "มิถุนายน",
- "กรกฎาคม",
- "สิงหาคม",
- "กันยายน",
- "ตุลาคม",
- "พฤศจิกายน",
- "ธันวาคม",
- ]
- month_abbreviations = [
- "",
- "ม.ค.",
- "ก.พ.",
- "มี.ค.",
- "เม.ย.",
- "พ.ค.",
- "มิ.ย.",
- "ก.ค.",
- "ส.ค.",
- "ก.ย.",
- "ต.ค.",
- "พ.ย.",
- "ธ.ค.",
- ]
- day_names = ["", "จันทร์", "อังคาร", "พุธ", "พฤหัสบดี", "ศุกร์", "เสาร์", "อาทิตย์"]
- day_abbreviations = ["", "จ", "อ", "พ", "พฤ", "ศ", "ส", "อา"]
- meridians = {"am": "am", "pm": "pm", "AM": "AM", "PM": "PM"}
- BE_OFFSET = 543
- def year_full(self, year):
- """Thai always use Buddhist Era (BE) which is CE + 543"""
- year += self.BE_OFFSET
- return "{:04d}".format(year)
- def year_abbreviation(self, year):
- """Thai always use Buddhist Era (BE) which is CE + 543"""
- year += self.BE_OFFSET
- return "{:04d}".format(year)[2:]
- def _format_relative(self, humanized, timeframe, delta):
- """Thai normally doesn't have any space between words"""
- if timeframe == "now":
- return humanized
- space = "" if timeframe == "seconds" else " "
- direction = self.past if delta < 0 else self.future
- return direction.format(humanized, space)
- class BengaliLocale(Locale):
- names = ["bn", "bn_bd", "bn_in"]
- past = "{0} আগে"
- future = "{0} পরে"
- timeframes = {
- "now": "এখন",
- "second": "একটি দ্বিতীয়",
- "seconds": "{0} সেকেন্ড",
- "minute": "এক মিনিট",
- "minutes": "{0} মিনিট",
- "hour": "এক ঘণ্টা",
- "hours": "{0} ঘণ্টা",
- "day": "এক দিন",
- "days": "{0} দিন",
- "month": "এক মাস",
- "months": "{0} মাস ",
- "year": "এক বছর",
- "years": "{0} বছর",
- }
- meridians = {"am": "সকাল", "pm": "বিকাল", "AM": "সকাল", "PM": "বিকাল"}
- month_names = [
- "",
- "জানুয়ারি",
- "ফেব্রুয়ারি",
- "মার্চ",
- "এপ্রিল",
- "মে",
- "জুন",
- "জুলাই",
- "আগস্ট",
- "সেপ্টেম্বর",
- "অক্টোবর",
- "নভেম্বর",
- "ডিসেম্বর",
- ]
- month_abbreviations = [
- "",
- "জানু",
- "ফেব",
- "মার্চ",
- "এপ্রি",
- "মে",
- "জুন",
- "জুল",
- "অগা",
- "সেপ্ট",
- "অক্টো",
- "নভে",
- "ডিসে",
- ]
- day_names = [
- "",
- "সোমবার",
- "মঙ্গলবার",
- "বুধবার",
- "বৃহস্পতিবার",
- "শুক্রবার",
- "শনিবার",
- "রবিবার",
- ]
- day_abbreviations = ["", "সোম", "মঙ্গল", "বুধ", "বৃহঃ", "শুক্র", "শনি", "রবি"]
- def _ordinal_number(self, n):
- if n > 10 or n == 0:
- return "{}তম".format(n)
- if n in [1, 5, 7, 8, 9, 10]:
- return "{}ম".format(n)
- if n in [2, 3]:
- return "{}য়".format(n)
- if n == 4:
- return "{}র্থ".format(n)
- if n == 6:
- return "{}ষ্ঠ".format(n)
- class RomanshLocale(Locale):
- names = ["rm", "rm_ch"]
- past = "avant {0}"
- future = "en {0}"
- timeframes = {
- "now": "en quest mument",
- "second": "in secunda",
- "seconds": "{0} secundas",
- "minute": "ina minuta",
- "minutes": "{0} minutas",
- "hour": "in'ura",
- "hours": "{0} ura",
- "day": "in di",
- "days": "{0} dis",
- "month": "in mais",
- "months": "{0} mais",
- "year": "in onn",
- "years": "{0} onns",
- }
- month_names = [
- "",
- "schaner",
- "favrer",
- "mars",
- "avrigl",
- "matg",
- "zercladur",
- "fanadur",
- "avust",
- "settember",
- "october",
- "november",
- "december",
- ]
- month_abbreviations = [
- "",
- "schan",
- "fav",
- "mars",
- "avr",
- "matg",
- "zer",
- "fan",
- "avu",
- "set",
- "oct",
- "nov",
- "dec",
- ]
- day_names = [
- "",
- "glindesdi",
- "mardi",
- "mesemna",
- "gievgia",
- "venderdi",
- "sonda",
- "dumengia",
- ]
- day_abbreviations = ["", "gli", "ma", "me", "gie", "ve", "so", "du"]
- class RomanianLocale(Locale):
- names = ["ro", "ro_ro"]
- past = "{0} în urmă"
- future = "peste {0}"
- and_word = "și"
- timeframes = {
- "now": "acum",
- "second": "o secunda",
- "seconds": "{0} câteva secunde",
- "minute": "un minut",
- "minutes": "{0} minute",
- "hour": "o oră",
- "hours": "{0} ore",
- "day": "o zi",
- "days": "{0} zile",
- "month": "o lună",
- "months": "{0} luni",
- "year": "un an",
- "years": "{0} ani",
- }
- month_names = [
- "",
- "ianuarie",
- "februarie",
- "martie",
- "aprilie",
- "mai",
- "iunie",
- "iulie",
- "august",
- "septembrie",
- "octombrie",
- "noiembrie",
- "decembrie",
- ]
- month_abbreviations = [
- "",
- "ian",
- "febr",
- "mart",
- "apr",
- "mai",
- "iun",
- "iul",
- "aug",
- "sept",
- "oct",
- "nov",
- "dec",
- ]
- day_names = [
- "",
- "luni",
- "marți",
- "miercuri",
- "joi",
- "vineri",
- "sâmbătă",
- "duminică",
- ]
- day_abbreviations = ["", "Lun", "Mar", "Mie", "Joi", "Vin", "Sâm", "Dum"]
- class SlovenianLocale(Locale):
- names = ["sl", "sl_si"]
- past = "pred {0}"
- future = "čez {0}"
- and_word = "in"
- timeframes = {
- "now": "zdaj",
- "second": "sekundo",
- "seconds": "{0} sekund",
- "minute": "minuta",
- "minutes": "{0} minutami",
- "hour": "uro",
- "hours": "{0} ur",
- "day": "dan",
- "days": "{0} dni",
- "month": "mesec",
- "months": "{0} mesecev",
- "year": "leto",
- "years": "{0} let",
- }
- meridians = {"am": "", "pm": "", "AM": "", "PM": ""}
- month_names = [
- "",
- "Januar",
- "Februar",
- "Marec",
- "April",
- "Maj",
- "Junij",
- "Julij",
- "Avgust",
- "September",
- "Oktober",
- "November",
- "December",
- ]
- month_abbreviations = [
- "",
- "Jan",
- "Feb",
- "Mar",
- "Apr",
- "Maj",
- "Jun",
- "Jul",
- "Avg",
- "Sep",
- "Okt",
- "Nov",
- "Dec",
- ]
- day_names = [
- "",
- "Ponedeljek",
- "Torek",
- "Sreda",
- "Četrtek",
- "Petek",
- "Sobota",
- "Nedelja",
- ]
- day_abbreviations = ["", "Pon", "Tor", "Sre", "Čet", "Pet", "Sob", "Ned"]
- class IndonesianLocale(Locale):
- names = ["id", "id_id"]
- past = "{0} yang lalu"
- future = "dalam {0}"
- and_word = "dan"
- timeframes = {
- "now": "baru saja",
- "second": "1 sebentar",
- "seconds": "{0} detik",
- "minute": "1 menit",
- "minutes": "{0} menit",
- "hour": "1 jam",
- "hours": "{0} jam",
- "day": "1 hari",
- "days": "{0} hari",
- "month": "1 bulan",
- "months": "{0} bulan",
- "year": "1 tahun",
- "years": "{0} tahun",
- }
- meridians = {"am": "", "pm": "", "AM": "", "PM": ""}
- month_names = [
- "",
- "Januari",
- "Februari",
- "Maret",
- "April",
- "Mei",
- "Juni",
- "Juli",
- "Agustus",
- "September",
- "Oktober",
- "November",
- "Desember",
- ]
- month_abbreviations = [
- "",
- "Jan",
- "Feb",
- "Mar",
- "Apr",
- "Mei",
- "Jun",
- "Jul",
- "Ags",
- "Sept",
- "Okt",
- "Nov",
- "Des",
- ]
- day_names = ["", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu"]
- day_abbreviations = [
- "",
- "Senin",
- "Selasa",
- "Rabu",
- "Kamis",
- "Jumat",
- "Sabtu",
- "Minggu",
- ]
- class NepaliLocale(Locale):
- names = ["ne", "ne_np"]
- past = "{0} पहिले"
- future = "{0} पछी"
- timeframes = {
- "now": "अहिले",
- "second": "एक सेकेन्ड",
- "seconds": "{0} सेकण्ड",
- "minute": "मिनेट",
- "minutes": "{0} मिनेट",
- "hour": "एक घण्टा",
- "hours": "{0} घण्टा",
- "day": "एक दिन",
- "days": "{0} दिन",
- "month": "एक महिना",
- "months": "{0} महिना",
- "year": "एक बर्ष",
- "years": "बर्ष",
- }
- meridians = {"am": "पूर्वाह्न", "pm": "अपरान्ह", "AM": "पूर्वाह्न", "PM": "अपरान्ह"}
- month_names = [
- "",
- "जनवरी",
- "फेब्रुअरी",
- "मार्च",
- "एप्रील",
- "मे",
- "जुन",
- "जुलाई",
- "अगष्ट",
- "सेप्टेम्बर",
- "अक्टोबर",
- "नोवेम्बर",
- "डिसेम्बर",
- ]
- month_abbreviations = [
- "",
- "जन",
- "फेब",
- "मार्च",
- "एप्रील",
- "मे",
- "जुन",
- "जुलाई",
- "अग",
- "सेप",
- "अक्ट",
- "नोव",
- "डिस",
- ]
- day_names = [
- "",
- "सोमवार",
- "मंगलवार",
- "बुधवार",
- "बिहिवार",
- "शुक्रवार",
- "शनिवार",
- "आइतवार",
- ]
- day_abbreviations = ["", "सोम", "मंगल", "बुध", "बिहि", "शुक्र", "शनि", "आइत"]
- class EstonianLocale(Locale):
- names = ["ee", "et"]
- past = "{0} tagasi"
- future = "{0} pärast"
- and_word = "ja"
- timeframes = {
- "now": {"past": "just nüüd", "future": "just nüüd"},
- "second": {"past": "üks sekund", "future": "ühe sekundi"},
- "seconds": {"past": "{0} sekundit", "future": "{0} sekundi"},
- "minute": {"past": "üks minut", "future": "ühe minuti"},
- "minutes": {"past": "{0} minutit", "future": "{0} minuti"},
- "hour": {"past": "tund aega", "future": "tunni aja"},
- "hours": {"past": "{0} tundi", "future": "{0} tunni"},
- "day": {"past": "üks päev", "future": "ühe päeva"},
- "days": {"past": "{0} päeva", "future": "{0} päeva"},
- "month": {"past": "üks kuu", "future": "ühe kuu"},
- "months": {"past": "{0} kuud", "future": "{0} kuu"},
- "year": {"past": "üks aasta", "future": "ühe aasta"},
- "years": {"past": "{0} aastat", "future": "{0} aasta"},
- }
- month_names = [
- "",
- "Jaanuar",
- "Veebruar",
- "Märts",
- "Aprill",
- "Mai",
- "Juuni",
- "Juuli",
- "August",
- "September",
- "Oktoober",
- "November",
- "Detsember",
- ]
- month_abbreviations = [
- "",
- "Jan",
- "Veb",
- "Mär",
- "Apr",
- "Mai",
- "Jun",
- "Jul",
- "Aug",
- "Sep",
- "Okt",
- "Nov",
- "Dets",
- ]
- day_names = [
- "",
- "Esmaspäev",
- "Teisipäev",
- "Kolmapäev",
- "Neljapäev",
- "Reede",
- "Laupäev",
- "Pühapäev",
- ]
- day_abbreviations = ["", "Esm", "Teis", "Kolm", "Nelj", "Re", "Lau", "Püh"]
- def _format_timeframe(self, timeframe, delta):
- form = self.timeframes[timeframe]
- if delta > 0:
- form = form["future"]
- else:
- form = form["past"]
- return form.format(abs(delta))
- _locales = _map_locales()
|