freshrss.fr.po 224 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333
  1. # French translations for PACKAGE package
  2. # Copyright (C) 2019 Free Software Foundation, Inc.
  3. # This file is distributed under the same license as the PACKAGE package.
  4. #
  5. # Automatically generated, 2019.
  6. # Frans de Jonge <fransdejonge@gmail.com>, 2019.
  7. # Marien Fressinaud <dev@marienfressinaud.fr>, 2019.
  8. #
  9. msgid ""
  10. msgstr ""
  11. "Project-Id-Version: FreshRSS\n"
  12. "Report-Msgid-Bugs-To: https://github.com/FreshRSS/FreshRSS/issues\n"
  13. "POT-Creation-Date: 2019-12-29 11:00+0100\n"
  14. "PO-Revision-Date: 2019-12-07 10:50+0100\n"
  15. "Last-Translator: Marien Fressinaud <dev@marienfressinaud.fr>\n"
  16. "Language-Team: French <>\n"
  17. "Language: fr\n"
  18. "MIME-Version: 1.0\n"
  19. "Content-Type: text/plain; charset=UTF-8\n"
  20. "Content-Transfer-Encoding: 8bit\n"
  21. "Plural-Forms: nplurals=2; plural=(n > 1);\n"
  22. "X-Generator: Gtranslator 3.34.0\n"
  23. #. type: Title ##
  24. #: en/./contributing.md:1
  25. #, no-wrap
  26. msgid "Join us on the mailing lists"
  27. msgstr "Rejoignez-nous sur les listes de mailing"
  28. #. type: Plain text
  29. #: en/./contributing.md:4
  30. msgid ""
  31. "Do you want to ask us some questions? Do you want to discuss with us? Don't "
  32. "hesitate to subscribe to our mailing lists!"
  33. msgstr ""
  34. "S'il vous manque des informations, n'hésitez pas à fouiller un peu la "
  35. "documentation ou venir nous poser directement vos questions sur [la mailing "
  36. "list des développeurs](https://freshrss.org/mailman/listinfo/dev)."
  37. #. type: Bullet: '* '
  38. #: en/./contributing.md:7
  39. msgid ""
  40. "The first mailing is destined to generic information, it should be adapted "
  41. "to users. [Join mailing@freshrss.org](https://freshrss.org/mailman/listinfo/"
  42. "mailing)."
  43. msgstr ""
  44. "Le premier mailing est destiné à l'information générique, il doit être "
  45. "adapté aux utilisateurs. [Rejoignez mailing@freshrss.org](https://freshrss."
  46. "org/mailman/listinfo/mailing)."
  47. #. type: Bullet: '* '
  48. #: en/./contributing.md:7
  49. msgid ""
  50. "The second mailing is mainly for developers. [Join dev@freshrss.org](https://"
  51. "freshrss.org/mailman/listinfo/dev)"
  52. msgstr ""
  53. "Le deuxième mailing s'adresse principalement aux développeurs. [Rejoignez "
  54. "dev@freshrss.org](https://freshrss.org/mailman/listinfo/dev)"
  55. #. type: Title ##
  56. #: en/./contributing.md:8
  57. #, no-wrap
  58. msgid "Report a bug"
  59. msgstr "Signaler un bug"
  60. #. type: Plain text
  61. #: en/./contributing.md:11
  62. msgid ""
  63. "Have you found a bug? Don't panic, here are some steps to report it with "
  64. "ease:"
  65. msgstr ""
  66. "Avez-vous trouvé un bogue ? Ne paniquez pas, voici quelques étapes pour le "
  67. "signaler facilement :"
  68. #. type: Bullet: '1. '
  69. #: en/./contributing.md:15
  70. msgid ""
  71. "Search for it on [the bug tracker](https://github.com/FreshRSS/FreshRSS/"
  72. "issues) (don't forget to use the search bar)."
  73. msgstr ""
  74. "Cherche sur [le bug tracker](https://github.com/FreshRSS/FreshRSS/issues) "
  75. "(n'oubliez pas d'utiliser la barre de recherche)."
  76. #. type: Bullet: '2. '
  77. #: en/./contributing.md:15
  78. msgid ""
  79. "If you find a similar bug, don't hesitate to post a comment to add more "
  80. "importance to the related ticket."
  81. msgstr ""
  82. "Si vous constatez un bogue similaire, n'hésitez pas à poster un commentaire "
  83. "pour ajouter de l'importance au ticket correspondant."
  84. #. type: Bullet: '3. '
  85. #: en/./contributing.md:15
  86. msgid ""
  87. "If you didn't find it, [open a new ticket](https://github.com/FreshRSS/"
  88. "FreshRSS/issues/new)."
  89. msgstr ""
  90. "Si vous ne l'avez pas trouvé, [ouvrez un nouveau ticket](https://github.com/"
  91. "FreshRSS/FreshRSS/issues/new)."
  92. #. type: Plain text
  93. #: en/./contributing.md:17
  94. msgid ""
  95. "If you have to create a new ticket, please try to keep in mind the following "
  96. "advice:"
  97. msgstr ""
  98. "Si vous devez créer un nouveau ticket, essayez de garder les conseils "
  99. "suivants :"
  100. #. type: Bullet: '* '
  101. #: en/./contributing.md:20
  102. msgid ""
  103. "Give an explicit title to the ticket so it will be easier to find it later."
  104. msgstr ""
  105. "Donnez un titre explicite au ticket pour le retrouver plus facilement plus "
  106. "tard."
  107. #. type: Bullet: '* '
  108. #: en/./contributing.md:20
  109. msgid ""
  110. "Be as exhaustive as possible in the description: what did you do? What is "
  111. "the bug? What are the steps to reproduce the bug?"
  112. msgstr ""
  113. "Soyez aussi exhaustif que possible dans la description : qu'avez-vous fait ? "
  114. "Quel est le bogue ? Quelles sont les étapes pour reproduire le bogue ?"
  115. #. type: Plain text
  116. #: en/./contributing.md:22
  117. msgid "We also need some information:"
  118. msgstr "Nous avons aussi besoin de quelques informations :"
  119. #. type: Bullet: '* '
  120. #: en/./contributing.md:27
  121. msgid ""
  122. "Your FreshRSS version (on the about page or in the `constants.php` file)"
  123. msgstr ""
  124. "Votre version de FreshRSS (sur la page A propos) ou le fichier `constants."
  125. "php`)"
  126. #. type: Bullet: '* '
  127. #: en/./contributing.md:27
  128. msgid "Your server configuration: the type of hosting and the PHP version"
  129. msgstr "Votre configuration de serveur : type d'hébergement, version PHP"
  130. #. type: Bullet: '* '
  131. #: en/./contributing.md:27
  132. msgid "Your storage system (SQLite, MySQL, MariaDB, PostgreSQL)"
  133. msgstr ""
  134. "Quelle base de données : SQLite, MySQL, MariaDB, PostgreSQL ? Quelle "
  135. "version ?"
  136. #. type: Bullet: '* '
  137. #: en/./contributing.md:27
  138. msgid ""
  139. "If possible, the related logs (PHP logs and FreshRSS logs under `data/users/"
  140. "your_user/log.txt`)"
  141. msgstr ""
  142. "Si possible, les logs associés (logs PHP et logs FreshRSS sous `data/users/"
  143. "your_user/log.txt`)"
  144. #. type: Title ##
  145. #: en/./contributing.md:28
  146. #, no-wrap
  147. msgid "Fix a bug"
  148. msgstr "Corriger un bogue"
  149. #. type: Plain text
  150. #: en/./contributing.md:31
  151. msgid ""
  152. "Would you like to fix a bug? For optimum coordination between collaborators, "
  153. "you should follow these indications:"
  154. msgstr ""
  155. "Voulez-vous corriger un bogue ? Pour maintenir une grande coordination entre "
  156. "les collaborateurs, vous devrez suivre ces indications :"
  157. #. type: Bullet: '1. '
  158. #: en/./contributing.md:36
  159. msgid ""
  160. "Be sure the bug is associated with a ticket and indicate that you'll work on "
  161. "it."
  162. msgstr ""
  163. "Assurez-vous que le bogue est associé à un ticket et indiquez que vous allez "
  164. "travailler sur le bogue."
  165. #. type: Bullet: '2. '
  166. #: en/./contributing.md:36
  167. msgid ""
  168. "[Fork the project repository](https://help.github.com/articles/fork-a-repo/)."
  169. msgstr ""
  170. "[Fork du répertoire de projet](https://help.github.com/articles/fork-a-"
  171. "repo/)."
  172. #. type: Bullet: '3. '
  173. #: en/./contributing.md:36
  174. msgid ""
  175. "[Create a new branch](https://help.github.com/articles/creating-and-deleting-"
  176. "branches-within-your-repository/). The name of the branch should be clear, "
  177. "and ideally prefixed by the related ticket id. For instance, `783-"
  178. "contributing-file` to fix [ticket #783](https://github.com/FreshRSS/FreshRSS/"
  179. "issues/783)."
  180. msgstr ""
  181. "[Créez une nouvelle branche](https://help.github.com/articles/creating-and-"
  182. "deleting-branches-within-your-repository/). Le nom de la branche doit être "
  183. "clair, et idéalement préfixé par l'identifiant du ticket correspondant. Par "
  184. "exemple, `783-contributing-file` pour réparer [ticket #783](https://github."
  185. "com/FreshRSS/FreshRSS/issues/783)."
  186. #. type: Bullet: '4. '
  187. #: en/./contributing.md:36
  188. msgid ""
  189. "Make your changes to your fork and [send a pull request](https://help.github."
  190. "com/articles/using-pull-requests/)."
  191. msgstr ""
  192. "Ajoutez vos modifications à votre fork et [ouvrez une demande de pull "
  193. "request](https://help.github.com/articles/using-pull-requests/)."
  194. #. type: Plain text
  195. #: en/./contributing.md:38
  196. msgid ""
  197. "If you have to write code, please follow [our coding style recommendations]"
  198. "(developers/01_First_steps.md)."
  199. msgstr ""
  200. "Si vous devez écrire du code, veuillez suivre [nos recommandations de style "
  201. "de codage](developers/01_First_steps.md)."
  202. #. type: Plain text
  203. #: en/./contributing.md:40
  204. #, no-wrap
  205. msgid "**Tip:** if you're searching for easy-to-fix bugs, please have a look at the \"[good first issue](https://github.com/FreshRSS/FreshRSS/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22)\" ticket label.\n"
  206. msgstr "**Conseil : **si vous cherchez des bugs faciles à corriger, jetez un coup d'oeil à la vignette \"[good first issue](https://github.com/FreshRSS/FreshRSS/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22)\".\n"
  207. #. type: Title ##
  208. #: en/./contributing.md:41
  209. #, no-wrap
  210. msgid "Submit an idea"
  211. msgstr "Soumettre une idée"
  212. #. type: Plain text
  213. #: en/./contributing.md:44
  214. msgid ""
  215. "You have great ideas, yes! Don't be shy and open [a new ticket](https://"
  216. "github.com/FreshRSS/FreshRSS/issues/new) on our bug tracker to ask if we can "
  217. "implement it. The greatest ideas often come from the shyest suggestions!"
  218. msgstr ""
  219. "Vous avez de bonnes idées, oui ! Ne soyez pas timide et ouvrez [un nouveau "
  220. "ticket](https://github.com/FreshRSS/FreshRSS/issues/new) sur notre tracker "
  221. "bogue pour nous demander si nous pouvons le mettre en œuvre. Les plus "
  222. "grandes idées viennent souvent des suggestions les plus timides !"
  223. #. type: Plain text
  224. #: en/./contributing.md:46
  225. msgid "If your idea is nice, we'll have a look at it."
  226. msgstr "Si votre idée est bonne, nous y jetterons un coup d'oeil."
  227. #. type: Title ##
  228. #: en/./contributing.md:47
  229. #, no-wrap
  230. msgid "Contribute to internationalization (i18n)"
  231. msgstr "Contribuer à l'internationalisation (i18n)"
  232. #. type: Plain text
  233. #: en/./contributing.md:50
  234. msgid ""
  235. "If you want to improve internationalization, please open a new ticket first "
  236. "and follow the advice from the *Fix a bug* section."
  237. msgstr ""
  238. "Si vous voulez améliorer l'internationalisation, ouvrez d'abord un nouveau "
  239. "ticket et suivez les conseils de la section *Fixer un bogue*."
  240. #. type: Plain text
  241. #: en/./contributing.md:52
  242. msgid "Translations are present in the subdirectories of `./app/i18n/`."
  243. msgstr ""
  244. "Les traductions sont disponibles dans les sous-répertoires de `./app/i18n/`."
  245. #. type: Plain text
  246. #: en/./contributing.md:54
  247. msgid ""
  248. "We're working on a better way to handle internationalization, but don't "
  249. "hesitate to suggest any ideas!"
  250. msgstr ""
  251. "Nous travaillons sur une meilleure façon de gérer l'internationalisation "
  252. "mais n'hésitez pas à nous suggérer des idées !"
  253. #. type: Title ##
  254. #: en/./contributing.md:55
  255. #, no-wrap
  256. msgid "Contribute to documentation"
  257. msgstr "Contribuer à la documentation"
  258. #. type: Plain text
  259. #: en/./contributing.md:58
  260. msgid ""
  261. "The documentation needs a lot of improvements in order to be more useful to "
  262. "new contributors and we are working on it. If you want to give some help, "
  263. "meet us in the main repositories [docs directory](https://github.com/"
  264. "FreshRSS/FreshRSS/tree/master/docs)!"
  265. msgstr ""
  266. "Il ne vous aura pas échappé que la documentation est encore un peu vide… il "
  267. "y a énormément de choses à faire ! Si vous souhaitez aider à écrire quelques "
  268. "pages, rendez-vous dans les principaux dépôts[fichier docs](https://github."
  269. "com/FreshRSS/FreshRSS/tree/master/docs) !"
  270. #. type: Title #
  271. #: en/./developers/01_First_steps.md:1
  272. #, no-wrap
  273. msgid "Environment configuration (Docker)"
  274. msgstr "Configurer son environnement (Docker)"
  275. #. type: Plain text
  276. #: en/./developers/01_First_steps.md:4
  277. msgid ""
  278. "FreshRSS is built with PHP and uses a homemade framework, Minz. The "
  279. "dependencies are directly included in the source code, so you don't need "
  280. "Composer."
  281. msgstr ""
  282. "FreshRSS est construit en PHP et utilise le framework Minz. Les "
  283. "dépendancessont directement incluses dans le code source, donc vous n'avez "
  284. "pas besoin d'utiliser Composer."
  285. #. type: Plain text
  286. #: en/./developers/01_First_steps.md:6
  287. msgid ""
  288. "There are various ways to configure your development environment. The "
  289. "easiest and most supported method is based on Docker, which is the solution "
  290. "documented below. If you already have a working PHP environment, you "
  291. "probably don't need it."
  292. msgstr ""
  293. "Il existe plusieurs façons de configurer votre environnement "
  294. "dedéveloppement. La méthode la plus simple et la plus supportée est basée "
  295. "surDocker. C'est la solution qui est documentée ci-dessous. Si vous avez "
  296. "déjà unenvironnement PHP fonctionnel, vous n'en avez probablement pas besoin."
  297. #. type: Plain text
  298. #: en/./developers/01_First_steps.md:8
  299. msgid ""
  300. "We assume here that you use a GNU/Linux distribution, capable of running "
  301. "Docker. Otherwise, you'll have to adapt the commands accordingly."
  302. msgstr ""
  303. "Nous supposons ici que vous utilisez une distribution GNU/Linux, capable "
  304. "d'exécuter Docker. Sinon, vous devrez adapter les commandes en conséquence."
  305. #. type: Plain text
  306. #: en/./developers/01_First_steps.md:10
  307. msgid ""
  308. "The commands that follow have to be executed in a console. They start by `$` "
  309. "when commands need to be executed as normal user, and by `#` when they need "
  310. "to be executed as root user. You don't have to type these characters. A path "
  311. "may be indicated before these characters to help you identify where they "
  312. "need to be executed. For instance, `app$ echo 'Hello World'` indicates that "
  313. "you have to execute `echo` command in the `app/` directory."
  314. msgstr ""
  315. "Les commandes qui suivent doivent être exécutées dans une console. Ils "
  316. "commencent par `$` quand les commandes doivent être exécutées en tant "
  317. "qu'utilisateur normal, et par `#` quand elles doivent être exécutées en tant "
  318. "qu'utilisateur root. Vous n'avez pas besoin de taper ces caractères. Un "
  319. "chemin d'accès peut être indiqué devant ces caractères pour vous aider à "
  320. "identifier où ils doivent être exécutés. Par exemple, `app$ echo 'Hello "
  321. "World'` indique que vous devez exécuter la commande `echo` dans le "
  322. "répertoire `app/`."
  323. #. type: Plain text
  324. #: en/./developers/01_First_steps.md:12
  325. msgid ""
  326. "First, you need to install [Docker](https://docs.docker.com/install/linux/"
  327. "docker-ce/ubuntu/)."
  328. msgstr ""
  329. "Tout d'abord, vous devez installer [Docker](https://docs.docker.com/install/"
  330. "linux/docker-ce/ubuntu/)."
  331. #. type: Plain text
  332. #: en/./developers/01_First_steps.md:14
  333. msgid "Once you're done, clone the repository with:"
  334. msgstr ""
  335. "Une fois que c'est fait, clonez le dépôt de code de la manière suivante :"
  336. #. type: Code fence info string
  337. #: en/./developers/01_First_steps.md:15 en/./developers/01_First_steps.md:24
  338. #: en/./developers/01_First_steps.md:34 en/./developers/01_First_steps.md:42
  339. #: en/./developers/01_First_steps.md:50 en/./developers/03_Running_tests.md:9
  340. #: en/./developers/03_Running_tests.md:17
  341. #, no-wrap
  342. msgid "console"
  343. msgstr "console"
  344. #. type: Plain text
  345. #: en/./developers/01_First_steps.md:15
  346. #, no-wrap
  347. msgid ""
  348. "$ git clone https://github.com/FreshRSS/FreshRSS.git\n"
  349. "$ cd FreshRSS\n"
  350. msgstr ""
  351. "$ git clone https://github.com/FreshRSS/FreshRSS.git\n"
  352. "$ cd FreshRSS\n"
  353. #. type: Plain text
  354. #: en/./developers/01_First_steps.md:21
  355. msgid ""
  356. "Note that, if you want to contribute, you have to fork the repository first "
  357. "and clone your fork instead of the \"root\" one. Adapt the commands in "
  358. "consequence."
  359. msgstr ""
  360. "Notez que, pour contribuer, vous devrez d'abord « forker » ce dépôt de code "
  361. "(ou dépôt de code référent) et cloner votre « fork » à la place de ce dépôt. "
  362. "Adaptez les commandes en conséquence."
  363. #. type: Plain text
  364. #: en/./developers/01_First_steps.md:23
  365. msgid "Then, the only command you need to know is the following:"
  366. msgstr "Ensuite, la seule commande que vous devez connaître est la suivante :"
  367. #. type: Plain text
  368. #: en/./developers/01_First_steps.md:24
  369. #, no-wrap
  370. msgid "$ make start\n"
  371. msgstr "$ make start\n"
  372. #. type: Plain text
  373. #: en/./developers/01_First_steps.md:29
  374. msgid ""
  375. "This might take some time while Docker downloads the image. If your user "
  376. "isn't in the `docker` group, you'll need to prepend the command with `sudo`."
  377. msgstr ""
  378. "Cela peut prendre un certain temps pour que Docker télécharge l'image "
  379. "utilisée. Dans le cas où la commande échoue pour un problème de droit, il "
  380. "faudra soit ajouter votre utilisateur au groupe `docker`, soit relancer la "
  381. "commande en la préfixant par `sudo`."
  382. #. type: Plain text
  383. #: en/./developers/01_First_steps.md:31
  384. #, no-wrap
  385. msgid "**You can now access FreshRSS at [http://localhost:8080](http://localhost:8080).** Just follow the install process and select the SQLite database.\n"
  386. msgstr "**Vous pouvez maintenant accéder à FreshRSS à [http://localhost:8080](http://localhost:8080).** Suivez simplement le processus d'installation et sélectionnez la base de données SQLite.\n"
  387. #. type: Plain text
  388. #: en/./developers/01_First_steps.md:33
  389. #, no-wrap
  390. msgid "You can stop the containers by typing <kbd>Control</kbd> + <kbd>c</kbd> or with the following command, in another terminal:\n"
  391. msgstr "Vous pouvez arrêter les conteneurs en tapant <kbd>Control</kbd> + <kbd>c</kbd> ou avec la commande suivante, dans un autre terminal:\n"
  392. #. type: Plain text
  393. #: en/./developers/01_First_steps.md:34
  394. #, no-wrap
  395. msgid "$ make stop\n"
  396. msgstr "$ make stop\n"
  397. #. type: Plain text
  398. #: en/./developers/01_First_steps.md:39
  399. msgid ""
  400. "If you're interested in the configuration, the `make` commands are defined "
  401. "in the [`Makefile`](/Makefile)."
  402. msgstr ""
  403. "Si la configuration vous intéresse, les commandes `make' sont définies dans "
  404. "le fichier [`Makefile`](/Makefile)."
  405. #. type: Plain text
  406. #: en/./developers/01_First_steps.md:41
  407. msgid ""
  408. "If you need to use a different tag image (default is `alpine`), you can set "
  409. "the `TAG` environment variable:"
  410. msgstr ""
  411. "Si vous avez besoin d'utiliser une image Docker identifiée par un tag "
  412. "différent (par défaut `alpine`), vous pouvez surcharger de la manière "
  413. "suivante la variable d'environnement `TAG` au moment de l'exécution de la "
  414. "commande :"
  415. #. type: Plain text
  416. #: en/./developers/01_First_steps.md:42
  417. #, no-wrap
  418. msgid "$ TAG=arm make start\n"
  419. msgstr "$ TAG=arm make start\n"
  420. #. type: Plain text
  421. #: en/./developers/01_First_steps.md:47
  422. msgid ""
  423. "You can find the full list of available tags [on the Docker hub](https://hub."
  424. "docker.com/r/freshrss/freshrss/tags)."
  425. msgstr ""
  426. "Vous pouvez trouver la liste complète des tags disponibles [sur le hub "
  427. "Docker](https://hub.docker.com/r/freshrss/freshrss/tags)."
  428. #. type: Plain text
  429. #: en/./developers/01_First_steps.md:49
  430. msgid ""
  431. "If you want to build the Docker image yourself, you can use the following "
  432. "command:"
  433. msgstr ""
  434. "Si vous voulez construire l'image Docker, vous pouvez lancer la commande "
  435. "suivante :"
  436. #. type: Plain text
  437. #: en/./developers/01_First_steps.md:50
  438. #, no-wrap
  439. msgid ""
  440. "$ make build\n"
  441. "$ # or\n"
  442. "$ TAG=arm make build\n"
  443. msgstr ""
  444. "$ make build\n"
  445. "$ # ou\n"
  446. "$ TAG=arm make build\n"
  447. #. type: Plain text
  448. #: en/./developers/01_First_steps.md:57
  449. msgid ""
  450. "The `TAG` variable can be anything (e.g. `local`). You can target a specific "
  451. "architecture by adding `-alpine` or `-arm` at the end of the tag (e.g. "
  452. "`local-arm`)."
  453. msgstr ""
  454. "La valeur de la variable `TAG` peut contenir n'importe quelle valeur (par "
  455. "exemple `local`). Vous pouvez cibler une architecture spécifique en ajoutant "
  456. "`-alpine` ou `-arm` à la fin du tag (par exemple `local-arm`)."
  457. #. type: Title #
  458. #: en/./developers/01_First_steps.md:58
  459. #, no-wrap
  460. msgid "Project architecture"
  461. msgstr "Architecture du projet"
  462. #. type: Plain text
  463. #: en/./developers/01_First_steps.md:61 en/./developers/03_Backend/02_Minz.md:4
  464. #: en/./developers/03_Backend/02_Minz.md:8
  465. #: en/./developers/03_Backend/02_Minz.md:12
  466. #: en/./developers/03_Backend/02_Minz.md:16
  467. #: en/./developers/03_Backend/02_Minz.md:20
  468. #: en/./developers/03_Backend/02_Minz.md:24
  469. #: en/./developers/03_Backend/02_Minz.md:27
  470. #: en/./developers/03_Backend/04_Changing_source_code.md:4
  471. #: en/./developers/03_Backend/04_Changing_source_code.md:8
  472. #: en/./developers/03_Backend/04_Changing_source_code.md:12
  473. #: en/./developers/03_Backend/04_Changing_source_code.md:15
  474. #: en/./developers/03_Backend/05_Extensions.md:342
  475. #: en/./developers/03_Backend/05_Extensions.md:381
  476. #: en/./developers/04_Frontend/01_View_files.md:4
  477. #: en/./developers/04_Frontend/01_View_files.md:8
  478. #: en/./developers/04_Frontend/01_View_files.md:12
  479. #: en/./developers/04_Frontend/01_View_files.md:15
  480. #: en/./developers/04_Frontend/02_Design.md:4
  481. #: en/./developers/04_Frontend/02_Design.md:8
  482. #: en/./developers/04_Frontend/02_Design.md:11 en/./users/03_Main_view.md:4
  483. #: en/./users/03_Main_view.md:8 en/./users/03_Main_view.md:12
  484. #: en/./users/04_Subscriptions.md:4 en/./users/04_Subscriptions.md:8
  485. #: en/./users/04_Subscriptions.md:19 en/./users/05_Configuration.md:70
  486. #: en/./users/05_Configuration.md:74 en/./users/05_Configuration.md:128
  487. #: en/./users/05_Configuration.md:153 en/./users/05_Configuration.md:157
  488. #: en/./users/05_Configuration.md:161
  489. #, no-wrap
  490. msgid "**TODO**\n"
  491. msgstr "**À FAIRE**\n"
  492. #. type: Title #
  493. #: en/./developers/01_First_steps.md:62
  494. #, no-wrap
  495. msgid "Extensions"
  496. msgstr "Extensions"
  497. #. type: Plain text
  498. #: en/./developers/01_First_steps.md:65
  499. msgid ""
  500. "If you want to create your own FreshRSS extension, take a look at the "
  501. "[extension documentation](03_Backend/05_Extensions.md)."
  502. msgstr ""
  503. "Si vous souhaitez créer votre propre extension FreshRSS, consultez la "
  504. "[documentation de l'extension](03_Backend/05_Extensions.md)."
  505. #. type: Title #
  506. #: en/./developers/01_First_steps.md:66
  507. #, no-wrap
  508. msgid "Coding style"
  509. msgstr "Style de codage"
  510. #. type: Plain text
  511. #: en/./developers/01_First_steps.md:69
  512. msgid ""
  513. "If you want to contribute to the source code, it's important to follow the "
  514. "project's coding style. The actual code doesn't always follow it throughout "
  515. "the project, but we should fix it every time an opportunity presents itself."
  516. msgstr ""
  517. "Si vous désirez contribuer au code, il est important de respecter le style "
  518. "de codage suivant. Le code actuel ne le respecte pas entièrement mais il est "
  519. "de notre devoir à tous de le changer dès que l'occasion se présente."
  520. #. type: Plain text
  521. #: en/./developers/01_First_steps.md:71
  522. msgid ""
  523. "Contributions which don't follow the coding style will be rejected as long "
  524. "as the coding style is not fixed."
  525. msgstr ""
  526. "Aucune nouvelle contribution ne respectant pas ces règles ne sera acceptée "
  527. "tant que les corrections nécessaires ne sont pas appliquées."
  528. #. type: Title ##
  529. #: en/./developers/01_First_steps.md:72
  530. #, no-wrap
  531. msgid "Spaces, tabs and other whitespace characters"
  532. msgstr "Espaces, tabulations et autres caractères blancs"
  533. #. type: Title ###
  534. #: en/./developers/01_First_steps.md:74
  535. #, no-wrap
  536. msgid "Indentation"
  537. msgstr "Indentation"
  538. #. type: Plain text
  539. #: en/./developers/01_First_steps.md:76
  540. msgid "Code indentation must use tabs."
  541. msgstr ""
  542. "L'indentation du code doit être faite impérativement avec des tabulations."
  543. #. type: Title ###
  544. #: en/./developers/01_First_steps.md:77
  545. #, no-wrap
  546. msgid "Alignment"
  547. msgstr "Alignement"
  548. #. type: Plain text
  549. #: en/./developers/01_First_steps.md:80
  550. msgid ""
  551. "Once the code has been correctly indented, it might be useful to align it "
  552. "for ease of reading. In that case, please use spaces."
  553. msgstr ""
  554. "Une fois l'indentation faite, il peut être nécessaire de faire un alignement "
  555. "pour simplifier la lecture. Dans ce cas, il faut utiliser les espaces."
  556. #. type: Code fence info string
  557. #: en/./developers/01_First_steps.md:81 en/./developers/01_First_steps.md:111
  558. #: en/./developers/01_First_steps.md:123 en/./developers/01_First_steps.md:158
  559. #: en/./developers/01_First_steps.md:173 en/./developers/01_First_steps.md:186
  560. #: en/./developers/01_First_steps.md:196 en/./developers/01_First_steps.md:213
  561. #: en/./developers/01_First_steps.md:228
  562. #: en/./developers/03_Backend/05_Extensions.md:47
  563. #: en/./developers/03_Backend/05_Extensions.md:88
  564. #: en/./developers/03_Backend/05_Extensions.md:130
  565. #: en/./developers/03_Backend/05_Extensions.md:149
  566. #: en/./developers/03_Backend/05_Extensions.md:166
  567. #: en/./developers/03_Backend/05_Extensions.md:188
  568. #: en/./developers/03_Backend/05_Extensions.md:225
  569. #: en/./developers/05_Release_new_version.md:53 en/./users/06_Fever_API.md:107
  570. #, no-wrap
  571. msgid "php"
  572. msgstr "php"
  573. #. type: Plain text
  574. #: en/./developers/01_First_steps.md:81
  575. #, no-wrap
  576. msgid ""
  577. "$result = a_function_with_a_really_long_name($param1, $param2,\n"
  578. " $param3, $param4);\n"
  579. msgstr ""
  580. "$resultat = une_fonction_avec_un_nom_long($param1, $param2,\n"
  581. " $param3, $param4);\n"
  582. #. type: Title ###
  583. #: en/./developers/01_First_steps.md:86
  584. #, no-wrap
  585. msgid "End of line"
  586. msgstr "Fin de ligne"
  587. #. type: Plain text
  588. #: en/./developers/01_First_steps.md:89
  589. msgid ""
  590. "The newline character must be a line feed (LF), which is the default line "
  591. "ending on *NIX systems. This character must not follow other white space."
  592. msgstr ""
  593. "Le caractère de fin de ligne doit être un saut de ligne (LF) qui est le "
  594. "caractère de fin de ligne des systèmes *NIX. Ce caractère ne doit pas être "
  595. "précédé par des caractères blanc."
  596. #. type: Plain text
  597. #: en/./developers/01_First_steps.md:91
  598. msgid ""
  599. "You can verify if there is any unintended white space at the end of line "
  600. "with the following Git command:"
  601. msgstr ""
  602. "Il est possible de vérifier la présence de caractères blancs en fin de ligne "
  603. "grâce à Git avec la commande suivante :"
  604. #. type: Code fence info string
  605. #: en/./developers/01_First_steps.md:92 en/./developers/02_Github.md:80
  606. #: en/./developers/02_Github.md:85 en/./developers/02_Github.md:90
  607. #: en/./developers/02_Github.md:96 en/./developers/02_Github.md:102
  608. #: en/./developers/05_Release_new_version.md:15
  609. #: en/./developers/05_Release_new_version.md:101
  610. #, no-wrap
  611. msgid "bash"
  612. msgstr "bash"
  613. #. type: Plain text
  614. #: en/./developers/01_First_steps.md:92
  615. #, no-wrap
  616. msgid ""
  617. "# command to check files before adding them in the Git index\n"
  618. "git diff --check\n"
  619. "# command to check files after adding them in the Git index\n"
  620. "git diff --check --cached\n"
  621. msgstr ""
  622. "# commande à lancer avant l'ajout des fichiers dans l'index\n"
  623. "git diff --check\n"
  624. "# commande à lancer après l'ajout des fichiers dans l'index mais avant le commit\n"
  625. "git diff --check --cached\n"
  626. #. type: Title ###
  627. #: en/./developers/01_First_steps.md:99 en/./developers/01_First_steps.md:220
  628. #, no-wrap
  629. msgid "End of file"
  630. msgstr "Fin de fichier"
  631. #. type: Plain text
  632. #: en/./developers/01_First_steps.md:102
  633. msgid "Every file must end by an empty line."
  634. msgstr "Chaque fichier doit se terminer par une ligne vide."
  635. #. type: Title ###
  636. #: en/./developers/01_First_steps.md:103
  637. #, no-wrap
  638. msgid "Commas, dots and semi-columns"
  639. msgstr "Le cas de la virgule, du point et du point-virgule"
  640. #. type: Plain text
  641. #: en/./developers/01_First_steps.md:106
  642. msgid ""
  643. "There should no space before those characters, but there should be one after."
  644. msgstr "Il n'y a pas d'espace avant ces caractères, il y en a un après."
  645. #. type: Title ###
  646. #: en/./developers/01_First_steps.md:107 en/./developers/01_First_steps.md:210
  647. #, no-wrap
  648. msgid "Operators"
  649. msgstr "Le cas des opérateurs"
  650. #. type: Plain text
  651. #: en/./developers/01_First_steps.md:110
  652. msgid "There should be a space before and after every operator."
  653. msgstr "Chaque opérateur est entouré d'espaces."
  654. #. type: Plain text
  655. #: en/./developers/01_First_steps.md:111
  656. #, no-wrap
  657. msgid ""
  658. "if ($a == 10) {\n"
  659. "\t// do something\n"
  660. "}\n"
  661. "\n"
  662. "echo $a ? 1 : 0;\n"
  663. msgstr ""
  664. "if ($a == 10) {\n"
  665. "\t// faire quelque chose\n"
  666. "}\n"
  667. "\n"
  668. "echo $a ? 1 : 0;\n"
  669. #. type: Title ###
  670. #: en/./developers/01_First_steps.md:119
  671. #, no-wrap
  672. msgid "Parentheses"
  673. msgstr "Le cas des parenthèses"
  674. #. type: Plain text
  675. #: en/./developers/01_First_steps.md:122
  676. msgid ""
  677. "There should be no spaces in between brackets. There should be no spaces "
  678. "before the opening bracket, except if it's after a keyword. There shouldn't "
  679. "be any spaces after the closing bracket, except if it's followed by a curly "
  680. "bracket."
  681. msgstr ""
  682. "Il n'y a pas d'espaces entre des parenthèses. Il n'y a pas d'espaces avant "
  683. "une parenthèse ouvrante sauf si elle est précédée d'un mot-clé. Il n'y a pas "
  684. "d'espaces après une parenthèse fermante sauf si elle est suivie d'une "
  685. "accolade ouvrante."
  686. #. type: Plain text
  687. #: en/./developers/01_First_steps.md:123
  688. #, no-wrap
  689. msgid ""
  690. "if ($a == 10) {\n"
  691. "\t// do something\n"
  692. "}\n"
  693. "\n"
  694. "if ((int)$a == 10) {\n"
  695. "\t// do something\n"
  696. "}\n"
  697. msgstr ""
  698. "if ($a == 10) {\n"
  699. "\t// faire quelque chose\n"
  700. "}\n"
  701. "\n"
  702. "if ((int)$a == 10) {\n"
  703. "\t// faire quelque chose\n"
  704. "}\n"
  705. #. type: Title ###
  706. #: en/./developers/01_First_steps.md:133
  707. #, no-wrap
  708. msgid "With chained functions"
  709. msgstr "Le cas des fonctions chainées"
  710. #. type: Plain text
  711. #: en/./developers/01_First_steps.md:136
  712. msgid ""
  713. "It happens most of the time in Javascript files. When there are chained "
  714. "functions with closures and callback functions, it's hard to understand the "
  715. "code if not properly formatted. In those cases, we add a new indent level "
  716. "for the complete instruction and reset the indent for a new instruction on "
  717. "the same level."
  718. msgstr ""
  719. "Ce cas se présente le plus souvent en Javascript. Quand on a des fonctions "
  720. "chainées, des fonctions anonymes ainsi que des fonctions de rappels, il est "
  721. "très facile de se perdre. Dans ce cas là, on ajoute une indentation "
  722. "supplémentaire pour toute l'instruction et on revient au même niveau pour "
  723. "une instruction de même niveau."
  724. #. type: Code fence info string
  725. #: en/./developers/01_First_steps.md:137
  726. #, no-wrap
  727. msgid "javascript"
  728. msgstr "javascript"
  729. #. type: Plain text
  730. #: en/./developers/01_First_steps.md:137
  731. #, no-wrap
  732. msgid ""
  733. "// First instruction\n"
  734. "shortcut.add(shortcuts.mark_read, function () {\n"
  735. "\t\t//...\n"
  736. "\t}, {\n"
  737. "\t\t'disable_in_input': true\n"
  738. "\t});\n"
  739. "// Second instruction\n"
  740. "shortcut.add(\"shift+\" + shortcuts.mark_read, function () {\n"
  741. "\t\t//...\n"
  742. "\t}, {\n"
  743. "\t\t'disable_in_input': true\n"
  744. "\t});\n"
  745. msgstr ""
  746. "// Première instruction\n"
  747. "shortcut.add(shortcuts.mark_read, function () {\n"
  748. "\t\t//...\n"
  749. "\t}, {\n"
  750. "\t\t'disable_in_input': true\n"
  751. "\t});\n"
  752. "// Deuxième instruction\n"
  753. "shortcut.add(\"shift+\" + shortcuts.mark_read, function () {\n"
  754. "\t\t//...\n"
  755. "\t}, {\n"
  756. "\t\t'disable_in_input': true\n"
  757. "\t});\n"
  758. #. type: Title ##
  759. #: en/./developers/01_First_steps.md:152
  760. #, no-wrap
  761. msgid "Line length"
  762. msgstr "Longueur des lignes"
  763. #. type: Plain text
  764. #: en/./developers/01_First_steps.md:155
  765. msgid ""
  766. "Lines should strive to be shorter than 80 characters. However, this limit "
  767. "may be extended to 100 characters when strictly necessary."
  768. msgstr ""
  769. "Les lignes ne doivent pas dépasser 80 caractères. Il est cependant autorisé "
  770. "exceptionnellement de dépasser cette limite s'il n'est pas possible de la "
  771. "respecter mais en aucun cas, les lignes ne doivent dépasser les 100 "
  772. "caractères."
  773. #. type: Plain text
  774. #: en/./developers/01_First_steps.md:157
  775. msgid "With functions, parameters can be declared on multiple lines."
  776. msgstr ""
  777. "Dans le cas des fonctions, les paramètres peuvent être déclarés sur "
  778. "plusieurs lignes."
  779. #. type: Plain text
  780. #: en/./developers/01_First_steps.md:158
  781. #, no-wrap
  782. msgid ""
  783. "function my_function($param_1, $param_2,\n"
  784. " $param_3, $param_4) {\n"
  785. "\t// do something\n"
  786. "}\n"
  787. msgstr ""
  788. "function ma_fonction($param_1, $param_2,\n"
  789. " $param_3, $param_4) {\n"
  790. "\t// faire quelque chose\n"
  791. "}\n"
  792. #. type: Title ##
  793. #: en/./developers/01_First_steps.md:165
  794. #, no-wrap
  795. msgid "Naming"
  796. msgstr "Nommage"
  797. #. type: Plain text
  798. #: en/./developers/01_First_steps.md:168
  799. msgid ""
  800. "All code elements (functions, classes, methods and variables) must describe "
  801. "their usage succinctly."
  802. msgstr ""
  803. "L'ensemble des éléments du code (fonctions, classes, méthodes et variables) "
  804. "doivent être nommés de manière à décrire leur usage de façon concise."
  805. #. type: Title ###
  806. #: en/./developers/01_First_steps.md:169
  807. #, no-wrap
  808. msgid "Functions and variables"
  809. msgstr "Fonctions et variables"
  810. #. type: Plain text
  811. #: en/./developers/01_First_steps.md:172
  812. msgid ""
  813. "Functions and variables must follow the \"snake case\" naming convention."
  814. msgstr ""
  815. "Les fonctions et les variables doivent suivre la convention \"snake case\"."
  816. #. type: Plain text
  817. #: en/./developers/01_First_steps.md:173
  818. #, no-wrap
  819. msgid ""
  820. "// a function\n"
  821. "function function_name() {\n"
  822. "\t// do something\n"
  823. "}\n"
  824. "// a variable\n"
  825. "$variable_name;\n"
  826. msgstr ""
  827. "// une fontion\n"
  828. "function nom_de_la_fontion() {\n"
  829. "\t// faire quelque chose\n"
  830. "}\n"
  831. "// une variable\n"
  832. "$nom_de_la_variable;\n"
  833. #. type: Title ###
  834. #: en/./developers/01_First_steps.md:182
  835. #, no-wrap
  836. msgid "Methods"
  837. msgstr "Méthodes"
  838. #. type: Plain text
  839. #: en/./developers/01_First_steps.md:185
  840. msgid "Methods must follow the \"lower camel case\" naming convention."
  841. msgstr "Les méthodes doivent suivre la convention \"lower camel case\"."
  842. #. type: Plain text
  843. #: en/./developers/01_First_steps.md:186
  844. #, no-wrap
  845. msgid ""
  846. "private function methodName() {\n"
  847. "\t// do something\n"
  848. "}\n"
  849. msgstr ""
  850. "private function nomDeLaMethode() {\n"
  851. "\t// faire quelque chose\n"
  852. "}\n"
  853. #. type: Title ###
  854. #: en/./developers/01_First_steps.md:192
  855. #, no-wrap
  856. msgid "Classes"
  857. msgstr "Classes"
  858. #. type: Plain text
  859. #: en/./developers/01_First_steps.md:195
  860. msgid "Classes must follow the \"upper camel case\" naming convention."
  861. msgstr "Les classes doivent suivre la convention \"upper camel case\"."
  862. #. type: Plain text
  863. #: en/./developers/01_First_steps.md:196
  864. #, no-wrap
  865. msgid "abstract class ClassName {}\n"
  866. msgstr "abstract class NomDeLaClasse {}\n"
  867. #. type: Title ##
  868. #: en/./developers/01_First_steps.md:200
  869. #, no-wrap
  870. msgid "Encoding"
  871. msgstr "Encodage"
  872. #. type: Plain text
  873. #: en/./developers/01_First_steps.md:203
  874. msgid "Files must be encoded with the UTF-8 character set."
  875. msgstr "Les fichiers doivent être encodés en UTF-8."
  876. #. type: Title ##
  877. #: en/./developers/01_First_steps.md:204
  878. #, no-wrap
  879. msgid "PHP compatibility"
  880. msgstr "Compatibilité PHP"
  881. #. type: Plain text
  882. #: en/./developers/01_First_steps.md:207
  883. msgid ""
  884. "Please ensure that your code works with the oldest PHP version officially "
  885. "supported by FreshRSS."
  886. msgstr ""
  887. "Assurez-vous que votre code fonctionne avec une version de PHP aussi "
  888. "ancienne que celle que FreshRSS supporte officiellement."
  889. #. type: Title ##
  890. #: en/./developers/01_First_steps.md:208
  891. #, no-wrap
  892. msgid "Miscellaneous"
  893. msgstr "Divers"
  894. #. type: Plain text
  895. #: en/./developers/01_First_steps.md:212
  896. msgid ""
  897. "Operators must be at the end of the line if a condition is split over more "
  898. "than one line."
  899. msgstr ""
  900. "Les opérateurs doivent être en fin de ligne dans le cas de conditions sur "
  901. "plusieurs lignes."
  902. #. type: Plain text
  903. #: en/./developers/01_First_steps.md:213
  904. #, no-wrap
  905. msgid ""
  906. "if ($a == 10 ||\n"
  907. " $a == 20) {\n"
  908. "\t// do something\n"
  909. "}\n"
  910. msgstr ""
  911. "if ($a == 10 ||\n"
  912. " $a == 20) {\n"
  913. "\t// faire quelque chose\n"
  914. "}\n"
  915. #. type: Plain text
  916. #: en/./developers/01_First_steps.md:223
  917. msgid ""
  918. "If the file contains only PHP code, the PHP closing tag must be omitted."
  919. msgstr ""
  920. "Si le fichier ne contient que du PHP, il ne doit pas comporter de balise "
  921. "fermante."
  922. #. type: Title ###
  923. #: en/./developers/01_First_steps.md:224
  924. #, no-wrap
  925. msgid "Arrays"
  926. msgstr "Tableaux"
  927. #. type: Plain text
  928. #: en/./developers/01_First_steps.md:227
  929. msgid ""
  930. "If an array declaration runs on more than one line, each element must be "
  931. "followed by a comma, including the last one."
  932. msgstr ""
  933. "Lors de l'écriture de tableaux sur plusieurs lignes, tous les éléments "
  934. "doivent être suivis d'une virgule (même le dernier)."
  935. #. type: Plain text
  936. #: en/./developers/01_First_steps.md:228
  937. #, no-wrap
  938. msgid ""
  939. "$variable = [\n"
  940. "\t\"value 1\",\n"
  941. "\t\"value 2\",\n"
  942. "\t\"value 3\",\n"
  943. "];\n"
  944. msgstr ""
  945. "$variable = [\n"
  946. "\t\"valeur 1\",\n"
  947. "\t\"valeur 2\",\n"
  948. "\t\"valeur 3\",\n"
  949. "];\n"
  950. #. type: Title #
  951. #: en/./developers/02_Github.md:1
  952. #, no-wrap
  953. msgid "Reporting a bug or a suggestion"
  954. msgstr "Remonter un problème ou une suggestion"
  955. #. type: Plain text
  956. #: en/./developers/02_Github.md:4
  957. msgid ""
  958. "Despite the care given to FreshRSS, it's still possible that bugs occur. The "
  959. "project is young and development is dynamic, so it can be corrected quickly. "
  960. "You might also have a feature in mind that doesn't yet exist. Regardless "
  961. "whether your idea seems silly, far-fetched, useless or too specific, please "
  962. "don't hesitate to propose it to us! \"Ideas in the air\" often find an "
  963. "attentive ear. It's new external perspectives that make the project evolve "
  964. "the most."
  965. msgstr ""
  966. "Malgré le soin apporté à FreshRSS, il se peut que des bugs apparaissent "
  967. "encore. Le projet est jeune et le développement dynamique, aussi celui-ci "
  968. "pourra être corrigé rapidement. Il se peut aussi que vous ayez en tête une "
  969. "fonctionnalité qui n'existe pas encore. Que celle-ci vous paraisse idiote, "
  970. "farfelue, inutile ou trop spécifique, il ne faut surtout pas hésiter à nous "
  971. "la proposer ! Très souvent des \"idées en l'air\" ont trouvé une oreille "
  972. "attentive. Ce sont les regards externes qui font le plus évoluer le projet."
  973. #. type: Plain text
  974. #: en/./developers/02_Github.md:6
  975. msgid ""
  976. "If you're convinced that you should be heard, here's how you can go about it."
  977. msgstr ""
  978. "Si vous êtes convaincus qu'il faut vous faire entendre, voici la marche à "
  979. "suivre."
  980. #. type: Title ##
  981. #: en/./developers/02_Github.md:7
  982. #, no-wrap
  983. msgid "On GitHub"
  984. msgstr "Sur GitHub"
  985. #. type: Plain text
  986. #: en/./developers/02_Github.md:10
  987. msgid ""
  988. "GitHub is the ideal platform to submit your requests. It allows us to "
  989. "discuss a problem or suggestion with others and it often generates new "
  990. "ideas. Let's not neglect this \"social\" aspect!"
  991. msgstr ""
  992. "GitHub est la plate-forme à privilégier pour vos demandes. En effet, cela "
  993. "nous permet de pouvoir discuter à plusieurs sur un problème ou une "
  994. "suggestion et de faire émerger, souvent, des idées nouvelles. Ne négligeons "
  995. "pas cet aspect \"social\" !"
  996. #. type: Bullet: ' 1. '
  997. #: en/./developers/02_Github.md:16
  998. msgid ""
  999. "[Go to the bug ticket manager](https://github.com/FreshRSS/FreshRSS/issues)"
  1000. msgstr ""
  1001. "[Rendez-vous sur le gestionnaire de tickets de bugs](https://github.com/"
  1002. "FreshRSS/FreshRSS/issues)"
  1003. #. type: Bullet: ' 2. '
  1004. #: en/./developers/02_Github.md:16
  1005. msgid ""
  1006. "Start by checking if a similar request hasn't already been made. If so, "
  1007. "please feel free to add your voice to the request."
  1008. msgstr ""
  1009. "Commencez par rechercher si une demande similaire n'a pas déjà été faite. Si "
  1010. "oui, n'hésitez pas à ajouter votre voix à la demande."
  1011. #. type: Bullet: ' 3. '
  1012. #: en/./developers/02_Github.md:16
  1013. msgid ""
  1014. "If your request is new, [open a new bug ticket](https://github.com/FreshRSS/"
  1015. "FreshRSS/issues/new)"
  1016. msgstr ""
  1017. "Si votre demande est nouvelle, [ouvrez un nouveau ticket de bug](https://"
  1018. "github.com/FreshRSS/FreshRSS/issues/new)"
  1019. #. type: Bullet: ' 4. '
  1020. #: en/./developers/02_Github.md:16
  1021. msgid ""
  1022. "Finally, write your request. If you're fluent in English, it's the preferred "
  1023. "language because it allows for discussion with the largest number of people."
  1024. msgstr ""
  1025. "Rédigez enfin votre demande. Si vous maitrisez l'anglais, c'est la langue à "
  1026. "privilégier car cela permet d'ouvrir la discussion à un plus grand nombre de "
  1027. "personnes. Sinon, ce n'est pas grave, continuez en français :)"
  1028. #. type: Bullet: ' 5. '
  1029. #: en/./developers/02_Github.md:16
  1030. msgid ""
  1031. "Please follow the tips below to make it easier to let your ticket be heard."
  1032. msgstr ""
  1033. "Merci de bien vouloir suivre les quelques conseils donnés plus bas pour "
  1034. "faciliter la prise en compte de votre ticket."
  1035. #. type: Title ##
  1036. #: en/./developers/02_Github.md:17
  1037. #, no-wrap
  1038. msgid "Informal"
  1039. msgstr "De façon informelle"
  1040. #. type: Plain text
  1041. #: en/./developers/02_Github.md:20
  1042. msgid ""
  1043. "Not everyone likes or uses GitHub for a variety of legitimate reasons. That "
  1044. "is why you can also contact us in a more informal way."
  1045. msgstr ""
  1046. "Tout le monde n'aime pas ou n'utilise pas GitHub pour des raisons aussi "
  1047. "diverses que légitimes. C'est pourquoi vous pouvez aussi nous contacter de "
  1048. "façon plus informelle."
  1049. #. type: Bullet: '* '
  1050. #: en/./developers/02_Github.md:26
  1051. msgid ""
  1052. "On [our Mattermost chat](https://framateam.org/signup_user_complete/?"
  1053. "id=e2680d3e3128b9fac8fdb3003b0024ee)"
  1054. msgstr ""
  1055. "Sur [notre chat Mattermost](https://framateam.org/signup_user_complete/?"
  1056. "id=e2680d3e3128b9fac8fdb3003b0024ee)"
  1057. #. type: Bullet: '* '
  1058. #: en/./developers/02_Github.md:26
  1059. msgid ""
  1060. "On [the mailing lists](https://freshrss.org/announce-of-the-mailing-lists."
  1061. "html)"
  1062. msgstr ""
  1063. "Sur [les listes de diffusion](https://freshrss.org/announce-of-the-mailing-"
  1064. "lists.html)"
  1065. #. type: Bullet: '* '
  1066. #: en/./developers/02_Github.md:26
  1067. msgid "At events / meetings around Free Software"
  1068. msgstr "À des évènements / rencontres autour du Logiciel Libre"
  1069. #. type: Bullet: '* '
  1070. #: en/./developers/02_Github.md:26
  1071. msgid "Over a beer in a bar"
  1072. msgstr "Autour d'une bière dans un bar"
  1073. #. type: Bullet: '* '
  1074. #: en/./developers/02_Github.md:26
  1075. msgid "Etc."
  1076. msgstr "Etc."
  1077. #. type: Title ##
  1078. #: en/./developers/02_Github.md:27
  1079. #, no-wrap
  1080. msgid "Tips"
  1081. msgstr "Conseils"
  1082. #. type: Plain text
  1083. #: en/./developers/02_Github.md:30
  1084. msgid "Here are some tips to help you present your bug report or suggestion:"
  1085. msgstr ""
  1086. "Voici quelques conseils pour bien présenter votre remontée de bug ou votre "
  1087. "suggestion :"
  1088. #. type: Bullet: '* '
  1089. #: en/./developers/02_Github.md:39
  1090. msgid ""
  1091. "**Pay attention to spelling**. Even if it's not always easy, try your best!"
  1092. msgstr ""
  1093. "**Faites attention à l'orthographe.** même si ce n'est pas toujours facile, "
  1094. "faites votre maximum. ;)"
  1095. #. type: Bullet: '* '
  1096. #: en/./developers/02_Github.md:39
  1097. msgid ""
  1098. "**Give an explicit title to your request**, even if it's a bit long. This "
  1099. "not only helps us understand your request, but also to find your ticket "
  1100. "later."
  1101. msgstr ""
  1102. "**Donnez un titre explicite à votre demande**, quitte à ce qu'il soit un peu "
  1103. "long. Cela nous aide non seulement à comprendre votre demande, mais aussi à "
  1104. "retrouver votre ticket plus tard."
  1105. #. type: Bullet: '* '
  1106. #: en/./developers/02_Github.md:39
  1107. msgid ""
  1108. "**One request = one ticket.** You may have lots of ideas while being afraid "
  1109. "to spam the bug manager: it doesn't matter. It's better to have a few too "
  1110. "many tickets than too many requests in one. We'll close and consolidate "
  1111. "requests when possible."
  1112. msgstr ""
  1113. "**Une demande = un ticket.** Vous pouvez avoir des tas d'idées mais vous "
  1114. "avez peur de spammer le gestionnaire de bugs : ça ne fait rien. Il vaut "
  1115. "mieux avoir un peu trop de tickets que trop de demandes dans un seul. On "
  1116. "s'occupera de fermer et regrouper les demandes qui le peuvent."
  1117. #. type: Bullet: '* '
  1118. #: en/./developers/02_Github.md:39
  1119. msgid ""
  1120. "If you report a bug, think about **providing us with the FreshRSS logs** "
  1121. "(accessible in the FreshRSS `data/log/` folder) and the **PHP logs** (the "
  1122. "location may vary by distribution, but consider searching in `/var/log/"
  1123. "httpd` or `/var/log/apache`)."
  1124. msgstr ""
  1125. "Si vous remontez un bug, pensez à nous **fournir les logs de FreshRSS** "
  1126. "(accessibles dans les dossier ''data/log/'' de FreshRSS) **et PHP** "
  1127. "(l'emplacement peut varier selon les distributions, mais pensez à chercher "
  1128. "dans ''/var/log/httpd'' ou ''/var/log/apache'')."
  1129. #. type: Bullet: '* '
  1130. #: en/./developers/02_Github.md:39
  1131. msgid ""
  1132. "If you can't find the log files, specify it in your ticket so we know you've "
  1133. "already searched."
  1134. msgstr ""
  1135. "Si vous ne trouvez pas les fichiers de logs, précisez-le dans votre ticket "
  1136. "afin que nous sachions que vous avez déjà cherché."
  1137. #. type: Bullet: '* '
  1138. #: en/./developers/02_Github.md:39
  1139. msgid ""
  1140. "Not all bugs require logs, but if you have any doubts, it is better to "
  1141. "provide them to us. Logs are important and very useful for debugging!"
  1142. msgstr ""
  1143. "Tous les bugs ne nécessitent pas les logs, mais si vous doutez, mieux vaut "
  1144. "nous les fournir. Les logs sont importants et très utiles pour débugguer !"
  1145. #. type: Bullet: '* '
  1146. #: en/./developers/02_Github.md:39
  1147. msgid ""
  1148. "The logs may reveal confidential information, so **be careful not to "
  1149. "disclose anything sensitive.**"
  1150. msgstr ""
  1151. "Il se peut que les logs puissent révéler des informations plus ou moins "
  1152. "confidentielles, **faites attention à ne rien divulguer de sensible.**"
  1153. #. type: Plain text
  1154. #: en/./developers/02_Github.md:41
  1155. msgid ""
  1156. "In addition, when facing a bug, you're encouraged to follow this message "
  1157. "format (from the [Sam & Max website](http://sametmax.com/template-de-demande-"
  1158. "daide-en-informatique/):"
  1159. msgstr ""
  1160. "De plus, face à un bug, je ne peux que vous encourager à suivre le format de "
  1161. "message suivant (tiré du [site de Sam & Max](http://sametmax.com/template-de-"
  1162. "demande-daide-en-informatique/)) :"
  1163. #. type: Title ###
  1164. #: en/./developers/02_Github.md:42
  1165. #, no-wrap
  1166. msgid "What's my goal?"
  1167. msgstr "Quel est mon objectif ?"
  1168. #. type: Plain text
  1169. #: en/./developers/02_Github.md:45
  1170. msgid "Give the general context of what you were trying to do."
  1171. msgstr "Donnez le contexte général de ce que vous essayiez de faire."
  1172. #. type: Title ###
  1173. #: en/./developers/02_Github.md:46
  1174. #, no-wrap
  1175. msgid "What have I been trying to do?"
  1176. msgstr "Qu’est-ce que j’ai essayé de faire ?"
  1177. #. type: Plain text
  1178. #: en/./developers/02_Github.md:49
  1179. msgid ""
  1180. "Explain step by step what you have done so that we can reproduce the bug."
  1181. msgstr ""
  1182. "Expliquez pas à pas ce que vous avez fait afin que nous puissions reproduire "
  1183. "le bug."
  1184. #. type: Title ###
  1185. #: en/./developers/02_Github.md:50
  1186. #, no-wrap
  1187. msgid "What results have I achieved?"
  1188. msgstr "Quels résultats ai-je obtenus ?"
  1189. #. type: Plain text
  1190. #: en/./developers/02_Github.md:53
  1191. msgid ""
  1192. "The bug: what you see that shouldn't have happened. Here you can provide the "
  1193. "logs."
  1194. msgstr ""
  1195. "Le bug : ce que vous voyez qui n'aurez pas dû se passer. Ici vous pouvez "
  1196. "fournir les logs."
  1197. #. type: Title ###
  1198. #: en/./developers/02_Github.md:54
  1199. #, no-wrap
  1200. msgid "What was the expected result?"
  1201. msgstr "Quel était le résultat attendu ?"
  1202. #. type: Plain text
  1203. #: en/./developers/02_Github.md:57
  1204. msgid "So that we understand what you consider to be the problem."
  1205. msgstr ""
  1206. "Afin que nous comprenions bien où est le problème... au moins selon vous :p"
  1207. #. type: Title ###
  1208. #: en/./developers/02_Github.md:58
  1209. #, no-wrap
  1210. msgid "What are my circumstances?"
  1211. msgstr "Quelle est ma situation ?"
  1212. #. type: Plain text
  1213. #: en/./developers/02_Github.md:61
  1214. msgid "Remember to give the following information if you know it:"
  1215. msgstr "Pensez à donner les informations suivantes si vous les connaissez :"
  1216. #. type: Bullet: ' 1. '
  1217. #: en/./developers/02_Github.md:67
  1218. msgid "Which browser? Which version?"
  1219. msgstr "Quel navigateur ? Quelle version ?"
  1220. #. type: Bullet: ' 2. '
  1221. #: en/./developers/02_Github.md:67
  1222. msgid "Which server: Apache, Nginx? Which version?"
  1223. msgstr "Quel serveur : Apache, Nginx ? Quelle version ?"
  1224. #. type: Bullet: ' 3. '
  1225. #: en/./developers/02_Github.md:67
  1226. msgid "Which version of PHP?"
  1227. msgstr "Quelle version de PHP ?"
  1228. #. type: Bullet: ' 4. '
  1229. #: en/./developers/02_Github.md:67
  1230. msgid "Which database: SQLite, MySQL, MariaDB, PostgreSQL? Which version?"
  1231. msgstr ""
  1232. "Quelle base de données : SQLite, MySQL, MariaDB, PostgreSQL ? Quelle "
  1233. "version ?"
  1234. #. type: Bullet: ' 5. '
  1235. #: en/./developers/02_Github.md:67
  1236. msgid "Which distribution runs on the server? And... which version?"
  1237. msgstr "Quelle distribution sur le serveur ? Et… quelle version ?"
  1238. #. type: Title #
  1239. #: en/./developers/02_Github.md:68
  1240. #, no-wrap
  1241. msgid "Branching"
  1242. msgstr "Système de branches"
  1243. #. type: Title ##
  1244. #: en/./developers/02_Github.md:70
  1245. #, no-wrap
  1246. msgid "Basic"
  1247. msgstr "Élémentaire"
  1248. #. type: Plain text
  1249. #: en/./developers/02_Github.md:72
  1250. msgid ""
  1251. "If you are new to Git, here are some of the resources you might find useful:"
  1252. msgstr ""
  1253. "Si vous êtes novice dans Git, voici quelques ressources qui pourraient vous "
  1254. "être utiles :"
  1255. #. type: Bullet: '* '
  1256. #: en/./developers/02_Github.md:77
  1257. msgid "[GitHub's blog post](https://github.com/blog/120-new-to-git)"
  1258. msgstr "[Article du blog de GitHub](https://github.com/blog/120-new-to-git)"
  1259. #. type: Bullet: '* '
  1260. #: en/./developers/02_Github.md:77
  1261. msgid "<http://try.github.com/>"
  1262. msgstr "<http://try.github.com/>"
  1263. #. type: Bullet: '* '
  1264. #: en/./developers/02_Github.md:77
  1265. msgid "<http://sixrevisions.com/resources/git-tutorials-beginners/>"
  1266. msgstr "<http://sixrevisions.com/resources/git-tutorials-beginners/>"
  1267. #. type: Bullet: '* '
  1268. #: en/./developers/02_Github.md:77
  1269. msgid "<http://rogerdudler.github.io/git-guide/>"
  1270. msgstr "<http://rogerdudler.github.io/git-guide/>"
  1271. #. type: Title ##
  1272. #: en/./developers/02_Github.md:78
  1273. #, no-wrap
  1274. msgid "Getting the latest code from the FreshRSS repository"
  1275. msgstr "Obtenir le dernier code du répertoire FreshRSS"
  1276. #. type: Plain text
  1277. #: en/./developers/02_Github.md:80
  1278. msgid "First you need to add the official repo to your remote repo list:"
  1279. msgstr ""
  1280. "Vous devez avant tout ajouter le repo officiel à votre liste de repo remote :"
  1281. #. type: Plain text
  1282. #: en/./developers/02_Github.md:80
  1283. #, no-wrap
  1284. msgid "git remote add upstream git@github.com:FreshRSS/FreshRSS.git\n"
  1285. msgstr "git remote add upstream git@github.com:FreshRSS/FreshRSS.git\n"
  1286. #. type: Plain text
  1287. #: en/./developers/02_Github.md:85
  1288. msgid "You can verify the remote repo is successfully added by using:"
  1289. msgstr ""
  1290. "Vous pouvez vérifier que le repo remote a été ajouté avec succès en "
  1291. "utilisant :"
  1292. #. type: Plain text
  1293. #: en/./developers/02_Github.md:85
  1294. #, no-wrap
  1295. msgid "git remote -v show\n"
  1296. msgstr "git remote -v show\n"
  1297. #. type: Plain text
  1298. #: en/./developers/02_Github.md:90
  1299. msgid "Now you can pull the latest development code:"
  1300. msgstr "Vous pouvez maintenant pull le dernier code de développement :"
  1301. #. type: Plain text
  1302. #: en/./developers/02_Github.md:90
  1303. #, no-wrap
  1304. msgid ""
  1305. "git checkout master\n"
  1306. "git pull upstream master\n"
  1307. msgstr ""
  1308. "git checkout master\n"
  1309. "git pull upstream master\n"
  1310. #. type: Title ##
  1311. #: en/./developers/02_Github.md:95
  1312. #, no-wrap
  1313. msgid "Starting a new development branch"
  1314. msgstr "Lancer une nouvelle branche de développement"
  1315. #. type: Plain text
  1316. #: en/./developers/02_Github.md:96
  1317. #, no-wrap
  1318. msgid "git checkout -b my-development-branch\n"
  1319. msgstr "git checkout -b mon-branch-developpement\n"
  1320. #. type: Title #
  1321. #: en/./developers/02_Github.md:100
  1322. #, no-wrap
  1323. msgid "Sending a patch"
  1324. msgstr "Proposer un patch"
  1325. #. type: Plain text
  1326. #: en/./developers/02_Github.md:102
  1327. #, no-wrap
  1328. msgid ""
  1329. "# Add the changed file, here actualize_script.php\n"
  1330. "git add app/actualize_script.php\n"
  1331. "# Commit the change and write a proper commit message\n"
  1332. "git commit\n"
  1333. "# Double check all looks well\n"
  1334. "git show\n"
  1335. "# Push it to your fork\n"
  1336. "git push\n"
  1337. msgstr ""
  1338. "# Ajoutez le fichier modifié, ici actualize_script.php\n"
  1339. "git add app/actualize_script.php\n"
  1340. "# Commitez le changement et écrivez un message de commit approprié.\n"
  1341. "git commit\n"
  1342. "# Vérifiez deux fois que tout a l'air d'aller bien\n"
  1343. "git show\n"
  1344. "# Poussez les changements sur ton fork\n"
  1345. "git push\n"
  1346. #. type: Plain text
  1347. #: en/./developers/02_Github.md:114
  1348. msgid "Now you can create a PR based on your branch."
  1349. msgstr "Vous pouvez maintenant créer une PR en fonction de votre branche."
  1350. #. type: Title ##
  1351. #: en/./developers/02_Github.md:115
  1352. #, no-wrap
  1353. msgid "How to write a commit message"
  1354. msgstr "Comment écrire un message de commit"
  1355. #. type: Plain text
  1356. #: en/./developers/02_Github.md:118
  1357. msgid ""
  1358. "A commit message should succintly describe the changes on the first line. "
  1359. "For example:"
  1360. msgstr ""
  1361. "Un message de commit devrait décrire succinctement les changements sur la "
  1362. "première ligne. Par exemple :"
  1363. #. type: Plain text
  1364. #: en/./developers/02_Github.md:120
  1365. #, no-wrap
  1366. msgid "> Fix broken icon\n"
  1367. msgstr "> Fixe une icône cassée\n"
  1368. #. type: Plain text
  1369. #: en/./developers/02_Github.md:122
  1370. msgid ""
  1371. "If necessary, this can be followed by a blank line and a longer explanation."
  1372. msgstr ""
  1373. "Si nécessaire, une ligne blanche et une explication plus longue peuvent le "
  1374. "suivre."
  1375. #. type: Plain text
  1376. #: en/./developers/02_Github.md:123
  1377. msgid "For further tips, see [here](https://chris.beams.io/posts/git-commit/)."
  1378. msgstr ""
  1379. "Pour d'autres conseils, voir [ici](https://chris.beams.io/posts/git-commit/)."
  1380. #. type: Title #
  1381. #: en/./developers/03_Backend/02_Minz.md:1
  1382. #, no-wrap
  1383. msgid "Models"
  1384. msgstr "Modèles"
  1385. #. type: Title #
  1386. #: en/./developers/03_Backend/02_Minz.md:5
  1387. #, no-wrap
  1388. msgid "Controllers and actions"
  1389. msgstr "Contrôleurs et actions"
  1390. #. type: Title ###
  1391. #: en/./developers/03_Backend/02_Minz.md:9
  1392. #: en/./developers/03_Backend/05_Extensions.md:69
  1393. #, no-wrap
  1394. msgid "Views"
  1395. msgstr "Vues"
  1396. #. type: Title ###
  1397. #: en/./developers/03_Backend/02_Minz.md:13
  1398. #: en/./developers/03_Backend/05_Extensions.md:39
  1399. #, no-wrap
  1400. msgid "Routing"
  1401. msgstr "Routage"
  1402. #. type: Title #
  1403. #: en/./developers/03_Backend/02_Minz.md:17
  1404. #, no-wrap
  1405. msgid "Writing URL"
  1406. msgstr "Écriture des URL"
  1407. #. type: Title #
  1408. #: en/./developers/03_Backend/02_Minz.md:21
  1409. #: en/./developers/04_Frontend/01_View_files.md:13
  1410. #, no-wrap
  1411. msgid "Internationalisation"
  1412. msgstr "Internationalisation"
  1413. #. type: Title #
  1414. #: en/./developers/03_Backend/02_Minz.md:25
  1415. #, no-wrap
  1416. msgid "Understanding internals"
  1417. msgstr "Comprendres les mécanismes internes"
  1418. #. type: Title #
  1419. #: en/./developers/03_Backend/04_Changing_source_code.md:1
  1420. #, no-wrap
  1421. msgid "Accessing the database"
  1422. msgstr "Accès à la base de données"
  1423. #. type: Title #
  1424. #: en/./developers/03_Backend/04_Changing_source_code.md:5
  1425. #, no-wrap
  1426. msgid "Writing an action and its related view"
  1427. msgstr "Écrire une action et sa vue associée"
  1428. #. type: Title #
  1429. #: en/./developers/03_Backend/04_Changing_source_code.md:9
  1430. #, no-wrap
  1431. msgid "Authentication"
  1432. msgstr "Gestion de l'authentification"
  1433. #. type: Title #
  1434. #: en/./developers/03_Backend/04_Changing_source_code.md:13
  1435. #, no-wrap
  1436. msgid "Logs"
  1437. msgstr "Gestion des logs"
  1438. #. type: Title #
  1439. #: en/./developers/03_Backend/05_Extensions.md:1
  1440. #, no-wrap
  1441. msgid "Writing extensions for FreshRSS"
  1442. msgstr "Écriture d'extensions pour FreshRSS"
  1443. #. type: Title ##
  1444. #: en/./developers/03_Backend/05_Extensions.md:3
  1445. #, no-wrap
  1446. msgid "About FreshRSS"
  1447. msgstr "Présentation de FreshRSS"
  1448. #. type: Plain text
  1449. #: en/./developers/03_Backend/05_Extensions.md:6
  1450. msgid ""
  1451. "FreshRSS is an RSS / Atom feed aggregator written in PHP dating back to "
  1452. "October 2012. The official site is located at [freshrss.org](https://"
  1453. "freshrss.org) and the official repository is hosted on Github: [github.com/"
  1454. "FreshRSS/FreshRSS](https://github.com/FreshRSS/FreshRSS)."
  1455. msgstr ""
  1456. "FreshRSS est un agrégateur de flux RSS / Atom écrit en PHP depuis octobre "
  1457. "2012. Le site officiel est situé à l'adresse [freshrss.org](https://freshrss."
  1458. "org) et son dépot Git est hébergé par Github : [github.com/FreshRSS/FreshRSS]"
  1459. "(https://github.com/FreshRSS/FreshRSS)."
  1460. #. type: Title ##
  1461. #: en/./developers/03_Backend/05_Extensions.md:7
  1462. #, no-wrap
  1463. msgid "The problem"
  1464. msgstr "Problème à résoudre"
  1465. #. type: Plain text
  1466. #: en/./developers/03_Backend/05_Extensions.md:10
  1467. msgid "FreshRSS is limited in its technical possibilities by various factors:"
  1468. msgstr ""
  1469. "FreshRSS est limité dans ses possibilités techniques par différents "
  1470. "facteurs :"
  1471. #. type: Bullet: '* '
  1472. #: en/./developers/03_Backend/05_Extensions.md:14
  1473. msgid "The number of developers"
  1474. msgstr "La disponibilité des développeurs principaux ;"
  1475. #. type: Bullet: '* '
  1476. #: en/./developers/03_Backend/05_Extensions.md:14
  1477. msgid "The will to integrate certain changes"
  1478. msgstr "La volonté d'intégrer certains changements ;"
  1479. #. type: Bullet: '* '
  1480. #: en/./developers/03_Backend/05_Extensions.md:14
  1481. msgid "The level of \"hacking\" required to integrate marginal features"
  1482. msgstr ""
  1483. "Le niveau de « hack » nécessaire pour intégrer des fonctionnalités à la "
  1484. "marge."
  1485. #. type: Plain text
  1486. #: en/./developers/03_Backend/05_Extensions.md:16
  1487. msgid ""
  1488. "While the first limitation can, in theory, be lifted by the participation of "
  1489. "new contributors to the project, it depends on the willingness of "
  1490. "contributors to take an interest in the source code of the entire project. "
  1491. "In order to remove the other two limitations, most of the time it will be "
  1492. "necessary to create a \"fork\"."
  1493. msgstr ""
  1494. "Si la première limitation peut, en théorie, être levée par la participation "
  1495. "de nouveaux contributeurs au projet, elle est en réalité conditionnée par la "
  1496. "volonté des contributeurs à s'intéresser au code source du projet en entier. "
  1497. "Afin de lever les deux autres limitations quant à elles, il faudra la "
  1498. "plupart du temps passer par un « à-coté » souvent synonyme de « fork »."
  1499. #. type: Plain text
  1500. #: en/./developers/03_Backend/05_Extensions.md:18
  1501. msgid ""
  1502. "Another solution consists of an extension system. By allowing users to write "
  1503. "their own extension without taking an interest in the core of the basic "
  1504. "software, we allow for:"
  1505. msgstr ""
  1506. "Une autre solution consiste à passer par un système d'extensions. En "
  1507. "permettant à des utilisateurs d'écrire leur propre extension sans avoir à "
  1508. "s'intéresser au cœur même du logiciel de base, on permet :"
  1509. #. type: Bullet: '1. '
  1510. #: en/./developers/03_Backend/05_Extensions.md:22
  1511. msgid "Reducing the amount of source code a new contributor has to take in"
  1512. msgstr ""
  1513. "De réduire la quantité de code source à assimiler pour un nouveau "
  1514. "contributeur ;"
  1515. #. type: Bullet: '2. '
  1516. #: en/./developers/03_Backend/05_Extensions.md:22
  1517. msgid "Unofficial integration of novelties"
  1518. msgstr "De permettre d'intégrer des nouveautés de façon non-officielles ;"
  1519. #. type: Bullet: '3. '
  1520. #: en/./developers/03_Backend/05_Extensions.md:22
  1521. msgid "No forking or main developer approval required."
  1522. msgstr ""
  1523. "De se passer des développeurs principaux pour d'éventuelles améliorations "
  1524. "sans passer par la case « fork »."
  1525. #. type: Plain text
  1526. #: en/./developers/03_Backend/05_Extensions.md:24
  1527. msgid ""
  1528. "Note: it is quite conceivable that the functionalities of an extension can "
  1529. "later be officially integrated into the FreshRSS code. Extensions make it "
  1530. "easy to propose a proof of concept."
  1531. msgstr ""
  1532. "Note : il est tout à fait imaginable que les fonctionnalités d'une extension "
  1533. "puissent par la suite être intégrées dans le code initial de FreshRSS de "
  1534. "façon officielle. Cela permet de proposer un « proof of concept » assez "
  1535. "facilement."
  1536. #. type: Title ##
  1537. #: en/./developers/03_Backend/05_Extensions.md:25
  1538. #, no-wrap
  1539. msgid "Understanding basic mechanics (Minz and MVC)"
  1540. msgstr "Comprendre les mécaniques de base (Minz et MVC)"
  1541. #. type: Plain text
  1542. #: en/./developers/03_Backend/05_Extensions.md:28
  1543. #, no-wrap
  1544. msgid "**TODO** : move to 02_Minz.md\n"
  1545. msgstr "**TODO** : bouger dans 02_Minz.md\n"
  1546. #. type: Plain text
  1547. #: en/./developers/03_Backend/05_Extensions.md:30
  1548. msgid ""
  1549. "This data sheet should refer to the official FreshRSS and Minz documentation "
  1550. "(the PHP framework on which FreshRSS is based). Unfortunately, this "
  1551. "documentation does not yet exist. In a few words, here are the main things "
  1552. "you should know. It is not necessary to read all the chapters in this "
  1553. "section if you don't need to use a feature in your extension (if you don't "
  1554. "need to translate your extension, no need to know more about the "
  1555. "`Minz_Translate` module for example)."
  1556. msgstr ""
  1557. "Cette fiche technique devrait renvoyer vers la documentation officielle de "
  1558. "FreshRSS et de Minz (le framework PHP sur lequel repose FreshRSS). "
  1559. "Malheureusement cette documentation n'existe pas encore. Voici donc en "
  1560. "quelques mots les principaux éléments à connaître. Il n'est pas nécessaire "
  1561. "de lire l'ensemble des chapitres de cette section si vous n'avez pas à "
  1562. "utiliser une fonctionnalité dans votre extension (si vous n'avez pas besoin "
  1563. "de traduire votre extension, pas besoin d'en savoir plus sur le module "
  1564. "`Minz_Translate` par exemple)."
  1565. #. type: Title ###
  1566. #: en/./developers/03_Backend/05_Extensions.md:31
  1567. #, no-wrap
  1568. msgid "MVC Architecture"
  1569. msgstr "Architecture MVC"
  1570. #. type: Plain text
  1571. #: en/./developers/03_Backend/05_Extensions.md:34
  1572. msgid ""
  1573. "Minz relies on and imposes an MVC architecture on projects using it. This "
  1574. "architecture consists of three main components:"
  1575. msgstr ""
  1576. "Minz repose et impose une architecture MVC pour les projets l'utilisant. On "
  1577. "distingue dans cette architecture trois composants principaux :"
  1578. #. type: Bullet: '* '
  1579. #: en/./developers/03_Backend/05_Extensions.md:38
  1580. msgid ""
  1581. "The model: this is the base object that we will manipulate. In FreshRSS, "
  1582. "categories, flows and articles are templates. The part of the code that "
  1583. "makes it possible to manipulate them in a database is also part of the model "
  1584. "but is separated from the base model: we speak of DAO (for \"Data Access "
  1585. "Object\"). The templates are stored in a `Models` folder."
  1586. msgstr ""
  1587. "Le Modèle : c'est l'objet de base que l'on va manipuler. Dans FreshRSS, les "
  1588. "catégories, les flux et les articles sont des modèles. La partie du code qui "
  1589. "permet de les manipuler en base de données fait aussi partie du modèle mais "
  1590. "est séparée du modèle de base : on parle de DAO (pour « Data Access Object "
  1591. "»). Les modèles sont stockés dans un répertoire `Models`."
  1592. #. type: Bullet: '* '
  1593. #: en/./developers/03_Backend/05_Extensions.md:38
  1594. msgid ""
  1595. "The view: this is what the user sees. The view is therefore simply HTML code "
  1596. "mixed with PHP to display dynamic information. The views are stored in a "
  1597. "`views` folder."
  1598. msgstr ""
  1599. "La Vue : c'est ce qui représente ce que verra l'utilisateur. La vue est donc "
  1600. "simplement du code HTML que l'on mixe avec du PHP pour afficher les "
  1601. "informations dynamiques. Les vues sont stockées dans un répertoire `views`."
  1602. #. type: Bullet: '* '
  1603. #: en/./developers/03_Backend/05_Extensions.md:38
  1604. msgid ""
  1605. "The controller: this is what makes it possible to link models and views. "
  1606. "Typically, a controller will load templates from the database (like a list "
  1607. "of items) to \"pass\" them to a view for display. Controllers are stored in "
  1608. "a `Controllers` directory."
  1609. msgstr ""
  1610. "Le Contrôleur : c'est ce qui permet de lier modèles et vues entre eux. "
  1611. "Typiquement, un contrôleur va charger des modèles à partir de la base de "
  1612. "données (une liste d'articles par exemple) pour les « passer » à une vue "
  1613. "afin qu'elle les affiche. Les contrôleurs sont stockés dans un répertoire "
  1614. "`Controllers`."
  1615. #. type: Plain text
  1616. #: en/./developers/03_Backend/05_Extensions.md:42
  1617. msgid ""
  1618. "In order to link a URL to a controller, first you have to go through a "
  1619. "\"routing\" phase. In FreshRSS, this is particularly simple because it "
  1620. "suffices to specify the name of the controller to load into the URL using a "
  1621. "`c` parameter. For example, the address http://exemple.com?c=hello will "
  1622. "execute the code contained in the `hello` controller."
  1623. msgstr ""
  1624. "Afin de lier une URL à un contrôleur, on doit passer par une phase dite de « "
  1625. "routage ». Dans FreshRSS, cela est particulièrement simple car il suffit "
  1626. "d'indiquer le nom du contrôleur à charger dans l'URL à l'aide d'un paramètre "
  1627. "`c`. Par exemple, l'adresse http://exemple.com?c=hello va exécuter le code "
  1628. "contenu dans le contrôleur `hello`."
  1629. #. type: Plain text
  1630. #: en/./developers/03_Backend/05_Extensions.md:44
  1631. msgid ""
  1632. "One concept that has not yet been discussed is the \"actions\" system. An "
  1633. "action is executed *on* a controller. Concretely, a controller is "
  1634. "represented by a class and its actions by methods. To execute an action, it "
  1635. "is necessary to specify an `a` parameter in the URL."
  1636. msgstr ""
  1637. "Une notion qui n'a pas encore été évoquée est le système d'« actions ». Une "
  1638. "action est exécutée *sur* un contrôleur. Concrètement, un contrôleur va être "
  1639. "représenté par une classe et ses actions par des méthodes. Pour exécuter une "
  1640. "action, il est nécessaire d'indiquer un paramètre `a` dans l'URL."
  1641. #. type: Plain text
  1642. #: en/./developers/03_Backend/05_Extensions.md:46
  1643. #: en/./developers/03_Backend/05_Extensions.md:165
  1644. msgid "Code example:"
  1645. msgstr "Exemple de code :"
  1646. #. type: Plain text
  1647. #: en/./developers/03_Backend/05_Extensions.md:47
  1648. #, no-wrap
  1649. msgid ""
  1650. "<?php\n"
  1651. "\n"
  1652. "class FreshRSS_hello_Controller extends Minz_ActionController {\n"
  1653. "\tpublic function indexAction() {\n"
  1654. "\t\t$this->view->a_variable = 'FooBar';\n"
  1655. "\t}\n"
  1656. "\n"
  1657. "\tpublic function worldAction() {\n"
  1658. "\t\t$this->view->a_variable = 'Hello World!';\n"
  1659. "\t}\n"
  1660. "}\n"
  1661. "\n"
  1662. "?>\n"
  1663. msgstr ""
  1664. "<?php\n"
  1665. "\n"
  1666. "class FreshRSS_hello_Controller extends Minz_ActionController {\n"
  1667. "\tpublic function indexAction() {\n"
  1668. "\t\t$this->view->a_variable = 'FooBar';\n"
  1669. "\t}\n"
  1670. "\n"
  1671. "\tpublic function worldAction() {\n"
  1672. "\t\t$this->view->a_variable = 'Hello World!';\n"
  1673. "\t}\n"
  1674. "}\n"
  1675. "\n"
  1676. "?>\n"
  1677. #. type: Plain text
  1678. #: en/./developers/03_Backend/05_Extensions.md:64
  1679. msgid ""
  1680. "When loading the address http://exemple.com?c=hello&a=world, the `world` "
  1681. "action is executed on the `hello` controller."
  1682. msgstr ""
  1683. "Si l'on charge l'adresse http://exemple.com?c=hello&a=world, l'action "
  1684. "`world` va donc être exécutée sur le contrôleur `hello`."
  1685. #. type: Plain text
  1686. #: en/./developers/03_Backend/05_Extensions.md:66
  1687. msgid ""
  1688. "Note: if `c` or `a` is not specified, the default value for each of these "
  1689. "variables is `index`. So the address http://exemple.com?c=hello will execute "
  1690. "the `index` action of the `hello` controller."
  1691. msgstr ""
  1692. "Note : si `c` ou `a` n'est pas précisée, la valeur par défaut de chacune de "
  1693. "ces variables est `index`. Ainsi l'adresse http://exemple.com?c=hello va "
  1694. "exécuter l'action `index` du contrôleur `hello`."
  1695. #. type: Plain text
  1696. #: en/./developers/03_Backend/05_Extensions.md:68
  1697. msgid ""
  1698. "From now on, the `hello/world` naming convention will be used to refer to a "
  1699. "controller/action pair."
  1700. msgstr ""
  1701. "Plus loin, sera utilisée la convention `hello/world` pour évoquer un couple "
  1702. "contrôleur/action."
  1703. #. type: Plain text
  1704. #: en/./developers/03_Backend/05_Extensions.md:72
  1705. msgid ""
  1706. "Each view is associated with a controller and an action. The view associated "
  1707. "with `hello/world` will be stored in a very specific file: `views/hello/"
  1708. "world. phtml`. This convention is imposed by Minz."
  1709. msgstr ""
  1710. "Chaque vue est associée à un contrôleur et à une action. La vue associée à "
  1711. "`hello/world` va être stockée dans un fichier bien spécifique : `views/hello/"
  1712. "world.phtml`. Cette convention est imposée par Minz."
  1713. #. type: Plain text
  1714. #: en/./developers/03_Backend/05_Extensions.md:74
  1715. msgid ""
  1716. "As explained above, the views consist of HTML mixed with PHP. Code example:"
  1717. msgstr ""
  1718. "Comme expliqué plus haut, les vues sont du code HTML mixé à du PHP. Exemple "
  1719. "de code :"
  1720. #. type: Code fence info string
  1721. #: en/./developers/03_Backend/05_Extensions.md:75
  1722. #: en/./developers/03_Backend/05_Extensions.md:120
  1723. #: en/./developers/03_Backend/05_Extensions.md:248
  1724. #: en/./developers/03_Backend/05_Extensions.md:284
  1725. #: en/./developers/03_Backend/05_Extensions.md:351
  1726. #, no-wrap
  1727. msgid "html"
  1728. msgstr "html"
  1729. #. type: Plain text
  1730. #: en/./developers/03_Backend/05_Extensions.md:75
  1731. #, no-wrap
  1732. msgid ""
  1733. "<p>\n"
  1734. "\tThis is a parameter passed from the controller: <?= $this->a_variable ?>\n"
  1735. "</p>\n"
  1736. msgstr ""
  1737. "<p>\n"
  1738. "\tPhrase passée en paramètre : <?= $this->a_variable ?>\n"
  1739. "</p>\n"
  1740. #. type: Plain text
  1741. #: en/./developers/03_Backend/05_Extensions.md:82
  1742. #, no-wrap
  1743. msgid "The variable `$this->a_variable` is passed by the controller (see previous example). The difference is that in the controller it is necessary to pass `$this->view`, while in the view `$this` suffices.\n"
  1744. msgstr "La variable `$this->a_variable` a été passée précédemment par le contrôleur (voir exemple précédent). La différence est que dans le contrôleur il est nécessaire de passer par `$this->view` et que dans la vue `$this` suffit.\n"
  1745. #. type: Title ###
  1746. #: en/./developers/03_Backend/05_Extensions.md:83
  1747. #, no-wrap
  1748. msgid "Working with GET / POST"
  1749. msgstr "Accéder aux paramètres GET / POST"
  1750. #. type: Plain text
  1751. #: en/./developers/03_Backend/05_Extensions.md:87
  1752. msgid ""
  1753. "It is often necessary to take advantage of parameters passed by GET or POST. "
  1754. "In Minz, these parameters are accessible using the `Minz_Request` class. "
  1755. "Code example:"
  1756. msgstr ""
  1757. "Il est souvent nécessaire de profiter des paramètres passés par GET ou par "
  1758. "POST. Dans Minz, ces paramètres sont accessibles de façon indistincts à "
  1759. "l'aide de la classe `Minz_Request`. Exemple de code :"
  1760. #. type: Plain text
  1761. #: en/./developers/03_Backend/05_Extensions.md:88
  1762. #, no-wrap
  1763. msgid ""
  1764. "<?php\n"
  1765. "\n"
  1766. "$default_value = 'foo';\n"
  1767. "$param = Minz_Request::param('bar', $default_value);\n"
  1768. "\n"
  1769. "// Display the value of the parameter `bar` (passed via GET or POST)\n"
  1770. "// or \"foo\" if the parameter does not exist.\n"
  1771. "echo $param;\n"
  1772. "\n"
  1773. "// Sets the value of the `bar` parameter\n"
  1774. "Minz_Request::_param('bar', 'baz');\n"
  1775. "\n"
  1776. "// Will necessarily display \"baz\" since we have just forced its value.\n"
  1777. "// Note that the second parameter (default) is optional.\n"
  1778. "echo Minz_Request::param('bar');\n"
  1779. "\n"
  1780. "?>\n"
  1781. msgstr ""
  1782. "<?php\n"
  1783. "\n"
  1784. "$default_value = 'foo';\n"
  1785. "$param = Minz_Request::param('bar', $default_value);\n"
  1786. "\n"
  1787. "// Affichera la valeur du paramètre `bar` (passé via GET ou POST)\n"
  1788. "// ou \"foo\" si le paramètre n'existe pas.\n"
  1789. "echo $param;\n"
  1790. "\n"
  1791. "// Force la valeur du paramètre `bar`\n"
  1792. "Minz_Request::_param('bar', 'baz');\n"
  1793. "\n"
  1794. "// Affichera forcément \"baz\" puisque nous venons de forcer sa valeur.\n"
  1795. "// Notez que le second paramètre (valeur par défaut) est facultatif.\n"
  1796. "echo Minz_Request::param('bar');\n"
  1797. "\n"
  1798. "?>\n"
  1799. #. type: Plain text
  1800. #: en/./developers/03_Backend/05_Extensions.md:109
  1801. msgid ""
  1802. "The `Minz_Request::isPost()` method can be used to execute a piece of code "
  1803. "only if it is a POST request."
  1804. msgstr ""
  1805. "La méthode `Minz_Request::isPost()` peut être utile pour n'exécuter un "
  1806. "morceau de code que s'il s'agit d'une requête POST."
  1807. #. type: Plain text
  1808. #: en/./developers/03_Backend/05_Extensions.md:111
  1809. msgid ""
  1810. "Note: it is preferable to use `Minz_Request` only in controllers. It is "
  1811. "likely that you will encounter this method in FreshRSS views, or even in "
  1812. "templates, but be aware that this is **not** good practice."
  1813. msgstr ""
  1814. "Note : il est préférable de n'utiliser `Minz_Request` que dans les "
  1815. "contrôleurs. Il est probable que vous rencontriez cette méthode dans les "
  1816. "vues de FreshRSS, voire dans les modèles, mais sachez qu'il ne s'agit "
  1817. "**pas** d'une bonne pratique."
  1818. #. type: Title ###
  1819. #: en/./developers/03_Backend/05_Extensions.md:112
  1820. #, no-wrap
  1821. msgid "Access session settings"
  1822. msgstr "Accéder aux paramètres de session"
  1823. #. type: Plain text
  1824. #: en/./developers/03_Backend/05_Extensions.md:115
  1825. msgid ""
  1826. "The access to session parameters is strangely similar to the GET / POST "
  1827. "parameters but passes through the `Minz_Session` class this time! There is "
  1828. "no example here because you can repeat the previous example by changing all "
  1829. "`Minz_Request` to `Minz_Session`."
  1830. msgstr ""
  1831. "L'accès aux paramètres de session est étrangement similaire aux paramètres "
  1832. "GET / POST mais passe par la classe `Minz_Session` cette fois-ci ! Il n'y a "
  1833. "pas d'exemple ici car vous pouvez reprendre le précédent en changeant tous "
  1834. "les `Minz_Request` par des `Minz_Session`."
  1835. #. type: Title ###
  1836. #: en/./developers/03_Backend/05_Extensions.md:116
  1837. #, no-wrap
  1838. msgid "Working with URLs"
  1839. msgstr "Gestion des URL"
  1840. #. type: Plain text
  1841. #: en/./developers/03_Backend/05_Extensions.md:119
  1842. msgid ""
  1843. "To take full advantage of the Minz routing system, it is strongly "
  1844. "discouraged to write hard URLs in your code. For example, the following view "
  1845. "should be avoided:"
  1846. msgstr ""
  1847. "Pour profiter pleinement du système de routage de Minz, il est fortement "
  1848. "déconseillé d'écrire les URL en dur dans votre code. Par exemple, la vue "
  1849. "suivante doit être évitée :"
  1850. #. type: Plain text
  1851. #: en/./developers/03_Backend/05_Extensions.md:120
  1852. #, no-wrap
  1853. msgid ""
  1854. "<p>\n"
  1855. "\tGo to page <a href=\"http://example.com?c=hello&amp;a=world\">Hello world</a>!\n"
  1856. "</p>\n"
  1857. msgstr ""
  1858. "<p>\n"
  1859. "\tAccéder à la page <a href=\"http://exemple.com?c=hello&amp;a=world\">Hello world</a>!\n"
  1860. "</p>\n"
  1861. #. type: Plain text
  1862. #: en/./developers/03_Backend/05_Extensions.md:127
  1863. msgid ""
  1864. "If one day it was decided to use a \"url rewriting\" system to have "
  1865. "addresses in a http://exemple.com/controller/action format, all previous "
  1866. "addresses would become ineffective!"
  1867. msgstr ""
  1868. "Si un jour il est décidé d'utiliser un système d'« url rewriting » pour "
  1869. "avoir des adresses au format http://exemple.com/controller/action, toutes "
  1870. "les adresses précédentes deviendraient ineffectives !"
  1871. #. type: Plain text
  1872. #: en/./developers/03_Backend/05_Extensions.md:129
  1873. msgid ""
  1874. "So use the `Minz_Url` class and its `display()` method instead. `Minz_Url::"
  1875. "display()` takes an array of the following form as its argument:"
  1876. msgstr ""
  1877. "Préférez donc l'utilisation de la classe `Minz_Url` et de sa méthode "
  1878. "`display()`. `Minz_Url::display()` prend en paramètre un tableau de la forme "
  1879. "suivante :"
  1880. #. type: Plain text
  1881. #: en/./developers/03_Backend/05_Extensions.md:130
  1882. #, no-wrap
  1883. msgid ""
  1884. "<?php\n"
  1885. "\n"
  1886. "$url_array = [\n"
  1887. "\t'c' => 'hello',\n"
  1888. "\t'a' => 'world',\n"
  1889. "\t'params' => [\n"
  1890. "\t\t'foo' => 'bar',\n"
  1891. "\t],\n"
  1892. "];\n"
  1893. "\n"
  1894. "// Show something like .?c=hello&amp;a=world&amp;foo=bar\n"
  1895. "echo Minz_Url::display($url_array);\n"
  1896. "\n"
  1897. "?>\n"
  1898. msgstr ""
  1899. "<?php\n"
  1900. "\n"
  1901. "$url_array = [\n"
  1902. "\t'c' => 'hello',\n"
  1903. "\t'a' => 'world',\n"
  1904. "\t'params' => [\n"
  1905. "\t\t'foo' => 'bar',\n"
  1906. "\t],\n"
  1907. "];\n"
  1908. "\n"
  1909. "// Affichera quelque chose comme .?c=hello&amp;a=world&amp;foo=bar\n"
  1910. "echo Minz_Url::display($url_array);\n"
  1911. "\n"
  1912. "?>\n"
  1913. #. type: Plain text
  1914. #: en/./developers/03_Backend/05_Extensions.md:148
  1915. msgid ""
  1916. "Since this can become a bit tedious to use in the long run, especially in "
  1917. "views, it is preferable to use the `_url()` shortcut:"
  1918. msgstr ""
  1919. "Comme cela peut devenir un peu pénible à utiliser à la longue, surtout dans "
  1920. "les vues, il est préférable d'utiliser le raccourci `_url()` :"
  1921. #. type: Plain text
  1922. #: en/./developers/03_Backend/05_Extensions.md:149
  1923. #, no-wrap
  1924. msgid ""
  1925. "<?php\n"
  1926. "\n"
  1927. "// Displays the same as above\n"
  1928. "echo _url('hello', 'world', 'foo', 'bar');\n"
  1929. "\n"
  1930. "?>\n"
  1931. msgstr ""
  1932. "<?php\n"
  1933. "\n"
  1934. "// Affichera la même chose que précédemment\n"
  1935. "echo _url('hello', 'world', 'foo', 'bar');\n"
  1936. "\n"
  1937. "?>\n"
  1938. #. type: Plain text
  1939. #: en/./developers/03_Backend/05_Extensions.md:159
  1940. msgid ""
  1941. "Note: as a general rule, the shortened form (`_url()`) should be used in "
  1942. "views, while the long form (`Minz_Url::display()`) should be used in "
  1943. "controllers."
  1944. msgstr ""
  1945. "Note : en règle générale, la forme raccourcie (`_url()`) doit être utilisée "
  1946. "dans les vues tandis que la forme longue (`Minz_Url::display()`) doit être "
  1947. "utilisée dans les contrôleurs."
  1948. #. type: Title ###
  1949. #: en/./developers/03_Backend/05_Extensions.md:160
  1950. #, no-wrap
  1951. msgid "Redirections"
  1952. msgstr "Redirections"
  1953. #. type: Plain text
  1954. #: en/./developers/03_Backend/05_Extensions.md:163
  1955. msgid ""
  1956. "It is often necessary to redirect a user to another page. To do so, the "
  1957. "`Minz_Request` class offers another useful method: `forward()`. This method "
  1958. "takes the same URL format as the one seen just before as its argument."
  1959. msgstr ""
  1960. "Il est souvent nécessaire de rediriger un utilisateur vers une autre page. "
  1961. "Pour cela, la classe `Minz_Request` dispose d'une autre méthode utile : "
  1962. "`forward()`. Cette méthode prend en argument le même format d'URL que celui "
  1963. "vu juste avant."
  1964. #. type: Plain text
  1965. #: en/./developers/03_Backend/05_Extensions.md:166
  1966. #, no-wrap
  1967. msgid ""
  1968. "<?php\n"
  1969. "\n"
  1970. "$url_array = [\n"
  1971. "\t'c' => 'hello',\n"
  1972. "\t'a' => 'world',\n"
  1973. "];\n"
  1974. "\n"
  1975. "// Tells Minz to redirect the user to the hello / world page.\n"
  1976. "// Note that this is a redirection in the Minz sense of the term, not a redirection that the browser will have to manage (HTTP code 301 or 302)\n"
  1977. "// The code that follows forward() will thus be executed!\n"
  1978. "Minz_Request::forward($url_array);\n"
  1979. "\n"
  1980. "// To perform a type 302 redirect, add \"true\".\n"
  1981. "// The code that follows will never be executed.\n"
  1982. "Minz_Request::forward($url_array, true);\n"
  1983. "\n"
  1984. "?>\n"
  1985. msgstr ""
  1986. "<?php\n"
  1987. "\n"
  1988. "$url_array = [\n"
  1989. "\t'c' => 'hello',\n"
  1990. "\t'a' => 'world',\n"
  1991. "];\n"
  1992. "\n"
  1993. "// Indique à Minz de rediriger l'utilisateur vers la page hello/world.\n"
  1994. "// Notez qu'il s'agit d'une redirection au sens Minz du terme, pas d'une redirection que le navigateur va avoir à gérer (code HTTP 301 ou 302)\n"
  1995. "// Le code qui suit forward() va ainsi être exécuté !\n"
  1996. "Minz_Request::forward($url_array);\n"
  1997. "\n"
  1998. "// Pour effectuer une redirection type 302, ajoutez \"true\".\n"
  1999. "// Le code qui suivra ne sera alors jamais exécuté.\n"
  2000. "Minz_Request::forward($url_array, true);\n"
  2001. "\n"
  2002. "?>\n"
  2003. #. type: Plain text
  2004. #: en/./developers/03_Backend/05_Extensions.md:187
  2005. msgid ""
  2006. "It is very common to want display a message to the user while performing a "
  2007. "redirect, to tell the user how the action was carried out (validation of a "
  2008. "form for example). Such a message is passed through a `notification` session "
  2009. "variable (note: we will talk about feedback from now on to avoid confusion "
  2010. "with a notification that can occur at any time). To facilitate this kind of "
  2011. "very frequent action, there are two shortcuts that both perform a 302 "
  2012. "redirect by assigning a feedback message:"
  2013. msgstr ""
  2014. "Il est très fréquent de vouloir effectuer une redirection tout en affichant "
  2015. "un message à l'utilisateur pour lui indiquer comment s'est déroulée l'action "
  2016. "effectuée juste avant (validation d'un formulaire par exemple). Un tel "
  2017. "message est passé par une variable de session `notification` (note : nous "
  2018. "parlerons plutôt de « feedback » désormais pour éviter la confusion avec une "
  2019. "notification qui peut survenir à tout moment). Pour faciliter ce genre "
  2020. "d'action très fréquente, il existe deux raccourcis qui effectuent tout deux "
  2021. "une redirection type 302 en affectant un message de feedback :"
  2022. #. type: Plain text
  2023. #: en/./developers/03_Backend/05_Extensions.md:188
  2024. #, no-wrap
  2025. msgid ""
  2026. "<?php\n"
  2027. "\n"
  2028. "$url_array = [\n"
  2029. "\t'c' => 'hello',\n"
  2030. "\t'a' => 'world',\n"
  2031. "];\n"
  2032. "$feedback_good = 'All went well!';\n"
  2033. "$feedback_bad = 'Oops, something went wrong.';\n"
  2034. "\n"
  2035. "Minz_Request::good($feedback_good, $url_array);\n"
  2036. "\n"
  2037. "// or\n"
  2038. "\n"
  2039. "Minz_Request::bad($feedback_bad, $url_array);\n"
  2040. "\n"
  2041. "?>\n"
  2042. msgstr ""
  2043. "<?php\n"
  2044. "\n"
  2045. "$url_array = [\n"
  2046. "\t'c' => 'hello',\n"
  2047. "\t'a' => 'world',\n"
  2048. "];\n"
  2049. "$feedback_good = 'Tout s\\'est bien passé !';\n"
  2050. "$feedback_bad = 'Oups, quelque chose n\\'a pas marché.';\n"
  2051. "\n"
  2052. "Minz_Request::good($feedback_good, $url_array);\n"
  2053. "\n"
  2054. "// ou\n"
  2055. "\n"
  2056. "Minz_Request::bad($feedback_bad, $url_array);\n"
  2057. "\n"
  2058. "?>\n"
  2059. #. type: Title ###
  2060. #: en/./developers/03_Backend/05_Extensions.md:207
  2061. #, no-wrap
  2062. msgid "Translation Management"
  2063. msgstr "Gestion de la traduction"
  2064. #. type: Plain text
  2065. #: en/./developers/03_Backend/05_Extensions.md:210
  2066. msgid ""
  2067. "It is common (and that's an understatement) to want to show some text to the "
  2068. "user. In the previous example, for example, we display feedback to the user "
  2069. "based on the result of form validation. The problem is that FreshRSS has "
  2070. "users of different nationalities. It is therefore necessary to be able to "
  2071. "manage different languages in order not to remain confined to English or "
  2072. "French."
  2073. msgstr ""
  2074. "Il est fréquent (et c'est un euphémisme) de vouloir afficher des phrases à "
  2075. "l'utilisateur. Dans l'exemple précédent par exemple, nous affichions un "
  2076. "feedback à l'utilisateur en fonction du résultat d'une validation de "
  2077. "formulaire. Le problème est que FreshRSS possède des utilisateurs de "
  2078. "différentes nationalités. Il est donc nécessaire de pouvoir gérer "
  2079. "différentes langues pour ne pas rester cantonné à l'Anglais ou au Français."
  2080. #. type: Plain text
  2081. #: en/./developers/03_Backend/05_Extensions.md:212
  2082. msgid ""
  2083. "The solution is to use the `Minz_Translate` class, which allows dynamic "
  2084. "translation of FreshRSS (or any Minz-based application). Before using this "
  2085. "module, it is necessary to know where to find the strings to be translated. "
  2086. "Each language has its own subdirectory in a parent directory named `i18n`. "
  2087. "For example, English language files are located in `i18n/fr/`. There are "
  2088. "seven different files:"
  2089. msgstr ""
  2090. "La solution consiste à utiliser la classe `Minz_Translate` qui permet de "
  2091. "traduire dynamiquement FreshRSS (ou toute application basée sur Minz). Avant "
  2092. "d'utiliser ce module, il est nécessaire de savoir où trouver les chaînes de "
  2093. "caractères à traduire. Chaque langue possède son propre sous-répertoire dans "
  2094. "un répertoire parent nommé `i18n`. Par exemple, les fichiers de langue en "
  2095. "Français sont situés dans `i18n/fr/`. Il existe sept fichiers différents :"
  2096. #. type: Bullet: '* '
  2097. #: en/./developers/03_Backend/05_Extensions.md:220
  2098. msgid "`admin.php` for anything related to FreshRSS administration"
  2099. msgstr ""
  2100. "`admin.php` pour tout ce qui est relatif à l'administration de FreshRSS ;"
  2101. #. type: Bullet: '* '
  2102. #: en/./developers/03_Backend/05_Extensions.md:220
  2103. msgid "`conf.php` for configuration"
  2104. msgstr "`conf.php` pour l'aspect configuration ;"
  2105. #. type: Bullet: '* '
  2106. #: en/./developers/03_Backend/05_Extensions.md:220
  2107. msgid "`feedback.php` contains translations of feedback messages"
  2108. msgstr "`feedback.php` contient les traductions des messages de feedback ;"
  2109. #. type: Bullet: '* '
  2110. #: en/./developers/03_Backend/05_Extensions.md:220
  2111. msgid "`gen.php` stores what is global to FreshRSS (gen for \"general\")"
  2112. msgstr "`gen.php` stocke ce qui est global à FreshRSS (gen pour « general ») ;"
  2113. #. type: Bullet: '* '
  2114. #: en/./developers/03_Backend/05_Extensions.md:220
  2115. msgid "`index.php` for the main page that lists feeds and the About page"
  2116. msgstr ""
  2117. "`index.php` pour la page principale qui liste les flux et la page « À propos "
  2118. "» ;"
  2119. #. type: Bullet: '* '
  2120. #: en/./developers/03_Backend/05_Extensions.md:220
  2121. msgid "`install.php` contains strings related FreshRSS installation"
  2122. msgstr ""
  2123. "`install.php` contient les phrases relatives à l'installation de FreshRSS ;"
  2124. #. type: Bullet: '* '
  2125. #: en/./developers/03_Backend/05_Extensions.md:220
  2126. msgid "`sub.php` for subscription management (sub for \"subscription\")"
  2127. msgstr ""
  2128. "`sub.php` pour l'aspect gestion des abonnements (sub pour « subscription »)."
  2129. #. type: Plain text
  2130. #: en/./developers/03_Backend/05_Extensions.md:222
  2131. msgid ""
  2132. "This organization makes it possible to avoid a single huge translation file."
  2133. msgstr ""
  2134. "Cette organisation permet de ne pas avoir un unique énorme fichier de "
  2135. "traduction."
  2136. #. type: Plain text
  2137. #: en/./developers/03_Backend/05_Extensions.md:224
  2138. msgid ""
  2139. "The translation files are quite simple: it's only a matter of returning a "
  2140. "PHP table containing the translations. As an example, here's an extract from "
  2141. "`app/i18n/fr/gen.php`:"
  2142. msgstr ""
  2143. "Les fichiers de traduction sont assez simples : il s'agit seulement de "
  2144. "retourner un tableau PHP contenant les traductions. Extrait du fichier `app/"
  2145. "i18n/fr/gen.php` :"
  2146. #. type: Plain text
  2147. #: en/./developers/03_Backend/05_Extensions.md:225
  2148. #, no-wrap
  2149. msgid ""
  2150. "<?php\n"
  2151. "\n"
  2152. "return array(\n"
  2153. "\t'action' => [\n"
  2154. "\t\t'actualize' => 'Actualiser',\n"
  2155. "\t\t'back_to_rss_feeds' => '← Retour à vos flux RSS',\n"
  2156. "\t\t'cancel' => 'Annuler',\n"
  2157. "\t\t'create' => 'Créer',\n"
  2158. "\t\t'disable' => 'Désactiver',\n"
  2159. "\t),\n"
  2160. "\t'freshrss' => array(\n"
  2161. "\t\t'_' => 'FreshRSS',\n"
  2162. "\t\t'about' => 'À propos de FreshRSS',\n"
  2163. "\t),\n"
  2164. "];\n"
  2165. "\n"
  2166. "?>\n"
  2167. msgstr ""
  2168. "<?php\n"
  2169. "\n"
  2170. "return array(\n"
  2171. "\t'action' => [\n"
  2172. "\t\t'actualize' => 'Actualiser',\n"
  2173. "\t\t'back_to_rss_feeds' => '← Retour à vos flux RSS',\n"
  2174. "\t\t'cancel' => 'Annuler',\n"
  2175. "\t\t'create' => 'Créer',\n"
  2176. "\t\t'disable' => 'Désactiver',\n"
  2177. "\t),\n"
  2178. "\t'freshrss' => array(\n"
  2179. "\t\t'_' => 'FreshRSS',\n"
  2180. "\t\t'about' => 'À propos de FreshRSS',\n"
  2181. "\t),\n"
  2182. "];\n"
  2183. "\n"
  2184. "?>\n"
  2185. #. type: Plain text
  2186. #: en/./developers/03_Backend/05_Extensions.md:247
  2187. msgid ""
  2188. "To access these translations, `Minz_Translate` will help us with its "
  2189. "`Minz_Translate::t()` method. As this can be a bit long to type, a shortcut "
  2190. "has been introduced that **must** be used in all circumstances: `_t()`. "
  2191. "Code example:"
  2192. msgstr ""
  2193. "Pour accéder à ces traductions, `Minz_Translate` va nous aider à l'aide de "
  2194. "sa méthode `Minz_Translate::t()`. Comme cela peut être un peu long à taper, "
  2195. "il a été introduit un raccourci qui **doit** être utilisé en toutes "
  2196. "circonstances : `_t()`. Exemple de code :"
  2197. #. type: Plain text
  2198. #: en/./developers/03_Backend/05_Extensions.md:248
  2199. #, no-wrap
  2200. msgid ""
  2201. "<p>\n"
  2202. "\t<a href=\"<?= _url('index', 'index') ?>\">\n"
  2203. "\t\t<?= _t('gen.action.back_to_rss_feeds') ?>\n"
  2204. "\t</a>\n"
  2205. "</p>\n"
  2206. msgstr ""
  2207. "<p>\n"
  2208. "\t<a href=\"<?= _url('index', 'index') ?>\">\n"
  2209. "\t\t<?= _t('gen.action.back_to_rss_feeds') ?>\n"
  2210. "\t</a>\n"
  2211. "</p>\n"
  2212. #. type: Plain text
  2213. #: en/./developers/03_Backend/05_Extensions.md:257
  2214. msgid ""
  2215. "The string to pass to the `_t()` function consists of a series of "
  2216. "identifiers separated by dots. The first identifier indicates from which "
  2217. "file to extract the translation (in this case, `gen.php`), while the "
  2218. "following ones indicate table entries. Thus `action` is an entry of the main "
  2219. "array and `back_to_rss_feeds` is an entry of the `action` array. This allows "
  2220. "us to further organize our translation files."
  2221. msgstr ""
  2222. "La chaîne à passer à la fonction `_t()` consiste en une série d'identifiants "
  2223. "séparés par des points. Le premier identifiant indique de quel fichier on "
  2224. "veut extraire la traduction (dans notre cas présent, de `gen.php`), tandis "
  2225. "que les suivantes indiquent des entrées de tableaux. Ainsi `action` est une "
  2226. "entrée du tableau principal et `back_to_rss_feeds` est une entrée du tableau "
  2227. "`action`. Cela permet d'organiser encore un peu plus nos fichiers de "
  2228. "traduction."
  2229. #. type: Plain text
  2230. #: en/./developers/03_Backend/05_Extensions.md:259
  2231. msgid ""
  2232. "There is a small special case that sometimes makes life easier: the `_` "
  2233. "identifier. This must necessarily be present at the end of the chain and "
  2234. "gives a value to the higher-level identifier. It's pretty hard to explain "
  2235. "but very simple to understand. In the example given above, a `_` is "
  2236. "associated with the value `FreshRSS`: this means that there is no need to "
  2237. "write `_t('gen.freshrss._')` but `_t('gen.freshrss')` suffices."
  2238. msgstr ""
  2239. "Il existe un petit cas particulier qui permet parfois de se simplifier la "
  2240. "vie : le cas de l'identifiant `_`. Celui-ci doit nécessairement être présent "
  2241. "en bout de chaîne et permet de donner une valeur à l'identifiant de niveau "
  2242. "supérieur. C'est assez dur à expliquer mais très simple à comprendre. Dans "
  2243. "l'exemple donné plus haut, un `_` est associé à la valeur `FreshRSS` : cela "
  2244. "signifie qu'il n'y a pas besoin d'écrire `_t('gen.freshrss._')` mais "
  2245. "`_t('gen.freshrss')` suffit."
  2246. #. type: Title ###
  2247. #: en/./developers/03_Backend/05_Extensions.md:260
  2248. #, no-wrap
  2249. msgid "Configuration management"
  2250. msgstr "Gestion de la configuration"
  2251. #. type: Title ##
  2252. #: en/./developers/03_Backend/05_Extensions.md:262
  2253. #, no-wrap
  2254. msgid "Write an extension for FreshRSS"
  2255. msgstr "Écrire une extension pour FreshRSS"
  2256. #. type: Plain text
  2257. #: en/./developers/03_Backend/05_Extensions.md:265
  2258. msgid ""
  2259. "Here we are! We've talked about the most useful features of Minz and how to "
  2260. "run FreshRSS correctly and it's about time to address the extensions "
  2261. "themselves."
  2262. msgstr ""
  2263. "Nous y voilà ! Nous avons abordé les fonctionnalités les plus utiles de Minz "
  2264. "et qui permettent de faire tourner FreshRSS correctement et il est plus que "
  2265. "temps d'aborder les extensions en elles-même."
  2266. #. type: Plain text
  2267. #: en/./developers/03_Backend/05_Extensions.md:267
  2268. msgid ""
  2269. "An extension allows you to easily add functionality to FreshRSS without "
  2270. "having to touch the core of the project directly."
  2271. msgstr ""
  2272. "Une extension permet donc d'ajouter des fonctionnalités facilement à "
  2273. "FreshRSS sans avoir à toucher au cœur du projet directement."
  2274. #. type: Title ###
  2275. #: en/./developers/03_Backend/05_Extensions.md:268
  2276. #, no-wrap
  2277. msgid "Basic files and folders"
  2278. msgstr "Les fichiers et répertoires de base"
  2279. #. type: Plain text
  2280. #: en/./developers/03_Backend/05_Extensions.md:273
  2281. msgid ""
  2282. "The first thing to note is that **all** extensions **must** be located in "
  2283. "the `extensions` directory, at the base of the FreshRSS tree. An extension "
  2284. "is a directory containing a set of mandatory (and optional) files and "
  2285. "subdirectories. The convention requires that the main directory name be "
  2286. "preceded by an \"x\" to indicate that it is not an extension included by "
  2287. "default in FreshRSS."
  2288. msgstr ""
  2289. "La première chose à noter est que **toutes** les extensions **doivent** se "
  2290. "situer dans le répertoire `extensions`, à la base de l'arborescence de "
  2291. "FreshRSS. Une extension est un répertoire contenant un ensemble de fichiers "
  2292. "et sous-répertoires obligatoires ou facultatifs. La convention veut que l'on "
  2293. "précède le nom du répertoire principal par un « x » pour indiquer qu'il ne "
  2294. "s'agit pas d'une extension incluse par défaut dans FreshRSS."
  2295. #. type: Plain text
  2296. #: en/./developers/03_Backend/05_Extensions.md:275
  2297. msgid ""
  2298. "The main directory of an extension must contain at least two **mandatory** "
  2299. "files:"
  2300. msgstr ""
  2301. "Le répertoire principal d'une extension doit comporter au moins deux "
  2302. "fichiers **obligatoire** :"
  2303. #. type: Bullet: '* '
  2304. #: en/./developers/03_Backend/05_Extensions.md:278
  2305. msgid ""
  2306. "A `metadata.json` file that contains a description of the extension. This "
  2307. "file is written in JSON."
  2308. msgstr ""
  2309. "Un fichier `metadata.json` qui contient une description de l'extension. Ce "
  2310. "fichier est écrit en JSON ;"
  2311. #. type: Bullet: '* '
  2312. #: en/./developers/03_Backend/05_Extensions.md:278
  2313. msgid ""
  2314. "An `extension.php` file containing the entry point of the extension (which "
  2315. "is a class that inherits Minz_Extension)."
  2316. msgstr "Un fichier `extension.php` contenant le point d'entrée de l'extension."
  2317. #. type: Plain text
  2318. #: en/./developers/03_Backend/05_Extensions.md:282
  2319. msgid ""
  2320. "Please note that there is a not a required link between the directory name "
  2321. "of the extension and the name of the class inside `extension.php`, but you "
  2322. "should follow our best practice: If you want to write a `HelloWorld` "
  2323. "extension, the directory name should be `xExtension-HelloWorld` and the base "
  2324. "class name `HelloWorldExtension`."
  2325. msgstr ""
  2326. #. type: Plain text
  2327. #: en/./developers/03_Backend/05_Extensions.md:284
  2328. msgid ""
  2329. "In the file `freshrss/extensions/xExtension-HelloWorld/extension.php` you "
  2330. "need the structure:"
  2331. msgstr ""
  2332. #. type: Plain text
  2333. #: en/./developers/03_Backend/05_Extensions.md:284
  2334. #, no-wrap
  2335. msgid ""
  2336. "class HelloWorldExtension extends Minz_Extension {\n"
  2337. "\tpublic function init() {\n"
  2338. "\t\t// your code here\n"
  2339. "\t}\n"
  2340. "}\n"
  2341. msgstr ""
  2342. #. type: Plain text
  2343. #: en/./developers/03_Backend/05_Extensions.md:292
  2344. msgid ""
  2345. "There is an example HelloWorld extension that you can download from [our "
  2346. "GitHub repo](https://github.com/FreshRSS/xExtension-HelloWorld)."
  2347. msgstr ""
  2348. #. type: Plain text
  2349. #: en/./developers/03_Backend/05_Extensions.md:294
  2350. msgid ""
  2351. "You may also need additional files or subdirectories depending on your needs:"
  2352. msgstr ""
  2353. #. type: Bullet: '* '
  2354. #: en/./developers/03_Backend/05_Extensions.md:300
  2355. msgid ""
  2356. "`configure.phtml` is the file containing the form to parameterize your "
  2357. "extension"
  2358. msgstr ""
  2359. "`configure.phtml` est le fichier contenant le formulaire pour paramétrer "
  2360. "votre extension"
  2361. #. type: Bullet: '* '
  2362. #: en/./developers/03_Backend/05_Extensions.md:300
  2363. msgid ""
  2364. "A `static/` directory containing CSS and JavaScript files that you will need "
  2365. "for your extension (note that if you need to write a lot of CSS it may be "
  2366. "more interesting to write a complete theme)"
  2367. msgstr ""
  2368. #. type: Bullet: '* '
  2369. #: en/./developers/03_Backend/05_Extensions.md:300
  2370. msgid "A `Controllers` directory containing additional controllers"
  2371. msgstr ""
  2372. #. type: Bullet: '* '
  2373. #: en/./developers/03_Backend/05_Extensions.md:300
  2374. msgid "An `i18n` directory containing additional translations"
  2375. msgstr ""
  2376. #. type: Bullet: '* '
  2377. #: en/./developers/03_Backend/05_Extensions.md:300
  2378. msgid ""
  2379. "`layout` and` views` directories to define new views or to overwrite the "
  2380. "current views"
  2381. msgstr ""
  2382. #. type: Plain text
  2383. #: en/./developers/03_Backend/05_Extensions.md:302
  2384. msgid ""
  2385. "In addition, it is good to have a `LICENSE` file indicating the license "
  2386. "under which your extension is distributed and a` README` file giving a "
  2387. "detailed description of it."
  2388. msgstr ""
  2389. #. type: Title ###
  2390. #: en/./developers/03_Backend/05_Extensions.md:303
  2391. #, no-wrap
  2392. msgid "The metadata.json file"
  2393. msgstr ""
  2394. #. type: Plain text
  2395. #: en/./developers/03_Backend/05_Extensions.md:306
  2396. msgid ""
  2397. "The `metadata.json` file defines your extension through a number of "
  2398. "important elements. It must contain a valid JSON array containing the "
  2399. "following entries:"
  2400. msgstr ""
  2401. #. type: Bullet: '* '
  2402. #: en/./developers/03_Backend/05_Extensions.md:313
  2403. msgid "`name`: the name of your extension"
  2404. msgstr "`name` : le nom de votre extension ;"
  2405. #. type: Bullet: '* '
  2406. #: en/./developers/03_Backend/05_Extensions.md:313
  2407. msgid ""
  2408. "`author`: your name, your e-mail address ... but there is no specific format "
  2409. "to adopt"
  2410. msgstr ""
  2411. "`author` : votre nom, éventuellement votre adresse mail mais il n'y a pas de "
  2412. "format spécifique à adopter ;"
  2413. #. type: Bullet: '* '
  2414. #: en/./developers/03_Backend/05_Extensions.md:313
  2415. msgid "`description`: a description of your extension"
  2416. msgstr "`description` : une description de votre extension ;"
  2417. #. type: Bullet: '* '
  2418. #: en/./developers/03_Backend/05_Extensions.md:313
  2419. msgid "`version`: the current version number of the extension"
  2420. msgstr "`version` : le numéro de version actuel de l'extension ;"
  2421. #. type: Bullet: '* '
  2422. #: en/./developers/03_Backend/05_Extensions.md:313
  2423. msgid ""
  2424. "`entrypoint`: Indicates the entry point of your extension. It must match the "
  2425. "name of the class contained in the file `extension.php` without the suffix` "
  2426. "Extension` (so if the entry point is `HelloWorld`, your class will be "
  2427. "called` HelloWorldExtension`)"
  2428. msgstr ""
  2429. "`entrypoint` : indique le point d'entrée de votre extension. Il doit "
  2430. "correspondre au nom de la classe contenue dans le fichier `extension.php` "
  2431. "sans le suffixe `Extension` (donc si le point d'entrée est `HelloWorld`, "
  2432. "votre classe s'appellera `HelloWorldExtension`) ;"
  2433. #. type: Bullet: '* '
  2434. #: en/./developers/03_Backend/05_Extensions.md:313
  2435. msgid ""
  2436. "`type`: Defines the type of your extension. There are two types: `system` "
  2437. "and` user`. We will study this difference right after."
  2438. msgstr ""
  2439. "`type` : définit le type de votre extension. Il existe deux types : `system` "
  2440. "et `user`. Nous étudierons cette différence juste après."
  2441. #. type: Plain text
  2442. #: en/./developers/03_Backend/05_Extensions.md:315
  2443. msgid "Only the `name` and` entrypoint` fields are required."
  2444. msgstr "Seuls les champs `name` et `entrypoint` sont requis."
  2445. #. type: Title ###
  2446. #: en/./developers/03_Backend/05_Extensions.md:316
  2447. #, no-wrap
  2448. msgid "Choosing between `system` and `user`"
  2449. msgstr "Choisir entre extension « system » ou « user »"
  2450. #. type: Plain text
  2451. #: en/./developers/03_Backend/05_Extensions.md:319
  2452. msgid ""
  2453. "A __user__ extension can be enabled by some users and not by others "
  2454. "(typically for user preferences)."
  2455. msgstr ""
  2456. #. type: Plain text
  2457. #: en/./developers/03_Backend/05_Extensions.md:321
  2458. msgid "A __system__ extension in comparison is enabled for every account."
  2459. msgstr ""
  2460. #. type: Title ###
  2461. #: en/./developers/03_Backend/05_Extensions.md:322
  2462. #, no-wrap
  2463. msgid "Writing your own extension.php"
  2464. msgstr ""
  2465. #. type: Plain text
  2466. #: en/./developers/03_Backend/05_Extensions.md:327
  2467. msgid ""
  2468. "This file is the entry point of your extension. It must contain a specific "
  2469. "class to function. As mentioned above, the name of the class must be your "
  2470. "`entrypoint` suffixed by` Extension` (`HelloWorldExtension` for example). "
  2471. "In addition, this class must be inherited from the `Minz_Extension` class to "
  2472. "benefit from extensions-specific methods."
  2473. msgstr ""
  2474. #. type: Plain text
  2475. #: en/./developers/03_Backend/05_Extensions.md:329
  2476. msgid "Your class will benefit from four methods to redefine:"
  2477. msgstr ""
  2478. #. type: Bullet: '* '
  2479. #: en/./developers/03_Backend/05_Extensions.md:334
  2480. msgid ""
  2481. "`install()` is called when a user clicks the button to activate your "
  2482. "extension. It allows, for example, to update the database of a user in order "
  2483. "to make it compatible with the extension. It returns `true` if everything "
  2484. "went well or, if not, a string explaining the problem."
  2485. msgstr ""
  2486. #. type: Bullet: '* '
  2487. #: en/./developers/03_Backend/05_Extensions.md:334
  2488. msgid ""
  2489. "`uninstall()` is called when a user clicks the button to disable your "
  2490. "extension. This will allow you to undo the database changes you potentially "
  2491. "made in `install ()`. It returns `true` if everything went well or, if not, "
  2492. "a string explaining the problem."
  2493. msgstr ""
  2494. #. type: Bullet: '* '
  2495. #: en/./developers/03_Backend/05_Extensions.md:334
  2496. msgid ""
  2497. "`init()` is called for every page load *if the extension is enabled*. It "
  2498. "will therefore initialize the behavior of the extension. This is the most "
  2499. "important method."
  2500. msgstr ""
  2501. #. type: Bullet: '* '
  2502. #: en/./developers/03_Backend/05_Extensions.md:334
  2503. msgid ""
  2504. "`handleConfigureAction()` is called when a user loads the extension "
  2505. "management panel. Specifically, it is called when the `?"
  2506. "c=extension&a=configured&e=name-of-your-extension` URL is loaded. You should "
  2507. "also write here the behavior you want when validating the form in your "
  2508. "`configure.phtml` file."
  2509. msgstr ""
  2510. #. type: Plain text
  2511. #: en/./developers/03_Backend/05_Extensions.md:336
  2512. msgid ""
  2513. "In addition, you will have a number of methods directly inherited from "
  2514. "`Minz_Extension` that you should not redefine:"
  2515. msgstr ""
  2516. #. type: Bullet: '* '
  2517. #: en/./developers/03_Backend/05_Extensions.md:340
  2518. msgid ""
  2519. "The \"getters\" first: most are explicit enough not to detail them here - "
  2520. "`getName()`, `getEntrypoint()`, `getPath()` (allows you to retrieve the path "
  2521. "to your extension), `getAuthor()`, `getDescription()`, `getVersion()`, "
  2522. "`getType()`."
  2523. msgstr ""
  2524. #. type: Bullet: '* '
  2525. #: en/./developers/03_Backend/05_Extensions.md:340
  2526. msgid ""
  2527. "`getFileUrl($filename, $type)` will return the URL to a file in the `static` "
  2528. "directory. The first parameter is the name of the file (without `static /`), "
  2529. "the second is the type of file to be used (`css` or` js`)."
  2530. msgstr ""
  2531. #. type: Bullet: '* '
  2532. #: en/./developers/03_Backend/05_Extensions.md:340
  2533. msgid ""
  2534. "`registerController($base_name)` will tell Minz to take into account the "
  2535. "given controller in the routing system. The controller must be located in "
  2536. "your `Controllers` directory, the name of the file must be` "
  2537. "<base_name>Controller.php` and the name of the "
  2538. "`FreshExtension_<base_name>_Controller` class."
  2539. msgstr ""
  2540. #. type: Bullet: '* '
  2541. #: en/./developers/03_Backend/05_Extensions.md:346
  2542. msgid "`registerViews()`"
  2543. msgstr ""
  2544. #. type: Bullet: '* '
  2545. #: en/./developers/03_Backend/05_Extensions.md:346
  2546. msgid "`registerTranslates()`"
  2547. msgstr ""
  2548. #. type: Bullet: '* '
  2549. #: en/./developers/03_Backend/05_Extensions.md:346
  2550. msgid "`registerHook($hook_name, $hook_function)`"
  2551. msgstr ""
  2552. #. type: Title ###
  2553. #: en/./developers/03_Backend/05_Extensions.md:347
  2554. #, no-wrap
  2555. msgid "The \"hooks\" system"
  2556. msgstr "Le système « hooks »"
  2557. #. type: Plain text
  2558. #: en/./developers/03_Backend/05_Extensions.md:350
  2559. msgid ""
  2560. "You can register at the FreshRSS event system in an extensions `init()` "
  2561. "method, to manipulate data when some of the core functions are executed."
  2562. msgstr ""
  2563. #. type: Plain text
  2564. #: en/./developers/03_Backend/05_Extensions.md:351
  2565. #, no-wrap
  2566. msgid ""
  2567. "class HelloWorldExtension extends Minz_Extension\n"
  2568. "{\n"
  2569. "\tpublic function init() {\n"
  2570. "\t\t$this->registerHook('entry_before_display', array($this, 'renderEntry'));\n"
  2571. "\t}\n"
  2572. "\tpublic function renderEntry($entry) {\n"
  2573. "\t\t$entry->_content('<h1>Hello World</h1>' . $entry->content());\n"
  2574. "\t\treturn $entry;\n"
  2575. "\t}\n"
  2576. "}\n"
  2577. msgstr ""
  2578. #. type: Plain text
  2579. #: en/./developers/03_Backend/05_Extensions.md:365
  2580. msgid "The following events are available:"
  2581. msgstr ""
  2582. #. type: Bullet: '* '
  2583. #: en/./developers/03_Backend/05_Extensions.md:376
  2584. msgid ""
  2585. "`entry_before_display` (`function($entry) -> Entry | null`): will be "
  2586. "executed every time an entry is rendered. The entry itself (instance of "
  2587. "FreshRSS\\_Entry) will be passed as parameter."
  2588. msgstr ""
  2589. #. type: Bullet: '* '
  2590. #: en/./developers/03_Backend/05_Extensions.md:376
  2591. msgid ""
  2592. "`entry_before_insert` (`function($entry) -> Entry | null`): will be executed "
  2593. "when a feed is refreshed and new entries will be imported into the database. "
  2594. "The new entry (instance of FreshRSS\\_Entry) will be passed as parameter."
  2595. msgstr ""
  2596. #. type: Bullet: '* '
  2597. #: en/./developers/03_Backend/05_Extensions.md:376
  2598. msgid ""
  2599. "`feed_before_insert` (`function($feed) -> Feed | null`): will be executed "
  2600. "when a new feed is imported into the database. The new feed (instance of "
  2601. "FreshRSS\\_Feed) will be passed as parameter."
  2602. msgstr ""
  2603. #. type: Bullet: '* '
  2604. #: en/./developers/03_Backend/05_Extensions.md:376
  2605. msgid ""
  2606. "`freshrss_init` (`function() -> none`): will be executed at the end of the "
  2607. "initialization of FreshRSS, useful to initialize components or to do "
  2608. "additional access checks"
  2609. msgstr ""
  2610. #. type: Bullet: '* '
  2611. #: en/./developers/03_Backend/05_Extensions.md:376
  2612. msgid ""
  2613. "`menu_admin_entry` (`function() -> string`): add an entry at the end of the "
  2614. "\"Administration\" menu, the returned string must be valid HTML (e.g. `<li "
  2615. "class=\"item active\"><a href=\"url\">New entry</a></li>`)"
  2616. msgstr ""
  2617. #. type: Bullet: '* '
  2618. #: en/./developers/03_Backend/05_Extensions.md:376
  2619. msgid ""
  2620. "`menu_configuration_entry` (`function() -> string`): add an entry at the end "
  2621. "of the \"Configuration\" menu, the returned string must be valid HTML (e.g. "
  2622. "`<li class=\"item active\"><a href=\"url\">New entry</a></li>`)"
  2623. msgstr ""
  2624. #. type: Bullet: '* '
  2625. #: en/./developers/03_Backend/05_Extensions.md:376
  2626. msgid ""
  2627. "`menu_other_entry` (`function() -> string`): add an entry at the end of the "
  2628. "header dropdown menu (i.e. after the \"About\" entry), the returned string "
  2629. "must be valid HTML (e.g. `<li class=\"item active\"><a href=\"url\">New "
  2630. "entry</a></li>`)"
  2631. msgstr ""
  2632. #. type: Bullet: '* '
  2633. #: en/./developers/03_Backend/05_Extensions.md:376
  2634. msgid ""
  2635. "`nav_reading_modes` (`function($reading_modes) -> array | null`): **TODO** "
  2636. "add documentation"
  2637. msgstr ""
  2638. #. type: Bullet: '* '
  2639. #: en/./developers/03_Backend/05_Extensions.md:376
  2640. msgid "`post_update` (`function(none) -> none`): **TODO** add documentation"
  2641. msgstr ""
  2642. #. type: Bullet: '* '
  2643. #: en/./developers/03_Backend/05_Extensions.md:376
  2644. msgid ""
  2645. "`simplepie_before_init` (`function($simplePie, $feed) -> none`): **TODO** "
  2646. "add documentation"
  2647. msgstr ""
  2648. #. type: Title ###
  2649. #: en/./developers/03_Backend/05_Extensions.md:377
  2650. #, no-wrap
  2651. msgid "Writing your own configure.phtml"
  2652. msgstr ""
  2653. #. type: Plain text
  2654. #: en/./developers/03_Backend/05_Extensions.md:380
  2655. msgid ""
  2656. "When you want to support user configurations for your extension or simply "
  2657. "display some information, you have to create the `configure.phtml` file."
  2658. msgstr ""
  2659. #. type: Title #
  2660. #: en/./developers/03_Running_tests.md:1
  2661. #, no-wrap
  2662. msgid "Running tests"
  2663. msgstr ""
  2664. #. type: Plain text
  2665. #: en/./developers/03_Running_tests.md:4
  2666. msgid ""
  2667. "FreshRSS is tested with [PHPUnit](https://phpunit.de/). No code should be "
  2668. "merged in `master` if the tests don't pass."
  2669. msgstr ""
  2670. #. type: Title ##
  2671. #: en/./developers/03_Running_tests.md:5
  2672. #, no-wrap
  2673. msgid "Locally"
  2674. msgstr ""
  2675. #. type: Plain text
  2676. #: en/./developers/03_Running_tests.md:8
  2677. msgid ""
  2678. "As a developer, you can run the test suite on your PC easily with `make` "
  2679. "commands. You can run the test suite with:"
  2680. msgstr ""
  2681. #. type: Plain text
  2682. #: en/./developers/03_Running_tests.md:9
  2683. #, fuzzy, no-wrap
  2684. #| msgid "$ make stop\n"
  2685. msgid "$ make test\n"
  2686. msgstr "$ make stop\n"
  2687. #. type: Plain text
  2688. #: en/./developers/03_Running_tests.md:14
  2689. msgid ""
  2690. "This command downloads the PHPUnit binary and verifies its checksum. If the "
  2691. "verification fails, the file is deleted. In this case, you should [open an "
  2692. "issue on GitHub](https://github.com/FreshRSS/FreshRSS/issues/new) to let "
  2693. "maintainers know about the problem."
  2694. msgstr ""
  2695. #. type: Plain text
  2696. #: en/./developers/03_Running_tests.md:16
  2697. msgid ""
  2698. "Then, it executes PHPUnit in a Docker container. If you don't use Docker, "
  2699. "you can run the command directly with:"
  2700. msgstr ""
  2701. #. type: Plain text
  2702. #: en/./developers/03_Running_tests.md:17
  2703. #, fuzzy, no-wrap
  2704. #| msgid "$ make stop\n"
  2705. msgid "$ NO_DOCKER=true make test\n"
  2706. msgstr "$ make stop\n"
  2707. #. type: Title ##
  2708. #: en/./developers/03_Running_tests.md:21
  2709. #, no-wrap
  2710. msgid "Travis"
  2711. msgstr ""
  2712. #. type: Plain text
  2713. #: en/./developers/03_Running_tests.md:24
  2714. msgid ""
  2715. "Tests are automatically run when you open a pull request on GitHub. It is "
  2716. "done with [Travis CI](https://travis-ci.org/FreshRSS/FreshRSS/). This is "
  2717. "done to ensure there is no regressions in your code. We cannot merge a PR if "
  2718. "the tests fail so we'll ask you to fix bugs before to review your code."
  2719. msgstr ""
  2720. #. type: Plain text
  2721. #: en/./developers/03_Running_tests.md:25
  2722. #, fuzzy
  2723. #| msgid ""
  2724. #| "If your request is new, [open a new bug ticket](https://github.com/"
  2725. #| "FreshRSS/FreshRSS/issues/new)"
  2726. msgid ""
  2727. "If you're interested in, you can take a look at [the configuration file]"
  2728. "(https://github.com/FreshRSS/FreshRSS/blob/master/.travis.yml)."
  2729. msgstr ""
  2730. "Si votre demande est nouvelle, [ouvrez un nouveau ticket de bug](https://"
  2731. "github.com/FreshRSS/FreshRSS/issues/new)"
  2732. #. type: Title #
  2733. #: en/./developers/04_Frontend/01_View_files.md:1
  2734. #, no-wrap
  2735. msgid "The .phtml files"
  2736. msgstr "Les fichiers .phtml"
  2737. #. type: Title #
  2738. #: en/./developers/04_Frontend/01_View_files.md:5
  2739. #, no-wrap
  2740. msgid "Writing a URL"
  2741. msgstr "Écrire une URL"
  2742. #. type: Title #
  2743. #: en/./developers/04_Frontend/01_View_files.md:9
  2744. #, no-wrap
  2745. msgid "Displaying an icon"
  2746. msgstr "Afficher une icône"
  2747. #. type: Title #
  2748. #: en/./developers/04_Frontend/02_Design.md:1
  2749. #, no-wrap
  2750. msgid "Template file"
  2751. msgstr "Fichier modèle"
  2752. #. type: Title #
  2753. #: en/./developers/04_Frontend/02_Design.md:5
  2754. #, no-wrap
  2755. msgid "Writing a new theme"
  2756. msgstr "Écrire un nouveau thème"
  2757. #. type: Title #
  2758. #: en/./developers/04_Frontend/02_Design.md:9
  2759. #, no-wrap
  2760. msgid "Overriding icons"
  2761. msgstr "Surcharger les icônes"
  2762. #. type: Title #
  2763. #: en/./developers/05_Release_new_version.md:1
  2764. #, no-wrap
  2765. msgid "Preparing the release"
  2766. msgstr "Préparer la sortie"
  2767. #. type: Plain text
  2768. #: en/./developers/05_Release_new_version.md:4
  2769. msgid ""
  2770. "In order to get as much feedback as possible before a release, it's "
  2771. "preferable to announce it on GitHub by creating a dedicated ticket ([see "
  2772. "examples] (https://github.com/FreshRSS/FreshRSS/search?utf8=%E2%9C%93&q=Call"
  2773. "+for+testing&type=Issues)). This should be done **at least one week in "
  2774. "advance**."
  2775. msgstr ""
  2776. "Afin d'avoir le plus de retour possible avant une sortie, il est préférable "
  2777. "de l'annoncer sur GitHub en créant un ticket dédié ([voir les exemples]"
  2778. "(https://github.com/FreshRSS/FreshRSS/search?utf8=%E2%9C%93&q=Call+for"
  2779. "+testing&type=Issues)). Ceci est à faire **au moins une semaine à l'avance**."
  2780. #. type: Plain text
  2781. #: en/./developers/05_Release_new_version.md:6
  2782. msgid "It's also recommended to make the announcement on mailing@freshrss.org."
  2783. msgstr "Il est aussi recommandé de faire l'annonce sur mailing@freshrss.org."
  2784. #. type: Title #
  2785. #: en/./developers/05_Release_new_version.md:7
  2786. #, no-wrap
  2787. msgid "Check the dev status"
  2788. msgstr "S'assurer de l'état de dev"
  2789. #. type: Plain text
  2790. #: en/./developers/05_Release_new_version.md:10
  2791. msgid ""
  2792. "Before releasing a new version of FreshRSS, you must ensure that the code is "
  2793. "stable and free of major bugs. Ideally, our tests should be automated and "
  2794. "executed before any publication."
  2795. msgstr ""
  2796. "Avant de sortir une nouvelle version de FreshRSS, il faut vous assurer que "
  2797. "le code est stable et ne présente pas de bugs majeurs. Idéalement, il "
  2798. "faudrait que nos tests soient automatisés et exécutés avant toute "
  2799. "publication."
  2800. #. type: Plain text
  2801. #: en/./developers/05_Release_new_version.md:12
  2802. msgid ""
  2803. "You must also **make sure that the CHANGELOG file is up to date** with the "
  2804. "updates of the version to be released."
  2805. msgstr ""
  2806. "Il faut aussi **vous assurer que le fichier CHANGELOG est à jour** avec les "
  2807. "mises à jour de la version à sortir."
  2808. #. type: Title #
  2809. #: en/./developers/05_Release_new_version.md:13
  2810. #, no-wrap
  2811. msgid "Git process"
  2812. msgstr "Processus Git"
  2813. #. type: Plain text
  2814. #: en/./developers/05_Release_new_version.md:15
  2815. #, no-wrap
  2816. msgid ""
  2817. "$ git checkout master\n"
  2818. "$ git pull\n"
  2819. "$ vim constants.php\n"
  2820. "# Update version number x.y.y.z of FRESHRSS_VERSION\n"
  2821. "$ git commit -a\n"
  2822. "Version x.y.z\n"
  2823. "$ git tag -a x.y.z\n"
  2824. "Version x.y.z\n"
  2825. "$ git push && git push --tags\n"
  2826. msgstr ""
  2827. "$ git checkout master\n"
  2828. "$ git pull\n"
  2829. "$ vim constants.php\n"
  2830. "# Mettre à jour le numéro de version x.y.z de FRESHRSS_VERSION\n"
  2831. "$ git commit -a\n"
  2832. "Version x.y.z\n"
  2833. "$ git tag -a x.y.z\n"
  2834. "Version x.y.z\n"
  2835. "$ git push && git push --tags\n"
  2836. #. type: Title #
  2837. #: en/./developers/05_Release_new_version.md:27
  2838. #, no-wrap
  2839. msgid "Updating `update.freshrss.org`"
  2840. msgstr "Mise à jour de update.freshrss.org"
  2841. #. type: Plain text
  2842. #: en/./developers/05_Release_new_version.md:30
  2843. msgid ""
  2844. "It's important to update update.freshrss.org since this is the default "
  2845. "service for automatic FreshRSS updates."
  2846. msgstr ""
  2847. "Il est important de mettre à jour update.freshrss.org puisqu'il s'agit du "
  2848. "service par défaut gérant les mises à jour automatiques de FreshRSS."
  2849. #. type: Plain text
  2850. #: en/./developers/05_Release_new_version.md:32
  2851. msgid ""
  2852. "The repository managing the code is located on GitHub: [FreshRSS/update."
  2853. "freshrss.org] (https://github.com/FreshRSS/update.freshrss.org/)."
  2854. msgstr ""
  2855. "Le dépot gérant le code se trouve sur GitHub : [FreshRSS/update.freshrss.org]"
  2856. "(https://github.com/FreshRSS/update.freshrss.org/)."
  2857. #. type: Title ##
  2858. #: en/./developers/05_Release_new_version.md:33
  2859. #, no-wrap
  2860. msgid "Writing the update script"
  2861. msgstr "Écriture du script de mise à jour"
  2862. #. type: Plain text
  2863. #: en/./developers/05_Release_new_version.md:36
  2864. msgid ""
  2865. "The scripts are located in the `./scripts/` directory and must take the form "
  2866. "`update_to_x.y.z.z.php`. This directory also contains `update_to_dev.php` "
  2867. "intended for updates of the `master` branch (this script must not include "
  2868. "code specific to a particular version!) and `update_util.php`, which "
  2869. "contains a list of functions useful for all scripts."
  2870. msgstr ""
  2871. "Les scripts se trouvent dans le répertoire `./scripts/` et doivent être de "
  2872. "la forme `update_to_x.y.z.php`. On trouve aussi dans ce répertoire "
  2873. "`update_to_dev.php` destiné aux mises à jour de la branche `master` (ce "
  2874. "script ne doit pas inclure de code spécifique à une version particulière !) "
  2875. "et `update_util.php` contenant une liste de fonctions utiles à tous les "
  2876. "scripts."
  2877. #. type: Plain text
  2878. #: en/./developers/05_Release_new_version.md:38
  2879. msgid ""
  2880. "In order to write a new script, it's better to copy/paste the last version "
  2881. "or to start from `update_to_dev.php`. The first thing to do is to define the "
  2882. "URL from which the FreshRSS package will be downloaded (`PACKAGE_URL`). The "
  2883. "URL is in the form of `https://codeload.github.com/FreshRSS/FreshRSS/zip/x.y."
  2884. "z`."
  2885. msgstr ""
  2886. "Afin d'écrire un nouveau script, il est préférable de copier / coller celui "
  2887. "de la dernière version ou de partir de `update_to_dev.php`. La première "
  2888. "chose à faire est de définir l'URL à partir de laquelle sera téléchargée le "
  2889. "package FreshRSS (`PACKAGE_URL`). L'URL est de la forme `https://codeload."
  2890. "github.com/FreshRSS/FreshRSS/zip/x.y.z`."
  2891. #. type: Plain text
  2892. #: en/./developers/05_Release_new_version.md:40
  2893. msgid "There are then 5 functions that have to be executed:"
  2894. msgstr "Il existe ensuite 5 fonctions à remplir :"
  2895. #. type: Bullet: '* '
  2896. #: en/./developers/05_Release_new_version.md:46
  2897. msgid ""
  2898. "`apply_update()` takes care of saving the directory containing the data, "
  2899. "checking its structure, downloading the FreshRSS package, deploying it and "
  2900. "cleaning it all up. This function is pre-filled but adjustments can be made "
  2901. "if necessary (e.g., reorganization of the `./data` structure). It returns "
  2902. "`true` if no problem has occurred or a string indicating a problem;"
  2903. msgstr ""
  2904. "`apply_update()` qui se charge de sauvegarder le répertoire contenant les "
  2905. "données, de vérifier sa structure, de télécharger le package FreshRSS, de le "
  2906. "déployer et de tout nettoyer. Cette fonction est pré-remplie mais des "
  2907. "ajustements peuvent être faits si besoin est (ex. réorganisation de la "
  2908. "structure de `./data`). Elle retourne `true` si aucun problème n'est survenu "
  2909. "ou une chaîne de caractères indiquant un soucis ;"
  2910. #. type: Bullet: '* '
  2911. #: en/./developers/05_Release_new_version.md:46
  2912. msgid ""
  2913. "`need_info_update()` returns `true` if the user must intervene during the "
  2914. "update or `false` if not;"
  2915. msgstr ""
  2916. "`need_info_update()` retourne `true` si l'utilisateur doit intervenir durant "
  2917. "la mise à jour ou `false` sinon ;"
  2918. #. type: Bullet: '* '
  2919. #: en/./developers/05_Release_new_version.md:46
  2920. msgid ""
  2921. "`ask_info_update()` displays a form to the user if `need_info_update()` has "
  2922. "returned `true`;"
  2923. msgstr ""
  2924. "`ask_info_update()` affiche un formulaire à l'utilisateur si "
  2925. "`need_info_update()` a retourné `true` ;"
  2926. #. type: Bullet: '* '
  2927. #: en/./developers/05_Release_new_version.md:46
  2928. msgid ""
  2929. "`save_info_update()` is responsible for saving the information filled out by "
  2930. "the user (from the `ask_info_update()` form);"
  2931. msgstr ""
  2932. "`save_info_update()` est chargée de sauvegarder les informations renseignées "
  2933. "par l'utilisateur (issues du formulaire de `ask_info_update()`) ;"
  2934. #. type: Bullet: '* '
  2935. #: en/./developers/05_Release_new_version.md:46
  2936. msgid ""
  2937. "`do_post_update()` is executed at the end of the update and takes into "
  2938. "account the code of the new version (e.g., if the new version changes the "
  2939. "`Minz_Configuration` object, you will benefit from these improvements)."
  2940. msgstr ""
  2941. "`do_post_update()` est exécutée à la fin de la mise à jour et prend en "
  2942. "compte le code de la nouvelle version (ex. si la nouvelle version modifie "
  2943. "l'objet `Minz_Configuration`, vous bénéficierez de ces améliorations)."
  2944. #. type: Title ##
  2945. #: en/./developers/05_Release_new_version.md:47
  2946. #, no-wrap
  2947. msgid "Updating the versions file"
  2948. msgstr "Mise à jour du fichier de versions"
  2949. #. type: Plain text
  2950. #: en/./developers/05_Release_new_version.md:50
  2951. msgid ""
  2952. "Once the script has been written and versioned, it's necessary to update the "
  2953. "`./versions.php' file which contains a mapping table indicating which "
  2954. "versions are updated to which other versions."
  2955. msgstr ""
  2956. "Lorsque le script a été écrit et versionné, il est nécessaire de mettre à "
  2957. "jour le fichier `./versions.php` qui contient une table de correspondances "
  2958. "indiquant quelles versions sont mises à jour vers quelles autres versions."
  2959. #. type: Plain text
  2960. #: en/./developers/05_Release_new_version.md:52
  2961. msgid "Here's an example of a `versions.php` file:"
  2962. msgstr "Voici un exemple de fichier `versions.php` :"
  2963. #. type: Plain text
  2964. #: en/./developers/05_Release_new_version.md:53
  2965. #, no-wrap
  2966. msgid ""
  2967. "<?php\n"
  2968. "return array(\n"
  2969. "\t// STABLE\n"
  2970. "\t'0.8.0' => '1.0.0',\n"
  2971. "\t'0.8.1' => '1.0.0',\n"
  2972. "\t'1.0.0' => '1.0.1', // doesn't exist (yet)\n"
  2973. "\t// DEV\n"
  2974. "\t'1.1.2-dev' => 'dev',\n"
  2975. "\t'1.1.3-dev' => 'dev',\n"
  2976. "\t'1.1.4-dev' => 'dev',\n"
  2977. ");\n"
  2978. msgstr ""
  2979. "<?php\n"
  2980. "return array(\n"
  2981. "\t// STABLE\n"
  2982. "\t'0.8.0' => '1.0.0',\n"
  2983. "\t'0.8.1' => '1.0.0',\n"
  2984. "\t'1.0.0' => '1.0.1', // doesn't exist (yet)\n"
  2985. "\t// DEV\n"
  2986. "\t'1.1.2-dev' => 'dev',\n"
  2987. "\t'1.1.3-dev' => 'dev',\n"
  2988. "\t'1.1.4-dev' => 'dev',\n"
  2989. ");\n"
  2990. #. type: Plain text
  2991. #: en/./developers/05_Release_new_version.md:68
  2992. msgid "And here's how this table works:"
  2993. msgstr "Et voici comment fonctionne cette table :"
  2994. #. type: Bullet: '* '
  2995. #: en/./developers/05_Release_new_version.md:74
  2996. msgid "on the left you can find the N version, on the right the N+1 version;"
  2997. msgstr "à gauche se trouve la version N, à droite la version N+1 ;"
  2998. #. type: Bullet: '* '
  2999. #: en/./developers/05_Release_new_version.md:74
  3000. msgid "the `x.y.z.z-dev` versions are **all** updated to `master`;"
  3001. msgstr "les versions `x.y.z-dev` sont **toutes** mises à jour vers `master` ;"
  3002. #. type: Bullet: '* '
  3003. #: en/./developers/05_Release_new_version.md:74
  3004. msgid "stable versions are updated to stable versions;"
  3005. msgstr "les versions stables sont mises à jour vers des versions stables ;"
  3006. #. type: Bullet: '* '
  3007. #: en/./developers/05_Release_new_version.md:74
  3008. msgid ""
  3009. "it's possible to skip several versions at once, provided that the update "
  3010. "scripts support it;"
  3011. msgstr ""
  3012. "il est possible de sauter plusieurs versions d'un coup à condition que les "
  3013. "scripts de mise à jour le prennent en charge ;"
  3014. #. type: Bullet: '* '
  3015. #: en/./developers/05_Release_new_version.md:74
  3016. msgid ""
  3017. "it's advisable to indicate the correspondence of the current version to its "
  3018. "potential future version by specifying that this version does not yet exist. "
  3019. "As long as the corresponding script does not exist, nothing will happen."
  3020. msgstr ""
  3021. "il est conseillé d'indiquer la correspondance de la version courante vers sa "
  3022. "potentielle future version en précisant que cette version n'existe pas "
  3023. "encore. Tant que le script correspondant n'existera pas, rien ne se passera."
  3024. #. type: Plain text
  3025. #: en/./developers/05_Release_new_version.md:76
  3026. msgid ""
  3027. "It's **very strongly** recommended to keep this file organized according to "
  3028. "version numbers by separating stable and dev versions."
  3029. msgstr ""
  3030. "Il est **très fortement** indiqué de garder ce fichier rangé selon les "
  3031. "numéros de versions en séparant les versions stables et de dev."
  3032. #. type: Title ##
  3033. #: en/./developers/05_Release_new_version.md:77
  3034. #, no-wrap
  3035. msgid "Deployment"
  3036. msgstr "Déploiement"
  3037. #. type: Plain text
  3038. #: en/./developers/05_Release_new_version.md:80
  3039. msgid ""
  3040. "Before updating update.freshrss.org, it's better to test with dev.update."
  3041. "freshrss.org, which corresponds to pre-production. So update dev.update."
  3042. "freshrss.org and change the `FRESHRSS_UPDATE_WEBSITE` URL of your FreshRSS "
  3043. "instance. Start the update and check that it's running correctly."
  3044. msgstr ""
  3045. "Avant de mettre à jour update.freshrss.org, il est préférable de tester avec "
  3046. "dev.update.freshrss.org qui correspond à la pré-production. Mettez donc à "
  3047. "jour dev.update.freshrss.org et changez l'URL `FRESHRSS_UPDATE_WEBSITE` de "
  3048. "votre instance FreshRSS. Lancez la mise à jour et vérifiez que celle-ci se "
  3049. "déroule correctement."
  3050. #. type: Plain text
  3051. #: en/./developers/05_Release_new_version.md:82
  3052. msgid ""
  3053. "When you're satisfied, update update.freshrss.org with the new script, test "
  3054. "it again, and then move on."
  3055. msgstr ""
  3056. "Lorsque vous serez satisfait, mettez à jour update.freshrss.org avec le "
  3057. "nouveau script et en testant de nouveau puis passez à la suite."
  3058. #. type: Title #
  3059. #: en/./developers/05_Release_new_version.md:83
  3060. #, no-wrap
  3061. msgid "Updating the FreshRSS services"
  3062. msgstr "Mise à jour des services FreshRSS"
  3063. #. type: Plain text
  3064. #: en/./developers/05_Release_new_version.md:86
  3065. msgid "Two services need to be updated immediately after the update."
  3066. msgstr ""
  3067. "Deux services sont à mettre à jour immédiatement après la mise à jour de "
  3068. "update.freshrss.org :"
  3069. #. type: Bullet: '* '
  3070. #: en/./developers/05_Release_new_version.md:89
  3071. msgid "rss.freshrss.org;"
  3072. msgstr "rss.freshrss.org ;"
  3073. #. type: Bullet: '* '
  3074. #: en/./developers/05_Release_new_version.md:89
  3075. msgid "demo.freshrss.org (public login: `demo` / `demodemo`)."
  3076. msgstr "demo.freshrss.org (identifiants publics : `demo` / `demodemo`)."
  3077. #. type: Title #
  3078. #: en/./developers/05_Release_new_version.md:90
  3079. #, no-wrap
  3080. msgid "Publicly announce the release"
  3081. msgstr "Annoncer publiquement la sortie"
  3082. #. type: Plain text
  3083. #: en/./developers/05_Release_new_version.md:93
  3084. msgid ""
  3085. "When everything's working, it's time to announce the release to the world!"
  3086. msgstr ""
  3087. "Lorsque tout fonctionne, il est temps d'annoncer la sortie au monde entier !"
  3088. #. type: Bullet: '* '
  3089. #: en/./developers/05_Release_new_version.md:98
  3090. msgid ""
  3091. "on GitHub by creating[a new release](https://github.com/FreshRSS/FreshRSS/"
  3092. "releases/new)"
  3093. msgstr ""
  3094. "sur GitHub en créant [une nouvelle release](https://github.com/FreshRSS/"
  3095. "FreshRSS/releases/new) ;"
  3096. #. type: Bullet: '* '
  3097. #: en/./developers/05_Release_new_version.md:98
  3098. msgid ""
  3099. "on the freshrss.org blog, at least for stable versions (write the article "
  3100. "on[FreshRSS/freshrss.org](https://github.com/FreshRSS/freshrss.org))"
  3101. msgstr ""
  3102. "sur le blog de freshrss.org au minimum pour les versions stables (écrire "
  3103. "l'article sur [FreshRSS/freshrss.org](https://github.com/FreshRSS/freshrss."
  3104. "org))."
  3105. #. type: Bullet: '* '
  3106. #: en/./developers/05_Release_new_version.md:98
  3107. msgid "on Twitter ([@FreshRSS](https://twitter.com/FreshRSS) account)"
  3108. msgstr "sur Twitter (compte [@FreshRSS](https://twitter.com/FreshRSS)) ;"
  3109. #. type: Bullet: '* '
  3110. #: en/./developers/05_Release_new_version.md:98
  3111. msgid "and on mailing@freshrss.org"
  3112. msgstr "et sur mailing@freshrss.org ;"
  3113. #. type: Title #
  3114. #: en/./developers/05_Release_new_version.md:99
  3115. #, no-wrap
  3116. msgid "Starting the next development version"
  3117. msgstr "Lancer la prochaine version de développement"
  3118. #. type: Plain text
  3119. #: en/./developers/05_Release_new_version.md:101
  3120. #, no-wrap
  3121. msgid ""
  3122. "$ git checkout master\n"
  3123. "$ vim constants.php\n"
  3124. "# Update the FRESHRSS_VERSION\n"
  3125. "$ vim CHANGELOG.md\n"
  3126. "# Prepare the changelog for the next version\n"
  3127. "$ git add CHANGELOG.md && git commit && git push\n"
  3128. msgstr ""
  3129. "$ git checkout master\n"
  3130. "$ vim constants.php\n"
  3131. "# Mettre à jour le numéro de version de FRESHRSS_VERSION\n"
  3132. "$ vim CHANGELOG.md\n"
  3133. "# Préparer la section pour la prochaine version\n"
  3134. "$ git add CHANGELOG.md && git commit && git push\n"
  3135. #. type: Plain text
  3136. #: en/./developers/05_Release_new_version.md:110
  3137. msgid ""
  3138. "Also remember to update update.freshrss.org so that it takes the current "
  3139. "development version into account."
  3140. msgstr ""
  3141. "Pensez aussi à mettre à jour update.freshrss.org pour qu'il prenne en compte "
  3142. "la version de développement actuelle."
  3143. #. type: Plain text
  3144. #: en/./index.md:2
  3145. msgid "![FreshRSS logo](img/logo_freshrss.png)"
  3146. msgstr "![Logo de FreshRSS](img/logo_freshrss.png)"
  3147. #. type: Plain text
  3148. #: en/./index.md:4
  3149. msgid ""
  3150. "FreshRSS is an RSS aggregator and reader. It allows you to read and follow "
  3151. "several news websites at a glance without the need to browse from one "
  3152. "website to another."
  3153. msgstr ""
  3154. "FreshRSS est un agrégateur et lecteur de flux RSS. Il permet de regrouper "
  3155. "l’actualité de plusieurs sites différents dans un endroit unique pour que "
  3156. "vous puissiez la lire sans devoir aller de site en site."
  3157. #. type: Plain text
  3158. #: en/./index.md:6
  3159. msgid "FreshRSS has a lot of features including:"
  3160. msgstr ""
  3161. "FreshRSS a été conçu comme un agrégateur puissant et propose des tas de "
  3162. "fonctionnalités :"
  3163. #. type: Bullet: '* '
  3164. #: en/./index.md:18
  3165. msgid "RSS and Atom aggregation"
  3166. msgstr "Agrégation des flux RSS et Atom."
  3167. #. type: Bullet: '* '
  3168. #: en/./index.md:18
  3169. msgid ""
  3170. "Mark article as favorite if you liked it or if you want to read it later"
  3171. msgstr ""
  3172. "Utilisez les favoris pour marquer les articles qui vous ont plu ou que vous "
  3173. "souhaitez lire plus tard."
  3174. #. type: Bullet: '* '
  3175. #: en/./index.md:18
  3176. msgid "Filter and search functionality helps to easily find articles"
  3177. msgstr ""
  3178. "Le système de filtrage et de recherche permettent de cibler exactement les "
  3179. "articles que vous souhaitez lire."
  3180. #. type: Bullet: '* '
  3181. #: en/./index.md:18
  3182. msgid ""
  3183. "Statistics to show you the publishing frequency all the websites you follow"
  3184. msgstr ""
  3185. "Les statistiques permettent de savoir en un coup d’œil quels sont les sites "
  3186. "qui publient le plus, ou à l’inverse, le moins."
  3187. #. type: Bullet: '* '
  3188. #: en/./index.md:18
  3189. msgid "Import/export of your feeds into OPML format"
  3190. msgstr "Importation / exportation des flux au format OPML."
  3191. #. type: Bullet: '* '
  3192. #: en/./index.md:18
  3193. msgid "Several themes created by the community"
  3194. msgstr "Multi-thèmes pour changer l’habillage de FreshRSS."
  3195. #. type: Bullet: '* '
  3196. #: en/./index.md:18
  3197. msgid "\"Google Reader\"-like API to connect Android applications"
  3198. msgstr "API Google Reader pour pouvoir y brancher des applications Android."
  3199. #. type: Bullet: '* '
  3200. #: en/./index.md:18
  3201. msgid ""
  3202. "The application is \"responsive,\" which means it adapts to small screens so "
  3203. "you can bring articles in your pocket"
  3204. msgstr ""
  3205. "« *Responsive design* » : l’application s’adapte aux petits écrans pour "
  3206. "emporter FreshRSS dans votre poche."
  3207. #. type: Bullet: '* '
  3208. #: en/./index.md:18
  3209. msgid ""
  3210. "Self-hosted: the code is free (under AGPL3 licence), so you can host your "
  3211. "own instance of FreshRSS"
  3212. msgstr ""
  3213. "Auto-hébergeable : le code source est libre (AGPL3) et vous pouvez donc "
  3214. "l’héberger sur votre propre serveur."
  3215. #. type: Bullet: '* '
  3216. #: en/./index.md:18
  3217. msgid "Multi-user, so you can also host for your friends and family"
  3218. msgstr ""
  3219. "Multi-utilisateurs pour héberger plusieurs personnes sur une même "
  3220. "installation."
  3221. #. type: Bullet: '* '
  3222. #: en/./index.md:18
  3223. msgid "And a lot more!"
  3224. msgstr "Et bien d’autres !"
  3225. #. type: Plain text
  3226. #: en/./index.md:20
  3227. msgid "This documentation is split into different sections:"
  3228. msgstr "Cette documentation est divisée en plusieurs parties :"
  3229. #. type: Bullet: '* '
  3230. #: en/./index.md:24
  3231. msgid ""
  3232. "[User documentation](./users/02_First_steps.html), where you can discover "
  3233. "all the possibilities offered by FreshRSS"
  3234. msgstr ""
  3235. "La [documentation utilisateurs](./users/02_First_steps.md) pour découvrir "
  3236. "les fonctionnalités de FreshRSS."
  3237. #. type: Bullet: '* '
  3238. #: en/./index.md:24
  3239. msgid ""
  3240. "[Administrator documentation](./admins/01_Index.html) for detailed "
  3241. "installation and maintenance related tasks"
  3242. msgstr ""
  3243. "La [documentation administrateurs](../en/admins/01_Installation.md) (en "
  3244. "anglais) pour l’installation et la maintenance de FreshRSS."
  3245. #. type: Bullet: '* '
  3246. #: en/./index.md:24
  3247. msgid ""
  3248. "[Developer documentation](./developers/01_First_steps.html) to guide you in "
  3249. "the source code of FreshRSS and to help you if you want to contribute"
  3250. msgstr ""
  3251. "La [documentation développeurs](./developers/01_First_steps.md) pour savoir "
  3252. "comment contribuer et mieux comprendre le code source de FreshRSS."
  3253. #. type: Bullet: '* '
  3254. #: en/./index.md:24
  3255. msgid ""
  3256. "[Contributor guidelines](./contributing.md) for those who want to help "
  3257. "improve FreshRSS"
  3258. msgstr ""
  3259. "Le [guide de contribution](./contributing.md) pour nous aider à développer "
  3260. "FreshRSS."
  3261. #. type: Plain text
  3262. #: en/./users/02_First_steps.md:2
  3263. msgid ""
  3264. "Learning how to handle a new application is not always easy. We've tried to "
  3265. "make FreshRSS as intuitive as possible, but you might still need a little "
  3266. "help to master the program."
  3267. msgstr ""
  3268. "Découvrir un nouveau logiciel n'est pas toujours facile. Si nous avons voulu "
  3269. "FreshRSS le plus intuitif possible, vous aurez peut-être besoin d'un coup de "
  3270. "main pour le maîtriser."
  3271. #. type: Plain text
  3272. #: en/./users/02_First_steps.md:4
  3273. msgid ""
  3274. "This section will guide you to the pages you need to get started. The order "
  3275. "is tailored to newcomers."
  3276. msgstr ""
  3277. "Cette section se propose de vous aider dans la prise en main de l'outil. Il "
  3278. "ne s'agit que de liens menant vers les autres pages de la documentation mais "
  3279. "ordonnées dans un ordre spécifique aux nouveaux arrivants."
  3280. #. type: Plain text
  3281. #: en/./users/02_First_steps.md:6
  3282. msgid ""
  3283. "[After installing the application](../admins/03_Installation.md), the first "
  3284. "step is to add some feeds. You have a few options:"
  3285. msgstr ""
  3286. "[Après l'installation](../../en/admins/03_Installation.md), la première "
  3287. "chose à faire est d'ajouter un ou plusieurs sites à suivre. Pour cela "
  3288. "plusieurs choix s'offrent à vous :"
  3289. #. type: Bullet: '1. '
  3290. #: en/./users/02_First_steps.md:10
  3291. msgid "[Add a feed manually](04_Subscriptions.md#adding-a-feed)"
  3292. msgstr "[Ajouter un flux manuellement](04_Subscriptions.md#ajouter-un-flux)"
  3293. #. type: Bullet: '2. '
  3294. #: en/./users/02_First_steps.md:10
  3295. msgid "[Import an OPML or JSON file](04_Subscriptions.md#import-and-export)"
  3296. msgstr ""
  3297. "[Importer un fichier OPML ou JSON](04_Subscriptions.md#import-et-export)"
  3298. #. type: Bullet: '3. '
  3299. #: en/./users/02_First_steps.md:10
  3300. msgid "[Use the bookmarklet](04_Subscriptions.md#use-bookmarklet)"
  3301. msgstr "[Utiliser le bookmark dédié](04_Subscriptions.md#utiliser-le-bookmark)"
  3302. #. type: Plain text
  3303. #: en/./users/02_First_steps.md:12
  3304. msgid ""
  3305. "Once you have added your feeds to FreshRSS, it is time to read them. There "
  3306. "are three availalbe reading modes:"
  3307. msgstr ""
  3308. "Une fois que vous avez ajouté vos flux à FreshRSS, il est temps de les lire. "
  3309. "Pour cela, trois modes de lecture s'offrent à vous :"
  3310. #. type: Bullet: '1. '
  3311. #: en/./users/02_First_steps.md:16
  3312. msgid ""
  3313. "[The normal view](03_Main_view.md#normal-view) enables you to quickly read "
  3314. "new articles"
  3315. msgstr ""
  3316. "[La vue normale](03_Main_view.md#la-vue-normale) qui permet de voir et de "
  3317. "lire rapidement les nouveaux articles"
  3318. #. type: Bullet: '2. '
  3319. #: en/./users/02_First_steps.md:16
  3320. msgid ""
  3321. "[The global view](03_Main_view.md#global-view) shows you an overview of the "
  3322. "status of your feeds in one glance"
  3323. msgstr ""
  3324. "[La vue globale](03_Main_view.md#la-vue-globale) est destinée à vous offrir "
  3325. "un panorama de l'état de vos flux"
  3326. #. type: Bullet: '3. '
  3327. #: en/./users/02_First_steps.md:16
  3328. msgid ""
  3329. "[The reader view](03_Main_view.md#reader-view) offers you a comfortable "
  3330. "reading experience"
  3331. msgstr ""
  3332. "[La vue lecture](03_Main_view.md#la-vue-lecture) est pensée pour vous offrir "
  3333. "un meilleur confort de lecture"
  3334. #. type: Plain text
  3335. #: en/./users/02_First_steps.md:18
  3336. msgid ""
  3337. "Now that you've mastered basic use, it's time to configure FreshRSS to "
  3338. "improve your reading experience. It's highly configurable, so it's "
  3339. "recommended to play around with them to find a configuration that suits you "
  3340. "well. Here are a few resources to help you improve your daily FreshRSS "
  3341. "experience:"
  3342. msgstr ""
  3343. "Bien, vous maitrisez maintenant la vue que vous préférez ? Il est temps de "
  3344. "vous offrir un peu plus de confort de lecture. FreshRSS est grandement "
  3345. "configurable et c'est à vous de trouver la configuration qui vous conviendra "
  3346. "le plus. Voici tout de même quelques pistes pour améliorer votre quotidien "
  3347. "sur FreshRSS :"
  3348. #. type: Bullet: '* '
  3349. #: en/./users/02_First_steps.md:27
  3350. msgid ""
  3351. "[Organize your feeds in categories](04_Subscriptions.md#feed-management)"
  3352. msgstr ""
  3353. "[Rangez vos flux dans des catégories](04_Subscriptions."
  3354. "md#organisation_des_flux)"
  3355. #. type: Bullet: '* '
  3356. #: en/./users/02_First_steps.md:27
  3357. msgid "[Change the home page](05_Configuration.md#changing-the-view)"
  3358. msgstr ""
  3359. "[Configurez votre page d'accueil](05_Configuration.md#personnaliser-la-vue)"
  3360. #. type: Bullet: '* '
  3361. #: en/./users/02_First_steps.md:27
  3362. msgid "[Choose the reading options](05_Configuration.md#reading-options)"
  3363. msgstr ""
  3364. "[Configurez vos options de lecture](05_Configuration.md#options-de-lecture)"
  3365. #. type: Bullet: '* '
  3366. #: en/./users/02_First_steps.md:27
  3367. msgid "[Refresh feeds](03_Main_view.md#refreshing-feeds)"
  3368. msgstr "[Mettez à jour vos flux](03_Main_view.md#rafraichir-les-flux)"
  3369. #. type: Bullet: '* '
  3370. #: en/./users/02_First_steps.md:27
  3371. msgid ""
  3372. "[Filter articles](03_Main_view.md#filtering-articles) for a fast access to a "
  3373. "selection"
  3374. msgstr ""
  3375. "[Filtrez les articles](03_Main_view.md#filtrer-les-articles) pour accéder "
  3376. "rapidement à ceux que vous voulez lire en priorité"
  3377. #. type: Bullet: '* '
  3378. #: en/./users/02_First_steps.md:27
  3379. msgid ""
  3380. "[Search an article](03_Main_view.md#searching-articles) published some time "
  3381. "ago"
  3382. msgstr ""
  3383. "[Retrouvez un article](03_Main_view.md#rechercher-des-articles) qui a été "
  3384. "publié il y a quelques jours ou mois"
  3385. #. type: Bullet: '* '
  3386. #: en/./users/02_First_steps.md:27
  3387. msgid "[Access your feeds on a mobile device](06_Mobile_access.md)"
  3388. msgstr "[Accédez à vos flux même sur mobile](06_Mobile_access.md)"
  3389. #. type: Bullet: '* '
  3390. #: en/./users/02_First_steps.md:27
  3391. msgid "[Add some extensions](https://github.com/FreshRSS/Extensions)"
  3392. msgstr "[Ajoutez quelques extensions](https://github.com/FreshRSS/Extensions)"
  3393. #. type: Bullet: '* '
  3394. #: en/./users/02_First_steps.md:27
  3395. msgid "[Frequently asked questions](07_Frequently_Asked_Questions.md)"
  3396. msgstr "[Foire aux questions](07_Frequently_Asked_Questions.md)"
  3397. #. type: Title #
  3398. #: en/./users/03_Main_view.md:1
  3399. #, no-wrap
  3400. msgid "Normal view"
  3401. msgstr "La vue normale"
  3402. #. type: Title #
  3403. #: en/./users/03_Main_view.md:5
  3404. #, no-wrap
  3405. msgid "Global view"
  3406. msgstr "La vue globale"
  3407. #. type: Title #
  3408. #: en/./users/03_Main_view.md:9
  3409. #, no-wrap
  3410. msgid "Reader view"
  3411. msgstr "La vue lecture"
  3412. #. type: Title #
  3413. #: en/./users/03_Main_view.md:13
  3414. #, no-wrap
  3415. msgid "Refreshing feeds"
  3416. msgstr "Rafraîchir les flux"
  3417. #. type: Plain text
  3418. #: en/./users/03_Main_view.md:16
  3419. msgid ""
  3420. "To take full advantage of FreshRSS, it needs to retrieve new items from the "
  3421. "feeds you have subscribed to. There are several ways to do this."
  3422. msgstr ""
  3423. "Pour profiter pleinement de FreshRSS, il faut qu’il récupère les nouveaux "
  3424. "articles disponibles des flux auxquels vous avez souscrit. Pour cela, il "
  3425. "existe plusieurs méthodes."
  3426. #. type: Title ##
  3427. #: en/./users/03_Main_view.md:17
  3428. #, no-wrap
  3429. msgid "Automatic update"
  3430. msgstr "Mise à jour automatique"
  3431. #. type: Plain text
  3432. #: en/./users/03_Main_view.md:20
  3433. msgid ""
  3434. "This is the recommended method since you can forget about it once it is "
  3435. "configured."
  3436. msgstr ""
  3437. "C’est la méthode recommandée car il n’y a pas besoin d’y penser, elle se "
  3438. "fait toute seule, à la fréquence que vous avez choisi."
  3439. #. type: Title ###
  3440. #: en/./users/03_Main_view.md:21
  3441. #, no-wrap
  3442. msgid "With the actualize_script.php script"
  3443. msgstr "Par le script actualize_script.php"
  3444. #. type: Plain text
  3445. #: en/./users/03_Main_view.md:24
  3446. msgid ""
  3447. "This method is only available if you have access to the scheduled tasks of "
  3448. "the machine on which your FreshRSS instance is installed."
  3449. msgstr ""
  3450. "Cette méthode n’est possible que si vous avez accès aux tâches planifiées de "
  3451. "la machine sur laquelle est installée votre instance de FreshRSS."
  3452. #. type: Plain text
  3453. #: en/./users/03_Main_view.md:26
  3454. msgid ""
  3455. "The script is named *actualize_script.php* and is located in the *app* "
  3456. "folder. The scheduled task syntax will not be explained here. However, here "
  3457. "is [a quick introduction to crontab](http://www.adminschoice.com/crontab-"
  3458. "quick-reference/) that might help you."
  3459. msgstr ""
  3460. "Le script qui permet de mettre à jour les articles s’appelle "
  3461. "*actualize_script.php* et se trouve dans le répertoire *app* de votre "
  3462. "instance de FreshRSS. La syntaxe des tâches planifiées ne sera pas expliqué "
  3463. "ici, cependant voici [une introduction rapide à crontab](http://www."
  3464. "adminschoice.com/crontab-quick-reference/) qui peut vous aider."
  3465. #. type: Plain text
  3466. #: en/./users/03_Main_view.md:28
  3467. msgid "Here is an example to trigger article update every hour."
  3468. msgstr ""
  3469. "Ci-dessous vous trouverez un exemple permettant la mise à jour des articles "
  3470. "toutes les heures."
  3471. #. type: Code fence info string
  3472. #: en/./users/03_Main_view.md:29 en/./users/03_Main_view.md:61
  3473. #: en/./users/03_Main_view.md:79 en/./users/03_Main_view.md:85
  3474. #: en/./users/03_Main_view.md:93
  3475. #, no-wrap
  3476. msgid "cron"
  3477. msgstr "cron"
  3478. #. type: Plain text
  3479. #: en/./users/03_Main_view.md:29
  3480. #, no-wrap
  3481. msgid "0 * * * * php /path/to/FreshRSS/app/actualize_script.php > /tmp/FreshRSS.log 2>&1\n"
  3482. msgstr "0 * * * * php /chemin/vers/FreshRSS/app/actualize_script.php > /tmp/FreshRSS.log 2>&1\n"
  3483. #. type: Plain text
  3484. #: en/./users/03_Main_view.md:34
  3485. msgid ""
  3486. "Special parameters to configure the script - all parameters can be combined:"
  3487. msgstr ""
  3488. "« Paramètres de configuration du script; Ils sont utilisables "
  3489. "simultanément : »"
  3490. #. type: Plain text
  3491. #: en/./users/03_Main_view.md:38
  3492. msgid ""
  3493. "- Parameter \"force\" https://freshrss.example.net/i/?"
  3494. "c=feed&a=actualize&force=1 If *force* is set to 1 all feeds will be "
  3495. "refreshed at once."
  3496. msgstr ""
  3497. #. type: Plain text
  3498. #: en/./users/03_Main_view.md:42
  3499. msgid ""
  3500. "- Parameter \"ajax\" https://freshrss.example.net/i/?"
  3501. "c=feed&a=actualize&ajax=1 Only a status site is returned and not a complete "
  3502. "website. Example: \"OK\""
  3503. msgstr ""
  3504. #. type: Plain text
  3505. #: en/./users/03_Main_view.md:46
  3506. msgid ""
  3507. "- Parameter \"maxFeeds\" https://freshrss.example.net/i/?"
  3508. "c=feed&a=actualize&maxFeeds=30 If *maxFeeds* is set the configured amount of "
  3509. "feeds is refreshed at once. The default setting is \"10\"."
  3510. msgstr ""
  3511. #. type: Plain text
  3512. #: en/./users/03_Main_view.md:50
  3513. msgid ""
  3514. "- Parameter \"token\" https://freshrss.example.net/i/?"
  3515. "c=feed&a=actualize&token=542345872345734 Security parameter to prevent "
  3516. "unauthorized refreshes. For detailed Documentation see \"Form authentication"
  3517. "\"."
  3518. msgstr ""
  3519. #. type: Title ###
  3520. #: en/./users/03_Main_view.md:51
  3521. #, no-wrap
  3522. msgid "Online cron"
  3523. msgstr ""
  3524. #. type: Plain text
  3525. #: en/./users/03_Main_view.md:54
  3526. msgid ""
  3527. "If you do not have access to the installation server scheduled task, you can "
  3528. "still automate the update process."
  3529. msgstr ""
  3530. #. type: Plain text
  3531. #: en/./users/03_Main_view.md:56
  3532. msgid ""
  3533. "To do so, you need to create a scheduled task, which need to call a specific "
  3534. "URL: https://freshrss.example.net/i/?c=feed&a=actualize (it could be "
  3535. "different depending on your installation). Depending on your application "
  3536. "authentication method, you need to adapt the scheduled task."
  3537. msgstr ""
  3538. #. type: Title ####
  3539. #: en/./users/03_Main_view.md:57
  3540. #, no-wrap
  3541. msgid "No authentication"
  3542. msgstr "Aucune authentification"
  3543. #. type: Plain text
  3544. #: en/./users/03_Main_view.md:60
  3545. msgid ""
  3546. "This is the most straightforward since you have a public instance; there is "
  3547. "nothing special to configure:"
  3548. msgstr ""
  3549. "C’est le cas le plus simple, puisque votre instance est publique, vous "
  3550. "n’avez rien de particulier à préciser :"
  3551. #. type: Plain text
  3552. #: en/./users/03_Main_view.md:61
  3553. #, no-wrap
  3554. msgid "0 * * * * curl 'https://freshrss.example.net/i/?c=feed&a=actualize'\n"
  3555. msgstr "0 * * * * curl 'https://freshrss.example.net/i/?c=feed&a=actualize'\n"
  3556. #. type: Title ###
  3557. #: en/./users/03_Main_view.md:65
  3558. #, no-wrap
  3559. msgid "Form authentication"
  3560. msgstr "Authentification par formulaire"
  3561. #. type: Plain text
  3562. #: en/./users/03_Main_view.md:68
  3563. msgid ""
  3564. "If you configure the application to allow anonymous reading, you can also "
  3565. "allow anonymous users to update feeds (“Allow anonymous refresh of the "
  3566. "articles”)."
  3567. msgstr ""
  3568. "Dans ces cas-là, si vous avez autorisé la lecture anonyme des articles, vous "
  3569. "pouvez aussi permettre à n’importe qui de rafraîchir vos flux (« Autoriser "
  3570. "le rafraîchissement anonyme des flux »)."
  3571. #. type: Plain text
  3572. #: en/./users/03_Main_view.md:70
  3573. msgid "![Anonymous access configuration](../img/users/anonymous_access.1.png)"
  3574. msgstr ""
  3575. "![Configuration de l’accès anonymes](../img/users/anonymous_access.1.png)"
  3576. #. type: Plain text
  3577. #: en/./users/03_Main_view.md:72
  3578. msgid ""
  3579. "The URL used in the previous section will now become accessible to anyone. "
  3580. "Therefore you can use the same syntax for the scheduled task."
  3581. msgstr ""
  3582. "L’url précédente devient donc accessible à n’importe qui et vous pouvez "
  3583. "utiliser la tâche cron de la partie précédente."
  3584. #. type: Plain text
  3585. #: en/./users/03_Main_view.md:74
  3586. msgid ""
  3587. "You can also configure an authentication token to grant special access on "
  3588. "the server."
  3589. msgstr ""
  3590. "Vous pouvez aussi configurer un jeton d’authentification pour accorder un "
  3591. "droit spécial sur votre serveur."
  3592. #. type: Plain text
  3593. #: en/./users/03_Main_view.md:76
  3594. msgid "![Token configuration](../img/users/token.1.png)"
  3595. msgstr "![Configuration du token](../img/users/token.1.png)"
  3596. #. type: Plain text
  3597. #: en/./users/03_Main_view.md:78
  3598. msgid "The scheduled task syntax should look as follows:"
  3599. msgstr "La tâche cron à utiliser sera de la forme suivante :"
  3600. #. type: Plain text
  3601. #: en/./users/03_Main_view.md:79
  3602. #, no-wrap
  3603. msgid "0 * * * * curl 'https://freshrss.example.net/i/?c=feed&a=actualize&token=my-token'\n"
  3604. msgstr "0 * * * * curl 'https://freshrss.example.net/i/?c=feed&a=actualize&token=mon-token'\n"
  3605. #. type: Plain text
  3606. #: en/./users/03_Main_view.md:84
  3607. msgid ""
  3608. "You can also target a different user by adding their username to the query "
  3609. "string, with `&user=insert-username`:"
  3610. msgstr ""
  3611. #. type: Plain text
  3612. #: en/./users/03_Main_view.md:85
  3613. #, no-wrap
  3614. msgid "0 * * * * curl 'https://freshrss.example.net/i/?c=feed&a=actualize&user=someone&token=my-token'\n"
  3615. msgstr "0 * * * * curl 'https://freshrss.exemple.net/i/?c=feed&a=actualize&user=quelquun&token=mon-token'\n"
  3616. #. type: Title ###
  3617. #: en/./users/03_Main_view.md:89
  3618. #, no-wrap
  3619. msgid "HTTP authentication"
  3620. msgstr "Authentification HTTP"
  3621. #. type: Plain text
  3622. #: en/./users/03_Main_view.md:92
  3623. msgid ""
  3624. "When using HTTP authentication, the syntax in the two previous sections is "
  3625. "unusable. You'll need to provide your credentials to the scheduled task. "
  3626. "**Note that this method is highly discouraged since it means that your "
  3627. "credentials will be in plain sight!**"
  3628. msgstr ""
  3629. "Dans ce cas-là, le token et les permissions “anonymes” sont inutilisables et "
  3630. "il vous sera nécessaire d’indiquer vos identifiants dans la tâche cron. "
  3631. "**Notez que cette solution est grandement déconseillée puisqu’elle implique "
  3632. "que vos identifiants seront visibles en clair !**"
  3633. #. type: Plain text
  3634. #: en/./users/03_Main_view.md:93
  3635. #, no-wrap
  3636. msgid "0 * * * * curl -u alice:password123 'https://freshrss.example.net/i/?c=feed&a=actualize'\n"
  3637. msgstr "0 * * * * curl -u alice:motdepasse123 'https://freshrss.exemple.net/i/?c=feed&a=actualize'\n"
  3638. #. type: Title ##
  3639. #: en/./users/03_Main_view.md:97
  3640. #, no-wrap
  3641. msgid "Manual update"
  3642. msgstr "Mise à jour manuelle"
  3643. #. type: Plain text
  3644. #: en/./users/03_Main_view.md:100
  3645. msgid ""
  3646. "If you can't or don't want to use the automatic method, you can update "
  3647. "manually. There are two methods for updating all or some of the feeds."
  3648. msgstr ""
  3649. "Si vous ne pouvez pas ou ne voulez pas utiliser la méthode automatique, vous "
  3650. "pouvez le faire de façon manuelle. Il existe deux méthodes qui permettent de "
  3651. "mettre à jour tout ou partie des flux."
  3652. #. type: Title ###
  3653. #: en/./users/03_Main_view.md:101
  3654. #, no-wrap
  3655. msgid "Complete update"
  3656. msgstr "Mise à jour complète"
  3657. #. type: Plain text
  3658. #: en/./users/03_Main_view.md:104
  3659. msgid ""
  3660. "This update occurs on all feeds. To trigger it, simply click on the update "
  3661. "link in the navigation menu."
  3662. msgstr ""
  3663. "Cette mise à jour se fait pour l’ensemble des flux de l’instance. Pour "
  3664. "initier cette mise à jour, il suffit de cliquer sur le lien de mise à jour "
  3665. "disponible dans le menu de navigation."
  3666. #. type: Plain text
  3667. #: en/./users/03_Main_view.md:106
  3668. msgid "![Navigation menu](../img/users/refresh.1.png)"
  3669. msgstr "![Menu de navigation](../img/users/refresh.1.png)"
  3670. #. type: Plain text
  3671. #: en/./users/03_Main_view.md:108
  3672. msgid ""
  3673. "When the update starts, a progress bar appears and changes while feeds are "
  3674. "processed."
  3675. msgstr ""
  3676. "Lorsque la mise à jour démarre, une barre de progression apparait et "
  3677. "s’actualise au fur et à mesure de la récupération des articles."
  3678. #. type: Plain text
  3679. #: en/./users/03_Main_view.md:110
  3680. msgid "![Progress bar](../img/users/refresh.5.png)"
  3681. msgstr "![Barre de progression](../img/users/refresh.5.png)"
  3682. #. type: Title ###
  3683. #: en/./users/03_Main_view.md:111
  3684. #, no-wrap
  3685. msgid "Partial update"
  3686. msgstr "Mise à jour partielle"
  3687. #. type: Plain text
  3688. #: en/./users/03_Main_view.md:114
  3689. msgid ""
  3690. "This update occurs on the selected feed only. To trigger it, simply click on "
  3691. "the update link in the feed menu."
  3692. msgstr ""
  3693. "Cette mise à jour se fait pour le flux sélectionné uniquement. Pour initier "
  3694. "cette mise à jour, il suffit de cliquer sur le lien de mise à jour "
  3695. "disponible dans le menu du flux."
  3696. #. type: Plain text
  3697. #: en/./users/03_Main_view.md:116
  3698. msgid "![Feed menu](../img/users/refresh.2.png)"
  3699. msgstr "![Menu du flux](../img/users/refresh.2.png)"
  3700. #. type: Title #
  3701. #: en/./users/03_Main_view.md:117
  3702. #, no-wrap
  3703. msgid "Filtering articles"
  3704. msgstr "Filtrer les articles"
  3705. #. type: Plain text
  3706. #: en/./users/03_Main_view.md:120
  3707. msgid ""
  3708. "When the number of articles stored by FreshRSS inevitably grows larger, it's "
  3709. "important to use efficient filters to display only a subset of the articles. "
  3710. "There are several methods that filter with different criteria. Usually those "
  3711. "methods can be combined."
  3712. msgstr ""
  3713. "Avec le nombre croissant d’articles stockés par FreshRSS, il devient "
  3714. "important d’avoir des filtres efficaces pour n’afficher qu’une partie des "
  3715. "articles. Il existe plusieurs méthodes qui filtrent selon des critères "
  3716. "différents. Ces méthodes peuvent être combinées dans la plus part des cas."
  3717. #. type: Title ##
  3718. #: en/./users/03_Main_view.md:121
  3719. #, no-wrap
  3720. msgid "By category"
  3721. msgstr "Par catégorie"
  3722. #. type: Plain text
  3723. #: en/./users/03_Main_view.md:124
  3724. msgid ""
  3725. "This is the easiest method. You only need to click on the category title in "
  3726. "the side panel. There are two special categories at the top of the panel:"
  3727. msgstr ""
  3728. "C’est la méthode la plus simple. Il suffit de cliquer sur le titre d’une "
  3729. "catégorie dans le panneau latéral. Il existe deux catégories spéciales qui "
  3730. "sont placées en haut dudit panneau :"
  3731. #. type: Bullet: ' * '
  3732. #: en/./users/03_Main_view.md:127
  3733. msgid ""
  3734. "*Main feed* displays only articles from feeds marked as available in that "
  3735. "category"
  3736. msgstr ""
  3737. "*Flux principal* qui affiche uniquement les articles des flux marqués comme "
  3738. "visible dans cette catégorie"
  3739. #. type: Bullet: ' * '
  3740. #: en/./users/03_Main_view.md:127
  3741. msgid "*Favourites* displays only articles marked as favourites"
  3742. msgstr ""
  3743. "*Favoris* qui affiche uniquement les articles, tous flux confondus, marqués "
  3744. "comme favoris"
  3745. #. type: Title ##
  3746. #: en/./users/03_Main_view.md:128
  3747. #, no-wrap
  3748. msgid "By feed"
  3749. msgstr "Par flux"
  3750. #. type: Plain text
  3751. #: en/./users/03_Main_view.md:131
  3752. msgid "There are several methods to filter articles by feed:"
  3753. msgstr "Il existe plusieurs méthodes pour filtrer les articles par flux :"
  3754. #. type: Bullet: ' * '
  3755. #: en/./users/03_Main_view.md:136
  3756. msgid "by clicking the feed title in the side panel"
  3757. msgstr "en cliquant sur le titre du flux dans le panneau latéral"
  3758. #. type: Bullet: ' * '
  3759. #: en/./users/03_Main_view.md:136
  3760. msgid "by clicking the feed title in the article details"
  3761. msgstr "en cliquant sur le titre du flux dans le détail de l’article"
  3762. #. type: Bullet: ' * '
  3763. #: en/./users/03_Main_view.md:136
  3764. msgid "by filtering in the feed options from the side panel"
  3765. msgstr "en filtrant dans les options du flux dans le panneau latéral"
  3766. #. type: Bullet: ' * '
  3767. #: en/./users/03_Main_view.md:136
  3768. msgid "by filtering in the feed configuration"
  3769. msgstr "en filtrant dans la configuration du flux"
  3770. #. type: Plain text
  3771. #: en/./users/03_Main_view.md:138
  3772. msgid "![Feed filter](../img/users/feed.filter.1.png)"
  3773. msgstr "![Filtrer par flux](../img/users/feed.filter.1.png)"
  3774. #. type: Title ##
  3775. #: en/./users/03_Main_view.md:139
  3776. #, no-wrap
  3777. msgid "By status"
  3778. msgstr "Par statut"
  3779. #. type: Plain text
  3780. #: en/./users/03_Main_view.md:142
  3781. msgid ""
  3782. "Each article has two attributes that can be combined. The first attribute "
  3783. "indicates whether or not the article has been read. The second attribute "
  3784. "indicates if the article was marked as favorite or not."
  3785. msgstr ""
  3786. "Chaque article possède deux attributs qui peuvent être combinés. Le premier "
  3787. "attribut indique si l’article a été lu ou non. Le second attribut indique si "
  3788. "l’article a été noté comme favori ou non."
  3789. #. type: Plain text
  3790. #: en/./users/03_Main_view.md:144
  3791. msgid ""
  3792. "In version 0.7, attribute filters are available in the article display "
  3793. "dropdown list. With this version, it's not possible to combine filters. For "
  3794. "instance, it's not possible to display only read and favorite articles."
  3795. msgstr ""
  3796. "Dans la version 0.7.x, les filtres sur les attributs sont accessibles depuis "
  3797. "la liste déroulante qui gère l’affichage des articles. Dans cette version, "
  3798. "il n’est pas possible de combiner les filtres. Par exemple, on ne peut pas "
  3799. "afficher les articles lus qui ont été notés comme favori."
  3800. #. type: Plain text
  3801. #: en/./users/03_Main_view.md:146
  3802. msgid "![Attribute filters in 0.7](../img/users/status.filter.0.7.png)"
  3803. msgstr ""
  3804. "![Filtrer par attribut en version 0.7](../img/users/status.filter.0.7.png)"
  3805. #. type: Plain text
  3806. #: en/./users/03_Main_view.md:148
  3807. msgid ""
  3808. "Starting with version 0.8, all attribute filters are visible as toggle "
  3809. "icons. They can be combined. As any combination is possible, some have the "
  3810. "same result. For instance, the result for all filters selected is the same "
  3811. "as no filter selected."
  3812. msgstr ""
  3813. #. type: Plain text
  3814. #: en/./users/03_Main_view.md:150
  3815. msgid "![Attribute filters in 0.8](../img/users/status.filter.0.8.png)"
  3816. msgstr ""
  3817. #. type: Plain text
  3818. #: en/./users/03_Main_view.md:152
  3819. msgid "By default, this filter displays only unread articles"
  3820. msgstr ""
  3821. #. type: Title ##
  3822. #: en/./users/03_Main_view.md:153
  3823. #, no-wrap
  3824. msgid "By content"
  3825. msgstr ""
  3826. #. type: Plain text
  3827. #: en/./users/03_Main_view.md:156
  3828. msgid ""
  3829. "It is possible to filter articles by their content by inputting a string in "
  3830. "the search field."
  3831. msgstr ""
  3832. #. type: Title ##
  3833. #: en/./users/03_Main_view.md:157
  3834. #, no-wrap
  3835. msgid "With the search field"
  3836. msgstr "Grâce au champ de recherche"
  3837. #. type: Plain text
  3838. #: en/./users/03_Main_view.md:160
  3839. msgid "You can use the search field to further refine results:"
  3840. msgstr ""
  3841. "Il est possible d’utiliser le champ de recherche pour raffiner les "
  3842. "résultats :"
  3843. #. type: Bullet: '* '
  3844. #: en/./users/03_Main_view.md:199
  3845. msgid "by author: `author:name` or `author:'composed name'`"
  3846. msgstr "par auteur : `author:nom` or `author:'nom composé'`"
  3847. #. type: Bullet: '* '
  3848. #: en/./users/03_Main_view.md:199
  3849. msgid "by title: `intitle:keyword` or `intitle:'composed keyword'`"
  3850. msgstr "par titre : `intitle:mot` or `intitle:'mot composé'`"
  3851. #. type: Bullet: '* '
  3852. #: en/./users/03_Main_view.md:199
  3853. msgid "by URL: `inurl:keyword` or `inurl:'composed keyword'`"
  3854. msgstr "par URL: `inurl:mot` or `inurl:'mot composé'`"
  3855. #. type: Bullet: '* '
  3856. #: en/./users/03_Main_view.md:199
  3857. msgid "by tag: `#tag`"
  3858. msgstr "par tag: `#tag`"
  3859. #. type: Bullet: '* '
  3860. #: en/./users/03_Main_view.md:199
  3861. msgid "by free-text: `keyword` or `'composed keyword'`"
  3862. msgstr "par texte libre : `mot` or `'mot composé'`"
  3863. #. type: Plain text
  3864. #: en/./users/03_Main_view.md:199
  3865. #, no-wrap
  3866. msgid ""
  3867. "* by date of discovery, using the [ISO 8601 time interval format](http://en.wikipedia.org/wiki/ISO_8601#Time_intervals): `date:<date-interval>`\n"
  3868. "\t* From a specific day, or month, or year:\n"
  3869. "\t\t* `date:2014-03-30`\n"
  3870. "\t\t* `date:2014-03` or `date:201403`\n"
  3871. "\t\t* `date:2014`\n"
  3872. "\t* From a specific time of a given day:\n"
  3873. "\t\t* `date:2014-05-30T13`\n"
  3874. "\t\t* `date:2014-05-30T13:30`\n"
  3875. "\t* Between two given dates:\n"
  3876. "\t\t* `date:2014-02/2014-04`\n"
  3877. "\t\t* `date:2014-02--2014-04`\n"
  3878. "\t\t* `date:2014-02/04`\n"
  3879. "\t\t* `date:2014-02-03/05`\n"
  3880. "\t\t* `date:2014-02-03T22:00/22:15`\n"
  3881. "\t\t* `date:2014-02-03T22:00/15`\n"
  3882. "\t* After a given date:\n"
  3883. "\t\t* `date:2014-03/`\n"
  3884. "\t* Before a given date:\n"
  3885. "\t\t* `date:/2014-03`\n"
  3886. "\t* For a specific duration after a given date:\n"
  3887. "\t\t* `date:2014-03/P1W`\n"
  3888. "\t* For a specific duration before a given date:\n"
  3889. "\t\t* `date:P1W/2014-05-25T23:59:59`\n"
  3890. "\t* For the past duration before now (the trailing slash is optional):\n"
  3891. "\t\t* `date:P1Y/` or `date:P1Y` (past year)\n"
  3892. "\t\t* `date:P2M/` (past two months)\n"
  3893. "\t\t* `date:P3W/` (past three weeks)\n"
  3894. "\t\t* `date:P4D/` (past four days)\n"
  3895. "\t\t* `date:PT5H/` (past five hours)\n"
  3896. "\t\t* `date:PT30M/` (past thirty minutes)\n"
  3897. "\t\t* `date:PT90S/` (past ninety seconds)\n"
  3898. "\t\t* `date:P1DT1H/` (past one day and one hour)\n"
  3899. "* by date of publication, using the same format: `pubdate:<date-interval>`\n"
  3900. msgstr ""
  3901. #. type: Plain text
  3902. #: en/./users/03_Main_view.md:201
  3903. msgid ""
  3904. "Be careful not to enter a space between the operator and the search value."
  3905. msgstr ""
  3906. "Attention à ne pas introduire d’espace entre l’opérateur et la valeur "
  3907. "recherchée."
  3908. #. type: Plain text
  3909. #: en/./users/03_Main_view.md:204
  3910. msgid ""
  3911. "Some operators can be used negatively, to exclude articles, with the same "
  3912. "syntax as above, but prefixed by a `!` or `-`: `-author:name`, `-intitle:"
  3913. "keyword`, `-inurl:keyword`, `-#tag`, `!keyword`."
  3914. msgstr ""
  3915. "Certains opérateurs peuvent être utilisé négativement, pour exclure des "
  3916. "articles, avec la même syntaxe que ci-dessus, mais préfixé par `!` ou `-` :`-"
  3917. "author:nom`, `-intitle:mot`, `-inurl:mot`, `-#tag`, `!mot`."
  3918. #. type: Plain text
  3919. #: en/./users/03_Main_view.md:206
  3920. msgid ""
  3921. "It is also possible to combine keywords to create a more precise filter. For "
  3922. "example, you can enter multiple instances of `author:`, `intitle:`, `inurl:"
  3923. "`, `#`, and free-text."
  3924. msgstr ""
  3925. "Il est également possible de combiner les mots-clefs pour faire un filtrage "
  3926. "encore plus précis, et il est autorisé d’avoir plusieurs instances de : "
  3927. "`author:`, `intitle:`, `inurl:`, `#`, et texte libre."
  3928. #. type: Plain text
  3929. #: en/./users/03_Main_view.md:208
  3930. msgid ""
  3931. "Combining several search criteria implies a logical *and*, but the keyword ` "
  3932. "OR ` can be used to combine several search criteria with a logical *or* "
  3933. "instead: `author:Dupont OR author:Dupond`"
  3934. msgstr ""
  3935. "Combiner plusieurs critères implique un *et* logique, mais le mot clef ` OR "
  3936. "` peut être utiliser pour combiner plusieurs critères avec un *ou* logique :"
  3937. "`author:Dupont OR author:Dupond`"
  3938. #. type: Title #
  3939. #: en/./users/04_Subscriptions.md:1
  3940. #, no-wrap
  3941. msgid "Adding a feed"
  3942. msgstr "Ajouter un flux"
  3943. #. type: Title #
  3944. #: en/./users/04_Subscriptions.md:5
  3945. #, no-wrap
  3946. msgid "Import and export"
  3947. msgstr "Import et export"
  3948. #. type: Title #
  3949. #: en/./users/04_Subscriptions.md:9
  3950. #, no-wrap
  3951. msgid "Use bookmarklet"
  3952. msgstr "Utiliser le « bookmarklet »"
  3953. #. type: Plain text
  3954. #: en/./users/04_Subscriptions.md:12
  3955. msgid ""
  3956. "Bookmarklets are little scripts that you can execute to perform various "
  3957. "tasks. FreshRSS offers a bookmarklet for subscribing to newsfeeds."
  3958. msgstr ""
  3959. "Les « bookmarklets » sont de petits scripts que vous pouvez exécuter pour "
  3960. "effectuer des tâches diverses et variées. FreshRSS offre un signet "
  3961. "( « bookmark » ) pour s'abonner aux fils de nouvelles."
  3962. #. type: Bullet: ' 1. '
  3963. #: en/./users/04_Subscriptions.md:16
  3964. msgid "Open \"Subscriptions management\"."
  3965. msgstr "Ouvrez \"Gestion des abonnements\"."
  3966. #. type: Bullet: ' 2. '
  3967. #: en/./users/04_Subscriptions.md:16
  3968. msgid "Click on \"Subscription tools\"."
  3969. msgstr "Cliquez sur \"Outils d'abonnement\"."
  3970. #. type: Bullet: ' 3. '
  3971. #: en/./users/04_Subscriptions.md:16
  3972. msgid ""
  3973. "Drag the \"Subscribe\" button to your bookmark toolbar or right click and "
  3974. "choose your browser's \"Bookmark link\" action."
  3975. msgstr ""
  3976. "Glissez le bouton \"S'abonner\" dans la barre d'outils des signets ou "
  3977. "cliquez droit et choisissez l'action \"Lien vers les signets\" de votre "
  3978. "navigateur."
  3979. #. type: Title #
  3980. #: en/./users/04_Subscriptions.md:17
  3981. #, no-wrap
  3982. msgid "Feed management"
  3983. msgstr "Organisation des flux"
  3984. #. type: Title #
  3985. #: en/./users/05_Configuration.md:2
  3986. #, no-wrap
  3987. msgid "Display"
  3988. msgstr "Personnaliser la vue"
  3989. #. type: Title ##
  3990. #: en/./users/05_Configuration.md:4
  3991. #, no-wrap
  3992. msgid "Language"
  3993. msgstr "Langue"
  3994. #. type: Plain text
  3995. #: en/./users/05_Configuration.md:9
  3996. msgid ""
  3997. "FreshRSS is currently available in 14 languages. After confirming your "
  3998. "choice, the interface will be displayed in your preferred language. "
  3999. "Depending on the language chosen, parts of the interface may not be not "
  4000. "translated yet. If you're willing to help translate the missing bits or "
  4001. "would like to add a new language, please take a look at how you can "
  4002. "[contribute to the project](../contributing.md#contribute-to-"
  4003. "internationalization-i18n)."
  4004. msgstr ""
  4005. "À l'heure actuelle, FreshRSS est disponible en 13 langues. Après validation "
  4006. "de ce choix, l'interface sera affichée dans la langue choisie, même si "
  4007. "certaines parties de l'interface peuvent ne pas encore avoir été traduites. "
  4008. "Si vous voulez aider à la traduction, regardez comment vous pouvez "
  4009. "[contribuer au projet](../contributing.md#contribute-to-internationalization-"
  4010. "i18n)."
  4011. #. type: Plain text
  4012. #: en/./users/05_Configuration.md:11
  4013. msgid ""
  4014. "Some parts of FreshRSS aren't translated and aren't intended to be "
  4015. "translated either. For now, this includes the logs visible in the "
  4016. "application as well as the log generated by automatic update scripts."
  4017. msgstr ""
  4018. "Il y a des parties de FreshRSS qui ne sont pas traduites et qui n'ont pas "
  4019. "vocation à l'être. Pour le moment, les logs visibles dans l'application "
  4020. "ainsi que celle générées par le script de mise à jour automatique en font "
  4021. "partie."
  4022. #. type: Plain text
  4023. #: en/./users/05_Configuration.md:13
  4024. msgid ""
  4025. "Available languages are: cz, de, en, es, fr, he, it, kr, nl, oc, pt-br, ru, "
  4026. "tr, zh-cn."
  4027. msgstr ""
  4028. "Les langues disponibles sont : cz, de, en, es, fr, he, it, kr, nl, oc, pt-"
  4029. "br, ru, tr, zh-cn."
  4030. #. type: Title ##
  4031. #: en/./users/05_Configuration.md:14
  4032. #, no-wrap
  4033. msgid "Theme"
  4034. msgstr "Thème"
  4035. #. type: Plain text
  4036. #: en/./users/05_Configuration.md:17
  4037. msgid ""
  4038. "There's no accounting for tastes, which is why FreshRSS offers eight "
  4039. "official themes:"
  4040. msgstr ""
  4041. "Les goûts et les couleurs, ça ne se discute pas. C'est pourquoi FreshRSS "
  4042. "propose huit thèmes officiels :"
  4043. #. type: Bullet: ' * '
  4044. #: en/./users/05_Configuration.md:26
  4045. msgid "*Blue Lagoon* by **Mister aiR**"
  4046. msgstr "*Blue Lagoon* par **Mister aiR**"
  4047. #. type: Bullet: ' * '
  4048. #: en/./users/05_Configuration.md:26
  4049. msgid "*Dark* by **AD**"
  4050. msgstr "*Dark* par **AD**"
  4051. #. type: Bullet: ' * '
  4052. #: en/./users/05_Configuration.md:26
  4053. msgid "*Flat design* by **Marien Fressinaud**"
  4054. msgstr "*Flat design* par **Marien Fressinaud**"
  4055. #. type: Bullet: ' * '
  4056. #: en/./users/05_Configuration.md:26
  4057. msgid "*Origine* by **Marien Fressinaud**"
  4058. msgstr "*Origine* par **Marien Fressinaud**"
  4059. #. type: Bullet: ' * '
  4060. #: en/./users/05_Configuration.md:26
  4061. msgid "*Origine-compact* by **Kevin Papst**"
  4062. msgstr "*Origine-compact* par **Kevin Papst**"
  4063. #. type: Bullet: ' * '
  4064. #: en/./users/05_Configuration.md:26
  4065. msgid "*Pafat* by **Plopoyop**"
  4066. msgstr "*Pafat* par **Plopoyop**"
  4067. #. type: Bullet: ' * '
  4068. #: en/./users/05_Configuration.md:26
  4069. msgid "*Screwdriver* by **Mister aiR**"
  4070. msgstr "*Screwdriver* par **Mister aiR**"
  4071. #. type: Bullet: ' * '
  4072. #: en/./users/05_Configuration.md:26
  4073. msgid "*Swage* by **Patrick Crandol**"
  4074. msgstr "*Swage* par **Patrick Crandol**"
  4075. #. type: Plain text
  4076. #: en/./users/05_Configuration.md:28
  4077. msgid ""
  4078. "If you can't find any themes you like, it's always possible to [create your "
  4079. "own](../developers/04_Frontend/02_Design.md)."
  4080. msgstr ""
  4081. "Si aucun de ceux proposés ne convient, il est toujours possible de [créer "
  4082. "son propre thème](../developers/04_Frontend/02_Design.md)."
  4083. #. type: Plain text
  4084. #: en/./users/05_Configuration.md:30
  4085. msgid ""
  4086. "To select a theme, simply scroll through the themes and select one that "
  4087. "strikes your fancy. After confirmation, the theme will be applied to the "
  4088. "interface."
  4089. msgstr ""
  4090. "Pour sélectionner un thème, il suffit de faire défiler les thèmes jusqu'à "
  4091. "l'apparition du thème choisi. Après validation, le thème sera appliqué à "
  4092. "l'interface."
  4093. #. type: Title ##
  4094. #: en/./users/05_Configuration.md:31
  4095. #, no-wrap
  4096. msgid "Content width"
  4097. msgstr "Largeur du contenu"
  4098. #. type: Plain text
  4099. #: en/./users/05_Configuration.md:34
  4100. msgid ""
  4101. "Some people prefer short lines of text, while others prefer to maximize the "
  4102. "available screen space. To satisfy the maximum number of people, it's "
  4103. "possible to customize the width of the displayed content. There are four "
  4104. "settings available:"
  4105. msgstr ""
  4106. "Il y en a qui préfère des lignes de texte courtes, d'autres qui préfèrent "
  4107. "maximiser l'espace disponible sur l'écran. Pour satisfaire le maximum de "
  4108. "personne, il est possible de choisir la largeur du contenu affiché. Il y a "
  4109. "quatre réglages disponibles :"
  4110. #. type: Bullet: ' * '
  4111. #: en/./users/05_Configuration.md:39
  4112. msgid "**Fine** displays content up to a maximum width of 550 pixels"
  4113. msgstr "**Fine** qui affiche le contenu jusqu'à 550 pixels"
  4114. #. type: Bullet: ' * '
  4115. #: en/./users/05_Configuration.md:39
  4116. msgid "**Medium** displays content up to a maximum width of 800 pixels"
  4117. msgstr "**Moyenne** qui affiche le contenu jusqu'à 800 pixels"
  4118. #. type: Bullet: ' * '
  4119. #: en/./users/05_Configuration.md:39
  4120. msgid "**Large** displays content up to a maximum width of 1000 pixels"
  4121. msgstr "**Large** qui affiche le contenu jusqu'à 1000 pixels"
  4122. #. type: Bullet: ' * '
  4123. #: en/./users/05_Configuration.md:39
  4124. msgid "**No limit** displays the content on 100% of the available space"
  4125. msgstr ""
  4126. "**Pas de limite** qui affiche le contenu sur 100% de la place disponible"
  4127. #. type: Title ##
  4128. #: en/./users/05_Configuration.md:40
  4129. #, no-wrap
  4130. msgid "Article icons"
  4131. msgstr "Icônes d'article"
  4132. #. type: Plain text
  4133. #: en/./users/05_Configuration.md:43
  4134. msgid "Please note that this section only affects normal view."
  4135. msgstr "Veuillez noter que cette section n'affecte que la vue normale."
  4136. #. type: Plain text
  4137. #: en/./users/05_Configuration.md:45
  4138. msgid ""
  4139. "![Article icons configuration](../img/users/configuration.article.icons.png)"
  4140. msgstr ""
  4141. "![Configuration des icônes d'article](../img/users/configuration.article."
  4142. "icons.png)"
  4143. #. type: Plain text
  4144. #: en/./users/05_Configuration.md:48
  4145. msgid ""
  4146. "Each article is rendered with a header (top line) and a footer (bottom "
  4147. "line). In that section, you can choose what will be displayed in those."
  4148. msgstr ""
  4149. "Chaque article est rendu avec un en-tête (ligne supérieure) et un pied de "
  4150. "page (ligne inférieure). Dans cette section, vous pouvez choisir ce qui sera "
  4151. "affiché dans ceux-ci."
  4152. #. type: Plain text
  4153. #: en/./users/05_Configuration.md:52
  4154. msgid ""
  4155. "If you disable every item in the top line, you'll still be able to see it "
  4156. "since it contains the feed name and the article title. But if you do the "
  4157. "same thing for the bottom line, it will be empty."
  4158. msgstr ""
  4159. "Si vous désactivez tous les éléments de la ligne supérieure, vous pourrez "
  4160. "toujours les voir, puisqu'il contient le nom du flux et le titre de "
  4161. "l'article. Mais si vous faites le même chose pour la ligne inférieure, elle "
  4162. "sera vide."
  4163. #. type: Title ##
  4164. #: en/./users/05_Configuration.md:53
  4165. #, no-wrap
  4166. msgid "HTML5 notification timout"
  4167. msgstr "Temps d'affichage de la notification HTML5"
  4168. #. type: Plain text
  4169. #: en/./users/05_Configuration.md:56
  4170. msgid ""
  4171. "After automatically updating the feeds, FreshRSS can pop up a notification "
  4172. "using the HTML5 notification API."
  4173. msgstr ""
  4174. "Après la mise à jour automatique des flux, FreshRSS utilise l'API de "
  4175. "notification de HTML5 pour avertir de l'arrivée de nouveaux articles."
  4176. #. type: Plain text
  4177. #: en/./users/05_Configuration.md:58
  4178. msgid ""
  4179. "The duration of this notification can be set. By default, the value is 0."
  4180. msgstr ""
  4181. "Il est possible de régler la durée d'affichage de cette notification. Par "
  4182. "défaut, la valeur est 0."
  4183. #. type: Title ##
  4184. #: en/./users/05_Configuration.md:59
  4185. #, no-wrap
  4186. msgid "Show the navigation button"
  4187. msgstr ""
  4188. #. type: Plain text
  4189. #: en/./users/05_Configuration.md:62
  4190. msgid ""
  4191. "By default, FreshRSS displays buttons to ease the article navigation when "
  4192. "browsing on mobile. The drawback is that they eat up some precious space."
  4193. msgstr ""
  4194. #. type: Plain text
  4195. #: en/./users/05_Configuration.md:64
  4196. msgid ""
  4197. "![navigation button configuration](../img/users/configuration.navigation."
  4198. "button.png)"
  4199. msgstr ""
  4200. #. type: Plain text
  4201. #: en/./users/05_Configuration.md:66
  4202. msgid ""
  4203. "If you don't use those buttons because you never browse on mobile or because "
  4204. "you browse with gestures, you can disable them from the interface."
  4205. msgstr ""
  4206. #. type: Title #
  4207. #: en/./users/05_Configuration.md:67
  4208. #, no-wrap
  4209. msgid "Reading"
  4210. msgstr ""
  4211. #. type: Title ##
  4212. #: en/./users/05_Configuration.md:71 en/./users/05_Configuration.md:154
  4213. #, no-wrap
  4214. msgid "Archival"
  4215. msgstr "Archivage"
  4216. #. type: Title #
  4217. #: en/./users/05_Configuration.md:75
  4218. #, no-wrap
  4219. msgid "Sharing"
  4220. msgstr "Partage"
  4221. #. type: Plain text
  4222. #: en/./users/05_Configuration.md:78
  4223. msgid ""
  4224. "To make your life easier, you can share articles straight from FreshRSS."
  4225. msgstr ""
  4226. "Pour vous faciliter la vie, vous pouvez partager des articles directement "
  4227. "via FreshRSS."
  4228. #. type: Plain text
  4229. #: en/./users/05_Configuration.md:80
  4230. msgid ""
  4231. "At the moment, FreshRSS supports 18 sharing methods, ranging from self-"
  4232. "hosted services (Shaarli, etc.) to proprietary services (Facebook, etc.)."
  4233. msgstr ""
  4234. #. type: Plain text
  4235. #: en/./users/05_Configuration.md:83
  4236. msgid ""
  4237. "By default, the sharing list is empty. ![Sharing configuration](../img/"
  4238. "users/configuration.sharing.png)"
  4239. msgstr ""
  4240. #. type: Plain text
  4241. #: en/./users/05_Configuration.md:85
  4242. msgid ""
  4243. "To add a new item to the list, please follow the following simple steps:"
  4244. msgstr ""
  4245. "Pour ajouter un nouvel élément à la liste, veuillez suivre les étapes "
  4246. "simples ci-dessous :"
  4247. #. type: Bullet: ' 1. '
  4248. #: en/./users/05_Configuration.md:90
  4249. msgid "Select the desired sharing method in the drop-down list."
  4250. msgstr ""
  4251. #. type: Bullet: ' 1. '
  4252. #: en/./users/05_Configuration.md:90
  4253. msgid "Press the ```✚``` button to add it to the list."
  4254. msgstr ""
  4255. #. type: Bullet: ' 1. '
  4256. #: en/./users/05_Configuration.md:90
  4257. msgid ""
  4258. "Configure the method in the list. All names can be modified in the display. "
  4259. "Some methods need the sharing URL to be able to work properly (ex: Shaarli)."
  4260. msgstr ""
  4261. #. type: Bullet: ' 1. '
  4262. #: en/./users/05_Configuration.md:90 en/./users/05_Configuration.md:95
  4263. msgid "Submit your changes."
  4264. msgstr ""
  4265. #. type: Plain text
  4266. #: en/./users/05_Configuration.md:92
  4267. msgid "To remove an item from the list, follow those simple steps:"
  4268. msgstr ""
  4269. #. type: Bullet: ' 1. '
  4270. #: en/./users/05_Configuration.md:95
  4271. msgid "Press the ```❌``` button next to the share method you want to remove."
  4272. msgstr ""
  4273. #. type: Title #
  4274. #: en/./users/05_Configuration.md:96
  4275. #, no-wrap
  4276. msgid "Shortcuts"
  4277. msgstr "Raccourcis"
  4278. #. type: Plain text
  4279. #: en/./users/05_Configuration.md:100
  4280. msgid ""
  4281. "To ease the use of the application, FreshRSS comes with a lot of predefined "
  4282. "keyboard shortcuts. They allow actions to improve the user experience with "
  4283. "a keyboard."
  4284. msgstr ""
  4285. #. type: Plain text
  4286. #: en/./users/05_Configuration.md:102
  4287. msgid ""
  4288. "Of course, if you're not satisfied with the key mapping, you can change you "
  4289. "configuration to fit your needs."
  4290. msgstr ""
  4291. #. type: Plain text
  4292. #: en/./users/05_Configuration.md:104
  4293. msgid "There are 4 types of shortcuts:"
  4294. msgstr ""
  4295. #. type: Bullet: ' 1. '
  4296. #: en/./users/05_Configuration.md:109
  4297. msgid "Views: they allow switching views with ease."
  4298. msgstr ""
  4299. #. type: Bullet: ' 1. '
  4300. #: en/./users/05_Configuration.md:109
  4301. msgid ""
  4302. "Navigation: they allow navigation through articles, feeds, and categories."
  4303. msgstr ""
  4304. #. type: Bullet: ' 1. '
  4305. #: en/./users/05_Configuration.md:109
  4306. msgid ""
  4307. "Article actions: they allow interactions with an article, like sharing or "
  4308. "opening it on the original web-site."
  4309. msgstr ""
  4310. #. type: Bullet: ' 1. '
  4311. #: en/./users/05_Configuration.md:109
  4312. msgid ""
  4313. "Other actions: they allow other interactions with the application, like "
  4314. "opening the user queries menu or accessing the documentation."
  4315. msgstr ""
  4316. #. type: Plain text
  4317. #: en/./users/05_Configuration.md:112
  4318. msgid ""
  4319. "It's worth noting that the share article action has two levels. Once you "
  4320. "press the shortcut, a menu containing all the share options opens. To "
  4321. "choose one share option, you need to select it by its number. When there is "
  4322. "only one option, it's selected automatically though."
  4323. msgstr ""
  4324. #. type: Plain text
  4325. #: en/./users/05_Configuration.md:114
  4326. msgid "The same process applies to the user queries."
  4327. msgstr ""
  4328. #. type: Plain text
  4329. #: en/./users/05_Configuration.md:117
  4330. msgid ""
  4331. "Be aware that there is no validation on the selected shortcuts. This means "
  4332. "that if you assign a shortcut to more than one action, you'll end up with "
  4333. "some unexpected behavior."
  4334. msgstr ""
  4335. #. type: Title #
  4336. #: en/./users/05_Configuration.md:118
  4337. #, no-wrap
  4338. msgid "User queries"
  4339. msgstr ""
  4340. #. type: Plain text
  4341. #: en/./users/05_Configuration.md:122
  4342. msgid ""
  4343. "You can configure your [user queries](./03_Main_view.md) in that section. "
  4344. "There is not much to say here as it is pretty straightforward. You can only "
  4345. "change user query titles or drop them."
  4346. msgstr ""
  4347. #. type: Plain text
  4348. #: en/./users/05_Configuration.md:124
  4349. msgid "At the moment, there is no helper to build a user query from here."
  4350. msgstr ""
  4351. #. type: Title #
  4352. #: en/./users/05_Configuration.md:125
  4353. #, no-wrap
  4354. msgid "Users"
  4355. msgstr ""
  4356. #. type: Title ##
  4357. #: en/./users/05_Configuration.md:129
  4358. #, no-wrap
  4359. msgid "Authentication methods"
  4360. msgstr ""
  4361. #. type: Title ###
  4362. #: en/./users/05_Configuration.md:131
  4363. #, no-wrap
  4364. msgid "HTTP Authentication (Apache)"
  4365. msgstr ""
  4366. #. type: Bullet: ' 1. '
  4367. #: en/./users/05_Configuration.md:137
  4368. msgid "User control is based on the `.htaccess` file."
  4369. msgstr ""
  4370. #. type: Bullet: ' 2. '
  4371. #: en/./users/05_Configuration.md:137
  4372. msgid ""
  4373. "It is best practice to place the `.htaccess` file in the `./i/` subdirectory "
  4374. "so the API and other third party services can work."
  4375. msgstr ""
  4376. #. type: Bullet: ' 3. '
  4377. #: en/./users/05_Configuration.md:137
  4378. msgid ""
  4379. "If you want to limit all access to registered users only, place the file in "
  4380. "the FreshRSS directory itself or in a parent directory. Note that WebSub and "
  4381. "API will not work!"
  4382. msgstr ""
  4383. #. type: Bullet: ' 4. '
  4384. #: en/./users/05_Configuration.md:137
  4385. msgid "Example `.htaccess` file for a user \"marie\":"
  4386. msgstr ""
  4387. #. type: Plain text
  4388. #: en/./users/05_Configuration.md:138
  4389. #, no-wrap
  4390. msgid ""
  4391. "AuthUserFile /home/marie/repertoire/.htpasswd\n"
  4392. "AuthGroupFile /dev/null\n"
  4393. "AuthName \"Chez Marie\"\n"
  4394. "AuthType Basic\n"
  4395. "Require user marie\n"
  4396. msgstr ""
  4397. #. type: Plain text
  4398. #: en/./users/05_Configuration.md:147
  4399. msgid ""
  4400. "More information can be found in the [Apache documentation](http://httpd."
  4401. "apache.org/docs/trunk/howto/auth.html#gettingitworking)."
  4402. msgstr ""
  4403. "Plus d'informations dans [la documentation d'Apache.](http://httpd.apache."
  4404. "org/docs/trunk/howto/auth.html#gettingitworking)"
  4405. #. type: Title #
  4406. #: en/./users/05_Configuration.md:148
  4407. #, no-wrap
  4408. msgid "Subscription management"
  4409. msgstr "Gestion des flux"
  4410. #. type: Title ##
  4411. #: en/./users/05_Configuration.md:150
  4412. #, no-wrap
  4413. msgid "Information"
  4414. msgstr "Informations"
  4415. #. type: Title ##
  4416. #: en/./users/05_Configuration.md:158
  4417. #, no-wrap
  4418. msgid "Login"
  4419. msgstr "Identification"
  4420. #. type: Title ##
  4421. #: en/./users/05_Configuration.md:162
  4422. #, no-wrap
  4423. msgid "Advanced"
  4424. msgstr "Avancé"
  4425. #. type: Title ###
  4426. #: en/./users/05_Configuration.md:164
  4427. #, no-wrap
  4428. msgid "Retrieve a truncated stream from within FreshRSS"
  4429. msgstr "Récupérer un flux tronqué à partir de FreshRSS"
  4430. #. type: Plain text
  4431. #: en/./users/05_Configuration.md:167
  4432. msgid ""
  4433. "This question comes up regularly, so we'll try to clarify how one can "
  4434. "retrieve a truncated RSS feed with FreshRSS. Please note that the process is "
  4435. "absolutely not user friendly, but it works. :)"
  4436. msgstr ""
  4437. "La question revient régulièrement, je vais essayer de clarifier ici comment "
  4438. "on peut récupérer un flux RSS tronqué avec FreshRSS. Sachez avant tout que "
  4439. "la manière de s'y prendre n'est absolument pas \"user friendly\", mais elle "
  4440. "fonctionne. :)"
  4441. #. type: Plain text
  4442. #: en/./users/05_Configuration.md:169
  4443. msgid ""
  4444. "Please be aware that this way you'll generate much more traffic to the "
  4445. "originating sites, and they might block you accordingly. FreshRSS "
  4446. "performance is also negatively affected, because you'll have to fetch the "
  4447. "full article content one by one. So it's a feature to use sparingly!"
  4448. msgstr ""
  4449. "Sachez aussi que par cette manière vous générez beaucoup plus de trafic vers "
  4450. "les sites d'origines et qu'ils peuvent vous bloquer par conséquent. Les "
  4451. "performances de FreshRSS sont aussi moins bonnes car vous devez alors aller "
  4452. "chercher le contenu des articles un par un. C'est donc une fonctionnalité à "
  4453. "utiliser avec parcimonie !"
  4454. #. type: Plain text
  4455. #: en/./users/05_Configuration.md:171
  4456. msgid ""
  4457. "What's meant by \"CSS path of articles on the original site\" actually "
  4458. "corresponds to the \"path\" consisting of IDs and classes (which in HTML, "
  4459. "matches the id and class attributes) to retrieve only the interesting part "
  4460. "that corresponds to the article. Ideally, this path starts with an id (which "
  4461. "is unique to the page)."
  4462. msgstr ""
  4463. "Ce que j'entends par \"Chemin CSS des articles sur le site d’origine\" "
  4464. "correspond en fait au \"chemin\" constitué par les IDs et les classes (en "
  4465. "html, correspond aux attributs id et class) pour récupérer uniquement la "
  4466. "partie intéressante qui correspond à l'article. L'idéal est que ce chemin "
  4467. "commence par un id (qui est unique pour la page)."
  4468. #. type: Title ####
  4469. #: en/./users/05_Configuration.md:172
  4470. #, no-wrap
  4471. msgid "Example: Rue89"
  4472. msgstr "Exemple : Rue89"
  4473. #. type: Plain text
  4474. #: en/./users/05_Configuration.md:175
  4475. msgid ""
  4476. "To find this path, you have to go to the address of one of the truncated "
  4477. "articles (for example, http://www.rue89.com/2013/10/15/prof-maths-jai-"
  4478. "atteint-lextase-dihn-pedagogie-inversee-246635). You look have to look for "
  4479. "the \"block\" of HTML that corresponds to article content (in the source "
  4480. "code!)."
  4481. msgstr ""
  4482. "Pour trouver ce chemin, il faut se rendre à l'adresse d'un des articles "
  4483. "tronqués (par exemple http://www.rue89.com/2013/10/15/prof-maths-jai-atteint-"
  4484. "lextase-dihn-pedagogie-inversee-246635). Il faut alors chercher le \"bloc\" "
  4485. "HTML correspondant au contenu de l'article (dans le code source !)"
  4486. #. type: Plain text
  4487. #: en/./users/05_Configuration.md:177
  4488. #, no-wrap
  4489. msgid "Here we find that the block that encompasses nothing but the content of the article is ```<div class=\"content clearfix\">```. We'll only use the `.content` class here. Nevertheless, as said above, it's best to start the path with an id. If we go back to the parent block, we find ```<div id=\"article\">``` and that's perfect! The path will be ```#article .content```.\n"
  4490. msgstr "On trouve ici que le bloc qui englobe uniquement le contenu de l'article est ```<div class=\"content clearfix\">```. On ne va garder que la classe `.content` ici. Néanmoins, comme je le disais plus haut, il est préférable de commencer le chemin avec un id. Si on remonte au bloc parent, il s'agit du bloc ```<div id=\"article\">``` et c'est parfait ! Le chemin sera donc ```#article .content```.\n"
  4491. #. type: Title ####
  4492. #: en/./users/05_Configuration.md:178
  4493. #, no-wrap
  4494. msgid "Add the corresponding classes to the article CSS path on the feed configuration page. Examples:"
  4495. msgstr "Liste de correspondances site → chemin css"
  4496. #. type: Bullet: '* '
  4497. #: en/./users/05_Configuration.md:184
  4498. msgid "Rue89: ```#article .content```"
  4499. msgstr "Rue89 : ```#article .content```"
  4500. #. type: Bullet: '* '
  4501. #: en/./users/05_Configuration.md:184
  4502. msgid "PCINpact: ```#actu_content```"
  4503. msgstr "PCINpact : ```#actu_content```"
  4504. #. type: Bullet: '* '
  4505. #: en/./users/05_Configuration.md:184
  4506. msgid "Lesnumériques: ```article#body div.text.clearfix```"
  4507. msgstr "Lesnumériques : ```article#body div.text.clearfix```"
  4508. #. type: Bullet: '* '
  4509. #: en/./users/05_Configuration.md:184
  4510. msgid "Phoronix: ```#main .content```"
  4511. msgstr "Phoronix : ```#main .content```"
  4512. #. type: Title ###
  4513. #: en/./users/05_Configuration.md:185
  4514. #, no-wrap
  4515. msgid "Retrieve a truncated stream with external tools"
  4516. msgstr "Récupérer un flux tronqué à l'aide d'outils externes"
  4517. #. type: Plain text
  4518. #: en/./users/05_Configuration.md:188
  4519. msgid ""
  4520. "Complimentary tools can be used to retrieve full article content, such as:"
  4521. msgstr ""
  4522. "Des outils complémentaires peuvent être utilisés pour récupérer le contenu "
  4523. "complet d'un article, comme :"
  4524. #. type: Bullet: '* '
  4525. #: en/./users/05_Configuration.md:190
  4526. msgid "[RSS-Bridge](https://github.com/RSS-Bridge/rss-bridge)"
  4527. msgstr "[RSS-Bridge](https://github.com/RSS-Bridge/rss-bridge)"
  4528. #. type: Bullet: '* '
  4529. #: en/./users/05_Configuration.md:190
  4530. msgid "[Full-Text RSS](https://bitbucket.org/fivefilters/full-text-rss)"
  4531. msgstr "[Full-Text RSS](https://bitbucket.org/fivefilters/full-text-rss)"
  4532. #. type: Title #
  4533. #: en/./users/06_Fever_API.md:1
  4534. #, no-wrap
  4535. msgid "FreshRSS - Fever API implementation"
  4536. msgstr "FreshRSS - API compatible Fever"
  4537. #. type: Plain text
  4538. #: en/./users/06_Fever_API.md:5
  4539. msgid ""
  4540. "See the [page about our Google Reader compatible API](06_Mobile_access.md) "
  4541. "for another possibility and general aspects of API access."
  4542. msgstr ""
  4543. "Voir la page [sur notre API compatible Google Reader](06_Mobile_access.md) "
  4544. "pour une autre possibilité et des généralités sur l’accès par API."
  4545. #. type: Title ##
  4546. #: en/./users/06_Fever_API.md:6
  4547. #, no-wrap
  4548. msgid "RSS clients"
  4549. msgstr "Clients compatibles"
  4550. #. type: Plain text
  4551. #: en/./users/06_Fever_API.md:11
  4552. msgid ""
  4553. "There are many RSS clients that support the Fever API, but they seem to "
  4554. "understand the Fever API a bit differently. If your favourite client "
  4555. "doesn't work properly with this API, please create an issue and we'll have a "
  4556. "look. But we can **only** do that for free clients."
  4557. msgstr ""
  4558. "De nombreux clients RSS prennent en charge l'API Fever, mais ils semblent "
  4559. "comprendre l'API Fever un peu différemment. Si votre client préféré ne "
  4560. "fonctionne pas correctement avec cette API, veuiller créer un ticket et nous "
  4561. "y jetterons un oeil. Mais nous ne pouvons le faire que pour les clients "
  4562. "gratuits."
  4563. #. type: Title ###
  4564. #: en/./users/06_Fever_API.md:12
  4565. #, no-wrap
  4566. msgid "Usage & Authentication"
  4567. msgstr "Utilisation et authentification"
  4568. #. type: Plain text
  4569. #: en/./users/06_Fever_API.md:16
  4570. msgid ""
  4571. "Before you can start using this API, you have to enable and setup API "
  4572. "access, which is [documented here](https://freshrss.github.io/FreshRSS/en/"
  4573. "users/06_Mobile_access.html), and then reset the user’s API password."
  4574. msgstr ""
  4575. "Avant de pouvoir commencer à utiliser cette API, vvous devez activer et "
  4576. "configurer l'accès à l'API, qui est [documenté ici](https://freshrss.github."
  4577. "io/FreshRSS/en/users/06_Mobile_access.html), et réinitialisez ensuite le mot "
  4578. "de passe API de l'utilisateur."
  4579. #. type: Plain text
  4580. #: en/./users/06_Fever_API.md:18
  4581. msgid ""
  4582. "Then point your mobile application to the `fever.php` address (e.g. `https://"
  4583. "freshrss.example.net/api/fever.php`)."
  4584. msgstr ""
  4585. "Connectez ensuite votre application mobile en utilisant l'adresse de l'API "
  4586. "(e.g. `https://freshrss.example.net/api/fever.php`)."
  4587. #. type: Title #
  4588. #: en/./users/06_Fever_API.md:19 en/./users/06_Mobile_access.md:44
  4589. #, no-wrap
  4590. msgid "Compatible clients"
  4591. msgstr "Clients compatibles"
  4592. #. type: Plain text
  4593. #: en/./users/06_Fever_API.md:22
  4594. msgid "Tested with:"
  4595. msgstr "Testé avec :"
  4596. #. type: Plain text
  4597. #: en/./users/06_Fever_API.md:25
  4598. #, no-wrap
  4599. msgid ""
  4600. "* Android\n"
  4601. " * [Readably](https://play.google.com/store/apps/details?id=com.isaiasmatewos.readably) (Closed source)\n"
  4602. msgstr ""
  4603. "* Android\n"
  4604. " * [Readably](https://play.google.com/store/apps/details?id=com.isaiasmatewos.readably) (Propriétaire)\n"
  4605. #. type: Plain text
  4606. #: en/./users/06_Fever_API.md:30
  4607. #, no-wrap
  4608. msgid ""
  4609. "* iOS\n"
  4610. " * [Fiery Feeds](https://apps.apple.com/app/fiery-feeds-rss-reader/id1158763303) (Closed source)\n"
  4611. " * [Unread](https://apps.apple.com/app/unread-rss-reader/id1252376153) (Commercial)\n"
  4612. " * [Reeder](https://www.reederapp.com/) (Commercial) (Use its Google Reader API / native FreshRSS option when possible)\n"
  4613. msgstr ""
  4614. "* iOS\n"
  4615. " * [Fiery Feeds](https://apps.apple.com/app/fiery-feeds-rss-reader/id1158763303) (Propriétaire)\n"
  4616. " * [Unread](https://apps.apple.com/app/unread-rss-reader/id1252376153) (Commercial)\n"
  4617. " * [Reeder](https://www.reederapp.com/) (Commercial) (Connectez-vous plutôt par son option Google Reader API)\n"
  4618. #. type: Plain text
  4619. #: en/./users/06_Fever_API.md:33
  4620. #, no-wrap
  4621. msgid ""
  4622. "* MacOS\n"
  4623. " * [ReadKit](https://apps.apple.com/app/readkit/id588726889) (Commercial)\n"
  4624. msgstr ""
  4625. "* MacOS\n"
  4626. " * [ReadKit](https://apps.apple.com/app/readkit/id588726889) (Commercial)\n"
  4627. #. type: Title ##
  4628. #: en/./users/06_Fever_API.md:35
  4629. #, no-wrap
  4630. msgid "Features"
  4631. msgstr "Fonctionnalités"
  4632. #. type: Plain text
  4633. #: en/./users/06_Fever_API.md:38
  4634. msgid "The following features are implemented:"
  4635. msgstr "Les fonctionnalités suivantes sont implémentées :"
  4636. #. type: Bullet: '* '
  4637. #: en/./users/06_Fever_API.md:48
  4638. msgid "fetching categories"
  4639. msgstr "récupération des catégories"
  4640. #. type: Bullet: '* '
  4641. #: en/./users/06_Fever_API.md:48
  4642. msgid "fetching feeds"
  4643. msgstr "récupération des flux"
  4644. #. type: Bullet: '* '
  4645. #: en/./users/06_Fever_API.md:48
  4646. msgid ""
  4647. "fetching RSS items (new, favorites, unread, by_id, by_feed, by_category, "
  4648. "since)"
  4649. msgstr ""
  4650. "récupération des entrées (new, favorites, unread, by_id, by_feed, "
  4651. "by_category,since)"
  4652. #. type: Bullet: '* '
  4653. #: en/./users/06_Fever_API.md:48
  4654. msgid "fetching favicons"
  4655. msgstr "récupération des favicons"
  4656. #. type: Bullet: '* '
  4657. #: en/./users/06_Fever_API.md:48
  4658. msgid "setting read marker for item(s)"
  4659. msgstr "marquage des entrées comme lues"
  4660. #. type: Bullet: '* '
  4661. #: en/./users/06_Fever_API.md:48
  4662. msgid "setting starred marker for item(s)"
  4663. msgstr "marquage des entrées comme favoris"
  4664. #. type: Bullet: '* '
  4665. #: en/./users/06_Fever_API.md:48
  4666. msgid "setting read marker for feed"
  4667. msgstr "marquage d'un flux comme lu"
  4668. #. type: Bullet: '* '
  4669. #: en/./users/06_Fever_API.md:48
  4670. msgid "setting read marker for category"
  4671. msgstr "marquage d'une catégorie comme lue"
  4672. #. type: Bullet: '* '
  4673. #: en/./users/06_Fever_API.md:48
  4674. msgid "supports FreshRSS extensions, which use the `entry_before_display` hook"
  4675. msgstr "support des extensions grace au hook `entry_before_display`"
  4676. #. type: Plain text
  4677. #: en/./users/06_Fever_API.md:50
  4678. msgid "The following features are not supported:"
  4679. msgstr "Les fonctionnalités suivantes ne sont pas implémentées :"
  4680. #. type: Bullet: '* '
  4681. #: en/./users/06_Fever_API.md:52
  4682. msgid ""
  4683. "**Hot Links** aka **hot** as there is nothing in FreshRSS yet that is "
  4684. "similar or could be used to simulate it."
  4685. msgstr ""
  4686. "« Hot Links » car il n'y a encore rien dans FreshRSS qui soit similaire ou "
  4687. "qui puisse être utilisé pour le simuler."
  4688. #. type: Title ##
  4689. #: en/./users/06_Fever_API.md:53
  4690. #, no-wrap
  4691. msgid "Testing and debugging"
  4692. msgstr "Tester et déboguer"
  4693. #. type: Plain text
  4694. #: en/./users/06_Fever_API.md:56
  4695. msgid ""
  4696. "If this API does not work as expected in your RSS reader, you can test it "
  4697. "manually with a tool like [Postman](https://www.getpostman.com/)."
  4698. msgstr ""
  4699. "Si l'API ne fonctionne pas comme attendu dans votre lecteur, il est possible "
  4700. "de la tester manuellement avec un outil tel que [Postman](https://www."
  4701. "getpostman.com/)."
  4702. #. type: Plain text
  4703. #: en/./users/06_Fever_API.md:58
  4704. msgid ""
  4705. "Configure a POST request to the URL https://freshrss.example.net/api/fever."
  4706. "php?api which should give you the result:"
  4707. msgstr ""
  4708. "Envoyer une requête POST à l'adresse https://freshrss.example.net/api/fever."
  4709. "php?api devrait vous renvoyer le résultat suivant :"
  4710. #. type: Code fence info string
  4711. #: en/./users/06_Fever_API.md:58 en/./users/06_Fever_API.md:80
  4712. #, no-wrap
  4713. msgid "json"
  4714. msgstr "json"
  4715. #. type: Plain text
  4716. #: en/./users/06_Fever_API.md:58
  4717. #, no-wrap
  4718. msgid ""
  4719. "{\n"
  4720. "\t\"api_version\": 3,\n"
  4721. "\t\"auth\": 0\n"
  4722. "}\n"
  4723. msgstr ""
  4724. "{\n"
  4725. "\t\"api_version\": 3,\n"
  4726. "\t\"auth\": 0\n"
  4727. "}\n"
  4728. #. type: Plain text
  4729. #: en/./users/06_Fever_API.md:65
  4730. msgid "Great, the base setup seems to work!"
  4731. msgstr "Super, la configuration de base fonctionne !"
  4732. #. type: Plain text
  4733. #: en/./users/06_Fever_API.md:68
  4734. msgid ""
  4735. "Now lets try an authenticated call. Fever uses an `api_key`, which is the "
  4736. "MD5 hash of `\"$username:$apiPassword\"`. Assuming the user is `kevin` and "
  4737. "the password `freshrss`, here is a command-line example to compute the "
  4738. "resulting `api_key`"
  4739. msgstr ""
  4740. "Maintenant essayons de faire un appel authentifié. Fever utilise un "
  4741. "paramètre `api_key` qui contient le résultat de la fonction de hachage MD5 "
  4742. "de la valeur `\"$username:$apiPassword\"`. En considérant que l'utilisateur "
  4743. "est `kevin` et que son mot de passe est `freshrss`, voici la commande à "
  4744. "lancer pour calculer la valeur du paramètre `api_key` :"
  4745. #. type: Code fence info string
  4746. #: en/./users/06_Fever_API.md:69 en/./users/06_Fever_API.md:75
  4747. #: en/./users/06_Mobile_access.md:69
  4748. #: en/./users/07_Frequently_Asked_Questions.md:37
  4749. #: en/./users/07_Frequently_Asked_Questions.md:45
  4750. #, no-wrap
  4751. msgid "sh"
  4752. msgstr "sh"
  4753. #. type: Plain text
  4754. #: en/./users/06_Fever_API.md:69
  4755. #, no-wrap
  4756. msgid "api_key=`echo -n \"kevin:freshrss\" | md5sum | cut -d' ' -f1`\n"
  4757. msgstr "api_key=`echo -n \"kevin:freshrss\" | md5sum | cut -d' ' -f1`\n"
  4758. #. type: Plain text
  4759. #: en/./users/06_Fever_API.md:74
  4760. msgid ""
  4761. "Add a body to your POST request encoded as `form-data` and one key named "
  4762. "`api_key` with the value `your-password-hash`:"
  4763. msgstr ""
  4764. "Ajoutez un contenu sous forme de `form-data`à votre requête POST ainsi que "
  4765. "le paramètre `api_key` contenant la valeur calculée à l'étape précédente :"
  4766. #. type: Plain text
  4767. #: en/./users/06_Fever_API.md:75
  4768. #, no-wrap
  4769. msgid "curl -s -F \"api_key=$api_key\" 'https://freshrss.example.net/api/fever.php?api'\n"
  4770. msgstr "curl -s -F \"api_key=$api_key\" 'https://freshrss.exemple.net/api/fever.php?api'\n"
  4771. #. type: Plain text
  4772. #: en/./users/06_Fever_API.md:80
  4773. msgid "This should give:"
  4774. msgstr "Vous devriez obtenir le résultat suivant :"
  4775. #. type: Plain text
  4776. #: en/./users/06_Fever_API.md:80
  4777. #, no-wrap
  4778. msgid ""
  4779. "{\n"
  4780. "\t\"api_version\": 3,\n"
  4781. "\t\"auth\": 1,\n"
  4782. "\t\"last_refreshed_on_time\": \"1520013061\"\n"
  4783. "}\n"
  4784. msgstr ""
  4785. "{\n"
  4786. "\t\"api_version\": 3,\n"
  4787. "\t\"auth\": 1,\n"
  4788. "\t\"last_refreshed_on_time\": \"1520013061\"\n"
  4789. "}\n"
  4790. #. type: Plain text
  4791. #: en/./users/06_Fever_API.md:88
  4792. msgid ""
  4793. "Perfect, you're now authenticated and you can start testing the more "
  4794. "advanced features. To do so, change the URL and append the possible API "
  4795. "actions to your request parameters. Please refer to the [original Fever "
  4796. "documentation](https://feedafever.com/api) for more information."
  4797. msgstr ""
  4798. "Parfait, maintenant vous êtes autentifié et vous pouvez commencer à tester "
  4799. "les fonctions avancées. Pour cela, il suffit de changer l'adresse en lui "
  4800. "ajoutant les paramètres nécessaires à la réalisation des actions supportées. "
  4801. "Pour plus d'information, veuillez vous référer à la [documentation "
  4802. "officielle de Fever](https://feedafever.com/api)."
  4803. #. type: Plain text
  4804. #: en/./users/06_Fever_API.md:90
  4805. msgid "Some basic calls are:"
  4806. msgstr "Voici quelques exemples simples d'appels réalisables :"
  4807. #. type: Bullet: '* '
  4808. #: en/./users/06_Fever_API.md:100
  4809. msgid "https://freshrss.example.net/api/fever.php?api&items"
  4810. msgstr "https://freshrss.example.net/api/fever.php?api&items"
  4811. #. type: Bullet: '* '
  4812. #: en/./users/06_Fever_API.md:100
  4813. msgid "https://freshrss.example.net/api/fever.php?api&feeds"
  4814. msgstr "https://freshrss.example.net/api/fever.php?api&feeds"
  4815. #. type: Bullet: '* '
  4816. #: en/./users/06_Fever_API.md:100
  4817. msgid "https://freshrss.example.net/api/fever.php?api&groups"
  4818. msgstr "https://freshrss.example.net/api/fever.php?api&groups"
  4819. #. type: Bullet: '* '
  4820. #: en/./users/06_Fever_API.md:100
  4821. msgid "https://freshrss.example.net/api/fever.php?api&unread_item_ids"
  4822. msgstr "https://freshrss.example.net/api/fever.php?api&unread_item_ids"
  4823. #. type: Bullet: '* '
  4824. #: en/./users/06_Fever_API.md:100
  4825. msgid "https://freshrss.example.net/api/fever.php?api&saved_item_ids"
  4826. msgstr "https://freshrss.example.net/api/fever.php?api&saved_item_ids"
  4827. #. type: Bullet: '* '
  4828. #: en/./users/06_Fever_API.md:100
  4829. msgid "https://freshrss.example.net/api/fever.php?api&items&since_id=some_id"
  4830. msgstr "https://freshrss.example.net/api/fever.php?api&items&since_id=some_id"
  4831. #. type: Bullet: '* '
  4832. #: en/./users/06_Fever_API.md:100
  4833. msgid "https://freshrss.example.net/api/fever.php?api&items&max_id=some_id"
  4834. msgstr "https://freshrss.example.net/api/fever.php?api&items&max_id=some_id"
  4835. #. type: Bullet: '* '
  4836. #: en/./users/06_Fever_API.md:100
  4837. msgid ""
  4838. "https://freshrss.example.net/api/fever.php?api&mark=item&as=read&id=some_id"
  4839. msgstr ""
  4840. "https://freshrss.example.net/api/fever.php?api&mark=item&as=read&id=some_id"
  4841. #. type: Bullet: '* '
  4842. #: en/./users/06_Fever_API.md:100
  4843. msgid ""
  4844. "https://freshrss.example.net/api/fever.php?api&mark=item&as=unread&id=some_id"
  4845. msgstr ""
  4846. "https://freshrss.example.net/api/fever.php?api&mark=item&as=unread&id=some_id"
  4847. #. type: Plain text
  4848. #: en/./users/06_Fever_API.md:102
  4849. msgid ""
  4850. "Replace `some_id` with a real ID from your `freshrss_username_entry` "
  4851. "database."
  4852. msgstr ""
  4853. "Remplacez `some_id` par un identifiant réel de votre base de données "
  4854. "`freshrss_username_entry`."
  4855. #. type: Title ###
  4856. #: en/./users/06_Fever_API.md:103
  4857. #, no-wrap
  4858. msgid "Debugging"
  4859. msgstr "Déboguer"
  4860. #. type: Plain text
  4861. #: en/./users/06_Fever_API.md:106
  4862. msgid ""
  4863. "If nothing helps and your client is still misbehaving, you can add the "
  4864. "following lines to the beginning of the `fever.api` file to determine the "
  4865. "cause of the problems:"
  4866. msgstr ""
  4867. "Si rien ne fonctionne correctement et que votre client se comporte "
  4868. "étrangement, vous pouvez ajouter les quelques lignes suivantes au début du "
  4869. "fichier `fever.api` pour déterminer la cause des problèmes rencontrés :"
  4870. #. type: Plain text
  4871. #: en/./users/06_Fever_API.md:107
  4872. #, no-wrap
  4873. msgid "file_put_contents(__DIR__ . '/fever.log', $_SERVER['HTTP_USER_AGENT'] . ': ' . json_encode($_REQUEST) . PHP_EOL, FILE_APPEND);\n"
  4874. msgstr "file_put_contents(__DIR__ . '/fever.log', $_SERVER['HTTP_USER_AGENT'] . ': ' . json_encode($_REQUEST) . PHP_EOL, FILE_APPEND);\n"
  4875. #. type: Plain text
  4876. #: en/./users/06_Fever_API.md:112
  4877. msgid ""
  4878. "Then use your RSS client to query the API and afterwards check the file "
  4879. "`fever.log`."
  4880. msgstr ""
  4881. "Utilisez ensuite votre client RSS pour interroger l'API et vérifier le "
  4882. "fichier `fever.log`."
  4883. #. type: Title ##
  4884. #: en/./users/06_Fever_API.md:113
  4885. #, no-wrap
  4886. msgid "Credits"
  4887. msgstr "Remerciements"
  4888. #. type: Plain text
  4889. #: en/./users/06_Fever_API.md:115
  4890. msgid ""
  4891. "This plugin was inspired by the [tinytinyrss-fever-plugin](https://github."
  4892. "com/dasmurphy/tinytinyrss-fever-plugin)."
  4893. msgstr ""
  4894. "Ce plugin a été inspiré par le [tinytinyrss-fever-plugin](https://github.com/"
  4895. "dasmurphy/tinytinyrss-fever-plugin)."
  4896. #. type: Plain text
  4897. #: en/./users/06_Mobile_access.md:2
  4898. msgid ""
  4899. "This page assumes you have completed the [server setup](../"
  4900. "admins/02_Installation.md)."
  4901. msgstr ""
  4902. "Cette page suppose que vous ayez fini [l’installation du serveur]"
  4903. "(01_Installation.md)."
  4904. #. type: Title #
  4905. #: en/./users/06_Mobile_access.md:3
  4906. #, no-wrap
  4907. msgid "Enable the API in FreshRSS"
  4908. msgstr "Activer l’API dans FreshRSS"
  4909. #. type: Bullet: '1. '
  4910. #: en/./users/06_Mobile_access.md:9
  4911. msgid ""
  4912. "Under the section “Authentication”, enable the option “Allow API access "
  4913. "(required for mobile apps)”."
  4914. msgstr ""
  4915. "Dans la section “Authentification”, cocher l’option “Autoriser l’accès par "
  4916. "API (nécessaire pour les applis mobiles)”."
  4917. #. type: Plain text
  4918. #: en/./users/06_Mobile_access.md:9
  4919. #, no-wrap
  4920. msgid ""
  4921. "2. Under the section “Profile”, fill-in the field “API password (e.g., for mobile apps)”.\n"
  4922. "\t* Every user must define an API password.\n"
  4923. "\t* The reason for an API-specific password is that it may be used in less safe situations than the main password, and does not grant access to as many things.\n"
  4924. msgstr ""
  4925. "2. Dans la section “Profil”, remplir le champ “Mot de passe API (ex. : pour applis mobiles)”.\n"
  4926. "\t* Chaque utilisateur doit choisir son mot de passe API.\n"
  4927. "\t* La raison d’être d’un mot de passe API\n"
  4928. " différent du mot de passe principal est que le mot de passe API est potentiellement utilisé de manière moins sûre, mais il permet aussi moins de choses.\n"
  4929. #. type: Plain text
  4930. #: en/./users/06_Mobile_access.md:12
  4931. msgid ""
  4932. "The rest of this page is about the Google Reader compatible API. See the "
  4933. "[page about the Fever compatible API](06_Fever_API.md) for another "
  4934. "possibility."
  4935. msgstr ""
  4936. "Le reste de cette page concerne l’API compatible Google Reader. Voir la "
  4937. "[page sur l’API compatible Fever](06_Fever_API.md) pour une autre "
  4938. "possibilité."
  4939. #. type: Title #
  4940. #: en/./users/06_Mobile_access.md:14
  4941. #, no-wrap
  4942. msgid "Testing"
  4943. msgstr "Tester"
  4944. #. type: Bullet: '3. '
  4945. #: en/./users/06_Mobile_access.md:21
  4946. msgid ""
  4947. "Under the section “Profile”, click on the link like `https://rss.example.net/"
  4948. "api/` next to the field “API password”."
  4949. msgstr ""
  4950. "Dans la section “Profil”, cliquer sur le lien de la forme `https://rss."
  4951. "example.net/api/` à côté du champ “Mot de passe API”."
  4952. #. type: Plain text
  4953. #: en/./users/06_Mobile_access.md:21
  4954. #, no-wrap
  4955. msgid ""
  4956. "4. Click on first link “Check full server configuration”:\n"
  4957. "\t* If you get *PASS* then you are done, all is good: you may proceed to step 6.\n"
  4958. "\t* If you get *Bad Request!* or *Not Found*, then your server probably does not accept slashes `/` that are escaped `%2F`. Proceed to step 5.\n"
  4959. "\t* If you get any other error message, proceed to step 5.\n"
  4960. msgstr ""
  4961. "4. Cliquer sur le premier lien “Check full server configuration”:\n"
  4962. "\t* Si vous obtenez `PASS`, tout est bon : passer à l’étape 6.\n"
  4963. "\t* Si vous obtenez *Bad Request!* ou *Not Found*, alors votre serveur ne semble pas accepter les slashs `/` qui sont encodés `%2F`. Passer à l’étape 5.\n"
  4964. "\t* Si vous obtenez un autre message d’erreur, passer à l’étape 5.\n"
  4965. #. type: Title #
  4966. #: en/./users/06_Mobile_access.md:23
  4967. #, no-wrap
  4968. msgid "Fix server configuration"
  4969. msgstr "Déboguer la configuration du serveur"
  4970. #. type: Plain text
  4971. #: en/./users/06_Mobile_access.md:42
  4972. #, no-wrap
  4973. msgid ""
  4974. "5. Click on the second link “Check partial server configuration (without `%2F` support)”:\n"
  4975. "\t* If you get `PASS`, then the problem is indeed that your server does not accept slashes `/` that are escaped `%2F`.\n"
  4976. "\t\t* With Apache, remember the directive [`AllowEncodedSlashes On`](http://httpd.apache.org/docs/trunk/mod/core.html#allowencodedslashes)\n"
  4977. "\t\t* Or use a client that does not escape slashes (such as EasyRSS), in which case proceed to step 6.\n"
  4978. "\t* If you get *Service Unavailable!*, then check from step 1 again.\n"
  4979. "\t* With __Apache__:\n"
  4980. "\t\t* If you get *FAIL getallheaders!*, the combination of your PHP version and your Web server does not provide access to [`getallheaders`](http://php.net/getallheaders)\n"
  4981. "\t\t\t* Turn on Apache `mod_setenvif` (often enabled by default), or `mod_rewrite` with the following procedure:\n"
  4982. "\t\t\t\t* Allow [`FileInfo` in `.htaccess`](http://httpd.apache.org/docs/trunk/mod/core.html#allowoverride): see the [server setup](../admins/02_Installation.md) again.\n"
  4983. "\t\t\t\t* Enable [`mod_rewrite`](http://httpd.apache.org/docs/trunk/mod/mod_rewrite.html):\n"
  4984. "\t\t\t\t\t* With Debian / Ubuntu: `sudo a2enmod rewrite`\n"
  4985. "\t* With __nginx__:\n"
  4986. "\t\t* If you get *Bad Request!*, check your server `PATH_INFO` configuration.\n"
  4987. "\t\t* If you get *File not found!*, check your server `fastcgi_split_path_info`.\n"
  4988. "\t* If you get *FAIL 64-bit or GMP extension!*, then your PHP version does not pass the requirement of being 64-bit and/or have PHP [GMP](http://php.net/gmp) extension.\n"
  4989. "\t\t* The easiest is to add the GMP extension. On Debian / Ubuntu: `sudo apt install php-gmp`\n"
  4990. "\t* Update and try again from step 3.\n"
  4991. msgstr ""
  4992. "5. Cliquer sur le second lien “Check partial server configuration (without `%2F` support)”:\n"
  4993. "\t* Si vous obtenez `PASS`, alors le problème est bien que votre serveur n’accepte pas les slashs `/` qui sont encodés `%2F`.\n"
  4994. "\t\t* Avec Apache, vérifiez la directive [`AllowEncodedSlashes On`](http://httpd.apache.org/docs/trunk/mod/core.html#allowencodedslashes)\n"
  4995. "\t\t* Ou utilisez un client qui n’encode pas les slashs (comme EasyRSS), auquel cas passer à l’étape 6.\n"
  4996. "\t* Si vous obtenez *Service Unavailable!*, retourner à l’étape 6.\n"
  4997. "\t* Avec __Apache__:\n"
  4998. "\t\t* Si vous obtenez *FAIL getallheaders!*, alors la combinaison de votre version de PHP et de votre serveur Web ne permet pas l’accès à [`getallheaders`](http://php.net/getallheaders)\n"
  4999. "\t\t\t* Activer Apache `mod_setenvif` (souvent activé par défault), ou `mod_rewrite` avec la procédure suivante :\n"
  5000. "\t\t\t\t* Autoriser [`FileInfo` dans `.htaccess`](http://httpd.apache.org/docs/trunk/mod/core.html#allowoverride) : revoir [l’installation du serveur](01_Installation.md).\n"
  5001. "\t\t\t\t* Activer [`mod_rewrite`](http://httpd.apache.org/docs/trunk/mod/mod_rewrite.html) :\n"
  5002. "\t\t\t\t\t* Sur Debian / Ubuntu : `sudo a2enmod rewrite`\n"
  5003. "\t* Avec __nginx__:\n"
  5004. "\t\t* Si vous obtenez *Bad Request!*, vérifier la configuration `PATH_INFO` de votre serveur.\n"
  5005. "\t\t* Si vous obtenez *File not found!*, vérifier la configuration `fastcgi_split_path_info` de votre serveur.\n"
  5006. "\t* Si vous obtenez *FAIL 64-bit or GMP extension!*, alors votre installation PHP soit n’est pas en 64 bit, soit n’a pas l’extension PHP [GMP](http://php.net/gmp) activée.\n"
  5007. "\t\t* Le plus simple est d’activer l’extension GMP. Sur Debian / Ubuntu : `sudo apt install php-gmp`\n"
  5008. "\t* Mettre à jour et retourner à l’étape 3.\n"
  5009. #. type: Plain text
  5010. #: en/./users/06_Mobile_access.md:48
  5011. #, no-wrap
  5012. msgid ""
  5013. "6. On the same FreshRSS API page, note the address given under “Your API address”, like `https://freshrss.example.net/api/greader.php`\n"
  5014. "\t* Type the API address in a client, together with your FreshRSS username, and the corresponding special API password.\n"
  5015. msgstr ""
  5016. "6. Sur la même page de l'API FreshRSS, notez l'adresse donnée sous \"Votre adresse API\", comme `https://freshrss.example.net/api/greader.php`\n"
  5017. "\t* Saisissez l'adresse de l'API dans le client sélectionné puis votre nom d'utilisateur et votre mot de passe spécialement créé pour l'API.\n"
  5018. #. type: Plain text
  5019. #: en/./users/06_Mobile_access.md:63
  5020. #, no-wrap
  5021. msgid ""
  5022. "7. Pick a client supporting a Google Reader-like API. Selection:\n"
  5023. "\t* Android\n"
  5024. "\t\t* [News+](https://play.google.com/store/apps/details?id=com.noinnion.android.newsplus) with [News+ Google Reader extension](https://play.google.com/store/apps/details?id=com.noinnion.android.newsplus.extension.google_reader) (Closed source)\n"
  5025. "\t\t* [FeedMe 3.5.3+](https://play.google.com/store/apps/details?id=com.seazon.feedme) (Closed source)\n"
  5026. "\t\t* [EasyRSS](https://github.com/Alkarex/EasyRSS) (Open source, [F-Droid](https://f-droid.org/packages/org.freshrss.easyrss/))\n"
  5027. "\t* Linux\n"
  5028. "\t\t* [FeedReader 2.0+](https://jangernert.github.io/FeedReader/) (Open source)\n"
  5029. "\t* MacOS\n"
  5030. "\t\t* [Vienna RSS](http://www.vienna-rss.com/) (Open source)\n"
  5031. "\t\t* [Reeder](https://www.reederapp.com/) (Commercial)\n"
  5032. "\t* iOS\n"
  5033. "\t\t* [Reeder](https://www.reederapp.com/) (Commercial)\n"
  5034. "\t* Firefox\n"
  5035. "\t\t* [FreshRSS-Notify](https://addons.mozilla.org/firefox/addon/freshrss-notify-webextension/) (Open source)\n"
  5036. msgstr ""
  5037. "7. Vous pouvez maintenant tester sur une application mobile:\n"
  5038. "\t* Android\n"
  5039. "\t\t* [News+](https://play.google.com/store/apps/details?id=com.noinnion.android.newsplus) avec [News+ Google Reader extension](https://play.google.com/store/apps/details?id=com.noinnion.android.newsplus.extension.google_reader) (Closed source)\n"
  5040. "\t\t* [FeedMe 3.5.3+](https://play.google.com/store/apps/details?id=com.seazon.feedme) (Propriétaire)\n"
  5041. "\t\t* [EasyRSS](https://github.com/Alkarex/EasyRSS) (Libre, [F-Droid](https://f-droid.org/packages/org.freshrss.easyrss/))\n"
  5042. "\t* Linux\n"
  5043. "\t\t* [FeedReader 2.0+](https://jangernert.github.io/FeedReader/) (Libre)\n"
  5044. "\t* MacOS\n"
  5045. "\t\t* [Vienna RSS](http://www.vienna-rss.com/) (Libre)\n"
  5046. "\t\t* [Reeder](https://www.reederapp.com/) (Commercial)\n"
  5047. "\t* iOS\n"
  5048. "\t\t* [Reeder](https://www.reederapp.com/) (Commercial)\n"
  5049. "\t* Firefox\n"
  5050. "\t\t* [FreshRSS-Notify](https://addons.mozilla.org/firefox/addon/freshrss-notify-webextension/) (Libre)\n"
  5051. #. type: Title #
  5052. #: en/./users/06_Mobile_access.md:65
  5053. #, no-wrap
  5054. msgid "Google Reader compatible API"
  5055. msgstr "API compatible Google Reader"
  5056. #. type: Plain text
  5057. #: en/./users/06_Mobile_access.md:68
  5058. msgid "Examples of basic queries:"
  5059. msgstr "Exemples de requêtes simples :"
  5060. #. type: Plain text
  5061. #: en/./users/06_Mobile_access.md:69
  5062. #, no-wrap
  5063. msgid ""
  5064. "# Initial login, using API password (Email and Passwd can be given either as GET, or POST - better)\n"
  5065. "curl 'https://freshrss.example.net/api/greader.php/accounts/ClientLogin?Email=alice&Passwd=Abcdef123456'\n"
  5066. "SID=alice/8e6845e089457af25303abc6f53356eb60bdb5f8\n"
  5067. "Auth=alice/8e6845e089457af25303abc6f53356eb60bdb5f8\n"
  5068. "\n"
  5069. "# Examples of read-only requests\n"
  5070. "curl -s -H \"Authorization:GoogleLogin auth=alice/8e6845e089457af25303abc6f53356eb60bdb5f8\" \\\n"
  5071. " 'https://freshrss.example.net/api/greader.php/reader/api/0/subscription/list?output=json'\n"
  5072. "\n"
  5073. "curl -s -H \"Authorization:GoogleLogin auth=alice/8e6845e089457af25303abc6f53356eb60bdb5f8\" \\\n"
  5074. " 'https://freshrss.example.net/api/greader.php/reader/api/0/unread-count?output=json'\n"
  5075. "\n"
  5076. "curl -s -H \"Authorization:GoogleLogin auth=alice/8e6845e089457af25303abc6f53356eb60bdb5f8\" \\\n"
  5077. " 'https://freshrss.example.net/api/greader.php/reader/api/0/tag/list?output=json'\n"
  5078. "\n"
  5079. "# Retrieve a token for requests making modifications\n"
  5080. "curl -H \"Authorization:GoogleLogin auth=alice/8e6845e089457af25303abc6f53356eb60bdb5f8\" \\\n"
  5081. " 'https://freshrss.example.net/api/greader.php/reader/api/0/token'\n"
  5082. "8e6845e089457af25303abc6f53356eb60bdb5f8ZZZZZZZZZZZZZZZZZ\n"
  5083. "\n"
  5084. "# Get articles, piped to jq for easier JSON reading\n"
  5085. "curl -s -H \"Authorization:GoogleLogin auth=alice/8e6845e089457af25303abc6f53356eb60bdb5f8\" \\\n"
  5086. " 'https://freshrss.example.net/api/greader.php/reader/api/0/stream/contents/reading-list' | jq .\n"
  5087. msgstr ""
  5088. "# Authentification utilisant le mot de passe API (Email et Passwd peuvent être passés en GET, ou POST - mieux)\n"
  5089. "curl 'https://freshrss.example.net/api/greader.php/accounts/ClientLogin?Email=alice&Passwd=Abcdef123456'\n"
  5090. "SID=alice/8e6845e089457af25303abc6f53356eb60bdb5f8\n"
  5091. "Auth=alice/8e6845e089457af25303abc6f53356eb60bdb5f8\n"
  5092. "\n"
  5093. "# Exemples de requêtes en lecture\n"
  5094. "curl -s -H \"Authorization:GoogleLogin auth=alice/8e6845e089457af25303abc6f53356eb60bdb5f8\" \\\n"
  5095. " 'https://freshrss.example.net/api/greader.php/reader/api/0/subscription/list?output=json'\n"
  5096. "\n"
  5097. "curl -s -H \"Authorization:GoogleLogin auth=alice/8e6845e089457af25303abc6f53356eb60bdb5f8\" \\\n"
  5098. " 'https://freshrss.example.net/api/greader.php/reader/api/0/unread-count?output=json'\n"
  5099. "\n"
  5100. "curl -s -H \"Authorization:GoogleLogin auth=alice/8e6845e089457af25303abc6f53356eb60bdb5f8\" \\\n"
  5101. " 'https://freshrss.example.net/api/greader.php/reader/api/0/tag/list?output=json'\n"
  5102. "\n"
  5103. "# Demande de jeton pour faire de requêtes de modification\n"
  5104. "curl -H \"Authorization:GoogleLogin auth=alice/8e6845e089457af25303abc6f53356eb60bdb5f8\" \\\n"
  5105. " 'https://freshrss.example.net/api/greader.php/reader/api/0/token'\n"
  5106. "8e6845e089457af25303abc6f53356eb60bdb5f8ZZZZZZZZZZZZZZZZZ\n"
  5107. "\n"
  5108. "# Récupère les articles, envoyés à jq pour une lecture JSON plus facile\n"
  5109. "curl -s -H \"Authorization:GoogleLogin auth=alice/8e6845e089457af25303abc6f53356eb60bdb5f8\" \\\n"
  5110. " 'https://freshrss.example.net/api/greader.php/reader/api/0/stream/contents/reading-list' | jq .\n"
  5111. #. type: Plain text
  5112. #: en/./users/07_Frequently_Asked_Questions.md:2
  5113. msgid ""
  5114. "We may not have answered all of your questions in the previous sections. The "
  5115. "FAQ contains some questions that have not been answered elsewhere."
  5116. msgstr ""
  5117. "Il est possible que nous n'ayons pas répondu à toutes vos questions dans les "
  5118. "parties précédentes. La FAQ regroupe certaines interrogations qui n'ont pas "
  5119. "trouvé leur réponse ailleurs."
  5120. #. type: Title ##
  5121. #: en/./users/07_Frequently_Asked_Questions.md:3
  5122. #, no-wrap
  5123. msgid "What is `/i` at the end of the application URL?"
  5124. msgstr "C'est quoi ce `/i` à la fin de l'URL ?"
  5125. #. type: Plain text
  5126. #: en/./users/07_Frequently_Asked_Questions.md:6
  5127. msgid ""
  5128. "Of course, ```/i``` has a purpose! It's used for performance and usability:"
  5129. msgstr ""
  5130. "Bien entendu, le ```/i``` n'est pas là pour faire joli ! Il s'agit d'une "
  5131. "question de performances et de praticité :"
  5132. #. type: Bullet: '* '
  5133. #: en/./users/07_Frequently_Asked_Questions.md:11
  5134. msgid ""
  5135. "It allows for serving icons, images, styles and scripts without cookies. "
  5136. "Without that trick, those files would be downloaded more often, especially "
  5137. "when form authentication is used. Also, HTTP requests would be heavier."
  5138. msgstr ""
  5139. "Cela permet de servir les icônes, images, styles, scripts sans cookie. Sans "
  5140. "cela, ces fichiers seraient souvent re-téléchargés, en particulier lorsque "
  5141. "le formulaire de connexion est utilisé. De plus, les requêtes vers ces "
  5142. "ressources seraient plus lourdes."
  5143. #. type: Bullet: '* '
  5144. #: en/./users/07_Frequently_Asked_Questions.md:11
  5145. msgid ""
  5146. "The ```./p/``` public root can be served without any HTTP access "
  5147. "restrictions. Whereas it could be implemented in ```./p/i/```."
  5148. msgstr ""
  5149. "La racine publique ```./p/``` peut être servie sans restriction d'accès HTTP "
  5150. "(qui peut avantageusement être mise en place dans ```./p/i/```)."
  5151. #. type: Bullet: '* '
  5152. #: en/./users/07_Frequently_Asked_Questions.md:11
  5153. msgid ""
  5154. "It avoids problems while serving public resources like ```favicon.ico```, "
  5155. "```robots.txt```, etc."
  5156. msgstr ""
  5157. "Cela permet d'éviter des problèmes pour des fichiers qui doivent être "
  5158. "publics pour bien fonctionner, comme ```favicon.ico```, ```robots.txt```, "
  5159. "etc."
  5160. #. type: Bullet: '* '
  5161. #: en/./users/07_Frequently_Asked_Questions.md:11
  5162. msgid ""
  5163. "It allows the logo to be displayed instead of a white page while hitting a "
  5164. "restriction or a delay during the loading process."
  5165. msgstr ""
  5166. "Cela permet aussi d'avoir un logo FreshRSS plutôt qu'une page blanche pour "
  5167. "accueillir l'utilisateur par exemple dans le cas de la restriction d'accès "
  5168. "HTTP ou lors de l'attente du chargement plus lourd du reste de l'interface."
  5169. #. type: Title ##
  5170. #: en/./users/07_Frequently_Asked_Questions.md:12
  5171. #, no-wrap
  5172. msgid "Why is `robots.txt` located in a sub-folder?"
  5173. msgstr "Pourquoi le ```robots.txt``` se trouve dans un sous-répertoire ?"
  5174. #. type: Plain text
  5175. #: en/./users/07_Frequently_Asked_Questions.md:15
  5176. msgid ""
  5177. "To increase security, FreshRSS is hosted in two sections. The first section "
  5178. "is public (the `./p` folder) and the second section is private (everything "
  5179. "else). Therefore the `robots.txt` file is located in the `./p` sub-folder."
  5180. msgstr ""
  5181. "Afin d'améliorer la sécurité, FreshRSS est découpé en deux parties : une "
  5182. "partie publique (le répertoire ```./p```) et une partie privée (tout le "
  5183. "reste !). Le ```robots.txt``` se trouve donc dans le sous-répertoire ```./"
  5184. "p```."
  5185. #. type: Plain text
  5186. #: en/./users/07_Frequently_Asked_Questions.md:17
  5187. msgid ""
  5188. "As explained in the [security section](/en/User_documentation/Installation/"
  5189. "Security), it's highly recommended to make only the public section available "
  5190. "at the domain level. With that configuration, `./p` is the root folder for "
  5191. "http://demo.freshrss.org/, thus making `robots.txt` available at the root of "
  5192. "the application."
  5193. msgstr ""
  5194. "Comme expliqué dans les [conseils de sécurité](01_Installation.md#conseils-"
  5195. "de-securite), il est recommandé de faire pointer un nom de domaine vers ce "
  5196. "sous-répertoire afin que seule la partie publique ne soit accessible par un "
  5197. "navigateur web. De cette manière https://demo.freshrss.org/ pointe vers le "
  5198. "répertoire ```./p``` et le ```robots.txt``` se trouve bien à la racine du "
  5199. "site : https://demo.freshrss.org/robots.txt."
  5200. #. type: Plain text
  5201. #: en/./users/07_Frequently_Asked_Questions.md:19
  5202. msgid "The same principle applies to `favicon.ico` and `.htaccess`."
  5203. msgstr ""
  5204. "L'explication est la même pour les fichiers ```favicon.ico``` et ```."
  5205. "htaccess```."
  5206. #. type: Title ##
  5207. #: en/./users/07_Frequently_Asked_Questions.md:20
  5208. #, no-wrap
  5209. msgid "Why do I have errors while registering a feed?"
  5210. msgstr "Pourquoi j'ai des erreurs quand j'essaye d'enregistrer un flux ?"
  5211. #. type: Plain text
  5212. #: en/./users/07_Frequently_Asked_Questions.md:26
  5213. msgid ""
  5214. "There can be different origins for that problem. The feed syntax can be "
  5215. "invalid, it can be unrecognized by the SimplePie library, the hosting server "
  5216. "can be the root of the problem, or FreshRSS can be buggy. The first step is "
  5217. "to identify what causes the problem. Here are the steps to follow:"
  5218. msgstr ""
  5219. "Il peut y avoir différentes origines à ce problème. Le flux peut avoir une "
  5220. "syntaxe invalide, il peut ne pas être reconnu par la bibliothèque SimplePie, "
  5221. "l'hébergement peut avoir des problèmes, FreshRSS peut être boggué. Il faut "
  5222. "dans un premier temps déterminer la cause du problème.Voici la liste des "
  5223. "étapes à suivre pour la déterminer :"
  5224. #. type: Bullet: '1. '
  5225. #: en/./users/07_Frequently_Asked_Questions.md:30
  5226. msgid ""
  5227. "__Verify if the feed syntax is valid__ with the [W3C on-line tool](https://"
  5228. "validator.w3.org/feed/ \"RSS and Atom feed validator\"). If it's not valid, "
  5229. "there's nothing we can do."
  5230. msgstr ""
  5231. "__Vérifier la validité du flux__ grâce à l'[outil en ligne du W3C](https://"
  5232. "validator.w3.org/feed/ \"Validateur en ligne de flux RSS et Atom\"). Si ça "
  5233. "ne fonctionne pas, nous ne pouvons rien faire."
  5234. #. type: Bullet: '1. '
  5235. #: en/./users/07_Frequently_Asked_Questions.md:30
  5236. msgid ""
  5237. "__Verify SimplePie validation__ with the [SimplePie on-line tool](https://"
  5238. "simplepie.org/demo/ \"SimplePie official demo\"). If it's not recognized, "
  5239. "there's nothing we can do."
  5240. msgstr ""
  5241. "__Vérifier la reconnaissance par SimplePie__ grâce à l'[outil en ligne de "
  5242. "SimplePie](https://simplepie.org/demo/ \"Démo officielle de SimplePie\"). Si "
  5243. "ça ne fonctionne pas, nous ne pouvons rien faire."
  5244. #. type: Bullet: '1. '
  5245. #: en/./users/07_Frequently_Asked_Questions.md:30
  5246. msgid ""
  5247. "__Verify FreshRSS integration__ with the [demo](https://demo.freshrss.org "
  5248. "\"FreshRSS official demo\"). If it's not working, you need to [create an "
  5249. "issue on Github](https://github.com/FreshRSS/FreshRSS/issues/new \"Create an "
  5250. "issue for FreshRSS\") so we can have a look at it. If it's working, there's "
  5251. "probably something fishy with the hosting server."
  5252. msgstr ""
  5253. "__Vérifier l'intégration dans FreshRSS__ grâce à la [démo](https://demo."
  5254. "freshrss.org \"Démo officielle de FreshRSS\"). Si ça ne fonctionne pas, il "
  5255. "faut [créer un ticket sur Github](https://github.com/FreshRSS/FreshRSS/"
  5256. "issues/new \"Créer un ticket pour FreshRSS\") pour que l'on puisse regarder "
  5257. "ce qui se passe. Si ça fonctionne, il y a probablement un problème avec "
  5258. "l'hébergement."
  5259. #. type: Title ##
  5260. #: en/./users/07_Frequently_Asked_Questions.md:31
  5261. #, no-wrap
  5262. msgid "How can you change a forgotten password?"
  5263. msgstr "Comment changer un mot de passe oublié ?"
  5264. #. type: Plain text
  5265. #: en/./users/07_Frequently_Asked_Questions.md:35
  5266. msgid ""
  5267. "Since the [1.10.0](https://github.com/FreshRSS/FreshRSS/releases/tag/1.10.0) "
  5268. "release, admins can change user passwords directly from the interface. This "
  5269. "interface is available under ```Administration → Manage users```. Select a "
  5270. "user, enter a password, and validate."
  5271. msgstr ""
  5272. "Depuis la version [1.10.0](https://github.com/FreshRSS/FreshRSS/releases/"
  5273. "tag/1.10.0), l'administrateur peut modifier le mot de passe d'un utilisateur "
  5274. "depuis l'interface. Cette interface est disponible dans le menu "
  5275. "```Administration → Gestion des utilisateurs```. Il suffit de sélectionner "
  5276. "l'utilisateur, de saisir un mot de passe et de valider."
  5277. #. type: Plain text
  5278. #: en/./users/07_Frequently_Asked_Questions.md:37
  5279. msgid ""
  5280. "Since the [1.8.0](https://github.com/FreshRSS/FreshRSS/releases/tag/1.8.0) "
  5281. "release, admins can change user passwords using a terminal. It worth "
  5282. "mentioning that you must have access to PHP CLI. Open a terminal, and type "
  5283. "the following command:"
  5284. msgstr ""
  5285. "Depuis la version [1.8.0](https://github.com/FreshRSS/FreshRSS/releases/"
  5286. "tag/1.8.0), l'administrateur peut modifier le mot de passe d'un utilisateur "
  5287. "depuis un terminal. Il est bon de noter que celui-ci doit avoir un accès à "
  5288. "PHP en ligne de commande. Pour cela, il suffit d'ouvrir son terminal et de "
  5289. "saisir la commande suivante :"
  5290. #. type: Plain text
  5291. #: en/./users/07_Frequently_Asked_Questions.md:37
  5292. #, no-wrap
  5293. msgid "./cli/update_user.php --user <username> --password <password>\n"
  5294. msgstr ""
  5295. "./cli/update_user.php --user <username> --password <password>\n"
  5296. "\n"
  5297. #. type: Plain text
  5298. #: en/./users/07_Frequently_Asked_Questions.md:41
  5299. msgid ""
  5300. "For more information on that matter, please refer to the [dedicated "
  5301. "documentation](../../cli/README.md)."
  5302. msgstr ""
  5303. "Pour plus d'information à ce sujet, il existe la [documentation dédiée]"
  5304. "(../../cli/README.md)."
  5305. #. type: Title ##
  5306. #: en/./users/07_Frequently_Asked_Questions.md:42
  5307. #, no-wrap
  5308. msgid "Permissions under SELinux"
  5309. msgstr "Gérer les permissions sous SELinux"
  5310. #. type: Plain text
  5311. #: en/./users/07_Frequently_Asked_Questions.md:45
  5312. msgid ""
  5313. "Some Linux distribution, like Fedora or RedHat Enterprise Linux, have "
  5314. "SELinux enabled. This acts similar to a firewall application, so that "
  5315. "applications can't write or modify files under certain conditions. While "
  5316. "installing FreshRSS, step 2 can fail if the httpd process can't write to "
  5317. "some data sub-directories. The following command should be executed as root "
  5318. "to fix this problem:"
  5319. msgstr ""
  5320. "Certaines distributions Linux comme Fedora ou RedHat Enterprise Linux (RHEL) "
  5321. "activent par défaut le système SELinux. Celui-ci permet de gérer des "
  5322. "permissions au niveau des processus. Lors de l'installation de FreshRSS, "
  5323. "l'étape 2 procède à la vérification des droits sur certains répertoires, il "
  5324. "faut donc exécuter la commande suivante en tant que root:"
  5325. #. type: Plain text
  5326. #: en/./users/07_Frequently_Asked_Questions.md:45
  5327. #, no-wrap
  5328. msgid ""
  5329. "semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/FreshRSS/data(/.*)?'\n"
  5330. "restorecon -Rv /usr/share/FreshRSS/data\n"
  5331. msgstr ""
  5332. "semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/FreshRSS/data(/.*)?'\n"
  5333. "restorecon -Rv /usr/share/FreshRSS/data\n"
  5334. #. type: Title ##
  5335. #: en/./users/07_Frequently_Asked_Questions.md:50
  5336. #, no-wrap
  5337. msgid "Why do I have a blank page while trying to configure the sharing options?"
  5338. msgstr "Pourquoi y a-t-il une page blanche lorsque je configure les options de partage ?"
  5339. #. type: Plain text
  5340. #: en/./users/07_Frequently_Asked_Questions.md:53
  5341. msgid ""
  5342. "The `sharing` word in the URL is a trigger word for some ad-blocker rules. "
  5343. "Starting with version 1.16, `sharing` has been replaced by `integration` in "
  5344. "the faulty URL while keeping the exact same wording throughout the "
  5345. "application."
  5346. msgstr ""
  5347. "Le mot `sharing` dans l'URL est un mot déclencheur pour certaines règles des "
  5348. "bloqueurs de publicités. À partir de la version 1.16, `sharing` a été "
  5349. "remplacé par `integration` dans l'URL posant problème tout en conservant "
  5350. "exactement la même dénomination à travers l'application."
  5351. #. type: Plain text
  5352. #: en/./users/07_Frequently_Asked_Questions.md:55
  5353. msgid ""
  5354. "If you are using a version prior to 1.16, you can disable your ad-blocker "
  5355. "for FreshRSS or you can add a rule to allow the `sharing` page to be "
  5356. "accessed."
  5357. msgstr ""
  5358. "Si vous utilisez une version antérieure à 1.16, vous pouvez désactiver votre "
  5359. "bloqueur de publicité pour FreshRSS ou vous pouvez ajouter une règle pour "
  5360. "permettre la consultation de la page de configuration « partage »."
  5361. #. type: Plain text
  5362. #: en/./users/07_Frequently_Asked_Questions.md:57
  5363. msgid "Examples with _uBlock_:"
  5364. msgstr "Exemples avec _uBlock_ :"
  5365. #. type: Bullet: '- '
  5366. #: en/./users/07_Frequently_Asked_Questions.md:59
  5367. msgid ""
  5368. "Whitelist your FreshRSS instance by adding it in _uBlock > Open the "
  5369. "dashboard > Whitelist_."
  5370. msgstr ""
  5371. "Ajoutez votre instance FreshRSS à la liste blanche de en l'ajoutant dans "
  5372. "_uBlock > Ouvrir le tableau de bord > Liste blanche_."
  5373. #. type: Bullet: '- '
  5374. #: en/./users/07_Frequently_Asked_Questions.md:59
  5375. msgid ""
  5376. "Authorize your FreshRSS instance to call `sharing` configuration page by "
  5377. "adding the rule `*sharing,domain=~yourdomain.com` in _uBlock > Open the "
  5378. "dashboard > My filters_"
  5379. msgstr ""
  5380. "Autorisez votre instance FreshRSS à appeler la page de configuration "
  5381. "`sharing` en ajoutant la règle `*sharing,domain=~votredomaine.com` dans "
  5382. "_uBlock > Ouvrir le fichier tableau de bord > Mes filtres_"
  5383. #, fuzzy
  5384. #~| msgid ""
  5385. #~| "As explained in the [security section](/en/User_documentation/"
  5386. #~| "Installation/Security), it's highly recommended to make only the public "
  5387. #~| "section available at the domain level. With that configuration, `./p` is "
  5388. #~| "the root folder for http://demo.freshrss.org/, thus making `robots.txt` "
  5389. #~| "available at the root of the application."
  5390. #~ msgid ""
  5391. #~ "As explained in the [security section](/en/User_documentation/"
  5392. #~ "Installation/Security), it is highly recommended to make only the public "
  5393. #~ "section available at the domain level. With that configuration, ```./p``` "
  5394. #~ "is the root folder for https://demo.freshrss.org/, thus making ```robots."
  5395. #~ "txt``` available at the root of the application.\n"
  5396. #~ ">>>>>>> 8bdf7b09f208346481cba5e08edc55dfab8c8d63\n"
  5397. #~ msgstr ""
  5398. #~ "Comme expliqué dans les [conseils de sécurité](01_Installation."
  5399. #~ "md#conseils-de-securite), il est recommandé de faire pointer un nom de "
  5400. #~ "domaine vers ce sous-répertoire afin que seule la partie publique ne soit "
  5401. #~ "accessible par un navigateur web. De cette manière http://demo.freshrss."
  5402. #~ "org/ pointe vers le répertoire ```./p``` et le ```robots.txt``` se trouve "
  5403. #~ "bien à la racine du site : http://demo.freshrss.org/robots.txt."
  5404. #~ msgid "Here's a list of feeds which don't work:"
  5405. #~ msgstr "Voici une liste des flux qui ne fonctionnent pas :"
  5406. #~ msgid ""
  5407. #~ "http://foulab.org/fr/rss/Foulab_News: is not a W3C valid feed (November "
  5408. #~ "2014)"
  5409. #~ msgstr ""
  5410. #~ "http://foulab.org/fr/rss/Foulab_News : ne passe pas la validation W3C "
  5411. #~ "(novembre 2014)"
  5412. #~ msgid ""
  5413. #~ "http://eu.battle.net/hearthstone/fr/feed/news: is not a W3C valid feed "
  5414. #~ "(November 2014)"
  5415. #~ msgstr ""
  5416. #~ "http://eu.battle.net/hearthstone/fr/feed/news : ne passe pas la "
  5417. #~ "validation W3C (novembre 2014)"
  5418. #~ msgid ""
  5419. #~ "http://webseriesmag.blogs.liberation.fr/we/atom.xml: is not working for "
  5420. #~ "the user but passes validation (November 2014)"
  5421. #~ msgstr ""
  5422. #~ "http://webseriesmag.blogs.liberation.fr/we/atom.xml : ne fonctionne pas "
  5423. #~ "chez l'utilisateur mais passe l'ensemble des validations ci-dessus "
  5424. #~ "(novembre 2014)"
  5425. #~ msgid "Problem to solve"
  5426. #~ msgstr "Problème à résoudre"
  5427. #~ msgid "Préparer la sortie"
  5428. #~ msgstr "Préparer la sortie"
  5429. #~ msgid "S'assurer de l'état de dev"
  5430. #~ msgstr "S'assurer de l'état de dev"
  5431. #~ msgid ""
  5432. #~ "Avant de sortir une nouvelle version de FreshRSS, il faut vous assurer "
  5433. #~ "que le code est stable et ne présente pas de bugs majeurs. Idéalement, il "
  5434. #~ "faudrait que nos tests soient automatisés et exécutés avant toute "
  5435. #~ "publication."
  5436. #~ msgstr ""
  5437. #~ "Avant de sortir une nouvelle version de FreshRSS, il faut vous assurer "
  5438. #~ "que le code est stable et ne présente pas de bugs majeurs. Idéalement, il "
  5439. #~ "faudrait que nos tests soient automatisés et exécutés avant toute "
  5440. #~ "publication."
  5441. #~ msgid ""
  5442. #~ "Il faut aussi **vous assurer que le fichier CHANGELOG est à jour** dans "
  5443. #~ "la branche de dev avec les mises à jour de la ou les version(s) à sortir."
  5444. #~ msgstr ""
  5445. #~ "Il faut aussi **vous assurer que le fichier CHANGELOG est à jour** dans "
  5446. #~ "la branche de dev avec les mises à jour de la ou les version(s) à sortir."
  5447. #~ msgid "Processus Git"
  5448. #~ msgstr "Processus Git"
  5449. #~ msgid "Écriture du script de mise à jour"
  5450. #~ msgstr "Écriture du script de mise à jour"
  5451. #~ msgid "Il existe ensuite 5 fonctions à remplir :"
  5452. #~ msgstr "Il existe ensuite 5 fonctions à remplir :"
  5453. #~ msgid ""
  5454. #~ "- `apply_update()` qui se charge de sauvegarder le répertoire contenant "
  5455. #~ "les données, de vérifier sa structure, de télécharger le package "
  5456. #~ "FreshRSS, de le déployer et de tout nettoyer. Cette fonction est pré-"
  5457. #~ "remplie mais des ajustements peuvent être faits si besoin est (ex. "
  5458. #~ "réorganisation de la structure de `./data`). Elle retourne `true` si "
  5459. #~ "aucun problème n'est survenu ou une chaîne de caractères indiquant un "
  5460. #~ "soucis ; - `need_info_update()` retourne `true` si l'utilisateur doit "
  5461. #~ "intervenir durant la mise à jour ou `false` sinon ; - `ask_info_update()` "
  5462. #~ "affiche un formulaire à l'utilisateur si `need_info_update()` a retourné "
  5463. #~ "`true` ; - `save_info_update()` est chargée de sauvegarder les "
  5464. #~ "informations renseignées par l'utilisateur (issues du formulaire de "
  5465. #~ "`ask_info_update()`) ; - `do_post_update()` est exécutée à la fin de la "
  5466. #~ "mise à jour et prend en compte le code de la nouvelle version (ex. si la "
  5467. #~ "nouvelle version modifie l'objet `Minz_Configuration`, vous bénéficierez "
  5468. #~ "de ces améliorations)."
  5469. #~ msgstr ""
  5470. #~ "- `apply_update()` qui se charge de sauvegarder le répertoire contenant "
  5471. #~ "les données, de vérifier sa structure, de télécharger le package "
  5472. #~ "FreshRSS, de le déployer et de tout nettoyer. Cette fonction est pré-"
  5473. #~ "remplie mais des ajustements peuvent être faits si besoin est (ex. "
  5474. #~ "réorganisation de la structure de `./data`). Elle retourne `true` si "
  5475. #~ "aucun problème n'est survenu ou une chaîne de caractères indiquant un "
  5476. #~ "soucis ; - `need_info_update()` retourne `true` si l'utilisateur doit "
  5477. #~ "intervenir durant la mise à jour ou `false` sinon ; - `ask_info_update()` "
  5478. #~ "affiche un formulaire à l'utilisateur si `need_info_update()` a retourné "
  5479. #~ "`true` ; - `save_info_update()` est chargée de sauvegarder les "
  5480. #~ "informations renseignées par l'utilisateur (issues du formulaire de "
  5481. #~ "`ask_info_update()`) ; - `do_post_update()` est exécutée à la fin de la "
  5482. #~ "mise à jour et prend en compte le code de la nouvelle version (ex. si la "
  5483. #~ "nouvelle version modifie l'objet `Minz_Configuration`, vous bénéficierez "
  5484. #~ "de ces améliorations)."
  5485. #~ msgid "Mise à jour du fichier de versions"
  5486. #~ msgstr "Mise à jour du fichier de versions"
  5487. #~ msgid ""
  5488. #~ "Lorsque le script a été écrit et versionné, il est nécessaire de mettre à "
  5489. #~ "jour le fichier `./versions.php` qui contient une table de "
  5490. #~ "correspondances indiquant quelles versions sont mises à jour vers quelles "
  5491. #~ "autres versions."
  5492. #~ msgstr ""
  5493. #~ "Lorsque le script a été écrit et versionné, il est nécessaire de mettre à "
  5494. #~ "jour le fichier `./versions.php` qui contient une table de "
  5495. #~ "correspondances indiquant quelles versions sont mises à jour vers quelles "
  5496. #~ "autres versions."
  5497. #~ msgid "Et voici comment fonctionne cette table :"
  5498. #~ msgstr "Et voici comment fonctionne cette table :"
  5499. #~ msgid ""
  5500. #~ "- à gauche se trouve la version N, à droite la version N+1 ; - les "
  5501. #~ "versions `x.y.z-dev` sont **toutes** mises à jour vers `dev` ; - les "
  5502. #~ "versions stables sont mises à jour vers des versions stables ; - il est "
  5503. #~ "possible de sauter plusieurs versions d'un coup à condition que les "
  5504. #~ "scripts de mise à jour le prennent en charge ; - il est conseillé "
  5505. #~ "d'indiquer la correspondance de la version courante vers sa potentielle "
  5506. #~ "future version en précisant que cette version n'existe pas encore. Tant "
  5507. #~ "que le script correspondant n'existera pas, rien ne se passera."
  5508. #~ msgstr ""
  5509. #~ "- à gauche se trouve la version N, à droite la version N+1 ; - les "
  5510. #~ "versions `x.y.z-dev` sont **toutes** mises à jour vers `dev` ; - les "
  5511. #~ "versions stables sont mises à jour vers des versions stables ; - il est "
  5512. #~ "possible de sauter plusieurs versions d'un coup à condition que les "
  5513. #~ "scripts de mise à jour le prennent en charge ; - il est conseillé "
  5514. #~ "d'indiquer la correspondance de la version courante vers sa potentielle "
  5515. #~ "future version en précisant que cette version n'existe pas encore. Tant "
  5516. #~ "que le script correspondant n'existera pas, rien ne se passera."
  5517. #~ msgid ""
  5518. #~ "Il est **très fortement** indiqué de garder ce fichier rangé selon les "
  5519. #~ "numéros de versions en séparant les versions stables et de dev."
  5520. #~ msgstr ""
  5521. #~ "Il est **très fortement** indiqué de garder ce fichier rangé selon les "
  5522. #~ "numéros de versions en séparant les versions stables et de dev."
  5523. #~ msgid ""
  5524. #~ "Lorsque vous serez satisfait, mettez à jour update.freshrss.org avec le "
  5525. #~ "nouveau script et en testant de nouveau puis passez à la suite."
  5526. #~ msgstr ""
  5527. #~ "Lorsque vous serez satisfait, mettez à jour update.freshrss.org avec le "
  5528. #~ "nouveau script et en testant de nouveau puis passez à la suite."
  5529. #~ msgid "Mise à jour des services FreshRSS"
  5530. #~ msgstr "Mise à jour des services FreshRSS"
  5531. #~ msgid ""
  5532. #~ "Deux services sont à mettre à jour immédiatement après la mise à jour de "
  5533. #~ "update.freshrss.org :"
  5534. #~ msgstr ""
  5535. #~ "Deux services sont à mettre à jour immédiatement après la mise à jour de "
  5536. #~ "update.freshrss.org :"
  5537. #~ msgid "Annoncer publiquement la sortie"
  5538. #~ msgstr "Annoncer publiquement la sortie"
  5539. #~ msgid ""
  5540. #~ "Lorsque tout fonctionne, il est temps d'annoncer la sortie au monde "
  5541. #~ "entier !"
  5542. #~ msgstr ""
  5543. #~ "Lorsque tout fonctionne, il est temps d'annoncer la sortie au monde "
  5544. #~ "entier !"
  5545. #~ msgid ""
  5546. #~ "- sur GitHub en créant [une nouvelle release](https://github.com/FreshRSS/"
  5547. #~ "FreshRSS/releases/new) ; - sur le blog de freshrss.org au minimum pour "
  5548. #~ "les versions stables (écrire l'article sur [FreshRSS/freshrss.org]"
  5549. #~ "(https://github.com/FreshRSS/freshrss.org)). - sur Twitter (compte "
  5550. #~ "[@FreshRSS](https://twitter.com/FreshRSS)) ; - et sur mailing@freshrss."
  5551. #~ "org ;"
  5552. #~ msgstr ""
  5553. #~ "- sur GitHub en créant [une nouvelle release](https://github.com/FreshRSS/"
  5554. #~ "FreshRSS/releases/new) ; - sur le blog de freshrss.org au minimum pour "
  5555. #~ "les versions stables (écrire l'article sur [FreshRSS/freshrss.org]"
  5556. #~ "(https://github.com/FreshRSS/freshrss.org)). - sur Twitter (compte "
  5557. #~ "[@FreshRSS](https://twitter.com/FreshRSS)) ; - et sur mailing@freshrss."
  5558. #~ "org ;"
  5559. #~ msgid "Lancer la prochaine version de développement"
  5560. #~ msgstr "Lancer la prochaine version de développement"
  5561. #~ msgid ""
  5562. #~ "Pensez aussi à mettre à jour update.freshrss.org pour qu'il prenne en "
  5563. #~ "compte la version de développement actuelle."
  5564. #~ msgstr ""
  5565. #~ "Pensez aussi à mettre à jour update.freshrss.org pour qu'il prenne en "
  5566. #~ "compte la version de développement actuelle."
  5567. #~ msgid "With brackets"
  5568. #~ msgstr "Le cas des parenthèses"
  5569. #~ msgid ""
  5570. #~ "- RSS and Atom aggregation - Mark article as favorite if you liked it or "
  5571. #~ "if you want to read it later - Filter and search functionality helps to "
  5572. #~ "easily find articles - Statistics to show you the publishing frequency "
  5573. #~ "all the websites you follow - Import/export of your feeds into OPML "
  5574. #~ "format - Several themes created by the community - \"Google Reader\"-like "
  5575. #~ "API to connect Android applications - The application is \"responsive,\" "
  5576. #~ "which means it adapts to small screens so you can bring articles in your "
  5577. #~ "pocket - Self-hosted: the code is free (under AGPL3 licence), so you can "
  5578. #~ "host your own instance of FreshRSS - Multi-user, so you can also host for "
  5579. #~ "your friends and family - And a lot more!"
  5580. #~ msgstr ""
  5581. #~ "- Agrégation des flux RSS et Atom.- Utilisez les favoris pour marquer les "
  5582. #~ "articles qui vous ont plu ou que vous souhaitez lire plus tard.- Le "
  5583. #~ "système de filtrage et de recherche permettent de cibler exactement les "
  5584. #~ "articles que vous souhaitez lire.- Les statistiques permettent de savoir "
  5585. #~ "en un coup d’œil quels sont les sites qui publient le plus, ou à "
  5586. #~ "l’inverse, le moins.- Importation / exportation des flux au format OPML.- "
  5587. #~ "Multi-thèmes pour changer l’habillage de FreshRSS.- « *Responsive design* "
  5588. #~ "» : l’application s’adapte aux petits écrans pour emporter FreshRSS dans "
  5589. #~ "votre poche.- Multi-utilisateurs pour héberger plusieurs personnes sur "
  5590. #~ "une même installation.- API Google Reader pour pouvoir y brancher des "
  5591. #~ "applications Android.- Auto-hébergeable : le code source est libre "
  5592. #~ "(AGPL3) et vous pouvez donc l’héberger sur votre propre serveur.- Et bien "
  5593. #~ "d’autres !"