1<!DOCTYPE html> 2<html lang="en"> 3 4<head> 5 <meta charset='utf-8'> 6 <title>calibre - About</title> 7 <meta http-equiv="X-UA-Compatible" content="IE=Edge" /> 8 9 <meta name="keywords" content="e-book,ebook,library,calibre,software,news,digital text,free,open source" /> 10 <meta name="description" content="calibre: The one stop solution for all your e-book needs. Comprehensive e-book software." /> 11 12 <link rel="icon" type="image/png" href="/favicon.png" /> 13 14 15 <!-- InMobi Choice. Consent Manager Tag v3.0 (for TCF 2.2) -->
16<script type="text/javascript" async=true> 17(function() { 18 var host = window.location.hostname; 19 var element = document.createElement('script'); 20 var firstScript = document.getElementsByTagName('script')[0]; 21 var url = 'https://cmp.inmobi.com' 22 .concat('/choice/', '593Yp13RM2k2D', '/', host, '/choice.js?tag_version=V3'); 23 var uspTries = 0; 24 var uspTriesLimit = 3; 25 element.async = true; 26 element.type = 'text/javascript'; 27 element.src = url; 28 29 firstScript.parentNode.insertBefore(element, firstScript); 30 31 function makeStub() { 32 var TCF_LOCATOR_NAME = '__tcfapiLocator'; 33 var queue = []; 34 var win = window; 35 var cmpFrame; 36 37 function addFrame() { 38 var doc = win.document; 39 var otherCMP = !!(win.frames[TCF_LOCATOR_NAME]); 40 41 if (!otherCMP) { 42 if (doc.body) { 43 var iframe = doc.createElement('iframe'); 44 45 iframe.style.cssText = 'display:none'; 46 iframe.name = TCF_LOCATOR_NAME; 47 doc.body.appendChild(iframe); 48 } else { 49 setTimeout(addFrame, 5); 50 } 51 } 52 return !otherCMP; 53 } 54 55 function tcfAPIHandler() { 56 var gdprApplies; 57 var args = arguments; 58 59 if (!args.length) { 60 return queue; 61 } else if (args[0] === 'setGdprApplies') { 62 if ( 63 args.length > 3 && 64 args[2] === 2 && 65 typeof args[3] === 'boolean' 66 ) { 67 gdprApplies = args[3]; 68 if (typeof args[2] === 'function') { 69 args[2]('set', true); 70 } 71 } 72 } else if (args[0] === 'ping') { 73 var retr = { 74 gdprApplies: gdprApplies, 75 cmpLoaded: false, 76 cmpStatus: 'stub' 77 }; 78 79 if (typeof args[2] === 'function') { 80 args[2](retr); 81 } 82 } else { 83 if(args[0] === 'init' && typeof args[3] === 'object') { 84 args[3] = Object.assign(args[3], { tag_version: 'V3' }); 85 } 86 queue.push(args); 87 } 88 } 89 90 function postMessageEventHandler(event) { 91 var msgIsString = typeof event.data === 'string'; 92 var json = {}; 93 94 try { 95 if (msgIsString) { 96 json = JSON.parse(event.data); 97 } else { 98 json = event.data; 99 } 100 } catch (ignore) {} 101 102 var payload = json.__tcfapiCall; 103 104 if (payload) { 105 window.__tcfapi( 106 payload.command, 107 payload.version, 108 function(retValue, success) { 109 var returnMsg = { 110 __tcfapiReturn: { 111 returnValue: retValue, 112 success: success, 113 callId: payload.callId 114 } 115 }; 116 if (msgIsString) { 117 returnMsg = JSON.stringify(returnMsg); 118 } 119 if (event && event.source && event.source.postMessage) { 120 event.source.postMessage(returnMsg, '*'); 121 } 122 }, 123 payload.parameter 124 ); 125 } 126 } 127 128 while (win) { 129 try { 130 if (win.frames[TCF_LOCATOR_NAME]) { 131 cmpFrame = win; 132 break; 133 } 134 } catch (ignore) {} 135 136 if (win === window.top) { 137 break; 138 } 139 win = win.parent; 140 } 141 if (!cmpFrame) { 142 addFrame(); 143 win.__tcfapi = tcfAPIHandler; 144 win.addEventListener('message', postMessageEventHandler, false); 145 } 146 }; 147 148 makeStub(); 149 150 function makeGppStub() { 151 const CMP_ID = 10; 152 const SUPPORTED_APIS = [ 153 '2:tcfeuv2', 154 '6:uspv1', 155 '7:usnatv1', 156 '8:usca', 157 '9:usvav1', 158 '10:uscov1', 159 '11:usutv1', 160 '12:usctv1' 161 ]; 162 163 window.__gpp_addFrame = function (n) { 164 if (!window.frames[n]) { 165 if (document.body) { 166 var i = document.createElement("iframe"); 167 i.style.cssText = "display:none"; 168 i.name = n; 169 document.body.appendChild(i); 170 } else { 171 window.setTimeout(window.__gpp_addFrame, 10, n); 172 } 173 } 174 }; 175 window.__gpp_stub = function () { 176 var b = arguments; 177 __gpp.queue = __gpp.queue || []; 178 __gpp.events = __gpp.events || []; 179 180 if (!b.length || (b.length == 1 && b[0] == "queue")) { 181 return __gpp.queue; 182 } 183 184 if (b.length == 1 && b[0] == "events") { 185 return __gpp.events; 186 } 187 188 var cmd = b[0]; 189 var clb = b.length > 1 ? b[1] : null; 190 var par = b.length > 2 ? b[2] : null; 191 if (cmd === "ping") { 192 clb( 193 { 194 gppVersion: "1.1", // must be âVersion.Subversionâ, current: â1.1â 195 cmpStatus: "stub", // possible values: stub, loading, loaded, error 196 cmpDisplayStatus: "hidden", // possible values: hidden, visible, disabled 197 signalStatus: "not ready", // possible values: not ready, ready 198 supportedAPIs: SUPPORTED_APIS, // list of supported APIs 199 cmpId: CMP_ID, // IAB assigned CMP ID, may be 0 during stub/loading 200 sectionList: [], 201 applicableSections: [-1], 202 gppString: "", 203 parsedSections: {}, 204 }, 205 true 206 ); 207 } else if (cmd === "addEventListener") { 208 if (!("lastId" in __gpp)) { 209 __gpp.lastId = 0; 210 } 211 __gpp.lastId++; 212 var lnr = __gpp.lastId; 213 __gpp.events.push({ 214 id: lnr, 215 callback: clb, 216 parameter: par, 217 }); 218 clb( 219 { 220 eventName: "listenerRegistered", 221 listenerId: lnr, // Registered ID of the listener 222 data: true, // positive signal 223 pingData: { 224 gppVersion: "1.1", // must be âVersion.Subversionâ, current: â1.1â 225 cmpStatus: "stub", // possible values: stub, loading, loaded, error 226 cmpDisplayStatus: "hidden", // possible values: hidden, visible, disabled 227 signalStatus: "not ready", // possible values: not ready, ready 228 supportedAPIs: SUPPORTED_APIS, // list of supported APIs 229 cmpId: CMP_ID, // list of supported APIs 230 sectionList: [], 231 applicableSections: [-1], 232 gppString: "", 233 parsedSections: {}, 234 }, 235 }, 236 true 237 ); 238 } else if (cmd === "removeEventListener") { 239 var success = false;
240 for (var i = 0; i < __gpp.events.length; i++) { 241 if (__gpp.events[i].id == par) { 242 __gpp.events.splice(i, 1); 243 success = true; 244 break; 245 } 246 } 247 clb( 248 { 249 eventName: "listenerRemoved", 250 listenerId: par, // Registered ID of the listener 251 data: success, // status info 252 pingData: { 253 gppVersion: "1.1", // must be âVersion.Subversionâ, current: â1.1â 254 cmpStatus: "stub", // possible values: stub, loading, loaded, error 255 cmpDisplayStatus: "hidden", // possible values: hidden, visible, disabled 256 signalStatus: "not ready", // possible values: not ready, ready 257 supportedAPIs: SUPPORTED_APIS, // list of supported APIs 258 cmpId: CMP_ID, // CMP ID 259 sectionList: [], 260 applicableSections: [-1], 261 gppString: "", 262 parsedSections: {}, 263 }, 264 }, 265 true 266 ); 267 } else if (cmd === "hasSection") { 268 clb(false, true); 269 } else if (cmd === "getSection" || cmd === "getField") { 270 clb(null, true); 271 } 272 //queue all other commands 273 else { 274 __gpp.queue.push([].slice.apply(b)); 275 } 276 }; 277 window.__gpp_msghandler = function (event) { 278 var msgIsString = typeof event.data === "string"; 279 try { 280 var json = msgIsString ? JSON.parse(event.data) : event.data; 281 } catch (e) { 282 var json = null; 283 } 284 if (typeof json === "object" && json !== null && "__gppCall" in json) { 285 var i = json.__gppCall; 286 window.__gpp( 287 i.command, 288 function (retValue, success) { 289 var returnMsg = { 290 __gppReturn: { 291 returnValue: retValue, 292 success: success, 293 callId: i.callId, 294 }, 295 }; 296 event.source.postMessage(msgIsString ? JSON.stringify(returnMsg) : returnMsg, "*"); 297 }, 298 "parameter" in i ? i.parameter : null, 299 "version" in i ? i.version : "1.1" 300 ); 301 } 302 }; 303 if (!("__gpp" in window) || typeof window.__gpp !== "function") { 304 window.__gpp = window.__gpp_stub; 305 window.addEventListener("message", window.__gpp_msghandler, false); 306 window.__gpp_addFrame("__gppLocator"); 307 } 308 }; 309 310 makeGppStub(); 311 312 var uspStubFunction = function() { 313 var arg = arguments; 314 if (typeof window.__uspapi !== uspStubFunction) { 315 setTimeout(function() { 316 if (typeof window.__uspapi !== 'undefined') { 317 window.__uspapi.apply(window.__uspapi, arg); 318 } 319 }, 500); 320 } 321 }; 322 323 var checkIfUspIsReady = function() { 324 uspTries++; 325 if (window.__uspapi === uspStubFunction && uspTries < uspTriesLimit) { 326 console.warn('USP is not accessible'); 327 } else { 328 clearInterval(uspInterval); 329 } 330 }; 331 332 if (typeof window.__uspapi === 'undefined') { 333 window.__uspapi = uspStubFunction; 334 var uspInterval = setInterval(checkIfUspIsReady, 6000); 335 } 336})(); 337</script>
337 338<!-- End InMobi Choice. Consent Manager Tag v3.0 (for TCF 2.2) --> 339
339<script data-cfasync="false" type="text/javascript"> 340 var freestar = freestar || {}; 341 freestar.hitTime = Date.now(); 342 freestar.queue = freestar.queue || []; 343 freestar.config = freestar.config || {}; 344 freestar.debug = window.location.search.indexOf('fsdebug') === -1 ? false : true; 345 freestar.config.enabled_slots = []; 346 !function(a,b){var c=b.getElementsByTagName("script")[0],d=b.createElement("script"),e="https://a.pub.network/calibre-ebook-com";e+=freestar.debug?"/qa/pubfig.min.js":"/pubfig.min.js",d.async=!0,d.src=e,c.parentNode.insertBefore(d,c)}(window,document); 347 freestar.initCallback = function () { (freestar.config.enabled_slots.length === 0) ? freestar.initCallbackCalled = false : freestar.newAdSlots(freestar.config.enabled_slots) } 348 </script>
348 349 <!-- Below is a link to a CSS file that accounts for Cumulative Layout Shift, 350 a new Core Web Vitals subset that Google uses to help rank your site in search --> 351 <!-- The file is intended to eliminate the layout shifts that are seen when ads load into the page. 352 If you don't want to use this, simply remove this file --> 353 <!-- To find out more about CLS, visit https://web.dev/vitals/ --> 354 <link rel="stylesheet" href="https://a.pub.network/calibre-ebook-com/cls.css"> 355 356 357 <link rel="alternate" type="application/rss+xml" href="/changelog.rss" title="RSS feed of the calibre changelog" /> 358 359 <!-- jQuery and associated tools --> 360
360<script type="text/javascript" src="/resources/js/jquery.tools.min.js"></script>
360 361 362 <!-- YUI CSS foundation --> 363 <link rel="stylesheet" type="text/css" href="/resources/styles/yui.css" /> 364 365 <!-- Master CSS --> 366 <link rel="stylesheet" type="text/css" href="/resources/styles/base.css" />
vendor: 74 bytes, lines 366-369
366 367 368 369 <script async src="https://www.googletagmanager.com/gtag/js?id=
369G-YMW4X5CSKP
vendor: 16 bytes, lines 369-370
369"></script> 370
370<script> 371
vendor: 151 bytes, lines 371-374
371window.dataLayer = window.dataLayer || []; 372 function gtag(){dataLayer.push(arguments);} 373 gtag('js', new Date()); 374 gtag('config', '
374G-YMW4X5CSKP
vendor: 8 bytes, lines 374-375
374'); 375
375</script>
375 376 377 378 379<link rel="stylesheet" type="text/css" href="/resources/styles/tabs.css" /> 380 381<style type="text/css"> 382 383 #feature-list { list-style-type: square; } 384 385 #feature-list .feature-description { 386 display: none; 387 margin-top: 1ex; 388 } 389 390 .feature-title { 391 color: blue; 392 cursor: pointer; 393 line-height: 1.5; 394 font-weight: bold; 395 } 396 397 .feature-title:hover { 398 color: red; 399 } 400 401 #signature { 402 text-align: right; 403 width: 100%; 404 font-size: 80%; 405 font-family: monospace; 406 } 407 408 #usage { 409 margin-top: 2ex; 410 } 411 412 #awards { 413 list-style-type: none; 414 } 415 416 #awards li { 417 list-style-type: none; 418 display: inline; 419 margin-right: 2em; 420 text-align: center; 421 } 422 423 #awards img { 424 padding-top: 1em; 425 } 426 427 428</style>
429<script type="text/javascript"> 430 //<![CDATA[ 431 432 $(document).ready(function() { 433 $("ul.tabs").tabs("div.panes > div", { 434 'history': true, 435 'effect': 'default', 436 }); 437 var api = jQuery("ul#right-tabs").data("tabs"); 438 439 $(".tabs a[title]").tooltip({ 440 position : 'bottom center', 441 delay: 0, 442 }); 443 444 $("#feature-list > li > span.feature-title").click(function() { 445 $(this).next("div").slideToggle("normal"); 446 }); 447 }); 448 //]]> 449</script>
449 450 451 452 453
453<script> 454 document.addEventListener('DOMContentLoaded', function() { 455 document.querySelectorAll('video.calibre').forEach(function(video) { 456 video.addEventListener('play', function() { this.classList.add('playing'); this.focus(); }); 457 video.addEventListener('pause', function() { this.classList.remove('playing'); }); 458 video.addEventListener('ended', function() { this.classList.remove('playing'); }); 459 video.addEventListener('keydown', function(e) { if (e.key === 'Escape') this.pause(); }); 460 }); 461 }); 462 </script>
462 463</head> 464 465<body onload="document.getElementById('content-wrapper').focus()"><div id="grid"> 466 467 <div id="header"> 468 469 <h1><a href="/">Calibre E-Book Management</a></h1> 470 471 <ul id="primary-nav"> 472 473 <li><a id="nav-about" href="/about" title="The features and history of calibre">About Calibre</a></li> 474 <li><a id="nav-demo" href="/demo" title="See calibre in action">Demo</a></li> 475 <li><a id="nav-download" href="/download" title="Download calibre for your operating system">Download</a></li> 476 <li><a id="nav-help" href="/help" title="Get help on using calibre">Help</a></li> 477 <li><a id="nav-whats-new" href="/whats-new" title="What's new in calibre world">What's New</a></li> 478 <li><a id="nav-get-involved" href="/get-involved" title="Contribute to calibre">Get Involved</a></li> 479 <li><a id="nav-bugs" href="/bugs" title="Report bugs / enhancement requests">Bugs</a></li> 480 481 <li><a id="nav-lang" href="javascript:choose_language()" title="Change the language of this website">Language</a></li> 482 483 484 </ul> 485 <div title="Support calibre development" id="donate" alt="Contribute to support calibre development" rel="#donate_box" data-location="top_banner" style="cursor:pointer; border:none" >Support Calibre</div> 486 </div> 487 488 <div id="content-wrapper" class="yui-cssbase" tabindex="-1"> 489 <div id="content"> 490 491<h1>About calibre</h1> 492<ul class="tabs"> 493 <li><a id="t1" href="#features" title="A brief description of calibre's many features">Features</a></li> 494 <li><a id="t2" href="#history" title="A history of the development of calibre">History</a></li> 495 <li><a id="t3" href="#contact" title="The best ways to contact the calibre team">Contact</a></li> 496 <li><a id="t4" href="#contributors" title="A list of contributors to the calibre community">Contributors</a></li> 497 <li><a id="t5" href="#press" title="Mentions of calibre in the press">Press</a></li> 498</ul> 499 500<div class="panes"> 501 502 <div class="pane" id="features"> 503 504 <b>calibre is a powerful and easy to use e-book manager</b>. Users say itâs 505 <i>outstanding</i> and a <i>must-have</i>. Itâll allow you to do nearly everything and it 506 takes things a step beyond normal e-book software. Itâs also <b>completely free</b> 507 and <i>open source</i> and great for both <b>casual users</b> and computer experts. 508 509 <ul id="feature-list"> 510 <li> 511 <span class="feature-title">Save time on managing your e-book collection</span> 512 <div class="feature-description"> 513 514 <p>calibreâs user interface is designed to be as simple as 515 possible. <b>Large buttons</b> in the main window take care of 516 most of your needs. The vast number of calibreâs features 517 and options is always clearly displayed under <b>intuitive 518 tabs</b>. Its context menus are neatly sorted, so the things 519 youâre looking for almost find themselves on their own. 520 <b>Youâre never more than three clicks away from your goal.</b> 521 Itâs the result of years of tweaking calibreâs interface 522 based on usersâ feedback. Plus, you can change many aspects 523 of how calibre looks and feels, and try one of the three 524 built-in library views to browse your book collection using 525 covers, titles, tags, authors, publishers, etc.</p> 526 527 <p>calibre not only can <b>download all the metadata</b> 528 for an e-book (things like title, author, publisher, ISBN, 529 tags, cover or summary) but will also allow you to edit or 530 create metadata in existing or new fields. That way you can 531 track which books youâve read and which ones you liked. You 532 can also take advantage of the <b>advanced search and 533 sorting</b> functions that use tags, authors, comments and 534 more. You will find the book you were looking for in seconds! 535 </p> 536 537 </div> 538 </li> 539 <li>
540 <span class="feature-title">Use it everywhere and with anything</span> 541 <div class="feature-description"> 542 543 <p>calibre supports almost <b>every single e-reader</b> and 544 is compatible with more devices with every update. You can 545 transfer your e-books from one device to another in 546 seconds, <b>wirelessly</b> or with a cable. And you donât 547 need any additional tools to do that. calibre will send the 548 <b>best file format</b> for your device converting it if 549 needed, automatically. </p> 550 551 <p>No matter what PC, laptop or tablet you use, calibreâs 552 got you covered. If youâre traveling and donât have 553 your device with you â you can take calibre on a USB stick 554 and <b>use it wherever you are</b>. Or run the calibre Content server and read 555 your books anywhere, on any device.</p> 556 557 <p>calibre can convert dozens of file types. No matter 558 where you got your e-book from, itâll be ready for your 559 device in no time. When converting, you can also 560 automatically change the bookâs style, create a table of 561 contents or improve punctuation and margins. calibre will 562 also detect the format thatâs best suited for your device 563 on its own, so you donât have to bother.</p> 564 565 <p>calibre can also turn your personal documents to e-books 566 or create them from scratch. It can also take all the 567 mundane things that go with it off your plate. It has 568 automatic style helpers and scripts generating the bookâs 569 structure. You focus on the content, calibre will take care 570 of the rest.</p> 571 572 </div> 573 </li> 574 <li> 575 <span class="feature-title" href="#">Comprehensive e-book viewer</span> 576 <div class="feature-description"> 577 578 <p>calibre has a built-in e-book viewer that can 579 display <b>all the major e-book formats</b>. It has full 580 support for Table of Contents, highlighting, bookmarks, 581 CSS, read aloud, a reference mode, printing, searching, 582 copying, multi-page view, embedded fonts, and on and on⦠583 </p> 584 585 </div> 586 </li> 587 <li> 588 <span class="feature-title" href="#">Download news/magazines from the web</span> 589 <div class="feature-description"> 590 591 <p>calibre can make sure you know whatâs happening and 592 <b>automatically deliver stories</b> to your device from hundreds 593 of news sources like The Economist, New York Times, New Yorker 594 Magazine, The Guardian, BBC News, National Geographic, CNN, 595 The Wall Street Journal, The Washington Post, The Atlantic, 596 Scientific American, Wired Magazine, The Telegraph, Forbes, 597 Ars Technicaâ¦</p> 598 599 <p>You can also teach calibre to deliver news from 600 completely different sites or take advantage of any <b>RSS 601 feed</b>. No searching, no waiting, no hassle.</p> 602 603 </div> 604 </li> 605 <li> 606 <span class="feature-title">Share and backup your library easily</span> 607 <div class="feature-description"> 608 609 <p>calibre comes with a <b>handy web server</b> to host 610 your library. In just a few moments you can <b>safely 611 share</b> all (or just some) of your e-books with anyone 612 you choose or access them yourself from anywhere, using any 613 device you like. With the server, you can read the books 614 in your calibre library on any phone/tablet using just 615 a browser. It even works offline. </p> 616 617 <p>calibre has also some useful backup and import/export 618 features that will guarantee the safety and portability of 619 your book collection with minimal fuss.</p> 620 621 </div> 622 </li> 623 <li>
624 <span class="feature-title">Edit the books in your collection</span> 625 <div class="feature-description"> 626 627 <p>For the e-book nerds amongst you, calibre has a built-in 628 editor that allows you to <b>edit e-books</b> in the most popular 629 e-book formats, EPUB and Kindle. The editor has 630 many sophisticated features to make editing the innards of 631 e-books as easy and efficient as possible.</p> 632 633 </div> 634 </li> 635 636 <li> 637 <span class="feature-title">Satisfy every e-book need and get support</span> 638 <div class="feature-description"> 639 640 <p>Itâs unlikely, but if you find out thereâs a feature you 641 need but calibre lacks it, you can use the <b>built-in plugin 642 explorer</b>. Many users develop plugins to enhance and expand 643 calibreâs features. You can browse through <b>hundreds of 644 plugins</b> directly from calibre and install them with just 645 one click.</p> 646 647 <p>calibre has more than 3 million active installs and 648 <b>lots of fans</b>! You will never have to wait to solve 649 any issue you might encounter: you can use the <a 650 href="/help">extensive help resources</a>, or just ask 651 members of the <a href="https://www.mobileread.com/forums/forumdisplay.php?f=166">calibre forum</a>.</p> 652 653 <p>calibre is created by <b>book lovers</b>, for book lovers. 654 Hundreds of motivated <b>volunteers develop</b> calibre and 655 deliver updates on a regular basis. Most issues are 656 <b>resolved in a week</b>. With every update, we fix bugs, add new 657 features and make calibre more compatible, faster and 658 easier.</p> 659 660 </div> 661 </li> 662 663 </ul> 664 665 <div style="border: solid 1px currentColor; padding: 1ex 1em; margin: 1ex 1em;"><b>Celebrate over fifteen years of excellence with us and <a href="/download">download</a> calibre today!</b></div> 666 667 </div> 668 669 <div class="pane" id="history"> 670 <p>calibre started life on 31 October, 2006, soon after the release of the SONY PRS-500, the first e-ink based reader to be sold commercially in the US. 671 At the time, I was a graduate student, with a lot of time on my hands. The PRS-500 did not work at all with Linux, my operating 672 system of choice, so I decided to reverse engineer the USB protocol that it used, to get it working on Linux. This was accomplished 673 with the help of the fine folks over at <a href="https://mobileread.com" target="new">mobileread.com</a> and calibre was born, albeit 674 named <code>libprs500</code>.</p> 675 676 <p>At the time there were no satisfactory tools to convert content into the <code>LRF</code> format, used by the SONY reader, so I decided 677 to implement a converter to convert the most popular e-book formats to LRF. This converter proved to be wildly popular and far better than 678 the (mostly non-existent) offerings from SONY. It was picked up and used by various publishing houses and content digitizers to produce the 679 first generation of books in the LRF format.</p> 680 681 <p>As my e-book collection grew, I realized that managing it was quickly becoming unwieldy, so I decided to write a graphical interface to 682 libprs500 to make it easier. This became calibre, in its present form, as a comprehensive e-book management tool. libprs500 683 was renamed to calibre in mid-2008. The name calibre was chosen by my wife, Krittika. The libre in calibre stands for 684 freedom, indicating that calibre is a free and open source product, modifiable by all. Nonetheless, calibre should be pronounced as 685 cali-ber, not ca-libre. 686 </p> 687 688 <p> 689 Today calibre is a vibrant open-source community with half a dozen developers and many, many tester
689s and bug reporters. It is used in over 690 200 countries and has been translated into a dozen different languages by volunteers. calibre has become a comprehensive tool for the management of 691 digital texts, allowing you to do whatever you could possibly imagine with your e-book library. Reading is very important to me and one of my 692 goals has always been to prevent either the fragmentation or the monopolization of the e-book market by entities that care solely for 693 short-term goals. As the calibre community continues to grow, driven by book lovers, for book lovers, hopefully it will always present an alternative 694 for people that love to read e-books and want to be in control of their own digital libraries. 695 </p> 696 697 <p id="signature">Kovid Goyal<br />November 2009</p> 698 699 700 </div> 701 <div class="pane" id="contact"> 702 <h2>Asking for help</h2> 703 <p> 704 The best places to ask for help with calibre are the very active 705 <a target="forum" href="https://www.mobileread.com/forums/forumdisplay.php?f=166">calibre forum</a> at 706 mobileread.com, where there are a number of friendly and knowledgeable long time users/developers of calibre. 707 In addition, there is the <a href="https://www.facebook.com/pages/Calibre/201937604701">calibre Facebook fan page</a> and 708 <a target="twitter" href="https://twitter.com/calibreforum">#calibreforum</a> on Twitter. 709 </p> 710 711 <h2>Reporting issues and asking for new features</h2> 712 <p> 713 If you wish to report a problem with calibre or would like to request a new feature, the best place to 714 do it is via the calibre <a href="/bugs">Bug tracker</a>. Be aware that calibre is developed by volunteers, 715 which means that your bug report/feature request may or may not get attention, so if you are looking for help, 716 the best place is the forum linked to above. 717 </p> 718 719 </div> 720 721 <div class="pane" id="contributors"> 722 <p>calibre is an open source application, developed primarily by Kovid Goyal, based in Mumbai, India. 723 calibre uses a large number of other open source libraries and is developed on Linux, 724 an open source platform, and as such, it has benefited from the work of large numbers of people, 725 some of whom are listed below. 726 I've tried to be as exhaustive as possible, but, if I have omitted your contribution, please let me know.</p> 727 728 <h2>Contributors of code/bug fixes</h2> 729 <p>In no particular order:</p> 730 <ul> 731 <li>Marshall Vandegrift: For epub2lrf, lit2oeb, oeb2mobi and various improvements in the html2lrf code, as well as the basic framework for the conversion pipeline in the 0.6.x series</li> 732 <li>John Schember: For the new calibre device driver framework, various GUI enhancements and several input and output format plugins and the "Get Books" feature</li> 733 <li>Charles Haley: For custom columns, saved searches, restrictions, the wireless device driver, lots of other help/ideas</li> 734 <li>Gregory Riker: For MOBI indexing, catalogs, the iPad driver</li> 735 <li>Roger Critchlow: For the initial implementation of lrs2lrf</li> 736 <li>Anatoly Shipitsin: For fb2lrf and fb2-meta</li> 737 <li>Ori Avtalion and WayneD: For various bug fixes</li> 738 <li>Tijmen Ruizendaal: For the Be Book driver</li> 739 <li>Igor Skochinsky: For various bits of reverse engineering without which calibre would never have gotten off the ground</li> 740 <li>Darko Miletic: For a large number of news recipes</li> 741 <li>Grant Drake: For various plugins including Open with, Search the internet and Goodreads integration</li> 742 <li>Timothy Legge and David Forrester: For Kobo support in calibre</li> 743 <li>Eli Schwartz: For Linux packaging efforts</li> 744 <li>Eli Schwartz and Flaviu Tamas: For Python 3 porting efforts</li> 745 <li>Mark W. Gabby-Li: For adding right-to-left and vertical text support to the E-book viewer</li> 746 </ul> 747 748 <h2>Graphics and design</h2> 749 <ul> 750 <li>Nicholas Holland and the guys at <a target="new" href="https://cs-website.herokuapp.com/">Centresource</a>: For the website design</li> 751 <li>diaboNL: For the reader icon</li> 752 <li>Caleb Avery and Kamil Tatara: For the calibre logo</li> 753 <li>Jonatan Nyberg: For lots of polishing of the UI</li> 754 <li>subtlepatterns.com: For various textures</li> 755 </ul> 756 757 <h2>Recipe writers</h2> 758 <p>Too many people have contributed recipes to list here, but their contributions are a big part of calibre.</p> 759 760 <h2>Translators</h2> 761 <p>The list of translators is available <a target="new" href="https://app.transifex.com/calibre/calibre/">here</a>.</p> 762 763 <h2>Other projects whose code/libraries calibre uses/links against</h2> 764 <ul> 765 <li>Python</li> 766 <li>Qt</li> 767 <li>PyQt</li> 768 <li>rtf2xml</li> 769 <li>poppler</li> 770 <li>feedparser</li> 771 <li>pylrs</li> 772 <li>BeautifulSoup</li> 773 <li>mechanize</li> 774 <li>pictureflow</li> 775 <li>lxml</li> 776 <li>Hyphenator</li> 777 <li>sqlite</li> 778 <li>chardet</li> 779 <li>podofo</li> 780 <li>libmtp</li> 781 <li>Python Imaging Library</li> 782 <li>Sphinx</li> 783 <li>django</li> 784 <li>odfpy</li> 785 <li>cssutils</li> 786 <li>git</li> 787 <li>ICU</li> 788 <li>dateutil</li> 789 <li>dnspython</li> 790 <li>pywin32</li> 791 <li>python-dbus</li> 792 </ul> 793 794 <p>The Launchpad, Transifex and GitHub services for providing bug, file, translation and code hosting for calibre.</p> 795 796 <p>Last, but not least I'd like to thank the folks at <a target="new" href="https://mobileread.com">mobileread.com</a> 797 for creating a wonderful community for us e-book lovers to gather round.</p> 798 </div> 799 <div class="pane" id="press"> 800 <h2>Awards</h2> 801 <ul id="awards"> 802 <li><a href="https://www.windows11downloads.com/win11-calibre/" target="_blank"><img src="/resources/img/windows-11-downloads.png" alt="Windows 11 downloads award for calibre" style="border:0" /></a></li> 803 <li><a href="https://graphicsfamily.com/calibre/" target="_blank"><img src="/resources/img/Best-Software-Award-by-GraphicsFamily.png" alt="Graphics Family award for calibre" style="border:0" /></a></li> 804 <li><a href="http://download.famouswhy.com/calibre/" target="_blank"><img src="/resources/img/Famous_Software_Award_Logo.png" alt="Calibre" style="border:0" /></a></li> 805 <li><a href="http://www.fiberdownload.com/Download/24368/Calibre" target="_blank"><img src="/resources/img/editor_pick_1.png" alt="Fiber download Editor's pick"/></a></li> 806 <li><a href="http://www.filecluster.com/reviews/082011/calibre-your-e-book-virtual-librarian/" target="_blank"><img src="/resources/img/review_5stars.png" alt="Excellent"/></a></li> 807 <li><a href="https://calibre.sooftware.com/windows" target="_blank"><img src="/resources/img/sooftware_pick.png" alt="Excellent"/></a></li> 808 <li><a href="https://calibre.informer.com/" target="_blank"><img src="/resources/img/informer_editor.png" alt="Excellent"/></a></li> 809 <li><a href="https://win.topdownload.club/calibre/" target="_blank"><img src="/resources/img/topdownload.png" alt="Excellent"/></a></li> 810 </ul> 811 </ul> 812 <p><a href="https://calibre.informer.com/" target="_blank">Software informer</a>: <b>4.3 stars</b> (August, 2022)</p> 813 <p><a href="https://win.topdownload.club/calibre/" target="_blank">Top Download club</a>: <b>5 stars</b> (July, 2022)</p> 814 <p><a href="https://calibre.sooftware.com/windows" target="_blank">Sooftware rating</a>: <b>4.5 stars</b> (May, 2022)</p> 815 <p><a href="https://www.capterra.com/p/92449/Calibre/reviews/" target="_blank">Capterra rating</a>: <b>4.7 stars</b> (Apr, 2021)</p> 816 <p><a href="https://calibre.en.softonic.com/" target="_blank">Softonic rating</a>: <b>4 stars</b> (Apr, 2021)</p> 817 <p><a href="https://www.macupdate.com/app/mac/30657/calibre" target="_blank">MacUpdate rating</a>: <b>4.3 stars</b> (Apr, 2021)</p> 818 <p><a href="https://www.ebool.com/reviews/calibre" target="_blank">eBool rating</a>: <b>5 stars</b> (Apr, 2017)</p> 819 <p><a href="http://www.softpedia.com/get/Office-tools/Diary-Organizers-Calendar/Calibre.shtml" target="_blank">Softpedia rating</a>: <b>4.5 stars</b> (Mar, 2017)</p> 820 <p><a href="http://www.filehorse.com/download-calibre-64/" target="_blank">File Horse rating</a>: <b>5 stars</b> Completely safe (Jan, 2017)</p> 821 <p><a href="http://download.cnet.com/Calibre/3000-2125_4-10910277.html?tag=mncol" target="_blank">CNET Editor's rating</a>: <b>4.5 stars</b> (Nov, 2009)</p> 822 <h2>Press mentions</h2> 823 <ul> 824 <li>
824<a href="http://gadgetwise.blogs.nytimes.com/tag/calibre">The New York Times</a></li> 825 <li><a href="http://kindleworld.blogspot.com/2009/08/million-free-google-books-in-epub-for.html">Kindle World</a></li> 826 <li><a href="http://www.softpedia.com/reviews/mac/calibre-Review-137455.shtml">Softpedia</a></li> 827 <li><a href="http://www.wired.com/gadgetlab/2009/10/gadget-lab-guide-how-to-un-cripple-your-international-kindle/">Wired.com</a></li> 828 <li><a href="http://lifehacker.com/5169425/calibre-manages-your-e+book-collection">LifeHacker</a></li> 829 <li><a href="http://dearauthor.com/wordpress/2008/12/28/calibre-the-ebook-readers-best-friend-part-1-of-2">Dear author</a></li> 830 <li><a href="http://www.thekindlechronicles.com/2009/04/03/37-kovid-goyal/">Kindle Chronicles</a></li> 831 <li><a href="http://www.livemint.com/Companies/RsORoaz8sHA0VgXBfT1sUK/How-one-of-the-most-popular-ebook-management-softwares-cal.html">Live Mint</a></li> 832 </ul> 833 </div> 834 <ul id="usage"> 835 <li>You can see usage statistics for calibre <a target="usage" href="/dynamic/calibre-usage">here</a></li> 836 <li>You can see usage statistics for the various news sources in calibre <a target="usage" href="/dynamic/recipe-usage">here</a></li> 837 </ul> 838</div> 839 840 841 </div> <!-- end content --> 842 <ul id="footer"> 843 <li>© Kovid Goyal</li> 844 845 <li><a type="application/rss+xml" href="/changelog.rss" title="RSS feed of the calibre changelog">Feed of new releases</a></li> 846 847 <li class="last"><a href="/privacy" title="Privacy policy">Privacy Policy</a></li> 848 </ul> 849 </div> <!-- end content-wrapper --> 850 <div id="sidebar"> 851 852 853 854 <div id="ad-container"> 855<div align="center" id="calibre-ebook_rail_right_1"> 856
856<script data-cfasync="false" type="text/javascript"> 857 freestar.config.enabled_slots.push({ placementName: "calibre-ebook_rail_right_1", slotId: "calibre-ebook_rail_right_1" }); 858 </script>
858 859</div> 860<div style="display:inline-block;width:336px; height:20px"> </div> 861<div align="center" id="calibre-ebook_rail_right_2"> 862
862<script data-cfasync="false" type="text/javascript"> 863 freestar.config.enabled_slots.push({ placementName: "calibre-ebook_rail_right_2", slotId: "calibre-ebook_rail_right_2" }); 864 </script>
864 865</div> 866</div> 867 868 869 </div> <!-- end sidebar --> 870 871 <div id="donate_box" style="display:none" data-location="loc_unknown"> 872 873 874<style type="text/css"> 875 876#donate_box { 877 z-index: 10001; 878 background-color: #eee; 879 color: #000; 880 padding: 10px; 881 width: 675px; 882 max-width: 80%; 883 border: 2px solid #666; 884 box-shadow:0 0 90px 5px #000; 885 border-radius: 6px; 886} 887 888#donate_box .close { 889 background-image:url(/resources/img/close.png); 890 position:absolute; 891 right:-15px; 892 top:-15px; 893 cursor:pointer; 894 height:24px; 895 width:24px; 896} 897 898#donate_box h2 { 899 text-align: center; 900 font-size: xx-large; 901 margin-top: -0.2em; 902 color: #666; 903 background-color: #ddd; 904 border-radius: 6px; 905 margin-bottom: 0.5em; 906} 907 908#donate_box h2:before { 909 content: "⥠"; 910 color: red; 911} 912#donate_box h2:after { 913 content: " â¥"; 914 color: red; 915} 916#donate_box .donate_line { 917 background-color: rgb(217, 237, 247); 918 color: rgb(58, 135, 173); 919 border: solid 1px rgb(188, 232, 241); 920 padding: 0.5em; 921 margin-top: 0.5em; 922 margin-bottom: 0.5em; 923} 924 925#donate_box .donate_line input { 926 border: solid 1px rgba(82, 168, 236, 0.8) !important; 927 padding: 5px 0px; 928 padding-left: 3px; 929 border-radius: 4px; 930 width: 5em; 931} 932 933#donate_box #donate_ok_button { 934 float: right; 935 margin-top: 12px; 936} 937 938#donate_box #donate_bt_button { 939 float: left; 940 text-decoration: none; 941 margin-top: 12px; 942 padding: 9px 2px; 943} 944 945#donate_box div { 946 margin-top: 0.5em; 947} 948 949#donate_box #donate_wait_msg { 950 text-align: center; 951 margin-top: 1em; 952} 953 954#donate_box #donate_wait_msg img { 955 vertical-align: middle; 956} 957 958</style> 959 960 961 962 <h2>Thank you!</h2> 963 <p>Your support helps keep calibre development alive.</p> 964 <p class="donate_line"> 965 Contribute 966 <input name="price" type="number" value="10" step="1" min="1" /> 967 <select id="donate-contribute-currency" required="required" data-val="USD"> 968 <option value="USD">USD ($)</option> 969 <option value="INR">INR (â¹)</option> 970 </select> 971 </p> 972 <p class="donate_radio">Amount: 973 <label><input type="radio" value="5" name="price_choice" /> <span>$5</span> </label> 974 <label><input type="radio" value="10" name="price_choice" checked="checked" /> <span>$10</span> </label> 975 <label><input type="radio" value="15" name="price_choice" /> <span>$15</span> </label> 976 <label><input type="radio" value="25" name="price_choice" /> <span>$25</span> </label> 977 <label><input type="radio" value="50" name="price_choice" /> <span>$50</span> </label> 978 <label><input type="radio" value="100" name="price_choice" /> <span>$100</span> </label> 979 </p> 980 <div id="donate_wait_msg"><img src="/resources/img/spinner.gif" alt="Working" /> Contacting payment provider, please wait…</div> 981 <div id="donate_buttons"> 982 <a id="donate_bt_button" href="https://www.patreon.com/kovidgoyal"> 983 Become a calibre patron 984 </a> 985 <span id="donate_ok_button" tooltip="Pay with credit card or PayPal"><span style="color:red">PayPal unavailable!</span></span> 986 </div> 987 988 989
990<script src="https://www.paypalobjects.com/api/checkout.min.js" async="async" id="paypal-checkout-script"></script>
vendor: 1 bytes, line 990
990
991<script type="text/javascript"> 992 993(function() { 994 995 function change_currency() { 996 var curr = document.getElementById('donate-contribute-currency').value; 997 if (curr === document.getElementById('donate-contribute-currency').dataset.val) return; 998 var mult = curr === 'INR' ? 20 : 1/20; 999 var symbol = curr === 'INR' ? 'â¹' : '$'; 1000 var text_input = document.querySelector('#donate_box input[name="price"]'); 1001 text_input.value = '' + Math.max(1, parseFloat(text_input.value) * mult); 1002 document.querySelectorAll('#donate_box input[name="price_choice"').forEach(function(node) { 1003 var rval = '' + (parseInt(node.value) * mult); 1004 node.value = rval; 1005 node.parentNode.querySelector('span').textContent = symbol + rval; 1006 }); 1007 document.getElementById('donate-contribute-currency').dataset.val = curr; 1008 } 1009 document.getElementById('donate-contribute-currency').addEventListener('change', change_currency); 1010 1011 var x = new XMLHttpRequest(); 1012 x.addEventListener('load', function() { 1013 if (this.responseText === 'IND' || this.responseText === 'IN') { 1014 document.getElementById('donate-contribute-currency').value = 'INR'; 1015 change_currency(); 1016 } 1017 }); 1018 var cc = 'country-code'; 1019 x.open('GET', '/' + cc); 1020 x.send(); 1021 1022 function get_current_value() { 1023 var ans = parseFloat($('#donate_box input[name="price"]').val()); 1024 if (isNaN(ans)) ans = 10; 1025 return ans; 1026 } 1027 1028 document.getElementById('paypal-checkout-script').onload = function() { 1029 if (!window.paypal) return; 1030 // See https://developer.paypal.com/docs/api/payments/#payment 1031 var lang = document.documentElement.getAttribute('lang'); 1032 var locale = 'en_US'; 1033 var locale_map = {fr: 'fr_FR', de: 'de_DE', es: 'es_ES'} 1034 if (locale_map[lang]) locale = locale_map[lang]; 1035 document.getElementById('donate_ok_button').textContent = ''; 1036 window.paypal.Button.render({ 1037 env: 'production', // sandbox or production 1038 client: { 1039 sandbox: 'AcbgAJCOt1wze9Xwh8ijAEIQOck5Ykz_UhA3jTtfPjdcl5bOPIgwz7k2E33oJ_24QZe59_gQZIFnvr6n', 1040 production: 'AbVJy1AqjPTncpdEQteWqVN-DdULUR9vtpvEKQMAof4SFoiuiuAACRd0fjNvvTsZPnQy3Enai5lmdm1A' 1041 }, 1042 commit: true, 1043 style: { tagline: false, label: 'pay'}, 1044 locale: locale, 1045 1046 payment: function(data, actions) { 1047 $('#donate_box #donate_wait_msg').css('display', 'block'); 1048 $('#donate_box #donate_buttons').css('display', 'none'); 1049 return actions.payment.create({ 1050 payment: { 1051 application_context: { 1052 shipping_preference: "NO_SHIPPING", 1053 locale: locale, 1054 brand_name: 'calibre - Kovid Goyal', 1055 }, 1056 // Disabled as it causes an intrusive popup on the payment page. 1057 // note_to_payer: 'Thank you for supporting calibre!', 1058 transactions: [ 1059 { 1060 amount: { 1061 total: get_current_value().toFixed(2), 1062 currency: document.getElementById('donate-contribute-currency').value 1063 }, 1064 description: 'Support calibre development: ' + document.getElementById('donate_box').dataset.location, 1065 } 1066 ] 1067 } 1068 }); 1069 }, 1070 1071 onAuthorize: function(data, actions) { 1072 return actions.payment.execute().then(function(response) { 1073 $('#donate_box .close').click(); 1074 alert('Payment successful! Thank you for your support.'); 1075 }); 1076 }, 1077 1078 onCancel: function(data, actions) { 1079 $('#donate_box .close').click(); 1080 }, 1081 1082 onError: function(err) { 1083 console.error("PayPal SDK Error Encountered:", err); 1084 const errorMessage = err?.message || String(err); 1085 alert('Payment failed with error from Paypal:' + ' ' + errorMessage); 1086 $('#donate_box .close').click(); 1087 } 1088 }, '#donate_ok_button'); 1089 } 1090 1091 $(document).ready(function() { 1092 $("[rel='#donate_box']").each(function() { 1093 var loc = this.getAttribute('data-location'); 1094 if (!loc) loc = 'loc_unknown'; 1095 $(this).overlay({ 1096 expose: $("#donate_box").css('background-color'), // change to mask for jquery.tools >= 1.2 1097 1098 closeOnClick: false, // Prevent clicking outside from closing the dialog 1099 1100 onBeforeLoad: function() { 1101 $('#donate_box #donate_wait_msg').css('display', 'none'); 1102 $('#donate_box #donate_buttons').css('display', 'block'); 1103 }, 1104 1105 onLoad: function() { 1106 document.getElementById('donate_box').dataset.location = loc; 1107 // Keep the box at a fixed position in the viewport (this can be removed when updating jquery.tools to 1.2 as it is the default) 1108 $('#donate_box').css('position', 'fixed'); 1109 }, 1110 1111 top: "5%" 1112 }); 1113 }); 1114 1115 var sync_from_radio = true; 1116 // The change() function does not work on IE 1117 $('#donate_box input[name="price_choice"]').click(function() { 1118 if (sync_from_radio) $('#donate_box input[name="price"]').val(this.value); 1119 }); 1120 1121 $('#donate_box input[name="price"]').change(function() {
1122 var val = get_current_value(); 1123 var found = null; 1124 if (val % 1 === 0) { 1125 // Number is an integer 1126 var elem = $('#donate_box input[name="price_choice"][value="' + val.toFixed() + '"]'); 1127 if (elem.length > 0) { 1128 found = elem; 1129 } 1130 } 1131 sync_from_radio = false; 1132 if (found === null) { 1133 $('#donate_box input[name="price_choice"]').each(function() { this.checked = false; }); 1134 } else { found[0].checked = true; } 1135 sync_from_radio = true; 1136 1137 }); 1138 1139 1140 $('#donate_box input[name="price"]').keypress(function(event) { 1141 if (event.which == 13) $('#donate_box #donate_ok_button').click(); 1142 }); 1143 }); 1144 1145})(); 1146 1147</script>
1147 1148 1149 1150</div> 1151 1152 1153 <div id="language-box" tabindex="0"> 1154
1154<script> 1155$(document).ready(function() { 1156 $("#primary-nav a[title]").tooltip({ 1157 position : 'bottom center', 1158 }); 1159 $("#donate").tooltip({ 1160 position : 'bottom center', 1161 }); 1162 $('#language-box').on('keydown', function(ev) { 1163 if (ev.key === "Escape") close_language(); 1164 }); 1165 redirect_to_preferred_language(); 1166 1167}); 1168 1169function choose_language() { 1170 document.getElementById('language-box').style.display = 'flex'; 1171 document.getElementById('language-box').focus(); 1172} 1173 1174function close_language() { 1175 document.getElementById('language-box').style.display = 'none'; 1176} 1177 1178function change_language(lang_code, is_current, lang_href) { 1179 if (document.getElementById("set-default-lang").checked) { 1180 window.localStorage.setItem("calibre-web-ui-lang", lang_code); 1181 } 1182 if (is_current) return close_language(); 1183 window.location.href = lang_href; 1184} 1185 1186function redirect_to_preferred_language() { 1187 var languages = {}; 1188 var current_language = ''; 1189 document.querySelectorAll('#language-box [data-lang-code]').forEach(function(item) { 1190 languages[item.dataset.langCode] = item.dataset.langHref; 1191 if (item.dataset.langIsCurrent === 'true') current_language = item.dataset.langCode; 1192 }); 1193 var preferred_lang = window.localStorage.getItem("calibre-web-ui-lang"); 1194 if (preferred_lang && current_language && preferred_lang !== current_language && languages[preferred_lang]) { 1195 window.location.href = languages[preferred_lang]; 1196 } 1197} 1198 </script>
1198 1199<style> 1200#language-box { 1201 display: none; 1202 position: absolute; 1203 z-index: 3000; 1204 left: 0; 1205 top: 0; 1206 width: 100vw; 1207 height: 100vh; 1208 background: rgba(255, 255, 255, 0.9); 1209 justify-content: center; 1210 overflow: auto; 1211} 1212 1213#language-box h2 { 1214 font-weight: bold; 1215 font-size: 160%; 1216 margin: 1rem auto; 1217 text-align: center; 1218} 1219 1220#language-box ul { 1221 margin: auto; 1222 display: grid; 1223 max-width: 75vw; 1224 grid-template-columns: repeat(auto-fit, minmax(20em, 1fr)); 1225} 1226 1227#language-box li { 1228 margin: 1em; 1229} 1230 1231</style> 1232 <div> 1233 <h2>Choose the language you want</h2> 1234 <div style="display: flex; justify-content: space-between; margin-bottom: 1ex"> 1235 <label><input type="checkbox" checked id="set-default-lang"> Save as default language</label> 1236 <a href="javascript:close_language()">Cancel</a> 1237 </div> 1238 <ul> 1239 1240 <li><a data-lang-code="ar" data-lang-is-current="false" data-lang-href="/ar/about" href="javascript: change_language('ar', false, '/ar/about')">Arabic (Ø§ÙØ¹Ø±Ø¨ÙØ©)</a></li> 1241 1242 <li><a data-lang-code="pt_BR" data-lang-is-current="false" data-lang-href="/pt_BR/about" href="javascript: change_language('pt_BR', false, '/pt_BR/about')">Brazilian Portuguese (Português Brasileiro)</a></li> 1243 1244 <li><a data-lang-code="zh_HK" data-lang-is-current="false" data-lang-href="/zh_HK/about" href="javascript: change_language('zh_HK', false, '/zh_HK/about')">Chinese (䏿)</a></li> 1245 1246 <li><a data-lang-code="cs" data-lang-is-current="false" data-lang-href="/cs/about" href="javascript: change_language('cs', false, '/cs/about')">Czech (ÄeÅ¡tina)</a></li> 1247 1248 <li><a data-lang-code="nl" data-lang-is-current="false" data-lang-href="/nl/about" href="javascript: change_language('nl', false, '/nl/about')">Dutch (Nederlands)</a></li> 1249 1250 <li><a data-lang-code="en" data-lang-is-current="true" data-lang-href="/about" href="javascript: change_language('en', true, '/about')">English (English)</a></li> 1251 1252 <li><a data-lang-code="et" data-lang-is-current="false" data-lang-href="/et/about" href="javascript: change_language('et', false, '/et/about')">Estonian (eesti)</a></li> 1253 1254 <li><a data-lang-code="fr" data-lang-is-current="false" data-lang-href="/fr/about" href="javascript: change_language('fr', false, '/fr/about')">French (Français)</a></li> 1255 1256 <li><a data-lang-code="gl" data-lang-is-current="false" data-lang-href="/gl/about" href="javascript: change_language('gl', false, '/gl/about')">Galician (Galego)</a></li> 1257 1258 <li><a data-lang-code="it" data-lang-is-current="false" data-lang-href="/it/about" href="javascript: change_language('it', false, '/it/about')">Italian (Italiano)</a></li> 1259 1260 <li><a data-lang-code="ja" data-lang-is-current="false" data-lang-href="/ja/about" href="javascript: change_language('ja', false, '/ja/about')">Japanese (æ¥æ¬èª)</a></li> 1261 1262 <li><a data-lang-code="ko" data-lang-is-current="false" data-lang-href="/ko/about" href="javascript: change_language('ko', false, '/ko/about')">Korean (íêµì´)</a></li> 1263 1264 <li><a data-lang-code="pl" data-lang-is-current="false" data-lang-href="/pl/about" href="javascript: change_language('pl', false, '/pl/about')">Polish (polski)</a></li> 1265 1266 <li><a data-lang-code="pt" data-lang-is-current="false" data-lang-href="/pt/about" href="javascript: change_language('pt', false, '/pt/about')">Portuguese (Português)</a></li> 1267 1268 <li><a data-lang-code="ru" data-lang-is-current="false" data-lang-href="/ru/about" href="javascript: change_language('ru', false, '/ru/about')">Russian (ÑÑÑÑкий)</a></li> 1269 1270 <li><a data-lang-code="zh_CN" data-lang-is-current="false" data-lang-href="/zh_CN/about" href="javascript: change_language('zh_CN', false, '/zh_CN/about')">Simplified Chinese (ç®ä½ä¸æ)</a></li> 1271 1272 <li><a data-lang-code="es" data-lang-is-current="false" data-lang-href="/es/about" href="javascript: change_language('es', false, '/es/about')">Spanish (Español)</a></li> 1273 1274 <li><a data-lang-code="sv" data-lang-is-current="false" data-lang-href="/sv/about" href="javascript: change_language('sv', false, '/sv/about')">Swedish (Svenska)</a></li> 1275 1276 <li><a data-lang-code="ta" data-lang-is-current="false" data-lang-href="/ta/about" href="javascript: change_language('ta', false, '/ta/about')">Tamil (தமிழà¯)</a></li> 1277 1278 <li><a data-lang-code="zh_TW" data-lang-is-current="false" data-lang-href="/zh_TW/about" href="javascript: change_language('zh_TW', false, '/zh_TW/about')">Traditional Chinese (æ£é«ä¸æ)</a></li> 1279 1280 <li><a data-lang-code="uk" data-lang-is-current="false" data-lang-href="/uk/about" href="javascript: change_language('uk', false, '/uk/about')">Ukrainian (ÑкÑаÑнÑÑка)</a></li> 1281 1282 </ul> 1283 </div> 1284 </div> 1285<!-- end languages --> 1286 1287 1288</div></body> 1289</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.