this repo has no description
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

✨ Add env var to remove unused translation messages

+31 -447
+1 -1
Justfile
··· 1 1 render: 2 2 just build 3 - ENV=static ./tmp/main 3 + REMOVE_UNUSED_MESSAGES=1 ENV=static ./tmp/main 4 4 5 5 dev: 6 6 ENV=development air
+16 -1
i18n.go
··· 228 228 return poFile.Save(t.PoFilePath()) 229 229 } 230 230 231 - func (t Translations) WriteUnusedMessages() (count int, err error) { 231 + func (t Translations) UnusedMessages() []po.Message { 232 232 unused := make([]po.Message, 0) 233 233 for _, message := range t.poFile.Messages { 234 234 if !t.seenMessages.Contains(message.MsgId + message.MsgContext) { 235 235 unused = append(unused, message) 236 236 } 237 237 } 238 + return unused 239 + } 238 240 241 + func (t Translations) WriteUnusedMessages() (count int, err error) { 242 + unused := t.UnusedMessages() 239 243 count = len(unused) 240 244 241 245 if count == 0 { ··· 259 263 } 260 264 } 261 265 return count, nil 266 + } 267 + 268 + func (t *Translations) DeleteUnusedMessages() { 269 + for _, message := range t.UnusedMessages() { 270 + for i, msg := range t.poFile.Messages { 271 + if msg.MsgId == message.MsgId && msg.MsgContext == message.MsgContext { 272 + t.poFile.Messages[i] = t.poFile.Messages[len(t.poFile.Messages)-1] 273 + t.poFile.Messages = t.poFile.Messages[:len(t.poFile.Messages)-1] 274 + } 275 + } 276 + } 262 277 } 263 278 264 279 // SavePO writes the .po file to the disk, with its potential modifications
-109
i18n/fr-unused-messages.yaml
··· 1 - # Generated at 2023-12-24 18:31:48.393082265 +0100 CET m=+0.359160195 2 - - "%s’s logo" 3 - - "%v-day streak on Duolingo, %v league" 4 - - "1104<sup>th</sup>" 5 - - "12 March 2020" 6 - - "1791<sup>st</sup>" 7 - - "2022—now" 8 - - "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" 9 - - "A high-performance template engine heavily influenced by <a href=\"https://haml.info/\">Haml</a> and implemented with JavaScript for Node.js and browsers." 10 - - "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”" 11 - - "A minimal configuration file format that’s easy to read due to obvious semantics. Designed to map unambiguously to a hash table." 12 - - "A modern parsing library for Python capable of parsing any context-free grammar" 13 - - "A programming language that compiles to JavaScript. It adds syntactic sugar inspired by Ruby, Python and Haskell in an effort to enhance JavaScript’s brevity and readability. Specific additional features include list comprehension and destructuring assignment" 14 - - "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" 15 - - "A set of brand resources like logos and banners that make up a brand’s visal identity" 16 - - "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." 17 - - "about" 18 - - "about me" 19 - - "all" 20 - - "also my music" 21 - - "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" 22 - - "arts" 23 - - "Audiovisual & transmedia production company" 24 - - "Back home" 25 - - "banner" 26 - - "beautiful OFL typeface" 27 - - "blog" 28 - - {msgid: "browse works by...", msgctxt: "On homepage, as a section header for indexes"} 29 - - "by" 30 - - "card" 31 - - "Close" 32 - - "collections" 33 - - "Computer science" 34 - - "contact me" 35 - - "cover art" 36 - - "Design and coded by hand" 37 - - "Designed and coded by hand" 38 - - "Digital audiovisual agency" 39 - - "education" 40 - - "efficient and comfortable programming language" 41 - - "en français" 42 - - "Engineering consulting firm" 43 - - "experience" 44 - - "fine" 45 - - "footnotes" 46 - - "game" 47 - - "Get a one-page PDF resume" 48 - - "Graphic designer & printer" 49 - - "Hi, I'm Ewen Le Bihan." 50 - - "Hi! I'm Ewen Le Bihan. I'm interested in almost anything that is both creative and digital." 51 - - "hours\u00a0of use" 52 - - "hours spent on this" 53 - - "I also make electronic music." 54 - - "I’ve been experimenting with sounds, their textures and their musicality since I was 7 years old." 55 - - "iconography" 56 - - "If this doesn't work, you can <a href=\"%s\">go to %s</a> by clicking here" 57 - - "If this doesn't work, you can <a href=\"https://github.com/users/ewen-lbh/projects/2\">go to it by clicking here</a>" 58 - - "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." 59 - - "Internship @" 60 - - "intro" 61 - - "latest release" 62 - - "learn more" 63 - - "loading image in full resolution…" 64 - - "logo" 65 - - "made with" 66 - - "Made with <3 by Ewen Le Bihan" 67 - - "Mathematics & Physics" 68 - - "More..." 69 - - "most recent one" 70 - - "music+visual" 71 - - "My ranks at entrance exams" 72 - - "Native" 73 - - "others" 74 - - "past releases" 75 - - "programming<p class=\"inline\" i18n=\"\">work time tracked by <a href=\"https://wakatime.com\">WakaTime</a></p>" 76 - - "project" 77 - - "projects" 78 - - "Proudly\n <strong>\n not\n </strong>\n powered by Wordpress" 79 - - "Proudly <strong>not</strong> powered by Wordpress" 80 - - "read more" 81 - - "Redirecting you to %s..." 82 - - "Redirecting you to my github incubator..." 83 - - "results" 84 - - "send a mail at" 85 - - "Server error. I f*cked up somewhere." 86 - - "site" 87 - - "skills" 88 - - "slide into my dms at" 89 - - "slide into my twitter dms" 90 - - "source code at" 91 - - "tags" 92 - - "technologies i use" 93 - - {msgid: "technologies used", msgctxt: "Link to /using on homepage"} 94 - - "thanks" 95 - - "the software, frameworks, libraries, materials and services I used to make this" 96 - - "This page does not exist (anymore)" 97 - - "this site is not finished yet. Not all works have been added, and some pages are rough around the edges." 98 - - "this work is part of the following collection" 99 - - "thumbnail" 100 - - "Unknown error" 101 - - "Unknown year" 102 - - "what" 103 - - "work in progress" 104 - - "work time tracked by <a href=\"https://wakatime.com\">WakaTime</a>" 105 - - "Works" 106 - - "works by tag" 107 - - "works made with" 108 - - "works made with %s" 109 - - "↖ Back to the text"
-334
i18n/fr.po
··· 15 15 msgid "“Syntactically Awesome Style Sheets”—A mature, stable, and powerful professional grade CSS extension language." 16 16 msgstr "“Syntactically Awesome Style Sheets”—Une extension puissante, stable et professionelle du langage CSS." 17 17 18 - msgid "%s’s logo" 19 - msgstr "Logo de %s" 20 - 21 - msgid "%v-day streak on Duolingo, %v league" 22 - msgstr "streak de %v jours sur Duolingo, ligue %v" 23 - 24 - msgid "↖ Back to the text" 25 - msgstr "↖ Retour au texte" 26 - 27 - msgid "1104<sup>th</sup>" 28 - msgstr "1104<sup>e</sup>" 29 - 30 - msgid "12 March 2020" 31 - msgstr "12 mars 2020" 32 - 33 - msgid "1791<sup>st</sup>" 34 - msgstr "1791<sup>e</sup>" 35 - 36 - msgid "2022—now" 37 - msgstr "2022—maintenant" 38 - 39 18 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" 40 19 msgstr "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." 41 20 42 - 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" 43 - 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" 44 - 45 21 msgid "A bundler for javascript and friends. Packs many modules into a few bundled assets." 46 22 msgstr "Un bundler pour javascript et autres. Regroupe de nombreux modules en quelques fichiers groupés." 47 23 ··· 74 50 75 51 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." 76 52 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." 77 - 78 - 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." 79 - 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." 80 53 81 54 msgid "A high-quality typesetting & document preparation system" 82 55 msgstr "Un système de composition et de préparation des documents de haute qualité" ··· 96 69 msgid "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”" 97 70 msgstr "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\"." 98 71 99 - msgid "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”" 100 - msgstr "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 »" 101 - 102 72 msgid "A lightweight data-interchange format" 103 73 msgstr "Un format léger d'échange de données" 104 74 105 75 msgid "A minimal configuration file format that's easy to read due to obvious semantics. Designed to map unambiguously to a hash table." 106 76 msgstr "Un format de fichier de configuration minimal et facile à lire grâce à une sémantique évidente." 107 77 108 - msgid "A minimal configuration file format that’s easy to read due to obvious semantics. Designed to map unambiguously to a hash table." 109 - msgstr "Un format de fichier de configuration minimal facile à lire grâce à des sémantiques évidentes. Conçu pour correspondre sans ambiguïté à une table de hachage." 110 - 111 78 msgid "A minimal language to describe interactive, terminal-based text adventure games" 112 79 msgstr "Un langage minimal pour écrire des jeux d'aventure textuelles" 113 - 114 - msgid "A modern parsing library for Python capable of parsing any context-free grammar" 115 - msgstr "Une bibliothèque d'analyse moderne pour Python capable d'analyser toute grammaire non contextuelle" 116 80 117 81 msgid "A modern parsing library for Python. Lark can parse any context-free grammar" 118 82 msgstr "Une bibliothèque d'analyse syntaxique pour Python. Lark peut analyser n'importe quel langage non contextuel (langage algébrique)" ··· 132 96 msgid "A programming language that compiles to JavaScript. It adds syntactic sugar inspired by Ruby, Python and Haskell in an effort to enhance JavaScript's brevity and readability. Specific additional features include list comprehension and destructuring assignment" 133 97 msgstr "Un langage de programmation qui se compile en JavaScript. Il ajoute du sucre syntactique inspiré de Ruby, Python et Haskell dans le but d'améliorer la brièveté et la lisibilité de JavaScript. Les caractéristiques supplémentaires spécifiques comprennent la définition de listes en compréhension et l'affectation par déstructuration" 134 98 135 - msgid "A programming language that compiles to JavaScript. It adds syntactic sugar inspired by Ruby, Python and Haskell in an effort to enhance JavaScript’s brevity and readability. Specific additional features include list comprehension and destructuring assignment" 136 - msgstr "Un langage de programmation qui se compile en JavaScript. Il ajoute du sucre syntaxique inspiré de Ruby, Python et Haskell dans le but d'améliorer la brièveté et la lisibilité de JavaScript. Les fonctionnalités supplémentaires spécifiques incluent la compréhension de liste et l'affectation par décomposition" 137 - 138 99 msgid "A programming language that lets you work quickly and integrate systems more effectively" 139 100 msgstr "Un langage de programmation permettant de travailler rapidement et d'intégrer des systèmes plus efficacement" 140 101 141 102 msgid "A progressive Node.js framework for building efficient, reliable and scalable server-side applications" 142 103 msgstr "Un framework Node.js progressif pour construire des applications côté serveur efficaces, fiables et évolutives" 143 - 144 - msgid "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" 145 - msgstr "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" 146 104 147 105 msgid "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." 148 106 msgstr "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." ··· 156 114 msgid "A set of brand resources like logos and banners that make up a brand's visal identity" 157 115 msgstr "Un ensemble de ressources de marque, comme des logos et des bannières, qui constituent l'identité visuelle d'une marque" 158 116 159 - msgid "A set of brand resources like logos and banners that make up a brand’s visal identity" 160 - msgstr "Un ensemble de ressources telles que des logos et des bannières qui constituent l'identité visuelle d'une marque" 161 - 162 117 msgid "A simple cross-platform library to create graphical user interfaces in [Go](/using/go) that work on Android, iOS, Linux, MacOS and Windows." 163 118 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." 164 - 165 - msgid "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." 166 - msgstr "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." 167 119 168 120 msgid "A smart and user-friendly command line shell for Linux, macOS, and the rest of the family" 169 121 msgstr "Un shell en ligne de commande intelligent et convivial pour Linux, macOS et le reste de la famille" ··· 195 147 msgid "A web-application framework that includes everything needed to create database-backed web applications according to the Model-View-Controller (MVC) pattern" 196 148 msgstr "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" 197 149 198 - msgid "about" 199 - msgstr "à propos" 200 - 201 - msgid "about me" 202 - msgstr "à propos" 203 - 204 150 msgid "abstract" 205 151 msgstr "asbtrait" 206 - 207 - msgid "all" 208 - msgstr "tout" 209 - 210 - msgid "also my music" 211 - msgstr "ma musique également" 212 152 213 153 msgid "An advanced open source relational database" 214 154 msgstr "Une base de données relationnelle open source avancée" ··· 245 185 246 186 msgid "Application Programming Interfaces, mostly _Web_ APIs, meaning machine-redable sites that allow data processing and interaction without going to the client-facing website" 247 187 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." 248 - 249 - 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" 250 - 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" 251 188 252 189 msgid "apps" 253 190 msgstr "applications" 254 191 255 - msgid "arts" 256 - msgstr "arts" 257 - 258 - msgid "Audiovisual & transmedia production company" 259 - msgstr "Companie de production audiovisuelle et transmédia" 260 - 261 192 msgid "automation" 262 193 msgstr "automatisation" 263 194 264 - msgid "Back home" 265 - msgstr "Retour à l'accueil" 266 - 267 - msgid "banner" 268 - msgstr "bannière" 269 - 270 - msgid "beautiful OFL typeface" 271 - msgstr "magnifique fonte sous OFL" 272 - 273 - msgid "blog" 274 - msgstr "blogue" 275 - 276 195 msgid "book" 277 196 msgstr "livre" 278 197 279 198 msgid "books" 280 199 msgstr "livres" 281 200 282 - msgctxt "On homepage, as a section header for indexes" 283 - msgid "browse works by..." 284 - msgstr "projets par..." 285 - 286 - msgid "by" 287 - msgstr "par" 288 - 289 - msgid "card" 290 - msgstr "carte" 291 - 292 201 msgid "cards" 293 202 msgstr "cartes" 294 203 295 204 msgid "cli" 296 205 msgstr "cli" 297 206 298 - msgid "Close" 299 - msgstr "Fermer" 300 - 301 - msgid "collections" 302 - msgstr "collections" 303 - 304 207 msgid "command line" 305 208 msgstr "terminal" 306 209 ··· 309 212 310 213 msgid "compositing" 311 214 msgstr "compositing" 312 - 313 - msgid "Computer science" 314 - msgstr "Sciences du numérique" 315 215 316 216 msgid "contact" 317 217 msgstr "contact" 318 218 319 - msgid "contact me" 320 - msgstr "contactez-moi" 321 - 322 - msgid "cover art" 323 - msgstr "pochette" 324 - 325 219 msgid "cover arts" 326 220 msgstr "pochettes" 327 221 328 - msgid "Design and coded by hand" 329 - msgstr "Site web fait maison" 330 - 331 - msgid "Designed and coded by hand" 332 - msgstr "Site web fait maison" 333 - 334 - msgid "Digital audiovisual agency" 335 - msgstr "Agence audiovisuelle numérique" 336 - 337 222 msgid "drawing" 338 223 msgstr "dessin" 339 224 340 225 msgid "drawings" 341 226 msgstr "dessins" 342 227 343 - msgid "education" 344 - msgstr "éducation" 345 - 346 - msgid "efficient and comfortable programming language" 347 - msgstr "langage de programmation efficient et confortable" 348 - 349 - msgid "en français" 350 - msgstr "in english" 351 - 352 - msgid "Engineering consulting firm" 353 - msgstr "Société de conseil en ingénierie" 354 - 355 - msgid "experience" 356 - msgstr "expérience" 357 - 358 228 msgid "experiment" 359 229 msgstr "expérience" 360 230 ··· 370 240 msgid "Extensions or add-ons that add features to web browsers" 371 241 msgstr "Extensions ou add-ons qui ajoutent des fonctionnalités à un navigateurs web" 372 242 373 - msgid "fine" 374 - msgstr "c'est pas grave" 375 - 376 243 msgid "flyer" 377 244 msgstr "flyer" 378 245 379 246 msgid "flyers" 380 247 msgstr "flyers" 381 248 382 - msgid "footnotes" 383 - msgstr "notes de bas de page" 384 - 385 249 msgid "Free and open-source digital painting software" 386 250 msgstr "Logiciel de peinture numérique gratuit et open source" 387 251 388 - msgid "game" 389 - msgstr "jeu" 390 - 391 252 msgid "games" 392 253 msgstr "jeux" 393 - 394 - msgid "Get a one-page PDF resume" 395 - msgstr "CV monopage en PDF" 396 254 397 255 msgid "Get my resume" 398 256 msgstr "Voir mon CV" ··· 400 258 msgid "Go back" 401 259 msgstr "Retour" 402 260 403 - msgid "Graphic designer & printer" 404 - msgstr "Graphiste & imprimeur" 405 - 406 261 msgid "graphism" 407 262 msgstr "graphisme" 408 263 ··· 412 267 msgid "hardware" 413 268 msgstr "matériel informatique" 414 269 415 - msgid "Hi, I'm Ewen Le Bihan." 416 - msgstr "Hey, je suis Ewen Le Bihan." 417 - 418 270 msgid "Hi! I'm Ewen Le Bihan." 419 271 msgstr "Hey! Je suis Ewen Le Bihan." 420 272 421 - msgid "Hi! I'm Ewen Le Bihan. I'm interested in almost anything that is both creative and digital." 422 - msgstr "Hey! Je suis Ewen Le Bihan. Je suis intéressé par presque tout ce qui est à la fois créatif et digital." 423 - 424 - msgid "hours of use" 425 - msgstr "heures d'utilisation" 426 - 427 - msgid "hours spent on this" 428 - msgstr "heures passées là-dessus" 429 - 430 - msgid "I also make electronic music." 431 - msgstr "Je crée aussi de la musique." 432 - 433 273 msgid "i can work for you" 434 274 msgstr "je peux travailler pour vous" 435 275 436 276 msgid "I'm interested in almost anything that is both creative and digital." 437 277 msgstr "Je suis intéressé par tout ce qui est à la fois créatif et numérique." 438 278 439 - msgid "I’ve been experimenting with sounds, their textures and their musicality since I was 7 years old." 440 - msgstr "J'expérimente les sons, leurs textures et leur musicalité depuis que j'ai 7 ans." 441 - 442 - msgid "iconography" 443 - msgstr "icônes" 444 - 445 279 msgid "icons" 446 280 msgstr "icônes" 447 281 448 - msgid "If this doesn't work, you can <a href=\"%s\">go to %s</a> by clicking here" 449 - msgstr "Si cela ne fonctionne pas, vous pouvez <a href=\"%s\">allez sur %s</a> en cliquant ici" 450 - 451 - 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>" 452 - msgstr "Si cela ne fonctionne pas, vous pouvez <a href=\"https://github.com/users/ewen-lbh/projects/2\">y aller en cliquant ici</a>" 453 - 454 282 msgid "illustration" 455 283 msgstr "illustration" 456 284 ··· 460 288 msgid "Images that represent a media, such as a video, in a single glance. Might be shown at a small size." 461 289 msgstr "Images qui représentent un média, tel qu'une vidéo, d'un seul coup d'œil. Peut être affiché à petite taille." 462 290 463 - 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." 464 - 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." 465 - 466 - msgid "Internship @" 467 - msgstr "Stage à" 468 - 469 - msgid "intro" 470 - msgstr "intro" 471 - 472 291 msgid "intros" 473 292 msgstr "intros" 474 293 ··· 478 297 msgid "languages" 479 298 msgstr "langages" 480 299 481 - msgid "latest release" 482 - msgstr "dernière sortie" 483 - 484 300 msgid "Learn more" 485 301 msgstr "En savoir plus" 486 302 487 - msgid "learn more" 488 - msgstr "en savoir plus" 489 - 490 303 msgid "linguistics" 491 304 msgstr "linguistique" 492 305 493 - msgid "loading image in full resolution…" 494 - msgstr "chargement de l'image en pleine résolution…" 495 - 496 - msgid "logo" 497 - msgstr "logo" 498 - 499 - msgid "made with" 500 - msgstr "réalisé avec" 501 - 502 - msgid "Made with <3 by Ewen Le Bihan" 503 - msgstr "Fait avec <3 par Ewen Le Bihan" 504 - 505 306 msgid "Made with the intent to discover, not necessarily to be useful or aesthetic." 506 307 msgstr "Réalisé dans le but de découvrir sans contrainte d'utilité ou d'esthétique." 507 308 508 309 msgid "math" 509 310 msgstr "maths" 510 311 511 - msgid "Mathematics & Physics" 512 - msgstr "Mathématiques & Physique" 513 - 514 - msgid "More..." 515 - msgstr "Plus..." 516 - 517 - msgid "most recent one" 518 - msgstr "la plus récente" 519 - 520 312 msgid "motion design" 521 313 msgstr "motion design" 522 314 ··· 526 318 msgid "Music covers for albums, EPs and singles" 527 319 msgstr "Pochettes pour albums, EPs et singles" 528 320 529 - msgid "music+visual" 530 - msgstr "musique+vidéo" 531 - 532 321 msgid "my carreer" 533 322 msgstr "ma carrière" 534 323 535 324 msgid "my music" 536 325 msgstr "ma musique" 537 326 538 - msgid "My ranks at entrance exams" 539 - msgstr "Mon classement aux concours d'entrée" 540 - 541 - msgid "Native" 542 - msgstr "Natif" 543 - 544 327 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)." 545 328 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)." 546 329 547 330 msgid "open-source code" 548 331 msgstr "code open-source" 549 332 550 - msgid "others" 551 - msgstr "autres" 552 - 553 - msgid "past releases" 554 - msgstr "autres sorties" 555 - 556 333 msgid "personal account" 557 334 msgstr "compte personnel" 558 335 ··· 568 345 msgid "programming" 569 346 msgstr "programmation" 570 347 571 - msgid "programming<p class=\"inline\" i18n=\"\">work time tracked by <a href=\"https://wakatime.com\">WakaTime</a></p>" 572 - msgstr "programmation<p class=\"inline\" i18n=\"\">temps de travail suivi par <a href=\"https://wakatime.com\">WakaTime</a></p>" 573 - 574 348 msgid "programs" 575 349 msgstr "programmes" 576 350 577 351 msgid "Programs that run in the terminal, a text-based interface for computers." 578 352 msgstr "Programmes qui s'exécutent dans une console, une interface de texte pour les ordinateurs." 579 353 580 - msgid "project" 581 - msgstr "projet" 582 - 583 - msgid "projects" 584 - msgstr "projets" 585 - 586 - msgid "Proudly\n" 587 - " <strong>\n" 588 - " not\n" 589 - " </strong>\n" 590 - " powered by Wordpress" 591 - msgstr "Fièrement\n" 592 - " <strong>\n" 593 - " non\n" 594 - " </strong>\n" 595 - " propulsé par Wordpress" 596 - 597 - msgid "Proudly <strong>not</strong> powered by Wordpress" 598 - msgstr "Fièrement <strong>non</strong> propulsé par Wordpress" 599 - 600 354 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>" 601 355 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>" 602 356 603 357 msgid "random thoughts" 604 358 msgstr "pensées diverses" 605 359 606 - msgid "read more" 607 - msgstr "plus" 608 - 609 - msgid "Redirecting you to %s..." 610 - msgstr "Redirection vers %s..." 611 - 612 - msgid "Redirecting you to my github incubator..." 613 - msgstr "Redirection vers mon incubateur github..." 614 - 615 - msgid "results" 616 - msgstr "résultats" 617 - 618 360 msgid "school" 619 361 msgstr "scolaire" 620 362 ··· 627 369 msgid "Search" 628 370 msgstr "Rechercher" 629 371 630 - msgid "send a mail at" 631 - msgstr "envoyer un mail à" 632 - 633 - msgid "Server error. I f*cked up somewhere." 634 - msgstr "Erreur serveur. J'ai foiré quelque part." 635 - 636 372 msgid "Set of glyphs (letters, punctuation marks and more) that define how text looks." 637 373 msgstr "Ensemble de glyphes (lettres, signes de ponctuation et plus encore) qui définissent l'apparence du texte." 638 374 639 375 msgid "Short introductory video sequences typically played at the beginning of every video" 640 376 msgstr "Séquences vidéo introducientrières courtes qui sont typiquement jouées au début de chaque vidéo" 641 - 642 - msgid "site" 643 - msgstr "site" 644 377 645 378 msgid "sites" 646 379 msgstr "sites" 647 380 648 - msgid "skills" 649 - msgstr "compétences" 650 - 651 - msgid "slide into my dms at" 652 - msgstr "contactez-moi par message privé à" 653 - 654 - msgid "slide into my twitter dms" 655 - msgstr "contactez-moi par message privé sur twitter à" 656 - 657 381 msgid "Source code" 658 382 msgstr "Code source" 659 383 660 - msgid "source code at" 661 - msgstr "code source disponible à" 662 - 663 - msgid "tags" 664 - msgstr "catégories" 665 - 666 - msgid "technologies i use" 667 - msgstr "les technologies que j'utilise" 668 - 669 - msgctxt "Link to /using on homepage" 670 - msgid "technologies used" 671 - msgstr "technologies utilisées" 672 - 673 - msgid "thanks" 674 - msgstr "merci à" 675 - 676 384 msgid "The Intuitive Vue Framework" 677 385 msgstr "Le Framework Vue Intuitif" 678 386 679 387 msgid "The progressive JavaScript framework" 680 388 msgstr "Un framework JavaScript progressif" 681 389 682 - msgid "the software, frameworks, libraries, materials and services I used to make this" 683 - msgstr "les logiciels, frameworks, bibliothèques, matériaux et services utilisés pour cette création" 684 - 685 390 msgid "The standard markup language for documents designed to be displayed in a web browser" 686 391 msgstr "Le langage de balisage standard conçu pour représenter des pages web" 687 392 ··· 691 396 msgid "These are my creations." 692 397 msgstr "Voici mes créations." 693 398 694 - msgid "This page does not exist (anymore)" 695 - msgstr "Cette page n'existe pas" 696 - 697 - msgid "this site is not finished yet. Not all works have been added, and some pages are rough around the edges." 698 - msgstr "ce site n'est pas encore terminé. Il manque des projets, et certaines pages ne sont pas finiolées." 699 - 700 - msgid "this work is part of the following collection" 701 - msgstr "ce projet fait partie de la collection suivante" 702 - 703 - msgid "thumbnail" 704 - msgstr "miniature" 705 - 706 399 msgid "thumbnails" 707 400 msgstr "miniatures" 708 401 ··· 717 410 718 411 msgid "Un système de génération de portfolios faits maison." 719 412 msgstr "Un système de génération de portfolios faits maison." 720 - 721 - msgid "Unknown error" 722 - msgstr "Erreur inconnue" 723 - 724 - msgid "Unknown year" 725 - msgstr "Année inconnue" 726 413 727 414 msgid "User interfaces that utilize graphical elements such as icons, and images." 728 415 msgstr "Intefaces utilisateur qui utilisent des éléments graphiques tels que des icônes et des images." ··· 748 435 msgid "Web sites, web apps and web-related libraries" 749 436 msgstr "Sites web, applications web et bibliothèques liées au web" 750 437 751 - msgid "what" 752 - msgstr "quoi" 753 - 754 438 msgid "With a scientific side" 755 439 msgstr "Avec un côté scientifique" 756 440 757 - msgid "work in progress" 758 - msgstr "work in progress" 759 - 760 - msgid "work time tracked by <a href=\"https://wakatime.com\">WakaTime</a>" 761 - msgstr "temps de travail suivi par <a href=\"https://wakatime.com\">WakaTime</a>" 762 - 763 - msgid "Works" 764 - msgstr "Œuvres" 765 - 766 441 msgid "works" 767 442 msgstr "projets" 768 443 769 - msgid "works by tag" 770 - msgstr "projets par catégories" 771 - 772 - msgid "works made with" 773 - msgstr "projets réalisées avec" 774 - 775 - msgid "works made with %s" 776 - msgstr "fait avec %s" 777 -
+9 -2
main.go
··· 114 114 os.Exit(1) 115 115 } 116 116 } 117 - unusedTranslationsCount, _ := translations.WriteUnusedMessages() 117 + unusedTranslationsCount := len(translations.UnusedMessages()) 118 118 if unusedTranslationsCount > 0 { 119 - color.Yellow("[%s] %s contains %d unused messages, see %s", translations.language, translations.PoFilePath(), unusedTranslationsCount, translations.UnusedMessagesFilePath()) 119 + if shared.WantToRemoveUnusedMessages() { 120 + translations.DeleteUnusedMessages() 121 + translations.SavePO() 122 + color.Cyan("[%s] Removed %d unused messages", translations.language, unusedTranslationsCount) 123 + } else { 124 + color.Yellow("[%s] %s contains %d unused messages, see %s", translations.language, translations.PoFilePath(), unusedTranslationsCount, translations.UnusedMessagesFilePath()) 125 + } 120 126 } 127 + translations.WriteUnusedMessages() 121 128 if len(translations.missingMessages) > 0 { 122 129 color.Red("[%s] Some content is not translated. See errors above.", translations.language) 123 130 os.Exit(1)
+5
shared/env.go
··· 6 6 func IsDev() bool { 7 7 return os.Getenv("ENV") == "development" 8 8 } 9 + 10 + // WantToRemoveUnusedMessages returns true if the user wants to remove unused translation messages from the .po file (even when an associated non-empty msgstr exists) 11 + func WantToRemoveUnusedMessages() bool { 12 + return os.Getenv("REMOVE_UNUSED_MESSAGES") == "1" 13 + }