···77 "net/http"
88 "os"
99 "path/filepath"
1010- "sort"
1110 "strings"
1211 "time"
13121413 "github.com/PuerkitoBio/goquery"
1514 "github.com/a-h/templ"
1616- "github.com/chai2010/gettext-go/po"
1715 mapset "github.com/deckarep/golang-set"
1816 "github.com/ewen-lbh/portfolio/shared"
1917 "github.com/fatih/color"
1818+ "github.com/ortfo/gettext/po"
2019 "golang.org/x/net/html"
2020+ "golang.org/x/text/language"
2121)
22222323const TRANSLATABLE_MARKER_ATTRIBUTE = "i18n"
···2727// Translations holds both the gettext catalog from the .mo file
2828// and a po file object used to update the .po file (e.g. when discovering new translatable strings)
2929type Translations struct {
3030- poFile po.File
3030+ poFile *po.File
3131 seenMessages mapset.Set
3232 missingMessages []po.Message
3333 language string
···186186 for _, languageCode := range languages {
187187 translationsFilepath := fmt.Sprintf("i18n/%s.po", languageCode)
188188 poFile, err := po.LoadFile(translationsFilepath)
189189+ poFile.SetSourceLanguage(language.English)
189190 if err != nil {
190191 if os.IsNotExist(err) {
191192 color.Yellow("[%s] Missing translation file for %s", languageCode, err)
···199200 }
200201 } else {
201202 translations[languageCode] = &Translations{
202202- poFile: *poFile,
203203+ poFile: poFile,
203204 seenMessages: mapset.NewSet(),
204205 missingMessages: make([]po.Message, 0),
205206 language: languageCode,
···289290 dedupedMessages = append(dedupedMessages, msg)
290291 }
291292 }
292292- t.poFile.Messages = dedupedMessages
293293 // Sort them to guarantee a stable write
294294- sort.Sort(ByMsgIdAndCtx(t.poFile.Messages))
294294+ t.poFile.Messages = dedupedMessages
295295 t.poFile.Save(t.PoFilePath())
296296-}
297297-298298-// ByMsgIdAndCtx implement sorting gettext messages by their msgid+msgctxt
299299-type ByMsgIdAndCtx []po.Message
300300-301301-func (b ByMsgIdAndCtx) Len() int {
302302- return len(b)
303303-}
304304-305305-func (b ByMsgIdAndCtx) Less(i, j int) bool {
306306- return b[i].MsgId < b[j].MsgId || (b[i].MsgId == b[j].MsgId && b[i].MsgContext < b[j].MsgContext)
307307-}
308308-309309-func (b ByMsgIdAndCtx) Swap(i, j int) {
310310- b[i], b[j] = b[j], b[i]
311296}
312297313298// GetTranslation returns the msgstr corresponding to msgid and msgctxt from the .po file
+35-35
i18n/fr-unused-messages.yaml
···11-# Generated at 2023-12-24 15:16:17.424568197 +0100 CET m=+0.334085318
11+# Generated at 2023-12-24 18:31:48.393082265 +0100 CET m=+0.359160195
22- "%s’s logo"
33- "%v-day streak on Duolingo, %v league"
44- "1104<sup>th</sup>"
···1414- "A radical new approach to building user interfaces. Whereas traditional frameworks like React and Vue do the bulk of their work in the browser, Svelte shifts that work into a compile step that happens when the app is built"
1515- "A set of brand resources like logos and banners that make up a brand’s visal identity"
1616- "A simple cross-platform library to create graphical user interfaces in <a href=\"/using/go\">Go</a> that work on Android, iOS, Linux, MacOS and Windows."
1717-- "Application Programming Interfaces, mostly <em>Web</em> APIs, meaning machine-redable sites that allow data processing and interaction without going to the client-facing website"
1818-- "Audiovisual & transmedia production company"
1919-- "Back home"
2020-- "Close"
2121-- "Computer science"
2222-- "Design and coded by hand"
2323-- "Designed and coded by hand"
2424-- "Digital audiovisual agency"
2525-- "Engineering consulting firm"
2626-- "Get a one-page PDF resume"
2727-- "Graphic designer & printer"
2828-- "Hi! I'm Ewen Le Bihan. I'm interested in almost anything that is both creative and digital."
2929-- "Hi, I'm Ewen Le Bihan."
3030-- "I also make electronic music."
3131-- "INP-ENSEEIHT (“École nationale supérieure d'électrotechnique, d'électronique, d'informatique, d'hydraulique et des télécommunication”), a top-ranking engineering graduate school based in Toulouse, France."
3232-- "If this doesn't work, you can <a href=\"%s\">go to %s</a> by clicking here"
3333-- "If this doesn't work, you can <a href=\"https://github.com/users/ewen-lbh/projects/2\">go to it by clicking here</a>"
3434-- "Internship @"
3535-- "I’ve been experimenting with sounds, their textures and their musicality since I was 7 years old."
3636-- "Made with <3 by Ewen Le Bihan"
3737-- "Mathematics & Physics"
3838-- "More..."
3939-- "My ranks at entrance exams"
4040-- "Native"
4141-- "Proudly\n <strong>\n not\n </strong>\n powered by Wordpress"
4242-- "Proudly <strong>not</strong> powered by Wordpress"
4343-- "Redirecting you to %s..."
4444-- "Redirecting you to my github incubator..."
4545-- "Server error. I f*cked up somewhere."
4646-- "This page does not exist (anymore)"
4747-- "Unknown error"
4848-- "Unknown year"
4949-- "Works"
5017- "about"
5118- "about me"
5219- "all"
5320- "also my music"
2121+- "Application Programming Interfaces, mostly <em>Web</em> APIs, meaning machine-redable sites that allow data processing and interaction without going to the client-facing website"
5422- "arts"
2323+- "Audiovisual & transmedia production company"
2424+- "Back home"
5525- "banner"
5626- "beautiful OFL typeface"
5727- "blog"
5828- {msgid: "browse works by...", msgctxt: "On homepage, as a section header for indexes"}
5929- "by"
6030- "card"
3131+- "Close"
6132- "collections"
3333+- "Computer science"
6234- "contact me"
6335- "cover art"
3636+- "Design and coded by hand"
3737+- "Designed and coded by hand"
3838+- "Digital audiovisual agency"
6439- "education"
6540- "efficient and comfortable programming language"
6641- "en français"
4242+- "Engineering consulting firm"
6743- "experience"
6844- "fine"
6945- "footnotes"
7046- "game"
4747+- "Get a one-page PDF resume"
4848+- "Graphic designer & printer"
4949+- "Hi, I'm Ewen Le Bihan."
5050+- "Hi! I'm Ewen Le Bihan. I'm interested in almost anything that is both creative and digital."
5151+- "hours\u00a0of use"
7152- "hours spent on this"
7272-- "hours\u00a0of use"
5353+- "I also make electronic music."
5454+- "I’ve been experimenting with sounds, their textures and their musicality since I was 7 years old."
7355- "iconography"
5656+- "If this doesn't work, you can <a href=\"%s\">go to %s</a> by clicking here"
5757+- "If this doesn't work, you can <a href=\"https://github.com/users/ewen-lbh/projects/2\">go to it by clicking here</a>"
5858+- "INP-ENSEEIHT (“École nationale supérieure d'électrotechnique, d'électronique, d'informatique, d'hydraulique et des télécommunication”), a top-ranking engineering graduate school based in Toulouse, France."
5959+- "Internship @"
7460- "intro"
7561- "latest release"
7662- "learn more"
7763- "loading image in full resolution…"
7864- "logo"
7965- "made with"
6666+- "Made with <3 by Ewen Le Bihan"
6767+- "Mathematics & Physics"
6868+- "More..."
8069- "most recent one"
8170- "music+visual"
7171+- "My ranks at entrance exams"
7272+- "Native"
8273- "others"
8374- "past releases"
8475- "programming<p class=\"inline\" i18n=\"\">work time tracked by <a href=\"https://wakatime.com\">WakaTime</a></p>"
8576- "project"
8677- "projects"
7878+- "Proudly\n <strong>\n not\n </strong>\n powered by Wordpress"
7979+- "Proudly <strong>not</strong> powered by Wordpress"
8780- "read more"
8181+- "Redirecting you to %s..."
8282+- "Redirecting you to my github incubator..."
8883- "results"
8984- "send a mail at"
8585+- "Server error. I f*cked up somewhere."
9086- "site"
9187- "skills"
9288- "slide into my dms at"
···9793- {msgid: "technologies used", msgctxt: "Link to /using on homepage"}
9894- "thanks"
9995- "the software, frameworks, libraries, materials and services I used to make this"
9696+- "This page does not exist (anymore)"
10097- "this site is not finished yet. Not all works have been added, and some pages are rough around the edges."
10198- "this work is part of the following collection"
10299- "thumbnail"
100100+- "Unknown error"
101101+- "Unknown year"
103102- "what"
104103- "work in progress"
105104- "work time tracked by <a href=\"https://wakatime.com\">WakaTime</a>"
105105+- "Works"
106106- "works by tag"
107107- "works made with"
108108- "works made with %s"
+290-287
i18n/fr.po
···1212"Content-Transfer-Encoding: 8bit\n"
1313"X-Generator: Poedit 3.4.1\n"
14141515-msgid "Search"
1616-msgstr "Rechercher"
1515+msgid "“Syntactically Awesome Style Sheets”—A mature, stable, and powerful professional grade CSS extension language."
1616+msgstr "“Syntactically Awesome Style Sheets”—Une extension puissante, stable et professionelle du langage CSS."
17171818msgid "%s’s logo"
1919msgstr "Logo de %s"
20202121msgid "%v-day streak on Duolingo, %v league"
2222msgstr "streak de %v jours sur Duolingo, ligue %v"
2323+2424+msgid "↖ Back to the text"
2525+msgstr "↖ Retour au texte"
23262427msgid "1104<sup>th</sup>"
2528msgstr "1104<sup>e</sup>"
···32353336msgid "2022—now"
3437msgstr "2022—maintenant"
3535-3636-msgid "A <a href=\"https://svelte.dev\">Svelte</a>-powered framework for building web applications of all sizes, with a beautiful development experience and flexible filesystem-based routing"
3737-msgstr "Un framework basé sur <a href=\"https://svelte.dev\">Svelte</a> pour la construction d'applications web de toutes tailles, avec une belle expérience de développement et un routage flexible basé sur le système de fichiers"
38383939msgid "A <a href='https://svelte.dev'>Svelte</a>-powered framework for building web applications of all sizes, with a beautiful development experience and flexible filesystem-based routing"
4040msgstr "Un framework alimenté par <a href='https://svelte.dev'>Svelte</a> pour construire des applications web de toutes tailles, avec une belle expérience de développement et un routage flexible basé sur le système de fichiers."
41414242-msgid "A PHP Model-View-Controller framework"
4343-msgstr "Un framework PHP Modèle-Vue-Contrôleur"
4242+msgid "A <a href=\"https://svelte.dev\">Svelte</a>-powered framework for building web applications of all sizes, with a beautiful development experience and flexible filesystem-based routing"
4343+msgstr "Un framework basé sur <a href=\"https://svelte.dev\">Svelte</a> pour la construction d'applications web de toutes tailles, avec une belle expérience de développement et un routage flexible basé sur le système de fichiers"
44444545msgid "A bundler for javascript and friends. Packs many modules into a few bundled assets."
4646msgstr "Un bundler pour javascript et autres. Regroupe de nombreux modules en quelques fichiers groupés."
···6666msgid "A graphism technique that involves the composition of multiple images into a single, cohesive one"
6767msgstr "Une technique de graphisme qui implique la composition de plusieurs images en un ensemble cohérent"
68686969+msgid "A high-level programming language that enables interactive web pages"
7070+msgstr "Un langage de programmation de haut niveau qui permet l'intéractivité de pages web"
7171+6972msgid "A high-level Python Web framework that encourages rapid development and clean, pragmatic design"
7073msgstr "Un framework Web Python de haut niveau qui encourage un développement rapide et une conception propre et pragmatique"
71747272-msgid "A high-level programming language that enables interactive web pages"
7373-msgstr "Un langage de programmation de haut niveau qui permet l'intéractivité de pages web"
7575+msgid "A high-performance template engine heavily influenced by <a href='https://haml.info/'>Haml</a> and implemented with JavaScript for Node.js and browsers."
7676+msgstr "Un moteur de template haute performance fortement influencé par <a href='https://haml.info/'>Haml</a> et implémenté avec JavaScript pour Node.js et les navigateurs."
74777578msgid "A high-performance template engine heavily influenced by <a href=\"https://haml.info/\">Haml</a> and implemented with JavaScript for Node.js and browsers."
7679msgstr "Un moteur de template haute performance fortement influencé par <a href=\"https://haml.info\"/>Haml</a> et implémenté avec JavaScript pour Node.js et les navigateurs."
7777-7878-msgid "A high-performance template engine heavily influenced by <a href='https://haml.info/'>Haml</a> and implemented with JavaScript for Node.js and browsers."
7979-msgstr "Un moteur de template haute performance fortement influencé par <a href='https://haml.info/'>Haml</a> et implémenté avec JavaScript pour Node.js et les navigateurs."
80808181msgid "A high-quality typesetting & document preparation system"
8282msgstr "Un système de composition et de préparation des documents de haute qualité"
···9090msgid "A language for generating UML diagrams from textual descriptions"
9191msgstr "Un langage permettant de générer des diagrammes UML à partir de descriptions textuelles"
92929393-msgid "A simple cross-platform library to create graphical user interfaces in [Go](/using/go) that work on Android, iOS, Linux, MacOS and Windows."
9494-msgstr "Une bibliothèque multiplateforme simple pour créer des interfaces graphiques en [Go](/using/go) qui fonctionnent sur Android, iOS, Linux, MacOS et Windows."
9595-9696-msgid "A strongly typed, safe programming language"
9797-msgstr "Un langage de programmation sûr et fortement typé"
9898-9999-msgid "Application Programming Interfaces, mostly _Web_ APIs, meaning machine-redable sites that allow data processing and interaction without going to the client-facing website"
100100-msgstr "Interfaces de programmation d'applications, principalement des API _Web_, c'est-à-dire des sites accessibles aux machines qui permettent le traitement des données et l'interaction sans passer par le site web orienté vers le client."
101101-102102-msgid "Get my resume"
103103-msgstr "Voir mon CV"
104104-10593msgid "A language which compiles to JavaScript that adds many features to assist in functional style programming. LiveScript is an indirect descendant of CoffeeScript, with which it has much compatibility."
10694msgstr "Un langage qui se compile en JavaScript et qui ajoute de nombreuses fonctionnalités pour aider à la programmation de style fonctionnel. LiveScript est un descendant indirect de CoffeeScript, avec lequel il a une grande compatibilité."
1079510896msgid "A library that parses command-line arguments based on a help message. “Don't write parser code: a good help message already has all the necessary information in it”"
10997msgstr "Une bibliothèque qui analyse les arguments de la ligne de commande sur la base d'un message d'aide. \"N'écrivez pas de code pour parser vos arguments : un bon message d'aide contient déjà toutes les informations nécessaires\"."
11098111111-msgid "Computer science"
112112-msgstr "Sciences du numérique"
113113-11499msgid "A library that parses command-line arguments based on a help message. “Don’t write parser code: a good help message already has all the necessary information in it”"
115100msgstr "Une bibliothèque qui analyse les arguments de ligne de commande en fonction d'un message d'aide. « Ne pas écrire de code d'analyse : un bon message d'aide contient déjà toutes les informations nécessaires »"
116101···131116132117msgid "A modern parsing library for Python. Lark can parse any context-free grammar"
133118msgstr "Une bibliothèque d'analyse syntaxique pour Python. Lark peut analyser n'importe quel langage non contextuel (langage algébrique)"
119119+120120+msgid "A PHP Model-View-Controller framework"
121121+msgstr "Un framework PHP Modèle-Vue-Contrôleur"
134122135123msgid "A popular general-purpose scripting language that is especially suited to web development"
136124msgstr "Un langage de script polyvalent et populaire, particulièrement adapté au développement web"
···156144msgid "A radical new approach to building user interfaces. Whereas traditional frameworks like React and Vue do the bulk of their work in the browser, Svelte shifts that work into a compile step that happens when the app is built"
157145msgstr "Une approche radicalement nouvelle de la construction d'interfaces utilisateurs. Alors que les frameworks traditionnels comme React et Vue font l'essentiel de leur travail dans le navigateur, Svelte transforme ce travail en une étape de compilation qui se produit lors de la création de l'application"
158146159159-msgid "Hi! I'm Ewen Le Bihan."
160160-msgstr "Hey! Je suis Ewen Le Bihan."
161161-162162-msgid "I'm interested in almost anything that is both creative and digital."
163163-msgstr "Je suis intéressé par tout ce qui est à la fois créatif et numérique."
164164-165165-msgid "Proudly powered by <a href=\"https://github.com/ortfo\">ortfo</a>, my portfolio database management system and <a href=\"https://github.com/a-h/templ\">templ</a>"
166166-msgstr "Fièrement propulsé par <a href=\"https://github.com/ortfo\">ortfo</a>, mon système de gestion de base de données pour les portfolios et <a href=\"https://github.com/a-h/templ\">templ</a>"
167167-168168-msgid "Source code"
169169-msgstr "Code source"
170170-171171-msgid "Un système de génération de portfolios faits maison."
172172-msgstr "Un système de génération de portfolios faits maison."
173173-174174-msgid "Works"
175175-msgstr "Œuvres"
176176-177177-msgid "command line"
178178-msgstr "terminal"
179179-180180-msgid "personal account"
181181-msgstr "compte personnel"
182182-183183-msgid "web extension"
184184-msgstr "extension pour navigateur"
185185-186147msgid "A radical new approach to building user interfaces. Whereas traditional frameworks like React and Vue do the bulk of their work in the browser, Svelte shifts that work into a compile step that happens when you build your app."
187148msgstr "Une approche radicale pour la création d'interfaces utilisateur. Alors que les frameworks traditionnels tels que React et Vue effectuent la majeure partie de leur travail dans le navigateur, Svelte déplace ce travail dans une étape de compilation qui se produit lors de la création de l'application."
188149···198159msgid "A set of brand resources like logos and banners that make up a brand’s visal identity"
199160msgstr "Un ensemble de ressources telles que des logos et des bannières qui constituent l'identité visuelle d'une marque"
200161162162+msgid "A simple cross-platform library to create graphical user interfaces in [Go](/using/go) that work on Android, iOS, Linux, MacOS and Windows."
163163+msgstr "Une bibliothèque multiplateforme simple pour créer des interfaces graphiques en [Go](/using/go) qui fonctionnent sur Android, iOS, Linux, MacOS et Windows."
164164+201165msgid "A simple cross-platform library to create graphical user interfaces in <a href=\"/using/go\">Go</a> that work on Android, iOS, Linux, MacOS and Windows."
202166msgstr "Une bibliothèque simple et multiplateforme pour créer des interfaces graphiques en <a href=\"/using/go\">Go</a> qui fonctionnent sur Android, iOS, Linux, MacOS et Windows."
203167···207171msgid "A statically typed compiled systems programming language. It combines successful concepts from mature languages like Python, Ada and Modula."
208172msgstr "Langage de programmation de systèmes compilés, typés statiquement. Il combine des concepts à succès de langages matures comme Python, Ada et Modula."
209173174174+msgid "A strongly typed, safe programming language"
175175+msgstr "Un langage de programmation sûr et fortement typé"
176176+210177msgid "A stylesheet language used to describe the presentation of a document written in HTML or XML"
211178msgstr "Un langage de feuille de style utilisé pour décrire la présentation d'un document écrit en HTML ou XML"
212179···222189msgid "A vector graphics editor and design program"
223190msgstr "Un éditeur de graphiques vectoriels et un programme de design"
224191192192+msgid "a web server that can also be used as a reverse proxy, load balancer, mail proxy and HTTP cache"
193193+msgstr "un serveur web qui peut aussi être utilisé comme un proxy inverse, un répartiteur de charge, un proxy de courrier et un cache HTTP"
194194+225195msgid "A web-application framework that includes everything needed to create database-backed web applications according to the Model-View-Controller (MVC) pattern"
226196msgstr "Un framework d'application web qui inclut tout ce qui est nécessaire pour créer des applications web basées sur une base de données selon le motif MVC"
227197198198+msgid "about"
199199+msgstr "à propos"
200200+201201+msgid "about me"
202202+msgstr "à propos"
203203+204204+msgid "abstract"
205205+msgstr "asbtrait"
206206+207207+msgid "all"
208208+msgstr "tout"
209209+210210+msgid "also my music"
211211+msgstr "ma musique également"
212212+228213msgid "An advanced open source relational database"
229214msgstr "Une base de données relationnelle open source avancée"
230215···243228msgid "An straightforward low-level open source programming language supported by Google featuring built-in concurrency and a robust standard library"
244229msgstr "Un langage de programmation open source supporté par Google, comprenant une concurrence intégrée et une bibliothèque standard robuste"
245230231231+msgid "an XML-based vector image format for defining two-dimensional graphics, having support for interactivity and animation. The SVG specification is an open standard developed by the World Wide Web Consortium since 1999"
232232+msgstr "un format d'image vectorielle basé sur XML pour définir des graphiques bidimensionnels, ayant un support pour l'interactivité et l'animation. La spécification SVG est un standard ouvert développé par le World Wide Web Consortium depuis 1999"
233233+246234msgid "Any piece of work related to languages (programming languages or natural languages)"
247235msgstr "Projets liés au langage (langages de programmation ou langages naturels)"
248236249237msgid "Any piece of work that involves programming, such as libraries, programs, scripts, et cætera."
250238msgstr "Toute œuvre qui implique de la programmation, telles que des bibliothèques, des programmes, des scripts, etc."
251239252252-msgid "Application Programming Interfaces, mostly <em>Web</em> APIs, meaning machine-redable sites that allow data processing and interaction without going to the client-facing website"
253253-msgstr "Interfaces de programmation d'application, principalement des <em>Web</em> APIs, signifiant des sites lisibles par machine qui permettent le traitement et l'interaction sans avoir à visiter le site web conçu pour les utilisateurs"
254254-255255-msgid "Audiovisual & transmedia production company"
256256-msgstr "Companie de production audiovisuelle et transmédia"
257257-258258-msgid "Back home"
259259-msgstr "Retour à l'accueil"
260260-261261-msgid "Close"
262262-msgstr "Fermer"
263263-264264-msgid "Design and coded by hand"
265265-msgstr "Site web fait maison"
266266-267267-msgid "Designed and coded by hand"
268268-msgstr "Site web fait maison"
269269-270270-msgid "Digital audiovisual agency"
271271-msgstr "Agence audiovisuelle numérique"
272272-273273-msgid "Engineering consulting firm"
274274-msgstr "Société de conseil en ingénierie"
275275-276276-msgid "Expressive, robust, feature-rich CSS language built for nodejs"
277277-msgstr "Langage CSS expressif, robuste, riche en fonctionnalités pour nodejs"
278278-279279-msgid "Extensions or add-ons that add features to web browsers"
280280-msgstr "Extensions ou add-ons qui ajoutent des fonctionnalités à un navigateurs web"
240240+msgid "apis"
241241+msgstr "APIs"
281242282282-msgid "Free and open-source digital painting software"
283283-msgstr "Logiciel de peinture numérique gratuit et open source"
243243+msgid "app"
244244+msgstr "application"
284245285285-msgid "Get a one-page PDF resume"
286286-msgstr "CV monopage en PDF"
246246+msgid "Application Programming Interfaces, mostly _Web_ APIs, meaning machine-redable sites that allow data processing and interaction without going to the client-facing website"
247247+msgstr "Interfaces de programmation d'applications, principalement des API _Web_, c'est-à-dire des sites accessibles aux machines qui permettent le traitement des données et l'interaction sans passer par le site web orienté vers le client."
287248288288-msgid "Graphic designer & printer"
289289-msgstr "Graphiste & imprimeur"
249249+msgid "Application Programming Interfaces, mostly <em>Web</em> APIs, meaning machine-redable sites that allow data processing and interaction without going to the client-facing website"
250250+msgstr "Interfaces de programmation d'application, principalement des <em>Web</em> APIs, signifiant des sites lisibles par machine qui permettent le traitement et l'interaction sans avoir à visiter le site web conçu pour les utilisateurs"
290251291291-msgid "Hi! I'm Ewen Le Bihan. I'm interested in almost anything that is both creative and digital."
292292-msgstr "Hey! Je suis Ewen Le Bihan. Je suis intéressé par presque tout ce qui est à la fois créatif et digital."
293293-294294-msgid "Hi, I'm Ewen Le Bihan."
295295-msgstr "Hey, je suis Ewen Le Bihan."
296296-297297-msgid "I also make electronic music."
298298-msgstr "Je crée aussi de la musique."
299299-300300-msgid "INP-ENSEEIHT (“École nationale supérieure d'électrotechnique, d'électronique, d'informatique, d'hydraulique et des télécommunication”), a top-ranking engineering graduate school based in Toulouse, France."
301301-msgstr "INP-ENSEEIHT (« École nationale supérieure d'électrotechnique, d'électronique, d'informatique, d'hydraulique et des télécommunication »), une école d'ingénieurs de premier plan basée à Toulouse."
302302-303303-msgid "If this doesn't work, you can <a href=\"%s\">go to %s</a> by clicking here"
304304-msgstr "Si cela ne fonctionne pas, vous pouvez <a href=\"%s\">allez sur %s</a> en cliquant ici"
305305-306306-msgid "If this doesn't work, you can <a href=\"https://github.com/users/ewen-lbh/projects/2\">go to it by clicking here</a>"
307307-msgstr "Si cela ne fonctionne pas, vous pouvez <a href=\"https://github.com/users/ewen-lbh/projects/2\">y aller en cliquant ici</a>"
308308-309309-msgid "Images that represent a media, such as a video, in a single glance. Might be shown at a small size."
310310-msgstr "Images qui représentent un média, tel qu'une vidéo, d'un seul coup d'œil. Peut être affiché à petite taille."
311311-312312-msgid "Internship @"
313313-msgstr "Stage à"
314314-315315-msgid "I’ve been experimenting with sounds, their textures and their musicality since I was 7 years old."
316316-msgstr "J'expérimente les sons, leurs textures et leur musicalité depuis que j'ai 7 ans."
317317-318318-msgid "Learn more"
319319-msgstr "En savoir plus"
320320-321321-msgid "Made with <3 by Ewen Le Bihan"
322322-msgstr "Fait avec <3 par Ewen Le Bihan"
323323-324324-msgid "Made with the intent to discover, not necessarily to be useful or aesthetic."
325325-msgstr "Réalisé dans le but de découvrir sans contrainte d'utilité ou d'esthétique."
326326-327327-msgid "Mathematics & Physics"
328328-msgstr "Mathématiques & Physique"
329329-330330-msgid "More..."
331331-msgstr "Plus..."
332332-333333-msgid "Music covers for albums, EPs and singles"
334334-msgstr "Pochettes pour albums, EPs et singles"
335335-336336-msgid "My ranks at entrance exams"
337337-msgstr "Mon classement aux concours d'entrée"
338338-339339-msgid "Native"
340340-msgstr "Natif"
341341-342342-msgid "Open Source design and prototyping platform meant for cross-domain teams. Non dependent on operating systems, Penpot is web based and works with open web standards (SVG)."
343343-msgstr "Plateforme de conception et prototypage open source visant des équipes multi-domaines. Non dépendante des systèmes d'exploitation, Penpot est un logiciel web et fonctionne avec les standards web ouverts (SVG)."
344344-345345-msgid "Programs that run in the terminal, a text-based interface for computers."
346346-msgstr "Programmes qui s'exécutent dans une console, une interface de texte pour les ordinateurs."
347347-348348-msgid "Proudly\n"
349349-" <strong>\n"
350350-" not\n"
351351-" </strong>\n"
352352-" powered by Wordpress"
353353-msgstr "Fièrement\n"
354354-" <strong>\n"
355355-" non\n"
356356-" </strong>\n"
357357-" propulsé par Wordpress"
358358-359359-msgid "Proudly <strong>not</strong> powered by Wordpress"
360360-msgstr "Fièrement <strong>non</strong> propulsé par Wordpress"
361361-362362-msgid "Redirecting you to %s..."
363363-msgstr "Redirection vers %s..."
364364-365365-msgid "Redirecting you to my github incubator..."
366366-msgstr "Redirection vers mon incubateur github..."
367367-368368-msgid "School projects and school-related projects"
369369-msgstr "Projets scolaires et projets liés à l'école"
370370-371371-msgid "Server error. I f*cked up somewhere."
372372-msgstr "Erreur serveur. J'ai foiré quelque part."
373373-374374-msgid "Set of glyphs (letters, punctuation marks and more) that define how text looks."
375375-msgstr "Ensemble de glyphes (lettres, signes de ponctuation et plus encore) qui définissent l'apparence du texte."
376376-377377-msgid "Short introductory video sequences typically played at the beginning of every video"
378378-msgstr "Séquences vidéo introducientrières courtes qui sont typiquement jouées au début de chaque vidéo"
379379-380380-msgid "The Intuitive Vue Framework"
381381-msgstr "Le Framework Vue Intuitif"
382382-383383-msgid "The progressive JavaScript framework"
384384-msgstr "Un framework JavaScript progressif"
385385-386386-msgid "The standard markup language for documents designed to be displayed in a web browser"
387387-msgstr "Le langage de balisage standard conçu pour représenter des pages web"
388388-389389-msgid "The study of language"
390390-msgstr "L'étude du langage"
252252+msgid "apps"
253253+msgstr "applications"
391254392255msgid "arts"
393256msgstr "arts"
394257395395-msgid "education"
396396-msgstr "éducation"
397397-398398-msgid "These are my creations."
399399-msgstr "Voici mes créations."
400400-401401-msgid "This page does not exist (anymore)"
402402-msgstr "Cette page n'existe pas"
403403-404404-msgid "Unknown error"
405405-msgstr "Erreur inconnue"
406406-407407-msgid "Unknown year"
408408-msgstr "Année inconnue"
409409-410410-msgid "User interfaces that utilize graphical elements such as icons, and images."
411411-msgstr "Intefaces utilisateur qui utilisent des éléments graphiques tels que des icônes et des images."
412412-413413-msgid "Web sites, web apps and web-related libraries"
414414-msgstr "Sites web, applications web et bibliothèques liées au web"
415415-416416-msgid "With a scientific side"
417417-msgstr "Avec un côté scientifique"
418418-419419-msgid "experience"
420420-msgstr "expérience"
421421-422422-msgid "a web server that can also be used as a reverse proxy, load balancer, mail proxy and HTTP cache"
423423-msgstr "un serveur web qui peut aussi être utilisé comme un proxy inverse, un répartiteur de charge, un proxy de courrier et un cache HTTP"
424424-425425-msgid "about"
426426-msgstr "à propos"
427427-428428-msgid "about me"
429429-msgstr "à propos"
430430-431431-msgid "abstract"
432432-msgstr "asbtrait"
433433-434434-msgid "all"
435435-msgstr "tout"
436436-437437-msgid "also my music"
438438-msgstr "ma musique également"
439439-440440-msgid "an XML-based vector image format for defining two-dimensional graphics, having support for interactivity and animation. The SVG specification is an open standard developed by the World Wide Web Consortium since 1999"
441441-msgstr "un format d'image vectorielle basé sur XML pour définir des graphiques bidimensionnels, ayant un support pour l'interactivité et l'animation. La spécification SVG est un standard ouvert développé par le World Wide Web Consortium depuis 1999"
442442-443443-msgid "apis"
444444-msgstr "APIs"
445445-446446-msgid "hours of use"
447447-msgstr "heures d'utilisation"
448448-449449-msgid "app"
450450-msgstr "application"
451451-452452-msgid "apps"
453453-msgstr "applications"
258258+msgid "Audiovisual & transmedia production company"
259259+msgstr "Companie de production audiovisuelle et transmédia"
454260455261msgid "automation"
456262msgstr "automatisation"
263263+264264+msgid "Back home"
265265+msgstr "Retour à l'accueil"
457266458267msgid "banner"
459268msgstr "bannière"
···470279msgid "books"
471280msgstr "livres"
472281282282+msgctxt "On homepage, as a section header for indexes"
283283+msgid "browse works by..."
284284+msgstr "projets par..."
285285+473286msgid "by"
474287msgstr "par"
475288···481294482295msgid "cli"
483296msgstr "cli"
297297+298298+msgid "Close"
299299+msgstr "Fermer"
484300485301msgid "collections"
486302msgstr "collections"
487303304304+msgid "command line"
305305+msgstr "terminal"
306306+488307msgid "command-line"
489308msgstr "terminal"
490309491310msgid "compositing"
492311msgstr "compositing"
493312313313+msgid "Computer science"
314314+msgstr "Sciences du numérique"
315315+494316msgid "contact"
495317msgstr "contact"
496318···503325msgid "cover arts"
504326msgstr "pochettes"
505327328328+msgid "Design and coded by hand"
329329+msgstr "Site web fait maison"
330330+331331+msgid "Designed and coded by hand"
332332+msgstr "Site web fait maison"
333333+334334+msgid "Digital audiovisual agency"
335335+msgstr "Agence audiovisuelle numérique"
336336+506337msgid "drawing"
507338msgstr "dessin"
508339509340msgid "drawings"
510341msgstr "dessins"
342342+343343+msgid "education"
344344+msgstr "éducation"
511345512346msgid "efficient and comfortable programming language"
513347msgstr "langage de programmation efficient et confortable"
···515349msgid "en français"
516350msgstr "in english"
517351352352+msgid "Engineering consulting firm"
353353+msgstr "Société de conseil en ingénierie"
354354+355355+msgid "experience"
356356+msgstr "expérience"
357357+518358msgid "experiment"
519359msgstr "expérience"
520360···524364msgid "experiments"
525365msgstr "expériences"
526366367367+msgid "Expressive, robust, feature-rich CSS language built for nodejs"
368368+msgstr "Langage CSS expressif, robuste, riche en fonctionnalités pour nodejs"
369369+370370+msgid "Extensions or add-ons that add features to web browsers"
371371+msgstr "Extensions ou add-ons qui ajoutent des fonctionnalités à un navigateurs web"
372372+527373msgid "fine"
528374msgstr "c'est pas grave"
529375···536382msgid "footnotes"
537383msgstr "notes de bas de page"
538384385385+msgid "Free and open-source digital painting software"
386386+msgstr "Logiciel de peinture numérique gratuit et open source"
387387+539388msgid "game"
540389msgstr "jeu"
541390542391msgid "games"
543392msgstr "jeux"
544393394394+msgid "Get a one-page PDF resume"
395395+msgstr "CV monopage en PDF"
396396+397397+msgid "Get my resume"
398398+msgstr "Voir mon CV"
399399+400400+msgid "Go back"
401401+msgstr "Retour"
402402+403403+msgid "Graphic designer & printer"
404404+msgstr "Graphiste & imprimeur"
405405+545406msgid "graphism"
546407msgstr "graphisme"
547408···551412msgid "hardware"
552413msgstr "matériel informatique"
553414415415+msgid "Hi, I'm Ewen Le Bihan."
416416+msgstr "Hey, je suis Ewen Le Bihan."
417417+418418+msgid "Hi! I'm Ewen Le Bihan."
419419+msgstr "Hey! Je suis Ewen Le Bihan."
420420+421421+msgid "Hi! I'm Ewen Le Bihan. I'm interested in almost anything that is both creative and digital."
422422+msgstr "Hey! Je suis Ewen Le Bihan. Je suis intéressé par presque tout ce qui est à la fois créatif et digital."
423423+424424+msgid "hours of use"
425425+msgstr "heures d'utilisation"
426426+554427msgid "hours spent on this"
555428msgstr "heures passées là-dessus"
556429430430+msgid "I also make electronic music."
431431+msgstr "Je crée aussi de la musique."
432432+557433msgid "i can work for you"
558434msgstr "je peux travailler pour vous"
559435436436+msgid "I'm interested in almost anything that is both creative and digital."
437437+msgstr "Je suis intéressé par tout ce qui est à la fois créatif et numérique."
438438+439439+msgid "I’ve been experimenting with sounds, their textures and their musicality since I was 7 years old."
440440+msgstr "J'expérimente les sons, leurs textures et leur musicalité depuis que j'ai 7 ans."
441441+560442msgid "iconography"
561443msgstr "icônes"
562444563445msgid "icons"
564446msgstr "icônes"
565447448448+msgid "If this doesn't work, you can <a href=\"%s\">go to %s</a> by clicking here"
449449+msgstr "Si cela ne fonctionne pas, vous pouvez <a href=\"%s\">allez sur %s</a> en cliquant ici"
450450+451451+msgid "If this doesn't work, you can <a href=\"https://github.com/users/ewen-lbh/projects/2\">go to it by clicking here</a>"
452452+msgstr "Si cela ne fonctionne pas, vous pouvez <a href=\"https://github.com/users/ewen-lbh/projects/2\">y aller en cliquant ici</a>"
453453+566454msgid "illustration"
567455msgstr "illustration"
568456569457msgid "illustrations"
570458msgstr "illustrations"
571459460460+msgid "Images that represent a media, such as a video, in a single glance. Might be shown at a small size."
461461+msgstr "Images qui représentent un média, tel qu'une vidéo, d'un seul coup d'œil. Peut être affiché à petite taille."
462462+463463+msgid "INP-ENSEEIHT (“École nationale supérieure d'électrotechnique, d'électronique, d'informatique, d'hydraulique et des télécommunication”), a top-ranking engineering graduate school based in Toulouse, France."
464464+msgstr "INP-ENSEEIHT (« École nationale supérieure d'électrotechnique, d'électronique, d'informatique, d'hydraulique et des télécommunication »), une école d'ingénieurs de premier plan basée à Toulouse."
465465+466466+msgid "Internship @"
467467+msgstr "Stage à"
468468+572469msgid "intro"
573470msgstr "intro"
574471···584481msgid "latest release"
585482msgstr "dernière sortie"
586483484484+msgid "Learn more"
485485+msgstr "En savoir plus"
486486+587487msgid "learn more"
588488msgstr "en savoir plus"
589489590590-msgid "programming<p class=\"inline\" i18n=\"\">work time tracked by <a href=\"https://wakatime.com\">WakaTime</a></p>"
591591-msgstr "programmation<p class=\"inline\" i18n=\"\">temps de travail suivi par <a href=\"https://wakatime.com\">WakaTime</a></p>"
592592-593593-msgid "results"
594594-msgstr "résultats"
595595-596490msgid "linguistics"
597491msgstr "linguistique"
598492599493msgid "loading image in full resolution…"
600494msgstr "chargement de l'image en pleine résolution…"
601495602602-msgid "programming"
603603-msgstr "programmation"
604604-605496msgid "logo"
606497msgstr "logo"
607498608499msgid "made with"
609500msgstr "réalisé avec"
610501502502+msgid "Made with <3 by Ewen Le Bihan"
503503+msgstr "Fait avec <3 par Ewen Le Bihan"
504504+505505+msgid "Made with the intent to discover, not necessarily to be useful or aesthetic."
506506+msgstr "Réalisé dans le but de découvrir sans contrainte d'utilité ou d'esthétique."
507507+611508msgid "math"
612509msgstr "maths"
613510511511+msgid "Mathematics & Physics"
512512+msgstr "Mathématiques & Physique"
513513+514514+msgid "More..."
515515+msgstr "Plus..."
516516+614517msgid "most recent one"
615518msgstr "la plus récente"
616519···619522620523msgid "music"
621524msgstr "musique"
525525+526526+msgid "Music covers for albums, EPs and singles"
527527+msgstr "Pochettes pour albums, EPs et singles"
622528623529msgid "music+visual"
624530msgstr "musique+vidéo"
···629535msgid "my music"
630536msgstr "ma musique"
631537538538+msgid "My ranks at entrance exams"
539539+msgstr "Mon classement aux concours d'entrée"
540540+541541+msgid "Native"
542542+msgstr "Natif"
543543+544544+msgid "Open Source design and prototyping platform meant for cross-domain teams. Non dependent on operating systems, Penpot is web based and works with open web standards (SVG)."
545545+msgstr "Plateforme de conception et prototypage open source visant des équipes multi-domaines. Non dépendante des systèmes d'exploitation, Penpot est un logiciel web et fonctionne avec les standards web ouverts (SVG)."
546546+632547msgid "open-source code"
633548msgstr "code open-source"
634549···638553msgid "past releases"
639554msgstr "autres sorties"
640555556556+msgid "personal account"
557557+msgstr "compte personnel"
558558+641559msgid "poster"
642560msgstr "affiche"
643561···647565msgid "program"
648566msgstr "programme"
649567568568+msgid "programming"
569569+msgstr "programmation"
570570+571571+msgid "programming<p class=\"inline\" i18n=\"\">work time tracked by <a href=\"https://wakatime.com\">WakaTime</a></p>"
572572+msgstr "programmation<p class=\"inline\" i18n=\"\">temps de travail suivi par <a href=\"https://wakatime.com\">WakaTime</a></p>"
573573+650574msgid "programs"
651575msgstr "programmes"
652576577577+msgid "Programs that run in the terminal, a text-based interface for computers."
578578+msgstr "Programmes qui s'exécutent dans une console, une interface de texte pour les ordinateurs."
579579+653580msgid "project"
654581msgstr "projet"
655582656583msgid "projects"
657584msgstr "projets"
658585586586+msgid "Proudly\n"
587587+" <strong>\n"
588588+" not\n"
589589+" </strong>\n"
590590+" powered by Wordpress"
591591+msgstr "Fièrement\n"
592592+" <strong>\n"
593593+" non\n"
594594+" </strong>\n"
595595+" propulsé par Wordpress"
596596+597597+msgid "Proudly <strong>not</strong> powered by Wordpress"
598598+msgstr "Fièrement <strong>non</strong> propulsé par Wordpress"
599599+600600+msgid "Proudly powered by <a href=\"https://github.com/ortfo\">ortfo</a>, my portfolio database management system and <a href=\"https://github.com/a-h/templ\">templ</a>"
601601+msgstr "Fièrement propulsé par <a href=\"https://github.com/ortfo\">ortfo</a>, mon système de gestion de base de données pour les portfolios et <a href=\"https://github.com/a-h/templ\">templ</a>"
602602+659603msgid "random thoughts"
660604msgstr "pensées diverses"
661605662606msgid "read more"
663607msgstr "plus"
664608609609+msgid "Redirecting you to %s..."
610610+msgstr "Redirection vers %s..."
611611+612612+msgid "Redirecting you to my github incubator..."
613613+msgstr "Redirection vers mon incubateur github..."
614614+615615+msgid "results"
616616+msgstr "résultats"
617617+665618msgid "school"
666619msgstr "scolaire"
667620621621+msgid "School projects and school-related projects"
622622+msgstr "Projets scolaires et projets liés à l'école"
623623+668624msgid "science"
669625msgstr "science"
670626627627+msgid "Search"
628628+msgstr "Rechercher"
629629+671630msgid "send a mail at"
672631msgstr "envoyer un mail à"
673632633633+msgid "Server error. I f*cked up somewhere."
634634+msgstr "Erreur serveur. J'ai foiré quelque part."
635635+636636+msgid "Set of glyphs (letters, punctuation marks and more) that define how text looks."
637637+msgstr "Ensemble de glyphes (lettres, signes de ponctuation et plus encore) qui définissent l'apparence du texte."
638638+639639+msgid "Short introductory video sequences typically played at the beginning of every video"
640640+msgstr "Séquences vidéo introducientrières courtes qui sont typiquement jouées au début de chaque vidéo"
641641+674642msgid "site"
675643msgstr "site"
676644···686654msgid "slide into my twitter dms"
687655msgstr "contactez-moi par message privé sur twitter à"
688656689689-msgid "this work is part of the following collection"
690690-msgstr "ce projet fait partie de la collection suivante"
691691-692692-msgid "thumbnails"
693693-msgstr "miniatures"
694694-695695-msgid "typeface"
696696-msgstr "police de caractères"
697697-698698-msgid "typefaces"
699699-msgstr "polices de caractères"
700700-701701-msgid "what"
702702-msgstr "quoi"
657657+msgid "Source code"
658658+msgstr "Code source"
703659704660msgid "source code at"
705661msgstr "code source disponible à"
···710666msgid "technologies i use"
711667msgstr "les technologies que j'utilise"
712668669669+msgctxt "Link to /using on homepage"
670670+msgid "technologies used"
671671+msgstr "technologies utilisées"
672672+713673msgid "thanks"
714674msgstr "merci à"
715675676676+msgid "The Intuitive Vue Framework"
677677+msgstr "Le Framework Vue Intuitif"
678678+679679+msgid "The progressive JavaScript framework"
680680+msgstr "Un framework JavaScript progressif"
681681+716682msgid "the software, frameworks, libraries, materials and services I used to make this"
717683msgstr "les logiciels, frameworks, bibliothèques, matériaux et services utilisés pour cette création"
718684685685+msgid "The standard markup language for documents designed to be displayed in a web browser"
686686+msgstr "Le langage de balisage standard conçu pour représenter des pages web"
687687+688688+msgid "The study of language"
689689+msgstr "L'étude du langage"
690690+691691+msgid "These are my creations."
692692+msgstr "Voici mes créations."
693693+694694+msgid "This page does not exist (anymore)"
695695+msgstr "Cette page n'existe pas"
696696+719697msgid "this site is not finished yet. Not all works have been added, and some pages are rough around the edges."
720698msgstr "ce site n'est pas encore terminé. Il manque des projets, et certaines pages ne sont pas finiolées."
699699+700700+msgid "this work is part of the following collection"
701701+msgstr "ce projet fait partie de la collection suivante"
721702722703msgid "thumbnail"
723704msgstr "miniature"
724705706706+msgid "thumbnails"
707707+msgstr "miniatures"
708708+709709+msgid "typeface"
710710+msgstr "police de caractères"
711711+712712+msgid "typefaces"
713713+msgstr "polices de caractères"
714714+725715msgid "typography"
726716msgstr "typographie"
727717718718+msgid "Un système de génération de portfolios faits maison."
719719+msgstr "Un système de génération de portfolios faits maison."
720720+721721+msgid "Unknown error"
722722+msgstr "Erreur inconnue"
723723+724724+msgid "Unknown year"
725725+msgstr "Année inconnue"
726726+727727+msgid "User interfaces that utilize graphical elements such as icons, and images."
728728+msgstr "Intefaces utilisateur qui utilisent des éléments graphiques tels que des icônes et des images."
729729+728730msgid "visual identities"
729731msgstr "identités visuelles"
730732···737739msgid "web"
738740msgstr "web"
739741742742+msgid "web extension"
743743+msgstr "extension pour navigateur"
744744+740745msgid "web extensions"
741746msgstr "extensions web"
742747743743-msgid "work time tracked by <a href=\"https://wakatime.com\">WakaTime</a>"
744744-msgstr "temps de travail suivi par <a href=\"https://wakatime.com\">WakaTime</a>"
748748+msgid "Web sites, web apps and web-related libraries"
749749+msgstr "Sites web, applications web et bibliothèques liées au web"
750750+751751+msgid "what"
752752+msgstr "quoi"
753753+754754+msgid "With a scientific side"
755755+msgstr "Avec un côté scientifique"
745756746757msgid "work in progress"
747758msgstr "work in progress"
748759760760+msgid "work time tracked by <a href=\"https://wakatime.com\">WakaTime</a>"
761761+msgstr "temps de travail suivi par <a href=\"https://wakatime.com\">WakaTime</a>"
762762+763763+msgid "Works"
764764+msgstr "Œuvres"
765765+749766msgid "works"
750767msgstr "projets"
751768···758775msgid "works made with %s"
759776msgstr "fait avec %s"
760777761761-msgid "“Syntactically Awesome Style Sheets”—A mature, stable, and powerful professional grade CSS extension language."
762762-msgstr "“Syntactically Awesome Style Sheets”—Une extension puissante, stable et professionelle du langage CSS."
763763-764764-msgid "↖ Back to the text"
765765-msgstr "↖ Retour au texte"
766766-767767-msgctxt "Link to /using on homepage"
768768-msgid "technologies used"
769769-msgstr "technologies utilisées"
770770-771771-msgctxt "On homepage, as a section header for indexes"
772772-msgid "browse works by..."
773773-msgstr "projets par..."
774774-