freshrss.fr.po 233 KB

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